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 1riF6J-00FwmN-TF for pgsql-hackers@arkaria.postgresql.org; Thu, 07 Mar 2024 14:52:04 +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 1riF6H-0062vG-Vp for pgsql-hackers@arkaria.postgresql.org; Thu, 07 Mar 2024 14:52:02 +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 1riF6H-0062v8-4L for pgsql-hackers@lists.postgresql.org; Thu, 07 Mar 2024 14:52:02 +0000 Received: from mail-yb1-xb34.google.com ([2607:f8b0:4864:20::b34]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1riF6D-003KPM-KG for pgsql-hackers@postgresql.org; Thu, 07 Mar 2024 14:52:00 +0000 Received: by mail-yb1-xb34.google.com with SMTP id 3f1490d57ef6-dcbf82cdf05so961956276.2 for ; Thu, 07 Mar 2024 06:51:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709823118; x=1710427918; 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=9kI0zTDNegiNa53iy/C71+QO4vUo1hgLxw7XkB8icgo=; b=nUDBskTcjk1df+cDn7Axwc4YJZneqmHJbkNUU230EP0mWVAiYSkPY+jt5aPsoNij9G GEu7z3uB0zOoOPTXaZNLbogAVEvBHr4e65jcM1kzuHCMjigUa/I80EtI2uwHWSueagc5 LaKzr1Fh+kLAZcXu/qqCgQllolg3tctu66IRh5fLAe1vVmNGUyznDxQeHcWT9AiYjkGl RSu6iuvhYAbJz3NEOLFfEPAiKnf5Nt5FA1pYmfhcS8U3Cs8iuMyftO8wuXp1QDyETWLF TBjCNno4KQLVj7/oZAHPrMoFWfJ99kR14YC+JgmhYZJH+AQHhHCMQ2sHyxoJgF63XuaJ yoHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709823118; x=1710427918; 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=9kI0zTDNegiNa53iy/C71+QO4vUo1hgLxw7XkB8icgo=; b=fG74ZgTqA5r7tOrjxXe94+n813bdIkUdHe6Dkt2d4hSPUaEYThdcQYP1ZSbFOTbYAT Ihz8avTnvJrdTj2HQD0eS1Gm9m7dqvMQkMRJwKlDtT92bwQir5GjZHy1gNAuDVOtI9my qxXE7F1pUqYI+VS17tyvNktOdyPtfxnSM0C5Dkbro49dD7/mZMJGxFlygUvUyD0PzvhP Wt8Lah0gyzd8KG2XwSDw9bwMHgPhVMYC/pRdWRLK5tzcAdTsG1pyF++rPpLZdIx1SApx kDP+5kw+05xXFIJ4wo8WckpgyI5q1Sv+qbJ+BKnV+nQbG0+GlMYtyRtzYZiupcfUj4Jv u9sA== X-Forwarded-Encrypted: i=1; AJvYcCUXwDJg73mtiTm/poZYVXRu4lXbN68d+jpHeRBwK3U1ur/PhPbjn4c/MK8UCnLFBV25zPzh+ET4yFmyQQckrjlZNolz//XC+WZkSNMO X-Gm-Message-State: AOJu0YzewmaBMupusEyTWt7MVZdcXOI4uex8IdgW4eW28LXYamyNcnvs Pk6xKu3LTtHboXAb7J3324K/GouU1o9sd08VqhnLEqoffJp2gTtZtBkSndxDH6B8Y4EsQyrlxDo rxKBidU55UwWK71sven5+5NxmWYE= X-Google-Smtp-Source: AGHT+IG3I59gvi8dUTiZVQwtDT50iiTqSPv9nRueSL7ptyLXa+iRjKQKavqucsCAao3NjVxQyfxpSSVVXiBgSsngZOc= X-Received: by 2002:a25:d697:0:b0:dc2:398b:fa08 with SMTP id n145-20020a25d697000000b00dc2398bfa08mr17082585ybg.31.1709823117842; Thu, 07 Mar 2024 06:51:57 -0800 (PST) MIME-Version: 1.0 References: <567ED6CA.2040504@sigaev.ru> <5f119769-ab11-4807-abcc-71d5dd914ea0@postgrespro.ru> <21088129-7cd3-424a-bcce-6a3427ba3276@postgrespro.ru> <11ee9c04-281f-43c8-a0ff-d481c1e01c09@postgrespro.ru> <54009ba5-4aea-4344-a30d-e3558a59e2a9@postgrespro.ru> <380e5683-cdfd-4220-ab9b-7cccb9d3e480@postgrespro.ru> In-Reply-To: From: Alexander Korotkov Date: Thu, 7 Mar 2024 16:51:43 +0200 Message-ID: Subject: Re: POC, WIP: OR-clause support for indexes To: Andrei Lepikhov Cc: jian he , Alena Rybakina , Robert Haas , pgsql-hackers@postgresql.org, Peter Geoghegan , "Finnerty, Jim" , Marcos Pegoraro , teodor@sigaev.ru, Tomas Vondra , Peter Eisentraut , Ranier Vilela Content-Type: multipart/mixed; boundary="00000000000091748f0613133755" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000091748f0613133755 Content-Type: multipart/alternative; boundary="00000000000091748c0613133753" --00000000000091748c0613133753 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi! On Tue, Mar 5, 2024 at 9:59=E2=80=AFAM Andrei Lepikhov wrote: > On 5/3/2024 12:30, Andrei Lepikhov wrote: > > On 4/3/2024 09:26, jian he wrote: > ... and the new version of the patchset is attached. I made some revisions for the patchset. 1) Use hash_combine() to combine hash values. 2) Upper limit the number of array elements by MAX_SAOP_ARRAY_SIZE. 3) Better save the original order of clauses by putting hash entries and untransformable clauses to the same list. A lot of differences in regression tests output have gone. One important issue I found. # create table t as (select i::int%100 i from generate_series(1,10000) i); # analyze t; # explain select * from t where i =3D 1 or i =3D 1; QUERY PLAN ----------------------------------------------------- Seq Scan on t (cost=3D0.00..189.00 rows=3D200 width=3D4) Filter: (i =3D ANY ('{1,1}'::integer[])) (2 rows) # set enable_or_transformation =3D false; SET # explain select * from t where i =3D 1 or i =3D 1; QUERY PLAN ----------------------------------------------------- Seq Scan on t (cost=3D0.00..189.00 rows=3D100 width=3D4) Filter: (i =3D 1) (2 rows) We don't make array values unique. That might make query execution performance somewhat worse, and also makes selectivity estimation worse. I suggest Andrei and/or Alena should implement making array values unique. ------ Regards, Alexander Korotkov --00000000000091748c0613133753 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi!

On Tue, Mar 5, 2024 at 9:59=E2=80=AFAM Andrei L= epikhov <a.lepikhov@postgre= spro.ru> wrote:
> On 5/3/2024 12:30, Andrei Lepikhov wrote:> > On 4/3/2024 09:26, jian he wrote:
> ... and the new versio= n of the patchset is attached.

I made some revisions for the patchse= t.
1) Use hash_combine() to combine hash values.
2) Upper limit the n= umber of array elements by MAX_SAOP_ARRAY_SIZE.
3) Better save the origi= nal order of clauses by putting hash entries and untransformable clauses to= the same list.=C2=A0 A lot of differences in regression tests output have = gone.

One important issue I found.

# create table t as (select i::int%100 i from generate_series(1,10000) = i);
# analyze t;
# explain select * from t where i =3D 1 or i =3D 1;<= br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0QUERY PLAN
-----------------------------------------------------=C2=A0Seq Scan on t =C2=A0(cost=3D0.00..189.00 rows=3D200 width=3D4)
= =C2=A0 =C2=A0Filter: (i =3D ANY ('{1,1}'::integer[]))
(2 rows)
# set enable_or_transformation =3D false;
SET
# explain select = * from t where i =3D 1 or i =3D 1;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0QUERY PLAN
--------------------= ---------------------------------
=C2=A0Seq Scan on t =C2=A0(cost=3D0.00= ..189.00 rows=3D100 width=3D4)
=C2=A0 =C2=A0Filter: (i =3D 1)
(2 rows= )

We don't make array values unique.=C2=A0 That might mak= e query execution performance somewhat worse, and also makes selectivity es= timation worse.=C2=A0 I suggest Andrei and/or Alena should implement making= array values unique.

