public inbox for gdb-patches-prs@sourceware.org
help / color / mirror / Atom feed
From: jsm@cygnus.com
To: jsm@cygnus.com
Cc: gdb-patches-prs@sourceware.cygnus.com
Subject: Re: gdb-patch/1
Date: Sun, 20 Feb 2000 22:48:00 -0000	[thread overview]
Message-ID: <20000221064800.7152.qmail@sourceware.cygnus.com> (raw)

The following reply was made to PR gdb-patch/1; it has been noted by GNATS.

From: jsm@cygnus.com
To: gdb-patches-gnats@sourceware.cygnus.com, jsm@cygnus.com,
  nobody@sourceware.cygnus.com
Cc:  
Subject: Re: gdb-patch/1
Date: 21 Feb 2000 06:43:20 -0000

 Synopsis: Fix a problem with mmalloc.
 
 Responsible-Changed-From-To: unassigned->jsm
 Responsible-Changed-By: jsm
 Responsible-Changed-When: Sun Feb 20 22:43:20 2000
 Responsible-Changed-Why:
     Mine.
 State-Changed-From-To: open->applied
 State-Changed-By: jsm
 State-Changed-When: Sun Feb 20 22:43:20 2000
 State-Changed-Why:
     Already committed by Frank Eigler
 
 http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=1&database=gdb-patches
>From jsm@cygnus.com Sun Feb 20 22:48:00 2000
From: Jason Molenda <jsm@cygnus.com>
To: jsm@cygnus.com
Cc: gdb-patches-prs@sourceware.cygnus.com
Subject: Re: gdb-patch/1: Fix a problem with mmalloc.
Date: Sun, 20 Feb 2000 22:48:00 -0000
Message-id: <20000221064800.7158.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00001.html
Content-length: 279

The following reply was made to PR gdb-patch/1; it has been noted by GNATS.

From: Jason Molenda <jsm@cygnus.com>
To: gdb-patches-gnats@sourceware.cygnus.com
Cc:  
Subject: Re: gdb-patch/1: Fix a problem with mmalloc.
Date: Sun, 20 Feb 2000 22:44:23 -0800

 Test follow-up note.
>From jimb@red-bean.com Tue Feb 22 08:28:00 2000
From: jimb@red-bean.com
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/2: Delete the whole thing.  If you'd written it right, you wouldn't need GDB.
Date: Tue, 22 Feb 2000 08:28:00 -0000
Message-id: <20000222162113.27020.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00002.html
Content-length: 4276

>Number:         2
>Category:       gdb-patch
>Synopsis:       Delete the whole thing.  If you'd written it right, you wouldn't need GDB.
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Feb 22 08:28:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     jimb@red-bean.com
>Release:        GDB 4.18
>Organization:
>Environment:
Red Hat Linux 6.1
>Description:
Escapism is the key.
>How-To-Repeat:

>Fix:
cd devo
rm -rf gdb
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/html; name="kublai.html"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="kublai.html"

PGh0bWw+CjxoZWFkPgo8dGl0bGU+S3VibGFpIEtoYW48L3RpdGxlPgo8L2hlYWQ+Cgo8Ym9keSBi
YWNrZ3JvdW5kPSJiYWNrZ3JvdW5kcy9tYXJibGUyLmdpZiI+Cgo8aHI+PGJyPgo8Y2VudGVyPgo8
dGFibGUgd2lkdGg9MTAwJSBhbGlnbj1jZW50ZXIgYm9yZGVyPTA+CiA8dHI+CiAgPHRkIHdpZHRo
PTIwJT4KICA8L3RkPgoKICA8dGQgd2lkdGg9MzIwPgo8dWw+PGZvbnQgc2l6ZT0rMT5LdWJsYWkg
S2hhbjwvZm9udD48cD48L3VsPgoKSW4gWGFuYWR1IGRpZCBLdWJsYWkgS2hhbjxicj4KQSBzdGF0
ZWx5IHBsZWFzdXJlLWRvbWUgZGVjcmVlOjxicj4KV2hlcmUgQWxwaCwgdGhlIHNhY3JlZCByaXZl
ciwgcmFuPGJyPgpUaHJvdWdoIGNhdmVybnMgbWVhc3VyZWxlc3MgdG8gbWFuPGJyPgpEb3duIHRv
IGEgc3VubGVzcyBzZWEuPHA+CgpTbyB0d2ljZSBmaXZlIG1pbGVzIG9mIGZlcnRpbGUgZ3JvdW5k
PGJyPgpXaXRoIHdhbGxzIGFuZCB0b3dlcnMgd2VyZSBnaXJkbGVkIHJvdW5kOjxicj4KQW5kIHRo
ZXJlIHdlcmUgZ2FyZGVucyBicmlnaHQgd2l0aCBzaW51b3VzIHJpbGxzLDxicj4KV2hlcmUgYmxv
c3NvbWVkIG1hbnkgYW4gaW5jZW5zZS1iZWFyaW5nIHRyZWU7PGJyPgpBbmQgaGVyZSB3ZXJlIGZv
cmVzdHMgYW5jaWVudCBhcyB0aGUgaGlsbHMsPGJyPgpFbmZvbGRpbmcgc3Vubnkgc3BvdHMgb2Yg
Z3JlZW5lcnkuPHA+CgpCdXQgb2ghICB0aGF0IGRlZXAgcm9tYW50aWMgY2hhc20gd2hpY2ggc2xh
bnRlZDxicj4KRG93biB0aGUgZ3JlZW4gaGlsbCBhdGh3YXJ0IGEgY2VkYXJuIGNvdmVyITxicj4K
QSBzYXZhZ2UgcGxhY2UhICBhcyBob2x5IGFuZCBlbmNoYW50ZWQ8YnI+CkFzIGUnZXIgYmVuZWF0
aCBhIHdhbmluZyBtb29uIHdhcyBoYXVudGVkPGJyPgpCeSB3b21hbiB3YWlsaW5nIGZvciBoZXIg
ZGVtb24tbG92ZXIhPGJyPgpBbmQgZnJvbSB0aGlzIGNoYXNtLCB3aXRoIGNlYXNlbGVzcyB0dXJt
b2lsIHNlZXRoaW5nLDxicj4KQXMgaWYgdGhpcyBlYXJ0aCBpbiBmYXN0IHRoaWNrIHBhbnRzIHdl
cmUgYnJlYXRoaW5nLDxicj4KQSBtaWdodHkgZm91bnRhaW4gbW9tZW50bHkgd2FzIGZvcmNlZDo8
YnI+CkFtaWQgd2hvc2Ugc3dpZnQgaGFsZi1pbnRlcm1pdHRlZCBidXJzdDxicj4KSHVnZSBmcmFn
bWVudHMgdmF1bHRlZCBsaWtlIHJlYm91bmRpbmcgaGFpbCw8YnI+Ck9yIGNoYWZmeSBncmFpbiBi
ZW5lYXRoIHRoZSB0aHJlc2hlcidzIGZsYWlsOjxicj4KQW5kICdtaWQgdGhlc2UgZGFuY2luZyBy
b2NrcyBhdCBvbmNlIGFuZCBldmVyPGJyPgpJdCBmbHVuZyB1cCBtb21lbnRseSB0aGUgc2FjcmVk
IHJpdmVyLjxicj4KRml2ZSBtaWxlcyBtZWFuZGVyaW5nIHdpdGggYSBtYXp5IG1vdGlvbjxicj4K
VGhyb3VnaCB3b29kIGFuZCBkYWxlIHRoZSBzYWNyZWQgcml2ZXIgcmFuLDxicj4KVGhlbiByZWFj
aGVkIHRoZSBjYXZlcm5zIG1lYXN1cmVsZXNzIHRvIG1hbiw8YnI+CkFuZCBzYW5rIGluIHR1bXVs
dCB0byBhIGxpZmVsZXNzIG9jZWFuOjxicj4KQW5kICdtaWQgdGhpcyB0dW11bHQgS3VibGFpIGhl
YXJkIGZyb20gZmFyPGJyPgpBbmNlc3RyYWwgdm9pY2VzIHByb3BoZXN5aW5nIHdhciE8cD4KClRo
ZSBzaGFkb3cgb2YgdGhlIGRvbWUgb2YgcGxlYXN1cmU8YnI+CkZsb2F0ZWQgbWlkd2F5IG9uIHRo
ZSB3YXZlczs8YnI+CldoZXJlIHdhcyBoZWFyZCB0aGUgbWluZ2xlZCBtZWFzdXJlPGJyPgpGcm9t
IHRoZSBmb3VudGFpbiBhbmQgdGhlIGNhdmVzLjxicj4KSXQgd2FzIGEgbWlyYWNsZSBvZiByYXJl
IGRldmljZSw8YnI+CkEgc3VubnkgcGxlYXN1cmUtZG9tZSB3aXRoIGNhdmVzIG9mIGljZSE8cD4K
CkEgZGFtc2VsIHdpdGggYSBkdWxjaW1lcjxicj4KSW4gYSB2aXNpb24gb25jZSBJIHNhdzo8YnI+
Ckl0IHdhcyBhbiBBYnlzc2luaWFuIG1haWQsPGJyPgpBbmQgb24gaGVyIGR1bGNpbWVyIHNoZSBw
bGF5ZWQsPGJyPgpTaW5naW5nIG9mIE1vdW50IEFib3JhLjxicj4KQ291bGQgSSByZXZpdmUgd2l0
aGluIG1lPGJyPgpIZXIgc3ltcGhvbnkgYW5kIHNvbmcsPGJyPgpUbyBzdWNoIGRlZXAgZGVsaWdo
dCAndHdvdWxkIHdpbiBtZSw8YnI+ClRoYXQgd2l0aCBtdXNpYyBsb3VkIGFuZCBsb25nLDxicj4K
SSB3b3VsZCBidWlsZCB0aGF0IGRvbWUgaW4gYWlyLDxicj4KVGhhdCBzdW5ueSBkb21lISAgdGhv
c2UgY2F2ZXMgb2YgaWNlITxicj4KQW5kIGFsbCB3aG8gaGVhcmQgc2hvdWxkIHNlZSB0aGVtIHRo
ZXJlLDxicj4KQW5kIGFsbCBzaG91bGQgY3J5IEJld2FyZSEgQmV3YXJlITxicj4KSGlzIGZsYXNo
aW5nIGV5ZXMsIGhpcyBmbG9hdGluZyBoYWlyITxicj4KV2VhdmUgYSBjaXJjbGUgcm91bmQgaGlt
IHRocmljZSw8YnI+CkFuZCBjbG9zZSB5b3VyIGV5ZXMgd2l0aCBob2x5IGRyZWFkLDxicj4KRm9y
IGhlIG9uIGhvbmV5ZGV3IGhhdGggZmVkLDxicj4KQW5kIGRydW5rIHRoZSBtaWxrIG9mIFBhcmFk
aXNlLjxwPgo8YnI+CjxjZW50ZXI+U2FtdWVsIFRheWxvciBDb2xlcmlkZ2U8L2NlbnRlcj4KCiAg
PC90ZD4KPC90YWJsZT4KPC9jZW50ZXI+Cgo8YnI+PGhyPjxicj4KR2V0IDxBIEhSRUYgPSBjaGls
ZHJlbi5odG1sPmJhY2s8L0E+LgoKPC9odG1sPgo=
>From jimb@cygnus.com Tue Feb 22 08:58:00 2000
From: jimb@cygnus.com
To: jimb@cygnus.com
Cc: gdb-patches-prs@sourceware.cygnus.com
Subject: Re: gdb-patch/2
Date: Tue, 22 Feb 2000 08:58:00 -0000
Message-id: <20000222165800.588.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00003.html
Content-length: 622

The following reply was made to PR gdb-patch/2; it has been noted by GNATS.

From: jimb@cygnus.com
To: gdb-patches-gnats@sourceware.cygnus.com, jimb@cygnus.com,
  jimb@red-bean.com, nobody@sourceware.cygnus.com
Cc:  
Subject: Re: gdb-patch/2
Date: 22 Feb 2000 16:50:25 -0000

 Synopsis: Delete the whole thing.  If you'd written it right, you wouldn't need GDB.
 
 Responsible-Changed-From-To: unassigned->jimb
 Responsible-Changed-By: jimb
 Responsible-Changed-When: Tue Feb 22 08:50:25 2000
 Responsible-Changed-Why:
     Get to it!
 
 http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=2&database=gdb-patches
>From jimb@red-bean.com Tue Feb 22 10:58:00 2000
From: Jim Blandy <jimb@red-bean.com>
To: jimb@cygnus.com
Cc: gdb-patches-prs@sourceware.cygnus.com
Subject: Re: gdb-patch/2
Date: Tue, 22 Feb 2000 10:58:00 -0000
Message-id: <20000222185800.21151.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00004.html
Content-length: 291

The following reply was made to PR gdb-patch/2; it has been noted by GNATS.

From: Jim Blandy <jimb@red-bean.com>
To: gdb-patches-gnats@sourceware.cygnus.com
Cc: jimb@red-bean.com, nobody@sourceware.cygnus.com
Subject: Re: gdb-patch/2
Date: 22 Feb 2000 13:57:51 -0500

 Golly, Jim!  Thanks!
>From scottb@netwinder.org Thu Mar 02 07:18:00 2000
From: scottb@netwinder.org
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/8: Remove deprecated defines.
Date: Thu, 02 Mar 2000 07:18:00 -0000
Message-id: <20000302150931.23620.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00005.html
Content-length: 1722

>Number:         8
>Category:       gdb-patch
>Synopsis:       Remove deprecated defines.
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 02 07:18:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Bambrough
>Release:        current CVS version
>Organization:
>Environment:

>Description:
2000-03-02  Scott Bambrough <scottb@netwinder.org>

   * config/alpha/tm-alpha: Replace deprecated macro 
   TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P
   and TARGET_BYTE_ORDER_DEFAULT.

>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-unknown-content-type-patch_auto_file; name="alpha.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="alpha.patch"

SW5kZXg6IGFscGhhL3RtLWFscGhhLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL3NyYy9z
cmMvZ2RiL2NvbmZpZy9hbHBoYS90bS1hbHBoYS5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4y
DQpkaWZmIC11IC1wIC1yMS4yIHRtLWFscGhhLmgNCi0tLSB0bS1hbHBoYS5oCTIwMDAvMDIvMjIg
MTk6MTc6MzcJMS4yDQorKysgdG0tYWxwaGEuaAkyMDAwLzAzLzAyIDE0OjQyOjAxDQpAQCAtMzEs
OSArMzEsOCBAQCBzdHJ1Y3QgdHlwZTsNCiBzdHJ1Y3QgdmFsdWU7DQogc3RydWN0IHN5bWJvbDsN
CiANCi0jaWYgIWRlZmluZWQgKFRBUkdFVF9CWVRFX09SREVSKQ0KLSNkZWZpbmUgVEFSR0VUX0JZ
VEVfT1JERVIgTElUVExFX0VORElBTg0KLSNlbmRpZg0KKyNkZWZpbmUgVEFSR0VUX0JZVEVfT1JE
RVJfU0VMRUNUQUJMRV9QCTANCisjZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSX0RFRkFVTFQJTElU
VExFX0VORElBTg0KIA0KIC8qIFJlZGVmaW5lIHNvbWUgdGFyZ2V0IGJpdCBzaXplcyBmcm9tIHRo
ZSBkZWZhdWx0LiAgKi8NCiANCg==
>From scottb@netwinder.org Thu Mar 02 07:18:00 2000
From: scottb@netwinder.org
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/9: Remove deprecated defines.
Date: Thu, 02 Mar 2000 07:18:00 -0000
Message-id: <20000302151126.23734.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00007.html
Content-length: 1720

>Number:         9
>Category:       gdb-patch
>Synopsis:       Remove deprecated defines.
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 02 07:18:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Bambrough
>Release:        current CVS version
>Organization:
>Environment:

>Description:
2000-03-02  Scott Bambrough <scottb@netwinder.org>

   * config/arc/tm-arc.h: Replace deprecated macro 
   TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P
   and TARGET_BYTE_ORDER_DEFAULT.

>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-unknown-content-type-patch_auto_file; name="arc.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="arc.patch"

SW5kZXg6IGFyYy90bS1hcmMuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n
ZGIvY29uZmlnL2FyYy90bS1hcmMuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjUNCmRp
ZmYgLXUgLXAgLXIxLjEuMS41IHRtLWFyYy5oDQotLS0gdG0tYXJjLmgJMTk5OS8wOS8wOCAyMzo1
OTo0OAkxLjEuMS41DQorKysgdG0tYXJjLmgJMjAwMC8wMy8wMiAxNDo0MzoyMg0KQEAgLTIzLDcg
KzIzLDggQEANCiAjZGVmaW5lIERFRkFVTFRfQVJDX0NQVV9UWVBFICJiYXNlIg0KIA0KIC8qIEJ5
dGUgb3JkZXIgaXMgc2VsZWN0YWJsZS4gICovDQotI2RlZmluZQlUQVJHRVRfQllURV9PUkRFUl9T
RUxFQ1RBQkxFDQorI2RlZmluZSBUQVJHRVRfQllURV9PUkRFUl9TRUxFQ1RBQkxFX1AJMQ0KKyNk
ZWZpbmUgVEFSR0VUX0JZVEVfT1JERVJfREVGQVVMVAlMSVRUTEVfRU5ESUFODQogDQogLyogV2Ug
aGF2ZSBJRUVFIGZsb2F0aW5nIHBvaW50LCBpZiB3ZSBoYXZlIGFueSBmbG9hdCBhdCBhbGwuICAq
Lw0KICNkZWZpbmUgSUVFRV9GTE9BVA0K
>From scottb@netwinder.org Thu Mar 02 07:18:00 2000
From: scottb@netwinder.org
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/10: Remove deprecated defines.
Date: Thu, 02 Mar 2000 07:18:00 -0000
Message-id: <20000302151759.25302.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00006.html
Content-length: 4477

>Number:         10
>Category:       gdb-patch
>Synopsis:       Remove deprecated defines.
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 02 07:18:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Bambrough
>Release:        current CVS version
>Organization:
>Environment:

>Description:
2000-03-02  Scott Bambrough <scottb@netwinder.org>

   * config/arm/tm-arm.h: Replace deprecated macro 
   TARGET_BYTE_ORDER_SELECTABLE.
   * config/arm/tm-embed.h: Undefine LOWEST_PC before
   redefining.  Fixes build warnings.
   * config/arm/tm-linux.h: Adjust byte order comment.
   * config/arm/tm-wince.h: Replace deprecated macro 
   TARGET_BYTE_ORDER_SELECTABLE.
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-unknown-content-type-patch_auto_file; name="arm.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="arm.patch"

SW5kZXg6IGFybS90bS1hcm0uaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n
ZGIvY29uZmlnL2FybS90bS1hcm0uaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjkNCmRp
ZmYgLXUgLXAgLXIxLjEuMS45IHRtLWFybS5oDQotLS0gdG0tYXJtLmgJMjAwMC8wMi8wNSAwNzoy
OTo1MgkxLjEuMS45DQorKysgdG0tYXJtLmgJMjAwMC8wMy8wMiAxNDo0Mzo1OA0KQEAgLTI1LDEx
ICsyNSw5IEBADQogc3RydWN0IHR5cGU7DQogc3RydWN0IHZhbHVlOw0KIA0KLSNkZWZpbmUgVEFS
R0VUX0JZVEVfT1JERVJfU0VMRUNUQUJMRQ0KLQ0KIC8qIFRhcmdldCBieXRlIG9yZGVyIG9uIEFS
TSBkZWZhdWx0cyB0byBzZWxlY3RhYmxlLCBhbmQgZGVmYXVsdHMgdG8NCiAgICBsaXR0bGUgZW5k
aWFuLiAgKi8NCi0jZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUAkJMQ0KKyNk
ZWZpbmUgVEFSR0VUX0JZVEVfT1JERVJfU0VMRUNUQUJMRV9QCTENCiAjZGVmaW5lIFRBUkdFVF9C
WVRFX09SREVSX0RFRkFVTFQJTElUVExFX0VORElBTg0KIA0KIC8qIElFRUUgZm9ybWF0IGZsb2F0
aW5nIHBvaW50LiAgKi8NCkluZGV4OiBhcm0vdG0tZW1iZWQuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZp
bGU6IC9jdnMvc3JjL3NyYy9nZGIvY29uZmlnL2FybS90bS1lbWJlZC5oLHYNCnJldHJpZXZpbmcg
cmV2aXNpb24gMS4xLjEuMQ0KZGlmZiAtdSAtcCAtcjEuMS4xLjEgdG0tZW1iZWQuaA0KLS0tIHRt
LWVtYmVkLmgJMTk5OS8xMi8yMiAyMTo0NToxMwkxLjEuMS4xDQorKysgdG0tZW1iZWQuaAkyMDAw
LzAzLzAyIDE0OjQzOjU4DQpAQCAtMzIsNiArMzIsNyBAQA0KICNkZWZpbmUgU1RBQ0tfRU5EX0FE
RFIgKDB4MDEwMDAwMDAgLSAoVEFSR0VUX1VQQUdFUyAqIFRBUkdFVF9OQlBHKSkNCiANCiAvKiBU
aGUgZmlyc3QgMHgyMCBieXRlcyBhcmUgdGhlIHRyYXAgdmVjdG9ycy4gICovDQorI3VuZGVmIExP
V0VTVF9QQw0KICNkZWZpbmUgTE9XRVNUX1BDCTB4MjANCiANCiAvKiBPdmVycmlkZSBkZWZhdWx0
cy4gICovDQpJbmRleDogYXJtL3RtLWxpbnV4LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3Zz
L3NyYy9zcmMvZ2RiL2NvbmZpZy9hcm0vdG0tbGludXguaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuMw0KZGlmZiAtdSAtcCAtcjEuMyB0bS1saW51eC5oDQotLS0gdG0tbGludXguaAkyMDAwLzAy
LzI4IDIwOjUxOjA4CTEuMw0KKysrIHRtLWxpbnV4LmgJMjAwMC8wMy8wMiAxNDo0Mzo1OA0KQEAg
LTI2LDkgKzI2LDkgQEANCiANCiAjaW5jbHVkZSAidG0tbGludXguaCINCiANCi0vKiBUYXJnZXQg
Ynl0ZSBvcmRlciBvbiBBUk0gTGludXggaXMgbm90IHNlbGVjdGFibGUuICAqLw0KKy8qIFRhcmdl
dCBieXRlIG9yZGVyIG9uIEFSTSBMaW51eCBpcyBsaXR0bGUgZW5kaWFuIGFuZCBub3Qgc2VsZWN0
YWJsZS4gICovDQogI3VuZGVmIFRBUkdFVF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUA0KLSNkZWZp
bmUgVEFSR0VUX0JZVEVfT1JERVJfU0VMRUNUQUJMRV9QCQkwDQorI2RlZmluZSBUQVJHRVRfQllU
RV9PUkRFUl9TRUxFQ1RBQkxFX1AJMA0KIA0KIC8qIFVuZGVyIEFSTSBMaW51eCB0aGUgdHJhZGl0
aW9uYWwgd2F5IG9mIHBlcmZvcm1pbmcgYSBicmVha3BvaW50IGlzIHRvDQogICAgZXhlY3V0ZSBh
IHBhcnRpY3VsYXIgc29mdHdhcmUgaW50ZXJydXB0LCByYXRoZXIgdGhhbiB1c2UgYSBwYXJ0aWN1
bGFyDQpJbmRleDogYXJtL3RtLXdpbmNlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL3Ny
Yy9zcmMvZ2RiL2NvbmZpZy9hcm0vdG0td2luY2UuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
MQ0KZGlmZiAtdSAtcCAtcjEuMSB0bS13aW5jZS5oDQotLS0gdG0td2luY2UuaAkyMDAwLzAyLzI0
IDAzOjMxOjQ1CTEuMQ0KKysrIHRtLXdpbmNlLmgJMjAwMC8wMy8wMiAxNDo0Mzo1OA0KQEAgLTMx
LDcgKzMxLDggQEANCiANCiB2b2lkIHdpbmNlX3NvZnR3YXJlX3NpbmdsZV9zdGVwICh1bnNpZ25l
ZCBpbnQsIGludCk7DQogDQotI3VuZGVmIFRBUkdFVF9CWVRFX09SREVSX1NFTEVDVEFCTEUNCi0j
ZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSIExJVFRMRV9FTkRJQU4NCisvKiBUYXJnZXQgYnl0ZSBv
cmRlciBpcyBsaXR0bGUgZW5kaWFuIGFuZCBub3Qgc2VsZWN0YWJsZSBvbiBXaW5DRS4gKi8NCisj
dW5kZWYgIFRBUkdFVF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUA0KKyNkZWZpbmUgVEFSR0VUX0JZ
VEVfT1JERVJfU0VMRUNUQUJMRV9QCTANCiANCiAjZW5kaWYgLyogVE1fV0lOQ0VfSCAqLw0K
>From scottb@netwinder.org Thu Mar 02 07:28:00 2000
From: scottb@netwinder.org
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/13: Remove deprecated defines (h8300).
Date: Thu, 02 Mar 2000 07:28:00 -0000
Message-id: <20000302152526.27152.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00011.html
Content-length: 1850

>Number:         13
>Category:       gdb-patch
>Synopsis:       Remove deprecated defines (h8300).
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 02 07:28:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Bambrough
>Release:        current CVS version
>Organization:
>Environment:

>Description:
2000-03-02  Scott Bambrough <scottb@netwinder.org>

   * config/h8300/tm-h8300.h: Replace deprecated macro 
   TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P
   and TARGET_BYTE_ORDER_DEFAULT.

>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-unknown-content-type-patch_auto_file; name="h8300.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="h8300.patch"

SW5kZXg6IGg4MzAwL3RtLWg4MzAwLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL3NyYy9z
cmMvZ2RiL2NvbmZpZy9oODMwMC90bS1oODMwMC5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4x
LjEuNw0KZGlmZiAtdSAtcCAtcjEuMS4xLjcgdG0taDgzMDAuaA0KLS0tIHRtLWg4MzAwLmgJMTk5
OS8xMi8xNCAwMTowNTo0MAkxLjEuMS43DQorKysgdG0taDgzMDAuaAkyMDAwLzAzLzAyIDE0OjQ2
OjE1DQpAQCAtNTEsOCArNTEsMTAgQEAgZXh0ZXJuIGludCBoODMwMHNtb2RlOw0KIGV4dGVybiB2
b2lkIGg4MzAwX2luaXRfZXh0cmFfZnJhbWVfaW5mbyAoKTsNCiANCiAjZGVmaW5lIElFRUVfRkxP
QVQNCisNCiAvKiBEZWZpbmUgdGhlIGJpdCwgYnl0ZSwgYW5kIHdvcmQgb3JkZXJpbmcgb2YgdGhl
IG1hY2hpbmUuICAqLw0KLSNkZWZpbmUgVEFSR0VUX0JZVEVfT1JERVIgQklHX0VORElBTg0KKyNk
ZWZpbmUgVEFSR0VUX0JZVEVfT1JERVJfU0VMRUNUQUJMRV9QCTANCisjZGVmaW5lIFRBUkdFVF9C
WVRFX09SREVSX0RFRkFVTFQJQklHX0VORElBTg0KICN1bmRlZiBUQVJHRVRfSU5UX0JJVA0KICNk
ZWZpbmUgVEFSR0VUX0lOVF9CSVQgIDE2DQogI3VuZGVmIFRBUkdFVF9MT05HX0JJVA0K
>From scottb@netwinder.org Thu Mar 02 07:28:00 2000
From: scottb@netwinder.org
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/11: Remove deprecated defines (d30v).
Date: Thu, 02 Mar 2000 07:28:00 -0000
Message-id: <20000302152300.25885.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00008.html
Content-length: 1736

>Number:         11
>Category:       gdb-patch
>Synopsis:       Remove deprecated defines (d30v).
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 02 07:28:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Bambrough
>Release:        current CVS version
>Organization:
>Environment:

>Description:
2000-03-02  Scott Bambrough <scottb@netwinder.org>

   * config/d30v/tm-d30v.h: Replace deprecated macro 
   TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P
   and TARGET_BYTE_ORDER_DEFAULT.

>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-unknown-content-type-patch_auto_file; name="d30v.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="d30v.patch"

SW5kZXg6IGQzMHYvdG0tZDMwdi5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9zcmMvc3Jj
L2dkYi9jb25maWcvZDMwdi90bS1kMzB2Lmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS43
DQpkaWZmIC11IC1wIC1yMS4xLjEuNyB0bS1kMzB2LmgNCi0tLSB0bS1kMzB2LmgJMTk5OS8wOS8w
OCAyMzo1OTo0OQkxLjEuMS43DQorKysgdG0tZDMwdi5oCTIwMDAvMDMvMDIgMTQ6NDQ6NTkNCkBA
IC0yMyw3ICsyMyw4IEBADQogDQogLyogRGVmaW5lIHRoZSBiaXQsIGJ5dGUsIGFuZCB3b3JkIG9y
ZGVyaW5nIG9mIHRoZSBtYWNoaW5lLiAgKi8NCiANCi0jZGVmaW5lIFRBUkdFVF9CWVRFX09SREVS
CUJJR19FTkRJQU4NCisjZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUAkwDQor
I2RlZmluZSBUQVJHRVRfQllURV9PUkRFUl9ERUZBVUxUCUJJR19FTkRJQU4NCiANCiAvKiBPZmZz
ZXQgZnJvbSBhZGRyZXNzIG9mIGZ1bmN0aW9uIHRvIHN0YXJ0IG9mIGl0cyBjb2RlLg0KICAgIFpl
cm8gb24gbW9zdCBtYWNoaW5lcy4gICovDQo=
>From scottb@netwinder.org Thu Mar 02 07:28:00 2000
From: scottb@netwinder.org
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/12: Remove deprecated defines (fr30).
Date: Thu, 02 Mar 2000 07:28:00 -0000
Message-id: <20000302152414.26469.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00010.html
Content-length: 1635

>Number:         12
>Category:       gdb-patch
>Synopsis:       Remove deprecated defines (fr30).
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 02 07:28:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Bambrough
>Release:        current CVS version
>Organization:
>Environment:

>Description:
2000-03-02  Scott Bambrough <scottb@netwinder.org>

   * config/fr30/tm-fr30.h: Replace deprecated macro 
   TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P
   and TARGET_BYTE_ORDER_DEFAULT.

>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-unknown-content-type-patch_auto_file; name="fr30.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="fr30.patch"

SW5kZXg6IGZyMzAvdG0tZnIzMC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9zcmMvc3Jj
L2dkYi9jb25maWcvZnIzMC90bS1mcjMwLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjINCmRp
ZmYgLXUgLXAgLXIxLjIgdG0tZnIzMC5oDQotLS0gdG0tZnIzMC5oCTIwMDAvMDIvMjIgMTk6MTc6
NDcJMS4yDQorKysgdG0tZnIzMC5oCTIwMDAvMDMvMDIgMTQ6NDU6NDENCkBAIC01MCw3ICs1MCw4
IEBADQogDQogI2RlZmluZSBJTk5FUl9USEFOKGxocyxyaHMpICgobGhzKSA8IChyaHMpKQ0KIA0K
LSNkZWZpbmUgVEFSR0VUX0JZVEVfT1JERVIgQklHX0VORElBTg0KKyNkZWZpbmUgVEFSR0VUX0JZ
VEVfT1JERVJfU0VMRUNUQUJMRV9QCTANCisjZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSX0RFRkFV
TFQJQklHX0VORElBTg0KIA0KICNkZWZpbmUgUjBfUkVHTlVNICAwDQogI2RlZmluZSBSMV9SRUdO
VU0gIDENCg==
>From scottb@netwinder.org Thu Mar 02 07:28:00 2000
From: scottb@netwinder.org
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/14: Remove deprecated defines (h8500).
Date: Thu, 02 Mar 2000 07:28:00 -0000
Message-id: <20000302152605.27459.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00009.html
Content-length: 1733

>Number:         14
>Category:       gdb-patch
>Synopsis:       Remove deprecated defines (h8500).
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 02 07:28:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Bambrough
>Release:        current CVS version
>Organization:
>Environment:

>Description:
2000-03-02  Scott Bambrough <scottb@netwinder.org>

   * config/h8500/tm-h8500.h: Replace deprecated macro 
   TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P
   and TARGET_BYTE_ORDER_DEFAULT.

>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-unknown-content-type-patch_auto_file; name="h8500.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="h8500.patch"

SW5kZXg6IGg4NTAwL3RtLWg4NTAwLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL3NyYy9z
cmMvZ2RiL2NvbmZpZy9oODUwMC90bS1oODUwMC5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4x
LjEuNQ0KZGlmZiAtdSAtcCAtcjEuMS4xLjUgdG0taDg1MDAuaA0KLS0tIHRtLWg4NTAwLmgJMTk5
OS8wNy8wNyAyMDoxMjoyNgkxLjEuMS41DQorKysgdG0taDg1MDAuaAkyMDAwLzAzLzAyIDE0OjQ2
OjM4DQpAQCAtMjUsOCArMjUsOCBAQA0KICNkZWZpbmUgSUVFRV9GTE9BVCAxDQogDQogLyogRGVm
aW5lIHRoZSBiaXQsIGJ5dGUsIGFuZCB3b3JkIG9yZGVyaW5nIG9mIHRoZSBtYWNoaW5lLiAgKi8N
Ci0NCi0jZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSIEJJR19FTkRJQU4NCisjZGVmaW5lIFRBUkdF
VF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUAkwDQorI2RlZmluZSBUQVJHRVRfQllURV9PUkRFUl9E
RUZBVUxUCUJJR19FTkRJQU4NCiANCiAvKiBEZWZpbmUgdGhlIHNpemVzIG9mIGludGVnZXJzIGFu
ZCBwb2ludGVycy4gICovDQogDQo=
>From scottb@netwinder.org Thu Mar 02 07:38:00 2000
From: scottb@netwinder.org
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/22: Remove deprecated defines (ns32k).
Date: Thu, 02 Mar 2000 07:38:00 -0000
Message-id: <20000302153734.29106.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00017.html
Content-length: 2813

>Number:         22
>Category:       gdb-patch
>Synopsis:       Remove deprecated defines (ns32k).
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 02 07:38:02 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Bambrough
>Release:        current CVS version
>Organization:
>Environment:

>Description:
2000-03-02  Scott Bambrough <scottb@netwinder.org>

   * config/ns32k/tm-merlin.h: Replace deprecated macro 
   TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P
   and TARGET_BYTE_ORDER_DEFAULT.
   * config/ns32k/tm-umax.h: Replace deprecated macro 
   TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P
   and TARGET_BYTE_ORDER_DEFAULT.


>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-unknown-content-type-patch_auto_file; name="ns32k.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="ns32k.patch"

SW5kZXg6IG5zMzJrL3RtLW1lcmxpbi5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9zcmMv
c3JjL2dkYi9jb25maWcvbnMzMmsvdG0tbWVybGluLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAx
LjEuMS41DQpkaWZmIC11IC1wIC1yMS4xLjEuNSB0bS1tZXJsaW4uaA0KLS0tIHRtLW1lcmxpbi5o
CTE5OTkvMDcvMDcgMjA6MTY6MDUJMS4xLjEuNQ0KKysrIHRtLW1lcmxpbi5oCTIwMDAvMDMvMDIg
MTQ6NTM6MjkNCkBAIC0xOCw3ICsxOCw4IEBADQogICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt
cGxlIFBsYWNlIC0gU3VpdGUgMzMwLA0KICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAg
Ki8NCiANCi0jZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSIExJVFRMRV9FTkRJQU4NCisjZGVmaW5l
IFRBUkdFVF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUAkwDQorI2RlZmluZSBUQVJHRVRfQllURV9P
UkRFUl9ERUZBVUxUCUxJVFRMRV9FTkRJQU4NCiANCiAvKiBPZmZzZXQgZnJvbSBhZGRyZXNzIG9m
IGZ1bmN0aW9uIHRvIHN0YXJ0IG9mIGl0cyBjb2RlLg0KICAgIFplcm8gb24gbW9zdCBtYWNoaW5l
cy4gICovDQpJbmRleDogbnMzMmsvdG0tdW1heC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2
cy9zcmMvc3JjL2dkYi9jb25maWcvbnMzMmsvdG0tdW1heC5oLHYNCnJldHJpZXZpbmcgcmV2aXNp
b24gMS4xLjEuNQ0KZGlmZiAtdSAtcCAtcjEuMS4xLjUgdG0tdW1heC5oDQotLS0gdG0tdW1heC5o
CTE5OTkvMDcvMDcgMjA6MTY6MDgJMS4xLjEuNQ0KKysrIHRtLXVtYXguaAkyMDAwLzAzLzAyIDE0
OjUzOjI5DQpAQCAtMjAsNyArMjAsOCBAQA0KIA0KIC8qIFRoaXMgaXMgYWxzbyBpbmNsdWRlZCBi
eSB0bS1uczMya20zLmgsIGFzIHdlbGwgYXMgYmVpbmcgdXNlZCBieSB1bWF4LiAgKi8NCiANCi0j
ZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSIExJVFRMRV9FTkRJQU4NCisjZGVmaW5lIFRBUkdFVF9C
WVRFX09SREVSX1NFTEVDVEFCTEVfUAkwDQorI2RlZmluZSBUQVJHRVRfQllURV9PUkRFUl9ERUZB
VUxUCUxJVFRMRV9FTkRJQU4NCiANCiAvKiBOZWVkIHRvIGdldCBmdW5jdGlvbiBlbmRzIGJ5IGFk
ZGluZyB0aGlzIHRvIGVwaWxvZ3VlIGFkZHJlc3MgZnJvbSAuYmYNCiAgICByZWNvcmQsIG5vdCB1
c2luZyB4X2ZzaXplIGZpZWxkLiAgKi8NCg==
>From scottb@netwinder.org Thu Mar 02 07:38:00 2000
From: scottb@netwinder.org
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/18: Remove deprecated defines (m68k).
Date: Thu, 02 Mar 2000 07:38:00 -0000
Message-id: <20000302153305.28713.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00013.html
Content-length: 1764

>Number:         18
>Category:       gdb-patch
>Synopsis:       Remove deprecated defines (m68k).
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 02 07:38:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Bambrough
>Release:        current CVS version
>Organization:
>Environment:

>Description:
2000-03-02  Scott Bambrough <scottb@netwinder.org>

   * config/m68k/tm-m68k.h: Replace deprecated macro 
   TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P
   and TARGET_BYTE_ORDER_DEFAULT.

>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-unknown-content-type-patch_auto_file; name="m68k.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="m68k.patch"

SW5kZXg6IG02OGsvdG0tbTY4ay5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9zcmMvc3Jj
L2dkYi9jb25maWcvbTY4ay90bS1tNjhrLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS41
DQpkaWZmIC11IC1wIC1yMS4xLjEuNSB0bS1tNjhrLmgNCi0tLSB0bS1tNjhrLmgJMTk5OS8wOC8z
MSAwMTowNzoyOAkxLjEuMS41DQorKysgdG0tbTY4ay5oCTIwMDAvMDMvMDIgMTQ6NDk6MjINCkBA
IC0yMyw3ICsyMyw4IEBADQogI2RlZmluZSBJRUVFX0ZMT0FUIDENCiANCiAvKiBEZWZpbmUgdGhl
IGJpdCwgYnl0ZSwgYW5kIHdvcmQgb3JkZXJpbmcgb2YgdGhlIG1hY2hpbmUuICAqLw0KLSNkZWZp
bmUgVEFSR0VUX0JZVEVfT1JERVIgQklHX0VORElBTg0KKyNkZWZpbmUgVEFSR0VUX0JZVEVfT1JE
RVJfU0VMRUNUQUJMRV9QCTANCisjZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSX0RFRkFVTFQJQklH
X0VORElBTg0KIA0KIC8qIE9mZnNldCBmcm9tIGFkZHJlc3Mgb2YgZnVuY3Rpb24gdG8gc3RhcnQg
b2YgaXRzIGNvZGUuDQogICAgWmVybyBvbiBtb3N0IG1hY2hpbmVzLiAgKi8NCg==
>From scottb@netwinder.org Thu Mar 02 07:38:00 2000
From: scottb@netwinder.org
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/21: Remove deprecated defines (mn10300).
Date: Thu, 02 Mar 2000 07:38:00 -0000
Message-id: <20000302153554.28960.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00014.html
Content-length: 1783

>Number:         21
>Category:       gdb-patch
>Synopsis:       Remove deprecated defines (mn10300).
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 02 07:38:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Bambrough
>Release:        current CVS version
>Organization:
>Environment:

>Description:
2000-03-02  Scott Bambrough <scottb@netwinder.org>

   * config/mn10300/tm-mn10300.h: Replace deprecated macro 
   TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P
   and TARGET_BYTE_ORDER_DEFAULT.

>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-unknown-content-type-patch_auto_file; name="mn10300.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="mn10300.patch"

SW5kZXg6IG1uMTAzMDAvdG0tbW4xMDMwMC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9z
cmMvc3JjL2dkYi9jb25maWcvbW4xMDMwMC90bS1tbjEwMzAwLmgsdg0KcmV0cmlldmluZyByZXZp
c2lvbiAxLjEuMS4xMQ0KZGlmZiAtdSAtcCAtcjEuMS4xLjExIHRtLW1uMTAzMDAuaA0KLS0tIHRt
LW1uMTAzMDAuaAkyMDAwLzAyLzAyIDAwOjIxOjE0CTEuMS4xLjExDQorKysgdG0tbW4xMDMwMC5o
CTIwMDAvMDMvMDIgMTQ6NTI6MzYNCkBAIC0yMSw3ICsyMSw4IEBADQogICAgQm9zdG9uLCBNQSAw
MjExMS0xMzA3LCBVU0EuICAqLw0KIA0KIC8qIFRoZSBtbjEwMzAwIGlzIGxpdHRsZSBlbmRpYW4u
ICAqLw0KLSNkZWZpbmUgVEFSR0VUX0JZVEVfT1JERVJfREVGQVVMVCBMSVRUTEVfRU5ESUFODQor
I2RlZmluZSBUQVJHRVRfQllURV9PUkRFUl9TRUxFQ1RBQkxFX1AJMA0KKyNkZWZpbmUgVEFSR0VU
X0JZVEVfT1JERVJfREVGQVVMVAlMSVRUTEVfRU5ESUFODQogDQogLyogQWxsIHJlZ2lzdGVycyBh
cmUgMzJiaXRzIChwaGV3ISkuICAqLw0KICNkZWZpbmUgUkVHSVNURVJfU0laRSA0DQo=
>From scottb@netwinder.org Thu Mar 02 07:38:00 2000
From: scottb@netwinder.org
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/20: Remove deprecated defines (mn10200).
Date: Thu, 02 Mar 2000 07:38:00 -0000
Message-id: <20000302153513.28890.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00019.html
Content-length: 1771

>Number:         20
>Category:       gdb-patch
>Synopsis:       Remove deprecated defines (mn10200).
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 02 07:38:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Bambrough
>Release:        current CVS version
>Organization:
>Environment:

>Description:
2000-03-02  Scott Bambrough <scottb@netwinder.org>

   * config/mn10200/tm-mn10200.h: Replace deprecated macro 
   TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P
   and TARGET_BYTE_ORDER_DEFAULT.

>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-unknown-content-type-patch_auto_file; name="mn10200.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="mn10200.patch"

SW5kZXg6IG1uMTAyMDAvdG0tbW4xMDIwMC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9z
cmMvc3JjL2dkYi9jb25maWcvbW4xMDIwMC90bS1tbjEwMjAwLmgsdg0KcmV0cmlldmluZyByZXZp
c2lvbiAxLjEuMS44DQpkaWZmIC11IC1wIC1yMS4xLjEuOCB0bS1tbjEwMjAwLmgNCi0tLSB0bS1t
bjEwMjAwLmgJMTk5OS8xMi8xNCAwMTowNTo0MgkxLjEuMS44DQorKysgdG0tbW4xMDIwMC5oCTIw
MDAvMDMvMDIgMTQ6NTI6MDYNCkBAIC0yMSw3ICsyMSw4IEBADQogICAgQm9zdG9uLCBNQSAwMjEx
MS0xMzA3LCBVU0EuICAqLw0KIA0KIC8qIFRoZSBtbjEwMjAwIGlzIGxpdHRsZSBlbmRpYW4uICAq
Lw0KLSNkZWZpbmUgVEFSR0VUX0JZVEVfT1JERVIgTElUVExFX0VORElBTg0KKyNkZWZpbmUgVEFS
R0VUX0JZVEVfT1JERVJfU0VMRUNUQUJMRV9QCTANCisjZGVmaW5lIFRBUkdFVF9CWVRFX09SREVS
X0RFRkFVTFQJTElUVExFX0VORElBTg0KIA0KIC8qIGludHMgYXJlIG9ubHkgMTZiaXRzIG9uIHRo
ZSBtbjEwMjAwLiAgKi8NCiAjdW5kZWYgVEFSR0VUX0lOVF9CSVQNCg==
>From scottb@netwinder.org Thu Mar 02 07:38:00 2000
From: scottb@netwinder.org
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/15: Remove deprecated defines (i386).
Date: Thu, 02 Mar 2000 07:38:00 -0000
Message-id: <20000302152830.27886.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00012.html
Content-length: 1716

>Number:         15
>Category:       gdb-patch
>Synopsis:       Remove deprecated defines (i386).
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 02 07:38:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Bambrough
>Release:        current CVS version
>Organization:
>Environment:

>Description:
2000-03-02  Scott Bambrough <scottb@netwinder.org>

   * config/i386/tm-i386.h: Replace deprecated macro 
   TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P
   and TARGET_BYTE_ORDER_DEFAULT.

>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-unknown-content-type-patch_auto_file; name="i386.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="i386.patch"

SW5kZXg6IGkzODYvdG0taTM4Ni5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9zcmMvc3Jj
L2dkYi9jb25maWcvaTM4Ni90bS1pMzg2Lmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjINCmRp
ZmYgLXUgLXAgLXIxLjIgdG0taTM4Ni5oDQotLS0gdG0taTM4Ni5oCTIwMDAvMDIvMjkgMTM6Mjg6
MjQJMS4yDQorKysgdG0taTM4Ni5oCTIwMDAvMDMvMDIgMTQ6NDc6MTANCkBAIC0yNiw3ICsyNiw4
IEBAIHN0cnVjdCBmcmFtZV9pbmZvOw0KIHN0cnVjdCBmcmFtZV9zYXZlZF9yZWdzOw0KIHN0cnVj
dCB0eXBlOw0KIA0KLSNkZWZpbmUgVEFSR0VUX0JZVEVfT1JERVIgTElUVExFX0VORElBTg0KKyNk
ZWZpbmUgVEFSR0VUX0JZVEVfT1JERVJfU0VMRUNUQUJMRV9QCTANCisjZGVmaW5lIFRBUkdFVF9C
WVRFX09SREVSX0RFRkFVTFQJTElUVExFX0VORElBTg0KIA0KIC8qIFVzZWQgZm9yIGV4YW1wbGUg
aW4gdmFscHJpbnQuYzpwcmludF9mbG9hdGluZygpIHRvIGVuYWJsZSBjaGVja2luZw0KICAgIGZv
ciBOYU4ncyAqLw0K
>From scottb@netwinder.org Thu Mar 02 07:38:00 2000
From: scottb@netwinder.org
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/19: Remove deprecated defines (m88k).
Date: Thu, 02 Mar 2000 07:38:00 -0000
Message-id: <20000302153356.28788.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00016.html
Content-length: 1858

>Number:         19
>Category:       gdb-patch
>Synopsis:       Remove deprecated defines (m88k).
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 02 07:38:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Bambrough
>Release:        current CVS version
>Organization:
>Environment:

>Description:
2000-03-02  Scott Bambrough <scottb@netwinder.org>

   * config/m68k/tm-m88k.h: Replace deprecated macro 
   TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P
   and TARGET_BYTE_ORDER_DEFAULT.

>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-unknown-content-type-patch_auto_file; name="m88k.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="m88k.patch"

SW5kZXg6IG04OGsvdG0tbTg4ay5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9zcmMvc3Jj
L2dkYi9jb25maWcvbTg4ay90bS1tODhrLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS40
DQpkaWZmIC11IC1wIC1yMS4xLjEuNCB0bS1tODhrLmgNCi0tLSB0bS1tODhrLmgJMTk5OS8wNy8w
NyAyMDoxNTowNwkxLjEuMS40DQorKysgdG0tbTg4ay5oCTIwMDAvMDMvMDIgMTQ6NDk6NDUNCkBA
IC0yMiw3ICsyMiw4IEBADQogLyogZysrIHN1cHBvcnQgaXMgbm90IHlldCBpbmNsdWRlZC4gICov
DQogDQogLyogRGVmaW5lIHRoZSBiaXQsIGJ5dGUsIGFuZCB3b3JkIG9yZGVyaW5nIG9mIHRoZSBt
YWNoaW5lLiAgKi8NCi0jZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSIEJJR19FTkRJQU4NCisjZGVm
aW5lIFRBUkdFVF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUAkwDQorI2RlZmluZSBUQVJHRVRfQllU
RV9PUkRFUl9ERUZBVUxUCUJJR19FTkRJQU4NCiANCiAvKiBXZSBjYWNoZSBpbmZvcm1hdGlvbiBh
Ym91dCBzYXZlZCByZWdpc3RlcnMgaW4gdGhlIGZyYW1lIHN0cnVjdHVyZSwNCiAgICB0byBzYXZl
IHVzIGZyb20gaGF2aW5nIHRvIHJlLXNjYW4gZnVuY3Rpb24gcHJvbG9ndWVzIGV2ZXJ5IHRpbWUN
Cg==
>From scottb@netwinder.org Thu Mar 02 07:38:00 2000
From: scottb@netwinder.org
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/16: Remove deprecated defines (i960).
Date: Thu, 02 Mar 2000 07:38:00 -0000
Message-id: <20000302152923.28053.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00015.html
Content-length: 1833

>Number:         16
>Category:       gdb-patch
>Synopsis:       Remove deprecated defines (i960).
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 02 07:38:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Bambrough
>Release:        current CVS version
>Organization:
>Environment:

>Description:
2000-03-02  Scott Bambrough <scottb@netwinder.org>

   * config/i960/tm-i960.h: Replace deprecated macro 
   TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P
   and TARGET_BYTE_ORDER_DEFAULT.

>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-unknown-content-type-patch_auto_file; name="i960.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="i960.patch"

SW5kZXg6IGk5NjAvdG0taTk2MC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9zcmMvc3Jj
L2dkYi9jb25maWcvaTk2MC90bS1pOTYwLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS41
DQpkaWZmIC11IC1wIC1yMS4xLjEuNSB0bS1pOTYwLmgNCi0tLSB0bS1pOTYwLmgJMTk5OS8wOS8w
OCAyMzo1OTo1NAkxLjEuMS41DQorKysgdG0taTk2MC5oCTIwMDAvMDMvMDIgMTQ6NDc6MzgNCkBA
IC0zNiw3ICszNiw4IEBADQogI2RlZmluZQlEQlhfUEFSTV9TWU1CT0xfQ0xBU1ModHlwZSkgKCh0
eXBlID09IE5fTFNZTSk/IExPQ19MT0NBTF9BUkc6IExPQ19BUkcpDQogDQogLyogQnl0ZSBvcmRl
ciBpcyBjb25maWd1cmFibGUsIGJ1dCB0aGlzIG1hY2hpbmUgcnVucyBsaXR0bGUtZW5kaWFuLiAg
Ki8NCi0jZGVmaW5lCVRBUkdFVF9CWVRFX09SREVSCUxJVFRMRV9FTkRJQU4NCisjZGVmaW5lIFRB
UkdFVF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUAkwDQorI2RlZmluZSBUQVJHRVRfQllURV9PUkRF
Ul9ERUZBVUxUCUxJVFRMRV9FTkRJQU4NCiANCiAvKiBXZSBoYXZlIElFRUUgZmxvYXRpbmcgcG9p
bnQsIGlmIHdlIGhhdmUgYW55IGZsb2F0IGF0IGFsbC4gICovDQogDQo=
>From scottb@netwinder.org Thu Mar 02 07:38:00 2000
From: scottb@netwinder.org
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/17: Remove deprecated defines (m32r).
Date: Thu, 02 Mar 2000 07:38:00 -0000
Message-id: <20000302153031.28144.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00018.html
Content-length: 1683

>Number:         17
>Category:       gdb-patch
>Synopsis:       Remove deprecated defines (m32r).
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 02 07:38:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Bambrough
>Release:        current CVS version
>Organization:
>Environment:

>Description:
2000-03-02  Scott Bambrough <scottb@netwinder.org>

   * config/m32r/tm-m32r.h: Replace deprecated macro 
   TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P
   and TARGET_BYTE_ORDER_DEFAULT.

>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-unknown-content-type-patch_auto_file; name="m32r.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="m32r.patch"

SW5kZXg6IG0zMnIvdG0tbTMyci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9zcmMvc3Jj
L2dkYi9jb25maWcvbTMyci90bS1tMzJyLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjINCmRp
ZmYgLXUgLXAgLXIxLjIgdG0tbTMyci5oDQotLS0gdG0tbTMyci5oCTIwMDAvMDIvMjIgMTk6MTc6
NTUJMS4yDQorKysgdG0tbTMyci5oCTIwMDAvMDMvMDIgMTQ6NDg6NTQNCkBAIC0yMiw3ICsyMiw4
IEBADQogI2RlZmluZSBUQVJHRVRfTTMyUiAxDQogDQogLyogbXZzX2NoZWNrIFRBUkdFVF9CWVRF
X09SREVSIEJJR19FTkRJQU4gKi8NCi0jZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSIEJJR19FTkRJ
QU4NCisjZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUAkwDQorI2RlZmluZSBU
QVJHRVRfQllURV9PUkRFUl9ERUZBVUxUCUJJR19FTkRJQU4NCiANCiAvKiBtdnNfY2hlY2sgUkVH
SVNURVJfTkFNRVMgKi8NCiAjZGVmaW5lIFJFR0lTVEVSX05BTUVTIFwNCg==
>From scottb@netwinder.org Thu Mar 02 07:48:00 2000
From: scottb@netwinder.org
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/23: Remove deprecated defines (pa).
Date: Thu, 02 Mar 2000 07:48:00 -0000
Message-id: <20000302153837.29716.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00020.html
Content-length: 1733

>Number:         23
>Category:       gdb-patch
>Synopsis:       Remove deprecated defines (pa).
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 02 07:48:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Bambrough
>Release:        current CVS version
>Organization:
>Environment:

>Description:
2000-03-02  Scott Bambrough <scottb@netwinder.org>

   * config/pa/tm-hppa.h: Replace deprecated macro 
   TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P
   and TARGET_BYTE_ORDER_DEFAULT.
 
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-unknown-content-type-patch_auto_file; name="pa.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="pa.patch"

SW5kZXg6IHBhL3RtLWhwcGEuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n
ZGIvY29uZmlnL3BhL3RtLWhwcGEuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMg0KZGlmZiAt
dSAtcCAtcjEuMiB0bS1ocHBhLmgNCi0tLSB0bS1ocHBhLmgJMjAwMC8wMi8yMiAxOToxODoxOQkx
LjINCisrKyB0bS1ocHBhLmgJMjAwMC8wMy8wMiAxNDo1NDowMA0KQEAgLTMwLDggKzMwLDggQEAg
c3RydWN0IHR5cGU7DQogc3RydWN0IGluZmVyaW9yX3N0YXR1czsNCiANCiAvKiBUYXJnZXQgc3lz
dGVtIGJ5dGUgb3JkZXIuICovDQotDQotI2RlZmluZQlUQVJHRVRfQllURV9PUkRFUglCSUdfRU5E
SUFODQorI2RlZmluZSBUQVJHRVRfQllURV9PUkRFUl9TRUxFQ1RBQkxFX1AJMA0KKyNkZWZpbmUg
VEFSR0VUX0JZVEVfT1JERVJfREVGQVVMVAlCSUdfRU5ESUFODQogDQogLyogQnkgZGVmYXVsdCBh
c3N1bWUgd2UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCBzb2Z0d2FyZSBmbG9hdGluZyBwb2lu
dC4gICovDQogI2lmbmRlZiBTT0ZUX0ZMT0FUDQo=
>From scottb@netwinder.org Thu Mar 02 07:48:00 2000
From: scottb@netwinder.org
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/24: Define TARGET_BYTE_ORDER_SELECTABLE_P (rs6000)
Date: Thu, 02 Mar 2000 07:48:00 -0000
Message-id: <20000302154146.30039.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00021.html
Content-length: 1617

>Number:         24
>Category:       gdb-patch
>Synopsis:       Define TARGET_BYTE_ORDER_SELECTABLE_P (rs6000)
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 02 07:48:02 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Bambrough
>Release:        current CVS version
>Organization:
>Environment:

>Description:
2000-03-02  Scott Bambrough <scottb@netwinder.org>

   * config/rs6000/tm-rs6000.h: Define 
   TARGET_BYTE_ORDER_SELECTABLE_P 0.
 
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-unknown-content-type-patch_auto_file; name="rs6000.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="rs6000.patch"

SW5kZXg6IHJzNjAwMC90bS1yczYwMDAuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvc3Jj
L3NyYy9nZGIvY29uZmlnL3JzNjAwMC90bS1yczYwMDAuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuMw0KZGlmZiAtdSAtcCAtcjEuMyB0bS1yczYwMDAuaA0KLS0tIHRtLXJzNjAwMC5oCTIwMDAv
MDIvMjIgMTk6MTg6MjgJMS4zDQorKysgdG0tcnM2MDAwLmgJMjAwMC8wMy8wMiAxNDo1NDo0Nw0K
QEAgLTg0LDcgKzg0LDcgQEAgc3RydWN0IHJzNjAwMF9mcmFtZWRhdGENCiAgIH07DQogDQogLyog
RGVmaW5lIHRoZSBieXRlIG9yZGVyIG9mIHRoZSBtYWNoaW5lLiAgKi8NCi0NCisjZGVmaW5lIFRB
UkdFVF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUAkwDQogI2RlZmluZSBUQVJHRVRfQllURV9PUkRF
Ul9ERUZBVUxUCUJJR19FTkRJQU4NCiANCiAvKiBBSVgncyBhc3NlbWJsZXIgZG9lc24ndCBncm9r
IGRvbGxhciBzaWducyBpbiBpZGVudGlmaWVycy4NCg==
>From scottb@netwinder.org Thu Mar 02 07:58:00 2000
From: scottb@netwinder.org
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/28: Define TARGET_BYTE_ORDER_SELECTABLE_P (w65)
Date: Thu, 02 Mar 2000 07:58:00 -0000
Message-id: <20000302155728.837.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00025.html
Content-length: 1735

>Number:         28
>Category:       gdb-patch
>Synopsis:       Define TARGET_BYTE_ORDER_SELECTABLE_P (w65)
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 02 07:58:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Bambrough
>Release:        current CVS version
>Organization:
>Environment:

>Description:
2000-03-02  Scott Bambrough <scottb@netwinder.org>

   * config/w65/tm-w65.h: Replace deprecated macro 
   TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P
   and TARGET_BYTE_ORDER_DEFAULT.
 
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-unknown-content-type-patch_auto_file; name="w65.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="w65.patch"

SW5kZXg6IHc2NS90bS13NjUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n
ZGIvY29uZmlnL3c2NS90bS13NjUuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjQNCmRp
ZmYgLXUgLXAgLXIxLjEuMS40IHRtLXc2NS5oDQotLS0gdG0tdzY1LmgJMTk5OS8wNy8wNyAyMDox
NzozNgkxLjEuMS40DQorKysgdG0tdzY1LmgJMjAwMC8wMy8wMiAxNDo1Nzo1OQ0KQEAgLTI1LDgg
KzI1LDggQEANCiAjZGVmaW5lIElFRUVfRkxPQVQgMQ0KIA0KIC8qIERlZmluZSB0aGUgYml0LCBi
eXRlLCBhbmQgd29yZCBvcmRlcmluZyBvZiB0aGUgbWFjaGluZS4gICovDQotDQotI2RlZmluZSBU
QVJHRVRfQllURV9PUkRFUiBMSVRUTEVfRU5ESUFODQorI2RlZmluZSBUQVJHRVRfQllURV9PUkRF
Ul9TRUxFQ1RBQkxFX1AJMA0KKyNkZWZpbmUgVEFSR0VUX0JZVEVfT1JERVJfREVGQVVMVAlMSVRU
TEVfRU5ESUFODQogDQogDQogLyogT2Zmc2V0IGZyb20gYWRkcmVzcyBvZiBmdW5jdGlvbiB0byBz
dGFydCBvZiBpdHMgY29kZS4NCg==
>From scottb@netwinder.org Thu Mar 02 07:58:00 2000
From: scottb@netwinder.org
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/26: Define TARGET_BYTE_ORDER_SELECTABLE_P (v850)
Date: Thu, 02 Mar 2000 07:58:00 -0000
Message-id: <20000302155536.656.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00024.html
Content-length: 1695

>Number:         26
>Category:       gdb-patch
>Synopsis:       Define TARGET_BYTE_ORDER_SELECTABLE_P (v850)
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 02 07:58:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Bambrough
>Release:        current CVS version
>Organization:
>Environment:

>Description:
2000-03-02  Scott Bambrough <scottb@netwinder.org>

   * config/v850/tm-v850.h: Replace deprecated macro 
   TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P
   and TARGET_BYTE_ORDER_DEFAULT.
 
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-unknown-content-type-patch_auto_file; name="v850.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="v850.patch"

SW5kZXg6IHY4NTAvdG0tdjg1MC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9zcmMvc3Jj
L2dkYi9jb25maWcvdjg1MC90bS12ODUwLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS43
DQpkaWZmIC11IC1wIC1yMS4xLjEuNyB0bS12ODUwLmgNCi0tLSB0bS12ODUwLmgJMTk5OS8xMi8x
NCAwMTowNTo0MgkxLjEuMS43DQorKysgdG0tdjg1MC5oCTIwMDAvMDMvMDIgMTQ6NTc6MDINCkBA
IC0xOSw3ICsxOSw4IEBADQogICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g
U3VpdGUgMzMwLA0KICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8NCiANCi0jZGVm
aW5lIFRBUkdFVF9CWVRFX09SREVSIExJVFRMRV9FTkRJQU4NCisjZGVmaW5lIFRBUkdFVF9CWVRF
X09SREVSX1NFTEVDVEFCTEVfUAkwDQorI2RlZmluZSBUQVJHRVRfQllURV9PUkRFUl9ERUZBVUxU
CUxJVFRMRV9FTkRJQU4NCiANCiAjZGVmaW5lIE5VTV9SRUdTIDY2DQogDQo=
>From scottb@netwinder.org Thu Mar 02 07:58:00 2000
From: scottb@netwinder.org
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/25: Define TARGET_BYTE_ORDER_SELECTABLE_P (tic80)
Date: Thu, 02 Mar 2000 07:58:00 -0000
Message-id: <20000302155433.572.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00022.html
Content-length: 1668

>Number:         25
>Category:       gdb-patch
>Synopsis:       Define TARGET_BYTE_ORDER_SELECTABLE_P (tic80)
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 02 07:58:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Bambrough
>Release:        current CVS version
>Organization:
>Environment:

>Description:
2000-03-02  Scott Bambrough <scottb@netwinder.org>

   * config/tic80/tm-tic80.h: Replace deprecated macro 
   TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P
   and TARGET_BYTE_ORDER_DEFAULT.
 
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-unknown-content-type-patch_auto_file; name="tic80.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="tic80.patch"

SW5kZXg6IHRpYzgwL3RtLXRpYzgwLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL3NyYy9z
cmMvZ2RiL2NvbmZpZy90aWM4MC90bS10aWM4MC5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4x
LjEuNg0KZGlmZiAtdSAtcCAtcjEuMS4xLjYgdG0tdGljODAuaA0KLS0tIHRtLXRpYzgwLmgJMTk5
OS8wOC8zMSAwMTowODowNgkxLjEuMS42DQorKysgdG0tdGljODAuaAkyMDAwLzAzLzAyIDE0OjU2
OjM1DQpAQCAtMjksNyArMjksOCBAQCBzdHJ1Y3QgdmFsdWU7DQogc3RydWN0IHN5bWJvbDsNCiBz
dHJ1Y3QgZnJhbWVfc2F2ZWRfcmVnczsNCiANCi0jZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSIExJ
VFRMRV9FTkRJQU4NCisjZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUAkwDQor
I2RlZmluZSBUQVJHRVRfQllURV9PUkRFUl9ERUZBVUxUCUxJVFRMRV9FTkRJQU4NCiANCiAjZGVm
aW5lIE5VTV9SRUdTIDM4DQogDQo=
>From scottb@netwinder.org Thu Mar 02 07:58:00 2000
From: scottb@netwinder.org
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/27: Define TARGET_BYTE_ORDER_SELECTABLE_P (vax)
Date: Thu, 02 Mar 2000 07:58:00 -0000
Message-id: <20000302155632.717.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00023.html
Content-length: 1775

>Number:         27
>Category:       gdb-patch
>Synopsis:       Define TARGET_BYTE_ORDER_SELECTABLE_P (vax)
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 02 07:58:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Bambrough
>Release:        current CVS version
>Organization:
>Environment:

>Description:
2000-03-02  Scott Bambrough <scottb@netwinder.org>

   * config/vax/tm-vax.h: Replace deprecated macro 
   TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P
   and TARGET_BYTE_ORDER_DEFAULT.
 
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-unknown-content-type-patch_auto_file; name="vax.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="vax.patch"

SW5kZXg6IHZheC90bS12YXguaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n
ZGIvY29uZmlnL3ZheC90bS12YXguaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjQNCmRp
ZmYgLXUgLXAgLXIxLjEuMS40IHRtLXZheC5oDQotLS0gdG0tdmF4LmgJMTk5OS8wNy8wNyAyMDox
NzozMQkxLjEuMS40DQorKysgdG0tdmF4LmgJMjAwMC8wMy8wMiAxNDo1NzoyNg0KQEAgLTE4LDgg
KzE4LDggQEANCiAgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAz
MzAsDQogICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLw0KIA0KLQ0KLSNkZWZpbmUg
VEFSR0VUX0JZVEVfT1JERVIgTElUVExFX0VORElBTg0KKyNkZWZpbmUgVEFSR0VUX0JZVEVfT1JE
RVJfU0VMRUNUQUJMRV9QCTANCisjZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSX0RFRkFVTFQJTElU
VExFX0VORElBTg0KIA0KIC8qIE9mZnNldCBmcm9tIGFkZHJlc3Mgb2YgZnVuY3Rpb24gdG8gc3Rh
cnQgb2YgaXRzIGNvZGUuDQogICAgWmVybyBvbiBtb3N0IG1hY2hpbmVzLiAgKi8NCg==
>From scottb@netwinder.org Thu Mar 02 08:08:00 2000
From: scottb@netwinder.org
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/29: Define TARGET_BYTE_ORDER_SELECTABLE_P (z8k)
Date: Thu, 02 Mar 2000 08:08:00 -0000
Message-id: <20000302155816.1147.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00026.html
Content-length: 1783

>Number:         29
>Category:       gdb-patch
>Synopsis:       Define TARGET_BYTE_ORDER_SELECTABLE_P (z8k)
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 02 08:08:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Scott Bambrough
>Release:        current CVS version
>Organization:
>Environment:

>Description:
2000-03-02  Scott Bambrough <scottb@netwinder.org>

   * config/z8k/tm-z8k.h: Replace deprecated macro 
   TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P
   and TARGET_BYTE_ORDER_DEFAULT.
 
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-unknown-content-type-patch_auto_file; name="z8k.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="z8k.patch"

SW5kZXg6IHo4ay90bS16OGsuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n
ZGIvY29uZmlnL3o4ay90bS16OGsuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjYNCmRp
ZmYgLXUgLXAgLXIxLjEuMS42IHRtLXo4ay5oDQotLS0gdG0tejhrLmgJMTk5OS8wOS8wOSAwMDow
MDowNwkxLjEuMS42DQorKysgdG0tejhrLmgJMjAwMC8wMy8wMiAxNDo1ODoxOA0KQEAgLTMxLDcg
KzMxLDggQEANCiAjZGVmaW5lIFRBUkdFVF9QVFJfQklUIChCSUcgPyAzMjogMTYpDQogDQogLyog
RGVmaW5lIHRoZSBiaXQsIGJ5dGUsIGFuZCB3b3JkIG9yZGVyaW5nIG9mIHRoZSBtYWNoaW5lLiAg
Ki8NCi0jZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSIEJJR19FTkRJQU4NCisjZGVmaW5lIFRBUkdF
VF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUAkwDQorI2RlZmluZSBUQVJHRVRfQllURV9PUkRFUl9E
RUZBVUxUCUJJR19FTkRJQU4NCiANCiAvKiBPZmZzZXQgZnJvbSBhZGRyZXNzIG9mIGZ1bmN0aW9u
IHRvIHN0YXJ0IG9mIGl0cyBjb2RlLg0KICAgIFplcm8gb24gbW9zdCBtYWNoaW5lcy4gICovDQo=
>From muller@ics.u-strasbg.fr Fri Mar 03 05:38:00 2000
From: muller@ics.u-strasbg.fr
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/30: First part of pascal extension patch
Date: Fri, 03 Mar 2000 05:38:00 -0000
Message-id: <20000303133347.5109.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00027.html
Content-length: 171834

>Number:         30
>Category:       gdb-patch
>Synopsis:       First part of pascal extension patch
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Fri Mar 03 05:38:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Pierre Muller
>Release:        unknown-1.0
>Organization:
>Environment:
This is cross platform
>Description:
This only contains 5 new files
  p-exp.y
  p-lang.h
  p-lang.c
  p-typeprint.c
  p-valprint.c
that are necessary for addition of pascal language support.
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="pascal-patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="pascal-patch"

DQogSSB0cmllZCBoYXJkIHRvIGluc2VydCBhbGwgY2hhbmdlcyBvZiB0aGUgY29ycmVzcG9uZGlu
ZyBjLSoNCmZpbGVzIGludG8gdGhlIHAtKiBlcXVpdmFsZW50Lg0KIHAtZXhwLnkgc3RpbGwgY29u
dGFpbnMgMjEgU2hpZnQvUmVkdWNlIGNvbmZsaWN0cyB3aGljaCBhcmUgbW9zdGx5IGR1ZQ0KdG8g
dGhlIGZhY3QgdGhhdCB0eXBlY2FzdGluZyBhbmQgZnVuY3Rpb24gY2FsbGluZw0KdXNlIHRoZSBz
YW1lIHN5bnRheCBpbiBwYXNjYWwuDQoNCg0KMjAwMC0wMy0wMyAgUGllcnJlIE11bGxlciAgIDxt
dWxsZXJAaWNzLnUtc3RyYXNiZy5mcj4NCiAgICsgcC1leHAueSwgcC1sYW5nLmgscC1sYW5nLmMs
IHAtdHlwZXByaW50LmMsIHAtdmFscHJpbnQuYw0KICAgcGFzY2FsIGxhbmd1YWdlIHNwZWNpZmlj
IGZpbGVzLg0KICAgVGhpcyBwYXRjaCBkb2VzIG5vdGhpbmcgYnkgaXRzZWxmIGl0IHdpbGwgYmUg
Y29tcGxldGVkIGJ5DQogICBvdGhlciBwYXRjaGVzIHRoYXQgYWRkIHRoZSBzdXBwb3J0IGZvciBw
YXNjYWwgbGFuZ3VhZ2UNCiAgIHRvIHRoZSBleGlzdGluZyBHREIgc291cmNlcy4NCiAgIA0KKioq
IHAtZXhwLnkub3JpCUZyaSBNYXIgIDMgMTQ6MjM6MzAgMjAwMA0KLS0tIHAtZXhwLnkJVHVlIE9j
dCAgNSAwODoxNTozMCAxOTk5DQoqKioqKioqKioqKioqKioNCioqKiAwICoqKioNCi0tLSAxLDE0
NzcgLS0tLQ0KKyAvKg0KKyAgIE1vZGlmaWNhdGlvbnMgZm9yIEZQQyBzdXBwb3J0DQorICAgJElk
OiBwLWV4cC55LHYgMS4yIDE5OTkvMTAvMDUgMDY6MTU6MzEgcGllcnJlIEV4cCAkDQorICovDQor
IC8qIFlBQ0MgcGFyc2VyIGZvciBDIGV4cHJlc3Npb25zLCBmb3IgR0RCLg0KKyAgICBDb3B5cmln
aHQgKEMpIDE5ODYsIDE5ODksIDE5OTAsIDE5OTEsIDE5OTMsIDE5OTQsIDE5OTYsIDE5OTcNCisg
ICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIA0KKyBUaGlzIGZpbGUgaXMgcGFy
dCBvZiBHREIuDQorIA0KKyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KKyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KKyB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0K
KyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KKyANCisgVGhpcyBwcm9ncmFt
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mDQorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUNCisgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4NCisgDQorIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlDQorIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQorIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ
bGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLw0KKyANCisg
LyogUGFyc2UgYSBDIGV4cHJlc3Npb24gZnJvbSB0ZXh0IGluIGEgc3RyaW5nLA0KKyAgICBhbmQg
cmV0dXJuIHRoZSByZXN1bHQgYXMgYSAgc3RydWN0IGV4cHJlc3Npb24gIHBvaW50ZXIuDQorICAg
IFRoYXQgc3RydWN0dXJlIGNvbnRhaW5zIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBpbiByZXZlcnNl
IHBvbGlzaCwNCisgICAgd2l0aCBjb25zdGFudHMgcmVwcmVzZW50ZWQgYnkgb3BlcmF0aW9ucyB0
aGF0IGFyZSBmb2xsb3dlZCBieSBzcGVjaWFsIGRhdGEuDQorICAgIFNlZSBleHByZXNzaW9uLmgg
Zm9yIHRoZSBkZXRhaWxzIG9mIHRoZSBmb3JtYXQuDQorICAgIFdoYXQgaXMgaW1wb3J0YW50IGhl
cmUgaXMgdGhhdCBpdCBjYW4gYmUgYnVpbHQgdXAgc2VxdWVudGlhbGx5DQorICAgIGR1cmluZyB0
aGUgcHJvY2VzcyBvZiBwYXJzaW5nOyB0aGUgbG93ZXIgbGV2ZWxzIG9mIHRoZSB0cmVlIGFsd2F5
cw0KKyAgICBjb21lIGZpcnN0IGluIHRoZSByZXN1bHQuDQorIA0KKyAgICBOb3RlIHRoYXQgbWFs
bG9jJ3MgYW5kIHJlYWxsb2MncyBpbiB0aGlzIGZpbGUgYXJlIHRyYW5zZm9ybWVkIHRvDQorICAg
IHhtYWxsb2MgYW5kIHhyZWFsbG9jIHJlc3BlY3RpdmVseSBieSB0aGUgc2FtZSBzZWQgY29tbWFu
ZCBpbiB0aGUNCisgICAgbWFrZWZpbGUgdGhhdCByZW1hcHMgYW55IG90aGVyIG1hbGxvYy9yZWFs
bG9jIGluc2VydGVkIGJ5IHRoZSBwYXJzZXINCisgICAgZ2VuZXJhdG9yLiAgRG9pbmcgdGhpcyB3
aXRoICNkZWZpbmVzIGFuZCB0cnlpbmcgdG8gY29udHJvbCB0aGUgaW50ZXJhY3Rpb24NCisgICAg
d2l0aCBpbmNsdWRlIGZpbGVzICg8bWFsbG9jLmg+IGFuZCA8c3RkbGliLmg+IGZvciBleGFtcGxl
KSBqdXN0IGJlY2FtZQ0KKyAgICB0b28gbWVzc3ksIHBhcnRpY3VsYXJseSB3aGVuIHN1Y2ggaW5j
bHVkZXMgY2FuIGJlIGluc2VydGVkIGF0IHJhbmRvbQ0KKyAgICB0aW1lcyBieSB0aGUgcGFyc2Vy
IGdlbmVyYXRvci4gICovDQorIA0KKyAlew0KKyANCisgI2luY2x1ZGUgImRlZnMuaCINCisgI2lu
Y2x1ZGUgImdkYl9zdHJpbmcuaCINCisgI2luY2x1ZGUgPGN0eXBlLmg+DQorICNpbmNsdWRlICJl
eHByZXNzaW9uLmgiDQorICNpbmNsdWRlICJ2YWx1ZS5oIg0KKyAjaW5jbHVkZSAicGFyc2VyLWRl
ZnMuaCINCisgI2luY2x1ZGUgImxhbmd1YWdlLmgiDQorICNpbmNsdWRlICJwLWxhbmcuaCINCisg
I2luY2x1ZGUgImJmZC5oIiAvKiBSZXF1aXJlZCBieSBvYmpmaWxlcy5oLiAgKi8NCisgI2luY2x1
ZGUgInN5bWZpbGUuaCIgLyogUmVxdWlyZWQgYnkgb2JqZmlsZXMuaC4gICovDQorICNpbmNsdWRl
ICJvYmpmaWxlcy5oIiAvKiBGb3IgaGF2ZV9mdWxsX3N5bWJvbHMgYW5kIGhhdmVfcGFydGlhbF9z
eW1ib2xzICovDQorIA0KKyAvKiB3b3JrYXJvdW5kIGZvciB2NC4xNiBESkdQUCAoUE0pICovDQor
ICNpZm5kZWYgVUxPTkdFU1QNCisgI2lmZGVmIENDX0hBU19MT05HX0xPTkcNCisgI2RlZmluZSBV
TE9OR0VTVCB1bnNpZ25lZCBsb25nIGxvbmcNCisgI2Vsc2UNCisgI2RlZmluZSBVTE9OR0VTVCB1
bnNpZ25lZCBsb25nDQorICNlbmRpZg0KKyAjZW5kaWYNCisgDQorIC8qIFJlbWFwIG5vcm1hbCB5
YWNjIHBhcnNlciBpbnRlcmZhY2UgbmFtZXMgKHl5cGFyc2UsIHl5bGV4LCB5eWVycm9yLCBldGMp
LA0KKyAgICBhcyB3ZWxsIGFzIGdyYXR1aXRpb3VzbHkgZ2xvYmFsIHN5bWJvbCBuYW1lcywgc28g
d2UgY2FuIGhhdmUgbXVsdGlwbGUNCisgICAgeWFjYyBnZW5lcmF0ZWQgcGFyc2VycyBpbiBnZGIu
ICBOb3RlIHRoYXQgdGhlc2UgYXJlIG9ubHkgdGhlIHZhcmlhYmxlcw0KKyAgICBwcm9kdWNlZCBi
eSB5YWNjLiAgSWYgb3RoZXIgcGFyc2VyIGdlbmVyYXRvcnMgKGJpc29uLCBieWFjYywgZXRjKSBw
cm9kdWNlDQorICAgIGFkZGl0aW9uYWwgZ2xvYmFsIG5hbWVzIHRoYXQgY29uZmxpY3QgYXQgbGlu
ayB0aW1lLCB0aGVuIHRob3NlIHBhcnNlcg0KKyAgICBnZW5lcmF0b3JzIG5lZWQgdG8gYmUgZml4
ZWQgaW5zdGVhZCBvZiBhZGRpbmcgdGhvc2UgbmFtZXMgdG8gdGhpcyBsaXN0LiAqLw0KKyANCisg
I2RlZmluZQl5eW1heGRlcHRoIHBhc19tYXhkZXB0aA0KKyAjZGVmaW5lCXl5cGFyc2UJcGFzX3Bh
cnNlDQorICNkZWZpbmUJeXlsZXgJcGFzX2xleA0KKyAjZGVmaW5lCXl5ZXJyb3IJcGFzX2Vycm9y
DQorICNkZWZpbmUJeXlsdmFsCXBhc19sdmFsDQorICNkZWZpbmUJeXljaGFyCXBhc19jaGFyDQor
ICNkZWZpbmUJeXlkZWJ1ZwlwYXNfZGVidWcNCisgI2RlZmluZQl5eXBhY3QJcGFzX3BhY3QJDQor
ICNkZWZpbmUJeXlyMQlwYXNfcjEJCQkNCisgI2RlZmluZQl5eXIyCXBhc19yMgkJCQ0KKyAjZGVm
aW5lCXl5ZGVmCXBhc19kZWYJCQ0KKyAjZGVmaW5lCXl5Y2hrCXBhc19jaGsJCQ0KKyAjZGVmaW5l
CXl5cGdvCXBhc19wZ28JCQ0KKyAjZGVmaW5lCXl5YWN0CXBhc19hY3QNCisgI2RlZmluZQl5eWV4
Y2EJcGFzX2V4Y2ENCisgI2RlZmluZSB5eWVycmZsYWcgcGFzX2VycmZsYWcNCisgI2RlZmluZSB5
eW5lcnJzCXBhc19uZXJycw0KKyAjZGVmaW5lCXl5cHMJcGFzX3BzDQorICNkZWZpbmUJeXlwdglw
YXNfcHYNCisgI2RlZmluZQl5eXMJcGFzX3MNCisgI2RlZmluZQl5eV95eXMJcGFzX3l5cw0KKyAj
ZGVmaW5lCXl5c3RhdGUJcGFzX3N0YXRlDQorICNkZWZpbmUJeXl0bXAJcGFzX3RtcA0KKyAjZGVm
aW5lCXl5dglwYXNfdg0KKyAjZGVmaW5lCXl5X3l5dglwYXNfeXl2DQorICNkZWZpbmUJeXl2YWwJ
cGFzX3ZhbA0KKyAjZGVmaW5lCXl5bGxvYwlwYXNfbGxvYw0KKyAjZGVmaW5lIHl5cmVkcwlwYXNf
cmVkcwkJLyogV2l0aCBZWURFQlVHIGRlZmluZWQgKi8NCisgI2RlZmluZSB5eXRva3MJcGFzX3Rv
a3MJCS8qIFdpdGggWVlERUJVRyBkZWZpbmVkICovDQorICNkZWZpbmUgeXlsaHMJcGFzX3l5bGhz
DQorICNkZWZpbmUgeXlsZW4JcGFzX3l5bGVuDQorICNkZWZpbmUgeXlkZWZyZWQgcGFzX3l5ZGVm
cmVkDQorICNkZWZpbmUgeXlkZ290bwlwYXNfeXlkZ290bw0KKyAjZGVmaW5lIHl5c2luZGV4IHBh
c195eXNpbmRleA0KKyAjZGVmaW5lIHl5cmluZGV4IHBhc195eXJpbmRleA0KKyAjZGVmaW5lIHl5
Z2luZGV4IHBhc195eWdpbmRleA0KKyAjZGVmaW5lIHl5dGFibGUJIHBhc195eXRhYmxlDQorICNk
ZWZpbmUgeXljaGVjawkgcGFzX3l5Y2hlY2sNCisgDQorICNpZm5kZWYgWVlERUJVRw0KKyAjZGVm
aW5lCVlZREVCVUcJMAkJLyogRGVmYXVsdCB0byBubyB5eWRlYnVnIHN1cHBvcnQgKi8NCisgI2Vu
ZGlmDQorIA0KKyBpbnQNCisgeXlwYXJzZSBQQVJBTVMgKCh2b2lkKSk7DQorIA0KKyBzdGF0aWMg
aW50DQorIHl5bGV4IFBBUkFNUyAoKHZvaWQpKTsNCisgDQorIHZvaWQNCisgeXllcnJvciBQQVJB
TVMgKChjaGFyICopKTsNCisgDQorIHN0YXRpYyBjaGFyICoNCisgdXB0b2sgUEFSQU1TICgoY2hh
ciAqLCBpbnQpKTsNCisgJX0NCisgDQorIC8qIEFsdGhvdWdoIHRoZSB5YWNjICJ2YWx1ZSIgb2Yg
YW4gZXhwcmVzc2lvbiBpcyBub3QgdXNlZCwNCisgICAgc2luY2UgdGhlIHJlc3VsdCBpcyBzdG9y
ZWQgaW4gdGhlIHN0cnVjdHVyZSBiZWluZyBjcmVhdGVkLA0KKyAgICBvdGhlciBub2RlIHR5cGVz
IGRvIGhhdmUgdmFsdWVzLiAgKi8NCisgDQorICV1bmlvbg0KKyAgIHsNCisgICAgIExPTkdFU1Qg
bHZhbDsNCisgICAgIHN0cnVjdCB7DQorICAgICAgIExPTkdFU1QgdmFsOw0KKyAgICAgICBzdHJ1
Y3QgdHlwZSAqdHlwZTsNCisgICAgIH0gdHlwZWRfdmFsX2ludDsNCisgICAgIHN0cnVjdCB7DQor
ICAgICAgIERPVUJMRVNUIGR2YWw7DQorICAgICAgIHN0cnVjdCB0eXBlICp0eXBlOw0KKyAgICAg
fSB0eXBlZF92YWxfZmxvYXQ7DQorICAgICBzdHJ1Y3Qgc3ltYm9sICpzeW07DQorICAgICBzdHJ1
Y3QgdHlwZSAqdHZhbDsNCisgICAgIHN0cnVjdCBzdG9rZW4gc3ZhbDsNCisgICAgIHN0cnVjdCB0
dHlwZSB0c3ltOw0KKyAgICAgc3RydWN0IHN5bXRva2VuIHNzeW07DQorICAgICBpbnQgdm9pZHZh
bDsNCisgICAgIHN0cnVjdCBibG9jayAqYnZhbDsNCisgICAgIGVudW0gZXhwX29wY29kZSBvcGNv
ZGU7DQorICAgICBzdHJ1Y3QgaW50ZXJuYWx2YXIgKml2YXI7DQorIA0KKyAgICAgc3RydWN0IHR5
cGUgKip0dmVjOw0KKyAgICAgaW50ICppdmVjOw0KKyAgIH0NCisgDQorICV7DQorIC8qIFlZU1RZ
UEUgZ2V0cyBkZWZpbmVkIGJ5ICV1bmlvbiAqLw0KKyBzdGF0aWMgaW50DQorIHBhcnNlX251bWJl
ciBQQVJBTVMgKChjaGFyICosIGludCwgaW50LCBZWVNUWVBFICopKTsNCisgJX0NCisgDQorICV0
eXBlIDx2b2lkdmFsPiBleHAgZXhwMSB0eXBlX2V4cCBzdGFydCB2YXJpYWJsZSBxdWFsaWZpZWRf
bmFtZQ0KKyAldHlwZSA8dHZhbD4gdHlwZSB0eXBlYmFzZQ0KKyAvKiAldHlwZSA8YnZhbD4gYmxv
Y2sgKi8NCisgDQorIC8qIEZhbmN5IHR5cGUgcGFyc2luZy4gICovDQorICV0eXBlIDx0dmFsPiBw
dHlwZQ0KKyANCisgJXRva2VuIDx0eXBlZF92YWxfaW50PiBJTlQNCisgJXRva2VuIDx0eXBlZF92
YWxfZmxvYXQ+IEZMT0FUDQorIA0KKyAvKiBCb3RoIE5BTUUgYW5kIFRZUEVOQU1FIHRva2VucyBy
ZXByZXNlbnQgc3ltYm9scyBpbiB0aGUgaW5wdXQsDQorICAgIGFuZCBib3RoIGNvbnZleSB0aGVp
ciBkYXRhIGFzIHN0cmluZ3MuDQorICAgIEJ1dCBhIFRZUEVOQU1FIGlzIGEgc3RyaW5nIHRoYXQg
aGFwcGVucyB0byBiZSBkZWZpbmVkIGFzIGEgdHlwZWRlZg0KKyAgICBvciBidWlsdGluIHR5cGUg
bmFtZSAoc3VjaCBhcyBpbnQgb3IgY2hhcikNCisgICAgYW5kIGEgTkFNRSBpcyBhbnkgb3RoZXIg
c3ltYm9sLg0KKyAgICBDb250ZXh0cyB3aGVyZSB0aGlzIGRpc3RpbmN0aW9uIGlzIG5vdCBpbXBv
cnRhbnQgY2FuIHVzZSB0aGUNCisgICAgbm9udGVybWluYWwgIm5hbWUiLCB3aGljaCBtYXRjaGVz
IGVpdGhlciBOQU1FIG9yIFRZUEVOQU1FLiAgKi8NCisgDQorICV0b2tlbiA8c3ZhbD4gU1RSSU5H
DQorICV0b2tlbiA8c3N5bT4gTkFNRSAvKiBCTE9DS05BTUUgZGVmaW5lZCBiZWxvdyB0byBnaXZl
IGl0IGhpZ2hlciBwcmVjZWRlbmNlLiAqLw0KKyAldG9rZW4gPHRzeW0+IFRZUEVOQU1FDQorICV0
eXBlIDxzdmFsPiBuYW1lDQorICV0eXBlIDxzc3ltPiBuYW1lX25vdF90eXBlbmFtZQ0KKyANCisg
LyogQSBOQU1FX09SX0lOVCBpcyBhIHN5bWJvbCB3aGljaCBpcyBub3Qga25vd24gaW4gdGhlIHN5
bWJvbCB0YWJsZSwNCisgICAgYnV0IHdoaWNoIHdvdWxkIHBhcnNlIGFzIGEgdmFsaWQgbnVtYmVy
IGluIHRoZSBjdXJyZW50IGlucHV0IHJhZGl4Lg0KKyAgICBFLmcuICJjIiB3aGVuIGlucHV0X3Jh
ZGl4PT0xNi4gIERlcGVuZGluZyBvbiB0aGUgcGFyc2UsIGl0IHdpbGwgYmUNCisgICAgdHVybmVk
IGludG8gYSBuYW1lIG9yIGludG8gYSBudW1iZXIuICAqLw0KKyANCisgJXRva2VuIDxzc3ltPiBO
QU1FX09SX0lOVA0KKyANCisgJXRva2VuIFNUUlVDVCBDTEFTUyBTSVpFT0YgQ09MT05DT0xPTg0K
KyAldG9rZW4gRVJST1INCisgDQorIC8qIFNwZWNpYWwgdHlwZSBjYXNlcywgcHV0IGluIHRvIGFs
bG93IHRoZSBwYXJzZXIgdG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50DQorICAgIGxlZ2FsIGJhc2V0
eXBlcy4gICovDQorIA0KKyAldG9rZW4gPHZvaWR2YWw+IFZBUklBQkxFDQorIA0KKyANCisgLyog
QysrICovDQorICV0b2tlbiBUSElTDQorICV0b2tlbiA8bHZhbD4gVFJVRSBGQUxTRQ0KKyANCisg
JWxlZnQgJywnDQorICVsZWZ0IEFCT1ZFX0NPTU1BDQorICVyaWdodCBBU1NJR04NCisgJWxlZnQg
Tk9UDQorICVsZWZ0IE9SDQorICVsZWZ0IFhPUg0KKyAlbGVmdCBBTkRBTkQNCisgJWxlZnQgJz0n
IE5PVEVRVUFMDQorICVsZWZ0ICc8JyAnPicgTEVRIEdFUQ0KKyAlbGVmdCBMU0ggUlNIIERJViBN
T0QNCisgJWxlZnQgJ0AnDQorICVsZWZ0ICcrJyAnLScNCisgJWxlZnQgJyonICcvJw0KKyAlcmln
aHQgVU5BUlkgSU5DUkVNRU5UIERFQ1JFTUVOVA0KKyAlcmlnaHQgQVJST1cgJy4nICdbJyAnKCcN
CisgJXRva2VuIDxzc3ltPiBCTE9DS05BTUUNCisgJXR5cGUgPGJ2YWw+IGJsb2NrDQorICVsZWZ0
IENPTE9OQ09MT04NCisgDQorIAwNCisgJSUNCisgDQorIHN0YXJ0ICAgOglleHAxDQorIAl8CXR5
cGVfZXhwDQorIAk7DQorIA0KKyB0eXBlX2V4cDoJdHlwZQ0KKyAJCQl7IHdyaXRlX2V4cF9lbHRf
b3Bjb2RlKE9QX1RZUEUpOw0KKyAJCQkgIHdyaXRlX2V4cF9lbHRfdHlwZSgkMSk7DQorIAkJCSAg
d3JpdGVfZXhwX2VsdF9vcGNvZGUoT1BfVFlQRSk7fQ0KKyAJOw0KKyANCisgLyogRXhwcmVzc2lv
bnMsIGluY2x1ZGluZyB0aGUgY29tbWEgb3BlcmF0b3IuICAqLw0KKyBleHAxCToJZXhwDQorIAl8
CWV4cDEgJywnIGV4cA0KKyAJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChCSU5PUF9DT01NQSk7
IH0NCisgCTsNCisgDQorIC8qIEV4cHJlc3Npb25zLCBub3QgaW5jbHVkaW5nIHRoZSBjb21tYSBv
cGVyYXRvci4gICovDQorIGV4cAk6CWV4cCAnXicgICAlcHJlYyBVTkFSWQ0KKyAJCQl7IHdyaXRl
X2V4cF9lbHRfb3Bjb2RlIChVTk9QX0lORCk7IH0NCisgDQorIGV4cAk6CSdAJyBleHAgICAgJXBy
ZWMgVU5BUlkNCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoVU5PUF9BRERSKTsgfQ0KKyAN
CisgZXhwCToJJy0nIGV4cCAgICAlcHJlYyBVTkFSWQ0KKyAJCQl7IHdyaXRlX2V4cF9lbHRfb3Bj
b2RlIChVTk9QX05FRyk7IH0NCisgCTsNCisgDQorIGV4cAk6CU5PVCBleHAgICAgJXByZWMgVU5B
UlkNCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoVU5PUF9MT0dJQ0FMX05PVCk7IH0NCisg
CTsNCisgDQorIGV4cAk6CUlOQ1JFTUVOVCAnKCcgZXhwICcpJyAgICVwcmVjIFVOQVJZDQorIAkJ
CXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfUFJFSU5DUkVNRU5UKTsgfQ0KKyAJOw0KKyAN
CisgZXhwCToJREVDUkVNRU5UICAnKCcgZXhwICcpJyAgICVwcmVjIFVOQVJZDQorIAkJCXsgd3Jp
dGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfUFJFREVDUkVNRU5UKTsgfQ0KKyAJOw0KKyANCisgZXhw
CToJZXhwICcuJyBuYW1lDQorIAkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFNUUlVDVE9QX1NU
UlVDVCk7DQorIAkJCSAgd3JpdGVfZXhwX3N0cmluZyAoJDMpOw0KKyAJCQkgIHdyaXRlX2V4cF9l
bHRfb3Bjb2RlIChTVFJVQ1RPUF9TVFJVQ1QpOyB9DQorIAk7DQorIA0KKyBleHAJOglleHAgJ1sn
IGV4cDEgJ10nDQorIAkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKEJJTk9QX1NVQlNDUklQVCk7
IH0NCisgCTsNCisgDQorIGV4cAk6CWV4cCAnKCcNCisgCQkJLyogVGhpcyBpcyB0byBzYXZlIHRo
ZSB2YWx1ZSBvZiBhcmdsaXN0X2xlbg0KKyAJCQkgICBiZWluZyBhY2N1bXVsYXRlZCBieSBhbiBv
dXRlciBmdW5jdGlvbiBjYWxsLiAgKi8NCisgCQkJeyBzdGFydF9hcmdsaXN0ICgpOyB9DQorIAkJ
YXJnbGlzdCAnKScJJXByZWMgQVJST1cNCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoT1Bf
RlVOQ0FMTCk7DQorIAkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0ICgoTE9OR0VTVCkgZW5kX2Fy
Z2xpc3QgKCkpOw0KKyAJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9GVU5DQUxMKTsgfQ0K
KyAJOw0KKyANCisgYXJnbGlzdAk6DQorICAgICAgICAgIHwgZXhwDQorIAkJCXsgYXJnbGlzdF9s
ZW4gPSAxOyB9DQorIAkgfCBhcmdsaXN0ICcsJyBleHAgICAlcHJlYyBBQk9WRV9DT01NQQ0KKyAJ
CQl7IGFyZ2xpc3RfbGVuKys7IH0NCisgCTsNCisgDQorIGV4cAk6CXR5cGUgJygnIGV4cCAnKScg
JXByZWMgVU5BUlkNCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoVU5PUF9DQVNUKTsNCisg
CQkJICB3cml0ZV9leHBfZWx0X3R5cGUgKCQxKTsNCisgCQkJICB3cml0ZV9leHBfZWx0X29wY29k
ZSAoVU5PUF9DQVNUKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJJygnIGV4cDEgJyknDQorIAkJCXsg
fQ0KKyAJOw0KKyANCisgLyogQmluYXJ5IG9wZXJhdG9ycyBpbiBvcmRlciBvZiBkZWNyZWFzaW5n
IHByZWNlZGVuY2UuICAqLw0KKyANCisgZXhwCToJZXhwICcqJyBleHANCisgCQkJeyB3cml0ZV9l
eHBfZWx0X29wY29kZSAoQklOT1BfTVVMKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJZXhwICcvJyBl
eHANCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1BfRElWKTsgfQ0KKyAJOw0KKyAN
CisgZXhwCToJZXhwIERJViBleHANCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1Bf
SU5URElWKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJZXhwIE1PRCBleHANCisgCQkJeyB3cml0ZV9l
eHBfZWx0X29wY29kZSAoQklOT1BfUkVNKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJZXhwICcrJyBl
eHANCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1BfQUREKTsgfQ0KKyAJOw0KKyAN
CisgZXhwCToJZXhwICctJyBleHANCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1Bf
U1VCKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJZXhwIExTSCBleHANCisgCQkJeyB3cml0ZV9leHBf
ZWx0X29wY29kZSAoQklOT1BfTFNIKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJZXhwIFJTSCBleHAN
CisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1BfUlNIKTsgfQ0KKyAJOw0KKyANCisg
ZXhwCToJZXhwICc9JyBleHANCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1BfRVFV
QUwpOyB9DQorIAk7DQorIA0KKyBleHAJOglleHAgTk9URVFVQUwgZXhwDQorIAkJCXsgd3JpdGVf
ZXhwX2VsdF9vcGNvZGUgKEJJTk9QX05PVEVRVUFMKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJZXhw
IExFUSBleHANCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1BfTEVRKTsgfQ0KKyAJ
Ow0KKyANCisgZXhwCToJZXhwIEdFUSBleHANCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAo
QklOT1BfR0VRKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJZXhwICc8JyBleHANCisgCQkJeyB3cml0
ZV9leHBfZWx0X29wY29kZSAoQklOT1BfTEVTUyk7IH0NCisgCTsNCisgDQorIGV4cAk6CWV4cCAn
PicgZXhwDQorIAkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKEJJTk9QX0dUUik7IH0NCisgCTsN
CisgDQorIGV4cAk6CWV4cCBBTkRBTkQgZXhwDQorIAkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUg
KEJJTk9QX0JJVFdJU0VfQU5EKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJZXhwIFhPUiBleHANCisg
CQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1BfQklUV0lTRV9YT1IpOyB9DQorIAk7DQor
IA0KKyBleHAJOglleHAgT1IgZXhwDQorIAkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKEJJTk9Q
X0JJVFdJU0VfSU9SKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJZXhwIEFTU0lHTiBleHANCisgCQkJ
eyB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1BfQVNTSUdOKTsgfQ0KKyAJOw0KKyANCisgZXhw
CToJVFJVRQ0KKyAJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9CT09MKTsNCisgCQkJICB3
cml0ZV9leHBfZWx0X2xvbmdjc3QgKChMT05HRVNUKSAkMSk7DQorIAkJCSAgd3JpdGVfZXhwX2Vs
dF9vcGNvZGUgKE9QX0JPT0wpOyB9DQorIAk7DQorIA0KKyBleHAJOglGQUxTRQ0KKyAJCQl7IHdy
aXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9CT09MKTsNCisgCQkJICB3cml0ZV9leHBfZWx0X2xvbmdj
c3QgKChMT05HRVNUKSAkMSk7DQorIAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX0JPT0wp
OyB9DQorIAk7DQorIA0KKyBleHAJOglJTlQNCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAo
T1BfTE9ORyk7DQorIAkJCSAgd3JpdGVfZXhwX2VsdF90eXBlICgkMS50eXBlKTsNCisgCQkJICB3
cml0ZV9leHBfZWx0X2xvbmdjc3QgKChMT05HRVNUKSgkMS52YWwpKTsNCisgCQkJICB3cml0ZV9l
eHBfZWx0X29wY29kZSAoT1BfTE9ORyk7IH0NCisgCTsNCisgDQorIGV4cAk6CU5BTUVfT1JfSU5U
DQorIAkJCXsgWVlTVFlQRSB2YWw7DQorIAkJCSAgcGFyc2VfbnVtYmVyICgkMS5zdG9rZW4ucHRy
LCAkMS5zdG9rZW4ubGVuZ3RoLCAwLCAmdmFsKTsNCisgCQkJICB3cml0ZV9leHBfZWx0X29wY29k
ZSAoT1BfTE9ORyk7DQorIAkJCSAgd3JpdGVfZXhwX2VsdF90eXBlICh2YWwudHlwZWRfdmFsX2lu
dC50eXBlKTsNCisgCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKChMT05HRVNUKXZhbC50eXBl
ZF92YWxfaW50LnZhbCk7DQorIAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX0xPTkcpOw0K
KyAJCQl9DQorIAk7DQorIA0KKyANCisgZXhwCToJRkxPQVQNCisgCQkJeyB3cml0ZV9leHBfZWx0
X29wY29kZSAoT1BfRE9VQkxFKTsNCisgCQkJICB3cml0ZV9leHBfZWx0X3R5cGUgKCQxLnR5cGUp
Ow0KKyAJCQkgIHdyaXRlX2V4cF9lbHRfZGJsY3N0ICgkMS5kdmFsKTsNCisgCQkJICB3cml0ZV9l
eHBfZWx0X29wY29kZSAoT1BfRE9VQkxFKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJdmFyaWFibGUN
CisgCTsNCisgDQorIGV4cAk6CVZBUklBQkxFDQorIAkJCS8qIEFscmVhZHkgd3JpdHRlbiBieSB3
cml0ZV9kb2xsYXJfdmFyaWFibGUuICovDQorIAk7DQorIA0KKyBleHAJOglTSVpFT0YgJygnIHR5
cGUgJyknCSVwcmVjIFVOQVJZDQorIAkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX0xPTkcp
Ow0KKyAJCQkgIHdyaXRlX2V4cF9lbHRfdHlwZSAoYnVpbHRpbl90eXBlX2ludCk7DQorIAkJCSAg
Q0hFQ0tfVFlQRURFRiAoJDMpOw0KKyAJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAoKExPTkdF
U1QpIFRZUEVfTEVOR1RIICgkMykpOw0KKyAJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9M
T05HKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJU1RSSU5HDQorIAkJCXsgLyogQyBzdHJpbmdzIGFy
ZSBjb252ZXJ0ZWQgaW50byBhcnJheSBjb25zdGFudHMgd2l0aA0KKyAJCQkgICAgIGFuIGV4cGxp
Y2l0IG51bGwgYnl0ZSBhZGRlZCBhdCB0aGUgZW5kLiAgVGh1cw0KKyAJCQkgICAgIHRoZSBhcnJh
eSB1cHBlciBib3VuZCBpcyB0aGUgc3RyaW5nIGxlbmd0aC4NCisgCQkJICAgICBUaGVyZSBpcyBu
byBzdWNoIHRoaW5nIGluIEMgYXMgYSBjb21wbGV0ZWx5IGVtcHR5DQorIAkJCSAgICAgc3RyaW5n
LiAqLw0KKyAJCQkgIGNoYXIgKnNwID0gJDEucHRyOyBpbnQgY291bnQgPSAkMS5sZW5ndGg7DQor
IAkJCSAgd2hpbGUgKGNvdW50LS0gPiAwKQ0KKyAJCQkgICAgew0KKyAJCQkgICAgICB3cml0ZV9l
eHBfZWx0X29wY29kZSAoT1BfTE9ORyk7DQorIAkJCSAgICAgIHdyaXRlX2V4cF9lbHRfdHlwZSAo
YnVpbHRpbl90eXBlX2NoYXIpOw0KKyAJCQkgICAgICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKChM
T05HRVNUKSgqc3ArKykpOw0KKyAJCQkgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfTE9O
Ryk7DQorIAkJCSAgICB9DQorIAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX0xPTkcpOw0K
KyAJCQkgIHdyaXRlX2V4cF9lbHRfdHlwZSAoYnVpbHRpbl90eXBlX2NoYXIpOw0KKyAJCQkgIHdy
aXRlX2V4cF9lbHRfbG9uZ2NzdCAoKExPTkdFU1QpJ1wwJyk7DQorIAkJCSAgd3JpdGVfZXhwX2Vs
dF9vcGNvZGUgKE9QX0xPTkcpOw0KKyAJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9BUlJB
WSk7DQorIAkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0ICgoTE9OR0VTVCkgMCk7DQorIAkJCSAg
d3JpdGVfZXhwX2VsdF9sb25nY3N0ICgoTE9OR0VTVCkgKCQxLmxlbmd0aCkpOw0KKyAJCQkgIHdy
aXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9BUlJBWSk7IH0NCisgCTsNCisgDQorIC8qIEMrKy4gICov
DQorIGV4cAk6CVRISVMNCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfVEhJUyk7DQor
IAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX1RISVMpOyB9DQorIAk7DQorIA0KKyAvKiBl
bmQgb2YgQysrLiAgKi8NCisgDQorIGJsb2NrCToJQkxPQ0tOQU1FDQorIAkJCXsNCisgCQkJICBp
ZiAoJDEuc3ltICE9IDApDQorIAkJCSAgICAgICQkID0gU1lNQk9MX0JMT0NLX1ZBTFVFICgkMS5z
eW0pOw0KKyAJCQkgIGVsc2UNCisgCQkJICAgIHsNCisgCQkJICAgICAgc3RydWN0IHN5bXRhYiAq
dGVtID0NCisgCQkJCSAgbG9va3VwX3N5bXRhYiAoY29weV9uYW1lICgkMS5zdG9rZW4pKTsNCisg
CQkJICAgICAgaWYgKHRlbSkNCisgCQkJCSQkID0gQkxPQ0tWRUNUT1JfQkxPQ0sgKEJMT0NLVkVD
VE9SICh0ZW0pLCBTVEFUSUNfQkxPQ0spOw0KKyAJCQkgICAgICBlbHNlDQorIAkJCQllcnJvciAo
Ik5vIGZpbGUgb3IgZnVuY3Rpb24gXCIlc1wiLiIsDQorIAkJCQkgICAgICAgY29weV9uYW1lICgk
MS5zdG9rZW4pKTsNCisgCQkJICAgIH0NCisgCQkJfQ0KKyAJOw0KKyANCisgYmxvY2sJOglibG9j
ayBDT0xPTkNPTE9OIG5hbWUNCisgCQkJeyBzdHJ1Y3Qgc3ltYm9sICp0ZW0NCisgCQkJICAgID0g
bG9va3VwX3N5bWJvbCAoY29weV9uYW1lICgkMyksICQxLA0KKyAJCQkJCSAgICAgVkFSX05BTUVT
UEFDRSwgKGludCAqKSBOVUxMLA0KKyAJCQkJCSAgICAgKHN0cnVjdCBzeW10YWIgKiopIE5VTEwp
Ow0KKyAJCQkgIGlmICghdGVtIHx8IFNZTUJPTF9DTEFTUyAodGVtKSAhPSBMT0NfQkxPQ0spDQor
IAkJCSAgICBlcnJvciAoIk5vIGZ1bmN0aW9uIFwiJXNcIiBpbiBzcGVjaWZpZWQgY29udGV4dC4i
LA0KKyAJCQkJICAgY29weV9uYW1lICgkMykpOw0KKyAJCQkgICQkID0gU1lNQk9MX0JMT0NLX1ZB
TFVFICh0ZW0pOyB9DQorIAk7DQorIA0KKyB2YXJpYWJsZToJYmxvY2sgQ09MT05DT0xPTiBuYW1l
DQorIAkJCXsgc3RydWN0IHN5bWJvbCAqc3ltOw0KKyAJCQkgIHN5bSA9IGxvb2t1cF9zeW1ib2wg
KGNvcHlfbmFtZSAoJDMpLCAkMSwNCisgCQkJCQkgICAgICAgVkFSX05BTUVTUEFDRSwgKGludCAq
KSBOVUxMLA0KKyAJCQkJCSAgICAgICAoc3RydWN0IHN5bXRhYiAqKikgTlVMTCk7DQorIAkJCSAg
aWYgKHN5bSA9PSAwKQ0KKyAJCQkgICAgZXJyb3IgKCJObyBzeW1ib2wgXCIlc1wiIGluIHNwZWNp
ZmllZCBjb250ZXh0LiIsDQorIAkJCQkgICBjb3B5X25hbWUgKCQzKSk7DQorIA0KKyAJCQkgIHdy
aXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9WQVJfVkFMVUUpOw0KKyAJCQkgIC8qIGJsb2NrX2ZvdW5k
IGlzIHNldCBieSBsb29rdXBfc3ltYm9sLiAgKi8NCisgCQkJICB3cml0ZV9leHBfZWx0X2Jsb2Nr
IChibG9ja19mb3VuZCk7DQorIAkJCSAgd3JpdGVfZXhwX2VsdF9zeW0gKHN5bSk7DQorIAkJCSAg
d3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX1ZBUl9WQUxVRSk7IH0NCisgCTsNCisgDQorIHF1YWxp
ZmllZF9uYW1lOgl0eXBlYmFzZSBDT0xPTkNPTE9OIG5hbWUNCisgCQkJew0KKyAJCQkgIHN0cnVj
dCB0eXBlICp0eXBlID0gJDE7DQorIAkJCSAgaWYgKFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9D
T0RFX1NUUlVDVA0KKyAJCQkgICAgICAmJiBUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9V
TklPTikNCisgCQkJICAgIGVycm9yICgiYCVzJyBpcyBub3QgZGVmaW5lZCBhcyBhbiBhZ2dyZWdh
dGUgdHlwZS4iLA0KKyAJCQkJICAgVFlQRV9OQU1FICh0eXBlKSk7DQorIA0KKyAJCQkgIHdyaXRl
X2V4cF9lbHRfb3Bjb2RlIChPUF9TQ09QRSk7DQorIAkJCSAgd3JpdGVfZXhwX2VsdF90eXBlICh0
eXBlKTsNCisgCQkJICB3cml0ZV9leHBfc3RyaW5nICgkMyk7DQorIAkJCSAgd3JpdGVfZXhwX2Vs
dF9vcGNvZGUgKE9QX1NDT1BFKTsNCisgCQkJfQ0KKyAJOw0KKyANCisgdmFyaWFibGU6CXF1YWxp
ZmllZF9uYW1lDQorIAl8CUNPTE9OQ09MT04gbmFtZQ0KKyAJCQl7DQorIAkJCSAgY2hhciAqbmFt
ZSA9IGNvcHlfbmFtZSAoJDIpOw0KKyAJCQkgIHN0cnVjdCBzeW1ib2wgKnN5bTsNCisgCQkJICBz
dHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2w7DQorIA0KKyAJCQkgIHN5bSA9DQorIAkJCSAg
ICBsb29rdXBfc3ltYm9sIChuYW1lLCAoY29uc3Qgc3RydWN0IGJsb2NrICopIE5VTEwsDQorIAkJ
CQkJICAgVkFSX05BTUVTUEFDRSwgKGludCAqKSBOVUxMLA0KKyAJCQkJCSAgIChzdHJ1Y3Qgc3lt
dGFiICoqKSBOVUxMKTsNCisgCQkJICBpZiAoc3ltKQ0KKyAJCQkgICAgew0KKyAJCQkgICAgICB3
cml0ZV9leHBfZWx0X29wY29kZSAoT1BfVkFSX1ZBTFVFKTsNCisgCQkJICAgICAgd3JpdGVfZXhw
X2VsdF9ibG9jayAoTlVMTCk7DQorIAkJCSAgICAgIHdyaXRlX2V4cF9lbHRfc3ltIChzeW0pOw0K
KyAJCQkgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfVkFSX1ZBTFVFKTsNCisgCQkJICAg
ICAgYnJlYWs7DQorIAkJCSAgICB9DQorIA0KKyAJCQkgIG1zeW1ib2wgPSBsb29rdXBfbWluaW1h
bF9zeW1ib2wgKG5hbWUsIE5VTEwsIE5VTEwpOw0KKyAJCQkgIGlmIChtc3ltYm9sICE9IE5VTEwp
DQorIAkJCSAgICB7DQorIAkJCSAgICAgIHdyaXRlX2V4cF9tc3ltYm9sIChtc3ltYm9sLA0KKyAJ
CQkJCQkgbG9va3VwX2Z1bmN0aW9uX3R5cGUgKGJ1aWx0aW5fdHlwZV9pbnQpLA0KKyAJCQkJCQkg
YnVpbHRpbl90eXBlX2ludCk7DQorIAkJCSAgICB9DQorIAkJCSAgZWxzZQ0KKyAJCQkgICAgaWYg
KCFoYXZlX2Z1bGxfc3ltYm9scyAoKSAmJiAhaGF2ZV9wYXJ0aWFsX3N5bWJvbHMgKCkpDQorIAkJ
CSAgICAgIGVycm9yICgiTm8gc3ltYm9sIHRhYmxlIGlzIGxvYWRlZC4gIFVzZSB0aGUgXCJmaWxl
XCIgY29tbWFuZC4iKTsNCisgCQkJICAgIGVsc2UNCisgCQkJICAgICAgZXJyb3IgKCJObyBzeW1i
b2wgXCIlc1wiIGluIGN1cnJlbnQgY29udGV4dC4iLCBuYW1lKTsNCisgCQkJfQ0KKyAJOw0KKyAN
CisgdmFyaWFibGU6CW5hbWVfbm90X3R5cGVuYW1lDQorIAkJCXsgc3RydWN0IHN5bWJvbCAqc3lt
ID0gJDEuc3ltOw0KKyANCisgCQkJICBpZiAoc3ltKQ0KKyAJCQkgICAgew0KKyAJCQkgICAgICBp
ZiAoc3ltYm9sX3JlYWRfbmVlZHNfZnJhbWUgKHN5bSkpDQorIAkJCQl7DQorIAkJCQkgIGlmIChp
bm5lcm1vc3RfYmxvY2sgPT0gMCB8fA0KKyAJCQkJICAgICAgY29udGFpbmVkX2luIChibG9ja19m
b3VuZCwNCisgCQkJCQkJICAgIGlubmVybW9zdF9ibG9jaykpDQorIAkJCQkgICAgaW5uZXJtb3N0
X2Jsb2NrID0gYmxvY2tfZm91bmQ7DQorIAkJCQl9DQorIA0KKyAJCQkgICAgICB3cml0ZV9leHBf
ZWx0X29wY29kZSAoT1BfVkFSX1ZBTFVFKTsNCisgCQkJICAgICAgLyogV2Ugd2FudCB0byB1c2Ug
dGhlIHNlbGVjdGVkIGZyYW1lLCBub3QNCisgCQkJCSBhbm90aGVyIG1vcmUgaW5uZXIgZnJhbWUg
d2hpY2ggaGFwcGVucyB0bw0KKyAJCQkJIGJlIGluIHRoZSBzYW1lIGJsb2NrLiAgKi8NCisgCQkJ
ICAgICAgd3JpdGVfZXhwX2VsdF9ibG9jayAoTlVMTCk7DQorIAkJCSAgICAgIHdyaXRlX2V4cF9l
bHRfc3ltIChzeW0pOw0KKyAJCQkgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfVkFSX1ZB
TFVFKTsNCisgCQkJICAgIH0NCisgCQkJICBlbHNlIGlmICgkMS5pc19hX2ZpZWxkX29mX3RoaXMp
DQorIAkJCSAgICB7DQorIAkJCSAgICAgIC8qIEMrKzogaXQgaGFuZ3Mgb2ZmIG9mIGB0aGlzJy4g
IE11c3QNCisgCQkJICAgICAgICAgbm90IGluYWR2ZXJ0ZW50bHkgY29udmVydCBmcm9tIGEgbWV0
aG9kIGNhbGwNCisgCQkJCSB0byBkYXRhIHJlZi4gICovDQorIAkJCSAgICAgIGlmIChpbm5lcm1v
c3RfYmxvY2sgPT0gMCB8fA0KKyAJCQkJICBjb250YWluZWRfaW4gKGJsb2NrX2ZvdW5kLCBpbm5l
cm1vc3RfYmxvY2spKQ0KKyAJCQkJaW5uZXJtb3N0X2Jsb2NrID0gYmxvY2tfZm91bmQ7DQorIAkJ
CSAgICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9USElTKTsNCisgCQkJICAgICAgd3JpdGVf
ZXhwX2VsdF9vcGNvZGUgKE9QX1RISVMpOw0KKyAJCQkgICAgICB3cml0ZV9leHBfZWx0X29wY29k
ZSAoU1RSVUNUT1BfUFRSKTsNCisgCQkJICAgICAgd3JpdGVfZXhwX3N0cmluZyAoJDEuc3Rva2Vu
KTsNCisgCQkJICAgICAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFNUUlVDVE9QX1BUUik7DQorIAkJ
CSAgICB9DQorIAkJCSAgZWxzZQ0KKyAJCQkgICAgew0KKyAJCQkgICAgICBzdHJ1Y3QgbWluaW1h
bF9zeW1ib2wgKm1zeW1ib2w7DQorIAkJCSAgICAgIHJlZ2lzdGVyIGNoYXIgKmFyZyA9IGNvcHlf
bmFtZSAoJDEuc3Rva2VuKTsNCisgDQorIAkJCSAgICAgIG1zeW1ib2wgPQ0KKyAJCQkJbG9va3Vw
X21pbmltYWxfc3ltYm9sIChhcmcsIE5VTEwsIE5VTEwpOw0KKyAJCQkgICAgICBpZiAobXN5bWJv
bCAhPSBOVUxMKQ0KKyAJCQkJew0KKyAJCQkJICB3cml0ZV9leHBfbXN5bWJvbCAobXN5bWJvbCwN
CisgCQkJCQkJICAgICBsb29rdXBfZnVuY3Rpb25fdHlwZSAoYnVpbHRpbl90eXBlX2ludCksDQor
IAkJCQkJCSAgICAgYnVpbHRpbl90eXBlX2ludCk7DQorIAkJCQl9DQorIAkJCSAgICAgIGVsc2Ug
aWYgKCFoYXZlX2Z1bGxfc3ltYm9scyAoKSAmJiAhaGF2ZV9wYXJ0aWFsX3N5bWJvbHMgKCkpDQor
IAkJCQllcnJvciAoIk5vIHN5bWJvbCB0YWJsZSBpcyBsb2FkZWQuICBVc2UgdGhlIFwiZmlsZVwi
IGNvbW1hbmQuIik7DQorIAkJCSAgICAgIGVsc2UNCisgCQkJCWVycm9yICgiTm8gc3ltYm9sIFwi
JXNcIiBpbiBjdXJyZW50IGNvbnRleHQuIiwNCisgCQkJCSAgICAgICBjb3B5X25hbWUgKCQxLnN0
b2tlbikpOw0KKyAJCQkgICAgfQ0KKyAJCQl9DQorIAk7DQorIA0KKyANCisgcHR5cGUJOgl0eXBl
YmFzZQ0KKyAJOw0KKyANCisgLyogV2UgdXNlZCB0byB0cnkgdG8gcmVjb2duaXplIG1vcmUgcG9p
bnRlciB0byBtZW1iZXIgdHlwZXMgaGVyZSwgYnV0DQorICAgIHRoYXQgZGlkbid0IHdvcmsgKHNo
aWZ0L3JlZHVjZSBjb25mbGljdHMgbWVhbnQgdGhhdCB0aGVzZSBydWxlcyBuZXZlcg0KKyAgICBn
b3QgZXhlY3V0ZWQpLiAgVGhlIHByb2JsZW0gaXMgdGhhdA0KKyAgICAgIGludCAoZm9vOjpiYXI6
OmJhejo6Yml6emxlKQ0KKyAgICBpcyBhIGZ1bmN0aW9uIHR5cGUgYnV0DQorICAgICAgaW50IChm
b286OmJhcjo6YmF6OjpiaXp6bGU6OiopDQorICAgIGlzIGEgcG9pbnRlciB0byBtZW1iZXIgdHlw
ZS4gIFN0cm91c3RydXAgbG9zZXMgYWdhaW4hICAqLw0KKyANCisgdHlwZQk6CXB0eXBlDQorIAl8
CXR5cGViYXNlIENPTE9OQ09MT04gJyonDQorIAkJCXsgJCQgPSBsb29rdXBfbWVtYmVyX3R5cGUg
KGJ1aWx0aW5fdHlwZV9pbnQsICQxKTsgfQ0KKyAJOw0KKyANCisgdHlwZWJhc2UgIC8qIEltcGxl
bWVudHMgKGFwcHJveGltYXRlbHkpOiAodHlwZS1xdWFsaWZpZXIpKiB0eXBlLXNwZWNpZmllciAq
Lw0KKyAJOglUWVBFTkFNRQ0KKyAJCQl7ICQkID0gJDEudHlwZTsgfQ0KKyAJfAlTVFJVQ1QgbmFt
ZQ0KKyAJCQl7ICQkID0gbG9va3VwX3N0cnVjdCAoY29weV9uYW1lICgkMiksDQorIAkJCQkJICAg
ICAgZXhwcmVzc2lvbl9jb250ZXh0X2Jsb2NrKTsgfQ0KKyAJfAlDTEFTUyBuYW1lDQorIAkJCXsg
JCQgPSBsb29rdXBfc3RydWN0IChjb3B5X25hbWUgKCQyKSwNCisgCQkJCQkgICAgICBleHByZXNz
aW9uX2NvbnRleHRfYmxvY2spOyB9DQorIAkvKiAiY29uc3QiIGFuZCAidm9sYXRpbGUiIGFyZSBj
dXJlbnRseSBpZ25vcmVkLiAgQSB0eXBlIHF1YWxpZmllcg0KKyAJICAgYWZ0ZXIgdGhlIHR5cGUg
aXMgaGFuZGxlZCBpbiB0aGUgcHR5cGUgcnVsZS4gIEkgdGhpbmsgdGhlc2UgY291bGQNCisgCSAg
IGJlIHRvby4gICovDQorIAk7DQorIA0KKyBuYW1lCToJTkFNRSB7ICQkID0gJDEuc3Rva2VuOyB9
DQorIAl8CUJMT0NLTkFNRSB7ICQkID0gJDEuc3Rva2VuOyB9DQorIAl8CVRZUEVOQU1FIHsgJCQg
PSAkMS5zdG9rZW47IH0NCisgCXwJTkFNRV9PUl9JTlQgIHsgJCQgPSAkMS5zdG9rZW47IH0NCisg
CTsNCisgDQorIG5hbWVfbm90X3R5cGVuYW1lIDoJTkFNRQ0KKyAJfAlCTE9DS05BTUUNCisgLyog
VGhlc2Ugd291bGQgYmUgdXNlZnVsIGlmIG5hbWVfbm90X3R5cGVuYW1lIHdhcyB1c2VmdWwsIGJ1
dCBpdCBpcyBqdXN0DQorICAgIGEgZmFrZSBmb3IgInZhcmlhYmxlIiwgc28gdGhlc2UgY2F1c2Ug
cmVkdWNlL3JlZHVjZSBjb25mbGljdHMgYmVjYXVzZQ0KKyAgICB0aGUgcGFyc2VyIGNhbid0IHRl
bGwgd2hldGhlciBOQU1FX09SX0lOVCBpcyBhIG5hbWVfbm90X3R5cGVuYW1lICg9dmFyaWFibGUs
DQorICAgID1leHApIG9yIGp1c3QgYW4gZXhwLiAgSWYgbmFtZV9ub3RfdHlwZW5hbWUgd2FzIGV2
ZXIgdXNlZCBpbiBhbiBsdmFsdWUNCisgICAgY29udGV4dCB3aGVyZSBvbmx5IGEgbmFtZSBjb3Vs
ZCBvY2N1ciwgdGhpcyBtaWdodCBiZSB1c2VmdWwuDQorICAgCXwJTkFNRV9PUl9JTlQNCisgICov
DQorIAk7DQorIA0KKyAlJQ0KKyANCisgLyogVGFrZSBjYXJlIG9mIHBhcnNpbmcgYSBudW1iZXIg
KGFueXRoaW5nIHRoYXQgc3RhcnRzIHdpdGggYSBkaWdpdCkuDQorICAgIFNldCB5eWx2YWwgYW5k
IHJldHVybiB0aGUgdG9rZW4gdHlwZTsgdXBkYXRlIGxleHB0ci4NCisgICAgTEVOIGlzIHRoZSBu
dW1iZXIgb2YgY2hhcmFjdGVycyBpbiBpdC4gICovDQorIA0KKyAvKioqIE5lZWRzIHNvbWUgZXJy
b3IgY2hlY2tpbmcgZm9yIHRoZSBmbG9hdCBjYXNlICoqKi8NCisgDQorIHN0YXRpYyBpbnQNCisg
cGFyc2VfbnVtYmVyIChwLCBsZW4sIHBhcnNlZF9mbG9hdCwgcHV0aXRoZXJlKQ0KKyAgICAgIHJl
Z2lzdGVyIGNoYXIgKnA7DQorICAgICAgcmVnaXN0ZXIgaW50IGxlbjsNCisgICAgICBpbnQgcGFy
c2VkX2Zsb2F0Ow0KKyAgICAgIFlZU1RZUEUgKnB1dGl0aGVyZTsNCisgew0KKyAgIC8qIEZJWE1F
OiBTaG91bGRuJ3QgdGhlc2UgYmUgdW5zaWduZWQ/ICBXZSBkb24ndCBkZWFsIHdpdGggbmVnYXRp
dmUgdmFsdWVzDQorICAgICAgaGVyZSwgYW5kIHdlIGRvIGtpbmQgb2Ygc2lsbHkgdGhpbmdzIGxp
a2UgY2FzdCB0byB1bnNpZ25lZC4gICovDQorICAgcmVnaXN0ZXIgTE9OR0VTVCBuID0gMDsNCisg
ICByZWdpc3RlciBMT05HRVNUIHByZXZuID0gMDsNCisgICBVTE9OR0VTVCB1bjsNCisgDQorICAg
cmVnaXN0ZXIgaW50IGkgPSAwOw0KKyAgIHJlZ2lzdGVyIGludCBjOw0KKyAgIHJlZ2lzdGVyIGlu
dCBiYXNlID0gaW5wdXRfcmFkaXg7DQorICAgaW50IHVuc2lnbmVkX3AgPSAwOw0KKyANCisgICAv
KiBOdW1iZXIgb2YgIkwiIHN1ZmZpeGVzIGVuY291bnRlcmVkLiAgKi8NCisgICBpbnQgbG9uZ19w
ID0gMDsNCisgDQorICAgLyogV2UgaGF2ZSBmb3VuZCBhICJMIiBvciAiVSIgc3VmZml4LiAgKi8N
CisgICBpbnQgZm91bmRfc3VmZml4ID0gMDsNCisgDQorICAgVUxPTkdFU1QgaGlnaF9iaXQ7DQor
ICAgc3RydWN0IHR5cGUgKnNpZ25lZF90eXBlOw0KKyAgIHN0cnVjdCB0eXBlICp1bnNpZ25lZF90
eXBlOw0KKyANCisgICBpZiAocGFyc2VkX2Zsb2F0KQ0KKyAgICAgew0KKyAgICAgICAvKiBJdCdz
IGEgZmxvYXQgc2luY2UgaXQgY29udGFpbnMgYSBwb2ludCBvciBhbiBleHBvbmVudC4gICovDQor
ICAgICAgIGNoYXIgYzsNCisgICAgICAgaW50IG51bSA9IDA7CS8qIG51bWJlciBvZiB0b2tlbnMg
c2Nhbm5lZCBieSBzY2FuZiAqLw0KKyAgICAgICBjaGFyIHNhdmVkX2NoYXIgPSBwW2xlbl07DQor
IA0KKyAgICAgICBwW2xlbl0gPSAwOwkvKiBudWxsLXRlcm1pbmF0ZSB0aGUgdG9rZW4gKi8NCisg
ICAgICAgaWYgKHNpemVvZiAocHV0aXRoZXJlLT50eXBlZF92YWxfZmxvYXQuZHZhbCkgPD0gc2l6
ZW9mIChmbG9hdCkpDQorIAludW0gPSBzc2NhbmYgKHAsICIlZyVjIiwgKGZsb2F0ICopICZwdXRp
dGhlcmUtPnR5cGVkX3ZhbF9mbG9hdC5kdmFsLCZjKTsNCisgICAgICAgZWxzZSBpZiAoc2l6ZW9m
IChwdXRpdGhlcmUtPnR5cGVkX3ZhbF9mbG9hdC5kdmFsKSA8PSBzaXplb2YgKGRvdWJsZSkpDQor
IAludW0gPSBzc2NhbmYgKHAsICIlbGclYyIsIChkb3VibGUgKikgJnB1dGl0aGVyZS0+dHlwZWRf
dmFsX2Zsb2F0LmR2YWwsJmMpOw0KKyAgICAgICBlbHNlDQorIAl7DQorICNpZmRlZiBTQ0FORl9I
QVNfTE9OR19ET1VCTEUNCisgCSAgbnVtID0gc3NjYW5mIChwLCAiJUxnJWMiLCAmcHV0aXRoZXJl
LT50eXBlZF92YWxfZmxvYXQuZHZhbCwmYyk7DQorICNlbHNlDQorIAkgIC8qIFNjYW4gaXQgaW50
byBhIGRvdWJsZSwgdGhlbiBhc3NpZ24gaXQgdG8gdGhlIGxvbmcgZG91YmxlLg0KKyAJICAgICBU
aGlzIGF0IGxlYXN0IHdpbnMgd2l0aCB2YWx1ZXMgcmVwcmVzZW50YWJsZSBpbiB0aGUgcmFuZ2UN
CisgCSAgICAgb2YgZG91Ymxlcy4gKi8NCisgCSAgZG91YmxlIHRlbXA7DQorIAkgIG51bSA9IHNz
Y2FuZiAocCwgIiVsZyVjIiwgJnRlbXAsJmMpOw0KKyAJICBwdXRpdGhlcmUtPnR5cGVkX3ZhbF9m
bG9hdC5kdmFsID0gdGVtcDsNCisgI2VuZGlmDQorIAl9DQorICAgICAgIHBbbGVuXSA9IHNhdmVk
X2NoYXI7CS8qIHJlc3RvcmUgdGhlIGlucHV0IHN0cmVhbSAqLw0KKyAgICAgICBpZiAobnVtICE9
IDEpIAkJLyogY2hlY2sgc2NhbmYgZm91bmQgT05MWSBhIGZsb2F0IC4uLiAqLw0KKyAJcmV0dXJu
IEVSUk9SOw0KKyAgICAgICAvKiBTZWUgaWYgaXQgaGFzIGBmJyBvciBgbCcgc3VmZml4IChmbG9h
dCBvciBsb25nIGRvdWJsZSkuICAqLw0KKyANCisgICAgICAgYyA9IHRvbG93ZXIgKHBbbGVuIC0g
MV0pOw0KKyANCisgICAgICAgaWYgKGMgPT0gJ2YnKQ0KKyAJcHV0aXRoZXJlLT50eXBlZF92YWxf
ZmxvYXQudHlwZSA9IGJ1aWx0aW5fdHlwZV9mbG9hdDsNCisgICAgICAgZWxzZSBpZiAoYyA9PSAn
bCcpDQorIAlwdXRpdGhlcmUtPnR5cGVkX3ZhbF9mbG9hdC50eXBlID0gYnVpbHRpbl90eXBlX2xv
bmdfZG91YmxlOw0KKyAgICAgICBlbHNlIGlmIChpc2RpZ2l0IChjKSB8fCBjID09ICcuJykNCisg
CXB1dGl0aGVyZS0+dHlwZWRfdmFsX2Zsb2F0LnR5cGUgPSBidWlsdGluX3R5cGVfZG91YmxlOw0K
KyAgICAgICBlbHNlDQorIAlyZXR1cm4gRVJST1I7DQorIA0KKyAgICAgICByZXR1cm4gRkxPQVQ7
DQorICAgICB9DQorIA0KKyAgIC8qIEhhbmRsZSBiYXNlLXN3aXRjaGluZyBwcmVmaXhlcyAweCwg
MHQsIDBkLCAwICovDQorICAgaWYgKHBbMF0gPT0gJzAnKQ0KKyAgICAgc3dpdGNoIChwWzFdKQ0K
KyAgICAgICB7DQorICAgICAgIGNhc2UgJ3gnOg0KKyAgICAgICBjYXNlICdYJzoNCisgCWlmIChs
ZW4gPj0gMykNCisgCSAgew0KKyAJICAgIHAgKz0gMjsNCisgCSAgICBiYXNlID0gMTY7DQorIAkg
ICAgbGVuIC09IDI7DQorIAkgIH0NCisgCWJyZWFrOw0KKyANCisgICAgICAgY2FzZSAndCc6DQor
ICAgICAgIGNhc2UgJ1QnOg0KKyAgICAgICBjYXNlICdkJzoNCisgICAgICAgY2FzZSAnRCc6DQor
IAlpZiAobGVuID49IDMpDQorIAkgIHsNCisgCSAgICBwICs9IDI7DQorIAkgICAgYmFzZSA9IDEw
Ow0KKyAJICAgIGxlbiAtPSAyOw0KKyAJICB9DQorIAlicmVhazsNCisgDQorICAgICAgIGRlZmF1
bHQ6DQorIAliYXNlID0gODsNCisgCWJyZWFrOw0KKyAgICAgICB9DQorIA0KKyAgIHdoaWxlIChs
ZW4tLSA+IDApDQorICAgICB7DQorICAgICAgIGMgPSAqcCsrOw0KKyAgICAgICBpZiAoYyA+PSAn
QScgJiYgYyA8PSAnWicpDQorIAljICs9ICdhJyAtICdBJzsNCisgICAgICAgaWYgKGMgIT0gJ2wn
ICYmIGMgIT0gJ3UnKQ0KKyAJbiAqPSBiYXNlOw0KKyAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8
PSAnOScpDQorIAl7DQorIAkgIGlmIChmb3VuZF9zdWZmaXgpDQorIAkgICAgcmV0dXJuIEVSUk9S
Ow0KKyAJICBuICs9IGkgPSBjIC0gJzAnOw0KKyAJfQ0KKyAgICAgICBlbHNlDQorIAl7DQorIAkg
IGlmIChiYXNlID4gMTAgJiYgYyA+PSAnYScgJiYgYyA8PSAnZicpDQorIAkgICAgew0KKyAJICAg
ICAgaWYgKGZvdW5kX3N1ZmZpeCkNCisgCQlyZXR1cm4gRVJST1I7DQorIAkgICAgICBuICs9IGkg
PSBjIC0gJ2EnICsgMTA7DQorIAkgICAgfQ0KKyAJICBlbHNlIGlmIChjID09ICdsJykNCisgCSAg
ICB7DQorIAkgICAgICArK2xvbmdfcDsNCisgCSAgICAgIGZvdW5kX3N1ZmZpeCA9IDE7DQorIAkg
ICAgfQ0KKyAJICBlbHNlIGlmIChjID09ICd1JykNCisgCSAgICB7DQorIAkgICAgICB1bnNpZ25l
ZF9wID0gMTsNCisgCSAgICAgIGZvdW5kX3N1ZmZpeCA9IDE7DQorIAkgICAgfQ0KKyAJICBlbHNl
DQorIAkgICAgcmV0dXJuIEVSUk9SOwkvKiBDaGFyIG5vdCBhIGRpZ2l0ICovDQorIAl9DQorICAg
ICAgIGlmIChpID49IGJhc2UpDQorIAlyZXR1cm4gRVJST1I7CQkvKiBJbnZhbGlkIGRpZ2l0IGlu
IHRoaXMgYmFzZSAqLw0KKyANCisgICAgICAgLyogUG9ydGFibHkgdGVzdCBmb3Igb3ZlcmZsb3cg
KG9ubHkgd29ya3MgZm9yIG5vbnplcm8gdmFsdWVzLCBzbyBtYWtlDQorIAkgYSBzZWNvbmQgY2hl
Y2sgZm9yIHplcm8pLiAgRklYTUU6IENhbid0IHdlIGp1c3QgbWFrZSBuIGFuZCBwcmV2bg0KKyAJ
IHVuc2lnbmVkIGFuZCBhdm9pZCB0aGlzPyAgKi8NCisgICAgICAgaWYgKGMgIT0gJ2wnICYmIGMg
IT0gJ3UnICYmIChwcmV2biA+PSBuKSAmJiBuICE9IDApDQorIAl1bnNpZ25lZF9wID0gMTsJCS8q
IFRyeSBzb21ldGhpbmcgdW5zaWduZWQgKi8NCisgDQorICAgICAgIC8qIFBvcnRhYmx5IHRlc3Qg
Zm9yIHVuc2lnbmVkIG92ZXJmbG93Lg0KKyAJIEZJWE1FOiBUaGlzIGNoZWNrIGlzIHdyb25nOyBm
b3IgZXhhbXBsZSBpdCBkb2Vzbid0IGZpbmQgb3ZlcmZsb3cNCisgCSBvbiAweDEyMzQ1Njc4OSB3
aGVuIExPTkdFU1QgaXMgMzIgYml0cy4gICovDQorICAgICAgIGlmIChjICE9ICdsJyAmJiBjICE9
ICd1JyAmJiBuICE9IDApDQorIAl7CQ0KKyAJICBpZiAoKHVuc2lnbmVkX3AgJiYgKFVMT05HRVNU
KSBwcmV2biA+PSAoVUxPTkdFU1QpIG4pKQ0KKyAJICAgIGVycm9yICgiTnVtZXJpYyBjb25zdGFu
dCB0b28gbGFyZ2UuIik7DQorIAl9DQorICAgICAgIHByZXZuID0gbjsNCisgICAgIH0NCisgDQor
ICAgLyogQW4gaW50ZWdlciBjb25zdGFudCBpcyBhbiBpbnQsIGEgbG9uZywgb3IgYSBsb25nIGxv
bmcuICBBbiBMDQorICAgICAgc3VmZml4IGZvcmNlcyBpdCB0byBiZSBsb25nOyBhbiBMTCBzdWZm
aXggZm9yY2VzIGl0IHRvIGJlIGxvbmcNCisgICAgICBsb25nLiAgSWYgbm90IGZvcmNlZCB0byBh
IGxhcmdlciBzaXplLCBpdCBnZXRzIHRoZSBmaXJzdCB0eXBlIG9mDQorICAgICAgdGhlIGFib3Zl
IHRoYXQgaXQgZml0cyBpbi4gIFRvIGZpZ3VyZSBvdXQgd2hldGhlciBpdCBmaXRzLCB3ZQ0KKyAg
ICAgIHNoaWZ0IGl0IHJpZ2h0IGFuZCBzZWUgd2hldGhlciBhbnl0aGluZyByZW1haW5zLiAgTm90
ZSB0aGF0IHdlDQorICAgICAgY2FuJ3Qgc2hpZnQgc2l6ZW9mIChMT05HRVNUKSAqIEhPU1RfQ0hB
Ul9CSVQgYml0cyBvciBtb3JlIGluIG9uZQ0KKyAgICAgIG9wZXJhdGlvbiwgYmVjYXVzZSBtYW55
IGNvbXBpbGVycyB3aWxsIHdhcm4gYWJvdXQgc3VjaCBhIHNoaWZ0DQorICAgICAgKHdoaWNoIGFs
d2F5cyBwcm9kdWNlcyBhIHplcm8gcmVzdWx0KS4gIFNvbWV0aW1lcyBUQVJHRVRfSU5UX0JJVA0K
KyAgICAgIG9yIFRBUkdFVF9MT05HX0JJVCB3aWxsIGJlIHRoYXQgYmlnLCBzb21ldGltZXMgbm90
LiAgVG8gZGVhbCB3aXRoDQorICAgICAgdGhlIGNhc2Ugd2hlcmUgaXQgaXMgd2UganVzdCBhbHdh
eXMgc2hpZnQgdGhlIHZhbHVlIG1vcmUgdGhhbg0KKyAgICAgIG9uY2UsIHdpdGggZmV3ZXIgYml0
cyBlYWNoIHRpbWUuICAqLw0KKyANCisgICB1biA9IChVTE9OR0VTVCluID4+IDI7DQorICAgaWYg
KGxvbmdfcCA9PSAwDQorICAgICAgICYmICh1biA+PiAoVEFSR0VUX0lOVF9CSVQgLSAyKSkgPT0g
MCkNCisgICAgIHsNCisgICAgICAgaGlnaF9iaXQgPSAoKFVMT05HRVNUKTEpIDw8IChUQVJHRVRf
SU5UX0JJVC0xKTsNCisgDQorICAgICAgIC8qIEEgbGFyZ2UgZGVjaW1hbCAobm90IGhleCBvciBv
Y3RhbCkgY29uc3RhbnQgKGJldHdlZW4gSU5UX01BWA0KKyAJIGFuZCBVSU5UX01BWCkgaXMgYSBs
b25nIG9yIHVuc2lnbmVkIGxvbmcsIGFjY29yZGluZyB0byBBTlNJLA0KKyAJIG5ldmVyIGFuIHVu
c2lnbmVkIGludCwgYnV0IHRoaXMgY29kZSB0cmVhdHMgaXQgYXMgdW5zaWduZWQNCisgCSBpbnQu
ICBUaGlzIHByb2JhYmx5IHNob3VsZCBiZSBmaXhlZC4gIEdDQyBnaXZlcyBhIHdhcm5pbmcgb24N
CisgCSBzdWNoIGNvbnN0YW50cy4gICovDQorIA0KKyAgICAgICB1bnNpZ25lZF90eXBlID0gYnVp
bHRpbl90eXBlX3Vuc2lnbmVkX2ludDsNCisgICAgICAgc2lnbmVkX3R5cGUgPSBidWlsdGluX3R5
cGVfaW50Ow0KKyAgICAgfQ0KKyAgIGVsc2UgaWYgKGxvbmdfcCA8PSAxDQorIAkgICAmJiAodW4g
Pj4gKFRBUkdFVF9MT05HX0JJVCAtIDIpKSA9PSAwKQ0KKyAgICAgew0KKyAgICAgICBoaWdoX2Jp
dCA9ICgoVUxPTkdFU1QpMSkgPDwgKFRBUkdFVF9MT05HX0JJVC0xKTsNCisgICAgICAgdW5zaWdu
ZWRfdHlwZSA9IGJ1aWx0aW5fdHlwZV91bnNpZ25lZF9sb25nOw0KKyAgICAgICBzaWduZWRfdHlw
ZSA9IGJ1aWx0aW5fdHlwZV9sb25nOw0KKyAgICAgfQ0KKyAgIGVsc2UNCisgICAgIHsNCisgICAg
ICAgaGlnaF9iaXQgPSAoKChVTE9OR0VTVCkxKQ0KKyAJCSAgPDwgKFRBUkdFVF9MT05HX0xPTkdf
QklUIC0gMzIgLSAxKQ0KKyAJCSAgPDwgMTYNCisgCQkgIDw8IDE2KTsNCisgICAgICAgaWYgKGhp
Z2hfYml0ID09IDApDQorIAkvKiBBIGxvbmcgbG9uZyBkb2VzIG5vdCBmaXQgaW4gYSBMT05HRVNU
LiAgKi8NCisgCWhpZ2hfYml0ID0NCisgCSAgKFVMT05HRVNUKTEgPDwgKHNpemVvZiAoTE9OR0VT
VCkgKiBIT1NUX0NIQVJfQklUIC0gMSk7DQorICAgICAgIHVuc2lnbmVkX3R5cGUgPSBidWlsdGlu
X3R5cGVfdW5zaWduZWRfbG9uZ19sb25nOw0KKyAgICAgICBzaWduZWRfdHlwZSA9IGJ1aWx0aW5f
dHlwZV9sb25nX2xvbmc7DQorICAgICB9DQorIA0KKyAgICBwdXRpdGhlcmUtPnR5cGVkX3ZhbF9p
bnQudmFsID0gbjsNCisgDQorICAgIC8qIElmIHRoZSBoaWdoIGJpdCBvZiB0aGUgd29ya2VkIG91
dCB0eXBlIGlzIHNldCB0aGVuIHRoaXMgbnVtYmVyDQorICAgICAgIGhhcyB0byBiZSB1bnNpZ25l
ZC4gKi8NCisgDQorICAgIGlmICh1bnNpZ25lZF9wIHx8IChuICYgaGlnaF9iaXQpKQ0KKyAgICAg
IHsNCisgICAgICAgIHB1dGl0aGVyZS0+dHlwZWRfdmFsX2ludC50eXBlID0gdW5zaWduZWRfdHlw
ZTsNCisgICAgICB9DQorICAgIGVsc2UNCisgICAgICB7DQorICAgICAgICBwdXRpdGhlcmUtPnR5
cGVkX3ZhbF9pbnQudHlwZSA9IHNpZ25lZF90eXBlOw0KKyAgICAgIH0NCisgDQorICAgIHJldHVy
biBJTlQ7DQorIH0NCisgDQorIHN0cnVjdCB0b2tlbg0KKyB7DQorICAgY2hhciAqb3BlcmF0b3I7
DQorICAgaW50IHRva2VuOw0KKyAgIGVudW0gZXhwX29wY29kZSBvcGNvZGU7DQorIH07DQorIA0K
KyBzdGF0aWMgY29uc3Qgc3RydWN0IHRva2VuIHRva2VudGFiM1tdID0NCisgICB7DQorICAgICB7
InNociIsIFJTSCwgQklOT1BfRU5EfSwNCisgICAgIHsic2hsIiwgTFNILCBCSU5PUF9FTkR9LA0K
KyAgICAgeyJhbmQiLCBBTkRBTkQsIEJJTk9QX0VORH0sDQorICAgICB7ImRpdiIsIERJViwgQklO
T1BfRU5EfSwNCisgICAgIHsibm90IiwgTk9ULCBCSU5PUF9FTkR9LA0KKyAgICAgeyJtb2QiLCBN
T0QsIEJJTk9QX0VORH0sDQorICAgICB7ImluYyIsIElOQ1JFTUVOVCwgQklOT1BfRU5EfSwNCisg
ICAgIHsiZGVjIiwgREVDUkVNRU5ULCBCSU5PUF9FTkR9LA0KKyAgICAgeyJ4b3IiLCBYT1IsIEJJ
Tk9QX0VORH0NCisgICB9Ow0KKyANCisgc3RhdGljIGNvbnN0IHN0cnVjdCB0b2tlbiB0b2tlbnRh
YjJbXSA9DQorICAgew0KKyAgICAgeyJvciIsIE9SLCBCSU5PUF9FTkR9LA0KKyAgICAgeyI8PiIs
IE5PVEVRVUFMLCBCSU5PUF9FTkR9LA0KKyAgICAgeyI8PSIsIExFUSwgQklOT1BfRU5EfSwNCisg
ICAgIHsiPj0iLCBHRVEsIEJJTk9QX0VORH0sDQorICAgICB7Ijo9IiwgQVNTSUdOLCBCSU5PUF9F
TkR9DQorICAgfTsNCisgDQorIC8qIEFsbG9jYXRlIHVwcGVyY2FzZWQgdmFyICovDQorIC8qIG1h
a2UgYW4gdXBwZXJjYXNlZCBjb3B5IG9mIHRva3N0YXJ0ICovDQorIHN0YXRpYyBjaGFyICogdXB0
b2sgKHRva3N0YXJ0LCBuYW1lbGVuKQ0KKyAgIGNoYXIgKnRva3N0YXJ0Ow0KKyAgIGludCBuYW1l
bGVuOw0KKyB7DQorICAgaW50IGk7DQorICAgY2hhciAqdXB0b2tzdGFydCA9IChjaGFyICopbWFs
bG9jKG5hbWVsZW4rMSk7DQorICAgZm9yIChpID0gMDtpIDw9IG5hbWVsZW47aSsrKQ0KKyAgICAg
ew0KKyAgICAgICBpZiAoKHRva3N0YXJ0W2ldPj0nYScgJiYgdG9rc3RhcnRbaV08PSd6JykpDQor
ICAgICAgICAgdXB0b2tzdGFydFtpXSA9IHRva3N0YXJ0W2ldLSgnYSctJ0EnKTsNCisgICAgICAg
ZWxzZQ0KKyAgICAgICAgIHVwdG9rc3RhcnRbaV0gPSB0b2tzdGFydFtpXTsNCisgICAgIH0NCisg
ICB1cHRva3N0YXJ0W25hbWVsZW5dPSdcMCc7DQorICAgcmV0dXJuIHVwdG9rc3RhcnQ7DQorIH0N
CisgLyogUmVhZCBvbmUgdG9rZW4sIGdldHRpbmcgY2hhcmFjdGVycyB0aHJvdWdoIGxleHB0ci4g
ICovDQorIA0KKyANCisgc3RhdGljIGludA0KKyB5eWxleCAoKQ0KKyB7DQorICAgaW50IGM7DQor
ICAgaW50IG5hbWVsZW47DQorICAgdW5zaWduZWQgaW50IGk7DQorICAgY2hhciAqdG9rc3RhcnQ7
DQorICAgY2hhciAqdXB0b2tzdGFydDsNCisgICBjaGFyICp0b2twdHI7DQorICAgY2hhciAqcDsN
CisgICBpbnQgdGVtcGJ1ZmluZGV4Ow0KKyAgIHN0YXRpYyBjaGFyICp0ZW1wYnVmOw0KKyAgIHN0
YXRpYyBpbnQgdGVtcGJ1ZnNpemU7DQorIA0KKyAgcmV0cnk6DQorIA0KKyAgIHRva3N0YXJ0ID0g
bGV4cHRyOw0KKyAgIC8qIFNlZSBpZiBpdCBpcyBhIHNwZWNpYWwgdG9rZW4gb2YgbGVuZ3RoIDMu
ICAqLw0KKyAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgdG9rZW50YWIzIC8gc2l6ZW9mIHRva2Vu
dGFiM1swXTsgaSsrKQ0KKyAgICAgaWYgKFNUUkVRTiAodG9rc3RhcnQsIHRva2VudGFiM1tpXS5v
cGVyYXRvciwgMykpDQorICAgICAgIHsNCisgCWxleHB0ciArPSAzOw0KKyAJeXlsdmFsLm9wY29k
ZSA9IHRva2VudGFiM1tpXS5vcGNvZGU7DQorIAlyZXR1cm4gdG9rZW50YWIzW2ldLnRva2VuOw0K
KyAgICAgICB9DQorIA0KKyAgIC8qIFNlZSBpZiBpdCBpcyBhIHNwZWNpYWwgdG9rZW4gb2YgbGVu
Z3RoIDIuICAqLw0KKyAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgdG9rZW50YWIyIC8gc2l6ZW9m
IHRva2VudGFiMlswXTsgaSsrKQ0KKyAgICAgaWYgKFNUUkVRTiAodG9rc3RhcnQsIHRva2VudGFi
MltpXS5vcGVyYXRvciwgMikpDQorICAgICAgIHsNCisgCWxleHB0ciArPSAyOw0KKyAJeXlsdmFs
Lm9wY29kZSA9IHRva2VudGFiMltpXS5vcGNvZGU7DQorIAlyZXR1cm4gdG9rZW50YWIyW2ldLnRv
a2VuOw0KKyAgICAgICB9DQorIA0KKyAgIHN3aXRjaCAoYyA9ICp0b2tzdGFydCkNCisgICAgIHsN
CisgICAgIGNhc2UgMDoNCisgICAgICAgcmV0dXJuIDA7DQorIA0KKyAgICAgY2FzZSAnICc6DQor
ICAgICBjYXNlICdcdCc6DQorICAgICBjYXNlICdcbic6DQorICAgICAgIGxleHB0cisrOw0KKyAg
ICAgICBnb3RvIHJldHJ5Ow0KKyANCisgICAgIGNhc2UgJ1wnJzoNCisgICAgICAgLyogV2UgZWl0
aGVyIGhhdmUgYSBjaGFyYWN0ZXIgY29uc3RhbnQgKCcwJyBvciAnXDE3NycgZm9yIGV4YW1wbGUp
DQorIAkgb3Igd2UgaGF2ZSBhIHF1b3RlZCBzeW1ib2wgcmVmZXJlbmNlICgnZm9vKGludCxpbnQp
JyBpbiBDKysNCisgCSBmb3IgZXhhbXBsZSkuICovDQorICAgICAgIGxleHB0cisrOw0KKyAgICAg
ICBjID0gKmxleHB0cisrOw0KKyAgICAgICBpZiAoYyA9PSAnXFwnKQ0KKyAJYyA9IHBhcnNlX2Vz
Y2FwZSAoJmxleHB0cik7DQorICAgICAgIGVsc2UgaWYgKGMgPT0gJ1wnJykNCisgCWVycm9yICgi
RW1wdHkgY2hhcmFjdGVyIGNvbnN0YW50LiIpOw0KKyANCisgICAgICAgeXlsdmFsLnR5cGVkX3Zh
bF9pbnQudmFsID0gYzsNCisgICAgICAgeXlsdmFsLnR5cGVkX3ZhbF9pbnQudHlwZSA9IGJ1aWx0
aW5fdHlwZV9jaGFyOw0KKyANCisgICAgICAgYyA9ICpsZXhwdHIrKzsNCisgICAgICAgaWYgKGMg
IT0gJ1wnJykNCisgCXsNCisgCSAgbmFtZWxlbiA9IHNraXBfcXVvdGVkICh0b2tzdGFydCkgLSB0
b2tzdGFydDsNCisgCSAgaWYgKG5hbWVsZW4gPiAyKQ0KKyAJICAgIHsNCisgCSAgICAgIGxleHB0
ciA9IHRva3N0YXJ0ICsgbmFtZWxlbjsNCisgCSAgICAgIGlmIChsZXhwdHJbLTFdICE9ICdcJycp
DQorIAkJZXJyb3IgKCJVbm1hdGNoZWQgc2luZ2xlIHF1b3RlLiIpOw0KKyAJICAgICAgbmFtZWxl
biAtPSAyOw0KKyAgICAgICAgICAgICAgIHRva3N0YXJ0Kys7DQorICAgICAgICAgICAgICAgdXB0
b2tzdGFydCA9IHVwdG9rKHRva3N0YXJ0LG5hbWVsZW4pOw0KKyAJICAgICAgZ290byB0cnluYW1l
Ow0KKyAJICAgIH0NCisgCSAgZXJyb3IgKCJJbnZhbGlkIGNoYXJhY3RlciBjb25zdGFudC4iKTsN
CisgCX0NCisgICAgICAgcmV0dXJuIElOVDsNCisgDQorICAgICBjYXNlICcoJzoNCisgICAgICAg
cGFyZW5fZGVwdGgrKzsNCisgICAgICAgbGV4cHRyKys7DQorICAgICAgIHJldHVybiBjOw0KKyAN
CisgICAgIGNhc2UgJyknOg0KKyAgICAgICBpZiAocGFyZW5fZGVwdGggPT0gMCkNCisgCXJldHVy
biAwOw0KKyAgICAgICBwYXJlbl9kZXB0aC0tOw0KKyAgICAgICBsZXhwdHIrKzsNCisgICAgICAg
cmV0dXJuIGM7DQorIA0KKyAgICAgY2FzZSAnLCc6DQorICAgICAgIGlmIChjb21tYV90ZXJtaW5h
dGVzICYmIHBhcmVuX2RlcHRoID09IDApDQorIAlyZXR1cm4gMDsNCisgICAgICAgbGV4cHRyKys7
DQorICAgICAgIHJldHVybiBjOw0KKyANCisgICAgIGNhc2UgJy4nOg0KKyAgICAgICAvKiBNaWdo
dCBiZSBhIGZsb2F0aW5nIHBvaW50IG51bWJlci4gICovDQorICAgICAgIGlmIChsZXhwdHJbMV0g
PCAnMCcgfHwgbGV4cHRyWzFdID4gJzknKQ0KKyAJZ290byBzeW1ib2w7CQkvKiBOb3BlLCBtdXN0
IGJlIGEgc3ltYm9sLiAqLw0KKyAgICAgICAvKiBGQUxMIFRIUlUgaW50byBudW1iZXIgY2FzZS4g
ICovDQorIA0KKyAgICAgY2FzZSAnMCc6DQorICAgICBjYXNlICcxJzoNCisgICAgIGNhc2UgJzIn
Og0KKyAgICAgY2FzZSAnMyc6DQorICAgICBjYXNlICc0JzoNCisgICAgIGNhc2UgJzUnOg0KKyAg
ICAgY2FzZSAnNic6DQorICAgICBjYXNlICc3JzoNCisgICAgIGNhc2UgJzgnOg0KKyAgICAgY2Fz
ZSAnOSc6DQorICAgICAgIHsNCisgCS8qIEl0J3MgYSBudW1iZXIuICAqLw0KKyAJaW50IGdvdF9k
b3QgPSAwLCBnb3RfZSA9IDAsIHRva3R5cGU7DQorIAlyZWdpc3RlciBjaGFyICpwID0gdG9rc3Rh
cnQ7DQorIAlpbnQgaGV4ID0gaW5wdXRfcmFkaXggPiAxMDsNCisgDQorIAlpZiAoYyA9PSAnMCcg
JiYgKHBbMV0gPT0gJ3gnIHx8IHBbMV0gPT0gJ1gnKSkNCisgCSAgew0KKyAJICAgIHAgKz0gMjsN
CisgCSAgICBoZXggPSAxOw0KKyAJICB9DQorIAllbHNlIGlmIChjID09ICcwJyAmJiAocFsxXT09
J3QnIHx8IHBbMV09PSdUJyB8fCBwWzFdPT0nZCcgfHwgcFsxXT09J0QnKSkNCisgCSAgew0KKyAJ
ICAgIHAgKz0gMjsNCisgCSAgICBoZXggPSAwOw0KKyAJICB9DQorIA0KKyAJZm9yICg7OyArK3Ap
DQorIAkgIHsNCisgCSAgICAvKiBUaGlzIHRlc3QgaW5jbHVkZXMgIWhleCBiZWNhdXNlICdlJyBp
cyBhIHZhbGlkIGhleCBkaWdpdA0KKyAJICAgICAgIGFuZCB0aHVzIGRvZXMgbm90IGluZGljYXRl
IGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHdoZW4NCisgCSAgICAgICB0aGUgcmFkaXggaXMgaGV4
LiAgKi8NCisgCSAgICBpZiAoIWhleCAmJiAhZ290X2UgJiYgKCpwID09ICdlJyB8fCAqcCA9PSAn
RScpKQ0KKyAJICAgICAgZ290X2RvdCA9IGdvdF9lID0gMTsNCisgCSAgICAvKiBUaGlzIHRlc3Qg
ZG9lcyBub3QgaW5jbHVkZSAhaGV4LCBiZWNhdXNlIGEgJy4nIGFsd2F5cyBpbmRpY2F0ZXMNCisg
CSAgICAgICBhIGRlY2ltYWwgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHJlZ2FyZGxlc3Mgb2YgdGhl
IHJhZGl4LiAgKi8NCisgCSAgICBlbHNlIGlmICghZ290X2RvdCAmJiAqcCA9PSAnLicpDQorIAkg
ICAgICBnb3RfZG90ID0gMTsNCisgCSAgICBlbHNlIGlmIChnb3RfZSAmJiAocFstMV0gPT0gJ2Un
IHx8IHBbLTFdID09ICdFJykNCisgCQkgICAgICYmICgqcCA9PSAnLScgfHwgKnAgPT0gJysnKSkN
CisgCSAgICAgIC8qIFRoaXMgaXMgdGhlIHNpZ24gb2YgdGhlIGV4cG9uZW50LCBub3QgdGhlIGVu
ZCBvZiB0aGUNCisgCQkgbnVtYmVyLiAgKi8NCisgCSAgICAgIGNvbnRpbnVlOw0KKyAJICAgIC8q
IFdlIHdpbGwgdGFrZSBhbnkgbGV0dGVycyBvciBkaWdpdHMuICBwYXJzZV9udW1iZXIgd2lsbA0K
KyAJICAgICAgIGNvbXBsYWluIGlmIHBhc3QgdGhlIHJhZGl4LCBvciBpZiBMIG9yIFUgYXJlIG5v
dCBmaW5hbC4gICovDQorIAkgICAgZWxzZSBpZiAoKCpwIDwgJzAnIHx8ICpwID4gJzknKQ0KKyAJ
CSAgICAgJiYgKCgqcCA8ICdhJyB8fCAqcCA+ICd6JykNCisgCQkJCSAgJiYgKCpwIDwgJ0EnIHx8
ICpwID4gJ1onKSkpDQorIAkgICAgICBicmVhazsNCisgCSAgfQ0KKyAJdG9rdHlwZSA9IHBhcnNl
X251bWJlciAodG9rc3RhcnQsIHAgLSB0b2tzdGFydCwgZ290X2RvdHxnb3RfZSwgJnl5bHZhbCk7
DQorICAgICAgICAgaWYgKHRva3R5cGUgPT0gRVJST1IpDQorIAkgIHsNCisgCSAgICBjaGFyICpl
cnJfY29weSA9IChjaGFyICopIGFsbG9jYSAocCAtIHRva3N0YXJ0ICsgMSk7DQorIA0KKyAJICAg
IG1lbWNweSAoZXJyX2NvcHksIHRva3N0YXJ0LCBwIC0gdG9rc3RhcnQpOw0KKyAJICAgIGVycl9j
b3B5W3AgLSB0b2tzdGFydF0gPSAwOw0KKyAJICAgIGVycm9yICgiSW52YWxpZCBudW1iZXIgXCIl
c1wiLiIsIGVycl9jb3B5KTsNCisgCSAgfQ0KKyAJbGV4cHRyID0gcDsNCisgCXJldHVybiB0b2t0
eXBlOw0KKyAgICAgICB9DQorIA0KKyAgICAgY2FzZSAnKyc6DQorICAgICBjYXNlICctJzoNCisg
ICAgIGNhc2UgJyonOg0KKyAgICAgY2FzZSAnLyc6DQorICAgICBjYXNlICd8JzoNCisgICAgIGNh
c2UgJyYnOg0KKyAgICAgY2FzZSAnXic6DQorICAgICBjYXNlICd+JzoNCisgICAgIGNhc2UgJyEn
Og0KKyAgICAgY2FzZSAnQCc6DQorICAgICBjYXNlICc8JzoNCisgICAgIGNhc2UgJz4nOg0KKyAg
ICAgY2FzZSAnWyc6DQorICAgICBjYXNlICddJzoNCisgICAgIGNhc2UgJz8nOg0KKyAgICAgY2Fz
ZSAnOic6DQorICAgICBjYXNlICc9JzoNCisgICAgIGNhc2UgJ3snOg0KKyAgICAgY2FzZSAnfSc6
DQorICAgICBzeW1ib2w6DQorICAgICAgIGxleHB0cisrOw0KKyAgICAgICByZXR1cm4gYzsNCisg
DQorICAgICBjYXNlICciJzoNCisgDQorICAgICAgIC8qIEJ1aWxkIHRoZSBnZGIgaW50ZXJuYWwg
Zm9ybSBvZiB0aGUgaW5wdXQgc3RyaW5nIGluIHRlbXBidWYsDQorIAkgdHJhbnNsYXRpbmcgYW55
IHN0YW5kYXJkIEMgZXNjYXBlIGZvcm1zIHNlZW4uICBOb3RlIHRoYXQgdGhlDQorIAkgYnVmZmVy
IGlzIG51bGwgYnl0ZSB0ZXJtaW5hdGVkICpvbmx5KiBmb3IgdGhlIGNvbnZlbmllbmNlIG9mDQor
IAkgZGVidWdnaW5nIGdkYiBpdHNlbGYgYW5kIHByaW50aW5nIHRoZSBidWZmZXIgY29udGVudHMg
d2hlbg0KKyAJIHRoZSBidWZmZXIgY29udGFpbnMgbm8gZW1iZWRkZWQgbnVsbHMuICBHZGIgZG9l
cyBub3QgZGVwZW5kDQorIAkgdXBvbiB0aGUgYnVmZmVyIGJlaW5nIG51bGwgYnl0ZSB0ZXJtaW5h
dGVkLCBpdCB1c2VzIHRoZSBsZW5ndGgNCisgCSBzdHJpbmcgaW5zdGVhZC4gIFRoaXMgYWxsb3dz
IGdkYiB0byBoYW5kbGUgQyBzdHJpbmdzIChhcyB3ZWxsDQorIAkgYXMgc3RyaW5ncyBpbiBvdGhl
ciBsYW5ndWFnZXMpIHdpdGggZW1iZWRkZWQgbnVsbCBieXRlcyAqLw0KKyANCisgICAgICAgdG9r
cHRyID0gKyt0b2tzdGFydDsNCisgICAgICAgdGVtcGJ1ZmluZGV4ID0gMDsNCisgDQorICAgICAg
IGRvIHsNCisgCS8qIEdyb3cgdGhlIHN0YXRpYyB0ZW1wIGJ1ZmZlciBpZiBuZWNlc3NhcnksIGlu
Y2x1ZGluZyBhbGxvY2F0aW5nDQorIAkgICB0aGUgZmlyc3Qgb25lIG9uIGRlbWFuZC4gKi8NCisg
CWlmICh0ZW1wYnVmaW5kZXggKyAxID49IHRlbXBidWZzaXplKQ0KKyAJICB7DQorIAkgICAgdGVt
cGJ1ZiA9IChjaGFyICopIHJlYWxsb2MgKHRlbXBidWYsIHRlbXBidWZzaXplICs9IDY0KTsNCisg
CSAgfQ0KKyAJc3dpdGNoICgqdG9rcHRyKQ0KKyAJICB7DQorIAkgIGNhc2UgJ1wwJzoNCisgCSAg
Y2FzZSAnIic6DQorIAkgICAgLyogRG8gbm90aGluZywgbG9vcCB3aWxsIHRlcm1pbmF0ZS4gKi8N
CisgCSAgICBicmVhazsNCisgCSAgY2FzZSAnXFwnOg0KKyAJICAgIHRva3B0cisrOw0KKyAJICAg
IGMgPSBwYXJzZV9lc2NhcGUgKCZ0b2twdHIpOw0KKyAJICAgIGlmIChjID09IC0xKQ0KKyAJICAg
ICAgew0KKyAJCWNvbnRpbnVlOw0KKyAJICAgICAgfQ0KKyAJICAgIHRlbXBidWZbdGVtcGJ1Zmlu
ZGV4KytdID0gYzsNCisgCSAgICBicmVhazsNCisgCSAgZGVmYXVsdDoNCisgCSAgICB0ZW1wYnVm
W3RlbXBidWZpbmRleCsrXSA9ICp0b2twdHIrKzsNCisgCSAgICBicmVhazsNCisgCSAgfQ0KKyAg
ICAgICB9IHdoaWxlICgoKnRva3B0ciAhPSAnIicpICYmICgqdG9rcHRyICE9ICdcMCcpKTsNCisg
ICAgICAgaWYgKCp0b2twdHIrKyAhPSAnIicpDQorIAl7DQorIAkgIGVycm9yICgiVW50ZXJtaW5h
dGVkIHN0cmluZyBpbiBleHByZXNzaW9uLiIpOw0KKyAJfQ0KKyAgICAgICB0ZW1wYnVmW3RlbXBi
dWZpbmRleF0gPSAnXDAnOwkvKiBTZWUgbm90ZSBhYm92ZSAqLw0KKyAgICAgICB5eWx2YWwuc3Zh
bC5wdHIgPSB0ZW1wYnVmOw0KKyAgICAgICB5eWx2YWwuc3ZhbC5sZW5ndGggPSB0ZW1wYnVmaW5k
ZXg7DQorICAgICAgIGxleHB0ciA9IHRva3B0cjsNCisgICAgICAgcmV0dXJuIChTVFJJTkcpOw0K
KyAgICAgfQ0KKyANCisgICBpZiAoIShjID09ICdfJyB8fCBjID09ICckJw0KKyAJfHwgKGMgPj0g
J2EnICYmIGMgPD0gJ3onKSB8fCAoYyA+PSAnQScgJiYgYyA8PSAnWicpKSkNCisgICAgIC8qIFdl
IG11c3QgaGF2ZSBjb21lIGFjcm9zcyBhIGJhZCBjaGFyYWN0ZXIgKGUuZy4gJzsnKS4gICovDQor
ICAgICBlcnJvciAoIkludmFsaWQgY2hhcmFjdGVyICclYycgaW4gZXhwcmVzc2lvbi4iLCBjKTsN
CisgDQorICAgLyogSXQncyBhIG5hbWUuICBTZWUgaG93IGxvbmcgaXQgaXMuICAqLw0KKyAgIG5h
bWVsZW4gPSAwOw0KKyAgIGZvciAoYyA9IHRva3N0YXJ0W25hbWVsZW5dOw0KKyAgICAgICAgKGMg
PT0gJ18nIHx8IGMgPT0gJyQnIHx8IChjID49ICcwJyAmJiBjIDw9ICc5JykNCisgCXx8IChjID49
ICdhJyAmJiBjIDw9ICd6JykgfHwgKGMgPj0gJ0EnICYmIGMgPD0gJ1onKSB8fCBjID09ICc8Jyk7
KQ0KKyAgICAgew0KKyAgICAgICAvKiBUZW1wbGF0ZSBwYXJhbWV0ZXIgbGlzdHMgYXJlIHBhcnQg
b2YgdGhlIG5hbWUuDQorIAkgRklYTUU6IFRoaXMgbWlzaGFuZGxlcyBgcHJpbnQgJGE8NCYmJGE+
MycuICAqLw0KKyAgICAgICBpZiAoYyA9PSAnPCcpDQorIAl7DQorIAkgIGludCBpID0gbmFtZWxl
bjsNCisgCSAgaW50IG5lc3RpbmdfbGV2ZWwgPSAxOw0KKyAJICB3aGlsZSAodG9rc3RhcnRbKytp
XSkNCisgCSAgICB7DQorIAkgICAgICBpZiAodG9rc3RhcnRbaV0gPT0gJzwnKQ0KKyAJCW5lc3Rp
bmdfbGV2ZWwrKzsNCisgCSAgICAgIGVsc2UgaWYgKHRva3N0YXJ0W2ldID09ICc+JykNCisgCQl7
DQorIAkJICBpZiAoLS1uZXN0aW5nX2xldmVsID09IDApDQorIAkJICAgIGJyZWFrOw0KKyAJCX0N
CisgCSAgICB9DQorIAkgIGlmICh0b2tzdGFydFtpXSA9PSAnPicpDQorIAkgICAgbmFtZWxlbiA9
IGk7DQorIAkgIGVsc2UNCisgCSAgICBicmVhazsNCisgCX0NCisgDQorICAgICAgIC8qIGRvIE5P
VCB1cHBlcmNhc2UgaW50ZXJuYWxzIGJlY2F1c2Ugb2YgcmVnaXN0ZXJzICEhISAqLw0KKyAgICAg
ICBjID0gdG9rc3RhcnRbKytuYW1lbGVuXTsNCisgICAgIH0NCisgDQorICAgdXB0b2tzdGFydCA9
IHVwdG9rKHRva3N0YXJ0LG5hbWVsZW4pOw0KKyANCisgICAvKiBUaGUgdG9rZW4gImlmIiB0ZXJt
aW5hdGVzIHRoZSBleHByZXNzaW9uIGFuZCBpcyBOT1QNCisgICAgICByZW1vdmVkIGZyb20gdGhl
IGlucHV0IHN0cmVhbS4gICovDQorICAgaWYgKG5hbWVsZW4gPT0gMiAmJiB1cHRva3N0YXJ0WzBd
ID09ICdJJyAmJiB1cHRva3N0YXJ0WzFdID09ICdGJykNCisgICAgIHsNCisgICAgICAgcmV0dXJu
IDA7DQorICAgICB9DQorIA0KKyAgIGxleHB0ciArPSBuYW1lbGVuOw0KKyANCisgICB0cnluYW1l
Og0KKyANCisgICAvKiBDYXRjaCBzcGVjaWZpYyBrZXl3b3Jkcy4gIFNob3VsZCBiZSBkb25lIHdp
dGggYSBkYXRhIHN0cnVjdHVyZS4gICovDQorICAgc3dpdGNoIChuYW1lbGVuKQ0KKyAgICAgew0K
KyAgICAgY2FzZSA2Og0KKyAgICAgICBpZiAoU1RSRVEgKHVwdG9rc3RhcnQsICJPQkpFQ1QiKSkN
CisgCXJldHVybiBDTEFTUzsNCisgICAgICAgaWYgKFNUUkVRICh1cHRva3N0YXJ0LCAiUkVDT1JE
IikpDQorIAlyZXR1cm4gU1RSVUNUOw0KKyAgICAgICBpZiAoU1RSRVEgKHVwdG9rc3RhcnQsICJT
SVpFT0YiKSkNCisgCXJldHVybiBTSVpFT0Y7DQorICAgICAgIGJyZWFrOw0KKyAgICAgY2FzZSA1
Og0KKyAgICAgICBpZiAoU1RSRVEgKHVwdG9rc3RhcnQsICJDTEFTUyIpKQ0KKyAJcmV0dXJuIENM
QVNTOw0KKyAgICAgICBpZiAoU1RSRVEgKHVwdG9rc3RhcnQsICJGQUxTRSIpKQ0KKyAJew0KKyAg
ICAgICAgICAgeXlsdmFsLmx2YWwgPSAwOw0KKyAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAg
ICAgICAgIH0NCisgICAgICAgYnJlYWs7DQorICAgICBjYXNlIDQ6DQorICAgICAgIGlmIChTVFJF
USAodXB0b2tzdGFydCwgIlRSVUUiKSkNCisgCXsNCisgICAgICAgICAgIHl5bHZhbC5sdmFsID0g
MTsNCisgICAJICByZXR1cm4gVFJVRTsNCisgICAgICAgICB9DQorICAgICAgIGlmIChTVFJFUSAo
dXB0b2tzdGFydCwgIlNFTEYiKSkNCisgICAgICAgICB7DQorICAgICAgICAgICAvKiBoZXJlIHdl
IHNlYXJjaCBmb3IgJ3RoaXMnIGxpa2UNCisgICAgICAgICAgICAgIGluc2VydGVkIGluIEZQQyBz
dGFicyBkZWJ1ZyBpbmZvICovDQorIAkgIHN0YXRpYyBjb25zdCBjaGFyIHRoaXNfbmFtZVtdID0N
CisgCQkJCSB7IC8qIENQTFVTX01BUktFUiwqLyAndCcsICdoJywgJ2knLCAncycsICdcMCcgfTsN
CisgDQorIAkgIGlmIChsb29rdXBfc3ltYm9sICh0aGlzX25hbWUsIGV4cHJlc3Npb25fY29udGV4
dF9ibG9jaywNCisgCQkJICAgICBWQVJfTkFNRVNQQUNFLCAoaW50ICopIE5VTEwsDQorIAkJCSAg
ICAgKHN0cnVjdCBzeW10YWIgKiopIE5VTEwpKQ0KKyAJICAgIHJldHVybiBUSElTOw0KKyAJfQ0K
KyAgICAgICBicmVhazsNCisgICAgIGRlZmF1bHQ6DQorICAgICAgIGJyZWFrOw0KKyAgICAgfQ0K
KyANCisgICB5eWx2YWwuc3ZhbC5wdHIgPSB0b2tzdGFydDsNCisgICB5eWx2YWwuc3ZhbC5sZW5n
dGggPSBuYW1lbGVuOw0KKyANCisgICBpZiAoKnRva3N0YXJ0ID09ICckJykNCisgICAgIHsNCisg
ICAgICAgLyogJCBpcyB0aGUgbm9ybWFsIHByZWZpeCBmb3IgcGFzY2FsIGhleGFkZWNpbWFsIHZh
bHVlcw0KKyAgICAgICAgIGJ1dCB0aGlzIGNvbmZsaWN0cyB3aXRoIHRoZSBHREIgdXNlIGZvciBk
ZWJ1Z2dlciB2YXJpYWJsZXMNCisgICAgICAgICBzbyBpbiBleHByZXNzaW9uIHRvIGVudGVyIGhl
eGFkZWNpbWFsIHZhbHVlcw0KKyAgICAgICAgIHdlIHN0aWxsIG5lZWQgdG8gdXNlIEMgc3ludGF4
IHdpdGggMHhmZiAgKi8NCisgICAgICAgd3JpdGVfZG9sbGFyX3ZhcmlhYmxlICh5eWx2YWwuc3Zh
bCk7DQorICAgICAgIHJldHVybiBWQVJJQUJMRTsNCisgICAgIH0NCisgDQorICAgLyogVXNlIHRv
a2VuLXR5cGUgQkxPQ0tOQU1FIGZvciBzeW1ib2xzIHRoYXQgaGFwcGVuIHRvIGJlIGRlZmluZWQg
YXMNCisgICAgICBmdW5jdGlvbnMgb3Igc3ltdGFicy4gIElmIHRoaXMgaXMgbm90IHNvLCB0aGVu
IC4uLg0KKyAgICAgIFVzZSB0b2tlbi10eXBlIFRZUEVOQU1FIGZvciBzeW1ib2xzIHRoYXQgaGFw
cGVuIHRvIGJlIGRlZmluZWQNCisgICAgICBjdXJyZW50bHkgYXMgbmFtZXMgb2YgdHlwZXM7IE5B
TUUgZm9yIG90aGVyIHN5bWJvbHMuDQorICAgICAgVGhlIGNhbGxlciBpcyBub3QgY29uc3RyYWlu
ZWQgdG8gY2FyZSBhYm91dCB0aGUgZGlzdGluY3Rpb24uICAqLw0KKyAgIHsNCisgICAgIGNoYXIg
KnRtcCA9IGNvcHlfbmFtZSAoeXlsdmFsLnN2YWwpOw0KKyAgICAgc3RydWN0IHN5bWJvbCAqc3lt
Ow0KKyAgICAgaW50IGlzX2FfZmllbGRfb2ZfdGhpcyA9IDA7DQorICAgICBpbnQgaGV4dHlwZTsN
CisgDQorICAgICBzeW0gPSBsb29rdXBfc3ltYm9sICh0bXAsIGV4cHJlc3Npb25fY29udGV4dF9i
bG9jaywNCisgCQkJIFZBUl9OQU1FU1BBQ0UsDQorIAkJCSAmaXNfYV9maWVsZF9vZl90aGlzLA0K
KyAJCQkgKHN0cnVjdCBzeW10YWIgKiopIE5VTEwpOw0KKyAgICAgLyogc2Vjb25kIGNoYW5jZSB1
cHBlcmNhc2VkICEgKi8NCisgICAgIGlmICghc3ltKQ0KKyAgICAgICB7DQorICAgICAgICBmb3Ig
KGkgPSAwO2kgPD0gbmFtZWxlbjtpKyspDQorICAgICAgICAgIHsNCisgICAgICAgICAgICBpZiAo
KHRtcFtpXT49J2EnICYmIHRtcFtpXTw9J3onKSkNCisgICAgICAgICAgICAgIHRtcFtpXSAtPSAo
J2EnLSdBJyk7DQorICAgICAgICAgICAgLyogSSBhbSBub3Qgc3VyZSB0aGF0IGNvcHlfbmFtZSBn
aXZlcyBleGNhdGx5IHRoZSBzYW1lIHJlc3VsdCAhICovDQorICAgICAgICAgICAgaWYgKCh0b2tz
dGFydFtpXT49J2EnICYmIHRva3N0YXJ0W2ldPD0neicpKQ0KKyAgICAgICAgICAgICAgdG9rc3Rh
cnRbaV0gLT0gKCdhJy0nQScpOw0KKyAgICAgICAgICB9DQorICAgICAgICAgc3ltID0gbG9va3Vw
X3N5bWJvbCAodG1wLCBleHByZXNzaW9uX2NvbnRleHRfYmxvY2ssDQorIAkJCSBWQVJfTkFNRVNQ
QUNFLA0KKyAJCQkgJmlzX2FfZmllbGRfb2ZfdGhpcywNCisgCQkJIChzdHJ1Y3Qgc3ltdGFiICoq
KSBOVUxMKTsNCisgICAgICAgfQ0KKyAgICAgLyogQ2FsbCBsb29rdXBfc3ltdGFiLCBub3QgbG9v
a3VwX3BhcnRpYWxfc3ltdGFiLCBpbiBjYXNlIHRoZXJlIGFyZQ0KKyAgICAgICAgbm8gcHN5bXRh
YnMgKGNvZmYsIHhjb2ZmLCBvciBzb21lIGZ1dHVyZSBjaGFuZ2UgdG8gYmxvdyBhd2F5IHRoZQ0K
KyAgICAgICAgcHN5bXRhYnMgb25jZSBvbmNlIHN5bWJvbHMgYXJlIHJlYWQpLiAgKi8NCisgICAg
IGlmICgoc3ltICYmIFNZTUJPTF9DTEFTUyAoc3ltKSA9PSBMT0NfQkxPQ0spIHx8DQorICAgICAg
ICAgbG9va3VwX3N5bXRhYiAodG1wKSkNCisgICAgICAgew0KKyAJeXlsdmFsLnNzeW0uc3ltID0g
c3ltOw0KKyAJeXlsdmFsLnNzeW0uaXNfYV9maWVsZF9vZl90aGlzID0gaXNfYV9maWVsZF9vZl90
aGlzOw0KKyAJcmV0dXJuIEJMT0NLTkFNRTsNCisgICAgICAgfQ0KKyAgICAgaWYgKHN5bSAmJiBT
WU1CT0xfQ0xBU1MgKHN5bSkgPT0gTE9DX1RZUEVERUYpDQorICAgICAgICAgew0KKyAjaWYgMQ0K
KyAJICAvKiBEZXNwaXRlIHRoZSBmb2xsb3dpbmcgZmxhdywgd2UgbmVlZCB0byBrZWVwIHRoaXMg
Y29kZSBlbmFibGVkLg0KKyAJICAgICBCZWNhdXNlIHdlIGNhbiBnZXQgY2FsbGVkIGZyb20gY2hl
Y2tfc3R1Yl9tZXRob2QsIGlmIHdlIGRvbid0DQorIAkgICAgIGhhbmRsZSBuZXN0ZWQgdHlwZXMg
dGhlbiBpdCBzY3Jld3MgbWFueSBvcGVyYXRpb25zIGluIGFueQ0KKyAJICAgICBwcm9ncmFtIHdo
aWNoIHVzZXMgbmVzdGVkIHR5cGVzLiAgKi8NCisgCSAgLyogSW4gIkE6OngiLCBpZiB4IGlzIGEg
bWVtYmVyIGZ1bmN0aW9uIG9mIEEgYW5kIHRoZXJlIGhhcHBlbnMNCisgCSAgICAgdG8gYmUgYSB0
eXBlIChuZXN0ZWQgb3Igbm90LCBzaW5jZSB0aGUgc3RhYnMgZG9uJ3QgbWFrZSB0aGF0DQorIAkg
ICAgIGRpc3RpbmN0aW9uKSBuYW1lZCB4LCB0aGVuIHRoaXMgY29kZSBpbmNvcnJlY3RseSB0aGlu
a3Mgd2UNCisgCSAgICAgYXJlIGRlYWxpbmcgd2l0aCBuZXN0ZWQgdHlwZXMgcmF0aGVyIHRoYW4g
YSBtZW1iZXIgZnVuY3Rpb24uICAqLw0KKyANCisgCSAgY2hhciAqcDsNCisgCSAgY2hhciAqbmFt
ZXN0YXJ0Ow0KKyAJICBzdHJ1Y3Qgc3ltYm9sICpiZXN0X3N5bTsNCisgDQorIAkgIC8qIExvb2sg
YWhlYWQgdG8gZGV0ZWN0IG5lc3RlZCB0eXBlcy4gIFRoaXMgcHJvYmFibHkgc2hvdWxkIGJlDQor
IAkgICAgIGRvbmUgaW4gdGhlIGdyYW1tYXIsIGJ1dCB0cnlpbmcgc2VlbWVkIHRvIGludHJvZHVj
ZSBhIGxvdA0KKyAJICAgICBvZiBzaGlmdC9yZWR1Y2UgYW5kIHJlZHVjZS9yZWR1Y2UgY29uZmxp
Y3RzLiAgSXQncyBwb3NzaWJsZQ0KKyAJICAgICB0aGF0IGl0IGNvdWxkIGJlIGRvbmUsIHRob3Vn
aC4gIE9yIHBlcmhhcHMgYSBub24tZ3JhbW1hciwgYnV0DQorIAkgICAgIGxlc3MgYWQgaG9jLCBh
cHByb2FjaCB3b3VsZCB3b3JrIHdlbGwuICAqLw0KKyANCisgCSAgLyogU2luY2Ugd2UgZG8gbm90
IGN1cnJlbnRseSBoYXZlIGFueSB3YXkgb2YgZGlzdGluZ3Vpc2hpbmcNCisgCSAgICAgYSBuZXN0
ZWQgdHlwZSBmcm9tIGEgbm9uLW5lc3RlZCBvbmUgKHRoZSBzdGFicyBkb24ndCB0ZWxsDQorIAkg
ICAgIHVzIHdoZXRoZXIgYSB0eXBlIGlzIG5lc3RlZCksIHdlIGp1c3QgaWdub3JlIHRoZQ0KKyAJ
ICAgICBjb250YWluaW5nIHR5cGUuICAqLw0KKyANCisgCSAgcCA9IGxleHB0cjsNCisgCSAgYmVz
dF9zeW0gPSBzeW07DQorIAkgIHdoaWxlICgxKQ0KKyAJICAgIHsNCisgCSAgICAgIC8qIFNraXAg
d2hpdGVzcGFjZS4gICovDQorIAkgICAgICB3aGlsZSAoKnAgPT0gJyAnIHx8ICpwID09ICdcdCcg
fHwgKnAgPT0gJ1xuJykNCisgCQkrK3A7DQorIAkgICAgICBpZiAoKnAgPT0gJzonICYmIHBbMV0g
PT0gJzonKQ0KKyAJCXsNCisgCQkgIC8qIFNraXAgdGhlIGA6OicuICAqLw0KKyAJCSAgcCArPSAy
Ow0KKyAJCSAgLyogU2tpcCB3aGl0ZXNwYWNlLiAgKi8NCisgCQkgIHdoaWxlICgqcCA9PSAnICcg
fHwgKnAgPT0gJ1x0JyB8fCAqcCA9PSAnXG4nKQ0KKyAJCSAgICArK3A7DQorIAkJICBuYW1lc3Rh
cnQgPSBwOw0KKyAJCSAgd2hpbGUgKCpwID09ICdfJyB8fCAqcCA9PSAnJCcgfHwgKCpwID49ICcw
JyAmJiAqcCA8PSAnOScpDQorIAkJCSB8fCAoKnAgPj0gJ2EnICYmICpwIDw9ICd6JykNCisgCQkJ
IHx8ICgqcCA+PSAnQScgJiYgKnAgPD0gJ1onKSkNCisgCQkgICAgKytwOw0KKyAJCSAgaWYgKHAg
IT0gbmFtZXN0YXJ0KQ0KKyAJCSAgICB7DQorIAkJICAgICAgc3RydWN0IHN5bWJvbCAqY3VyX3N5
bTsNCisgCQkgICAgICAvKiBBcyBiaWcgYXMgdGhlIHdob2xlIHJlc3Qgb2YgdGhlIGV4cHJlc3Np
b24sIHdoaWNoIGlzDQorIAkJCSBhdCBsZWFzdCBiaWcgZW5vdWdoLiAgKi8NCisgCQkgICAgICBj
aGFyICpuY29weSA9IGFsbG9jYSAoc3RybGVuICh0bXApK3N0cmxlbiAobmFtZXN0YXJ0KSszKTsN
CisgCQkgICAgICBjaGFyICp0bXAxOw0KKyANCisgCQkgICAgICB0bXAxID0gbmNvcHk7DQorIAkJ
ICAgICAgbWVtY3B5ICh0bXAxLCB0bXAsIHN0cmxlbiAodG1wKSk7DQorIAkJICAgICAgdG1wMSAr
PSBzdHJsZW4gKHRtcCk7DQorIAkJICAgICAgbWVtY3B5ICh0bXAxLCAiOjoiLCAyKTsNCisgCQkg
ICAgICB0bXAxICs9IDI7DQorIAkJICAgICAgbWVtY3B5ICh0bXAxLCBuYW1lc3RhcnQsIHAgLSBu
YW1lc3RhcnQpOw0KKyAJCSAgICAgIHRtcDFbcCAtIG5hbWVzdGFydF0gPSAnXDAnOw0KKyAJCSAg
ICAgIGN1cl9zeW0gPSBsb29rdXBfc3ltYm9sIChuY29weSwgZXhwcmVzc2lvbl9jb250ZXh0X2Js
b2NrLA0KKyAJCQkJCSAgICAgICBWQVJfTkFNRVNQQUNFLCAoaW50ICopIE5VTEwsDQorIAkJCQkJ
ICAgICAgIChzdHJ1Y3Qgc3ltdGFiICoqKSBOVUxMKTsNCisgCQkgICAgICBpZiAoY3VyX3N5bSkN
CisgCQkJew0KKyAJCQkgIGlmIChTWU1CT0xfQ0xBU1MgKGN1cl9zeW0pID09IExPQ19UWVBFREVG
KQ0KKyAJCQkgICAgew0KKyAJCQkgICAgICBiZXN0X3N5bSA9IGN1cl9zeW07DQorIAkJCSAgICAg
IGxleHB0ciA9IHA7DQorIAkJCSAgICB9DQorIAkJCSAgZWxzZQ0KKyAJCQkgICAgYnJlYWs7DQor
IAkJCX0NCisgCQkgICAgICBlbHNlDQorIAkJCWJyZWFrOw0KKyAJCSAgICB9DQorIAkJICBlbHNl
DQorIAkJICAgIGJyZWFrOw0KKyAJCX0NCisgCSAgICAgIGVsc2UNCisgCQlicmVhazsNCisgCSAg
ICB9DQorIA0KKyAJICB5eWx2YWwudHN5bS50eXBlID0gU1lNQk9MX1RZUEUgKGJlc3Rfc3ltKTsN
CisgI2Vsc2UgLyogbm90IDAgKi8NCisgCSAgeXlsdmFsLnRzeW0udHlwZSA9IFNZTUJPTF9UWVBF
IChzeW0pOw0KKyAjZW5kaWYgLyogbm90IDAgKi8NCisgCSAgcmV0dXJuIFRZUEVOQU1FOw0KKyAg
ICAgICAgIH0NCisgICAgIGlmICgoeXlsdmFsLnRzeW0udHlwZSA9IGxvb2t1cF9wcmltaXRpdmVf
dHlwZW5hbWUgKHRtcCkpICE9IDApDQorIAlyZXR1cm4gVFlQRU5BTUU7DQorIA0KKyAgICAgLyog
SW5wdXQgbmFtZXMgdGhhdCBhcmVuJ3Qgc3ltYm9scyBidXQgQVJFIHZhbGlkIGhleCBudW1iZXJz
LA0KKyAgICAgICAgd2hlbiB0aGUgaW5wdXQgcmFkaXggcGVybWl0cyB0aGVtLCBjYW4gYmUgbmFt
ZXMgb3IgbnVtYmVycw0KKyAgICAgICAgZGVwZW5kaW5nIG9uIHRoZSBwYXJzZS4gIE5vdGUgd2Ug
c3VwcG9ydCByYWRpeGVzID4gMTYgaGVyZS4gICovDQorICAgICBpZiAoIXN5bSAmJg0KKyAgICAg
ICAgICgodG9rc3RhcnRbMF0gPj0gJ2EnICYmIHRva3N0YXJ0WzBdIDwgJ2EnICsgaW5wdXRfcmFk
aXggLSAxMCkgfHwNCisgICAgICAgICAgKHRva3N0YXJ0WzBdID49ICdBJyAmJiB0b2tzdGFydFsw
XSA8ICdBJyArIGlucHV0X3JhZGl4IC0gMTApKSkNCisgICAgICAgew0KKyAgCVlZU1RZUEUgbmV3
bHZhbDsJLyogSXRzIHZhbHVlIGlzIGlnbm9yZWQuICAqLw0KKyAJaGV4dHlwZSA9IHBhcnNlX251
bWJlciAodG9rc3RhcnQsIG5hbWVsZW4sIDAsICZuZXdsdmFsKTsNCisgCWlmIChoZXh0eXBlID09
IElOVCkNCisgCSAgew0KKyAJICAgIHl5bHZhbC5zc3ltLnN5bSA9IHN5bTsNCisgCSAgICB5eWx2
YWwuc3N5bS5pc19hX2ZpZWxkX29mX3RoaXMgPSBpc19hX2ZpZWxkX29mX3RoaXM7DQorIAkgICAg
cmV0dXJuIE5BTUVfT1JfSU5UOw0KKyAJICB9DQorICAgICAgIH0NCisgDQorICAgICBmcmVlKHVw
dG9rc3RhcnQpOw0KKyAgICAgLyogQW55IG90aGVyIGtpbmQgb2Ygc3ltYm9sICovDQorICAgICB5
eWx2YWwuc3N5bS5zeW0gPSBzeW07DQorICAgICB5eWx2YWwuc3N5bS5pc19hX2ZpZWxkX29mX3Ro
aXMgPSBpc19hX2ZpZWxkX29mX3RoaXM7DQorICAgICByZXR1cm4gTkFNRTsNCisgICB9DQorIH0N
CisgDQorIHZvaWQNCisgeXllcnJvciAobXNnKQ0KKyAgICAgIGNoYXIgKm1zZzsNCisgew0KKyAg
IGVycm9yICgiQSAlcyBpbiBleHByZXNzaW9uLCBuZWFyIGAlcycuIiwgKG1zZyA/IG1zZyA6ICJl
cnJvciIpLCBsZXhwdHIpOw0KKyB9DQorIC8qDQorICAgJExvZzogcC1leHAueSx2ICQNCisgICBS
ZXZpc2lvbiAxLjIgIDE5OTkvMTAvMDUgMDY6MTU6MzEgIHBpZXJyZQ0KKyAgICAqIHAgJ1Rlc3Qn
IGFuZCBTZWxmIHByb2JsZW0gZml4ZWQNCisgDQorICAgUmV2aXNpb24gMS4xICAxOTk5LzA5LzA3
IDExOjQwOjE5ICBwaWVycmUNCisgICAgRmlyc3QgaW1wb3J0IG9mIHBhc2NhbCBnZGIgNC4xOCBj
aGFuZ2VzDQorIA0KKyAgIFJldmlzaW9uIDEuMSAgMTk5OS8wMS8yNSAyMDozMDozMSAgcGV0ZXIN
CisgICAgICsgZmlyc3QgdmVyc2lvbg0KKyANCisgICBSZXZpc2lvbiAxLjMgIDE5OTkvMDEvMTgg
MTA6MTQ6MTYgIHBpZXJyZQ0KKyAgICAqIHdvcmtpbmcgdmVyc2lvbiBmb3IgdGVzdGdkYg0KKyAN
CisgICBSZXZpc2lvbiAxLjMgIDE5OTkvMDEvMDYgMDk6MzA6MDQgIFBpZXJyZQ0KKyAgIEZQVSBh
bmQgTU1YIGFkZC1vbg0KKyANCisgICBSZXZpc2lvbiAxLjIgIDE5OTgvMTIvMjMgMTU6NTM6MDYg
IFBpZXJyZQ0KKyAgIGV4Y2VwdGlvbnMgYW5kIGZsb2F0aW5mbw0KKyANCisgICBSZXZpc2lvbiAx
LjEgIDE5OTgvMTIvMTggMTg6MjU6NDkgIHBpZXJyZQ0KKyAgIGZpcnN0IERKR1BQIHY0LjE2IGZv
ciBwYXNjYWwgd2l0aCBleGNlcHRpb24gZGVidWdnaW5nIGNhcGFiaWxpdGllcw0KKyANCisgICBS
ZXZpc2lvbiAxLjEgIDE5OTgvMDkvMTggMTI6Mzc6MzkgIHBpZXJyZQ0KKyAqLw0KKioqIHAtbGFu
Zy5oLm9yaQlGcmkgTWFyICAzIDE0OjIzOjMwIDIwMDANCi0tLSBwLWxhbmcuaAlGcmkgTWFyICAz
IDEyOjQ5OjQwIDIwMDANCioqKioqKioqKioqKioqKg0KKioqIDAgKioqKg0KLS0tIDEsODQgLS0t
LQ0KKyAvKiBDIGxhbmd1YWdlIHN1cHBvcnQgZGVmaW5pdGlvbnMgZm9yIEdEQiwgdGhlIEdOVSBk
ZWJ1Z2dlci4NCisgICAgQ29weXJpZ2h0IDE5OTIsIDE5OTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuDQorIA0KKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuDQorIA0KKyAgICBU
aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yIG1vZGlmeQ0KKyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KKyAgICAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KKyANCisgICAgVGhpcyBwcm9ncmFtIGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
DQorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUNCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4NCisgDQorICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQorICAgIEZvdW5kYXRpb24sIEluYy4s
IDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu
ICAqLw0KKyANCisgI2lmZGVmIF9fU1REQ19fCQkJLyogRm9yd2FyZCBkZWNscyBmb3IgcHJvdG90
eXBlcyAqLw0KKyBzdHJ1Y3QgdmFsdWU7DQorICNlbmRpZg0KKyANCisgZXh0ZXJuIGludA0KKyBw
YXNfcGFyc2UgUEFSQU1TICgodm9pZCkpOwkvKiBEZWZpbmVkIGluIHAtZXhwLnkgKi8NCisgDQor
IGV4dGVybiB2b2lkDQorIHBhc19lcnJvciBQQVJBTVMgKChjaGFyICopKTsJLyogRGVmaW5lZCBp
biBwLWV4cC55ICovDQorIA0KKyBleHRlcm4gdm9pZAkJCS8qIERlZmluZWQgaW4gcC10eXBlcHJp
bnQuYyAqLw0KKyBwYXNfcHJpbnRfdHlwZSBQQVJBTVMgKChzdHJ1Y3QgdHlwZSAqLCBjaGFyICos
IHN0cnVjdCB1aV9maWxlICosIGludCwgaW50KSk7DQorIA0KKyBleHRlcm4gaW50DQorIHBhc192
YWxfcHJpbnQgUEFSQU1TICgoc3RydWN0IHR5cGUgKiwgY2hhciAqLCBpbnQsIENPUkVfQUREUiwg
c3RydWN0IHVpX2ZpbGUgKiwgaW50LCBpbnQsDQorIAkJICAgICAgIGludCwgZW51bSB2YWxfcHJl
dHR5cHJpbnQpKTsNCisgDQorIGV4dGVybiBpbnQNCisgcGFzX3ZhbHVlX3ByaW50IFBBUkFNUyAo
KHN0cnVjdCB2YWx1ZSAqLCBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsIGVudW0gdmFsX3ByZXR0eXBy
aW50KSk7DQorIA0KKyBleHRlcm4gdm9pZA0KKyBwYXNfdHlwZV9wcmludF9tZXRob2RfYXJncyBQ
QVJBTVMgKChjaGFyICosIGNoYXIgKiwNCisgCQkJCSAgICBzdHJ1Y3QgdWlfZmlsZSAqKSk7DQor
IA0KKyAvKiBUaGVzZSBhcmUgaW4gcC1sYW5nLmM6ICovDQorIA0KKyBleHRlcm4gdm9pZCBwYXNf
cHJpbnRjaGFyIFBBUkFNUyAoKGludCwgc3RydWN0IHVpX2ZpbGUgKikpOw0KKyANCisgZXh0ZXJu
IHZvaWQgcGFzX3ByaW50c3RyIFBBUkFNUyAoKHN0cnVjdCB1aV9maWxlICosIGNoYXIgKiwgdW5z
aWduZWQgaW50LCBpbnQsIGludCkpOw0KKyANCisgZXh0ZXJuIHN0cnVjdCB0eXBlICpwYXNfY3Jl
YXRlX2Z1bmRhbWVudGFsX3R5cGUgUEFSQU1TICgoc3RydWN0IG9iamZpbGUgKiwgaW50KSk7DQor
IA0KKyBleHRlcm4gc3RydWN0IHR5cGUgKipjb25zdCAocGFzX2J1aWx0aW5fdHlwZXNbXSk7DQor
IC8qIGV4dGVybiBzdHJ1Y3QgdHlwZSAqKiBjb25zdCAoY19idWlsdGluX3R5cGVzW10pOyAqLw0K
KyANCisgLyogVGhlc2UgYXJlIGluIHAtdHlwZXByaW50LmM6ICovDQorIA0KKyBleHRlcm4gdm9p
ZA0KKyBwYXNfdHlwZV9wcmludF9iYXNlIFBBUkFNUyAoKHN0cnVjdCB0eXBlICosIHN0cnVjdCB1
aV9maWxlICosIGludCwgaW50KSk7DQorIA0KKyBleHRlcm4gdm9pZA0KKyBwYXNfdHlwZV9wcmlu
dF92YXJzcGVjX3ByZWZpeCBQQVJBTVMgKChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdWlfZmlsZSAq
LCBpbnQsIGludCkpOw0KKyANCisgLyogVGhlc2UgYXJlIGluIGNwLXZhbHByaW50LmMgKi8NCisg
DQorIGV4dGVybiBpbnQgdnRibHByaW50OwkJLyogQ29udHJvbHMgcHJpbnRpbmcgb2YgdnRibCdz
ICovDQorIA0KKyBleHRlcm4gaW50IHN0YXRpY19maWVsZF9wcmludDsNCisgDQorIGV4dGVybiB2
b2lkDQorIHBhc19jcF9wcmludF9jbGFzc19tZW1iZXIgUEFSQU1TICgoY2hhciAqLCBzdHJ1Y3Qg
dHlwZSAqLCBzdHJ1Y3QgdWlfZmlsZSAqLCBjaGFyICopKTsNCisgDQorIGV4dGVybiB2b2lkDQor
IHBhc19jcF9wcmludF9jbGFzc19tZXRob2QgUEFSQU1TICgoY2hhciAqLCBzdHJ1Y3QgdHlwZSAq
LCBzdHJ1Y3QgdWlfZmlsZSAqKSk7DQorIA0KKyBleHRlcm4gdm9pZA0KKyBwYXNfY3BfcHJpbnRf
dmFsdWVfZmllbGRzIFBBUkFNUyAoKHN0cnVjdCB0eXBlICosIGNoYXIgKiwgQ09SRV9BRERSLA0K
KyAJCQkgICBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsIGludCwgZW51bSB2YWxfcHJldHR5cHJpbnQs
DQorIAkJCQkgICBzdHJ1Y3QgdHlwZSAqKiwgaW50KSk7DQorIA0KKyBleHRlcm4gaW50DQorIHBh
c19jcF9pc192dGJsX3B0cl90eXBlIFBBUkFNUyAoKHN0cnVjdCB0eXBlICopKTsNCisgDQorIGV4
dGVybiBpbnQNCisgcGFzX2NwX2lzX3Z0YmxfbWVtYmVyIFBBUkFNUyAoKHN0cnVjdCB0eXBlICop
KTsNCioqKiBwLWxhbmcuYy5vcmkJRnJpIE1hciAgMyAxNDoyMzozMCAyMDAwDQotLS0gcC1sYW5n
LmMJRnJpIE1hciAgMyAxMzoyMzoyOCAyMDAwDQoqKioqKioqKioqKioqKioNCioqKiAwICoqKioN
Ci0tLSAxLDQ1NiAtLS0tDQorIC8qDQorICAgIE1vZGlmaWNhdGlvbnMgZm9yIEZQQyBzdXBwb3J0
DQorICAgICRJZDogcC1sYW5nLmMsdiAxLjEgMTk5OS8wOS8wNyAxMTo0MDoxOSBwaWVycmUgRXhw
ICQNCisgICovDQorIC8qIEMgbGFuZ3VhZ2Ugc3VwcG9ydCByb3V0aW5lcyBmb3IgR0RCLCB0aGUg
R05VIGRlYnVnZ2VyLg0KKyAgICBDb3B5cmlnaHQgMTk5MiwgMTk5MywgMTk5NCBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4NCisgDQorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4N
CisgDQorICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQorICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQorICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQor
ICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorIA0KKyAgICBUaGlzIHBy
b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwN
CisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YNCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLg0KKyANCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCisgICAgYWxvbmcgd2l0aCB0aGlz
IHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCisgICAgRm91bmRh
dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTEx
LTEzMDcsIFVTQS4gICovDQorIA0KKyAjaW5jbHVkZSAiZGVmcy5oIg0KKyAjaW5jbHVkZSAic3lt
dGFiLmgiDQorICNpbmNsdWRlICJnZGJ0eXBlcy5oIg0KKyAjaW5jbHVkZSAiZXhwcmVzc2lvbi5o
Ig0KKyAjaW5jbHVkZSAicGFyc2VyLWRlZnMuaCINCisgI2luY2x1ZGUgImxhbmd1YWdlLmgiDQor
ICNpbmNsdWRlICJwLWxhbmcuaCINCisgI2luY2x1ZGUgInZhbHByaW50LmgiDQorIA0KKyBleHRl
cm4gdm9pZCBfaW5pdGlhbGl6ZV9wYXNfbGFuZ3VhZ2UgUEFSQU1TICgodm9pZCkpOw0KKyBzdGF0
aWMgdm9pZCBwYXNfb25lX2NoYXIgUEFSQU1TICgoaW50LCBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQg
KikpOw0KKyANCisgLyogUHJpbnQgdGhlIGNoYXJhY3RlciBDIG9uIFNUUkVBTSBhcyBwYXJ0IG9m
IHRoZSBjb250ZW50cyBvZiBhIGxpdGVyYWwNCisgICAgc3RyaW5nLg0KKyAgICBJbl9xdW90ZXMg
aXMgcmVzZXQgdG8gMCBpZiBhIGNoYXIgaXMgd3JpdHRlbiB3aXRoICM0IG5vdGF0aW9uICovDQor
IA0KKyBzdGF0aWMgdm9pZA0KKyBwYXNfb25lX2NoYXIgKGMsIHN0cmVhbSwgaW5fcXVvdGVzKQ0K
KyAgICAgIHJlZ2lzdGVyIGludCBjOw0KKyAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW07DQor
ICAgICAgaW50ICppbl9xdW90ZXM7DQorIHsNCisgDQorICAgYyAmPSAweEZGOwkJCS8qIEF2b2lk
IHNpZ24gYml0IGZvbGxpZXMgKi8NCisgDQorICAgaWYgKChjID09ICdcJycpIHx8IChQUklOVF9M
SVRFUkFMX0ZPUk0gKGMpKSkNCisgICAgIHsNCisgICAgICAgaWYgKCEoKmluX3F1b3RlcykpDQor
IAlmcHV0c19maWx0ZXJlZCAoIiciLCBzdHJlYW0pOw0KKyAgICAgICAqaW5fcXVvdGVzID0gMTsN
CisgICAgICAgaWYgKGMgPT0gJ1wnJykNCisgCXsNCisgCSAgZnB1dHNfZmlsdGVyZWQgKCInJyIs
IHN0cmVhbSk7DQorIAl9DQorICAgICAgIGVsc2UNCisgCWZwcmludGZfZmlsdGVyZWQgKHN0cmVh
bSwgIiVjIiwgYyk7DQorICAgICB9DQorICAgZWxzZQ0KKyAgICAgew0KKyAgICAgICBpZiAoKmlu
X3F1b3RlcykNCisgCWZwdXRzX2ZpbHRlcmVkICgiJyIsIHN0cmVhbSk7DQorICAgICAgICppbl9x
dW90ZXMgPSAwOw0KKyAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIjJWQiLCAodW5z
aWduZWQgaW50KSBjKTsNCisgICAgIH0NCisgfQ0KKyANCisgc3RhdGljIHZvaWQgcGFzX2VtaXRf
Y2hhciBQQVJBTVMgKChpbnQgYywgc3RydWN0IHVpX2ZpbGUgKiBzdHJlYW0sIGludCBxdW90ZXIp
KTsNCisgDQorIC8qIFByaW50IHRoZSBjaGFyYWN0ZXIgQyBvbiBTVFJFQU0gYXMgcGFydCBvZiB0
aGUgY29udGVudHMgb2YgYSBsaXRlcmFsDQorICAgIHN0cmluZyB3aG9zZSBkZWxpbWl0ZXIgaXMg
UVVPVEVSLiAgTm90ZSB0aGF0IHRoYXQgZm9ybWF0IGZvciBwcmludGluZw0KKyAgICBjaGFyYWN0
ZXJzIGFuZCBzdHJpbmdzIGlzIGxhbmd1YWdlIHNwZWNpZmljLiAqLw0KKyANCisgc3RhdGljIHZv
aWQNCisgcGFzX2VtaXRfY2hhciAoYywgc3RyZWFtLCBxdW90ZXIpDQorICAgICAgcmVnaXN0ZXIg
aW50IGM7DQorICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbTsNCisgICAgICBpbnQgcXVvdGVy
Ow0KKyB7DQorICAgaW50IGluX3F1b3RlcyA9IDA7DQorICAgcGFzX29uZV9jaGFyIChjLCBzdHJl
YW0sICZpbl9xdW90ZXMpOw0KKyAgIGlmIChpbl9xdW90ZXMpDQorICAgICBmcHV0c19maWx0ZXJl
ZCAoIiciLCBzdHJlYW0pOw0KKyB9DQorIA0KKyB2b2lkDQorIHBhc19wcmludGNoYXIgKGMsIHN0
cmVhbSkNCisgICAgICBpbnQgYzsNCisgICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtOw0KKyB7
DQorICAgaW50IGluX3F1b3RlcyA9IDA7DQorICAgcGFzX29uZV9jaGFyIChjLCBzdHJlYW0sICZp
bl9xdW90ZXMpOw0KKyAgIGlmIChpbl9xdW90ZXMpDQorICAgICBmcHV0c19maWx0ZXJlZCAoIici
LCBzdHJlYW0pOw0KKyB9DQorIA0KKyAvKiBQcmludCB0aGUgY2hhcmFjdGVyIHN0cmluZyBTVFJJ
TkcsIHByaW50aW5nIGF0IG1vc3QgTEVOR1RIIGNoYXJhY3RlcnMuDQorICAgIFByaW50aW5nIHN0
b3BzIGVhcmx5IGlmIHRoZSBudW1iZXIgaGl0cyBwcmludF9tYXg7IHJlcGVhdCBjb3VudHMNCisg
ICAgYXJlIHByaW50ZWQgYXMgYXBwcm9wcmlhdGUuICBQcmludCBlbGxpcHNlcyBhdCB0aGUgZW5k
IGlmIHdlDQorICAgIGhhZCB0byBzdG9wIGJlZm9yZSBwcmludGluZyBMRU5HVEggY2hhcmFjdGVy
cywgb3IgaWYgRk9SQ0VfRUxMSVBTRVMuICAqLw0KKyANCisgdm9pZA0KKyBwYXNfcHJpbnRzdHIg
KHN0cmVhbSwgc3RyaW5nLCBsZW5ndGgsIHdpZHRoLCBmb3JjZV9lbGxpcHNlcykNCisgICAgICBz
dHJ1Y3QgdWlfZmlsZSAqc3RyZWFtOw0KKyAgICAgIGNoYXIgKnN0cmluZzsNCisgICAgICB1bnNp
Z25lZCBpbnQgbGVuZ3RoOw0KKyAgICAgIGludCB3aWR0aDsNCisgICAgICBpbnQgZm9yY2VfZWxs
aXBzZXM7DQorIHsNCisgICByZWdpc3RlciB1bnNpZ25lZCBpbnQgaTsNCisgICB1bnNpZ25lZCBp
bnQgdGhpbmdzX3ByaW50ZWQgPSAwOw0KKyAgIGludCBpbl9xdW90ZXMgPSAwOw0KKyAgIGludCBu
ZWVkX2NvbW1hID0gMDsNCisgICBleHRlcm4gaW50IGluc3BlY3RfaXQ7DQorIA0KKyAgIC8qIElm
IHRoZSBzdHJpbmcgd2FzIG5vdCB0cnVuY2F0ZWQgZHVlIHRvIGBzZXQgcHJpbnQgZWxlbWVudHMn
LCBhbmQNCisgICAgICB0aGUgbGFzdCBieXRlIG9mIGl0IGlzIGEgbnVsbCwgd2UgZG9uJ3QgcHJp
bnQgdGhhdCwgaW4gdHJhZGl0aW9uYWwgQw0KKyAgICAgIHN0eWxlLiAgKi8NCisgICBpZiAoKCFm
b3JjZV9lbGxpcHNlcykgJiYgbGVuZ3RoID4gMCAmJiBzdHJpbmdbbGVuZ3RoIC0gMV0gPT0gJ1ww
JykNCisgICAgIGxlbmd0aC0tOw0KKyANCisgICBpZiAobGVuZ3RoID09IDApDQorICAgICB7DQor
ICAgICAgIGZwdXRzX2ZpbHRlcmVkICgiJyciLCBzdHJlYW0pOw0KKyAgICAgICByZXR1cm47DQor
ICAgICB9DQorIA0KKyAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGggJiYgdGhpbmdzX3ByaW50ZWQg
PCBwcmludF9tYXg7ICsraSkNCisgICAgIHsNCisgICAgICAgLyogUG9zaXRpb24gb2YgdGhlIGNo
YXJhY3RlciB3ZSBhcmUgZXhhbWluaW5nDQorICAgICAgICAgIHRvIHNlZSB3aGV0aGVyIGl0IGlz
IHJlcGVhdGVkLiAgKi8NCisgICAgICAgdW5zaWduZWQgaW50IHJlcDE7DQorICAgICAgIC8qIE51
bWJlciBvZiByZXBldGl0aW9ucyB3ZSBoYXZlIGRldGVjdGVkIHNvIGZhci4gICovDQorICAgICAg
IHVuc2lnbmVkIGludCByZXBzOw0KKyANCisgICAgICAgUVVJVDsNCisgDQorICAgICAgIGlmIChu
ZWVkX2NvbW1hKQ0KKyAJew0KKyAJICBmcHV0c19maWx0ZXJlZCAoIiwgIiwgc3RyZWFtKTsNCisg
CSAgbmVlZF9jb21tYSA9IDA7DQorIAl9DQorIA0KKyAgICAgICByZXAxID0gaSArIDE7DQorICAg
ICAgIHJlcHMgPSAxOw0KKyAgICAgICB3aGlsZSAocmVwMSA8IGxlbmd0aCAmJiBzdHJpbmdbcmVw
MV0gPT0gc3RyaW5nW2ldKQ0KKyAJew0KKyAJICArK3JlcDE7DQorIAkgICsrcmVwczsNCisgCX0N
CisgDQorICAgICAgIGlmIChyZXBzID4gcmVwZWF0X2NvdW50X3RocmVzaG9sZCkNCisgCXsNCisg
CSAgaWYgKGluX3F1b3RlcykNCisgCSAgICB7DQorIAkgICAgICBpZiAoaW5zcGVjdF9pdCkNCisg
CQlmcHV0c19maWx0ZXJlZCAoIlxcJywgIiwgc3RyZWFtKTsNCisgCSAgICAgIGVsc2UNCisgCQlm
cHV0c19maWx0ZXJlZCAoIicsICIsIHN0cmVhbSk7DQorIAkgICAgICBpbl9xdW90ZXMgPSAwOw0K
KyAJICAgIH0NCisgCSAgcGFzX3ByaW50Y2hhciAoc3RyaW5nW2ldLCBzdHJlYW0pOw0KKyAJICBm
cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIgPHJlcGVhdHMgJXUgdGltZXM+IiwgcmVwcyk7DQor
IAkgIGkgPSByZXAxIC0gMTsNCisgCSAgdGhpbmdzX3ByaW50ZWQgKz0gcmVwZWF0X2NvdW50X3Ro
cmVzaG9sZDsNCisgCSAgbmVlZF9jb21tYSA9IDE7DQorIAl9DQorICAgICAgIGVsc2UNCisgCXsN
CisgCSAgaW50IGMgPSBzdHJpbmdbaV07DQorIAkgIGlmICgoIWluX3F1b3RlcykgJiYgKFBSSU5U
X0xJVEVSQUxfRk9STSAoYykpKQ0KKyAJICAgIHsNCisgCSAgICAgIGlmIChpbnNwZWN0X2l0KQ0K
KyAJCWZwdXRzX2ZpbHRlcmVkICgiXFwnIiwgc3RyZWFtKTsNCisgCSAgICAgIGVsc2UNCisgCQlm
cHV0c19maWx0ZXJlZCAoIiciLCBzdHJlYW0pOw0KKyAJICAgICAgaW5fcXVvdGVzID0gMTsNCisg
CSAgICB9DQorIAkgIHBhc19vbmVfY2hhciAoYywgc3RyZWFtLCAmaW5fcXVvdGVzKTsNCisgCSAg
Kyt0aGluZ3NfcHJpbnRlZDsNCisgCX0NCisgICAgIH0NCisgDQorICAgLyogVGVybWluYXRlIHRo
ZSBxdW90ZXMgaWYgbmVjZXNzYXJ5LiAgKi8NCisgICBpZiAoaW5fcXVvdGVzKQ0KKyAgICAgew0K
KyAgICAgICBpZiAoaW5zcGVjdF9pdCkNCisgCWZwdXRzX2ZpbHRlcmVkICgiXFwnIiwgc3RyZWFt
KTsNCisgICAgICAgZWxzZQ0KKyAJZnB1dHNfZmlsdGVyZWQgKCInIiwgc3RyZWFtKTsNCisgICAg
IH0NCisgDQorICAgaWYgKGZvcmNlX2VsbGlwc2VzIHx8IGkgPCBsZW5ndGgpDQorICAgICBmcHV0
c19maWx0ZXJlZCAoIi4uLiIsIHN0cmVhbSk7DQorIH0NCisgDQorIC8qIENyZWF0ZSBhIGZ1bmRh
bWVudGFsIEMgdHlwZSB1c2luZyBkZWZhdWx0IHJlYXNvbmFibGUgZm9yIHRoZSBjdXJyZW50DQor
ICAgIHRhcmdldCBtYWNoaW5lLg0KKyANCisgICAgU29tZSBvYmplY3QvZGVidWdnaW5nIGZpbGUg
Zm9ybWF0cyAoRFdBUkYgdmVyc2lvbiAxLCBDT0ZGLCBldGMpIGRvIG5vdA0KKyAgICBkZWZpbmUg
ZnVuZGFtZW50YWwgdHlwZXMgc3VjaCBhcyAiaW50IiBvciAiZG91YmxlIi4gIE90aGVycyAoc3Rh
YnMgb3INCisgICAgRFdBUkYgdmVyc2lvbiAyLCBldGMpIGRvIGRlZmluZSBmdW5kYW1lbnRhbCB0
eXBlcy4gIEZvciB0aGUgZm9ybWF0cyB3aGljaA0KKyAgICBkb24ndCBwcm92aWRlIGZ1bmRhbWVu
dGFsIHR5cGVzLCBnZGIgY2FuIGNyZWF0ZSBzdWNoIHR5cGVzIHVzaW5nIHRoaXMNCisgICAgZnVu
Y3Rpb24uDQorIA0KKyAgICBGSVhNRTogIFNvbWUgY29tcGlsZXJzIGRpc3Rpbmd1aXNoIGV4cGxp
Y2l0bHkgc2lnbmVkIGludGVncmFsIHR5cGVzDQorICAgIChzaWduZWQgc2hvcnQsIHNpZ25lZCBp
bnQsIHNpZ25lZCBsb25nKSBmcm9tICJyZWd1bGFyIiBpbnRlZ3JhbCB0eXBlcw0KKyAgICAoc2hv
cnQsIGludCwgbG9uZykgaW4gdGhlIGRlYnVnZ2luZyBpbmZvcm1hdGlvbi4gIFRoZXJlIGlzIHNv
bWUgZGlzLQ0KKyAgICBhZ3JlZW1lbnQgYXMgdG8gaG93IHVzZWZ1bCB0aGlzIGZlYXR1cmUgaXMu
ICBJbiBwYXJ0aWN1bGFyLCBnY2MgZG9lcw0KKyAgICBub3Qgc3VwcG9ydCB0aGlzLiAgQWxzbywg
b25seSBzb21lIGRlYnVnZ2luZyBmb3JtYXRzIGFsbG93IHRoZQ0KKyAgICBkaXN0aW5jdGlvbiB0
byBiZSBwYXNzZWQgb24gdG8gYSBkZWJ1Z2dlci4gIEZvciBub3csIHdlIGFsd2F5cyBqdXN0DQor
ICAgIHVzZSAic2hvcnQiLCAiaW50Iiwgb3IgImxvbmciIGFzIHRoZSB0eXBlIG5hbWUsIGZvciBi
b3RoIHRoZSBpbXBsaWNpdA0KKyAgICBhbmQgZXhwbGljaXRseSBzaWduZWQgdHlwZXMuICBUaGlz
IGFsc28gbWFrZXMgbGlmZSBlYXNpZXIgZm9yIHRoZQ0KKyAgICBnZGIgdGVzdCBzdWl0ZSBzaW5j
ZSB3ZSBkb24ndCBoYXZlIHRvIGFjY291bnQgZm9yIHRoZSBkaWZmZXJlbmNlcw0KKyAgICBpbiBv
dXRwdXQgZGVwZW5kaW5nIHVwb24gd2hhdCB0aGUgY29tcGlsZXIgYW5kIGRlYnVnZ2luZyBmb3Jt
YXQNCisgICAgc3VwcG9ydC4gIFdlIHdpbGwgcHJvYmFibHkgaGF2ZSB0byByZS1leGFtaW5lIHRo
ZSBpc3N1ZSB3aGVuIGdkYg0KKyAgICBzdGFydHMgdGFraW5nIGl0J3MgZnVuZGFtZW50YWwgdHlw
ZSBpbmZvcm1hdGlvbiBkaXJlY3RseSBmcm9tIHRoZQ0KKyAgICBkZWJ1Z2dpbmcgaW5mb3JtYXRp
b24gc3VwcGxpZWQgYnkgdGhlIGNvbXBpbGVyLiAgZm5mQGN5Z251cy5jb20gKi8NCisgDQorIHN0
cnVjdCB0eXBlICoNCisgcGFzX2NyZWF0ZV9mdW5kYW1lbnRhbF90eXBlIChvYmpmaWxlLCB0eXBl
aWQpDQorICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7DQorICAgICAgaW50IHR5cGVpZDsN
Cisgew0KKyAgIHJlZ2lzdGVyIHN0cnVjdCB0eXBlICp0eXBlID0gTlVMTDsNCisgDQorICAgc3dp
dGNoICh0eXBlaWQpDQorICAgICB7DQorICAgICBkZWZhdWx0Og0KKyAgICAgICAvKiBGSVhNRTog
IEZvciBub3csIGlmIHdlIGFyZSBhc2tlZCB0byBwcm9kdWNlIGEgdHlwZSBub3QgaW4gdGhpcw0K
KyAgICAgICAgICBsYW5ndWFnZSwgY3JlYXRlIHRoZSBlcXVpdmFsZW50IG9mIGEgQyBpbnRlZ2Vy
IHR5cGUgd2l0aCB0aGUNCisgICAgICAgICAgbmFtZSAiPD90eXBlPz4iLiAgV2hlbiBhbGwgdGhl
IGR1c3Qgc2V0dGxlcyBmcm9tIHRoZSB0eXBlDQorICAgICAgICAgIHJlY29uc3RydWN0aW9uIHdv
cmssIHRoaXMgc2hvdWxkIHByb2JhYmx5IGJlY29tZSBhbiBlcnJvci4gKi8NCisgICAgICAgdHlw
ZSA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX0lOVCwNCisgCQkJVEFSR0VUX0lOVF9CSVQgLyBUQVJH
RVRfQ0hBUl9CSVQsDQorIAkJCTAsICI8P3R5cGU/PiIsIG9iamZpbGUpOw0KKyAgICAgICB3YXJu
aW5nICgiaW50ZXJuYWwgZXJyb3I6IG5vIEMvQysrIGZ1bmRhbWVudGFsIHR5cGUgJWQiLCB0eXBl
aWQpOw0KKyAgICAgICBicmVhazsNCisgICAgIGNhc2UgRlRfVk9JRDoNCisgICAgICAgdHlwZSA9
IGluaXRfdHlwZSAoVFlQRV9DT0RFX1ZPSUQsDQorIAkJCVRBUkdFVF9DSEFSX0JJVCAvIFRBUkdF
VF9DSEFSX0JJVCwNCisgCQkJMCwgInZvaWQiLCBvYmpmaWxlKTsNCisgICAgICAgYnJlYWs7DQor
ICAgICBjYXNlIEZUX0NIQVI6DQorICAgICAgIHR5cGUgPSBpbml0X3R5cGUgKFRZUEVfQ09ERV9J
TlQsDQorIAkJCVRBUkdFVF9DSEFSX0JJVCAvIFRBUkdFVF9DSEFSX0JJVCwNCisgCQkJMCwgImNo
YXIiLCBvYmpmaWxlKTsNCisgICAgICAgYnJlYWs7DQorICAgICBjYXNlIEZUX1NJR05FRF9DSEFS
Og0KKyAgICAgICB0eXBlID0gaW5pdF90eXBlIChUWVBFX0NPREVfSU5ULA0KKyAJCQlUQVJHRVRf
Q0hBUl9CSVQgLyBUQVJHRVRfQ0hBUl9CSVQsDQorIAkJCTAsICJzaG9ydGludCIsIG9iamZpbGUp
Ow0KKyAgICAgICBicmVhazsNCisgICAgIGNhc2UgRlRfVU5TSUdORURfQ0hBUjoNCisgICAgICAg
dHlwZSA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX0lOVCwNCisgCQkJVEFSR0VUX0NIQVJfQklUIC8g
VEFSR0VUX0NIQVJfQklULA0KKyAJCQlUWVBFX0ZMQUdfVU5TSUdORUQsICJieXRlIiwgb2JqZmls
ZSk7DQorICAgICAgIGJyZWFrOw0KKyAgICAgY2FzZSBGVF9TSE9SVDoNCisgICAgICAgdHlwZSA9
IGluaXRfdHlwZSAoVFlQRV9DT0RFX0lOVCwNCisgCQkJVEFSR0VUX1NIT1JUX0JJVCAvIFRBUkdF
VF9DSEFSX0JJVCwNCisgCQkJMCwgImludGVnZXIiLCBvYmpmaWxlKTsNCisgICAgICAgYnJlYWs7
DQorICAgICBjYXNlIEZUX1NJR05FRF9TSE9SVDoNCisgICAgICAgdHlwZSA9IGluaXRfdHlwZSAo
VFlQRV9DT0RFX0lOVCwNCisgCQkJVEFSR0VUX1NIT1JUX0JJVCAvIFRBUkdFVF9DSEFSX0JJVCwN
CisgCQkJMCwgImludGVnZXIiLCBvYmpmaWxlKTsJCS8qIEZJWE1FLWZuZiAqLw0KKyAgICAgICBi
cmVhazsNCisgICAgIGNhc2UgRlRfVU5TSUdORURfU0hPUlQ6DQorICAgICAgIHR5cGUgPSBpbml0
X3R5cGUgKFRZUEVfQ09ERV9JTlQsDQorIAkJCVRBUkdFVF9TSE9SVF9CSVQgLyBUQVJHRVRfQ0hB
Ul9CSVQsDQorIAkJCVRZUEVfRkxBR19VTlNJR05FRCwgIndvcmQiLCBvYmpmaWxlKTsNCisgICAg
ICAgYnJlYWs7DQorICAgICBjYXNlIEZUX0lOVEVHRVI6DQorICAgICAgIHR5cGUgPSBpbml0X3R5
cGUgKFRZUEVfQ09ERV9JTlQsDQorIAkJCVRBUkdFVF9JTlRfQklUIC8gVEFSR0VUX0NIQVJfQklU
LA0KKyAJCQkwLCAibG9uZ2ludCIsIG9iamZpbGUpOw0KKyAgICAgICBicmVhazsNCisgICAgIGNh
c2UgRlRfU0lHTkVEX0lOVEVHRVI6DQorICAgICAgIHR5cGUgPSBpbml0X3R5cGUgKFRZUEVfQ09E
RV9JTlQsDQorIAkJCVRBUkdFVF9JTlRfQklUIC8gVEFSR0VUX0NIQVJfQklULA0KKyAJCQkwLCAi
bG9uZ2ludCIsIG9iamZpbGUpOwkJLyogRklYTUUgLWZuZiAqLw0KKyAgICAgICBicmVhazsNCisg
ICAgIGNhc2UgRlRfVU5TSUdORURfSU5URUdFUjoNCisgICAgICAgdHlwZSA9IGluaXRfdHlwZSAo
VFlQRV9DT0RFX0lOVCwNCisgCQkJVEFSR0VUX0lOVF9CSVQgLyBUQVJHRVRfQ0hBUl9CSVQsDQor
IAkJCVRZUEVfRkxBR19VTlNJR05FRCwgImNhcmRpbmFsIiwgb2JqZmlsZSk7DQorICAgICAgIGJy
ZWFrOw0KKyAgICAgY2FzZSBGVF9MT05HOg0KKyAgICAgICB0eXBlID0gaW5pdF90eXBlIChUWVBF
X0NPREVfSU5ULA0KKyAJCQlUQVJHRVRfTE9OR19CSVQgLyBUQVJHRVRfQ0hBUl9CSVQsDQorIAkJ
CTAsICJsb25nIiwgb2JqZmlsZSk7DQorICAgICAgIGJyZWFrOw0KKyAgICAgY2FzZSBGVF9TSUdO
RURfTE9ORzoNCisgICAgICAgdHlwZSA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX0lOVCwNCisgCQkJ
VEFSR0VUX0xPTkdfQklUIC8gVEFSR0VUX0NIQVJfQklULA0KKyAJCQkwLCAibG9uZyIsIG9iamZp
bGUpOwkvKiBGSVhNRSAtZm5mICovDQorICAgICAgIGJyZWFrOw0KKyAgICAgY2FzZSBGVF9VTlNJ
R05FRF9MT05HOg0KKyAgICAgICB0eXBlID0gaW5pdF90eXBlIChUWVBFX0NPREVfSU5ULA0KKyAJ
CQlUQVJHRVRfTE9OR19CSVQgLyBUQVJHRVRfQ0hBUl9CSVQsDQorIAkJCVRZUEVfRkxBR19VTlNJ
R05FRCwgInVuc2lnbmVkIGxvbmciLCBvYmpmaWxlKTsNCisgICAgICAgYnJlYWs7DQorICAgICBj
YXNlIEZUX0xPTkdfTE9ORzoNCisgICAgICAgdHlwZSA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX0lO
VCwNCisgCQkJVEFSR0VUX0xPTkdfTE9OR19CSVQgLyBUQVJHRVRfQ0hBUl9CSVQsDQorIAkJCTAs
ICJsb25nIGxvbmciLCBvYmpmaWxlKTsNCisgICAgICAgYnJlYWs7DQorICAgICBjYXNlIEZUX1NJ
R05FRF9MT05HX0xPTkc6DQorICAgICAgIHR5cGUgPSBpbml0X3R5cGUgKFRZUEVfQ09ERV9JTlQs
DQorIAkJCVRBUkdFVF9MT05HX0xPTkdfQklUIC8gVEFSR0VUX0NIQVJfQklULA0KKyAJCQkwLCAi
c2lnbmVkIGxvbmcgbG9uZyIsIG9iamZpbGUpOw0KKyAgICAgICBicmVhazsNCisgICAgIGNhc2Ug
RlRfVU5TSUdORURfTE9OR19MT05HOg0KKyAgICAgICB0eXBlID0gaW5pdF90eXBlIChUWVBFX0NP
REVfSU5ULA0KKyAJCQlUQVJHRVRfTE9OR19MT05HX0JJVCAvIFRBUkdFVF9DSEFSX0JJVCwNCisg
CQkJVFlQRV9GTEFHX1VOU0lHTkVELCAidW5zaWduZWQgbG9uZyBsb25nIiwgb2JqZmlsZSk7DQor
ICAgICAgIGJyZWFrOw0KKyAgICAgY2FzZSBGVF9GTE9BVDoNCisgICAgICAgdHlwZSA9IGluaXRf
dHlwZSAoVFlQRV9DT0RFX0ZMVCwNCisgCQkJVEFSR0VUX0ZMT0FUX0JJVCAvIFRBUkdFVF9DSEFS
X0JJVCwNCisgCQkJMCwgImZsb2F0Iiwgb2JqZmlsZSk7DQorICAgICAgIGJyZWFrOw0KKyAgICAg
Y2FzZSBGVF9EQkxfUFJFQ19GTE9BVDoNCisgICAgICAgdHlwZSA9IGluaXRfdHlwZSAoVFlQRV9D
T0RFX0ZMVCwNCisgCQkJVEFSR0VUX0RPVUJMRV9CSVQgLyBUQVJHRVRfQ0hBUl9CSVQsDQorIAkJ
CTAsICJkb3VibGUiLCBvYmpmaWxlKTsNCisgICAgICAgYnJlYWs7DQorICAgICBjYXNlIEZUX0VY
VF9QUkVDX0ZMT0FUOg0KKyAgICAgICB0eXBlID0gaW5pdF90eXBlIChUWVBFX0NPREVfRkxULA0K
KyAJCQlUQVJHRVRfTE9OR19ET1VCTEVfQklUIC8gVEFSR0VUX0NIQVJfQklULA0KKyAJCQkwLCAi
ZXh0ZW5kZWQiLCBvYmpmaWxlKTsNCisgICAgICAgYnJlYWs7DQorICAgICB9DQorICAgcmV0dXJu
ICh0eXBlKTsNCisgfQ0KKyAMDQorIA0KKyAvKiBUYWJsZSBtYXBwaW5nIG9wY29kZXMgaW50byBz
dHJpbmdzIGZvciBwcmludGluZyBvcGVyYXRvcnMNCisgICAgYW5kIHByZWNlZGVuY2VzIG9mIHRo
ZSBvcGVyYXRvcnMuICAqLw0KKyANCisgY29uc3Qgc3RydWN0IG9wX3ByaW50IHBhc19vcF9wcmlu
dF90YWJbXSA9DQorIHsNCisgICB7IiwiLCBCSU5PUF9DT01NQSwgUFJFQ19DT01NQSwgMH0sDQor
ICAgeyI6PSIsIEJJTk9QX0FTU0lHTiwgUFJFQ19BU1NJR04sIDF9LA0KKyAgIHsib3IiLCBCSU5P
UF9CSVRXSVNFX0lPUiwgUFJFQ19CSVRXSVNFX0lPUiwgMH0sDQorICAgeyJ4b3IiLCBCSU5PUF9C
SVRXSVNFX1hPUiwgUFJFQ19CSVRXSVNFX1hPUiwgMH0sDQorICAgeyJhbmQiLCBCSU5PUF9CSVRX
SVNFX0FORCwgUFJFQ19CSVRXSVNFX0FORCwgMH0sDQorICAgeyI9IiwgQklOT1BfRVFVQUwsIFBS
RUNfRVFVQUwsIDB9LA0KKyAgIHsiPD4iLCBCSU5PUF9OT1RFUVVBTCwgUFJFQ19FUVVBTCwgMH0s
DQorICAgeyI8PSIsIEJJTk9QX0xFUSwgUFJFQ19PUkRFUiwgMH0sDQorICAgeyI+PSIsIEJJTk9Q
X0dFUSwgUFJFQ19PUkRFUiwgMH0sDQorICAgeyI+IiwgQklOT1BfR1RSLCBQUkVDX09SREVSLCAw
fSwNCisgICB7IjwiLCBCSU5PUF9MRVNTLCBQUkVDX09SREVSLCAwfSwNCisgICB7InNociIsIEJJ
Tk9QX1JTSCwgUFJFQ19TSElGVCwgMH0sDQorICAgeyJzaGwiLCBCSU5PUF9MU0gsIFBSRUNfU0hJ
RlQsIDB9LA0KKyAgIHsiKyIsIEJJTk9QX0FERCwgUFJFQ19BREQsIDB9LA0KKyAgIHsiLSIsIEJJ
Tk9QX1NVQiwgUFJFQ19BREQsIDB9LA0KKyAgIHsiKiIsIEJJTk9QX01VTCwgUFJFQ19NVUwsIDB9
LA0KKyAgIHsiLyIsIEJJTk9QX0RJViwgUFJFQ19NVUwsIDB9LA0KKyAgIHsiZGl2IiwgQklOT1Bf
SU5URElWLCBQUkVDX01VTCwgMH0sDQorICAgeyJtb2QiLCBCSU5PUF9SRU0sIFBSRUNfTVVMLCAw
fSwNCisgICB7IkAiLCBCSU5PUF9SRVBFQVQsIFBSRUNfUkVQRUFULCAwfSwNCisgICB7Ii0iLCBV
Tk9QX05FRywgUFJFQ19QUkVGSVgsIDB9LA0KKyAgIHsibm90IiwgVU5PUF9MT0dJQ0FMX05PVCwg
UFJFQ19QUkVGSVgsIDB9LA0KKyAgIHsiXiIsIFVOT1BfSU5ELCBQUkVDX1NVRkZJWCwgMX0sDQor
ICAgeyJAIiwgVU5PUF9BRERSLCBQUkVDX1BSRUZJWCwgMH0sDQorICAgeyJzaXplb2YiLCBVTk9Q
X1NJWkVPRiwgUFJFQ19QUkVGSVgsIDB9LA0KKyAgICAgLyogQysrICBhcHBhcmVudGx5IHJlbW92
ZWQgZnJvbSBHREIgc2luY2UgNC4xOA0KKyAgICAgICAgeyI6OiIsIEJJTk9QX1NDT1BFLCBQUkVD
X1BSRUZJWCwgMH0sICovDQorICAge05VTEwsIDAsIDAsIDB9DQorIH07DQorIAwNCisgc3RydWN0
IHR5cGUgKipjb25zdCAvKiBDT05TVF9QVFIgdiA0LjE3ICovIChwYXNfYnVpbHRpbl90eXBlc1td
KSA9DQorIHsNCisgICAmYnVpbHRpbl90eXBlX2ludCwNCisgICAgICZidWlsdGluX3R5cGVfbG9u
ZywNCisgICAgICZidWlsdGluX3R5cGVfc2hvcnQsDQorICAgICAmYnVpbHRpbl90eXBlX2NoYXIs
DQorICAgICAmYnVpbHRpbl90eXBlX2Zsb2F0LA0KKyAgICAgJmJ1aWx0aW5fdHlwZV9kb3VibGUs
DQorICAgICAmYnVpbHRpbl90eXBlX3ZvaWQsDQorICAgICAmYnVpbHRpbl90eXBlX2xvbmdfbG9u
ZywNCisgICAgICZidWlsdGluX3R5cGVfc2lnbmVkX2NoYXIsDQorICAgICAmYnVpbHRpbl90eXBl
X3Vuc2lnbmVkX2NoYXIsDQorICAgICAmYnVpbHRpbl90eXBlX3Vuc2lnbmVkX3Nob3J0LA0KKyAg
ICAgJmJ1aWx0aW5fdHlwZV91bnNpZ25lZF9pbnQsDQorICAgICAmYnVpbHRpbl90eXBlX3Vuc2ln
bmVkX2xvbmcsDQorICAgICAmYnVpbHRpbl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZywNCisgICAg
ICZidWlsdGluX3R5cGVfbG9uZ19kb3VibGUsDQorICAgICAmYnVpbHRpbl90eXBlX2NvbXBsZXgs
DQorICAgICAmYnVpbHRpbl90eXBlX2RvdWJsZV9jb21wbGV4LA0KKyAgICAgMA0KKyB9Ow0KKyAN
CisgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gcGFzX2xhbmd1YWdlX2RlZm4gPQ0KKyB7DQor
ICAgInBhc2NhbCIsCQkJLyogTGFuZ3VhZ2UgbmFtZSAqLw0KKyAgIGxhbmd1YWdlX3Bhc2NhbCwN
CisgICBwYXNfYnVpbHRpbl90eXBlcywNCisgICByYW5nZV9jaGVja19vbiwNCisgICB0eXBlX2No
ZWNrX29uLA0KKyAgIHBhc19wYXJzZSwNCisgICBwYXNfZXJyb3IsDQorICAgZXZhbHVhdGVfc3Vi
ZXhwX3N0YW5kYXJkLA0KKyAgIHBhc19wcmludGNoYXIsCQkvKiBQcmludCBhIGNoYXJhY3RlciBj
b25zdGFudCAqLw0KKyAgIHBhc19wcmludHN0ciwJCQkvKiBGdW5jdGlvbiB0byBwcmludCBzdHJp
bmcgY29uc3RhbnQgKi8NCisgICBwYXNfZW1pdF9jaGFyLAkJLyogUHJpbnQgYSBzaW5nbGUgY2hh
ciAqLw0KKyAgIHBhc19jcmVhdGVfZnVuZGFtZW50YWxfdHlwZSwJLyogQ3JlYXRlIGZ1bmRhbWVu
dGFsIHR5cGUgaW4gdGhpcyBsYW5ndWFnZSAqLw0KKyAgIHBhc19wcmludF90eXBlLAkJLyogUHJp
bnQgYSB0eXBlIHVzaW5nIGFwcHJvcHJpYXRlIHN5bnRheCAqLw0KKyAgIHBhc192YWxfcHJpbnQs
CQkvKiBQcmludCBhIHZhbHVlIHVzaW5nIGFwcHJvcHJpYXRlIHN5bnRheCAqLw0KKyAgIHBhc192
YWx1ZV9wcmludCwJCS8qIFByaW50IGEgdG9wLWxldmVsIHZhbHVlICovDQorICAgeyIiLCAiJSIs
ICJiIiwgIiJ9LAkJLyogQmluYXJ5IGZvcm1hdCBpbmZvICovDQorICAgeyIwJWxvIiwgIjAiLCAi
byIsICIifSwJLyogT2N0YWwgZm9ybWF0IGluZm8gKi8NCisgICB7IiVsZCIsICIiLCAiZCIsICIi
fSwJCS8qIERlY2ltYWwgZm9ybWF0IGluZm8gKi8NCisgICB7IiQlbHgiLCAiJCIsICJ4IiwgIiJ9
LAkvKiBIZXggZm9ybWF0IGluZm8gKi8NCisgICBwYXNfb3BfcHJpbnRfdGFiLAkJLyogZXhwcmVz
c2lvbiBvcGVyYXRvcnMgZm9yIHByaW50aW5nICovDQorICAgMSwJCQkJLyogYy1zdHlsZSBhcnJh
eXMgKi8NCisgICAwLAkJCQkvKiBTdHJpbmcgbG93ZXIgYm91bmQgKi8NCisgICAmYnVpbHRpbl90
eXBlX2NoYXIsCQkvKiBUeXBlIG9mIHN0cmluZyBlbGVtZW50cyAqLw0KKyAgIExBTkdfTUFHSUMN
CisgfTsNCisgDQorIHZvaWQNCisgX2luaXRpYWxpemVfcGFzX2xhbmd1YWdlICgpDQorIHsNCisg
ICBhZGRfbGFuZ3VhZ2UgKCZwYXNfbGFuZ3VhZ2VfZGVmbik7DQorIH0NCisgLyoNCisgICAgJExv
ZzogcC1sYW5nLmMsdiAkDQorICAgIFJldmlzaW9uIDEuMSAgMTk5OS8wOS8wNyAxMTo0MDoxOSAg
cGllcnJlDQorICAgIEZpcnN0IGltcG9ydCBvZiBwYXNjYWwgZ2RiIDQuMTggY2hhbmdlcw0KKyAN
CisgICAgUmV2aXNpb24gMS4xICAxOTk5LzAxLzI1IDIwOjMwOjMxICBwZXRlcg0KKyAgICArIGZp
cnN0IHZlcnNpb24NCisgDQorICAgIFJldmlzaW9uIDEuMiAgMTk5OS8wMS8wNSAwODozOTozNSAg
cGllcnJlDQorICAgICsgZGJnY29tLmggYW5kIGRiZ2NvbS5jIG1vZGlmaWVkIGJ5IEFuZHJpcyBQ
YXZlbmlzDQorICAgICsgYWRkZWQgY29kZSBmb3IgTU1YIHN0YXRlIGRldGVjdGlvbiBhbmQgZGlz
cGxheQ0KKyAgICAoc3RpbGwgdWdnbHkgOg0KKyAgICBGUFUgc3RhY2sgc2hvd24gYnkgImluZm8g
YWxsIg0KKyAgICBNTVggcmVnaXN0ZXJzIHNob3duIGJ5ICJpbmZvIGZsb2F0IiBpZiBpbiBNTVgg
bW9kZSkNCisgDQorICAgIFJldmlzaW9uIDEuMiAgMTk5OC8xMi8yMyAxNTo1MzowNiAgUGllcnJl
DQorICAgIGV4Y2VwdGlvbnMgYW5kIGZsb2F0aW5mbw0KKyANCisgICAgUmV2aXNpb24gMS4xICAx
OTk4LzEyLzE4IDE4OjI1OjUwICBwaWVycmUNCisgICAgZmlyc3QgREpHUFAgdjQuMTYgZm9yIHBh
c2NhbCB3aXRoIGV4Y2VwdGlvbiBkZWJ1Z2dpbmcgY2FwYWJpbGl0aWVzDQorIA0KKyAgICBSZXZp
c2lvbiAxLjEgIDE5OTgvMTIvMDQgMTA6MzE6NDcgIGRvc3VzZXINCisgICAgKyBmaXJzdCB2ZXJz
aW9uIHdpdGggcGFzY2FsIHN5bnRheA0KKyANCisgICAgUmV2aXNpb24gMS4xICAxOTk4LzA5LzE4
IDEyOjM3OjM5ICBwaWVycmUNCisgICovDQoqKiogcC10eXBlcHJpbnQuYy5vcmkJRnJpIE1hciAg
MyAxNDoyMzozMCAyMDAwDQotLS0gcC10eXBlcHJpbnQuYwlGcmkgTWFyICAzIDEzOjEyOjU0IDIw
MDANCioqKioqKioqKioqKioqKg0KKioqIDAgKioqKg0KLS0tIDEsOTIwIC0tLS0NCisgLyoNCisg
ICAgTW9kaWZpY2F0aW9ucyBmb3IgRlBDIHN1cHBvcnQNCisgICAgJElkOiBwLXR5cGVwcmludC5j
LHYgMS4yIDE5OTkvMTAvMjkgMTE6NTc6MDYgcGllcnJlIEV4cCAkDQorICAqLw0KKyAvKiBTdXBw
b3J0IGZvciBwcmludGluZyBDIGFuZCBDKysgdHlwZXMgZm9yIEdEQiwgdGhlIEdOVSBkZWJ1Z2dl
ci4NCisgICAgQ29weXJpZ2h0IDE5ODYsIDE5ODgsIDE5ODksIDE5OTEsIDE5OTMsIDE5OTQsIDE5
OTUsIDE5OTYNCisgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIA0KKyAgICBU
aGlzIGZpbGUgaXMgcGFydCBvZiBHREIuDQorIA0KKyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KKyAgICBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieQ0KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLg0KKyANCisgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisgICAgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCisgDQorICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlDQorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlDQorICAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1
aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLw0KKyANCisgI2luY2x1ZGUg
ImRlZnMuaCINCisgI2luY2x1ZGUgIm9ic3RhY2suaCINCisgI2luY2x1ZGUgImJmZC5oIgkJLyog
QmluYXJ5IEZpbGUgRGVzY3JpcHRpb24gKi8NCisgI2luY2x1ZGUgInN5bXRhYi5oIg0KKyAjaW5j
bHVkZSAiZ2RidHlwZXMuaCINCisgI2luY2x1ZGUgImV4cHJlc3Npb24uaCINCisgI2luY2x1ZGUg
InZhbHVlLmgiDQorICNpbmNsdWRlICJnZGJjb3JlLmgiDQorICNpbmNsdWRlICJ0YXJnZXQuaCIN
CisgI2luY2x1ZGUgImNvbW1hbmQuaCINCisgI2luY2x1ZGUgImdkYmNtZC5oIg0KKyAjaW5jbHVk
ZSAibGFuZ3VhZ2UuaCINCisgI2luY2x1ZGUgImRlbWFuZ2xlLmgiDQorICNpbmNsdWRlICJwLWxh
bmcuaCINCisgI2luY2x1ZGUgInR5cGVwcmludC5oIg0KKyANCisgI2luY2x1ZGUgImdkYl9zdHJp
bmcuaCINCisgI2luY2x1ZGUgPGVycm5vLmg+DQorICNpbmNsdWRlIDxjdHlwZS5oPg0KKyANCisg
c3RhdGljIHZvaWQNCisgcGFzX3R5cGVfcHJpbnRfYXJncyBQQVJBTVMgKChzdHJ1Y3QgdHlwZSAq
LCBzdHJ1Y3QgdWlfZmlsZSAqKSk7DQorIA0KKyBzdGF0aWMgdm9pZA0KKyBwYXNfdHlwZV9wcmlu
dF92YXJzcGVjX3N1ZmZpeCBQQVJBTVMgKChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdWlfZmlsZSAq
LCBpbnQsIGludCwgaW50KSk7DQorIA0KKyBzdGF0aWMgdm9pZA0KKyBwY3Bhc190eXBlX3ByaW50
X2Rlcml2YXRpb25faW5mbyBQQVJBTVMgKChzdHJ1Y3QgdWlfZmlsZSAqLCBzdHJ1Y3QgdHlwZSAq
KSk7DQorIA0KKyB2b2lkDQorIHBhc190eXBlX3ByaW50X3ZhcnNwZWNfcHJlZml4IFBBUkFNUyAo
KHN0cnVjdCB0eXBlICosIHN0cnVjdCB1aV9maWxlICosIGludCwgaW50KSk7DQorIAwNCisgDQor
IC8qIExFVkVMIGlzIHRoZSBkZXB0aCB0byBpbmRlbnQgbGluZXMgYnkuICAqLw0KKyANCisgdm9p
ZA0KKyBwYXNfcHJpbnRfdHlwZSAodHlwZSwgdmFyc3RyaW5nLCBzdHJlYW0sIHNob3csIGxldmVs
KQ0KKyAgICAgIHN0cnVjdCB0eXBlICp0eXBlOw0KKyAgICAgIGNoYXIgKnZhcnN0cmluZzsNCisg
ICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtOw0KKyAgICAgIGludCBzaG93Ow0KKyAgICAgIGlu
dCBsZXZlbDsNCisgew0KKyAgIHJlZ2lzdGVyIGVudW0gdHlwZV9jb2RlIGNvZGU7DQorICAgaW50
IGRlbWFuZ2xlZF9hcmdzOw0KKyANCisgICBjb2RlID0gVFlQRV9DT0RFICh0eXBlKTsNCisgDQor
ICAgaWYgKHNob3cgPiAwKQ0KKyAgICAgQ0hFQ0tfVFlQRURFRiAodHlwZSk7DQorIA0KKyAgIGlm
ICgoY29kZSA9PSBUWVBFX0NPREVfRlVOQyB8fA0KKyAgICAgICAgY29kZSA9PSBUWVBFX0NPREVf
TUVUSE9EKSkNCisgICAgIHsNCisgICAgICAgcGFzX3R5cGVfcHJpbnRfdmFyc3BlY19wcmVmaXgg
KHR5cGUsIHN0cmVhbSwgc2hvdywgMCk7DQorICAgICB9DQorICAgLyogZmlyc3QgdGhlIG5hbWUg
Ki8NCisgICBmcHV0c19maWx0ZXJlZCAodmFyc3RyaW5nLCBzdHJlYW0pOw0KKyANCisgICBpZiAo
KHZhcnN0cmluZyAhPSBOVUxMICYmICp2YXJzdHJpbmcgIT0gJ1wwJykgJiYNCisgICAgICAgIShj
b2RlID09IFRZUEVfQ09ERV9GVU5DIHx8DQorIAljb2RlID09IFRZUEVfQ09ERV9NRVRIT0QpKQ0K
KyAgICAgew0KKyAgICAgICBmcHV0c19maWx0ZXJlZCAoIiA6ICIsIHN0cmVhbSk7DQorICAgICB9
DQorIA0KKyAgIGlmICghKGNvZGUgPT0gVFlQRV9DT0RFX0ZVTkMgfHwNCisgCWNvZGUgPT0gVFlQ
RV9DT0RFX01FVEhPRCkpDQorICAgICB7DQorICAgICAgIHBhc190eXBlX3ByaW50X3ZhcnNwZWNf
cHJlZml4ICh0eXBlLCBzdHJlYW0sIHNob3csIDApOw0KKyAgICAgfQ0KKyANCisgICBwYXNfdHlw
ZV9wcmludF9iYXNlICh0eXBlLCBzdHJlYW0sIHNob3csIGxldmVsKTsNCisgICAvKiBGb3IgZGVt
YW5nbGVkIGZ1bmN0aW9uIG5hbWVzLCB3ZSBoYXZlIHRoZSBhcmdsaXN0IGFzIHBhcnQgb2YgdGhl
IG5hbWUsDQorICAgICAgc28gZG9uJ3QgcHJpbnQgYW4gYWRkaXRpb25hbCBwYWlyIG9mICgpJ3Mg
Ki8NCisgDQorICAgZGVtYW5nbGVkX2FyZ3MgPSB2YXJzdHJpbmcgPyBzdHJjaHIgKHZhcnN0cmlu
ZywgJygnKSAhPSBOVUxMIDogTlVMTDsNCisgICBwYXNfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZp
eCAodHlwZSwgc3RyZWFtLCBzaG93LCAwLCBkZW1hbmdsZWRfYXJncyk7DQorIA0KKyB9DQorIA0K
KyAvKiBJZiBUWVBFIGlzIGEgZGVyaXZlZCB0eXBlLCB0aGVuIHByaW50IG91dCBkZXJpdmF0aW9u
IGluZm9ybWF0aW9uLg0KKyAgICBQcmludCBvbmx5IHRoZSBhY3R1YWwgYmFzZSBjbGFzc2VzIG9m
IHRoaXMgdHlwZSwgbm90IHRoZSBiYXNlIGNsYXNzZXMNCisgICAgb2YgdGhlIGJhc2UgY2xhc3Nl
cy4gIEkuRS4gIGZvciB0aGUgZGVyaXZhdGlvbiBoaWVyYXJjaHk6DQorIA0KKyAgICBjbGFzcyBB
IHsgaW50IGE7IH07DQorICAgIGNsYXNzIEIgOiBwdWJsaWMgQSB7aW50IGI7IH07DQorICAgIGNs
YXNzIEMgOiBwdWJsaWMgQiB7aW50IGM7IH07DQorIA0KKyAgICBQcmludCB0aGUgdHlwZSBvZiBj
bGFzcyBDIGFzOg0KKyANCisgICAgY2xhc3MgQyA6IHB1YmxpYyBCIHsNCisgICAgaW50IGM7DQor
ICAgIH0NCisgDQorICAgIE5vdCBhcyB0aGUgZm9sbG93aW5nIChsaWtlIGdkYiB1c2VkIHRvKSwg
d2hpY2ggaXMgbm90IGxlZ2FsIEMrKyBzeW50YXggZm9yDQorICAgIGRlcml2ZWQgdHlwZXMgYW5k
IG1heSBiZSBjb25mdXNlZCB3aXRoIHRoZSBtdWx0aXBsZSBpbmhlcml0YW5jZSBmb3JtOg0KKyAN
CisgICAgY2xhc3MgQyA6IHB1YmxpYyBCIDogcHVibGljIEEgew0KKyAgICBpbnQgYzsNCisgICAg
fQ0KKyANCisgICAgSW4gZ2VuZXJhbCwgZ2RiIHNob3VsZCB0cnkgdG8gcHJpbnQgdGhlIHR5cGVz
IGFzIGNsb3NlbHkgYXMgcG9zc2libGUgdG8NCisgICAgdGhlIGZvcm0gdGhhdCB0aGV5IGFwcGVh
ciBpbiB0aGUgc291cmNlIGNvZGUuICovDQorIA0KKyBzdGF0aWMgdm9pZA0KKyBwY3Bhc190eXBl
X3ByaW50X2Rlcml2YXRpb25faW5mbyAoc3RyZWFtLCB0eXBlKQ0KKyAgICAgIHN0cnVjdCB1aV9m
aWxlICpzdHJlYW07DQorICAgICAgc3RydWN0IHR5cGUgKnR5cGU7DQorIHsNCisgICBjaGFyICpu
YW1lOw0KKyAgIGludCBpOw0KKyANCisgICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9OX0JBU0VDTEFT
U0VTICh0eXBlKTsgaSsrKQ0KKyAgICAgew0KKyAgICAgICBmcHV0c19maWx0ZXJlZCAoaSA9PSAw
ID8gIjogIiA6ICIsICIsIHN0cmVhbSk7DQorICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVh
bSwgIiVzJXMgIiwNCisgCQkJQkFTRVRZUEVfVklBX1BVQkxJQyAodHlwZSwgaSkgPyAicHVibGlj
IiA6ICJwcml2YXRlIiwNCisgCQkJQkFTRVRZUEVfVklBX1ZJUlRVQUwgKHR5cGUsIGkpID8gIiB2
aXJ0dWFsIiA6ICIiKTsNCisgICAgICAgbmFtZSA9IHR5cGVfbmFtZV9ub190YWcgKFRZUEVfQkFT
RUNMQVNTICh0eXBlLCBpKSk7DQorICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiVz
IiwgbmFtZSA/IG5hbWUgOiAiKG51bGwpIik7DQorICAgICB9DQorICAgaWYgKGkgPiAwKQ0KKyAg
ICAgew0KKyAgICAgICBmcHV0c19maWx0ZXJlZCAoIiAiLCBzdHJlYW0pOw0KKyAgICAgfQ0KKyB9
DQorIA0KKyAvKiBQcmludCB0aGUgRlBDIG1ldGhvZCBhcmd1bWVudHMgQVJHUyB0byB0aGUgZmls
ZSBTVFJFQU0uICAqLw0KKyANCisgdm9pZA0KKyBwYXNfdHlwZV9wcmludF9tZXRob2RfYXJncyAo
cGh5c25hbWUsIG1ldGhvZG5hbWUsIHN0cmVhbSkNCisgICAgICBjaGFyICpwaHlzbmFtZTsNCisg
ICAgICBjaGFyICptZXRob2RuYW1lOw0KKyAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW07DQor
IHsNCisgICBpbnQgaXNfY29uc3RydWN0b3IgPSBTVFJFUU4gKHBoeXNuYW1lLCAiX19jdF9fIiwg
Nik7DQorICAgaW50IGlzX2Rlc3RydWN0b3IgPSBTVFJFUU4gKHBoeXNuYW1lLCAiX19kdF9fIiwg
Nik7DQorIA0KKyAgIGlmIChpc19jb25zdHJ1Y3RvciB8fCBpc19kZXN0cnVjdG9yKQ0KKyAgICAg
ew0KKyAgICAgICBwaHlzbmFtZSArPSA2Ow0KKyAgICAgfQ0KKyANCisgICBmcHV0c19maWx0ZXJl
ZCAobWV0aG9kbmFtZSwgc3RyZWFtKTsNCisgDQorICAgaWYgKHBoeXNuYW1lICYmICgqcGh5c25h
bWUgIT0gMCkpDQorICAgICB7DQorICAgICAgIGludCBpID0gMDsNCisgICAgICAgaW50IGxlbiA9
IDA7DQorICAgICAgIGNoYXIgc3RvcmVjOw0KKyAgICAgICBjaGFyICphcmduYW1lOw0KKyAgICAg
ICBmcHV0c19maWx0ZXJlZCAoIiAoIiwgc3RyZWFtKTsNCisgICAgICAgLyogd2UgbXVzdCBkZW1h
bmdsZSB0aGlzICovDQorICAgICAgIHdoaWxlIGlzZGlnaXQNCisgCShwaHlzbmFtZVswXSkNCisg
CXsNCisgCSAgd2hpbGUgaXNkaWdpdA0KKyAJICAgIChwaHlzbmFtZVtsZW5dKQ0KKyAJICAgIHsN
CisgCSAgICAgIGxlbisrOw0KKyAJICAgIH0NCisgCSAgaSA9IHN0cnRvbCAocGh5c25hbWUsICZh
cmduYW1lLCAwKTsNCisgCSAgcGh5c25hbWUgKz0gbGVuOw0KKyAJICBzdG9yZWMgPSBwaHlzbmFt
ZVtpXTsNCisgCSAgcGh5c25hbWVbaV0gPSAwOw0KKyAJICBmcHV0c19maWx0ZXJlZCAocGh5c25h
bWUsIHN0cmVhbSk7DQorIAkgIHBoeXNuYW1lW2ldID0gc3RvcmVjOw0KKyAJICBwaHlzbmFtZSAr
PSBpOw0KKyAJICBpZiAocGh5c25hbWVbMF0gIT0gMCkNCisgCSAgICB7DQorIAkgICAgICBmcHV0
c19maWx0ZXJlZCAoIiwgIiwgc3RyZWFtKTsNCisgCSAgICB9DQorIAl9DQorICAgICAgIGZwdXRz
X2ZpbHRlcmVkICgiKSIsIHN0cmVhbSk7DQorICAgICB9DQorIH0NCisgDQorIC8qIFByaW50IGFu
eSBhc3Rlcmlza3Mgb3Igb3Blbi1wYXJlbnRoZXNlcyBuZWVkZWQgYmVmb3JlIHRoZQ0KKyAgICB2
YXJpYWJsZSBuYW1lICh0byBkZXNjcmliZSBpdHMgdHlwZSkuDQorIA0KKyAgICBPbiBvdXRlcm1v
c3QgY2FsbCwgcGFzcyAwIGZvciBQQVNTRURfQV9QVFIuDQorICAgIE9uIG91dGVybW9zdCBjYWxs
LCBTSE9XID4gMCBtZWFucyBzaG91bGQgaWdub3JlDQorICAgIGFueSB0eXBlbmFtZSBmb3IgVFlQ
RSBhbmQgc2hvdyBpdHMgZGV0YWlscy4NCisgICAgU0hPVyBpcyBhbHdheXMgemVybyBvbiByZWN1
cnNpdmUgY2FsbHMuICAqLw0KKyANCisgdm9pZA0KKyBwYXNfdHlwZV9wcmludF92YXJzcGVjX3By
ZWZpeCAodHlwZSwgc3RyZWFtLCBzaG93LCBwYXNzZWRfYV9wdHIpDQorICAgICAgc3RydWN0IHR5
cGUgKnR5cGU7DQorICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbTsNCisgICAgICBpbnQgc2hv
dzsNCisgICAgICBpbnQgcGFzc2VkX2FfcHRyOw0KKyB7DQorICAgY2hhciAqbmFtZTsNCisgICBp
ZiAodHlwZSA9PSAwKQ0KKyAgICAgcmV0dXJuOw0KKyANCisgICBpZiAoVFlQRV9OQU1FICh0eXBl
KSAmJiBzaG93IDw9IDApDQorICAgICByZXR1cm47DQorIA0KKyAgIFFVSVQ7DQorIA0KKyAgIHN3
aXRjaCAoVFlQRV9DT0RFICh0eXBlKSkNCisgICAgIHsNCisgICAgIGNhc2UgVFlQRV9DT0RFX1BU
UjoNCisgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiXiIpOw0KKyAgICAgICBwYXNf
dHlwZV9wcmludF92YXJzcGVjX3ByZWZpeCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVh
bSwgMCwgMSk7DQorICAgICAgIGJyZWFrOwkJCS8qIHBvaW50ZXIgc2hvdWxkIGJlIGhhbmRsZWQg
bm9ybWFsbHkgaW4gcGFzY2FsICovDQorIA0KKyAgICAgY2FzZSBUWVBFX0NPREVfTUVNQkVSOg0K
KyAgICAgICBpZiAocGFzc2VkX2FfcHRyKQ0KKyAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAi
KCIpOw0KKyAgICAgICBwYXNfdHlwZV9wcmludF92YXJzcGVjX3ByZWZpeCAoVFlQRV9UQVJHRVRf
VFlQRSAodHlwZSksIHN0cmVhbSwgMCwgMCk7DQorICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0
cmVhbSwgIiAiKTsNCisgICAgICAgbmFtZSA9IHR5cGVfbmFtZV9ub190YWcgKFRZUEVfRE9NQUlO
X1RZUEUgKHR5cGUpKTsNCisgICAgICAgaWYgKG5hbWUpDQorIAlmcHV0c19maWx0ZXJlZCAobmFt
ZSwgc3RyZWFtKTsNCisgICAgICAgZWxzZQ0KKyAJcGFzX3R5cGVfcHJpbnRfYmFzZSAoVFlQRV9E
T01BSU5fVFlQRSAodHlwZSksIHN0cmVhbSwgMCwgcGFzc2VkX2FfcHRyKTsNCisgICAgICAgZnBy
aW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiOjoiKTsNCisgICAgICAgYnJlYWs7DQorIA0KKyAgICAg
Y2FzZSBUWVBFX0NPREVfTUVUSE9EOg0KKyAgICAgICBpZiAocGFzc2VkX2FfcHRyKQ0KKyAJZnBy
aW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKCIpOw0KKyAgICAgICBpZiAoVFlQRV9DT0RFIChUWVBF
X1RBUkdFVF9UWVBFICh0eXBlKSkgIT0gVFlQRV9DT0RFX1ZPSUQpDQorIAl7DQorIAkgIGZwcmlu
dGZfZmlsdGVyZWQgKHN0cmVhbSwgImZ1bmN0aW9uICAiKTsNCisgCX0NCisgICAgICAgZWxzZQ0K
KyAJew0KKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJwcm9jZWR1cmUgIik7DQorIAl9
DQorIA0KKyAgICAgICBpZiAocGFzc2VkX2FfcHRyKQ0KKyAJew0KKyAJICBmcHJpbnRmX2ZpbHRl
cmVkIChzdHJlYW0sICIgIik7DQorIAkgIHBhc190eXBlX3ByaW50X2Jhc2UgKFRZUEVfRE9NQUlO
X1RZUEUgKHR5cGUpLCBzdHJlYW0sIDAsIHBhc3NlZF9hX3B0cik7DQorIAkgIGZwcmludGZfZmls
dGVyZWQgKHN0cmVhbSwgIjo6Iik7DQorIAl9DQorICAgICAgIGJyZWFrOw0KKyANCisgICAgIGNh
c2UgVFlQRV9DT0RFX1JFRjoNCisgICAgICAgcGFzX3R5cGVfcHJpbnRfdmFyc3BlY19wcmVmaXgg
KFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBzdHJlYW0sIDAsIDEpOw0KKyAgICAgICBmcHJpbnRm
X2ZpbHRlcmVkIChzdHJlYW0sICImIik7DQorICAgICAgIGJyZWFrOw0KKyANCisgICAgIGNhc2Ug
VFlQRV9DT0RFX0ZVTkM6DQorICAgICAgIGlmIChwYXNzZWRfYV9wdHIpDQorIAlmcHJpbnRmX2Zp
bHRlcmVkIChzdHJlYW0sICIoIik7DQorIA0KKyAgICAgICBpZiAoVFlQRV9DT0RFIChUWVBFX1RB
UkdFVF9UWVBFICh0eXBlKSkgIT0gVFlQRV9DT0RFX1ZPSUQpDQorIAl7DQorIAkgIGZwcmludGZf
ZmlsdGVyZWQgKHN0cmVhbSwgImZ1bmN0aW9uICAiKTsNCisgCX0NCisgICAgICAgZWxzZQ0KKyAJ
ew0KKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJwcm9jZWR1cmUgIik7DQorIAl9DQor
IA0KKyAgICAgICBicmVhazsNCisgDQorICAgICBjYXNlIFRZUEVfQ09ERV9BUlJBWToNCisgICAg
ICAgaWYgKHBhc3NlZF9hX3B0cikNCisgCWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIigiKTsN
CisgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiYXJyYXkgIik7DQorICAgICAgIGlm
IChUWVBFX0xFTkdUSCAodHlwZSkgPj0gMCAmJiBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQ
RSAodHlwZSkpID4gMA0KKyAJJiYgVFlQRV9BUlJBWV9VUFBFUl9CT1VORF9UWVBFICh0eXBlKSAh
PSBCT1VORF9DQU5OT1RfQkVfREVURVJNSU5FRCkNCisgCWZwcmludGZfZmlsdGVyZWQgKHN0cmVh
bSwgIlslZC4uJWRdICIsDQorIAkJCSAgVFlQRV9BUlJBWV9MT1dFUl9CT1VORF9WQUxVRSAodHlw
ZSksDQorIAkJCSAgVFlQRV9BUlJBWV9VUFBFUl9CT1VORF9WQUxVRSAodHlwZSkNCisgCSAgKTsN
CisgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAib2YgIik7DQorICAgICAgIGJyZWFr
Ow0KKyANCisgICAgIGNhc2UgVFlQRV9DT0RFX1VOREVGOg0KKyAgICAgY2FzZSBUWVBFX0NPREVf
U1RSVUNUOg0KKyAgICAgY2FzZSBUWVBFX0NPREVfVU5JT046DQorICAgICBjYXNlIFRZUEVfQ09E
RV9FTlVNOg0KKyAgICAgY2FzZSBUWVBFX0NPREVfSU5UOg0KKyAgICAgY2FzZSBUWVBFX0NPREVf
RkxUOg0KKyAgICAgY2FzZSBUWVBFX0NPREVfVk9JRDoNCisgICAgIGNhc2UgVFlQRV9DT0RFX0VS
Uk9SOg0KKyAgICAgY2FzZSBUWVBFX0NPREVfQ0hBUjoNCisgICAgIGNhc2UgVFlQRV9DT0RFX0JP
T0w6DQorICAgICBjYXNlIFRZUEVfQ09ERV9TRVQ6DQorICAgICBjYXNlIFRZUEVfQ09ERV9SQU5H
RToNCisgICAgIGNhc2UgVFlQRV9DT0RFX1NUUklORzoNCisgICAgIGNhc2UgVFlQRV9DT0RFX0JJ
VFNUUklORzoNCisgICAgIGNhc2UgVFlQRV9DT0RFX0NPTVBMRVg6DQorICAgICBjYXNlIFRZUEVf
Q09ERV9UWVBFREVGOg0KKyAgICAgY2FzZSBUWVBFX0NPREVfVEVNUExBVEU6DQorICAgICAgIC8q
IFRoZXNlIHR5cGVzIG5lZWQgbm8gcHJlZml4LiAgVGhleSBhcmUgbGlzdGVkIGhlcmUgc28gdGhh
dA0KKyAgICAgICAgICBnY2MgLVdhbGwgd2lsbCByZXZlYWwgYW55IHR5cGVzIHRoYXQgaGF2ZW4n
dCBiZWVuIGhhbmRsZWQuICAqLw0KKyAgICAgICBicmVhazsNCisgICAgIGRlZmF1bHQ6DQorICAg
ICAgIGVycm9yICgidHlwZSBub3QgaGFuZGxlZCBpbiBwYXNfdHlwZV9wcmludF92YXJzcGVjX3By
ZWZpeCgpIik7DQorICAgICAgIGJyZWFrOw0KKyAgICAgfQ0KKyB9DQorIA0KKyBzdGF0aWMgdm9p
ZA0KKyBwYXNfdHlwZV9wcmludF9hcmdzICh0eXBlLCBzdHJlYW0pDQorICAgICAgc3RydWN0IHR5
cGUgKnR5cGU7DQorICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbTsNCisgew0KKyAgIGludCBp
Ow0KKyAgIHN0cnVjdCB0eXBlICoqYXJnczsNCisgDQorICAgLyogIGZwcmludGZfZmlsdGVyZWQg
KHN0cmVhbSwgIigiKTsNCisgICAgICBubyAoKSBmb3IgcHJvY2VkdXJlcyAhISAqLw0KKyAgIGFy
Z3MgPSBUWVBFX0FSR19UWVBFUyAodHlwZSk7DQorICAgaWYgKGFyZ3MgIT0gTlVMTCkNCisgICAg
IHsNCisgICAgICAgaWYgKChhcmdzWzFdICE9IE5VTEwgJiYgYXJnc1sxXS0+Y29kZSAhPSBUWVBF
X0NPREVfVk9JRCkgfHwNCisgCSAgKGFyZ3NbMl0gIT0gTlVMTCkpDQorIAl7DQorIAkgIGZwcmlu
dGZfZmlsdGVyZWQgKHN0cmVhbSwgIigiKTsNCisgCX0NCisgICAgICAgaWYgKGFyZ3NbMV0gPT0g
TlVMTCkNCisgCXsNCisgCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLi4uIik7DQorIAl9
DQorICAgICAgIGVsc2UNCisgCXsNCisgCSAgZm9yIChpID0gMTsNCisgCSAgICAgICBhcmdzW2ld
ICE9IE5VTEwgJiYgYXJnc1tpXS0+Y29kZSAhPSBUWVBFX0NPREVfVk9JRDsNCisgCSAgICAgICBp
KyspDQorIAkgICAgew0KKyAJICAgICAgcGFzX3ByaW50X3R5cGUgKGFyZ3NbaV0sICIiLCBzdHJl
YW0sIC0xLCAwKTsNCisgCSAgICAgIGlmIChhcmdzW2kgKyAxXSA9PSBOVUxMKQ0KKyAJCXsNCisg
CQkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIi4uLiIpOw0KKyAJCX0NCisgCSAgICAgIGVs
c2UgaWYgKGFyZ3NbaSArIDFdLT5jb2RlICE9IFRZUEVfQ09ERV9WT0lEKQ0KKyAJCXsNCisgCQkg
IGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiwiKTsNCisgCQkgIHdyYXBfaGVyZSAoIiAgICAi
KTsNCisgCQl9DQorIAkgICAgfQ0KKyAJfQ0KKyAgICAgICBpZiAoKGFyZ3NbMV0gIT0gTlVMTCAm
JiBhcmdzWzFdLT5jb2RlICE9IFRZUEVfQ09ERV9WT0lEKSB8fA0KKyAJICAoYXJnc1syXSAhPSBO
VUxMKSkNCisgCXsNCisgCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSIpOw0KKyAJfQ0K
KyAgICAgfQ0KKyB9DQorIA0KKyBzdGF0aWMgdm9pZA0KKyBwYXNfcHJpbnRfZnVuY19hcmdzIChz
dHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkNCisgew0KKyAgIGludCBp
LCBsZW4gPSBUWVBFX05GSUVMRFMgKHR5cGUpOw0KKyAgIGlmIChsZW4pDQorICAgICB7DQorICAg
ICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIigiKTsNCisgICAgIH0NCisgICBmb3IgKGkg
PSAwOyBpIDwgbGVuOyBpKyspDQorICAgICB7DQorICAgICAgIGlmIChpID4gMCkNCisgCXsNCisg
CSAgZnB1dHNfZmlsdGVyZWQgKCIsICIsIHN0cmVhbSk7DQorIAkgIHdyYXBfaGVyZSAoIiAgICAi
KTsNCisgCX0NCisgICAgICAgLyogIGNhbiB3ZSBmaW5kIGlmIGl0IGlzIGEgdmFyIHBhcmFtZXRl
ciA/Pw0KKyAgICAgICAgICBpZiAoIFRZUEVfRklFTEQodHlwZSwgaSkgPT0gKQ0KKyAgICAgICAg
ICB7DQorICAgICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgInZhciAiKTsNCisgICAg
ICAgICAgfSAqLw0KKyAgICAgICBwYXNfcHJpbnRfdHlwZSAoVFlQRV9GSUVMRF9UWVBFICh0eXBl
LCBpKSwgIiIJLyogVFlQRV9GSUVMRF9OQU1FIHNlZW1zIGludmFsaWQgISAqLw0KKyAJCSAgICAg
ICxzdHJlYW0sIC0xLCAwKTsNCisgICAgIH0NCisgICBpZiAobGVuKQ0KKyAgICAgew0KKyAgICAg
ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpIik7DQorICAgICB9DQorIH0NCisgDQorIC8q
IFByaW50IGFueSBhcnJheSBzaXplcywgZnVuY3Rpb24gYXJndW1lbnRzIG9yIGNsb3NlIHBhcmVu
dGhlc2VzDQorICAgIG5lZWRlZCBhZnRlciB0aGUgdmFyaWFibGUgbmFtZSAodG8gZGVzY3JpYmUg
aXRzIHR5cGUpLg0KKyAgICBBcmdzIHdvcmsgbGlrZSBwYXNfdHlwZV9wcmludF92YXJzcGVjX3By
ZWZpeC4gICovDQorIA0KKyBzdGF0aWMgdm9pZA0KKyBwYXNfdHlwZV9wcmludF92YXJzcGVjX3N1
ZmZpeCAodHlwZSwgc3RyZWFtLCBzaG93LCBwYXNzZWRfYV9wdHIsIGRlbWFuZ2xlZF9hcmdzKQ0K
KyAgICAgIHN0cnVjdCB0eXBlICp0eXBlOw0KKyAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW07
DQorICAgICAgaW50IHNob3c7DQorICAgICAgaW50IHBhc3NlZF9hX3B0cjsNCisgICAgICBpbnQg
ZGVtYW5nbGVkX2FyZ3M7DQorIHsNCisgICBpZiAodHlwZSA9PSAwKQ0KKyAgICAgcmV0dXJuOw0K
KyANCisgICBpZiAoVFlQRV9OQU1FICh0eXBlKSAmJiBzaG93IDw9IDApDQorICAgICByZXR1cm47
DQorIA0KKyAgIFFVSVQ7DQorIA0KKyAgIHN3aXRjaCAoVFlQRV9DT0RFICh0eXBlKSkNCisgICAg
IHsNCisgICAgIGNhc2UgVFlQRV9DT0RFX0FSUkFZOg0KKyAgICAgICBpZiAocGFzc2VkX2FfcHRy
KQ0KKyAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSIpOw0KKyAgICAgICBicmVhazsNCisg
DQorICAgICBjYXNlIFRZUEVfQ09ERV9NRU1CRVI6DQorICAgICAgIGlmIChwYXNzZWRfYV9wdHIp
DQorIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpIik7DQorICAgICAgIHBhc190eXBlX3By
aW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgc3RyZWFtLCAwLCAw
LCAwKTsNCisgICAgICAgYnJlYWs7DQorIA0KKyAgICAgY2FzZSBUWVBFX0NPREVfTUVUSE9EOg0K
KyAgICAgICBpZiAocGFzc2VkX2FfcHRyKQ0KKyAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAi
KSIpOw0KKyAgICAgICBwYXNfdHlwZV9wcmludF9tZXRob2RfYXJncyAoIiIsDQorIAkJCQkgICIi
LA0KKyAJCQkJICBzdHJlYW0pOw0KKyAgICAgICAvKiBwYXNfdHlwZV9wcmludF9hcmdzICh0eXBl
LCBzdHJlYW0pOyAqLw0KKyAgICAgICBpZiAoVFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh0
eXBlKSkgIT0gVFlQRV9DT0RFX1ZPSUQpDQorIAl7DQorIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0
cmVhbSwgIiA6ICIpOw0KKyAJICBwYXNfdHlwZV9wcmludF92YXJzcGVjX3ByZWZpeCAoVFlQRV9U
QVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwgMCk7DQorIAkgIHBhc190eXBlX3ByaW50X2Jh
c2UgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBzdHJlYW0sIHNob3csIDApOw0KKyAJICBwYXNf
dHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVh
bSwgMCwNCisgCQkJCQkgcGFzc2VkX2FfcHRyLCAwKTsNCisgCX0NCisgICAgICAgYnJlYWs7DQor
IA0KKyAgICAgY2FzZSBUWVBFX0NPREVfUFRSOg0KKyAgICAgY2FzZSBUWVBFX0NPREVfUkVGOg0K
KyAgICAgICBwYXNfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoVFlQRV9UQVJHRVRfVFlQRSAo
dHlwZSksIHN0cmVhbSwgMCwgMSwgMCk7DQorICAgICAgIGJyZWFrOw0KKyANCisgICAgIGNhc2Ug
VFlQRV9DT0RFX0ZVTkM6DQorICAgICAgIGlmIChwYXNzZWRfYV9wdHIpDQorIAlmcHJpbnRmX2Zp
bHRlcmVkIChzdHJlYW0sICIpIik7DQorICAgICAgIGlmICghZGVtYW5nbGVkX2FyZ3MpDQorIAlw
YXNfcHJpbnRfZnVuY19hcmdzICh0eXBlLCBzdHJlYW0pOw0KKyAgICAgICBpZiAoVFlQRV9DT0RF
IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgIT0gVFlQRV9DT0RFX1ZPSUQpDQorIAl7DQorIAkg
IGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiA6ICIpOw0KKyAJICBwYXNfdHlwZV9wcmludF92
YXJzcGVjX3ByZWZpeCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwgMCk7DQor
IAkgIHBhc190eXBlX3ByaW50X2Jhc2UgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBzdHJlYW0s
IHNob3csIDApOw0KKyAJICBwYXNfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoVFlQRV9UQVJH
RVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwNCisgCQkJCQkgcGFzc2VkX2FfcHRyLCAwKTsNCisg
CX0NCisgICAgICAgYnJlYWs7DQorIA0KKyAgICAgY2FzZSBUWVBFX0NPREVfVU5ERUY6DQorICAg
ICBjYXNlIFRZUEVfQ09ERV9TVFJVQ1Q6DQorICAgICBjYXNlIFRZUEVfQ09ERV9VTklPTjoNCisg
ICAgIGNhc2UgVFlQRV9DT0RFX0VOVU06DQorICAgICBjYXNlIFRZUEVfQ09ERV9JTlQ6DQorICAg
ICBjYXNlIFRZUEVfQ09ERV9GTFQ6DQorICAgICBjYXNlIFRZUEVfQ09ERV9WT0lEOg0KKyAgICAg
Y2FzZSBUWVBFX0NPREVfRVJST1I6DQorICAgICBjYXNlIFRZUEVfQ09ERV9DSEFSOg0KKyAgICAg
Y2FzZSBUWVBFX0NPREVfQk9PTDoNCisgICAgIGNhc2UgVFlQRV9DT0RFX1NFVDoNCisgICAgIGNh
c2UgVFlQRV9DT0RFX1JBTkdFOg0KKyAgICAgY2FzZSBUWVBFX0NPREVfU1RSSU5HOg0KKyAgICAg
Y2FzZSBUWVBFX0NPREVfQklUU1RSSU5HOg0KKyAgICAgY2FzZSBUWVBFX0NPREVfQ09NUExFWDoN
CisgICAgIGNhc2UgVFlQRV9DT0RFX1RZUEVERUY6DQorICAgICBjYXNlIFRZUEVfQ09ERV9URU1Q
TEFURToNCisgICAgICAgLyogVGhlc2UgdHlwZXMgZG8gbm90IG5lZWQgYSBzdWZmaXguICBUaGV5
IGFyZSBsaXN0ZWQgc28gdGhhdA0KKyAgICAgICAgICBnY2MgLVdhbGwgd2lsbCByZXBvcnQgdHlw
ZXMgdGhhdCBtYXkgbm90IGhhdmUgYmVlbiBjb25zaWRlcmVkLiAgKi8NCisgICAgICAgYnJlYWs7
DQorICAgICBkZWZhdWx0Og0KKyAgICAgICBlcnJvciAoInR5cGUgbm90IGhhbmRsZWQgaW4gcGFz
X3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXgoKSIpOw0KKyAgICAgICBicmVhazsNCisgICAgIH0N
CisgfQ0KKyANCisgLyogUHJpbnQgdGhlIG5hbWUgb2YgdGhlIHR5cGUgKG9yIHRoZSB1bHRpbWF0
ZSBwb2ludGVyIHRhcmdldCwNCisgICAgZnVuY3Rpb24gdmFsdWUgb3IgYXJyYXkgZWxlbWVudCks
IG9yIHRoZSBkZXNjcmlwdGlvbiBvZiBhDQorICAgIHN0cnVjdHVyZSBvciB1bmlvbi4NCisgDQor
ICAgIFNIT1cgcG9zaXRpdmUgbWVhbnMgcHJpbnQgZGV0YWlscyBhYm91dCB0aGUgdHlwZSAoZS5n
LiBlbnVtIHZhbHVlcyksDQorICAgIGFuZCBwcmludCBzdHJ1Y3R1cmUgZWxlbWVudHMgcGFzc2lu
ZyBTSE9XIC0gMSBmb3Igc2hvdy4NCisgICAgU0hPVyBuZWdhdGl2ZSBtZWFucyBqdXN0IHByaW50
IHRoZSB0eXBlIG5hbWUgb3Igc3RydWN0IHRhZyBpZiB0aGVyZSBpcyBvbmUuDQorICAgIElmIHRo
ZXJlIGlzIG5vIG5hbWUsIHByaW50IHNvbWV0aGluZyBzZW5zaWJsZSBidXQgY29uY2lzZSBsaWtl
DQorICAgICJzdHJ1Y3Qgey4uLn0iLg0KKyAgICBTSE9XIHplcm8gbWVhbnMganVzdCBwcmludCB0
aGUgdHlwZSBuYW1lIG9yIHN0cnVjdCB0YWcgaWYgdGhlcmUgaXMgb25lLg0KKyAgICBJZiB0aGVy
ZSBpcyBubyBuYW1lLCBwcmludCBzb21ldGhpbmcgc2Vuc2libGUgYnV0IG5vdCBhcyBjb25jaXNl
IGxpa2UNCisgICAgInN0cnVjdCB7aW50IHg7IGludCB5O30iLg0KKyANCisgICAgTEVWRUwgaXMg
dGhlIG51bWJlciBvZiBzcGFjZXMgdG8gaW5kZW50IGJ5Lg0KKyAgICBXZSBpbmNyZWFzZSBpdCBm
b3Igc29tZSByZWN1cnNpdmUgY2FsbHMuICAqLw0KKyANCisgdm9pZA0KKyBwYXNfdHlwZV9wcmlu
dF9iYXNlICh0eXBlLCBzdHJlYW0sIHNob3csIGxldmVsKQ0KKyAgICAgIHN0cnVjdCB0eXBlICp0
eXBlOw0KKyAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW07DQorICAgICAgaW50IHNob3c7DQor
ICAgICAgaW50IGxldmVsOw0KKyB7DQorICAgcmVnaXN0ZXIgaW50IGk7DQorICAgcmVnaXN0ZXIg
aW50IGxlbjsNCisgICByZWdpc3RlciBpbnQgbGFzdHZhbDsNCisgICBlbnVtDQorICAgICB7DQor
ICAgICAgIHNfbm9uZSwgc19wdWJsaWMsIHNfcHJpdmF0ZSwgc19wcm90ZWN0ZWQNCisgICAgIH0N
CisgICBzZWN0aW9uX3R5cGU7DQorICAgUVVJVDsNCisgDQorICAgd3JhcF9oZXJlICgiICAgICIp
Ow0KKyAgIGlmICh0eXBlID09IE5VTEwpDQorICAgICB7DQorICAgICAgIGZwdXRzX2ZpbHRlcmVk
ICgiPHR5cGUgdW5rbm93bj4iLCBzdHJlYW0pOw0KKyAgICAgICByZXR1cm47DQorICAgICB9DQor
IA0KKyAgIC8qIHZvaWQgcG9pbnRlciAqLw0KKyAgIGlmICgoVFlQRV9DT0RFICh0eXBlKSA9PSBU
WVBFX0NPREVfUFRSKSAmJiAoVFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgPT0g
VFlQRV9DT0RFX1ZPSUQpKQ0KKyAgICAgew0KKyAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJl
YW0sDQorIAkJCVRZUEVfTkFNRSAodHlwZSkgPyBUWVBFX05BTUUgKHR5cGUpIDogInBvaW50ZXIi
KTsNCisgICAgICAgcmV0dXJuOw0KKyAgICAgfQ0KKyAgIC8qIFdoZW4gU0hPVyBpcyB6ZXJvIG9y
IGxlc3MsIGFuZCB0aGVyZSBpcyBhIHZhbGlkIHR5cGUgbmFtZSwgdGhlbiBhbHdheXMNCisgICAg
ICBqdXN0IHByaW50IHRoZSB0eXBlIG5hbWUgZGlyZWN0bHkgZnJvbSB0aGUgdHlwZS4gICovDQor
ICAgLyogSWYgd2UgaGF2ZSAidHlwZWRlZiBzdHJ1Y3QgZm9vIHsuIC4gLn0gYmFyOyIgZG8gd2Ug
d2FudCB0byBwcmludCBpdA0KKyAgICAgIGFzICJzdHJ1Y3QgZm9vIiBvciBhcyAiYmFyIj8gIFBp
Y2sgdGhlIGxhdHRlciwgYmVjYXVzZSBDKysgZm9sayB0ZW5kDQorICAgICAgdG8gZXhwZWN0IHRo
aW5ncyBsaWtlICJjbGFzczUgKmZvbyIgcmF0aGVyIHRoYW4gInN0cnVjdCBjbGFzczUgKmZvbyIu
ICAqLw0KKyANCisgICBpZiAoc2hvdyA8PSAwDQorICAgICAgICYmIFRZUEVfTkFNRSAodHlwZSkg
IT0gTlVMTCkNCisgICAgIHsNCisgICAgICAgZnB1dHNfZmlsdGVyZWQgKFRZUEVfTkFNRSAodHlw
ZSksIHN0cmVhbSk7DQorICAgICAgIHJldHVybjsNCisgICAgIH0NCisgDQorICAgQ0hFQ0tfVFlQ
RURFRiAodHlwZSk7DQorIA0KKyAgIHN3aXRjaCAoVFlQRV9DT0RFICh0eXBlKSkNCisgICAgIHsN
CisgICAgIGNhc2UgVFlQRV9DT0RFX1RZUEVERUY6DQorICAgICBjYXNlIFRZUEVfQ09ERV9QVFI6
DQorICAgICBjYXNlIFRZUEVfQ09ERV9NRU1CRVI6DQorICAgICBjYXNlIFRZUEVfQ09ERV9SRUY6
DQorICAgICAgIC8qIGNhc2UgVFlQRV9DT0RFX0ZVTkM6DQorICAgICAgICAgIGNhc2UgVFlQRV9D
T0RFX01FVEhPRDogKi8NCisgICAgICAgcGFzX3R5cGVfcHJpbnRfYmFzZSAoVFlQRV9UQVJHRVRf
VFlQRSAodHlwZSksIHN0cmVhbSwgc2hvdywgbGV2ZWwpOw0KKyAgICAgICBicmVhazsNCisgDQor
ICAgICBjYXNlIFRZUEVfQ09ERV9BUlJBWToNCisgICAgICAgLyogcGFzX3R5cGVfcHJpbnRfdmFy
c3BlY19wcmVmaXggKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBzdHJlYW0sIDAsIDApOw0KKyAg
ICAgICAgICBwYXNfdHlwZV9wcmludF9iYXNlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgc3Ry
ZWFtLCBzaG93LCBsZXZlbCk7DQorICAgICAgICAgIHBhc190eXBlX3ByaW50X3ZhcnNwZWNfc3Vm
Zml4IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgc3RyZWFtLCAwLCAwLCAwKTsgKi8NCisgICAg
ICAgcGFzX3ByaW50X3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBOVUxMLCBzdHJlYW0s
IDAsIDApOw0KKyAgICAgICBicmVhazsNCisgDQorICAgICBjYXNlIFRZUEVfQ09ERV9GVU5DOg0K
KyAgICAgY2FzZSBUWVBFX0NPREVfTUVUSE9EOg0KKyAgICAgICAvKg0KKyAgICAgICAgICBwYXNf
dHlwZV9wcmludF9iYXNlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgc3RyZWFtLCBzaG93LCBs
ZXZlbCk7DQorICAgICAgICAgIG9ubHkgYWZ0ZXIgYXJncyAhISAqLw0KKyAgICAgICBicmVhazsN
CisgICAgIGNhc2UgVFlQRV9DT0RFX1NUUlVDVDoNCisgICAgICAgaWYgKFRZUEVfVEFHX05BTUUg
KHR5cGUpICE9IE5VTEwpDQorIAl7DQorIAkgIGZwdXRzX2ZpbHRlcmVkIChUWVBFX1RBR19OQU1F
ICh0eXBlKSwgc3RyZWFtKTsNCisgCSAgZnB1dHNfZmlsdGVyZWQgKCIgPSAiLCBzdHJlYW0pOw0K
KyAJfQ0KKyAgICAgICBpZiAoSEFWRV9DUExVU19TVFJVQ1QgKHR5cGUpKQ0KKyAJew0KKyAJICBm
cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJjbGFzcyAiKTsNCisgCX0NCisgICAgICAgZWxzZQ0K
KyAJew0KKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJyZWNvcmQgIik7DQorIAl9DQor
ICAgICAgIGdvdG8gc3RydWN0X3VuaW9uOw0KKyANCisgICAgIGNhc2UgVFlQRV9DT0RFX1VOSU9O
Og0KKyAgICAgICBpZiAoVFlQRV9UQUdfTkFNRSAodHlwZSkgIT0gTlVMTCkNCisgCXsNCisgCSAg
ZnB1dHNfZmlsdGVyZWQgKFRZUEVfVEFHX05BTUUgKHR5cGUpLCBzdHJlYW0pOw0KKyAJICBmcHV0
c19maWx0ZXJlZCAoIiA9ICIsIHN0cmVhbSk7DQorIAl9DQorICAgICAgIGZwcmludGZfZmlsdGVy
ZWQgKHN0cmVhbSwgImNhc2UgPD8+IG9mICIpOw0KKyANCisgICAgIHN0cnVjdF91bmlvbjoNCisg
ICAgICAgd3JhcF9oZXJlICgiICAgICIpOw0KKyAgICAgICBpZiAoc2hvdyA8IDApDQorIAl7DQor
IAkgIC8qIElmIHdlIGp1c3QgcHJpbnRlZCBhIHRhZyBuYW1lLCBubyBuZWVkIHRvIHByaW50IGFu
eXRoaW5nIGVsc2UuICAqLw0KKyAJICBpZiAoVFlQRV9UQUdfTkFNRSAodHlwZSkgPT0gTlVMTCkN
CisgCSAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ7Li4ufSIpOw0KKyAJfQ0KKyAgICAg
ICBlbHNlIGlmIChzaG93ID4gMCB8fCBUWVBFX1RBR19OQU1FICh0eXBlKSA9PSBOVUxMKQ0KKyAJ
ew0KKyAJICBwY3Bhc190eXBlX3ByaW50X2Rlcml2YXRpb25faW5mbyAoc3RyZWFtLCB0eXBlKTsN
CisgDQorIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIlxuIik7DQorIAkgIGlmICgoVFlQ
RV9ORklFTERTICh0eXBlKSA9PSAwKSAmJiAoVFlQRV9ORk5fRklFTERTICh0eXBlKSA9PSAwKSkN
CisgCSAgICB7DQorIAkgICAgICBpZiAoVFlQRV9GTEFHUyAodHlwZSkgJiBUWVBFX0ZMQUdfU1RV
QikNCisgCQlmcHJpbnRmaV9maWx0ZXJlZCAobGV2ZWwgKyA0LCBzdHJlYW0sICI8aW5jb21wbGV0
ZSB0eXBlPlxuIik7DQorIAkgICAgICBlbHNlDQorIAkJZnByaW50ZmlfZmlsdGVyZWQgKGxldmVs
ICsgNCwgc3RyZWFtLCAiPG5vIGRhdGEgZmllbGRzPlxuIik7DQorIAkgICAgfQ0KKyANCisgCSAg
LyogU3RhcnQgb2ZmIHdpdGggbm8gc3BlY2lmaWMgc2VjdGlvbiB0eXBlLCBzbyB3ZSBjYW4gcHJp
bnQNCisgCSAgICAgb25lIGZvciB0aGUgZmlyc3QgZmllbGQgd2UgZmluZCwgYW5kIHVzZSB0aGF0
IHNlY3Rpb24gdHlwZQ0KKyAJICAgICB0aGVyZWFmdGVyIHVudGlsIHdlIGZpbmQgYW5vdGhlciB0
eXBlLiAqLw0KKyANCisgCSAgc2VjdGlvbl90eXBlID0gc19ub25lOw0KKyANCisgCSAgLyogSWYg
dGhlcmUgaXMgYSBiYXNlIGNsYXNzIGZvciB0aGlzIHR5cGUsDQorIAkgICAgIGRvIG5vdCBwcmlu
dCB0aGUgZmllbGQgdGhhdCBpdCBvY2N1cGllcy4gICovDQorIA0KKyAJICBsZW4gPSBUWVBFX05G
SUVMRFMgKHR5cGUpOw0KKyAJICBmb3IgKGkgPSBUWVBFX05fQkFTRUNMQVNTRVMgKHR5cGUpOyBp
IDwgbGVuOyBpKyspDQorIAkgICAgew0KKyAJICAgICAgUVVJVDsNCisgCSAgICAgIC8qIERvbid0
IHByaW50IG91dCB2aXJ0dWFsIGZ1bmN0aW9uIHRhYmxlLiAgKi8NCisgCSAgICAgIGlmIChTVFJF
UU4gKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSksICJfdnB0ciIsIDUpDQorIAkJICAmJiBpc19j
cGx1c19tYXJrZXIgKChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpKVs1XSkpDQorIAkJY29udGlu
dWU7DQorIA0KKyAJICAgICAgLyogSWYgdGhpcyBpcyBhIEMrKyBjbGFzcyB3ZSBjYW4gcHJpbnQg
dGhlIHZhcmlvdXMgQysrIHNlY3Rpb24NCisgCSAgICAgICAgIGxhYmVscy4gKi8NCisgDQorIAkg
ICAgICBpZiAoSEFWRV9DUExVU19TVFJVQ1QgKHR5cGUpKQ0KKyAJCXsNCisgCQkgIGlmIChUWVBF
X0ZJRUxEX1BST1RFQ1RFRCAodHlwZSwgaSkpDQorIAkJICAgIHsNCisgCQkgICAgICBpZiAoc2Vj
dGlvbl90eXBlICE9IHNfcHJvdGVjdGVkKQ0KKyAJCQl7DQorIAkJCSAgc2VjdGlvbl90eXBlID0g
c19wcm90ZWN0ZWQ7DQorIAkJCSAgZnByaW50ZmlfZmlsdGVyZWQgKGxldmVsICsgMiwgc3RyZWFt
LA0KKyAJCQkJCSAgICAgInByb3RlY3RlZFxuIik7DQorIAkJCX0NCisgCQkgICAgfQ0KKyAJCSAg
ZWxzZSBpZiAoVFlQRV9GSUVMRF9QUklWQVRFICh0eXBlLCBpKSkNCisgCQkgICAgew0KKyAJCSAg
ICAgIGlmIChzZWN0aW9uX3R5cGUgIT0gc19wcml2YXRlKQ0KKyAJCQl7DQorIAkJCSAgc2VjdGlv
bl90eXBlID0gc19wcml2YXRlOw0KKyAJCQkgIGZwcmludGZpX2ZpbHRlcmVkIChsZXZlbCArIDIs
IHN0cmVhbSwgInByaXZhdGVcbiIpOw0KKyAJCQl9DQorIAkJICAgIH0NCisgCQkgIGVsc2UNCisg
CQkgICAgew0KKyAJCSAgICAgIGlmIChzZWN0aW9uX3R5cGUgIT0gc19wdWJsaWMpDQorIAkJCXsN
CisgCQkJICBzZWN0aW9uX3R5cGUgPSBzX3B1YmxpYzsNCisgCQkJICBmcHJpbnRmaV9maWx0ZXJl
ZCAobGV2ZWwgKyAyLCBzdHJlYW0sICJwdWJsaWNcbiIpOw0KKyAJCQl9DQorIAkJICAgIH0NCisg
CQl9DQorIA0KKyAJICAgICAgcHJpbnRfc3BhY2VzX2ZpbHRlcmVkIChsZXZlbCArIDQsIHN0cmVh
bSk7DQorIAkgICAgICBpZiAoVFlQRV9GSUVMRF9TVEFUSUMgKHR5cGUsIGkpKQ0KKyAJCXsNCisg
CQkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgInN0YXRpYyAiKTsNCisgCQl9DQorIAkgICAg
ICBwYXNfcHJpbnRfdHlwZSAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSwNCisgCQkJICAgICAg
VFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKSwNCisgCQkJICAgICAgc3RyZWFtLCBzaG93IC0gMSwg
bGV2ZWwgKyA0KTsNCisgCSAgICAgIGlmICghVFlQRV9GSUVMRF9TVEFUSUMgKHR5cGUsIGkpDQor
IAkJICAmJiBUWVBFX0ZJRUxEX1BBQ0tFRCAodHlwZSwgaSkpDQorIAkJew0KKyAJCSAgLyogSXQg
aXMgYSBiaXRmaWVsZC4gIFRoaXMgY29kZSBkb2VzIG5vdCBhdHRlbXB0DQorIAkJICAgICB0byBs
b29rIGF0IHRoZSBiaXRwb3MgYW5kIHJlY29uc3RydWN0IGZpbGxlciwNCisgCQkgICAgIHVubmFt
ZWQgZmllbGRzLiAgVGhpcyB3b3VsZCBsZWFkIHRvIG1pc2xlYWRpbmcNCisgCQkgICAgIHJlc3Vs
dHMgaWYgdGhlIGNvbXBpbGVyIGRvZXMgbm90IHB1dCBvdXQgZmllbGRzDQorIAkJICAgICBmb3Ig
c3VjaCB0aGluZ3MgKEkgZG9uJ3Qga25vdyB3aGF0IGl0IGRvZXMpLiAgKi8NCisgCQkgIGZwcmlu
dGZfZmlsdGVyZWQgKHN0cmVhbSwgIiA6ICVkIiwNCisgCQkJCSAgICBUWVBFX0ZJRUxEX0JJVFNJ
WkUgKHR5cGUsIGkpKTsNCisgCQl9DQorIAkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0s
ICI7XG4iKTsNCisgCSAgICB9DQorIA0KKyAJICAvKiBJZiB0aGVyZSBhcmUgYm90aCBmaWVsZHMg
YW5kIG1ldGhvZHMsIHB1dCBhIHNwYWNlIGJldHdlZW4uICovDQorIAkgIGxlbiA9IFRZUEVfTkZO
X0ZJRUxEUyAodHlwZSk7DQorIAkgIGlmIChsZW4gJiYgc2VjdGlvbl90eXBlICE9IHNfbm9uZSkN
CisgCSAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJcbiIpOw0KKyANCisgCSAgLyogQysr
OiBwcmludCBvdXQgdGhlIG1ldGhvZHMgKi8NCisgDQorIAkgIGZvciAoaSA9IDA7IGkgPCBsZW47
IGkrKykNCisgCSAgICB7DQorIAkgICAgICBzdHJ1Y3QgZm5fZmllbGQgKmYgPSBUWVBFX0ZOX0ZJ
RUxETElTVDEgKHR5cGUsIGkpOw0KKyAJICAgICAgaW50IGosIGxlbjIgPSBUWVBFX0ZOX0ZJRUxE
TElTVF9MRU5HVEggKHR5cGUsIGkpOw0KKyAJICAgICAgY2hhciAqbWV0aG9kX25hbWUgPSBUWVBF
X0ZOX0ZJRUxETElTVF9OQU1FICh0eXBlLCBpKTsNCisgCSAgICAgIGNoYXIgKm5hbWUgPSB0eXBl
X25hbWVfbm9fdGFnICh0eXBlKTsNCisgCSAgICAgIC8qIHRoaXMgaXMgQysrIHNwZWNpZmljDQor
IAkgICAgICAgICBob3cgY2FuIHdlIGtub3cgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciA/PyAqLw0K
KyAJICAgICAgZm9yIChqID0gMDsgaiA8IGxlbjI7IGorKykNCisgCQl7DQorIAkJICBjaGFyICpw
aHlzbmFtZSA9IFRZUEVfRk5fRklFTERfUEhZU05BTUUgKGYsIGopOw0KKyANCisgCQkgIGludCBp
c19jb25zdHJ1Y3RvciA9IFNUUkVRTiAocGh5c25hbWUsICJfX2N0X18iLCA2KTsNCisgCQkgIGlu
dCBpc19kZXN0cnVjdG9yID0gU1RSRVFOIChwaHlzbmFtZSwgIl9fZHRfXyIsIDYpOw0KKyANCisg
CQkgIFFVSVQ7DQorIAkJICBpZiAoVFlQRV9GTl9GSUVMRF9QUk9URUNURUQgKGYsIGopKQ0KKyAJ
CSAgICB7DQorIAkJICAgICAgaWYgKHNlY3Rpb25fdHlwZSAhPSBzX3Byb3RlY3RlZCkNCisgCQkJ
ew0KKyAJCQkgIHNlY3Rpb25fdHlwZSA9IHNfcHJvdGVjdGVkOw0KKyAJCQkgIGZwcmludGZpX2Zp
bHRlcmVkIChsZXZlbCArIDIsIHN0cmVhbSwNCisgCQkJCQkgICAgICJwcm90ZWN0ZWRcbiIpOw0K
KyAJCQl9DQorIAkJICAgIH0NCisgCQkgIGVsc2UgaWYgKFRZUEVfRk5fRklFTERfUFJJVkFURSAo
ZiwgaikpDQorIAkJICAgIHsNCisgCQkgICAgICBpZiAoc2VjdGlvbl90eXBlICE9IHNfcHJpdmF0
ZSkNCisgCQkJew0KKyAJCQkgIHNlY3Rpb25fdHlwZSA9IHNfcHJpdmF0ZTsNCisgCQkJICBmcHJp
bnRmaV9maWx0ZXJlZCAobGV2ZWwgKyAyLCBzdHJlYW0sICJwcml2YXRlXG4iKTsNCisgCQkJfQ0K
KyAJCSAgICB9DQorIAkJICBlbHNlDQorIAkJICAgIHsNCisgCQkgICAgICBpZiAoc2VjdGlvbl90
eXBlICE9IHNfcHVibGljKQ0KKyAJCQl7DQorIAkJCSAgc2VjdGlvbl90eXBlID0gc19wdWJsaWM7
DQorIAkJCSAgZnByaW50ZmlfZmlsdGVyZWQgKGxldmVsICsgMiwgc3RyZWFtLCAicHVibGljXG4i
KTsNCisgCQkJfQ0KKyAJCSAgICB9DQorIA0KKyAJCSAgcHJpbnRfc3BhY2VzX2ZpbHRlcmVkIChs
ZXZlbCArIDQsIHN0cmVhbSk7DQorIAkJICBpZiAoVFlQRV9GTl9GSUVMRF9TVEFUSUNfUCAoZiwg
aikpDQorIAkJICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgInN0YXRpYyAiKTsNCisgCQkg
IGlmIChUWVBFX1RBUkdFVF9UWVBFIChUWVBFX0ZOX0ZJRUxEX1RZUEUgKGYsIGopKSA9PSAwKQ0K
KyAJCSAgICB7DQorIAkJICAgICAgLyogS2VlcCBHREIgZnJvbSBjcmFzaGluZyBoZXJlLiAgKi8N
CisgCQkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICI8dW5kZWZpbmVkIHR5cGU+ICVz
O1xuIiwNCisgCQkJCQlUWVBFX0ZOX0ZJRUxEX1BIWVNOQU1FIChmLCBqKSk7DQorIAkJICAgICAg
YnJlYWs7DQorIAkJICAgIH0NCisgDQorIAkJICBpZiAoaXNfY29uc3RydWN0b3IpDQorIAkJICAg
IHsNCisgCQkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJjb25zdHJ1Y3RvciAiKTsN
CisgCQkgICAgfQ0KKyAJCSAgZWxzZSBpZiAoaXNfZGVzdHJ1Y3RvcikNCisgCQkgICAgew0KKyAJ
CSAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgImRlc3RydWN0b3IgICIpOw0KKyAJCSAg
ICB9DQorIAkJICBlbHNlIGlmIChUWVBFX1RBUkdFVF9UWVBFIChUWVBFX0ZOX0ZJRUxEX1RZUEUg
KGYsIGopKSAhPSAwICYmDQorIAkJCSAgIFRZUEVfQ09ERSAoVFlQRV9UQVJHRVRfVFlQRSAoVFlQ
RV9GTl9GSUVMRF9UWVBFIChmLCBqKSkpICE9IFRZUEVfQ09ERV9WT0lEKQ0KKyAJCSAgICB7DQor
IAkJICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiZnVuY3Rpb24gICIpOw0KKyAJCSAg
ICB9DQorIAkJICBlbHNlDQorIAkJICAgIHsNCisgCQkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChz
dHJlYW0sICJwcm9jZWR1cmUgIik7DQorIAkJICAgIH0NCisgCQkgIC8qIHRoaXMgZG9lcyBub3Qg
d29yaywgbm8gaWRlYSB3aHkgISEgKi8NCisgDQorIAkJICBwYXNfdHlwZV9wcmludF9tZXRob2Rf
YXJncyAocGh5c25hbWUsDQorIAkJCQkJICAgICAgbWV0aG9kX25hbWUsDQorIAkJCQkJICAgICAg
c3RyZWFtKTsNCisgDQorIAkJICBpZiAoVFlQRV9UQVJHRVRfVFlQRSAoVFlQRV9GTl9GSUVMRF9U
WVBFIChmLCBqKSkgIT0gMCAmJg0KKyAJCSAgICAgIFRZUEVfQ09ERSAoVFlQRV9UQVJHRVRfVFlQ
RSAoVFlQRV9GTl9GSUVMRF9UWVBFIChmLCBqKSkpICE9IFRZUEVfQ09ERV9WT0lEKQ0KKyAJCSAg
ICB7DQorIAkJICAgICAgZnB1dHNfZmlsdGVyZWQgKCIgOiAiLCBzdHJlYW0pOw0KKyAJCSAgICAg
IHR5cGVfcHJpbnQgKFRZUEVfVEFSR0VUX1RZUEUgKFRZUEVfRk5fRklFTERfVFlQRSAoZiwgaikp
LA0KKyAJCQkJICAiIiwgc3RyZWFtLCAtMSk7DQorIAkJICAgIH0NCisgCQkgIGlmIChUWVBFX0ZO
X0ZJRUxEX1ZJUlRVQUxfUCAoZiwgaikpDQorIAkJICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVh
bSwgIjsgdmlydHVhbCIpOw0KKyANCisgCQkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIjtc
biIpOw0KKyAJCX0NCisgCSAgICB9DQorIAkgIGZwcmludGZpX2ZpbHRlcmVkIChsZXZlbCwgc3Ry
ZWFtLCAiZW5kIik7DQorIAl9DQorICAgICAgIGJyZWFrOw0KKyANCisgICAgIGNhc2UgVFlQRV9D
T0RFX0VOVU06DQorICAgICAgIGlmIChUWVBFX1RBR19OQU1FICh0eXBlKSAhPSBOVUxMKQ0KKyAJ
ew0KKyAJICBmcHV0c19maWx0ZXJlZCAoVFlQRV9UQUdfTkFNRSAodHlwZSksIHN0cmVhbSk7DQor
IAkgIGlmIChzaG93ID4gMCkNCisgCSAgICBmcHV0c19maWx0ZXJlZCAoIiAiLCBzdHJlYW0pOw0K
KyAJfQ0KKyAgICAgICAvKiBlbnVtIGlzIGp1c3QgZGVmaW5lZCBieQ0KKyAgICAgICAgICB0eXBl
IGVudW1lX25hbWUgPSAoZW51bV9tZW1iZXIxLGVudW1fbWVtYmVyMiwuLi4pICovDQorICAgICAg
IGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiA9ICIpOw0KKyAgICAgICB3cmFwX2hlcmUgKCIg
ICAgIik7DQorICAgICAgIGlmIChzaG93IDwgMCkNCisgCXsNCisgCSAgLyogSWYgd2UganVzdCBw
cmludGVkIGEgdGFnIG5hbWUsIG5vIG5lZWQgdG8gcHJpbnQgYW55dGhpbmcgZWxzZS4gICovDQor
IAkgIGlmIChUWVBFX1RBR19OQU1FICh0eXBlKSA9PSBOVUxMKQ0KKyAJICAgIGZwcmludGZfZmls
dGVyZWQgKHN0cmVhbSwgIiguLi4pIik7DQorIAl9DQorICAgICAgIGVsc2UgaWYgKHNob3cgPiAw
IHx8IFRZUEVfVEFHX05BTUUgKHR5cGUpID09IE5VTEwpDQorIAl7DQorIAkgIGZwcmludGZfZmls
dGVyZWQgKHN0cmVhbSwgIigiKTsNCisgCSAgbGVuID0gVFlQRV9ORklFTERTICh0eXBlKTsNCisg
CSAgbGFzdHZhbCA9IDA7DQorIAkgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykNCisgCSAgICB7
DQorIAkgICAgICBRVUlUOw0KKyAJICAgICAgaWYgKGkpDQorIAkJZnByaW50Zl9maWx0ZXJlZCAo
c3RyZWFtLCAiLCAiKTsNCisgCSAgICAgIHdyYXBfaGVyZSAoIiAgICAiKTsNCisgCSAgICAgIGZw
dXRzX2ZpbHRlcmVkIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpLCBzdHJlYW0pOw0KKyAJICAg
ICAgaWYgKGxhc3R2YWwgIT0gVFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUsIGkpKQ0KKyAJCXsNCisg
CQkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiA6PSAlZCIsIFRZUEVfRklFTERfQklUUE9T
ICh0eXBlLCBpKSk7DQorIAkJICBsYXN0dmFsID0gVFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUsIGkp
Ow0KKyAJCX0NCisgCSAgICAgIGxhc3R2YWwrKzsNCisgCSAgICB9DQorIAkgIGZwcmludGZfZmls
dGVyZWQgKHN0cmVhbSwgIikiKTsNCisgCX0NCisgICAgICAgYnJlYWs7DQorIA0KKyAgICAgY2Fz
ZSBUWVBFX0NPREVfVk9JRDoNCisgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAidm9p
ZCIpOw0KKyAgICAgICBicmVhazsNCisgDQorICAgICBjYXNlIFRZUEVfQ09ERV9VTkRFRjoNCisg
ICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAicmVjb3JkIDx1bmtub3duPiIpOw0KKyAg
ICAgICBicmVhazsNCisgDQorICAgICBjYXNlIFRZUEVfQ09ERV9FUlJPUjoNCisgICAgICAgZnBy
aW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiPHVua25vd24gdHlwZT4iKTsNCisgICAgICAgYnJlYWs7
DQorIA0KKyAgICAgICAvKiB0aGlzIHByb2JhYmx5IGRvZXMgbm90IHdvcmsgZm9yIGVudW1zICov
DQorICAgICBjYXNlIFRZUEVfQ09ERV9SQU5HRToNCisgICAgICAgew0KKyAJc3RydWN0IHR5cGUg
KnRhcmdldCA9IFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpOw0KKyAJaWYgKHRhcmdldCA9PSBOVUxM
KQ0KKyAJICB0YXJnZXQgPSBidWlsdGluX3R5cGVfbG9uZzsNCisgCXByaW50X3R5cGVfc2NhbGFy
ICh0YXJnZXQsIFRZUEVfTE9XX0JPVU5EICh0eXBlKSwgc3RyZWFtKTsNCisgCWZwdXRzX2ZpbHRl
cmVkICgiLi4iLCBzdHJlYW0pOw0KKyAJcHJpbnRfdHlwZV9zY2FsYXIgKHRhcmdldCwgVFlQRV9I
SUdIX0JPVU5EICh0eXBlKSwgc3RyZWFtKTsNCisgICAgICAgfQ0KKyAgICAgICBicmVhazsNCisg
DQorICAgICBjYXNlIFRZUEVfQ09ERV9TRVQ6DQorICAgICAgIGZwdXRzX2ZpbHRlcmVkICgic2V0
IG9mICIsIHN0cmVhbSk7DQorICAgICAgIHBhc19wcmludF90eXBlIChUWVBFX0lOREVYX1RZUEUg
KHR5cGUpLCAiIiwgc3RyZWFtLA0KKyAJCSAgICAgIHNob3cgLSAxLCBsZXZlbCk7DQorICAgICAg
IGJyZWFrOw0KKyANCisgICAgIGRlZmF1bHQ6DQorICAgICAgIC8qIEhhbmRsZSB0eXBlcyBub3Qg
ZXhwbGljaXRseSBoYW5kbGVkIGJ5IHRoZSBvdGhlciBjYXNlcywNCisgICAgICAgICAgc3VjaCBh
cyBmdW5kYW1lbnRhbCB0eXBlcy4gIEZvciB0aGVzZSwganVzdCBwcmludCB3aGF0ZXZlcg0KKyAg
ICAgICAgICB0aGUgdHlwZSBuYW1lIGlzLCBhcyByZWNvcmRlZCBpbiB0aGUgdHlwZSBpdHNlbGYu
ICBJZiB0aGVyZQ0KKyAgICAgICAgICBpcyBubyB0eXBlIG5hbWUsIHRoZW4gY29tcGxhaW4uICov
DQorICAgICAgIGlmIChUWVBFX05BTUUgKHR5cGUpICE9IE5VTEwpDQorIAl7DQorIAkgIGZwdXRz
X2ZpbHRlcmVkIChUWVBFX05BTUUgKHR5cGUpLCBzdHJlYW0pOw0KKyAJfQ0KKyAgICAgICBlbHNl
DQorIAl7DQorIAkgIC8qIEF0IGxlYXN0IGZvciBkdW1wX3N5bXRhYiwgaXQgaXMgaW1wb3J0YW50
IHRoYXQgdGhpcyBub3QgYmUNCisgCSAgICAgYW4gZXJyb3IgKCkuICAqLw0KKyAJICBmcHJpbnRm
X2ZpbHRlcmVkIChzdHJlYW0sICI8aW52YWxpZCB1bm5hbWVkIHBhc2NhbCB0eXBlIGNvZGUgJWQ+
IiwNCisgCQkJICAgIFRZUEVfQ09ERSAodHlwZSkpOw0KKyAJfQ0KKyAgICAgICBicmVhazsNCisg
ICAgIH0NCisgfQ0KKyANCisgLyoNCisgICAgJExvZzogcC10eXBlcHJpbnQuYyx2ICQNCisgICAg
UmV2aXNpb24gMS4yICAxOTk5LzEwLzI5IDExOjU3OjA2ICBwaWVycmUNCisgICAgKiBhdm9pZCBO
VUxMIGRlcmVmZXJlbmNlDQorIA0KKyAgICBSZXZpc2lvbiAxLjEgIDE5OTkvMDkvMDcgMTE6NDA6
MTkgIHBpZXJyZQ0KKyAgICBGaXJzdCBpbXBvcnQgb2YgcGFzY2FsIGdkYiA0LjE4IGNoYW5nZXMN
CisgDQorICAgIFJldmlzaW9uIDEuMSAgMTk5OS8wMS8yNSAyMDozMDozMSAgcGV0ZXINCisgICAg
KyBmaXJzdCB2ZXJzaW9uDQorIA0KKyAgICBSZXZpc2lvbiAxLjIgIDE5OTkvMDEvMDUgMDg6Mzk6
MzYgIHBpZXJyZQ0KKyAgICArIGRiZ2NvbS5oIGFuZCBkYmdjb20uYyBtb2RpZmllZCBieSBBbmRy
aXMgUGF2ZW5pcw0KKyAgICArIGFkZGVkIGNvZGUgZm9yIE1NWCBzdGF0ZSBkZXRlY3Rpb24gYW5k
IGRpc3BsYXkNCisgICAgKHN0aWxsIHVnZ2x5IDoNCisgICAgRlBVIHN0YWNrIHNob3duIGJ5ICJp
bmZvIGFsbCINCisgICAgTU1YIHJlZ2lzdGVycyBzaG93biBieSAiaW5mbyBmbG9hdCIgaWYgaW4g
TU1YIG1vZGUpDQorIA0KKyAgICBSZXZpc2lvbiAxLjIgIDE5OTgvMTIvMjMgMTU6NTM6MDYgIFBp
ZXJyZQ0KKyAgICBleGNlcHRpb25zIGFuZCBmbG9hdGluZm8NCisgDQorICAgIFJldmlzaW9uIDEu
MSAgMTk5OC8xMi8xOCAxODoyNTo1MCAgcGllcnJlDQorICAgIGZpcnN0IERKR1BQIHY0LjE2IGZv
ciBwYXNjYWwgd2l0aCBleGNlcHRpb24gZGVidWdnaW5nIGNhcGFiaWxpdGllcw0KKyANCisgICAg
UmV2aXNpb24gMS4xICAxOTk4LzEyLzA0IDEwOjMxOjQ5ICBkb3N1c2VyDQorICAgICsgZmlyc3Qg
dmVyc2lvbiB3aXRoIHBhc2NhbCBzeW50YXgNCisgDQorICAgIFJldmlzaW9uIDEuMSAgMTk5OC8w
OS8xOCAxMjozNzozOSAgcGllcnJlDQorICAqLw0KKioqIHAtdmFscHJpbnQuYy5vcmkJRnJpIE1h
ciAgMyAxNDoyMzozMCAyMDAwDQotLS0gcC12YWxwcmludC5jCUZyaSBNYXIgIDMgMTM6MjQ6MDgg
MjAwMA0KKioqKioqKioqKioqKioqDQoqKiogMCAqKioqDQotLS0gMSwxMTY0IC0tLS0NCisgLyog
U3VwcG9ydCBmb3IgcHJpbnRpbmcgQyB2YWx1ZXMgZm9yIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4N
CisgICAgQ29weXJpZ2h0IDE5ODYsIDE5ODgsIDE5ODksIDE5OTEsIDE5OTIsIDE5OTMsIDE5OTQs
IDE5OTUsIDE5OTYsIDE5OTcNCisgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQor
IA0KKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuDQorIA0KKyAgICBUaGlzIHByb2dyYW0g
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0K
KyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieQ0KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KKyAgICAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLg0KKyANCisgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUN
CisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCisgDQor
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlDQorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlIFNvZnR3YXJlDQorICAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ
bGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLw0KKyANCisg
I2luY2x1ZGUgImRlZnMuaCINCisgI2luY2x1ZGUgIm9ic3RhY2suaCINCisgI2luY2x1ZGUgInN5
bXRhYi5oIg0KKyAjaW5jbHVkZSAiZ2RidHlwZXMuaCINCisgI2luY2x1ZGUgImV4cHJlc3Npb24u
aCINCisgI2luY2x1ZGUgInZhbHVlLmgiDQorICNpbmNsdWRlICJjb21tYW5kLmgiDQorICNpbmNs
dWRlICJnZGJjbWQuaCINCisgI2luY2x1ZGUgImRlbWFuZ2xlLmgiDQorICNpbmNsdWRlICJ2YWxw
cmludC5oIg0KKyAjaW5jbHVkZSAibGFuZ3VhZ2UuaCINCisgI2luY2x1ZGUgInAtbGFuZy5oIg0K
KyAMDQorIA0KKyANCisgDQorIC8qIFByaW50IGRhdGEgb2YgdHlwZSBUWVBFIGxvY2F0ZWQgYXQg
VkFMQUREUiAod2l0aGluIEdEQiksIHdoaWNoIGNhbWUgZnJvbQ0KKyAgICB0aGUgaW5mZXJpb3Ig
YXQgYWRkcmVzcyBBRERSRVNTLCBvbnRvIHN0ZGlvIHN0cmVhbSBTVFJFQU0gYWNjb3JkaW5nIHRv
DQorICAgIEZPUk1BVCAoYSBsZXR0ZXIgb3IgMCBmb3IgbmF0dXJhbCBmb3JtYXQpLiAgVGhlIGRh
dGEgYXQgVkFMQUREUiBpcyBpbg0KKyAgICB0YXJnZXQgYnl0ZSBvcmRlci4NCisgDQorICAgIElm
IHRoZSBkYXRhIGFyZSBhIHN0cmluZyBwb2ludGVyLCByZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3Ry
aW5nIGNoYXJhY3RlcnMNCisgICAgcHJpbnRlZC4NCisgDQorICAgIElmIERFUkVGX1JFRiBpcyBu
b256ZXJvLCB0aGVuIGRlcmVmZXJlbmNlIHJlZmVyZW5jZXMsIG90aGVyd2lzZSBqdXN0IHByaW50
DQorICAgIHRoZW0gbGlrZSBwb2ludGVycy4NCisgDQorICAgIFRoZSBQUkVUVFkgcGFyYW1ldGVy
IGNvbnRyb2xzIHByZXR0eXByaW50aW5nLiAgKi8NCisgDQorIA0KKyBpbnQNCisgcGFzX3ZhbF9w
cmludCAodHlwZSwgdmFsYWRkciwgZW1iZWRkZWRfb2Zmc2V0LCBhZGRyZXNzLCBzdHJlYW0sIGZv
cm1hdCwgZGVyZWZfcmVmLCByZWN1cnNlLA0KKyAJICAgICAgIHByZXR0eSkNCisgICAgICBzdHJ1
Y3QgdHlwZSAqdHlwZTsNCisgICAgICBjaGFyICp2YWxhZGRyOw0KKyAgICAgIGludCBlbWJlZGRl
ZF9vZmZzZXQ7DQorICAgICAgQ09SRV9BRERSIGFkZHJlc3M7DQorICAgICAgc3RydWN0IHVpX2Zp
bGUgKnN0cmVhbTsNCisgICAgICBpbnQgZm9ybWF0Ow0KKyAgICAgIGludCBkZXJlZl9yZWY7DQor
ICAgICAgaW50IHJlY3Vyc2U7DQorICAgICAgZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5Ow0K
KyB7DQorICAgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGkgPSAwOwkvKiBOdW1iZXIgb2YgY2hhcmFj
dGVycyBwcmludGVkICovDQorICAgdW5zaWduZWQgbGVuOw0KKyAgIHN0cnVjdCB0eXBlICplbHR0
eXBlOw0KKyAgIHVuc2lnbmVkIGVsdGxlbjsNCisgICBMT05HRVNUIHZhbDsNCisgICBDT1JFX0FE
RFIgYWRkcjsNCisgDQorICAgQ0hFQ0tfVFlQRURFRiAodHlwZSk7DQorICAgc3dpdGNoIChUWVBF
X0NPREUgKHR5cGUpKQ0KKyAgICAgew0KKyAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6DQorICAg
ICAgIGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPiAwICYmIFRZUEVfTEVOR1RIIChUWVBFX1RBUkdF
VF9UWVBFICh0eXBlKSkgPiAwKQ0KKyAJew0KKyAJICBlbHR0eXBlID0gY2hlY2tfdHlwZWRlZiAo
VFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOw0KKyAJICBlbHRsZW4gPSBUWVBFX0xFTkdUSCAoZWx0
dHlwZSk7DQorIAkgIGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKSAvIGVsdGxlbjsNCisgCSAgaWYg
KHByZXR0eXByaW50X2FycmF5cykNCisgCSAgICB7DQorIAkgICAgICBwcmludF9zcGFjZXNfZmls
dGVyZWQgKDIgKyAyICogcmVjdXJzZSwgc3RyZWFtKTsNCisgCSAgICB9DQorIAkgIC8qIEZvciBh
biBhcnJheSBvZiBjaGFycywgcHJpbnQgd2l0aCBzdHJpbmcgc3ludGF4LiAgKi8NCisgCSAgaWYg
KGVsdGxlbiA9PSAxICYmDQorIAkgICAgICAoKFRZUEVfQ09ERSAoZWx0dHlwZSkgPT0gVFlQRV9D
T0RFX0lOVCkNCisgCSAgICAgICB8fCAoKGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlID09
IGxhbmd1YWdlX20yKQ0KKyAJCSAgICYmIChUWVBFX0NPREUgKGVsdHR5cGUpID09IFRZUEVfQ09E
RV9DSEFSKSkpDQorIAkgICAgICAmJiAoZm9ybWF0ID09IDAgfHwgZm9ybWF0ID09ICdzJykpDQor
IAkgICAgew0KKyAJICAgICAgLyogSWYgcmVxdWVzdGVkLCBsb29rIGZvciB0aGUgZmlyc3QgbnVs
bCBjaGFyIGFuZCBvbmx5IHByaW50DQorIAkgICAgICAgICBlbGVtZW50cyB1cCB0byBpdC4gICov
DQorIAkgICAgICBpZiAoc3RvcF9wcmludF9hdF9udWxsKQ0KKyAJCXsNCisgCQkgIHVuc2lnbmVk
IGludCB0ZW1wX2xlbjsNCisgDQorIAkJICAvKiBMb29rIGZvciBhIE5VTEwgY2hhci4gKi8NCisg
CQkgIGZvciAodGVtcF9sZW4gPSAwOw0KKyAJCSAgICAgICAodmFsYWRkciArIGVtYmVkZGVkX29m
ZnNldClbdGVtcF9sZW5dDQorIAkJICAgICAgICYmIHRlbXBfbGVuIDwgbGVuICYmIHRlbXBfbGVu
IDwgcHJpbnRfbWF4Ow0KKyAJCSAgICAgICB0ZW1wX2xlbisrKTsNCisgCQkgIGxlbiA9IHRlbXBf
bGVuOw0KKyAJCX0NCisgDQorIAkgICAgICBMQV9QUklOVF9TVFJJTkcgKHN0cmVhbSwgdmFsYWRk
ciArIGVtYmVkZGVkX29mZnNldCwgbGVuLCAxLCAwKTsNCisgCSAgICAgIGkgPSBsZW47DQorIAkg
ICAgfQ0KKyAJICBlbHNlDQorIAkgICAgew0KKyAJICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3Ry
ZWFtLCAieyIpOw0KKyAJICAgICAgLyogSWYgdGhpcyBpcyBhIHZpcnR1YWwgZnVuY3Rpb24gdGFi
bGUsIHByaW50IHRoZSAwdGgNCisgCSAgICAgICAgIGVudHJ5IHNwZWNpYWxseSwgYW5kIHRoZSBy
ZXN0IG9mIHRoZSBtZW1iZXJzIG5vcm1hbGx5LiAgKi8NCisgCSAgICAgIGlmIChwYXNfY3BfaXNf
dnRibF9wdHJfdHlwZSAoZWx0dHlwZSkpDQorIAkJew0KKyAJCSAgaSA9IDE7DQorIAkJICBmcHJp
bnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlZCB2dGFibGUgZW50cmllcyIsIGxlbiAtIDEpOw0KKyAJ
CX0NCisgCSAgICAgIGVsc2UNCisgCQl7DQorIAkJICBpID0gMDsNCisgCQl9DQorIAkgICAgICB2
YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHR5cGUsIHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQs
IGFkZHJlc3MsIHN0cmVhbSwNCisgCQkJCSAgICAgZm9ybWF0LCBkZXJlZl9yZWYsIHJlY3Vyc2Us
IHByZXR0eSwgaSk7DQorIAkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ9Iik7DQor
IAkgICAgfQ0KKyAJICBicmVhazsNCisgCX0NCisgICAgICAgLyogQXJyYXkgb2YgdW5zcGVjaWZp
ZWQgbGVuZ3RoOiB0cmVhdCBsaWtlIHBvaW50ZXIgdG8gZmlyc3QgZWx0LiAgKi8NCisgICAgICAg
YWRkciA9IGFkZHJlc3M7DQorICAgICAgIGdvdG8gcHJpbnRfdW5wYWNrZWRfcG9pbnRlcjsNCisg
DQorICAgICBjYXNlIFRZUEVfQ09ERV9QVFI6DQorICAgICAgIGlmIChmb3JtYXQgJiYgZm9ybWF0
ICE9ICdzJykNCisgCXsNCisgCSAgcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFsYWRkciArIGVt
YmVkZGVkX29mZnNldCwgdHlwZSwgZm9ybWF0LCAwLCBzdHJlYW0pOw0KKyAJICBicmVhazsNCisg
CX0NCisgICAgICAgaWYgKHZ0YmxwcmludCAmJiBwYXNfY3BfaXNfdnRibF9wdHJfdHlwZSAodHlw
ZSkpDQorIAl7DQorIAkgIC8qIFByaW50IHRoZSB1bm1hbmdsZWQgbmFtZSBpZiBkZXNpcmVkLiAg
Ki8NCisgCSAgLyogUHJpbnQgdnRhYmxlIGVudHJ5IC0gd2Ugb25seSBnZXQgaGVyZSBpZiB3ZSBB
UkUgdXNpbmcNCisgCSAgICAgLWZ2dGFibGVfdGh1bmtzLiAgKE90aGVyd2lzZSwgbG9vayB1bmRl
ciBUWVBFX0NPREVfU1RSVUNULikgKi8NCisgCSAgcHJpbnRfYWRkcmVzc19kZW1hbmdsZSAoZXh0
cmFjdF9hZGRyZXNzICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCBUWVBFX0xFTkdUSCAodHlw
ZSkpLA0KKyAJCQkJICBzdHJlYW0sIGRlbWFuZ2xlKTsNCisgCSAgYnJlYWs7DQorIAl9DQorICAg
ICAgIGVsdHR5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7DQor
ICAgICAgIGlmIChUWVBFX0NPREUgKGVsdHR5cGUpID09IFRZUEVfQ09ERV9NRVRIT0QpDQorIAl7
DQorIAkgIHBhc19jcF9wcmludF9jbGFzc19tZXRob2QgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZz
ZXQsIHR5cGUsIHN0cmVhbSk7DQorIAl9DQorICAgICAgIGVsc2UgaWYgKFRZUEVfQ09ERSAoZWx0
dHlwZSkgPT0gVFlQRV9DT0RFX01FTUJFUikNCisgCXsNCisgCSAgcGFzX2NwX3ByaW50X2NsYXNz
X21lbWJlciAodmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwNCisgCQkJCSBUWVBFX0RPTUFJTl9U
WVBFIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSksDQorIAkJCQkgICAgIHN0cmVhbSwgIiYiKTsN
CisgCX0NCisgICAgICAgZWxzZQ0KKyAJew0KKyAJICBhZGRyID0gdW5wYWNrX3BvaW50ZXIgKHR5
cGUsIHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQpOw0KKyAJcHJpbnRfdW5wYWNrZWRfcG9pbnRl
cjoNCisgCSAgZWx0dHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUp
KTsNCisgDQorIAkgIGlmIChUWVBFX0NPREUgKGVsdHR5cGUpID09IFRZUEVfQ09ERV9GVU5DKQ0K
KyAJICAgIHsNCisgCSAgICAgIC8qIFRyeSB0byBwcmludCB3aGF0IGZ1bmN0aW9uIGl0IHBvaW50
cyB0by4gICovDQorIAkgICAgICBwcmludF9hZGRyZXNzX2RlbWFuZ2xlIChhZGRyLCBzdHJlYW0s
IGRlbWFuZ2xlKTsNCisgCSAgICAgIC8qIFJldHVybiB2YWx1ZSBpcyBpcnJlbGV2YW50IGV4Y2Vw
dCBmb3Igc3RyaW5nIHBvaW50ZXJzLiAgKi8NCisgCSAgICAgIHJldHVybiAoMCk7DQorIAkgICAg
fQ0KKyANCisgCSAgaWYgKGFkZHJlc3NwcmludCAmJiBmb3JtYXQgIT0gJ3MnKQ0KKyAJICAgIHsN
CisgCSAgICAgIHByaW50X2FkZHJlc3NfbnVtZXJpYyAoYWRkciwgMSwgc3RyZWFtKTsNCisgCSAg
ICB9DQorIA0KKyAJICAvKiBGb3IgYSBwb2ludGVyIHRvIGNoYXIgb3IgdW5zaWduZWQgY2hhciwg
YWxzbyBwcmludCB0aGUgc3RyaW5nDQorIAkgICAgIHBvaW50ZWQgdG8sIHVubGVzcyBwb2ludGVy
IGlzIG51bGwuICAqLw0KKyAJICBpZiAoVFlQRV9MRU5HVEggKGVsdHR5cGUpID09IDENCisgCSAg
ICAgICYmIFRZUEVfQ09ERSAoZWx0dHlwZSkgPT0gVFlQRV9DT0RFX0lOVA0KKyAJICAgICAgJiYg
KGZvcm1hdCA9PSAwIHx8IGZvcm1hdCA9PSAncycpDQorIAkgICAgICAmJiBhZGRyICE9IDApDQor
IAkgICAgew0KKyAJICAgICAgLyogbm8gd2lkZSBzdHJpbmcgeWV0ICovDQorIAkgICAgICBpID0g
dmFsX3ByaW50X3N0cmluZyAoYWRkciwgLTEsIDEsIHN0cmVhbSk7DQorIAkgICAgfQ0KKyAJICAv
KiBhbHNvIGZvciBwb2ludGVycyB0byBwYXNjYWwgc3RyaW5ncyAqLw0KKyAJICBpZiAoVFlQRV9D
T0RFIChlbHR0eXBlKSA9PSBUWVBFX0NPREVfU1RSVUNUICYmDQorIAkgICAgICBUWVBFX05GSUVM
RFMgKGVsdHR5cGUpID09IDIgJiYNCisgCSAgICAgIHN0cmNtcCAoVFlQRV9GSUVMRFMgKGVsdHR5
cGUpWzBdLm5hbWUsICJsZW5ndGgiKSA9PSAwICYmDQorIAkgICAgICBzdHJjbXAgKFRZUEVfRklF
TERTIChlbHR0eXBlKVsxXS5uYW1lLCAic3QiKSA9PSAwICYmDQorIAkgICAgICBhZGRyICE9IDAp
DQorIAkgICAgew0KKyAJICAgICAgY2hhciBieXRlbGVuZ3RoOw0KKyAJICAgICAgcmVhZF9tZW1v
cnlfc2VjdGlvbiAoYWRkciwgJmJ5dGVsZW5ndGgsIDEsIE5VTEwpOw0KKyAJICAgICAgaSA9IHZh
bF9wcmludF9zdHJpbmcgKGFkZHIgKyAxLCBieXRlbGVuZ3RoLCAxLCBzdHJlYW0pOw0KKyAJICAg
IH0NCisgCSAgZWxzZSBpZiAocGFzX2NwX2lzX3Z0YmxfbWVtYmVyICh0eXBlKSkNCisgCSAgICB7
DQorIAkgICAgICAvKiBwcmludCB2dGJsJ3MgbmljZWx5ICovDQorIAkgICAgICBDT1JFX0FERFIg
dnRfYWRkcmVzcyA9IHVucGFja19wb2ludGVyICh0eXBlLCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zm
c2V0KTsNCisgDQorIAkgICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wgPQ0KKyAJ
ICAgICAgbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjICh2dF9hZGRyZXNzKTsNCisgCSAgICAg
IGlmICgobXN5bWJvbCAhPSBOVUxMKSAmJg0KKyAJCSAgKHZ0X2FkZHJlc3MgPT0gU1lNQk9MX1ZB
TFVFX0FERFJFU1MgKG1zeW1ib2wpKSkNCisgCQl7DQorIAkJICBmcHV0c19maWx0ZXJlZCAoIiA8
Iiwgc3RyZWFtKTsNCisgCQkgIGZwdXRzX2ZpbHRlcmVkIChTWU1CT0xfU09VUkNFX05BTUUgKG1z
eW1ib2wpLCBzdHJlYW0pOw0KKyAJCSAgZnB1dHNfZmlsdGVyZWQgKCI+Iiwgc3RyZWFtKTsNCisg
CQl9DQorIAkgICAgICBpZiAodnRfYWRkcmVzcyAmJiB2dGJscHJpbnQpDQorIAkJew0KKyAJCSAg
dmFsdWVfcHRyIHZ0X3ZhbDsNCisgCQkgIHN0cnVjdCBzeW1ib2wgKndzeW0gPSAoc3RydWN0IHN5
bWJvbCAqKSBOVUxMOw0KKyAJCSAgc3RydWN0IHR5cGUgKnd0eXBlOw0KKyAJCSAgc3RydWN0IHN5
bXRhYiAqczsNCisgCQkgIHN0cnVjdCBibG9jayAqYmxvY2sgPSAoc3RydWN0IGJsb2NrICopIE5V
TEw7DQorIAkJICBpbnQgaXNfdGhpc19mbGQ7DQorIA0KKyAJCSAgaWYgKG1zeW1ib2wgIT0gTlVM
TCkNCisgCQkgICAgd3N5bSA9IGxvb2t1cF9zeW1ib2wgKFNZTUJPTF9OQU1FIChtc3ltYm9sKSwg
YmxvY2ssDQorIAkJCQkJICBWQVJfTkFNRVNQQUNFLCAmaXNfdGhpc19mbGQsICZzKTsNCisgDQor
IAkJICBpZiAod3N5bSkNCisgCQkgICAgew0KKyAJCSAgICAgIHd0eXBlID0gU1lNQk9MX1RZUEUg
KHdzeW0pOw0KKyAJCSAgICB9DQorIAkJICBlbHNlDQorIAkJICAgIHsNCisgCQkgICAgICB3dHlw
ZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpOw0KKyAJCSAgICB9DQorIAkJICB2dF92YWwgPSB2
YWx1ZV9hdCAod3R5cGUsIHZ0X2FkZHJlc3MsIE5VTEwpOw0KKyAJCSAgdmFsX3ByaW50IChWQUxV
RV9UWVBFICh2dF92YWwpLCBWQUxVRV9DT05URU5UUyAodnRfdmFsKSwgMCwNCisgCQkJICAgICBW
QUxVRV9BRERSRVNTICh2dF92YWwpLCBzdHJlYW0sIGZvcm1hdCwNCisgCQkJICAgICBkZXJlZl9y
ZWYsIHJlY3Vyc2UgKyAxLCBwcmV0dHkpOw0KKyAJCSAgaWYgKHByZXR0eSkNCisgCQkgICAgew0K
KyAJCSAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIlxuIik7DQorIAkJICAgICAgcHJp
bnRfc3BhY2VzX2ZpbHRlcmVkICgyICsgMiAqIHJlY3Vyc2UsIHN0cmVhbSk7DQorIAkJICAgIH0N
CisgCQl9DQorIAkgICAgfQ0KKyANCisgCSAgLyogUmV0dXJuIG51bWJlciBvZiBjaGFyYWN0ZXJz
IHByaW50ZWQsIGluY2x1ZGluZyB0aGUgdGVybWluYXRpbmcNCisgCSAgICAgJ1wwJyBpZiB3ZSBy
ZWFjaGVkIHRoZSBlbmQuICB2YWxfcHJpbnRfc3RyaW5nIHRha2VzIGNhcmUgaW5jbHVkaW5nDQor
IAkgICAgIHRoZSB0ZXJtaW5hdGluZyAnXDAnIGlmIG5lY2Vzc2FyeS4gICovDQorIAkgIHJldHVy
biBpOw0KKyAJfQ0KKyAgICAgICBicmVhazsNCisgDQorICAgICBjYXNlIFRZUEVfQ09ERV9NRU1C
RVI6DQorICAgICAgIGVycm9yICgibm90IGltcGxlbWVudGVkOiBtZW1iZXIgdHlwZSBpbiBwYXNf
dmFsX3ByaW50Iik7DQorICAgICAgIGJyZWFrOw0KKyANCisgICAgIGNhc2UgVFlQRV9DT0RFX1JF
RjoNCisgICAgICAgZWx0dHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5
cGUpKTsNCisgICAgICAgaWYgKFRZUEVfQ09ERSAoZWx0dHlwZSkgPT0gVFlQRV9DT0RFX01FTUJF
UikNCisgCXsNCisgCSAgcGFzX2NwX3ByaW50X2NsYXNzX21lbWJlciAodmFsYWRkciArIGVtYmVk
ZGVkX29mZnNldCwNCisgCQkJCSAgICAgVFlQRV9ET01BSU5fVFlQRSAoZWx0dHlwZSksDQorIAkJ
CQkgICAgIHN0cmVhbSwgIiIpOw0KKyAJICBicmVhazsNCisgCX0NCisgICAgICAgaWYgKGFkZHJl
c3NwcmludCkNCisgCXsNCisgCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiQCIpOw0KKyAJ
ICBwcmludF9hZGRyZXNzX251bWVyaWMNCisgCSAgICAoZXh0cmFjdF9hZGRyZXNzICh2YWxhZGRy
ICsgZW1iZWRkZWRfb2Zmc2V0LA0KKyAJCQkgICAgICBUQVJHRVRfUFRSX0JJVCAvIEhPU1RfQ0hB
Ul9CSVQpLCAxLCBzdHJlYW0pOw0KKyAJICBpZiAoZGVyZWZfcmVmKQ0KKyAJICAgIGZwdXRzX2Zp
bHRlcmVkICgiOiAiLCBzdHJlYW0pOw0KKyAJfQ0KKyAgICAgICAvKiBEZS1yZWZlcmVuY2UgdGhl
IHJlZmVyZW5jZS4gICovDQorICAgICAgIGlmIChkZXJlZl9yZWYpDQorIAl7DQorIAkgIGlmIChU
WVBFX0NPREUgKGVsdHR5cGUpICE9IFRZUEVfQ09ERV9VTkRFRikNCisgCSAgICB7DQorIAkgICAg
ICB2YWx1ZV9wdHIgZGVyZWZfdmFsID0NCisgCSAgICAgIHZhbHVlX2F0DQorIAkgICAgICAoVFlQ
RV9UQVJHRVRfVFlQRSAodHlwZSksDQorIAkgICAgICAgdW5wYWNrX3BvaW50ZXIgKGxvb2t1cF9w
b2ludGVyX3R5cGUgKGJ1aWx0aW5fdHlwZV92b2lkKSwNCisgCQkJICAgICAgIHZhbGFkZHIgKyBl
bWJlZGRlZF9vZmZzZXQpLA0KKyAJICAgICAgIE5VTEwpOw0KKyAJICAgICAgdmFsX3ByaW50IChW
QUxVRV9UWVBFIChkZXJlZl92YWwpLA0KKyAJCQkgVkFMVUVfQ09OVEVOVFMgKGRlcmVmX3ZhbCks
IDAsDQorIAkJCSBWQUxVRV9BRERSRVNTIChkZXJlZl92YWwpLCBzdHJlYW0sIGZvcm1hdCwNCisg
CQkJIGRlcmVmX3JlZiwgcmVjdXJzZSArIDEsIHByZXR0eSk7DQorIAkgICAgfQ0KKyAJICBlbHNl
DQorIAkgICAgZnB1dHNfZmlsdGVyZWQgKCI/Pz8iLCBzdHJlYW0pOw0KKyAJfQ0KKyAgICAgICBi
cmVhazsNCisgDQorICAgICBjYXNlIFRZUEVfQ09ERV9VTklPTjoNCisgICAgICAgaWYgKHJlY3Vy
c2UgJiYgIXVuaW9ucHJpbnQpDQorIAl7DQorIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwg
InsuLi59Iik7DQorIAkgIGJyZWFrOw0KKyAJfQ0KKyAgICAgICAvKiBGYWxsIHRocm91Z2guICAq
Lw0KKyAgICAgY2FzZSBUWVBFX0NPREVfU1RSVUNUOg0KKyAgICAgICBpZiAodnRibHByaW50ICYm
IHBhc19jcF9pc192dGJsX3B0cl90eXBlICh0eXBlKSkNCisgCXsNCisgCSAgLyogUHJpbnQgdGhl
IHVubWFuZ2xlZCBuYW1lIGlmIGRlc2lyZWQuICAqLw0KKyAJICAvKiBQcmludCB2dGFibGUgZW50
cnkgLSB3ZSBvbmx5IGdldCBoZXJlIGlmIE5PVCB1c2luZw0KKyAJICAgICAtZnZ0YWJsZV90aHVu
a3MuICAoT3RoZXJ3aXNlLCBsb29rIHVuZGVyIFRZUEVfQ09ERV9QVFIuKSAqLw0KKyAJICBwcmlu
dF9hZGRyZXNzX2RlbWFuZ2xlIChleHRyYWN0X2FkZHJlc3MgKA0KKyAJCQkJCQkgICAgdmFsYWRk
ciArIGVtYmVkZGVkX29mZnNldCArIFRZUEVfRklFTERfQklUUE9TICh0eXBlLCBWVEJMX0ZOQURE
Ul9PRkZTRVQpIC8gOCwNCisgCQkgIFRZUEVfTEVOR1RIIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUs
IFZUQkxfRk5BRERSX09GRlNFVCkpKSwNCisgCQkJCSAgc3RyZWFtLCBkZW1hbmdsZSk7DQorIAl9
DQorICAgICAgIGVsc2UNCisgCXsNCisgCSAgaWYgKChUWVBFX05GSUVMRFMgKHR5cGUpID09IDIp
ICYmDQorIAkgICAgICAoc3RyY21wIChUWVBFX0ZJRUxEUyAodHlwZSlbMF0ubmFtZSwgImxlbmd0
aCIpID09IDApICYmDQorIAkgICAgICAoc3RyY21wIChUWVBFX0ZJRUxEUyAodHlwZSlbMV0ubmFt
ZSwgInN0IikgPT0gMCkpDQorIAkgICAgew0KKyAJICAgICAgbGVuID0gKCoodmFsYWRkciArIGVt
YmVkZGVkX29mZnNldCkpICYgMHhmZjsNCisgCSAgICAgIExBX1BSSU5UX1NUUklORyAoc3RyZWFt
LCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0ICsgMSwgbGVuLCAvKiB3aWR0aCA/PyAqLyAwLCAw
KTsNCisgCSAgICB9DQorIAkgIGVsc2UNCisgCSAgICBwYXNfY3BfcHJpbnRfdmFsdWVfZmllbGRz
ICh0eXBlLCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCBhZGRyZXNzLCBzdHJlYW0sIGZvcm1h
dCwNCisgCQkJCSAgICAgICByZWN1cnNlLCBwcmV0dHksIE5VTEwsIDApOw0KKyAJfQ0KKyAgICAg
ICBicmVhazsNCisgDQorICAgICBjYXNlIFRZUEVfQ09ERV9FTlVNOg0KKyAgICAgICBpZiAoZm9y
bWF0KQ0KKyAJew0KKyAJICBwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyICsgZW1iZWRk
ZWRfb2Zmc2V0LCB0eXBlLCBmb3JtYXQsIDAsIHN0cmVhbSk7DQorIAkgIGJyZWFrOw0KKyAJfQ0K
KyAgICAgICBsZW4gPSBUWVBFX05GSUVMRFMgKHR5cGUpOw0KKyAgICAgICB2YWwgPSB1bnBhY2tf
bG9uZyAodHlwZSwgdmFsYWRkciArIGVtYmVkZGVkX29mZnNldCk7DQorICAgICAgIGZvciAoaSA9
IDA7IGkgPCBsZW47IGkrKykNCisgCXsNCisgCSAgUVVJVDsNCisgCSAgaWYgKHZhbCA9PSBUWVBF
X0ZJRUxEX0JJVFBPUyAodHlwZSwgaSkpDQorIAkgICAgew0KKyAJICAgICAgYnJlYWs7DQorIAkg
ICAgfQ0KKyAJfQ0KKyAgICAgICBpZiAoaSA8IGxlbikNCisgCXsNCisgCSAgZnB1dHNfZmlsdGVy
ZWQgKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSksIHN0cmVhbSk7DQorIAl9DQorICAgICAgIGVs
c2UNCisgCXsNCisgCSAgcHJpbnRfbG9uZ2VzdCAoc3RyZWFtLCAnZCcsIDAsIHZhbCk7DQorIAl9
DQorICAgICAgIGJyZWFrOw0KKyANCisgICAgIGNhc2UgVFlQRV9DT0RFX0ZVTkM6DQorICAgICAg
IGlmIChmb3JtYXQpDQorIAl7DQorIAkgIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIg
KyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUsIGZvcm1hdCwgMCwgc3RyZWFtKTsNCisgCSAgYnJlYWs7
DQorIAl9DQorICAgICAgIC8qIEZJWE1FLCB3ZSBzaG91bGQgY29uc2lkZXIsIGF0IGxlYXN0IGZv
ciBBTlNJIEMgbGFuZ3VhZ2UsIGVsaW1pbmF0aW5nDQorICAgICAgICAgIHRoZSBkaXN0aW5jdGlv
biBtYWRlIGJldHdlZW4gRlVOQ3MgYW5kIFBPSU5URVJzIHRvIEZVTkNzLiAgKi8NCisgICAgICAg
ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAieyIpOw0KKyAgICAgICB0eXBlX3ByaW50ICh0eXBl
LCAiIiwgc3RyZWFtLCAtMSk7DQorICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIn0g
Iik7DQorICAgICAgIC8qIFRyeSB0byBwcmludCB3aGF0IGZ1bmN0aW9uIGl0IHBvaW50cyB0bywg
YW5kIGl0cyBhZGRyZXNzLiAgKi8NCisgICAgICAgcHJpbnRfYWRkcmVzc19kZW1hbmdsZSAoYWRk
cmVzcywgc3RyZWFtLCBkZW1hbmdsZSk7DQorICAgICAgIGJyZWFrOw0KKyANCisgICAgIGNhc2Ug
VFlQRV9DT0RFX0JPT0w6DQorICAgICAgIGZvcm1hdCA9IGZvcm1hdCA/IGZvcm1hdCA6IG91dHB1
dF9mb3JtYXQ7DQorICAgICAgIGlmIChmb3JtYXQpDQorIAlwcmludF9zY2FsYXJfZm9ybWF0dGVk
ICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLCBmb3JtYXQsIDAsIHN0cmVhbSk7DQor
ICAgICAgIGVsc2UNCisgCXsNCisgCSAgdmFsID0gdW5wYWNrX2xvbmcgKHR5cGUsIHZhbGFkZHIg
KyBlbWJlZGRlZF9vZmZzZXQpOw0KKyAJICBpZiAodmFsID09IDApDQorIAkgICAgZnB1dHNfZmls
dGVyZWQgKCJmYWxzZSIsIHN0cmVhbSk7DQorIAkgIGVsc2UgaWYgKHZhbCA9PSAxKQ0KKyAJICAg
IGZwdXRzX2ZpbHRlcmVkICgidHJ1ZSIsIHN0cmVhbSk7DQorIAkgIGVsc2UNCisgCSAgICB7DQor
IAkgICAgICBmcHV0c19maWx0ZXJlZCAoInRydWUgKCIsIHN0cmVhbSk7DQorIAkgICAgICBmcHJp
bnRmX2ZpbHRlcmVkIChzdHJlYW0sICIldSkiLCB2YWwpOw0KKyAJICAgIH0NCisgCX0NCisgICAg
ICAgYnJlYWs7DQorIA0KKyAgICAgY2FzZSBUWVBFX0NPREVfUkFOR0U6DQorICAgICAgIC8qIEZJ
WE1FOiBjcmVhdGVfcmFuZ2VfdHlwZSBkb2VzIG5vdCBzZXQgdGhlIHVuc2lnbmVkIGJpdCBpbiBh
DQorICAgICAgICAgIHJhbmdlIHR5cGUgKEkgdGhpbmsgaXQgcHJvYmFibHkgc2hvdWxkIGNvcHkg
aXQgZnJvbSB0aGUgdGFyZ2V0DQorICAgICAgICAgIHR5cGUpLCBzbyB3ZSB3b24ndCBwcmludCB2
YWx1ZXMgd2hpY2ggYXJlIHRvbyBsYXJnZSB0bw0KKyAgICAgICAgICBmaXQgaW4gYSBzaWduZWQg
aW50ZWdlciBjb3JyZWN0bHkuICAqLw0KKyAgICAgICAvKiBGSVhNRTogRG9lc24ndCBoYW5kbGUg
cmFuZ2VzIG9mIGVudW1zIGNvcnJlY3RseS4gIChDYW4ndCBqdXN0DQorICAgICAgICAgIHByaW50
IHdpdGggdGhlIHRhcmdldCB0eXBlLCB0aG91Z2gsIGJlY2F1c2UgdGhlIHNpemUgb2Ygb3VyIHR5
cGUNCisgICAgICAgICAgYW5kIHRoZSB0YXJnZXQgdHlwZSBtaWdodCBkaWZmZXIpLiAgKi8NCisg
ICAgICAgLyogRkFMTFRIUk9VR0ggKi8NCisgDQorICAgICBjYXNlIFRZUEVfQ09ERV9JTlQ6DQor
ICAgICAgIGZvcm1hdCA9IGZvcm1hdCA/IGZvcm1hdCA6IG91dHB1dF9mb3JtYXQ7DQorICAgICAg
IGlmIChmb3JtYXQpDQorIAl7DQorIAkgIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIg
KyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUsIGZvcm1hdCwgMCwgc3RyZWFtKTsNCisgCX0NCisgICAg
ICAgZWxzZQ0KKyAJew0KKyAJICB2YWxfcHJpbnRfdHlwZV9jb2RlX2ludCAodHlwZSwgdmFsYWRk
ciArIGVtYmVkZGVkX29mZnNldCwgc3RyZWFtKTsNCisgCSAgLyogQyBhbmQgQysrIGhhcyBubyBz
aW5nbGUgYnl0ZSBpbnQgdHlwZSwgY2hhciBpcyB1c2VkIGluc3RlYWQuDQorIAkgICAgIFNpbmNl
IHdlIGRvbid0IGtub3cgd2hldGhlciB0aGUgdmFsdWUgaXMgcmVhbGx5IGludGVuZGVkIHRvDQor
IAkgICAgIGJlIHVzZWQgYXMgYW4gaW50ZWdlciBvciBhIGNoYXJhY3RlciwgcHJpbnQgdGhlIGNo
YXJhY3Rlcg0KKyAJICAgICBlcXVpdmFsZW50IGFzIHdlbGwuICovDQorIAkgIGlmIChUWVBFX0xF
TkdUSCAodHlwZSkgPT0gMSkNCisgCSAgICB7DQorIAkgICAgICBmcHV0c19maWx0ZXJlZCAoIiAi
LCBzdHJlYW0pOw0KKyAJICAgICAgTEFfUFJJTlRfQ0hBUiAoKHVuc2lnbmVkIGNoYXIpIHVucGFj
a19sb25nICh0eXBlLCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0KSwNCisgCQkJICAgICBzdHJl
YW0pOw0KKyAJICAgIH0NCisgCX0NCisgICAgICAgYnJlYWs7DQorIA0KKyAgICAgY2FzZSBUWVBF
X0NPREVfQ0hBUjoNCisgICAgICAgZm9ybWF0ID0gZm9ybWF0ID8gZm9ybWF0IDogb3V0cHV0X2Zv
cm1hdDsNCisgICAgICAgaWYgKGZvcm1hdCkNCisgCXsNCisgCSAgcHJpbnRfc2NhbGFyX2Zvcm1h
dHRlZCAodmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwgdHlwZSwgZm9ybWF0LCAwLCBzdHJlYW0p
Ow0KKyAJfQ0KKyAgICAgICBlbHNlDQorIAl7DQorICAJICB2YWwgPSB1bnBhY2tfbG9uZyAodHlw
ZSwgdmFsYWRkciArIGVtYmVkZGVkX29mZnNldCk7DQorICAJICBpZiAoVFlQRV9VTlNJR05FRCAo
dHlwZSkpDQorICAJICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiV1IiwgKHVuc2lnbmVk
IGludCkgdmFsKTsNCisgIAkgIGVsc2UNCisgIAkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFt
LCAiJWQiLCAoaW50KSB2YWwpOw0KKyAgIAkgIGZwdXRzX2ZpbHRlcmVkICgiICIsIHN0cmVhbSk7
DQorICAJICBMQV9QUklOVF9DSEFSICgodW5zaWduZWQgY2hhcikgdmFsLCBzdHJlYW0pOw0KKyAJ
fQ0KKyAgICAgICBicmVhazsNCisgDQorICAgICBjYXNlIFRZUEVfQ09ERV9GTFQ6DQorICAgICAg
IGlmIChmb3JtYXQpDQorIAl7DQorIAkgIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIg
KyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUsIGZvcm1hdCwgMCwgc3RyZWFtKTsNCisgCX0NCisgICAg
ICAgZWxzZQ0KKyAJew0KKyAJICBwcmludF9mbG9hdGluZyAodmFsYWRkciArIGVtYmVkZGVkX29m
ZnNldCwgdHlwZSwgc3RyZWFtKTsNCisgCX0NCisgICAgICAgYnJlYWs7DQorIA0KKyAgICAgY2Fz
ZSBUWVBFX0NPREVfQklUU1RSSU5HOg0KKyAgICAgY2FzZSBUWVBFX0NPREVfU0VUOg0KKyAgICAg
ICBlbHR0eXBlID0gVFlQRV9JTkRFWF9UWVBFICh0eXBlKTsNCisgICAgICAgQ0hFQ0tfVFlQRURF
RiAoZWx0dHlwZSk7DQorICAgICAgIGlmIChUWVBFX0ZMQUdTIChlbHR0eXBlKSAmIFRZUEVfRkxB
R19TVFVCKQ0KKyAJew0KKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICI8aW5jb21wbGV0
ZSB0eXBlPiIpOw0KKyAJICBnZGJfZmx1c2ggKHN0cmVhbSk7DQorIAkgIGJyZWFrOw0KKyAJfQ0K
KyAgICAgICBlbHNlDQorIAl7DQorIAkgIHN0cnVjdCB0eXBlICpyYW5nZSA9IGVsdHR5cGU7DQor
IAkgIExPTkdFU1QgbG93X2JvdW5kLCBoaWdoX2JvdW5kOw0KKyAJICBpbnQgaTsNCisgCSAgaW50
IGlzX2JpdHN0cmluZyA9IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0JJVFNUUklORzsN
CisgCSAgaW50IG5lZWRfY29tbWEgPSAwOw0KKyANCisgCSAgaWYgKGlzX2JpdHN0cmluZykNCisg
CSAgICBmcHV0c19maWx0ZXJlZCAoIkInIiwgc3RyZWFtKTsNCisgCSAgZWxzZQ0KKyAJICAgIGZw
dXRzX2ZpbHRlcmVkICgiWyIsIHN0cmVhbSk7DQorIA0KKyAJICBpID0gZ2V0X2Rpc2NyZXRlX2Jv
dW5kcyAocmFuZ2UsICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKTsNCisgCW1heWJlX2JhZF9ic3Ry
aW5nOg0KKyAJICBpZiAoaSA8IDApDQorIAkgICAgew0KKyAJICAgICAgZnB1dHNfZmlsdGVyZWQg
KCI8ZXJyb3IgdmFsdWU+Iiwgc3RyZWFtKTsNCisgCSAgICAgIGdvdG8gZG9uZTsNCisgCSAgICB9
DQorIA0KKyAJICBmb3IgKGkgPSBsb3dfYm91bmQ7IGkgPD0gaGlnaF9ib3VuZDsgaSsrKQ0KKyAJ
ICAgIHsNCisgCSAgICAgIGludCBlbGVtZW50ID0gdmFsdWVfYml0X2luZGV4ICh0eXBlLCB2YWxh
ZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCBpKTsNCisgCSAgICAgIGlmIChlbGVtZW50IDwgMCkNCisg
CQl7DQorIAkJICBpID0gZWxlbWVudDsNCisgCQkgIGdvdG8gbWF5YmVfYmFkX2JzdHJpbmc7DQor
IAkJfQ0KKyAJICAgICAgaWYgKGlzX2JpdHN0cmluZykNCisgCQlmcHJpbnRmX2ZpbHRlcmVkIChz
dHJlYW0sICIlZCIsIGVsZW1lbnQpOw0KKyAJICAgICAgZWxzZSBpZiAoZWxlbWVudCkNCisgCQl7
DQorIAkJICBpZiAobmVlZF9jb21tYSkNCisgCQkgICAgZnB1dHNfZmlsdGVyZWQgKCIsICIsIHN0
cmVhbSk7DQorIAkJICBwcmludF90eXBlX3NjYWxhciAocmFuZ2UsIGksIHN0cmVhbSk7DQorIAkJ
ICBuZWVkX2NvbW1hID0gMTsNCisgDQorIAkJICBpZiAoaSArIDEgPD0gaGlnaF9ib3VuZCAmJiB2
YWx1ZV9iaXRfaW5kZXggKHR5cGUsIHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsICsraSkpDQor
IAkJICAgIHsNCisgCQkgICAgICBpbnQgaiA9IGk7DQorIAkJICAgICAgZnB1dHNfZmlsdGVyZWQg
KCIuLiIsIHN0cmVhbSk7DQorIAkJICAgICAgd2hpbGUgKGkgKyAxIDw9IGhpZ2hfYm91bmQNCisg
CQkJICAgICAmJiB2YWx1ZV9iaXRfaW5kZXggKHR5cGUsIHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZz
ZXQsICsraSkpDQorIAkJCWogPSBpOw0KKyAJCSAgICAgIHByaW50X3R5cGVfc2NhbGFyIChyYW5n
ZSwgaiwgc3RyZWFtKTsNCisgCQkgICAgfQ0KKyAJCX0NCisgCSAgICB9DQorIAlkb25lOg0KKyAJ
ICBpZiAoaXNfYml0c3RyaW5nKQ0KKyAJICAgIGZwdXRzX2ZpbHRlcmVkICgiJyIsIHN0cmVhbSk7
DQorIAkgIGVsc2UNCisgCSAgICBmcHV0c19maWx0ZXJlZCAoIl0iLCBzdHJlYW0pOw0KKyAJfQ0K
KyAgICAgICBicmVhazsNCisgDQorICAgICBjYXNlIFRZUEVfQ09ERV9WT0lEOg0KKyAgICAgICBm
cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ2b2lkIik7DQorICAgICAgIGJyZWFrOw0KKyANCisg
ICAgIGNhc2UgVFlQRV9DT0RFX0VSUk9SOg0KKyAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJl
YW0sICI8ZXJyb3IgdHlwZT4iKTsNCisgICAgICAgYnJlYWs7DQorIA0KKyAgICAgY2FzZSBUWVBF
X0NPREVfVU5ERUY6DQorICAgICAgIC8qIFRoaXMgaGFwcGVucyAod2l0aG91dCBUWVBFX0ZMQUdf
U1RVQiBzZXQpIG9uIHN5c3RlbXMgd2hpY2ggZG9uJ3QgdXNlDQorICAgICAgICAgIGRieCB4cmVm
cyAoTk9fREJYX1hSRUZTIGluIGdjYykgaWYgYSBmaWxlIGhhcyBhICJzdHJ1Y3QgZm9vICpiYXIi
DQorICAgICAgICAgIGFuZCBubyBjb21wbGV0ZSB0eXBlIGZvciBzdHJ1Y3QgZm9vIGluIHRoYXQg
ZmlsZS4gICovDQorICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIjxpbmNvbXBsZXRl
IHR5cGU+Iik7DQorICAgICAgIGJyZWFrOw0KKyANCisgICAgIGRlZmF1bHQ6DQorICAgICAgIGVy
cm9yICgiSW52YWxpZCBwYXNjYWwgdHlwZSBjb2RlICVkIGluIHN5bWJvbCB0YWJsZS4iLCBUWVBF
X0NPREUgKHR5cGUpKTsNCisgICAgIH0NCisgICBnZGJfZmx1c2ggKHN0cmVhbSk7DQorICAgcmV0
dXJuICgwKTsNCisgfQ0KKyAMDQorIGludA0KKyBwYXNfdmFsdWVfcHJpbnQgKHZhbCwgc3RyZWFt
LCBmb3JtYXQsIHByZXR0eSkNCisgICAgICB2YWx1ZV9wdHIgdmFsOw0KKyAgICAgIHN0cnVjdCB1
aV9maWxlICpzdHJlYW07DQorICAgICAgaW50IGZvcm1hdDsNCisgICAgICBlbnVtIHZhbF9wcmV0
dHlwcmludCBwcmV0dHk7DQorIHsNCisgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IFZBTFVFX1RZUEUg
KHZhbCk7DQorIA0KKyAgIC8qIElmIGl0IGlzIGEgcG9pbnRlciwgaW5kaWNhdGUgd2hhdCBpdCBw
b2ludHMgdG8uDQorIA0KKyAgICAgIFByaW50IHR5cGUgYWxzbyBpZiBpdCBpcyBhIHJlZmVyZW5j
ZS4NCisgDQorICAgICAgQysrOiBpZiBpdCBpcyBhIG1lbWJlciBwb2ludGVyLCB3ZSB3aWxsIHRh
a2UgY2FyZQ0KKyAgICAgIG9mIHRoYXQgd2hlbiB3ZSBwcmludCBpdC4gICovDQorICAgaWYgKFRZ
UEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1BUUiB8fA0KKyAgICAgICBUWVBFX0NPREUgKHR5
cGUpID09IFRZUEVfQ09ERV9SRUYpDQorICAgICB7DQorICAgICAgIC8qIEhhY2s6ICByZW1vdmUg
KGNoYXIgKikgZm9yIGNoYXIgc3RyaW5ncy4gIFRoZWlyDQorICAgICAgICAgIHR5cGUgaXMgaW5k
aWNhdGVkIGJ5IHRoZSBxdW90ZWQgc3RyaW5nIGFueXdheS4gKi8NCisgICAgICAgaWYgKFRZUEVf
Q09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1BUUiAmJg0KKyAJICBUWVBFX05BTUUgKHR5cGUpID09
IE5VTEwgJiYNCisgCSAgVFlQRV9OQU1FIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgIT0gTlVM
TCAmJg0KKyAJICBTVFJFUSAoVFlQRV9OQU1FIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSksICJj
aGFyIikpDQorIAl7DQorIAkgIC8qIFByaW50IG5vdGhpbmcgKi8NCisgCX0NCisgICAgICAgZWxz
ZQ0KKyAJew0KKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoIik7DQorIAkgIHR5cGVf
cHJpbnQgKHR5cGUsICIiLCBzdHJlYW0sIC0xKTsNCisgCSAgZnByaW50Zl9maWx0ZXJlZCAoc3Ry
ZWFtLCAiKSAiKTsNCisgCX0NCisgICAgIH0NCisgICByZXR1cm4gdmFsX3ByaW50ICh0eXBlLCBW
QUxVRV9DT05URU5UUyAodmFsKSwgVkFMVUVfRU1CRURERURfT0ZGU0VUICh2YWwpLA0KKyAJCSAg
ICBWQUxVRV9BRERSRVNTICh2YWwpICsgVkFMVUVfT0ZGU0VUICh2YWwpLA0KKyAJCSAgICBzdHJl
YW0sIGZvcm1hdCwgMSwgMCwgcHJldHR5KTsNCisgfQ0KKyANCisgDQorIC8qKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioNCisgICAgICAgICAgICAgICAgICAgICBJbnNlcnRlZCBmcm9tIGNwLXZhbHByaW50
DQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgDQorIGV4dGVybiBpbnQgdnRibHByaW50OwkJ
LyogQ29udHJvbHMgcHJpbnRpbmcgb2YgdnRibCdzICovDQorIGV4dGVybiBpbnQgb2JqZWN0cHJp
bnQ7CQkvKiBDb250cm9scyBsb29raW5nIHVwIGFuIG9iamVjdCdzIGRlcml2ZWQgdHlwZQ0KKyAJ
CQkJICAgdXNpbmcgd2hhdCB3ZSBmaW5kIGluIGl0cyB2dGFibGVzLiAgKi8NCisgc3RhdGljIGlu
dCBwYXNfc3RhdGljX2ZpZWxkX3ByaW50OwkvKiBDb250cm9scyBwcmludGluZyBvZiBzdGF0aWMg
ZmllbGRzLiAqLw0KKyANCisgc3RhdGljIHN0cnVjdCBvYnN0YWNrIGRvbnRfcHJpbnRfdmJfb2Jz
dGFjazsNCisgc3RhdGljIHN0cnVjdCBvYnN0YWNrIGRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNr
Ow0KKyANCisgc3RhdGljIHZvaWQNCisgcGFzX2NwX3ByaW50X3N0YXRpY19maWVsZCBQQVJBTVMg
KChzdHJ1Y3QgdHlwZSAqLCB2YWx1ZV9wdHIsIHN0cnVjdCB1aV9maWxlICosIGludCwgaW50LA0K
KyAJCQkJICAgZW51bSB2YWxfcHJldHR5cHJpbnQpKTsNCisgDQorIHN0YXRpYyB2b2lkDQorIHBh
c19jcF9wcmludF92YWx1ZSBQQVJBTVMgKChzdHJ1Y3QgdHlwZSAqLCBjaGFyICosIENPUkVfQURE
Uiwgc3RydWN0IHVpX2ZpbGUgKiwNCisgCQkJICAgIGludCwgaW50LCBlbnVtIHZhbF9wcmV0dHlw
cmludCwgc3RydWN0IHR5cGUgKiopKTsNCisgDQorIHZvaWQNCisgcGFzX2NwX3ByaW50X2NsYXNz
X21ldGhvZCAodmFsYWRkciwgdHlwZSwgc3RyZWFtKQ0KKyAgICAgIGNoYXIgKnZhbGFkZHI7DQor
ICAgICAgc3RydWN0IHR5cGUgKnR5cGU7DQorICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbTsN
Cisgew0KKyAgIHN0cnVjdCB0eXBlICpkb21haW47DQorICAgc3RydWN0IGZuX2ZpZWxkICpmID0g
TlVMTDsNCisgICBpbnQgaiA9IDA7DQorICAgaW50IGxlbjI7DQorICAgaW50IG9mZnNldDsNCisg
ICBjaGFyICpraW5kID0gIiI7DQorICAgQ09SRV9BRERSIGFkZHI7DQorICAgc3RydWN0IHN5bWJv
bCAqc3ltOw0KKyAgIHVuc2lnbmVkIGxlbjsNCisgICB1bnNpZ25lZCBpbnQgaTsNCisgICBzdHJ1
Y3QgdHlwZSAqdGFyZ2V0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0
eXBlKSk7DQorIA0KKyAgIGRvbWFpbiA9IFRZUEVfRE9NQUlOX1RZUEUgKHRhcmdldF90eXBlKTsN
CisgICBpZiAoZG9tYWluID09IChzdHJ1Y3QgdHlwZSAqKSBOVUxMKQ0KKyAgICAgew0KKyAgICAg
ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICI8dW5rbm93bj4iKTsNCisgICAgICAgcmV0dXJu
Ow0KKyAgICAgfQ0KKyAgIGFkZHIgPSB1bnBhY2tfcG9pbnRlciAobG9va3VwX3BvaW50ZXJfdHlw
ZSAoYnVpbHRpbl90eXBlX3ZvaWQpLCB2YWxhZGRyKTsNCisgICBpZiAoTUVUSE9EX1BUUl9JU19W
SVJUVUFMIChhZGRyKSkNCisgICAgIHsNCisgICAgICAgb2Zmc2V0ID0gTUVUSE9EX1BUUl9UT19W
T0ZGU0VUIChhZGRyKTsNCisgICAgICAgbGVuID0gVFlQRV9ORk5fRklFTERTIChkb21haW4pOw0K
KyAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspDQorIAl7DQorIAkgIGYgPSBUWVBFX0ZO
X0ZJRUxETElTVDEgKGRvbWFpbiwgaSk7DQorIAkgIGxlbjIgPSBUWVBFX0ZOX0ZJRUxETElTVF9M
RU5HVEggKGRvbWFpbiwgaSk7DQorIA0KKyAJICBmb3IgKGogPSAwOyBqIDwgbGVuMjsgaisrKQ0K
KyAJICAgIHsNCisgCSAgICAgIFFVSVQ7DQorIAkgICAgICBpZiAoVFlQRV9GTl9GSUVMRF9WT0ZG
U0VUIChmLCBqKSA9PSBvZmZzZXQpDQorIAkJew0KKyAJCSAgaWYgKFRZUEVfRk5fRklFTERfU1RV
QiAoZiwgaikpDQorIAkJICAgIGNoZWNrX3N0dWJfbWV0aG9kIChkb21haW4sIGksIGopOw0KKyAJ
CSAga2luZCA9ICJ2aXJ0dWFsICI7DQorIAkJICBnb3RvIGNvbW1vbjsNCisgCQl9DQorIAkgICAg
fQ0KKyAJfQ0KKyAgICAgfQ0KKyAgIGVsc2UNCisgICAgIHsNCisgICAgICAgc3ltID0gZmluZF9w
Y19mdW5jdGlvbiAoYWRkcik7DQorICAgICAgIGlmIChzeW0gPT0gMCkNCisgCXsNCisgCSAgZXJy
b3IgKCJpbnZhbGlkIHBvaW50ZXIgdG8gbWVtYmVyIGZ1bmN0aW9uIik7DQorIAl9DQorICAgICAg
IGxlbiA9IFRZUEVfTkZOX0ZJRUxEUyAoZG9tYWluKTsNCisgICAgICAgZm9yIChpID0gMDsgaSA8
IGxlbjsgaSsrKQ0KKyAJew0KKyAJICBmID0gVFlQRV9GTl9GSUVMRExJU1QxIChkb21haW4sIGkp
Ow0KKyAJICBsZW4yID0gVFlQRV9GTl9GSUVMRExJU1RfTEVOR1RIIChkb21haW4sIGkpOw0KKyAN
CisgCSAgZm9yIChqID0gMDsgaiA8IGxlbjI7IGorKykNCisgCSAgICB7DQorIAkgICAgICBRVUlU
Ow0KKyAJICAgICAgaWYgKFRZUEVfRk5fRklFTERfU1RVQiAoZiwgaikpDQorIAkJY2hlY2tfc3R1
Yl9tZXRob2QgKGRvbWFpbiwgaSwgaik7DQorIAkgICAgICBpZiAoU1RSRVEgKFNZTUJPTF9OQU1F
IChzeW0pLCBUWVBFX0ZOX0ZJRUxEX1BIWVNOQU1FIChmLCBqKSkpDQorIAkJew0KKyAJCSAgZ290
byBjb21tb247DQorIAkJfQ0KKyAJICAgIH0NCisgCX0NCisgICAgIH0NCisgY29tbW9uOg0KKyAg
IGlmIChpIDwgbGVuKQ0KKyAgICAgew0KKyAgICAgICBjaGFyICpkZW1hbmdsZWRfbmFtZTsNCisg
DQorICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiYiKTsNCisgICAgICAgZnByaW50
Zl9maWx0ZXJlZCAoc3RyZWFtLCBraW5kKTsNCisgICAgICAgZGVtYW5nbGVkX25hbWUgPSBjcGx1
c19kZW1hbmdsZSAoVFlQRV9GTl9GSUVMRF9QSFlTTkFNRSAoZiwgaiksDQorIAkJCQkgICAgICAg
RE1HTF9BTlNJIHwgRE1HTF9QQVJBTVMpOw0KKyAgICAgICBpZiAoZGVtYW5nbGVkX25hbWUgPT0g
TlVMTCkNCisgCWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIjxiYWRseSBtYW5nbGVkIG5hbWUg
JXM+IiwNCisgCQkJICBUWVBFX0ZOX0ZJRUxEX1BIWVNOQU1FIChmLCBqKSk7DQorICAgICAgIGVs
c2UNCisgCXsNCisgCSAgZnB1dHNfZmlsdGVyZWQgKGRlbWFuZ2xlZF9uYW1lLCBzdHJlYW0pOw0K
KyAJICBmcmVlIChkZW1hbmdsZWRfbmFtZSk7DQorIAl9DQorICAgICB9DQorICAgZWxzZQ0KKyAg
ICAgew0KKyAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoIik7DQorICAgICAgIHR5
cGVfcHJpbnQgKHR5cGUsICIiLCBzdHJlYW0sIC0xKTsNCisgICAgICAgZnByaW50Zl9maWx0ZXJl
ZCAoc3RyZWFtLCAiKSAlZCIsIChpbnQpIGFkZHIgPj4gMyk7DQorICAgICB9DQorIH0NCisgDQor
IC8qIEl0IHdhcyBjaGFuZ2VkIHRvIHRoaXMgYWZ0ZXIgMi40LjUuICAqLw0KKyBjb25zdCBjaGFy
IHBhc192dGJsX3B0cl9uYW1lW10gPQ0KKyB7J18nLCAnXycsICd2JywgJ3QnLCAnYicsICdsJywg
J18nLCAncCcsICd0JywgJ3InLCAnXycsICd0JywgJ3knLCAncCcsICdlJywgMH07DQorIA0KKyAv
KiBSZXR1cm4gdHJ1dGggdmFsdWUgZm9yIGFzc2VydGlvbiB0aGF0IFRZUEUgaXMgb2YgdGhlIHR5
cGUNCisgICAgInBvaW50ZXIgdG8gdmlydHVhbCBmdW5jdGlvbiIuICAqLw0KKyANCisgaW50DQor
IHBhc19jcF9pc192dGJsX3B0cl90eXBlICh0eXBlKQ0KKyAgICAgIHN0cnVjdCB0eXBlICp0eXBl
Ow0KKyB7DQorICAgY2hhciAqdHlwZW5hbWUgPSB0eXBlX25hbWVfbm9fdGFnICh0eXBlKTsNCisg
DQorICAgcmV0dXJuICh0eXBlbmFtZSAhPSBOVUxMDQorIAkgICYmIChTVFJFUSAodHlwZW5hbWUs
IHBhc192dGJsX3B0cl9uYW1lKSkpOw0KKyB9DQorIA0KKyAvKiBSZXR1cm4gdHJ1dGggdmFsdWUg
Zm9yIHRoZSBhc3NlcnRpb24gdGhhdCBUWVBFIGlzIG9mIHRoZSB0eXBlDQorICAgICJwb2ludGVy
IHRvIHZpcnR1YWwgZnVuY3Rpb24gdGFibGUiLiAgKi8NCisgDQorIGludA0KKyBwYXNfY3BfaXNf
dnRibF9tZW1iZXIgKHR5cGUpDQorICAgICAgc3RydWN0IHR5cGUgKnR5cGU7DQorIHsNCisgICBp
ZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUFRSKQ0KKyAgICAgew0KKyAgICAgICB0
eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAodHlwZSk7DQorICAgICAgIGlmIChUWVBFX0NPREUgKHR5
cGUpID09IFRZUEVfQ09ERV9BUlJBWSkNCisgCXsNCisgCSAgdHlwZSA9IFRZUEVfVEFSR0VUX1RZ
UEUgKHR5cGUpOw0KKyAJICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfU1RSVUNU
CS8qIGlmIG5vdCB1c2luZyB0aHVua3MgKi8NCisgCSAgICAgIHx8IFRZUEVfQ09ERSAodHlwZSkg
PT0gVFlQRV9DT0RFX1BUUikJLyogaWYgdXNpbmcgdGh1bmtzICovDQorIAkgICAgew0KKyAJICAg
ICAgLyogVmlydHVhbCBmdW5jdGlvbnMgdGFibGVzIGFyZSBmdWxsIG9mIHBvaW50ZXJzDQorIAkg
ICAgICAgICB0byB2aXJ0dWFsIGZ1bmN0aW9ucy4gKi8NCisgCSAgICAgIHJldHVybiBwYXNfY3Bf
aXNfdnRibF9wdHJfdHlwZSAodHlwZSk7DQorIAkgICAgfQ0KKyAJfQ0KKyAgICAgfQ0KKyAgIHJl
dHVybiAwOw0KKyB9DQorIA0KKyAvKiBNdXR1YWxseSByZWN1cnNpdmUgc3Vicm91dGluZXMgb2Yg
cGFzX2NwX3ByaW50X3ZhbHVlIGFuZCBjX3ZhbF9wcmludCB0bw0KKyAgICBwcmludCBvdXQgYSBz
dHJ1Y3R1cmUncyBmaWVsZHM6IHBhc19jcF9wcmludF92YWx1ZV9maWVsZHMgYW5kIHBhc19jcF9w
cmludF92YWx1ZS4NCisgDQorICAgIFRZUEUsIFZBTEFERFIsIEFERFJFU1MsIFNUUkVBTSwgUkVD
VVJTRSwgYW5kIFBSRVRUWSBoYXZlIHRoZQ0KKyAgICBzYW1lIG1lYW5pbmdzIGFzIGluIHBhc19j
cF9wcmludF92YWx1ZSBhbmQgY192YWxfcHJpbnQuDQorIA0KKyAgICBET05UX1BSSU5UIGlzIGFu
IGFycmF5IG9mIGJhc2VjbGFzcyB0eXBlcyB0aGF0IHdlDQorICAgIHNob3VsZCBub3QgcHJpbnQs
IG9yIHplcm8gaWYgY2FsbGVkIGZyb20gdG9wIGxldmVsLiAgKi8NCisgDQorIHZvaWQNCisgcGFz
X2NwX3ByaW50X3ZhbHVlX2ZpZWxkcyAodHlwZSwgdmFsYWRkciwgYWRkcmVzcywgc3RyZWFtLCBm
b3JtYXQsIHJlY3Vyc2UsIHByZXR0eSwNCisgCQkJICAgZG9udF9wcmludF92YiwgZG9udF9wcmlu
dF9zdGF0bWVtKQ0KKyAgICAgIHN0cnVjdCB0eXBlICp0eXBlOw0KKyAgICAgIGNoYXIgKnZhbGFk
ZHI7DQorICAgICAgQ09SRV9BRERSIGFkZHJlc3M7DQorICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0
cmVhbTsNCisgICAgICBpbnQgZm9ybWF0Ow0KKyAgICAgIGludCByZWN1cnNlOw0KKyAgICAgIGVu
dW0gdmFsX3ByZXR0eXByaW50IHByZXR0eTsNCisgICAgICBzdHJ1Y3QgdHlwZSAqKmRvbnRfcHJp
bnRfdmI7DQorICAgICAgaW50IGRvbnRfcHJpbnRfc3RhdG1lbTsNCisgew0KKyAgIGludCBpLCBs
ZW4sIG5fYmFzZWNsYXNzZXM7DQorICAgc3RydWN0IG9ic3RhY2sgdG1wX29ic3RhY2s7DQorICAg
Y2hhciAqbGFzdF9kb250X3ByaW50ID0gb2JzdGFja19uZXh0X2ZyZWUgKCZkb250X3ByaW50X3N0
YXRtZW1fb2JzdGFjayk7DQorIA0KKyAgIENIRUNLX1RZUEVERUYgKHR5cGUpOw0KKyANCisgICBm
cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ7Iik7DQorICAgbGVuID0gVFlQRV9ORklFTERTICh0
eXBlKTsNCisgICBuX2Jhc2VjbGFzc2VzID0gVFlQRV9OX0JBU0VDTEFTU0VTICh0eXBlKTsNCisg
DQorICAgLyogUHJpbnQgb3V0IGJhc2VjbGFzc2VzIHN1Y2ggdGhhdCB3ZSBkb24ndCBwcmludA0K
KyAgICAgIGR1cGxpY2F0ZXMgb2YgdmlydHVhbCBiYXNlY2xhc3Nlcy4gICovDQorICAgaWYgKG5f
YmFzZWNsYXNzZXMgPiAwKQ0KKyAgICAgcGFzX2NwX3ByaW50X3ZhbHVlICh0eXBlLCB2YWxhZGRy
LCBhZGRyZXNzLCBzdHJlYW0sDQorIAkJCWZvcm1hdCwgcmVjdXJzZSArIDEsIHByZXR0eSwgZG9u
dF9wcmludF92Yik7DQorIA0KKyAgIGlmICghbGVuICYmIG5fYmFzZWNsYXNzZXMgPT0gMSkNCisg
ICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIjxObyBkYXRhIGZpZWxkcz4iKTsNCisgICBl
bHNlDQorICAgICB7DQorICAgICAgIGV4dGVybiBpbnQgaW5zcGVjdF9pdDsNCisgICAgICAgaW50
IGZpZWxkc19zZWVuID0gMDsNCisgDQorICAgICAgIGlmIChkb250X3ByaW50X3N0YXRtZW0gPT0g
MCkNCisgCXsNCisgCSAgLyogSWYgd2UncmUgYXQgdG9wIGxldmVsLCBjYXJ2ZSBvdXQgYSBjb21w
bGV0ZWx5IGZyZXNoDQorIAkgICAgIGNodW5rIG9mIHRoZSBvYnN0YWNrIGFuZCB1c2UgdGhhdCB1
bnRpbCB0aGlzIHBhcnRpY3VsYXINCisgCSAgICAgaW52b2NhdGlvbiByZXR1cm5zLiAgKi8NCisg
CSAgdG1wX29ic3RhY2sgPSBkb250X3ByaW50X3N0YXRtZW1fb2JzdGFjazsNCisgCSAgb2JzdGFj
a19maW5pc2ggKCZkb250X3ByaW50X3N0YXRtZW1fb2JzdGFjayk7DQorIAl9DQorIA0KKyAgICAg
ICBmb3IgKGkgPSBuX2Jhc2VjbGFzc2VzOyBpIDwgbGVuOyBpKyspDQorIAl7DQorIAkgIC8qIElm
IHJlcXVlc3RlZCwgc2tpcCBwcmludGluZyBvZiBzdGF0aWMgZmllbGRzLiAgKi8NCisgCSAgaWYg
KCFwYXNfc3RhdGljX2ZpZWxkX3ByaW50ICYmIFRZUEVfRklFTERfU1RBVElDICh0eXBlLCBpKSkN
CisgCSAgICBjb250aW51ZTsNCisgCSAgaWYgKGZpZWxkc19zZWVuKQ0KKyAJICAgIGZwcmludGZf
ZmlsdGVyZWQgKHN0cmVhbSwgIiwgIik7DQorIAkgIGVsc2UgaWYgKG5fYmFzZWNsYXNzZXMgPiAw
KQ0KKyAJICAgIHsNCisgCSAgICAgIGlmIChwcmV0dHkpDQorIAkJew0KKyAJCSAgZnByaW50Zl9m
aWx0ZXJlZCAoc3RyZWFtLCAiXG4iKTsNCisgCQkgIHByaW50X3NwYWNlc19maWx0ZXJlZCAoMiAr
IDIgKiByZWN1cnNlLCBzdHJlYW0pOw0KKyAJCSAgZnB1dHNfZmlsdGVyZWQgKCJtZW1iZXJzIG9m
ICIsIHN0cmVhbSk7DQorIAkJICBmcHV0c19maWx0ZXJlZCAodHlwZV9uYW1lX25vX3RhZyAodHlw
ZSksIHN0cmVhbSk7DQorIAkJICBmcHV0c19maWx0ZXJlZCAoIjogIiwgc3RyZWFtKTsNCisgCQl9
DQorIAkgICAgfQ0KKyAJICBmaWVsZHNfc2VlbiA9IDE7DQorIA0KKyAJICBpZiAocHJldHR5KQ0K
KyAJICAgIHsNCisgCSAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIlxuIik7DQorIAkg
ICAgICBwcmludF9zcGFjZXNfZmlsdGVyZWQgKDIgKyAyICogcmVjdXJzZSwgc3RyZWFtKTsNCisg
CSAgICB9DQorIAkgIGVsc2UNCisgCSAgICB7DQorIAkgICAgICB3cmFwX2hlcmUgKG5fc3BhY2Vz
ICgyICsgMiAqIHJlY3Vyc2UpKTsNCisgCSAgICB9DQorIAkgIGlmIChpbnNwZWN0X2l0KQ0KKyAJ
ICAgIHsNCisgCSAgICAgIGlmIChUWVBFX0NPREUgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSkp
ID09IFRZUEVfQ09ERV9QVFIpDQorIAkJZnB1dHNfZmlsdGVyZWQgKCJcIiggcHRyIFwiIiwgc3Ry
ZWFtKTsNCisgCSAgICAgIGVsc2UNCisgCQlmcHV0c19maWx0ZXJlZCAoIlwiKCBub2RlZiBcIiIs
IHN0cmVhbSk7DQorIAkgICAgICBpZiAoVFlQRV9GSUVMRF9TVEFUSUMgKHR5cGUsIGkpKQ0KKyAJ
CWZwdXRzX2ZpbHRlcmVkICgic3RhdGljICIsIHN0cmVhbSk7DQorIAkgICAgICBmcHJpbnRmX3N5
bWJvbF9maWx0ZXJlZCAoc3RyZWFtLCBUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpLA0KKyAJCQkJ
ICAgICAgIGxhbmd1YWdlX2NwbHVzLA0KKyAJCQkJICAgICAgIERNR0xfUEFSQU1TIHwgRE1HTF9B
TlNJKTsNCisgCSAgICAgIGZwdXRzX2ZpbHRlcmVkICgiXCIgXCIiLCBzdHJlYW0pOw0KKyAJICAg
ICAgZnByaW50Zl9zeW1ib2xfZmlsdGVyZWQgKHN0cmVhbSwgVFlQRV9GSUVMRF9OQU1FICh0eXBl
LCBpKSwNCisgCQkJCSAgICAgICBsYW5ndWFnZV9jcGx1cywNCisgCQkJCSAgICAgICBETUdMX1BB
UkFNUyB8IERNR0xfQU5TSSk7DQorIAkgICAgICBmcHV0c19maWx0ZXJlZCAoIlwiKSBcIiIsIHN0
cmVhbSk7DQorIAkgICAgfQ0KKyAJICBlbHNlDQorIAkgICAgew0KKyAJICAgICAgYW5ub3RhdGVf
ZmllbGRfYmVnaW4gKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSkpOw0KKyANCisgCSAgICAgIGlm
IChUWVBFX0ZJRUxEX1NUQVRJQyAodHlwZSwgaSkpDQorIAkJZnB1dHNfZmlsdGVyZWQgKCJzdGF0
aWMgIiwgc3RyZWFtKTsNCisgCSAgICAgIGZwcmludGZfc3ltYm9sX2ZpbHRlcmVkIChzdHJlYW0s
IFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSksDQorIAkJCQkgICAgICAgbGFuZ3VhZ2VfY3BsdXMs
DQorIAkJCQkgICAgICAgRE1HTF9QQVJBTVMgfCBETUdMX0FOU0kpOw0KKyAJICAgICAgYW5ub3Rh
dGVfZmllbGRfbmFtZV9lbmQgKCk7DQorIAkgICAgICBmcHV0c19maWx0ZXJlZCAoIiA9ICIsIHN0
cmVhbSk7DQorIAkgICAgICBhbm5vdGF0ZV9maWVsZF92YWx1ZSAoKTsNCisgCSAgICB9DQorIA0K
KyAJICBpZiAoIVRZUEVfRklFTERfU1RBVElDICh0eXBlLCBpKSAmJiBUWVBFX0ZJRUxEX1BBQ0tF
RCAodHlwZSwgaSkpDQorIAkgICAgew0KKyAJICAgICAgdmFsdWVfcHRyIHY7DQorIA0KKyAJICAg
ICAgLyogQml0ZmllbGRzIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZywgZXNwZWNpYWxseSBkdWUg
dG8gYnl0ZQ0KKyAJICAgICAgICAgb3JkZXIgcHJvYmxlbXMuICAqLw0KKyAJICAgICAgaWYgKFRZ
UEVfRklFTERfSUdOT1JFICh0eXBlLCBpKSkNCisgCQl7DQorIAkJICBmcHV0c19maWx0ZXJlZCAo
IjxvcHRpbWl6ZWQgb3V0IG9yIHplcm8gbGVuZ3RoPiIsIHN0cmVhbSk7DQorIAkJfQ0KKyAJICAg
ICAgZWxzZQ0KKyAJCXsNCisgCQkgIHYgPSB2YWx1ZV9mcm9tX2xvbmdlc3QgKFRZUEVfRklFTERf
VFlQRSAodHlwZSwgaSksDQorIAkJCQkgICB1bnBhY2tfZmllbGRfYXNfbG9uZyAodHlwZSwgdmFs
YWRkciwgaSkpOw0KKyANCisgCQkgIHZhbF9wcmludCAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBp
KSwgVkFMVUVfQ09OVEVOVFMgKHYpLCAwLCAwLA0KKyAJCQkgICAgIHN0cmVhbSwgZm9ybWF0LCAw
LCByZWN1cnNlICsgMSwgcHJldHR5KTsNCisgCQl9DQorIAkgICAgfQ0KKyAJICBlbHNlDQorIAkg
ICAgew0KKyAJICAgICAgaWYgKFRZUEVfRklFTERfSUdOT1JFICh0eXBlLCBpKSkNCisgCQl7DQor
IAkJICBmcHV0c19maWx0ZXJlZCAoIjxvcHRpbWl6ZWQgb3V0IG9yIHplcm8gbGVuZ3RoPiIsIHN0
cmVhbSk7DQorIAkJfQ0KKyAJICAgICAgZWxzZSBpZiAoVFlQRV9GSUVMRF9TVEFUSUMgKHR5cGUs
IGkpKQ0KKyAJCXsNCisgCQkgIC8qIHZhbHVlX3B0ciB2ID0gdmFsdWVfc3RhdGljX2ZpZWxkICh0
eXBlLCBpKTsgdjQuMTcgc3BlY2lmaWMgKi8NCisgCQkgIHZhbHVlX3B0ciB2Ow0KKyAJCSAgdiA9
IHZhbHVlX2Zyb21fbG9uZ2VzdCAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSwNCisgCQkJCSAg
IHVucGFja19maWVsZF9hc19sb25nICh0eXBlLCB2YWxhZGRyLCBpKSk7DQorIA0KKyAJCSAgaWYg
KHYgPT0gTlVMTCkNCisgCQkgICAgZnB1dHNfZmlsdGVyZWQgKCI8b3B0aW1pemVkIG91dD4iLCBz
dHJlYW0pOw0KKyAJCSAgZWxzZQ0KKyAJCSAgICBwYXNfY3BfcHJpbnRfc3RhdGljX2ZpZWxkIChU
WVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLCB2LA0KKyAJCQkJCSAgICAgICBzdHJlYW0sIGZvcm1h
dCwgcmVjdXJzZSArIDEsDQorIAkJCQkJICAgICAgIHByZXR0eSk7DQorIAkJfQ0KKyAJICAgICAg
ZWxzZQ0KKyAJCXsNCisgCQkgIC8qIHZhbF9wcmludCAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBp
KSwNCisgCQkgICAgIHZhbGFkZHIgKyBUWVBFX0ZJRUxEX0JJVFBPUyAodHlwZSwgaSkgLyA4LA0K
KyAJCSAgICAgYWRkcmVzcyArIFRZUEVfRklFTERfQklUUE9TICh0eXBlLCBpKSAvIDgsIDAsDQor
IAkJICAgICBzdHJlYW0sIGZvcm1hdCwgMCwgcmVjdXJzZSArIDEsIHByZXR0eSk7ICovDQorIAkJ
ICB2YWxfcHJpbnQgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSksDQorIAkJCSAgICAgdmFsYWRk
ciwgVFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUsIGkpIC8gOCwNCisgCQkJICAgICBhZGRyZXNzICsg
VFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUsIGkpIC8gOCwNCisgCQkJICAgICBzdHJlYW0sIGZvcm1h
dCwgMCwgcmVjdXJzZSArIDEsIHByZXR0eSk7DQorIAkJfQ0KKyAJICAgIH0NCisgCSAgYW5ub3Rh
dGVfZmllbGRfZW5kICgpOw0KKyAJfQ0KKyANCisgICAgICAgaWYgKGRvbnRfcHJpbnRfc3RhdG1l
bSA9PSAwKQ0KKyAJew0KKyAJICAvKiBGcmVlIHRoZSBzcGFjZSB1c2VkIHRvIGRlYWwgd2l0aCB0
aGUgcHJpbnRpbmcNCisgCSAgICAgb2YgdGhlIG1lbWJlcnMgZnJvbSB0b3AgbGV2ZWwuICAqLw0K
KyAJICBvYnN0YWNrX2ZyZWUgKCZkb250X3ByaW50X3N0YXRtZW1fb2JzdGFjaywgbGFzdF9kb250
X3ByaW50KTsNCisgCSAgZG9udF9wcmludF9zdGF0bWVtX29ic3RhY2sgPSB0bXBfb2JzdGFjazsN
CisgCX0NCisgDQorICAgICAgIGlmIChwcmV0dHkpDQorIAl7DQorIAkgIGZwcmludGZfZmlsdGVy
ZWQgKHN0cmVhbSwgIlxuIik7DQorIAkgIHByaW50X3NwYWNlc19maWx0ZXJlZCAoMiAqIHJlY3Vy
c2UsIHN0cmVhbSk7DQorIAl9DQorICAgICB9DQorICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFt
LCAifSIpOw0KKyB9DQorIA0KKyAvKiBTcGVjaWFsIHZhbF9wcmludCByb3V0aW5lIHRvIGF2b2lk
IHByaW50aW5nIG11bHRpcGxlIGNvcGllcyBvZiB2aXJ0dWFsDQorICAgIGJhc2VjbGFzc2VzLiAg
Ki8NCisgDQorIHZvaWQNCisgcGFzX2NwX3ByaW50X3ZhbHVlICh0eXBlLCB2YWxhZGRyLCBhZGRy
ZXNzLCBzdHJlYW0sIGZvcm1hdCwgcmVjdXJzZSwgcHJldHR5LA0KKyAJCSAgICBkb250X3ByaW50
X3ZiKQ0KKyAgICAgIHN0cnVjdCB0eXBlICp0eXBlOw0KKyAgICAgIGNoYXIgKnZhbGFkZHI7DQor
ICAgICAgQ09SRV9BRERSIGFkZHJlc3M7DQorICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbTsN
CisgICAgICBpbnQgZm9ybWF0Ow0KKyAgICAgIGludCByZWN1cnNlOw0KKyAgICAgIGVudW0gdmFs
X3ByZXR0eXByaW50IHByZXR0eTsNCisgICAgICBzdHJ1Y3QgdHlwZSAqKmRvbnRfcHJpbnRfdmI7
DQorIHsNCisgICBzdHJ1Y3Qgb2JzdGFjayB0bXBfb2JzdGFjazsNCisgICBzdHJ1Y3QgdHlwZSAq
Kmxhc3RfZG9udF9wcmludA0KKyAgID0gKHN0cnVjdCB0eXBlICoqKSBvYnN0YWNrX25leHRfZnJl
ZSAoJmRvbnRfcHJpbnRfdmJfb2JzdGFjayk7DQorICAgaW50IGksIG5fYmFzZWNsYXNzZXMgPSBU
WVBFX05fQkFTRUNMQVNTRVMgKHR5cGUpOw0KKyANCisgICBpZiAoZG9udF9wcmludF92YiA9PSAw
KQ0KKyAgICAgew0KKyAgICAgICAvKiBJZiB3ZSdyZSBhdCB0b3AgbGV2ZWwsIGNhcnZlIG91dCBh
IGNvbXBsZXRlbHkgZnJlc2gNCisgICAgICAgICAgY2h1bmsgb2YgdGhlIG9ic3RhY2sgYW5kIHVz
ZSB0aGF0IHVudGlsIHRoaXMgcGFydGljdWxhcg0KKyAgICAgICAgICBpbnZvY2F0aW9uIHJldHVy
bnMuICAqLw0KKyAgICAgICB0bXBfb2JzdGFjayA9IGRvbnRfcHJpbnRfdmJfb2JzdGFjazsNCisg
ICAgICAgLyogQnVtcCB1cCB0aGUgaGlnaC13YXRlciBtYXJrLiAgTm93IGFscGhhIGlzIG9tZWdh
LiAgKi8NCisgICAgICAgb2JzdGFja19maW5pc2ggKCZkb250X3ByaW50X3ZiX29ic3RhY2spOw0K
KyAgICAgfQ0KKyANCisgICBmb3IgKGkgPSAwOyBpIDwgbl9iYXNlY2xhc3NlczsgaSsrKQ0KKyAg
ICAgew0KKyAgICAgICBpbnQgYm9mZnNldDsNCisgICAgICAgc3RydWN0IHR5cGUgKmJhc2VjbGFz
cyA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfQkFTRUNMQVNTICh0eXBlLCBpKSk7DQorICAgICAgIGNo
YXIgKmJhc2VuYW1lID0gVFlQRV9OQU1FIChiYXNlY2xhc3MpOw0KKyAgICAgICBjaGFyICpiYXNl
X3ZhbGFkZHI7DQorIA0KKyAgICAgICBpZiAoQkFTRVRZUEVfVklBX1ZJUlRVQUwgKHR5cGUsIGkp
KQ0KKyAJew0KKyAJICBzdHJ1Y3QgdHlwZSAqKmZpcnN0X2RvbnRfcHJpbnQNCisgCSAgPSAoc3Ry
dWN0IHR5cGUgKiopIG9ic3RhY2tfYmFzZSAoJmRvbnRfcHJpbnRfdmJfb2JzdGFjayk7DQorIA0K
KyAJICBpbnQgaiA9IChzdHJ1Y3QgdHlwZSAqKikgb2JzdGFja19uZXh0X2ZyZWUgKCZkb250X3By
aW50X3ZiX29ic3RhY2spDQorIAkgIC0gZmlyc3RfZG9udF9wcmludDsNCisgDQorIAkgIHdoaWxl
ICgtLWogPj0gMCkNCisgCSAgICBpZiAoYmFzZWNsYXNzID09IGZpcnN0X2RvbnRfcHJpbnRbal0p
DQorIAkgICAgICBnb3RvIGZsdXNoX2l0Ow0KKyANCisgCSAgb2JzdGFja19wdHJfZ3JvdyAoJmRv
bnRfcHJpbnRfdmJfb2JzdGFjaywgYmFzZWNsYXNzKTsNCisgCX0NCisgDQorICAgICAgIGJvZmZz
ZXQgPSBiYXNlY2xhc3Nfb2Zmc2V0ICh0eXBlLCBpLCB2YWxhZGRyLCBhZGRyZXNzKTsNCisgDQor
ICAgICAgIGlmIChwcmV0dHkpDQorIAl7DQorIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwg
IlxuIik7DQorIAkgIHByaW50X3NwYWNlc19maWx0ZXJlZCAoMiAqIHJlY3Vyc2UsIHN0cmVhbSk7
DQorIAl9DQorICAgICAgIGZwdXRzX2ZpbHRlcmVkICgiPCIsIHN0cmVhbSk7DQorICAgICAgIC8q
IE5vdCBzdXJlIHdoYXQgdGhlIGJlc3Qgbm90YXRpb24gaXMgaW4gdGhlIGNhc2Ugd2hlcmUgdGhl
cmUgaXMgbm8NCisgICAgICAgICAgYmFzZWNsYXNzIG5hbWUuICAqLw0KKyANCisgICAgICAgZnB1
dHNfZmlsdGVyZWQgKGJhc2VuYW1lID8gYmFzZW5hbWUgOiAiIiwgc3RyZWFtKTsNCisgICAgICAg
ZnB1dHNfZmlsdGVyZWQgKCI+ID0gIiwgc3RyZWFtKTsNCisgDQorICAgICAgIC8qIFRoZSB2aXJ0
dWFsIGJhc2UgY2xhc3MgcG9pbnRlciBtaWdodCBoYXZlIGJlZW4gY2xvYmJlcmVkIGJ5IHRoZQ0K
KyAgICAgICAgICB1c2VyIHByb2dyYW0uIE1ha2Ugc3VyZSB0aGF0IGl0IHN0aWxsIHBvaW50cyB0
byBhIHZhbGlkIG1lbW9yeQ0KKyAgICAgICAgICBsb2NhdGlvbi4gICovDQorIA0KKyAgICAgICBp
ZiAoYm9mZnNldCAhPSAtMSAmJiAoYm9mZnNldCA8IDAgfHwgYm9mZnNldCA+PSBUWVBFX0xFTkdU
SCAodHlwZSkpKQ0KKyAJew0KKyAJICBiYXNlX3ZhbGFkZHIgPSAoY2hhciAqKSBhbGxvY2EgKFRZ
UEVfTEVOR1RIIChiYXNlY2xhc3MpKTsNCisgCSAgaWYgKHRhcmdldF9yZWFkX21lbW9yeSAoYWRk
cmVzcyArIGJvZmZzZXQsIGJhc2VfdmFsYWRkciwNCisgCQkJCSAgVFlQRV9MRU5HVEggKGJhc2Vj
bGFzcykpICE9IDApDQorIAkgICAgYm9mZnNldCA9IC0xOw0KKyAJfQ0KKyAgICAgICBlbHNlDQor
IAliYXNlX3ZhbGFkZHIgPSB2YWxhZGRyICsgYm9mZnNldDsNCisgDQorICAgICAgIGlmIChib2Zm
c2V0ID09IC0xKQ0KKyAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiPGludmFsaWQgYWRkcmVz
cz4iKTsNCisgICAgICAgZWxzZQ0KKyAJcGFzX2NwX3ByaW50X3ZhbHVlX2ZpZWxkcyAoYmFzZWNs
YXNzLCBiYXNlX3ZhbGFkZHIsIGFkZHJlc3MgKyBib2Zmc2V0LA0KKyAJCQkJICAgc3RyZWFtLCBm
b3JtYXQsIHJlY3Vyc2UsIHByZXR0eSwNCisgCQkgICAgIChzdHJ1Y3QgdHlwZSAqKikgb2JzdGFj
a19iYXNlICgmZG9udF9wcmludF92Yl9vYnN0YWNrKSwNCisgCQkJCSAgIDApOw0KKyAgICAgICBm
cHV0c19maWx0ZXJlZCAoIiwgIiwgc3RyZWFtKTsNCisgDQorICAgICBmbHVzaF9pdDoNCisgICAg
ICAgOw0KKyAgICAgfQ0KKyANCisgICBpZiAoZG9udF9wcmludF92YiA9PSAwKQ0KKyAgICAgew0K
KyAgICAgICAvKiBGcmVlIHRoZSBzcGFjZSB1c2VkIHRvIGRlYWwgd2l0aCB0aGUgcHJpbnRpbmcN
CisgICAgICAgICAgb2YgdGhpcyB0eXBlIGZyb20gdG9wIGxldmVsLiAgKi8NCisgICAgICAgb2Jz
dGFja19mcmVlICgmZG9udF9wcmludF92Yl9vYnN0YWNrLCBsYXN0X2RvbnRfcHJpbnQpOw0KKyAg
ICAgICAvKiBSZXNldCB3YXRlcm1hcmsgc28gdGhhdCB3ZSBjYW4gY29udGludWUgcHJvdGVjdGlu
Zw0KKyAgICAgICAgICBvdXJzZWx2ZXMgZnJvbSB3aGF0ZXZlciB3ZSB3ZXJlIHByb3RlY3Rpbmcg
b3Vyc2VsdmVzLiAgKi8NCisgICAgICAgZG9udF9wcmludF92Yl9vYnN0YWNrID0gdG1wX29ic3Rh
Y2s7DQorICAgICB9DQorIH0NCisgDQorIC8qIFByaW50IHZhbHVlIG9mIGEgc3RhdGljIG1lbWJl
ci4NCisgICAgVG8gYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uIHdoZW4gcHJpbnRpbmcgYSBjbGFz
cyB0aGF0IGNvbnRhaW5zDQorICAgIGEgc3RhdGljIGluc3RhbmNlIG9mIHRoZSBjbGFzcywgd2Ug
a2VlcCB0aGUgYWRkcmVzc2VzIG9mIGFsbCBwcmludGVkDQorICAgIHN0YXRpYyBtZW1iZXIgY2xh
c3NlcyBpbiBhbiBvYnN0YWNrIGFuZCByZWZ1c2UgdG8gcHJpbnQgdGhlbSBtb3JlDQorICAgIHRo
YW4gb25jZS4NCisgDQorICAgIFZBTCBjb250YWlucyB0aGUgdmFsdWUgdG8gcHJpbnQsIFRZUEUs
IFNUUkVBTSwgUkVDVVJTRSwgYW5kIFBSRVRUWQ0KKyAgICBoYXZlIHRoZSBzYW1lIG1lYW5pbmdz
IGFzIGluIGNfdmFsX3ByaW50LiAgKi8NCisgDQorIHN0YXRpYyB2b2lkDQorIHBhc19jcF9wcmlu
dF9zdGF0aWNfZmllbGQgKHR5cGUsIHZhbCwgc3RyZWFtLCBmb3JtYXQsIHJlY3Vyc2UsIHByZXR0
eSkNCisgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZTsNCisgICAgICB2YWx1ZV9wdHIgdmFsOw0KKyAg
ICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW07DQorICAgICAgaW50IGZvcm1hdDsNCisgICAgICBp
bnQgcmVjdXJzZTsNCisgICAgICBlbnVtIHZhbF9wcmV0dHlwcmludCBwcmV0dHk7DQorIHsNCisg
ICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfU1RSVUNUKQ0KKyAgICAgew0KKyAg
ICAgICBDT1JFX0FERFIgKmZpcnN0X2RvbnRfcHJpbnQ7DQorICAgICAgIGludCBpOw0KKyANCisg
ICAgICAgZmlyc3RfZG9udF9wcmludA0KKyAJPSAoQ09SRV9BRERSICopIG9ic3RhY2tfYmFzZSAo
JmRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNrKTsNCisgICAgICAgaSA9IChDT1JFX0FERFIgKikg
b2JzdGFja19uZXh0X2ZyZWUgKCZkb250X3ByaW50X3N0YXRtZW1fb2JzdGFjaykNCisgCS0gZmly
c3RfZG9udF9wcmludDsNCisgDQorICAgICAgIHdoaWxlICgtLWkgPj0gMCkNCisgCXsNCisgCSAg
aWYgKFZBTFVFX0FERFJFU1MgKHZhbCkgPT0gZmlyc3RfZG9udF9wcmludFtpXSkNCisgCSAgICB7
DQorIAkgICAgICBmcHV0c19maWx0ZXJlZCAoIjxzYW1lIGFzIHN0YXRpYyBtZW1iZXIgb2YgYW4g
YWxyZWFkeSBzZWVuIHR5cGU+IiwNCisgCQkJICAgICAgc3RyZWFtKTsNCisgCSAgICAgIHJldHVy
bjsNCisgCSAgICB9DQorIAl9DQorIA0KKyAgICAgICBvYnN0YWNrX2dyb3cgKCZkb250X3ByaW50
X3N0YXRtZW1fb2JzdGFjaywgKGNoYXIgKikgJlZBTFVFX0FERFJFU1MgKHZhbCksDQorIAkJICAg
IHNpemVvZiAoQ09SRV9BRERSKSk7DQorIA0KKyAgICAgICBDSEVDS19UWVBFREVGICh0eXBlKTsN
CisgICAgICAgcGFzX2NwX3ByaW50X3ZhbHVlX2ZpZWxkcyAodHlwZSwgVkFMVUVfQ09OVEVOVFMg
KHZhbCksIFZBTFVFX0FERFJFU1MgKHZhbCksDQorIAkJCQkgc3RyZWFtLCBmb3JtYXQsIHJlY3Vy
c2UsIHByZXR0eSwgTlVMTCwgMSk7DQorICAgICAgIHJldHVybjsNCisgICAgIH0NCisgICB2YWxf
cHJpbnQgKHR5cGUsIFZBTFVFX0NPTlRFTlRTICh2YWwpLCAwLCBWQUxVRV9BRERSRVNTICh2YWwp
LA0KKyAJICAgICBzdHJlYW0sIGZvcm1hdCwgMCwgcmVjdXJzZSwgcHJldHR5KTsNCisgfQ0KKyAN
Cisgdm9pZA0KKyBwYXNfY3BfcHJpbnRfY2xhc3NfbWVtYmVyICh2YWxhZGRyLCBkb21haW4sIHN0
cmVhbSwgcHJlZml4KQ0KKyAgICAgIGNoYXIgKnZhbGFkZHI7DQorICAgICAgc3RydWN0IHR5cGUg
KmRvbWFpbjsNCisgICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtOw0KKyAgICAgIGNoYXIgKnBy
ZWZpeDsNCisgew0KKyANCisgICAvKiBWQUwgaXMgYSBieXRlIG9mZnNldCBpbnRvIHRoZSBzdHJ1
Y3R1cmUgdHlwZSBET01BSU4uDQorICAgICAgRmluZCB0aGUgbmFtZSBvZiB0aGUgZmllbGQgZm9y
IHRoYXQgb2Zmc2V0IGFuZA0KKyAgICAgIHByaW50IGl0LiAgKi8NCisgICBpbnQgZXh0cmEgPSAw
Ow0KKyAgIGludCBiaXRzID0gMDsNCisgICByZWdpc3RlciB1bnNpZ25lZCBpbnQgaTsNCisgICB1
bnNpZ25lZCBsZW4gPSBUWVBFX05GSUVMRFMgKGRvbWFpbik7DQorICAgLyogQEAgTWFrZSBWQUwg
aW50byBiaXQgb2Zmc2V0ICovDQorICAgTE9OR0VTVCB2YWwgPSB1bnBhY2tfbG9uZyAoYnVpbHRp
bl90eXBlX2ludCwgdmFsYWRkcikgPDwgMzsNCisgICBmb3IgKGkgPSBUWVBFX05fQkFTRUNMQVNT
RVMgKGRvbWFpbik7IGkgPCBsZW47IGkrKykNCisgICAgIHsNCisgICAgICAgaW50IGJpdHBvcyA9
IFRZUEVfRklFTERfQklUUE9TIChkb21haW4sIGkpOw0KKyAgICAgICBRVUlUOw0KKyAgICAgICBp
ZiAodmFsID09IGJpdHBvcykNCisgCWJyZWFrOw0KKyAgICAgICBpZiAodmFsIDwgYml0cG9zICYm
IGkgIT0gMCkNCisgCXsNCisgCSAgLyogU29tZWhvdyBwb2ludGluZyBpbnRvIGEgZmllbGQuICAq
Lw0KKyAJICBpIC09IDE7DQorIAkgIGV4dHJhID0gKHZhbCAtIFRZUEVfRklFTERfQklUUE9TIChk
b21haW4sIGkpKTsNCisgCSAgaWYgKGV4dHJhICYgMHg3KQ0KKyAJICAgIGJpdHMgPSAxOw0KKyAJ
ICBlbHNlDQorIAkgICAgZXh0cmEgPj49IDM7DQorIAkgIGJyZWFrOw0KKyAJfQ0KKyAgICAgfQ0K
KyAgIGlmIChpIDwgbGVuKQ0KKyAgICAgew0KKyAgICAgICBjaGFyICpuYW1lOw0KKyAgICAgICBm
cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sIHByZWZpeCk7DQorICAgICAgIG5hbWUgPSB0eXBlX25h
bWVfbm9fdGFnIChkb21haW4pOw0KKyAgICAgICBpZiAobmFtZSkNCisgCWZwdXRzX2ZpbHRlcmVk
IChuYW1lLCBzdHJlYW0pOw0KKyAgICAgICBlbHNlDQorIAljX3R5cGVfcHJpbnRfYmFzZSAoZG9t
YWluLCBzdHJlYW0sIDAsIDApOw0KKyAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICI6
OiIpOw0KKyAgICAgICBmcHV0c19maWx0ZXJlZCAoVFlQRV9GSUVMRF9OQU1FIChkb21haW4sIGkp
LCBzdHJlYW0pOw0KKyAgICAgICBpZiAoZXh0cmEpDQorIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJl
YW0sICIgKyAlZCBieXRlcyIsIGV4dHJhKTsNCisgICAgICAgaWYgKGJpdHMpDQorIAlmcHJpbnRm
X2ZpbHRlcmVkIChzdHJlYW0sICIgKG9mZnNldCBpbiBiaXRzKSIpOw0KKyAgICAgfQ0KKyAgIGVs
c2UNCisgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiVkIiwgdmFsID4+IDMpOw0KKyB9
DQorIA0KKyANCisgdm9pZA0KKyBfaW5pdGlhbGl6ZV9wYXNfdmFscHJpbnQgKCkNCisgew0KKyAg
IGFkZF9zaG93X2Zyb21fc2V0DQorICAgICAoYWRkX3NldF9jbWQgKCJwYXNfc3RhdGljLW1lbWJl
cnMiLCBjbGFzc19zdXBwb3J0LCB2YXJfYm9vbGVhbiwNCisgCQkgIChjaGFyICopICZwYXNfc3Rh
dGljX2ZpZWxkX3ByaW50LA0KKyAJCSAgIlNldCBwcmludGluZyBvZiBwYXNjYWwgc3RhdGljIG1l
bWJlcnMuIiwNCisgCQkgICZzZXRwcmludGxpc3QpLA0KKyAgICAgICZzaG93cHJpbnRsaXN0KTsN
CisgICAvKiBUdXJuIG9uIHByaW50aW5nIG9mIHN0YXRpYyBmaWVsZHMuICAqLw0KKyAgIHBhc19z
dGF0aWNfZmllbGRfcHJpbnQgPSAxOw0KKyANCisgICAvKiBhZGRfc2hvd19mcm9tX3NldA0KKyAg
ICAgIChhZGRfc2V0X2NtZCAoInZ0YmwiLCBjbGFzc19zdXBwb3J0LCB2YXJfYm9vbGVhbiwgKGNo
YXIgKikmdnRibHByaW50LA0KKyAgICAgICJTZXQgcHJpbnRpbmcgb2YgcGFzY2FsIHZpcnR1YWwg
ZnVuY3Rpb24gdGFibGVzLiIsDQorICAgICAgJnNldHByaW50bGlzdCksDQorICAgICAgJnNob3dw
cmludGxpc3QpO2RvbmUgaW4gX2luaXRpbGlhemVfY3BfdmFscHJpbnQgKi8NCisgDQorICAgLyog
YWRkX3Nob3dfZnJvbV9zZXQNCisgICAgICAoYWRkX3NldF9jbWQgKCJvYmplY3QiLCBjbGFzc19z
dXBwb3J0LCB2YXJfYm9vbGVhbiwgKGNoYXIgKikmb2JqZWN0cHJpbnQsDQorICAgICAgIlNldCBw
cmludGluZyBvZiBwYXNjYWwgb2JqZWN0J3MgZGVyaXZlZCB0eXBlIGJhc2VkIG9uIHZ0YWJsZSBp
bmZvLiIsDQorICAgICAgJnNldHByaW50bGlzdCksDQorICAgICAgJnNob3dwcmludGxpc3QpO2Rv
bmUgaW4gX2luaXRpbGlhemVfY3BfdmFscHJpbnQgKi8NCisgDQorICAgLyogR2l2ZSBwZW9wbGUg
dGhlIGRlZmF1bHRzIHdoaWNoIHRoZXkgYXJlIHVzZWQgdG8uICAqLw0KKyAgIC8qIG9iamVjdHBy
aW50ID0gMTsNCisgICAgICB2dGJscHJpbnQgPSAxOw0KKyAgICAgIG9ic3RhY2tfYmVnaW4gKCZk
b250X3ByaW50X3ZiX29ic3RhY2ssIDMyICogc2l6ZW9mIChzdHJ1Y3QgdHlwZSAqKSk7DQorICAg
ICAgb2JzdGFja19zcGVjaWZ5X2FsbG9jYXRpb24gKCZkb250X3ByaW50X3N0YXRtZW1fb2JzdGFj
aywNCisgICAgICAzMiAqIHNpemVvZiAoQ09SRV9BRERSKSwgc2l6ZW9mIChDT1JFX0FERFIpLA0K
KyAgICAgIHhtYWxsb2MsIGZyZWUpOyBkb25lIGluIF9pbml0aWxpYXplX2NwX3ZhbHByaW50ICov
DQorIH0NCg==
>From muller@ics.u-strasbg.fr Fri Mar 03 06:48:00 2000
From: muller@ics.u-strasbg.fr
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/31: Integration of the pascal support into existing GDB files
Date: Fri, 03 Mar 2000 06:48:00 -0000
Message-id: <20000303143850.29010.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00028.html
Content-length: 20244

>Number:         31
>Category:       gdb-patch
>Synopsis:       Integration of the pascal support into existing GDB files
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Fri Mar 03 06:48:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Pierre Muller
>Release:        unknown-1.0
>Organization:
>Environment:
Platform independent
>Description:
 This patch allows to integrate pascal support into
GDB.
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="pascal-patch-2"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="pascal-patch-2"

MjAwMC0wMy0wMyAgUGllcnJlIE11bGxlciAgIDxtdWxsZXJAaWNzLnUtc3RyYXNiZy5mcj4NCiAg
ICogTWFrZWZpbGUuaW46DQogICAgIHBhc2NhbCBsYW5ndWFnZSBzcGVjaWZpYyBmaWxlcyBjb21w
aWxhdGlvbiBhbmQgZGVwZW5kZW5jaWVzLg0KICAgKiBkZWZzLmg6DQogICAgIGFkZCBsYW5ndWFn
ZV9wYXNjYWwgdG8gZW51bSBsYW5ndWFnZQ0KICAgKiBldmFsLmMgKGV2YWx1YXRlX3N1YmV4cF9z
dGFuZGFyZCBmdW5jdGlvbik6DQogICAgIEJJTk9QX0lOVERJViB0cmVhdGVkIGFzIEJJTk9QX0RJ
Vg0KICAgKiBsYW5ndWFnZS5jDQogICAgIGFkZCBzdXBwb3J0IGZvciBsYW5ndWFnZV9wYXNjYWwN
CiAgICogbGFuZ3VhZ2UuaA0KICAgICBkZWZpbmUgX0xBTkdfcGFzY2FsDQogICAqIHN0YWJzcmVh
ZC5jDQogICAgIHBhc2NhbCBwb2ludGVyIHR5cGUgY2FuIGhhdmUgbmFtZXMNCiAgICogc3ltZmls
ZS5jIChpbml0X2ZpbGVuYW1lX2xhbmd1YWdlX3RhYmxlKToNCiAgICAgLnBhcyAucCAucHAgYW5k
IC5pbmMgZXh0ZW5zaW9ucyBhcmUgcmVjb2duaXplZCBhcyBwYXNjYWwgc291cmNlIGZpbGVzDQog
ICAqIHV0aWxzLmM6DQogICAgIHBhc2NhbCB1c2VzIGMrKyBkZW1hbmdsZQ0KICAgDQpJbmRleDog
TWFrZWZpbGUuaW4NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL01ha2Vm
aWxlLmluLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS45DQpkaWZmIC1iIC1jIC1yMS45IE1ha2Vm
aWxlLmluDQoqKiogTWFrZWZpbGUuaW4JMjAwMC8wMi8yNiAxMzo1NzozNQkxLjkNCi0tLSBNYWtl
ZmlsZS5pbgkyMDAwLzAzLzAzIDE0OjE1OjIyDQoqKioqKioqKioqKioqKioNCioqKiA0NjYsNDcy
ICoqKioNCiAgCXZhcm9iai5jIHdyYXBwZXIuYyBcDQogIAlqdi1leHAueSBqdi1sYW5nLmMganYt
dmFscHJpbnQuYyBqdi10eXBlcHJpbnQuYyBcDQogIAltMi1leHAueSBtMi1sYW5nLmMgbTItdHlw
ZXByaW50LmMgbTItdmFscHJpbnQuYyBtYWluLmMgbWFpbnQuYyBcDQohIAltZW0tYnJlYWsuYyBt
aW5zeW1zLmMgbWlwc3JlYWQuYyBubG1yZWFkLmMgb2JqZmlsZXMuYyBwYXJzZS5jIFwNCiAgCXBy
aW50Y21kLmMgcmVtb3RlLmMgcmVtb3RlLW5yb20uYyBzY20tZXhwLmMgc2NtLWxhbmcuYyBcDQog
IAlzY20tdmFscHJpbnQuYyBzb3VyY2UuYyBzdGFic3JlYWQuYyBzdGFjay5jIHN5bWZpbGUuYyBc
DQogIAlzeW1taXNjLmMgc3ltdGFiLmMgdGFyZ2V0LmMgdGhyZWFkLmMgdG9wLmMgdHJhY2Vwb2lu
dC5jIFwNCi0tLSA0NjYsNDczIC0tLS0NCiAgCXZhcm9iai5jIHdyYXBwZXIuYyBcDQogIAlqdi1l
eHAueSBqdi1sYW5nLmMganYtdmFscHJpbnQuYyBqdi10eXBlcHJpbnQuYyBcDQogIAltMi1leHAu
eSBtMi1sYW5nLmMgbTItdHlwZXByaW50LmMgbTItdmFscHJpbnQuYyBtYWluLmMgbWFpbnQuYyBc
DQohIAltZW0tYnJlYWsuYyBtaW5zeW1zLmMgbWlwc3JlYWQuYyBubG1yZWFkLmMgb2JqZmlsZXMu
YyBcDQohIAlwLWV4cC55IHAtbGFuZy5jIHAtdHlwZXByaW50LmMgcC12YWxwcmludC5jIHBhcnNl
LmMgXA0KICAJcHJpbnRjbWQuYyByZW1vdGUuYyByZW1vdGUtbnJvbS5jIHNjbS1leHAuYyBzY20t
bGFuZy5jIFwNCiAgCXNjbS12YWxwcmludC5jIHNvdXJjZS5jIHN0YWJzcmVhZC5jIHN0YWNrLmMg
c3ltZmlsZS5jIFwNCiAgCXN5bW1pc2MuYyBzeW10YWIuYyB0YXJnZXQuYyB0aHJlYWQuYyB0b3Au
YyB0cmFjZXBvaW50LmMgXA0KKioqKioqKioqKioqKioqDQoqKiogNTU1LDU2MSAqKioqDQogIAlz
eW1maWxlLmggc3RhYnNyZWFkLmggdGFyZ2V0LmggdGVybWluYWwuaCB0eXBlcHJpbnQuaCB4Y29m
ZnNvbGliLmggXA0KICAJYy1sYW5nLmggY2gtbGFuZy5oIGYtbGFuZy5oIFwNCiAgCWp2LWxhbmcu
aCBcDQohIAltMi1sYW5nLmggXA0KICAJY29tcGxhaW50cy5oIHZhbHByaW50LmggXA0KICAJMjlr
LXNoYXJlL3VkaS91ZGlpZHMuaCAyOWstc2hhcmUvdWRpX3NvYyBuaW5keS1zaGFyZS9iLm91dC5o
IFwNCiAgCW5pbmR5LXNoYXJlL2Jsb2NrX2lvLmggbmluZHktc2hhcmUvY29mZi5oIFwNCi0tLSA1
NTYsNTYyIC0tLS0NCiAgCXN5bWZpbGUuaCBzdGFic3JlYWQuaCB0YXJnZXQuaCB0ZXJtaW5hbC5o
IHR5cGVwcmludC5oIHhjb2Zmc29saWIuaCBcDQogIAljLWxhbmcuaCBjaC1sYW5nLmggZi1sYW5n
LmggXA0KICAJanYtbGFuZy5oIFwNCiEgCW0yLWxhbmcuaCAgcC1sYW5nLmggXA0KICAJY29tcGxh
aW50cy5oIHZhbHByaW50LmggXA0KICAJMjlrLXNoYXJlL3VkaS91ZGlpZHMuaCAyOWstc2hhcmUv
dWRpX3NvYyBuaW5keS1zaGFyZS9iLm91dC5oIFwNCiAgCW5pbmR5LXNoYXJlL2Jsb2NrX2lvLmgg
bmluZHktc2hhcmUvY29mZi5oIFwNCioqKioqKioqKioqKioqKg0KKioqIDYwOSw2MTUgKioqKg0K
ICAJdWktb3V0Lm8gY2xpLW91dC5vIFwNCiAgCXZhcm9iai5vIHdyYXBwZXIubyBcDQogIAlqdi1s
YW5nLm8ganYtdmFscHJpbnQubyBqdi10eXBlcHJpbnQubyBcDQohIAltMi1sYW5nLm8gXA0KICAJ
c2NtLWV4cC5vIHNjbS1sYW5nLm8gc2NtLXZhbHByaW50Lm8gY29tcGxhaW50cy5vIHR5cGVwcmlu
dC5vIFwNCiAgCWMtdHlwZXByaW50Lm8gY2gtdHlwZXByaW50Lm8gZi10eXBlcHJpbnQubyBtMi10
eXBlcHJpbnQubyBcDQogIAljLXZhbHByaW50Lm8gY3AtdmFscHJpbnQubyBjaC12YWxwcmludC5v
IGYtdmFscHJpbnQubyBtMi12YWxwcmludC5vIFwNCi0tLSA2MTAsNjE2IC0tLS0NCiAgCXVpLW91
dC5vIGNsaS1vdXQubyBcDQogIAl2YXJvYmoubyB3cmFwcGVyLm8gXA0KICAJanYtbGFuZy5vIGp2
LXZhbHByaW50Lm8ganYtdHlwZXByaW50Lm8gXA0KISAgCW0yLWxhbmcubyBwLWxhbmcubyBwLXR5
cGVwcmludC5vIHAtdmFscHJpbnQubyBcDQogIAlzY20tZXhwLm8gc2NtLWxhbmcubyBzY20tdmFs
cHJpbnQubyBjb21wbGFpbnRzLm8gdHlwZXByaW50Lm8gXA0KICAJYy10eXBlcHJpbnQubyBjaC10
eXBlcHJpbnQubyBmLXR5cGVwcmludC5vIG0yLXR5cGVwcmludC5vIFwNCiAgCWMtdmFscHJpbnQu
byBjcC12YWxwcmludC5vIGNoLXZhbHByaW50Lm8gZi12YWxwcmludC5vIG0yLXZhbHByaW50Lm8g
XA0KKioqKioqKioqKioqKioqDQoqKiogNjI5LDYzOCAqKioqDQogICMgRm9yIG5vdywgc2hvcnRj
dXQgdGhlICJjb25maWd1cmUgR0RCIGZvciBmZXdlciBsYW5ndWFnZXMiIHN0dWZmLg0KICBZWUZJ
TEVTID0gYy1leHAudGFiLmMgXA0KICAJanYtZXhwLnRhYi5jIFwNCiEgCWYtZXhwLnRhYi5jIG0y
LWV4cC50YWIuYw0KICBZWU9CSiA9IGMtZXhwLnRhYi5vIFwNCiAgCWp2LWV4cC50YWIubyBcDQoh
IAlmLWV4cC50YWIubyBtMi1leHAudGFiLm8NCiAgDQogICMgVGhpbmdzIHdoaWNoIG5lZWQgdG8g
YmUgYnVpbHQgd2hlbiBtYWtpbmcgYSBkaXN0cmlidXRpb24uDQogIA0KLS0tIDYzMCw2MzkgLS0t
LQ0KICAjIEZvciBub3csIHNob3J0Y3V0IHRoZSAiY29uZmlndXJlIEdEQiBmb3IgZmV3ZXIgbGFu
Z3VhZ2VzIiBzdHVmZi4NCiAgWVlGSUxFUyA9IGMtZXhwLnRhYi5jIFwNCiAgCWp2LWV4cC50YWIu
YyBcDQohIAlmLWV4cC50YWIuYyBtMi1leHAudGFiLmMgcC1leHAudGFiLmMNCiAgWVlPQkogPSBj
LWV4cC50YWIubyBcDQogIAlqdi1leHAudGFiLm8gXA0KISAJZi1leHAudGFiLm8gbTItZXhwLnRh
Yi5vIHAtZXhwLnRhYi5vDQogIA0KICAjIFRoaW5ncyB3aGljaCBuZWVkIHRvIGJlIGJ1aWx0IHdo
ZW4gbWFraW5nIGEgZGlzdHJpYnV0aW9uLg0KICANCioqKioqKioqKioqKioqKg0KKioqIDg4Miw4
ODggKioqKg0KICAJQGVjaG8gIml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVxdWlyZSBzcGVj
aWFsIHRvb2xzIHRvIHJlYnVpbGQuIg0KICAJcm0gLWYgYy1leHAudGFiLmMgXA0KICAJCWp2LWV4
cC50YWIgXA0KISAJCWYtZXhwLnRhYi5jIG0yLWV4cC50YWIuYw0KICAJcm0gLWYgVEFHUyAkKElO
Rk9GSUxFUykNCiAgCXJtIC1mICQoWVlGSUxFUykNCiAgCXJtIC1mIG5tLmggdG0uaCB4bS5oIGNv
bmZpZy5zdGF0dXMNCi0tLSA4ODMsODg5IC0tLS0NCiAgCUBlY2hvICJpdCBkZWxldGVzIGZpbGVz
IHRoYXQgbWF5IHJlcXVpcmUgc3BlY2lhbCB0b29scyB0byByZWJ1aWxkLiINCiAgCXJtIC1mIGMt
ZXhwLnRhYi5jIFwNCiAgCQlqdi1leHAudGFiIFwNCiEgCQlmLWV4cC50YWIuYyBtMi1leHAudGFi
LmMgcC1leHAudGFiLmMNCiAgCXJtIC1mIFRBR1MgJChJTkZPRklMRVMpDQogIAlybSAtZiAkKFlZ
RklMRVMpDQogIAlybSAtZiBubS5oIHRtLmggeG0uaCBjb25maWcuc3RhdHVzDQoqKioqKioqKioq
KioqKioNCioqKiA5MzMsOTQwICoqKioNCiAgCWNkIGRvYzsgJChNQUtFKSBnZGIuaW5mbyAkKEZM
QUdTX1RPX1BBU1MpDQogIA0KICAjIE1ha2UgY29weWluZy5jIGZyb20gQ09QWUlORw0KISBjb3B5
aW5nLmM6IENPUFlJTkcgY29weWluZy5hd2sNCiEgCWF3ayAtZiAkKHNyY2RpcikvY29weWluZy5h
d2sgPCAkKHNyY2RpcikvQ09QWUlORyA+IGNvcHlpbmcuYw0KICANCiAgdmVyc2lvbi5jOiBNYWtl
ZmlsZQ0KICAJcm0gLWYgdmVyc2lvbi5jDQotLS0gOTM0LDk0MiAtLS0tDQogIAljZCBkb2M7ICQo
TUFLRSkgZ2RiLmluZm8gJChGTEFHU19UT19QQVNTKQ0KICANCiAgIyBNYWtlIGNvcHlpbmcuYyBm
cm9tIENPUFlJTkcNCiEgIyBvbiBESkdQUCBtYWtlIGlzIGNvbmZ1c2VkIGJ5IHRoaXMgcnVsZQ0K
ISAjY29weWluZy5jOiBDT1BZSU5HIGNvcHlpbmcuYXdrDQohICMJYXdrIC1mICQoc3JjZGlyKS9j
b3B5aW5nLmF3ayA8ICQoc3JjZGlyKS9DT1BZSU5HID4gY29weWluZy5jDQogIA0KICB2ZXJzaW9u
LmM6IE1ha2VmaWxlDQogIAlybSAtZiB2ZXJzaW9uLmMNCioqKioqKioqKioqKioqKg0KKioqIDEw
MTMsMTAyMSAqKioqDQogIAktcm0gbTItZXhwLnRtcA0KICAJbXYgbTItZXhwLm5ldyAuL20yLWV4
cC50YWIuYw0KICANCiAgIyBUaGVzZSBmaWxlcyBhcmUgdXBkYXRlZCBhdG9taWNhbGx5LCBzbyBt
YWtlIG5ldmVyIGhhcyB0byByZW1vdmUgdGhlbQ0KICAuUFJFQ0lPVVM6IG0yLWV4cC50YWIuYyBm
LWV4cC50YWIuYyBjLWV4cC50YWIuYw0KISAuUFJFQ0lPVVM6IGp2LWV4cC50YWIuYw0KICANCiAg
bGludDogJChMSU5URklMRVMpDQogIAkkKExJTlQpICQoSU5DTFVERV9DRkxBR1MpICQoTElOVEZM
QUdTKSAkKExJTlRGSUxFUykgXA0KLS0tIDEwMTUsMTA0MSAtLS0tDQogIAktcm0gbTItZXhwLnRt
cA0KICAJbXYgbTItZXhwLm5ldyAuL20yLWV4cC50YWIuYw0KICANCisgIyBwLWV4cC50YWIuYyBp
cyBnZW5lcmF0ZWQgaW4gb2JqZGlyIGZyb20gcC1leHAueSBpZiBpdCBkb2Vzbid0IGV4aXN0DQor
ICMgaW4gc3JjZGlyLCB0aGVuIGNvbXBpbGVkIGluIG9iamRpciB0byBwLWV4cC50YWIuby4NCisg
IyBSZW1vdmUgYm9ndXMgZGVjbHMgZm9yIG1hbGxvYy9yZWFsbG9jL2ZyZWUgd2hpY2ggY29uZmxp
Y3Qgd2l0aCBldmVyeXRoaW5nDQorICMgZWxzZS4NCisgcC1leHAudGFiLm86IHAtZXhwLnRhYi5j
DQorIHAtZXhwLnRhYi5jOiBwLWV4cC55DQorIAkkKFNIRUxMKSAkKFlMV1JBUCkgIiQoWUFDQyki
ICQoc3JjZGlyKS9wLWV4cC55ICB5LnRhYi5jIHAtZXhwLnRtcCAtLSAkKFlGTEFHUykNCisgCS1z
ZWQgLWUgJy9leHRlcm4uKm1hbGxvYy9kJyBcDQorIAkgICAgIC1lICcvZXh0ZXJuLipyZWFsbG9j
L2QnIFwNCisgCSAgICAgLWUgJy9leHRlcm4uKmZyZWUvZCcgXA0KKyAJICAgICAtZSAnL2luY2x1
ZGUuKm1hbGxvYy5oL2QnIFwNCisgCSAgICAgLWUgJ3MvbWFsbG9jL3htYWxsb2MvZycgXA0KKyAJ
ICAgICAtZSAncy9yZWFsbG9jL3hyZWFsbG9jL2cnIFwNCisgCSAgICAgLWUgJy9eI2xpbmUuKnku
dGFiLmMvZCcgXA0KKyAJICA8IHAtZXhwLnRtcCA+IHAtZXhwLm5ldw0KKyAJLXJtIHAtZXhwLnRt
cA0KKyAJbXYgcC1leHAubmV3IC4vcC1leHAudGFiLmMNCisgDQogICMgVGhlc2UgZmlsZXMgYXJl
IHVwZGF0ZWQgYXRvbWljYWxseSwgc28gbWFrZSBuZXZlciBoYXMgdG8gcmVtb3ZlIHRoZW0NCiAg
LlBSRUNJT1VTOiBtMi1leHAudGFiLmMgZi1leHAudGFiLmMgYy1leHAudGFiLmMNCiEgLlBSRUNJ
T1VTOiBqdi1leHAudGFiLmMgcC1leHAudGFiLmMNCiAgDQogIGxpbnQ6ICQoTElOVEZJTEVTKQ0K
ICAJJChMSU5UKSAkKElOQ0xVREVfQ0ZMQUdTKSAkKExJTlRGTEFHUykgJChMSU5URklMRVMpIFwN
CioqKioqKioqKioqKioqKg0KKioqIDE0NDEsMTQ0NiAqKioqDQotLS0gMTQ2MSwxNDc2IC0tLS0N
CiAgbTMtbmF0Lm86IG0zLW5hdC5jICQoZGVmc19oKSAkKGluZmVyaW9yX2gpICQodmFsdWVfaCkg
bGFuZ3VhZ2UuaCB0YXJnZXQuaCBcDQogIAlnZGJfd2FpdC5oICQoZ2RiY21kX2gpICQoZ2RiY29y
ZV9oKQ0KICANCisgcC1sYW5nLm86IHAtbGFuZy5jIHAtbGFuZy5oICQoZGVmc19oKSAkKGV4cHJl
c3Npb25faCkgJChnZGJ0eXBlc19oKSBcDQorIAlsYW5ndWFnZS5oIHBhcnNlci1kZWZzLmggJChz
eW10YWJfaCkgZ2RiX3N0cmluZy5oDQorIA0KKyBwLXR5cGVwcmludC5vOiBwLXR5cGVwcmludC5j
IHAtbGFuZy5oICQoZGVmc19oKSAkKGV4cHJlc3Npb25faCkgXA0KKyAJJChnZGJjbWRfaCkgJChn
ZGJjb3JlX2gpICQoZ2RidHlwZXNfaCkgbGFuZ3VhZ2UuaCAkKHN5bXRhYl9oKSBcDQorIAl0YXJn
ZXQuaCB0eXBlcHJpbnQuaCAkKHZhbHVlX2gpIGdkYl9zdHJpbmcuaA0KKyANCisgcC12YWxwcmlu
dC5vOiBwLXZhbHByaW50LmMgJChkZWZzX2gpICQoZXhwcmVzc2lvbl9oKSAkKGdkYnR5cGVzX2gp
IFwNCisgCWxhbmd1YWdlLmggJChzeW10YWJfaCkgdmFscHJpbnQuaCAkKHZhbHVlX2gpIGdkYl9z
dHJpbmcuaA0KKyANCiAgbTY4ay10ZGVwLm86IG02OGstdGRlcC5jICQoZGVmc19oKSAkKGZyYW1l
X2gpICQoc3ltdGFiX2gpICQodmFsdWVfaCkgXA0KICAJJChnZGJjb3JlX2gpIGdkYl9zdHJpbmcu
aA0KICANCioqKioqKioqKioqKioqKg0KKioqIDE4ODMsMTg4OCAqKioqDQotLS0gMTkxMywxOTIy
IC0tLS0NCiAgDQogIG0yLWV4cC50YWIubzogbTItZXhwLnRhYi5jICQoZGVmc19oKSAkKGV4cHJl
c3Npb25faCkgJChnZGJ0eXBlc19oKSBcDQogIAlsYW5ndWFnZS5oIG0yLWxhbmcuaCBwYXJzZXIt
ZGVmcy5oICQoc3ltdGFiX2gpICQodmFsdWVfaCkgXA0KKyAJJChiZmRfaCkgb2JqZmlsZXMuaCBz
eW1maWxlLmgNCisgDQorIHAtZXhwLnRhYi5vOiBwLWV4cC50YWIuYyAkKGRlZnNfaCkgJChleHBy
ZXNzaW9uX2gpICQoZ2RidHlwZXNfaCkgXA0KKyAJbGFuZ3VhZ2UuaCBwLWxhbmcuaCBwYXJzZXIt
ZGVmcy5oICQoc3ltdGFiX2gpICQodmFsdWVfaCkgXA0KICAJJChiZmRfaCkgb2JqZmlsZXMuaCBz
eW1maWxlLmgNCiAgDQogIGdkYi1ldmVudHMubzogZ2RiLWV2ZW50cy5jIGdkYi1ldmVudHMuaCAk
KGRlZnNfaCkgJChnZGJjbWRfaCkNCkluZGV4OiBkZWZzLmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxl
OiAvY3ZzL3NyYy9zcmMvZ2RiL2RlZnMuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNA0KZGlm
ZiAtYiAtYyAtcjEuNCBkZWZzLmgNCioqKiBkZWZzLmgJMjAwMC8wMi8yNCAwMDowNDowMwkxLjQN
Ci0tLSBkZWZzLmgJMjAwMC8wMy8wMyAxNDowMToxNQ0KKioqKioqKioqKioqKioqDQoqKiogMTgx
LDE4NyAqKioqDQogICAgICBsYW5ndWFnZV9mb3J0cmFuLAkJLyogRm9ydHJhbiAqLw0KICAgICAg
bGFuZ3VhZ2VfbTIsCQkvKiBNb2R1bGEtMiAqLw0KICAgICAgbGFuZ3VhZ2VfYXNtLAkJLyogQXNz
ZW1ibHkgbGFuZ3VhZ2UgKi8NCiEgICAgIGxhbmd1YWdlX3NjbQkJLyogU2NoZW1lIC8gR3VpbGUg
Ki8NCiAgICB9Ow0KICANCiAgZW51bSBwcmVjaXNpb25fdHlwZQ0KLS0tIDE4MSwxODggLS0tLQ0K
ICAgICAgbGFuZ3VhZ2VfZm9ydHJhbiwJCS8qIEZvcnRyYW4gKi8NCiAgICAgIGxhbmd1YWdlX20y
LAkJLyogTW9kdWxhLTIgKi8NCiAgICAgIGxhbmd1YWdlX2FzbSwJCS8qIEFzc2VtYmx5IGxhbmd1
YWdlICovDQohICAgICBsYW5ndWFnZV9zY20sICAgIC8qIFNjaGVtZSAvIEd1aWxlICovDQohICAg
ICBsYW5ndWFnZV9wYXNjYWwJCS8qIFBhc2NhbCBGUEMgR05VID8/ICovDQogICAgfTsNCiAgDQog
IGVudW0gcHJlY2lzaW9uX3R5cGUNCkluZGV4OiBldmFsLmMNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxl
OiAvY3ZzL3NyYy9zcmMvZ2RiL2V2YWwuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjcN
CmRpZmYgLWIgLWMgLXIxLjEuMS43IGV2YWwuYw0KKioqIGV2YWwuYwkxOTk5LzEyLzE0IDAxOjA1
OjMwCTEuMS4xLjcNCi0tLSBldmFsLmMJMjAwMC8wMy8wMyAxNDowMToxOA0KKioqKioqKioqKioq
KioqDQoqKiogMTE5NiwxMjAxICoqKioNCi0tLSAxMTk2LDEyMDIgLS0tLQ0KICANCiAgICAgIGNh
c2UgQklOT1BfTVVMOg0KICAgICAgY2FzZSBCSU5PUF9ESVY6DQorICAgICBjYXNlIEJJTk9QX0lO
VERJVjoNCiAgICAgIGNhc2UgQklOT1BfUkVNOg0KICAgICAgY2FzZSBCSU5PUF9NT0Q6DQogICAg
ICBjYXNlIEJJTk9QX0xTSDoNCkluZGV4OiBsYW5ndWFnZS5jDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmls
ZTogL2N2cy9zcmMvc3JjL2dkYi9sYW5ndWFnZS5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4x
LjEuOA0KZGlmZiAtYiAtYyAtcjEuMS4xLjggbGFuZ3VhZ2UuYw0KKioqIGxhbmd1YWdlLmMJMjAw
MC8wMi8wMiAwMDoyMTowOAkxLjEuMS44DQotLS0gbGFuZ3VhZ2UuYwkyMDAwLzAzLzAzIDE0OjAx
OjQzDQoqKioqKioqKioqKioqKioNCioqKiA4MTksODI0ICoqKioNCi0tLSA4MTksODI1IC0tLS0N
CiAgICAgIHsNCiAgICAgIGNhc2UgbGFuZ3VhZ2VfYzoNCiAgICAgIGNhc2UgbGFuZ3VhZ2VfY3Bs
dXM6DQorICAgICBjYXNlIGxhbmd1YWdlX3Bhc2NhbDoNCiAgICAgICAgcmV0dXJuIChUWVBFX0NP
REUgKHR5cGUpICE9IFRZUEVfQ09ERV9JTlQpICYmDQogIAkoVFlQRV9DT0RFICh0eXBlKSAhPSBU
WVBFX0NPREVfRU5VTSkgPyAwIDogMTsNCiAgICAgIGNhc2UgbGFuZ3VhZ2VfbTI6DQoqKioqKioq
KioqKioqKioNCioqKiA4NjEsODY2ICoqKioNCi0tLSA4NjIsODY4IC0tLS0NCiAgDQogICAgICBj
YXNlIGxhbmd1YWdlX2M6DQogICAgICBjYXNlIGxhbmd1YWdlX2NwbHVzOg0KKyAgICAgY2FzZSBs
YW5ndWFnZV9wYXNjYWw6DQogICAgICAgIHJldHVybiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBF
X0NPREVfSU5UKSAmJg0KICAJVFlQRV9MRU5HVEggKHR5cGUpID09IHNpemVvZiAoY2hhcikNCiAg
ICAgICAgPyAxIDogMDsNCioqKioqKioqKioqKioqKg0KKioqIDg3OSw4ODQgKioqKg0KLS0tIDg4
MSw4ODcgLS0tLQ0KICAgICAgew0KICAgICAgY2FzZSBsYW5ndWFnZV9jaGlsbDoNCiAgICAgIGNh
c2UgbGFuZ3VhZ2VfbTI6DQorICAgICBjYXNlIGxhbmd1YWdlX3Bhc2NhbDoNCiAgICAgICAgcmV0
dXJuIFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX1NUUklORyA/IDAgOiAxOw0KICANCiAg
ICAgIGNhc2UgbGFuZ3VhZ2VfYzoNCioqKioqKioqKioqKioqKg0KKioqIDkwMiw5MDcgKioqKg0K
LS0tIDkwNSw5MTEgLS0tLQ0KICAgICAgew0KICAgICAgY2FzZSBsYW5ndWFnZV9jOg0KICAgICAg
Y2FzZSBsYW5ndWFnZV9jcGx1czoNCisgICAgIGNhc2UgbGFuZ3VhZ2VfcGFzY2FsOg0KICAgICAg
ICAvKiBNaWdodCBiZSBtb3JlIGNsZWFubHkgaGFuZGxlZCBieSBoYXZpbmcgYSBUWVBFX0NPREVf
SU5UX05PVF9CT09MDQogICAgICAgICAgIGZvciBDSElMTCBhbmQgc3VjaCBsYW5ndWFnZXMsIG9y
IGEgVFlQRV9DT0RFX0lOVF9PUl9CT09MIGZvciBDLiAgKi8NCiAgICAgICAgaWYgKFRZUEVfQ09E
RSAodHlwZSkgPT0gVFlQRV9DT0RFX0lOVCkNCioqKioqKioqKioqKioqKg0KKioqIDk0Myw5NDgg
KioqKg0KLS0tIDk0Nyw5NTcgLS0tLQ0KICAgICAgICByZXR1cm4gKFRZUEVfQ09ERSAodHlwZSkg
PT0gVFlQRV9DT0RFX1NUUlVDVCkgfHwNCiAgCShUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09E
RV9VTklPTikgfHwNCiAgCShUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWSk7DQor
ICAgIGNhc2UgbGFuZ3VhZ2VfcGFzY2FsOg0KKyAgICAgICByZXR1cm4gKFRZUEVfQ09ERSh0eXBl
KSA9PSBUWVBFX0NPREVfU1RSVUNUKSB8fA0KKyAJIChUWVBFX0NPREUodHlwZSkgPT0gVFlQRV9D
T0RFX1VOSU9OKSB8fA0KKyAJIChUWVBFX0NPREUodHlwZSkgPT0gVFlQRV9DT0RFX1NFVCkgfHwN
CisgCSAgICAoVFlQRV9DT0RFKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWSk7DQogICAgICBjYXNl
IGxhbmd1YWdlX20yOg0KICAgICAgICByZXR1cm4gKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9D
T0RFX1NUUlVDVCkgfHwNCiAgCShUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9TRVQpIHx8
DQoqKioqKioqKioqKioqKioNCioqKiA5NzQsOTgwICoqKioNCiAgCX0NCiAgICAgICAgcmV0dXJu
IGJ1aWx0aW5fdHlwZV9mX2xvZ2ljYWxfczI7DQogICAgICBjYXNlIGxhbmd1YWdlX2NwbHVzOg0K
ISAgICAgICBzeW0gPSBsb29rdXBfc3ltYm9sICgiYm9vbCIsIE5VTEwsIFZBUl9OQU1FU1BBQ0Us
IE5VTEwsIE5VTEwpOw0KICAgICAgICBpZiAoc3ltKQ0KICAJew0KICAJICB0eXBlID0gU1lNQk9M
X1RZUEUgKHN5bSk7DQotLS0gOTgzLDk5MyAtLS0tDQogIAl9DQogICAgICAgIHJldHVybiBidWls
dGluX3R5cGVfZl9sb2dpY2FsX3MyOw0KICAgICAgY2FzZSBsYW5ndWFnZV9jcGx1czoNCiEgICAg
IGNhc2UgbGFuZ3VhZ2VfcGFzY2FsOg0KISAgICAgICBpZiAoY3VycmVudF9sYW5ndWFnZS0+bGFf
bGFuZ3VhZ2U9PWxhbmd1YWdlX2NwbHVzKQ0KISAgICAgICAgIHtzeW0gPSBsb29rdXBfc3ltYm9s
ICgiYm9vbCIsIE5VTEwsIFZBUl9OQU1FU1BBQ0UsIE5VTEwsIE5VTEwpO30NCiEgICAgICAgZWxz
ZQ0KISAgICAgICAgIHtzeW0gPSBsb29rdXBfc3ltYm9sICgiYm9vbGVhbiIsIE5VTEwsIFZBUl9O
QU1FU1BBQ0UsIE5VTEwsIE5VTEwpO30NCiAgICAgICAgaWYgKHN5bSkNCiAgCXsNCiAgCSAgdHlw
ZSA9IFNZTUJPTF9UWVBFIChzeW0pOw0KKioqKioqKioqKioqKioqDQoqKiogMTE2NiwxMTcxICoq
KioNCi0tLSAxMTc5LDExOTkgLS0tLQ0KICAJCXR5cGVfb3BfZXJyb3IgKCJBcmd1bWVudHMgdG8g
JXMgbXVzdCBiZSBvZiBpbnRlZ3JhbCB0eXBlLiIsIG9wKTsNCiAgCSAgICAgIGJyZWFrOw0KICAJ
ICAgIH0NCisgI2VuZGlmDQorIA0KKyAjaWZkZWYgX0xBTkdfcGFzY2FsDQorICAgICAgIGNhc2Ug
bGFuZ3VhZ2VfcGFzY2FsOg0KKyAJIHN3aXRjaChvcCkNCisgCSB7DQorIAkgY2FzZSBCSU5PUF9E
SVY6DQorIAkgICAgaWYgKCFmbG9hdF90eXBlKHQxKSB8fCAhZmxvYXRfdHlwZSh0MikpDQorIAkg
ICAgICAgdHlwZV9vcF9lcnJvciAoIkFyZ3VtZW50cyB0byAlcyBtdXN0IGJlIGZsb2F0aW5nIHBv
aW50IG51bWJlcnMuIixvcCk7DQorIAkgICAgYnJlYWs7DQorIAkgY2FzZSBCSU5PUF9JTlRESVY6
DQorIAkgICAgaWYgKCFpbnRlZ3JhbF90eXBlKHQxKSB8fCAhaW50ZWdyYWxfdHlwZSh0MikpDQor
IAkgICAgICAgdHlwZV9vcF9lcnJvciAoIkFyZ3VtZW50cyB0byAlcyBtdXN0IGJlIG9mIGludGVn
cmFsIHR5cGUuIixvcCk7DQorIAkgICAgYnJlYWs7DQorIAkgfQ0KICAjZW5kaWYNCiAgDQogICNp
ZmRlZiBfTEFOR19jaGlsbA0KSW5kZXg6IGxhbmd1YWdlLmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxl
OiAvY3ZzL3NyYy9zcmMvZ2RiL2xhbmd1YWdlLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjEu
MS42DQpkaWZmIC1iIC1jIC1yMS4xLjEuNiBsYW5ndWFnZS5oDQoqKiogbGFuZ3VhZ2UuaAkyMDAw
LzAyLzAyIDAwOjIxOjA4CTEuMS4xLjYNCi0tLSBsYW5ndWFnZS5oCTIwMDAvMDMvMDMgMTQ6MDE6
NDMNCioqKioqKioqKioqKioqKg0KKioqIDM2LDQxICoqKioNCi0tLSAzNiw0MiAtLS0tDQogICNk
ZWZpbmUJX0xBTkdfbTINCiAgI2RlZmluZQlfTEFOR19jaGlsbA0KICAjZGVmaW5lIF9MQU5HX2Zv
cnRyYW4NCisgI2RlZmluZSBfTEFOR19wYXNjYWwNCiAgDQogICNkZWZpbmUgTUFYX0ZPUlRSQU5f
RElNUyAgNwkvKiBNYXhpbXVtIG51bWJlciBvZiBGNzcgYXJyYXkgZGltcyAqLw0KICANCkluZGV4
OiBzdGFic3JlYWQuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvc3Rh
YnNyZWFkLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjINCmRpZmYgLWIgLWMgLXIxLjIgc3Rh
YnNyZWFkLmMNCioqKiBzdGFic3JlYWQuYwkyMDAwLzAyLzA4IDA0OjM5OjAyCTEuMg0KLS0tIHN0
YWJzcmVhZC5jCTIwMDAvMDMvMDMgMTQ6MDE6NTQNCioqKioqKioqKioqKioqKg0KKioqIDIwMDYs
MjAxNSAqKioqDQotLS0gMjAwNiwyMDIyIC0tLS0NCiAgDQogIAkgICAgICAgICBGb3J0dW5hdGVs
eSwgdGhpcyBjaGVjayBzZWVtcyBub3QgdG8gYmUgbmVjZXNzYXJ5DQogIAkgICAgICAgICBmb3Ig
YW55dGhpbmcgZXhjZXB0IHBvaW50ZXJzIG9yIGZ1bmN0aW9ucy4gICovDQorIAkJIGlmICgoVFlQ
RV9DT0RFIChTWU1CT0xfVFlQRSAoc3ltKSkgPT0gVFlQRV9DT0RFX1BUUikgJiYNCisgICAgICAg
ICAgIChjdXJyZW50X3N1YmZpbGUtPmxhbmd1YWdlID09IGxhbmd1YWdlX3Bhc2NhbCkpDQorICAg
ICAgICAgICB7DQorICAgICAgICAgICAgVFlQRV9OQU1FIChTWU1CT0xfVFlQRSAoc3ltKSkgPSBT
WU1CT0xfTkFNRSAoc3ltKTsNCisgICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAgICBl
bHNlDQorICAgICAgICB7DQogIAkgICAgVFlQRV9OQU1FIChTWU1CT0xfVFlQRSAoc3ltKSkgPSBT
WU1CT0xfTkFNRSAoc3ltKTsNCiAgICAgICAgIH0NCisgCSAJfQ0KICANCiAgICAgICAgYWRkX3N5
bWJvbF90b19saXN0IChzeW0sICZmaWxlX3N5bWJvbHMpOw0KICAgICAgICBicmVhazsNCkluZGV4
OiBzeW1maWxlLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL3N5bWZp
bGUuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjE3DQpkaWZmIC1iIC1jIC1yMS4xLjEu
MTcgc3ltZmlsZS5jDQoqKiogc3ltZmlsZS5jCTIwMDAvMDIvMDMgMDQ6MTQ6MzUJMS4xLjEuMTcN
Ci0tLSBzeW1maWxlLmMJMjAwMC8wMy8wMyAxNDowMjowMg0KKioqKioqKioqKioqKioqDQoqKiog
MTk5MiwxOTk3ICoqKioNCi0tLSAxOTkyLDIwMDEgLS0tLQ0KICAgICAgICBhZGRfZmlsZW5hbWVf
bGFuZ3VhZ2UgKCIuRiIsIGxhbmd1YWdlX2ZvcnRyYW4pOw0KICAgICAgICBhZGRfZmlsZW5hbWVf
bGFuZ3VhZ2UgKCIucyIsIGxhbmd1YWdlX2FzbSk7DQogICAgICAgIGFkZF9maWxlbmFtZV9sYW5n
dWFnZSAoIi5TIiwgbGFuZ3VhZ2VfYXNtKTsNCisgICAgICAgYWRkX2ZpbGVuYW1lX2xhbmd1YWdl
ICgiLnBhcyIsICAgbGFuZ3VhZ2VfcGFzY2FsKTsNCisgICAgICAgYWRkX2ZpbGVuYW1lX2xhbmd1
YWdlICgiLnAiLCAgICAgbGFuZ3VhZ2VfcGFzY2FsKTsNCisgICAgICAgYWRkX2ZpbGVuYW1lX2xh
bmd1YWdlICgiLnBwIiwgICAgbGFuZ3VhZ2VfcGFzY2FsKTsNCisgICAgICAgYWRkX2ZpbGVuYW1l
X2xhbmd1YWdlICgiLmluYyIsICAgbGFuZ3VhZ2VfcGFzY2FsKTsNCiAgICAgIH0NCiAgfQ0KICAN
CkluZGV4OiB1dGlscy5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi91
dGlscy5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4yDQpkaWZmIC1iIC1jIC1yMS4yIHV0aWxz
LmMNCioqKiB1dGlscy5jCTIwMDAvMDIvMjkgMDc6NDU6MTMJMS4yDQotLS0gdXRpbHMuYwkyMDAw
LzAzLzAzIDE0OjAyOjE3DQoqKioqKioqKioqKioqKioNCioqKiAyMjQzLDIyNDggKioqKg0KLS0t
IDIyNDMsMjI0OSAtLS0tDQogIAl7DQogIAkgIHN3aXRjaCAobGFuZykNCiAgCSAgICB7DQorIAkg
ICAgY2FzZSBsYW5ndWFnZV9wYXNjYWw6DQogIAkgICAgY2FzZSBsYW5ndWFnZV9jcGx1czoNCiAg
CSAgICAgIGRlbWFuZ2xlZCA9IGNwbHVzX2RlbWFuZ2xlIChuYW1lLCBhcmdfbW9kZSk7DQogIAkg
ICAgICBicmVhazsNCiAgDQoNCg0KDQo=
>From tromey@cygnus.com Fri Mar 03 14:18:00 2000
From: Tom Tromey <tromey@cygnus.com>
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/32: --enable-profiling and new profiling command
Date: Fri, 03 Mar 2000 14:18:00 -0000
Message-id: <20000303221352.13484.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00029.html
Content-length: 14737

>Number:         32
>Category:       gdb-patch
>Synopsis:       --enable-profiling and new profiling command
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Mar 03 14:18:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Tom Tromey
>Release:        current cvs
>Organization:
>Environment:

>Description:
This patch adds an --enable-profiling option to
gdb's configure script and it adds a new command
which can be used to turn profiling on and off
from the gdb prompt.  This lets a developer profile
selected bits of gdb more easily.

I sent this to gdb-patches a while back.  Andrew Cagney
had some suggestions for how to change it.  I haven't had
time to implement those (and I might never have time).
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="prof-patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="prof-patch"

MjAwMC0wMS0xNiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogbWFpbnQuYyAo
bWFpbnRfcHJvZmlsZV9nZGIpOiBOZXcgZnVuY3Rpb24uCgkoX2luaXRpYWxpemVfbWFpbnRfY21k
cyk6IEFkZCBgcHJvZmlsZS1nZGInIGNvbW1hbmQgaWYgcHJvZmlsaW5nCgllbmFibGVkLgoJKiBt
YWluLmMgKGNhcHR1cmVkX21haW4pOiBDYWxsIG1vbmNvbnRyb2wgaWYgcHJvZmlsaW5nIGVuYWJs
ZWQuCgkqIGNvbmZpZy5pbiwgY29uZmlndXJlOiBSZWJ1aWx0LgoJKiBjb25maWd1cmUuaW46IEFk
ZGVkIC0tZW5hYmxlLXByb2ZpbGluZy4gIERlZmluZSBQUk9GSUxFX0NGTEFHUwoJYW5kIEVOQUJM
RV9QUk9GSUxFIGFzIGFwcHJvcHJpYXRlLgoJKiBhY2NvbmZpZy5oIChFTkFCTEVfUFJPRklMRSk6
IEFkZGVkLgoJKiBNYWtlZmlsZS5pbiAoUFJPRklMRV9DRkxBR1MpOiBEZWZpbmUgYXMgQFBST0ZJ
TEVfQ0ZMQUdTQC4KCjIwMDAtMDEtMTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4K
CgkqIGdkYmludC50ZXhpbmZvIChQcm9maWxpbmcgR0RCKTogTmV3IG5vZGUuCgoyMDAwLTAxLTE2
ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBnZGIuYmFzZS9zZWxmdGVzdC5l
eHAgKGRvX3N0ZXBzX2FuZF9uZXh0cyk6IEFjY291bnQgZm9yCglwb3NzaWJsZSBgbW9uY29udHJv
bCcgY2FsbCBhdCBzdGFydHVwLgoKSW5kZXg6IE1ha2VmaWxlLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9jdnMvY3ZzZmlsZXMvZGV2by9nZGIvTWFrZWZpbGUuaW4sdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuNzM4CmRpZmYgLXUgLXIxLjczOCBNYWtlZmlsZS5pbgotLS0gTWFrZWZpbGUuaW4JMjAw
MC8wMS8xMyAxNjo0MToyNgkxLjczOAorKysgTWFrZWZpbGUuaW4JMjAwMC8wMS8xNyAxNzo1ODow
NApAQCAtMjI4LDcgKzIyOCw3IEBACiAjIE17SCxUfV9DRkxBR1MsIGlmIGRlZmluZWQsIGhhdmUg
aG9zdC0gYW5kIHRhcmdldC1kZXBlbmRlbnQgQ0ZMQUdTCiAjIGZyb20gdGhlIGNvbmZpZyBkaXJl
Y3RvcnkuCiBHTE9CQUxfQ0ZMQUdTID0gJChNVF9DRkxBR1MpICQoTUhfQ0ZMQUdTKQotI1BST0ZJ
TEVfQ0ZMQUdTID0gLXBnCitQUk9GSUxFX0NGTEFHUyA9IEBQUk9GSUxFX0NGTEFHU0AKIAogIyBD
RkxBR1MgaXMgc3BlY2lmaWNhbGx5IHJlc2VydmVkIGZvciBzZXR0aW5nIGZyb20gdGhlIGNvbW1h
bmQgbGluZQogIyB3aGVuIHJ1bm5pbmcgbWFrZS4gIEkuRS4gICJtYWtlIENGTEFHUz0tV21pc3Np
bmctcHJvdG90eXBlcyIuCkluZGV4OiBORVdTCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvY3Zz
ZmlsZXMvZGV2by9nZGIvTkVXUyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMi43MwpkaWZmIC11IC1y
Mi43MyBORVdTCi0tLSBORVdTCTE5OTkvMTIvMTYgMDI6MDM6MjMJMi43MworKysgTkVXUwkyMDAw
LzAxLzE3IDE3OjU4OjMwCkBAIC0yMTUsNiArMjE1LDEyIEBACiBUaGUgaTk2MCBjb25maWd1cmF0
aW9uIG5vdyBpbmNsdWRlcyBhbiBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIGEKIGJ1aWx0aW4g
c2ltdWxhdG9yLCBjb250cmlidXRlZCBieSBKaW0gV2lsc29uLgogCisqIFByb2ZpbGluZyBmb3Ig
Z2RiCisKK0lmIGdkYiBpcyBjb25maWd1cmVkIHdpdGggYC0tZW5hYmxlLXByb2ZpbGluZycsIHRo
ZW4gZ2RiIGlzIGJ1aWx0IHdpdGgKK2AtcGcnIGFuZCBhIG5ldyBgbWFpbnRlbmFuY2UgcHJvZmls
ZS1nZGInIGNvbW1hbmQgaXMgY3JlYXRlZC4gIFRoaXMKK2NvbW1hbmQgY2FuIGJlIHVzZWQgdG8g
ZW5hYmxlIG9yIGRpc2FibGUgcHJvZmlsaW5nLCBtYWtpbmcgaXQgcG9zc2libGUKK3RvIHByb2Zp
bGUgYSBzaW5nbGUgY29tbWFuZCBvciBzZXQgb2YgY29tbWFuZHMuCiAKICoqKiBDaGFuZ2VzIGlu
IEdEQi00LjE3OgogCkluZGV4OiBhY2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
Y3ZzZmlsZXMvZGV2by9nZGIvYWNjb25maWcuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMi4yMwpk
aWZmIC11IC1yMi4yMyBhY2NvbmZpZy5oCi0tLSBhY2NvbmZpZy5oCTE5OTkvMTIvMjMgMDA6NTY6
NDcJMi4yMworKysgYWNjb25maWcuaAkyMDAwLzAxLzE3IDE3OjU4OjMwCkBAIC04NSwzICs4NSw2
IEBACiAKIC8qIERlZmluZSBpZiA8c3lzL3B0cmFjZS5oPiBkZWZpbmVzIHRoZSBQVFJBQ0VfR0VU
WEZQUkVHUyByZXF1ZXN0LiAgKi8KICN1bmRlZiBIQVZFX1BUUkFDRV9HRVRYRlBSRUdTCisKKy8q
IERlZmluZSBpZiBwcm9maWxpbmcgc3VwcG9ydCBzaG91bGQgYmUgZW5hYmxlZC4gICovCisjdW5k
ZWYgRU5BQkxFX1BST0ZJTEUKSW5kZXg6IGNvbmZpZy5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv
Y3ZzL2N2c2ZpbGVzL2Rldm8vZ2RiL2NvbmZpZy5pbix2CnJldHJpZXZpbmcgcmV2aXNpb24gMi40
NgpkaWZmIC11IC1yMi40NiBjb25maWcuaW4KLS0tIGNvbmZpZy5pbgkxOTk5LzEyLzIzIDAwOjU2
OjQ3CTIuNDYKKysrIGNvbmZpZy5pbgkyMDAwLzAxLzE3IDE3OjU4OjMyCkBAIC01OSwxMyArNTks
MTMgQEAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgQU5TSSBDIGhlYWRlciBmaWxlcy4gICov
CiAjdW5kZWYgU1REQ19IRUFERVJTCiAKLS8qIERlZmluZSBpZiBpb2N0bCBhcmd1bWVudCBQSU9D
U0VUIGlzIGF2YWlsYWJsZS4gKi8KLSN1bmRlZiBIQVZFX1BST0NGU19QSU9DU0VUCi0KIC8qIERl
ZmluZSBpZiB5b3Ugd2FudCB0byB1c2UgbmV3IG11bHRpLWZkIC9wcm9jIGludGVyZmFjZQogICAg
KHJlcGxhY2VzIEhBVkVfTVVMVElQTEVfUFJPQ19GRFMgYXMgd2VsbCBhcyBvdGhlciBtYWNyb3Mp
LiAqLwogI3VuZGVmIE5FV19QUk9DX0FQSQogCisvKiBEZWZpbmUgaWYgaW9jdGwgYXJndW1lbnQg
UElPQ1NFVCBpcyBhdmFpbGFibGUuICovCisjdW5kZWYgSEFWRV9QUk9DRlNfUElPQ1NFVAorCiAv
KiBEZWZpbmUgaWYgdGhlIGBsb25nIGxvbmcnIHR5cGUgd29ya3MuICAqLwogI3VuZGVmIENDX0hB
U19MT05HX0xPTkcKIApAQCAtMTIwLDYgKzEyMCw5IEBACiAvKiBEZWZpbmUgaWYgPHN5cy9wdHJh
Y2UuaD4gZGVmaW5lcyB0aGUgUFRSQUNFX0dFVFhGUFJFR1MgcmVxdWVzdC4gICovCiAjdW5kZWYg
SEFWRV9QVFJBQ0VfR0VUWEZQUkVHUwogCisvKiBEZWZpbmUgaWYgcHJvZmlsaW5nIHN1cHBvcnQg
c2hvdWxkIGJlIGVuYWJsZWQuICAqLworI3VuZGVmIEVOQUJMRV9QUk9GSUxFCisKIC8qIERlZmlu
ZSBpZiB5b3UgaGF2ZSB0aGUgX19hcmd6X2NvdW50IGZ1bmN0aW9uLiAgKi8KICN1bmRlZiBIQVZF
X19fQVJHWl9DT1VOVAogCkBAIC0yMjUsNiArMjI4LDkgQEAKIC8qIERlZmluZSBpZiB5b3UgaGF2
ZSB0aGUgPG9iamxpc3QuaD4gaGVhZGVyIGZpbGUuICAqLwogI3VuZGVmIEhBVkVfT0JKTElTVF9I
CiAKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHByb2Nfc2VydmljZS5oPiBoZWFkZXIgZmls
ZS4gICovCisjdW5kZWYgSEFWRV9QUk9DX1NFUlZJQ0VfSAorCiAvKiBEZWZpbmUgaWYgeW91IGhh
dmUgdGhlIDxwdHJhY2UuaD4gaGVhZGVyIGZpbGUuICAqLwogI3VuZGVmIEhBVkVfUFRSQUNFX0gK
IApAQCAtMjM0LDYgKzI0MCw5IEBACiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzdGRkZWYu
aD4gaGVhZGVyIGZpbGUuICAqLwogI3VuZGVmIEhBVkVfU1REREVGX0gKIAorLyogRGVmaW5lIGlm
IHlvdSBoYXZlIHRoZSA8c3RkaW50Lmg+IGhlYWRlciBmaWxlLiAgKi8KKyN1bmRlZiBIQVZFX1NU
RElOVF9ICisKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGxpYi5oPiBoZWFkZXIgZmls
ZS4gICovCiAjdW5kZWYgSEFWRV9TVERMSUJfSAogCkBAIC0yNzMsNiArMjgyLDkgQEAKIC8qIERl
ZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHRlcm1pb3MuaD4gaGVhZGVyIGZpbGUuICAqLwogI3VuZGVm
IEhBVkVfVEVSTUlPU19ICiAKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHRocmVhZF9kYi5o
PiBoZWFkZXIgZmlsZS4gICovCisjdW5kZWYgSEFWRV9USFJFQURfREJfSAorCiAvKiBEZWZpbmUg
aWYgeW91IGhhdmUgdGhlIDx0aW1lLmg+IGhlYWRlciBmaWxlLiAgKi8KICN1bmRlZiBIQVZFX1RJ
TUVfSAogCkBAIC0yODQsMTUgKzI5Niw2IEBACiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUg
PHdhaXQuaD4gaGVhZGVyIGZpbGUuICAqLwogI3VuZGVmIEhBVkVfV0FJVF9ICi0KLS8qIERlZmlu
ZSBpZiB5b3UgaGF2ZSB0aGUgPHRocmVhZF9kYi5oPiBoZWFkZXIgZmlsZS4gICovCi0jdW5kZWYg
SEFWRV9USFJFQURfREJfSAotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxwcm9jX3NlcnZp
Y2UuaD4gaGVhZGVyIGZpbGUuICAqLwotI3VuZGVmIEhBVkVfUFJPQ19TRVJWSUNFX0gKLQotLyog
RGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3RkaW50Lmg+IGhlYWRlciBmaWxlLiAgKi8KLSN1bmRl
ZiBIQVZFX1NURElOVF9ICiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHdjaGFyLmg+IGhl
YWRlciBmaWxlLiAgKi8KICN1bmRlZiBIQVZFX1dDSEFSX0gKSW5kZXg6IGNvbmZpZ3VyZS5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL2N2c2ZpbGVzL2Rldm8vZ2RiL2NvbmZpZ3VyZS5pbix2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS40MDYKZGlmZiAtdSAtcjEuNDA2IGNvbmZpZ3VyZS5pbgot
LS0gY29uZmlndXJlLmluCTIwMDAvMDEvMTEgMTk6MjQ6MTAJMS40MDYKKysrIGNvbmZpZ3VyZS5p
bgkyMDAwLzAxLzE3IDE3OjU4OjQ1CkBAIC0zNTgsNyArMzU4LDE2IEBACiAKIGRubCBIYW5kbGUg
b3B0aW9uYWwgZmVhdHVyZXMgdGhhdCBjYW4gYmUgZW5hYmxlZC4KIEVOQUJMRV9DRkxBR1M9CitQ
Uk9GSUxFX0NGTEFHUz0KIAorQUNfQVJHX0VOQUJMRShwcm9maWxpbmcsCitbICAtLWVuYWJsZS1w
cm9maWxpbmcgICAgICBUdXJuIG9uIHByb2ZpbGluZyBvZiBnZGJdKQorCitpZiB0ZXN0ICIkZW5h
YmxlX3Byb2ZpbGluZyIgPSAgeWVzOyB0aGVuCisgICBBQ19ERUZJTkUoRU5BQkxFX1BST0ZJTEUp
CisgICBQUk9GSUxFX0NGTEFHUz0tcGcKK2ZpCisKIEFDX0FSR19FTkFCTEUodHVpLAogWyAgLS1l
bmFibGUtdHVpICAgICAgICAgICAgRW5hYmxlIGZ1bGwtc2NyZWVuIHRlcm1pbmFsIHVzZXIgaW50
ZXJmYWNlXSwKIFsKQEAgLTk0NSw2ICs5NTQsNyBAQAogQUNfU1VCU1QoSUdOT1JFX1NJTV9PQlMp
CiAKIEFDX1NVQlNUKEVOQUJMRV9DRkxBR1MpCitBQ19TVUJTVChQUk9GSUxFX0NGTEFHUykKIAog
QUNfU1VCU1QoQ09ORklHX09CUykKIEFDX1NVQlNUKENPTkZJR19ERVBTKQpJbmRleDogbWFpbi5j
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvY3ZzZmlsZXMvZGV2by9nZGIvbWFpbi5jLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjE5NwpkaWZmIC11IC1yMS4xOTcgbWFpbi5jCi0tLSBtYWluLmMJ
MTk5OS8xMi8xMyAxNjowNzo0MAkxLjE5NworKysgbWFpbi5jCTIwMDAvMDEvMTcgMTc6NTk6MDAK
QEAgLTE2NCw2ICsxNjQsMTAgQEAKIAogICBsb25nIHRpbWVfYXRfc3RhcnR1cCA9IGdldF9ydW5f
dGltZSAoKTsKIAorI2lmZGVmIEVOQUJMRV9QUk9GSUxFCisgIG1vbmNvbnRyb2wgKDApOworI2Vu
ZGlmCisKICAgU1RBUlRfUFJPR1JFU1MgKGFyZ3ZbMF0sIDApOwogCiAjaWZkZWYgTVBXCkluZGV4
OiBtYWludC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvY3ZzZmlsZXMvZGV2by9nZGIvbWFp
bnQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMi4zNApkaWZmIC11IC1yMi4zNCBtYWludC5jCi0t
LSBtYWludC5jCTE5OTkvMDgvMzEgMDM6NTQ6MjQJMi4zNAorKysgbWFpbnQuYwkyMDAwLzAxLzE3
IDE3OjU5OjA0CkBAIC01Nyw2ICs1NywxMSBAQAogCiBzdGF0aWMgdm9pZCBtYWludGVuYW5jZV9w
cmludF9jb21tYW5kIFBBUkFNUyAoKGNoYXIgKiwgaW50KSk7CiAKKyNpZmRlZiBFTkFCTEVfUFJP
RklMRQorc3RhdGljIHZvaWQgbWFpbnRfcHJvZmlsZV9nZGIgUEFSQU1TICgoY2hhciAqLCBpbnQp
KTsKKyNlbmRpZgorCisKIC8qIFNldCB0aGlzIHRvIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNv
bmRzIHRvIHdhaXQgaW5zdGVhZCBvZiB3YWl0aW5nIGZvcmV2ZXIKICAgIGluIHRhcmdldF93YWl0
KCkuICBJZiB0aGlzIHRpbWVyIHRpbWVzIG91dCwgdGhlbiBpdCBnZW5lcmF0ZXMgYW4gZXJyb3Ig
YW5kCiAgICB0aGUgY29tbWFuZCBpcyBhYm9ydGVkLiAgVGhpcyByZXBsYWNlcyBtb3N0IG9mIHRo
ZSBuZWVkIGZvciB0aW1lb3V0cyBpbiB0aGUKQEAgLTM1OCw2ICszNjMsMjYgQEAKICAgcmV0dXJu
OwogfQogCisvKiAibWFpbnRlbmFuY2UgcHJvZmlsZS1nZGIgPG9ufG9mZj4iICAqLworc3RhdGlj
IHZvaWQKK21haW50X3Byb2ZpbGVfZ2RiIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKK3sKKyNp
ZmRlZiBFTkFCTEVfUFJPRklMRQorICBpbnQgdmFsOworICBpZiAoYXJnID09IE5VTEwgfHwgISAq
YXJnKQorICAgIGVycm9yICgicmVxdWlyZXMgYXJndW1lbnQgKFwib25cIiBvciBcIm9mZlwiIik7
CisgIGlmICghIHN0cmNtcCAoYXJnLCAib24iKSkKKyAgICB2YWwgPSAxOworICBlbHNlIGlmICgh
IHN0cmNtcCAoYXJnLCAib2ZmIikpCisgICAgdmFsID0gMDsKKyAgZWxzZQorICAgIGVycm9yICgi
dW5yZWNvZ25pemVkIGFyZ3VtZW50OyBtdXN0IGJlIFwib25cIiBvciBcIm9mZlwiIik7CisgIG1v
bmNvbnRyb2wgKHZhbCk7CisjZWxzZQorICBlcnJvciAoImdkYiB3YXMgbm90IGNvbmZpZ3VyZWQg
d2l0aCAtLWVuYWJsZS1wcm9maWxpbmciKTsKKyNlbmRpZgorfQorCiB2b2lkCiBfaW5pdGlhbGl6
ZV9tYWludF9jbWRzICgpCiB7CkBAIC00NTUsNiArNDgwLDEyIEBACiAgIGFkZF9jbWQgKCJ0cmFu
c2xhdGUtYWRkcmVzcyIsIGNsYXNzX21haW50ZW5hbmNlLCBtYWludGVuYW5jZV90cmFuc2xhdGVf
YWRkcmVzcywKIAkgICAiVHJhbnNsYXRlIGEgc2VjdGlvbiBuYW1lIGFuZCBhZGRyZXNzIHRvIGEg
c3ltYm9sLiIsCiAJICAgJm1haW50ZW5hbmNlbGlzdCk7CisKKyNpZmRlZiBFTkFCTEVfUFJPRklM
RQorICBhZGRfY21kICgicHJvZmlsZS1nZGIiLCBjbGFzc19tYWludGVuYW5jZSwgbWFpbnRfcHJv
ZmlsZV9nZGIsCisJICAgIkVuYWJsZSBvciBkaXNhYmxlIHByb2ZpbGluZy4iLAorCSAgICZtYWlu
dGVuYW5jZWxpc3QpOworI2VuZGlmCiAKICAgYWRkX3Nob3dfZnJvbV9zZXQgKAogCQkgICAgICBh
ZGRfc2V0X2NtZCAoIndhdGNoZG9nIiwgY2xhc3NfbWFpbnRlbmFuY2UsIHZhcl96aW50ZWdlciwg
KGNoYXIgKikgJndhdGNoZG9nLApJbmRleDogZG9jL2dkYmludC50ZXhpbmZvCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnMvY3ZzZmlsZXMvZGV2by9nZGIvZG9jL2dkYmludC50ZXhpbmZvLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjE0MApkaWZmIC11IC1yMS4xNDAgZ2RiaW50LnRleGluZm8KLS0t
IGdkYmludC50ZXhpbmZvCTE5OTkvMTIvMDggMDk6MTI6NDYJMS4xNDAKKysrIGdkYmludC50ZXhp
bmZvCTIwMDAvMDEvMTcgMTg6MDA6MzgKQEAgLTI3NzIsNiArMjc3Miw3IEBACiBAbWVudQogKiBH
ZXR0aW5nIFN0YXJ0ZWQ6OgkJR2V0dGluZyBzdGFydGVkIHdvcmtpbmcgb24gR0RCCiAqIERlYnVn
Z2luZyBHREI6OgkJRGVidWdnaW5nIEdEQiB3aXRoIGl0c2VsZgorKiBQcm9maWxpbmcgR0RCOjog
ICAgICAgICAgICAgICBQcm9maWxpbmcgR0RCCiBAZW5kIG1lbnUKIAogQG5vZGUgR2V0dGluZyBT
dGFydGVkLCwsIEhpbnRzCkBAIC0yOTczLDYgKzI5NzQsMjggQEAKIAogQGVuZCB0YWJsZQogCitA
bm9kZSBQcm9maWxpbmcgR0RCLCwsIEhpbnRzCisKK0BzZWN0aW9uIFByb2ZpbGluZyBHREIKKwor
R0RCIGNvbnRhaW5zIHNvbWUgc3VwcG9ydCBmb3IgcHJvZmlsaW5nIGl0c2VsZi4gIEN1cnJlbnRs
eSB0aGlzIHN1cHBvcnQKK2lzIHJ1ZGltZW50YXJ5LgorCitZb3UgY2FuIGNvbmZpZ3VyZSBHREIg
d2l0aCBAc2FtcHstLWVuYWJsZS1wcm9maWxpbmd9LiAgVGhpcyBkb2VzIHR3bwordGhpbmdzLiAg
Rmlyc3QsIGl0IGFycmFuZ2VzIGZvciBHREIgdG8gYmUgY29tcGlsZWQgYW5kIGxpbmtlZCB3aXRo
CitAc2FtcHstcGd9LiAgKFRoaXMgbWlnaHQgbm90IHdvcmsgb24gYWxsIHBsYXRmb3JtczsgZmVl
bCBmcmVlIHRvIHN1Ym1pdAorcGF0Y2hlcyB0byBmaXggdGhpcyBmb3IgeW91ciBwbGF0Zm9ybS4p
ICBTZWNvbmQsIHRoaXMgY29uZmlndXJlIGZsYWcKK2FycmFuZ2VzIGZvciB0aGUgQGNvZGV7bWFp
bnQgcHJvZmlsZS1nZGJ9IGNvbW1hbmQgdG8gYmUgZW5hYmxlZC4KKworQGNvZGV7bWFpbnQgcHJv
ZmlsZS1nZGJ9IHRha2VzIGEgc2luZ2xlIGFyZ3VtZW50LCB3aGljaCBtdXN0IGJlCitAc2FtcHtv
bn0gb3IgQHNhbXB7b2ZmfS4gIFRoaXMgY29tbWFuZCBlbmFibGVzIG9yIGRpc2FibGVzIHByb2Zp
bGluZyBvZgorZ2RiLCBhbmQgY2FuIGJlIHVzZWQgdG8gbGltaXQgcHJvZmlsaW5nIHRvIGEgY2hv
c2VuIHNldCBvZiB1c2VyCitjb21tYW5kcy4KKworTm90ZSB0aGF0IHdoZW4gY29uZmlndXJlZCB0
aGlzIHdheSwgR0RCIGRpc2FibGVzIHByb2ZpbGluZyBpbgorQGNvZGV7bWFpbn0uICBJZiB5b3Ug
d2FudCB0byBwcm9maWxlIEdEQidzIGluaXRpYWxpemF0aW9uIGNvZGUsIHlvdSB3aWxsCitoYXZl
IHRvIGFycmFuZ2UgdG8gYnVpbGQgR0RCIHdpdGggQGNvZGV7LXBnfSBidXQgd2l0aG91dAorQHNh
bXB7RU5BQkxFX1BST0ZJTEV9IGRlZmluZWQuCiAKIEBjb250ZW50cwogQGJ5ZQpJbmRleDogdGVz
dHN1aXRlL2dkYi5iYXNlL3NlbGZ0ZXN0LmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL2N2
c2ZpbGVzL2Rldm8vZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zZWxmdGVzdC5leHAsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuMwpkaWZmIC11IC1yMS4zIHNlbGZ0ZXN0LmV4cAotLS0gc2VsZnRlc3Qu
ZXhwCTIwMDAvMDEvMTAgMTg6MzU6NTAJMS4zCisrKyBzZWxmdGVzdC5leHAJMjAwMC8wMS8xNyAx
ODowMDo1MQpAQCAtMSw0ICsxLDQgQEAKLSMgICBDb3B5cmlnaHQgKEMpIDE5ODgsIDE5OTAsIDE5
OTEsIDE5OTIsIDE5OTQsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAg
Q29weXJpZ2h0IChDKSAxOTg4LCAxOTkwLCAxOTkxLCAxOTkyLCAxOTk0LCAxOTk3LCAyMDAwIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5CkBAIC05Niw2ICs5NiwxMCBAQAogCSAgICB9CiAJICAgIC1yZSAiLip0aW1lX2F0X3N0YXJ0
dXAgPSBnZXRfcnVuX3RpbWUuKiRnZGJfcHJvbXB0ICQiIHsKIAkJc2V0IGRlc2NyaXB0aW9uICJu
ZXh0IG92ZXIgZ2V0X3J1bl90aW1lIGFuZCBldmVyeXRoaW5nIGl0IGNhbGxzIgorCQlzZXQgY29t
bWFuZCAibmV4dCIKKwkgICAgfQorCSAgICAtcmUgIi4qbW9uY29udHJvbC4qJGdkYl9wcm9tcHQg
JCIgeworCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBtb25jb250cm9sIgogCQlzZXQgY29t
bWFuZCAibmV4dCIKIAkgICAgfQogCSAgICAtcmUgIi4qU1RBUlRfUFJPR1JFU1MuKiRnZGJfcHJv
bXB0ICQiIHsK
>From green@cygnus.com Sat Mar 04 17:58:00 2000
From: green@cygnus.com
To: gdb-patches-gnats@sourceware.cygnus.com
Subject: gdb-patch/33: java tests
Date: Sat, 04 Mar 2000 17:58:00 -0000
Message-id: <20000305015754.25436.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q1/msg00030.html
Content-length: 67600

>Number:         33
>Category:       gdb-patch
>Synopsis:       java tests
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Mar 04 17:58:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Anthony Green
>Release:        uknown-1.0
>Organization:
>Environment:

>Description:
This patch enables the existing java tests, and adds infrastructure
for some real tests.

>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="java-tests"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="java-tests"

RGF0ZTogU2F0LCA0IE1hciAyMDAwIDE3OjM2OjE4IC0wODAwClgtQXV0aGVudGljYXRpb24tV2Fy
bmluZzogaG9zZXIuY3lnbnVzLmNvbTogZ3JlZW4gc2V0IHNlbmRlciB0byBncmVlbkBjeWdudXMu
Y29tIHVzaW5nIC1mCkZyb206IEFudGhvbnkgR3JlZW4gPGdyZWVuQGN5Z251cy5jb20+ClRvOiBn
ZGItcGF0Y2hlc0Bzb3VyY2V3YXJlLmN5Z251cy5jb20KU3ViamVjdDogUGF0Y2g6IGphdmEgdGVz
dHMKWC1Pcmdhbml6YXRpb246IFJlZCBIYXQsIFN1bm55dmFsZSwgQ2FsaWZvcm5pYQpYLVVSTDog
aHR0cDovL3d3dy5jeWdudXMuY29tL35ncmVlbgpSZXBseS10bzogZ3JlZW5AcmVkaGF0LmNvbQpD
b250ZW50LVR5cGU6IHRleHQKQ29udGVudC1MZW5ndGg6IDQ5MDk5CgoKVGhpcyBwYXRjaCBlbmFi
bGVzIHRoZSBleGlzdGluZyBqYXZhIHRlc3RzLCBhbmQgYWRkcyBpbmZyYXN0cnVjdHVyZQpmb3Ig
c29tZSByZWFsIHRlc3RzLgoKQUcKCi0tIApBbnRob255IEdyZWVuICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWQgSGF0CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdW5ueXZhbGUsIENh
bGlmb3JuaWEKCgoyMDAwLTAzLTA0ICBBbnRob255IEdyZWVuICA8Z3JlZW5AcmVkaGF0LmNvbT4K
CgkqIGNvbmZpZ3VyZS5pbiAoY29uZmlnZGlycyk6IEFkZCBnZGIuamF2YQoJKiBnZGIuamF2YS9q
bWlzYy5qYXZhOiBOZXcgZmlsZS4KCSogZ2RiLmphdmEvam1pc2MuZXhwOiBOZXcgZmlsZS4KCSog
Z2RiLmphdmEvTWFrZWZpbGUuaW46IE5ldyBmaWxlLgoJKiBnZGIuamF2YS9jb25maWd1cmU6IFJl
YnVpbHQuCgkqIGdkYi5qYXZhL2NvbmZpZ3VyZS5pbjogTmV3IGZpbGUuCgkqIGxpYi9qYXZhLmV4
cDogTmV3IGZpbGUuCgoKSW5kZXg6IGdkYi90ZXN0c3VpdGUvY29uZmlndXJlLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZS5pbix2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYgLXAgLXIxLjIgY29uZmlndXJlLmluCioqKiBjb25m
aWd1cmUuaW4JMjAwMC8wMi8yMyAwMDoyNTo0MwkxLjIKLS0tIGNvbmZpZ3VyZS5pbgkyMDAwLzAz
LzA1IDAxOjE2OjEzCioqKioqKioqKioqKioqKiBjb25maWdkaXJzPSJnZGIuYXNtIFwKKioqIDE4
LDIzICoqKioKLS0tIDE4LDI0IC0tLS0KICAgICAgICAgICAgICBnZGIuYysrIFwKICAgICAgICAg
ICAgICBnZGIuZGlzYXNtIFwKICAgICAgICAgICAgICBnZGIuY2hpbGwgXAorICAgICAgICAgICAg
IGdkYi5qYXZhIFwKICAgICAgICAgICAgICBnZGIubWkgXAogICAgICAgICAgICAgIGdkYi50aHJl
YWRzIFwKICAgICAgICAgICAgICBnZGIudHJhY2UiCkluZGV4OiBnZGIvdGVzdHN1aXRlL2NvbmZp
Z3VyZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL3Rlc3RzdWl0ZS9jb25m
aWd1cmUsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMgpkaWZmIC1wIC1yMS4yIGNvbmZpZ3VyZQoq
KiogY29uZmlndXJlCTIwMDAvMDIvMjMgMDA6MjU6NDMJMS4yCi0tLSBjb25maWd1cmUJMjAwMC8w
My8wNSAwMToxNjoxNAoqKioqKioqKioqKioqKiogY29uZmlnZGlycz0iZ2RiLmFzbSBcCioqKiA2
NTQsNjU5ICoqKioKLS0tIDY1NCw2NjAgLS0tLQogICAgICAgICAgICAgIGdkYi5jKysgXAogICAg
ICAgICAgICAgIGdkYi5kaXNhc20gXAogICAgICAgICAgICAgIGdkYi5jaGlsbCBcCisgICAgICAg
ICAgICAgZ2RiLmphdmEgXAogICAgICAgICAgICAgIGdkYi5taSBcCiAgICAgICAgICAgICAgZ2Ri
LnRocmVhZHMgXAogICAgICAgICAgICAgIGdkYi50cmFjZSIKCgoKVGhlc2UgYXJlIHRoZSBuZXcg
ZmlsZXMuLi4KCgojIS9iaW4vc2gKIyBUaGlzIGlzIGEgc2hlbGwgYXJjaGl2ZSAocHJvZHVjZWQg
YnkgR05VIHNoYXJ1dGlscyA0LjIpLgojIFRvIGV4dHJhY3QgdGhlIGZpbGVzIGZyb20gdGhpcyBh
cmNoaXZlLCBzYXZlIGl0IHRvIHNvbWUgRklMRSwgcmVtb3ZlCiMgZXZlcnl0aGluZyBiZWZvcmUg
dGhlIGAhL2Jpbi9zaCcgbGluZSBhYm92ZSwgdGhlbiB0eXBlIGBzaCBGSUxFJy4KIwojIE1hZGUg
b24gMjAwMC0wMy0wNCAwMjowMiBQU1QgYnkgPGdyZWVuQHJlZGhhdC5jb20+LgojIFNvdXJjZSBk
aXJlY3Rvcnkgd2FzIGAvaG9tZS9ncmVlbi9qYXZhL25ldC9nZGIvc3JjJy4KIwojIEV4aXN0aW5n
IGZpbGVzIHdpbGwgKm5vdCogYmUgb3ZlcndyaXR0ZW4gdW5sZXNzIGAtYycgaXMgc3BlY2lmaWVk
LgojCiMgVGhpcyBzaGFyIGNvbnRhaW5zOgojIGxlbmd0aCBtb2RlICAgICAgIG5hbWUKIyAtLS0t
LS0gLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IyAgMzExODYgLXJ3eHJ3eHIteCBnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2NvbmZpZ3VyZQojICAg
IDYzNSAtcnctcnctci0tIGdkYi90ZXN0c3VpdGUvZ2RiLmphdmEvTWFrZWZpbGUuaW4KIyAgICAy
MjIgLXJ3LXJ3LXItLSBnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2NvbmZpZ3VyZS5pbgojICAgMjg4
OSAtcnctcnctci0tIGdkYi90ZXN0c3VpdGUvZ2RiLmphdmEvam1pc2MuZXhwCiMgICAgIDg1IC1y
dy1ydy1yLS0gZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbWlzYy5qYXZhCiMgICAyNDUxIC1ydy1y
dy1yLS0gZ2RiL3Rlc3RzdWl0ZS9saWIvamF2YS5leHAKIwpzYXZlX0lGUz0iJHtJRlN9IgpJRlM9
IiR7SUZTfToiCmdldHRleHRfZGlyPUZBSUxFRApsb2NhbGVfZGlyPUZBSUxFRApmaXJzdF9wYXJh
bT0iJDEiCmZvciBkaXIgaW4gJFBBVEgKZG8KICBpZiB0ZXN0ICIkZ2V0dGV4dF9kaXIiID0gRkFJ
TEVEICYmIHRlc3QgLWYgJGRpci9nZXR0ZXh0IFwKICAgICAmJiAoJGRpci9nZXR0ZXh0IC0tdmVy
c2lvbiA+L2Rldi9udWxsIDI+JjEpCiAgdGhlbgogICAgc2V0IGAkZGlyL2dldHRleHQgLS12ZXJz
aW9uIDI+JjFgCiAgICBpZiB0ZXN0ICIkMyIgPSBHTlUKICAgIHRoZW4KICAgICAgZ2V0dGV4dF9k
aXI9JGRpcgogICAgZmkKICBmaQogIGlmIHRlc3QgIiRsb2NhbGVfZGlyIiA9IEZBSUxFRCAmJiB0
ZXN0IC1mICRkaXIvc2hhciBcCiAgICAgJiYgKCRkaXIvc2hhciAtLXByaW50LXRleHQtZG9tYWlu
LWRpciA+L2Rldi9udWxsIDI+JjEpCiAgdGhlbgogICAgbG9jYWxlX2Rpcj1gJGRpci9zaGFyIC0t
cHJpbnQtdGV4dC1kb21haW4tZGlyYAogIGZpCmRvbmUKSUZTPSIkc2F2ZV9JRlMiCmlmIHRlc3Qg
IiRsb2NhbGVfZGlyIiA9IEZBSUxFRCB8fCB0ZXN0ICIkZ2V0dGV4dF9kaXIiID0gRkFJTEVECnRo
ZW4KICBlY2hvPWVjaG8KZWxzZQogIFRFWFRET01BSU5ESVI9JGxvY2FsZV9kaXIKICBleHBvcnQg
VEVYVERPTUFJTkRJUgogIFRFWFRET01BSU49c2hhcnV0aWxzCiAgZXhwb3J0IFRFWFRET01BSU4K
ICBlY2hvPSIkZ2V0dGV4dF9kaXIvZ2V0dGV4dCAtcyIKZmkKdG91Y2ggLWFtIDEyMzEyMzU5OTkg
JCQudG91Y2ggPi9kZXYvbnVsbCAyPiYxCmlmIHRlc3QgISAtZiAxMjMxMjM1OTk5ICYmIHRlc3Qg
LWYgJCQudG91Y2g7IHRoZW4KICBzaGFyX3RvdWNoPXRvdWNoCmVsc2UKICBzaGFyX3RvdWNoPToK
ICBlY2hvCiAgJGVjaG8gJ1dBUk5JTkc6IG5vdCByZXN0b3JpbmcgdGltZXN0YW1wcy4gIENvbnNp
ZGVyIGdldHRpbmcgYW5kJwogICRlY2hvICJpbnN0YWxsaW5nIEdOVSBcYHRvdWNoJywgZGlzdHJp
YnV0ZWQgaW4gR05VIEZpbGUgVXRpbGl0aWVzLi4uIgogIGVjaG8KZmkKcm0gLWYgMTIzMTIzNTk5
OSAkJC50b3VjaAojCmlmIG1rZGlyIF9zaDIyMjM5OyB0aGVuCiAgJGVjaG8gJ3ggLScgJ2NyZWF0
aW5nIGxvY2sgZGlyZWN0b3J5JwplbHNlCiAgJGVjaG8gJ2ZhaWxlZCB0byBjcmVhdGUgbG9jayBk
aXJlY3RvcnknCiAgZXhpdCAxCmZpCiMgPT09PT09PT09PT09PSBnZGIvdGVzdHN1aXRlL2dkYi5q
YXZhL2NvbmZpZ3VyZSA9PT09PT09PT09PT09PQppZiB0ZXN0ICEgLWQgJ2dkYic7IHRoZW4KICAk
ZWNobyAneCAtJyAnY3JlYXRpbmcgZGlyZWN0b3J5JyAnZ2RiJwogIG1rZGlyICdnZGInCmZpCmlm
IHRlc3QgISAtZCAnZ2RiL3Rlc3RzdWl0ZSc7IHRoZW4KICAkZWNobyAneCAtJyAnY3JlYXRpbmcg
ZGlyZWN0b3J5JyAnZ2RiL3Rlc3RzdWl0ZScKICBta2RpciAnZ2RiL3Rlc3RzdWl0ZScKZmkKaWYg
dGVzdCAhIC1kICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZhJzsgdGhlbgogICRlY2hvICd4IC0nICdj
cmVhdGluZyBkaXJlY3RvcnknICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZhJwogIG1rZGlyICdnZGIv
dGVzdHN1aXRlL2dkYi5qYXZhJwpmaQppZiB0ZXN0IC1mICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZh
L2NvbmZpZ3VyZScgJiYgdGVzdCAiJGZpcnN0X3BhcmFtIiAhPSAtYzsgdGhlbgogICRlY2hvICd4
IC0nIFNLSVBQSU5HICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2NvbmZpZ3VyZScgJyhmaWxlIGFs
cmVhZHkgZXhpc3RzKScKZWxzZQogICRlY2hvICd4IC0nIGV4dHJhY3RpbmcgJ2dkYi90ZXN0c3Vp
dGUvZ2RiLmphdmEvY29uZmlndXJlJyAnKHRleHQpJwogIHNlZCAncy9eWC8vJyA8PCAnU0hBUl9F
T0YnID4gJ2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvY29uZmlndXJlJyAmJgojISAvYmluL3NoClgK
IyBHdWVzcyB2YWx1ZXMgZm9yIHN5c3RlbS1kZXBlbmRlbnQgdmFyaWFibGVzIGFuZCBjcmVhdGUg
TWFrZWZpbGVzLgojIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IHVzaW5nIGF1dG9jb25mIHZlcnNp
b24gMi4xMyAKIyBDb3B5cmlnaHQgKEMpIDE5OTIsIDkzLCA5NCwgOTUsIDk2IEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLgojCiMgVGhpcyBjb25maWd1cmUgc2NyaXB0IGlzIGZyZWUgc29m
dHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KIyBnaXZlcyB1bmxpbWl0ZWQgcGVy
bWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuClgKIyBEZWZhdWx0czoK
YWNfaGVscD0KYWNfZGVmYXVsdF9wcmVmaXg9L3Vzci9sb2NhbAojIEFueSBhZGRpdGlvbnMgZnJv
bSBjb25maWd1cmUuaW46ClgKIyBJbml0aWFsaXplIHNvbWUgdmFyaWFibGVzIHNldCBieSBvcHRp
b25zLgojIFRoZSB2YXJpYWJsZXMgaGF2ZSB0aGUgc2FtZSBuYW1lcyBhcyB0aGUgb3B0aW9ucywg
d2l0aAojIGRhc2hlcyBjaGFuZ2VkIHRvIHVuZGVybGluZXMuCmJ1aWxkPU5PTkUKY2FjaGVfZmls
ZT0uL2NvbmZpZy5jYWNoZQpleGVjX3ByZWZpeD1OT05FCmhvc3Q9Tk9ORQpub19jcmVhdGU9Cm5v
bm9wdD1OT05FCm5vX3JlY3Vyc2lvbj0KcHJlZml4PU5PTkUKcHJvZ3JhbV9wcmVmaXg9Tk9ORQpw
cm9ncmFtX3N1ZmZpeD1OT05FCnByb2dyYW1fdHJhbnNmb3JtX25hbWU9cyx4LHgsCnNpbGVudD0K
c2l0ZT0Kc2l0ZWZpbGU9CnNyY2Rpcj0KdGFyZ2V0PU5PTkUKdmVyYm9zZT0KeF9pbmNsdWRlcz1O
T05FCnhfbGlicmFyaWVzPU5PTkUKYmluZGlyPScke2V4ZWNfcHJlZml4fS9iaW4nCnNiaW5kaXI9
JyR7ZXhlY19wcmVmaXh9L3NiaW4nCmxpYmV4ZWNkaXI9JyR7ZXhlY19wcmVmaXh9L2xpYmV4ZWMn
CmRhdGFkaXI9JyR7cHJlZml4fS9zaGFyZScKc3lzY29uZmRpcj0nJHtwcmVmaXh9L2V0YycKc2hh
cmVkc3RhdGVkaXI9JyR7cHJlZml4fS9jb20nCmxvY2Fsc3RhdGVkaXI9JyR7cHJlZml4fS92YXIn
CmxpYmRpcj0nJHtleGVjX3ByZWZpeH0vbGliJwppbmNsdWRlZGlyPScke3ByZWZpeH0vaW5jbHVk
ZScKb2xkaW5jbHVkZWRpcj0nL3Vzci9pbmNsdWRlJwppbmZvZGlyPScke3ByZWZpeH0vaW5mbycK
bWFuZGlyPScke3ByZWZpeH0vbWFuJwpYCiMgSW5pdGlhbGl6ZSBzb21lIG90aGVyIHZhcmlhYmxl
cy4Kc3ViZGlycz0KTUZMQUdTPSBNQUtFRkxBR1M9ClNIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4v
c2h9CiMgTWF4aW11bSBudW1iZXIgb2YgbGluZXMgdG8gcHV0IGluIGEgc2hlbGwgaGVyZSBkb2N1
bWVudC4KYWNfbWF4X2hlcmVfbGluZXM9MTIKWAphY19wcmV2PQpmb3IgYWNfb3B0aW9uCmRvClgK
WCAgIyBJZiB0aGUgcHJldmlvdXMgb3B0aW9uIG5lZWRzIGFuIGFyZ3VtZW50LCBhc3NpZ24gaXQu
ClggIGlmIHRlc3QgLW4gIiRhY19wcmV2IjsgdGhlbgpYICAgIGV2YWwgIiRhY19wcmV2PVwkYWNf
b3B0aW9uIgpYICAgIGFjX3ByZXY9ClggICAgY29udGludWUKWCAgZmkKWApYICBjYXNlICIkYWNf
b3B0aW9uIiBpbgpYICAtKj0qKSBhY19vcHRhcmc9YGVjaG8gIiRhY19vcHRpb24iIHwgc2VkICdz
L1stX2EtekEtWjAtOV0qPS8vJ2AgOzsKWCAgKikgYWNfb3B0YXJnPSA7OwpYICBlc2FjClgKWCAg
IyBBY2NlcHQgdGhlIGltcG9ydGFudCBDeWdudXMgY29uZmlndXJlIG9wdGlvbnMsIHNvIHdlIGNh
biBkaWFnbm9zZSB0eXBvcy4KWApYICBjYXNlICIkYWNfb3B0aW9uIiBpbgpYClggIC1iaW5kaXIg
fCAtLWJpbmRpciB8IC0tYmluZGkgfCAtLWJpbmQgfCAtLWJpbiB8IC0tYmkpClggICAgYWNfcHJl
dj1iaW5kaXIgOzsKWCAgLWJpbmRpcj0qIHwgLS1iaW5kaXI9KiB8IC0tYmluZGk9KiB8IC0tYmlu
ZD0qIHwgLS1iaW49KiB8IC0tYmk9KikKWCAgICBiaW5kaXI9IiRhY19vcHRhcmciIDs7ClgKWCAg
LWJ1aWxkIHwgLS1idWlsZCB8IC0tYnVpbCB8IC0tYnVpIHwgLS1idSkKWCAgICBhY19wcmV2PWJ1
aWxkIDs7ClggIC1idWlsZD0qIHwgLS1idWlsZD0qIHwgLS1idWlsPSogfCAtLWJ1aT0qIHwgLS1i
dT0qKQpYICAgIGJ1aWxkPSIkYWNfb3B0YXJnIiA7OwpYClggIC1jYWNoZS1maWxlIHwgLS1jYWNo
ZS1maWxlIHwgLS1jYWNoZS1maWwgfCAtLWNhY2hlLWZpIFwKWCAgfCAtLWNhY2hlLWYgfCAtLWNh
Y2hlLSB8IC0tY2FjaGUgfCAtLWNhY2ggfCAtLWNhYyB8IC0tY2EgfCAtLWMpClggICAgYWNfcHJl
dj1jYWNoZV9maWxlIDs7ClggIC1jYWNoZS1maWxlPSogfCAtLWNhY2hlLWZpbGU9KiB8IC0tY2Fj
aGUtZmlsPSogfCAtLWNhY2hlLWZpPSogXApYICB8IC0tY2FjaGUtZj0qIHwgLS1jYWNoZS09KiB8
IC0tY2FjaGU9KiB8IC0tY2FjaD0qIHwgLS1jYWM9KiB8IC0tY2E9KiB8IC0tYz0qKQpYICAgIGNh
Y2hlX2ZpbGU9IiRhY19vcHRhcmciIDs7ClgKWCAgLWRhdGFkaXIgfCAtLWRhdGFkaXIgfCAtLWRh
dGFkaSB8IC0tZGF0YWQgfCAtLWRhdGEgfCAtLWRhdCB8IC0tZGEpClggICAgYWNfcHJldj1kYXRh
ZGlyIDs7ClggIC1kYXRhZGlyPSogfCAtLWRhdGFkaXI9KiB8IC0tZGF0YWRpPSogfCAtLWRhdGFk
PSogfCAtLWRhdGE9KiB8IC0tZGF0PSogXApYICB8IC0tZGE9KikKWCAgICBkYXRhZGlyPSIkYWNf
b3B0YXJnIiA7OwpYClggIC1kaXNhYmxlLSogfCAtLWRpc2FibGUtKikKWCAgICBhY19mZWF0dXJl
PWBlY2hvICRhY19vcHRpb258c2VkIC1lICdzLy0qZGlzYWJsZS0vLydgClggICAgIyBSZWplY3Qg
bmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgpYICAgIGlmIHRl
c3QgLW4gImBlY2hvICRhY19mZWF0dXJlfCBzZWQgJ3MvWy1hLXpBLVowLTlfXS8vZydgIjsgdGhl
bgpYICAgICAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiAkYWNfZmVhdHVyZTogaW52YWxpZCBm
ZWF0dXJlIG5hbWUiIDE+JjI7IGV4aXQgMTsgfQpYICAgIGZpClggICAgYWNfZmVhdHVyZT1gZWNo
byAkYWNfZmVhdHVyZXwgc2VkICdzLy0vXy9nJ2AKWCAgICBldmFsICJlbmFibGVfJHthY19mZWF0
dXJlfT1ubyIgOzsKWApYICAtZW5hYmxlLSogfCAtLWVuYWJsZS0qKQpYICAgIGFjX2ZlYXR1cmU9
YGVjaG8gJGFjX29wdGlvbnxzZWQgLWUgJ3MvLSplbmFibGUtLy8nIC1lICdzLz0uKi8vJ2AKWCAg
ICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMu
ClggICAgaWYgdGVzdCAtbiAiYGVjaG8gJGFjX2ZlYXR1cmV8IHNlZCAncy9bLV9hLXpBLVowLTld
Ly9nJ2AiOyB0aGVuClggICAgICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6ICRhY19mZWF0dXJl
OiBpbnZhbGlkIGZlYXR1cmUgbmFtZSIgMT4mMjsgZXhpdCAxOyB9ClggICAgZmkKWCAgICBhY19m
ZWF0dXJlPWBlY2hvICRhY19mZWF0dXJlfCBzZWQgJ3MvLS9fL2cnYApYICAgIGNhc2UgIiRhY19v
cHRpb24iIGluClggICAgICAqPSopIDs7ClggICAgICAqKSBhY19vcHRhcmc9eWVzIDs7ClggICAg
ZXNhYwpYICAgIGV2YWwgImVuYWJsZV8ke2FjX2ZlYXR1cmV9PSckYWNfb3B0YXJnJyIgOzsKWApY
ICAtZXhlYy1wcmVmaXggfCAtLWV4ZWNfcHJlZml4IHwgLS1leGVjLXByZWZpeCB8IC0tZXhlYy1w
cmVmaSBcClggIHwgLS1leGVjLXByZWYgfCAtLWV4ZWMtcHJlIHwgLS1leGVjLXByIHwgLS1leGVj
LXAgfCAtLWV4ZWMtIFwKWCAgfCAtLWV4ZWMgfCAtLWV4ZSB8IC0tZXgpClggICAgYWNfcHJldj1l
eGVjX3ByZWZpeCA7OwpYICAtZXhlYy1wcmVmaXg9KiB8IC0tZXhlY19wcmVmaXg9KiB8IC0tZXhl
Yy1wcmVmaXg9KiB8IC0tZXhlYy1wcmVmaT0qIFwKWCAgfCAtLWV4ZWMtcHJlZj0qIHwgLS1leGVj
LXByZT0qIHwgLS1leGVjLXByPSogfCAtLWV4ZWMtcD0qIHwgLS1leGVjLT0qIFwKWCAgfCAtLWV4
ZWM9KiB8IC0tZXhlPSogfCAtLWV4PSopClggICAgZXhlY19wcmVmaXg9IiRhY19vcHRhcmciIDs7
ClgKWCAgLWdhcyB8IC0tZ2FzIHwgLS1nYSB8IC0tZykKWCAgICAjIE9ic29sZXRlOyB1c2UgLS13
aXRoLWdhcy4KWCAgICB3aXRoX2dhcz15ZXMgOzsKWApYICAtaGVscCB8IC0taGVscCB8IC0taGVs
IHwgLS1oZSkKWCAgICAjIE9taXQgc29tZSBpbnRlcm5hbCBvciBvYnNvbGV0ZSBvcHRpb25zIHRv
IG1ha2UgdGhlIGxpc3QgbGVzcyBpbXBvc2luZy4KWCAgICAjIFRoaXMgbWVzc2FnZSBpcyB0b28g
bG9uZyB0byBiZSBhIHN0cmluZyBpbiB0aGUgQS9VWCAzLjEgc2guClggICAgY2F0IDw8IEVPRgpV
c2FnZTogY29uZmlndXJlIFtvcHRpb25zXSBbaG9zdF0KT3B0aW9uczogW2RlZmF1bHRzIGluIGJy
YWNrZXRzIGFmdGVyIGRlc2NyaXB0aW9uc10KQ29uZmlndXJhdGlvbjoKWCAgLS1jYWNoZS1maWxl
PUZJTEUgICAgICAgY2FjaGUgdGVzdCByZXN1bHRzIGluIEZJTEUKWCAgLS1oZWxwICAgICAgICAg
ICAgICAgICAgcHJpbnQgdGhpcyBtZXNzYWdlClggIC0tbm8tY3JlYXRlICAgICAgICAgICAgIGRv
IG5vdCBjcmVhdGUgb3V0cHV0IGZpbGVzClggIC0tcXVpZXQsIC0tc2lsZW50ICAgICAgIGRvIG5v
dCBwcmludCBcYGNoZWNraW5nLi4uJyBtZXNzYWdlcwpYICAtLXNpdGUtZmlsZT1GSUxFICAgICAg
ICB1c2UgRklMRSBhcyB0aGUgc2l0ZSBmaWxlClggIC0tdmVyc2lvbiAgICAgICAgICAgICAgIHBy
aW50IHRoZSB2ZXJzaW9uIG9mIGF1dG9jb25mIHRoYXQgY3JlYXRlZCBjb25maWd1cmUKRGlyZWN0
b3J5IGFuZCBmaWxlIG5hbWVzOgpYICAtLXByZWZpeD1QUkVGSVggICAgICAgICBpbnN0YWxsIGFy
Y2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcyBpbiBQUkVGSVgKWCAgICAgICAgICAgICAgICAg
ICAgICAgICAgWyRhY19kZWZhdWx0X3ByZWZpeF0KWCAgLS1leGVjLXByZWZpeD1FUFJFRklYICAg
aW5zdGFsbCBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IGZpbGVzIGluIEVQUkVGSVgKWCAgICAgICAg
ICAgICAgICAgICAgICAgICAgW3NhbWUgYXMgcHJlZml4XQpYICAtLWJpbmRpcj1ESVIgICAgICAg
ICAgICB1c2VyIGV4ZWN1dGFibGVzIGluIERJUiBbRVBSRUZJWC9iaW5dClggIC0tc2JpbmRpcj1E
SVIgICAgICAgICAgIHN5c3RlbSBhZG1pbiBleGVjdXRhYmxlcyBpbiBESVIgW0VQUkVGSVgvc2Jp
bl0KWCAgLS1saWJleGVjZGlyPURJUiAgICAgICAgcHJvZ3JhbSBleGVjdXRhYmxlcyBpbiBESVIg
W0VQUkVGSVgvbGliZXhlY10KWCAgLS1kYXRhZGlyPURJUiAgICAgICAgICAgcmVhZC1vbmx5IGFy
Y2hpdGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhIGluIERJUgpYICAgICAgICAgICAgICAgICAgICAg
ICAgICBbUFJFRklYL3NoYXJlXQpYICAtLXN5c2NvbmZkaXI9RElSICAgICAgICByZWFkLW9ubHkg
c2luZ2xlLW1hY2hpbmUgZGF0YSBpbiBESVIgW1BSRUZJWC9ldGNdClggIC0tc2hhcmVkc3RhdGVk
aXI9RElSICAgIG1vZGlmaWFibGUgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEgaW4gRElS
ClggICAgICAgICAgICAgICAgICAgICAgICAgIFtQUkVGSVgvY29tXQpYICAtLWxvY2Fsc3RhdGVk
aXI9RElSICAgICBtb2RpZmlhYmxlIHNpbmdsZS1tYWNoaW5lIGRhdGEgaW4gRElSIFtQUkVGSVgv
dmFyXQpYICAtLWxpYmRpcj1ESVIgICAgICAgICAgICBvYmplY3QgY29kZSBsaWJyYXJpZXMgaW4g
RElSIFtFUFJFRklYL2xpYl0KWCAgLS1pbmNsdWRlZGlyPURJUiAgICAgICAgQyBoZWFkZXIgZmls
ZXMgaW4gRElSIFtQUkVGSVgvaW5jbHVkZV0KWCAgLS1vbGRpbmNsdWRlZGlyPURJUiAgICAgQyBo
ZWFkZXIgZmlsZXMgZm9yIG5vbi1nY2MgaW4gRElSIFsvdXNyL2luY2x1ZGVdClggIC0taW5mb2Rp
cj1ESVIgICAgICAgICAgIGluZm8gZG9jdW1lbnRhdGlvbiBpbiBESVIgW1BSRUZJWC9pbmZvXQpY
ICAtLW1hbmRpcj1ESVIgICAgICAgICAgICBtYW4gZG9jdW1lbnRhdGlvbiBpbiBESVIgW1BSRUZJ
WC9tYW5dClggIC0tc3JjZGlyPURJUiAgICAgICAgICAgIGZpbmQgdGhlIHNvdXJjZXMgaW4gRElS
IFtjb25maWd1cmUgZGlyIG9yIC4uXQpYICAtLXByb2dyYW0tcHJlZml4PVBSRUZJWCBwcmVwZW5k
IFBSRUZJWCB0byBpbnN0YWxsZWQgcHJvZ3JhbSBuYW1lcwpYICAtLXByb2dyYW0tc3VmZml4PVNV
RkZJWCBhcHBlbmQgU1VGRklYIHRvIGluc3RhbGxlZCBwcm9ncmFtIG5hbWVzClggIC0tcHJvZ3Jh
bS10cmFuc2Zvcm0tbmFtZT1QUk9HUkFNClggICAgICAgICAgICAgICAgICAgICAgICAgIHJ1biBz
ZWQgUFJPR1JBTSBvbiBpbnN0YWxsZWQgcHJvZ3JhbSBuYW1lcwpFT0YKWCAgICBjYXQgPDwgRU9G
Ckhvc3QgdHlwZToKWCAgLS1idWlsZD1CVUlMRCAgICAgICAgICAgY29uZmlndXJlIGZvciBidWls
ZGluZyBvbiBCVUlMRCBbQlVJTEQ9SE9TVF0KWCAgLS1ob3N0PUhPU1QgICAgICAgICAgICAgY29u
ZmlndXJlIGZvciBIT1NUIFtndWVzc2VkXQpYICAtLXRhcmdldD1UQVJHRVQgICAgICAgICBjb25m
aWd1cmUgZm9yIFRBUkdFVCBbVEFSR0VUPUhPU1RdCkZlYXR1cmVzIGFuZCBwYWNrYWdlczoKWCAg
LS1kaXNhYmxlLUZFQVRVUkUgICAgICAgZG8gbm90IGluY2x1ZGUgRkVBVFVSRSAoc2FtZSBhcyAt
LWVuYWJsZS1GRUFUVVJFPW5vKQpYICAtLWVuYWJsZS1GRUFUVVJFWz1BUkddICBpbmNsdWRlIEZF
QVRVUkUgW0FSRz15ZXNdClggIC0td2l0aC1QQUNLQUdFWz1BUkddICAgIHVzZSBQQUNLQUdFIFtB
Ukc9eWVzXQpYICAtLXdpdGhvdXQtUEFDS0FHRSAgICAgICBkbyBub3QgdXNlIFBBQ0tBR0UgKHNh
bWUgYXMgLS13aXRoLVBBQ0tBR0U9bm8pClggIC0teC1pbmNsdWRlcz1ESVIgICAgICAgIFggaW5j
bHVkZSBmaWxlcyBhcmUgaW4gRElSClggIC0teC1saWJyYXJpZXM9RElSICAgICAgIFggbGlicmFy
eSBmaWxlcyBhcmUgaW4gRElSCkVPRgpYICAgIGlmIHRlc3QgLW4gIiRhY19oZWxwIjsgdGhlbgpY
ICAgICAgZWNobyAiLS1lbmFibGUgYW5kIC0td2l0aCBvcHRpb25zIHJlY29nbml6ZWQ6JGFjX2hl
bHAiClggICAgZmkKWCAgICBleGl0IDAgOzsKWApYICAtaG9zdCB8IC0taG9zdCB8IC0taG9zIHwg
LS1obykKWCAgICBhY19wcmV2PWhvc3QgOzsKWCAgLWhvc3Q9KiB8IC0taG9zdD0qIHwgLS1ob3M9
KiB8IC0taG89KikKWCAgICBob3N0PSIkYWNfb3B0YXJnIiA7OwpYClggIC1pbmNsdWRlZGlyIHwg
LS1pbmNsdWRlZGlyIHwgLS1pbmNsdWRlZGkgfCAtLWluY2x1ZGVkIHwgLS1pbmNsdWRlIFwKWCAg
fCAtLWluY2x1ZCB8IC0taW5jbHUgfCAtLWluY2wgfCAtLWluYykKWCAgICBhY19wcmV2PWluY2x1
ZGVkaXIgOzsKWCAgLWluY2x1ZGVkaXI9KiB8IC0taW5jbHVkZWRpcj0qIHwgLS1pbmNsdWRlZGk9
KiB8IC0taW5jbHVkZWQ9KiB8IC0taW5jbHVkZT0qIFwKWCAgfCAtLWluY2x1ZD0qIHwgLS1pbmNs
dT0qIHwgLS1pbmNsPSogfCAtLWluYz0qKQpYICAgIGluY2x1ZGVkaXI9IiRhY19vcHRhcmciIDs7
ClgKWCAgLWluZm9kaXIgfCAtLWluZm9kaXIgfCAtLWluZm9kaSB8IC0taW5mb2QgfCAtLWluZm8g
fCAtLWluZikKWCAgICBhY19wcmV2PWluZm9kaXIgOzsKWCAgLWluZm9kaXI9KiB8IC0taW5mb2Rp
cj0qIHwgLS1pbmZvZGk9KiB8IC0taW5mb2Q9KiB8IC0taW5mbz0qIHwgLS1pbmY9KikKWCAgICBp
bmZvZGlyPSIkYWNfb3B0YXJnIiA7OwpYClggIC1saWJkaXIgfCAtLWxpYmRpciB8IC0tbGliZGkg
fCAtLWxpYmQpClggICAgYWNfcHJldj1saWJkaXIgOzsKWCAgLWxpYmRpcj0qIHwgLS1saWJkaXI9
KiB8IC0tbGliZGk9KiB8IC0tbGliZD0qKQpYICAgIGxpYmRpcj0iJGFjX29wdGFyZyIgOzsKWApY
ICAtbGliZXhlY2RpciB8IC0tbGliZXhlY2RpciB8IC0tbGliZXhlY2RpIHwgLS1saWJleGVjZCB8
IC0tbGliZXhlYyBcClggIHwgLS1saWJleGUgfCAtLWxpYmV4IHwgLS1saWJlKQpYICAgIGFjX3By
ZXY9bGliZXhlY2RpciA7OwpYICAtbGliZXhlY2Rpcj0qIHwgLS1saWJleGVjZGlyPSogfCAtLWxp
YmV4ZWNkaT0qIHwgLS1saWJleGVjZD0qIHwgLS1saWJleGVjPSogXApYICB8IC0tbGliZXhlPSog
fCAtLWxpYmV4PSogfCAtLWxpYmU9KikKWCAgICBsaWJleGVjZGlyPSIkYWNfb3B0YXJnIiA7OwpY
ClggIC1sb2NhbHN0YXRlZGlyIHwgLS1sb2NhbHN0YXRlZGlyIHwgLS1sb2NhbHN0YXRlZGkgfCAt
LWxvY2Fsc3RhdGVkIFwKWCAgfCAtLWxvY2Fsc3RhdGUgfCAtLWxvY2Fsc3RhdCB8IC0tbG9jYWxz
dGEgfCAtLWxvY2Fsc3QgXApYICB8IC0tbG9jYWxzIHwgLS1sb2NhbCB8IC0tbG9jYSB8IC0tbG9j
IHwgLS1sbykKWCAgICBhY19wcmV2PWxvY2Fsc3RhdGVkaXIgOzsKWCAgLWxvY2Fsc3RhdGVkaXI9
KiB8IC0tbG9jYWxzdGF0ZWRpcj0qIHwgLS1sb2NhbHN0YXRlZGk9KiB8IC0tbG9jYWxzdGF0ZWQ9
KiBcClggIHwgLS1sb2NhbHN0YXRlPSogfCAtLWxvY2Fsc3RhdD0qIHwgLS1sb2NhbHN0YT0qIHwg
LS1sb2NhbHN0PSogXApYICB8IC0tbG9jYWxzPSogfCAtLWxvY2FsPSogfCAtLWxvY2E9KiB8IC0t
bG9jPSogfCAtLWxvPSopClggICAgbG9jYWxzdGF0ZWRpcj0iJGFjX29wdGFyZyIgOzsKWApYICAt
bWFuZGlyIHwgLS1tYW5kaXIgfCAtLW1hbmRpIHwgLS1tYW5kIHwgLS1tYW4gfCAtLW1hIHwgLS1t
KQpYICAgIGFjX3ByZXY9bWFuZGlyIDs7ClggIC1tYW5kaXI9KiB8IC0tbWFuZGlyPSogfCAtLW1h
bmRpPSogfCAtLW1hbmQ9KiB8IC0tbWFuPSogfCAtLW1hPSogfCAtLW09KikKWCAgICBtYW5kaXI9
IiRhY19vcHRhcmciIDs7ClgKWCAgLW5mcCB8IC0tbmZwIHwgLS1uZikKWCAgICAjIE9ic29sZXRl
OyB1c2UgLS13aXRob3V0LWZwLgpYICAgIHdpdGhfZnA9bm8gOzsKWApYICAtbm8tY3JlYXRlIHwg
LS1uby1jcmVhdGUgfCAtLW5vLWNyZWF0IHwgLS1uby1jcmVhIHwgLS1uby1jcmUgXApYICB8IC0t
bm8tY3IgfCAtLW5vLWMpClggICAgbm9fY3JlYXRlPXllcyA7OwpYClggIC1uby1yZWN1cnNpb24g
fCAtLW5vLXJlY3Vyc2lvbiB8IC0tbm8tcmVjdXJzaW8gfCAtLW5vLXJlY3Vyc2kgXApYICB8IC0t
bm8tcmVjdXJzIHwgLS1uby1yZWN1ciB8IC0tbm8tcmVjdSB8IC0tbm8tcmVjIHwgLS1uby1yZSB8
IC0tbm8tcikKWCAgICBub19yZWN1cnNpb249eWVzIDs7ClgKWCAgLW9sZGluY2x1ZGVkaXIgfCAt
LW9sZGluY2x1ZGVkaXIgfCAtLW9sZGluY2x1ZGVkaSB8IC0tb2xkaW5jbHVkZWQgXApYICB8IC0t
b2xkaW5jbHVkZSB8IC0tb2xkaW5jbHVkIHwgLS1vbGRpbmNsdSB8IC0tb2xkaW5jbCB8IC0tb2xk
aW5jIFwKWCAgfCAtLW9sZGluIHwgLS1vbGRpIHwgLS1vbGQgfCAtLW9sIHwgLS1vKQpYICAgIGFj
X3ByZXY9b2xkaW5jbHVkZWRpciA7OwpYICAtb2xkaW5jbHVkZWRpcj0qIHwgLS1vbGRpbmNsdWRl
ZGlyPSogfCAtLW9sZGluY2x1ZGVkaT0qIHwgLS1vbGRpbmNsdWRlZD0qIFwKWCAgfCAtLW9sZGlu
Y2x1ZGU9KiB8IC0tb2xkaW5jbHVkPSogfCAtLW9sZGluY2x1PSogfCAtLW9sZGluY2w9KiB8IC0t
b2xkaW5jPSogXApYICB8IC0tb2xkaW49KiB8IC0tb2xkaT0qIHwgLS1vbGQ9KiB8IC0tb2w9KiB8
IC0tbz0qKQpYICAgIG9sZGluY2x1ZGVkaXI9IiRhY19vcHRhcmciIDs7ClgKWCAgLXByZWZpeCB8
IC0tcHJlZml4IHwgLS1wcmVmaSB8IC0tcHJlZiB8IC0tcHJlIHwgLS1wciB8IC0tcCkKWCAgICBh
Y19wcmV2PXByZWZpeCA7OwpYICAtcHJlZml4PSogfCAtLXByZWZpeD0qIHwgLS1wcmVmaT0qIHwg
LS1wcmVmPSogfCAtLXByZT0qIHwgLS1wcj0qIHwgLS1wPSopClggICAgcHJlZml4PSIkYWNfb3B0
YXJnIiA7OwpYClggIC1wcm9ncmFtLXByZWZpeCB8IC0tcHJvZ3JhbS1wcmVmaXggfCAtLXByb2dy
YW0tcHJlZmkgfCAtLXByb2dyYW0tcHJlZiBcClggIHwgLS1wcm9ncmFtLXByZSB8IC0tcHJvZ3Jh
bS1wciB8IC0tcHJvZ3JhbS1wKQpYICAgIGFjX3ByZXY9cHJvZ3JhbV9wcmVmaXggOzsKWCAgLXBy
b2dyYW0tcHJlZml4PSogfCAtLXByb2dyYW0tcHJlZml4PSogfCAtLXByb2dyYW0tcHJlZmk9KiBc
ClggIHwgLS1wcm9ncmFtLXByZWY9KiB8IC0tcHJvZ3JhbS1wcmU9KiB8IC0tcHJvZ3JhbS1wcj0q
IHwgLS1wcm9ncmFtLXA9KikKWCAgICBwcm9ncmFtX3ByZWZpeD0iJGFjX29wdGFyZyIgOzsKWApY
ICAtcHJvZ3JhbS1zdWZmaXggfCAtLXByb2dyYW0tc3VmZml4IHwgLS1wcm9ncmFtLXN1ZmZpIHwg
LS1wcm9ncmFtLXN1ZmYgXApYICB8IC0tcHJvZ3JhbS1zdWYgfCAtLXByb2dyYW0tc3UgfCAtLXBy
b2dyYW0tcykKWCAgICBhY19wcmV2PXByb2dyYW1fc3VmZml4IDs7ClggIC1wcm9ncmFtLXN1ZmZp
eD0qIHwgLS1wcm9ncmFtLXN1ZmZpeD0qIHwgLS1wcm9ncmFtLXN1ZmZpPSogXApYICB8IC0tcHJv
Z3JhbS1zdWZmPSogfCAtLXByb2dyYW0tc3VmPSogfCAtLXByb2dyYW0tc3U9KiB8IC0tcHJvZ3Jh
bS1zPSopClggICAgcHJvZ3JhbV9zdWZmaXg9IiRhY19vcHRhcmciIDs7ClgKWCAgLXByb2dyYW0t
dHJhbnNmb3JtLW5hbWUgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbWUgXApYICB8IC0tcHJvZ3Jh
bS10cmFuc2Zvcm0tbmFtIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYSBcClggIHwgLS1wcm9ncmFt
LXRyYW5zZm9ybS1uIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS0gXApYICB8IC0tcHJvZ3JhbS10cmFu
c2Zvcm0gfCAtLXByb2dyYW0tdHJhbnNmb3IgXApYICB8IC0tcHJvZ3JhbS10cmFuc2ZvIHwgLS1w
cm9ncmFtLXRyYW5zZiBcClggIHwgLS1wcm9ncmFtLXRyYW5zIHwgLS1wcm9ncmFtLXRyYW4gXApY
ICB8IC0tcHJvZ3ItdHJhIHwgLS1wcm9ncmFtLXRyIHwgLS1wcm9ncmFtLXQpClggICAgYWNfcHJl
dj1wcm9ncmFtX3RyYW5zZm9ybV9uYW1lIDs7ClggIC1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lPSog
fCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbWU9KiBcClggIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1u
YW09KiB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmE9KiBcClggIHwgLS1wcm9ncmFtLXRyYW5zZm9y
bS1uPSogfCAtLXByb2dyYW0tdHJhbnNmb3JtLT0qIFwKWCAgfCAtLXByb2dyYW0tdHJhbnNmb3Jt
PSogfCAtLXByb2dyYW0tdHJhbnNmb3I9KiBcClggIHwgLS1wcm9ncmFtLXRyYW5zZm89KiB8IC0t
cHJvZ3JhbS10cmFuc2Y9KiBcClggIHwgLS1wcm9ncmFtLXRyYW5zPSogfCAtLXByb2dyYW0tdHJh
bj0qIFwKWCAgfCAtLXByb2dyLXRyYT0qIHwgLS1wcm9ncmFtLXRyPSogfCAtLXByb2dyYW0tdD0q
KQpYICAgIHByb2dyYW1fdHJhbnNmb3JtX25hbWU9IiRhY19vcHRhcmciIDs7ClgKWCAgLXEgfCAt
cXVpZXQgfCAtLXF1aWV0IHwgLS1xdWllIHwgLS1xdWkgfCAtLXF1IHwgLS1xIFwKWCAgfCAtc2ls
ZW50IHwgLS1zaWxlbnQgfCAtLXNpbGVuIHwgLS1zaWxlIHwgLS1zaWwpClggICAgc2lsZW50PXll
cyA7OwpYClggIC1zYmluZGlyIHwgLS1zYmluZGlyIHwgLS1zYmluZGkgfCAtLXNiaW5kIHwgLS1z
YmluIHwgLS1zYmkgfCAtLXNiKQpYICAgIGFjX3ByZXY9c2JpbmRpciA7OwpYICAtc2JpbmRpcj0q
IHwgLS1zYmluZGlyPSogfCAtLXNiaW5kaT0qIHwgLS1zYmluZD0qIHwgLS1zYmluPSogXApYICB8
IC0tc2JpPSogfCAtLXNiPSopClggICAgc2JpbmRpcj0iJGFjX29wdGFyZyIgOzsKWApYICAtc2hh
cmVkc3RhdGVkaXIgfCAtLXNoYXJlZHN0YXRlZGlyIHwgLS1zaGFyZWRzdGF0ZWRpIFwKWCAgfCAt
LXNoYXJlZHN0YXRlZCB8IC0tc2hhcmVkc3RhdGUgfCAtLXNoYXJlZHN0YXQgfCAtLXNoYXJlZHN0
YSBcClggIHwgLS1zaGFyZWRzdCB8IC0tc2hhcmVkcyB8IC0tc2hhcmVkIHwgLS1zaGFyZSB8IC0t
c2hhciBcClggIHwgLS1zaGEgfCAtLXNoKQpYICAgIGFjX3ByZXY9c2hhcmVkc3RhdGVkaXIgOzsK
WCAgLXNoYXJlZHN0YXRlZGlyPSogfCAtLXNoYXJlZHN0YXRlZGlyPSogfCAtLXNoYXJlZHN0YXRl
ZGk9KiBcClggIHwgLS1zaGFyZWRzdGF0ZWQ9KiB8IC0tc2hhcmVkc3RhdGU9KiB8IC0tc2hhcmVk
c3RhdD0qIHwgLS1zaGFyZWRzdGE9KiBcClggIHwgLS1zaGFyZWRzdD0qIHwgLS1zaGFyZWRzPSog
fCAtLXNoYXJlZD0qIHwgLS1zaGFyZT0qIHwgLS1zaGFyPSogXApYICB8IC0tc2hhPSogfCAtLXNo
PSopClggICAgc2hhcmVkc3RhdGVkaXI9IiRhY19vcHRhcmciIDs7ClgKWCAgLXNpdGUgfCAtLXNp
dGUgfCAtLXNpdCkKWCAgICBhY19wcmV2PXNpdGUgOzsKWCAgLXNpdGU9KiB8IC0tc2l0ZT0qIHwg
LS1zaXQ9KikKWCAgICBzaXRlPSIkYWNfb3B0YXJnIiA7OwpYClggIC1zaXRlLWZpbGUgfCAtLXNp
dGUtZmlsZSB8IC0tc2l0ZS1maWwgfCAtLXNpdGUtZmkgfCAtLXNpdGUtZikKWCAgICBhY19wcmV2
PXNpdGVmaWxlIDs7ClggIC1zaXRlLWZpbGU9KiB8IC0tc2l0ZS1maWxlPSogfCAtLXNpdGUtZmls
PSogfCAtLXNpdGUtZmk9KiB8IC0tc2l0ZS1mPSopClggICAgc2l0ZWZpbGU9IiRhY19vcHRhcmci
IDs7ClgKWCAgLXNyY2RpciB8IC0tc3JjZGlyIHwgLS1zcmNkaSB8IC0tc3JjZCB8IC0tc3JjIHwg
LS1zcikKWCAgICBhY19wcmV2PXNyY2RpciA7OwpYICAtc3JjZGlyPSogfCAtLXNyY2Rpcj0qIHwg
LS1zcmNkaT0qIHwgLS1zcmNkPSogfCAtLXNyYz0qIHwgLS1zcj0qKQpYICAgIHNyY2Rpcj0iJGFj
X29wdGFyZyIgOzsKWApYICAtc3lzY29uZmRpciB8IC0tc3lzY29uZmRpciB8IC0tc3lzY29uZmRp
IHwgLS1zeXNjb25mZCB8IC0tc3lzY29uZiBcClggIHwgLS1zeXNjb24gfCAtLXN5c2NvIHwgLS1z
eXNjIHwgLS1zeXMgfCAtLXN5KQpYICAgIGFjX3ByZXY9c3lzY29uZmRpciA7OwpYICAtc3lzY29u
ZmRpcj0qIHwgLS1zeXNjb25mZGlyPSogfCAtLXN5c2NvbmZkaT0qIHwgLS1zeXNjb25mZD0qIHwg
LS1zeXNjb25mPSogXApYICB8IC0tc3lzY29uPSogfCAtLXN5c2NvPSogfCAtLXN5c2M9KiB8IC0t
c3lzPSogfCAtLXN5PSopClggICAgc3lzY29uZmRpcj0iJGFjX29wdGFyZyIgOzsKWApYICAtdGFy
Z2V0IHwgLS10YXJnZXQgfCAtLXRhcmdlIHwgLS10YXJnIHwgLS10YXIgfCAtLXRhIHwgLS10KQpY
ICAgIGFjX3ByZXY9dGFyZ2V0IDs7ClggIC10YXJnZXQ9KiB8IC0tdGFyZ2V0PSogfCAtLXRhcmdl
PSogfCAtLXRhcmc9KiB8IC0tdGFyPSogfCAtLXRhPSogfCAtLXQ9KikKWCAgICB0YXJnZXQ9IiRh
Y19vcHRhcmciIDs7ClgKWCAgLXYgfCAtdmVyYm9zZSB8IC0tdmVyYm9zZSB8IC0tdmVyYm9zIHwg
LS12ZXJibyB8IC0tdmVyYikKWCAgICB2ZXJib3NlPXllcyA7OwpYClggIC12ZXJzaW9uIHwgLS12
ZXJzaW9uIHwgLS12ZXJzaW8gfCAtLXZlcnNpIHwgLS12ZXJzKQpYICAgIGVjaG8gImNvbmZpZ3Vy
ZSBnZW5lcmF0ZWQgYnkgYXV0b2NvbmYgdmVyc2lvbiAyLjEzIgpYICAgIGV4aXQgMCA7OwpYClgg
IC13aXRoLSogfCAtLXdpdGgtKikKWCAgICBhY19wYWNrYWdlPWBlY2hvICRhY19vcHRpb258c2Vk
IC1lICdzLy0qd2l0aC0vLycgLWUgJ3MvPS4qLy8nYApYICAgICMgUmVqZWN0IG5hbWVzIHRoYXQg
YXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KWCAgICBpZiB0ZXN0IC1uICJgZWNo
byAkYWNfcGFja2FnZXwgc2VkICdzL1stX2EtekEtWjAtOV0vL2cnYCI7IHRoZW4KWCAgICAgIHsg
ZWNobyAiY29uZmlndXJlOiBlcnJvcjogJGFjX3BhY2thZ2U6IGludmFsaWQgcGFja2FnZSBuYW1l
IiAxPiYyOyBleGl0IDE7IH0KWCAgICBmaQpYICAgIGFjX3BhY2thZ2U9YGVjaG8gJGFjX3BhY2th
Z2V8IHNlZCAncy8tL18vZydgClggICAgY2FzZSAiJGFjX29wdGlvbiIgaW4KWCAgICAgICo9Kikg
OzsKWCAgICAgICopIGFjX29wdGFyZz15ZXMgOzsKWCAgICBlc2FjClggICAgZXZhbCAid2l0aF8k
e2FjX3BhY2thZ2V9PSckYWNfb3B0YXJnJyIgOzsKWApYICAtd2l0aG91dC0qIHwgLS13aXRob3V0
LSopClggICAgYWNfcGFja2FnZT1gZWNobyAkYWNfb3B0aW9ufHNlZCAtZSAncy8tKndpdGhvdXQt
Ly8nYApYICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJs
ZSBuYW1lcy4KWCAgICBpZiB0ZXN0IC1uICJgZWNobyAkYWNfcGFja2FnZXwgc2VkICdzL1stYS16
QS1aMC05X10vL2cnYCI7IHRoZW4KWCAgICAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogJGFj
X3BhY2thZ2U6IGludmFsaWQgcGFja2FnZSBuYW1lIiAxPiYyOyBleGl0IDE7IH0KWCAgICBmaQpY
ICAgIGFjX3BhY2thZ2U9YGVjaG8gJGFjX3BhY2thZ2V8IHNlZCAncy8tL18vZydgClggICAgZXZh
bCAid2l0aF8ke2FjX3BhY2thZ2V9PW5vIiA7OwpYClggIC0teCkKWCAgICAjIE9ic29sZXRlOyB1
c2UgLS13aXRoLXguClggICAgd2l0aF94PXllcyA7OwpYClggIC14LWluY2x1ZGVzIHwgLS14LWlu
Y2x1ZGVzIHwgLS14LWluY2x1ZGUgfCAtLXgtaW5jbHVkIHwgLS14LWluY2x1IFwKWCAgfCAtLXgt
aW5jbCB8IC0teC1pbmMgfCAtLXgtaW4gfCAtLXgtaSkKWCAgICBhY19wcmV2PXhfaW5jbHVkZXMg
OzsKWCAgLXgtaW5jbHVkZXM9KiB8IC0teC1pbmNsdWRlcz0qIHwgLS14LWluY2x1ZGU9KiB8IC0t
eC1pbmNsdWQ9KiB8IC0teC1pbmNsdT0qIFwKWCAgfCAtLXgtaW5jbD0qIHwgLS14LWluYz0qIHwg
LS14LWluPSogfCAtLXgtaT0qKQpYICAgIHhfaW5jbHVkZXM9IiRhY19vcHRhcmciIDs7ClgKWCAg
LXgtbGlicmFyaWVzIHwgLS14LWxpYnJhcmllcyB8IC0teC1saWJyYXJpZSB8IC0teC1saWJyYXJp
IFwKWCAgfCAtLXgtbGlicmFyIHwgLS14LWxpYnJhIHwgLS14LWxpYnIgfCAtLXgtbGliIHwgLS14
LWxpIHwgLS14LWwpClggICAgYWNfcHJldj14X2xpYnJhcmllcyA7OwpYICAteC1saWJyYXJpZXM9
KiB8IC0teC1saWJyYXJpZXM9KiB8IC0teC1saWJyYXJpZT0qIHwgLS14LWxpYnJhcmk9KiBcClgg
IHwgLS14LWxpYnJhcj0qIHwgLS14LWxpYnJhPSogfCAtLXgtbGlicj0qIHwgLS14LWxpYj0qIHwg
LS14LWxpPSogfCAtLXgtbD0qKQpYICAgIHhfbGlicmFyaWVzPSIkYWNfb3B0YXJnIiA7OwpYClgg
IC0qKSB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6ICRhY19vcHRpb246IGludmFsaWQgb3B0aW9u
OyB1c2UgLS1oZWxwIHRvIHNob3cgdXNhZ2UiIDE+JjI7IGV4aXQgMTsgfQpYICAgIDs7ClgKWCAg
KikKWCAgICBpZiB0ZXN0IC1uICJgZWNobyAkYWNfb3B0aW9ufCBzZWQgJ3MvWy1hLXowLTkuXS8v
ZydgIjsgdGhlbgpYICAgICAgZWNobyAiY29uZmlndXJlOiB3YXJuaW5nOiAkYWNfb3B0aW9uOiBp
bnZhbGlkIGhvc3QgdHlwZSIgMT4mMgpYICAgIGZpClggICAgaWYgdGVzdCAieCRub25vcHQiICE9
IHhOT05FOyB0aGVuClggICAgICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IGNhbiBvbmx5IGNv
bmZpZ3VyZSBmb3Igb25lIGhvc3QgYW5kIG9uZSB0YXJnZXQgYXQgYSB0aW1lIiAxPiYyOyBleGl0
IDE7IH0KWCAgICBmaQpYICAgIG5vbm9wdD0iJGFjX29wdGlvbiIKWCAgICA7OwpYClggIGVzYWMK
ZG9uZQpYCmlmIHRlc3QgLW4gIiRhY19wcmV2IjsgdGhlbgpYICB7IGVjaG8gImNvbmZpZ3VyZTog
ZXJyb3I6IG1pc3NpbmcgYXJndW1lbnQgdG8gLS1gZWNobyAkYWNfcHJldiB8IHNlZCAncy9fLy0v
ZydgIiAxPiYyOyBleGl0IDE7IH0KZmkKWAp0cmFwICdybSAtZnIgY29uZnRlc3QqIGNvbmZkZWZz
KiBjb3JlIGNvcmUuKiAqLmNvcmUgJGFjX2NsZWFuX2ZpbGVzOyBleGl0IDEnIDEgMiAxNQpYCiMg
RmlsZSBkZXNjcmlwdG9yIHVzYWdlOgojIDAgc3RhbmRhcmQgaW5wdXQKIyAxIGZpbGUgY3JlYXRp
b24KIyAyIGVycm9ycyBhbmQgd2FybmluZ3MKIyAzIHNvbWUgc3lzdGVtcyBtYXkgb3BlbiBpdCB0
byAvZGV2L3R0eQojIDQgdXNlZCBvbiB0aGUgS3Vib3RhIFRpdGFuCiMgNiBjaGVja2luZyBmb3Iu
Li4gbWVzc2FnZXMgYW5kIHJlc3VsdHMKIyA1IGNvbXBpbGVyIG1lc3NhZ2VzIHNhdmVkIGluIGNv
bmZpZy5sb2cKaWYgdGVzdCAiJHNpbGVudCIgPSB5ZXM7IHRoZW4KWCAgZXhlYyA2Pi9kZXYvbnVs
bAplbHNlClggIGV4ZWMgNj4mMQpmaQpleGVjIDU+Li9jb25maWcubG9nClgKZWNobyAiXApUaGlz
IGZpbGUgY29udGFpbnMgYW55IG1lc3NhZ2VzIHByb2R1Y2VkIGJ5IGNvbXBpbGVycyB3aGlsZQpy
dW5uaW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBt
aXN0YWtlLgoiIDE+JjUKWAojIFN0cmlwIG91dCAtLW5vLWNyZWF0ZSBhbmQgLS1uby1yZWN1cnNp
b24gc28gdGhleSBkbyBub3QgcGlsZSB1cC4KIyBBbHNvIHF1b3RlIGFueSBhcmdzIGNvbnRhaW5p
bmcgc2hlbGwgbWV0YWNoYXJhY3RlcnMuCmFjX2NvbmZpZ3VyZV9hcmdzPQpmb3IgYWNfYXJnCmRv
ClggIGNhc2UgIiRhY19hcmciIGluClggIC1uby1jcmVhdGUgfCAtLW5vLWNyZWF0ZSB8IC0tbm8t
Y3JlYXQgfCAtLW5vLWNyZWEgfCAtLW5vLWNyZSBcClggIHwgLS1uby1jciB8IC0tbm8tYykgOzsK
WCAgLW5vLXJlY3Vyc2lvbiB8IC0tbm8tcmVjdXJzaW9uIHwgLS1uby1yZWN1cnNpbyB8IC0tbm8t
cmVjdXJzaSBcClggIHwgLS1uby1yZWN1cnMgfCAtLW5vLXJlY3VyIHwgLS1uby1yZWN1IHwgLS1u
by1yZWMgfCAtLW5vLXJlIHwgLS1uby1yKSA7OwpYICAqIiAiKnwqIgkiKnwqW1xbXF1cflwjXCRc
XlwmXCpcKFwpXHtcfVxcXHxcO1w8XD5cP10qKQpYICBhY19jb25maWd1cmVfYXJncz0iJGFjX2Nv
bmZpZ3VyZV9hcmdzICckYWNfYXJnJyIgOzsKWCAgKikgYWNfY29uZmlndXJlX2FyZ3M9IiRhY19j
b25maWd1cmVfYXJncyAkYWNfYXJnIiA7OwpYICBlc2FjCmRvbmUKWAojIE5MUyBudWlzYW5jZXMu
CiMgT25seSBzZXQgdGhlc2UgdG8gQyBpZiBhbHJlYWR5IHNldC4gIFRoZXNlIG11c3Qgbm90IGJl
IHNldCB1bmNvbmRpdGlvbmFsbHkKIyBiZWNhdXNlIG5vdCBhbGwgc3lzdGVtcyB1bmRlcnN0YW5k
IGUuZy4gTEFORz1DIChub3RhYmx5IFNDTykuCiMgRml4aW5nIExDX01FU1NBR0VTIHByZXZlbnRz
IFNvbGFyaXMgc2ggZnJvbSB0cmFuc2xhdGluZyB2YXIgdmFsdWVzIGluIGBzZXQnIQojIE5vbi1D
IExDX0NUWVBFIHZhbHVlcyBicmVhayB0aGUgY3R5cGUgY2hlY2suCmlmIHRlc3QgIiR7TEFORytz
ZXR9IiAgID0gc2V0OyB0aGVuIExBTkc9QzsgICBleHBvcnQgTEFORzsgICBmaQppZiB0ZXN0ICIk
e0xDX0FMTCtzZXR9IiA9IHNldDsgdGhlbiBMQ19BTEw9QzsgZXhwb3J0IExDX0FMTDsgZmkKaWYg
dGVzdCAiJHtMQ19NRVNTQUdFUytzZXR9IiA9IHNldDsgdGhlbiBMQ19NRVNTQUdFUz1DOyBleHBv
cnQgTENfTUVTU0FHRVM7IGZpCmlmIHRlc3QgIiR7TENfQ1RZUEUrc2V0fSIgICAgPSBzZXQ7IHRo
ZW4gTENfQ1RZUEU9QzsgICAgZXhwb3J0IExDX0NUWVBFOyAgICBmaQpYCiMgY29uZmRlZnMuaCBh
dm9pZHMgT1MgY29tbWFuZCBsaW5lIGxlbmd0aCBsaW1pdHMgdGhhdCBERUZTIGNhbiBleGNlZWQu
CnJtIC1yZiBjb25mdGVzdCogY29uZmRlZnMuaAojIEFJWCBjcHAgbG9zZXMgb24gYW4gZW1wdHkg
ZmlsZSwgc28gbWFrZSBzdXJlIGl0IGNvbnRhaW5zIGF0IGxlYXN0IGEgbmV3bGluZS4KZWNobyA+
IGNvbmZkZWZzLmgKWAojIEEgZmlsZW5hbWUgdW5pcXVlIHRvIHRoaXMgcGFja2FnZSwgcmVsYXRp
dmUgdG8gdGhlIGRpcmVjdG9yeSB0aGF0CiMgY29uZmlndXJlIGlzIGluLCB3aGljaCB3ZSBjYW4g
bG9vayBmb3IgdG8gZmluZCBvdXQgaWYgc3JjZGlyIGlzIGNvcnJlY3QuCmFjX3VuaXF1ZV9maWxl
PWphdmFtaXNjLmV4cApYCiMgRmluZCB0aGUgc291cmNlIGZpbGVzLCBpZiBsb2NhdGlvbiB3YXMg
bm90IHNwZWNpZmllZC4KaWYgdGVzdCAteiAiJHNyY2RpciI7IHRoZW4KWCAgYWNfc3JjZGlyX2Rl
ZmF1bHRlZD15ZXMKWCAgIyBUcnkgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoaXMgc2NyaXB0
LCB0aGVuIGl0cyBwYXJlbnQuClggIGFjX3Byb2c9JDAKWCAgYWNfY29uZmRpcj1gZWNobyAkYWNf
cHJvZ3xzZWQgJ3MlL1teL11bXi9dKiQlJSdgClggIHRlc3QgIngkYWNfY29uZmRpciIgPSAieCRh
Y19wcm9nIiAmJiBhY19jb25mZGlyPS4KWCAgc3JjZGlyPSRhY19jb25mZGlyClggIGlmIHRlc3Qg
ISAtciAkc3JjZGlyLyRhY191bmlxdWVfZmlsZTsgdGhlbgpYICAgIHNyY2Rpcj0uLgpYICBmaQpl
bHNlClggIGFjX3NyY2Rpcl9kZWZhdWx0ZWQ9bm8KZmkKaWYgdGVzdCAhIC1yICRzcmNkaXIvJGFj
X3VuaXF1ZV9maWxlOyB0aGVuClggIGlmIHRlc3QgIiRhY19zcmNkaXJfZGVmYXVsdGVkIiA9IHll
czsgdGhlbgpYICAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogY2FuIG5vdCBmaW5kIHNvdXJj
ZXMgaW4gJGFjX2NvbmZkaXIgb3IgLi4iIDE+JjI7IGV4aXQgMTsgfQpYICBlbHNlClggICAgeyBl
Y2hvICJjb25maWd1cmU6IGVycm9yOiBjYW4gbm90IGZpbmQgc291cmNlcyBpbiAkc3JjZGlyIiAx
PiYyOyBleGl0IDE7IH0KWCAgZmkKZmkKc3JjZGlyPWBlY2hvICIke3NyY2Rpcn0iIHwgc2VkICdz
JVwoW14vXVwpLyokJVwxJSdgClgKIyBQcmVmZXIgZXhwbGljaXRseSBzZWxlY3RlZCBmaWxlIHRv
IGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQgb25lcy4KaWYgdGVzdCAteiAiJHNpdGVmaWxlIjsgdGhl
bgpYICBpZiB0ZXN0IC16ICIkQ09ORklHX1NJVEUiOyB0aGVuClggICAgaWYgdGVzdCAieCRwcmVm
aXgiICE9IHhOT05FOyB0aGVuClggICAgICBDT05GSUdfU0lURT0iJHByZWZpeC9zaGFyZS9jb25m
aWcuc2l0ZSAkcHJlZml4L2V0Yy9jb25maWcuc2l0ZSIKWCAgICBlbHNlClggICAgICBDT05GSUdf
U0lURT0iJGFjX2RlZmF1bHRfcHJlZml4L3NoYXJlL2NvbmZpZy5zaXRlICRhY19kZWZhdWx0X3By
ZWZpeC9ldGMvY29uZmlnLnNpdGUiClggICAgZmkKWCAgZmkKZWxzZQpYICBDT05GSUdfU0lURT0i
JHNpdGVmaWxlIgpmaQpmb3IgYWNfc2l0ZV9maWxlIGluICRDT05GSUdfU0lURTsgZG8KWCAgaWYg
dGVzdCAtciAiJGFjX3NpdGVfZmlsZSI7IHRoZW4KWCAgICBlY2hvICJsb2FkaW5nIHNpdGUgc2Ny
aXB0ICRhY19zaXRlX2ZpbGUiClggICAgLiAiJGFjX3NpdGVfZmlsZSIKWCAgZmkKZG9uZQpYCmlm
IHRlc3QgLXIgIiRjYWNoZV9maWxlIjsgdGhlbgpYICBlY2hvICJsb2FkaW5nIGNhY2hlICRjYWNo
ZV9maWxlIgpYICAuICRjYWNoZV9maWxlCmVsc2UKWCAgZWNobyAiY3JlYXRpbmcgY2FjaGUgJGNh
Y2hlX2ZpbGUiClggID4gJGNhY2hlX2ZpbGUKZmkKWAphY19leHQ9YwojIENGTEFHUyBpcyBub3Qg
aW4gYWNfY3BwIGJlY2F1c2UgLWcsIC1PLCBldGMuIGFyZSBub3QgdmFsaWQgY3BwIG9wdGlvbnMu
CmFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCmFjX2NvbXBpbGU9JyR7Q0MtY2N9IC1jICRDRkxBR1Mg
JENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgMT4mNScKYWNfbGluaz0nJHtDQy1jY30gLW8gY29u
ZnRlc3Qke2FjX2V4ZWV4dH0gJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFj
X2V4dCAkTElCUyAxPiY1Jwpjcm9zc19jb21waWxpbmc9JGFjX2N2X3Byb2dfY2NfY3Jvc3MKWAph
Y19leGVleHQ9CmFjX29iamV4dD1vCmlmIChlY2hvICJ0ZXN0aW5nXGMiOyBlY2hvIDEsMiwzKSB8
IGdyZXAgYyA+L2Rldi9udWxsOyB0aGVuClggICMgU3RhcmRlbnQgVmlzdHJhIFNWUjQgZ3JlcCBs
YWNrcyAtZSwgc2F5cyBnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1LgpYICBpZiAoZWNobyAtbiB0ZXN0
aW5nOyBlY2hvIDEsMiwzKSB8IHNlZCBzLy1uL3huLyB8IGdyZXAgeG4gPi9kZXYvbnVsbDsgdGhl
bgpYICAgIGFjX249IGFjX2M9JwonIGFjX3Q9JwknClggIGVsc2UKWCAgICBhY19uPS1uIGFjX2M9
IGFjX3Q9ClggIGZpCmVsc2UKWCAgYWNfbj0gYWNfYz0nXGMnIGFjX3Q9CmZpClgKWApYCkNDPSR7
Q0MtY2N9ClgKYWNfYXV4X2Rpcj0KZm9yIGFjX2RpciBpbiBgY2QgJHNyY2Rpcjtwd2RgLy4uLy4u
Ly4uICRzcmNkaXIvYGNkICRzcmNkaXI7cHdkYC8uLi8uLi8uLjsgZG8KWCAgaWYgdGVzdCAtZiAk
YWNfZGlyL2luc3RhbGwtc2g7IHRoZW4KWCAgICBhY19hdXhfZGlyPSRhY19kaXIKWCAgICBhY19p
bnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9pbnN0YWxsLXNoIC1jIgpYICAgIGJyZWFrClggIGVsaWYg
dGVzdCAtZiAkYWNfZGlyL2luc3RhbGwuc2g7IHRoZW4KWCAgICBhY19hdXhfZGlyPSRhY19kaXIK
WCAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9pbnN0YWxsLnNoIC1jIgpYICAgIGJyZWFr
ClggIGZpCmRvbmUKaWYgdGVzdCAteiAiJGFjX2F1eF9kaXIiOyB0aGVuClggIHsgZWNobyAiY29u
ZmlndXJlOiBlcnJvcjogY2FuIG5vdCBmaW5kIGluc3RhbGwtc2ggb3IgaW5zdGFsbC5zaCBpbiBg
Y2QgJHNyY2Rpcjtwd2RgLy4uLy4uLy4uICRzcmNkaXIvYGNkICRzcmNkaXI7cHdkYC8uLi8uLi8u
LiIgMT4mMjsgZXhpdCAxOyB9CmZpCmFjX2NvbmZpZ19ndWVzcz0kYWNfYXV4X2Rpci9jb25maWcu
Z3Vlc3MKYWNfY29uZmlnX3N1Yj0kYWNfYXV4X2Rpci9jb25maWcuc3ViCmFjX2NvbmZpZ3VyZT0k
YWNfYXV4X2Rpci9jb25maWd1cmUgIyBUaGlzIHNob3VsZCBiZSBDeWdudXMgY29uZmlndXJlLgpY
ClgKIyBEbyBzb21lIGVycm9yIGNoZWNraW5nIGFuZCBkZWZhdWx0aW5nIGZvciB0aGUgaG9zdCBh
bmQgdGFyZ2V0IHR5cGUuCiMgVGhlIGlucHV0cyBhcmU6CiMgICAgY29uZmlndXJlIC0taG9zdD1I
T1NUIC0tdGFyZ2V0PVRBUkdFVCAtLWJ1aWxkPUJVSUxEIE5PTk9QVAojCiMgVGhlIHJ1bGVzIGFy
ZToKIyAxLiBZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIHNwZWNpZnkgLS1ob3N0LCAtLXRhcmdldCwg
YW5kIG5vbm9wdCBhdCB0aGUKIyAgICBzYW1lIHRpbWUuCiMgMi4gSG9zdCBkZWZhdWx0cyB0byBu
b25vcHQuCiMgMy4gSWYgbm9ub3B0IGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gaG9zdCBkZWZhdWx0
cyB0byB0aGUgY3VycmVudCBob3N0LAojICAgIGFzIGRldGVybWluZWQgYnkgY29uZmlnLmd1ZXNz
LgojIDQuIFRhcmdldCBhbmQgYnVpbGQgZGVmYXVsdCB0byBub25vcHQuCiMgNS4gSWYgbm9ub3B0
IGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gdGFyZ2V0IGFuZCBidWlsZCBkZWZhdWx0IHRvIGhvc3Qu
ClgKIyBUaGUgYWxpYXNlcyBzYXZlIHRoZSBuYW1lcyB0aGUgdXNlciBzdXBwbGllZCwgd2hpbGUg
JGhvc3QgZXRjLgojIHdpbGwgZ2V0IGNhbm9uaWNhbGl6ZWQuCmNhc2UgJGhvc3QtLS0kdGFyZ2V0
LS0tJG5vbm9wdCBpbgpOT05FLS0tKi0tLSogfCAqLS0tTk9ORS0tLSogfCAqLS0tKi0tLU5PTkUp
IDs7CiopIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogY2FuIG9ubHkgY29uZmlndXJlIGZvciBv
bmUgaG9zdCBhbmQgb25lIHRhcmdldCBhdCBhIHRpbWUiIDE+JjI7IGV4aXQgMTsgfSA7Owplc2Fj
ClgKWAojIE1ha2Ugc3VyZSB3ZSBjYW4gcnVuIGNvbmZpZy5zdWIuCmlmICR7Q09ORklHX1NIRUxM
LS9iaW4vc2h9ICRhY19jb25maWdfc3ViIHN1bjQgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKZWxz
ZSB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IGNhbiBub3QgcnVuICRhY19jb25maWdfc3ViIiAx
PiYyOyBleGl0IDE7IH0KZmkKWAplY2hvICRhY19uICJjaGVja2luZyBob3N0IHN5c3RlbSB0eXBl
IiIuLi4gJGFjX2MiIDE+JjYKZWNobyAiY29uZmlndXJlOjU4NjogY2hlY2tpbmcgaG9zdCBzeXN0
ZW0gdHlwZSIgPiY1ClgKaG9zdF9hbGlhcz0kaG9zdApjYXNlICIkaG9zdF9hbGlhcyIgaW4KTk9O
RSkKWCAgY2FzZSAkbm9ub3B0IGluClggIE5PTkUpClggICAgaWYgaG9zdF9hbGlhcz1gJHtDT05G
SUdfU0hFTEwtL2Jpbi9zaH0gJGFjX2NvbmZpZ19ndWVzc2A7IHRoZW4gOgpYICAgIGVsc2UgeyBl
Y2hvICJjb25maWd1cmU6IGVycm9yOiBjYW4gbm90IGd1ZXNzIGhvc3QgdHlwZTsgeW91IG11c3Qg
c3BlY2lmeSBvbmUiIDE+JjI7IGV4aXQgMTsgfQpYICAgIGZpIDs7ClggICopIGhvc3RfYWxpYXM9
JG5vbm9wdCA7OwpYICBlc2FjIDs7CmVzYWMKWApob3N0PWAke0NPTkZJR19TSEVMTC0vYmluL3No
fSAkYWNfY29uZmlnX3N1YiAkaG9zdF9hbGlhc2AKaG9zdF9jcHU9YGVjaG8gJGhvc3QgfCBzZWQg
J3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMS8nYApob3N0X3ZlbmRvcj1gZWNobyAk
aG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wyLydgCmhvc3Rfb3M9
YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYApl
Y2hvICIkYWNfdCIiJGhvc3QiIDE+JjYKWAplY2hvICRhY19uICJjaGVja2luZyB0YXJnZXQgc3lz
dGVtIHR5cGUiIi4uLiAkYWNfYyIgMT4mNgplY2hvICJjb25maWd1cmU6NjA3OiBjaGVja2luZyB0
YXJnZXQgc3lzdGVtIHR5cGUiID4mNQpYCnRhcmdldF9hbGlhcz0kdGFyZ2V0CmNhc2UgIiR0YXJn
ZXRfYWxpYXMiIGluCk5PTkUpClggIGNhc2UgJG5vbm9wdCBpbgpYICBOT05FKSB0YXJnZXRfYWxp
YXM9JGhvc3RfYWxpYXMgOzsKWCAgKikgdGFyZ2V0X2FsaWFzPSRub25vcHQgOzsKWCAgZXNhYyA7
Owplc2FjClgKdGFyZ2V0PWAke0NPTkZJR19TSEVMTC0vYmluL3NofSAkYWNfY29uZmlnX3N1YiAk
dGFyZ2V0X2FsaWFzYAp0YXJnZXRfY3B1PWBlY2hvICR0YXJnZXQgfCBzZWQgJ3MvXlwoW14tXSpc
KS1cKFteLV0qXCktXCguKlwpJC9cMS8nYAp0YXJnZXRfdmVuZG9yPWBlY2hvICR0YXJnZXQgfCBz
ZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMi8nYAp0YXJnZXRfb3M9YGVjaG8g
JHRhcmdldCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wzLydgCmVjaG8g
IiRhY190IiIkdGFyZ2V0IiAxPiY2ClgKZWNobyAkYWNfbiAiY2hlY2tpbmcgYnVpbGQgc3lzdGVt
IHR5cGUiIi4uLiAkYWNfYyIgMT4mNgplY2hvICJjb25maWd1cmU6NjI1OiBjaGVja2luZyBidWls
ZCBzeXN0ZW0gdHlwZSIgPiY1ClgKYnVpbGRfYWxpYXM9JGJ1aWxkCmNhc2UgIiRidWlsZF9hbGlh
cyIgaW4KTk9ORSkKWCAgY2FzZSAkbm9ub3B0IGluClggIE5PTkUpIGJ1aWxkX2FsaWFzPSRob3N0
X2FsaWFzIDs7ClggICopIGJ1aWxkX2FsaWFzPSRub25vcHQgOzsKWCAgZXNhYyA7Owplc2FjClgK
YnVpbGQ9YCR7Q09ORklHX1NIRUxMLS9iaW4vc2h9ICRhY19jb25maWdfc3ViICRidWlsZF9hbGlh
c2AKYnVpbGRfY3B1PWBlY2hvICRidWlsZCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1c
KC4qXCkkL1wxLydgCmJ1aWxkX3ZlbmRvcj1gZWNobyAkYnVpbGQgfCBzZWQgJ3MvXlwoW14tXSpc
KS1cKFteLV0qXCktXCguKlwpJC9cMi8nYApidWlsZF9vcz1gZWNobyAkYnVpbGQgfCBzZWQgJ3Mv
XlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYAplY2hvICIkYWNfdCIiJGJ1aWxkIiAx
PiY2ClgKdGVzdCAiJGhvc3RfYWxpYXMiICE9ICIkdGFyZ2V0X2FsaWFzIiAmJgpYICB0ZXN0ICIk
cHJvZ3JhbV9wcmVmaXgkcHJvZ3JhbV9zdWZmaXgkcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSIgPSBc
ClggICAgTk9ORU5PTkVzLHgseCwgJiYKWCAgcHJvZ3JhbV9wcmVmaXg9JHt0YXJnZXRfYWxpYXN9
LQpYClgKdHJhcCAnJyAxIDIgMTUKY2F0ID4gY29uZmNhY2hlIDw8XEVPRgojIFRoaXMgZmlsZSBp
cyBhIHNoZWxsIHNjcmlwdCB0aGF0IGNhY2hlcyB0aGUgcmVzdWx0cyBvZiBjb25maWd1cmUKIyB0
ZXN0cyBydW4gb24gdGhpcyBzeXN0ZW0gc28gdGhleSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gY29u
ZmlndXJlCiMgc2NyaXB0cyBhbmQgY29uZmlndXJlIHJ1bnMuICBJdCBpcyBub3QgdXNlZnVsIG9u
IG90aGVyIHN5c3RlbXMuCiMgSWYgaXQgY29udGFpbnMgcmVzdWx0cyB5b3UgZG9uJ3Qgd2FudCB0
byBrZWVwLCB5b3UgbWF5IHJlbW92ZSBvciBlZGl0IGl0LgojCiMgQnkgZGVmYXVsdCwgY29uZmln
dXJlIHVzZXMgLi9jb25maWcuY2FjaGUgYXMgdGhlIGNhY2hlIGZpbGUsCiMgY3JlYXRpbmcgaXQg
aWYgaXQgZG9lcyBub3QgZXhpc3QgYWxyZWFkeS4gIFlvdSBjYW4gZ2l2ZSBjb25maWd1cmUKIyB0
aGUgLS1jYWNoZS1maWxlPUZJTEUgb3B0aW9uIHRvIHVzZSBhIGRpZmZlcmVudCBjYWNoZSBmaWxl
OyB0aGF0IGlzCiMgd2hhdCBjb25maWd1cmUgZG9lcyB3aGVuIGl0IGNhbGxzIGNvbmZpZ3VyZSBz
Y3JpcHRzIGluCiMgc3ViZGlyZWN0b3JpZXMsIHNvIHRoZXkgc2hhcmUgdGhlIGNhY2hlLgojIEdp
dmluZyAtLWNhY2hlLWZpbGU9L2Rldi9udWxsIGRpc2FibGVzIGNhY2hpbmcsIGZvciBkZWJ1Z2dp
bmcgY29uZmlndXJlLgojIGNvbmZpZy5zdGF0dXMgb25seSBwYXlzIGF0dGVudGlvbiB0byB0aGUg
Y2FjaGUgZmlsZSBpZiB5b3UgZ2l2ZSBpdCB0aGUKIyAtLXJlY2hlY2sgb3B0aW9uIHRvIHJlcnVu
IGNvbmZpZ3VyZS4KIwpFT0YKIyBUaGUgZm9sbG93aW5nIHdheSBvZiB3cml0aW5nIHRoZSBjYWNo
ZSBtaXNoYW5kbGVzIG5ld2xpbmVzIGluIHZhbHVlcywKIyBidXQgd2Uga25vdyBvZiBubyB3b3Jr
YXJvdW5kIHRoYXQgaXMgc2ltcGxlLCBwb3J0YWJsZSwgYW5kIGVmZmljaWVudC4KIyBTbywgZG9u
J3QgcHV0IG5ld2xpbmVzIGluIGNhY2hlIHZhcmlhYmxlcycgdmFsdWVzLgojIFVsdHJpeCBzaCBz
ZXQgd3JpdGVzIHRvIHN0ZGVyciBhbmQgY2FuJ3QgYmUgcmVkaXJlY3RlZCBkaXJlY3RseSwKIyBh
bmQgc2V0cyB0aGUgaGlnaCBiaXQgaW4gdGhlIGNhY2hlIGZpbGUgdW5sZXNzIHdlIGFzc2lnbiB0
byB0aGUgdmFycy4KKHNldCkgMj4mMSB8ClggIGNhc2UgYChhY19zcGFjZT0nICc7IHNldCB8IGdy
ZXAgYWNfc3BhY2UpIDI+JjFgIGluClggICphY19zcGFjZT1cICopClggICAgIyBgc2V0JyBkb2Vz
IG5vdCBxdW90ZSBjb3JyZWN0bHksIHNvIGFkZCBxdW90ZXMgKGRvdWJsZS1xdW90ZSBzdWJzdGl0
dXRpb24KWCAgICAjIHR1cm5zIFxcXFwgaW50byBcXCwgYW5kIHNlZCB0dXJucyBcXCBpbnRvIFwp
LgpYICAgIHNlZCAtbiBcClggICAgICAtZSAicy8nLydcXFxcJycvZyIgXApYICAgICAgLWUgInMv
XlxcKFthLXpBLVowLTlfXSpfY3ZfW2EtekEtWjAtOV9dKlxcKT1cXCguKlxcKS9cXDE9XCR7XFwx
PSdcXDInfS9wIgpYICAgIDs7ClggICopClggICAgIyBgc2V0JyBxdW90ZXMgY29ycmVjdGx5IGFz
IHJlcXVpcmVkIGJ5IFBPU0lYLCBzbyBkbyBub3QgYWRkIHF1b3Rlcy4KWCAgICBzZWQgLW4gLWUg
J3MvXlwoW2EtekEtWjAtOV9dKl9jdl9bYS16QS1aMC05X10qXCk9XCguKlwpL1wxPSR7XDE9XDJ9
L3AnClggICAgOzsKWCAgZXNhYyA+PiBjb25mY2FjaGUKaWYgY21wIC1zICRjYWNoZV9maWxlIGNv
bmZjYWNoZTsgdGhlbgpYICA6CmVsc2UKWCAgaWYgdGVzdCAtdyAkY2FjaGVfZmlsZTsgdGhlbgpY
ICAgIGVjaG8gInVwZGF0aW5nIGNhY2hlICRjYWNoZV9maWxlIgpYICAgIGNhdCBjb25mY2FjaGUg
PiAkY2FjaGVfZmlsZQpYICBlbHNlClggICAgZWNobyAibm90IHVwZGF0aW5nIHVud3JpdGFibGUg
Y2FjaGUgJGNhY2hlX2ZpbGUiClggIGZpCmZpCnJtIC1mIGNvbmZjYWNoZQpYCnRyYXAgJ3JtIC1m
ciBjb25mdGVzdCogY29uZmRlZnMqIGNvcmUgY29yZS4qICouY29yZSAkYWNfY2xlYW5fZmlsZXM7
IGV4aXQgMScgMSAyIDE1ClgKdGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSRhY19k
ZWZhdWx0X3ByZWZpeAojIExldCBtYWtlIGV4cGFuZCBleGVjX3ByZWZpeC4KdGVzdCAieCRleGVj
X3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtwcmVmaXh9JwpYCiMgQW55IGFzc2ln
bm1lbnQgdG8gVlBBVEggY2F1c2VzIFN1biBtYWtlIHRvIG9ubHkgZXhlY3V0ZQojIHRoZSBmaXJz
dCBzZXQgb2YgZG91YmxlLWNvbG9uIHJ1bGVzLCBzbyByZW1vdmUgaXQgaWYgbm90IG5lZWRlZC4K
IyBJZiB0aGVyZSBpcyBhIGNvbG9uIGluIHRoZSBwYXRoLCB3ZSBuZWVkIHRvIGtlZXAgaXQuCmlm
IHRlc3QgIngkc3JjZGlyIiA9IHguOyB0aGVuClggIGFjX3Zwc3ViPScvXlsgCV0qVlBBVEhbIAld
Kj1bXjpdKiQvZCcKZmkKWAp0cmFwICdybSAtZiAkQ09ORklHX1NUQVRVUyBjb25mdGVzdCo7IGV4
aXQgMScgMSAyIDE1ClgKIyBUcmFuc2Zvcm0gY29uZmRlZnMuaCBpbnRvIERFRlMuCiMgUHJvdGVj
dCBhZ2FpbnN0IHNoZWxsIGV4cGFuc2lvbiB3aGlsZSBleGVjdXRpbmcgTWFrZWZpbGUgcnVsZXMu
CiMgUHJvdGVjdCBhZ2FpbnN0IE1ha2VmaWxlIG1hY3JvIGV4cGFuc2lvbi4KY2F0ID4gY29uZnRl
c3QuZGVmcyA8PFxFT0YKcyUjZGVmaW5lIFwoW0EtWmEtel9dW0EtWmEtejAtOV9dKlwpICpcKC4q
XCklLURcMT1cMiVnCnMlWyAJYH4jJF4mKigpe31cXHw7JyI8Pj9dJVxcJiVnCnMlXFslXFwmJWcK
cyVcXSVcXCYlZwpzJVwkJSQkJWcKRU9GCkRFRlM9YHNlZCAtZiBjb25mdGVzdC5kZWZzIGNvbmZk
ZWZzLmggfCB0ciAnXDAxMicgJyAnYApybSAtZiBjb25mdGVzdC5kZWZzClgKWAojIFdpdGhvdXQg
dGhlICIuLyIsIHNvbWUgc2hlbGxzIGxvb2sgaW4gUEFUSCBmb3IgY29uZmlnLnN0YXR1cy4KOiAk
e0NPTkZJR19TVEFUVVM9Li9jb25maWcuc3RhdHVzfQpYCmVjaG8gY3JlYXRpbmcgJENPTkZJR19T
VEFUVVMKcm0gLWYgJENPTkZJR19TVEFUVVMKY2F0ID4gJENPTkZJR19TVEFUVVMgPDxFT0YKIyEg
L2Jpbi9zaAojIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGNvbmZpZ3VyZS4KIyBSdW4gdGhp
cyBmaWxlIHRvIHJlY3JlYXRlIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCiMgVGhpcyBkaXJl
Y3Rvcnkgd2FzIGNvbmZpZ3VyZWQgYXMgZm9sbG93cywKIyBvbiBob3N0IGAoaG9zdG5hbWUgfHwg
dW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYDoKIwojICQwICRhY19jb25maWd1cmVfYXJn
cwojCiMgQ29tcGlsZXIgb3V0cHV0IHByb2R1Y2VkIGJ5IGNvbmZpZ3VyZSwgdXNlZnVsIGZvciBk
ZWJ1Z2dpbmcKIyBjb25maWd1cmUsIGlzIGluIC4vY29uZmlnLmxvZyBpZiBpdCBleGlzdHMuClgK
YWNfY3NfdXNhZ2U9IlVzYWdlOiAkQ09ORklHX1NUQVRVUyBbLS1yZWNoZWNrXSBbLS12ZXJzaW9u
XSBbLS1oZWxwXSIKZm9yIGFjX29wdGlvbgpkbwpYICBjYXNlICJcJGFjX29wdGlvbiIgaW4KWCAg
LXJlY2hlY2sgfCAtLXJlY2hlY2sgfCAtLXJlY2hlYyB8IC0tcmVjaGUgfCAtLXJlY2ggfCAtLXJl
YyB8IC0tcmUgfCAtLXIpClggICAgZWNobyAicnVubmluZyBcJHtDT05GSUdfU0hFTEwtL2Jpbi9z
aH0gJDAgJGFjX2NvbmZpZ3VyZV9hcmdzIC0tbm8tY3JlYXRlIC0tbm8tcmVjdXJzaW9uIgpYICAg
IGV4ZWMgXCR7Q09ORklHX1NIRUxMLS9iaW4vc2h9ICQwICRhY19jb25maWd1cmVfYXJncyAtLW5v
LWNyZWF0ZSAtLW5vLXJlY3Vyc2lvbiA7OwpYICAtdmVyc2lvbiB8IC0tdmVyc2lvbiB8IC0tdmVy
c2lvIHwgLS12ZXJzaSB8IC0tdmVycyB8IC0tdmVyIHwgLS12ZSB8IC0tdikKWCAgICBlY2hvICIk
Q09ORklHX1NUQVRVUyBnZW5lcmF0ZWQgYnkgYXV0b2NvbmYgdmVyc2lvbiAyLjEzIgpYICAgIGV4
aXQgMCA7OwpYICAtaGVscCB8IC0taGVscCB8IC0taGVsIHwgLS1oZSB8IC0taCkKWCAgICBlY2hv
ICJcJGFjX2NzX3VzYWdlIjsgZXhpdCAwIDs7ClggICopIGVjaG8gIlwkYWNfY3NfdXNhZ2UiOyBl
eGl0IDEgOzsKWCAgZXNhYwpkb25lClgKYWNfZ2l2ZW5fc3JjZGlyPSRzcmNkaXIKWAp0cmFwICdy
bSAtZnIgYGVjaG8gIk1ha2VmaWxlIiB8IHNlZCAicy86W14gXSovL2ciYCBjb25mdGVzdCo7IGV4
aXQgMScgMSAyIDE1CkVPRgpjYXQgPj4gJENPTkZJR19TVEFUVVMgPDxFT0YKWAojIFByb3RlY3Qg
YWdhaW5zdCBiZWluZyBvbiB0aGUgcmlnaHQgc2lkZSBvZiBhIHNlZCBzdWJzdCBpbiBjb25maWcu
c3RhdHVzLgpzZWQgJ3MvJUAvQEAvOyBzL0AlL0BALzsgcy8lZ1wkL0BnLzsgL0BnXCQvcy9bXFxc
XCYlXS9cXFxcJi9nOwpYIHMvQEAvJUAvOyBzL0BAL0AlLzsgcy9AZ1wkLyVnLycgPiBjb25mdGVz
dC5zdWJzIDw8XFxDRU9GCiRhY192cHN1YgokZXh0cmFzdWIKcyVAU0hFTExAJSRTSEVMTCVnCnMl
QENGTEFHU0AlJENGTEFHUyVnCnMlQENQUEZMQUdTQCUkQ1BQRkxBR1MlZwpzJUBDWFhGTEFHU0Al
JENYWEZMQUdTJWcKcyVARkZMQUdTQCUkRkZMQUdTJWcKcyVAREVGU0AlJERFRlMlZwpzJUBMREZM
QUdTQCUkTERGTEFHUyVnCnMlQExJQlNAJSRMSUJTJWcKcyVAZXhlY19wcmVmaXhAJSRleGVjX3By
ZWZpeCVnCnMlQHByZWZpeEAlJHByZWZpeCVnCnMlQHByb2dyYW1fdHJhbnNmb3JtX25hbWVAJSRw
cm9ncmFtX3RyYW5zZm9ybV9uYW1lJWcKcyVAYmluZGlyQCUkYmluZGlyJWcKcyVAc2JpbmRpckAl
JHNiaW5kaXIlZwpzJUBsaWJleGVjZGlyQCUkbGliZXhlY2RpciVnCnMlQGRhdGFkaXJAJSRkYXRh
ZGlyJWcKcyVAc3lzY29uZmRpckAlJHN5c2NvbmZkaXIlZwpzJUBzaGFyZWRzdGF0ZWRpckAlJHNo
YXJlZHN0YXRlZGlyJWcKcyVAbG9jYWxzdGF0ZWRpckAlJGxvY2Fsc3RhdGVkaXIlZwpzJUBsaWJk
aXJAJSRsaWJkaXIlZwpzJUBpbmNsdWRlZGlyQCUkaW5jbHVkZWRpciVnCnMlQG9sZGluY2x1ZGVk
aXJAJSRvbGRpbmNsdWRlZGlyJWcKcyVAaW5mb2RpckAlJGluZm9kaXIlZwpzJUBtYW5kaXJAJSRt
YW5kaXIlZwpzJUBDQ0AlJENDJWcKcyVAaG9zdEAlJGhvc3QlZwpzJUBob3N0X2FsaWFzQCUkaG9z
dF9hbGlhcyVnCnMlQGhvc3RfY3B1QCUkaG9zdF9jcHUlZwpzJUBob3N0X3ZlbmRvckAlJGhvc3Rf
dmVuZG9yJWcKcyVAaG9zdF9vc0AlJGhvc3Rfb3MlZwpzJUB0YXJnZXRAJSR0YXJnZXQlZwpzJUB0
YXJnZXRfYWxpYXNAJSR0YXJnZXRfYWxpYXMlZwpzJUB0YXJnZXRfY3B1QCUkdGFyZ2V0X2NwdSVn
CnMlQHRhcmdldF92ZW5kb3JAJSR0YXJnZXRfdmVuZG9yJWcKcyVAdGFyZ2V0X29zQCUkdGFyZ2V0
X29zJWcKcyVAYnVpbGRAJSRidWlsZCVnCnMlQGJ1aWxkX2FsaWFzQCUkYnVpbGRfYWxpYXMlZwpz
JUBidWlsZF9jcHVAJSRidWlsZF9jcHUlZwpzJUBidWlsZF92ZW5kb3JAJSRidWlsZF92ZW5kb3Il
ZwpzJUBidWlsZF9vc0AlJGJ1aWxkX29zJWcKWApDRU9GCkVPRgpYCmNhdCA+PiAkQ09ORklHX1NU
QVRVUyA8PFxFT0YKWAojIFNwbGl0IHRoZSBzdWJzdGl0dXRpb25zIGludG8gYml0ZS1zaXplZCBw
aWVjZXMgZm9yIHNlZHMgd2l0aAojIHNtYWxsIGNvbW1hbmQgbnVtYmVyIGxpbWl0cywgbGlrZSBv
biBEaWdpdGFsIE9TRi8xIGFuZCBIUC1VWC4KYWNfbWF4X3NlZF9jbWRzPTkwICMgTWF4aW11bSBu
dW1iZXIgb2YgbGluZXMgdG8gcHV0IGluIGEgc2VkIHNjcmlwdC4KYWNfZmlsZT0xICMgTnVtYmVy
IG9mIGN1cnJlbnQgZmlsZS4KYWNfYmVnPTEgIyBGaXJzdCBsaW5lIGZvciBjdXJyZW50IGZpbGUu
CmFjX2VuZD0kYWNfbWF4X3NlZF9jbWRzICMgTGluZSBhZnRlciBsYXN0IGxpbmUgZm9yIGN1cnJl
bnQgZmlsZS4KYWNfbW9yZV9saW5lcz06CmFjX3NlZF9jbWRzPSIiCndoaWxlICRhY19tb3JlX2xp
bmVzOyBkbwpYICBpZiB0ZXN0ICRhY19iZWcgLWd0IDE7IHRoZW4KWCAgICBzZWQgIjEsJHthY19i
ZWd9ZDsgJHthY19lbmR9cSIgY29uZnRlc3Quc3VicyA+IGNvbmZ0ZXN0LnMkYWNfZmlsZQpYICBl
bHNlClggICAgc2VkICIke2FjX2VuZH1xIiBjb25mdGVzdC5zdWJzID4gY29uZnRlc3QucyRhY19m
aWxlClggIGZpClggIGlmIHRlc3QgISAtcyBjb25mdGVzdC5zJGFjX2ZpbGU7IHRoZW4KWCAgICBh
Y19tb3JlX2xpbmVzPWZhbHNlClggICAgcm0gLWYgY29uZnRlc3QucyRhY19maWxlClggIGVsc2UK
WCAgICBpZiB0ZXN0IC16ICIkYWNfc2VkX2NtZHMiOyB0aGVuClggICAgICBhY19zZWRfY21kcz0i
c2VkIC1mIGNvbmZ0ZXN0LnMkYWNfZmlsZSIKWCAgICBlbHNlClggICAgICBhY19zZWRfY21kcz0i
JGFjX3NlZF9jbWRzIHwgc2VkIC1mIGNvbmZ0ZXN0LnMkYWNfZmlsZSIKWCAgICBmaQpYICAgIGFj
X2ZpbGU9YGV4cHIgJGFjX2ZpbGUgKyAxYApYICAgIGFjX2JlZz0kYWNfZW5kClggICAgYWNfZW5k
PWBleHByICRhY19lbmQgKyAkYWNfbWF4X3NlZF9jbWRzYApYICBmaQpkb25lCmlmIHRlc3QgLXog
IiRhY19zZWRfY21kcyI7IHRoZW4KWCAgYWNfc2VkX2NtZHM9Y2F0CmZpCkVPRgpYCmNhdCA+PiAk
Q09ORklHX1NUQVRVUyA8PEVPRgpYCkNPTkZJR19GSUxFUz1cJHtDT05GSUdfRklMRVMtIk1ha2Vm
aWxlIn0KRU9GCmNhdCA+PiAkQ09ORklHX1NUQVRVUyA8PFxFT0YKZm9yIGFjX2ZpbGUgaW4gLi4g
JENPTkZJR19GSUxFUzsgZG8gaWYgdGVzdCAieCRhY19maWxlIiAhPSB4Li47IHRoZW4KWCAgIyBT
dXBwb3J0ICJvdXRmaWxlWzppbmZpbGVbOmluZmlsZS4uLl1dIiwgZGVmYXVsdGluZyBpbmZpbGU9
Im91dGZpbGUuaW4iLgpYICBjYXNlICIkYWNfZmlsZSIgaW4KWCAgKjoqKSBhY19maWxlX2luPWBl
Y2hvICIkYWNfZmlsZSJ8c2VkICdzJVteOl0qOiUlJ2AKWCAgICAgICBhY19maWxlPWBlY2hvICIk
YWNfZmlsZSJ8c2VkICdzJTouKiUlJ2AgOzsKWCAgKikgYWNfZmlsZV9pbj0iJHthY19maWxlfS5p
biIgOzsKWCAgZXNhYwpYClggICMgQWRqdXN0IGEgcmVsYXRpdmUgc3JjZGlyLCB0b3Bfc3JjZGly
LCBhbmQgSU5TVEFMTCBmb3Igc3ViZGlyZWN0b3JpZXMuClgKWCAgIyBSZW1vdmUgbGFzdCBzbGFz
aCBhbmQgYWxsIHRoYXQgZm9sbG93cyBpdC4gIE5vdCBhbGwgc3lzdGVtcyBoYXZlIGRpcm5hbWUu
ClggIGFjX2Rpcj1gZWNobyAkYWNfZmlsZXxzZWQgJ3MlL1teL11bXi9dKiQlJSdgClggIGlmIHRl
c3QgIiRhY19kaXIiICE9ICIkYWNfZmlsZSIgJiYgdGVzdCAiJGFjX2RpciIgIT0gLjsgdGhlbgpY
ICAgICMgVGhlIGZpbGUgaXMgaW4gYSBzdWJkaXJlY3RvcnkuClggICAgdGVzdCAhIC1kICIkYWNf
ZGlyIiAmJiBta2RpciAiJGFjX2RpciIKWCAgICBhY19kaXJfc3VmZml4PSIvYGVjaG8gJGFjX2Rp
cnxzZWQgJ3MlXlwuLyUlJ2AiClggICAgIyBBICIuLi8iIGZvciBlYWNoIGRpcmVjdG9yeSBpbiAk
YWNfZGlyX3N1ZmZpeC4KWCAgICBhY19kb3RzPWBlY2hvICRhY19kaXJfc3VmZml4fHNlZCAncyUv
W14vXSolLi4vJWcnYApYICBlbHNlClggICAgYWNfZGlyX3N1ZmZpeD0gYWNfZG90cz0KWCAgZmkK
WApYICBjYXNlICIkYWNfZ2l2ZW5fc3JjZGlyIiBpbgpYICAuKSAgc3JjZGlyPS4KWCAgICAgIGlm
IHRlc3QgLXogIiRhY19kb3RzIjsgdGhlbiB0b3Bfc3JjZGlyPS4KWCAgICAgIGVsc2UgdG9wX3Ny
Y2Rpcj1gZWNobyAkYWNfZG90c3xzZWQgJ3MlLyQlJSdgOyBmaSA7OwpYICAvKikgc3JjZGlyPSIk
YWNfZ2l2ZW5fc3JjZGlyJGFjX2Rpcl9zdWZmaXgiOyB0b3Bfc3JjZGlyPSIkYWNfZ2l2ZW5fc3Jj
ZGlyIiA7OwpYICAqKSAjIFJlbGF0aXZlIHBhdGguClggICAgc3JjZGlyPSIkYWNfZG90cyRhY19n
aXZlbl9zcmNkaXIkYWNfZGlyX3N1ZmZpeCIKWCAgICB0b3Bfc3JjZGlyPSIkYWNfZG90cyRhY19n
aXZlbl9zcmNkaXIiIDs7ClggIGVzYWMKWApYClggIGVjaG8gY3JlYXRpbmcgIiRhY19maWxlIgpY
ICBybSAtZiAiJGFjX2ZpbGUiClggIGNvbmZpZ3VyZV9pbnB1dD0iR2VuZXJhdGVkIGF1dG9tYXRp
Y2FsbHkgZnJvbSBgZWNobyAkYWNfZmlsZV9pbnxzZWQgJ3MlLiovJSUnYCBieSBjb25maWd1cmUu
IgpYICBjYXNlICIkYWNfZmlsZSIgaW4KWCAgKk1ha2VmaWxlKikgYWNfY29tc3ViPSIxaVxcCiMg
JGNvbmZpZ3VyZV9pbnB1dCIgOzsKWCAgKikgYWNfY29tc3ViPSA7OwpYICBlc2FjClgKWCAgYWNf
ZmlsZV9pbnB1dHM9YGVjaG8gJGFjX2ZpbGVfaW58c2VkIC1lICJzJV4lJGFjX2dpdmVuX3NyY2Rp
ci8lIiAtZSAicyU6JSAkYWNfZ2l2ZW5fc3JjZGlyLyVnImAKWCAgc2VkIC1lICIkYWNfY29tc3Vi
CnMlQGNvbmZpZ3VyZV9pbnB1dEAlJGNvbmZpZ3VyZV9pbnB1dCVnCnMlQHNyY2RpckAlJHNyY2Rp
ciVnCnMlQHRvcF9zcmNkaXJAJSR0b3Bfc3JjZGlyJWcKIiAkYWNfZmlsZV9pbnB1dHMgfCAoZXZh
bCAiJGFjX3NlZF9jbWRzIikgPiAkYWNfZmlsZQpmaTsgZG9uZQpybSAtZiBjb25mdGVzdC5zKgpY
CkVPRgpjYXQgPj4gJENPTkZJR19TVEFUVVMgPDxFT0YKWApFT0YKY2F0ID4+ICRDT05GSUdfU1RB
VFVTIDw8XEVPRgpYClhleGl0IDAKRU9GCmNobW9kICt4ICRDT05GSUdfU1RBVFVTCnJtIC1mciBj
b25mZGVmcyogJGFjX2NsZWFuX2ZpbGVzCnRlc3QgIiRub19jcmVhdGUiID0geWVzIHx8ICR7Q09O
RklHX1NIRUxMLS9iaW4vc2h9ICRDT05GSUdfU1RBVFVTIHx8IGV4aXQgMQpYClNIQVJfRU9GCiAg
JHNoYXJfdG91Y2ggLWFtIDAzMDcxNjI1MTAwICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2NvbmZp
Z3VyZScgJiYKICBjaG1vZCAwNzc1ICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2NvbmZpZ3VyZScg
fHwKICAkZWNobyAncmVzdG9yZSBvZicgJ2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvY29uZmlndXJl
JyAnZmFpbGVkJwogIGlmICggbWQ1c3VtIC0taGVscCAyPiYxIHwgZ3JlcCAnc2FnZTogbWQ1c3Vt
IFxbJyApID4vZGV2L251bGwgMj4mMSBcCiAgJiYgKCBtZDVzdW0gLS12ZXJzaW9uIDI+JjEgfCBn
cmVwIC12ICd0ZXh0dXRpbHMgMS4xMicgKSA+L2Rldi9udWxsOyB0aGVuCiAgICBtZDVzdW0gLWMg
PDwgU0hBUl9FT0YgPi9kZXYvbnVsbCAyPiYxIFwKICAgIHx8ICRlY2hvICdnZGIvdGVzdHN1aXRl
L2dkYi5qYXZhL2NvbmZpZ3VyZTonICdNRDUgY2hlY2sgZmFpbGVkJwo3MWQ5OGI4N2RlNGIzYmZj
ZGFjNmI1M2ZiMzM0MDU2NyAgZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9jb25maWd1cmUKU0hBUl9F
T0YKICBlbHNlCiAgICBzaGFyX2NvdW50PSJgTENfQUxMPSBMQ19DVFlQRT0gTEFORz0gd2MgLWMg
PCAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9jb25maWd1cmUnYCIKICAgIHRlc3QgMzExODYgLWVx
ICIkc2hhcl9jb3VudCIgfHwKICAgICRlY2hvICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2NvbmZp
Z3VyZTonICdvcmlnaW5hbCBzaXplJyAnMzExODYsJyAnY3VycmVudCBzaXplJyAiJHNoYXJfY291
bnQhIgogIGZpCmZpCiMgPT09PT09PT09PT09PSBnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL01ha2Vm
aWxlLmluID09PT09PT09PT09PT09CmlmIHRlc3QgLWYgJ2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEv
TWFrZWZpbGUuaW4nICYmIHRlc3QgIiRmaXJzdF9wYXJhbSIgIT0gLWM7IHRoZW4KICAkZWNobyAn
eCAtJyBTS0lQUElORyAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9NYWtlZmlsZS5pbicgJyhmaWxl
IGFscmVhZHkgZXhpc3RzKScKZWxzZQogICRlY2hvICd4IC0nIGV4dHJhY3RpbmcgJ2dkYi90ZXN0
c3VpdGUvZ2RiLmphdmEvTWFrZWZpbGUuaW4nICcodGV4dCknCiAgc2VkICdzL15YLy8nIDw8ICdT
SEFSX0VPRicgPiAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9NYWtlZmlsZS5pbicgJiYKc3JjZGly
ID0gQHNyY2RpckAKVlBBVEggPSBAc3JjZGlyQApYCmFsbDogClgJQGVjaG8gIk5vdGhpbmcgdG8g
YmUgZG9uZSBmb3IgYWxsLi4uIgpYCiMjIyMgaG9zdCwgdGFyZ2V0LCBhbmQgc2l0ZSBzcGVjaWZp
YyBNYWtlZmlsZSBmcmFncyBjb21lIGluIGhlcmUuClgKWC5TVUZGSVhFUzogLmphdmEgLmNsYXNz
IC5vIC5leGUgLmV4cCAuY2hlY2sKWAojIERvICdtYWtlIGphdmFtaXNjLmNoZWNrJyB0byBydW4g
anVzdCB0aGUgamF2YW1pc2MuZXhwIHRlc3QuClgKWC5leHAuY2hlY2s6ClgJcm9vdG1lPWBwd2Rg
LzsgZXhwb3J0IHJvb3RtZTsgXApYCWNkIC4uIDsgXApYCSQoTUFLRSkganVzdC1jaGVjayBSVU5U
RVNURkxBR1M9IiR7UlVOVEVTVEZMQUdTfSAkKi5leHAiIFwKWAkgIEVYUEVDVD0ke0VYUEVDVH0K
WApjbGVhbiBtb3N0bHljbGVhbjoKWAktcm0gLWYgKi5vICR7T0JKU30gICouY2xhc3MgKi5leGUg
Kn4gY29yZQpYCmRpc3RjbGVhbiBtYWludGFpbmVyLWNsZWFuIHJlYWxjbGVhbjogY2xlYW4KWAkt
cm0gLWYgTWFrZWZpbGUgY29uZmlnLnN0YXR1cyBjb25maWcubG9nClgKTWFrZWZpbGU6ICQoc3Jj
ZGlyKS9NYWtlZmlsZS5pbiAkKHNyY2RpcikvY29uZmlndXJlLmluClgJJChTSEVMTCkgLi9jb25m
aWcuc3RhdHVzIC0tcmVjaGVjawpTSEFSX0VPRgogICRzaGFyX3RvdWNoIC1hbSAwMzA3MTYxNTEw
MCAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9NYWtlZmlsZS5pbicgJiYKICBjaG1vZCAwNjY0ICdn
ZGIvdGVzdHN1aXRlL2dkYi5qYXZhL01ha2VmaWxlLmluJyB8fAogICRlY2hvICdyZXN0b3JlIG9m
JyAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9NYWtlZmlsZS5pbicgJ2ZhaWxlZCcKICBpZiAoIG1k
NXN1bSAtLWhlbHAgMj4mMSB8IGdyZXAgJ3NhZ2U6IG1kNXN1bSBcWycgKSA+L2Rldi9udWxsIDI+
JjEgXAogICYmICggbWQ1c3VtIC0tdmVyc2lvbiAyPiYxIHwgZ3JlcCAtdiAndGV4dHV0aWxzIDEu
MTInICkgPi9kZXYvbnVsbDsgdGhlbgogICAgbWQ1c3VtIC1jIDw8IFNIQVJfRU9GID4vZGV2L251
bGwgMj4mMSBcCiAgICB8fCAkZWNobyAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9NYWtlZmlsZS5p
bjonICdNRDUgY2hlY2sgZmFpbGVkJwo2OTAzY2FiYjFiZmQzNjgwNGZlZDc1YTk5YjBiZTVjYyAg
Z2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9NYWtlZmlsZS5pbgpTSEFSX0VPRgogIGVsc2UKICAgIHNo
YXJfY291bnQ9ImBMQ19BTEw9IExDX0NUWVBFPSBMQU5HPSB3YyAtYyA8ICdnZGIvdGVzdHN1aXRl
L2dkYi5qYXZhL01ha2VmaWxlLmluJ2AiCiAgICB0ZXN0IDYzNSAtZXEgIiRzaGFyX2NvdW50IiB8
fAogICAgJGVjaG8gJ2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvTWFrZWZpbGUuaW46JyAnb3JpZ2lu
YWwgc2l6ZScgJzYzNSwnICdjdXJyZW50IHNpemUnICIkc2hhcl9jb3VudCEiCiAgZmkKZmkKIyA9
PT09PT09PT09PT09IGdkYi90ZXN0c3VpdGUvZ2RiLmphdmEvY29uZmlndXJlLmluID09PT09PT09
PT09PT09CmlmIHRlc3QgLWYgJ2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvY29uZmlndXJlLmluJyAm
JiB0ZXN0ICIkZmlyc3RfcGFyYW0iICE9IC1jOyB0aGVuCiAgJGVjaG8gJ3ggLScgU0tJUFBJTkcg
J2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvY29uZmlndXJlLmluJyAnKGZpbGUgYWxyZWFkeSBleGlz
dHMpJwplbHNlCiAgJGVjaG8gJ3ggLScgZXh0cmFjdGluZyAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2
YS9jb25maWd1cmUuaW4nICcodGV4dCknCiAgc2VkICdzL15YLy8nIDw8ICdTSEFSX0VPRicgPiAn
Z2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9jb25maWd1cmUuaW4nICYmCmRubCBQcm9jZXNzIHRoaXMg
ZmlsZSBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3JpcHQuClgK
QUNfUFJFUkVRKDIuNSkKQUNfSU5JVChqYXZhbWlzYy5leHApClgKQ0M9JHtDQy1jY30KQUNfU1VC
U1QoQ0MpCkFDX0NPTkZJR19BVVhfRElSKGBjZCAkc3JjZGlyO3B3ZGAvLi4vLi4vLi4pCkFDX0NB
Tk9OSUNBTF9TWVNURU0KWApBQ19PVVRQVVQoTWFrZWZpbGUpClNIQVJfRU9GCiAgJHNoYXJfdG91
Y2ggLWFtIDAzMDcxNjI0MTAwICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2NvbmZpZ3VyZS5pbicg
JiYKICBjaG1vZCAwNjY0ICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2NvbmZpZ3VyZS5pbicgfHwK
ICAkZWNobyAncmVzdG9yZSBvZicgJ2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvY29uZmlndXJlLmlu
JyAnZmFpbGVkJwogIGlmICggbWQ1c3VtIC0taGVscCAyPiYxIHwgZ3JlcCAnc2FnZTogbWQ1c3Vt
IFxbJyApID4vZGV2L251bGwgMj4mMSBcCiAgJiYgKCBtZDVzdW0gLS12ZXJzaW9uIDI+JjEgfCBn
cmVwIC12ICd0ZXh0dXRpbHMgMS4xMicgKSA+L2Rldi9udWxsOyB0aGVuCiAgICBtZDVzdW0gLWMg
PDwgU0hBUl9FT0YgPi9kZXYvbnVsbCAyPiYxIFwKICAgIHx8ICRlY2hvICdnZGIvdGVzdHN1aXRl
L2dkYi5qYXZhL2NvbmZpZ3VyZS5pbjonICdNRDUgY2hlY2sgZmFpbGVkJwozMzc4OTdhMDFjZDdl
ZTNhYjVlM2QxNzQxZjE3MjM4NyAgZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9jb25maWd1cmUuaW4K
U0hBUl9FT0YKICBlbHNlCiAgICBzaGFyX2NvdW50PSJgTENfQUxMPSBMQ19DVFlQRT0gTEFORz0g
d2MgLWMgPCAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9jb25maWd1cmUuaW4nYCIKICAgIHRlc3Qg
MjIyIC1lcSAiJHNoYXJfY291bnQiIHx8CiAgICAkZWNobyAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2
YS9jb25maWd1cmUuaW46JyAnb3JpZ2luYWwgc2l6ZScgJzIyMiwnICdjdXJyZW50IHNpemUnICIk
c2hhcl9jb3VudCEiCiAgZmkKZmkKIyA9PT09PT09PT09PT09IGdkYi90ZXN0c3VpdGUvZ2RiLmph
dmEvam1pc2MuZXhwID09PT09PT09PT09PT09CmlmIHRlc3QgLWYgJ2dkYi90ZXN0c3VpdGUvZ2Ri
LmphdmEvam1pc2MuZXhwJyAmJiB0ZXN0ICIkZmlyc3RfcGFyYW0iICE9IC1jOyB0aGVuCiAgJGVj
aG8gJ3ggLScgU0tJUFBJTkcgJ2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvam1pc2MuZXhwJyAnKGZp
bGUgYWxyZWFkeSBleGlzdHMpJwplbHNlCiAgJGVjaG8gJ3ggLScgZXh0cmFjdGluZyAnZ2RiL3Rl
c3RzdWl0ZS9nZGIuamF2YS9qbWlzYy5leHAnICcodGV4dCknCiAgc2VkICdzL15YLy8nIDw8ICdT
SEFSX0VPRicgPiAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbWlzYy5leHAnICYmCiMgQ29weXJp
Z2h0IChDKSAyMDAwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpYCiMgVGhpcyBwcm9n
cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp
ZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KIyAKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIAojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlz
IHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9u
LCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMw
NywgVVNBLiAgClgKIyBQbGVhc2UgZW1haWwgYW55IGJ1Z3MsIGNvbW1lbnRzLCBhbmQvb3IgYWRk
aXRpb25zIHRvIHRoaXMgZmlsZSB0bzoKIyBidWctZ2RiQHByZXAuYWkubWl0LmVkdQpYCiMgVGhp
cyBmaWxlIHdhcyB3cml0dGVuIGJ5IEFudGhvbnkgR3JlZW4uIChncmVlbkByZWRoYXQuY29tKQoj
ClgKaWYgJHRyYWNlbGV2ZWwgdGhlbiB7ClgJc3RyYWNlICR0cmFjZWxldmVsCn0KWApsb2FkX2xp
YiAiamF2YS5leHAiClgKc2V0IHRlc3RmaWxlICJqbWlzYyIKc2V0IHNyY2ZpbGUgJHtzcmNkaXJ9
LyRzdWJkaXIvJHt0ZXN0ZmlsZX0uamF2YQpzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9
LyR7dGVzdGZpbGV9CmlmICB7IFtjb21waWxlX2phdmFfZnJvbV9zb3VyY2UgJHtzcmNmaWxlfSAk
e2JpbmZpbGV9ICItZyJdICE9ICIiIH0gewpYICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxl
ICR7c3JjZmlsZX0iClggICAgcmV0dXJuIC0xCn0KWAojIFNldCB0aGUgY3VycmVudCBsYW5ndWFn
ZSB0byBqYXZhLiAgVGhpcyBjb3VudHMgYXMgYSB0ZXN0LiAgSWYgaXQKIyBmYWlscywgdGhlbiB3
ZSBza2lwIHRoZSBvdGhlciB0ZXN0cy4KWApwcm9jIHNldF9sYW5nX2phdmEge30gewpYICAgIGds
b2JhbCBnZGJfcHJvbXB0ClggICAgZ2xvYmFsIGJpbmZpbGUgb2JqZGlyIHN1YmRpcgpYClggICAg
dmVyYm9zZSAibG9hZGluZyBmaWxlICckYmluZmlsZSciClggICAgZ2RiX2xvYWQgJGJpbmZpbGUK
WApYICAgIHNlbmRfZ2RiICJzZXQgbGFuZ3VhZ2UgamF2YVxuIgpYICAgIGdkYl9leHBlY3QgewpY
CS1yZSAiLiokZ2RiX3Byb21wdCAkIiB7fQpYCXRpbWVvdXQgeyBmYWlsICJzZXQgbGFuZ3VhZ2Ug
amF2YSAodGltZW91dCkiIDsgcmV0dXJuIDAgfQpYICAgIH0KWApYICAgIHJldHVybiBbZ2RiX3Rl
c3QgInNob3cgbGFuZ3VhZ2UiICIuKiBzb3VyY2UgbGFuZ3VhZ2UgaXMgXCJqYXZhXCIuKiIgXApY
CSJzZXQgbGFuZ3VhZ2UgdG8gXCJqYXZhXCIiXQp9ClgKc2V0IHBybXNfaWQgMApzZXQgYnVnX2lk
IDAKWAojIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIuClgKZ2RiX2V4aXQKZ2RiX3N0YXJ0CmdkYl9y
ZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgpYCmdkYl90ZXN0ICJzZXQgcHJpbnQgc2V2
ZW5iaXQtc3RyaW5ncyIgIi4qIgpYCmlmICFbc2V0X2xhbmdfamF2YV0gdGhlbiB7ClggICAgcnVu
dG8gJHt0ZXN0ZmlsZX0ubWFpbgpYClggICAgc2VuZF9nZGIgInB0eXBlIGptaXNjXG4iICAgClgg
ICAgZ2RiX2V4cGVjdCB7ICAgClgJLXJlICJ0eXBlID0gY2xhc3Mgam1pc2MgIGV4dGVuZHMgamF2
YS5sYW5nLk9iamVjdCBce1xbXHJcblwgXHRdK3ZvaWQgbWFpblxcKGphdmFcLmxhbmdcLlN0cmlu
Z1xcXFtdXFwpO1xbXHJcblwgXHRdK3ZvaWQgPGluaXQ+XFwodm9pZFxcKTtcW1xyXG5cIFx0XStc
fVxbXHJcblwgXHRdKyRnZGJfcHJvbXB0ICQiICAgICAgICAgICAgICAgeyBwYXNzICJwdHlwZSBq
bWlzYyIgfQpYCS1yZSAiLiokZ2RiX3Byb21wdCAkIiAgICAgICAgICAgICB7IGZhaWwgInB0eXBl
IGptaXNjIiB9ClgJdGltZW91dCB7IGZhaWwgInB0eXBlIGptaXNjICh0aW1lb3V0KSIgOyByZXR1
cm4gfQpYICAgIH0KWApYICAgIHNlbmRfZ2RiICJwIGFyZ3NcbiIKWCAgICBnZGJfZXhwZWN0IHsg
ICAKWAktcmUgIlxcXCQxID0gamF2YVwubGFuZ1wuU3RyaW5nXFxcW11AXFthLWYwLTldK1xbXHJc
blwgXHRdKyRnZGJfcHJvbXB0ICQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsgcGFzcyAicCBhcmdzIiB9ClgJLXJlICIuKiRnZGJfcHJvbXB0ICQiICAgICAgICAgICAg
IHsgZmFpbCAicCBhcmdzIiB9ClgJdGltZW91dCB7IGZhaWwgInAgYXJncyAodGltZW91dCkiIDsg
cmV0dXJuIH0KWCAgICB9ClgKWCAgICBzZW5kX2dkYiAicCAqYXJnc1xuIgpYICAgIGdkYl9leHBl
Y3QgeyAgIApYCS1yZSAiXFxcJDIgPSBce2xlbmd0aDogMFx9XFtcclxuXCBcdF0rJGdkYl9wcm9t
cHQgJCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeyBwYXNzICJwICphcmdzIiB9ClgJLXJlICIuKiRnZGJfcHJvbXB0ICQiICAgICAg
ICAgICAgIHsgZmFpbCAicCAqYXJncyIgfQpYCXRpbWVvdXQgeyBmYWlsICJwICphcmdzICh0aW1l
b3V0KSIgOyByZXR1cm4gfQpYICAgIH0KfQpTSEFSX0VPRgogICRzaGFyX3RvdWNoIC1hbSAwMzA4
MDE1MzEwMCAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbWlzYy5leHAnICYmCiAgY2htb2QgMDY2
NCAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbWlzYy5leHAnIHx8CiAgJGVjaG8gJ3Jlc3RvcmUg
b2YnICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2ptaXNjLmV4cCcgJ2ZhaWxlZCcKICBpZiAoIG1k
NXN1bSAtLWhlbHAgMj4mMSB8IGdyZXAgJ3NhZ2U6IG1kNXN1bSBcWycgKSA+L2Rldi9udWxsIDI+
JjEgXAogICYmICggbWQ1c3VtIC0tdmVyc2lvbiAyPiYxIHwgZ3JlcCAtdiAndGV4dHV0aWxzIDEu
MTInICkgPi9kZXYvbnVsbDsgdGhlbgogICAgbWQ1c3VtIC1jIDw8IFNIQVJfRU9GID4vZGV2L251
bGwgMj4mMSBcCiAgICB8fCAkZWNobyAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbWlzYy5leHA6
JyAnTUQ1IGNoZWNrIGZhaWxlZCcKMjdhN2E2MzRkZjM1ZWNmMTNmYTYxNjFmYjFiMDc2YTQgIGdk
Yi90ZXN0c3VpdGUvZ2RiLmphdmEvam1pc2MuZXhwClNIQVJfRU9GCiAgZWxzZQogICAgc2hhcl9j
b3VudD0iYExDX0FMTD0gTENfQ1RZUEU9IExBTkc9IHdjIC1jIDwgJ2dkYi90ZXN0c3VpdGUvZ2Ri
LmphdmEvam1pc2MuZXhwJ2AiCiAgICB0ZXN0IDI4ODkgLWVxICIkc2hhcl9jb3VudCIgfHwKICAg
ICRlY2hvICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2ptaXNjLmV4cDonICdvcmlnaW5hbCBzaXpl
JyAnMjg4OSwnICdjdXJyZW50IHNpemUnICIkc2hhcl9jb3VudCEiCiAgZmkKZmkKIyA9PT09PT09
PT09PT09IGdkYi90ZXN0c3VpdGUvZ2RiLmphdmEvam1pc2MuamF2YSA9PT09PT09PT09PT09PQpp
ZiB0ZXN0IC1mICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2ptaXNjLmphdmEnICYmIHRlc3QgIiRm
aXJzdF9wYXJhbSIgIT0gLWM7IHRoZW4KICAkZWNobyAneCAtJyBTS0lQUElORyAnZ2RiL3Rlc3Rz
dWl0ZS9nZGIuamF2YS9qbWlzYy5qYXZhJyAnKGZpbGUgYWxyZWFkeSBleGlzdHMpJwplbHNlCiAg
JGVjaG8gJ3ggLScgZXh0cmFjdGluZyAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbWlzYy5qYXZh
JyAnKHRleHQpJwogIHNlZCAncy9eWC8vJyA8PCAnU0hBUl9FT0YnID4gJ2dkYi90ZXN0c3VpdGUv
Z2RiLmphdmEvam1pc2MuamF2YScgJiYKcHVibGljIGNsYXNzIGptaXNjCnsKWCAgcHVibGljIHN0
YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpClggIHsKWCAgICByZXR1cm47ClggIH0KfQpT
SEFSX0VPRgogICRzaGFyX3RvdWNoIC1hbSAwMzA3MTcxMDEwMCAnZ2RiL3Rlc3RzdWl0ZS9nZGIu
amF2YS9qbWlzYy5qYXZhJyAmJgogIGNobW9kIDA2NjQgJ2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEv
am1pc2MuamF2YScgfHwKICAkZWNobyAncmVzdG9yZSBvZicgJ2dkYi90ZXN0c3VpdGUvZ2RiLmph
dmEvam1pc2MuamF2YScgJ2ZhaWxlZCcKICBpZiAoIG1kNXN1bSAtLWhlbHAgMj4mMSB8IGdyZXAg
J3NhZ2U6IG1kNXN1bSBcWycgKSA+L2Rldi9udWxsIDI+JjEgXAogICYmICggbWQ1c3VtIC0tdmVy
c2lvbiAyPiYxIHwgZ3JlcCAtdiAndGV4dHV0aWxzIDEuMTInICkgPi9kZXYvbnVsbDsgdGhlbgog
ICAgbWQ1c3VtIC1jIDw8IFNIQVJfRU9GID4vZGV2L251bGwgMj4mMSBcCiAgICB8fCAkZWNobyAn
Z2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbWlzYy5qYXZhOicgJ01ENSBjaGVjayBmYWlsZWQnCmUz
YTY4MGNmZGU2NjEyOWVkOTYwN2FkN2MyMGZkNmEwICBnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2pt
aXNjLmphdmEKU0hBUl9FT0YKICBlbHNlCiAgICBzaGFyX2NvdW50PSJgTENfQUxMPSBMQ19DVFlQ
RT0gTEFORz0gd2MgLWMgPCAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbWlzYy5qYXZhJ2AiCiAg
ICB0ZXN0IDg1IC1lcSAiJHNoYXJfY291bnQiIHx8CiAgICAkZWNobyAnZ2RiL3Rlc3RzdWl0ZS9n
ZGIuamF2YS9qbWlzYy5qYXZhOicgJ29yaWdpbmFsIHNpemUnICc4NSwnICdjdXJyZW50IHNpemUn
ICIkc2hhcl9jb3VudCEiCiAgZmkKZmkKIyA9PT09PT09PT09PT09IGdkYi90ZXN0c3VpdGUvbGli
L2phdmEuZXhwID09PT09PT09PT09PT09CmlmIHRlc3QgISAtZCAnZ2RiL3Rlc3RzdWl0ZS9saWIn
OyB0aGVuCiAgJGVjaG8gJ3ggLScgJ2NyZWF0aW5nIGRpcmVjdG9yeScgJ2dkYi90ZXN0c3VpdGUv
bGliJwogIG1rZGlyICdnZGIvdGVzdHN1aXRlL2xpYicKZmkKaWYgdGVzdCAtZiAnZ2RiL3Rlc3Rz
dWl0ZS9saWIvamF2YS5leHAnICYmIHRlc3QgIiRmaXJzdF9wYXJhbSIgIT0gLWM7IHRoZW4KICAk
ZWNobyAneCAtJyBTS0lQUElORyAnZ2RiL3Rlc3RzdWl0ZS9saWIvamF2YS5leHAnICcoZmlsZSBh
bHJlYWR5IGV4aXN0cyknCmVsc2UKICAkZWNobyAneCAtJyBleHRyYWN0aW5nICdnZGIvdGVzdHN1
aXRlL2xpYi9qYXZhLmV4cCcgJyh0ZXh0KScKICBzZWQgJ3MvXlgvLycgPDwgJ1NIQVJfRU9GJyA+
ICdnZGIvdGVzdHN1aXRlL2xpYi9qYXZhLmV4cCcgJiYKIyBDb3B5cmlnaHQgKEMpIDE5OTgsIDE5
OTkgUmVkIEhhdCwgSW5jLgpYCmxvYWRfbGliICJsaWJnbG9zcy5leHAiClgKIyBHQ0pfVU5ERVJf
VEVTVCBpcyB0aGUgY29tcGlsZXIgdW5kZXIgdGVzdC4KWApnbG9iYWwgdG1wZGlyClgKaWYgIVtp
bmZvIGV4aXN0cyB0bXBkaXJdIHsKWCAgICBzZXQgdG1wZGlyICIvdG1wIgp9ClgKc2V0IGphdmFf
aW5pdGlhbGl6ZWQgMApYCiMKIyBCdWlsZCB0aGUgc3RhdHVzIHdyYXBwZXIgbGlicmFyeSBhcyBu
ZWVkZWQuCiMKcHJvYyBqYXZhX2luaXQgeyBhcmdzIH0gewpYICAgIGdsb2JhbCB3cmFwcGVyX2Zp
bGU7ClggICAgZ2xvYmFsIHdyYXBfY29tcGlsZV9mbGFnczsKWCAgICBnbG9iYWwgamF2YV9pbml0
aWFsaXplZApYICAgIGdsb2JhbCBHQ0pfVU5ERVJfVEVTVApYICAgIGdsb2JhbCBUT09MX0VYRUNV
VEFCTEUKWCAgICBnbG9iYWwgZW52ClgKWCAgICBpZiB7ICRqYXZhX2luaXRpYWxpemVkID09IDEg
fSB7IHJldHVybjsgfQpYClggICAgaWYgIVtpbmZvIGV4aXN0cyBHQ0pfVU5ERVJfVEVTVF0gewpY
CWlmIFtpbmZvIGV4aXN0cyBUT09MX0VYRUNVVEFCTEVdIHsKWAkgICAgc2V0IEdDSl9VTkRFUl9U
RVNUICRUT09MX0VYRUNVVEFCTEU7ClgJfSBlbHNlIHsKWAkgICAgaWYgW2luZm8gZXhpc3RzIGVu
dihHQ0opXSB7ClgJCXNldCBHQ0pfVU5ERVJfVEVTVCAkZW52KEdDSikKWAkgICAgfSBlbHNlIHsK
WAkJZ2xvYmFsIHRvb2xfcm9vdF9kaXIKWAkJClgJCWlmICFbaXNfcmVtb3RlIGhvc3RdIHsKWAkJ
ICAgIHNldCBmaWxlIFtsb29rZm9yX2ZpbGUgJHRvb2xfcm9vdF9kaXIgZ2NqXTsKWAkJICAgIGlm
IHsgJGZpbGUgPT0gIiIgfSB7ClgJCQlzZXQgZmlsZSBbbG9va2Zvcl9maWxlICR0b29sX3Jvb3Rf
ZGlyIGdjYy9nY2pdOwpYCQkgICAgfQpYCQkgICAgaWYgeyAkZmlsZSAhPSAiIiB9IHsKWAkJCXNl
dCBDQyAiJGZpbGUgLUJbZmlsZSBkaXJuYW1lICRmaWxlXS8gLS1zcGVjcz0kdG9vbF9yb290X2Rp
ci8kdGFyZ2V0X2FsaWFzL2xpYmphdmEvbGliZ2NqLXRlc3Quc3BlYyI7ClgJCSAgICB9IGVsc2Ug
ewpYCQkJc2V0IENDIFt0cmFuc2Zvcm0gZ2NqXTsKWAkJICAgIH0KWAkJfSBlbHNlIHsKWAkJICAg
IHNldCBDQyBbdHJhbnNmb3JtIGdjal0KWAkJfQpYCQlzZXQgR0NKX1VOREVSX1RFU1QgJENDClgJ
ICAgIH0KWAl9ClggICAgfQpYClggICAgc2V0IHdyYXBwZXJfZmlsZSAiIjsKWCAgICBzZXQgd3Jh
cF9jb21waWxlX2ZsYWdzICIiOwpYICAgIGlmIFt0YXJnZXRfaW5mbyBleGlzdHMgbmVlZHNfc3Rh
dHVzX3dyYXBwZXJdIHsKWAlzZXQgcmVzdWx0IFtidWlsZF93cmFwcGVyICJ0ZXN0Z2x1ZS5vIl07
ClgJaWYgeyAkcmVzdWx0ICE9ICIiIH0gewpYCSAgICBzZXQgd3JhcHBlcl9maWxlIFtsaW5kZXgg
JHJlc3VsdCAwXTsKWAkgICAgc2V0IHdyYXBfY29tcGlsZV9mbGFncyBbbGluZGV4ICRyZXN1bHQg
MV07ClgJfSBlbHNlIHsKWAkgICAgd2FybmluZyAiU3RhdHVzIHdyYXBwZXIgZmFpbGVkIHRvIGJ1
aWxkLiIKWAl9ClggICAgfQpYClggICAgc2V0IGphdmFfaW5pdGlhbGl6ZWQgMQp9ClgKIwojIFJ1
biB0aGUgdGVzdCBzcGVjaWZpZWQgYnkgc3JjZmlsZSBhbmQgcmVzdWx0ZmlsZS4gY29tcGlsZV9h
cmdzIGFuZAojIGV4ZWNfYXJncyBhcmUgb3B0aW9ucyB0ZWxsaW5nIHRoaXMgcHJvYyBob3cgdG8g
d29yay4KIwpwcm9jIGNvbXBpbGVfamF2YV9mcm9tX3NvdXJjZSB7IHNyY2ZpbGUgYmluZmlsZSBj
b21waWxlX2FyZ3MgfSB7ClggICAgZ2xvYmFsIEdDSl9VTkRFUl9URVNUClggICAgZ2xvYmFsIHJ1
bnRlc3RzClggICAgZ2xvYmFsIGphdmFfaW5pdGlhbGl6ZWQKWApYICAgIGlmIHsgJGphdmFfaW5p
dGlhbGl6ZWQgIT0gMSB9IHsgamF2YV9pbml0IH0KWApYICAgIHNldCBlcnJuYW1lIFtmaWxlIHJv
b3RuYW1lIFtmaWxlIHRhaWwgJHNyY2ZpbGVdXQpYICAgIGlmIHshIFtydW50ZXN0X2ZpbGVfcCAk
cnVudGVzdHMgJGVycm5hbWVdfSB7ClggICAgICAgIHJldHVybgpYICAgIH0KWApYICAgIHNldCBh
cmdzICJjb21waWxlcj0kR0NKX1VOREVSX1RFU1QiClggICAgbGFwcGVuZCBhcmdzICJhZGRpdGlv
bmFsX2ZsYWdzPS0tbWFpbj1bZmlsZSByb290bmFtZSBbZmlsZSB0YWlsICRzcmNmaWxlXV0iClgg
ICAgaWYgeyAkY29tcGlsZV9hcmdzICE9ICIiIH0gewpYCWxhcHBlbmQgYXJncyAiYWRkaXRpb25h
bF9mbGFncz0kY29tcGlsZV9hcmdzIgpYICAgIH0KWApYICAgIGlmIHsgJGNvbXBpbGVfYXJncyAh
PSAiIiB9IHsKWAlzZXQgZXJybmFtZSAiJGVycm5hbWUgJGNvbXBpbGVfYXJncyIKWCAgICB9ClgK
WCAgICBzZXQgeCBbdGFyZ2V0X2NvbXBpbGUgJHNyY2ZpbGUgJHtiaW5maWxlfSAke2JpbmZpbGV9
ICRhcmdzXQpYICAgIGlmIHsgJHggIT0gIiIgfSB7ClgJdmVyYm9zZSAidGFyZ2V0X2NvbXBpbGUg
ZmFpbGVkOiAkeCIgMgpYCXJldHVybiAiJGVycm5hbWUgY29tcGlsYXRpb24gZnJvbSBzb3VyY2Ui
OwpYICAgIH0KfQpYCiMgTG9jYWwgVmFyaWFibGVzOgojIHRjbC1pbmRlbnQtbGV2ZWw6NAojIEVu
ZDoKU0hBUl9FT0YKICAkc2hhcl90b3VjaCAtYW0gMDMwODAxMzgxMDAgJ2dkYi90ZXN0c3VpdGUv
bGliL2phdmEuZXhwJyAmJgogIGNobW9kIDA2NjQgJ2dkYi90ZXN0c3VpdGUvbGliL2phdmEuZXhw
JyB8fAogICRlY2hvICdyZXN0b3JlIG9mJyAnZ2RiL3Rlc3RzdWl0ZS9saWIvamF2YS5leHAnICdm
YWlsZWQnCiAgaWYgKCBtZDVzdW0gLS1oZWxwIDI+JjEgfCBncmVwICdzYWdlOiBtZDVzdW0gXFsn
ICkgPi9kZXYvbnVsbCAyPiYxIFwKICAmJiAoIG1kNXN1bSAtLXZlcnNpb24gMj4mMSB8IGdyZXAg
LXYgJ3RleHR1dGlscyAxLjEyJyApID4vZGV2L251bGw7IHRoZW4KICAgIG1kNXN1bSAtYyA8PCBT
SEFSX0VPRiA+L2Rldi9udWxsIDI+JjEgXAogICAgfHwgJGVjaG8gJ2dkYi90ZXN0c3VpdGUvbGli
L2phdmEuZXhwOicgJ01ENSBjaGVjayBmYWlsZWQnCjdhOTI1OTc5NDY1ZjFkYmFlZDI2ZTQ3OGQ2
MzY0ZGMyICBnZGIvdGVzdHN1aXRlL2xpYi9qYXZhLmV4cApTSEFSX0VPRgogIGVsc2UKICAgIHNo
YXJfY291bnQ9ImBMQ19BTEw9IExDX0NUWVBFPSBMQU5HPSB3YyAtYyA8ICdnZGIvdGVzdHN1aXRl
L2xpYi9qYXZhLmV4cCdgIgogICAgdGVzdCAyNDUxIC1lcSAiJHNoYXJfY291bnQiIHx8CiAgICAk
ZWNobyAnZ2RiL3Rlc3RzdWl0ZS9saWIvamF2YS5leHA6JyAnb3JpZ2luYWwgc2l6ZScgJzI0NTEs
JyAnY3VycmVudCBzaXplJyAiJHNoYXJfY291bnQhIgogIGZpCmZpCnJtIC1mciBfc2gyMjIzOQpl
eGl0IDAKCg==


                 reply	other threads:[~2000-02-20 22:48 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20000221064800.7152.qmail@sourceware.cygnus.com \
    --to=jsm@cygnus.com \
    --cc=gdb-patches-prs@sourceware.cygnus.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).