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 1uzhux-006LgB-G3 for pgsql-hackers@arkaria.postgresql.org; Fri, 19 Sep 2025 20:41:20 +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 1uzhuv-009QZC-AA for pgsql-hackers@arkaria.postgresql.org; Fri, 19 Sep 2025 20:41:17 +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 1uzhuu-009QYz-Ew for pgsql-hackers@lists.postgresql.org; Fri, 19 Sep 2025 20:41:16 +0000 Received: from mail-pj1-x1043.google.com ([2607:f8b0:4864:20::1043]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uzhuo-001KYg-0D for pgsql-hackers@postgresql.org; Fri, 19 Sep 2025 20:41:15 +0000 Received: by mail-pj1-x1043.google.com with SMTP id 98e67ed59e1d1-32ee4817c43so1919930a91.0 for ; Fri, 19 Sep 2025 13:41:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1758314469; x=1758919269; 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=l5vQ6HWZsVXwWw/dKi0cxoMzZBA1Df4K3hwzEyztO6M=; b=kX/qm7hu79cMCNNf1T4V9rWqdJJNFzhlFMsymtmhID9SDbWg2hFPx2xgT8cT/PN2H+ DDd2VUEAma5/LsjEP0wBCHFCTMgXRK4VYGhOaoW2trjdLRbWd3hwisVUJ8MaqjOrNQd7 wAxj7gJjIUa1RalGovJ3HaKGkulnxr/dILTM3U2b+3ukZPZNB3+t8e3xhAiP0X0ux6Kk emMZAjJhr+zyqkbpD3pqvNakTgufEwJxvoI8tON1683E0COml73+CGN8zEj/p0xo1Dd1 GGovRKCTaQImYAQICFHAq18iQtWOM9bYgN0LfdSgjAiIaXkwtRpL2lM8ZpUFefenTRn8 5X1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758314469; x=1758919269; 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=l5vQ6HWZsVXwWw/dKi0cxoMzZBA1Df4K3hwzEyztO6M=; b=LiEJ9kuOOpLt58DAF4R+lLJiBUjTxbwCp83RYvkdUYcTHsR19T0Tpyb4a9wzx1TrLQ d8aaB6eElH4efGhkoYLl2+mbRJ7JuKYeMCSLvY3IwQOg2wkYqwkaNBPPMhv4HkrU9FXS EYslvjt66nKHln4FcTmT/H7uGNIMTdjEWESGRma/cdYnltewZQ3BQi5BSSS776b/T4K2 Jywsx+Lq6XCTN3oErX4FvPiQ0qpR/eWTsb/K2lF0T8n0HxWAyjVnAF6FSmVhFkrvsC6m EhIeBHx7FquKl+yk1EHO1MQA5H8QTKVezrAPBw0/SRBWx8zb8VbE8PNPcG4G5Dak5xM8 MBHQ== X-Gm-Message-State: AOJu0Yxtnt1ovVPi3uRUPdgzj5R8bjuH1hNuIOszw/wxgosnq+a6RiiX PCKuUZnFEVuRHUyNXrzP8AbMDl7V4i6C+5mpHE/Fg7P//Vb5Q8+fnQLTr579g7cp5AXGpfuQMni sm2wfYw2Ygqwe+Poihyk3ilfK4bknty4wNiV8MfvaOA== X-Gm-Gg: ASbGnct6SYGhxWhe/zDkFJ65JnY9qdfuP1lg6KRP70+cofrOBkxL5hraLL8leKpMWuy 4tEaxtVX7GswX3yueul00MIVPSJa9FS1DRhKsfwudr8j6yaNJX6nYXakm1Xc0pLONooEaW9edI9 cVCsepCTz9JRH9MsrWKLGLareekfMn3K9UUSc8YBcuqI7j+6k9oxSN6G1tBkRAcuG0hZBYFiLpo fE6lMln X-Google-Smtp-Source: AGHT+IFKiwT1BPW6qGLD+sRJFE+LriHUPgOKZPqwoVnNPSFqOxJyShXnUUQP4OiZFc7fEGNyYAT6kQfhq45TW8RaEr8= X-Received: by 2002:a17:90b:4d:b0:330:9c26:bf3d with SMTP id 98e67ed59e1d1-3309c26cb10mr4938240a91.16.1758314469161; Fri, 19 Sep 2025 13:41:09 -0700 (PDT) MIME-Version: 1.0 References: <21fa36b4-6d56-4556-b524-9e3955b922c8@eisentraut.org> <290418A2-3A9B-4304-AAAD-4A40CFF1CB93@gmail.com> <98C6F445-773B-4C82-8198-7F5CD56D5252@gmail.com> <052E941B-C905-448F-AE3A-753C12AAC938@gmail.com> <8CB9A1EC-2D14-44FF-A600-6669353A14C2@gmail.com> In-Reply-To: From: Alexandra Wang Date: Fri, 19 Sep 2025 13:40:32 -0700 X-Gm-Features: AS18NWDDv7_ju31BssppHh0aHZO43ycBYAKVkLdX-H6a0kTZQaUPdVSytbGItr0 Message-ID: Subject: Re: SQL:2023 JSON simplified accessor support To: PostgreSQL Hackers Cc: Nikita Glukhov , jian he , Nikita Malakhov , Vik Fearing , Mark Dilger , Matheus Alcantara , Peter Eisentraut , Andrew Dunstan , "David E. Wheeler" , Chao Li Content-Type: multipart/mixed; boundary="00000000000056bfa5063f2d7dce" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000056bfa5063f2d7dce Content-Type: multipart/alternative; boundary="00000000000056bfa4063f2d7dcc" --00000000000056bfa4063f2d7dcc Content-Type: text/plain; charset="UTF-8" Hi there, I've attached v20. It has the following changes: 1. New 0001: It adds test coverage for single-argument functions and casting for jsonb expressions. This ensures that the relevant behavior changes become visible in 0005 when field access via dot-notation is introduced. Specifically, once member access through dot-notation is enabled for jsonb, we can no longer write single-argument functions (including casts) in dot form for jsonb. For example: Before 0005: select ('{"a":1}'::jsonb).jsonb_typeof; jsonb_typeof -------------- object (1 row) select ('[{"name": "alice"}, {"name": "bob"}]'::jsonb).name; name -------------------------------------- [{"name": "alice"}, {"name": "bob"}] (1 row) After 0005: select ('{"a":1}'::jsonb).jsonb_typeof; jsonb_typeof -------------- (1 row) select ('[{"name": "alice"}, {"name": "bob"}]'::jsonb).name; name ------------------ ["alice", "bob"] (1 row) In the meanwhile, these functions still return correct results through standard syntax: test=# select jsonb_typeof(('{"a":1}'::jsonb)); jsonb_typeof -------------- object (1 row) test=# select ('[{"name": "alice"}, {"name": "bob"}]'::jsonb)::name; name -------------------------------------- [{"name": "alice"}, {"name": "bob"}] (1 row) I don't consider this behavior change a major issue, because the dot-form for single-argument functions is not standard SQL and seems to be PostgreSQL-specific. Still, it's worth highlighting here so users aren't surprised. 2. Refactored 0002: It combines and refactors v19-0001 and v19-0002. Instead of changing the existing transform() callback in SubscriptRoutines, it now introduces an additional callback, transform_partial(). This alternative transform method, used by jsonb, is more flexible: it accepts a wider range of indirection node types and can transform only a prefix of the indirection list. This avoids breaking compatibility for arrays, hstore, and external data types that supports subscripting. 3. 0003 and 0004 stay unchanged. They are both small and can be squashed into 0005. I leave them as-is for now for easier review. 4. Added two additional tests in 0005 for assignments using jsonb dot-notation, showing explicitly that assignment is not yet supported. 5. Removed 0006 (array slicing) and 0007 (wildcard) from the previous versions, as they need additional work. My immediate goal is to first reach consensus on the dot-notation implementation. Best, Alex --00000000000056bfa4063f2d7dcc Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi there,

I've attached v20. It has= the following changes:

1. New 0001: It adds test = coverage for single-argument functions and
casting for jsonb expressions= . This ensures that the relevant behavior
changes become visible in 0005= when field access via dot-notation is
introduced.

<= div>Specifically, once member access through dot-notation is enabled forjsonb, we can no longer write single-argument functions (including
cast= s) in dot form for jsonb. For example:

Before = 0005:=C2=A0

select ('{"a":1}'::j= sonb).jsonb_typeof;
=C2=A0 jsonb_typeof
=C2=A0--------------=C2=A0object
(1 row)

select ('[{&q= uot;name": "alice"}, {"name": "bob"}]= 9;::jsonb).name;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0name
--------------------------------------
[{"nam= e": "alice"}, {"name": "bob"}]
(1 row)

After 0005:

sele= ct ('{"a":1}'::jsonb).jsonb_typeof;
=C2=A0 json= b_typeof
=C2=A0--------------

(1 row)

se= lect ('[{"name": "alice"}, {"name": "= ;bob"}]'::jsonb).name;
=C2=A0 =C2=A0 =C2=A0 =C2=A0name
-----= -------------
=C2=A0["alice", "bob"]
=C2=A0(1 row= )

In the meanwhile, these functions still return correc= t results through
standard syntax:

test=3D# =C2=A0select js= onb_typeof(('{"a":1}'::jsonb));
=C2=A0jsonb_typ= eof
--------------
=C2=A0object
(1 row)
test=3D# =C2=A0s= elect ('[{"name": "alice"}, {"name": &quo= t;bob"}]'::jsonb)::name;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0name
--------------------------------------
= =C2=A0[{"name": "alice"}, {"name": "bob&= quot;}]
(1 row)

I don't consider this behav= ior change a major issue, because the
dot-form for single-argument funct= ions is not standard SQL and seems
to be PostgreSQL-specific. Still, it&= #39;s worth highlighting here so
users aren't surprised.

2. R= efactored 0002: It combines and refactors v19-0001 and v19-0002.
Instead= of changing the existing transform() callback in
SubscriptRoutines, it = now introduces an additional callback,
transform_partial(). This alterna= tive transform method, used by jsonb,
is more flexible: it accepts a wid= er range of indirection node types
and can transform only a prefix of th= e indirection list. This avoids
breaking compatibility for arrays, hstor= e, and external data types
that supports subscripting.

3. 0003 an= d 0004 stay unchanged. They are both small and can be squashed
into 0005= . I leave them as-is for now for easier review.

4. Added two additio= nal tests in 0005 for assignments using jsonb
dot-notation, showing expl= icitly that assignment is not yet supported.

5. Removed 0006 (array = slicing) and 0007 (wildcard) from the previous
versions, as they need ad= ditional work. My immediate goal is to first
reach consensus on the dot-= notation implementation.

Best,
Alex<= /div>

--00000000000056bfa4063f2d7dcc-- --00000000000056bfa5063f2d7dce Content-Type: application/octet-stream; name="v20-0005-Implement-read-only-dot-notation-for-jsonb.patch" Content-Disposition: attachment; filename="v20-0005-Implement-read-only-dot-notation-for-jsonb.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfragwvl1 RnJvbSAwODk2NzA4NzdmNzYyYzE0MGQyNGFmMjdiZTI3YmQ3ZGJjY2JlODgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdt YWlsLmNvbT4KRGF0ZTogVHVlLCA4IEp1bCAyMDI1IDIyOjE4OjA3IC0wNzAwClN1YmplY3Q6IFtQ QVRDSCB2MjAgNS81XSBJbXBsZW1lbnQgcmVhZC1vbmx5IGRvdCBub3RhdGlvbiBmb3IganNvbmIK ClRoaXMgcGF0Y2ggaW50cm9kdWNlcyBKU09OQiBtZW1iZXIgYWNjZXNzIHVzaW5nIGRvdCBub3Rh dGlvbiB0aGF0CmFsaWducyB3aXRoIHRoZSBKU09OIHNpbXBsaWZpZWQgYWNjZXNzb3Igc3BlY2lm aWVkIGluIFNRTDoyMDIzLgoKRXhhbXBsZXM6CgotLSBTZXR1cApjcmVhdGUgdGFibGUgdCh4IGlu dCwgeSBqc29uYik7Cmluc2VydCBpbnRvIHQgc2VsZWN0IDEsICd7ImEiOiAxLCAiYiI6IDQyfSc6 Ompzb25iOwppbnNlcnQgaW50byB0IHNlbGVjdCAxLCAneyJhIjogMiwgImIiOiB7ImMiOiA0Mn19 Jzo6anNvbmI7Cmluc2VydCBpbnRvIHQgc2VsZWN0IDEsICd7ImEiOiAzLCAiYiI6IHsiYyI6ICI0 MiJ9LCAiZCI6WzExLCAxMl19Jzo6anNvbmI7CgotLSBFeGlzdGluZyBzeW50YXggaW4gUG9zdGdy ZVNRTCB0aGF0IHByZWRhdGVzIHRoZSBTUUwgc3RhbmRhcmQ6CnNlbGVjdCAodC55KS0+J2InIGZy b20gdDsKc2VsZWN0ICh0LnkpLT4nYictPidjJyBmcm9tIHQ7CnNlbGVjdCAodC55KS0+J2QnLT4w IGZyb20gdDsKCi0tIEpTT04gc2ltcGxpZmllZCBhY2Nlc3NvciBzcGVjaWZpZWQgYnkgdGhlIFNR TCBzdGFuZGFyZDoKc2VsZWN0ICh0LnkpLmIgZnJvbSB0OwpzZWxlY3QgKHQueSkuYi5jIGZyb20g dDsKc2VsZWN0ICh0LnkpLmRbMF0gZnJvbSB0OwoKVGhlIFNRTCBzdGFuZGFyZCBzdGF0ZXMgdGhh dCBzaW1wbGlmaWVkIGFjY2VzcyBpcyBlcXVpdmFsZW50IHRvOgpKU09OX1FVRVJZIChWRVAsICds YXggJC5KQycgV0lUSCBDT05ESVRJT05BTCBBUlJBWSBXUkFQUEVSIE5VTEwgT04gRU1QVFkgTlVM TCBPTiBFUlJPUikKCndoZXJlOgogIFZFUCA9IDx2YWx1ZSBleHByZXNzaW9uIHByaW1hcnk+CiAg SkMgPSA8SlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29yIG9wIGNoYWluPgoKRm9yIGV4YW1wbGUsIHRo ZSBKU09OX1FVRVJZIGVxdWl2YWxlbnRzIG9mIHRoZSBhYm92ZSBxdWVyaWVzIGFyZToKCnNlbGVj dCBqc29uX3F1ZXJ5KHksICdsYXggJC5iJyBXSVRIIENPTkRJVElPTkFMIEFSUkFZIFdSQVBQRVIg TlVMTCBPTiBFTVBUWSBOVUxMIE9OIEVSUk9SKSBmcm9tIHQ7CnNlbGVjdCBqc29uX3F1ZXJ5KHks ICdsYXggJC5iLmMnIFdJVEggQ09ORElUSU9OQUwgQVJSQVkgV1JBUFBFUiBOVUxMIE9OIEVNUFRZ IE5VTEwgT04gRVJST1IpIGZyb20gdDsKc2VsZWN0IGpzb25fcXVlcnkoeSwgJ2xheCAkLmRbMF0n IFdJVEggQ09ORElUSU9OQUwgQVJSQVkgV1JBUFBFUiBOVUxMIE9OIEVNUFRZIE5VTEwgT04gRVJS T1IpIGZyb20gdDsKCkltcGxlbWVudGF0aW9uIGRldGFpbHM6CgpUaGlzIHBhdGNoIGV4dGVuZHMg dGhlIGV4aXN0aW5nIGNvbnRhaW5lciBzdWJzY3JpcHRpbmcgaW50ZXJmYWNlIHRvCnN1cHBvcnQg Y29udGFpbmVyLXNwZWNpZmljIGluZm9ybWF0aW9uLCBuYW1lbHkgYSBKU09OUGF0aCBleHByZXNz aW9uCmZvciBqc29uYi4KCkR1cmluZyBxdWVyeSB0cmFuc2Zvcm1hdGlvbiwgaWYgZG90LW5vdGF0 aW9uIGlzIHByZXNlbnQsIGEgSlNPTlBhdGgKZXhwcmVzc2lvbiBpcyBjb25zdHJ1Y3RlZCB0byBy ZXByZXNlbnQgdGhlIGFjY2VzcyBjaGFpbi4KClRoZW4gZHVyaW5nIGV4ZWN1dGlvbiwgaWYgYSBK U09OUGF0aCBleHByZXNzaW9uIGlzIHByZXNlbnQgaW4KSnNvbmJTdWJXb3Jrc3BhY2UsIGV4ZWN1 dGVzIGl0IHZpYSBKc29uUGF0aFF1ZXJ5KCkuCgpOb3RlIHRoYXQgd2UgY2Fubm90IHNpbXBseSBy ZXdyaXRlIHRoZSBhY2Nlc3NvcnMgaW50byBKU09OX1FVRVJZKCkKZHVyaW5nIHRyYW5zZm9ybWF0 aW9uLCBiZWNhdXNlIHRoZSBvcmlnaW5hbCBxdWVyeSBzdHJ1Y3R1cmUgbXVzdCBiZQpwcmVzZXJ2 ZWQgZm9yIEVYUExBSU4gYW5kIENSRUFURSBWSUVXLgoKQ28tYXV0aG9yZWQtYnk6IE5pa2l0YSBH bHVraG92IDxnbHVraG92Lm4uYUBnbWFpbC5jb20+CkNvLWF1dGhvcmVkLWJ5OiBBbGV4YW5kcmEg V2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJldyBE dW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PgpSZXZpZXdlZC1ieTogTWF0aGV1cyBBbGNhbnRh cmEgPG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IE1hcmsgRGlsZ2VyIDxt YXJrLmRpbGdlckBlbnRlcnByaXNlZGIuY29tPgpSZXZpZXdlZC1ieTogSmlhbiBIZSA8amlhbi51 bml2ZXJzYWxpdHlAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogVmlrIEZlYXJpbmcgPHZpa0Bwb3N0 Z3Jlc2ZyaWVuZHMub3JnPgpSZXZpZXdlZC1ieTogTmlraXRhIE1hbGFraG92IDxodWt1dG9jQGdt YWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFBldGVyIEVpc2VudHJhdXQgPHBldGVyQGVpc2VudHJhdXQu b3JnPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KVGVzdGVk LWJ5OiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5sPgotLS0KIGRvYy9zcmMv c2dtbC9qc29uLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICB8IDMwMSArKysrKysrKysrKysK IHNyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dCAgICAgICAgICB8ICAgNCArLQog c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyAgICAgICAgICAgICAgIHwgIDgxICsrLS0K IHNyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAgICAgICAgICAgICB8ICAxMiArCiBz cmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMgICAgICAgICAgICAgfCAzMDIgKysrKysr KysrKystCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICAgICAgICAgICAgfCAg NDMgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICA1 NCArKy0KIC4uLi9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uYyAgICAgICAgICB8IDEx MiArKysrLQogLi4uL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5zdGRlcnIgICAgIHwg MTAwICsrKysKIC4uLi9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uc3Rkb3V0ICAgICB8 ICAgNyArCiBzcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpzb24ucGdjICAgICAgfCAg MzMgKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0ICAgICAgICAgICB8IDQ0 NCArKysrKysrKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbCAgICAg ICAgICAgICAgICB8IDExNCArKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg ICAgICAgICAgICAgIHwgICAxICsKIDE0IGZpbGVzIGNoYW5nZWQsIDE1MjYgaW5zZXJ0aW9ucygr KSwgODIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2pzb24uc2dtbCBi L2RvYy9zcmMvc2dtbC9qc29uLnNnbWwKaW5kZXggMjA2ZWFkYjhmN2IuLjRlNzdlOWU5NTEyIDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvanNvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9qc29u LnNnbWwKQEAgLTcxMiw2ICs3MTIsMzA3IEBAIFVQREFURSB0YWJsZV9uYW1lIFNFVCBqc29uYl9m aWVsZFsxXVsnYSddID0gJzEnOwogICA8L3BhcmE+CiAgPC9zZWN0Mj4KIAorIDxzZWN0MiBpZD0i anNvbmItc2ltcGxpZmllZC1hY2Nlc3NvciI+CisgIDx0aXRsZT5KU09OIFNpbXBsaWZpZWQgQWNj ZXNzb3I8L3RpdGxlPgorICA8cGFyYT4KKyAgIFBvc3RncmVTUUwgaW1wbGVtZW50cyB0aGUgSlNP TiBzaW1wbGlmaWVkIGFjY2Vzc29yIGFzIHNwZWNpZmllZCBpbiBTUUw6MjAyMy4KKyAgIFRoZSBT UUwgc3RhbmRhcmQgZGVmaW5lcyB0aGUgc2ltcGxpZmllZCBhY2Nlc3NvciBhcyBhIGNoYWluIG9m IG9wZXJhdGlvbnMKKyAgIHRoYXQgY2FuIGluY2x1ZGUgSlNPTiBtZW1iZXIgYWNjZXNzb3JzIChk b3Qgbm90YXRpb24gZm9yIG9iamVjdCBmaWVsZHMpCisgICBhbmQgSlNPTiBhcnJheSBhY2Nlc3Nv cnMgKGludGVnZXIgc3Vic2NyaXB0cyBmb3IgYXJyYXkgZWxlbWVudHMpLgorICAgVGhpcyBwcm92 aWRlcyBhIHN0YW5kYXJkaXplZCB3YXkgdG8gYWNjZXNzIEpTT04gZGF0YSB0aGF0IGNvbXBsZW1l bnRzCisgICBQb3N0Z3JlU1FMJ3MgcHJlLXN0YW5kYXJkIHN1YnNjcmlwdGluZyBhbmQgb3BlcmF0 b3ItYmFzZWQgYWNjZXNzIG1ldGhvZHMuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoZSBT UUw6MjAyMyBzaW1wbGlmaWVkIGFjY2Vzc29yIHN5bnRheCBpbmNsdWRlczoKKyAgIDxpdGVtaXpl ZGxpc3Q+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIDxlbXBoYXNpcz5KU09O IG1lbWJlciBhY2Nlc3Nvcjo8L2VtcGhhc2lzPiA8bGl0ZXJhbD5qc29uYl9jb2x1bW4uZmllbGRf bmFtZTwvbGl0ZXJhbD4gCisgICAgICBmb3IgYWNjZXNzaW5nIG9iamVjdCBmaWVsZHMKKyAgICAg PC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAg ICAgIDxlbXBoYXNpcz5KU09OIGFycmF5IGFjY2Vzc29yOjwvZW1waGFzaXM+IDxsaXRlcmFsPmpz b25iX2NvbHVtbltpbmRleF08L2xpdGVyYWw+IAorICAgICAgZm9yIGFjY2Vzc2luZyBhcnJheSBl bGVtZW50cyBieSBpbnRlZ2VyIGluZGV4CisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgor ICAgPC9pdGVtaXplZGxpc3Q+CisgICBUaGVzZSBjYW4gYmUgY2hhaW5lZCB0b2dldGhlcjogPGxp dGVyYWw+anNvbmJfY29sdW1uLmZpZWxkX25hbWVbMF0ubmVzdGVkX2ZpZWxkPC9saXRlcmFsPi4K KyAgIFdoZW4gZG90IG5vdGF0aW9uIGlzIHByZXNlbnQgaW4gdGhlIGFjY2Vzc29yIGNoYWluLCB0 aGUgZW50aXJlIGNoYWluIGZvbGxvd3MKKyAgIFNRTDoyMDIzIHNlbWFudGljcyB3aXRoIGxheCBt b2RlIGJlaGF2aW9yIGFuZCBjb25kaXRpb25hbCBhcnJheSB3cmFwcGVyLgorICA8L3BhcmE+CisK KyAgPHBhcmE+CisgICBUaGUgSlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29yIGlzIHNlbWFudGljYWxs eSBlcXVpdmFsZW50IHRvIHVzaW5nCisgICA8ZnVuY3Rpb24+SlNPTl9RVUVSWTwvZnVuY3Rpb24+ IHdpdGggdGhlIDxsaXRlcmFsPmxheDwvbGl0ZXJhbD4gbW9kZSBhbmQKKyAgIDxsaXRlcmFsPldJ VEggQ09ORElUSU9OQUwgQVJSQVkgV1JBUFBFUiBOVUxMIE9OIEVNUFRZIE5VTEwgT04gRVJST1I8 L2xpdGVyYWw+CisgICBvcHRpb25zLiBGb3IgZXhhbXBsZSwgPGxpdGVyYWw+anNvbl9jb2wuZmll bGQ8L2xpdGVyYWw+IGlzIGVxdWl2YWxlbnQgdG8KKyAgIDxsaXRlcmFsPkpTT05fUVVFUlkoanNv bl9jb2wsICdsYXggJC5maWVsZCcgV0lUSCBDT05ESVRJT05BTCBBUlJBWSBXUkFQUEVSIE5VTEwg T04gRU1QVFkgTlVMTCBPTiBFUlJPUik8L2xpdGVyYWw+LgorICAgVGhlIGNvbmRpdGlvbmFsIGFy cmF5IHdyYXBwZXIgd3JhcHMgbXVsdGlwbGUgcmVzdWx0cyBpbiBhbiBhcnJheQorICAgYnV0IGxl YXZlcyBhIHNpbmdsZSByZXN1bHQgYXMtaXMgd2l0aG91dCB3cmFwcGluZy4KKyAgPC9wYXJhPgor CisgIDxwYXJhPgorICAgRXhhbXBsZXMgb2YgSlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29yIHN5bnRh eDoKKworPHByb2dyYW1saXN0aW5nPgorCistLSBCYXNpYyBmaWVsZCBhY2Nlc3MKK1NFTEVDVCAo J3siY29sb3IiOiAicmVkIiwgInJnYiI6IFsyNTUsIDAsIDBdfSc6Ompzb25iKS5jb2xvcjsKKwor LS0gTmVzdGVkIGZpZWxkIGFjY2VzcworU0VMRUNUICgneyJ1c2VyIjogeyJwcm9maWxlIjogeyJz ZXR0aW5ncyI6IHsidGhlbWUiOiAiZGFyayJ9fX19Jzo6anNvbmIpLnVzZXIucHJvZmlsZS5zZXR0 aW5ncy50aGVtZTsKKworLS0gSlNPTiBtZW1iZXIgYWNjZXNzb3IgZm9sbG93ZWQgYnkgSlNPTiBh cnJheSBhY2Nlc3NvciAoYm90aCBwYXJ0IG9mIHNpbXBsaWZpZWQgYWNjZXNzb3IpCitTRUxFQ1Qg KCd7InJlcGVydG9pcmUiOiBbeyJ0aXRsZSI6ICJTd2FuIExha2UifSwgeyJ0aXRsZSI6ICJUaGUg TnV0Y3JhY2tlciJ9XX0nOjpqc29uYikucmVwZXJ0b2lyZVsxXS50aXRsZTsKKworLS0gSW4gV0hF UkUgY2xhdXNlcworU0VMRUNUICogRlJPTSB1c2VycyBXSEVSRSBwcm9maWxlLnByZWZlcmVuY2Vz LnRoZW1lID0gJyJkYXJrIic7CisKKy0tIENvbXBhcmlzb24gd2l0aCBvdGhlciBhY2Nlc3MgbWV0 aG9kcyAoTk9UIGVxdWl2YWxlbnQgLSBkaWZmZXJlbnQgc2VtYW50aWNzKToKK1NFTEVDVCBqc29u X2NvbFsnYWRkcmVzcyddWydjaXR5J107ICAgICAgICAgICAtLSBTdWJzY3JpcHRpbmcKK1NFTEVD VCBqc29uX2NvbC0+J2FkZHJlc3MnLT4nY2l0eSc7ICAgICAgICAgICAtLSBPcGVyYXRvciAgCitT RUxFQ1QganNvbl9jb2wuYWRkcmVzcy5jaXR5OyAgICAgICAgICAgICAgICAgLS0gU2ltcGxpZmll ZCBhY2Nlc3NvciAoZGlmZmVyZW50IGJlaGF2aW9yKQorPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9w YXJhPgorCisgIDxzZWN0MyBpZD0ianNvbmItYWNjZXNzLW1ldGhvZC1jb21wYXJpc29uIj4KKyAg IDx0aXRsZT5Db21wYXJpc29uIG9mIEpTT04gQWNjZXNzIE1ldGhvZHM8L3RpdGxlPgorICAgPHBh cmE+CisgICAgUG9zdGdyZVNRTCBwcm92aWRlcyB0aHJlZSBkaWZmZXJlbnQgYXBwcm9hY2hlcyBm b3IgYWNjZXNzaW5nIEpTT04gZGF0YSwgZWFjaCB3aXRoCisgICAgZGlzdGluY3Qgc2VtYW50aWNz IGFuZCBiZWhhdmlvcnM6CisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIDxlbXBoYXNpcz5T UUw6MjAyMyBKU09OIFNpbXBsaWZpZWQgQWNjZXNzb3I6PC9lbXBoYXNpcz4KKyAgICA8aXRlbWl6 ZWRsaXN0PgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBTeW50YXg6IDxs aXRlcmFsPmpzb25fY29sLmZpZWxkX25hbWU8L2xpdGVyYWw+IChtZW1iZXIgYWNjZXNzb3IpIGFu ZCAKKyAgICAgICA8bGl0ZXJhbD5qc29uX2NvbFtpbmRleF08L2xpdGVyYWw+IChhcnJheSBhY2Nl c3NvciB3aGVuIHVzZWQgd2l0aCBkb3Qgbm90YXRpb24pCisgICAgICA8L3BhcmE+CisgICAgIDwv bGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFN0YW5kYXJk IFNRTDoyMDIzIGJlaGF2aW9yIHdpdGggPGxpdGVyYWw+bGF4PC9saXRlcmFsPiBtb2RlIHNlbWFu dGljcworICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgICA8bGlzdGl0ZW0+Cisg ICAgICA8cGFyYT4KKyAgICAgICBBdXRvbWF0aWMgYXJyYXkgd3JhcHBpbmcvdW53cmFwcGluZyBh cyBzcGVjaWZpZWQgaW4gdGhlIFNRTCBzdGFuZGFyZAorICAgICAgPC9wYXJhPgorICAgICA8L2xp c3RpdGVtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBXaGVuIGFjY2Vz c2luZyBhIGZpZWxkIGZyb20gYW4gYXJyYXksIG9wZXJhdGVzIG9uIGVhY2ggYXJyYXkgZWxlbWVu dCBhbmQgd3JhcHMgcmVzdWx0cyBpbiBhbiBhcnJheTsKKyAgICAgICB3aGVuIGFjY2Vzc2luZyBh biBhcnJheSBpbmRleCBmcm9tIGEgbm9uLWFycmF5LCB3cmFwcyB0aGUgdmFsdWUgYXMgYW4gYXJy YXkgZmlyc3QKKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICAgPGxpc3RpdGVt PgorICAgICAgPHBhcmE+CisgICAgICAgVHJpZ2dlcmVkIHdoZW4gZG90IG5vdGF0aW9uIGlzIHBy ZXNlbnQgYW55d2hlcmUgaW4gdGhlIGFjY2Vzc29yIGNoYWluCisgICAgICA8L3BhcmE+CisgICAg IDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFJlYWQt b25seSBhY2Nlc3MKKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L2l0ZW1p emVkbGlzdD4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgPGVtcGhhc2lzPlByZS1zdGFu ZGFyZCBKU09OQiBTdWJzY3JpcHRpbmc6PC9lbXBoYXNpcz4KKyAgICA8aXRlbWl6ZWRsaXN0Pgor ICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBTeW50YXg6IDxsaXRlcmFsPmpz b25fY29sWydmaWVsZF9uYW1lJ108L2xpdGVyYWw+ICh0ZXh0LWJhc2VkKSBhbmQgCisgICAgICAg PGxpdGVyYWw+anNvbl9jb2xbaW5kZXhdPC9saXRlcmFsPiAoaW50ZWdlci1iYXNlZCB3aGVuIG5v IGRvdCBub3RhdGlvbiBwcmVzZW50KQorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgor ICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBQb3N0Z3JlU1FMJ3Mgb3JpZ2lu YWwgSlNPTkIgc3Vic2NyaXB0aW5nIGJlaGF2aW9yIChhdmFpbGFibGUgc2luY2UgdmVyc2lvbiAx NCkKKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICAgPGxpc3RpdGVtPgorICAg ICAgPHBhcmE+CisgICAgICAgRGlyZWN0IG9iamVjdCBmaWVsZCBhbmQgYXJyYXkgZWxlbWVudCBh Y2Nlc3Mgd2l0aG91dCBhcnJheSB3cmFwcGluZy91bndyYXBwaW5nCisgICAgICA8L3BhcmE+Cisg ICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFN1 cHBvcnRzIGJvdGggcmVhZCBhbmQgd3JpdGUgb3BlcmF0aW9ucworICAgICAgPC9wYXJhPgorICAg ICA8L2xpc3RpdGVtPgorICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgPC9wYXJhPgorCisgICA8cGFy YT4KKyAgICA8ZW1waGFzaXM+QXJyb3cgT3BlcmF0b3JzOjwvZW1waGFzaXM+CisgICAgPGl0ZW1p emVkbGlzdD4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgU3ludGF4OiA8 bGl0ZXJhbD5qc29uX2NvbC0+J2ZpZWxkX25hbWUnPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+anNv bl9jb2wtPj4nZmllbGRfbmFtZSc8L2xpdGVyYWw+CisgICAgICA8L3BhcmE+CisgICAgIDwvbGlz dGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFBvc3RncmVTUUwn cyBKU09OIG9wZXJhdG9ycyB0aGF0IHdvcmsgd2l0aCBib3RoIDxsaXRlcmFsPmpzb248L2xpdGVy YWw+IGFuZCA8bGl0ZXJhbD5qc29uYjwvbGl0ZXJhbD4gdHlwZXMKKyAgICAgIDwvcGFyYT4KKyAg ICAgPC9saXN0aXRlbT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgRGly ZWN0IG9iamVjdCBmaWVsZCBhbmQgYXJyYXkgZWxlbWVudCBhY2Nlc3Mgd2l0aG91dCBhcnJheSB3 cmFwcGluZy91bndyYXBwaW5nCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAg IDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIDxsaXRlcmFsPi0+PC9saXRlcmFsPiBy ZXR1cm5zIGpzb25iLCA8bGl0ZXJhbD4tPj48L2xpdGVyYWw+IHJldHVybnMgdGV4dAorICAgICAg PC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4K KyAgICAgICBSZWFkLW9ubHkgYWNjZXNzCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+ CisgICAgPC9pdGVtaXplZGxpc3Q+CisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIDxlbXBo YXNpcz5LZXkgU2VtYW50aWMgRGlmZmVyZW5jZXM6PC9lbXBoYXNpcz4gVGhlIG1vc3QgaW1wb3J0 YW50IGRpc3RpbmN0aW9ucyBhcmUKKyAgICBob3cgdGhlc2UgbWV0aG9kcyBoYW5kbGUgbWVtYmVy IGFjY2VzcyBmcm9tIGFycmF5cyBhbmQgYXJyYXkgYWNjZXNzIGZyb20gbm9uLWFycmF5IHZhbHVl cy4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgPGVtcGhhc2lzPk1lbWJlciBBY2Nlc3Mg ZnJvbSBBcnJheXM6PC9lbXBoYXNpcz4KKzxwcm9ncmFtbGlzdGluZz4KKy0tIFNldHVwIGRhdGEK K0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgVkFMVUVTIAorICAoJ3siYnJpZ2h0bmVzcyI6IDgwfScp LCAgICAgICAgICAgICAgICAgICAgICAtLSBPYmplY3QgY2FzZQorICAoJ1t7ImJyaWdodG5lc3Mi OiA0NX0sIHsiYnJpZ2h0bmVzcyI6IDkwfV0nKTsgLS0gQXJyYXkgY2FzZQorCistLSBEaWZmZXJl bnQgYmVoYXZpb3JzOgorU0VMRUNUIGRhdGEuYnJpZ2h0bmVzcyBGUk9NIHRlc3RfdGFibGU7ICAg ICAgICAgLS0gU2ltcGxpZmllZCBhY2Nlc3NvcgorLS0gUmVzdWx0czogODAsIFs0NSwgOTBdICAo YXJyYXkgZWxlbWVudHMgdW53cmFwcGVkLCByZXN1bHRzIHdyYXBwZWQpCisKK1NFTEVDVCBkYXRh WydicmlnaHRuZXNzJ10gRlJPTSB0ZXN0X3RhYmxlOyAgICAgIC0tIFByZS1zdGFuZGFyZCBzdWJz Y3JpcHRpbmcgIAorLS0gUmVzdWx0czogODAsIE5VTEwgICAgKG5vIGFycmF5IGhhbmRsaW5nKQor CitTRUxFQ1QgZGF0YS0+J2JyaWdodG5lc3MnIEZST00gdGVzdF90YWJsZTsgICAgICAtLSBBcnJv dyBvcGVyYXRvcgorLS0gUmVzdWx0czogODAsIE5VTEwgICAgKG5vIGFycmF5IGhhbmRsaW5nKQor PC9wcm9ncmFtbGlzdGluZz4KKworICAgIEluIHRoZSBhcnJheSBjYXNlLCB0aGUgc2ltcGxpZmll ZCBhY2Nlc3NvciBhcHBsaWVzIHRoZSBmaWVsZCBhY2Nlc3MgdG8gZWFjaCBhcnJheSBlbGVtZW50 CisgICAgKHVud3JhcHBpbmcpIGFuZCBjb25kaXRpb25hbGx5IHdyYXBzIHRoZSByZXN1bHRzIGlu IGFuIGFycmF5LCB3aGlsZSBzdWJzY3JpcHRpbmcgYW5kIGFycm93IG9wZXJhdG9ycworICAgIGF0 dGVtcHQgZGlyZWN0IGZpZWxkIGFjY2VzcyBvbiB0aGUgYXJyYXkgaXRzZWxmICh3aGljaCByZXR1 cm5zIE5VTEwgc2luY2UKKyAgICBhcnJheXMgZG9uJ3QgaGF2ZSBuYW1lZCBmaWVsZHMpLgorICAg PC9wYXJhPgorCisgICA8cGFyYT4KKyAgICA8ZW1waGFzaXM+QXJyYXkgQWNjZXNzIGZyb20gT2Jq ZWN0cyAoTGF4IE1vZGUgQmVoYXZpb3IpOjwvZW1waGFzaXM+Cis8cHJvZ3JhbWxpc3Rpbmc+Cist LSBTZXR1cCBkYXRhCitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIFZBTFVFUyAoJ3sid2VhdGhlciI6 ICJzdW5ueSIsICJ0ZW1wZXJhdHVyZSI6ICI3MkYifScpOworCistLSBEaWZmZXJlbnQgYmVoYXZp b3JzIHdoZW4gYWNjZXNzaW5nIFswXSBvbiBhIG5vbi1hcnJheSB2YWx1ZToKK1NFTEVDVCBkYXRh WzBdIEZST00gdGVzdF90YWJsZTsgICAgICAgICAgICAgICAgIC0tIFNpbXBsaWZpZWQgYWNjZXNz b3IgKGxheCBtb2RlLCBpZiBkb3RzIHByZXNlbnQgZWxzZXdoZXJlKQorLS0gUmVzdWx0OiB7Indl YXRoZXIiOiAic3VubnkiLCAidGVtcGVyYXR1cmUiOiAiNzJGIn0gIChvYmplY3Qgd3JhcHBlZCBh cyBhcnJheSwgWzBdIHJldHVybnMgZW50aXJlIG9iamVjdCkKKworU0VMRUNUIGRhdGFbMF0gRlJP TSB0ZXN0X3RhYmxlOyAgICAgICAgICAgICAgICAgLS0gUHJlLXN0YW5kYXJkIHN1YnNjcmlwdGlu ZyAoc3RyaWN0IG1vZGUsIG5vIGRvdHMpCistLSBSZXN1bHQ6IE5VTEwgIChubyB3cmFwcGluZywg ZGlyZWN0IGFycmF5IGFjY2VzcyBvbiBvYmplY3QgZmFpbHMpCisKK1NFTEVDVCBkYXRhLT4wIEZS T00gdGVzdF90YWJsZTsgICAgICAgICAgICAgICAgIC0tIEFycm93IG9wZXJhdG9yIChzdHJpY3Qg bW9kZSkKKy0tIFJlc3VsdDogTlVMTCAgKG5vIHdyYXBwaW5nLCBkaXJlY3QgYXJyYXkgYWNjZXNz IG9uIG9iamVjdCBmYWlscykKKzwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgICBJbiBsYXggbW9kZSAo c2ltcGxpZmllZCBhY2Nlc3NvciksIHdoZW4gYW4gYXJyYXkgb3BlcmF0aW9uIGlzIHBlcmZvcm1l ZCBvbiBhIG5vbi1hcnJheSB2YWx1ZSwKKyAgICB0aGUgdmFsdWUgaXMgZmlyc3Qgd3JhcHBlZCBp biBhbiBhcnJheSwgdGhlbiB0aGUgb3BlcmF0aW9uIHByb2NlZWRzLiBJbiBzdHJpY3QgbW9kZSAK KyAgICAocHJlLXN0YW5kYXJkIG1ldGhvZHMpLCB0aGUgb3BlcmF0aW9uIGZhaWxzIGFuZCByZXR1 cm5zIE5VTEwuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIDxlbXBoYXNpcz5XaGVuIHRv IFVzZSBFYWNoIE1ldGhvZDo8L2VtcGhhc2lzPgorICAgIDxpdGVtaXplZGxpc3Q+CisgICAgIDxs aXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFVzZSA8ZW1waGFzaXM+U1FMOjIwMjMgc2lt cGxpZmllZCBhY2Nlc3NvcjwvZW1waGFzaXM+IGZvciBzdGFuZGFyZCBjb21wbGlhbmNlIGFuZCB3 aGVuIHlvdSB3YW50IGxheCBtb2RlIGFuZCBjb25kaXRpb25hbCBhcnJheSB3cmFwcGVyCisgICAg ICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJh PgorICAgICAgIFVzZSA8ZW1waGFzaXM+cHJlLXN0YW5kYXJkIHN1YnNjcmlwdGluZzwvZW1waGFz aXM+IGZvciB3cml0ZSBvcGVyYXRpb25zIG9yIHdoZW4geW91IG5lZWQgZGlyZWN0IGZpZWxkIGFj Y2VzcyB3aXRob3V0IGFycmF5IHByb2Nlc3NpbmcKKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0 aXRlbT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgVXNlIDxlbXBoYXNp cz5hcnJvdyBvcGVyYXRvcnM8L2VtcGhhc2lzPiB3aGVuIHlvdSBuZWVkIHRleHQgb3V0cHV0ICg8 bGl0ZXJhbD4tPj48L2xpdGVyYWw+KSBvciB3aGVuIHdvcmtpbmcgd2l0aCBib3RoIDxsaXRlcmFs Pmpzb248L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5qc29uYjwvbGl0ZXJhbD4gdHlwZXMKKyAgICAg IDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L2l0ZW1pemVkbGlzdD4KKyAgIDwvcGFy YT4KKyAgPC9zZWN0Mz4KKworICA8c2VjdDMgaWQ9Impzb25iLWFjY2Vzc29yLWJlc3QtcHJhY3Rp Y2VzIj4KKyAgIDx0aXRsZT5CZXN0IFByYWN0aWNlczogQXZvaWQgTWl4aW5nIEFjY2VzcyBNZXRo b2RzPC90aXRsZT4KKyAgIDxwYXJhPgorICAgIDxlbXBoYXNpcz5JbXBvcnRhbnQ6PC9lbXBoYXNp cz4gRG8gbm90IG1peCBTUUw6MjAyMyBzaW1wbGlmaWVkIGFjY2Vzc29yIHN5bnRheCAKKyAgICB3 aXRoIHByZS1zdGFuZGFyZCBzdWJzY3JpcHRpbmcgc3ludGF4IGluIHRoZSBzYW1lIGFjY2Vzc29y IGNoYWluLiBUaGVzZSAKKyAgICBtZXRob2RzIGhhdmUgc3VidGx5IGRpZmZlcmVudCBzZW1hbnRp Y3MgYW5kIGFyZSBub3QgaW50ZXJjaGFuZ2VhYmxlIGFsaWFzZXMuCisgICAgTWl4aW5nIHRoZW0g Y2FuIGxlYWQgdG8gY29uZnVzaW9uIGFuZCBjb2RlIHRoYXQgaXMgZGlmZmljdWx0IHRvIHVuZGVy c3RhbmQuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIDxlbXBoYXNpcz5SZWNvbW1lbmRl ZCAtIENvbnNpc3RlbnQgc2ltcGxpZmllZCBhY2Nlc3Nvcjo8L2VtcGhhc2lzPgorPHByb2dyYW1s aXN0aW5nPgorLS0gQWxsIHBhcnRzIHVzZSBzaW1wbGlmaWVkIGFjY2Vzc29yIChzdGFuZGFyZCBi ZWhhdmlvcikKK1NFTEVDVCBkYXRhLmxvY2F0aW9uLmNvb3JkaW5hdGVzLmxhdGl0dWRlIEZST00g dGFibGU7ICAtLSBHb29kCitTRUxFQ1QgZGF0YS5yZXBlcnRvaXJlWzBdLnRpdGxlIEZST00gdGFi bGU7ICAgICAgICAgICAtLSBHb29kICAKK1NFTEVDVCBkYXRhLnVzZXJzWzFdLnByb2ZpbGUuZW1h aWwgRlJPTSB0YWJsZTsgICAgICAgIC0tIEdvb2QKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICA8L3Bh cmE+CisKKyAgIDxwYXJhPgorICAgIDxlbXBoYXNpcz5SZWNvbW1lbmRlZCAtIENvbnNpc3RlbnQg cHJlLXN0YW5kYXJkIHN1YnNjcmlwdGluZzo8L2VtcGhhc2lzPgorPHByb2dyYW1saXN0aW5nPgor LS0gQWxsIHBhcnRzIHVzZSBwcmUtc3RhbmRhcmQgc3Vic2NyaXB0aW5nCitTRUxFQ1QgZGF0YVsn bG9jYXRpb24nXVsnY29vcmRpbmF0ZXMnXVsnbGF0aXR1ZGUnXSBGUk9NIHRhYmxlOyAtLSBHb29k CitTRUxFQ1QgZGF0YVswXVsndGl0bGUnXSBGUk9NIHRhYmxlOyAgICAgICAgICAgICAgICAgICAg LS0gR29vZCAod2hlbiBubyBkb3RzIHByZXNlbnQpCitTRUxFQ1QgZGF0YVsndXNlcnMnXVsxXVsn cHJvZmlsZSddWydlbWFpbCddIEZST00gdGFibGU7IC0tIEdvb2QKKzwvcHJvZ3JhbWxpc3Rpbmc+ CisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIDxlbXBoYXNpcz5Ob3QgcmVjb21tZW5kZWQg LSBNaXhlZCBzeW50YXg6PC9lbXBoYXNpcz4KKzxwcm9ncmFtbGlzdGluZz4KKy0tIE1peGluZyBz aW1wbGlmaWVkIGFjY2Vzc29yIHdpdGggcHJlLXN0YW5kYXJkIHN1YnNjcmlwdGluZworU0VMRUNU IGRhdGEubG9jYXRpb25bJ2xhdGl0dWRlJ10gRlJPTSB0YWJsZTsgICAgICAgLS0gQXZvaWQKK1NF TEVDVCBkYXRhWydyZXBlcnRvaXJlJ11bMF0udGl0bGUgRlJPTSB0YWJsZTsgICAgLS0gQXZvaWQK KzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgV2hpbGUgdGhlc2UgbWl4ZWQgZm9ybXMgd29yayBhcyBk ZXNpZ25lZCwgdGhleSBjYW4gYmUgdmVyeSBjb25mdXNpbmcKKyAgICBiZWNhdXNlIHRoZSBzaW1w bGlmaWVkIGFjY2Vzc29yIGNhbm5vdCBoYW5kbGUgdGV4dC1iYXNlZCBzdWJzY3JpcHRzIGxpa2Ug YFsnZmllbGQnXWAuCisgICAgVGhpcyBmb3JjZXMgYSBmYWxsYmFjayB0byBwcmUtc3RhbmRhcmQg c2VtYW50aWNzIGZvciB0aG9zZSBzcGVjaWZpYyBwYXJ0cywKKyAgICBjcmVhdGluZyBhIGNoYWlu IHRoYXQgc3dpdGNoZXMgYmV0d2VlbiBsYXggbW9kZSAoZm9yIGRvdCBub3RhdGlvbikgYW5kIAor ICAgIHN0cmljdCBtb2RlIChmb3IgdGV4dCBzdWJzY3JpcHRzKSB3aXRoaW4gdGhlIHNhbWUgYWNj ZXNzb3IgZXhwcmVzc2lvbi4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgQ2hvb3NlIG9u ZSBhcHByb2FjaCBjb25zaXN0ZW50bHkgdGhyb3VnaG91dCB5b3VyIGFjY2Vzc29yIGNoYWluIHRv IGVuc3VyZQorICAgIHByZWRpY3RhYmxlIGFuZCBtYWludGFpbmFibGUgY29kZS4KKyAgIDwvcGFy YT4KKworICAgPHBhcmE+CisgICAgPGVtcGhhc2lzPkN1cnJlbnQgSW1wbGVtZW50YXRpb246PC9l bXBoYXNpcz4gVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMKKyAgICBKU09OIG1l bWJlciBhY2Nlc3NvcnMgKGRvdCBub3RhdGlvbikgYW5kIEpTT04gYXJyYXkgYWNjZXNzb3JzIChp bnRlZ2VyIHN1YnNjcmlwdHMpCisgICAgYXMgZGVmaW5lZCBpbiB0aGUgU1FMOjIwMjMgc2ltcGxp ZmllZCBhY2Nlc3NvciBzcGVjaWZpY2F0aW9uLgorICAgIEFkdmFuY2VkIGZlYXR1cmVzIGZyb20g dGhlIFNRTDoyMDIzIHNwZWNpZmljYXRpb24sIHN1Y2ggYXMgd2lsZGNhcmQgbWVtYmVyCisgICAg YWNjZXNzb3JzIGFuZCBpdGVtIG1ldGhvZCBhY2Nlc3NvcnMsIGFyZSBub3QgeWV0IGltcGxlbWVu dGVkLgorICAgPC9wYXJhPgorICA8L3NlY3QzPgorIDwvc2VjdDI+CisKICA8c2VjdDIgaWQ9ImRh dGF0eXBlLWpzb24tdHJhbnNmb3JtcyI+CiAgIDx0aXRsZT5UcmFuc2Zvcm1zPC90aXRsZT4KIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0IGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0CmluZGV4IGViZTg1MzM3YzI4Li40NTdlOTkz MzA1ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0Cisr KyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dApAQCAtNTY4LDggKzU2OCw4 IEBAIFQ4MzgJSlNPTl9UQUJMRTogUExBTiBERUZBVUxUIGNsYXVzZQkJCU5PCiBUODM5CUZvcm1h dHRlZCBjYXN0IG9mIGRhdGV0aW1lcyB0by9mcm9tIGNoYXJhY3RlciBzdHJpbmdzCQkJTk8JCiBU ODQwCUhleCBpbnRlZ2VyIGxpdGVyYWxzIGluIFNRTC9KU09OIHBhdGggbGFuZ3VhZ2UJCQlZRVMJ CiBUODUxCVNRTC9KU09OOiBvcHRpb25hbCBrZXl3b3JkcyBmb3IgZGVmYXVsdCBzeW50YXgJCQlZ RVMJCi1UODYwCVNRTC9KU09OIHNpbXBsaWZpZWQgYWNjZXNzb3I6IGNvbHVtbiByZWZlcmVuY2Ug b25seQkJCU5PCQotVDg2MQlTUUwvSlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29yOiBjYXNlLXNlbnNp dGl2ZSBKU09OIG1lbWJlciBhY2Nlc3NvcgkJCU5PCQorVDg2MAlTUUwvSlNPTiBzaW1wbGlmaWVk IGFjY2Vzc29yOiBjb2x1bW4gcmVmZXJlbmNlIG9ubHkJCQlZRVMJCitUODYxCVNRTC9KU09OIHNp bXBsaWZpZWQgYWNjZXNzb3I6IGNhc2Utc2Vuc2l0aXZlIEpTT04gbWVtYmVyIGFjY2Vzc29yCQkJ WUVTCQogVDg2MglTUUwvSlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29yOiB3aWxkY2FyZCBtZW1iZXIg YWNjZXNzb3IJCQlOTwkKIFQ4NjMJU1FML0pTT04gc2ltcGxpZmllZCBhY2Nlc3Nvcjogc2luZ2xl LXF1b3RlZCBzdHJpbmcgbGl0ZXJhbCBhcyBtZW1iZXIgYWNjZXNzb3IJCQlOTwkKIFQ4NjQJU1FM L0pTT04gc2ltcGxpZmllZCBhY2Nlc3NvcgkJCU5PCQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY0V4cHIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKaW5k ZXggZjE1Njk4NzliNTIuLjM4NWM4ZDBjZWZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjRXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKQEAg LTMzMjAsNTAgKzMzMjAsNTkgQEAgRXhlY0luaXRTdWJzY3JpcHRpbmdSZWYoRXhwckV2YWxTdGVw ICpzY3JhdGNoLCBTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAkJCQkJCQkJICAgc3RhdGUtPnN0 ZXBzX2xlbiAtIDEpOwogCX0KIAotCS8qIEV2YWx1YXRlIHVwcGVyIHN1YnNjcmlwdHMgKi8KLQlp ID0gMDsKLQlmb3JlYWNoKGxjLCBzYnNyZWYtPnJlZnVwcGVyaW5kZXhwcikKKwkvKiBFdmFsdWF0 ZSB1cHBlciBzdWJzY3JpcHRzLCB1bmxlc3MgcmVmanNvbmJwYXRoIGlzIHVzZWQgZm9yIGV4ZWN1 dGlvbiAqLworCWlmICghc2JzcmVmLT5yZWZqc29uYnBhdGgpCiAJewotCQlFeHByCSAgICplID0g KEV4cHIgKikgbGZpcnN0KGxjKTsKLQotCQkvKiBXaGVuIHNsaWNpbmcsIGluZGl2aWR1YWwgc3Vi c2NyaXB0IGJvdW5kcyBjYW4gYmUgb21pdHRlZCAqLwotCQlpZiAoIWUpCi0JCXsKLQkJCXNic3Jl ZnN0YXRlLT51cHBlcnByb3ZpZGVkW2ldID0gZmFsc2U7Ci0JCQlzYnNyZWZzdGF0ZS0+dXBwZXJp bmRleG51bGxbaV0gPSB0cnVlOwotCQl9Ci0JCWVsc2UKKwkJaSA9IDA7CisJCWZvcmVhY2gobGMs IHNic3JlZi0+cmVmdXBwZXJpbmRleHByKQogCQl7Ci0JCQlzYnNyZWZzdGF0ZS0+dXBwZXJwcm92 aWRlZFtpXSA9IHRydWU7Ci0JCQkvKiBFYWNoIHN1YnNjcmlwdCBpcyBldmFsdWF0ZWQgaW50byBh cHByb3ByaWF0ZSBhcnJheSBlbnRyeSAqLwotCQkJRXhlY0luaXRFeHByUmVjKGUsIHN0YXRlLAot CQkJCQkJCSZzYnNyZWZzdGF0ZS0+dXBwZXJpbmRleFtpXSwKLQkJCQkJCQkmc2JzcmVmc3RhdGUt PnVwcGVyaW5kZXhudWxsW2ldKTsKKwkJCUV4cHIgKmUgPSAoRXhwciAqKSBsZmlyc3QobGMpOwor CisJCQkvKiBXaGVuIHNsaWNpbmcsIGluZGl2aWR1YWwgc3Vic2NyaXB0IGJvdW5kcyBjYW4gYmUg b21pdHRlZCAqLworCQkJaWYgKCFlKQorCQkJeworCQkJCXNic3JlZnN0YXRlLT51cHBlcnByb3Zp ZGVkW2ldID0gZmFsc2U7CisJCQkJc2JzcmVmc3RhdGUtPnVwcGVyaW5kZXhudWxsW2ldID0gdHJ1 ZTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlzYnNyZWZzdGF0ZS0+dXBwZXJwcm92aWRlZFtp XSA9IHRydWU7CisJCQkJLyogRWFjaCBzdWJzY3JpcHQgaXMgZXZhbHVhdGVkIGludG8gYXBwcm9w cmlhdGUgYXJyYXkgZW50cnkgKi8KKwkJCQlFeGVjSW5pdEV4cHJSZWMoZSwgc3RhdGUsCisJCQkJ CQkJCSZzYnNyZWZzdGF0ZS0+dXBwZXJpbmRleFtpXSwKKwkJCQkJCQkJJnNic3JlZnN0YXRlLT51 cHBlcmluZGV4bnVsbFtpXSk7CisJCQl9CisJCQlpKys7CiAJCX0KLQkJaSsrOwogCX0KIAotCS8q IEV2YWx1YXRlIGxvd2VyIHN1YnNjcmlwdHMgc2ltaWxhcmx5ICovCi0JaSA9IDA7Ci0JZm9yZWFj aChsYywgc2JzcmVmLT5yZWZsb3dlcmluZGV4cHIpCisJLyoKKwkgKiBFdmFsdWF0ZSBsb3dlciBz dWJzY3JpcHRzIHNpbWlsYXJseSwgdW5sZXNzIHJlZmpzb25icGF0aCBpcyB1c2VkIGZvcgorCSAq IGV4ZWN1dGlvbgorCSAqLworCWlmICghc2JzcmVmLT5yZWZqc29uYnBhdGgpCiAJewotCQlFeHBy CSAgICplID0gKEV4cHIgKikgbGZpcnN0KGxjKTsKLQotCQkvKiBXaGVuIHNsaWNpbmcsIGluZGl2 aWR1YWwgc3Vic2NyaXB0IGJvdW5kcyBjYW4gYmUgb21pdHRlZCAqLwotCQlpZiAoIWUpCi0JCXsK LQkJCXNic3JlZnN0YXRlLT5sb3dlcnByb3ZpZGVkW2ldID0gZmFsc2U7Ci0JCQlzYnNyZWZzdGF0 ZS0+bG93ZXJpbmRleG51bGxbaV0gPSB0cnVlOwotCQl9Ci0JCWVsc2UKKwkJaSA9IDA7CisJCWZv cmVhY2gobGMsIHNic3JlZi0+cmVmbG93ZXJpbmRleHByKQogCQl7Ci0JCQlzYnNyZWZzdGF0ZS0+ bG93ZXJwcm92aWRlZFtpXSA9IHRydWU7Ci0JCQkvKiBFYWNoIHN1YnNjcmlwdCBpcyBldmFsdWF0 ZWQgaW50byBhcHByb3ByaWF0ZSBhcnJheSBlbnRyeSAqLwotCQkJRXhlY0luaXRFeHByUmVjKGUs IHN0YXRlLAotCQkJCQkJCSZzYnNyZWZzdGF0ZS0+bG93ZXJpbmRleFtpXSwKLQkJCQkJCQkmc2Jz cmVmc3RhdGUtPmxvd2VyaW5kZXhudWxsW2ldKTsKKwkJCUV4cHIJICAgKmUgPSAoRXhwciAqKSBs Zmlyc3QobGMpOworCisJCQkvKiBXaGVuIHNsaWNpbmcsIGluZGl2aWR1YWwgc3Vic2NyaXB0IGJv dW5kcyBjYW4gYmUgb21pdHRlZCAqLworCQkJaWYgKCFlKQorCQkJeworCQkJCXNic3JlZnN0YXRl LT5sb3dlcnByb3ZpZGVkW2ldID0gZmFsc2U7CisJCQkJc2JzcmVmc3RhdGUtPmxvd2VyaW5kZXhu dWxsW2ldID0gdHJ1ZTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlzYnNyZWZzdGF0ZS0+bG93 ZXJwcm92aWRlZFtpXSA9IHRydWU7CisJCQkJLyogRWFjaCBzdWJzY3JpcHQgaXMgZXZhbHVhdGVk IGludG8gYXBwcm9wcmlhdGUgYXJyYXkgZW50cnkgKi8KKwkJCQlFeGVjSW5pdEV4cHJSZWMoZSwg c3RhdGUsCisJCQkJCQkJCSZzYnNyZWZzdGF0ZS0+bG93ZXJpbmRleFtpXSwKKwkJCQkJCQkJJnNi c3JlZnN0YXRlLT5sb3dlcmluZGV4bnVsbFtpXSk7CisJCQl9CisJCQlpKys7CiAJCX0KLQkJaSsr OwogCX0KIAogCS8qIFNCU1JFRl9TVUJTQ1JJUFRTIGNoZWNrcyBhbmQgY29udmVydHMgYWxsIHRo ZSBzdWJzY3JpcHRzIGF0IG9uY2UgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL25v ZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggN2JjODIzNTA3 ZjEuLmQxYmQ1NzVkOWJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3Mu YworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpAQCAtMjg0LDYgKzI4NCwxMyBA QCBleHByVHlwZShjb25zdCBOb2RlICpleHByKQogCQljYXNlIFRfUGxhY2VIb2xkZXJWYXI6CiAJ CQl0eXBlID0gZXhwclR5cGUoKE5vZGUgKikgKChjb25zdCBQbGFjZUhvbGRlclZhciAqKSBleHBy KS0+cGhleHByKTsKIAkJCWJyZWFrOworCQljYXNlIFRfRmllbGRBY2Nlc3NvckV4cHI6CisJCQkv KgorCQkJICogRmllbGRBY2Nlc3NvckV4cHIgaXMgbm90IGV2YWx1YWJsZS4gVHJlYXQgaXQgYXMg VEVYVCBmb3IgY29sbGF0aW9uLAorCQkJICogZGVwYXJzaW5nLCBhbmQgc2ltaWxhciBwdXJwb3Nl cywgc2luY2UgaXQgcmVwcmVzZW50cyBhIEpTT04gZmllbGQgbmFtZS4KKwkJCSAqLworCQkJdHlw ZSA9IFRFWFRPSUQ7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJl Y29nbml6ZWQgbm9kZSB0eXBlOiAlZCIsIChpbnQpIG5vZGVUYWcoZXhwcikpOwogCQkJdHlwZSA9 IEludmFsaWRPaWQ7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KQEAgLTExNDYsNiArMTE1Myw5 IEBAIGV4cHJTZXRDb2xsYXRpb24oTm9kZSAqZXhwciwgT2lkIGNvbGxhdGlvbikKIAkJY2FzZSBU X01lcmdlU3VwcG9ydEZ1bmM6CiAJCQkoKE1lcmdlU3VwcG9ydEZ1bmMgKikgZXhwciktPm1zZmNv bGxpZCA9IGNvbGxhdGlvbjsKIAkJCWJyZWFrOworCQljYXNlIFRfRmllbGRBY2Nlc3NvckV4cHI6 CisJCQkoKEZpZWxkQWNjZXNzb3JFeHByICopIGV4cHIpLT5mYWVjb2xsaWQgPSBjb2xsYXRpb247 CisJCQlicmVhazsKIAkJY2FzZSBUX1N1YnNjcmlwdGluZ1JlZjoKIAkJCSgoU3Vic2NyaXB0aW5n UmVmICopIGV4cHIpLT5yZWZjb2xsaWQgPSBjb2xsYXRpb247CiAJCQlicmVhazsKQEAgLTIxMjks NiArMjEzOSw3IEBAIGV4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1wbChOb2RlICpub2RlLAogCQlj YXNlIFRfU29ydEdyb3VwQ2xhdXNlOgogCQljYXNlIFRfQ1RFU2VhcmNoQ2xhdXNlOgogCQljYXNl IFRfTWVyZ2VTdXBwb3J0RnVuYzoKKwkJY2FzZSBUX0ZpZWxkQWNjZXNzb3JFeHByOgogCQkJLyog cHJpbWl0aXZlIG5vZGUgdHlwZXMgd2l0aCBubyBleHByZXNzaW9uIHN1Ym5vZGVzICovCiAJCQli cmVhazsKIAkJY2FzZSBUX1dpdGhDaGVja09wdGlvbjoKQEAgLTMwMDgsNiArMzAxOSw3IEBAIGV4 cHJlc3Npb25fdHJlZV9tdXRhdG9yX2ltcGwoTm9kZSAqbm9kZSwKIAkJY2FzZSBUX1NvcnRHcm91 cENsYXVzZToKIAkJY2FzZSBUX0NURVNlYXJjaENsYXVzZToKIAkJY2FzZSBUX01lcmdlU3VwcG9y dEZ1bmM6CisJCWNhc2UgVF9GaWVsZEFjY2Vzc29yRXhwcjoKIAkJCXJldHVybiBjb3B5T2JqZWN0 KG5vZGUpOwogCQljYXNlIFRfV2l0aENoZWNrT3B0aW9uOgogCQkJewpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b25ic3Vicy5jCmluZGV4IDUxNjE0NmQxMTQ2Li5iZGZlNmEzMTBkZSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9qc29uYnN1YnMuYwpAQCAtMTUsMjEgKzE1LDMwIEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIK IAogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNFeHByLmgiCisjaW5jbHVkZSAibm9kZXMvbWFrZWZ1 bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvc3Vi c2NyaXB0aW5nLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NvZXJjZS5oIgogI2luY2x1ZGUg InBhcnNlci9wYXJzZV9leHByLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNs dWRlICJ1dGlscy9qc29uYi5oIgorI2luY2x1ZGUgInV0aWxzL2pzb25wYXRoLmgiCiAKIAotLyog U3Vic2NyaXB0aW5nUmVmU3RhdGUud29ya3NwYWNlIGZvciBqc29uYiBzdWJzY3JpcHRpbmcgZXhl Y3V0aW9uICovCisvKgorICogU3Vic2NyaXB0aW5nUmVmU3RhdGUud29ya3NwYWNlIGZvciBnZW5l cmljIGpzb25iIHN1YnNjcmlwdGluZyBleGVjdXRpb24uCisgKgorICogU3RvcmVzIHN0YXRlIGZv ciBib3RoIGpzb25iIHNpbXBsZSBzdWJzY3JpcHRpbmcgYW5kIGRvdCBub3RhdGlvbiBhY2Nlc3Mu CisgKiBEb3Qgbm90YXRpb24gYWRkaXRpb25hbGx5IHVzZXMgYGpzb25wYXRoYCBmb3IgSnNvblBh dGggZXZhbHVhdGlvbi4KKyAqLwogdHlwZWRlZiBzdHJ1Y3QgSnNvbmJTdWJXb3Jrc3BhY2UKIHsK IAlib29sCQlleHBlY3RBcnJheTsJLyoganNvbmIgcm9vdCBpcyBleHBlY3RlZCB0byBiZSBhbiBh cnJheSAqLwogCU9pZAkJICAgKmluZGV4T2lkOwkJLyogT0lEIG9mIGNvZXJjZWQgc3Vic2NyaXB0 IGV4cHJlc3Npb24sIGNvdWxkCiAJCQkJCQkJCSAqIGJlIG9ubHkgaW50ZWdlciBvciB0ZXh0ICov CiAJRGF0dW0JICAgKmluZGV4OwkJCS8qIFN1YnNjcmlwdCB2YWx1ZXMgaW4gRGF0dW0gZm9ybWF0 ICovCisJSnNvblBhdGggICAqanNvbnBhdGg7CQkvKiBKc29uUGF0aCBmb3IgZG90IG5vdGF0aW9u IGV4ZWN1dGlvbiB2aWEKKwkJCQkJCQkJICogSnNvblBhdGhRdWVyeSgpICovCiB9IEpzb25iU3Vi V29ya3NwYWNlOwogCiBzdGF0aWMgTm9kZSAqCkBAIC05Niw2ICsxMDUsMjMzIEBAIGNvZXJjZV9q c29ucGF0aF9zdWJzY3JpcHRfdG9faW50NF9vcl90ZXh0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9k ZSAqc3ViRXhwcikKIAlyZXR1cm4gc3ViRXhwcjsKIH0KIAorLyoKKyAqIER1cmluZyB0cmFuc2Zv cm1hdGlvbiwgZGV0ZXJtaW5lIHdoZXRoZXIgdG8gYnVpbGQgYSBKc29uUGF0aAorICogZm9yIEpz b25QYXRoUXVlcnkoKSBleGVjdXRpb24uCisgKgorICogSnNvblBhdGggaXMgbmVlZGVkIGlmIHRo ZSBpbmRpcmVjdGlvbiBsaXN0IGluY2x1ZGVzOgorICogLSBTdHJpbmctYmFzZWQgYWNjZXNzIChk b3Qgbm90YXRpb24pCisgKiAtIFNsaWNlLWJhc2VkIHN1YnNjcmlwdGluZyAod2hlbiBpc1NsaWNl IGlzIHRydWUpCisgKgorICogT3RoZXJ3aXNlLCBzaW1wbGUganNvbmIgc3Vic2NyaXB0aW5nIGlz IGVub3VnaC4KKyAqLworc3RhdGljIGJvb2wKK2pzb25iX2NoZWNrX2pzb25wYXRoX25lZWRlZChM aXN0ICppbmRpcmVjdGlvbikKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIGlu ZGlyZWN0aW9uKQorCXsKKwkJTm9kZQkgICAqYWNjZXNzb3IgPSBsZmlyc3QobGMpOworCisJCWlm IChJc0EoYWNjZXNzb3IsIFN0cmluZykpCisJCQlyZXR1cm4gdHJ1ZTsKKwkJZWxzZQorCQkJQXNz ZXJ0KElzQShhY2Nlc3NvciwgQV9JbmRpY2VzKSk7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQor CisvKgorICogSGVscGVyIGZ1bmN0aW9ucyBmb3IgY29uc3RydWN0aW5nIEpzb25QYXRoIGV4cHJl c3Npb25zLgorICoKKyAqIFRoZSBtYWtlX2pzb25wYXRoX2l0ZW1fKiBmdW5jdGlvbnMgY3JlYXRl IHZhcmlvdXMgdHlwZXMgb2YgSnNvblBhdGhQYXJzZUl0ZW0KKyAqIG5vZGVzLCB3aGljaCBhcmUg dXNlZCB0byBidWlsZCBKc29uUGF0aCBleHByZXNzaW9ucyBmb3IganNvbmIgc2ltcGxpZmllZAor ICogYWNjZXNzb3IuCisgKi8KKworc3RhdGljIEpzb25QYXRoUGFyc2VJdGVtICoKK21ha2VfanNv bnBhdGhfaXRlbShKc29uUGF0aEl0ZW1UeXBlIHR5cGUpCit7CisJSnNvblBhdGhQYXJzZUl0ZW0g KnYgPSBwYWxsb2Moc2l6ZW9mKCp2KSk7CisKKwl2LT50eXBlID0gdHlwZTsKKwl2LT5uZXh0ID0g TlVMTDsKKworCXJldHVybiB2OworfQorCisvKgorICogQ29udmVydCBhIGNvbnN0YW50IGludGVn ZXIgZXhwcmVzc2lvbiBpbnRvIGEgSnNvblBhdGhQYXJzZUl0ZW0uCisgKgorICogVGhlIGlucHV0 IGV4cHJlc3Npb24gbXVzdCBiZSBhIG5vbi1udWxsIGNvbnN0YW50IG9mIHR5cGUgSU5UNC4gUmV0 dXJucyBOVUxMIG90aGVyd2lzZS4KKyAqIFRoaXMgZnVuY3Rpb24gY29uc3RydWN0cyBhIGpwaU51 bWVyaWMgaXRlbSBmb3IgdXNlIGluIEpzb25QYXRoIGFuZCBhcHBlbmRzIGEgbWF0Y2hpbmcKKyAq IENvbnN0KElOVDQpIG5vZGUgdG8gdGhlIGdpdmVuIGV4cHJlc3Npb24gbGlzdCBmb3IgdXNlIGlu IEVYUExBSU4sIHZpZXdzLCBldGMuCisgKgorICogUGFyYW1ldGVyczoKKyAqIC0gcHN0YXRlOiBw YXJzZSBzdGF0ZSBjb250ZXh0CisgKiAtIGV4cHI6IGlucHV0IGV4cHJlc3Npb24gbm9kZQorICog LSBleHByczogbGlzdCBvZiBleHByZXNzaW9uIG5vZGVzICh1cGRhdGVkIGluIHBsYWNlKQorICov CitzdGF0aWMgSnNvblBhdGhQYXJzZUl0ZW0gKgorbWFrZV9qc29ucGF0aF9pdGVtX2V4cHIoUGFy c2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByLCBMaXN0ICoqZXhwcnMpCit7CisJQ29uc3QJICAg KmNuc3Q7CisKKwlleHByID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIGV4cHIsIHBzdGF0ZS0+cF9l eHByX2tpbmQpOworCisJaWYgKElzQShleHByLCBDb25zdCkpCisJeworCQljbnN0ID0gKENvbnN0 ICopIGV4cHI7CisJCWlmIChjbnN0LT5jb25zdHR5cGUgPT0gSU5UNE9JRCAmJiAhKGNuc3QtPmNv bnN0aXNudWxsKSkKKwkJeworCQkJSnNvblBhdGhQYXJzZUl0ZW0gKmpwaSA9IG1ha2VfanNvbnBh dGhfaXRlbShqcGlOdW1lcmljKTsKKworCQkJanBpLT52YWx1ZS5udW1lcmljID0KKwkJCQlEYXR1 bUdldE51bWVyaWMoRGlyZWN0RnVuY3Rpb25DYWxsMShpbnQ0X251bWVyaWMsIEludDMyR2V0RGF0 dW0oY25zdC0+Y29uc3R2YWx1ZSkpKTsKKworCQkJKmV4cHJzID0gbGFwcGVuZCgqZXhwcnMsIG1h a2VDb25zdChJTlQ0T0lELCAtMSwgSW52YWxpZE9pZCwgNCwKKwkJCQkJCQkJCQkJICAgSW50MzJH ZXREYXR1bShjbnN0LT5jb25zdHZhbHVlKSwgZmFsc2UsIHRydWUpKTsKKworCQkJcmV0dXJuIGpw aTsKKwkJfQorCX0KKworCXJldHVybiBOVUxMOworfQorCisvKgorICogQ29uc3RydWN0cyBhIEpz b25QYXRoIGV4cHJlc3Npb24gZnJvbSBhIGxpc3Qgb2YgaW5kaXJlY3Rpb25zLgorICogVGhpcyBm dW5jdGlvbiBpcyB1c2VkIHdoZW4ganNvbmIgc3Vic2NyaXB0aW5nIGludm9sdmVzIGRvdCBub3Rh dGlvbiwKKyAqIHJlcXVpcmluZyBKc29uUGF0aC1iYXNlZCBldmFsdWF0aW9uLgorICoKKyAqIFRo ZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgaW5kaXJlY3Rpb24gbGlzdCBpbiBwbGFjZSwgcmVtb3Zp bmcgcHJvY2Vzc2VkCisgKiBlbGVtZW50cyBhcyBpdCBjb252ZXJ0cyB0aGVtIGludG8gSnNvblBh dGggY29tcG9uZW50cywgYXMgZm9sbG93czoKKyAqIC0gU3RyaW5nIGtleXMgKGRvdCBub3RhdGlv bikgLT4ganBpS2V5IGl0ZW1zLgorICogLSBBcnJheSBpbmRpY2VzIC0+IGpwaUluZGV4QXJyYXkg aXRlbXMuCisgKgorICogSW4gYWRkaXRpb24gdG8gYnVpbGRpbmcgdGhlIEpzb25QYXRoIGV4cHJl c3Npb24sIHRoaXMgZnVuY3Rpb24gcG9wdWxhdGVzCisgKiB0aGUgZm9sbG93aW5nIGZpZWxkcyBv ZiB0aGUgZ2l2ZW4gU3Vic2NyaXB0aW5nUmVmOgorICogLSByZWZqc29uYnBhdGg6IHRoZSBnZW5l cmF0ZWQgSnNvblBhdGgKKyAqIC0gcmVmdXBwZXJpbmRleHByOiB1cHBlciBpbmRleCBleHByZXNz aW9ucyAob2JqZWN0IGtleXMgb3IgYXJyYXkgaW5kZXhlcykKKyAqIC0gcmVmbG93ZXJpbmRleHBy OiBsb3dlciBpbmRleCBleHByZXNzaW9ucywgcmVtYWlucyBOSUwgYXMgc2xpY2VzIGFyZSBub3Qg c3VwcG9ydGVkLgorICoKKyAqIFBhcmFtZXRlcnM6CisgKiAtIHBzdGF0ZTogUGFyc2Ugc3RhdGUg Y29udGV4dC4KKyAqIC0gaW5kaXJlY3Rpb246IExpc3Qgb2Ygc3Vic2NyaXB0aW5nIGV4cHJlc3Np b25zIChtb2RpZmllZCBpbi1wbGFjZSkuCisgKiAtIHNic3JlZjogU3Vic2NyaXB0aW5nUmVmIG5v ZGUgdG8gdXBkYXRlCisgKi8KK3N0YXRpYyBpbnQKK2pzb25iX3N1YnNjcmlwdF9tYWtlX2pzb25w YXRoKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqaW5kaXJlY3Rpb24sIFN1YnNjcmlwdGluZ1Jl ZiAqc2JzcmVmKQoreworCUpzb25QYXRoUGFyc2VSZXN1bHQganByZXM7CisJSnNvblBhdGhQYXJz ZUl0ZW0gKnBhdGggPSBtYWtlX2pzb25wYXRoX2l0ZW0oanBpUm9vdCk7CisJTGlzdENlbGwgICAq bGM7CisJRGF0dW0JCWpzcDsKKwlpbnQJCQlwYXRobGVuID0gMDsKKworCXNic3JlZi0+cmVmdXBw ZXJpbmRleHByID0gTklMOworCXNic3JlZi0+cmVmbG93ZXJpbmRleHByID0gTklMOworCXNic3Jl Zi0+cmVmanNvbmJwYXRoID0gTlVMTDsKKworCWpwcmVzLmV4cHIgPSBwYXRoOworCWpwcmVzLmxh eCA9IHRydWU7CisKKwlmb3JlYWNoKGxjLCBpbmRpcmVjdGlvbikKKwl7CisJCU5vZGUJICAgKmFj Y2Vzc29yID0gbGZpcnN0KGxjKTsKKwkJSnNvblBhdGhQYXJzZUl0ZW0gKmpwaTsKKworCQlpZiAo SXNBKGFjY2Vzc29yLCBTdHJpbmcpKQorCQl7CisJCQljaGFyCSAgICpmaWVsZCA9IHN0clZhbChh Y2Nlc3Nvcik7CisJCQlGaWVsZEFjY2Vzc29yRXhwciAqYWNjZXNzb3JfZXhwcjsKKworCQkJanBp ID0gbWFrZV9qc29ucGF0aF9pdGVtKGpwaUtleSk7CisJCQlqcGktPnZhbHVlLnN0cmluZy52YWwg PSBmaWVsZDsKKwkJCWpwaS0+dmFsdWUuc3RyaW5nLmxlbiA9IHN0cmxlbihmaWVsZCk7CisKKwkJ CWFjY2Vzc29yX2V4cHIgPSBtYWtlTm9kZShGaWVsZEFjY2Vzc29yRXhwcik7CisJCQlhY2Nlc3Nv cl9leHByLT50eXBlID0gVF9GaWVsZEFjY2Vzc29yRXhwcjsKKwkJCWFjY2Vzc29yX2V4cHItPmZp ZWxkbmFtZSA9IGZpZWxkOworCisJCQlzYnNyZWYtPnJlZnVwcGVyaW5kZXhwciA9IGxhcHBlbmQo c2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIsIGFjY2Vzc29yX2V4cHIpOworCQl9CisJCWVsc2UgaWYg KElzQShhY2Nlc3NvciwgQV9JbmRpY2VzKSkKKwkJeworCQkJQV9JbmRpY2VzICAqYWkgPSBjYXN0 Tm9kZShBX0luZGljZXMsIGFjY2Vzc29yKTsKKworCQkJaWYgKCFhaS0+aXNfc2xpY2UpCisJCQl7 CisJCQkJSnNvblBhdGhQYXJzZUl0ZW0gKmpwaV9mcm9tID0gTlVMTDsKKworCQkJCUFzc2VydChh aS0+dWlkeCAmJiAhYWktPmxpZHgpOworCQkJCWpwaV9mcm9tID0gbWFrZV9qc29ucGF0aF9pdGVt X2V4cHIocHN0YXRlLCBhaS0+dWlkeCwgJnNic3JlZi0+cmVmdXBwZXJpbmRleHByKTsKKwkJCQlp ZiAoanBpX2Zyb20gPT0gTlVMTCkKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIEJyZWFrIG91dCBv ZiB0aGUgbG9vcCBpZiB0aGUgc3Vic2NyaXB0IGlzIG5vdCBhCisJCQkJCSAqIG5vbi1udWxsIGlu dGVnZXIgY29uc3RhbnQsIHNvIHRoYXQgd2UgY2FuIGZhbGwgYmFjayB0bworCQkJCQkgKiBqc29u YiBzdWJzY3JpcHRpbmcgbG9naWMuCisJCQkJCSAqCisJCQkJCSAqIFRoaXMgaXMgbmVlZGVkIHRv IGhhbmRsZSBjYXNlcyB3aXRoIG1peGVkIHVzYWdlIG9mIFNRTAorCQkJCQkgKiBzdGFuZGFyZCBq c29uIHNpbXBsaWZpZWQgYWNjZXNzb3Igc3ludGF4IGFuZCBQb3N0Z3JlU1FMCisJCQkJCSAqIGpz b25iIHN1YnNjcmlwdGluZyBzeW50YXgsIGUuZzoKKwkJCQkJICoKKwkJCQkJICogc2VsZWN0IChq YikuYVsnYiddLmMgZnJvbSBqc29uYl90YWJsZTsKKwkJCQkJICoKKwkJCQkJICogd2hlcmUgZG90 LW5vdGF0aW9uICguYSBhbmQgLmMpIGlzIHRoZSBTUUwgc3RhbmRhcmQganNvbgorCQkJCQkgKiBz aW1wbGlmaWVkIGFjY2Vzc29yIHN5bnRheCwgYW5kIHRoZSBbJ2InXSBzdWJzY3JpcHQgaXMKKwkJ CQkJICogdGhlIFBvc3RncmVTUUwganNvbmIgc3Vic2NyaXB0aW5nIHN5bnRheCwgYmVjYXVzZSAn YicKKwkJCQkJICogaXMgbm90IGEgbm9uLW51bGwgY29uc3RhbnQgaW50ZWdlciBhbmQgY2Fubm90 IGJlIHVzZWQKKwkJCQkJICogZm9yIGpzb24gYXJyYXkgYWNjZXNzLgorCQkJCQkgKgorCQkJCQkg KiBJbiB0aGlzIGNhc2UsIHdlIGNhbm5vdCBjcmVhdGUgYSBKc29uUGF0aCBpdGVtLCBzbyB3ZQor CQkJCQkgKiBicmVhayBvdXQgb2YgdGhlIGxvb3AgYW5kIGxldAorCQkJCQkgKiBqc29uYl9zdWJz Y3JpcHRfdHJhbnNmb3JtKCkgaGFuZGxlIHRoaXMgaW5kaXJlY3Rpb24gYXMKKwkJCQkJICogYSBQ b3N0Z3JlU1FMIGpzb25iIHN1YnNjcmlwdC4KKwkJCQkJICovCisJCQkJCWJyZWFrOworCQkJCX0K KworCQkJCWpwaSA9IG1ha2VfanNvbnBhdGhfaXRlbShqcGlJbmRleEFycmF5KTsKKwkJCQlqcGkt PnZhbHVlLmFycmF5Lm5lbGVtcyA9IDE7CisJCQkJanBpLT52YWx1ZS5hcnJheS5lbGVtcyA9IHBh bGxvYyhzaXplb2YoanBpLT52YWx1ZS5hcnJheS5lbGVtc1swXSkpOworCisJCQkJanBpLT52YWx1 ZS5hcnJheS5lbGVtc1swXS5mcm9tID0ganBpX2Zyb207CisJCQkJanBpLT52YWx1ZS5hcnJheS5l bGVtc1swXS50byA9IE5VTEw7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJTm9kZQkgICAqZXhw ciA9IGFpLT51aWR4ID8gYWktPnVpZHggOiBhaS0+bGlkeDsKKworCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJCSBlcnJt c2coImpzb25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcyIpLAorCQkJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihleHByKSkpKTsKKwkJCX0KKwkJ fQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBVbmV4cGVjdGVkIG5vZGUgdHlwZSBpbiBpbmRp cmVjdGlvbiBsaXN0LiBUaGlzIHNob3VsZCBub3QKKwkJCSAqIGhhcHBlbiB3aXRoIGN1cnJlbnQg Z3JhbW1hciwgYnV0IHdlIGhhbmRsZSBpdCBkZWZlbnNpdmVseSBieQorCQkJICogYnJlYWtpbmcg b3V0IG9mIHRoZSBsb29wIHJhdGhlciB0aGFuIGNyYXNoaW5nLiBJbiBjYXNlIG9mCisJCQkgKiBm dXR1cmUgZ3JhbW1hciBjaGFuZ2VzIHRoYXQgbWlnaHQgaW50cm9kdWNlIG5ldyBub2RlIHR5cGVz LAorCQkJICogdGhpcyBhbGxvd3MgdXMgdG8gY3JlYXRlIGEganNvbnBhdGggZnJvbSBhcyBtYW55 IGluZGlyZWN0aW9uCisJCQkgKiBlbGVtZW50cyBhcyB3ZSBjYW4gYW5kIGxldCB0cmFuc2Zvcm1J bmRpcmVjdGlvbigpIGZhbGxiYWNrIHRvCisJCQkgKiBhbHRlcm5hdGl2ZSBsb2dpYyB0byBoYW5k bGUgdGhlIHJlbWFpbmluZyBpbmRpcmVjdGlvbiBlbGVtZW50cy4KKwkJCSAqLworCQkJQXNzZXJ0 KGZhbHNlKTsJCS8qIG5vdCByZWFjaGFibGUgKi8KKwkJCWJyZWFrOworCQl9CisKKwkJLyogYXBw ZW5kIHBhdGggaXRlbSAqLworCQlwYXRoLT5uZXh0ID0ganBpOworCQlwYXRoID0ganBpOworCQlw YXRobGVuKys7CisJfQorCisJaWYgKHBhdGhsZW4gIT0gMCkKKwl7CisJCWpzcCA9IGpzb25QYXRo RnJvbVBhcnNlUmVzdWx0KCZqcHJlcywgMCwgTlVMTCk7CisJCXNic3JlZi0+cmVmanNvbmJwYXRo ID0gKE5vZGUgKikgbWFrZUNvbnN0KEpTT05QQVRIT0lELCAtMSwgSW52YWxpZE9pZCwgLTEsIGpz cCwgZmFsc2UsIGZhbHNlKTsKKwl9CisKKwlyZXR1cm4gcGF0aGxlbjsKK30KKwogLyoKICAqIEZp bmlzaCBwYXJzZSBhbmFseXNpcyBvZiBhIFN1YnNjcmlwdGluZ1JlZiBleHByZXNzaW9uIGZvciBh IGpzb25iLgogICoKQEAgLTExMSw5ICszNDcsMjkgQEAganNvbmJfc3Vic2NyaXB0X3RyYW5zZm9y bShTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAlMaXN0CSAgICp1cHBlckluZGV4cHIgPSBOSUw7 CiAJTGlzdENlbGwgICAqaWR4OwogCisJLyogRGV0ZXJtaW5lIHRoZSByZXN1bHQgdHlwZSBvZiB0 aGUgc3Vic2NyaXB0aW5nIG9wZXJhdGlvbjsgYWx3YXlzIGpzb25iICovCisJc2JzcmVmLT5yZWZy ZXN0eXBlID0gSlNPTkJPSUQ7CisJc2JzcmVmLT5yZWZ0eXBtb2QgPSAtMTsKKworCWlmIChqc29u Yl9jaGVja19qc29ucGF0aF9uZWVkZWQoaW5kaXJlY3Rpb24pKQorCXsKKwkJaW50IHBhdGhsZW47 CisKKwkJcGF0aGxlbiA9IGpzb25iX3N1YnNjcmlwdF9tYWtlX2pzb25wYXRoKHBzdGF0ZSwgaW5k aXJlY3Rpb24sIHNic3JlZik7CisJCWlmIChzYnNyZWYtPnJlZmpzb25icGF0aCkKKwkJCXJldHVy biBwYXRobGVuOworCX0KKwogCS8qCi0JICogVHJhbnNmb3JtIGFuZCBjb252ZXJ0IHRoZSBzdWJz Y3JpcHQgZXhwcmVzc2lvbnMuIEpzb25iIHN1YnNjcmlwdGluZwotCSAqIGRvZXMgbm90IHN1cHBv cnQgc2xpY2VzLCBsb29rIG9ubHkgYXQgdGhlIHVwcGVyIGluZGV4LgorCSAqIFdlIHJlYWNoIGhl cmUgb25seSBpbiB0d28gY2FzZXM6IChhKSB0aGUgSlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29yIGlz CisJICogbm90IG5lZWRlZCBhdCBhbGwgKGZvciBleGFtcGxlLCBhIHBsYWluIGFycmF5IHN1YnNj cmlwdCBsaWtlIFsxXSBvcgorCSAqIG9iamVjdCBrZXkgYWNjZXNzIGxpa2UgWydhJ10pLCBvciAo YikganNvbmJfc3Vic2NyaXB0X21ha2VfanNvbnBhdGgoKQorCSAqIHdhcyBjYWxsZWQgYnV0IGNv dWxkIG5vdCBjb21wbGV0ZSB0aGUgSnNvblBhdGggY29uc3RydWN0aW9uIChmb3IKKwkgKiBleGFt cGxlLCB3aGVuIG1peGluZyBkb3Qgbm90YXRpb24gd2l0aCBub24taW50ZWdlciBzdWJzY3JpcHRz IGxpa2UKKwkgKiAoamIpWydhJ10uYiB3aGVyZSAnYScgaXMgbm90IGEgY29uc3RhbnQgaW50ZWdl cikuCisJICoKKwkgKiBJbiBib3RoIGNhc2VzIHdlIGZhbGwgYmFjayB0byBwcmUtc3RhbmRhcmQg anNvbmIgc3Vic2NyaXB0aW5nLCBjb2VyY2luZworCSAqIGVhY2ggc3Vic2NyaXB0IHRvIGFycmF5 IGluZGV4IG9yIG9iamVjdCBrZXkgYXMgbmVlZGVkLgogCSAqLwogCWZvcmVhY2goaWR4LCBpbmRp cmVjdGlvbikKIAl7CkBAIC0xNjAsMTAgKzQxNiw2IEBAIGpzb25iX3N1YnNjcmlwdF90cmFuc2Zv cm0oU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIgPSB1 cHBlckluZGV4cHI7CiAJc2JzcmVmLT5yZWZsb3dlcmluZGV4cHIgPSBOSUw7CiAKLQkvKiBEZXRl cm1pbmUgdGhlIHJlc3VsdCB0eXBlIG9mIHRoZSBzdWJzY3JpcHRpbmcgb3BlcmF0aW9uOyBhbHdh eXMganNvbmIgKi8KLQlzYnNyZWYtPnJlZnJlc3R5cGUgPSBKU09OQk9JRDsKLQlzYnNyZWYtPnJl ZnR5cG1vZCA9IC0xOwotCiAJcmV0dXJuIGxpc3RfbGVuZ3RoKHVwcGVySW5kZXhwcik7CiB9CiAK QEAgLTIxNiw3ICs0NjgsNyBAQCBqc29uYl9zdWJzY3JpcHRfY2hlY2tfc3Vic2NyaXB0cyhFeHBy U3RhdGUgKnN0YXRlLAogCQkJICogRm9yIGpzb25iIGZldGNoIGFuZCBhc3NpZ24gZnVuY3Rpb25z IHdlIG5lZWQgdG8gcHJvdmlkZSBwYXRoIGluCiAJCQkgKiB0ZXh0IGZvcm1hdC4gQ29udmVydCBp ZiBpdCdzIG5vdCBhbHJlYWR5IHRleHQuCiAJCQkgKi8KLQkJCWlmICh3b3Jrc3BhY2UtPmluZGV4 T2lkW2ldID09IElOVDRPSUQpCisJCQlpZiAoIXdvcmtzcGFjZS0+anNvbnBhdGggJiYgd29ya3Nw YWNlLT5pbmRleE9pZFtpXSA9PSBJTlQ0T0lEKQogCQkJewogCQkJCURhdHVtCQlkYXR1bSA9IHNi c3JlZnN0YXRlLT51cHBlcmluZGV4W2ldOwogCQkJCWNoYXIJICAgKmNzID0gRGF0dW1HZXRDU3Ry aW5nKERpcmVjdEZ1bmN0aW9uQ2FsbDEoaW50NG91dCwgZGF0dW0pKTsKQEAgLTI0NCwxNyArNDk2 LDMyIEBAIGpzb25iX3N1YnNjcmlwdF9mZXRjaChFeHByU3RhdGUgKnN0YXRlLAogewogCVN1YnNj cmlwdGluZ1JlZlN0YXRlICpzYnNyZWZzdGF0ZSA9IG9wLT5kLnNic3JlZi5zdGF0ZTsKIAlKc29u YlN1YldvcmtzcGFjZSAqd29ya3NwYWNlID0gKEpzb25iU3ViV29ya3NwYWNlICopIHNic3JlZnN0 YXRlLT53b3Jrc3BhY2U7Ci0JSnNvbmIJICAgKmpzb25iU291cmNlOwogCiAJLyogU2hvdWxkIG5v dCBnZXQgaGVyZSBpZiBzb3VyY2UganNvbmIgKG9yIGFueSBzdWJzY3JpcHQpIGlzIG51bGwgKi8K IAlBc3NlcnQoISgqb3AtPnJlc251bGwpKTsKIAotCWpzb25iU291cmNlID0gRGF0dW1HZXRKc29u YlAoKm9wLT5yZXN2YWx1ZSk7Ci0JKm9wLT5yZXN2YWx1ZSA9IGpzb25iX2dldF9lbGVtZW50KGpz b25iU291cmNlLAotCQkJCQkJCQkJICB3b3Jrc3BhY2UtPmluZGV4LAotCQkJCQkJCQkJICBzYnNy ZWZzdGF0ZS0+bnVtdXBwZXIsCi0JCQkJCQkJCQkgIG9wLT5yZXNudWxsLAotCQkJCQkJCQkJICBm YWxzZSk7CisJaWYgKHdvcmtzcGFjZS0+anNvbnBhdGgpCisJeworCQlib29sCQllbXB0eSA9IGZh bHNlOworCQlib29sCQllcnJvciA9IGZhbHNlOworCisJCSpvcC0+cmVzdmFsdWUgPSBKc29uUGF0 aFF1ZXJ5KCpvcC0+cmVzdmFsdWUsIHdvcmtzcGFjZS0+anNvbnBhdGgsCisJCQkJCQkJCQkgIEpT V19DT05ESVRJT05BTCwKKwkJCQkJCQkJCSAgJmVtcHR5LCAmZXJyb3IsIE5VTEwsCisJCQkJCQkJ CQkgIE5VTEwpOworCisJCSpvcC0+cmVzbnVsbCA9IGVtcHR5IHx8IGVycm9yOworCX0KKwllbHNl CisJeworCQlKc29uYgkgICAqanNvbmJTb3VyY2UgPSBEYXR1bUdldEpzb25iUCgqb3AtPnJlc3Zh bHVlKTsKKworCQkqb3AtPnJlc3ZhbHVlID0ganNvbmJfZ2V0X2VsZW1lbnQoanNvbmJTb3VyY2Us CisJCQkJCQkJCQkJICB3b3Jrc3BhY2UtPmluZGV4LAorCQkJCQkJCQkJCSAgc2JzcmVmc3RhdGUt Pm51bXVwcGVyLAorCQkJCQkJCQkJCSAgb3AtPnJlc251bGwsCisJCQkJCQkJCQkJICBmYWxzZSk7 CisJfQogfQogCiAvKgpAQCAtMzYyLDcgKzYyOSw3IEBAIGpzb25iX2V4ZWNfc2V0dXAoY29uc3Qg U3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiB7CiAJSnNvbmJTdWJXb3Jrc3BhY2UgKndvcmtzcGFj ZTsKIAlMaXN0Q2VsbCAgICpsYzsKLQlpbnQJCQludXBwZXIgPSBzYnNyZWYtPnJlZnVwcGVyaW5k ZXhwci0+bGVuZ3RoOworCWludAkJCW51cHBlciA9IGxpc3RfbGVuZ3RoKHNic3JlZi0+cmVmdXBw ZXJpbmRleHByKTsKIAljaGFyCSAgICpwdHI7CiAKIAkvKiBBbGxvY2F0ZSB0eXBlLXNwZWNpZmlj IHdvcmtzcGFjZSB3aXRoIHNwYWNlIGZvciBwZXItc3Vic2NyaXB0IGRhdGEgKi8KQEAgLTM3MSw2 ICs2MzgsOSBAQCBqc29uYl9leGVjX3NldHVwKGNvbnN0IFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVm LAogCXdvcmtzcGFjZS0+ZXhwZWN0QXJyYXkgPSBmYWxzZTsKIAlwdHIgPSAoKGNoYXIgKikgd29y a3NwYWNlKSArIE1BWEFMSUdOKHNpemVvZihKc29uYlN1YldvcmtzcGFjZSkpOwogCisJaWYgKHNi c3JlZi0+cmVmanNvbmJwYXRoKQorCQl3b3Jrc3BhY2UtPmpzb25wYXRoID0gRGF0dW1HZXRKc29u UGF0aFAoY2FzdE5vZGUoQ29uc3QsIHNic3JlZi0+cmVmanNvbmJwYXRoKS0+Y29uc3R2YWx1ZSk7 CisKIAkvKgogCSAqIFRoaXMgY29kaW5nIGFzc3VtZXMgc2l6ZW9mKERhdHVtKSA+PSBzaXplb2Yo T2lkKSwgZWxzZSB3ZSBtaWdodAogCSAqIG1pc2FsaWduIHRoZSBpbmRleE9pZCBwb2ludGVyCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggMDQwOGE5NTk0MWQuLmM4OTk3MzRjMmUzIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC05MzI5LDEwICs5MzI5LDEzIEBAIGdldF9y dWxlX2V4cHIoTm9kZSAqbm9kZSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQkJCSAqIFBh cmVudGhlc2l6ZSB0aGUgYXJndW1lbnQgdW5sZXNzIGl0J3MgYSBzaW1wbGUgVmFyIG9yIGEKIAkJ CQkgKiBGaWVsZFNlbGVjdC4gIChJbiBwYXJ0aWN1bGFyLCBpZiBpdCdzIGFub3RoZXIKIAkJCQkg KiBTdWJzY3JpcHRpbmdSZWYsIHdlICptdXN0KiBwYXJlbnRoZXNpemUgdG8gYXZvaWQKLQkJCQkg KiBjb25mdXNpb24uKQorCQkJCSAqIGNvbmZ1c2lvbi4pIEFsd2F5cyBhZGQgcGFyZW50aGVzaXMg aWYgSlNPTiBzaW1wbGlmaWVkCisJCQkJICogYWNjZXNzb3IgaXMgdXNlZCwgZm9yIG5vdy4KIAkJ CQkgKi8KLQkJCQluZWVkX3BhcmVucyA9ICFJc0Eoc2JzcmVmLT5yZWZleHByLCBWYXIpICYmCi0J CQkJCSFJc0Eoc2JzcmVmLT5yZWZleHByLCBGaWVsZFNlbGVjdCk7CisJCQkJbmVlZF9wYXJlbnMg PSAoIUlzQShzYnNyZWYtPnJlZmV4cHIsIFZhcikgJiYKKwkJCQkJIUlzQShzYnNyZWYtPnJlZmV4 cHIsIEZpZWxkU2VsZWN0KSkgfHwKKwkJCQkJCXNic3JlZi0+cmVmanNvbmJwYXRoOworCiAJCQkJ aWYgKG5lZWRfcGFyZW5zKQogCQkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcoJyk7CiAJ CQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAqKSBzYnNyZWYtPnJlZmV4cHIsIGNvbnRleHQsIHNob3dp bXBsaWNpdCk7CkBAIC0xMzAwNSwxNyArMTMwMDgsMzUgQEAgcHJpbnRTdWJzY3JpcHRzKFN1YnNj cmlwdGluZ1JlZiAqc2JzcmVmLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAJbG93bGlzdF9p dGVtID0gbGlzdF9oZWFkKHNic3JlZi0+cmVmbG93ZXJpbmRleHByKTsJLyogY291bGQgYmUgTlVM TCAqLwogCWZvcmVhY2godXBsaXN0X2l0ZW0sIHNic3JlZi0+cmVmdXBwZXJpbmRleHByKQogCXsK LQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnWycpOwotCQlpZiAobG93bGlzdF9pdGVtKQor CQlOb2RlICp1cHBlciA9IChOb2RlICopIGxmaXJzdCh1cGxpc3RfaXRlbSk7CisKKwkJaWYgKHVw cGVyICYmIElzQSh1cHBlciwgRmllbGRBY2Nlc3NvckV4cHIpKQogCQl7CisJCQlGaWVsZEFjY2Vz c29yRXhwciAqZmFlID0gKEZpZWxkQWNjZXNzb3JFeHByICopIHVwcGVyOworCisJCQkvKiBVc2Ug ZG90LW5vdGF0aW9uIGZvciBmaWVsZCBhY2Nlc3MgKi8KKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFy KGJ1ZiwgJy4nKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBxdW90ZV9pZGVudGlm aWVyKGZhZS0+ZmllbGRuYW1lKSk7CisKKwkJCS8qIFNraXAgbWF0Y2hpbmcgbG93IGluZGV4IOKA lCBmaWVsZCBhY2Nlc3MgZG9lc24ndCB1c2Ugc2xpY2VzICovCisJCQlpZiAobG93bGlzdF9pdGVt KQorCQkJCWxvd2xpc3RfaXRlbSA9IGxuZXh0KHNic3JlZi0+cmVmbG93ZXJpbmRleHByLCBsb3ds aXN0X2l0ZW0pOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogVXNlIEpTT05CIGFycmF5IHN1YnNj cmlwdGluZyAqLworCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnWycpOworCQkJaWYgKGxv d2xpc3RfaXRlbSkKKwkJCXsKKwkJCQkvKiBJZiBzdWJleHByZXNzaW9uIGlzIE5VTEwsIGdldF9y dWxlX2V4cHIgcHJpbnRzIG5vdGhpbmcgKi8KKwkJCQlnZXRfcnVsZV9leHByKChOb2RlICopIGxm aXJzdChsb3dsaXN0X2l0ZW0pLCBjb250ZXh0LCBmYWxzZSk7CisJCQkJYXBwZW5kU3RyaW5nSW5m b0NoYXIoYnVmLCAnOicpOworCQkJCWxvd2xpc3RfaXRlbSA9IGxuZXh0KHNic3JlZi0+cmVmbG93 ZXJpbmRleHByLCBsb3dsaXN0X2l0ZW0pOworCQkJfQogCQkJLyogSWYgc3ViZXhwcmVzc2lvbiBp cyBOVUxMLCBnZXRfcnVsZV9leHByIHByaW50cyBub3RoaW5nICovCi0JCQlnZXRfcnVsZV9leHBy KChOb2RlICopIGxmaXJzdChsb3dsaXN0X2l0ZW0pLCBjb250ZXh0LCBmYWxzZSk7Ci0JCQlhcHBl bmRTdHJpbmdJbmZvQ2hhcihidWYsICc6Jyk7Ci0JCQlsb3dsaXN0X2l0ZW0gPSBsbmV4dChzYnNy ZWYtPnJlZmxvd2VyaW5kZXhwciwgbG93bGlzdF9pdGVtKTsKKwkJCWdldF9ydWxlX2V4cHIodXBw ZXIsIGNvbnRleHQsIGZhbHNlKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJ10nKTsK IAkJfQotCQkvKiBJZiBzdWJleHByZXNzaW9uIGlzIE5VTEwsIGdldF9ydWxlX2V4cHIgcHJpbnRz IG5vdGhpbmcgKi8KLQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAqKSBsZmlyc3QodXBsaXN0X2l0ZW0p LCBjb250ZXh0LCBmYWxzZSk7Ci0JCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJ10nKTsKIAl9 CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggNmRmY2EzY2IzNWIuLjdlODk2MjFiZDY1IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAorKysgYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtNzA4LDE4ICs3MDgsMzAgQEAgdHlwZWRlZiBzdHJ1Y3Qg U3Vic2NyaXB0aW5nUmVmCiAJaW50MzIJCXJlZnR5cG1vZCBwZ19ub2RlX2F0dHIocXVlcnlfanVt YmxlX2lnbm9yZSk7CiAJLyogY29sbGF0aW9uIG9mIHJlc3VsdCwgb3IgSW52YWxpZE9pZCBpZiBu b25lICovCiAJT2lkCQkJcmVmY29sbGlkIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3Jl KTsKLQkvKiBleHByZXNzaW9ucyB0aGF0IGV2YWx1YXRlIHRvIHVwcGVyIGNvbnRhaW5lciBpbmRl eGVzICovCisKKwkvKgorCSAqIGV4cHJlc3Npb25zIHRoYXQgZXZhbHVhdGUgdG8gdXBwZXIgY29u dGFpbmVyIGluZGV4ZXMgb3IgZXhwcmVzc2lvbnMKKwkgKiB0aGF0IGFyZSBjb2xsZWN0ZWQgYnV0 IG5vdCBldmFsdWF0ZWQgd2hlbiByZWZqc29uYnBhdGggaXMgc2V0LgorCSAqLwogCUxpc3QJICAg KnJlZnVwcGVyaW5kZXhwcjsKIAogCS8qCi0JICogZXhwcmVzc2lvbnMgdGhhdCBldmFsdWF0ZSB0 byBsb3dlciBjb250YWluZXIgaW5kZXhlcywgb3IgTklMIGZvciBzaW5nbGUKLQkgKiBjb250YWlu ZXIgZWxlbWVudC4KKwkgKiBleHByZXNzaW9ucyB0aGF0IGV2YWx1YXRlIHRvIGxvd2VyIGNvbnRh aW5lciBpbmRleGVzLCBvciBOSUwgZm9yIGEKKwkgKiBzaW5nbGUgY29udGFpbmVyIGVsZW1lbnQs IG9yIGV4cHJlc3Npb25zIHRoYXQgYXJlIGNvbGxlY3RlZCBidXQgbm90CisJICogZXZhbHVhdGVk IHdoZW4gcmVmanNvbmJwYXRoIGlzIHNldC4KIAkgKi8KIAlMaXN0CSAgICpyZWZsb3dlcmluZGV4 cHI7CiAJLyogdGhlIGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gYSBjb250YWluZXIgdmFs dWUgKi8KIAlFeHByCSAgICpyZWZleHByOwogCS8qIGV4cHJlc3Npb24gZm9yIHRoZSBzb3VyY2Ug dmFsdWUsIG9yIE5VTEwgaWYgZmV0Y2ggKi8KIAlFeHByCSAgICpyZWZhc3NnbmV4cHI7CisKKwkv KgorCSAqIGNvbnRhaW5lci1zcGVjaWZpYyBleHRyYSBpbmZvcm1hdGlvbiwgY3VycmVudGx5IHVz ZWQgb25seSBieSBqc29uYi4KKwkgKiBzdG9yZXMgYSBKc29uUGF0aCBleHByZXNzaW9uIHdoZW4g anNvbmIgZG90IG5vdGF0aW9uIGlzIHVzZWQuIE5VTEwgZm9yCisJICogc2ltcGxlIHN1YnNjcmlw dGluZy4KKwkgKi8KKwlOb2RlCSAgICpyZWZqc29uYnBhdGg7CiB9IFN1YnNjcmlwdGluZ1JlZjsK IAogLyoKQEAgLTIzNzEsNCArMjM4Myw0MCBAQCB0eXBlZGVmIHN0cnVjdCBPbkNvbmZsaWN0RXhw cgogCUxpc3QJICAgKmV4Y2xSZWxUbGlzdDsJLyogdGxpc3Qgb2YgdGhlIEVYQ0xVREVEIHBzZXVk byByZWxhdGlvbiAqLwogfSBPbkNvbmZsaWN0RXhwcjsKIAorLyoKKyAqIEZpZWxkQWNjZXNzb3JF eHByIC0gcmVwcmVzZW50cyBhIHNpbmdsZSBvYmplY3QgbWVtYmVyIGFjY2VzcyB1c2luZyBkb3Qt bm90YXRpb24KKyAqCQlpbiBKU09OIHNpbXBsaWZpZWQgYWNjZXNzb3Igc3ludGF4IChlLmcuLCBq c29uYl9jb2wuYSkuCisgKgorICogVGhlc2Ugbm9kZXMgYXBwZWFyIGFzIGxpc3QgZWxlbWVudHMg aW4gU3Vic2NyaXB0aW5nUmVmLnJlZnVwcGVyaW5kZXhwciB0bworICogaW5kaWNhdGUgSlNPTiBv YmplY3Qga2V5IGFjY2Vzcy4gVGhleSBhcmUgbm90IGV2YWx1YWJsZSBleHByZXNzaW9ucyBieQor ICogdGhlbXNlbHZlcyBidXQgc2VydmUgYXMgcGxhY2Vob2xkZXJzIHRvIHByZXNlcnZlIHNvdXJj ZS1sZXZlbCBzeW50YXggZm9yCisgKiBydWxlIHJld3JpdGluZyBhbmQgZGVwYXJzaW5nIChlLmcu LCBpbiBFWFBMQUlOIGFuZCB2aWV3IGRlZmluaXRpb25zKS4KKyAqIEV4ZWN1dGlvbiBpcyBoYW5k bGVkIGJ5IHRoZSBlbmNsb3NpbmcgU3Vic2NyaXB0aW5nUmVmLgorICoKKyAqIElmIGRvdC1ub3Rh dGlvbiBpcyB1c2VkIGluIGEgU3Vic2NyaXB0aW5nUmVmLCB0aGUgSlNPTiBwYXRoIGlzIHJlcHJl c2VudGVkCisgKiBhcyBhIGZsYXQgbGlzdCBvZiBGaWVsZEFjY2Vzc29yRXhwciBub2RlcyAoZm9y IG9iamVjdCBmaWVsZCBhY2Nlc3MpLCBDb25zdAorICogbm9kZXMgKGZvciBhcnJheSBpbmRleGVz KSwgYW5kIE5VTExzIChmb3Igb21pdHRlZCBzbGljZSBib3VuZHMpLCByYXRoZXIgdGhhbgorICog dGhyb3VnaCBuZXN0ZWQgZXhwcmVzc2lvbiB0cmVlcy4KKyAqCisgKiBOb3RlOiBUaGUgZmxhdCBy ZXByZXNlbnRhdGlvbiBhdm9pZHMgbmVzdGVkIEZpZWxkQWNjZXNzb3JFeHByIGNoYWlucywKKyAq IHNpbXBsaWZ5aW5nIGV2YWx1YXRpb24gYW5kIGVuYWJsaW5nIHN0YW5kYXJkLWNvbXBsaWFudCBi ZWhhdmlvciBzdWNoIGFzCisgKiBjb25kaXRpb25hbCBhcnJheSB3cmFwcGluZy4gVGhpcyBhdm9p ZHMgdGhlIG5lZWQgZm9yIHBvc2l0aW9uLWF3YXJlCisgKiB3cmFwcGluZy91bndyYXBwaW5nIGxv Z2ljIGR1cmluZyBleGVjdXRpb24uCisgKgorICogRm9yIGV4YW1wbGUsIGluIHRoZSBleHByZXNz aW9uOgorICoJCSgneyJhIjogW3siYiI6IDF9XX0nOjpqc29uYikuYVswXS5iCisgKiB0aGUgU3Vi c2NyaXB0aW5nUmVmIHdpbGwgY29udGFpbjoKKyAqCQktIHJlZmV4cHI6IHRoZSBiYXNlIGV4cHJl c3Npb24gKHRoZSBqc29uYiB2YWx1ZSkKKyAqCQktIHJlZnVwcGVyaW5kZXhwcjogW0ZpZWxkQWNj ZXNzb3JFeHByKCJhIiksIENvbnN0KDApLAorICoJCQlGaWVsZEFjY2Vzc29yRXhwcigiYiIpXQor ICoJCS0gcmVmbG93ZXJpbmRleHByOiBbTlVMTCwgTlVMTCwgTlVMTF0gKHNsaWNlIGxvd2VyIGJv dW5kcyBub3QgdXNlZCBoZXJlKQorICovCit0eXBlZGVmIHN0cnVjdCBGaWVsZEFjY2Vzc29yRXhw cgoreworCU5vZGVUYWcJCXR5cGU7CisJY2hhcgkgICAqZmllbGRuYW1lOwkJLyogbmFtZSBvZiB0 aGUgSlNPTkIgb2JqZWN0IGZpZWxkIGFjY2Vzc2VkIHZpYQorCQkJCQkJCQkgKiBkb3Qgbm90YXRp b24gKi8KKwlPaWQJCQlmYWVjb2xsaWQgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUp OworfQkJCUZpZWxkQWNjZXNzb3JFeHByOworCiAjZW5kaWYJCQkJCQkJLyogUFJJTU5PREVTX0gg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3Fs anNvbi5jIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLmMK aW5kZXggMzkyMjFmOWVhNWQuLmU2YTdlY2U2ZGFiIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNl cy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uYworKysgYi9zcmMvaW50ZXJmYWNlcy9l Y3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uYwpAQCAtNDE3LDEyICs0MTcsMTIyIEBAIGlm IChzcWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CiAJICBmb3IgKGludCBpID0gMDsgaSA8 IHNpemVvZihpc19qc29uKTsgaSsrKQogCQkgIHByaW50ZigiRm91bmQgaXNfanNvblslZF06ICVz XG4iLCBpLCBpc19qc29uW2ldID8gInRydWUiIDogImZhbHNlIik7CiAKLSAgeyBFQ1BHZGlzY29u bmVjdChfX0xJTkVfXywgIkNVUlJFTlQiKTsKKwl7IEVDUEdkbyhfX0xJTkVfXywgMCwgMSwgTlVM TCwgMCwgRUNQR3N0X25vcm1hbCwgInNlbGVjdCBqc29uICggKCAne1wiYVwiOiB7XCJiXCI6IDEs IFwiY1wiOiAyfX0nIDo6IGpzb25iICkgLiBcImFcIiApIiwgRUNQR3RfRU9JVCwgCisJRUNQR3Rf Y2hhciwoanNvbiksKGxvbmcpMTAyNCwobG9uZykxLCgxMDI0KSpzaXplb2YoY2hhciksIAorCUVD UEd0X05PX0lORElDQVRPUiwgTlVMTCAsIDBMLCAwTCwgMEwsIEVDUEd0X0VPUlQpOwogI2xpbmUg MTE4ICJzcWxqc29uLnBnYyIKIAogaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30K ICNsaW5lIDExOCAic3FsanNvbi5wZ2MiCiAKKwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpz b24pOworCisJeyBFQ1BHZG8oX19MSU5FX18sIDAsIDEsIE5VTEwsIDAsIEVDUEdzdF9ub3JtYWws ICJzZWxlY3QganNvbiAoICd7XCJhXCI6IHtcImJcIjogMSwgXCJjXCI6IDJ9fScgOjoganNvbmIg LiBcImFcIiApIiwgRUNQR3RfRU9JVCwgCisJRUNQR3RfY2hhciwoanNvbiksKGxvbmcpMTAyNCwo bG9uZykxLCgxMDI0KSpzaXplb2YoY2hhciksIAorCUVDUEd0X05PX0lORElDQVRPUiwgTlVMTCAs IDBMLCAwTCwgMEwsIEVDUEd0X0VPUlQpOworI2xpbmUgMTIxICJzcWxqc29uLnBnYyIKKworaWYg KHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KKyNsaW5lIDEyMSAic3FsanNvbi5wZ2Mi CisKKwkvLyBlcnJvcgorCisJeyBFQ1BHZG8oX19MSU5FX18sIDAsIDEsIE5VTEwsIDAsIEVDUEdz dF9ub3JtYWwsICJzZWxlY3QganNvbiAoICggJ3tcImFcIjoge1wiYlwiOiAxLCBcImNcIjogMn19 JyA6OiBqc29uYiApIC4gYSApIiwgRUNQR3RfRU9JVCwgCisJRUNQR3RfY2hhciwoanNvbiksKGxv bmcpMTAyNCwobG9uZykxLCgxMDI0KSpzaXplb2YoY2hhciksIAorCUVDUEd0X05PX0lORElDQVRP UiwgTlVMTCAsIDBMLCAwTCwgMEwsIEVDUEd0X0VPUlQpOworI2xpbmUgMTI0ICJzcWxqc29uLnBn YyIKKworaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KKyNsaW5lIDEyNCAic3Fs anNvbi5wZ2MiCisKKwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24pOworCisJeyBFQ1BH ZG8oX19MSU5FX18sIDAsIDEsIE5VTEwsIDAsIEVDUEdzdF9ub3JtYWwsICJzZWxlY3QganNvbiAo ICggJ3tcImFcIjoge1wiYlwiOiAxLCBcImNcIjogMn19JyA6OiBqc29uYiApIC4gYSAuIGIgKSIs IEVDUEd0X0VPSVQsIAorCUVDUEd0X2NoYXIsKGpzb24pLChsb25nKTEwMjQsKGxvbmcpMSwoMTAy NCkqc2l6ZW9mKGNoYXIpLCAKKwlFQ1BHdF9OT19JTkRJQ0FUT1IsIE5VTEwgLCAwTCwgMEwsIDBM LCBFQ1BHdF9FT1JUKTsKKyNsaW5lIDEyNyAic3FsanNvbi5wZ2MiCisKK2lmIChzcWxjYS5zcWxj b2RlIDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAxMjcgInNxbGpzb24ucGdjIgorCisJcHJpbnRm KCJGb3VuZCBqc29uPSVzXG4iLCBqc29uKTsKKworCXsgRUNQR2RvKF9fTElORV9fLCAwLCAxLCBO VUxMLCAwLCBFQ1BHc3Rfbm9ybWFsLCAic2VsZWN0IGpzb24gKCBjb2FsZXNjZSAoIGpzb24gKCAo ICd7XCJhXCI6IHtcImJcIjogMSwgXCJjXCI6IDJ9fScgOjoganNvbmIgKSAuIGMgKSAsICdudWxs JyApICkiLCBFQ1BHdF9FT0lULCAKKwlFQ1BHdF9jaGFyLChqc29uKSwobG9uZykxMDI0LChsb25n KTEsKDEwMjQpKnNpemVvZihjaGFyKSwgCisJRUNQR3RfTk9fSU5ESUNBVE9SLCBOVUxMICwgMEws IDBMLCAwTCwgRUNQR3RfRU9SVCk7CisjbGluZSAxMzAgInNxbGpzb24ucGdjIgorCitpZiAoc3Fs Y2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7fQorI2xpbmUgMTMwICJzcWxqc29uLnBnYyIKKwor CXByaW50ZigiRm91bmQganNvbj0lc1xuIiwganNvbik7CisKKwl7IEVDUEdkbyhfX0xJTkVfXywg MCwgMSwgTlVMTCwgMCwgRUNQR3N0X25vcm1hbCwgInNlbGVjdCBqc29uICggKCAne1wiYVwiOiB7 XCJiXCI6IDEsIFwiY1wiOiAyfSwgXCJiXCI6IFt7XCJ4XCI6IDF9LCB7XCJ4XCI6IFsxMiwge1wi eVwiOjF9XX1dfScgOjoganNvbmIgKSAuIGIgWyAwIF0gKSIsIEVDUEd0X0VPSVQsIAorCUVDUEd0 X2NoYXIsKGpzb24pLChsb25nKTEwMjQsKGxvbmcpMSwoMTAyNCkqc2l6ZW9mKGNoYXIpLCAKKwlF Q1BHdF9OT19JTkRJQ0FUT1IsIE5VTEwgLCAwTCwgMEwsIDBMLCBFQ1BHdF9FT1JUKTsKKyNsaW5l IDEzMyAic3FsanNvbi5wZ2MiCisKK2lmIChzcWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9 CisjbGluZSAxMzMgInNxbGpzb24ucGdjIgorCisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4iLCBq c29uKTsKKworCXsgRUNQR2RvKF9fTElORV9fLCAwLCAxLCBOVUxMLCAwLCBFQ1BHc3Rfbm9ybWFs LCAic2VsZWN0IGpzb24gKCAoICd7XCJhXCI6IHtcImJcIjogMSwgXCJjXCI6IDJ9LCBcImJcIjog W3tcInhcIjogMX0sIHtcInhcIjogWzEyLCB7XCJ5XCI6MX1dfV19JyA6OiBqc29uYiApIC4gYiAu IHggKSIsIEVDUEd0X0VPSVQsIAorCUVDUEd0X2NoYXIsKGpzb24pLChsb25nKTEwMjQsKGxvbmcp MSwoMTAyNCkqc2l6ZW9mKGNoYXIpLCAKKwlFQ1BHdF9OT19JTkRJQ0FUT1IsIE5VTEwgLCAwTCwg MEwsIDBMLCBFQ1BHdF9FT1JUKTsKKyNsaW5lIDEzNiAic3FsanNvbi5wZ2MiCisKK2lmIChzcWxj YS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAxMzYgInNxbGpzb24ucGdjIgorCisJ cHJpbnRmKCJGb3VuZCBqc29uPSVzXG4iLCBqc29uKTsKKworCXsgRUNQR2RvKF9fTElORV9fLCAw LCAxLCBOVUxMLCAwLCBFQ1BHc3Rfbm9ybWFsLCAic2VsZWN0IGpzb24gKCAoICd7XCJhXCI6IHtc ImJcIjogMSwgXCJjXCI6IDJ9LCBcImJcIjogW3tcInhcIjogMX0sIHtcInhcIjogWzEyLCB7XCJ5 XCI6MX1dfV19JyA6OiBqc29uYiApIFsgJ2InIF0gWyAwIF0gKSIsIEVDUEd0X0VPSVQsIAorCUVD UEd0X2NoYXIsKGpzb24pLChsb25nKTEwMjQsKGxvbmcpMSwoMTAyNCkqc2l6ZW9mKGNoYXIpLCAK KwlFQ1BHdF9OT19JTkRJQ0FUT1IsIE5VTEwgLCAwTCwgMEwsIDBMLCBFQ1BHdF9FT1JUKTsKKyNs aW5lIDEzOSAic3FsanNvbi5wZ2MiCisKK2lmIChzcWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQo KTt9CisjbGluZSAxMzkgInNxbGpzb24ucGdjIgorCisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4i LCBqc29uKTsKKworCXsgRUNQR2RvKF9fTElORV9fLCAwLCAxLCBOVUxMLCAwLCBFQ1BHc3Rfbm9y bWFsLCAic2VsZWN0IGpzb24gKCAoICd7XCJhXCI6IHtcImJcIjogMSwgXCJjXCI6IDJ9LCBcImJc IjogW3tcInhcIjogMX0sIHtcInhcIjogWzEyLCB7XCJ5XCI6MX1dfV19JyA6OiBqc29uYiApIC4g YiBbIDEgXSAuIHggWyAwIDogXSApIiwgRUNQR3RfRU9JVCwgCisJRUNQR3RfY2hhciwoanNvbiks KGxvbmcpMTAyNCwobG9uZykxLCgxMDI0KSpzaXplb2YoY2hhciksIAorCUVDUEd0X05PX0lORElD QVRPUiwgTlVMTCAsIDBMLCAwTCwgMEwsIEVDUEd0X0VPUlQpOworI2xpbmUgMTQyICJzcWxqc29u LnBnYyIKKworaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KKyNsaW5lIDE0MiAi c3FsanNvbi5wZ2MiCisKKwkvLyBlcnJvcgorCisJeyBFQ1BHZG8oX19MSU5FX18sIDAsIDEsIE5V TEwsIDAsIEVDUEdzdF9ub3JtYWwsICJzZWxlY3QganNvbiAoICggJ3tcImFcIjoge1wiYlwiOiAx LCBcImNcIjogMn0sIFwiYlwiOiBbe1wieFwiOiAxfSwge1wieFwiOiBbMTIsIHtcInlcIjoxfV19 XX0nIDo6IGpzb25iICkgLiAqICkiLCBFQ1BHdF9FT0lULCAKKwlFQ1BHdF9jaGFyLChqc29uKSwo bG9uZykxMDI0LChsb25nKTEsKDEwMjQpKnNpemVvZihjaGFyKSwgCisJRUNQR3RfTk9fSU5ESUNB VE9SLCBOVUxMICwgMEwsIDBMLCAwTCwgRUNQR3RfRU9SVCk7CisjbGluZSAxNDUgInNxbGpzb24u cGdjIgorCitpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7fQorI2xpbmUgMTQ1ICJz cWxqc29uLnBnYyIKKworCS8vIGVycm9yCisKKwl7IEVDUEdkbyhfX0xJTkVfXywgMCwgMSwgTlVM TCwgMCwgRUNQR3N0X25vcm1hbCwgInNlbGVjdCBqc29uICggKCAne1wiYVwiOiB7XCJiXCI6IDEs IFwiY1wiOiAyfSwgXCJiXCI6IFt7XCJ4XCI6IDF9LCB7XCJ4XCI6IFsxMiwge1wieVwiOjF9XX1d fScgOjoganNvbmIgKSBbICdiJyBdIFsgMCA6IF0gKSIsIEVDUEd0X0VPSVQsIAorCUVDUEd0X2No YXIsKGpzb24pLChsb25nKTEwMjQsKGxvbmcpMSwoMTAyNCkqc2l6ZW9mKGNoYXIpLCAKKwlFQ1BH dF9OT19JTkRJQ0FUT1IsIE5VTEwgLCAwTCwgMEwsIDBMLCBFQ1BHdF9FT1JUKTsKKyNsaW5lIDE0 OCAic3FsanNvbi5wZ2MiCisKK2lmIChzcWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9Cisj bGluZSAxNDggInNxbGpzb24ucGdjIgorCisJLy8gZXJyb3IKKworICB7IEVDUEdkaXNjb25uZWN0 KF9fTElORV9fLCAiQ1VSUkVOVCIpOworI2xpbmUgMTUxICJzcWxqc29uLnBnYyIKKworaWYgKHNx bGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KKyNsaW5lIDE1MSAic3FsanNvbi5wZ2MiCisK IAogICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9l eHBlY3RlZC9zcWwtc3FsanNvbi5zdGRlcnIgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhw ZWN0ZWQvc3FsLXNxbGpzb24uc3RkZXJyCmluZGV4IGU1NWE5NWRkNzExLi4xOWY4YzU4YWYwNiAx MDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29u LnN0ZGVycgorKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpz b24uc3RkZXJyCkBAIC0yNjgsNSArMjY4LDEwNSBAQCBTUUwgZXJyb3I6IGNhbm5vdCB1c2UgdHlw ZSBqc29uYiBpbiBSRVRVUk5JTkcgY2xhdXNlIG9mIEpTT05fU0VSSUFMSVpFKCkgb24gbGluZQog W05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKIFtOT19QSURdOiBlY3BnX2dl dF9kYXRhIG9uIGxpbmUgMTAyOiBSRVNVTFQ6IGYgb2Zmc2V0OiAtMTsgYXJyYXk6IG5vCiBbTk9f UElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0 ZSBvbiBsaW5lIDExODogcXVlcnk6IHNlbGVjdCBqc29uICggKCAneyJhIjogeyJiIjogMSwgImMi OiAyfX0nIDo6IGpzb25iICkgLiAiYSIgKTsgd2l0aCAwIHBhcmFtZXRlcihzKSBvbiBjb25uZWN0 aW9uIGVjcGcxX3JlZ3Jlc3Npb24KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAw MDAwCitbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTE4OiB1c2luZyBQUWV4ZWMKK1tO T19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19wcm9j ZXNzX291dHB1dCBvbiBsaW5lIDExODogY29ycmVjdGx5IGdvdCAxIHR1cGxlcyB3aXRoIDEgZmll bGRzCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVj cGdfZ2V0X2RhdGEgb24gbGluZSAxMTg6IFJFU1VMVDogeyJiIjogMSwgImMiOiAyfSBvZmZzZXQ6 IC0xOyBhcnJheTogbm8KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitb Tk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTIxOiBxdWVyeTogc2VsZWN0IGpzb24gKCAn eyJhIjogeyJiIjogMSwgImMiOiAyfX0nIDo6IGpzb25iIC4gImEiICk7IHdpdGggMCBwYXJhbWV0 ZXIocykgb24gY29ubmVjdGlvbiBlY3BnMV9yZWdyZXNzaW9uCitbTk9fUElEXTogc3FsY2E6IGNv ZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDEyMTog dXNpbmcgUFFleGVjCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05P X1BJRF06IGVjcGdfY2hlY2tfUFFyZXN1bHQgb24gbGluZSAxMjE6IGJhZCByZXNwb25zZSAtIEVS Uk9SOiAgc2NoZW1hICJqc29uYiIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMTogc2VsZWN0IGpzb24g KCAneyJhIjogeyJiIjogMSwgImMiOiAyfX0nIDo6IGpzb25iIC4gImEiICkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1tOT19QSURdOiBzcWxj YTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogcmFpc2luZyBzcWxzdGF0ZSAzRjAw MCAoc3FsY29kZSAtNDAwKTogc2NoZW1hICJqc29uYiIgZG9lcyBub3QgZXhpc3Qgb24gbGluZSAx MjEKK1tOT19QSURdOiBzcWxjYTogY29kZTogLTQwMCwgc3RhdGU6IDNGMDAwCitTUUwgZXJyb3I6 IHNjaGVtYSAianNvbmIiIGRvZXMgbm90IGV4aXN0IG9uIGxpbmUgMTIxCitbTk9fUElEXTogZWNw Z19leGVjdXRlIG9uIGxpbmUgMTI0OiBxdWVyeTogc2VsZWN0IGpzb24gKCAoICd7ImEiOiB7ImIi OiAxLCAiYyI6IDJ9fScgOjoganNvbmIgKSAuIGEgKTsgd2l0aCAwIHBhcmFtZXRlcihzKSBvbiBj b25uZWN0aW9uIGVjcGcxX3JlZ3Jlc3Npb24KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3Rh dGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTI0OiB1c2luZyBQUWV4 ZWMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNw Z19wcm9jZXNzX291dHB1dCBvbiBsaW5lIDEyNDogY29ycmVjdGx5IGdvdCAxIHR1cGxlcyB3aXRo IDEgZmllbGRzCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJ RF06IGVjcGdfZ2V0X2RhdGEgb24gbGluZSAxMjQ6IFJFU1VMVDogeyJiIjogMSwgImMiOiAyfSBv ZmZzZXQ6IC0xOyBhcnJheTogbm8KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAw MDAwCitbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTI3OiBxdWVyeTogc2VsZWN0IGpz b24gKCAoICd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9fScgOjoganNvbmIgKSAuIGEgLiBiICk7IHdp dGggMCBwYXJhbWV0ZXIocykgb24gY29ubmVjdGlvbiBlY3BnMV9yZWdyZXNzaW9uCitbTk9fUElE XTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBv biBsaW5lIDEyNzogdXNpbmcgUFFleGVjCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRl OiAwMDAwMAorW05PX1BJRF06IGVjcGdfcHJvY2Vzc19vdXRwdXQgb24gbGluZSAxMjc6IGNvcnJl Y3RseSBnb3QgMSB0dXBsZXMgd2l0aCAxIGZpZWxkcworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAw LCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2dldF9kYXRhIG9uIGxpbmUgMTI3OiBSRVNV TFQ6IDEgb2Zmc2V0OiAtMTsgYXJyYXk6IG5vCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0 YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDEzMDogcXVlcnk6IHNl bGVjdCBqc29uICggY29hbGVzY2UgKCBqc29uICggKCAneyJhIjogeyJiIjogMSwgImMiOiAyfX0n IDo6IGpzb25iICkgLiBjICkgLCAnbnVsbCcgKSApOyB3aXRoIDAgcGFyYW1ldGVyKHMpIG9uIGNv bm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbgorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0 ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxMzA6IHVzaW5nIFBRZXhl YworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3Bn X3Byb2Nlc3Nfb3V0cHV0IG9uIGxpbmUgMTMwOiBjb3JyZWN0bHkgZ290IDEgdHVwbGVzIHdpdGgg MSBmaWVsZHMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElE XTogZWNwZ19nZXRfZGF0YSBvbiBsaW5lIDEzMDogUkVTVUxUOiBudWxsIG9mZnNldDogLTE7IGFy cmF5OiBubworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURd OiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxMzM6IHF1ZXJ5OiBzZWxlY3QganNvbiAoICggJ3siYSI6 IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6MX1dfV19 JyA6OiBqc29uYiApIC4gYiBbIDAgXSApOyB3aXRoIDAgcGFyYW1ldGVyKHMpIG9uIGNvbm5lY3Rp b24gZWNwZzFfcmVncmVzc2lvbgorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAw MDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxMzM6IHVzaW5nIFBRZXhlYworW05P X1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX3Byb2Nl c3Nfb3V0cHV0IG9uIGxpbmUgMTMzOiBjb3JyZWN0bHkgZ290IDEgdHVwbGVzIHdpdGggMSBmaWVs ZHMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNw Z19nZXRfZGF0YSBvbiBsaW5lIDEzMzogUkVTVUxUOiB7IngiOiAxfSBvZmZzZXQ6IC0xOyBhcnJh eTogbm8KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTog ZWNwZ19leGVjdXRlIG9uIGxpbmUgMTM2OiBxdWVyeTogc2VsZWN0IGpzb24gKCAoICd7ImEiOiB7 ImIiOiAxLCAiYyI6IDJ9LCAiYiI6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOjF9XX1dfScg OjoganNvbmIgKSAuIGIgLiB4ICk7IHdpdGggMCBwYXJhbWV0ZXIocykgb24gY29ubmVjdGlvbiBl Y3BnMV9yZWdyZXNzaW9uCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAor W05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDEzNjogdXNpbmcgUFFleGVjCitbTk9fUElE XTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfcHJvY2Vzc19v dXRwdXQgb24gbGluZSAxMzY6IGNvcnJlY3RseSBnb3QgMSB0dXBsZXMgd2l0aCAxIGZpZWxkcwor W05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2dl dF9kYXRhIG9uIGxpbmUgMTM2OiBSRVNVTFQ6IFsxLCBbMTIsIHsieSI6IDF9XV0gb2Zmc2V0OiAt MTsgYXJyYXk6IG5vCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05P X1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDEzOTogcXVlcnk6IHNlbGVjdCBqc29uICggKCAn eyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIiOiBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5Ijox fV19XX0nIDo6IGpzb25iICkgWyAnYicgXSBbIDAgXSApOyB3aXRoIDAgcGFyYW1ldGVyKHMpIG9u IGNvbm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbgorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBz dGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxMzk6IHVzaW5nIFBR ZXhlYworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBl Y3BnX3Byb2Nlc3Nfb3V0cHV0IG9uIGxpbmUgMTM5OiBjb3JyZWN0bHkgZ290IDEgdHVwbGVzIHdp dGggMSBmaWVsZHMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9f UElEXTogZWNwZ19nZXRfZGF0YSBvbiBsaW5lIDEzOTogUkVTVUxUOiB7IngiOiAxfSBvZmZzZXQ6 IC0xOyBhcnJheTogbm8KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitb Tk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTQyOiBxdWVyeTogc2VsZWN0IGpzb24gKCAo ICd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9LCAiYiI6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7Inki OjF9XX1dfScgOjoganNvbmIgKSAuIGIgWyAxIF0gLiB4IFsgMCA6IF0gKTsgd2l0aCAwIHBhcmFt ZXRlcihzKSBvbiBjb25uZWN0aW9uIGVjcGcxX3JlZ3Jlc3Npb24KK1tOT19QSURdOiBzcWxjYTog Y29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTQy OiB1c2luZyBQUWV4ZWMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitb Tk9fUElEXTogZWNwZ19jaGVja19QUXJlc3VsdCBvbiBsaW5lIDE0MjogYmFkIHJlc3BvbnNlIC0g RVJST1I6ICBqc29uYiBzdWJzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMKK0xJTkUgMTog Li4uLCB7IngiOiBbMTIsIHsieSI6MX1dfV19JyA6OiBqc29uYiApIC4gYiBbIDEgXSAuIHggWyAw IDogXSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAK K1tOT19QSURdOiByYWlzaW5nIHNxbHN0YXRlIDQyODA0IChzcWxjb2RlIC00MDApOiBqc29uYiBz dWJzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMgb24gbGluZSAxNDIKK1tOT19QSURdOiBz cWxjYTogY29kZTogLTQwMCwgc3RhdGU6IDQyODA0CitTUUwgZXJyb3I6IGpzb25iIHN1YnNjcmlw dCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcyBvbiBsaW5lIDE0MgorW05PX1BJRF06IGVjcGdfZXhl Y3V0ZSBvbiBsaW5lIDE0NTogcXVlcnk6IHNlbGVjdCBqc29uICggKCAneyJhIjogeyJiIjogMSwg ImMiOiAyfSwgImIiOiBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5IjoxfV19XX0nIDo6IGpzb25i ICkgLiAqICk7IHdpdGggMCBwYXJhbWV0ZXIocykgb24gY29ubmVjdGlvbiBlY3BnMV9yZWdyZXNz aW9uCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVj cGdfZXhlY3V0ZSBvbiBsaW5lIDE0NTogdXNpbmcgUFFleGVjCitbTk9fUElEXTogc3FsY2E6IGNv ZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfY2hlY2tfUFFyZXN1bHQgb24gbGlu ZSAxNDU6IGJhZCByZXNwb25zZSAtIEVSUk9SOiAgcm93IGV4cGFuc2lvbiB2aWEgIioiIGlzIG5v dCBzdXBwb3J0ZWQgaGVyZQorTElORSAxOiBzZWxlY3QganNvbiAoICggJ3siYSI6IHsiYiI6IDEs ICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7InguLi4KKyAgICAgICAgICAgICAgICAgICAgICAg IF4KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogcmFp c2luZyBzcWxzdGF0ZSAwQTAwMCAoc3FsY29kZSAtNDAwKTogcm93IGV4cGFuc2lvbiB2aWEgIioi IGlzIG5vdCBzdXBwb3J0ZWQgaGVyZSBvbiBsaW5lIDE0NQorW05PX1BJRF06IHNxbGNhOiBjb2Rl OiAtNDAwLCBzdGF0ZTogMEEwMDAKK1NRTCBlcnJvcjogcm93IGV4cGFuc2lvbiB2aWEgIioiIGlz IG5vdCBzdXBwb3J0ZWQgaGVyZSBvbiBsaW5lIDE0NQorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBv biBsaW5lIDE0ODogcXVlcnk6IHNlbGVjdCBqc29uICggKCAneyJhIjogeyJiIjogMSwgImMiOiAy fSwgImIiOiBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5IjoxfV19XX0nIDo6IGpzb25iICkgWyAn YicgXSBbIDAgOiBdICk7IHdpdGggMCBwYXJhbWV0ZXIocykgb24gY29ubmVjdGlvbiBlY3BnMV9y ZWdyZXNzaW9uCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJ RF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDE0ODogdXNpbmcgUFFleGVjCitbTk9fUElEXTogc3Fs Y2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfY2hlY2tfUFFyZXN1bHQg b24gbGluZSAxNDg6IGJhZCByZXNwb25zZSAtIEVSUk9SOiAganNvbmIgc3Vic2NyaXB0IGRvZXMg bm90IHN1cHBvcnQgc2xpY2VzCitMSU5FIDE6IC4uLngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOjF9 XX1dfScgOjoganNvbmIgKSBbICdiJyBdIFsgMCA6IF0gKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1tOT19QSURdOiBz cWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogcmFpc2luZyBzcWxzdGF0ZSA0 MjgwNCAoc3FsY29kZSAtNDAwKToganNvbmIgc3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xp Y2VzIG9uIGxpbmUgMTQ4CitbTk9fUElEXTogc3FsY2E6IGNvZGU6IC00MDAsIHN0YXRlOiA0Mjgw NAorU1FMIGVycm9yOiBqc29uYiBzdWJzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMgb24g bGluZSAxNDgKIFtOT19QSURdOiBlY3BnX2ZpbmlzaDogY29ubmVjdGlvbiBlY3BnMV9yZWdyZXNz aW9uIGNsb3NlZAogW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKZGlmZiAt LWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5zdGRv dXQgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uc3Rkb3V0 CmluZGV4IDgzZjhkZjEzZTVhLi40NDJkMzY5MzFmMSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFj ZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLnN0ZG91dAorKysgYi9zcmMvaW50ZXJm YWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uc3Rkb3V0CkBAIC0yOCwzICsyOCwx MCBAQCBGb3VuZCBpc19qc29uWzRdOiBmYWxzZQogRm91bmQgaXNfanNvbls1XTogZmFsc2UKIEZv dW5kIGlzX2pzb25bNl06IHRydWUKIEZvdW5kIGlzX2pzb25bN106IGZhbHNlCitGb3VuZCBqc29u PXsiYiI6IDEsICJjIjogMn0KK0ZvdW5kIGpzb249eyJiIjogMSwgImMiOiAyfQorRm91bmQganNv bj0xCitGb3VuZCBqc29uPW51bGwKK0ZvdW5kIGpzb249eyJ4IjogMX0KK0ZvdW5kIGpzb249WzEs IFsxMiwgeyJ5IjogMX1dXQorRm91bmQganNvbj17IngiOiAxfQpkaWZmIC0tZ2l0IGEvc3JjL2lu dGVyZmFjZXMvZWNwZy90ZXN0L3NxbC9zcWxqc29uLnBnYyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcv dGVzdC9zcWwvc3FsanNvbi5wZ2MKaW5kZXggZGRjYmNjM2IzY2IuLjU3YTliZmY0MjRkIDEwMDY0 NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpzb24ucGdjCisrKyBiL3Ny Yy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvc3FsanNvbi5wZ2MKQEAgLTExNSw2ICsxMTUsMzkg QEAgRVhFQyBTUUwgRU5EIERFQ0xBUkUgU0VDVElPTjsKIAkgIGZvciAoaW50IGkgPSAwOyBpIDwg c2l6ZW9mKGlzX2pzb24pOyBpKyspCiAJCSAgcHJpbnRmKCJGb3VuZCBpc19qc29uWyVkXTogJXNc biIsIGksIGlzX2pzb25baV0gPyAidHJ1ZSIgOiAiZmFsc2UiKTsKIAorCUVYRUMgU1FMIFNFTEVD VCBKU09OKCgneyJhIjogeyJiIjogMSwgImMiOiAyfX0nOjpqc29uYikuImEiKSBJTlRPIDpqc29u OworCXByaW50ZigiRm91bmQganNvbj0lc1xuIiwganNvbik7CisKKwlFWEVDIFNRTCBTRUxFQ1Qg SlNPTigneyJhIjogeyJiIjogMSwgImMiOiAyfX0nOjpqc29uYi4iYSIpIElOVE8gOmpzb247CisJ Ly8gZXJyb3IKKworCUVYRUMgU1FMIFNFTEVDVCBKU09OKCgneyJhIjogeyJiIjogMSwgImMiOiAy fX0nOjpqc29uYikuYSkgSU5UTyA6anNvbjsKKwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpz b24pOworCisJRVhFQyBTUUwgU0VMRUNUIEpTT04oKCd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9fSc6 Ompzb25iKS5hLmIpIElOVE8gOmpzb247CisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4iLCBqc29u KTsKKworCUVYRUMgU1FMIFNFTEVDVCBKU09OKENPQUxFU0NFKEpTT04oKCd7ImEiOiB7ImIiOiAx LCAiYyI6IDJ9fSc6Ompzb25iKS5jKSwgJ251bGwnKSkgSU5UTyA6anNvbjsKKwlwcmludGYoIkZv dW5kIGpzb249JXNcbiIsIGpzb24pOworCisJRVhFQyBTUUwgU0VMRUNUIEpTT04oKCd7ImEiOiB7 ImIiOiAxLCAiYyI6IDJ9LCAiYiI6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOjF9XX1dfSc6 Ompzb25iKS5iWzBdKSBJTlRPIDpqc29uOworCXByaW50ZigiRm91bmQganNvbj0lc1xuIiwganNv bik7CisKKwlFWEVDIFNRTCBTRUxFQ1QgSlNPTigoJ3siYSI6IHsiYiI6IDEsICJjIjogMn0sICJi IjogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6MX1dfV19Jzo6anNvbmIpLmIueCkgSU5UTyA6 anNvbjsKKwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24pOworCisJRVhFQyBTUUwgU0VM RUNUIEpTT04oKCd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9LCAiYiI6IFt7IngiOiAxfSwgeyJ4Ijog WzEyLCB7InkiOjF9XX1dfSc6Ompzb25iKVsnYiddWzBdKSBJTlRPIDpqc29uOworCXByaW50Zigi Rm91bmQganNvbj0lc1xuIiwganNvbik7CisKKwlFWEVDIFNRTCBTRUxFQ1QgSlNPTigoJ3siYSI6 IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6MX1dfV19 Jzo6anNvbmIpLmJbMV0ueFswOl0pIElOVE8gOmpzb247CisJLy8gZXJyb3IKKworCUVYRUMgU1FM IFNFTEVDVCBKU09OKCgneyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIiOiBbeyJ4IjogMX0sIHsi eCI6IFsxMiwgeyJ5IjoxfV19XX0nOjpqc29uYikuKikgSU5UTyA6anNvbjsKKwkvLyBlcnJvcgor CisJRVhFQyBTUUwgU0VMRUNUIEpTT04oKCd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9LCAiYiI6IFt7 IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOjF9XX1dfSc6Ompzb25iKVsnYiddWzA6XSkgSU5UTyA6 anNvbjsKKwkvLyBlcnJvcgorCiAgIEVYRUMgU1FMIERJU0NPTk5FQ1Q7CiAKICAgcmV0dXJuIDA7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CmluZGV4IGZiNDdjOGE4OTNhLi42ODVmMjI5 ZTY4MiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQKQEAgLTQ5ODksNiArNDk4OSwx MiBAQCBzZWxlY3QgKCcxMjMnOjpqc29uYilbJ2EnXTsKICAKICgxIHJvdykKIAorc2VsZWN0ICgn MTIzJzo6anNvbmIpLmE7CisgYSAKKy0tLQorIAorKDEgcm93KQorCiBzZWxlY3QgKCcxMjMnOjpq c29uYilbMF07CiAganNvbmIgCiAtLS0tLS0tCkBAIC01MDAxLDEyICs1MDA3LDI0IEBAIHNlbGVj dCAoJzEyMyc6Ompzb25iKVtOVUxMXTsKICAKICgxIHJvdykKIAorc2VsZWN0ICgnMTIzJzo6anNv bmIpLk5VTEw7CisgbnVsbCAKKy0tLS0tLQorIAorKDEgcm93KQorCiBzZWxlY3QgKCd7ImEiOiAx fSc6Ompzb25iKVsnYSddOwogIGpzb25iIAogLS0tLS0tLQogIDEKICgxIHJvdykKIAorc2VsZWN0 ICgneyJhIjogMX0nOjpqc29uYikuYTsKKyBhIAorLS0tCisgMQorKDEgcm93KQorCiBzZWxlY3Qg KCd7ImEiOiAxfSc6Ompzb25iKVswXTsKICBqc29uYiAKIC0tLS0tLS0KQEAgLTUwMTksNiArNTAz NywxMiBAQCBzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25iKVsnbm90X2V4aXN0J107CiAgCiAoMSBy b3cpCiAKK3NlbGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIpLiJub3RfZXhpc3QiOworIG5vdF9leGlz dCAKKy0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKIHNlbGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIp W05VTExdOwogIGpzb25iIAogLS0tLS0tLQpAQCAtNTAzMSw2ICs1MDU1LDEyIEBAIHNlbGVjdCAo J1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWydhJ107CiAgCiAoMSByb3cpCiAKK3NlbGVjdCAoJ1sx LCAiMiIsIG51bGxdJzo6anNvbmIpLmE7CisgYSAKKy0tLQorIAorKDEgcm93KQorCiBzZWxlY3Qg KCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVswXTsKICBqc29uYiAKIC0tLS0tLS0KQEAgLTUwNDMs NiArNTA3MywxMiBAQCBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVsnMSddOwogICIy IgogKDEgcm93KQogCitzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKS4iMSI7CisgMSAK Ky0tLQorIAorKDEgcm93KQorCiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVsxLjBd OwogRVJST1I6ICBzdWJzY3JpcHQgdHlwZSBudW1lcmljIGlzIG5vdCBzdXBwb3J0ZWQKIExJTkUg MTogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMS4wXTsKQEAgLTUwNzIsNiArNTEw OCwxMiBAQCBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVsxXVsnYSddOwogIAogKDEg cm93KQogCitzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVsxXS5hOworIGEgCistLS0K KyAKKygxIHJvdykKKwogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMV1bMF07CiAg anNvbmIgCiAtLS0tLS0tCkBAIC01MDg0LDU0ICs1MTI2LDEyNiBAQCBzZWxlY3QgKCd7ImEiOiAx LCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIpWydiJ107CiAgImMiCiAoMSByb3cp CiAKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYiku YjsKKyAgYiAgCistLS0tLQorICJjIgorKDEgcm93KQorCiBzZWxlY3QgKCd7ImEiOiAxLCAiYiI6 ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIpWydkJ107CiAgICBqc29uYiAgIAogLS0tLS0t LS0tLS0KICBbMSwgMiwgM10KICgxIHJvdykKIAorc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIs ICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKS5kOworICAgICBkICAgICAKKy0tLS0tLS0tLS0tCisg WzEsIDIsIDNdCisoMSByb3cpCisKIHNlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsx LCAyLCAzXX0nOjpqc29uYilbJ2QnXVsxXTsKICBqc29uYiAKIC0tLS0tLS0KICAyCiAoMSByb3cp CiAKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYiku ZFsxXTsKKyBkIAorLS0tCisgMgorKDEgcm93KQorCiBzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJj IiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIpWydkJ11bJ2EnXTsKICBqc29uYiAKIC0tLS0tLS0K ICAKICgxIHJvdykKIAorc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNd fSc6Ompzb25iKS5kWydhJ107CisgZCAKKy0tLQorIAorKDEgcm93KQorCitzZWxlY3QgKCd7ImEi OiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIpLmQuYTsKKyBhIAorLS0tCisg CisoMSByb3cpCisKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IHsiYSI6IFsxLCAy LCAzXX19Jzo6anNvbmIpLmRbJ2EnXVswXTsKKyBkIAorLS0tCisgMQorKDEgcm93KQorCitzZWxl Y3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiB7ImEiOiBbMSwgMiwgM119fSc6Ompzb25iKS5k LmFbMF07CisgYSAKKy0tLQorIDEKKygxIHJvdykKKwogc2VsZWN0ICgneyJhIjogeyJhMSI6IHsi YTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKVsnYSddWydhMSdd OwogICAgICBqc29uYiAgICAgCiAtLS0tLS0tLS0tLS0tLS0KICB7ImEyIjogImFhYSJ9CiAoMSBy b3cpCiAKK3NlbGVjdCAoJ3siYSI6IHsiYTEiOiB7ImEyIjogImFhYSJ9fSwgImIiOiAiYmJiIiwg ImMiOiAiY2NjIn0nOjpqc29uYikuYS5hMTsKKyAgICAgIGExICAgICAgIAorLS0tLS0tLS0tLS0t LS0tCisgeyJhMiI6ICJhYWEifQorKDEgcm93KQorCiBzZWxlY3QgKCd7ImEiOiB7ImExIjogeyJh MiI6ICJhYWEifX0sICJiIjogImJiYiIsICJjIjogImNjYyJ9Jzo6anNvbmIpWydhJ11bJ2ExJ11b J2EyJ107CiAganNvbmIgCiAtLS0tLS0tCiAgImFhYSIKICgxIHJvdykKIAorc2VsZWN0ICgneyJh IjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompzb25i KS5hLmExLmEyOworICBhMiAgIAorLS0tLS0tLQorICJhYWEiCisoMSByb3cpCisKIHNlbGVjdCAo J3siYSI6IHsiYTEiOiB7ImEyIjogImFhYSJ9fSwgImIiOiAiYmJiIiwgImMiOiAiY2NjIn0nOjpq c29uYilbJ2EnXVsnYTEnXVsnYTInXVsnYTMnXTsKICBqc29uYiAKIC0tLS0tLS0KICAKICgxIHJv dykKIAorc2VsZWN0ICgneyJhIjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAi YyI6ICJjY2MifSc6Ompzb25iKS5hLmExLmEyLmEzOworIGEzIAorLS0tLQorIAorKDEgcm93KQor CiBzZWxlY3QgKCd7ImEiOiBbImExIiwgeyJiMSI6IFsiYWFhIiwgImJiYiIsICJjY2MiXX1dLCAi YiI6ICJiYiJ9Jzo6anNvbmIpWydhJ11bMV1bJ2IxJ107CiAgICAgICAgICBqc29uYiAgICAgICAg IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBbImFhYSIsICJiYmIiLCAiY2NjIl0KICgxIHJv dykKIAorc2VsZWN0ICgneyJhIjogWyJhMSIsIHsiYjEiOiBbImFhYSIsICJiYmIiLCAiY2NjIl19 XSwgImIiOiAiYmIifSc6Ompzb25iKS5hWzFdLmIxOworICAgICAgICAgIGIxICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWyJhYWEiLCAiYmJiIiwgImNjYyJdCisoMSByb3cp CisKIHNlbGVjdCAoJ3siYSI6IFsiYTEiLCB7ImIxIjogWyJhYWEiLCAiYmJiIiwgImNjYyJdfV0s ICJiIjogImJiIn0nOjpqc29uYilbJ2EnXVsxXVsnYjEnXVsyXTsKICBqc29uYiAKIC0tLS0tLS0K ICAiY2NjIgogKDEgcm93KQogCitzZWxlY3QgKCd7ImEiOiBbImExIiwgeyJiMSI6IFsiYWFhIiwg ImJiYiIsICJjY2MiXX1dLCAiYiI6ICJiYiJ9Jzo6anNvbmIpLmFbMV0uYjFbMl07CisgIGIxICAg CistLS0tLS0tCisgImNjYyIKKygxIHJvdykKKwogLS0gc2xpY2VzIGFyZSBub3Qgc3VwcG9ydGVk CiBzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25iKVsnYSc6J2InXTsKIEVSUk9SOiAganNvbmIgc3Vi c2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzCkBAIC01ODQxLDcgKzU5NTUsNyBAQCBzZWxl Y3QganNvbmJfdHlwZW9mKCd7ImEiOjF9Jzo6anNvbmIpOwogc2VsZWN0ICgneyJhIjoxfSc6Ompz b25iKS5qc29uYl90eXBlb2Y7CiAganNvbmJfdHlwZW9mIAogLS0tLS0tLS0tLS0tLS0KLSBvYmpl Y3QKKyAKICgxIHJvdykKIAogc2VsZWN0IGpzb25iX2FycmF5X2xlbmd0aCgnWyJhIiwgImIiLCAi YyJdJzo6anNvbmIpOwpAQCAtNTg1Myw3ICs1OTY3LDcgQEAgc2VsZWN0IGpzb25iX2FycmF5X2xl bmd0aCgnWyJhIiwgImIiLCAiYyJdJzo6anNvbmIpOwogc2VsZWN0ICgnWyJhIiwgImIiLCAiYyJd Jzo6anNvbmIpLmpzb25iX2FycmF5X2xlbmd0aDsKICBqc29uYl9hcnJheV9sZW5ndGggCiAtLS0t LS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAgICAgICAgMworIAogKDEgcm93KQogCiBzZWxl Y3QganNvbmJfb2JqZWN0X2tleXMoJ3siYSI6MSwgImIiOjJ9Jzo6anNvbmIpOwpAQCAtNTg2Niw5 ICs1OTgwLDggQEAgc2VsZWN0IGpzb25iX29iamVjdF9rZXlzKCd7ImEiOjEsICJiIjoyfSc6Ompz b25iKTsKIHNlbGVjdCAoJ3siYSI6MSwgImIiOjJ9Jzo6anNvbmIpLmpzb25iX29iamVjdF9rZXlz OwogIGpzb25iX29iamVjdF9rZXlzIAogLS0tLS0tLS0tLS0tLS0tLS0tLQotIGEKLSBiCi0oMiBy b3dzKQorIAorKDEgcm93KQogCiAtLSBjYXN0IGpzb25iIHRvIG90aGVyIHR5cGVzIGFzIChqc29u Yik6OnR5cGUgYW5kIChqc29uYikudHlwZQogc2VsZWN0ICgnMTIzLjQ1Jzo6anNvbmIpOjpudW1l cmljOwpAQCAtNTg4MCw3ICs1OTkzLDcgQEAgc2VsZWN0ICgnMTIzLjQ1Jzo6anNvbmIpOjpudW1l cmljOwogc2VsZWN0ICgnMTIzLjQ1Jzo6anNvbmIpLm51bWVyaWM7CiAgbnVtZXJpYyAKIC0tLS0t LS0tLQotICAxMjMuNDUKKyAKICgxIHJvdykKIAogc2VsZWN0ICgnW3sibmFtZSI6ICJhbGljZSJ9 LCB7Im5hbWUiOiAiYm9iIn1dJzo6anNvbmIpOjpuYW1lOwpAQCAtNTg5MCw5ICs2MDAzLDkgQEAg c2VsZWN0ICgnW3sibmFtZSI6ICJhbGljZSJ9LCB7Im5hbWUiOiAiYm9iIn1dJzo6anNvbmIpOjpu YW1lOwogKDEgcm93KQogCiBzZWxlY3QgKCdbeyJuYW1lIjogImFsaWNlIn0sIHsibmFtZSI6ICJi b2IifV0nOjpqc29uYikubmFtZTsKLSAgICAgICAgICAgICAgICAgbmFtZSAgICAgICAgICAgICAg ICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIFt7Im5hbWUiOiAi YWxpY2UifSwgeyJuYW1lIjogImJvYiJ9XQorICAgICAgIG5hbWUgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0KKyBbImFsaWNlIiwgImJvYiJdCiAoMSByb3cpCiAKIHNlbGVjdCAoJ3RydWUnOjpq c29uYik6OmJvb2w7CkBAIC01OTA0LDcgKzYwMTcsNyBAQCBzZWxlY3QgKCd0cnVlJzo6anNvbmIp Ojpib29sOwogc2VsZWN0ICgndHJ1ZSc6Ompzb25iKS5ib29sOwogIGJvb2wgCiAtLS0tLS0KLSB0 CisgCiAoMSByb3cpCiAKIHNlbGVjdCAoJ3sidGV4dCI6ICJoZWxsbyJ9Jzo6anNvbmIpOjp0ZXh0 OwpAQCAtNTkxNCw4ICs2MDI3LDMxMyBAQCBzZWxlY3QgKCd7InRleHQiOiAiaGVsbG8ifSc6Ompz b25iKTo6dGV4dDsKICgxIHJvdykKIAogc2VsZWN0ICgneyJ0ZXh0IjogImhlbGxvIn0nOjpqc29u YikudGV4dDsKLSAgICAgICB0ZXh0ICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSB7InRl eHQiOiAiaGVsbG8ifQorICB0ZXh0ICAgCistLS0tLS0tLS0KKyAiaGVsbG8iCisoMSByb3cpCisK Ky0tIGRvdCBub3RhdGlvbgorQ1JFQVRFIFRBQkxFIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIEFT CitTRUxFQ1QgJ3siYSI6IFsxLCAyLCB7ImIiOiAiYyJ9LCB7ImIiOiAiZCIsICJlIjogImYiLCAi eCI6IHsieSI6ICJ5eXkiLCAieiI6ICJ6enoifX1dLCAiYiI6IFszLCA0LCB7ImIiOiAiZyIsICJ4 IjogeyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9fV19Jzo6anNvbmIgamI7CitTRUxFQ1QgKGpiKS5h IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgWzEsIDIsIHsiYiI6ICJjIn0sIHsiYiI6ICJkIiwgImUiOiAiZiIsICJ4Ijog eyJ5IjogInl5eSIsICJ6IjogInp6eiJ9fV0KKygxIHJvdykKKworU0VMRUNUIChqYikuImEiIEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIGRvdWJsZSBxdW90ZSBzaG91bGQgd29yawor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsxLCAyLCB7ImIiOiAiYyJ9LCB7 ImIiOiAiZCIsICJlIjogImYiLCAieCI6IHsieSI6ICJ5eXkiLCAieiI6ICJ6enoifX1dCisoMSBy b3cpCisKK1NFTEVDVCAoamIpLidhJyBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSBz aW5nbGUgcXVvdGUgc2hvdWxkIG5vdCB3b3JrCitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBu ZWFyICInYSciCitMSU5FIDE6IFNFTEVDVCAoamIpLidhJyBGUk9NIHRlc3RfanNvbmJfZG90X25v dGF0aW9uOworICAgICAgICAgICAgICAgICAgICBeCitzZWxlY3QgKGpiKVswXS5hIGZyb20gdGVz dF9qc29uYl9kb3Rfbm90YXRpb247IC0tIHJldHVybnMgc2FtZSByZXN1bHQgYXMgKGpiKS5hCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWzEsIDIsIHsiYiI6ICJjIn0sIHsi YiI6ICJkIiwgImUiOiAiZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9fV0KKygxIHJv dykKKworc2VsZWN0IChqYilbMV0uYSBmcm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSBy ZXR1cm5zIE5VTEwKKyBhIAorLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAoamIpLmIgRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICBiICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgWzMsIDQsIHsiYiI6ICJnIiwgIngiOiB7InkiOiAiWVlZIiwgInoi OiAiWlpaIn19XQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5jIEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb247CisgYyAKKy0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5hLmIgRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgYiAgICAgIAorLS0tLS0tLS0tLS0tCisgWyJj IiwgImQiXQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5hWzJdLmIgRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbjsKKyAgYiAgCistLS0tLQorICJjIgorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5h LngueSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgeSAgIAorLS0tLS0tLQorICJ5 eXkiCisoMSByb3cpCisKK1NFTEVDVCAoamIpLmIueC56IEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb247CisgICB6ICAgCistLS0tLS0tCisgIlpaWiIKKygxIHJvdykKKworU0VMRUNUIChqYiku YS5iLmMgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyBjIAorLS0tCisgCisoMSByb3cp CisKK1NFTEVDVCAoKGpiKS5iKVs6XS54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsg LS0gZmFpbHMKK0VSUk9SOiAganNvbmIgc3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2Vz CitTRUxFQ1QgKGpiKS5hLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0gZmFpbHMK K0VSUk9SOiAgdHlwZSBqc29uYiBpcyBub3QgY29tcG9zaXRlCistLSBhc3NpZ25tZW50IGlzIG5v dCBzdXBwb3J0ZWQKK1VQREFURSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiBTRVQgamIuYSA9ICcx JzsKK0VSUk9SOiAgY2Fubm90IGFzc2lnbiB0byBmaWVsZCAiYSIgb2YgY29sdW1uICJqYiIgYmVj YXVzZSBpdHMgdHlwZSBqc29uYiBpcyBub3QgYSBjb21wb3NpdGUgdHlwZQorTElORSAxOiBVUERB VEUgdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gU0VUIGpiLmEgPSAnMSc7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorVVBEQVRFIHRlc3RfanNvbmJfZG90X25v dGF0aW9uIFNFVCAoamIpLmEgPSAnMSc7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFy ICIuIgorTElORSAxOiBVUERBVEUgdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gU0VUIChqYikuYSA9 ICcxJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor LS0gZXhwbGFpbnMgc2hvdWxkIHdvcmsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VM RUNUICh0LmpiKS5hIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKKyAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwdWJsaWMudGVzdF9qc29u Yl9kb3Rfbm90YXRpb24gdAorICAgT3V0cHV0OiAoamIpLmEKKygyIHJvd3MpCisKK1NFTEVDVCAo dC5qYikuYSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgWzEsIDIsIHsiYiI6ICJjIn0sIHsiYiI6ICJkIiwgImUiOiAi ZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9fV0KKygxIHJvdykKKworRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5hWzFdIEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb247CisgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBv biBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb24KKyAgIE91dHB1dDogKGpiKS5hWzFdCiso MiByb3dzKQorCitTRUxFQ1QgKGpiKS5hWzFdIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247 CisgYSAKKy0tLQorIDIKKygxIHJvdykKKworLS0gdmlld3Mgc2hvdWxkIHdvcmsKK0NSRUFURSBW SUVXIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTIFNFTEVDVCAoamIpLmFbM10ueC55IEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Citcc3YgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25f djEKK0NSRUFURSBPUiBSRVBMQUNFIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9u X3YxIEFTCisgU0VMRUNUIChqYikuYVszXS54LnkgQVMgeQorICAgRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbgorLS0gbWl4ZWQgc3ludGF4CitEUk9QIFZJRVcgdGVzdF9qc29uYl9kb3Rfbm90 YXRpb25fdjE7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpWydhJ10u YiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uCisg ICBPdXRwdXQ6IChqYlsnYSc6OnRleHRdKS5iCisoMiByb3dzKQorCitTRUxFQ1QgKGpiKVsnYSdd LmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0gcmV0dXJucyBhbiBhcnJheSBkdWUg dG8gbGF4IG1vZGUKKyAgICAgYiAgICAgIAorLS0tLS0tLS0tLS0tCisgWyJjIiwgImQiXQorKDEg cm93KQorCitDUkVBVEUgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEgQVMK K1NFTEVDVCAoamIpWydhJ10uYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworXHN2IHRl c3RfanNvbmJfZG90X25vdGF0aW9uX3YxCitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy50 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUworIFNFTEVDVCAoamJbJ2EnOjp0ZXh0XSkuYiBB UyBiCisgICBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uCitTRUxFQ1QgKiBmcm9tIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uX3YxOworICAgICBiICAgICAgCistLS0tLS0tLS0tLS0KKyBbImMi LCAiZCJdCisoMSByb3cpCisKK0RST1AgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRp b25fdjE7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpLmFbJ2InXSBG Uk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgU2VxIFNjYW4gb24gcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uCisgICBP dXRwdXQ6ICgoamIpLmEpWydiJzo6dGV4dF0KKygyIHJvd3MpCisKK1NFTEVDVCAoamIpLmFbJ2In XSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSByZXR1cm5zIE5VTEwgYmVjYXVzZSBb J2InXSBsb29rcyBmb3Igc3RyaWN0IG1hdGNoIGluIGFuIG9iamVjdAorIGEgCistLS0KKyAKKygx IHJvdykKKworQ1JFQVRFIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFT CitTRUxFQ1QgKGpiKS5hWydiJ10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1xzdiB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MQorQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMu dGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEgQVMKKyBTRUxFQ1QgKChqYikuYSlbJ2InOjp0ZXh0 XSBBUyBhCisgICBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uCitTRUxFQ1QgKiBmcm9tIHRl c3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworIGEgCistLS0KKyAKKygxIHJvdykKKworRFJPUCBW SUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikgU0VMRUNUIChqYikuYi54Wyd6J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbjsKKyAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHB1 YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorICAgT3V0cHV0OiAoKGpiKS5iLngpWyd6Jzo6 dGV4dF0KKygyIHJvd3MpCisKK1NFTEVDVCAoamIpLmIueFsneiddIEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb247IC0tIHdhcm5pbmdzCisgICB4ICAgCistLS0tLS0tCisgIlpaWiIKKygxIHJv dykKKworQ1JFQVRFIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTCitT RUxFQ1QgKGpiKS5iLnhbJ3onXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworXHN2IHRl c3RfanNvbmJfZG90X25vdGF0aW9uX3YxCitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy50 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUworIFNFTEVDVCAoKGpiKS5iLngpWyd6Jzo6dGV4 dF0gQVMgeAorICAgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorU0VMRUNUICogZnJvbSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKKyAgIHggICAKKy0tLS0tLS0KKyAiWlpaIgorKDEg cm93KQorCitEUk9QIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKVsnYiddLnhbJ3onXSBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgU2VxIFNjYW4gb24gcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uCisgICBPdXRwdXQ6 ICgoamJbJ2InOjp0ZXh0XSkueClbJ3onOjp0ZXh0XQorKDIgcm93cykKKworU0VMRUNUIChqYilb J2InXS54Wyd6J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgIC0tIHdhcm5pbmdzCisg ICB4ICAgCistLS0tLS0tCisgIlpaWiIKKygxIHJvdykKKworQ1JFQVRFIFZJRVcgcHVibGljLnRl c3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTCitTRUxFQ1QgKGpiKVsnYiddLnhbJ3onXSBGUk9N IHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworXHN2IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3Yx CitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92 MSBBUworIFNFTEVDVCAoKGpiWydiJzo6dGV4dF0pLngpWyd6Jzo6dGV4dF0gQVMgeAorICAgRlJP TSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorU0VMRUNUICogZnJvbSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbl92MTsKKyAgIHggICAKKy0tLS0tLS0KKyAiWlpaIgorKDEgcm93KQorCitEUk9QIFZJ RVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworRVhQTEFJTiAoVkVSQk9TRSwg Q09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5iWyd4J10ueiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uOworICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcHVi bGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uCisgICBPdXRwdXQ6ICgoKGpiKS5iKVsneCc6OnRl eHRdKS56CisoMiByb3dzKQorCitTRUxFQ1QgKGpiKS5iWyd4J10ueiBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uOyAtLSByZXR1cm5zIE5VTEwKKyB6IAorLS0tCisgCisoMSByb3cpCisKK0NS RUFURSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUworU0VMRUNUIChq YikuYlsneCddLnogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1xzdiB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbl92MQorQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMudGVzdF9qc29u Yl9kb3Rfbm90YXRpb25fdjEgQVMKKyBTRUxFQ1QgKCgoamIpLmIpWyd4Jzo6dGV4dF0pLnogQVMg egorICAgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorU0VMRUNUICogZnJvbSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbl92MTsKKyB6IAorLS0tCisgCisoMSByb3cpCisKK0RST1AgVklFVyBw dWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCAoamIpLmJbJ3gnXVsneiddIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRp b247CisgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwdWJs aWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb24KKyAgIE91dHB1dDogKChqYikuYilbJ3gnOjp0ZXh0 XVsneic6OnRleHRdCisoMiByb3dzKQorCitTRUxFQ1QgKGpiKS5iWyd4J11bJ3onXSBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSByZXR1cm5zIE5VTEwKKyBiIAorLS0tCisgCisoMSBy b3cpCisKK0NSRUFURSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUwor U0VMRUNUIChqYikuYlsneCddWyd6J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1xz diB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MQorQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJs aWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEgQVMKKyBTRUxFQ1QgKChqYikuYilbJ3gnOjp0 ZXh0XVsneic6OnRleHRdIEFTIGIKKyAgIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24KK1NF TEVDVCAqIGZyb20gdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7CisgYiAKKy0tLQorIAorKDEg cm93KQorCitEUk9QIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKVsnYiddWyd4J10ueiBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgU2VxIFNjYW4gb24gcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uCisgICBPdXRwdXQ6 IChqYlsnYic6OnRleHRdWyd4Jzo6dGV4dF0pLnoKKygyIHJvd3MpCisKK1NFTEVDVCAoamIpWydi J11bJ3gnXS56IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIHJldHVybnMgTlVMTAor IHogCistLS0KKyAKKygxIHJvdykKKworQ1JFQVRFIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90 X25vdGF0aW9uX3YxIEFTCitTRUxFQ1QgKGpiKVsnYiddWyd4J10ueiBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uOworXHN2IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxCitDUkVBVEUgT1Ig UkVQTEFDRSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUworIFNFTEVD VCAoamJbJ2InOjp0ZXh0XVsneCc6OnRleHRdKS56IEFTIHoKKyAgIEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb24KK1NFTEVDVCAqIGZyb20gdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7Cisg eiAKKy0tLQorIAogKDEgcm93KQogCitEUk9QIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25v dGF0aW9uX3YxOworLS0gY2xlYW4gdXAKK0RST1AgVEFCTEUgdGVzdF9qc29uYl9kb3Rfbm90YXRp b247CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKaW5kZXggOTcwZWQxY2ZmY2EuLmNiMGMzOThkNjViIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvanNvbmIuc3FsCkBAIC0xMzA0LDMwICsxMzA0LDQ5IEBAIHNlbGVjdCBqc29u Yl9pbnNlcnQoJ3siYSI6IHsiYiI6ICJ2YWx1ZSJ9fScsICd7YSwgYn0nLCAnIm5ld192YWx1ZSIn LCB0cnVlKTsKIAogLS0ganNvbmIgc3Vic2NyaXB0CiBzZWxlY3QgKCcxMjMnOjpqc29uYilbJ2En XTsKK3NlbGVjdCAoJzEyMyc6Ompzb25iKS5hOwogc2VsZWN0ICgnMTIzJzo6anNvbmIpWzBdOwog c2VsZWN0ICgnMTIzJzo6anNvbmIpW05VTExdOworc2VsZWN0ICgnMTIzJzo6anNvbmIpLk5VTEw7 CiBzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25iKVsnYSddOworc2VsZWN0ICgneyJhIjogMX0nOjpq c29uYikuYTsKIHNlbGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIpWzBdOwogc2VsZWN0ICgneyJhIjog MX0nOjpqc29uYilbJ25vdF9leGlzdCddOworc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYikuIm5v dF9leGlzdCI7CiBzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25iKVtOVUxMXTsKIHNlbGVjdCAoJ1sx LCAiMiIsIG51bGxdJzo6anNvbmIpWydhJ107CitzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompz b25iKS5hOwogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMF07CiBzZWxlY3QgKCdb MSwgIjIiLCBudWxsXSc6Ompzb25iKVsnMSddOworc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpq c29uYikuIjEiOwogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMS4wXTsKIHNlbGVj dCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzJdOwogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0n Ojpqc29uYilbM107CiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVstMl07CiBzZWxl Y3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVsxXVsnYSddOworc2VsZWN0ICgnWzEsICIyIiwg bnVsbF0nOjpqc29uYilbMV0uYTsKIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzFd WzBdOwogc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25i KVsnYiddOworc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompz b25iKS5iOwogc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompz b25iKVsnZCddOworc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6 Ompzb25iKS5kOwogc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6 Ompzb25iKVsnZCddWzFdOworc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIs IDNdfSc6Ompzb25iKS5kWzFdOwogc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEs IDIsIDNdfSc6Ompzb25iKVsnZCddWydhJ107CitzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwg ImQiOiBbMSwgMiwgM119Jzo6anNvbmIpLmRbJ2EnXTsKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjog ImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYikuZC5hOworc2VsZWN0ICgneyJhIjogMSwgImIi OiAiYyIsICJkIjogeyJhIjogWzEsIDIsIDNdfX0nOjpqc29uYikuZFsnYSddWzBdOworc2VsZWN0 ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogeyJhIjogWzEsIDIsIDNdfX0nOjpqc29uYikuZC5h WzBdOwogc2VsZWN0ICgneyJhIjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAi YyI6ICJjY2MifSc6Ompzb25iKVsnYSddWydhMSddOworc2VsZWN0ICgneyJhIjogeyJhMSI6IHsi YTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKS5hLmExOwogc2Vs ZWN0ICgneyJhIjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2Mi fSc6Ompzb25iKVsnYSddWydhMSddWydhMiddOworc2VsZWN0ICgneyJhIjogeyJhMSI6IHsiYTIi OiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKS5hLmExLmEyOwogc2Vs ZWN0ICgneyJhIjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2Mi fSc6Ompzb25iKVsnYSddWydhMSddWydhMiddWydhMyddOworc2VsZWN0ICgneyJhIjogeyJhMSI6 IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKS5hLmExLmEy LmEzOwogc2VsZWN0ICgneyJhIjogWyJhMSIsIHsiYjEiOiBbImFhYSIsICJiYmIiLCAiY2NjIl19 XSwgImIiOiAiYmIifSc6Ompzb25iKVsnYSddWzFdWydiMSddOworc2VsZWN0ICgneyJhIjogWyJh MSIsIHsiYjEiOiBbImFhYSIsICJiYmIiLCAiY2NjIl19XSwgImIiOiAiYmIifSc6Ompzb25iKS5h WzFdLmIxOwogc2VsZWN0ICgneyJhIjogWyJhMSIsIHsiYjEiOiBbImFhYSIsICJiYmIiLCAiY2Nj Il19XSwgImIiOiAiYmIifSc6Ompzb25iKVsnYSddWzFdWydiMSddWzJdOworc2VsZWN0ICgneyJh IjogWyJhMSIsIHsiYjEiOiBbImFhYSIsICJiYmIiLCAiY2NjIl19XSwgImIiOiAiYmIifSc6Ompz b25iKS5hWzFdLmIxWzJdOwogCiAtLSBzbGljZXMgYXJlIG5vdCBzdXBwb3J0ZWQKIHNlbGVjdCAo J3siYSI6IDF9Jzo6anNvbmIpWydhJzonYiddOwpAQCAtMTYwOCwzICsxNjI3LDk4IEBAIHNlbGVj dCAoJ3RydWUnOjpqc29uYik6OmJvb2w7CiBzZWxlY3QgKCd0cnVlJzo6anNvbmIpLmJvb2w7CiBz ZWxlY3QgKCd7InRleHQiOiAiaGVsbG8ifSc6Ompzb25iKTo6dGV4dDsKIHNlbGVjdCAoJ3sidGV4 dCI6ICJoZWxsbyJ9Jzo6anNvbmIpLnRleHQ7CisKKy0tIGRvdCBub3RhdGlvbgorQ1JFQVRFIFRB QkxFIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIEFTCitTRUxFQ1QgJ3siYSI6IFsxLCAyLCB7ImIi OiAiYyJ9LCB7ImIiOiAiZCIsICJlIjogImYiLCAieCI6IHsieSI6ICJ5eXkiLCAieiI6ICJ6enoi fX1dLCAiYiI6IFszLCA0LCB7ImIiOiAiZyIsICJ4IjogeyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9 fV19Jzo6anNvbmIgamI7CisKK1NFTEVDVCAoamIpLmEgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbjsKK1NFTEVDVCAoamIpLiJhIiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSBk b3VibGUgcXVvdGUgc2hvdWxkIHdvcmsKK1NFTEVDVCAoamIpLidhJyBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uOyAtLSBzaW5nbGUgcXVvdGUgc2hvdWxkIG5vdCB3b3JrCitzZWxlY3QgKGpi KVswXS5hIGZyb20gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIHJldHVybnMgc2FtZSByZXN1 bHQgYXMgKGpiKS5hCitzZWxlY3QgKGpiKVsxXS5hIGZyb20gdGVzdF9qc29uYl9kb3Rfbm90YXRp b247IC0tIHJldHVybnMgTlVMTAorU0VMRUNUIChqYikuYiBGUk9NIHRlc3RfanNvbmJfZG90X25v dGF0aW9uOworU0VMRUNUIChqYikuYyBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VM RUNUIChqYikuYS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5h WzJdLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmEueC55IEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5iLngueiBGUk9NIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuYS5iLmMgRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbjsKK1NFTEVDVCAoKGpiKS5iKVs6XS54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb24gdDsgLS0gZmFpbHMKK1NFTEVDVCAoamIpLmEuKiBGUk9NIHRlc3RfanNvbmJfZG90X25v dGF0aW9uOyAtLSBmYWlscworCistLSBhc3NpZ25tZW50IGlzIG5vdCBzdXBwb3J0ZWQKK1VQREFU RSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiBTRVQgamIuYSA9ICcxJzsKK1VQREFURSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbiBTRVQgKGpiKS5hID0gJzEnOworCistLSBleHBsYWlucyBzaG91bGQg d29yaworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHQuamIpLmEgRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworU0VMRUNUICh0LmpiKS5hIEZST00gdGVzdF9qc29u Yl9kb3Rfbm90YXRpb24gdDsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChq YikuYVsxXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuYVsxXSBG Uk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworCistLSB2aWV3cyBzaG91bGQgd29yaworQ1JF QVRFIFZJRVcgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEgQVMgU0VMRUNUIChqYikuYVszXS54 LnkgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1xzdiB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbl92MQorCistLSBtaXhlZCBzeW50YXgKK0RST1AgVklFVyB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbl92MTsKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKVsnYSdd LmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpWydhJ10uYiBGUk9N IHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSByZXR1cm5zIGFuIGFycmF5IGR1ZSB0byBsYXgg bW9kZQorQ1JFQVRFIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTCitT RUxFQ1QgKGpiKVsnYSddLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1xzdiB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbl92MQorU0VMRUNUICogZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbl92MTsKK0RST1AgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7CisK K0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYikuYVsnYiddIEZST00gdGVz dF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5hWydiJ10gRlJPTSB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbjsgLS0gcmV0dXJucyBOVUxMIGJlY2F1c2UgWydiJ10gbG9va3MgZm9yIHN0 cmljdCBtYXRjaCBpbiBhbiBvYmplY3QKK0NSRUFURSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbl92MSBBUworU0VMRUNUIChqYikuYVsnYiddIEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb247Citcc3YgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEKK1NFTEVDVCAqIGZyb20g dGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7CitEUk9QIFZJRVcgcHVibGljLnRlc3RfanNvbmJf ZG90X25vdGF0aW9uX3YxOworCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAo amIpLmIueFsneiddIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5i LnhbJ3onXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSB3YXJuaW5ncworQ1JFQVRF IFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTCitTRUxFQ1QgKGpiKS5i LnhbJ3onXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworXHN2IHRlc3RfanNvbmJfZG90 X25vdGF0aW9uX3YxCitTRUxFQ1QgKiBmcm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOwor RFJPUCBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKKworRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKVsnYiddLnhbJ3onXSBGUk9NIHRlc3RfanNv bmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYilbJ2InXS54Wyd6J10gRlJPTSB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbjsgIC0tIHdhcm5pbmdzCitDUkVBVEUgVklFVyBwdWJsaWMudGVzdF9qc29u Yl9kb3Rfbm90YXRpb25fdjEgQVMKK1NFTEVDVCAoamIpWydiJ10ueFsneiddIEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb247Citcc3YgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEKK1NFTEVD VCAqIGZyb20gdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7CitEUk9QIFZJRVcgcHVibGljLnRl c3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp IFNFTEVDVCAoamIpLmJbJ3gnXS56IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxF Q1QgKGpiKS5iWyd4J10ueiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSByZXR1cm5z IE5VTEwKK0NSRUFURSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUwor U0VMRUNUIChqYikuYlsneCddLnogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1xzdiB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MQorU0VMRUNUICogZnJvbSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbl92MTsKK0RST1AgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7 CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYikuYlsneCddWyd6J10g RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmJbJ3gnXVsneiddIEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIHJldHVybnMgTlVMTAorQ1JFQVRFIFZJRVcg cHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTCitTRUxFQ1QgKGpiKS5iWyd4J11b J3onXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworXHN2IHRlc3RfanNvbmJfZG90X25v dGF0aW9uX3YxCitTRUxFQ1QgKiBmcm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworRFJP UCBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKKworRVhQTEFJTiAoVkVS Qk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKVsnYiddWyd4J10ueiBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uOworU0VMRUNUIChqYilbJ2InXVsneCddLnogRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbjsgLS0gcmV0dXJucyBOVUxMCitDUkVBVEUgVklFVyBwdWJsaWMudGVzdF9qc29u Yl9kb3Rfbm90YXRpb25fdjEgQVMKK1NFTEVDVCAoamIpWydiJ11bJ3gnXS56IEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb247Citcc3YgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEKK1NFTEVD VCAqIGZyb20gdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7CitEUk9QIFZJRVcgcHVibGljLnRl c3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworCistLSBjbGVhbiB1cAorRFJPUCBUQUJMRSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbjsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggZTkwYWY1 YjJhZDMuLjIzZTM4YzE2M2M1IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtODA1LDYg KzgwNSw3IEBAIEZkd1JvdXRpbmUKIEZldGNoRGlyZWN0aW9uCiBGZXRjaERpcmVjdGlvbktleXdv cmRzCiBGZXRjaFN0bXQKK0ZpZWxkQWNjZXNzb3JFeHByCiBGaWVsZFNlbGVjdAogRmllbGRTdG9y ZQogRmlsZQotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --00000000000056bfa5063f2d7dce Content-Type: application/octet-stream; name="v20-0004-Extract-coerce_jsonpath_subscript.patch" Content-Disposition: attachment; filename="v20-0004-Extract-coerce_jsonpath_subscript.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfragwvn2 RnJvbSA4MTI4OTIwZTdmZTY5NzJmYmE0MTg1NmUxMThhZDFhODA1OWI4NDM1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdt YWlsLmNvbT4KRGF0ZTogVHVlLCA4IEp1bCAyMDI1IDIyOjE4OjA3IC0wNzAwClN1YmplY3Q6IFtQ QVRDSCB2MjAgNC81XSBFeHRyYWN0IGNvZXJjZV9qc29ucGF0aF9zdWJzY3JpcHQoKQoKVGhpcyBp cyBhIHByZXBhcmF0aW9uIHN0ZXAgZm9yIGEgZnV0dXJlIGNvbW1pdCB0aGF0IHdpbGwgcmV1c2Ug dGhlCmFmb3JlbWVudGlvbmVkIGZ1bmN0aW9uLgoKQ28tYXV0aG9yZWQtYnk6IE5pa2l0YSBHbHVr aG92IDxnbHVraG92Lm4uYUBnbWFpbC5jb20+CkNvLWF1dGhvcmVkLWJ5OiBBbGV4YW5kcmEgV2Fu ZyA8YWxleGFuZHJhLndhbmcub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJldyBEdW5z dGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PgpSZXZpZXdlZC1ieTogTWF0aGV1cyBBbGNhbnRhcmEg PG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEppYW4gSGUgPGppYW4udW5p dmVyc2FsaXR5QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0Bn bWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jIHwgMTI4ICsr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDY0IGluc2VydGlv bnMoKyksIDY0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9qc29uYnN1YnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYnN1YnMuYwppbmRleCBk ZmU3ZGE1NWU4ZS4uNTE2MTQ2ZDExNDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9qc29uYnN1YnMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMKQEAg LTMyLDYgKzMyLDY5IEBAIHR5cGVkZWYgc3RydWN0IEpzb25iU3ViV29ya3NwYWNlCiAJRGF0dW0J ICAgKmluZGV4OwkJCS8qIFN1YnNjcmlwdCB2YWx1ZXMgaW4gRGF0dW0gZm9ybWF0ICovCiB9IEpz b25iU3ViV29ya3NwYWNlOwogCitzdGF0aWMgTm9kZSAqCitjb2VyY2VfanNvbnBhdGhfc3Vic2Ny aXB0X3RvX2ludDRfb3JfdGV4dChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnN1YkV4cHIpCit7 CisJT2lkCQkJc3ViRXhwclR5cGUgPSBleHByVHlwZShzdWJFeHByKTsKKwlPaWQJCQl0YXJnZXRU eXBlID0gSW52YWxpZE9pZDsKKworCWlmIChzdWJFeHByVHlwZSAhPSBVTktOT1dOT0lEKQorCXsK KwkJY29uc3QgT2lkCXRhcmdldHNbXSA9IHtJTlQ0T0lELCBURVhUT0lEfTsKKworCQkvKgorCQkg KiBKc29uYiBjYW4gaGFuZGxlIG11bHRpcGxlIHN1YnNjcmlwdCB0eXBlcywgYnV0IGNhc2VzIHdo ZW4gYQorCQkgKiBzdWJzY3JpcHQgY291bGQgYmUgY29lcmNlZCB0byBtdWx0aXBsZSB0YXJnZXQg dHlwZXMgbXVzdCBiZQorCQkgKiBhdm9pZGVkLCBzaW1pbGFyIHRvIG92ZXJsb2FkZWQgZnVuY3Rp b25zLiBJdCBjb3VsZCBiZSBwb3NzaWJseQorCQkgKiBleHRlbmQgd2l0aCBqc29ucGF0aCBpbiB0 aGUgZnV0dXJlLgorCQkgKi8KKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGhvZih0YXJnZXRz KTsgaSsrKQorCQl7CisJCQlpZiAoY2FuX2NvZXJjZV90eXBlKDEsICZzdWJFeHByVHlwZSwgJnRh cmdldHNbaV0sIENPRVJDSU9OX0lNUExJQ0lUKSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIE9uZSB0 eXBlIGhhcyBhbHJlYWR5IHN1Y2NlZWRlZCwgaXQgbWVhbnMgdGhlcmUgYXJlIHR3bworCQkJCSAq IGNvZXJjaW9uIHRhcmdldHMgcG9zc2libGUsIGZhaWx1cmUuCisJCQkJICovCisJCQkJaWYgKE9p ZElzVmFsaWQodGFyZ2V0VHlwZSkpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCQkJIGVycm1zZygic3Vic2NyaXB0 IHR5cGUgJXMgaXMgbm90IHN1cHBvcnRlZCIsIGZvcm1hdF90eXBlX2JlKHN1YkV4cHJUeXBlKSks CisJCQkJCQkJIGVycmhpbnQoImpzb25iIHN1YnNjcmlwdCBtdXN0IGJlIGNvZXJjaWJsZSB0byBv bmx5IG9uZSB0eXBlLCBpbnRlZ2VyIG9yIHRleHQuIiksCisJCQkJCQkJIHBhcnNlcl9lcnJwb3Np dGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihzdWJFeHByKSkpKTsKKworCQkJCXRhcmdldFR5cGUg PSB0YXJnZXRzW2ldOworCQkJfQorCQl9CisKKwkJLyoKKwkJICogTm8gc3VpdGFibGUgdHlwZXMg d2VyZSBmb3VuZCwgZmFpbHVyZS4KKwkJICovCisJCWlmICghT2lkSXNWYWxpZCh0YXJnZXRUeXBl KSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlT TUFUQ0gpLAorCQkJCQkgZXJybXNnKCJzdWJzY3JpcHQgdHlwZSAlcyBpcyBub3Qgc3VwcG9ydGVk IiwgZm9ybWF0X3R5cGVfYmUoc3ViRXhwclR5cGUpKSwKKwkJCQkJIGVycmhpbnQoImpzb25iIHN1 YnNjcmlwdCBtdXN0IGJlIGNvZXJjaWJsZSB0byBlaXRoZXIgaW50ZWdlciBvciB0ZXh0LiIpLAor CQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKHN1YkV4cHIpKSkp OworCX0KKwllbHNlCisJCXRhcmdldFR5cGUgPSBURVhUT0lEOworCisJLyoKKwkgKiBXZSBrbm93 biBmcm9tIGNhbl9jb2VyY2VfdHlwZSB0aGF0IGNvZXJjaW9uIHdpbGwgc3VjY2VlZCwgc28KKwkg KiBjb2VyY2VfdHlwZSBjb3VsZCBiZSB1c2VkLiBOb3RlIHRoZSBpbXBsaWNpdCBjb2VyY2lvbiBj b250ZXh0LCB3aGljaCBpcworCSAqIHJlcXVpcmVkIHRvIGhhbmRsZSBzdWJzY3JpcHRzIG9mIGRp ZmZlcmVudCB0eXBlcywgc2ltaWxhciB0byBvdmVybG9hZGVkCisJICogZnVuY3Rpb25zLgorCSAq LworCXN1YkV4cHIgPSBjb2VyY2VfdHlwZShwc3RhdGUsCisJCQkJCQkgIHN1YkV4cHIsIHN1YkV4 cHJUeXBlLAorCQkJCQkJICB0YXJnZXRUeXBlLCAtMSwKKwkJCQkJCSAgQ09FUkNJT05fSU1QTElD SVQsCisJCQkJCQkgIENPRVJDRV9JTVBMSUNJVF9DQVNULAorCQkJCQkJICAtMSk7CisKKwlyZXR1 cm4gc3ViRXhwcjsKK30KIAogLyoKICAqIEZpbmlzaCBwYXJzZSBhbmFseXNpcyBvZiBhIFN1YnNj cmlwdGluZ1JlZiBleHByZXNzaW9uIGZvciBhIGpzb25iLgpAQCAtNzQsNzEgKzEzNyw4IEBAIGpz b25iX3N1YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAKIAkJaWYg KGFpLT51aWR4KQogCQl7Ci0JCQlPaWQJCQlzdWJFeHByVHlwZSA9IEludmFsaWRPaWQsCi0JCQkJ CQl0YXJnZXRUeXBlID0gVU5LTk9XTk9JRDsKLQogCQkJc3ViRXhwciA9IHRyYW5zZm9ybUV4cHIo cHN0YXRlLCBhaS0+dWlkeCwgcHN0YXRlLT5wX2V4cHJfa2luZCk7Ci0JCQlzdWJFeHByVHlwZSA9 IGV4cHJUeXBlKHN1YkV4cHIpOwotCi0JCQlpZiAoc3ViRXhwclR5cGUgIT0gVU5LTk9XTk9JRCkK LQkJCXsKLQkJCQlPaWQJCQl0YXJnZXRzWzJdID0ge0lOVDRPSUQsIFRFWFRPSUR9OwotCi0JCQkJ LyoKLQkJCQkgKiBKc29uYiBjYW4gaGFuZGxlIG11bHRpcGxlIHN1YnNjcmlwdCB0eXBlcywgYnV0 IGNhc2VzIHdoZW4gYQotCQkJCSAqIHN1YnNjcmlwdCBjb3VsZCBiZSBjb2VyY2VkIHRvIG11bHRp cGxlIHRhcmdldCB0eXBlcyBtdXN0IGJlCi0JCQkJICogYXZvaWRlZCwgc2ltaWxhciB0byBvdmVy bG9hZGVkIGZ1bmN0aW9ucy4gSXQgY291bGQgYmUKLQkJCQkgKiBwb3NzaWJseSBleHRlbmQgd2l0 aCBqc29ucGF0aCBpbiB0aGUgZnV0dXJlLgotCQkJCSAqLwotCQkJCWZvciAoaW50IGkgPSAwOyBp IDwgMjsgaSsrKQotCQkJCXsKLQkJCQkJaWYgKGNhbl9jb2VyY2VfdHlwZSgxLCAmc3ViRXhwclR5 cGUsICZ0YXJnZXRzW2ldLCBDT0VSQ0lPTl9JTVBMSUNJVCkpCi0JCQkJCXsKLQkJCQkJCS8qCi0J CQkJCQkgKiBPbmUgdHlwZSBoYXMgYWxyZWFkeSBzdWNjZWVkZWQsIGl0IG1lYW5zIHRoZXJlIGFy ZQotCQkJCQkJICogdHdvIGNvZXJjaW9uIHRhcmdldHMgcG9zc2libGUsIGZhaWx1cmUuCi0JCQkJ CQkgKi8KLQkJCQkJCWlmICh0YXJnZXRUeXBlICE9IFVOS05PV05PSUQpCi0JCQkJCQkJZXJlcG9y dChFUlJPUiwKLQkJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAot CQkJCQkJCQkJIGVycm1zZygic3Vic2NyaXB0IHR5cGUgJXMgaXMgbm90IHN1cHBvcnRlZCIsIGZv cm1hdF90eXBlX2JlKHN1YkV4cHJUeXBlKSksCi0JCQkJCQkJCQkgZXJyaGludCgianNvbmIgc3Vi c2NyaXB0IG11c3QgYmUgY29lcmNpYmxlIHRvIG9ubHkgb25lIHR5cGUsIGludGVnZXIgb3IgdGV4 dC4iKSwKLQkJCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24o c3ViRXhwcikpKSk7Ci0KLQkJCQkJCXRhcmdldFR5cGUgPSB0YXJnZXRzW2ldOwotCQkJCQl9Ci0J CQkJfQotCi0JCQkJLyoKLQkJCQkgKiBObyBzdWl0YWJsZSB0eXBlcyB3ZXJlIGZvdW5kLCBmYWls dXJlLgotCQkJCSAqLwotCQkJCWlmICh0YXJnZXRUeXBlID09IFVOS05PV05PSUQpCi0JCQkJCWVy ZXBvcnQoRVJST1IsCi0JCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCks Ci0JCQkJCQkJIGVycm1zZygic3Vic2NyaXB0IHR5cGUgJXMgaXMgbm90IHN1cHBvcnRlZCIsIGZv cm1hdF90eXBlX2JlKHN1YkV4cHJUeXBlKSksCi0JCQkJCQkJIGVycmhpbnQoImpzb25iIHN1YnNj cmlwdCBtdXN0IGJlIGNvZXJjaWJsZSB0byBlaXRoZXIgaW50ZWdlciBvciB0ZXh0LiIpLAotCQkJ CQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oc3ViRXhwcikpKSk7 Ci0JCQl9Ci0JCQllbHNlCi0JCQkJdGFyZ2V0VHlwZSA9IFRFWFRPSUQ7Ci0KLQkJCS8qCi0JCQkg KiBXZSBrbm93biBmcm9tIGNhbl9jb2VyY2VfdHlwZSB0aGF0IGNvZXJjaW9uIHdpbGwgc3VjY2Vl ZCwgc28KLQkJCSAqIGNvZXJjZV90eXBlIGNvdWxkIGJlIHVzZWQuIE5vdGUgdGhlIGltcGxpY2l0 IGNvZXJjaW9uIGNvbnRleHQsCi0JCQkgKiB3aGljaCBpcyByZXF1aXJlZCB0byBoYW5kbGUgc3Vi c2NyaXB0cyBvZiBkaWZmZXJlbnQgdHlwZXMsCi0JCQkgKiBzaW1pbGFyIHRvIG92ZXJsb2FkZWQg ZnVuY3Rpb25zLgotCQkJICovCi0JCQlzdWJFeHByID0gY29lcmNlX3R5cGUocHN0YXRlLAotCQkJ CQkJCQkgIHN1YkV4cHIsIHN1YkV4cHJUeXBlLAotCQkJCQkJCQkgIHRhcmdldFR5cGUsIC0xLAot CQkJCQkJCQkgIENPRVJDSU9OX0lNUExJQ0lULAotCQkJCQkJCQkgIENPRVJDRV9JTVBMSUNJVF9D QVNULAotCQkJCQkJCQkgIC0xKTsKLQkJCWlmIChzdWJFeHByID09IE5VTEwpCi0JCQkJZXJlcG9y dChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAotCQkJ CQkJIGVycm1zZygianNvbmIgc3Vic2NyaXB0IG11c3QgaGF2ZSB0ZXh0IHR5cGUiKSwKLQkJCQkJ CSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oc3ViRXhwcikpKSk7CisJ CQlzdWJFeHByID0gY29lcmNlX2pzb25wYXRoX3N1YnNjcmlwdF90b19pbnQ0X29yX3RleHQocHN0 YXRlLCBzdWJFeHByKTsKIAkJfQogCQllbHNlCiAJCXsKLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1 NCkKCg== --00000000000056bfa5063f2d7dce Content-Type: application/octet-stream; name="v20-0001-Add-test-coverage-for-indirection-transformation.patch" Content-Disposition: attachment; filename="v20-0001-Add-test-coverage-for-indirection-transformation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfragwvf0 RnJvbSBlODllNTE0ODUwNGU4YTM1ODdmMzljMjdjMDI4OTVkNzFmNzU0NmJhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdt YWlsLmNvbT4KRGF0ZTogVGh1LCAxOCBTZXAgMjAyNSAxNTo1NDoyNCAtMDcwMApTdWJqZWN0OiBb UEFUQ0ggdjIwIDEvNV0gQWRkIHRlc3QgY292ZXJhZ2UgZm9yIGluZGlyZWN0aW9uIHRyYW5zZm9y bWF0aW9uCgpUaGVzZSB0ZXN0cyBjb3ZlciBuZXN0ZWQgYXJyYXlzIG9mIGNvbXBvc2l0ZSBkYXRh IHR5cGVzLApzaW5nbGUtYXJndW1lbnQgZnVuY3Rpb25zLCBhbmQgY2FzdGluZyB1c2luZyBkb3Qt bm90YXRpb24sIHByb3ZpZGluZyBhCmJhc2VsaW5lIGZvciBmdXR1cmUgZW5oYW5jZW1lbnRzIHRv IGpzb25iIGRvdC1ub3RhdGlvbiBzdXBwb3J0LgotLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvYXJyYXlzLm91dCB8IDI2ICsrKysrKy0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pz b25iLm91dCAgfCA4OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9hcnJheXMuc3FsICAgICAgfCAgNyArKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pz b25iLnNxbCAgICAgICB8IDE4ICsrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxMzIgaW5zZXJ0aW9u cygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2FycmF5cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FycmF5cy5vdXQKaW5k ZXggNjllYTJjZjVhZDguLmUxYWI2ZGMyNzhhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2FycmF5cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hcnJh eXMub3V0CkBAIC0xNzgyLDE3ICsxNzgyLDE3IEBAIFNFTEVDVCBtYXgoZjEpLCBtaW4oZjEpLCBt YXgoZjIpLCBtaW4oZjIpLCBtYXgoZjMpLCBtaW4oZjMpIEZST00gYXJyYWdndGVzdDsKICgxIHJv dykKIAogLS0gQSBmZXcgc2ltcGxlIHRlc3RzIGZvciBhcnJheXMgb2YgY29tcG9zaXRlIHR5cGVz Ci1jcmVhdGUgdHlwZSBjb21wdHlwZSBhcyAoZjEgaW50LCBmMiB0ZXh0KTsKK2NyZWF0ZSB0eXBl IGNvbXB0eXBlIGFzIChmMSBpbnQsIGYyIHRleHQsIGYzIGludFtdKTsKIGNyZWF0ZSB0YWJsZSBj b21wdGFibGUgKGMxIGNvbXB0eXBlLCBjMiBjb21wdHlwZVtdKTsKIC0tIFhYWCB3b3VsZCBsaWtl IHRvIG5vdCBoYXZlIHRvIHNwZWNpZnkgcm93KCkgY29uc3RydWN0IHR5cGVzIGhlcmUgLi4uCiBp bnNlcnQgaW50byBjb21wdGFibGUKLSAgdmFsdWVzIChyb3coMSwnZm9vJyksIGFycmF5W3Jvdygy LCdiYXInKTo6Y29tcHR5cGUsIHJvdygzLCdiYXonKTo6Y29tcHR5cGVdKTsKKyAgdmFsdWVzIChy b3coMSwnZm9vJyxhcnJheVsxMCwyMF0pLCBhcnJheVtyb3coMiwnYmFyJyxhcnJheVszMCw0MF0p Ojpjb21wdHlwZSwgcm93KDMsJ2JheicsYXJyYXlbNTAsNjBdKTo6Y29tcHR5cGVdKTsKIC0tIGNo ZWNrIHRoYXQgaW1wbGljaXRseSBuYW1lZCBhcnJheSB0eXBlIF9jb21wdHlwZSBpc24ndCBhIHBy b2JsZW0KIGNyZWF0ZSB0eXBlIF9jb21wdHlwZSBhcyBlbnVtKCdmb29leScpOwogc2VsZWN0ICog ZnJvbSBjb21wdGFibGU7Ci0gICBjMSAgICB8ICAgICAgICAgIGMyICAgICAgICAgICAKLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICgxLGZvbykgfCB7IigyLGJhcikiLCIoMyxi YXopIn0KKyAgICAgICAgYzEgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIGMyICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMSxmb28sInsxMCwyMH0iKSB8IHsiKDIs YmFyLFwiezMwLDQwfVwiKSIsIigzLGJheixcIns1MCw2MH1cIikifQogKDEgcm93KQogCiBzZWxl Y3QgYzJbMl0uZjIgZnJvbSBjb21wdGFibGU7CkBAIC0xODAxLDYgKzE4MDEsMjIgQEAgc2VsZWN0 IGMyWzJdLmYyIGZyb20gY29tcHRhYmxlOwogIGJhegogKDEgcm93KQogCitzZWxlY3QgYzJbMl0u ZjMgZnJvbSBjb21wdGFibGU7CisgICBmMyAgICAKKy0tLS0tLS0tLQorIHs1MCw2MH0KKygxIHJv dykKKworc2VsZWN0IGMyWzJdLmYzWzE6Ml0gZnJvbSBjb21wdGFibGU7CisgICBmMyAgICAKKy0t LS0tLS0tLQorIHs1MCw2MH0KKygxIHJvdykKKworc2VsZWN0IGMyWzE6Ml0uZjNbMToyXSBmcm9t IGNvbXB0YWJsZTsKK0VSUk9SOiAgY29sdW1uIG5vdGF0aW9uIC5mMyBhcHBsaWVkIHRvIHR5cGUg Y29tcHR5cGVbXSwgd2hpY2ggaXMgbm90IGEgY29tcG9zaXRlIHR5cGUKK0xJTkUgMTogc2VsZWN0 IGMyWzE6Ml0uZjNbMToyXSBmcm9tIGNvbXB0YWJsZTsKKyAgICAgICAgICAgICAgIF4KIGRyb3Ag dHlwZSBfY29tcHR5cGU7CiBkcm9wIHRhYmxlIGNvbXB0YWJsZTsKIGRyb3AgdHlwZSBjb21wdHlw ZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQKaW5kZXggNWExZWIxOGFiYTIuLmZiNDdj OGE4OTNhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dApAQCAtNTgzMSwzICs1ODMx LDkxIEBAIHNlbGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwNSc6Ompzb25iOjppbnQ4OwogIDEyMzQ1CiAoMSByb3cpCiAKKy0tIHNpbmdsZSBh cmd1bWVudCBqc29uYiBmdW5jdGlvbnMgYXMganNvbmJfZnVuY3Rpb24oanNvbmIpIGFuZCBqc29u Yi5qc29uYl9mdW5jdGlvbgorc2VsZWN0IGpzb25iX3R5cGVvZigneyJhIjoxfSc6Ompzb25iKTsK KyBqc29uYl90eXBlb2YgCistLS0tLS0tLS0tLS0tLQorIG9iamVjdAorKDEgcm93KQorCitzZWxl Y3QgKCd7ImEiOjF9Jzo6anNvbmIpLmpzb25iX3R5cGVvZjsKKyBqc29uYl90eXBlb2YgCistLS0t LS0tLS0tLS0tLQorIG9iamVjdAorKDEgcm93KQorCitzZWxlY3QganNvbmJfYXJyYXlfbGVuZ3Ro KCdbImEiLCAiYiIsICJjIl0nOjpqc29uYik7CisganNvbmJfYXJyYXlfbGVuZ3RoIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgIDMKKygxIHJvdykKKworc2VsZWN0ICgn WyJhIiwgImIiLCAiYyJdJzo6anNvbmIpLmpzb25iX2FycmF5X2xlbmd0aDsKKyBqc29uYl9hcnJh eV9sZW5ndGggCistLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgMworKDEg cm93KQorCitzZWxlY3QganNvbmJfb2JqZWN0X2tleXMoJ3siYSI6MSwgImIiOjJ9Jzo6anNvbmIp OworIGpzb25iX29iamVjdF9rZXlzIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIGEKKyBiCisoMiBy b3dzKQorCitzZWxlY3QgKCd7ImEiOjEsICJiIjoyfSc6Ompzb25iKS5qc29uYl9vYmplY3Rfa2V5 czsKKyBqc29uYl9vYmplY3Rfa2V5cyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBhCisgYgorKDIg cm93cykKKworLS0gY2FzdCBqc29uYiB0byBvdGhlciB0eXBlcyBhcyAoanNvbmIpOjp0eXBlIGFu ZCAoanNvbmIpLnR5cGUKK3NlbGVjdCAoJzEyMy40NSc6Ompzb25iKTo6bnVtZXJpYzsKKyBudW1l cmljIAorLS0tLS0tLS0tCisgIDEyMy40NQorKDEgcm93KQorCitzZWxlY3QgKCcxMjMuNDUnOjpq c29uYikubnVtZXJpYzsKKyBudW1lcmljIAorLS0tLS0tLS0tCisgIDEyMy40NQorKDEgcm93KQor CitzZWxlY3QgKCdbeyJuYW1lIjogImFsaWNlIn0sIHsibmFtZSI6ICJib2IifV0nOjpqc29uYik6 Om5hbWU7CisgICAgICAgICAgICAgICAgIG5hbWUgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbeyJuYW1lIjogImFsaWNlIn0sIHsibmFt ZSI6ICJib2IifV0KKygxIHJvdykKKworc2VsZWN0ICgnW3sibmFtZSI6ICJhbGljZSJ9LCB7Im5h bWUiOiAiYm9iIn1dJzo6anNvbmIpLm5hbWU7CisgICAgICAgICAgICAgICAgIG5hbWUgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbeyJu YW1lIjogImFsaWNlIn0sIHsibmFtZSI6ICJib2IifV0KKygxIHJvdykKKworc2VsZWN0ICgndHJ1 ZSc6Ompzb25iKTo6Ym9vbDsKKyBib29sIAorLS0tLS0tCisgdAorKDEgcm93KQorCitzZWxlY3Qg KCd0cnVlJzo6anNvbmIpLmJvb2w7CisgYm9vbCAKKy0tLS0tLQorIHQKKygxIHJvdykKKworc2Vs ZWN0ICgneyJ0ZXh0IjogImhlbGxvIn0nOjpqc29uYik6OnRleHQ7CisgICAgICAgdGV4dCAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJ0ZXh0IjogImhlbGxvIn0KKygxIHJvdykKKwor c2VsZWN0ICgneyJ0ZXh0IjogImhlbGxvIn0nOjpqc29uYikudGV4dDsKKyAgICAgICB0ZXh0ICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7InRleHQiOiAiaGVsbG8ifQorKDEgcm93KQor CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9hcnJheXMuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvYXJyYXlzLnNxbAppbmRleCA0N2Q2MmMxZDM4ZC4uNDUwMzg5ODMxYTAgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2FycmF5cy5zcWwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvYXJyYXlzLnNxbApAQCAtNTU1LDE5ICs1NTUsMjIgQEAgU0VMRUNUIG1heChm MSksIG1pbihmMSksIG1heChmMiksIG1pbihmMiksIG1heChmMyksIG1pbihmMykgRlJPTSBhcnJh Z2d0ZXN0OwogCiAtLSBBIGZldyBzaW1wbGUgdGVzdHMgZm9yIGFycmF5cyBvZiBjb21wb3NpdGUg dHlwZXMKIAotY3JlYXRlIHR5cGUgY29tcHR5cGUgYXMgKGYxIGludCwgZjIgdGV4dCk7CitjcmVh dGUgdHlwZSBjb21wdHlwZSBhcyAoZjEgaW50LCBmMiB0ZXh0LCBmMyBpbnRbXSk7CiAKIGNyZWF0 ZSB0YWJsZSBjb21wdGFibGUgKGMxIGNvbXB0eXBlLCBjMiBjb21wdHlwZVtdKTsKIAogLS0gWFhY IHdvdWxkIGxpa2UgdG8gbm90IGhhdmUgdG8gc3BlY2lmeSByb3coKSBjb25zdHJ1Y3QgdHlwZXMg aGVyZSAuLi4KIGluc2VydCBpbnRvIGNvbXB0YWJsZQotICB2YWx1ZXMgKHJvdygxLCdmb28nKSwg YXJyYXlbcm93KDIsJ2JhcicpOjpjb21wdHlwZSwgcm93KDMsJ2JheicpOjpjb21wdHlwZV0pOwor ICB2YWx1ZXMgKHJvdygxLCdmb28nLGFycmF5WzEwLDIwXSksIGFycmF5W3JvdygyLCdiYXInLGFy cmF5WzMwLDQwXSk6OmNvbXB0eXBlLCByb3coMywnYmF6JyxhcnJheVs1MCw2MF0pOjpjb21wdHlw ZV0pOwogCiAtLSBjaGVjayB0aGF0IGltcGxpY2l0bHkgbmFtZWQgYXJyYXkgdHlwZSBfY29tcHR5 cGUgaXNuJ3QgYSBwcm9ibGVtCiBjcmVhdGUgdHlwZSBfY29tcHR5cGUgYXMgZW51bSgnZm9vZXkn KTsKIAogc2VsZWN0ICogZnJvbSBjb21wdGFibGU7CiBzZWxlY3QgYzJbMl0uZjIgZnJvbSBjb21w dGFibGU7CitzZWxlY3QgYzJbMl0uZjMgZnJvbSBjb21wdGFibGU7CitzZWxlY3QgYzJbMl0uZjNb MToyXSBmcm9tIGNvbXB0YWJsZTsKK3NlbGVjdCBjMlsxOjJdLmYzWzE6Ml0gZnJvbSBjb21wdGFi bGU7CiAKIGRyb3AgdHlwZSBfY29tcHR5cGU7CiBkcm9wIHRhYmxlIGNvbXB0YWJsZTsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2pzb25iLnNxbAppbmRleCA1N2MxMWFjZGRmZS4uOTcwZWQxY2ZmY2EgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9qc29uYi5zcWwKQEAgLTE1OTAsMyArMTU5MCwyMSBAQCBzZWxlY3QgJzEyMzQ1LjAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6ZmxvYXQ4Owog c2VsZWN0ICcxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDA1Jzo6anNvbmI6OmludDI7CiBzZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6aW50NDsKIHNlbGVjdCAnMTIzNDUuMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNSc6Ompzb25iOjppbnQ4 OworCistLSBzaW5nbGUgYXJndW1lbnQganNvbmIgZnVuY3Rpb25zIGFzIGpzb25iX2Z1bmN0aW9u KGpzb25iKSBhbmQganNvbmIuanNvbmJfZnVuY3Rpb24KK3NlbGVjdCBqc29uYl90eXBlb2YoJ3si YSI6MX0nOjpqc29uYik7CitzZWxlY3QgKCd7ImEiOjF9Jzo6anNvbmIpLmpzb25iX3R5cGVvZjsK K3NlbGVjdCBqc29uYl9hcnJheV9sZW5ndGgoJ1siYSIsICJiIiwgImMiXSc6Ompzb25iKTsKK3Nl bGVjdCAoJ1siYSIsICJiIiwgImMiXSc6Ompzb25iKS5qc29uYl9hcnJheV9sZW5ndGg7CitzZWxl Y3QganNvbmJfb2JqZWN0X2tleXMoJ3siYSI6MSwgImIiOjJ9Jzo6anNvbmIpOworc2VsZWN0ICgn eyJhIjoxLCAiYiI6Mn0nOjpqc29uYikuanNvbmJfb2JqZWN0X2tleXM7CisKKy0tIGNhc3QganNv bmIgdG8gb3RoZXIgdHlwZXMgYXMgKGpzb25iKTo6dHlwZSBhbmQgKGpzb25iKS50eXBlCitzZWxl Y3QgKCcxMjMuNDUnOjpqc29uYik6Om51bWVyaWM7CitzZWxlY3QgKCcxMjMuNDUnOjpqc29uYiku bnVtZXJpYzsKK3NlbGVjdCAoJ1t7Im5hbWUiOiAiYWxpY2UifSwgeyJuYW1lIjogImJvYiJ9XSc6 Ompzb25iKTo6bmFtZTsKK3NlbGVjdCAoJ1t7Im5hbWUiOiAiYWxpY2UifSwgeyJuYW1lIjogImJv YiJ9XSc6Ompzb25iKS5uYW1lOworc2VsZWN0ICgndHJ1ZSc6Ompzb25iKTo6Ym9vbDsKK3NlbGVj dCAoJ3RydWUnOjpqc29uYikuYm9vbDsKK3NlbGVjdCAoJ3sidGV4dCI6ICJoZWxsbyJ9Jzo6anNv bmIpOjp0ZXh0Oworc2VsZWN0ICgneyJ0ZXh0IjogImhlbGxvIn0nOjpqc29uYikudGV4dDsKLS0g CjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --00000000000056bfa5063f2d7dce Content-Type: application/octet-stream; name="v20-0002-Add-an-alternative-transform-function-in-Subscri.patch" Content-Disposition: attachment; filename="v20-0002-Add-an-alternative-transform-function-in-Subscri.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfragwvp4 RnJvbSA2OGU5N2MzNmEyZTg0ZGQ0MmUzOWE0Y2U3OWE5MDA1ODg5MGRjMWY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdt YWlsLmNvbT4KRGF0ZTogVGh1LCAxOCBTZXAgMjAyNSAxNjozNDo0NyAtMDcwMApTdWJqZWN0OiBb UEFUQ0ggdjIwIDIvNV0gQWRkIGFuIGFsdGVybmF0aXZlIHRyYW5zZm9ybSBmdW5jdGlvbiBpbgog U3Vic2NyaXB0Um91dGluZXMKCkFkZCBhIHRyYW5zZm9ybV9wYXJ0aWFsKCkgZnVuY3Rpb24gcG9p bnRlciB0byBlbmFibGUgcHJvY2Vzc2luZyBhCnByZWZpeCBvZiBpbmRpcmVjdGlvbiBsaXN0cy4g RGF0YSB0eXBlcyB0aGF0IHN1cHBvcnQgc3Vic2NyaXB0aW5nIGNhbgpvcHQgdG8gdXNlIHRoZSB0 cmFuc2Zvcm0oKSBmdW5jdGlvbiB0aGF0IHRyYW5zZm9ybXMgdGhlIGZ1bGwgaW5wdXQKaW5kaXJl Y3Rpb24gbGlzdCAoZS5nLiwgYXJyYXlzLCBoc3RvcmUpLCBvciBjYW4gb3B0IHRvIHVzZSB0aGUK dHJhbnNmb3JtX3BhcnRpYWwoKSBmdW5jdGlvbiB0byBiZSBtb3JlIGZsZXhpYmxlIG9uIGluZGly ZWN0aW9uIG5vZGUKdHlwZXMsIGFuZCBtYWtlIGJlc3QgZWZmb3J0IGluIHRyYW5zZm9ybWluZyBv bmx5IGEgcHJlZml4IG9mIHRoZQppbmRpcmVjdGlvbiBsaXN0LCBsZXR0aW5nIHRoZSBjYWxsZXIg aGFuZGxlIHRoZSByZW1haW5pbmcKaW5kaXJlY3Rpb25zLgoKVGhpcyBhbGxvd3MgdHJhbnNmb3Jt IGZ1bmN0aW9ucyB0byBhY2NlcHQgZG90IG5vdGF0aW9uIGluZGlyZWN0aW9uIGFzCmlucHV0LCBw cmVwYXJpbmcgZm9yIGZ1dHVyZSBKU09OQiBkb3Qgbm90YXRpb24gc3VwcG9ydC4KLS0tCiBjb250 cmliL2hzdG9yZS9oc3RvcmVfc3Vicy5jICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfZXhwci5jICAgfCA3NiArKysrKysrKysrKysrKystLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2Vfbm9kZS5jICAgfCA5MiArKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgfCAgNiArLQogc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2FycmF5c3Vicy5jIHwgIDIgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b25ic3Vicy5jIHwgMTkgKysrKystLQogc3JjL2luY2x1ZGUvbm9kZXMvc3Vic2NyaXB0aW5nLmgg IHwgMjQgKysrKysrKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggICB8ICAzICst CiA4IGZpbGVzIGNoYW5nZWQsIDE2MyBpbnNlcnRpb25zKCspLCA2MCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9jb250cmliL2hzdG9yZS9oc3RvcmVfc3Vicy5jIGIvY29udHJpYi9oc3RvcmUv aHN0b3JlX3N1YnMuYwppbmRleCAzZDAzZjY2ZmEwZC4uZDY3OGRjNTZmODYgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvaHN0b3JlL2hzdG9yZV9zdWJzLmMKKysrIGIvY29udHJpYi9oc3RvcmUvaHN0b3Jl X3N1YnMuYwpAQCAtMjg3LDYgKzI4Nyw3IEBAIGhzdG9yZV9zdWJzY3JpcHRfaGFuZGxlcihQR19G VU5DVElPTl9BUkdTKQogewogCXN0YXRpYyBjb25zdCBTdWJzY3JpcHRSb3V0aW5lcyBzYnNyb3V0 aW5lcyA9IHsKIAkJLnRyYW5zZm9ybSA9IGhzdG9yZV9zdWJzY3JpcHRfdHJhbnNmb3JtLAorCQku dHJhbnNmb3JtX3BhcnRpYWwgPSBOVUxMLAogCQkuZXhlY19zZXR1cCA9IGhzdG9yZV9leGVjX3Nl dHVwLAogCQkuZmV0Y2hfc3RyaWN0ID0gdHJ1ZSwJLyogZmV0Y2ggcmV0dXJucyBOVUxMIGZvciBO VUxMIGlucHV0cyAqLwogCQkuZmV0Y2hfbGVha3Byb29mID0gdHJ1ZSwJLyogZmV0Y2ggcmV0dXJu cyBOVUxMIGZvciBiYWQgc3Vic2NyaXB0ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCBl MTk3OWE4MGMxOS4uOTVjZTMzMGU1MDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtNDM2 LDQ0ICs0MzYsNjUgQEAgdHJhbnNmb3JtSW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBB X0luZGlyZWN0aW9uICppbmQpCiB7CiAJTm9kZQkgICAqbGFzdF9zcmYgPSBwc3RhdGUtPnBfbGFz dF9zcmY7CiAJTm9kZQkgICAqcmVzdWx0ID0gdHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0YXRlLCBp bmQtPmFyZyk7Ci0JTGlzdAkgICAqc3Vic2NyaXB0cyA9IE5JTDsKKwlMaXN0CSAgICppbmRpcmVj dGlvbnMgPSBOSUw7CiAJaW50CQkJbG9jYXRpb24gPSBleHByTG9jYXRpb24ocmVzdWx0KTsKIAlM aXN0Q2VsbCAgICppOwogCiAJLyoKLQkgKiBXZSBoYXZlIHRvIHNwbGl0IGFueSBmaWVsZC1zZWxl Y3Rpb24gb3BlcmF0aW9ucyBhcGFydCBmcm9tCi0JICogc3Vic2NyaXB0aW5nLiAgQWRqYWNlbnQg QV9JbmRpY2VzIG5vZGVzIGhhdmUgdG8gYmUgdHJlYXRlZCBhcyBhIHNpbmdsZQorCSAqIENvbWJp bmUgZmllbGQgbmFtZXMgYW5kIHN1YnNjcmlwdHMgaW50byBhIHNpbmdsZSBpbmRpcmVjdGlvbiBs aXN0LCBhcworCSAqIHNvbWUgc3Vic2NyaXB0aW5nIGNvbnRhaW5lcnMsIHN1Y2ggYXMganNvbmIs IHN1cHBvcnQgZmllbGQgYWNjZXNzIHVzaW5nCisJICogZG90IG5vdGF0aW9uLiBBZGphY2VudCBB X0luZGljZXMgbm9kZXMgaGF2ZSB0byBiZSB0cmVhdGVkIGFzIGEgc2luZ2xlCiAJICogbXVsdGlk aW1lbnNpb25hbCBzdWJzY3JpcHQgb3BlcmF0aW9uLgogCSAqLwogCWZvcmVhY2goaSwgaW5kLT5p bmRpcmVjdGlvbikKIAl7CiAJCU5vZGUJICAgKm4gPSBsZmlyc3QoaSk7CiAKLQkJaWYgKElzQShu LCBBX0luZGljZXMpKQotCQkJc3Vic2NyaXB0cyA9IGxhcHBlbmQoc3Vic2NyaXB0cywgbik7Ci0J CWVsc2UgaWYgKElzQShuLCBBX1N0YXIpKQorCQlpZiAoSXNBKG4sIEFfSW5kaWNlcykgfHwgSXNB KG4sIFN0cmluZykpCisJCQlpbmRpcmVjdGlvbnMgPSBsYXBwZW5kKGluZGlyZWN0aW9ucywgbik7 CisJCWVsc2UKIAkJeworCQkJQXNzZXJ0KElzQShuLCBBX1N0YXIpKTsKIAkJCWVyZXBvcnQoRVJS T1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkJ IGVycm1zZygicm93IGV4cGFuc2lvbiB2aWEgXCIqXCIgaXMgbm90IHN1cHBvcnRlZCBoZXJlIiks CiAJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKIAkJfQotCQll bHNlCisJfQorCisJd2hpbGUgKGluZGlyZWN0aW9ucykKKwl7CisJCS8qIHRyeSBwcm9jZXNzaW5n IGNvbnRhaW5lciBzdWJzY3JpcHRzIGZpcnN0ICovCisJCWludAkJCXRyYW5zZm9ybWVkX2NvdW50 ID0gMDsKKwkJTm9kZQkgICAqbmV3cmVzdWx0ID0gKE5vZGUgKikKKwkJCXRyYW5zZm9ybUNvbnRh aW5lclN1YnNjcmlwdHMocHN0YXRlLAorCQkJCQkJCQkJCSByZXN1bHQsCisJCQkJCQkJCQkJIGV4 cHJUeXBlKHJlc3VsdCksCisJCQkJCQkJCQkJIGV4cHJUeXBtb2QocmVzdWx0KSwKKwkJCQkJCQkJ CQkgaW5kaXJlY3Rpb25zLAorCQkJCQkJCQkJCSBmYWxzZSwKKwkJCQkJCQkJCQkgJnRyYW5zZm9y bWVkX2NvdW50KTsKKworCQlpZiAoIW5ld3Jlc3VsdCkKIAkJewotCQkJTm9kZQkgICAqbmV3cmVz dWx0OworCQkJLyoKKwkJCSAqIGdlbmVyaWMgc3Vic2NyaXB0aW5nIGZhaWxlZDsgZmFsbGluZyBi YWNrIHRvIGZpZWxkIHNlbGVjdGlvbgorCQkJICogZm9yIGEgY29tcG9zaXRlIHR5cGUsIG9yIGEg c2luZ2xlLWFyZ3VtZW50IGZ1bmN0aW9uLgorCQkJICovCisJCQlOb2RlCSAgICpuOworCisJCQlB c3NlcnQoaW5kaXJlY3Rpb25zKTsKIAotCQkJQXNzZXJ0KElzQShuLCBTdHJpbmcpKTsKKwkJCW4g PSBsaW5pdGlhbChpbmRpcmVjdGlvbnMpOwogCi0JCQkvKiBwcm9jZXNzIHN1YnNjcmlwdHMgYmVm b3JlIHRoaXMgZmllbGQgc2VsZWN0aW9uICovCi0JCQlpZiAoc3Vic2NyaXB0cykKLQkJCQlyZXN1 bHQgPSAoTm9kZSAqKSB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKHBzdGF0ZSwKLQkJCQkJ CQkJCQkJCQkJCSAgIHJlc3VsdCwKLQkJCQkJCQkJCQkJCQkJCSAgIGV4cHJUeXBlKHJlc3VsdCks Ci0JCQkJCQkJCQkJCQkJCQkgICBleHByVHlwbW9kKHJlc3VsdCksCi0JCQkJCQkJCQkJCQkJCQkg ICBzdWJzY3JpcHRzLAotCQkJCQkJCQkJCQkJCQkJICAgZmFsc2UpOwotCQkJc3Vic2NyaXB0cyA9 IE5JTDsKKwkJCWlmICghSXNBKG4sIFN0cmluZykpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkJIGVycm1zZygiY2Fu bm90IHN1YnNjcmlwdCB0eXBlICVzIGJlY2F1c2UgaXQgZG9lcyBub3Qgc3VwcG9ydCBzdWJzY3Jp cHRpbmciLAorCQkJCQkJCQlmb3JtYXRfdHlwZV9iZShleHByVHlwZShyZXN1bHQpKSksCisJCQkJ CQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKHJlc3VsdCkpKSk7CiAK KwkJCS8qIHRyeSB0byBwYXJzZSBmdW5jdGlvbiBvciBmaWVsZCBzZWxlY3Rpb24gKi8KIAkJCW5l d3Jlc3VsdCA9IFBhcnNlRnVuY09yQ29sdW1uKHBzdGF0ZSwKIAkJCQkJCQkJCQkgIGxpc3RfbWFr ZTEobiksCiAJCQkJCQkJCQkJICBsaXN0X21ha2UxKHJlc3VsdCksCkBAIC00ODEsMTkgKzUwMiwx OCBAQCB0cmFuc2Zvcm1JbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rp b24gKmluZCkKIAkJCQkJCQkJCQkgIE5VTEwsCiAJCQkJCQkJCQkJICBmYWxzZSwKIAkJCQkJCQkJ CQkgIGxvY2F0aW9uKTsKLQkJCWlmIChuZXdyZXN1bHQgPT0gTlVMTCkKKworCQkJaWYgKCFuZXdy ZXN1bHQpCiAJCQkJdW5rbm93bl9hdHRyaWJ1dGUocHN0YXRlLCByZXN1bHQsIHN0clZhbChuKSwg bG9jYXRpb24pOwotCQkJcmVzdWx0ID0gbmV3cmVzdWx0OworCQkJZWxzZQorCQkJCXRyYW5zZm9y bWVkX2NvdW50ID0gMTsKIAkJfQorCisJCS8qIHJlbW92ZSB0aGUgcHJvY2Vzc2VkIGluZGlyZWN0 aW9ucyAqLworCQlpbmRpcmVjdGlvbnMgPSBsaXN0X2RlbGV0ZV9maXJzdF9uKGluZGlyZWN0aW9u cywgdHJhbnNmb3JtZWRfY291bnQpOworCisJCXJlc3VsdCA9IG5ld3Jlc3VsdDsKIAl9Ci0JLyog cHJvY2VzcyB0cmFpbGluZyBzdWJzY3JpcHRzLCBpZiBhbnkgKi8KLQlpZiAoc3Vic2NyaXB0cykK LQkJcmVzdWx0ID0gKE5vZGUgKikgdHJhbnNmb3JtQ29udGFpbmVyU3Vic2NyaXB0cyhwc3RhdGUs Ci0JCQkJCQkJCQkJCQkJICAgcmVzdWx0LAotCQkJCQkJCQkJCQkJCSAgIGV4cHJUeXBlKHJlc3Vs dCksCi0JCQkJCQkJCQkJCQkJICAgZXhwclR5cG1vZChyZXN1bHQpLAotCQkJCQkJCQkJCQkJCSAg IHN1YnNjcmlwdHMsCi0JCQkJCQkJCQkJCQkJICAgZmFsc2UpOwogCiAJcmV0dXJuIHJlc3VsdDsK IH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ub2RlLmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5jCmluZGV4IDIwM2I3YTMyMTc4Li43MWZmMzFhOTYzOCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX25vZGUuYworKysgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5jCkBAIC0yMzgsMjAgKzIzOCwyMiBAQCB0cmFuc2Zvcm1D b250YWluZXJUeXBlKE9pZCAqY29udGFpbmVyVHlwZSwgaW50MzIgKmNvbnRhaW5lclR5cG1vZCkK ICAqIGNvbnRhaW5lclR5cE1vZAl0eXBtb2QgZm9yIHRoZSBjb250YWluZXIKICAqIGluZGlyZWN0 aW9uCQlVbnRyYW5zZm9ybWVkIGxpc3Qgb2Ygc3Vic2NyaXB0cyAobXVzdCBub3QgYmUgTklMKQog ICogaXNBc3NpZ25tZW50CQlUcnVlIGlmIHRoaXMgd2lsbCBiZWNvbWUgYSBjb250YWluZXIgYXNz aWdubWVudC4KLSAqLworICogblN1YnNjcmlwdHMJCU91dHB1dCBwYXJhbWV0ZXIgZm9yIG51bWJl ciBvZiB0cmFuc2Zvcm1lZCBzdWJzY3JpcHRzLgorKi8KIFN1YnNjcmlwdGluZ1JlZiAqCiB0cmFu c2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkgTm9k ZSAqY29udGFpbmVyQmFzZSwKIAkJCQkJCQkgT2lkIGNvbnRhaW5lclR5cGUsCiAJCQkJCQkJIGlu dDMyIGNvbnRhaW5lclR5cE1vZCwKIAkJCQkJCQkgTGlzdCAqaW5kaXJlY3Rpb24sCi0JCQkJCQkJ IGJvb2wgaXNBc3NpZ25tZW50KQorCQkJCQkJCSBib29sIGlzQXNzaWdubWVudCwKKwkJCQkJCQkg aW50ICpuU3Vic2NyaXB0cykKIHsKIAlTdWJzY3JpcHRpbmdSZWYgKnNic3JlZjsKIAljb25zdCBT dWJzY3JpcHRSb3V0aW5lcyAqc2Jzcm91dGluZXM7CiAJT2lkCQkJZWxlbWVudFR5cGU7Ci0JYm9v bAkJaXNTbGljZSA9IGZhbHNlOwotCUxpc3RDZWxsICAgKmlkeDsKKworCSpuU3Vic2NyaXB0cyA9 IDA7CiAKIAkvKgogCSAqIERldGVybWluZSB0aGUgYWN0dWFsIGNvbnRhaW5lciB0eXBlLCBzbWFz aGluZyBhbnkgZG9tYWluLiAgSW4gdGhlCkBAIC0yNjcsMjggKzI2OSwxNSBAQCB0cmFuc2Zvcm1D b250YWluZXJTdWJzY3JpcHRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkgKi8KIAlzYnNyb3V0aW5l cyA9IGdldFN1YnNjcmlwdGluZ1JvdXRpbmVzKGNvbnRhaW5lclR5cGUsICZlbGVtZW50VHlwZSk7 CiAJaWYgKCFzYnNyb3V0aW5lcykKKwl7CisJCWlmICghaXNBc3NpZ25tZW50KQorCQkJcmV0dXJu IE5VTEw7CisKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBF X01JU01BVENIKSwKIAkJCQkgZXJybXNnKCJjYW5ub3Qgc3Vic2NyaXB0IHR5cGUgJXMgYmVjYXVz ZSBpdCBkb2VzIG5vdCBzdXBwb3J0IHN1YnNjcmlwdGluZyIsCiAJCQkJCQlmb3JtYXRfdHlwZV9i ZShjb250YWluZXJUeXBlKSksCiAJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJM b2NhdGlvbihjb250YWluZXJCYXNlKSkpKTsKLQotCS8qCi0JICogRGV0ZWN0IHdoZXRoZXIgYW55 IG9mIHRoZSBpbmRpcmVjdGlvbiBpdGVtcyBhcmUgc2xpY2Ugc3BlY2lmaWVycy4KLQkgKgotCSAq IEEgbGlzdCBjb250YWluaW5nIG9ubHkgc2ltcGxlIHN1YnNjcmlwdHMgcmVmZXJzIHRvIGEgc2lu Z2xlIGNvbnRhaW5lcgotCSAqIGVsZW1lbnQuICBJZiBhbnkgb2YgdGhlIGl0ZW1zIGFyZSBzbGlj ZSBzcGVjaWZpZXJzIChsb3dlcjp1cHBlciksIHRoZW4KLQkgKiB0aGUgc3Vic2NyaXB0IGV4cHJl c3Npb24gbWVhbnMgYSBjb250YWluZXIgc2xpY2Ugb3BlcmF0aW9uLgotCSAqLwotCWZvcmVhY2go aWR4LCBpbmRpcmVjdGlvbikKLQl7Ci0JCUFfSW5kaWNlcyAgKmFpID0gbGZpcnN0X25vZGUoQV9J bmRpY2VzLCBpZHgpOwotCi0JCWlmIChhaS0+aXNfc2xpY2UpCi0JCXsKLQkJCWlzU2xpY2UgPSB0 cnVlOwotCQkJYnJlYWs7Ci0JCX0KIAl9CiAKIAkvKgpAQCAtMzA5LDggKzI5OCw2NSBAQCB0cmFu c2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkgKiBDYWxsIHRo ZSBjb250YWluZXItdHlwZS1zcGVjaWZpYyBsb2dpYyB0byB0cmFuc2Zvcm0gdGhlIHN1YnNjcmlw dHMgYW5kCiAJICogZGV0ZXJtaW5lIHRoZSBzdWJzY3JpcHRpbmcgcmVzdWx0IHR5cGUuCiAJICov Ci0Jc2Jzcm91dGluZXMtPnRyYW5zZm9ybShzYnNyZWYsIGluZGlyZWN0aW9uLCBwc3RhdGUsCi0J CQkJCQkgICBpc1NsaWNlLCBpc0Fzc2lnbm1lbnQpOworCWlmIChzYnNyb3V0aW5lcy0+dHJhbnNm b3JtX3BhcnRpYWwgIT0gTlVMTCkKKwl7CisJCS8qCisJCSAqIElmIHRoZSBjb250YWluZXIgdHlw ZSBwcm92aWRlcyBhIHBhcnRpYWwgdHJhbnNmb3JtIGZ1bmN0aW9uLCB1c2UgaXQKKwkJICogaGVy ZS4gVGhpcyBmdW5jdGlvbiBjYW4gYWNjZXB0IGFueSBub2RlIHR5cGVzIGluIHRoZSBpbmRpcmVj dGlvbgorCQkgKiBsaXN0IGFzIGlucHV0LCBhbmQgaXMgcmVzcG9uc2libGUgZm9yIGlkZW50aWZ5 aW5nIGFuZCB0cmFuc2Zvcm1pbmcKKwkJICogYXMgbWFueSBsZWFkaW5nIGVsZW1lbnRzIGFzIGl0 IGNhbiBoYW5kbGUsIHdoaWNoIG1heSBiZSBvbmx5IGEKKwkJICogcHJlZml4IG9mIHRoZSBpbmRp cmVjdGlvbiBsaXN0LiBGb3IgZXhhbXBsZSwgaXQgbWlnaHQgcHJvY2VzcworCQkgKiBBX0luZGlj ZXMgbm9kZXMsIFN0cmluZyBub2RlcyAoZm9yIGpzb25iIGRvdC1ub3RhdGlvbiksIG9yIG90aGVy CisJCSAqIG5vZGUgdHlwZXMsIGRlcGVuZGluZyBvbiB0aGUgY29udGFpbmVyJ3MgcmVxdWlyZW1l bnRzLiBJdCByZXR1cm5zCisJCSAqIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaXQgdHJhbnNmb3Jt ZWQuCisJCSAqLworCQkqblN1YnNjcmlwdHMgPSBzYnNyb3V0aW5lcy0+dHJhbnNmb3JtX3BhcnRp YWwoc2JzcmVmLCBpbmRpcmVjdGlvbiwgcHN0YXRlLCBpc0Fzc2lnbm1lbnQpOworCX0KKwllbHNl CisJeworCQkvKgorCQkgKiBJZiB0aGVyZSBpcyBubyBwYXJ0aWFsIHRyYW5zZm9ybSBmdW5jdGlv biwgdXNlIHRoZSBmdWxsIHRyYW5zZm9ybQorCQkgKiBmdW5jdGlvbiwgd2hpY2ggb25seSBhY2Nl cHRzIGJyYWNrZXQgc3Vic2NyaXB0cyAoQV9JbmRpY2VzIG5vZGVzKS4KKwkJICogV2UgcHJlLWNv bGxlY3QgdGhlIGxlYWRpbmcgQV9JbmRpY2VzIG5vZGVzIGZyb20gdGhlIGluZGlyZWN0aW9uCisJ CSAqIGxpc3QsIHRoZW4gY2FsbCB0aGUgdHJhbnNmb3JtIGZ1bmN0aW9uIHRvIHByb2Nlc3MgdGhp cyBwcmVmaXggb2YKKwkJICogc3Vic2NyaXB0cy4KKwkJICovCisJCUxpc3QJICAgKnN1YnNjcmlw dGxpc3QgPSBOSUw7CisJCUxpc3RDZWxsICAgKmxjOworCQlib29sCQlpc1NsaWNlID0gZmFsc2U7 CisKKwkJLyogQ29sbGVjdCBsZWFkaW5nIEFfSW5kaWNlcyBzdWJzY3JpcHRzICovCisJCWZvcmVh Y2gobGMsIGluZGlyZWN0aW9uKQorCQl7CisJCQlOb2RlCSAgICpuID0gbGZpcnN0KGxjKTsKKwor CQkJaWYgKElzQShuLCBBX0luZGljZXMpKQorCQkJeworCQkJCUFfSW5kaWNlcyAgKmFpID0gKEFf SW5kaWNlcyAqKSBuOworCisJCQkJc3Vic2NyaXB0bGlzdCA9IGxhcHBlbmQoc3Vic2NyaXB0bGlz dCwgbik7CisJCQkJaWYgKGFpLT5pc19zbGljZSkKKwkJCQkJaXNTbGljZSA9IHRydWU7CisJCQl9 CisJCQllbHNlCisJCQkJYnJlYWs7CisJCX0KKworCQlpZiAoc3Vic2NyaXB0bGlzdCkKKwkJCXNi c3JvdXRpbmVzLT50cmFuc2Zvcm0oc2JzcmVmLCBzdWJzY3JpcHRsaXN0LCBwc3RhdGUsIGlzU2xp Y2UsIGlzQXNzaWdubWVudCk7CisKKwkJKm5TdWJzY3JpcHRzID0gbGlzdF9sZW5ndGgoc3Vic2Ny aXB0bGlzdCk7CisJfQorCisJaWYgKCpuU3Vic2NyaXB0cyA9PSAwKQorCXsKKwkJLyogRmFsbGJh Y2sgdG8gZmllbGQgc2VsZWN0aW9uIGluIGNhbGxlciAqLworCQlpZiAoIWlzQXNzaWdubWVudCkK KwkJCXJldHVybiBOVUxMOworCisJCS8qIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4gd2l0aCB3ZWxs LWJlaGF2ZWQgdHJhbnNmb3JtIGZ1bmN0aW9ucyAqLworCQllbG9nKEVSUk9SLCAic3Vic2NyaXB0 aW5nIHRyYW5zZm9ybSBmdW5jdGlvbiBmYWlsZWQgdG8gY29uc3VtZSBhbnkgaW5kaXJlY3Rpb24g ZWxlbWVudHMiKTsKKwl9CiAKIAkvKgogCSAqIFZlcmlmeSB3ZSBnb3QgYSB2YWxpZCB0eXBlICh0 aGlzIGRlZmVuZHMsIGZvciBleGFtcGxlLCBhZ2FpbnN0IHNvbWVvbmUKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV90YXJnZXQuYwppbmRleCA5MDVjOTc1ZDgzYi4uMzBjZjc3MzM4YWUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdGFyZ2V0LmMKQEAgLTkyMiw2ICs5MjIsNyBAQCB0cmFuc2Zvcm1Bc3NpZ25tZW50U3Vi c2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJT2lkCQkJdHlwZU5lZWRlZDsKIAlpbnQzMgkJ dHlwbW9kTmVlZGVkOwogCU9pZAkJCWNvbGxhdGlvbk5lZWRlZDsKKwlpbnQgCQluU3Vic2NyaXB0 cyA9IDA7CiAKIAlBc3NlcnQoc3Vic2NyaXB0cyAhPSBOSUwpOwogCkBAIC05MzYsNyArOTM3LDEw IEBAIHRyYW5zZm9ybUFzc2lnbm1lbnRTdWJzY3JpcHRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJ CQkJCQkJCQkgIGNvbnRhaW5lclR5cGUsCiAJCQkJCQkJCQkJICBjb250YWluZXJUeXBNb2QsCiAJ CQkJCQkJCQkJICBzdWJzY3JpcHRzLAotCQkJCQkJCQkJCSAgdHJ1ZSk7CisJCQkJCQkJCQkJICB0 cnVlLAorCQkJCQkJCQkJCSAgJm5TdWJzY3JpcHRzKTsKKworCUFzc2VydChuU3Vic2NyaXB0cyA9 PSBsaXN0X2xlbmd0aChzdWJzY3JpcHRzKSk7CiAKIAl0eXBlTmVlZGVkID0gc2JzcmVmLT5yZWZy ZXN0eXBlOwogCXR5cG1vZE5lZWRlZCA9IHNic3JlZi0+cmVmdHlwbW9kOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5c3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2FycmF5c3Vicy5jCmluZGV4IDI5NDBmYjhlOGQ3Li4wMDQ5OTA3Yjk0MiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5c3Vicy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9hcnJheXN1YnMuYwpAQCAtNTQxLDYgKzU0MSw3IEBAIGFycmF5X3N1YnNjcmlwdF9oYW5k bGVyKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJc3RhdGljIGNvbnN0IFN1YnNjcmlwdFJvdXRpbmVz IHNic3JvdXRpbmVzID0gewogCQkudHJhbnNmb3JtID0gYXJyYXlfc3Vic2NyaXB0X3RyYW5zZm9y bSwKKwkJLnRyYW5zZm9ybV9wYXJ0aWFsID0gTlVMTCwKIAkJLmV4ZWNfc2V0dXAgPSBhcnJheV9l eGVjX3NldHVwLAogCQkuZmV0Y2hfc3RyaWN0ID0gdHJ1ZSwJLyogZmV0Y2ggcmV0dXJucyBOVUxM IGZvciBOVUxMIGlucHV0cyAqLwogCQkuZmV0Y2hfbGVha3Byb29mID0gdHJ1ZSwJLyogZmV0Y2gg cmV0dXJucyBOVUxMIGZvciBiYWQgc3Vic2NyaXB0ICovCkBAIC01NjgsNiArNTY5LDcgQEAgcmF3 X2FycmF5X3N1YnNjcmlwdF9oYW5kbGVyKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJc3RhdGljIGNv bnN0IFN1YnNjcmlwdFJvdXRpbmVzIHNic3JvdXRpbmVzID0gewogCQkudHJhbnNmb3JtID0gYXJy YXlfc3Vic2NyaXB0X3RyYW5zZm9ybSwKKwkJLnRyYW5zZm9ybV9wYXJ0aWFsID0gTlVMTCwKIAkJ LmV4ZWNfc2V0dXAgPSBhcnJheV9leGVjX3NldHVwLAogCQkuZmV0Y2hfc3RyaWN0ID0gdHJ1ZSwJ LyogZmV0Y2ggcmV0dXJucyBOVUxMIGZvciBOVUxMIGlucHV0cyAqLwogCQkuZmV0Y2hfbGVha3By b29mID0gdHJ1ZSwJLyogZmV0Y2ggcmV0dXJucyBOVUxMIGZvciBiYWQgc3Vic2NyaXB0ICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvanNvbmJzdWJzLmMKaW5kZXggZTg2MjZkM2I0ZmMuLmRmZTdkYTU1ZThlIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCkBAIC0zOSwxMSArMzksMTAgQEAgdHlwZWRlZiBz dHJ1Y3QgSnNvbmJTdWJXb3Jrc3BhY2UKICAqIFRyYW5zZm9ybSB0aGUgc3Vic2NyaXB0IGV4cHJl c3Npb25zLCBjb2VyY2UgdGhlbSB0byB0ZXh0LAogICogYW5kIGRldGVybWluZSB0aGUgcmVzdWx0 IHR5cGUgb2YgdGhlIFN1YnNjcmlwdGluZ1JlZiBub2RlLgogICovCi1zdGF0aWMgdm9pZAorc3Rh dGljIGludAoganNvbmJfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3Jl ZiwKIAkJCQkJCSAgTGlzdCAqaW5kaXJlY3Rpb24sCiAJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0 ZSwKLQkJCQkJCSAgYm9vbCBpc1NsaWNlLAogCQkJCQkJICBib29sIGlzQXNzaWdubWVudCkKIHsK IAlMaXN0CSAgICp1cHBlckluZGV4cHIgPSBOSUw7CkBAIC01NSwxMCArNTQsMTUgQEAganNvbmJf c3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAkgKi8KIAlmb3Jl YWNoKGlkeCwgaW5kaXJlY3Rpb24pCiAJewotCQlBX0luZGljZXMgICphaSA9IGxmaXJzdF9ub2Rl KEFfSW5kaWNlcywgaWR4KTsKKwkJQV9JbmRpY2VzICAqYWk7CiAJCU5vZGUJICAgKnN1YkV4cHI7 CiAKLQkJaWYgKGlzU2xpY2UpCisJCWlmICghSXNBKGxmaXJzdChpZHgpLCBBX0luZGljZXMpKQor CQkJYnJlYWs7CisKKwkJYWkgPSBsZmlyc3Rfbm9kZShBX0luZGljZXMsIGlkeCk7CisKKwkJaWYg KGFpLT5pc19zbGljZSkKIAkJewogCQkJTm9kZQkgICAqZXhwciA9IGFpLT51aWR4ID8gYWktPnVp ZHggOiBhaS0+bGlkeDsKIApAQCAtMTQyLDcgKzE0Niw3IEBAIGpzb25iX3N1YnNjcmlwdF90cmFu c2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJCQkgKiBTbGljZSB3aXRoIG9taXR0ZWQg dXBwZXIgYm91bmQuIFNob3VsZCBub3QgaGFwcGVuIGFzIHdlIGFscmVhZHkKIAkJCSAqIGVycm9y ZWQgb3V0IG9uIHNsaWNlIGVhcmxpZXIsIGJ1dCBoYW5kbGUgdGhpcyBqdXN0IGluIGNhc2UuCiAJ CQkgKi8KLQkJCUFzc2VydChpc1NsaWNlICYmIGFpLT5pc19zbGljZSk7CisJCQlBc3NlcnQoYWkt PmlzX3NsaWNlKTsKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfREFU QVRZUEVfTUlTTUFUQ0gpLAogCQkJCQkgZXJybXNnKCJqc29uYiBzdWJzY3JpcHQgZG9lcyBub3Qg c3VwcG9ydCBzbGljZXMiKSwKQEAgLTE1OSw2ICsxNjMsOCBAQCBqc29uYl9zdWJzY3JpcHRfdHJh bnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCS8qIERldGVybWluZSB0aGUgcmVzdWx0 IHR5cGUgb2YgdGhlIHN1YnNjcmlwdGluZyBvcGVyYXRpb247IGFsd2F5cyBqc29uYiAqLwogCXNi c3JlZi0+cmVmcmVzdHlwZSA9IEpTT05CT0lEOwogCXNic3JlZi0+cmVmdHlwbW9kID0gLTE7CisK KwlyZXR1cm4gbGlzdF9sZW5ndGgodXBwZXJJbmRleHByKTsKIH0KIAogLyoKQEAgLTQwMiw3ICs0 MDgsOCBAQCBEYXR1bQoganNvbmJfc3Vic2NyaXB0X2hhbmRsZXIoUEdfRlVOQ1RJT05fQVJHUykK IHsKIAlzdGF0aWMgY29uc3QgU3Vic2NyaXB0Um91dGluZXMgc2Jzcm91dGluZXMgPSB7Ci0JCS50 cmFuc2Zvcm0gPSBqc29uYl9zdWJzY3JpcHRfdHJhbnNmb3JtLAorCQkudHJhbnNmb3JtID0gTlVM TCwJCS8qIGpzb25iIHVzZXMgcGFydGlhbCB0cmFuc2Zvcm0gaW5zdGVhZCAqLworCQkudHJhbnNm b3JtX3BhcnRpYWwgPSBqc29uYl9zdWJzY3JpcHRfdHJhbnNmb3JtLAogCQkuZXhlY19zZXR1cCA9 IGpzb25iX2V4ZWNfc2V0dXAsCiAJCS5mZXRjaF9zdHJpY3QgPSB0cnVlLAkvKiBmZXRjaCByZXR1 cm5zIE5VTEwgZm9yIE5VTEwgaW5wdXRzICovCiAJCS5mZXRjaF9sZWFrcHJvb2YgPSB0cnVlLAkv KiBmZXRjaCByZXR1cm5zIE5VTEwgZm9yIGJhZCBzdWJzY3JpcHQgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL25vZGVzL3N1YnNjcmlwdGluZy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvc3Vic2Ny aXB0aW5nLmgKaW5kZXggZTk5MWY0YmY4MjYuLjNiODE5ZGM4ZDY1IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9ub2Rlcy9zdWJzY3JpcHRpbmcuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9zdWJz Y3JpcHRpbmcuaApAQCAtOTgsNiArOTgsMjUgQEAgdHlwZWRlZiB2b2lkICgqU3Vic2NyaXB0VHJh bnNmb3JtKSAoU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJCQkJCQkJCQlib29sIGlzU2xpY2Us CiAJCQkJCQkJCQlib29sIGlzQXNzaWdubWVudCk7CiAKKy8qCisgKiBTdWJzY3JpcHRUcmFuc2Zv cm1QYXJ0aWFsIGlzIGFuIGFsdGVybmF0aXZlIHRvIFN1YnNjcmlwdFRyYW5zZm9ybSBmb3IKKyAq IGNvbnRhaW5lciB0eXBlcyB0aGF0IGNhbiBhY2NlcHQgbm9uLUFfSW5kaWNlcyBpbmRpcmVjdGlv biBhcyBpbnB1dAorICogKGUuZy4sIEpTT05CIGFjY2VwdHMgZG90LW5vdGF0aW9uIChTdHJpbmcg bm9kZSkgZm9yIGZpZWxkIGFjY2VzcykuCisKKyAqIEl0IG1heSB0cmFuc2Zvcm0gYSBwcmVmaXgg b2YgdGhlIGluZGlyZWN0aW9uIGxpc3QgYW5kIGxlYXZlIHRoZSByZXN0CisgKiB1bnByb2Nlc3Nl ZC4gSXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGluZGlyZWN0aW9ucyBpdCB0cmFuc2Zvcm1lZC4K KyAqIFRoZSBjYWxsZXIgd2lsbCB0aGVuIHJlbW92ZSB0aGF0IG1hbnkgaXRlbXMgZnJvbSB0aGUg aGVhZCBvZiB0aGUKKyAqIGxpc3QsIGFuZCBoYW5kbGUgdGhlCisgKiByZW1haW5pbmcgaW5kaXJl Y3Rpb25zIGRpZmZlcmVudGx5IG9yIHRvIHJhaXNlIGFuIGVycm9yIGFzIG5lZWRlZC4KKyAqCisg KiBJZiB0cmFuc2Zvcm1fcGFydGlhbCBpcyBOVUxMLCB0aGUgY29tcGxldGUgdHJhbnNmb3JtIGZ1 bmN0aW9uIGlzIHVzZWQsCisgKiB3aGljaCBhY2NlcHRzIG9ubHkgQV9JbmRpY2VzIChicmFja2V0 KSBub2Rlcy4KKyAqLwordHlwZWRlZiBpbnQgKCpTdWJzY3JpcHRUcmFuc2Zvcm1QYXJ0aWFsKSAo U3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCisJCQkJCQkJCQkJICBMaXN0ICppbmRpcmVjdGlvbiwK KwkJCQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkJCQkJCQkgIGJvb2wgaXNBc3Np Z25tZW50KTsKKwogLyoKICAqIFRoZSBleGVjX3NldHVwIG1ldGhvZCBpcyBjYWxsZWQgZHVyaW5n IGV4ZWN1dG9yLXN0YXJ0dXAgY29tcGlsYXRpb24gb2YgYQogICogU3Vic2NyaXB0aW5nUmVmIG5v ZGUgaW4gYW4gZXhwcmVzc2lvbi4gIEl0IG11c3QgZmlsbCAqbWV0aG9kcyB3aXRoIHBvaW50ZXJz CkBAIC0xNTcsNyArMTc2LDEwIEBAIHR5cGVkZWYgdm9pZCAoKlN1YnNjcmlwdEV4ZWNTZXR1cCkg KGNvbnN0IFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogLyogU3RydWN0IHJldHVybmVkIGJ5IHRo ZSBTUUwtdmlzaWJsZSBzdWJzY3JpcHQgaGFuZGxlciBmdW5jdGlvbiAqLwogdHlwZWRlZiBzdHJ1 Y3QgU3Vic2NyaXB0Um91dGluZXMKIHsKLQlTdWJzY3JpcHRUcmFuc2Zvcm0gdHJhbnNmb3JtOwkv KiBwYXJzZSBhbmFseXNpcyBmdW5jdGlvbiAqLworCVN1YnNjcmlwdFRyYW5zZm9ybSB0cmFuc2Zv cm07CS8qIHBhcnNlIGFuYWx5c2lzIGZ1bmN0aW9uLCBvciBOVUxMICovCisJU3Vic2NyaXB0VHJh bnNmb3JtUGFydGlhbCB0cmFuc2Zvcm1fcGFydGlhbDsJLyogYWx0ZXJuYXRpdmUgcGFyc2UKKwkJ CQkJCQkJCQkJCQkgKiBhbmFseXNpcyBmdW5jdGlvbiwgb3IKKwkJCQkJCQkJCQkJCQkgKiBOVUxM ICovCiAJU3Vic2NyaXB0RXhlY1NldHVwIGV4ZWNfc2V0dXA7CS8qIGV4cHJlc3Npb24gY29tcGls YXRpb24gZnVuY3Rpb24gKi8KIAlib29sCQlmZXRjaF9zdHJpY3Q7CS8qIGlzIGZldGNoIFN1YnNj cmlwdFJlZiBzdHJpY3Q/ICovCiAJYm9vbAkJZmV0Y2hfbGVha3Byb29mOwkvKiBpcyBmZXRjaCBT dWJzY3JpcHRSZWYgbGVha3Byb29mPyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2Vy L3BhcnNlX25vZGUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKaW5kZXggZjdk MDdjODQ1NDIuLjgwZjQ4NmFjZmYwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFy c2Vfbm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKQEAgLTM2Miw3 ICszNjIsOCBAQCBleHRlcm4gU3Vic2NyaXB0aW5nUmVmICp0cmFuc2Zvcm1Db250YWluZXJTdWJz Y3JpcHRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkJCQkgT2lkIGNvbnRhaW5lclR5 cGUsCiAJCQkJCQkJCQkJCQkJIGludDMyIGNvbnRhaW5lclR5cE1vZCwKIAkJCQkJCQkJCQkJCQkg TGlzdCAqaW5kaXJlY3Rpb24sCi0JCQkJCQkJCQkJCQkJIGJvb2wgaXNBc3NpZ25tZW50KTsKKwkJ CQkJCQkJCQkJCQkgYm9vbCBpc0Fzc2lnbm1lbnQsCisJCQkJCQkJCQkJCQkJIGludCAqY29uc3Vt ZWRfY291bnQpOwogZXh0ZXJuIENvbnN0ICptYWtlX2NvbnN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwg QV9Db25zdCAqYWNvbnN0KTsKIAogI2VuZGlmCQkJCQkJCS8qIFBBUlNFX05PREVfSCAqLwotLSAK Mi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --00000000000056bfa5063f2d7dce Content-Type: application/octet-stream; name="v20-0003-Export-jsonPathFromParseResult.patch" Content-Disposition: attachment; filename="v20-0003-Export-jsonPathFromParseResult.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfragwvo3 RnJvbSBjM2ViMWY5MDgyOWE5NzY5M2U3MDNhMGQxMWJhOTg5ZTYzMmY0YjZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFR1ZSwgOCBKdWwgMjAyNSAyMjoxODowNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0gg djIwIDMvNV0gRXhwb3J0IGpzb25QYXRoRnJvbVBhcnNlUmVzdWx0KCkKClRoaXMgaXMgYSBwcmVw YXJhdGlvbiBzdGVwIGZvciBhIGZ1dHVyZSBjb21taXQgdGhhdCB3aWxsIHJldXNlIHRoZQphZm9y ZW1lbnRpb25lZCBmdW5jdGlvbi4KCkF1dGhvcmVkLWJ5OiBOaWtpdGEgR2x1a2hvdiA8Z2x1a2hv di5uLmFAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQWxleGFuZHJhIFdhbmcgPGFsZXhhbmRyYS53 YW5nLm9zc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1 bnNsYW5lLm5ldD4KUmV2aWV3ZWQtYnk6IE1hdGhldXMgQWxjYW50YXJhIDxtYXRoZXVzc3NpbHY5 N0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFp bC5jb20+ClJldmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgotLS0K IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aC5jIHwgMTkgKysrKysrKysrKysrKysrLS0t LQogc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaCAgICAgfCAgNCArKysrCiAyIGZpbGVzIGNo YW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bnBhdGguYwppbmRleCA3NjJmN2U4YTA5ZC4uYzgzNzc0YjJhMTYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29ucGF0aC5jCkBAIC0xNjYsMTUgKzE2NiwxMyBAQCBqc29ucGF0aF9zZW5kKFBHX0ZVTkNUSU9O X0FSR1MpCiAgKiBDb252ZXJ0cyBDLXN0cmluZyB0byBhIGpzb25wYXRoIHZhbHVlLgogICoKICAq IFVzZXMganNvbnBhdGggcGFyc2VyIHRvIHR1cm4gc3RyaW5nIGludG8gYW4gQVNULCB0aGVuCi0g KiBmbGF0dGVuSnNvblBhdGhQYXJzZUl0ZW0oKSBkb2VzIHNlY29uZCBwYXNzIHR1cm5pbmcgQVNU IGludG8gYmluYXJ5CisgKiBqc29uUGF0aEZyb21QYXJzZVJlc3VsdCgpIGRvZXMgc2Vjb25kIHBh c3MgdHVybmluZyBBU1QgaW50byBiaW5hcnkKICAqIHJlcHJlc2VudGF0aW9uIG9mIGpzb25wYXRo LgogICovCiBzdGF0aWMgRGF0dW0KIGpzb25QYXRoRnJvbUNzdHJpbmcoY2hhciAqaW4sIGludCBs ZW4sIHN0cnVjdCBOb2RlICplc2NvbnRleHQpCiB7CiAJSnNvblBhdGhQYXJzZVJlc3VsdCAqanNv bnBhdGggPSBwYXJzZWpzb25wYXRoKGluLCBsZW4sIGVzY29udGV4dCk7Ci0JSnNvblBhdGggICAq cmVzOwotCVN0cmluZ0luZm9EYXRhIGJ1ZjsKIAogCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGVz Y29udGV4dCkpCiAJCXJldHVybiAoRGF0dW0pIDA7CkBAIC0xODUsOCArMTgzLDIxIEBAIGpzb25Q YXRoRnJvbUNzdHJpbmcoY2hhciAqaW4sIGludCBsZW4sIHN0cnVjdCBOb2RlICplc2NvbnRleHQp CiAJCQkJIGVycm1zZygiaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgJXM6IFwiJXNcIiIs ICJqc29ucGF0aCIsCiAJCQkJCQlpbikpKTsKIAorCXJldHVybiBqc29uUGF0aEZyb21QYXJzZVJl c3VsdChqc29ucGF0aCwgNCAqIGxlbiwgZXNjb250ZXh0KTsKK30KKworLyoKKyAqIENvbnZlcnRz IGpzb25wYXRoIEFic3RyYWN0IFN5bnRheCBUcmVlIChBU1QpIGludG8ganNvbnBhdGggdmFsdWUg aW4gYmluYXJ5LgorICovCitEYXR1bQoranNvblBhdGhGcm9tUGFyc2VSZXN1bHQoY29uc3QgSnNv blBhdGhQYXJzZVJlc3VsdCAqanNvbnBhdGgsIGludCBlc3RpbWF0ZWRfbGVuLAorCQkJCQkJc3Ry dWN0IE5vZGUgKmVzY29udGV4dCkKK3sKKwlKc29uUGF0aCAgICpyZXM7CisJU3RyaW5nSW5mb0Rh dGEgYnVmOworCiAJaW5pdFN0cmluZ0luZm8oJmJ1Zik7Ci0JZW5sYXJnZVN0cmluZ0luZm8oJmJ1 ZiwgNCAqIGxlbiAvKiBlc3RpbWF0aW9uICovICk7CisJZW5sYXJnZVN0cmluZ0luZm8oJmJ1Ziwg ZXN0aW1hdGVkX2xlbik7CiAKIAlhcHBlbmRTdHJpbmdJbmZvU3BhY2VzKCZidWYsIEpTT05QQVRI X0hEUlNaKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmgKaW5kZXggMjNhNzZkMjMzZTkuLjA5NThiYzIyYmI2 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oCisrKyBiL3NyYy9pbmNs dWRlL3V0aWxzL2pzb25wYXRoLmgKQEAgLTI4MSw2ICsyODEsMTAgQEAgZXh0ZXJuIEpzb25QYXRo UGFyc2VSZXN1bHQgKnBhcnNlanNvbnBhdGgoY29uc3QgY2hhciAqc3RyLCBpbnQgbGVuLAogZXh0 ZXJuIGJvb2wganNwQ29udmVydFJlZ2V4RmxhZ3ModWludDMyIHhmbGFncywgaW50ICpyZXN1bHQs CiAJCQkJCQkJCSBzdHJ1Y3QgTm9kZSAqZXNjb250ZXh0KTsKIAorZXh0ZXJuIERhdHVtIGpzb25Q YXRoRnJvbVBhcnNlUmVzdWx0KGNvbnN0IEpzb25QYXRoUGFyc2VSZXN1bHQgKmpzb25wYXRoLAor CQkJCQkJCQkJIGludCBlc3RpbWF0ZWRfbGVuLAorCQkJCQkJCQkJIHN0cnVjdCBOb2RlICplc2Nv bnRleHQpOworCiAvKgogICogU3RydWN0IGZvciBkZXRhaWxzIGFib3V0IGV4dGVybmFsIHZhcmlh YmxlcyBwYXNzZWQgaW50byBqc29ucGF0aCBleGVjdXRvcgogICovCi0tIAoyLjM5LjUgKEFwcGxl IEdpdC0xNTQpCgo= --00000000000056bfa5063f2d7dce--