------
Regards,
Alexander Korotkov
=
--00000000000091748c0613133753-- --00000000000091748f0613133755 Content-Type: application/octet-stream; name="v20-0002-Teach-generate_bitmap_or_paths-to-build-BitmapOr.patch" Content-Disposition: attachment; filename="v20-0002-Teach-generate_bitmap_or_paths-to-build-BitmapOr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lthcb8xe1 RnJvbSA2NWYwZDBkNTgyYWYyNWMzYTUzMjY0NmYwOTc5YWMzMzZkZDE2YTBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmV5IFYuIExlcGlraG92IiA8YS5sZXBpa2hvdkBwb3N0 Z3Jlc3Byby5ydT4KRGF0ZTogVHVlLCA1IE1hciAyMDI0IDEzOjI5OjQ2ICswNzAwClN1YmplY3Q6 IFtQQVRDSCB2MjAgMi8yXSBUZWFjaCBnZW5lcmF0ZV9iaXRtYXBfb3JfcGF0aHMgdG8gYnVpbGQg Qml0bWFwT3IKIHBhdGhzIG92ZXIgU0FPUCBjbGF1c2VzLgoKTGlrZXdpc2UgT1IgY2xhdXNlcywg ZGlzY292ZXIgU0FPUCBhcnJheSBhbmQgdHJ5IHRvIHNwbGl0IGl0cyBlbGVtZW50cwpiZXR3ZWVu IHNtYWxsZXIgc2l6ZWQgYXJyYXlzIHRvIGZpdCBhIHNldCBvZiBwYXJ0aWFsIGluZGV4ZXMuCi0t LQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAgICAgfCAgIDMgKwogc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYyAgICAgfCAzMTUgKysrKysrKysrKysr KysrKysrLS0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYyAgICAgfCAg NDYgKysrKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVzdHJpY3RpbmZvLmMgfCAgMTMg Kwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oICAgICAgICAgfCAgMTYgKysKIHNy Yy9pbmNsdWRlL29wdGltaXplci9yZXN0cmljdGluZm8uaCAgICAgIHwgICAxICsKIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc2VsZWN0Lm91dCAgICAgIHwgMjgyICsrKysrKysrKysrKysrKysr KysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NlbGVjdC5zcWwgICAgICAgICAgIHwgIDgyICsrKysr Kwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgfCAgIDEgKwogOSBm aWxlcyBjaGFuZ2VkLCA3MDYgaW5zZXJ0aW9ucygrKSwgNTMgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21s CmluZGV4IDFmZGZmZmQ3OWIwLi44MDA4YjA1MzI3YiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtNTQ0Niw2ICs1 NDQ2LDkgQEAgQU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVw bGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIKICAgICAgICAgVGhlIGdyb3VwaW5nIHRl Y2huaXF1ZSBvZiB0aGlzIHRyYW5zZm9ybWF0aW9uIGlzIGJhc2VkIG9uIHRoZSBlcXVpdmFsZW5j ZSBvZiB2YXJpYWJsZSBzaWRlcy4KICAgICAgICAgT25lIHNpZGUgb2Ygc3VjaCBhbiBleHByZXNz aW9uIG11c3QgYmUgYSBjb25zdGFudCBjbGF1c2UsIGFuZCB0aGUgb3RoZXIgbXVzdCBjb250YWlu IGEgdmFyaWFibGUgY2xhdXNlLgogICAgICAgICBUaGUgZGVmYXVsdCBpcyA8bGl0ZXJhbD5vbjwv bGl0ZXJhbD4uCisgICAgICAgIEFsc28sIGR1cmluZyBCaXRtYXBTY2FuIHBhdGhzIGdlbmVyYXRp b24gaXQgZW5hYmxlcyBhbmFseXNpcyBvZiBlbGVtZW50cworICAgICAgICBvZiBJTiBvciBBTlkg Y29uc3RhbnQgYXJyYXlzIHRvIGNvdmVyIHN1Y2ggY2xhdXNlIHdpdGggQml0bWFwT3Igc2V0IG9m CisgICAgICAgIHBhcnRpYWwgaW5kZXggc2NhbnMuCiAgICAgICAgIDwvcGFyYT4KICAgICAgIDwv bGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BhdGgvaW5keHBhdGguYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2lu ZHhwYXRoLmMKaW5kZXggMzJjNmE4YmJkY2IuLmY5MmE0N2MzZDUzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci9wYXRoL2luZHhwYXRoLmMKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJvcHRpbWl6 ZXIvcGF0aHMuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcHJlcC5oIgogI2luY2x1ZGUgIm9wdGlt aXplci9yZXN0cmljdGluZm8uaCIKKyNpbmNsdWRlICJ1dGlscy9hcnJheS5oIgogI2luY2x1ZGUg InV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3NlbGZ1bmNzLmgiCiAKQEAgLTEy MjAsMTEgKzEyMjEsMTg4IEBAIGJ1aWxkX3BhdGhzX2Zvcl9PUihQbGFubmVySW5mbyAqcm9vdCwg UmVsT3B0SW5mbyAqcmVsLAogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiBCdWlsZGluZyBp bmRleCBwYXRocyBvdmVyIFNBT1AgY2xhdXNlIGRpZmZlcnMgZnJvbSB0aGUgbG9naWMgb2YgT1Ig Y2xhdXNlcy4KKyAqIEhlcmUgd2UgaXRlcmF0ZSBhY3Jvc3MgYWxsIHRoZSBhcnJheSBlbGVtZW50 cyBhbmQgc3BsaXQgdGhlbSB0byBTQU9QcywKKyAqIGNvcnJlc3BvbmRpbmcgdG8gZGlmZmVyZW50 IGluZGV4ZXMuIFdlIG11c3QgbWF0Y2ggZWFjaCBlbGVtZW50IHRvIGFuIGluZGV4LgorICovCitz dGF0aWMgTGlzdCAqCitidWlsZF9wYXRoc19mb3JfU0FPUChQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqcmVsLCBSZXN0cmljdEluZm8gKnJpbmZvLAorCQkJCQkgTGlzdCAqb3RoZXJfY2xh dXNlcykKK3sKKwlMaXN0CQkJICAgKnJlc3VsdCA9IE5JTDsKKwlMaXN0CQkJICAgKnByZWRpY2F0 ZV9saXN0cyA9IE5JTDsKKwlMaXN0Q2VsbAkJICAgKmxjOworCVByZWRpY2F0ZXNEYXRhCSAgICpw ZDsKKwlTY2FsYXJBcnJheU9wRXhwciAgKnNhb3AgPSAoU2NhbGFyQXJyYXlPcEV4cHIgKikgcmlu Zm8tPmNsYXVzZTsKKworCUFzc2VydChJc0Eoc2FvcCwgU2NhbGFyQXJyYXlPcEV4cHIpICYmIHNh b3AtPnVzZU9yKTsKKworCWlmICghSXNBKGxzZWNvbmQoc2FvcC0+YXJncyksIENvbnN0KSkKKwkJ LyoKKwkJICogSGFzIGl0IHByYWN0aWNhbCBvdXRjb21lIHRvIG1lcmdlIGFycmF5cyB3aGljaCBj b3VsZG4ndCBjb25zdGFudGlmaWVkCisJCSAqIGJlZm9yZSB0aGF0IHN0ZXA/CisJCSAqLworCQly ZXR1cm4gTklMOworCisJLyogQ29sbGVjdCBwcmVkaWNhdGVzICovCisJZm9yZWFjaChsYywgcmVs LT5pbmRleGxpc3QpCisJeworCQlJbmRleE9wdEluZm8gKmluZGV4ID0gKEluZGV4T3B0SW5mbyAq KSBsZmlyc3QobGMpOworCisJCS8qIFRha2UgaW50byBjb25zaWRlcmF0aW9uIHBhcnRpYWwgaW5k ZXhlcyBzdXBwb3J0aW5nIGJpdG1hcCBzY2FucyAqLworCQlpZiAoIWluZGV4LT5hbWhhc2dldGJp dG1hcCB8fCBpbmRleC0+aW5kcHJlZCA9PSBOSUwgfHwgaW5kZXgtPnByZWRPSykKKwkJCWNvbnRp bnVlOworCisJCXBkID0gcGFsbG9jMChzaXplb2YoUHJlZGljYXRlc0RhdGEpKTsKKwkJcGQtPmlk ID0gZm9yZWFjaF9jdXJyZW50X2luZGV4KGxjKTsKKwkJLyogVGhlIHRyaWNrIHdpdGggcmVkdWNp bmcgcmVjdXJzaW9uIGlzIHN0b2xlbiBmcm9tIHByZWRpY2F0ZV9pbXBsaWVkX2J5ICovCisJCXBk LT5wcmVkaWNhdGUgPSBsaXN0X2xlbmd0aChpbmRleC0+aW5kcHJlZCkgPT0gMSA/CisJCQkJCQkJ CQkJKE5vZGUgKikgbGluaXRpYWwoaW5kZXgtPmluZHByZWQpIDoKKwkJCQkJCQkJCQkoTm9kZSAq KSBpbmRleC0+aW5kcHJlZDsKKwkJcHJlZGljYXRlX2xpc3RzID0gbGFwcGVuZChwcmVkaWNhdGVf bGlzdHMsICh2b2lkICopIHBkKTsKKwl9CisKKwkvKiBTcGxpdCB0aGUgYXJyYXkgZGF0YSBhY2Nv cmRpbmcgdG8gaW5kZXggcHJlZGljYXRlcy4gKi8KKwlpZiAocHJlZGljYXRlX2xpc3RzID09IE5J TCB8fAorCQkhc2FvcF9jb3ZlcmVkX2J5X3ByZWRpY2F0ZXMoc2FvcCwgcHJlZGljYXRlX2xpc3Rz KSkKKwkJcmV0dXJuIE5JTDsKKworCW90aGVyX2NsYXVzZXMgPSBsaXN0X2RlbGV0ZV9wdHIob3Ro ZXJfY2xhdXNlcywgcmluZm8pOworCisJLyoKKwkgKiBIYXZpbmcgaW5jb21pbmcgU0FPUCBzcGxp dCB0byBzZXQgb2Ygc21hbGxlciBTQU9QcyB3aGljaCBjYW4gYmUgYXBwbGllZAorCSAqIHRvIHBh cnRpYWwgaW5kZXhlcywgZ2VuZXJhdGUgcGF0aHMgZm9yIGVhY2ggb25lLgorCSAqLworCWZvcmVh Y2gobGMsIHByZWRpY2F0ZV9saXN0cykKKwl7CisJCUluZGV4T3B0SW5mbwkgICAqaW5kZXg7CisJ CUluZGV4Q2xhdXNlU2V0CQljbGF1c2VzZXQ7CisJCUxpc3QJCQkgICAqaW5kZXhwYXRoczsKKwkJ UmVzdHJpY3RJbmZvCSAgICpyaW5mbzEgPSBOVUxMOworCQlFeHByCQkJICAgKmNsYXVzZTsKKwkJ QXJyYXlUeXBlCQkgICAqYXJyYXl2YWwgPSBOVUxMOworCQlBcnJheUV4cHIJCSAgICphcnIgPSBO VUxMOworCQlDb25zdAkJCSAgICphcnJheWNvbnN0OworCQlTY2FsYXJBcnJheU9wRXhwciAgKmRl c3Q7CisKKwkJcGQgPSAoUHJlZGljYXRlc0RhdGEgKikgbGZpcnN0KGxjKTsKKwkJaWYgKHBkLT5l bGVtcyA9PSBOSUwpCisJCQkvKiBUaGUgaW5kZXggZG9lc24ndCBwYXJ0aWNpcGF0ZSBpbiB0aGlz IG9wZXJhdGlvbiAqLworCQkJY29udGludWU7CisKKwkJLyogTWFrZSB1cCBuZXcgYXJyYXkgKi8K KwkJYXJyYXljb25zdCA9IGxzZWNvbmRfbm9kZShDb25zdCwgc2FvcC0+YXJncyk7CisJCWFycmF5 dmFsID0gRGF0dW1HZXRBcnJheVR5cGVQKGFycmF5Y29uc3QtPmNvbnN0dmFsdWUpOworCQlhcnIg PSBtYWtlTm9kZShBcnJheUV4cHIpOworCQlhcnItPmFycmF5X2NvbGxpZCA9IGFycmF5Y29uc3Qt PmNvbnN0Y29sbGlkOworCQlhcnItPmFycmF5X3R5cGVpZCA9IGFycmF5Y29uc3QtPmNvbnN0dHlw ZTsKKwkJYXJyLT5lbGVtZW50X3R5cGVpZCA9IGFycmF5dmFsLT5lbGVtdHlwZTsKKwkJYXJyLT5l bGVtZW50cyA9IHBkLT5lbGVtczsKKwkJYXJyLT5sb2NhdGlvbiA9IC0xOworCQlhcnItPm11bHRp ZGltcyA9IGZhbHNlOworCisJCS8qIENvbXBvc2UgbmV3IFNBT1AsIHBhcnRpYWxseSBjb3Zlcmlu ZyB0aGUgc291cmNlIG9uZSAqLworCQlkZXN0ID0gbWFrZU5vZGUoU2NhbGFyQXJyYXlPcEV4cHIp OworCQltZW1jcHkoZGVzdCwgc2FvcCwgc2l6ZW9mKFNjYWxhckFycmF5T3BFeHByKSk7CisJCWRl c3QtPmFyZ3MgPSBsaXN0X21ha2UyKGxpbml0aWFsKHNhb3AtPmFyZ3MpLCBhcnIpOworCQljbGF1 c2UgPSAoRXhwciAqKSBlc3RpbWF0ZV9leHByZXNzaW9uX3ZhbHVlKHJvb3QsIChOb2RlICopIGRl c3QpOworCisJCS8qCisJCSAqIENyZWF0ZSBuZXcgUmVzdHJpY3RJbmZvLiBJdCBtYXliZSBtb3Jl IGhlYXZ5IHRoYW4ganVzdCBjb3B5IG5vZGUsCisJCSAqIGJ1dCByZW1lbWJlciBzb21lIGludGVy bmFsczogdGhlIHNlcmlhbCBudW1iZXIsIHNlbGVjdGl2aXR5CisJCSAqIGNhY2hlIGV0Yy4KKwkJ ICovCisJCXJpbmZvMSA9IG1ha2VfcmVzdHJpY3RpbmZvKHJvb3QsIGNsYXVzZSwKKwkJCQkJCQkJ ICAgcmluZm8tPmlzX3B1c2hlZF9kb3duLAorCQkJCQkJCQkgICByaW5mby0+aGFzX2Nsb25lLAor CQkJCQkJCQkgICByaW5mby0+aXNfY2xvbmUsCisJCQkJCQkJCSAgIHJpbmZvLT5wc2V1ZG9jb25z dGFudCwKKwkJCQkJCQkJICAgcmluZm8tPnNlY3VyaXR5X2xldmVsLAorCQkJCQkJCQkgICByaW5m by0+cmVxdWlyZWRfcmVsaWRzLAorCQkJCQkJCQkgICByaW5mby0+aW5jb21wYXRpYmxlX3JlbGlk cywKKwkJCQkJCQkJICAgcmluZm8tPm91dGVyX3JlbGlkcyk7CisKKwkJaW5kZXggPSBsaXN0X250 aChyZWwtPmluZGV4bGlzdCwgcGQtPmlkKTsKKwkJQXNzZXJ0KHByZWRpY2F0ZV9pbXBsaWVkX2J5 KGluZGV4LT5pbmRwcmVkLCBsaXN0X21ha2UxKHJpbmZvMSksIHRydWUpKTsKKworCQkvKiBFeGNs dWRpbmcgcGFydGlhbCBpbmRleGVzIHdpdGggcHJlZE9LIHdlIG1ha2UgdGhpcyBzdGF0ZW1lbnQg ZmFsc2UgKi8KKwkJQXNzZXJ0KCFwcmVkaWNhdGVfaW1wbGllZF9ieShpbmRleC0+aW5kcHJlZCwg b3RoZXJfY2xhdXNlcywgZmFsc2UpKTsKKworCQkvKiBUaW1lIHRvIGdlbmVyYXRlIGluZGV4IHBh dGhzICovCisKKwkJTWVtU2V0KCZjbGF1c2VzZXQsIDAsIHNpemVvZihjbGF1c2VzZXQpKTsKKwkJ bWF0Y2hfY2xhdXNlc190b19pbmRleChyb290LCBsaXN0X21ha2UxKHJpbmZvMSksIGluZGV4LCAm Y2xhdXNlc2V0KTsKKwkJbWF0Y2hfY2xhdXNlc190b19pbmRleChyb290LCBvdGhlcl9jbGF1c2Vz LCBpbmRleCwgJmNsYXVzZXNldCk7CisKKwkJLyogUHJlZGljYXRlIGhhcyBmb3VuZCBhbHJlYWR5 LiBTbywgaXQgaXMgb2sgZm9yIHRoZSBlbXB0eSBtYXRjaCAqLworCisJCWluZGV4cGF0aHMgPSBi dWlsZF9pbmRleF9wYXRocyhyb290LCByZWwsCisJCQkJCQkJCQkgICBpbmRleCwgJmNsYXVzZXNl dCwKKwkJCQkJCQkJCSAgIHRydWUsCisJCQkJCQkJCQkgICBTVF9CSVRNQVBTQ0FOLAorCQkJCQkJ CQkJICAgTlVMTCwKKwkJCQkJCQkJCSAgIE5VTEwpOworCQlBc3NlcnQoaW5kZXhwYXRocyAhPSBO SUwpOworCQlyZXN1bHQgPSBsYXBwZW5kKHJlc3VsdCwgaW5kZXhwYXRocyk7CisJfQorCXJldHVy biByZXN1bHQ7Cit9CisKKy8qCisgKiBBbmFseXNlIGluY29taW5nIFNBT1Agbm9kZSB0byBjb3Zl ciBpdCBieSBwYXJ0aWFsIGluZGV4ZXMuCisgKgorICogVGhlIHJldHVybmluZyBwYXRobGlzdCBt dXN0IGJlIEFORGVkIHRvIHRoZSBmaW5hbCBCaXRtYXBTY2FuIHBhdGguCisgKiBUaGUgZnVuY3Rp b24gcmV0dXJucyBOVUxMIHdoZW4gYW4gYXJyYXkgZWxlbWVudCBjYW5ub3QgYmUgZml0dGVkIHdp dGggc29tZQorICogcGFydGlhbCBpbmRleC4gVGhlIFJhdGlvbmFsZSBmb3Igc3VjaCBhbiBvcGVy YXRpb24gaXMgdGhhdCB3aGVuIHNjaGVtYQorICogY29udGFpbnMgbWFueSBwYXJ0aWFsIGluZGV4 ZXMsIHRoZSBTQU9QIGNsYXVzZSBtYXkgYmUgZWZmZWN0aXZlbHkgZnVsZmlsbGVkCisgKiBieSBh cHBlbmRpbmcgcmVzdWx0cyBvZiBzY2FubmluZyBzb21lIG1pbmltYWwgc2V0IG9mIHRpbnkgcGFy dGlhbCBpbmRleGVzLgorICoKKyAqIFdvcmtpbmcgam9pbnRseSB3aXRoIHRoZSBUcmFuc2Zvcm1P ckV4cHJUb0FOWSByb3V0aW5lLCBpdCBwcm92aWRlcyBhIHVzZXIKKyAqIHdpdGggc29tZSBzb3J0 IG9mIGluZGVwZW5kZW5jZSBvZiB0aGUgcXVlcnkgcGxhbiBmcm9tIHRoZSBhcHByb2FjaCB0byB3 cml0aW5nCisgKiBhbHRlcm5hdGl2ZXMgZm9yIHRoZSBzYW1lIGVudGl0eSBpbiB0aGUgV0hFUkUg c2VjdGlvbi4KKyAqLworc3RhdGljIExpc3QgKgorZ2VuZXJhdGVfc2FvcF9wYXRobGlzdChQbGFu bmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAorCQkJCQkgICBSZXN0cmljdEluZm8gKnJp bmZvLCBMaXN0ICphbGxfY2xhdXNlcykKK3sKKwlMaXN0CSAgICpwYXRobGlzdCA9IE5JTDsKKwlQ YXRoCSAgICpiaXRtYXBxdWFsOworCUxpc3QJICAgKmluZGxpc3Q7CisJTGlzdENlbGwgICAqbGM7 CisKKwlpZiAoIWVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbikKKwkJcmV0dXJuIE5JTDsKKworCS8q CisJICogV2UgbXVzdCBiZSBhYmxlIHRvIG1hdGNoIGF0IGxlYXN0IG9uZSBpbmRleCB0byBlYWNo IGVsZW1lbnQgb2YKKwkgKiB0aGUgYXJyYXksIGVsc2Ugd2UgY2FuJ3QgdXNlIGl0LgorCSAqLwor CWluZGxpc3QgPSBidWlsZF9wYXRoc19mb3JfU0FPUChyb290LCByZWwsIHJpbmZvLCBhbGxfY2xh dXNlcyk7CisJaWYgKGluZGxpc3QgPT0gTklMKQorCQlyZXR1cm4gTklMOworCisJLyoKKwkgKiBP SywgcGljayB0aGUgbW9zdCBwcm9taXNpbmcgQU5EIGNvbWJpbmF0aW9uLCBhbmQgYWRkIGl0IHRv CisJICogcGF0aGxpc3QuCisJICovCisJZm9yZWFjaCAobGMsIGluZGxpc3QpCisJeworCQlMaXN0 ICpwbGlzdCA9IGxmaXJzdF9ub2RlKExpc3QsIGxjKTsKKworCQliaXRtYXBxdWFsID0gY2hvb3Nl X2JpdG1hcF9hbmQocm9vdCwgcmVsLCBwbGlzdCk7CisJCXBhdGhsaXN0ID0gbGFwcGVuZChwYXRo bGlzdCwgYml0bWFwcXVhbCk7CisJfQorCisJcmV0dXJuIHBhdGhsaXN0OworfQorCiAvKgogICog Z2VuZXJhdGVfYml0bWFwX29yX3BhdGhzCi0gKgkJTG9vayB0aHJvdWdoIHRoZSBsaXN0IG9mIGNs YXVzZXMgdG8gZmluZCBPUiBjbGF1c2VzLCBhbmQgZ2VuZXJhdGUKLSAqCQlhIEJpdG1hcE9yUGF0 aCBmb3IgZWFjaCBvbmUgd2UgY2FuIGhhbmRsZSB0aGF0IHdheS4gIFJldHVybiBhIGxpc3QKLSAq CQlvZiB0aGUgZ2VuZXJhdGVkIEJpdG1hcE9yUGF0aHMuCisgKgkJTG9vayB0aHJvdWdoIHRoZSBs aXN0IG9mIGNsYXVzZXMgdG8gZmluZCBPUiBhbmQgU0FPUCBjbGF1c2VzLCBhbmQKKyAqCQlFYWNo IHNhb3AgY2xhdXNlIGFyZSBzcGxpdHRlZCB0byBiZSBjb3ZlcmVkIGJ5IHBhcnRpYWwgaW5kZXhl cy4KKyAqCQlnZW5lcmF0ZSBhIEJpdG1hcE9yUGF0aCBmb3IgZWFjaCBvbmUgd2UgY2FuIGhhbmRs ZSB0aGF0IHdheS4KKyAqCQlSZXR1cm4gYSBsaXN0IG9mIHRoZSBnZW5lcmF0ZWQgQml0bWFwT3JQ YXRocy4KICAqCiAgKiBvdGhlcl9jbGF1c2VzIGlzIGEgbGlzdCBvZiBhZGRpdGlvbmFsIGNsYXVz ZXMgdGhhdCBjYW4gYmUgYXNzdW1lZCB0cnVlCiAgKiBmb3IgdGhlIHB1cnBvc2Ugb2YgZ2VuZXJh dGluZyBpbmRleHF1YWxzLCBidXQgYXJlIG5vdCB0byBiZSBzZWFyY2hlZCBmb3IKQEAgLTEyNDcs NjggKzE0MjUsOTkgQEAgZ2VuZXJhdGVfYml0bWFwX29yX3BhdGhzKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpyZWwsCiAJZm9yZWFjaChsYywgY2xhdXNlcykKIAl7CiAJCVJlc3RyaWN0 SW5mbyAqcmluZm8gPSBsZmlyc3Rfbm9kZShSZXN0cmljdEluZm8sIGxjKTsKLQkJTGlzdAkgICAq cGF0aGxpc3Q7CisJCUxpc3QJICAgKnBhdGhsaXN0ID0gTklMOwogCQlQYXRoCSAgICpiaXRtYXBx dWFsOwogCQlMaXN0Q2VsbCAgICpqOwogCi0JCS8qIElnbm9yZSBSZXN0cmljdEluZm9zIHRoYXQg YXJlbid0IE9ScyAqLwotCQlpZiAoIXJlc3RyaWN0aW9uX2lzX29yX2NsYXVzZShyaW5mbykpCisJ CWlmIChyZXN0cmljdGlvbl9pc19zYW9wX2NsYXVzZShyaW5mbykpCisJCXsKKwkJCXBhdGhsaXN0 ID0gZ2VuZXJhdGVfc2FvcF9wYXRobGlzdChyb290LCByZWwsIHJpbmZvLAorCQkJCQkJCQkJCQkg IGFsbF9jbGF1c2VzKTsKKwkJfQorCQllbHNlIGlmICghcmVzdHJpY3Rpb25faXNfb3JfY2xhdXNl KHJpbmZvKSkKKwkJCS8qIElnbm9yZSBSZXN0cmljdEluZm9zIHRoYXQgYXJlbid0IE9ScyAqLwog CQkJY29udGludWU7Ci0KLQkJLyoKLQkJICogV2UgbXVzdCBiZSBhYmxlIHRvIG1hdGNoIGF0IGxl YXN0IG9uZSBpbmRleCB0byBlYWNoIG9mIHRoZSBhcm1zIG9mCi0JCSAqIHRoZSBPUiwgZWxzZSB3 ZSBjYW4ndCB1c2UgaXQuCi0JCSAqLwotCQlwYXRobGlzdCA9IE5JTDsKLQkJZm9yZWFjaChqLCAo KEJvb2xFeHByICopIHJpbmZvLT5vcmNsYXVzZSktPmFyZ3MpCisJCWVsc2UKIAkJewotCQkJTm9k ZQkgICAqb3JhcmcgPSAoTm9kZSAqKSBsZmlyc3Qoaik7Ci0JCQlMaXN0CSAgICppbmRsaXN0Owot Ci0JCQkvKiBPUiBhcmd1bWVudHMgc2hvdWxkIGJlIEFORHMgb3Igc3ViLVJlc3RyaWN0SW5mb3Mg Ki8KLQkJCWlmIChpc19hbmRjbGF1c2Uob3JhcmcpKQorCQkJLyoKKwkJCSAqIFdlIG11c3QgYmUg YWJsZSB0byBtYXRjaCBhdCBsZWFzdCBvbmUgaW5kZXggdG8gZWFjaCBvZiB0aGUgYXJtcyBvZgor CQkJICogdGhlIE9SLCBlbHNlIHdlIGNhbid0IHVzZSBpdC4KKwkJCSAqLworCQkJZm9yZWFjaChq LCAoKEJvb2xFeHByICopIHJpbmZvLT5vcmNsYXVzZSktPmFyZ3MpCiAJCQl7Ci0JCQkJTGlzdAkg ICAqYW5kYXJncyA9ICgoQm9vbEV4cHIgKikgb3JhcmcpLT5hcmdzOworCQkJCU5vZGUJICAgKm9y YXJnID0gKE5vZGUgKikgbGZpcnN0KGopOworCQkJCUxpc3QJICAgKmluZGxpc3Q7CiAKLQkJCQlp bmRsaXN0ID0gYnVpbGRfcGF0aHNfZm9yX09SKHJvb3QsIHJlbCwKLQkJCQkJCQkJCQkJIGFuZGFy Z3MsCi0JCQkJCQkJCQkJCSBhbGxfY2xhdXNlcyk7CisJCQkJLyogT1IgYXJndW1lbnRzIHNob3Vs ZCBiZSBBTkRzIG9yIHN1Yi1SZXN0cmljdEluZm9zICovCisJCQkJaWYgKGlzX2FuZGNsYXVzZShv cmFyZykpCisJCQkJeworCQkJCQlMaXN0CSAgICphbmRhcmdzID0gKChCb29sRXhwciAqKSBvcmFy ZyktPmFyZ3M7CiAKLQkJCQkvKiBSZWN1cnNlIGluIGNhc2UgdGhlcmUgYXJlIHN1Yi1PUnMgKi8K LQkJCQlpbmRsaXN0ID0gbGlzdF9jb25jYXQoaW5kbGlzdCwKLQkJCQkJCQkJCSAgZ2VuZXJhdGVf Yml0bWFwX29yX3BhdGhzKHJvb3QsIHJlbCwKLQkJCQkJCQkJCQkJCQkJCSAgIGFuZGFyZ3MsCi0J CQkJCQkJCQkJCQkJCQkgICBhbGxfY2xhdXNlcykpOwotCQkJfQotCQkJZWxzZQotCQkJewotCQkJ CVJlc3RyaWN0SW5mbyAqcmkgPSBjYXN0Tm9kZShSZXN0cmljdEluZm8sIG9yYXJnKTsKLQkJCQlM aXN0CSAgICpvcmFyZ3M7CisJCQkJCWluZGxpc3QgPSBidWlsZF9wYXRoc19mb3JfT1Iocm9vdCwg cmVsLAorCQkJCQkJCQkJCQkJIGFuZGFyZ3MsCisJCQkJCQkJCQkJCQkgYWxsX2NsYXVzZXMpOwog Ci0JCQkJQXNzZXJ0KCFyZXN0cmljdGlvbl9pc19vcl9jbGF1c2UocmkpKTsKLQkJCQlvcmFyZ3Mg PSBsaXN0X21ha2UxKHJpKTsKKwkJCQkJLyogUmVjdXJzZSBpbiBjYXNlIHRoZXJlIGFyZSBzdWIt T1JzICovCisJCQkJCWluZGxpc3QgPSBsaXN0X2NvbmNhdChpbmRsaXN0LAorCQkJCQkJCQkJCSAg Z2VuZXJhdGVfYml0bWFwX29yX3BhdGhzKHJvb3QsIHJlbCwKKwkJCQkJCQkJCQkJCQkJCQkgICBh bmRhcmdzLAorCQkJCQkJCQkJCQkJCQkJCSAgIGFsbF9jbGF1c2VzKSk7CisJCQkJfQorCQkJCWVs c2UKKwkJCQl7CisJCQkJCVJlc3RyaWN0SW5mbyAqcmkgPSBjYXN0Tm9kZShSZXN0cmljdEluZm8s IG9yYXJnKTsKKwkJCQkJTGlzdAkgICAqb3JhcmdzOwogCi0JCQkJaW5kbGlzdCA9IGJ1aWxkX3Bh dGhzX2Zvcl9PUihyb290LCByZWwsCi0JCQkJCQkJCQkJCSBvcmFyZ3MsCi0JCQkJCQkJCQkJCSBh bGxfY2xhdXNlcyk7Ci0JCQl9CisJCQkJCUFzc2VydCghcmVzdHJpY3Rpb25faXNfb3JfY2xhdXNl KHJpKSk7CiAKLQkJCS8qCi0JCQkgKiBJZiBub3RoaW5nIG1hdGNoZWQgdGhpcyBhcm0sIHdlIGNh bid0IGRvIGFueXRoaW5nIHdpdGggdGhpcyBPUgotCQkJICogY2xhdXNlLgotCQkJICovCi0JCQlp ZiAoaW5kbGlzdCA9PSBOSUwpCi0JCQl7Ci0JCQkJcGF0aGxpc3QgPSBOSUw7Ci0JCQkJYnJlYWs7 Ci0JCQl9CisJCQkJCW9yYXJncyA9IGxpc3RfbWFrZTEocmkpOwogCi0JCQkvKgotCQkJICogT0ss IHBpY2sgdGhlIG1vc3QgcHJvbWlzaW5nIEFORCBjb21iaW5hdGlvbiwgYW5kIGFkZCBpdCB0bwot CQkJICogcGF0aGxpc3QuCi0JCQkgKi8KLQkJCWJpdG1hcHF1YWwgPSBjaG9vc2VfYml0bWFwX2Fu ZChyb290LCByZWwsIGluZGxpc3QpOwotCQkJcGF0aGxpc3QgPSBsYXBwZW5kKHBhdGhsaXN0LCBi aXRtYXBxdWFsKTsKKwkJCQkJaWYgKHJlc3RyaWN0aW9uX2lzX3Nhb3BfY2xhdXNlKHJpKSkKKwkJ CQkJeworCQkJCQkJTGlzdCAqcGF0aHM7CisKKwkJCQkJCXBhdGhzID0gZ2VuZXJhdGVfc2FvcF9w YXRobGlzdChyb290LCByZWwsIHJpLAorCQkJCQkJCQkJCQkJCQkgYWxsX2NsYXVzZXMpOworCisJ CQkJCQlpZiAocGF0aHMgIT0gTklMKQorCQkJCQkJeworCQkJCQkJCS8qCisJCQkJCQkJICogQWRk IHBhdGhzIHRvIHBhdGhsaXN0IGFuZCBpbW1lZGlhdGVseSBqdW1wIHRvIHRoZQorCQkJCQkJCSAq IG5leHQgZWxlbWVudCBvZiB0aGUgT1IgY2xhdXNlLgorCQkJCQkJCSAqLworCQkJCQkJCXBhdGhs aXN0ID0gbGlzdF9jb25jYXQocGF0aGxpc3QsIHBhdGhzKTsKKwkJCQkJCQljb250aW51ZTsKKwkJ CQkJCX0KKworCQkJCQkJLyoKKwkJCQkJCSAqIFBhc3MgZG93biBvdXQgb2YgdGhpcyBpZiBjb25z dHJ1Y3Rpb246CisJCQkJCQkgKiBJZiBzYW9wIGlzbid0IGNvdmVyZWQgYnkgcGFydGlhbCBpbmRl eGVzLCB0cnkgdG8KKwkJCQkJCSAqIGJ1aWxkIHNjYW4gcGF0aCBmb3IgdGhlIHNhb3AgYXMgYSB3 aG9sZS4KKwkJCQkJCSAqLworCQkJCQl9CisKKwkJCQkJaW5kbGlzdCA9IGJ1aWxkX3BhdGhzX2Zv cl9PUihyb290LCByZWwsCisJCQkJCQkJCQkJCQkgb3JhcmdzLAorCQkJCQkJCQkJCQkJIGFsbF9j bGF1c2VzKTsKKwkJCQl9CisKKwkJCQkvKgorCQkJCSAqIElmIG5vdGhpbmcgbWF0Y2hlZCB0aGlz IGFybSwgd2UgY2FuJ3QgZG8gYW55dGhpbmcgd2l0aCB0aGlzIE9SCisJCQkJICogY2xhdXNlLgor CQkJCSAqLworCQkJCWlmIChpbmRsaXN0ID09IE5JTCkKKwkJCQl7CisJCQkJCXBhdGhsaXN0ID0g TklMOworCQkJCQlicmVhazsKKwkJCQl9CisKKwkJCQkvKgorCQkJCSAqIE9LLCBwaWNrIHRoZSBt b3N0IHByb21pc2luZyBBTkQgY29tYmluYXRpb24sIGFuZCBhZGQgaXQgdG8KKwkJCQkgKiBwYXRo bGlzdC4KKwkJCQkgKi8KKwkJCQliaXRtYXBxdWFsID0gY2hvb3NlX2JpdG1hcF9hbmQocm9vdCwg cmVsLCBpbmRsaXN0KTsKKwkJCQlwYXRobGlzdCA9IGxhcHBlbmQocGF0aGxpc3QsIGJpdG1hcHF1 YWwpOworCQkJfQogCQl9CiAKIAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci91dGlsL3ByZWR0ZXN0LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5j CmluZGV4IGI3Njg5NmRmYmY1Li5hM2E2ZDAwMjRiZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRp bC9wcmVkdGVzdC5jCkBAIC0xMDMsNiArMTAzLDUyIEBAIHN0YXRpYyBPaWQJZ2V0X2J0cmVlX3Rl c3Rfb3AoT2lkIHByZWRfb3AsIE9pZCBjbGF1c2Vfb3AsIGJvb2wgcmVmdXRlX2l0KTsKIHN0YXRp YyB2b2lkIEludmFsaWRhdGVPcHJQcm9vZkNhY2hlQ2FsbEJhY2soRGF0dW0gYXJnLCBpbnQgY2Fj aGVpZCwgdWludDMyIGhhc2h2YWx1ZSk7CiAKIAorLyoKKyAqIENvdWxkIHRoaXMgQU5ZICgpIGV4 cHJlc3Npb24gY2FuIGJlIHNwbGl0IGludG8gYSBzZXQgb2YgQU5ZcyBvdmVyIHBhcnRpYWwKKyAq IGluZGV4ZXM/IElmIHllcywgcmV0dXJuIHRoZXNlIHNhb3BzIGluIHRoZSBQcmVkaWNhdGVzRGF0 YSBzdHJ1Y3R1cmUuCisgKi8KK2Jvb2wKK3Nhb3BfY292ZXJlZF9ieV9wcmVkaWNhdGVzKFNjYWxh ckFycmF5T3BFeHByICpzYW9wLCBMaXN0ICpwcmVkaWNhdGVfbGlzdHMpCit7CisJTGlzdENlbGwJ CSAgICpsYzsKKwlQcmVkSXRlckluZm9EYXRhCWNsYXVzZV9pbmZvOworCWJvb2wJCQkJcmVzdWx0 ID0gZmFsc2U7CisKKwlpZiAocHJlZGljYXRlX2NsYXNzaWZ5KChOb2RlICopIHNhb3AsICZjbGF1 c2VfaW5mbykgIT0gQ0xBU1NfT1IpCisJCXJldHVybiBmYWxzZTsKKworCWl0ZXJhdGVfYmVnaW4o cGl0ZW0sIChOb2RlICopIHNhb3AsIGNsYXVzZV9pbmZvKQorCXsKKwkJcmVzdWx0ID0gZmFsc2U7 CisKKwkJZm9yZWFjaChsYywgcHJlZGljYXRlX2xpc3RzKQorCQl7CisJCQlQcmVkaWNhdGVzRGF0 YSAqcGQgPSAoUHJlZGljYXRlc0RhdGEgKikgbGZpcnN0KGxjKTsKKworCQkJaWYgKCFwcmVkaWNh dGVfaW1wbGllZF9ieV9yZWN1cnNlKHBpdGVtLCBwZC0+cHJlZGljYXRlLCBmYWxzZSkpCisJCQkJ Y29udGludWU7CisKKwkJCS8qIFByZWRpY2F0ZSBpcyBmb3VuZC4gQWRkIHRoZSBlbGVtIHRvIHRo ZSBzYW9wIGNsYXVzZSAqLworCQkJQXNzZXJ0KElzQShwaXRlbSwgT3BFeHByKSk7CisKKwkJCS8q IEV4dHJhY3QgY29uc3RhbnQgZnJvbSB0aGUgZXhwcmVzc2lvbiAqLworCQkJcGQtPmVsZW1zID0g bGFwcGVuZChwZC0+ZWxlbXMsCisJCQkJCWNvcHlPYmplY3QobHNlY29uZF9ub2RlKENvbnN0LCAo KE9wRXhwciAqKSBwaXRlbSktPmFyZ3MpKSk7CisJCQlyZXN1bHQgPSB0cnVlOworCQkJYnJlYWs7 CisJCX0KKworCQlpZiAoIXJlc3VsdCkKKwkJCS8qCisJCQkgKiBUaGUgZWxlbWVudCBkb2Vzbid0 IGZpdCBhbnkgaW5kZXguIEludGVycnVwdCB0aGUgcHJvY2VzcyBpbW1lZGlhdGVseQorCQkJICov CisJCQlicmVhazsKKwl9CisJaXRlcmF0ZV9lbmQoY2xhdXNlX2luZm8pOworCisJcmV0dXJuIHJl c3VsdDsKK30KKwogLyoKICAqIHByZWRpY2F0ZV9pbXBsaWVkX2J5CiAgKgkgIFJlY3Vyc2l2ZWx5 IGNoZWNrcyB3aGV0aGVyIHRoZSBjbGF1c2VzIGluIGNsYXVzZV9saXN0IGltcGx5IHRoYXQgdGhl CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZXN0cmljdGluZm8uYyBi L3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Jlc3RyaWN0aW5mby5jCmluZGV4IDBiNDA2ZTkz MzQyLi4xZGFkMWRjNjU0MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwv cmVzdHJpY3RpbmZvLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVzdHJpY3Rp bmZvLmMKQEAgLTQyMSw2ICs0MjEsMTkgQEAgcmVzdHJpY3Rpb25faXNfb3JfY2xhdXNlKFJlc3Ry aWN0SW5mbyAqcmVzdHJpY3RpbmZvKQogCQlyZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wKK3Jlc3Ry aWN0aW9uX2lzX3Nhb3BfY2xhdXNlKFJlc3RyaWN0SW5mbyAqcmVzdHJpY3RpbmZvKQoreworCWlm IChyZXN0cmljdGluZm8tPmNsYXVzZSAmJiBJc0EocmVzdHJpY3RpbmZvLT5jbGF1c2UsIFNjYWxh ckFycmF5T3BFeHByKSkKKwl7CisJCVNjYWxhckFycmF5T3BFeHByICpzYW9wID0gKFNjYWxhckFy cmF5T3BFeHByICopIHJlc3RyaWN0aW5mby0+Y2xhdXNlOworCisJCWlmIChzYW9wLT51c2VPcikK KwkJCXJldHVybiB0cnVlOworCX0KKwlyZXR1cm4gZmFsc2U7Cit9CisKIC8qCiAgKiByZXN0cmlj dGlvbl9pc19zZWN1cmVseV9wcm9tb3RhYmxlCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv b3B0aW1pemVyL29wdGltaXplci5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5o CmluZGV4IDBlZTcxNTRlMDg0Li40MDI5Y2YwN2JlYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv b3B0aW1pemVyL29wdGltaXplci5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6 ZXIuaApAQCAtMTYwLDYgKzE2MCwyMCBAQCBleHRlcm4gTGlzdCAqZXhwYW5kX2Z1bmN0aW9uX2Fy Z3VtZW50cyhMaXN0ICphcmdzLCBib29sIGluY2x1ZGVfb3V0X2FyZ3VtZW50cywKIAogLyogaW4g dXRpbC9wcmVkdGVzdC5jOiAqLwogCisvKgorICogQ29udGFpbnMgaW5mb3JtYXRpb24gbmVlZGVk IHRvIGV4dHJhY3QgZnJvbSBzYW9wIGEgc2V0IG9mIGVsZW1lbnRzIHdoaWNoIGNhbgorICogYmUg Y292ZXJlZCBieSB0aGUgcGFydGlhbCBpbmRleDoKKyAqIGlkIC0gY2FsbGVyJ3MgaWRlbnRpZmlj YXRpb24gb2YgdGhlIGluZGV4LgorICogcHJlZGljYXRlIC0gcHJlZGljYXRlIGV4cHJlc3Npb24g b2YgdGhlIGluZGV4CisgKiBlbGVtcyAtIHJldHVybmluZyBsaXN0IG9mIGFycmF5IGVsZW1lbnRz IHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoaXMgcHJlZGljYXRlCisgKi8KK3R5cGVkZWYgc3RydWN0 IFByZWRpY2F0ZXNEYXRhCit7CisJaW50CQlpZDsKKwlOb2RlICAgKnByZWRpY2F0ZTsKKwlMaXN0 ICAgKmVsZW1zOworfSBQcmVkaWNhdGVzRGF0YTsKKwogLyoKICAqIFByb29mIGF0dGVtcHRzIGlu dm9sdmluZyBsYXJnZSBhcnJheXMgaW4gU2NhbGFyQXJyYXlPcEV4cHIgbm9kZXMgYXJlCiAgKiBs aWtlbHkgdG8gcmVxdWlyZSBPKE5eMikgdGltZSwgYW5kIG1vcmUgb2Z0ZW4gdGhhbiBub3QgZmFp bCBhbnl3YXkuCkBAIC0xNjksNiArMTgzLDggQEAgZXh0ZXJuIExpc3QgKmV4cGFuZF9mdW5jdGlv bl9hcmd1bWVudHMoTGlzdCAqYXJncywgYm9vbCBpbmNsdWRlX291dF9hcmd1bWVudHMsCiAgKi8K ICNkZWZpbmUgTUFYX1NBT1BfQVJSQVlfU0laRQkJMTAwCiAKK2V4dGVybiBib29sIHNhb3BfY292 ZXJlZF9ieV9wcmVkaWNhdGVzKFNjYWxhckFycmF5T3BFeHByICpzYW9wLAorCQkJCQkJCQkJICBM aXN0ICpwcmVkaWNhdGVfbGlzdHMpOwogZXh0ZXJuIGJvb2wgcHJlZGljYXRlX2ltcGxpZWRfYnko TGlzdCAqcHJlZGljYXRlX2xpc3QsIExpc3QgKmNsYXVzZV9saXN0LAogCQkJCQkJCQkgYm9vbCB3 ZWFrKTsKIGV4dGVybiBib29sIHByZWRpY2F0ZV9yZWZ1dGVkX2J5KExpc3QgKnByZWRpY2F0ZV9s aXN0LCBMaXN0ICpjbGF1c2VfbGlzdCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXpl ci9yZXN0cmljdGluZm8uaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9yZXN0cmljdGluZm8uaApp bmRleCAxYjQyYzgzMmM1OS4uMmNkNWZiZjk0MzQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29w dGltaXplci9yZXN0cmljdGluZm8uaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcmVzdHJp Y3RpbmZvLmgKQEAgLTM0LDYgKzM0LDcgQEAgZXh0ZXJuIFJlc3RyaWN0SW5mbyAqbWFrZV9yZXN0 cmljdGluZm8oUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkgICBSZWxpZHMgb3V0ZXJfcmVs aWRzKTsKIGV4dGVybiBSZXN0cmljdEluZm8gKmNvbW11dGVfcmVzdHJpY3RpbmZvKFJlc3RyaWN0 SW5mbyAqcmluZm8sIE9pZCBjb21tX29wKTsKIGV4dGVybiBib29sIHJlc3RyaWN0aW9uX2lzX29y X2NsYXVzZShSZXN0cmljdEluZm8gKnJlc3RyaWN0aW5mbyk7CitleHRlcm4gYm9vbCByZXN0cmlj dGlvbl9pc19zYW9wX2NsYXVzZShSZXN0cmljdEluZm8gKnJlc3RyaWN0aW5mbyk7CiBleHRlcm4g Ym9vbCByZXN0cmljdGlvbl9pc19zZWN1cmVseV9wcm9tb3RhYmxlKFJlc3RyaWN0SW5mbyAqcmVz dHJpY3RpbmZvLAogCQkJCQkJCQkJCQkgICBSZWxPcHRJbmZvICpyZWwpOwogZXh0ZXJuIExpc3Qg KmdldF9hY3R1YWxfY2xhdXNlcyhMaXN0ICpyZXN0cmljdGluZm9fbGlzdCk7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NlbGVjdC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3NlbGVjdC5vdXQKaW5kZXggMzNhNmRjZWIwZTMuLjBlYmFmMDAyZTgzIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NlbGVjdC5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zZWxlY3Qub3V0CkBAIC05MDcsNiArOTA3LDI4OCBAQCBzZWxl Y3QgdW5pcXVlMSwgdW5pcXVlMiBmcm9tIG9uZWsyCiAgICAgICAgMCB8ICAgICA5OTgKICgyIHJv d3MpCiAKK1NFVCBlbmFibGVfc2Vxc2NhbiBUTyBvZmY7CitTRVQgZW5hYmxlX2luZGV4c2NhbiBU TyBvZmY7IC0tIE9ubHkgQml0bWFwU2NhbiBpcyBhIHN1YmplY3QgbWF0dGVyIGhlcmUKK1NFVCBl bmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSAnb2ZmJzsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCBjb3VudCgqKSBGUk9NIG9uZWsyIFdIRVJFIHN0cmluZ3UxID0gJ0EnIE9SIHN0cmluZ3Ux ID0gJ0onOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRl CisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBvbmVrMgorICAgICAgICAgUmVjaGVjayBDb25k OiAoKHN0cmluZ3UxIDwgJ0InOjpuYW1lKSBPUiAoc3RyaW5ndTEgPSAnSic6Om5hbWUpKQorICAg ICAgICAgRmlsdGVyOiAoKHN0cmluZ3UxID0gJ0EnOjpuYW1lKSBPUiAoc3RyaW5ndTEgPSAnSic6 Om5hbWUpKQorICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFw IEluZGV4IFNjYW4gb24gb25lazJfdTJfcHJ0bAorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIG9uZWsyX3N0dTFfcHJ0bAorICAgICAgICAgICAgICAgICAgICAgSW5kZXgg Q29uZDogKHN0cmluZ3UxID0gJ0onOjpuYW1lKQorKDggcm93cykKKworLS0gV2l0aG91dCB0aGUg dHJhbnNmb3JtYXRpb24gb25seSBzZXFzY2FuIHBvc3NpYmxlIGhlcmUKK0VYUExBSU4gKENPU1RT IE9GRikKK1NFTEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUy IDwgMSBBTkQgc3RyaW5ndTEgSU4gKCdBJywnSicpIEFORCBzdHJpbmd1MSA8ICdaJzsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gb25lazIKKyAgIEZpbHRlcjogKCh1bmlxdWUyIDwg MSkgQU5EIChzdHJpbmd1MSA9IEFOWSAoJ3tBLEp9Jzo6bmFtZVtdKSkgQU5EIChzdHJpbmd1MSA8 ICdaJzo6bmFtZSkpCisoMiByb3dzKQorCistLSBVc2UgcGFydGlhbCBpbmRleGVzCitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMgorV0hFUkUgc3RyaW5ndTEg SU4gKCdCJywnSicpIEFORCAoc3RyaW5ndTEgPSAnQScgT1IgdW5pcXVlMSA9IDEpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFw IFNjYW4gb24gb25lazIKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChzdHJpbmd1MSA8ICdCJzo6 bmFtZSkgT1IgKHVuaXF1ZTEgPSAxKSkKKyAgICAgICAgIEZpbHRlcjogKChzdHJpbmd1MSA9IEFO WSAoJ3tCLEp9Jzo6bmFtZVtdKSkgQU5EICgoc3RyaW5ndTEgPSAnQSc6Om5hbWUpIE9SICh1bmlx dWUxID0gMSkpKQorICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0 bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTJfcHJ0bAorICAgICAgICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIG9uZWsyX3UxX3BydGwKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6ICh1bmlxdWUxID0gMSkKKyg4IHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUxIDwgMSBPUiAo c3RyaW5ndTEgPSAnQScgT1Igc3RyaW5ndTEgPSAnSicpOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEJpdG1hcCBIZWFwIFNjYW4g b24gb25lazIKKyAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxIDwgMSkgT1IgKHN0cmluZ3UxIDwg J0InOjpuYW1lKSBPUiAoc3RyaW5ndTEgPSAnSic6Om5hbWUpKQorICAgRmlsdGVyOiAoKHVuaXF1 ZTEgPCAxKSBPUiAoc3RyaW5ndTEgPSAnQSc6Om5hbWUpIE9SIChzdHJpbmd1MSA9ICdKJzo6bmFt ZSkpCisgICAtPiAgQml0bWFwT3IKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBv bmVrMl91MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA8IDEpCisg ICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTJfcHJ0bAorICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3N0dTFfcHJ0bAorICAgICAgICAgICAgICAg SW5kZXggQ29uZDogKHN0cmluZ3UxID0gJ0onOjpuYW1lKQorKDkgcm93cykKKworRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIHVuaXF1ZTIsIHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFIHVu aXF1ZTEgPSAxIE9SIHVuaXF1ZTIgPSBQSSgpOjppbnRlZ2VyOworICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gb25lazIKKyAgIEZpbHRlcjogKCh1bmlxdWUx ID0gMSkgT1IgKHVuaXF1ZTIgPSAzKSkKKygyIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9vcl90cmFu c2Zvcm1hdGlvbjsKKy0tIE9SIDwtPiBBTlkgdHJhbnNmb3JtYXRpb24gbXVzdCBmaW5kIGEgcGF0 aCB3aXRoIHBhcnRpYWwgaW5kZXhlcyBzY2FuCistLSByZWdhcmRsZXNzIHRoZSBjbGF1c2UgcmVw cmVzZW50YXRpb24uCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBv bmVrMiBXSEVSRSBzdHJpbmd1MSA9ICdBJyBPUiBzdHJpbmd1MSA9ICdKJzsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRl CisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBvbmVrMgorICAgICAgICAgUmVjaGVjayBDb25k OiAoKHN0cmluZ3UxID0gQU5ZICgne0p9Jzo6bmFtZVtdKSkgT1IgKHN0cmluZ3UxIDwgJ0InOjpu YW1lKSkKKyAgICAgICAgIEZpbHRlcjogKHN0cmluZ3UxID0gQU5ZICgne0EsSn0nOjpuYW1lW10p KQorICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gb25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25k OiAoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKQorICAgICAgICAgICAgICAgLT4gIEJp dG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyg4IHJvd3MpCisKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIG9uZWsyIFdIRVJFIHN0cmluZ3UxIElOICgn QScsJ0onKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBvbmVrMgor ICAgICAgICAgUmVjaGVjayBDb25kOiAoKHN0cmluZ3UxID0gQU5ZICgne0p9Jzo6bmFtZVtdKSkg T1IgKHN0cmluZ3UxIDwgJ0InOjpuYW1lKSkKKyAgICAgICAgIEZpbHRlcjogKHN0cmluZ3UxID0g QU5ZICgne0EsSn0nOjpuYW1lW10pKQorICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAg ICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfc3R1MV9wcnRsCisgICAgICAgICAg ICAgICAgICAgICBJbmRleCBDb25kOiAoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKQor ICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyg4 IHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIG9uZWsy IFdIRVJFIHN0cmluZ3UxID0gQU5ZICgne0EsSn0nKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0 bWFwIEhlYXAgU2NhbiBvbiBvbmVrMgorICAgICAgICAgUmVjaGVjayBDb25kOiAoKHN0cmluZ3Ux ID0gQU5ZICgne0p9Jzo6bmFtZVtdKSkgT1IgKHN0cmluZ3UxIDwgJ0InOjpuYW1lKSkKKyAgICAg ICAgIEZpbHRlcjogKHN0cmluZ3UxID0gQU5ZICgne0EsSn0nOjpuYW1lW10pKQorICAgICAgICAg LT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25l azJfc3R1MV9wcnRsCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoc3RyaW5ndTEg PSBBTlkgKCd7Sn0nOjpuYW1lW10pKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIG9uZWsyX3UyX3BydGwKKyg4IHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCBjb3VudCgqKSBGUk9NIG9uZWsyIFdIRVJFIHN0cmluZ3UxIElOICgnQScpIE9SIHN0cmlu Z3UxIElOICgnSicpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIG9u ZWsyCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1l W10pKSBPUiAoc3RyaW5ndTEgPCAnQic6Om5hbWUpKQorICAgICAgICAgRmlsdGVyOiAoc3RyaW5n dTEgPSBBTlkgKCd7QSxKfSc6Om5hbWVbXSkpCisgICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAg ICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl9zdHUxX3BydGwKKyAgICAg ICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChzdHJpbmd1MSA9IEFOWSAoJ3tKfSc6Om5hbWVb XSkpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTJfcHJ0 bAorKDggcm93cykKKworLS0gRG9uJ3Qgc2NhbiBwYXJ0aWFsIGluZGV4ZXMgYmVjYXVzZSBvZiBl eHRyYSB2YWx1ZS4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIG9u ZWsyIFdIRVJFIHN0cmluZ3UxIElOICgnQScsICdKJywgJ0MnKTsKKyAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAg U2VxIFNjYW4gb24gb25lazIKKyAgICAgICAgIEZpbHRlcjogKHN0cmluZ3UxID0gQU5ZICgne0Es SixDfSc6Om5hbWVbXSkpCisoMyByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg dW5pcXVlMiBGUk9NIG9uZWsyCitXSEVSRSBzdHJpbmd1MSBJTiAoJ0EnLCAnQScpIEFORCAoc3Ry aW5ndTEgPSAnQScgT1Igc3RyaW5ndTEgPSAnQScpOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCaXRtYXAgSGVhcCBTY2Fu IG9uIG9uZWsyCisgICBSZWNoZWNrIENvbmQ6IChzdHJpbmd1MSA8ICdCJzo6bmFtZSkKKyAgIEZp bHRlcjogKChzdHJpbmd1MSA9IEFOWSAoJ3tBLEF9Jzo6bmFtZVtdKSkgQU5EIChzdHJpbmd1MSA9 IEFOWSAoJ3tBLEF9Jzo6bmFtZVtdKSkpCisgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25l azJfdTJfcHJ0bAorKDQgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHVuaXF1 ZTIsIHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTIgPCAxIEFORCBzdHJpbmd1MSBJ TiAoJ0EnLCdKJykgQU5EIHN0cmluZ3UxIDwgJ1onOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEJpdG1hcCBIZWFwIFNjYW4gb24gb25lazIKKyAgIFJlY2hlY2sgQ29uZDogKCgoc3Ry aW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKSBBTkQgKHN0cmluZ3UxIDwgJ1onOjpuYW1lKSkg T1IgKCh1bmlxdWUyIDwgMSkgQU5EIChzdHJpbmd1MSA8ICdCJzo6bmFtZSkpKQorICAgRmlsdGVy OiAoKHVuaXF1ZTIgPCAxKSBBTkQgKHN0cmluZ3UxID0gQU5ZICgne0EsSn0nOjpuYW1lW10pKSkK KyAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsy X3N0dTFfcHJ0bAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKChzdHJpbmd1MSA9IEFOWSAo J3tKfSc6Om5hbWVbXSkpIEFORCAoc3RyaW5ndTEgPCAnWic6Om5hbWUpKQorICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6ICh1bmlxdWUyIDwgMSkKKyg4IHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUxID0gMSBPUiB1 bmlxdWUxID0gUEkoKTo6aW50ZWdlcjsKKyAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEJpdG1hcCBIZWFwIFNjYW4gb24gb25lazIKKyAgIFJlY2hlY2sgQ29u ZDogKCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTEgPSAzKSkKKyAgIC0+ICBCaXRtYXBPcgorICAg ICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UxX3BydGwKKyAgICAgICAgICAg ICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiBvbmVrMl91MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVl MSA9IDMpCisoNyByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVlMiwg c3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSBJTiAoMSwgUEkoKTo6aW50ZWdlcik7 IC0tIFRPRE86IHdoeSBpdCBpcyBkaWZmZXJzIGZyb20gcHJldmlvdXMgZXhhbXBsZT8KKyAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBCaXRtYXAgSGVhcCBTY2FuIG9uIG9uZWsyCisgICBSZWNoZWNrIENvbmQ6ICh1bmlxdWUxID0g QU5ZICgnezEsM30nOjppbnRlZ2VyW10pKQorICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9u ZWsyX3UxX3BydGwKKyAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gQU5ZICgnezEsM30n OjppbnRlZ2VyW10pKQorKDQgcm93cykKKworLS0gRG9uJ3QgYXBwbHkgdGhlIG9wdGltaXphdGlv biB0byBjbGF1c2VzLCBjb250YWluaW5nIHZvbGF0aWxlIGZ1bmN0aW9ucworRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIHVuaXF1ZTIsc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVl MSA9IChyYW5kb20oKSoyKTo6aW50ZWdlciBPUiB1bmlxdWUxID0gKHJhbmRvbSgpKjMpOjppbnRl Z2VyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBv biBvbmVrMgorICAgRmlsdGVyOiAoKHVuaXF1ZTEgPSAoKHJhbmRvbSgpICogJzInOjpkb3VibGUg cHJlY2lzaW9uKSk6OmludGVnZXIpIE9SICh1bmlxdWUxID0gKChyYW5kb20oKSAqICczJzo6ZG91 YmxlIHByZWNpc2lvbikpOjppbnRlZ2VyKSkKKygyIHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9G RikKK1NFTEVDVCB1bmlxdWUyLHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTEgSU4g KChyYW5kb20oKSoyKTo6aW50ZWdlciwgKHJhbmRvbSgpKjMpOjppbnRlZ2VyKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gb25lazIKKyAgIEZpbHRlcjog KHVuaXF1ZTEgPSBBTlkgKEFSUkFZWygocmFuZG9tKCkgKiAnMic6OmRvdWJsZSBwcmVjaXNpb24p KTo6aW50ZWdlciwgKChyYW5kb20oKSAqICczJzo6ZG91YmxlIHByZWNpc2lvbikpOjppbnRlZ2Vy XSkpCisoMiByb3dzKQorCistLSBDb21iaW5lIGRpZmZlcmVudCBzYW9wcy4gU29lIG9mIHRoZW0g ZG9lc250JyBmaXQgYSBzZXQgb2YgcGFydGlhbCBpbmRleGVzLAorLS0gYnV0IG90aGVyIGZpdHMu CistLSBVbmZvcnR1bmF0ZWx5LCB3ZSBkb24ndCBjb21iaW5lIHNhb3AgYW5kIE9SIGNsYXVzZXMg c28gZmFyLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHVuaXF1ZTIsc3RyaW5ndTEgRlJP TSBvbmVrMgorV0hFUkUKKyAgdW5pcXVlMSBJTiAoMSwyLDIxKSBBTkQKKyAgKHN0cmluZ3UxIElO ICgnQScsJ0onKSBPUiB1bmlxdWUxIElOICgzLDQpIE9SIHN0cmluZ3UxID0gJ0onKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCaXRtYXAgSGVhcCBTY2FuIG9u IG9uZWsyCisgICBSZWNoZWNrIENvbmQ6ICgoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10p KSBPUiAoc3RyaW5ndTEgPCAnQic6Om5hbWUpIE9SICgodW5pcXVlMSA9IEFOWSAoJ3szLDR9Jzo6 aW50ZWdlcltdKSkgQU5EICh1bmlxdWUxID0gQU5ZICgnezEsMiwyMX0nOjppbnRlZ2VyW10pKSkg T1IgKHN0cmluZ3UxID0gJ0onOjpuYW1lKSkKKyAgIEZpbHRlcjogKCh1bmlxdWUxID0gQU5ZICgn ezEsMiwyMX0nOjppbnRlZ2VyW10pKSBBTkQgKChzdHJpbmd1MSA9IEFOWSAoJ3tBLEp9Jzo6bmFt ZVtdKSkgT1IgKHVuaXF1ZTEgPSBBTlkgKCd7Myw0fSc6OmludGVnZXJbXSkpIE9SIChzdHJpbmd1 MSA9ICdKJzo6bmFtZSkpKQorICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gb25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAo c3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biBvbmVrMl91MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKHVuaXF1ZTEgPSBB TlkgKCd7Myw0fSc6OmludGVnZXJbXSkpIEFORCAodW5pcXVlMSA9IEFOWSAoJ3sxLDIsMjF9Jzo6 aW50ZWdlcltdKSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfc3R1 MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoc3RyaW5ndTEgPSAnSic6Om5hbWUp CisoMTEgcm93cykKKworLS0gQ2hlY2sgcmVjdXJzaXZlIGNvbWJpbmF0aW9uIG9mIE9SIGFuZCBT QU9QIGV4cHJlc3Npb25zCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVlMiwgc3Ry aW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSA8IDEgT1IgKHN0cmluZ3UxID0gJ0EnIE9S IHN0cmluZ3UxID0gJ0onKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEJpdG1hcCBIZWFwIFNj YW4gb24gb25lazIKKyAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxIDwgMSkgT1IgKHN0cmluZ3Ux ID0gQU5ZICgne0p9Jzo6bmFtZVtdKSkgT1IgKHN0cmluZ3UxIDwgJ0InOjpuYW1lKSkKKyAgIEZp bHRlcjogKCh1bmlxdWUxIDwgMSkgT1IgKHN0cmluZ3UxID0gQU5ZICgne0EsSn0nOjpuYW1lW10p KSkKKyAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9u ZWsyX3UxX3BydGwKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxIDwgMSkKKyAg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl9zdHUxX3BydGwKKyAgICAgICAg ICAgICAgIEluZGV4IENvbmQ6IChzdHJpbmd1MSA9IEFOWSAoJ3tKfSc6Om5hbWVbXSkpCisgICAg ICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTJfcHJ0bAorKDkgcm93cykKKwor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHVuaXF1ZTIsIHN0cmluZ3UxIEZST00gb25lazIK K1dIRVJFICh1bmlxdWUxIDwgMSBPUiBzdHJpbmd1MSBJTiAoJ0EnLCdKJykpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgQml0bWFwIEhlYXAgU2NhbiBvbiBvbmVrMgorICAgUmVjaGVjayBDb25k OiAoKHVuaXF1ZTEgPCAxKSBPUiAoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKSBPUiAo c3RyaW5ndTEgPCAnQic6Om5hbWUpKQorICAgRmlsdGVyOiAoKHVuaXF1ZTEgPCAxKSBPUiAoc3Ry aW5ndTEgPSBBTlkgKCd7QSxKfSc6Om5hbWVbXSkpKQorICAgLT4gIEJpdG1hcE9yCisgICAgICAg ICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTFfcHJ0bAorICAgICAgICAgICAgICAg SW5kZXggQ29uZDogKHVuaXF1ZTEgPCAxKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIG9uZWsyX3N0dTFfcHJ0bAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHN0cmluZ3Ux ID0gQU5ZICgne0p9Jzo6bmFtZVtdKSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biBvbmVrMl91Ml9wcnRsCisoOSByb3dzKQorCistLSBBbHRob3VnaCBTQU9QIGRvZXNuJ3QgZml0 IHBhcnRpYWwgaW5kZXhlcyBmdWxseSwgd2UgY2FuIHVzZSBhbmRlZCBPUiBjbGF1c2UKKy0tIHRv IHNjYW4gYW5vdGhlciBjb3VwbGUgb2YgcGFydGlhbCBpbmRleGVzLgorRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gb25lazIKK1dIRVJFIHN0cmluZ3UxIElOICgnQics J0onKSBBTkQgKHN0cmluZ3UxID0gJ0EnIE9SIHVuaXF1ZTEgPSAxKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9u IG9uZWsyCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoc3RyaW5ndTEgPCAnQic6Om5hbWUpIE9S ICh1bmlxdWUxID0gMSkpCisgICAgICAgICBGaWx0ZXI6ICgoc3RyaW5ndTEgPSBBTlkgKCd7QixK fSc6Om5hbWVbXSkpIEFORCAoKHN0cmluZ3UxID0gJ0EnOjpuYW1lKSBPUiAodW5pcXVlMSA9IDEp KSkKKyAgICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiBvbmVrMl91MV9wcnRsCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAo dW5pcXVlMSA9IDEpCisoOCByb3dzKQorCitSRVNFVCBlbmFibGVfaW5kZXhzY2FuOworUkVTRVQg ZW5hYmxlX3NlcXNjYW47CiAtLQogLS0gVGVzdCBzb21lIGNvcm5lciBjYXNlcyB0aGF0IGhhdmUg YmVlbiBrbm93biB0byBjb25mdXNlIHRoZSBwbGFubmVyCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvc2VsZWN0LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NlbGVjdC5z cWwKaW5kZXggMDE5ZjFlNzY3MzkuLjIyM2Y1NWFmNGU0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9zZWxlY3Quc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NlbGVjdC5z cWwKQEAgLTIzNCw2ICsyMzQsODggQEAgc2VsZWN0IHVuaXF1ZTEsIHVuaXF1ZTIgZnJvbSBvbmVr Mgogc2VsZWN0IHVuaXF1ZTEsIHVuaXF1ZTIgZnJvbSBvbmVrMgogICB3aGVyZSAodW5pcXVlMiA9 IDExIGFuZCBzdHJpbmd1MSA8ICdCJykgb3IgdW5pcXVlMSA9IDA7CiAKK1NFVCBlbmFibGVfc2Vx c2NhbiBUTyBvZmY7CitTRVQgZW5hYmxlX2luZGV4c2NhbiBUTyBvZmY7IC0tIE9ubHkgQml0bWFw U2NhbiBpcyBhIHN1YmplY3QgbWF0dGVyIGhlcmUKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRp b24gPSAnb2ZmJzsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIG9u ZWsyIFdIRVJFIHN0cmluZ3UxID0gJ0EnIE9SIHN0cmluZ3UxID0gJ0onOworLS0gV2l0aG91dCB0 aGUgdHJhbnNmb3JtYXRpb24gb25seSBzZXFzY2FuIHBvc3NpYmxlIGhlcmUKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlx dWUyIDwgMSBBTkQgc3RyaW5ndTEgSU4gKCdBJywnSicpIEFORCBzdHJpbmd1MSA8ICdaJzsKKy0t IFVzZSBwYXJ0aWFsIGluZGV4ZXMKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgq KSBGUk9NIG9uZWsyCitXSEVSRSBzdHJpbmd1MSBJTiAoJ0InLCdKJykgQU5EIChzdHJpbmd1MSA9 ICdBJyBPUiB1bmlxdWUxID0gMSk7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVl Miwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSA8IDEgT1IgKHN0cmluZ3UxID0g J0EnIE9SIHN0cmluZ3UxID0gJ0onKTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1bmlx dWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUxID0gMSBPUiB1bmlxdWUyID0g UEkoKTo6aW50ZWdlcjsKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKKworLS0gT1Ig PC0+IEFOWSB0cmFuc2Zvcm1hdGlvbiBtdXN0IGZpbmQgYSBwYXRoIHdpdGggcGFydGlhbCBpbmRl eGVzIHNjYW4KKy0tIHJlZ2FyZGxlc3MgdGhlIGNsYXVzZSByZXByZXNlbnRhdGlvbi4KK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIG9uZWsyIFdIRVJFIHN0cmluZ3Ux ID0gJ0EnIE9SIHN0cmluZ3UxID0gJ0onOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNv dW50KCopIEZST00gb25lazIgV0hFUkUgc3RyaW5ndTEgSU4gKCdBJywnSicpOworRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gb25lazIgV0hFUkUgc3RyaW5ndTEgPSBB TlkgKCd7QSxKfScpOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00g b25lazIgV0hFUkUgc3RyaW5ndTEgSU4gKCdBJykgT1Igc3RyaW5ndTEgSU4gKCdKJyk7CisKKy0t IERvbid0IHNjYW4gcGFydGlhbCBpbmRleGVzIGJlY2F1c2Ugb2YgZXh0cmEgdmFsdWUuCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMiBXSEVSRSBzdHJpbmd1 MSBJTiAoJ0EnLCAnSicsICdDJyk7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVl MiBGUk9NIG9uZWsyCitXSEVSRSBzdHJpbmd1MSBJTiAoJ0EnLCAnQScpIEFORCAoc3RyaW5ndTEg PSAnQScgT1Igc3RyaW5ndTEgPSAnQScpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg dW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMiA8IDEgQU5EIHN0cmlu Z3UxIElOICgnQScsJ0onKSBBTkQgc3RyaW5ndTEgPCAnWic7CitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgdW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSA9IDEg T1IgdW5pcXVlMSA9IFBJKCk6OmludGVnZXI7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg dW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSBJTiAoMSwgUEkoKTo6 aW50ZWdlcik7IC0tIFRPRE86IHdoeSBpdCBpcyBkaWZmZXJzIGZyb20gcHJldmlvdXMgZXhhbXBs ZT8KKworLS0gRG9uJ3QgYXBwbHkgdGhlIG9wdGltaXphdGlvbiB0byBjbGF1c2VzLCBjb250YWlu aW5nIHZvbGF0aWxlIGZ1bmN0aW9ucworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHVuaXF1 ZTIsc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSA9IChyYW5kb20oKSoyKTo6aW50 ZWdlciBPUiB1bmlxdWUxID0gKHJhbmRvbSgpKjMpOjppbnRlZ2VyOworRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIHVuaXF1ZTIsc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSBJ TiAoKHJhbmRvbSgpKjIpOjppbnRlZ2VyLCAocmFuZG9tKCkqMyk6OmludGVnZXIpOworCistLSBD b21iaW5lIGRpZmZlcmVudCBzYW9wcy4gU29lIG9mIHRoZW0gZG9lc250JyBmaXQgYSBzZXQgb2Yg cGFydGlhbCBpbmRleGVzLAorLS0gYnV0IG90aGVyIGZpdHMuCistLSBVbmZvcnR1bmF0ZWx5LCB3 ZSBkb24ndCBjb21iaW5lIHNhb3AgYW5kIE9SIGNsYXVzZXMgc28gZmFyLgorRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIHVuaXF1ZTIsc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUKKyAgdW5p cXVlMSBJTiAoMSwyLDIxKSBBTkQKKyAgKHN0cmluZ3UxIElOICgnQScsJ0onKSBPUiB1bmlxdWUx IElOICgzLDQpIE9SIHN0cmluZ3UxID0gJ0onKTsKKworLS0gQ2hlY2sgcmVjdXJzaXZlIGNvbWJp bmF0aW9uIG9mIE9SIGFuZCBTQU9QIGV4cHJlc3Npb25zCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgdW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSA8IDEgT1Ig KHN0cmluZ3UxID0gJ0EnIE9SIHN0cmluZ3UxID0gJ0onKTsKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSAodW5pcXVlMSA8IDEg T1Igc3RyaW5ndTEgSU4gKCdBJywnSicpKTsKKy0tIEFsdGhvdWdoIFNBT1AgZG9lc24ndCBmaXQg cGFydGlhbCBpbmRleGVzIGZ1bGx5LCB3ZSBjYW4gdXNlIGFuZGVkIE9SIGNsYXVzZQorLS0gdG8g c2NhbiBhbm90aGVyIGNvdXBsZSBvZiBwYXJ0aWFsIGluZGV4ZXMuCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMgorV0hFUkUgc3RyaW5ndTEgSU4gKCdCJywn SicpIEFORCAoc3RyaW5ndTEgPSAnQScgT1IgdW5pcXVlMSA9IDEpOworCitSRVNFVCBlbmFibGVf aW5kZXhzY2FuOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKIC0tCiAtLSBUZXN0IHNvbWUgY29y bmVyIGNhc2VzIHRoYXQgaGF2ZSBiZWVuIGtub3duIHRvIGNvbmZ1c2UgdGhlIHBsYW5uZXIKIC0t CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGY0YjZmZWU4OTMzLi43OTMwYTE3ZTgxNSAx MDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTIxNDEsNiArMjE0MSw3IEBAIFByZWRJdGVy SW5mb0RhdGEKIFByZWRYYWN0TGlzdAogUHJlZGljYXRlTG9ja0RhdGEKIFByZWRpY2F0ZUxvY2tU YXJnZXRUeXBlCitQcmVkaWNhdGVzRGF0YQogUHJlZmV0Y2hCdWZmZXJSZXN1bHQKIFByZXBQYXJh bGxlbFJlc3RvcmVQdHJUeXBlCiBQcmVwYXJlU3RtdAotLSAKMi4zOS4zIChBcHBsZSBHaXQtMTQ1 KQoK --00000000000091748f0613133755 Content-Type: application/octet-stream; name="v20-0001-Transform-OR-clauses-to-ANY-expression.patch" Content-Disposition: attachment; filename="v20-0001-Transform-OR-clauses-to-ANY-expression.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lthcb8x20 RnJvbSA2YjczNGZlMjI1MDgyOTFiODVlN2YwMjI2ZWVkZGUxMWJmNDM3NTFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0Z3Jlc3By by5ydT4KRGF0ZTogRnJpLCAyIEZlYiAyMDI0IDIyOjAxOjA5ICswMzAwClN1YmplY3Q6IFtQQVRD SCB2MjAgMS8yXSBUcmFuc2Zvcm0gT1IgY2xhdXNlcyB0byBBTlkgZXhwcmVzc2lvbi4KClJlcGxh Y2UgKGV4cHIgb3AgQzEpIE9SIChleHByIG9wIEMyKSAuLi4gd2l0aCBleHByIG9wIEFOWShBUlJB WVtDMSwgQzIsIC4uLl0pIG9uIHRoZQpwcmVsaW1pbmFyeSBzdGFnZSBvZiBvcHRpbWl6YXRpb24g d2hlbiB3ZSBhcmUgc3RpbGwgd29ya2luZyB3aXRoIHRoZQpleHByZXNzaW9uIHRyZWUuCkhlcmUg QzxYPiBpcyBhIGNvbnN0YW50IGV4cHJlc3Npb24sICdleHByJyBpcyBub24tY29uc3RhbnQgZXhw cmVzc2lvbiwgJ29wJyBpcwphbiBvcGVyYXRvciB3aGljaCByZXR1cm5zIGJvb2xlYW4gcmVzdWx0 IGFuZCBoYXMgYSBjb21tdXRlciAoZm9yIHRoZSBjYXNlIG9mCnJldmVyc2Ugb3JkZXIgb2YgY29u c3RhbnQgYW5kIG5vbi1jb25zdGFudCBwYXJ0cyBvZiB0aGUgZXhwcmVzc2lvbiwKbGlrZSAnQ1gg b3AgZXhwcicpLgpTb21ldGltZXMgaXQgY2FuIGxlYWQgdG8gbm90IG9wdGltYWwgcGxhbi4gQnV0 IHdlIHRoaW5rIGl0IGlzIGJldHRlciB0byBoYXZlCmFycmF5IG9mIGVsZW1lbnRzIGluc3RlYWQg b2YgYSBsb3Qgb2YgT1IgY2xhdXNlcy4gSGVyZSBpcyBhIHJvb20gZm9yIGZ1cnRoZXIKb3B0aW1p emF0aW9ucyBvbiBkZWNvbXBvc2luZyB0aGF0IGFycmF5IGludG8gbW9yZSBvcHRpbWFsIHBhcnRz LgpBdXRob3JzOiBBbGVuYSBSeWJha2luYSA8bGVuYS5yaWJhY2tpbmFAeWFuZGV4LnJ1PiwgQW5k cmV5IExlcGlraG92IDxhLmxlcGlraG92QHBvc3RncmVzcHJvLnJ1PgpSZXZpZXdlZC1ieTogUGV0 ZXIgR2VvZ2hlZ2FuIDxwZ0Bib3d0LmllPiwgUmFuaWVyIFZpbGVsYSA8cmFuaWVyLnZmQGdtYWls LmNvbT4KUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBLb3JvdGtvdiA8YWVrb3JvdGtvdkBnbWFpbC5j b20+LCBSb2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogamlh biBoZSA8amlhbi51bml2ZXJzYWxpdHlAZ21haWwuY29tPgotLS0KIC4uLi9wb3N0Z3Jlc19mZHcv ZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCAgICB8ICAgOCArLQogZG9jL3NyYy9zZ21sL2NvbmZp Zy5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgIDE3ICsKIHNyYy9iYWNrZW5kL25vZGVzL3F1 ZXJ5anVtYmxlZnVuY3MuYyAgICAgICAgICB8ICAyNyArKwogc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvcHJlZHRlc3QuYyAgICAgICAgIHwgICA5IC0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9leHByLmMgICAgICAgICAgICAgICB8IDM1NyArKysrKysrKysrKysrKysrKysKIHNyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICB8ICAxMSArCiBzcmMvYmFja2Vu ZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDEgKwogc3JjL2Jpbi9wZ19k dW1wL3QvMDAyX3BnX2R1bXAucGwgICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS9u b2Rlcy9xdWVyeWp1bWJsZS5oICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvb3B0 aW1pemVyL29wdGltaXplci5oICAgICAgICAgICAgIHwgIDEwICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCAgICB8IDE1NiArKysrKysrLQogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9qb2luLm91dCAgICAgICAgICAgIHwgIDYyICsrLQogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0IHwgMjE1ICsrKysrKysrKystCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQgICAgICAgfCAgMTIgKy0KIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0ICAgICAgICB8ICAgMyArLQogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC90aWRzY2FuLm91dCAgICAgICAgIHwgIDIzICstCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsICAgICAgICAgfCAgMzUgKysKIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsICAgICAgICAgICAgICAgICB8ICAxMCArCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsICAgICAgfCAgMjIgKysKIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3RpZHNjYW4uc3FsICAgICAgICAgICAgICB8ICAgNiArCiBzcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDIgKwogMjEgZmlsZXMgY2hhbmdl ZCwgOTI0IGluc2VydGlvbnMoKyksIDY5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRy aWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgYi9jb250cmliL3Bvc3Rn cmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CmluZGV4IGMzNTVlOGYzZjdkLi40ODY4 NWJmNmZmZSAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdy ZXNfZmR3Lm91dAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19m ZHcub3V0CkBAIC04Nzk3LDE4ICs4Nzk3LDE4IEBAIGluc2VydCBpbnRvIHV0cnRlc3QgdmFsdWVz ICgyLCAncXV4Jyk7CiAtLSBDaGVjayBjYXNlIHdoZXJlIHRoZSBmb3JlaWduIHBhcnRpdGlvbiBp cyBhIHN1YnBsYW4gdGFyZ2V0IHJlbAogZXhwbGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKQogdXBk YXRlIHV0cnRlc3Qgc2V0IGEgPSAxIHdoZXJlIGEgPSAxIG9yIGEgPSAyIHJldHVybmluZyAqOwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgVXBkYXRlIG9uIHB1YmxpYy51dHJ0ZXN0CiAg ICBPdXRwdXQ6IHV0cnRlc3RfMS5hLCB1dHJ0ZXN0XzEuYgogICAgRm9yZWlnbiBVcGRhdGUgb24g cHVibGljLnJlbXAgdXRydGVzdF8xCiAgICBVcGRhdGUgb24gcHVibGljLmxvY3AgdXRydGVzdF8y CiAgICAtPiAgQXBwZW5kCiAgICAgICAgICAtPiAgRm9yZWlnbiBVcGRhdGUgb24gcHVibGljLnJl bXAgdXRydGVzdF8xCi0gICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBVUERBVEUgcHVibGljLmxv Y3QgU0VUIGEgPSAxIFdIRVJFICgoKGEgPSAxKSBPUiAoYSA9IDIpKSkgUkVUVVJOSU5HIGEsIGIK KyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFVQREFURSBwdWJsaWMubG9jdCBTRVQgYSA9IDEg V0hFUkUgKChhID0gQU5ZICgnezEsMn0nOjppbnRlZ2VyW10pKSkgUkVUVVJOSU5HIGEsIGIKICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMubG9jcCB1dHJ0ZXN0XzIKICAgICAgICAgICAg ICAgIE91dHB1dDogMSwgdXRydGVzdF8yLnRhYmxlb2lkLCB1dHJ0ZXN0XzIuY3RpZCwgTlVMTDo6 cmVjb3JkCi0gICAgICAgICAgICAgICBGaWx0ZXI6ICgodXRydGVzdF8yLmEgPSAxKSBPUiAodXRy dGVzdF8yLmEgPSAyKSkKKyAgICAgICAgICAgICAgIEZpbHRlcjogKHV0cnRlc3RfMi5hID0gQU5Z ICgnezEsMn0nOjppbnRlZ2VyW10pKQogKDEwIHJvd3MpCiAKIC0tIFRoZSBuZXcgdmFsdWVzIGFy ZSBjb25jYXRlbmF0ZWQgd2l0aCAnIHRyaWdnZXJlZCAhJwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IGIzOGNiZDcx NGFhLi4xZmRmZmZkNzliMCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtNTQzMyw2ICs1NDMzLDIzIEBAIEFOWSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRy eT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtZW5hYmxlLW9yLXRyYW5zZm9ybWF0aW9u IiB4cmVmbGFiZWw9ImVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiI+CisgICAgICA8dGVybT48dmFy bmFtZT5lbmFibGVfb3JfdHJhbnNmb3JtYXRpb248L3Zhcm5hbWU+ICg8dHlwZT5ib29sZWFuPC90 eXBlPikKKyAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICA8cHJpbWFyeT48dmFybmFtZT5lbmFi bGVfb3JfdHJhbnNmb3JtYXRpb248L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9w cmltYXJ5PgorICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3Rp dGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBxdWVy eSBwbGFubmVyJ3MgYWJpbGl0eSB0byBsb29rdXAgYW5kIGdyb3VwIG11bHRpcGxlCisgICAgICAg IHNpbWlsYXIgT1IgZXhwcmVzc2lvbnMgdG8gQU5ZICg8eHJlZiBsaW5rZW5kPSJmdW5jdGlvbnMt Y29tcGFyaXNvbnMtYW55LXNvbWUiLz4pIGV4cHJlc3Npb25zLgorICAgICAgICBUaGUgZ3JvdXBp bmcgdGVjaG5pcXVlIG9mIHRoaXMgdHJhbnNmb3JtYXRpb24gaXMgYmFzZWQgb24gdGhlIGVxdWl2 YWxlbmNlIG9mIHZhcmlhYmxlIHNpZGVzLgorICAgICAgICBPbmUgc2lkZSBvZiBzdWNoIGFuIGV4 cHJlc3Npb24gbXVzdCBiZSBhIGNvbnN0YW50IGNsYXVzZSwgYW5kIHRoZSBvdGhlciBtdXN0IGNv bnRhaW4gYSB2YXJpYWJsZSBjbGF1c2UuCisgICAgICAgIFRoZSBkZWZhdWx0IGlzIDxsaXRlcmFs Pm9uPC9saXRlcmFsPi4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAg PC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWVuYWJsZS1wYXJh bGxlbC1hcHBlbmQiIHhyZWZsYWJlbD0iZW5hYmxlX3BhcmFsbGVsX2FwcGVuZCI+CiAgICAgICA8 dGVybT48dmFybmFtZT5lbmFibGVfcGFyYWxsZWxfYXBwZW5kPC92YXJuYW1lPiAoPHR5cGU+Ym9v bGVhbjwvdHlwZT4pCiAgICAgICA8aW5kZXh0ZXJtPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv bm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvcXVlcnlqdW1ibGVm dW5jcy5jCmluZGV4IDQyNjExMmZhMzdiLi5jNGM0Y2FiOGVkNSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvbm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL3F1 ZXJ5anVtYmxlZnVuY3MuYwpAQCAtMTQxLDYgKzE0MSwzMyBAQCBKdW1ibGVRdWVyeShRdWVyeSAq cXVlcnkpCiAJcmV0dXJuIGpzdGF0ZTsKIH0KIAorSnVtYmxlU3RhdGUgKgorSnVtYmxlRXhwcihF eHByICpleHByLCB1aW50NjQgKnF1ZXJ5SWQpCit7CisJSnVtYmxlU3RhdGUgKmpzdGF0ZSA9IE5V TEw7CisKKwlBc3NlcnQocXVlcnlJZCAhPSBOVUxMKTsKKworCWpzdGF0ZSA9IChKdW1ibGVTdGF0 ZSAqKSBwYWxsb2Moc2l6ZW9mKEp1bWJsZVN0YXRlKSk7CisKKwkvKiBTZXQgdXAgd29ya3NwYWNl IGZvciBxdWVyeSBqdW1ibGluZyAqLworCWpzdGF0ZS0+anVtYmxlID0gKHVuc2lnbmVkIGNoYXIg KikgcGFsbG9jKEpVTUJMRV9TSVpFKTsKKwlqc3RhdGUtPmp1bWJsZV9sZW4gPSAwOworCWpzdGF0 ZS0+Y2xvY2F0aW9uc19idWZfc2l6ZSA9IDMyOworCWpzdGF0ZS0+Y2xvY2F0aW9ucyA9IChMb2Nh dGlvbkxlbiAqKQorCQlwYWxsb2MoanN0YXRlLT5jbG9jYXRpb25zX2J1Zl9zaXplICogc2l6ZW9m KExvY2F0aW9uTGVuKSk7CisJanN0YXRlLT5jbG9jYXRpb25zX2NvdW50ID0gMDsKKwlqc3RhdGUt PmhpZ2hlc3RfZXh0ZXJuX3BhcmFtX2lkID0gMDsKKworCS8qIENvbXB1dGUgcXVlcnkgSUQgKi8K KwlfanVtYmxlTm9kZShqc3RhdGUsIChOb2RlICopIGV4cHIpOworCSpxdWVyeUlkID0gRGF0dW1H ZXRVSW50NjQoaGFzaF9hbnlfZXh0ZW5kZWQoanN0YXRlLT5qdW1ibGUsCisJCQkJCQkJCQkJCQlq c3RhdGUtPmp1bWJsZV9sZW4sCisJCQkJCQkJCQkJCQkwKSk7CisKKwlyZXR1cm4ganN0YXRlOwor fQorCiAvKgogICogRW5hYmxlcyBxdWVyeSBpZGVudGlmaWVyIGNvbXB1dGF0aW9uLgogICoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3ByZWR0ZXN0LmMgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jCmluZGV4IGMzN2I0MTZlMjRlLi5iNzY4OTZk ZmJmNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYwor KysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jCkBAIC0zMCwxNSArMzAs NiBAQAogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAKIAotLyoKLSAqIFByb29mIGF0dGVt cHRzIGludm9sdmluZyBsYXJnZSBhcnJheXMgaW4gU2NhbGFyQXJyYXlPcEV4cHIgbm9kZXMgYXJl Ci0gKiBsaWtlbHkgdG8gcmVxdWlyZSBPKE5eMikgdGltZSwgYW5kIG1vcmUgb2Z0ZW4gdGhhbiBu b3QgZmFpbCBhbnl3YXkuCi0gKiBTbyB3ZSBzZXQgYW4gYXJiaXRyYXJ5IGxpbWl0IG9uIHRoZSBu dW1iZXIgb2YgYXJyYXkgZWxlbWVudHMgdGhhdAotICogd2Ugd2lsbCBhbGxvdyB0byBiZSB0cmVh dGVkIGFzIGFuIEFORCBvciBPUiBjbGF1c2UuCi0gKiBYWFggaXMgaXQgd29ydGggZXhwb3Npbmcg dGhpcyBhcyBhIEdVQyBrbm9iPwotICovCi0jZGVmaW5lIE1BWF9TQU9QX0FSUkFZX1NJWkUJCTEw MAotCiAvKgogICogVG8gYXZvaWQgcmVkdW5kYW50IGNvZGluZyBpbiBwcmVkaWNhdGVfaW1wbGll ZF9ieV9yZWN1cnNlIGFuZAogICogcHJlZGljYXRlX3JlZnV0ZWRfYnlfcmVjdXJzZSwgd2UgbmVl ZCB0byBhYnN0cmFjdCBvdXQgdGhlIG5vdGlvbiBvZgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKaW5k ZXggOTMwMGM3YjlhYmMuLmJhZWI4M2U1OGJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAg LTE2LDEyICsxNiwxNSBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJjYXRh bG9nL3BnX2FnZ3JlZ2F0ZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BlcmF0b3IuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIK ICNpbmNsdWRlICJjb21tYW5kcy9kYmNvbW1hbmRzLmgiCisjaW5jbHVkZSAiY29tbW9uL2hhc2hm bi5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5o IgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgorI2luY2x1ZGUgIm5vZGVzL3F1ZXJ5anVt YmxlLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2luY2x1ZGUgInBhcnNl ci9hbmFseXplLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2FnZy5oIgpAQCAtMzgsMTEgKzQx LDEzIEBACiAjaW5jbHVkZSAidXRpbHMvZGF0ZS5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRz LmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2Fj aGUuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy94bWwu aCIKIAogLyogR1VDIHBhcmFtZXRlcnMgKi8KIGJvb2wJCVRyYW5zZm9ybV9udWxsX2VxdWFscyA9 IGZhbHNlOworYm9vbAkJZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gdHJ1ZTsKIAogCiBzdGF0 aWMgTm9kZSAqdHJhbnNmb3JtRXhwclJlY3Vyc2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpl eHByKTsKQEAgLTk5LDYgKzEwNCwzNTMgQEAgc3RhdGljIEV4cHIgKm1ha2VfZGlzdGluY3Rfb3Ao UGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcG5hbWUsCiBzdGF0aWMgTm9kZSAqbWFrZV9udWxs dGVzdF9mcm9tX2Rpc3RpbmN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkgQV9FeHBy ICpkaXN0aW5jdGEsIE5vZGUgKmFyZyk7CiAKK3R5cGVkZWYgc3RydWN0IE9yQ2xhdXNlR3JvdXBL ZXkKK3sKKwlOb2RlVGFnCXR5cGU7CisKKwlFeHByICAgKmV4cHI7IC8qIFBvaW50ZXIgdG8gdGhl IGV4cHJlc3Npb24gdHJlZSB3aGljaCBoYXMgYmVlbiBhIHNvdXJjZSBmb3IKKwkJCQkJdGhlIGhh c2hrZXkgdmFsdWUgKi8KKwlPaWQJCW9wbm87CisJT2lkCQlleHBydHlwZTsKK30gT3JDbGF1c2VH cm91cEtleTsKKwordHlwZWRlZiBzdHJ1Y3QgT3JDbGF1c2VHcm91cEVudHJ5Cit7CisJT3JDbGF1 c2VHcm91cEtleSBrZXk7CisKKwlMaXN0CQkgICAqY29uc3RzOworCUxpc3QgCQkgICAqZXhwcnM7 Cit9IE9yQ2xhdXNlR3JvdXBFbnRyeTsKKworLyoKKyAqIEhhc2ggZnVuY3Rpb24gdG8gZmluZCBj YW5kaWRhdGUgY2xhdXNlcy4KKyAqLworc3RhdGljIHVpbnQzMgorb3JjbGF1c2VfaGFzaChjb25z dCB2b2lkICpkYXRhLCBTaXplIGtleXNpemUpCit7CisJT3JDbGF1c2VHcm91cEtleSAgICprZXkg PSAoT3JDbGF1c2VHcm91cEtleSAqKSBkYXRhOworCXVpbnQ2NAkJCQlleHBySGFzaDsKKworCUFz c2VydChrZXlzaXplID09IHNpemVvZihPckNsYXVzZUdyb3VwS2V5KSk7CisJQXNzZXJ0KElzQShk YXRhLCBJbnZhbGlkKSk7CisKKwkodm9pZCkgSnVtYmxlRXhwcihrZXktPmV4cHIsICZleHBySGFz aCk7CisKKwlyZXR1cm4gaGFzaF9jb21iaW5lKCh1aW50MzIpIGV4cHJIYXNoLAorCQkJCQkJaGFz aF9jb21iaW5lKCh1aW50MzIpIGtleS0+b3BubywKKwkJCQkJCQkJCSAodWludDMyKSBrZXktPmV4 cHJ0eXBlKSk7Cit9CisKK3N0YXRpYyB2b2lkICoKK29yY2xhdXNlX2tleWNvcHkodm9pZCAqZGVz dCwgY29uc3Qgdm9pZCAqc3JjLCBTaXplIGtleXNpemUpCit7CisJT3JDbGF1c2VHcm91cEtleSAq c3JjX2tleSA9IChPckNsYXVzZUdyb3VwS2V5ICopIHNyYzsKKwlPckNsYXVzZUdyb3VwS2V5ICpk c3Rfa2V5ID0gKE9yQ2xhdXNlR3JvdXBLZXkgKikgZGVzdDsKKworCUFzc2VydChzaXplb2YoT3JD bGF1c2VHcm91cEtleSkgPT0ga2V5c2l6ZSk7CisJQXNzZXJ0KElzQShzcmMsIEludmFsaWQpKTsK KworCWRzdF9rZXktPnR5cGUgPSBUX0ludmFsaWQ7CisJZHN0X2tleS0+ZXhwciA9IHNyY19rZXkt PmV4cHI7CisJZHN0X2tleS0+b3BubyA9IHNyY19rZXktPm9wbm87CisJZHN0X2tleS0+ZXhwcnR5 cGUgPSBzcmNfa2V5LT5leHBydHlwZTsKKwlyZXR1cm4gZHN0X2tleTsKK30KKworLyoKKyAqIER5 bmFoYXNoIG1hdGNoIGZ1bmN0aW9uIHRvIHVzZSBpbiBvcl9ncm91cF9odGFiCisgKi8KK3N0YXRp YyBpbnQKK29yY2xhdXNlX21hdGNoKGNvbnN0IHZvaWQgKmRhdGExLCBjb25zdCB2b2lkICpkYXRh MiwgU2l6ZSBrZXlzaXplKQoreworCU9yQ2xhdXNlR3JvdXBLZXkgICAqa2V5MSA9IChPckNsYXVz ZUdyb3VwS2V5ICopIGRhdGExOworCU9yQ2xhdXNlR3JvdXBLZXkgICAqa2V5MiA9IChPckNsYXVz ZUdyb3VwS2V5ICopIGRhdGEyOworCisJQXNzZXJ0KHNpemVvZihPckNsYXVzZUdyb3VwS2V5KSA9 PSBrZXlzaXplKTsKKwlBc3NlcnQoSXNBKGtleTEsIEludmFsaWQpKTsKKwlBc3NlcnQoSXNBKGtl eTIsIEludmFsaWQpKTsKKworCWlmIChrZXkxLT5vcG5vID09IGtleTItPm9wbm8gJiYKKwkJa2V5 MS0+ZXhwcnR5cGUgPT0ga2V5Mi0+ZXhwcnR5cGUgJiYKKwkJZXF1YWwoa2V5MS0+ZXhwciwga2V5 Mi0+ZXhwcikpCisJCXJldHVybiAwOworCisJcmV0dXJuIDE7Cit9CisKKy8qCisgKiBUcmFuc2Zv cm1PckV4cHJUb0FOWSAtCisgKgkgIERpc2NvdmVyIHRoZSBhcmdzIG9mIGFuIE9SIGV4cHJlc3Np b24gYW5kIHRyeSB0byBncm91cCBzaW1pbGFyIE9SCisgKgkgIGV4cHJlc3Npb25zIHRvIGFuIEFO WSBvcGVyYXRpb24uCisgKgkgIFRyYW5zZm9ybWF0aW9uIG11c3QgYmUgYWxyZWFkeSBkb25lIG9u IGlucHV0IGFyZ3MgbGlzdCBiZWZvcmUgdGhlIGNhbGwuCisgKgkgIFRyYW5zZm9ybWF0aW9uIGdy b3VwcyB0d28tc2lkZWQgZXF1YWxpdHkgb3BlcmF0aW9ucy4gT25lIHNpZGUgb2Ygc3VjaCBhbgor ICoJICBvcGVyYXRpb24gbXVzdCBiZSBwbGFpbiBjb25zdGFudCBvciBjb25zdGFudCBleHByZXNz aW9uLiBUaGUgb3RoZXIgc2lkZSBvZgorICoJICB0aGUgY2xhdXNlIG11c3QgYmUgYSB2YXJpYWJs ZSBleHByZXNzaW9uIHdpdGhvdXQgdm9sYXRpbGUgZnVuY3Rpb25zLgorICoJICBUaGUgZ3JvdXBp bmcgdGVjaG5pcXVlIGlzIGJhc2VkIG9uIGFuIGVxdWl2YWxlbmNlIG9mIHZhcmlhYmxlIHNpZGVz IG9mIHRoZQorICoJICBleHByZXNzaW9uOiB1c2luZyBxdWVyeUlkIGFuZCBlcXVhbCgpIHJvdXRp bmUsIGl0IGdyb3VwcyBjb25zdGFudCBzaWRlcyBvZgorICoJICBzaW1pbGFyIGNsYXVzZXMgaW50 byBhbiBhcnJheS4gQWZ0ZXIgdGhlIGdyb3VwaW5nIHByb2NlZHVyZSwgZWFjaCBjb3VwbGUKKyAq CSAgKCd2YXJpYWJsZSBleHByZXNzaW9uJyBhbmQgJ2NvbnN0YW50IGFycmF5JykgZm9ybSBhIG5l dyBTQU9QIG9wZXJhdGlvbiwKKyAqCSAgd2hpY2ggaXMgYWRkZWQgdG8gdGhlIGFyZ3MgbGlzdCBv ZiB0aGUgcmV0dXJuaW5nIGV4cHJlc3Npb24uCisgKgorICoJICBOT1RFOiBmdW5jdGlvbiByZXR1 cm5zIE9SIEJvb2xFeHByIGlmIG1vcmUgdGhhbiBvbmUgY2xhdXNlIGFyZSBkZXRlY3RlZCBpbgor ICoJICB0aGUgZmluYWwgYXJncyBsaXN0LCBvciBTY2FsYXJBcnJheU9wRXhwciBpZiBhbGwgYXJn cyB3ZXJlIGdyb3VwZWQgaW50bworICoJICB0aGUgc2luZ2xlIFNBT1AgZXhwcmVzc2lvbi4KKyAq Lworc3RhdGljIE5vZGUgKgorVHJhbnNmb3JtT3JFeHByVG9BTlkoUGFyc2VTdGF0ZSAqcHN0YXRl LCBMaXN0ICphcmdzLCBpbnQgbG9jYXRpb24pCit7CisJTGlzdAkJCQkgICAqb3JfbGlzdCA9IE5J TDsKKwlMaXN0CQkJCSAgICplbnRyaWVzID0gTklMOworCUxpc3RDZWxsCQkJICAgKmxjOworCUhB U0hDVEwJCQkJCWluZm87CisJSFRBQiAJCQkJICAgKm9yX2dyb3VwX2h0YWIgPSBOVUxMOworCWlu dCAJCQkJCWxlbl9vcnMgPSBsaXN0X2xlbmd0aChhcmdzKTsKKwlPckNsYXVzZUdyb3VwRW50cnkJ ICAgKmVudHJ5ID0gTlVMTDsKKworCUFzc2VydChlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gJiYg bGVuX29ycyA+IDEpOworCisJTWVtU2V0KCZpbmZvLCAwLCBzaXplb2YoaW5mbykpOworCWluZm8u a2V5c2l6ZSA9IHNpemVvZihPckNsYXVzZUdyb3VwS2V5KTsKKwlpbmZvLmVudHJ5c2l6ZSA9IHNp emVvZihPckNsYXVzZUdyb3VwRW50cnkpOworCWluZm8uaGFzaCA9IG9yY2xhdXNlX2hhc2g7CisJ aW5mby5rZXljb3B5ID0gb3JjbGF1c2Vfa2V5Y29weTsKKwlpbmZvLm1hdGNoID0gb3JjbGF1c2Vf bWF0Y2g7CisJb3JfZ3JvdXBfaHRhYiA9IGhhc2hfY3JlYXRlKCJPUiBHcm91cHMiLAorCQkJCQkJ CQlsZW5fb3JzLAorCQkJCQkJCQkmaW5mbywKKwkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9GVU5D VElPTiB8IEhBU0hfQ09NUEFSRSB8IEhBU0hfS0VZQ09QWSk7CisKKwlmb3JlYWNoKGxjLCBhcmdz KQorCXsKKwkJTm9kZQkJCQkgICAqb3JxdWFsID0gbGZpcnN0KGxjKTsKKwkJTm9kZQkJCQkgICAq Y29uc3RfZXhwcjsKKwkJTm9kZQkJCQkgICAqbmNvbnN0X2V4cHI7CisJCU9yQ2xhdXNlR3JvdXBL ZXkJCWhhc2hrZXk7CisJCWJvb2wJCQkJCWZvdW5kOworCQlPaWQJCQkJCQlvcG5vOworCQlPaWQJ CQkJCQlleHBydHlwZTsKKwkJTm9kZQkJCQkgICAqbGVmdG9wLCAqcmlnaHRvcDsKKworCQlpZiAo IUlzQShvcnF1YWwsIE9wRXhwcikpCisJCXsKKwkJCWVudHJpZXMgPSBsYXBwZW5kKGVudHJpZXMs IG9ycXVhbCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCW9wbm8gPSAoKE9wRXhwciAqKSBvcnF1 YWwpLT5vcG5vOworCQlpZiAoZ2V0X29wX3JldHR5cGUob3BubykgIT0gQk9PTE9JRCkKKwkJewor CQkJLyogT25seSBvcGVyYXRvciByZXR1cm5pbmcgYm9vbGVhbiBzdWl0cyBPUiAtPiBBTlkgdHJh bnNmb3JtYXRpb24gKi8KKwkJCWVudHJpZXMgPSBsYXBwZW5kKGVudHJpZXMsIG9ycXVhbCk7CisJ CQljb250aW51ZTsKKwkJfQorCisJCS8qCisJCSAqIERldGVjdCB0aGUgY29uc3RhbnQgc2lkZSBv ZiB0aGUgY2xhdXNlLiBSZWNhbGwgbm9uLWNvbnN0YW50CisJCSAqIGV4cHJlc3Npb24gY2FuIGJl IG1hZGUgbm90IG9ubHkgd2l0aCBWYXJzLCBidXQgYWxzbyB3aXRoIFBhcmFtcywKKwkJICogd2hp Y2ggaXMgbm90IGJvbmRlZCB3aXRoIGFueSByZWxhdGlvbi4gVGh1cywgd2UgZGV0ZWN0IHRoZSBj b25zdAorCQkgKiBzaWRlIC0gaWYgYW5vdGhlciBzaWRlIGlzIGNvbnN0YW50IHRvbywgdGhlIG9y cXVhbCBjb3VsZG4ndCBiZQorCQkgKiBhbiBPcEV4cHIuCisJCSAqIEdldCBwb2ludGVycyB0byBj b25zdGFudCBhbmQgZXhwcmVzc2lvbiBzaWRlcyBvZiB0aGUgcXVhbC4KKwkJICovCisJCWxlZnRv cCA9IGdldF9sZWZ0b3Aob3JxdWFsKTsKKwkJaWYgKElzQShsZWZ0b3AsIFJlbGFiZWxUeXBlKSkK KwkJCWxlZnRvcCA9IChOb2RlICopICgoUmVsYWJlbFR5cGUgKikgbGVmdG9wKS0+YXJnOworCQly aWdodG9wID0gZ2V0X3JpZ2h0b3Aob3JxdWFsKTsKKwkJaWYgKElzQShyaWdodG9wLCBSZWxhYmVs VHlwZSkpCisJCQlyaWdodG9wID0gKE5vZGUgKikgKChSZWxhYmVsVHlwZSAqKSByaWdodG9wKS0+ YXJnOworCisJCWlmIChJc0EobGVmdG9wLCBDb25zdCkpCisJCXsKKwkJCW9wbm8gPSBnZXRfY29t bXV0YXRvcihvcG5vKTsKKworCQkJaWYgKCFPaWRJc1ZhbGlkKG9wbm8pKQorCQkJeworCQkJCS8q IGNvbW11dGF0b3IgZG9lc24ndCBleGlzdCwgd2UgY2FuJ3QgcmV2ZXJzZSB0aGUgb3JkZXIgKi8K KwkJCQllbnRyaWVzID0gbGFwcGVuZChlbnRyaWVzLCBvcnF1YWwpOworCQkJCWNvbnRpbnVlOwor CQkJfQorCisJCQluY29uc3RfZXhwciA9IGdldF9yaWdodG9wKG9ycXVhbCk7CisJCQljb25zdF9l eHByID0gZ2V0X2xlZnRvcChvcnF1YWwpOworCQl9CisJCWVsc2UgaWYgKElzQShyaWdodG9wLCBD b25zdCkpCisJCXsKKwkJCWNvbnN0X2V4cHIgPSBnZXRfcmlnaHRvcChvcnF1YWwpOworCQkJbmNv bnN0X2V4cHIgPSBnZXRfbGVmdG9wKG9ycXVhbCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQllbnRy aWVzID0gbGFwcGVuZChlbnRyaWVzLCBvcnF1YWwpOworCQkJY29udGludWU7CisJCX0KKworCQkv KgorCQkgKiBUcmFuc2Zvcm1hdGlvbiBvbmx5IHdvcmtzIHdpdGggYm90aCBzaWRlIHR5cGUgaXMg bm90CisJCSAqIHsgYXJyYXkgfCBjb21wb3NpdGUgfCBkb21haW4gfCByZWNvcmQgfS4KKwkJICog QWxzbywgZm9yYmlkIGl0IGZvciB2b2xhdGlsZSBleHByZXNzaW9ucy4KKwkJICovCisJCWV4cHJ0 eXBlID0gZXhwclR5cGUobmNvbnN0X2V4cHIpOworCQlpZiAodHlwZV9pc19yb3d0eXBlKGV4cHJU eXBlKGNvbnN0X2V4cHIpKSB8fAorCQkJdHlwZV9pc19yb3d0eXBlKGV4cHJ0eXBlKSB8fAorCQkJ Y29udGFpbl92b2xhdGlsZV9mdW5jdGlvbnMoKE5vZGUgKikgbmNvbnN0X2V4cHIpKQorCQl7CisJ CQllbnRyaWVzID0gbGFwcGVuZChlbnRyaWVzLCBvcnF1YWwpOworCQkJY29udGludWU7CisJCX0K KworCQkvKgorCQkqIEF0IHRoaXMgcG9pbnQgd2UgZGVmaW5pdGVseSBoYXZlIGEgdHJhbnNmb3Jt YWJsZSBjbGF1c2UuCisJCSogQ2xhc3NpZnkgaXQgYW5kIGFkZCBpbnRvIHNwZWNpZmljIGdyb3Vw IG9mIGNsYXVzZXMsIG9yIGNyZWF0ZSBuZXcKKwkJKiBncm91cC4KKwkJKi8KKwkJaGFzaGtleS50 eXBlID0gVF9JbnZhbGlkOworCQloYXNoa2V5LmV4cHIgPSAoRXhwciAqKSBuY29uc3RfZXhwcjsK KwkJaGFzaGtleS5vcG5vID0gb3BubzsKKwkJaGFzaGtleS5leHBydHlwZSA9IGV4cHJ0eXBlOwor CQllbnRyeSA9IGhhc2hfc2VhcmNoKG9yX2dyb3VwX2h0YWIsICZoYXNoa2V5LCBIQVNIX0VOVEVS LCAmZm91bmQpOworCisJCWlmICh1bmxpa2VseShmb3VuZCkpCisJCXsKKwkJCWVudHJ5LT5jb25z dHMgPSBsYXBwZW5kKGVudHJ5LT5jb25zdHMsIGNvbnN0X2V4cHIpOworCQkJZW50cnktPmV4cHJz ID0gbGFwcGVuZChlbnRyeS0+ZXhwcnMsIG9ycXVhbCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQll bnRyeS0+Y29uc3RzID0gbGlzdF9tYWtlMShjb25zdF9leHByKTsKKwkJCWVudHJ5LT5leHBycyA9 IGxpc3RfbWFrZTEob3JxdWFsKTsKKworCQkJLyoKKwkJCSAqIEFkZCB0aGUgZW50cnkgdG8gdGhl IGxpc3QuIEl0IGlzIG5lZWRlZCBleGNsdXNpdmVseSB0byBtYW5hZ2UgdGhlCisJCQkgKiBwcm9i bGVtIHdpdGggdGhlIG9yZGVyIG9mIHRyYW5zZm9ybWVkIGNsYXVzZXMgaW4gZXhwbGFpbi4KKwkJ CSAqIEhhc2ggdmFsdWUgY2FuIGRlcGVuZCBvbiB0aGUgcGxhdGZvcm0gYW5kIHZlcnNpb24uIEhl bmNlLAorCQkJICogc2VxdWVudGFsIHNjYW4gb2YgdGhlIGhhc2ggdGFibGUgd291bGQgcHJvbmUg dG8gY2hhbmdlIHRoZSBvcmRlcgorCQkJICogb2YgY2xhdXNlcyBpbiBsaXN0cyBhbmQsIGFzIGEg cmVzdWx0LCBicmVhayByZWdyZXNzaW9uIHRlc3RzCisJCQkgKiBhY2NpZGVudGlhbGx5LgorCQkJ ICovCisJCQllbnRyaWVzID0gbGFwcGVuZChlbnRyaWVzLCBlbnRyeSk7CisJCX0KKwl9CisKKwkv KiBMZXQncyBjb252ZXJ0IGVhY2ggZ3JvdXAgb2YgY2xhdXNlcyB0byBhbiBJTiBvcGVyYXRpb24u ICovCisKKwkvKgorCSAqIEdvIHRocm91Z2ggdGhlIGxpc3Qgb2YgZ3JvdXBzIGFuZCBjb252ZXJ0 IGVhY2gsIHdoZXJlIG51bWJlciBvZgorCSAqIGNvbnN0cyBtb3JlIHRoYW4gMS4gdHJpdmlhbCBn cm91cHMgbW92ZSB0byBPUi1saXN0IGFnYWluCisJICovCisJZm9yZWFjaCAobGMsIGVudHJpZXMp CisJeworCQlPaWQJCQkJICAgIHNjYWxhcl90eXBlOworCQlPaWQJCQkJCWFycmF5X3R5cGU7CisK KwkJaWYgKCFJc0EobGZpcnN0KGxjKSwgSW52YWxpZCkpCisJCXsKKwkJCW9yX2xpc3QgPSBsYXBw ZW5kKG9yX2xpc3QsIGxmaXJzdChsYykpOworCQkJY29udGludWU7CisJCX0KKworCQllbnRyeSA9 IChPckNsYXVzZUdyb3VwRW50cnkgKikgbGZpcnN0KGxjKTsKKworCQlBc3NlcnQobGlzdF9sZW5n dGgoZW50cnktPmNvbnN0cykgPiAwKTsKKwkJQXNzZXJ0KGxpc3RfbGVuZ3RoKGVudHJ5LT5leHBy cykgPT0gbGlzdF9sZW5ndGgoZW50cnktPmNvbnN0cykpOworCisJCWlmIChsaXN0X2xlbmd0aChl bnRyeS0+Y29uc3RzKSA9PSAxIHx8CisJCQlsaXN0X2xlbmd0aChlbnRyeS0+Y29uc3RzKSA+IE1B WF9TQU9QX0FSUkFZX1NJWkUpCisJCXsKKwkJCS8qCisJCQkgKiBPbmx5IG9uZSBlbGVtZW50IG9y IG1vcmUgdGhhbiBNQVhfU0FPUF9BUlJBWV9TSVpFIGVsZW1lbnRzIGluCisJCQkgKiB0aGUgY2xh c3MgUmV0dXJuIG9yaWdpbiBleHByZXNzaW9uIGludG8uCisJCQkgKiB0aGUgQm9vbEV4cHIgYXJn cyBsaXN0IHVuY2hhbmdlZC4KKwkJCSAqLworCQkJbGlzdF9mcmVlKGVudHJ5LT5jb25zdHMpOwor CQkJb3JfbGlzdCA9IGxpc3RfY29uY2F0KG9yX2xpc3QsIGVudHJ5LT5leHBycyk7CisJCQljb250 aW51ZTsKKwkJfQorCisJCS8qCisJCSAqIERvIHRoZSB0cmFuc2Zvcm1hdGlvbi4KKwkJICovCisK KwkJc2NhbGFyX3R5cGUgPSBlbnRyeS0+a2V5LmV4cHJ0eXBlOworCQlhcnJheV90eXBlID0gT2lk SXNWYWxpZChzY2FsYXJfdHlwZSkgPyBnZXRfYXJyYXlfdHlwZShzY2FsYXJfdHlwZSkgOgorCQkJ CQkJCQkJCQkgICBJbnZhbGlkT2lkOworCisJCWlmIChPaWRJc1ZhbGlkKGFycmF5X3R5cGUpKQor CQl7CisJCQkvKgorCQkJICogT0s6IGNvZXJjZSBhbGwgdGhlIHJpZ2h0LWhhbmQgbm9uLVZhciBp bnB1dHMgdG8gdGhlIGNvbW1vbgorCQkJICogdHlwZSBhbmQgYnVpbGQgYW4gQXJyYXlFeHByIGZv ciB0aGVtLgorCQkJICovCisJCQlMaXN0CQkJICAgKmFleHBycyA9IE5JTDsKKwkJCUFycmF5RXhw cgkJICAgKm5ld2EgPSBOVUxMOworCQkJU2NhbGFyQXJyYXlPcEV4cHIgICpzYW9wZXhwciA9IE5V TEw7CisJCQlIZWFwVHVwbGUJCQlvcGVydHVwOworCQkJRm9ybV9wZ19vcGVyYXRvcglvcGVyZm9y bTsKKwkJCUxpc3QJCQkgICAqbmFtZWxpc3QgPSBOSUw7CisJCQlMaXN0Q2VsbAkJICAgKmxjMTsK KworCQkJZm9yZWFjaChsYzEsIGVudHJ5LT5jb25zdHMpCisJCQl7CisJCQkJTm9kZSAgICpyZXhw ciA9IChOb2RlICopIGxmaXJzdChsYzEpOworCisJCQkJcmV4cHIgPSBjb2VyY2VfdG9fY29tbW9u X3R5cGUocHN0YXRlLCByZXhwciwKKwkJCQkJCQkJCQkJICBzY2FsYXJfdHlwZSwKKwkJCQkJCQkJ CQkJICAiSU4iKTsKKwkJCQlhZXhwcnMgPSBsYXBwZW5kKGFleHBycywgcmV4cHIpOworCQkJfQor CisJCQluZXdhID0gbWFrZU5vZGUoQXJyYXlFeHByKTsKKwkJCS8qIGFycmF5X2NvbGxpZCB3aWxs IGJlIHNldCBieSBwYXJzZV9jb2xsYXRlLmMgKi8KKwkJCW5ld2EtPmVsZW1lbnRfdHlwZWlkID0g c2NhbGFyX3R5cGU7CisJCQluZXdhLT5hcnJheV90eXBlaWQgPSBhcnJheV90eXBlOworCQkJbmV3 YS0+bXVsdGlkaW1zID0gZmFsc2U7CisJCQluZXdhLT5lbGVtZW50cyA9IGFleHByczsKKwkJCW5l d2EtPmxvY2F0aW9uID0gLTE7CisKKwkJCW9wZXJ0dXAgPSBTZWFyY2hTeXNDYWNoZTEoT1BFUk9J RCwKKwkJCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShlbnRyeS0+a2V5Lm9wbm8pKTsKKwkJCWlm ICghSGVhcFR1cGxlSXNWYWxpZChvcGVydHVwKSkKKwkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9v a3VwIGZhaWxlZCBmb3Igb3BlcmF0b3IgJXUiLAorCQkJCQkgZW50cnktPmtleS5vcG5vKTsKKwor CQkJb3BlcmZvcm0gPSAoRm9ybV9wZ19vcGVyYXRvcikgR0VUU1RSVUNUKG9wZXJ0dXApOworCQkJ aWYgKCFPcGVyYXRvcklzVmlzaWJsZShlbnRyeS0+a2V5Lm9wbm8pKQorCQkJCW5hbWVsaXN0ID0g bGFwcGVuZChuYW1lbGlzdCwgbWFrZVN0cmluZyhnZXRfbmFtZXNwYWNlX25hbWUob3BlcmZvcm0t Pm9wcm5hbWVzcGFjZSkpKTsKKworCQkJbmFtZWxpc3QgPSBsYXBwZW5kKG5hbWVsaXN0LCBtYWtl U3RyaW5nKHBzdHJkdXAoTmFtZVN0cihvcGVyZm9ybS0+b3BybmFtZSkpKSk7CisJCQlSZWxlYXNl U3lzQ2FjaGUob3BlcnR1cCk7CisKKwkJCXNhb3BleHByID0KKwkJCQkoU2NhbGFyQXJyYXlPcEV4 cHIgKikKKwkJCQkJbWFrZV9zY2FsYXJfYXJyYXlfb3AocHN0YXRlLAorCQkJCQkJCQkJCSBuYW1l bGlzdCwKKwkJCQkJCQkJCQkgdHJ1ZSwKKwkJCQkJCQkJCQkgKE5vZGUgKikgZW50cnktPmtleS5l eHByLAorCQkJCQkJCQkJCSAoTm9kZSAqKSBuZXdhLAorCQkJCQkJCQkJCSAtMSk7CisKKwkJCW9y X2xpc3QgPSBsYXBwZW5kKG9yX2xpc3QsICh2b2lkICopIHNhb3BleHByKTsKKwkJfQorCQllbHNl CisJCXsKKwkJCS8qCisJCQkgKiBJZiB0aGUgY29uc3Qgbm9kZSAocmlnaHQgc2lkZSBvZiBvcGVy YXRvciBleHByZXNzaW9uKSAncyB0eXBlCisJCQkgKiAgZG9uJ3QgaGF2ZSDigJx0cnVl4oCdIGFy cmF5IHR5cGUsIHRoZW4gd2UgY2Fubm5vdCBkbyB0aGUgdHJhbnNmb3JtYXRpb24uCisJCQkgKiBX ZSBzaW1wbHkgY29uY2F0ZW5hdGUgdGhlIGV4cHJlc3Npb24gbm9kZS4KKwkJCSAqCisJCQkgKi8K KwkJCWxpc3RfZnJlZShlbnRyeS0+Y29uc3RzKTsKKwkJCW9yX2xpc3QgPSBsaXN0X2NvbmNhdChv cl9saXN0LCBlbnRyeS0+ZXhwcnMpOworCQl9CisJfQorCWhhc2hfZGVzdHJveShvcl9ncm91cF9o dGFiKTsKKwlsaXN0X2ZyZWUoZW50cmllcyk7CisKKwkvKiBPbmUgbW9yZSB0cmljazogYXNzZW1i bGUgY29ycmVjdCBjbGF1c2UgKi8KKwlyZXR1cm4gKE5vZGUgKikgKChsaXN0X2xlbmd0aChvcl9s aXN0KSA+IDEpID8KKwkJCQkJIG1ha2VCb29sRXhwcihPUl9FWFBSLCBvcl9saXN0LCBsb2NhdGlv bikgOgorCQkJCQkgbGluaXRpYWwob3JfbGlzdCkpOworfQogCiAvKgogICogdHJhbnNmb3JtRXhw ciAtCkBAIC0xMzg2LDYgKzE3MzgsMTEgQEAgdHJhbnNmb3JtQm9vbEV4cHIoUGFyc2VTdGF0ZSAq cHN0YXRlLCBCb29sRXhwciAqYSkKIAkJYXJncyA9IGxhcHBlbmQoYXJncywgYXJnKTsKIAl9CiAK KwkvKiBNYWtlIGFuIGF0dGVtcHQgdG8gZ3JvdXAgc2ltaWxhciBPUiBjbGF1c2VzIGludG8gQU5Z IG9wZXJhdGlvbiAqLworCWlmIChlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gJiYgYS0+Ym9vbG9w ID09IE9SX0VYUFIgJiYKKwkJbGlzdF9sZW5ndGgoYXJncykgPiAxKQorCQlyZXR1cm4gVHJhbnNm b3JtT3JFeHByVG9BTlkocHN0YXRlLCBhcmdzLCBhLT5sb2NhdGlvbik7CisKIAlyZXR1cm4gKE5v ZGUgKikgbWFrZUJvb2xFeHByKGEtPmJvb2xvcCwgYXJncywgYS0+bG9jYXRpb24pOwogfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IDQ1MDEzNTgyYTc0Li5jMGVhNTM0OTVi MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTEwMjYsNiArMTAyNiwxNyBA QCBzdHJ1Y3QgY29uZmlnX2Jvb2wgQ29uZmlndXJlTmFtZXNCb29sW10gPQogCQl0cnVlLAogCQlO VUxMLCBOVUxMLCBOVUxMCiAJfSwKKwl7CisJCXsiZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uIiwg UEdDX1VTRVJTRVQsIFFVRVJZX1RVTklOR19PVEhFUiwKKwkJCWdldHRleHRfbm9vcCgiVHJhbnNm b3JtIGEgc2VxdWVuY2Ugb2YgT1IgY2xhdXNlcyB0byBhbiBhcnJheSBleHByZXNzaW9uLiIpLAor CQkJZ2V0dGV4dF9ub29wKCJUaGUgcGxhbm5lciB3aWxsIHJlcGxhY2UgZXhwcmVzc2lvbiBsaWtl ICd4PWMxIE9SIHg9YzIgLi4nIgorCQkJCQkJICJ0byB0aGUgZXhwcmVzc2lvbiAneCA9IEFOWShB UlJBWVtjMSxjMiwuLl0pJyIpLAorCQkJR1VDX0VYUExBSU4KKwkJfSwKKwkJJmVuYWJsZV9vcl90 cmFuc2Zvcm1hdGlvbiwKKwkJdHJ1ZSwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCiAJewogCQkv KgogCQkgKiBOb3QgZm9yIGdlbmVyYWwgdXNlIC0tLSB1c2VkIGJ5IFNFVCBTRVNTSU9OIEFVVEhP UklaQVRJT04gYW5kIFNFVApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0 Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNv bmYuc2FtcGxlCmluZGV4IGVkY2MwMjgyYjJkLi5kMzBkYzZkNTFjOSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMzg5LDYgKzM4OSw3IEBA CiAjIC0gUGxhbm5lciBNZXRob2QgQ29uZmlndXJhdGlvbiAtCiAKICNlbmFibGVfYXN5bmNfYXBw ZW5kID0gb24KKyNlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbgogI2VuYWJsZV9iaXRtYXBz Y2FuID0gb24KICNlbmFibGVfZ2F0aGVybWVyZ2UgPSBvbgogI2VuYWJsZV9oYXNoYWdnID0gb24K ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsIGIvc3JjL2Jpbi9w Z19kdW1wL3QvMDAyX3BnX2R1bXAucGwKaW5kZXggMDBiNTA5MjcxM2QuLmQyOGJmNjE3ZGJlIDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAorKysgYi9zcmMvYmlu L3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtMjA5NSw5ICsyMDk1LDkgQEAgbXkgJXRlc3Rz ID0gKAogCQlyZWdleHAgPT4gcXIvXgogCQkJXFFDUkVBVEUgRE9NQUlOIGR1bXBfdGVzdC51c19w b3N0YWxfY29kZSBBUyB0ZXh0IENPTExBVEUgcGdfY2F0YWxvZy4iQyIgREVGQVVMVCAnMTAwMTQn Ojp0ZXh0XEVcblxzKwogCQkJXFFDT05TVFJBSU5UIHVzX3Bvc3RhbF9jb2RlX2NoZWNrIENIRUNL IFxFCi0JCQlcUSgoKFZBTFVFIH4gJ15cZHs1fVxFCi0JCQlcJFxRJzo6dGV4dCkgT1IgKFZBTFVF IH4gJ15cZHs1fS1cZHs0fVxFXCQKLQkJCVxRJzo6dGV4dCkpKTtcRSgufFxuKSoKKwkJCVxRKChW QUxVRSB+IEFOWSAoQVJSQVlbJ15cZHs1fVxFCisJCQlcJFxRJzo6dGV4dCwgJ15cZHs1fS1cZHs0 fVxFXCQKKwkJCVxRJzo6dGV4dF0pKSk7XEUoLnxcbikqCiAJCQlcUUNPTU1FTlQgT04gQ09OU1RS QUlOVCB1c19wb3N0YWxfY29kZV9jaGVjayBPTiBET01BSU4gZHVtcF90ZXN0LnVzX3Bvc3RhbF9j b2RlIElTICdjaGVjayBpdCc7XEUKIAkJCS94bSwKIAkJbGlrZSA9PgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbm9kZXMvcXVlcnlqdW1ibGUuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5anVt YmxlLmgKaW5kZXggZjFjNTVjODA2N2YuLmE5YWUwNDhhZjUyIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9ub2Rlcy9xdWVyeWp1bWJsZS5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5anVt YmxlLmgKQEAgLTY1LDYgKzY1LDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBjb21wdXRlX3F1 ZXJ5X2lkOwogCiBleHRlcm4gY29uc3QgY2hhciAqQ2xlYW5RdWVyeXRleHQoY29uc3QgY2hhciAq cXVlcnksIGludCAqbG9jYXRpb24sIGludCAqbGVuKTsKIGV4dGVybiBKdW1ibGVTdGF0ZSAqSnVt YmxlUXVlcnkoUXVlcnkgKnF1ZXJ5KTsKK2V4dGVybiBKdW1ibGVTdGF0ZSAqSnVtYmxlRXhwcihF eHByICpleHByLCB1aW50NjQgKnF1ZXJ5SWQpOwogZXh0ZXJuIHZvaWQgRW5hYmxlUXVlcnlJZCh2 b2lkKTsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgcXVlcnlfaWRfZW5hYmxlZDsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaCBiL3NyYy9pbmNsdWRlL29w dGltaXplci9vcHRpbWl6ZXIuaAppbmRleCA3YjYzYzVjZjcxOC4uMGVlNzE1NGUwODQgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaAorKysgYi9zcmMvaW5jbHVk ZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmgKQEAgLTUwLDYgKzUwLDcgQEAgc3RydWN0IFBsYW5uZWRT dG10Owogc3RydWN0IFBhcmFtTGlzdEluZm9EYXRhOwogc3RydWN0IEhlYXBUdXBsZURhdGE7CiAK K2V4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKIAogLyog aW4gcGF0aC9jbGF1c2VzZWwuYzogKi8KIApAQCAtMTU5LDYgKzE2MCwxNSBAQCBleHRlcm4gTGlz dCAqZXhwYW5kX2Z1bmN0aW9uX2FyZ3VtZW50cyhMaXN0ICphcmdzLCBib29sIGluY2x1ZGVfb3V0 X2FyZ3VtZW50cywKIAogLyogaW4gdXRpbC9wcmVkdGVzdC5jOiAqLwogCisvKgorICogUHJvb2Yg YXR0ZW1wdHMgaW52b2x2aW5nIGxhcmdlIGFycmF5cyBpbiBTY2FsYXJBcnJheU9wRXhwciBub2Rl cyBhcmUKKyAqIGxpa2VseSB0byByZXF1aXJlIE8oTl4yKSB0aW1lLCBhbmQgbW9yZSBvZnRlbiB0 aGFuIG5vdCBmYWlsIGFueXdheS4KKyAqIFNvIHdlIHNldCBhbiBhcmJpdHJhcnkgbGltaXQgb24g dGhlIG51bWJlciBvZiBhcnJheSBlbGVtZW50cyB0aGF0CisgKiB3ZSB3aWxsIGFsbG93IHRvIGJl IHRyZWF0ZWQgYXMgYW4gQU5EIG9yIE9SIGNsYXVzZS4KKyAqIFhYWCBpcyBpdCB3b3J0aCBleHBv c2luZyB0aGlzIGFzIGEgR1VDIGtub2I/CisgKi8KKyNkZWZpbmUgTUFYX1NBT1BfQVJSQVlfU0la RQkJMTAwCisKIGV4dGVybiBib29sIHByZWRpY2F0ZV9pbXBsaWVkX2J5KExpc3QgKnByZWRpY2F0 ZV9saXN0LCBMaXN0ICpjbGF1c2VfbGlzdCwKIAkJCQkJCQkJIGJvb2wgd2Vhayk7CiBleHRlcm4g Ym9vbCBwcmVkaWNhdGVfcmVmdXRlZF9ieShMaXN0ICpwcmVkaWNhdGVfbGlzdCwgTGlzdCAqY2xh dXNlX2xpc3QsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9p bmRleC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKaW5k ZXggNzlmYTExN2NiNTQuLjdiNzIxYmFjNzE5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jcmVhdGVfaW5kZXgub3V0CkBAIC0xODM4LDE4ICsxODM4LDUwIEBAIERST1AgVEFCTEUgb25l a193aXRoX251bGw7CiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgKiBGUk9NIHRlbmsxCiAg IFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzIE9S IHRlbnRob3VzID0gNDIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0gQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQotICAgUmVjaGVjayBDb25kOiAo KCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gMSkpIE9SICgodGhvdXNhbmQgPSA0Mikg QU5EICh0ZW50aG91cyA9IDMpKSBPUiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSA0 MikpKQotICAgLT4gIEJpdG1hcE9yCi0gICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g dGVuazFfdGhvdXNfdGVudGhvdXMKLSAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgodGhvdXNh bmQgPSA0MikgQU5EICh0ZW50aG91cyA9IDEpKQotICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCi0gICAgICAgICAgICAgICBJbmRleCBDb25kOiAo KHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSAzKSkKLSAgICAgICAgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cwotICAgICAgICAgICAgICAgSW5kZXgg Q29uZDogKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gNDIpKQotKDkgcm93cykKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1 c2luZyB0ZW5rMV90aG91c190ZW50aG91cyBvbiB0ZW5rMQorICAgSW5kZXggQ29uZDogKCh0aG91 c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gQU5ZICgnezEsMyw0Mn0nOjppbnRlZ2VyW10pKSkK KygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBB TkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0Mik7CisgdW5p cXVlMSB8IHVuaXF1ZTIgfCB0d28gfCBmb3VyIHwgdGVuIHwgdHdlbnR5IHwgaHVuZHJlZCB8IHRo b3VzYW5kIHwgdHdvdGhvdXNhbmQgfCBmaXZldGhvdXMgfCB0ZW50aG91cyB8IG9kZCB8IGV2ZW4g fCBzdHJpbmd1MSB8IHN0cmluZ3UyIHwgc3RyaW5nNCAKKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0rLS0tLS0tKy0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLSstLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLQorICAgICAgNDIgfCAgICA1NTMwIHwgICAwIHwgICAgMiB8ICAgMiB8ICAg ICAgMiB8ICAgICAgNDIgfCAgICAgICA0MiB8ICAgICAgICAgIDQyIHwgICAgICAgIDQyIHwgICAg ICAgNDIgfCAgODQgfCAgIDg1IHwgUUJBQUFBICAgfCBTRUlBQUEgICB8IE9PT094eAorKDEgcm93 KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBX SEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxCisgICAgICAgICBS ZWNoZWNrIENvbmQ6ICgoaHVuZHJlZCA9IDQyKSBBTkQgKHRob3VzYW5kID0gQU5ZICgnezQyLDk5 fSc6OmludGVnZXJbXSkpKQorICAgICAgICAgLT4gIEJpdG1hcEFuZAorICAgICAgICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKKyAgICAgICAgICAgICAgICAg ICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisgICAgICAgICAgICAgICAtPiAgQml0bWFw IEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAg IEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IEFOWSAoJ3s0Miw5OX0nOjppbnRlZ2VyW10pKQorKDgg cm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQy IEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKKyBjb3VudCAKKy0tLS0tLS0K KyAgICAxMAorKDEgcm93KQorCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5k ID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzIE9SIHRlbnRob3VzID0gNDIp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBT Y2FuIHVzaW5nIHRlbmsxX3Rob3VzX3RlbnRob3VzIG9uIHRlbmsxCisgICBJbmRleCBDb25kOiAo KHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSBBTlkgKCd7MSwzLDQyfSc6OmludGVnZXJb XSkpKQorKDIgcm93cykKIAogU0VMRUNUICogRlJPTSB0ZW5rMQogICBXSEVSRSB0aG91c2FuZCA9 IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMyBPUiB0ZW50aG91cyA9IDQyKTsK QEAgLTE4NjEsMjggKzE4OTMsMTE2IEBAIFNFTEVDVCAqIEZST00gdGVuazEKIEVYUExBSU4gKENP U1RTIE9GRikKIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCiAgIFdIRVJFIGh1bmRyZWQgPSA0 MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBC aXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoaHVuZHJl ZCA9IDQyKSBBTkQgKHRob3VzYW5kID0gQU5ZICgnezQyLDk5fSc6OmludGVnZXJbXSkpKQorICAg ICAgICAgLT4gIEJpdG1hcEFuZAorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIHRlbmsxX2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5k cmVkID0gNDIpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFf dGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2Fu ZCA9IEFOWSAoJ3s0Miw5OX0nOjppbnRlZ2VyW10pKQorKDggcm93cykKKworU0VMRUNUIGNvdW50 KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBP UiB0aG91c2FuZCA9IDk5KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAxMAorKDEgcm93KQorCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBo dW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA8IDQyIE9SIHRob3VzYW5kIDwgOTkgT1IgNDMgPiB0 aG91c2FuZCBPUiA0MiA+IHRob3VzYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAt PiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoKGh1 bmRyZWQgPSA0MikgQU5EICh0aG91c2FuZCA8IEFOWSAoJ3s0Miw5OSw0Myw0Mn0nOjppbnRlZ2Vy W10pKSkKKyAgICAgICAgIC0+ICBCaXRtYXBBbmQKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBD b25kOiAoaHVuZHJlZCA9IDQyKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25k OiAodGhvdXNhbmQgPCBBTlkgKCd7NDIsOTksNDMsNDJ9Jzo6aW50ZWdlcltdKSkKKyg4IHJvd3Mp CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdI RVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzKSBPUiB0 aG91c2FuZCA9IDQxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg QWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQorICAgICAgICAgUmVj aGVjayBDb25kOiAoKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gQU5ZICgnezEsM30n OjppbnRlZ2VyW10pKSkgT1IgKHRob3VzYW5kID0gNDEpKQorICAgICAgICAgLT4gIEJpdG1hcE9y CisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVu dGhvdXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgodGhvdXNhbmQgPSA0Mikg QU5EICh0ZW50aG91cyA9IEFOWSAoJ3sxLDN9Jzo6aW50ZWdlcltdKSkpCisgICAgICAgICAgICAg ICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAg ICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IDQxKQorKDggcm93cykKKworU0VM RUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRo b3VzID0gMSBPUiB0ZW50aG91cyA9IDMpIE9SIHRob3VzYW5kID0gNDE7CisgY291bnQgCistLS0t LS0tCisgICAgMTAKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50 KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBP UiB0aG91c2FuZCA9IDk5IE9SIHRlbnRob3VzIDwgMikgT1IgdGhvdXNhbmQgPSA0MTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4g b24gdGVuazEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKCgoaHVuZHJlZCA9IDQyKSBBTkQgKCh0 aG91c2FuZCA9IEFOWSAoJ3s0Miw5OX0nOjppbnRlZ2VyW10pKSBPUiAodGVudGhvdXMgPCAyKSkp IE9SICh0aG91c2FuZCA9IDQxKSkKKyAgICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAg ICAgLT4gIEJpdG1hcEFuZAorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIHRlbmsxX2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENv bmQ6IChodW5kcmVkID0gNDIpCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90 aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKHRob3VzYW5kID0gQU5ZICgnezQyLDk5fSc6OmludGVnZXJbXSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhv dXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0ZW50aG91 cyA8IDIpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhv dXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9 IDQxKQorKDE0IHJvd3MpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1 bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSBPUiB0ZW50aG91 cyA8IDIpIE9SIHRob3VzYW5kID0gNDE7CisgY291bnQgCistLS0tLS0tCisgICAgMjAKKygxIHJv dykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAg V0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDQxIE9S IHRob3VzYW5kID0gOTkgQU5EIHRlbnRob3VzID0gMik7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogIEFnZ3JlZ2F0ZQogICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKLSAgICAg ICAgIFJlY2hlY2sgQ29uZDogKChodW5kcmVkID0gNDIpIEFORCAoKHRob3VzYW5kID0gNDIpIE9S ICh0aG91c2FuZCA9IDk5KSkpCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoaHVuZHJlZCA9IDQy KSBBTkQgKCh0aG91c2FuZCA9IEFOWSAoJ3s0Miw0MX0nOjppbnRlZ2VyW10pKSBPUiAoKHRob3Vz YW5kID0gOTkpIEFORCAodGVudGhvdXMgPSAyKSkpKQogICAgICAgICAgLT4gIEJpdG1hcEFuZAog ICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKICAg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCiAgICAgICAgICAg ICAgICAtPiAgQml0bWFwT3IKICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cwotICAgICAgICAgICAgICAgICAgICAgICAgICAg SW5kZXggQ29uZDogKHRob3VzYW5kID0gNDIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAodGhvdXNhbmQgPSBBTlkgKCd7NDIsNDF9Jzo6aW50ZWdlcltdKSkKICAgICAg ICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50 aG91cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0g OTkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0g OTkpIEFORCAodGVudGhvdXMgPSAyKSkKICgxMSByb3dzKQogCiBTRUxFQ1QgY291bnQoKikgRlJP TSB0ZW5rMQotICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3Vz YW5kID0gOTkpOworICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRo b3VzYW5kID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBBTkQgdGVudGhvdXMgPSAyKTsKICBjb3VudCAK IC0tLS0tLS0KICAgICAxMAogKDEgcm93KQogCitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRp b247CiAtLQogLS0gQ2hlY2sgYmVoYXZpb3Igd2l0aCBkdXBsaWNhdGUgaW5kZXggY29sdW1uIGNv bnRlbnRzCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQKaW5kZXggOTYwNTQwMDAyMTgu LmQ4MDE4YmVmNGY2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4u b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQKQEAgLTQyMTAsMTAg KzQyMTAsMTAgQEAgZXhwbGFpbiAoY29zdHMgb2ZmKQogc2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpv aW4gdGVuazEgYiBvbgogICAoYS51bmlxdWUxID0gMSBhbmQgYi51bmlxdWUxID0gMikgb3IKICAg KChhLnVuaXF1ZTIgPSAzIG9yIGEudW5pcXVlMiA9IDcpIGFuZCBiLmh1bmRyZWQgPSA0KTsKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgTmVzdGVkIExvb3AKLSAgIEpvaW4gRmlsdGVyOiAo KChhLnVuaXF1ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9IDIpKSBPUiAoKChhLnVuaXF1ZTIgPSAz KSBPUiAoYS51bmlxdWUyID0gNykpIEFORCAoYi5odW5kcmVkID0gNCkpKQorICAgSm9pbiBGaWx0 ZXI6ICgoKGEudW5pcXVlMSA9IDEpIEFORCAoYi51bmlxdWUxID0gMikpIE9SICgoYS51bmlxdWUy ID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKSBBTkQgKGIuaHVuZHJlZCA9IDQpKSkKICAgIC0+ ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGIKICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1 bmlxdWUxID0gMikgT1IgKGh1bmRyZWQgPSA0KSkKICAgICAgICAgIC0+ICBCaXRtYXBPcgpAQCAt NDIyMywxNiArNDIyMyw2NCBAQCBzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9u CiAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQpCiAgICAtPiAg TWF0ZXJpYWxpemUKICAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGEKLSAg ICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIgPSAz KSBPUiAodW5pcXVlMiA9IDcpKQorICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1 ZTEgPSAxKSBPUiAodW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkpCiAgICAgICAg ICAgICAgICAtPiAgQml0bWFwT3IKICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAodW5pcXVlMSA9IDEpCiAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMgotICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKHVuaXF1ZTIgPSAzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXgg Q29uZDogKHVuaXF1ZTIgPSBBTlkgKCd7Myw3fSc6OmludGVnZXJbXSkpCisoMTcgcm93cykKKwor U0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKQor c2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgorICAoYS51bmlxdWUxID0gMSBh bmQgYi51bmlxdWUxID0gMikgb3IKKyAgKChhLnVuaXF1ZTIgPSAzIG9yIGEudW5pcXVlMiA9IDcp IGFuZCBiLmh1bmRyZWQgPSA0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTmVzdGVkIExvb3AKKyAgIEpv aW4gRmlsdGVyOiAoKChhLnVuaXF1ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9IDIpKSBPUiAoKGEu dW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkgQU5EIChiLmh1bmRyZWQgPSA0KSkp CisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMSBiCisgICAgICAgICBSZWNoZWNrIENv bmQ6ICgodW5pcXVlMSA9IDIpIE9SIChodW5kcmVkID0gNCkpCisgICAgICAgICAtPiAgQml0bWFw T3IKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUx CisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDIpCisgICAgICAg ICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAorICAgICAgICAg ICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0KQorICAgLT4gIE1hdGVyaWFsaXpl CisgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMSBhCisgICAgICAgICAgICAg ICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0gQU5ZICgnezMsN30n OjppbnRlZ2VyW10pKSkKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAg ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMSkKICAgICAgICAgICAg ICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUyCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA9IDcpCi0oMTkgcm93cykK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0gQU5ZICgn ezMsN30nOjppbnRlZ2VyW10pKQorKDE3IHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3Nl bGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KKyAgKGEudW5pcXVlMSA8IDIwIG9y IGEudW5pcXVlMSA9IDMgb3IgYS51bmlxdWUxID0gMSBhbmQgYi51bmlxdWUxID0gMikgb3IKKyAg KChhLnVuaXF1ZTIgPSAzIG9yIGEudW5pcXVlMiA9IDcpIGFuZCBiLmh1bmRyZWQgPSA0KTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTmVzdGVkIExvb3AKKyAgIEpvaW4g RmlsdGVyOiAoKGEudW5pcXVlMSA8IDIwKSBPUiAoYS51bmlxdWUxID0gMykgT1IgKChhLnVuaXF1 ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9IDIpKSBPUiAoKGEudW5pcXVlMiA9IEFOWSAoJ3szLDd9 Jzo6aW50ZWdlcltdKSkgQU5EIChiLmh1bmRyZWQgPSA0KSkpCisgICAtPiAgU2VxIFNjYW4gb24g dGVuazEgYgorICAgLT4gIE1hdGVyaWFsaXplCisgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2Nh biBvbiB0ZW5rMSBhCisgICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA8IDIw KSBPUiAodW5pcXVlMSA9IDMpIE9SICh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIgPSBBTlkgKCd7 Myw3fSc6OmludGVnZXJbXSkpKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAg ICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPCAyMCkKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDMpCisgICAg ICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAxKQorICAg ICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0gQU5ZICgn ezMsN30nOjppbnRlZ2VyW10pKQorKDE1IHJvd3MpCiAKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zv cm1hdGlvbjsKIC0tCiAtLSB0ZXN0IHBsYWNlbWVudCBvZiBtb3ZhYmxlIHF1YWxzIGluIGEgcGFy YW1ldGVyaXplZCBqb2luIHRyZWUKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bh cnRpdGlvbl9wcnVuZS5vdXQKaW5kZXggYmYwNjU3YjlmMmMuLjFlMTUzYzNiYjU2IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0CkBAIC04MiwyNSAr ODIsNDcgQEAgZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgaXMg bnVsbDsKICgyIHJvd3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3 aGVyZSBhID0gJ2EnIG9yIGEgPSAnYyc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICBBcHBlbmQKICAgIC0+ICBTZXEgU2NhbiBvbiBscF9hZCBscF8xCi0g ICAgICAgICBGaWx0ZXI6ICgoYSA9ICdhJzo6YnBjaGFyKSBPUiAoYSA9ICdjJzo6YnBjaGFyKSkK KyAgICAgICAgIEZpbHRlcjogKGEgPSBBTlkgKCd7YSxjfSc6OmJwY2hhcltdKSkKICAgIC0+ICBT ZXEgU2NhbiBvbiBscF9iYyBscF8yCi0gICAgICAgICBGaWx0ZXI6ICgoYSA9ICdhJzo6YnBjaGFy KSBPUiAoYSA9ICdjJzo6YnBjaGFyKSkKKyAgICAgICAgIEZpbHRlcjogKGEgPSBBTlkgKCd7YSxj fSc6OmJwY2hhcltdKSkKICg1IHJvd3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICog ZnJvbSBscCB3aGVyZSBhIGlzIG5vdCBudWxsIGFuZCAoYSA9ICdhJyBvciBhID0gJ2MnKTsKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICBBcHBlbmQKICAgIC0+ICBTZXEgU2NhbiBvbiBscF9hZCBscF8x Ci0gICAgICAgICBGaWx0ZXI6ICgoYSBJUyBOT1QgTlVMTCkgQU5EICgoYSA9ICdhJzo6YnBjaGFy KSBPUiAoYSA9ICdjJzo6YnBjaGFyKSkpCisgICAgICAgICBGaWx0ZXI6ICgoYSBJUyBOT1QgTlVM TCkgQU5EIChhID0gQU5ZICgne2EsY30nOjpicGNoYXJbXSkpKQogICAgLT4gIFNlcSBTY2FuIG9u IGxwX2JjIGxwXzIKLSAgICAgICAgIEZpbHRlcjogKChhIElTIE5PVCBOVUxMKSBBTkQgKChhID0g J2EnOjpicGNoYXIpIE9SIChhID0gJ2MnOjpicGNoYXIpKSkKKyAgICAgICAgIEZpbHRlcjogKChh IElTIE5PVCBOVUxMKSBBTkQgKGEgPSBBTlkgKCd7YSxjfSc6OmJwY2hhcltdKSkpCiAoNSByb3dz KQogCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitleHBsYWluIChjb3N0cyBv ZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSA9ICdhJyBvciBhID0gJ2MnOworICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4g b24gbHBfYWQgbHBfMQorICAgICAgICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3thLGN9Jzo6YnBjaGFy W10pKQorICAgLT4gIFNlcSBTY2FuIG9uIGxwX2JjIGxwXzIKKyAgICAgICAgIEZpbHRlcjogKGEg PSBBTlkgKCd7YSxjfSc6OmJwY2hhcltdKSkKKyg1IHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9m Zikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIGlzIG5vdCBudWxsIGFuZCAoYSA9ICdhJyBvciBh ID0gJ2MnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2Vx IFNjYW4gb24gbHBfYWQgbHBfMQorICAgICAgICAgRmlsdGVyOiAoKGEgSVMgTk9UIE5VTEwpIEFO RCAoYSA9IEFOWSAoJ3thLGN9Jzo6YnBjaGFyW10pKSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9i YyBscF8yCisgICAgICAgICBGaWx0ZXI6ICgoYSBJUyBOT1QgTlVMTCkgQU5EIChhID0gQU5ZICgn e2EsY30nOjpicGNoYXJbXSkpKQorKDUgcm93cykKKworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9y bWF0aW9uOwogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPD4g J2cnOwogICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTUxNSwxMCArNTM3LDEwIEBAIGV4cGxhaW4gKGNv c3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA8PSAzMTsKICgyNyByb3dzKQogCiBl eHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIG9yIGEgPSA3 OwotICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFNlcSBTY2FuIG9u IHJscDIgcmxwCi0gICBGaWx0ZXI6ICgoYSA9IDEpIE9SIChhID0gNykpCisgICBGaWx0ZXI6IChh ID0gQU5ZICgnezEsN30nOjppbnRlZ2VyW10pKQogKDIgcm93cykKIAogZXhwbGFpbiAoY29zdHMg b2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBvciBiID0gJ2FiJzsKQEAgLTU5Niwx MyArNjE4LDEzIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUg YSA8IDEgb3IgKGEgPiAyMCBhbmQgYSA8IDI1KTsKIAogLS0gd2hlcmUgY2xhdXNlIGNvbnRyYWRp Y3RzIHN1Yi1wYXJ0aXRpb24ncyBjb25zdHJhaW50CiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVj dCAqIGZyb20gcmxwIHdoZXJlIGEgPSAyMCBvciBhID0gNDA7Ci0gICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBB cHBlbmQKICAgIC0+ICBTZXEgU2NhbiBvbiBybHA0XzEgcmxwXzEKLSAgICAgICAgIEZpbHRlcjog KChhID0gMjApIE9SIChhID0gNDApKQorICAgICAgICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3syMCw0 MH0nOjppbnRlZ2VyW10pKQogICAgLT4gIFNlcSBTY2FuIG9uIHJscDVfZGVmYXVsdCBybHBfMgot ICAgICAgICAgRmlsdGVyOiAoKGEgPSAyMCkgT1IgKGEgPSA0MCkpCisgICAgICAgICBGaWx0ZXI6 IChhID0gQU5ZICgnezIwLDQwfSc6OmludGVnZXJbXSkpCiAoNSByb3dzKQogCiBleHBsYWluIChj b3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwMyB3aGVyZSBhID0gMjA7ICAgLyogZW1wdHkgKi8K QEAgLTY3MSw2ICs2OTMsMTYzIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBy bHAgd2hlcmUgKGEgPSAxIGFuZCBhID0gMykgb3IgKGEgPiAxIGFuZCBhID0KICAgICAgICAgIEZp bHRlcjogKCgoYSA9IDEpIEFORCAoYSA9IDMpKSBPUiAoKGEgPiAxKSBBTkQgKGEgPSAxNSkpKQog KDExIHJvd3MpCiAKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK2V4cGxhaW4g KGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDEgb3IgYSA9IDc7CisgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHJscDIgcmxwCisgICBGaWx0 ZXI6IChhID0gQU5ZICgnezEsN30nOjppbnRlZ2VyW10pKQorKDIgcm93cykKKworZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBvciBiID0gJ2FiJzsKKyAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBB cHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAxIHJscF8xCisgICAgICAgICBGaWx0ZXI6ICgo YSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBy bHAyIHJscF8yCisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWIn Ojp0ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAzYWJjZCBybHBfMworICAgICAgICAgRmls dGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNj YW4gb24gcmxwNF8xIHJscF80CisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRl eHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0XzIgcmxwXzUKKyAgICAg ICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4g IFNlcSBTY2FuIG9uIHJscDRfZGVmYXVsdCBybHBfNgorICAgICAgICAgRmlsdGVyOiAoKGEgPSAx KSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNV8x IHJscF83CisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWInOjp0 ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA1X2RlZmF1bHQgcmxwXzgKKyAgICAgICAgIEZp bHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4gIFNlcSBT Y2FuIG9uIHJscF9kZWZhdWx0XzEwIHJscF85CisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9S ICgoYik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVs dF8zMCBybHBfMTAKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdh Yic6OnRleHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscF9kZWZhdWx0X251bGwgcmxwXzExCisg ICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKyAg IC0+ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVsdF9kZWZhdWx0IHJscF8xMgorICAgICAgICAgRmls dGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisoMjUgcm93cykKKwor ZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID4gMjAgYW5kIGEg PCAyNzsKKyAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIFNlcSBT Y2FuIG9uIHJscDRfMSBybHBfMQorICAgICAgICAgRmlsdGVyOiAoKGEgPiAyMCkgQU5EIChhIDwg MjcpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfMiBybHBfMgorICAgICAgICAgRmlsdGVyOiAo KGEgPiAyMCkgQU5EIChhIDwgMjcpKQorKDUgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBz ZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMjk7CisgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHJscDRf ZGVmYXVsdCBybHAKKyAgIEZpbHRlcjogKGEgPSAyOSkKKygyIHJvd3MpCisKK2V4cGxhaW4gKGNv c3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA+PSAyOTsKKyAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF9k ZWZhdWx0IHJscF8xCisgICAgICAgICBGaWx0ZXI6IChhID49IDI5KQorICAgLT4gIFNlcSBTY2Fu IG9uIHJscDVfMSBybHBfMgorICAgICAgICAgRmlsdGVyOiAoYSA+PSAyOSkKKyAgIC0+ICBTZXEg U2NhbiBvbiBybHA1X2RlZmF1bHQgcmxwXzMKKyAgICAgICAgIEZpbHRlcjogKGEgPj0gMjkpCisg ICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfMzAgcmxwXzQKKyAgICAgICAgIEZpbHRlcjog KGEgPj0gMjkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfZGVmYXVsdCBybHBfNQor ICAgICAgICAgRmlsdGVyOiAoYSA+PSAyOSkKKygxMSByb3dzKQorCitleHBsYWluIChjb3N0cyBv ZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPCAxIG9yIChhID4gMjAgYW5kIGEgPCAyNSk7 CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IEFwcGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIHJscDEgcmxwXzEKKyAgICAgICAgIEZpbHRlcjog KChhIDwgMSkgT1IgKChhID4gMjApIEFORCAoYSA8IDI1KSkpCisgICAtPiAgU2VxIFNjYW4gb24g cmxwNF8xIHJscF8yCisgICAgICAgICBGaWx0ZXI6ICgoYSA8IDEpIE9SICgoYSA+IDIwKSBBTkQg KGEgPCAyNSkpKQorKDUgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9t IHJscCB3aGVyZSBhID0gMjAgb3IgYSA9IDQwOworICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8xIHJs cF8xCisgICAgICAgICBGaWx0ZXI6IChhID0gQU5ZICgnezIwLDQwfSc6OmludGVnZXJbXSkpCisg ICAtPiAgU2VxIFNjYW4gb24gcmxwNV9kZWZhdWx0IHJscF8yCisgICAgICAgICBGaWx0ZXI6IChh ID0gQU5ZICgnezIwLDQwfSc6OmludGVnZXJbXSkpCisoNSByb3dzKQorCitleHBsYWluIChjb3N0 cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwMyB3aGVyZSBhID0gMjA7ICAgLyogZW1wdHkgKi8KKyAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJl c3VsdAorICAgT25lLVRpbWUgRmlsdGVyOiBmYWxzZQorKDIgcm93cykKKworZXhwbGFpbiAoY29z dHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID4gMSBhbmQgYSA9IDEwOwkvKiBvbmx5 IGRlZmF1bHQgKi8KKyAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBybHBfZGVmYXVsdF8xMCBy bHAKKyAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID0gMTApKQorKDIgcm93cykKKworZXhwbGFp biAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID4gMSBhbmQgYSA+PTE1Owkv KiBybHAzIG9ud2FyZHMsIGluY2x1ZGluZyBkZWZhdWx0ICovCisgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gcmxwM2FiY2Qg cmxwXzEKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBT ZXEgU2NhbiBvbiBybHAzZWZnaCBybHBfMgorICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQg KGEgPj0gMTUpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDNudWxseHkgcmxwXzMKKyAgICAgICAg IEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAz X2RlZmF1bHQgcmxwXzQKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkK KyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0XzEgcmxwXzUKKyAgICAgICAgIEZpbHRlcjogKChhID4g MSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0XzIgcmxwXzYKKyAgICAg ICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBy bHA0X2RlZmF1bHQgcmxwXzcKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1 KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA1XzEgcmxwXzgKKyAgICAgICAgIEZpbHRlcjogKChh ID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA1X2RlZmF1bHQgcmxw XzkKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEg U2NhbiBvbiBybHBfZGVmYXVsdF8zMCBybHBfMTAKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkg QU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVsdF9kZWZhdWx0IHJs cF8xMQorICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorKDIzIHJvd3Mp CisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDEgYW5k IGEgPSAzOwkvKiBlbXB0eSAqLworICAgICAgICBRVUVSWSBQTEFOICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0CisgICBPbmUtVGltZSBGaWx0ZXI6IGZhbHNlCiso MiByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIChh ID0gMSBhbmQgYSA9IDMpIG9yIChhID4gMSBhbmQgYSA9IDE1KTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBBcHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAyIHJscF8xCisgICAgICAgICBG aWx0ZXI6ICgoKGEgPSAxKSBBTkQgKGEgPSAzKSkgT1IgKChhID4gMSkgQU5EIChhID0gMTUpKSkK KyAgIC0+ICBTZXEgU2NhbiBvbiBybHAzYWJjZCBybHBfMgorICAgICAgICAgRmlsdGVyOiAoKChh ID0gMSkgQU5EIChhID0gMykpIE9SICgoYSA+IDEpIEFORCAoYSA9IDE1KSkpCisgICAtPiAgU2Vx IFNjYW4gb24gcmxwM2VmZ2ggcmxwXzMKKyAgICAgICAgIEZpbHRlcjogKCgoYSA9IDEpIEFORCAo YSA9IDMpKSBPUiAoKGEgPiAxKSBBTkQgKGEgPSAxNSkpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJs cDNudWxseHkgcmxwXzQKKyAgICAgICAgIEZpbHRlcjogKCgoYSA9IDEpIEFORCAoYSA9IDMpKSBP UiAoKGEgPiAxKSBBTkQgKGEgPSAxNSkpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDNfZGVmYXVs dCBybHBfNQorICAgICAgICAgRmlsdGVyOiAoKChhID0gMSkgQU5EIChhID0gMykpIE9SICgoYSA+ IDEpIEFORCAoYSA9IDE1KSkpCisoMTEgcm93cykKKworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9y bWF0aW9uOwogLS0gbXVsdGktY29sdW1uIGtleXMKIGNyZWF0ZSB0YWJsZSBtYzNwIChhIGludCwg YiBpbnQsIGMgaW50KSBwYXJ0aXRpb24gYnkgcmFuZ2UgKGEsIGFicyhiKSwgYyk7CiBjcmVhdGUg dGFibGUgbWMzcF9kZWZhdWx0IHBhcnRpdGlvbiBvZiBtYzNwIGRlZmF1bHQ7CkBAIC0yMDcyLDEw ICsyMjUxLDEwIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBocCB3aGVyZSBh ID0gMSBhbmQgYiA9ICdhYmNkZSc7CiAKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJv bSBocCB3aGVyZSBhID0gMSBhbmQgYiA9ICdhYmNkZScgYW5kCiAgIChjID0gMiBvciBjID0gMyk7 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBTZXEgU2NhbiBvbiBocDIgaHAKLSAgIEZpbHRlcjog KChhID0gMSkgQU5EIChiID0gJ2FiY2RlJzo6dGV4dCkgQU5EICgoYyA9IDIpIE9SIChjID0gMykp KQorICAgRmlsdGVyOiAoKGMgPSBBTlkgKCd7MiwzfSc6OmludGVnZXJbXSkpIEFORCAoYSA9IDEp IEFORCAoYiA9ICdhYmNkZSc6OnRleHQpKQogKDIgcm93cykKIAogZHJvcCB0YWJsZSBocDI7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQKaW5kZXggMTA5MDNiZGFiMDkuLjZm NTViOWUzZWMxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4 dC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0CkBAIC0x MzIyLDE5ICsxMzIyLDE5IEBAIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NF TEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUKIFNFTEVDVCAqIEZST00g Y2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNp ZXMgV0hFUkUgKGEgPSAxIE9SIGEgPSA1MSkgQU5EIGIgPSAnJzEnJycpOwogIGVzdGltYXRlZCB8 IGFjdHVhbCAKIC0tLS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICAgIDk5IHwgICAgMTAwCisgICAg ICAgMTAwIHwgICAgMTAwCiAoMSByb3cpCiAKIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVk X3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUgKGEgPSAx IE9SIGEgPSA1MSkgQU5EIChiID0gJycxJycgT1IgYiA9ICcnMicnKScpOwogIGVzdGltYXRlZCB8 IGFjdHVhbCAKIC0tLS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICAgIDk5IHwgICAgMTAwCisgICAg ICAgMTAwIHwgICAgMTAwCiAoMSByb3cpCiAKIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVk X3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUgKGEgPSAx IE9SIGEgPSAyIE9SIGEgPSA1MSBPUiBhID0gNTIpIEFORCAoYiA9ICcnMScnIE9SIGIgPSAnJzIn JyknKTsKICBlc3RpbWF0ZWQgfCBhY3R1YWwgCiAtLS0tLS0tLS0tLSstLS0tLS0tLQotICAgICAg IDE5NyB8ICAgIDIwMAorICAgICAgIDIwMCB8ICAgIDIwMAogKDEgcm93KQogCiAtLSBPUiBjbGF1 c2VzIHJlZmVyZW5jaW5nIGRpZmZlcmVudCBhdHRyaWJ1dGVzIGFyZSBpbmNvbXBhdGlibGUKQEAg LTE2NjQsMTkgKzE2NjQsMTkgQEAgU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygn U0VMRUNUICogRlJPTSBmdW5jdGlvbmFsX2RlcGVuZGVuY2llcyBXSEVSRQogU0VMRUNUICogRlJP TSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBmdW5jdGlvbmFsX2RlcGVuZGVu Y2llcyBXSEVSRSAoKGEgKiAyKSA9IDIgT1IgKGEgKiAyKSA9IDEwMikgQU5EIHVwcGVyKGIpID0g JycxJycnKTsKICBlc3RpbWF0ZWQgfCBhY3R1YWwgCiAtLS0tLS0tLS0tLSstLS0tLS0tLQotICAg ICAgICA5OSB8ICAgIDEwMAorICAgICAgIDEwMCB8ICAgIDEwMAogKDEgcm93KQogCiBTRUxFQ1Qg KiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIGZ1bmN0aW9uYWxfZGVw ZW5kZW5jaWVzIFdIRVJFICgoYSAqIDIpID0gMiBPUiAoYSAqIDIpID0gMTAyKSBBTkQgKHVwcGVy KGIpID0gJycxJycgT1IgdXBwZXIoYikgPSAnJzInJyknKTsKICBlc3RpbWF0ZWQgfCBhY3R1YWwg CiAtLS0tLS0tLS0tLSstLS0tLS0tLQotICAgICAgICA5OSB8ICAgIDEwMAorICAgICAgIDEwMCB8 ICAgIDEwMAogKDEgcm93KQogCiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdT RUxFQ1QgKiBGUk9NIGZ1bmN0aW9uYWxfZGVwZW5kZW5jaWVzIFdIRVJFICgoYSAqIDIpID0gMiBP UiAoYSAqIDIpID0gNCBPUiAoYSAqIDIpID0gMTAyIE9SIChhICogMikgPSAxMDQpIEFORCAodXBw ZXIoYikgPSAnJzEnJyBPUiB1cHBlcihiKSA9ICcnMicnKScpOwogIGVzdGltYXRlZCB8IGFjdHVh bCAKIC0tLS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICAgMTk3IHwgICAgMjAwCisgICAgICAgMjAw IHwgICAgMjAwCiAoMSByb3cpCiAKIC0tIE9SIGNsYXVzZXMgcmVmZXJlbmNpbmcgZGlmZmVyZW50 IGF0dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmll d3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKaW5kZXggOWJl N2FjYTJiOGEuLjFmOTAyOWI1YjJhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3N5c3ZpZXdzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdz Lm91dApAQCAtMTI0LDYgKzEyNCw3IEBAIHNlbGVjdCBuYW1lLCBzZXR0aW5nIGZyb20gcGdfc2V0 dGluZ3Mgd2hlcmUgbmFtZSBsaWtlICdlbmFibGUlJzsKICBlbmFibGVfbWVtb2l6ZSAgICAgICAg ICAgICAgICAgfCBvbgogIGVuYWJsZV9tZXJnZWpvaW4gICAgICAgICAgICAgICB8IG9uCiAgZW5h YmxlX25lc3Rsb29wICAgICAgICAgICAgICAgIHwgb24KKyBlbmFibGVfb3JfdHJhbnNmb3JtYXRp b24gICAgICAgfCBvbgogIGVuYWJsZV9wYXJhbGxlbF9hcHBlbmQgICAgICAgICB8IG9uCiAgZW5h YmxlX3BhcmFsbGVsX2hhc2ggICAgICAgICAgIHwgb24KICBlbmFibGVfcGFydGl0aW9uX3BydW5p bmcgICAgICAgfCBvbgpAQCAtMTM0LDcgKzEzNSw3IEBAIHNlbGVjdCBuYW1lLCBzZXR0aW5nIGZy b20gcGdfc2V0dGluZ3Mgd2hlcmUgbmFtZSBsaWtlICdlbmFibGUlJzsKICBlbmFibGVfc2Vxc2Nh biAgICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9zb3J0ICAgICAgICAgICAgICAgICAgICB8 IG9uCiAgZW5hYmxlX3RpZHNjYW4gICAgICAgICAgICAgICAgIHwgb24KLSgyMyByb3dzKQorKDI0 IHJvd3MpCiAKIC0tIFRoZXJlIGFyZSBhbHdheXMgd2FpdCBldmVudCBkZXNjcmlwdGlvbnMgZm9y IHZhcmlvdXMgdHlwZXMuCiBzZWxlY3QgdHlwZSwgY291bnQoKikgPiAwIGFzIG9rIEZST00gcGdf d2FpdF9ldmVudHMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGlkc2Nh bi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RpZHNjYW4ub3V0CmluZGV4IGYxMzNi NWE0YWM3Li4yYTA3OWU5OTZiMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC90aWRzY2FuLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RpZHNjYW4ub3V0 CkBAIC00MywxMCArNDMsMjYgQEAgU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFICco MCwxKScgPSBjdGlkOwogLS0gT1InZCBjbGF1c2VzCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxF Q1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9 IGN0aWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBUaWQgU2NhbiBvbiB0aWRzY2FuCisgICBUSUQgQ29uZDog KGN0aWQgPSBBTlkgKCd7IigwLDIpIiwiKDAsMSkifSc6OnRpZFtdKSkKKygyIHJvd3MpCisKK1NF TEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gJygwLDIpJyBPUiAnKDAsMSkn ID0gY3RpZDsKKyBjdGlkICB8IGlkIAorLS0tLS0tLSstLS0tCisgKDAsMSkgfCAgMQorICgwLDIp IHwgIDIKKygyIHJvd3MpCisKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlk ID0gJygwLDIpJyBPUiAnKDAsMSknID0gY3RpZDsKKyAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBUaWQgU2NhbiBvbiB0aWRzY2FuCi0gICBU SUQgQ29uZDogKChjdGlkID0gJygwLDIpJzo6dGlkKSBPUiAoJygwLDEpJzo6dGlkID0gY3RpZCkp CisgICBUSUQgQ29uZDogKGN0aWQgPSBBTlkgKCd7IigwLDIpIiwiKDAsMSkifSc6OnRpZFtdKSkK ICgyIHJvd3MpCiAKIFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gJygw LDIpJyBPUiAnKDAsMSknID0gY3RpZDsKQEAgLTU2LDYgKzcyLDcgQEAgU0VMRUNUIGN0aWQsICog RlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAnKDAsMiknIE9SICcoMCwxKScgPSBjdGlkOwogICgw LDIpIHwgIDIKICgyIHJvd3MpCiAKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKIC0t IGN0aWQgPSBTY2FsYXJBcnJheU9wIC0gaW1wbGVtZW50ZWQgYXMgdGlkc2NhbgogRVhQTEFJTiAo Q09TVFMgT0ZGKQogU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSBBTlko QVJSQVlbJygwLDEpJywgJygwLDIpJ106OnRpZFtdKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVf aW5kZXguc3FsCmluZGV4IGQ0OWNlOWYzMDA3Li41NmZkZTE1YmMxNSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9jcmVhdGVfaW5kZXguc3FsCkBAIC03MzcsNiArNzM3LDQxIEBAIFNFTEVDVCBjb3VudCgq KSBGUk9NIHRlbmsxCiBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQogICBXSEVSRSBodW5kcmVk ID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOwogCitTRVQgZW5hYmxl X29yX3RyYW5zZm9ybWF0aW9uID0gb247CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBG Uk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVu dGhvdXMgPSAzIE9SIHRlbnRob3VzID0gNDIpOworU0VMRUNUICogRlJPTSB0ZW5rMQorICBXSEVS RSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMyBPUiB0ZW50 aG91cyA9IDQyKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00g dGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2Fu ZCA9IDk5KTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0 MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7CitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5E ICh0aG91c2FuZCA8IDQyIE9SIHRob3VzYW5kIDwgOTkgT1IgNDMgPiB0aG91c2FuZCBPUiA0MiA+ IHRob3VzYW5kKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00g dGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91 cyA9IDMpIE9SIHRob3VzYW5kID0gNDE7CitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBX SEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMykgT1Ig dGhvdXNhbmQgPSA0MTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZS T00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91 c2FuZCA9IDk5IE9SIHRlbnRob3VzIDwgMikgT1IgdGhvdXNhbmQgPSA0MTsKK1NFTEVDVCBjb3Vu dCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIg T1IgdGhvdXNhbmQgPSA5OSBPUiB0ZW50aG91cyA8IDIpIE9SIHRob3VzYW5kID0gNDE7CisKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1 bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA0MSBPUiB0aG91c2Fu ZCA9IDk5IEFORCB0ZW50aG91cyA9IDIpOworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAg V0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDQxIE9S IHRob3VzYW5kID0gOTkgQU5EIHRlbnRob3VzID0gMik7CitSRVNFVCBlbmFibGVfb3JfdHJhbnNm b3JtYXRpb247CisKIC0tCiAtLSBDaGVjayBiZWhhdmlvciB3aXRoIGR1cGxpY2F0ZSBpbmRleCBj b2x1bW4gY29udGVudHMKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2lu LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsCmluZGV4IGM0YzZjN2I4YmEyLi4x NjYzNjA4MDQzNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbi5zcWwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbi5zcWwKQEAgLTE0MDgsNiArMTQwOCwxNiBAQCBl eHBsYWluIChjb3N0cyBvZmYpCiBzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9u CiAgIChhLnVuaXF1ZTEgPSAxIGFuZCBiLnVuaXF1ZTEgPSAyKSBvcgogICAoKGEudW5pcXVlMiA9 IDMgb3IgYS51bmlxdWUyID0gNykgYW5kIGIuaHVuZHJlZCA9IDQpOworU0VUIGVuYWJsZV9vcl90 cmFuc2Zvcm1hdGlvbiA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbSB0 ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgorICAoYS51bmlxdWUxID0gMSBhbmQgYi51bmlxdWUxID0g Mikgb3IKKyAgKChhLnVuaXF1ZTIgPSAzIG9yIGEudW5pcXVlMiA9IDcpIGFuZCBiLmh1bmRyZWQg PSA0KTsKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRl bmsxIGIgb24KKyAgKGEudW5pcXVlMSA8IDIwIG9yIGEudW5pcXVlMSA9IDMgb3IgYS51bmlxdWUx ID0gMSBhbmQgYi51bmlxdWUxID0gMikgb3IKKyAgKChhLnVuaXF1ZTIgPSAzIG9yIGEudW5pcXVl MiA9IDcpIGFuZCBiLmh1bmRyZWQgPSA0KTsKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlv bjsKIAogLS0KIC0tIHRlc3QgcGxhY2VtZW50IG9mIG1vdmFibGUgcXVhbHMgaW4gYSBwYXJhbWV0 ZXJpemVkIGpvaW4gdHJlZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0 aW9uX3BydW5lLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwK aW5kZXggYTA5YjI3ZDgyMGMuLjk3MTdjOGM4MzVjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Bh cnRpdGlvbl9wcnVuZS5zcWwKQEAgLTIxLDYgKzIxLDEyIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikg c2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIGlzIG5vdCBudWxsOwogZXhwbGFpbiAoY29zdHMgb2Zm KSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgaXMgbnVsbDsKIGV4cGxhaW4gKGNvc3RzIG9mZikg c2VsZWN0ICogZnJvbSBscCB3aGVyZSBhID0gJ2EnIG9yIGEgPSAnYyc7CiBleHBsYWluIChjb3N0 cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBub3QgbnVsbCBhbmQgKGEgPSAnYScg b3IgYSA9ICdjJyk7CisKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK2V4cGxh aW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhID0gJ2EnIG9yIGEgPSAnYyc7 CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBub3QgbnVs bCBhbmQgKGEgPSAnYScgb3IgYSA9ICdjJyk7CitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRp b247CisKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIDw+ICdn JzsKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIDw+ICdhJyBh bmQgYSA8PiAnZCc7CiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUg YSBub3QgaW4gKCdhJywgJ2QnKTsKQEAgLTk5LDYgKzEwNSwyMiBAQCBleHBsYWluIChjb3N0cyBv ZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPiAxIGFuZCBhID49MTU7CS8qIHJscDMgb253 YXJkcywgaQogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0g MSBhbmQgYSA9IDM7CS8qIGVtcHR5ICovCiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZy b20gcmxwIHdoZXJlIChhID0gMSBhbmQgYSA9IDMpIG9yIChhID4gMSBhbmQgYSA9IDE1KTsKIAor CitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitleHBsYWluIChjb3N0cyBvZmYp IHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIG9yIGEgPSA3OworZXhwbGFpbiAoY29zdHMg b2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBvciBiID0gJ2FiJzsKK2V4cGxhaW4g KGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA+IDIwIGFuZCBhIDwgMjc7Citl eHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAyOTsKK2V4cGxh aW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA+PSAyOTsKK2V4cGxhaW4g KGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA8IDEgb3IgKGEgPiAyMCBhbmQg YSA8IDI1KTsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9 IDIwIG9yIGEgPSA0MDsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAzIHdo ZXJlIGEgPSAyMDsgICAvKiBlbXB0eSAqLworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBm cm9tIHJscCB3aGVyZSBhID4gMSBhbmQgYSA9IDEwOwkvKiBvbmx5IGRlZmF1bHQgKi8KK2V4cGxh aW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA+IDEgYW5kIGEgPj0xNTsJ LyogcmxwMyBvbndhcmRzLCBpbmNsdWRpbmcgZGVmYXVsdCAqLworZXhwbGFpbiAoY29zdHMgb2Zm KSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBhbmQgYSA9IDM7CS8qIGVtcHR5ICovCitl eHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIChhID0gMSBhbmQgYSA9 IDMpIG9yIChhID4gMSBhbmQgYSA9IDE1KTsKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlv bjsKKwogLS0gbXVsdGktY29sdW1uIGtleXMKIGNyZWF0ZSB0YWJsZSBtYzNwIChhIGludCwgYiBp bnQsIGMgaW50KSBwYXJ0aXRpb24gYnkgcmFuZ2UgKGEsIGFicyhiKSwgYyk7CiBjcmVhdGUgdGFi bGUgbWMzcF9kZWZhdWx0IHBhcnRpdGlvbiBvZiBtYzNwIGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC90aWRzY2FuLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Rp ZHNjYW4uc3FsCmluZGV4IDMxM2UwZmI5YjY3Li4wNDk5YmVkYjllYiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvdGlkc2Nhbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv dGlkc2Nhbi5zcWwKQEAgLTIyLDYgKzIyLDEyIEBAIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVD VCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gJygwLDIpJyBPUiAnKDAsMSknID0g Y3RpZDsKIFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gJygwLDIpJyBP UiAnKDAsMSknID0gY3RpZDsKIAorU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9uOwor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0 aWQgPSAnKDAsMiknIE9SICcoMCwxKScgPSBjdGlkOworU0VMRUNUIGN0aWQsICogRlJPTSB0aWRz Y2FuIFdIRVJFIGN0aWQgPSAnKDAsMiknIE9SICcoMCwxKScgPSBjdGlkOworUkVTRVQgZW5hYmxl X29yX3RyYW5zZm9ybWF0aW9uOworCiAtLSBjdGlkID0gU2NhbGFyQXJyYXlPcCAtIGltcGxlbWVu dGVkIGFzIHRpZHNjYW4KIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBjdGlkLCAqIEZST00g dGlkc2NhbiBXSEVSRSBjdGlkID0gQU5ZKEFSUkFZWycoMCwxKScsICcoMCwyKSddOjp0aWRbXSk7 CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGNjMzYxMWU2MDY4Li5mNGI2ZmVlODkzMyAx MDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTE2NTYsNiArMTY1Niw4IEBAIE51bWVyaWNW YXIKIE9NX3VpbnQzMgogT1AKIE9TQVBlckdyb3VwU3RhdGUKK09yQ2xhdXNlR3JvdXBFbnRyeQor T3JDbGF1c2VHcm91cEtleQogT1NBUGVyUXVlcnlTdGF0ZQogT1NJbmZvCiBPU1NMQ2lwaGVyCi0t IAoyLjM5LjMgKEFwcGxlIEdpdC0xNDUpCgo= --00000000000091748f0613133755--