Current status for the UDEF-IMMEDIATES contrib

Philipp Marek via Sbcl-devel <[email protected]> Mon, 08 Jun 2026 19:57:08 +0200
Newsgroups gmane.lisp.steel-bank.devel
Message-ID <[email protected]>
--=_efb87a3e39f0a9c9b927eed12be18efe
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset=US-ASCII;
 format=flowed

Hi everybody,

here's the current version of my user-defined immediates
contrib.
As the changes in the SBCL core are really minimal now
I'd like to ask for a review resp. inclusion in upstream SBCL.


Summary:

    This patch series provides a column-oriented structure variant
    that's type-safe at compile- and runtime; such objects
    are addressed via immediates with an 8-bit SBCL tag and
    another 8-bit tag to provide multiple such types.

    This reduces memory usage, GC time, and therefore time required
    for safe-lisp-and-die.

The intended use-case is a in-memory database that allocates
lots (>10M) of small structures of a few different types.

The full documentation is available at [1].



This works fine in a production setup,
tested with up to 12 cores parallel allocation.
RAM usage is much better than plain instances,
also because the "pointers" are now mostly (unsigned-byte 32)
or even just (unsigned-byte 8) where possible.

   Class instances:
   - Path 56M instances, deduplicated as 8M fragments using 210MB
   - SHA256 34M instances
   - Version 530k instances, points to Repo, Arch, Dist instances
   In-memory indizes:
   - Versions pointing to 124M (Path, SHA256) tuples
   - SHA256 pointing to 92M (Version, SHA256) tuples

In 2024 the software couldn't import (fewer) data with a 64GB heap;
now, with UDEFs, the heap doesn't grow above ~16GB
and the uncompressed executable is ~7GB.


The contrib directory contains a Makefile
for running a small benchmark script. With
   # make comparison
only allocation is tested, adding an argument
   # make comparison dumpfile=/tmp/text.heap
writes a heap dump as well.
User/System/Wall clock times and max. RAM usage are printed;
while allocation alone is slower (6.3 vs. 5.3 seconds),
the GC on save-lisp-and-die makes the UDEF version faster
(8 instead of 17 seconds); and heap usage is also only half as much.


Known points that could be fixed/enhanced:
- udef subtypes for TYPE-OF
- defmethod with (EQL x)
- accessor performance
- There's no GC (yet); not needed for my usecases,
   full GC could build a freelist for each tag.
- I add a few transforms "by hand", as the specifiers
   collide with built-in DEFTRANSFORMS.
   Having a separate value to differentiate would be great,
   eg. "optimize" for the built-ins vs. "udef" for these here.


Any feedback is welcome, of course.



Ad 1: 
https://github.com/phmarek/sbcl/blob/udef-direct-expansion/contrib/sb-udef-immediate/README.md



--=_efb87a3e39f0a9c9b927eed12be18efe
Content-Transfer-Encoding: base64
Content-Type: text/x-diff;
 name=0002-SB-UDEF-IMMEDIATE-contrib-and-tests.patch
Content-Disposition: attachment;
 filename=0002-SB-UDEF-IMMEDIATE-contrib-and-tests.patch;
 size=114877

RnJvbSAwYTQ2MTI2NDFjYmFhZjBjNzMwY2UxNjFlNmExMmI3MDc4YTkxOGQ5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwIE1hcmVrIDxwaGlsaXBwQG1hcmVrLnByaXYuYXQ+
CkRhdGU6IFdlZCwgMjIgQXByIDIwMjYgMTk6NTc6NTAgKzAyMDAKU3ViamVjdDogW1BBVENIIDIv
Ml0gU0ItVURFRi1JTU1FRElBVEUgY29udHJpYiBhbmQgdGVzdHMuCgotLS0KIGNvbnRyaWIvTWFr
ZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIGNvbnRyaWIvc2It
dWRlZi1pbW1lZGlhdGUvTWFrZWZpbGUgICAgICAgICAgICB8ICAgNTAgKwogY29udHJpYi9zYi11
ZGVmLWltbWVkaWF0ZS9SRUFETUUubWQgICAgICAgICAgIHwgIDI3NCArKysrCiAuLi4vc2ItdWRl
Zi1pbW1lZGlhdGUvY29sdW1uLXN0cnVjdHVyZS5saXNwICAgfCAxMzA1ICsrKysrKysrKysrKysr
KysrCiAuLi4vZXhhbXBsZS1jb2x1bW4tc3RydWN0dXJlLmxpc3AgICAgICAgICAgICAgfCAgMTA4
ICsrCiBjb250cmliL3NiLXVkZWYtaW1tZWRpYXRlL3BhY2thZ2UubGlzcCAgICAgICAgfCAgIDMz
ICsKIC4uLi9zYi11ZGVmLWltbWVkaWF0ZS9zLWwtYS1kLWNvbXBhcmlzb24ubGlzcCB8ICAxMDQg
KysKIC4uLi9zYi11ZGVmLWltbWVkaWF0ZS9zYi11ZGVmLWltbWVkaWF0ZS5hc2QgICB8ICAgMTkg
KwogY29udHJpYi9zYi11ZGVmLWltbWVkaWF0ZS91ZGVmLWFsbG9jLmxpc3AgICAgIHwgIDIzOCAr
KysKIGNvbnRyaWIvc2ItdWRlZi1pbW1lZGlhdGUvdWRlZi1iYXNlLmxpc3AgICAgICB8ICAxMDUg
KysKIHRlc3RzL3NiLXVkZWYuaW1wdXJlLmxpc3AgICAgICAgICAgICAgICAgICAgICB8ICA0NDMg
KysrKysrCiAxMSBmaWxlcyBjaGFuZ2VkLCAyNjgyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o
LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3NiLXVkZWYtaW1tZWRpYXRlL01ha2VmaWxl
CiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9zYi11ZGVmLWltbWVkaWF0ZS9SRUFETUUubWQK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3NiLXVkZWYtaW1tZWRpYXRlL2NvbHVtbi1zdHJ1
Y3R1cmUubGlzcAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvc2ItdWRlZi1pbW1lZGlhdGUv
ZXhhbXBsZS1jb2x1bW4tc3RydWN0dXJlLmxpc3AKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmli
L3NiLXVkZWYtaW1tZWRpYXRlL3BhY2thZ2UubGlzcAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRy
aWIvc2ItdWRlZi1pbW1lZGlhdGUvcy1sLWEtZC1jb21wYXJpc29uLmxpc3AKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBjb250cmliL3NiLXVkZWYtaW1tZWRpYXRlL3NiLXVkZWYtaW1tZWRpYXRlLmFzZAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvc2ItdWRlZi1pbW1lZGlhdGUvdWRlZi1hbGxvYy5s
aXNwCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9zYi11ZGVmLWltbWVkaWF0ZS91ZGVmLWJh
c2UubGlzcAogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL3NiLXVkZWYuaW1wdXJlLmxpc3AKCmRp
ZmYgLS1naXQgYS9jb250cmliL01ha2VmaWxlIGIvY29udHJpYi9NYWtlZmlsZQppbmRleCAwMGVj
Mzg5YjMuLjhmOTk0NjE4YyAxMDA2NDQKLS0tIGEvY29udHJpYi9NYWtlZmlsZQorKysgYi9jb250
cmliL01ha2VmaWxlCkBAIC0zLDcgKzMsOCBAQCB2cGF0aCAlLmZhc2wgLi4vb2JqL3NiY2wtaG9t
ZS9jb250cmliLwogY29udHJpYnMgPSBzYi1wb3NpeCBzYi1ic2Qtc29ja2V0cyBzYi1pbnRyb3Nw
ZWN0IHNiLWNsdGwyIHNiLWFjbHJlcGwgXAogICAgICBzYi1zcHJvZiBzYi1jYXBzdG9uZSBzYi1t
ZDUgc2ItY2Fwc3RvbmUgc2ItZXhlY3V0YWJsZSBzYi1nbXAgc2ItbXBmciBcCiAgICAgIHNiLXF1
ZXVlIHNiLXJvdGF0ZS1ieXRlIHNiLXJ0IHNiLXNpbXBsZS1zdHJlYW1zIHNiLWNvbmN1cnJlbmN5
IHNiLWNvdmVyIFwKLSAgICAgc2Itc2ltZCBzYi1ncm92ZWwgc2ItcGVyZiBhc2RmCisgICAgIHNi
LXNpbWQgc2ItZ3JvdmVsIHNiLXBlcmYgYXNkZiBzYi11ZGVmLWltbWVkaWF0ZQorCiAKIGFjdGl2
ZV9jb250cmlicyA9ICQoZmlsdGVyLW91dCAkKFNCQ0xfQ09OVFJJQl9CTE9DS0xJU1QpLCQoY29u
dHJpYnMpKQogCkBAIC0yMCw2ICsyMSw3IEBAIHNiLW1wZnIuZmFzbDogc2ItZ21wLmZhc2wKIHNi
LXF1ZXVlLmZhc2w6IHNiLWNvbmN1cnJlbmN5LmZhc2wKIHNiLXNpbXBsZS1zdHJlYW1zLmZhc2w6
IHNiLXBvc2l4LmZhc2wgc2ItYnNkLXNvY2tldHMuZmFzbAogc2ItZ3JvdmVsLmZhc2w6IGFzZGYu
ZmFzbCAjIGZvciBidWlsZGluZyB0aGUgbW9kdWxlLCBub3QgZm9yIG91ciBidWlsZAorc2ItdWRl
Zi1pbW1lZGlhdGUuZmFzbDogc2ItaW50cm9zcGVjdC5mYXNsCiAKICMgTm90ZXM6CiAjIDEuIElu
dm9raW5nICQoTUFLRSkgZm9yIG5lc3RlZCBtYWtlIGVsaW1pbmF0ZXMgYSB3YXJuaW5nIGFib3V0
IGpvYnNlcnZlciBtb2RlLgpkaWZmIC0tZ2l0IGEvY29udHJpYi9zYi11ZGVmLWltbWVkaWF0ZS9N
YWtlZmlsZSBiL2NvbnRyaWIvc2ItdWRlZi1pbW1lZGlhdGUvTWFrZWZpbGUKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi41ZTlhOTUxMmQKLS0tIC9kZXYvbnVsbAorKysgYi9j
b250cmliL3NiLXVkZWYtaW1tZWRpYXRlL01ha2VmaWxlCkBAIC0wLDAgKzEsNTAgQEAKK1NCQ0xf
VE9QID89ICQocmVhbHBhdGggLi4vLi4pCitTWVNURU09c2ItdWRlZi1pbW1lZGlhdGUKK2luY2x1
ZGUgLi4vYXNkZi1tb2R1bGUubWsKKworCitTSEVMTCA6PSAvdXNyL2Jpbi9iYXNoCitkdW1wZmls
ZSAgOj0gLQorIyBUaGUgMS1sZXZlbCAocmUpYWxsb2NhdGlvbnMgbmVlZCBhIGZhaXIgYml0IG9m
IFJBTQorc2JjbCA6PSAuLi8uLi9ydW4tc2JjbC5zaCAtLWR5bmFtaWMtc3BhY2Utc2l6ZSAzMDAw
Cit0aW1lIDo9IC91c3IvYmluL3RpbWUgLS1mb3JtYXQgJyAgICAgRWxhcHNlZDogICAlRSAgIFVz
ZXI6ICVVICAgU3lzdGVtOiAlUyAgIG1heCBSQU06JU0nCitwcmludF9zaXplIDo9IFsgIngkKGR1
bXBmaWxlKSIgPSAieC0iIF0gfHwgKCBzdGF0IC0tcHJpbnRmPSIgICAgIFNpemU6ICUxMnMiICQo
ZHVtcGZpbGUpIDsgJChkdW1wZmlsZSkgLS1uby11c2VyaW5pdCAtLW5vLXN5c2luaXQgLS1ldmFs
ICcoc2l6ZXMpJyAtLWV2YWwgJyhzYi1leHQ6cXVpdCknICkKKworaWZkZWYgVgorCVEgOj0gCitl
bHNlCisJUSA6PSBACitlbmRpZgorCisKK2NvbXBhcmlzb246CisJJChRKSQoTUFLRSkgYzEgYzQg
YzMgYy1ub3RlIGMyCisuUEhPTlk6IGMtbm90ZQorYy1ub3RlOgorCUBlY2hvICIiIAorCUBlY2hv
ICJUaGUgdmFsdWVzIGFib3ZlIGFyZSB0aGUgaW50ZXJlc3Rpbmcgb25lcyIKKwlAZWNobyAiIiAK
KworYzE6CisJJChRKWVjaG8gLS0tIERFRlNUUlVDVDoKKwkkKFEpJCh0aW1lKSAkKHNiY2wpIC0t
c2NyaXB0IHMtbC1hLWQtY29tcGFyaXNvbi5saXNwIDEgJChkdW1wZmlsZSkKKwkkKFEpJChwcmlu
dF9zaXplKQorYzI6CisJJChRKWVjaG8gLS0tIERFRi1DT0xVTU4tU1RSVUNUOgorCSQoUSkkKHRp
bWUpICQoc2JjbCkgLS1zY3JpcHQgcy1sLWEtZC1jb21wYXJpc29uLmxpc3AgMiAkKGR1bXBmaWxl
KQorCSQoUSkkKHByaW50X3NpemUpCitjMzoKKwkkKFEpZWNobyAtLS0gREVGLUNPTFVNTi1TVFJV
Q1Qgd2l0aCBsYXJnZSBpbml0aWFsLXNpemU6CisJJChRKSQodGltZSkgJChzYmNsKSAtLXNjcmlw
dCBzLWwtYS1kLWNvbXBhcmlzb24ubGlzcCAzICQoZHVtcGZpbGUpCisJJChRKSQocHJpbnRfc2l6
ZSkKK2M0OgorCSQoUSllY2hvIC0tLSBERUYtQ09MVU1OLVNUUlVDVCB3aXRoIDItbGV2ZWwgYWxs
b2NhdGlvbjoKKwkkKFEpJCh0aW1lKSAkKHNiY2wpIC0tc2NyaXB0IHMtbC1hLWQtY29tcGFyaXNv
bi5saXNwIDQgJChkdW1wZmlsZSkKKwkkKFEpJChwcmludF9zaXplKQorCityZWNvbXBpbGU6CisJ
KCBjZCAuLi8uLiAmJiBiYXNoIG1ha2UtdGFyZ2V0LWNvbnRyaWIuc2ggKQorCit0ZXN0OgorCWNk
ICQoU0JDTF9UT1ApL3Rlc3RzICYmIGJhc2ggcnVuLXRlc3RzLnNoIHNiLXVkZWYuaW1wdXJlLmxp
c3AKKwkkKE1BS0UpIGNvbXBhcmlzb24KZGlmZiAtLWdpdCBhL2NvbnRyaWIvc2ItdWRlZi1pbW1l
ZGlhdGUvUkVBRE1FLm1kIGIvY29udHJpYi9zYi11ZGVmLWltbWVkaWF0ZS9SRUFETUUubWQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5lYzUzYTJlZTYKLS0tIC9kZXYvbnVs
bAorKysgYi9jb250cmliL3NiLXVkZWYtaW1tZWRpYXRlL1JFQURNRS5tZApAQCAtMCwwICsxLDI3
NCBAQAorIyBVc2VyLURlZmluZWQgSW1tZWRpYXRlcworCitBIG1hY2hpbmUgd29yZCBjb25zaXN0
cyBvZiBlZy4gNjQgYml0czoKKworYGBgCisgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgfE1TQiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFNCfAorICArLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
CisgIDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAKK2BgYAorCitTQkNMIHVzZXMgYSBmZXcgYml0cyB0byB0YWcgdmFsdWVzIChG
SVhOVU0sIHBvaW50ZXJzLCBDT05TZXMsIGV0Yy4pOworb25lIG9mIHRoZSB0YWdzIGlzIHJlc2Vy
dmVkIGFzIGBVREVGLUlNTUVESUFURS1XSURFVEFHYDoKKworYGBgCisgICstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLSsKKyAgfE1T
QiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
dGFnfAorICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSstLS0tLS0rCisgIDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA4fDcgICAgIDAKK2BgYAorCitPbiB0b3Agb2YgdGhhdCwgdGhpcyBj
b250cmliIHVzZXMgZnVydGhlciA4IGJpdHMgKGArVURFRi1UQUctQklUUytgKQordG8gcHJvdmlk
ZSBzZXZlcmFsIGRpZmZlcmVudCB0eXBlcyBvZiB1c2VyLWRlZmluZWQgaW50ZWdlcnMuCisKK2Bg
YAorICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t
LS0tLSstLS0tLS0rCisgIHxNU0IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgdWRlZiAgfCAgIHRhZ3wKKyAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tKworICA2NCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTZ8MTUgICAgOHw3ICAgICAwCitgYGAKKworVGhh
dCBtZWFucyB0aGF0LCBhc2lkZSBmcm9tIHRoZSBzdGFuZGFyZCBDb21tb24gTGlzcCBudW1lcmlj
IHRvd2VyLAordXAgdG8gMjU2IGRpZmZlcmVudCBpbnRlZ2VyIHR5cGVzIHdpdGggKG9uIDY0Yml0
IGFyY2hpdGVjdHVyZXMpIDQ4IGJpdHMgZWFjaAorY2FuIGJlIGRlZmluZWQsIGFuZCBhcmUgaGVs
ZCBhcyBkaXN0aW5jdCB0eXBlcyBldmVuIGR1cmluZyBydW50aW1lLgorCitUaGlzIG1ha2VzIFVE
RUYncyAiYmV0dGVyIiB0aGFuIHJldXNpbmcgYE5hTmAgdmFsdWVzLAorcmVzZXJ2aW5nIGBGSVhO
VU1gcyByYW5nZXMsIGFuZCBvdGhlciBzb2x1dGlvbnMuCisKKworIyBVc2UtQ2FzZXMKKworIyMg
U2VwYXJhdGUgTnVtZXJpYyBUeXBlcworCitPbmUgdXNlIGNhc2UgaXMgc2ltcGx5IHByb3ZpZGlu
ZyBub24tc3RhbmRhcmQgbnVtZXJpYyB0eXBlcyAtCitlZy4gYSBwcm9iYWJpbGl0eSB2YWx1ZS4K
KworCitgYGBsaXNwCisoZGVmY29uc3RhbnQgK3Byb2ItYml0cysgMTYpCisKKyhzYi11ZGVmLWlt
bWVkaWF0ZTpkZWYtdWRlZi1pbW1lZGlhdGUgcHJvYmFiaWxpdHkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6bWF4LWJpdHMgK3Byb2ItYml0cysKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6Y29uc3RydWN0b3IgbWFrZS1wcm9iYWJpbGl0eSUKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6cmVhZGVyIGdldC1wcm9iYWJpbGl0eS12YWx1ZSUp
CisKKyhkZWZ1biBtYWtlLXByb2JhYmlsaXR5ICh4KQorICAiQ29udmVydHMgYSB2YWx1ZSAwLjAg
dG8gMS4wIHRvIGEgcHJvYmFiaWxpdHkiCisgIChkZWNsYXJlICh0eXBlIChmbG9hdCAwLjAgMS4w
KSB4KSkKKyAgKG1ha2UtcHJvYmFiaWxpdHklICgqIHgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICgxLSAoYXNoIDEgK3Byb2ItYml0cyspKSkpKQorCisoZGVmdW4gZ2V0LXByb2JhYmlsaXR5LXZh
bHVlICh4KQorICAiUmV0dXJucyB0aGUgMC4wIHRvIDEuMCB2YWx1ZSBvZiBhIHByb2JhYmlsaXR5
IgorICAoLyAoZ2V0LXByb2JhYmlsaXR5LXZhbHVlJSB4KQorICAgICAoYXNoIDEgK3Byb2ItYml0
cyspKSkKK2BgYAorCisKKyMjIEEgQ29sdW1uLUJhc2VkIFN0cnVjdHVyZQorCitBbm90aGVyIG5p
Y2UgdXNlLWNhc2UgaXMgdXNpbmcgZGlzdGluY3QgVURFRnMgYXMgaW5kaWNlcyBpbiAobGFyZ2Up
IGFycmF5czsKK2EgVURFRiB2YWx1ZSBpcyB0aGVuIGFraW4gdG8gYSBwb2ludGVyIHRvIGEgY2xh
c3MgaW5zdGFuY2UsCithcyBpdCBhbGxvd3MgdG8gYWRkcmVzcyBtdWx0aXBsZSAic2xvdHMiIChp
biBtdWx0aXBsZSBhcnJheXMpIC0gCit0aGF0J3Mgd2hhdCB0aGUgYERFRi1DT0xVTU4tU1RSVUNU
YCBtYWNybyBpcyBhYm91dC4KKworVGhlIGJpZyBhZHZhbnRhZ2UgaXMgdGhhdCBhIGZldyBfc3Bl
Y2lhbGl6ZWRfIGFycmF5cyB3aXRoIHRlbiBtaWxsaW9uIHJvd3MKK2FyZSBzbWFsbGVyIGFuZCBt
dWNoIGZhc3RlciBmb3IgR0MgdGhhbiB0ZW4gbWlsbGlvbiBzdHJ1Y3R1cmVzIG9yIENMT1MKK2lu
c3RhbmNlczsgc2VlIGBzLWwtYS1kLWNvbXBhcmlzb24ubGlzcGAuIFwKKyhZb3UgY2FuIHJ1biBp
dCB2aWEgYE1ha2VmaWxlYCBieSBgbWFrZSBjb21wYXJpc29uYCwgdHJ5IHdpdGggYSBwYXJhbWV0
ZXIgbGlrZSAKK2BkdW1wZmlsZT0vdG1wL3VkZWYudGVzdGAgdG8gc2VlIHRoZSBkaWZmZXJlbmNl
IGZvciBgc2F2ZS1saXNwLWFuZC1kaWVgLikKKworTm90ZSB0aGF0IHNhdmluZyBtZW1vcnkgb25s
eSB3b3JrcyBmb3IgYmFzaWMgdHlwZXMgbGlrZSBgKHVuc2lnbmVkLWJ5dGUgOClgOwordXNpbmcg
YSBjb21wb3NpdGUgdHlwZSAobGlrZSBgU1RSSU5HYCkgZm9yIGEgc2xvdCBtZWFucwordGhhdCB0
aGUgc2xvdCBpdHNlbGYgb25seSBzdG9yZXMgYSBwb2ludGVyIHRvIHRoZSBhY3R1YWwgYFNUUklO
R2AsCit3aGljaCBnZXRzIHlvdSBtaWxsaW9ucyBvZiBgU1RSSU5HYCBpbnN0YW5jZXMgYWdhaW4u
IFwKK1RvIGF2b2lkIHRoYXQsIHVzaW5nIGNvbnN0YW50LXNpemVkIHZlY3RvcnMgYXMgc2xvdCB0
eXBlIChlZy4gYDp0eXBlIChhcnJheSAKK2NoYXJhY3RlciAoOCkpYCB3aWxsIGFsbG9jYXRlIGNv
cnJlc3BvbmRpbmdseSBsYXJnZXIgc3RvcmFnZSB2ZWN0b3JzIHRoYXQKK3VzZSB0aGUgc2FtZSBp
bmRleCBudW1iZXIgZm9yIGFkZHJlc3Npbmc7IHNlZSBgZXhhbXBsZS1jb2x1bW4tc3RydWN0dXJl
Lmxpc3BgIAorZm9yIGV4YW1wbGVzLgorCitGb3IgZHluYW1pY2FsbHktc2l6ZWQgZGF0YSwgc2Vl
IF9CdWZmZXIgaW5kZXhpbmdfIGJlbG93LgorCisKK2BgYGxpc3AKKyhkZWYtY29sdW1uLXN0cnVj
dCAocGVyc29uCisgICAgICAgICAgICAgICAgICAgICg6bWF4LWJpdHMgMTYpCisgICAgICAgICAg
ICAgICAgICAgICg6Y29uc3RydWN0b3IgbWFrZS1wZXJzb24pCisgICAgICAgICAgICAgICAgICAg
ICg6aW5pdGlhbC1zaXplIDUwMDAwKSkKKyAgKG5hbWUgICBuaWwgOnR5cGUgc3ltYm9sKQorICAo
aWQgICAgICAgMCA6dHlwZSAodW5zaWduZWQtYnl0ZSAzMikpCisgIChtb3RoZXIgbmlsIDp0eXBl
IHBlcnNvbikKKyAgKHV1aWQgICBuaWwgOnR5cGUgKGFycmF5ICh1bnNpZ25lZC1ieXRlIDgpICgz
MikpKSkKKworCisoZGVmdmFyICpzb21lYm9keSogKG1ha2UtcGVyc29uIDpuYW1lICdNaWxsZXIg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDppZCA0MgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6dXVpZCAjKDEgMiAzIDQgNSA2IDcgOCAuLi4pKQorCisocGVyc29u
LW5hbWUgKnNvbWVib2R5KikKKworKHdpdGgtYy1zLXNsb3RzIChwZXJzb24gKnNvbWVib2R5Kikg
KG5hbWUgKHBlcnNvbi1pZCBpZCkpCisgIChmb3JtYXQgdCAifnMgfmR+JSIgbmFtZSBwZXJzb24t
aWQpKQorYGBgCisKK05vdGUgdGhhdCBhY2Nlc3NpbmcgYSBmbGF0dGVuZWQgdmVjdG9yIChsaWtl
IHRoZSBgVVVJRGAgYWJvdmUpIG1lYW5zIAorcmVmZXJlbmNpbmcgaXQgdmlhIGFuIGRpc3BsYWNl
ZCBhcnJheTsgeW91IGNhbiB1c2UgYChwZXJzb24tdXVpZCAqc29tZWJvZHkqIAorOm1vZGUgOnN1
YnNlcSlgIHRvIGdldCBhIGZyZXNoIGNvcHkuIChUaGlzIG1ha2VzIGEgZGlmZmVyZW5jZSBmb3Ig
R0MgYW5kIAoraW5oaWJpdHMgYFNFVEZgaW5nIGluZGl2aWR1YWwgZWxlbWVudHM7IGJ1dCBhcyBj
b21wZW5zYXRpb24gdGhlcmUncworYChTRVRGIChwZXJzb24tdXVpZCAqc29tZWJvZHkqIDppbmRl
eCAzKSAuLilgLgorCitUaGUgYmFzaWMgcHJlbWlzZSBoZXJlIGlzIHRvIHVzZSBDLVMgYXMgYSBt
ZW1vcnktZWZmaWNpZW50IHJlYWQtb25seSBkYXRhYmFzZS4KKworCisjIyMgMS1sZXZlbCB2ZXJz
dXMgMi1sZXZlbCBhZGRyZXNzaW5nCisKK1RoZXJlIGFyZSB0d28gbWFpbiBtb2RlcyBvZiB1c2lu
ZyBjb2x1bW4tc3RydWN0dXJlczoKKy0gd2l0aCBvbmUgaW50ZXJtZWRpYXRlIGxldmVsLCBpZS4g
YSBzbG90IHZlY3RvciBkaXJlY3RseSBhZGRyZXNzaW5nIAorICBsYXJnZSBzdG9yYWdlIHZlY3Rv
cnMsCistIHdpdGggdHdvIGxldmVscywgdGhlIHNsb3QgdmVjdG9yIHBvaW50aW5nIHRvIGJhdGNo
ZXMgb2Ygc3RvcmFnZSB2ZWN0b3JzLgorCitUaGUgZmlyc3QgY2FzZSBpcyBmYXN0ZXIgYW5kIGVh
c2llciBmb3IgZml4ZWQtc2l6ZSBhbGxvY2F0aW9uczsKK2J1dCBpZiByZWFsbG9jYXRpb24gYmVj
b21lcyBuZWNlc3NhcnkgKGVnLiBiZWNhdXNlIG1vcmUgZWxlbWVudHMgYXJlIHVzZWQgdGhhbgor
aW5pdGlhbGx5IGFsbG9jYXRlZCksIHByZS1leGlzdGluZyBlbGVtZW50cyBuZWVkIHRvIGJlIGNv
cGllZCBpbnRvIHRoZSBuZXdseSAKK2FsbG9jYXRlZCBzdG9yYWdlIHZlY3Rvciwgd2hpY2ggdGFr
ZXMgQ1BVIHRpbWUgLS0KK2FuZCBjb25jdXJyZW50IHdyaXRlIGFjY2Vzc2VzIG1pZ2h0IGdldCBs
b3N0LgorCitUaGUgc2Vjb25kIG9uZSBhbGxvd3MgdGhyZWFkLXNhZmUgb3BlcmF0aW9uLCBieSBh
bGxvY2F0aW5nCithZGRpdGlvbmFsIHN0b3JhZ2UgdmVjdG9ycyBhbmQgaW5zdGFsbGluZyB0aGVt
IHZpYSBuZXcgYmF0Y2ggdmVjdG9yczsKK3RoaXMgd2F5IGNvbmN1cnJlbnQgd3JpdGVzIHRvIGV4
aXN0aW5nIGVsZW1lbnRzIGFyZSBhbHdheXMgc2FmZS4KK0Fsc28sIHdpdGggYSB0eXBpY2FsIGJh
dGNoIHNpemUgb2YgZWcuIDEgbWlsbGlvbiBlbGVtZW50cywKK3RoZSBiYXRjaCB2ZWN0b3JzIGFy
ZSBxdWl0ZSBzbWFsbCwgc28gYW55IGV4dGVuc2lvbiBvbmx5IG5lZWRzCit0byBjb3B5IGEgZmV3
IGVsZW1lbnRzLiBcCisoV2hlbiBwYXNzaW5nIGBUYCBhcyBgOkJBVENILVNJWkVgLCBgREVGQVVM
VC1CQVRDSC1TSVpFYCBydW5zCithIGhldXJpc3RpYyB0byBwcm92aWRlIGEgInNhbmUiIHZhbHVl
IGJhc2VkIG9uIHRoZSBgOklOSVRJQUwtU0laRWAuKQorCitEaWFncmFtOgorYGBgCisxIGxldmVs
LCBmb3IgJG4kIGVsZW1lbnRzCisKKyAg4pSMc2xvdHPilJAKKyAg4pSCICAwICDilILilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIA+4pSM4pSAc2xvdC1h4pSA4pSQCisg
IOKUgiAgMSAg4pSC4pSA4pSAPuKUjOKUgHNsb3QtYuKUgOKUkCAg4pSCICBhWzBdICDilIIKKyAg
4pSCIC4uLiDilIIgICDilIIgIGJbMF0gIOKUgiAg4pSCICBhWzFdICDilIIKKyAg4pSU4pSA4pSA
4pSA4pSA4pSA4pSYICAg4pSCICBiWzFdICDilIIgIOKUgiAgLi4uICAg4pSCCisgICAgICAgICAg
ICDilIIgIC4uLiAgIOKUgiAg4pSCIGFbbi0xXSDilIIKKyAgICAgICAgICAgIOKUgiBiW24tMV0g
4pSCICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilJgKKyAgICAgICAgICAgIOKUlOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUmAorCisyIGxldmVscywgZm9yICRtJCBiYXRjaGVzIG9mICRu
JCBlbGVtZW50cyBlYWNoLCB0b3RhbGluZyAkbiptJAorCisgIOKUjHNsb3Rz4pSQCisgIOKUgiAg
MCAg4pSC4pSA4pSAPuKUjHNsb3QtYS1iYXRjaGVz4pSQCisgIOKUgiAgMSAg4pSCICAg4pSCICAg
WyAwLSBuXSAgICDilIIKKyAg4pSCIC4uLiDilIIgICDilIIgICBbIG4tMm5dICAgIOKUguKUgD7i
lIzilIBzbG90LWHilIDilIDilJAKKyAg4pSU4pSA4pSA4pSA4pSA4pSA4pSYICAg4pSCICAgWzJu
LTNuXSAgICDilIIgIOKUgiAgYVtuXSAgIOKUgiAgCisgICAgICAgICAgICDilIIgICBbIC4uLiBd
ICAgIOKUgiAg4pSCICAuLi4gICAg4pSCCisgICAgICAgICAgICDilIIgICBbLi4ubW5dICAgIOKU
giAg4pSCIGFbMm4tMV0g4pSCCisgICAgICAgICAgICDilJTilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilJggIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
mAorYGBgCisKKworIyMjIFNsb3QgdHJhbnNsYXRpb25zCisKK1doZW4gYSBgVURFRmAgdHlwZSBp
cyB1c2VkIGFzIHNsb3QgdHlwZSwgdGhlIHN0b3JhZ2UgdmVjdG9ycyBvbmx5IGFsbG9jYXRlCith
IGNvcnJlc3BvbmRpbmdseSBsYXJnZSBgVU5TSUdORUQtQllURWAgdHlwZSwgYW5kIHRyYW5zbGF0
aW9uIChib3hpbmcvdW5ib3hpbmcpIGlzIGRvbmUKK3doZW4gYWNjZXNzaW5nIGVsZW1lbnRzLiBc
CitBbHNvLCB0aGUgYWxsLW9uZSB2YWx1ZSBmb3IgdGhhdCBgVU5TSUdORUQtQllURWAgaXMgdGFr
ZW4gdG8gbWVhbiBgTklMYDsKK3NvIGluIHRoZSBgUEVSU09OYCBleGFtcGxlIGFib3ZlLCBhIGA6
bW90aGVyIE5JTGAgZ2V0cyBjb252ZXJ0ZWQgdG8vZnJvbSBgI3hmZmZmYC4KKworQnV0IHRoaXMg
bWVhbnMgdGhhdCBhIHNsb3QgdGhhdCBzdG9yZXMgYSB2ZWN0b3Igb2YgVURFRnMgKGxpa2UgYHNp
YmxpbmdzIG5pbCA6dHlwZSAoYXJyYXkgcGVyc29uICg0KSlgKQorY2FuIG5ldmVyIHJldHVybiBh
IGRpc3BsYWNlZCB2ZWN0b3IgaW50byB0aGUgc3RvcmFnZSBhcnJheSAtIHNvIGEgcGxhaW4KK2Ao
c2V0ZiAoYXJlZiAocGVyc29uLXNpYmxpbmdzICpzb21lYm9keSopIDApIC4uLilgIHdpbGwgZ2V0
IGxvc3Q7IGZvciB0aGF0IHBsZWFzZSBzZWUgCit0aGUgYDppbmRleGAgcGFyYW1ldGVyIGZvciB0
aGUgYFNFVEZgIHNsb3QgYWNjZXNzb3IuCisKKworIyMgQml0ZmllbGRzCisKK1dpdGggNDggcmVt
YWluaW5nIHVzYWJsZSBiaXRzLCBtb3JlIHRoYW4gb25lIGRhdGEgaXRlbSBjYW4gYmUgc3RvcmVk
IGluIGEgYFVERUZgLgorCitUaGlzIGlzIHdoYXQgYDphbGxvY2F0aW9uIDppbW1lZGlhdGVgIHBy
b3ZpZGVzOiBhIG1hY2hpbmUgd29yZCBjb25zaXN0aW5nIG9mIG11bHRpcGxlIHBhcnRzLgorCisK
K2BgYGxpc3AKKyhzYi11ZGVmLWltbWVkaWF0ZTpkZWYtYml0ZmllbGQtc3RydWN0IGJiYml0cwor
ICAoZWlnaHQgMjU1IDp0eXBlICh1bnNpZ25lZC1ieXRlIDgpIDphbGxvY2F0aW9uIDppbW1lZGlh
dGUpCisgIChmb3VyICAgIDAgOnR5cGUgKHVuc2lnbmVkLWJ5dGUgNCkgOmFsbG9jYXRpb24gOmlt
bWVkaWF0ZSkKKyAgKG9uZSAgICAgMCA6dHlwZSAodW5zaWduZWQtYnl0ZSAxKSA6YWxsb2NhdGlv
biA6aW1tZWRpYXRlKSkKKworKGRlZnBhcmFtZXRlciAqeCogCisgIChtYWtlLWJiYml0cyA6ZWln
aHQgI3g1NSA6Zm91ciAjeGEgOm9uZSAwKSkKKworKGJiYml0cy1laWdodCAqeCopCisKKyhzZXRm
IChiYmJpdHMtZm91ciAqeCopCisgICAgICAyKQorYGBgCisKK1RoaXMgaXMgdXNlZCBpbiBfQnVm
ZmVyIGluZGV4aW5nXywgc2VlIGJlbG93LgorCisKK1dpdGggaW1tZWRpYXRlIHNsb3RzIG9ubHkg
bm8gYWN0dWFsIHN0b3JhZ2UgdmVjdG9ycyBhcmUgYWxsb2NhdGVkLgorCitQbGVhc2UgYmUgYXdh
cmUgdGhhdCB0aGVzZSAiaW1tZWRpYXRlIiBzbG90cyBhcmUga2VwdCBpbiB0aGUgX3VkZWZfLCB3
aGljaCBpcyBhbiAKK2ltbWVkaWF0ZSB2YWx1ZSBhbmQgc28gKm5vdCBwYXNzZWQgYnkgcmVmZXJl
bmNlKiBpbnRvIGNhbGxlZCBmdW5jdGlvbnMhIFwKK1RvIGF2b2lkIGNvbmZ1c2lvbiBhdCBydW50
aW1lLAordGhlIHNldHRlciBmdW5jdGlvbnMgZm9yIGltbWVkaWF0ZSBzbG90cyByZXF1aXJlIGFj
a25vd2xlZGdpbmcgdGhpcyB2aWEgYW4gCithZGRpdGlvbmFsIGA6SU1NRURJQVRFYCBwb3NpdGlv
bmFsIGFyZ3VtZW50LgorCisKKyMjIEJ1ZmZlci1JbmRleGluZworCitXaGVuIHN0b3JpbmcgbG90
cyBvZiB2YXJpYWJsZS1sZW5ndGggZGF0YSwgYWxsb2NhdGluZyBtYW55IGBTVFJJTkdgcyBvcgor
YChVTlNJR05FRC1CWVRFIDgpYCB2ZWN0b3JzIG1lYW4gaGlnaCBHQyBsb2FkIGFnYWluLgorCitE
ZWZpbmluZyBhIGNvbHVtbi1zdHJ1Y3R1cmUgdGhhdCBzdG9yZXMgdGhlIGxlbmd0aCBhbmQgdGhl
IGluZGV4IGludG8gYSBsYXJnZSAKK3N0b3JhZ2UgdmVjdG9yIGluIGEgc2luZ2xlIF91ZGVmIGlt
bWVkaWF0ZV8gdmFsdWUgbWVhbnMgdGhhdCBvbmx5IGEgZmV3IHNwZWNpYWxpemVkIGFycmF5cyAK
K2dldCBhbGxvY2F0ZWQsIHNvIEdDIGxvYWQgY2FuIGJlIHJlZHVjZWQgYWdhaW4uCisKK0ZvciBl
eGFtcGxlOiBmb3Igc3RyaW5ncyB3aXRoIGEgbWF4aW11bSBsZW5ndGggb2YgMjU1IGNoYXJhY3Rl
cnMgYW5kIHRvdGFsaW5nIHVwIHRvIAorMsKy4oG0IGNoYXJhY3RlcnMsIGFsbCByZXF1aXJlZCBk
YXRhIGNhbiBiZSBwYWNrZWQgaW50byBhIDMyYml0IHZhbHVlOyBieSB1c2luZyAKK3RoZSBjb3Jy
ZWN0IHNsb3Qgb3JkZXIgYW5kIGEgZGVmYXVsdCB2YWx1ZSBmb3JtIHRoZSBsZW5ndGggZG9lc24n
dCBldmVuIGhhdmUgdG8gCitiZSBtYW51YWxseSBzcGVjaWZpZWQ6CisKK2BgYGxpc3AKKyhkZWYt
Y29sdW1uLXN0cnVjdCAoZmlsZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgKDppbmRleC1iaXRz
IDI0KQorICAgICAgICAgICAgICAgICAgICAoOm1heC1iaXRzICAgMzIpCisgICAgICAgICAgICAg
ICAgICAgICg6YmF0Y2gtc2l6ZSAoKiAxMDI0IDEwMjQpKSkKKyAobmFtZSAiIiAgICAgICAgICAg
IDp0eXBlIChhcnJheSBjaGFyYWN0ZXIgKGxlbikpKQorIChsZW4gIChsZW5ndGggbmFtZSkgOnR5
cGUgKHVuc2lnbmVkLWJ5dGUgOCkgOmFsbG9jYXRpb24gOmltbWVkaWF0ZSkpCisKKyhtYWtlLWZp
bGVuYW1lIDpuYW1lICIvZXRjL3NlcnZpY2VzIikKK2BgYAorCisKK1RoaXMgcHJvdmlkZXMgYSBs
YXlvdXQgbGlrZSB0aGlzOgorCitgYGAKKyAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tKworICB8TVNCICAgICAgICAgICAgIHwg
bGVuICB8ICAgICAgICAgIGluZGV4ICAgICAgICB8IHVkZWYgIHwgICB0YWd8CisgICstLS0tLS0t
LS0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLSsK
KyAgNjQgICAgICAgICAgICAgNDh8NDcgIDQwfDM5ICAgICAgICAgICAgICAgICAgIDE2fDE1ICAg
IDh8NyAgICAgMAorICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rLS0tLS0tLSstLS0tLS0rCitgYGAKKworVGhlIGBMRU5gIHNsb3QgaXMgc3RvcmVkIGlu
IHRoZSBVREVGLXRhZ2dlZCBtYWNoaW5lIHdvcmQsCithbmQgdGhlIGluZGV4IHBvaW50cyBpbnRv
IGxhcmdlIHZlY3RvcnMgb2YgMsKy4oGwIGNoYXJhY3RlcnMgZWFjaC4KKworV2hlbiBzdG9yaW5n
IHN1Y2ggYSBgZmlsZW5hbWVgIGluIGEgdHlwZWQgc2xvdCBpbiBhbm90aGVyIEMtUywgb25seSAK
K2AodW5zaWduZWQtYnl0ZSAzMilgIHN0b3JhZ2UgdmVjdG9ycyBmb3IgdGhlIGFjdHVhbGx5IHVz
ZWQgYml0cyBhcmUgYWxsb2NhdGVkLgorCitJZiB5b3UgbmVlZCBzdWNoIGNvbnZlcnNpb25zIHNv
bWV3aGVyZSBlbHNlIChlZy4gZm9yIG5vcm1hbCBDTE9TIGNsYXNzZXMgb3Igc3RydWN0dXJlcyks
IHlvdSBtaWdodCBmaW5kCitgbWFrZS13cmFwcGVkLXVkZWYtYWNjZXNzb3JgIGhlbHBmdWwuCisK
KworIyMgSXRlcmF0aW9uCisKK0lmIHlvdSBuZWVkIHRvIGl0ZXJhdGUgb3ZlciB0aGUgX2FsbG9j
YXRlZF8gdmFsdWVzIG9mIGEgQy1TLAorYEMtUy1WQUxVRVNgIHJldHVybnMgYSBsaXN0IG9mIHVk
ZWYgaW1tZWRpYXRlczsgYE1BUC1DLVMtUkFOR0VgCitydW5zIGEgbGFtYmRhIGZvciBlYWNoIHZh
bHVlIGFuZCBjb2xsZWN0cyB0aGUgcmV0dXJuIHZhbHVlcy4KKworQm90aCBhcmUgc3VpdGFibGUg
b25seSBmb3IgcGxhaW4gY29sdW1uLXN0cnVjdHVyZXMgd2l0aG91dCBpbW1lZGlhdGUgc2xvdHMg
LS0KK2llLiB3aGVyZSB0aGUgaW1tZWRpYXRlIHN0b3JlcyAoYXBhcnQgZnJvbSB0aGUgdGFnIGJp
dHMpIG9ubHkgYW4gaW5kZXggaW50byB2ZWN0b3JzIQorCmRpZmYgLS1naXQgYS9jb250cmliL3Ni
LXVkZWYtaW1tZWRpYXRlL2NvbHVtbi1zdHJ1Y3R1cmUubGlzcCBiL2NvbnRyaWIvc2ItdWRlZi1p
bW1lZGlhdGUvY29sdW1uLXN0cnVjdHVyZS5saXNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMC4uNmM2NDBiNjI2Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9zYi11ZGVm
LWltbWVkaWF0ZS9jb2x1bW4tc3RydWN0dXJlLmxpc3AKQEAgLTAsMCArMSwxMzA1IEBACis7Ozsg
RGVmaW5lIGEgY29sdW1uLXN0cnVjdHVyZS4KKzs7Cis7OyBUaGUgc3RydWN0dXJlIG5hbWUgaXMg
dXNlZCB0byBjcmVhdGUgYSBVREVGLUlNTUVESUFURSwKKzs7IHRoZSBzbG90IGRlZmluaXRpb25z
IGFyZSB1c2VkIHRvIGNyZWF0ZSBhY2Nlc3NvcgorOzsgZnVuY3Rpb25zIHNpbWlsYXIgdG8gREVG
U1RSVUNULgorOzsgRGF0YSBpcyBzdG9yZWQgaW4gdmVjdG9ycyBwZXIgc2xvdCwgc28gdGhlIG51
bWJlciBvZiBMaXNwIG9iamVjdHMKKzs7IGlzIG11Y2ggc21hbGxlciB0aGFuIHdpdGggREVGU1RS
VUNULgorOzsgUmVmZXJlbmNpbmcgc3VjaCAiaW5zdGFuY2VzIiBpcyBkb25lIHZpYSB0aGUgKHR5
cGVkISkgVURFRi4KKzs7Cis7OyBZb3UgY2FuIGVpdGhlciBjcmVhdGUgb25lIHNldCBvZiAobGFy
Z2UpIHZlY3RvcnMsCis7OyB3aGljaCB3aWxsIG1lYW4gc29tZSBsb2FkIHdoZW4gcmVzaXppbmcK
Kzs7IChhbmQgY29uY3VycmVudCBtb2RpZmljYXRpb24gd2hpbGUgcmVzaXppbmcgd2lsbCBsb3Nl
IGNoYW5nZXMhKTsKKzs7IG9yIGEgMi1sZXZlbCBzdHJ1Y3R1cmUsIHdoZXJlIHRoZSBDT05URU5U
LVZFQ1RPUgorOzsgc3RvcmVzICgiaGVhcCItKXZlY3RvcnMgdG8gc2xvdC12ZWN0b3JzIDspCis7
OyBJbiB0aGUgbGF0dGVyIGNhc2UgYWxsb2NhdGluZyBtb3JlIGRhdGEgbWVhbnMganVzdCBtb2Rp
ZnlpbmcKKzs7IHRoZSAiaGVhcCItdmVjdG9ycyBhZGRyZXNzZWQgYnkgQ09OVEVOVC1WRUNUT1Is
Cis7OyBzbyB0aGF0IHNob3VsZCBiZSBtdWx0aXRocmVhZGluZy1zYWZlLgorCis7OyBUaGUgYmln
Z2VzdCBhZHZhbnRhZ2Ugb2YgdGhhdCBzY2hlbWUgaXMgdGhhdCB3aXRoIHNwZWNpYWxpemVkIHNs
b3RzCis7OyB0aGUgR0MgbG9hZCBhbmQgbWVtb3J5IHVzYWdlIGlzIHJlZHVjZWQsIGFzIHZlY3Rv
cnMgd2l0aCBzdWNoIHR5cGVzCis7OyBhcmUgdmVyeSBxdWlja2x5IGhhbmRsZWQuCis7OworOzsg
QWxzbywgb25lIGFkdmFudGFnZSB1c2luZyB0aGUgdXNlci1kZWZpbmVkIGludGVnZXIgdHlwZXMK
Kzs7IG92ZXIganVzdCBhbGxvY2F0aW5nIGJpZyAoVU5TSUdORUQtQllURSA4KSBidWZmZXJzIGFu
ZAorOzsgZGVmaW5pbmcgYWNjZXNzb3IgZnVuY3Rpb25zIG92ZXIgaW50ZWdlciBpbmRpY2VzCis7
OyBpcyB0aGF0IHRoaXMgc29sdXRpb24gaXMgcnVudGltZS10eXBlLXNhZmUgLS0KKzs7IGFzIGF0
IGFueSBwb2ludCB0aGUgY29tcGlsZXIga25vd3Mgd2hpY2ggZGF0YSB0eXBlIGhpZGVzCis7OyBi
ZWhpbmQgc29tZSBlbGVtZW50IGluZGV4LgorCis7OyBUaGUgdXNlLWNhc2UgdGhpcyBpcyBiZWlu
ZyBpbXBsZW1lbnRlZCBmb3IgaXMgYSBkYXRhYmFzZSAtCis7OyBkYXRhIGdldHMgaW1wb3J0ZWQg
aW50byB0aGUgaGVhcCwgc28gdGhhdCBTQVZFLUxJU1AtQU5ELURJRQorOzsgZ2l2ZXMgYW4gaW5z
dGFudC1vbiBzZXJ2aWNlIHRoYXQgKHdoZW4gc2F2ZWQgdW5jb21wcmVzc2VkKQorOzsgcGFnZXMg
ZGF0YSBpbiBvbiBkZW1hbmQgLS0gZXZlbiBpZiBvbmx5IDJHQiBSQU0gYXJlIGF2YWlsYWJsZQor
OzsgZm9yIGEgMjBHQiBoZWFwIGR1bXAuCisKKzs7IFRoZSBzYXZpbmdzIGluIEdDIHRpbWUgZm9y
IHMtbC1hLWQgYXJlIHF1aXRlIG5pY2U6Cis7OyAgICMgbWFrZSBjb21wYXJpc29uIGR1bXBmaWxl
PS90bXAvbXktYmluYXJ5Cis7OyAgIERFRlNUUlVDVDoKKzs7ICAgICBFbGFwc2VkOiAgIDA6MTku
MjUgICBVc2VyOiAxOC4wOCAgIFN5c3RlbTogMS4xMQorOzsgICAgIFNpemU6ICAgIDU1NDY5NDU0
NCAgIENyZWF0ZWQ6ICAgIDE2MDAwMDAwCis7OyAgIERFRi1DT0xVTU4tU1RSVUNUOgorOzsgICAg
IEVsYXBzZWQ6ICAgMDowNi42NiAgIFVzZXI6IDUuMzEgICBTeXN0ZW06IDEuMzMKKzs7ICAgICBT
aXplOiAgICA0NDgyOTcxNTIgICBVc2VkIGl0ZW1zOiAxNjAwMDAwMSBvZiAxNjg5NjMwNAorOzsg
ICBERUYtQ09MVU1OLVNUUlVDVCB3aXRoIGxhcmdlIGluaXRpYWwtc2l6ZToKKzs7ICAgICBFbGFw
c2VkOiAgIDA6MDUuMDUgICBVc2VyOiAzLjgzICAgU3lzdGVtOiAxLjIyCis7OyAgICAgU2l6ZTog
ICAgNDMyNDY1Mzg0ICAgVXNlZCBpdGVtczogMTYwMDAwMDEgb2YgMTYyNDAwMDAKKzs7ICAgREVG
LUNPTFVNTi1TVFJVQ1Qgd2l0aCBsYXJnZSBpbml0aWFsLXNpemUgYW5kIGJhdGNoZWQ6Cis7OyAg
ICAgRWxhcHNlZDogICAwOjA2LjYwICAgVXNlcjogNS44MyAgIFN5c3RlbTogMC43MworOzsgICAg
IFNpemU6ICAgIDQ1MjE2NDk2MCAgIFVzZWQgaXRlbXM6IDE2MDAwMDAxIG9mIDE3MDAwMDE3CisK
Kzs7IEtleXdvcmRzOiBoZWFkZXJsZXNzLXN0cnVjdHVyZXMsIGNvbHVtbi1vcmllbnRlZC1kYXRh
LCBnYy1mcmllbmRseSwgcnVudGltZS10eXBlLXNhZmV0eQorKGluLXBhY2thZ2UgOnNiLXVkZWYt
aW1tZWRpYXRlKQorCis7KGRlY2xhaW0gIChPUFRJTUlaRSBTQi1DOjpJTlNUUlVNRU5ULUNPTlNJ
TkcpKQorCis7OyBTaXppbmcgaGV1cmlzdGljcyBmb3IgcGFyYWxsZWwgYWxsb2NhdGlvbiBpbiB0
aHJlYWRzCisoZGVmdW4gZGVmYXVsdC1iYXRjaC1zaXplIChndWVzcykKKyAgOzsgUG93ZXItb2Yt
dHdvIG9mIGFib3V0IDEvNCB0aGUgaW5pdGlhbCBzaXplCisgIChleHB0IDIKKyAgICAgICAgKGNl
aWxpbmcKKyAgICAgICAgICAobG9nICgqIDAuMjUgZ3Vlc3MpCisgICAgICAgICAgICAgICAyKSkp
KQorCisoZGVmc3RydWN0ICh1ZGVmLWMtcy1tZXRhZGF0YQorICAgICAgICAgICAgICg6Y29uYy1u
YW1lIGNzLW1ldGEtKSkKKyAgKHVkZWYgICAgICAgICAgICBuaWwgOnR5cGUgc3ltYm9sICAgICAg
ICAgIDpyZWFkLW9ubHkgdCkKKyAgKG5leHQgICAgICAgICAgICAgIDAgOnR5cGUgc2Itdm06d29y
ZCkKKyAgKGFsbG9jYXRlZCAgICAgICAgIDAgOnR5cGUgc2Itdm06d29yZCkKKyAgKGluZGV4LWJp
dHMgICAgICBuaWwgOnR5cGUgKG9yIG51bGwgKGludGVnZXIgMSA0OCkpKQorICAoYXMtYWxpc3Qg
ICAgICAgIG5pbCA6dHlwZSBzeW1ib2wgICAgICAgICAgOnJlYWQtb25seSB0KQorICAocC1mdW5j
dGlvbiAgICAgIG5pbCA6dHlwZSBzeW1ib2wgICAgICAgICAgOnJlYWQtb25seSB0KQorICAoYmF0
Y2gtc2l6ZSAgICAgIG5pbCA6dHlwZSAob3IgbnVsbAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOzsgc2hvdWxkIGFjdHVhbGx5IHN0YXJ0IGF0IDEwMDAgb3Igc28sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBidXQgcmFjZSB0ZXN0cyBydW4gd2l0aCBzbWFs
bCBpbmNyZW1lbnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlciAz
IDEwMDAwMDAwMDApKQorICAgICAgICAgICAgICAgICAgIDs7IEFsbG93IG1vZGlmaWNhdGlvbiBk
dXJpbmcgdGVzdAorICAgICAgICAgICAgICAgICAgICAgICA6cmVhZC1vbmx5IG5pbCkKKyAgKGxv
Y2sgICAgICAgICAgICAoc2ItdGhyZWFkOm1ha2UtbXV0ZXggOm5hbWUgImMtcy11cHBlci1sb2Nr
IikKKyAgICAgICAgICAgICAgICAgICAgICAgOnR5cGUgc2ItdGhyZWFkOm11dGV4CisgICAgICAg
ICAgICAgICAgICAgICAgIDpyZWFkLW9ubHkgdCkKKyAgKHNsb3RzICAgICAgICAgICBuaWwgOnR5
cGUgdmVjdG9yICAgICAgICAgICA6cmVhZC1vbmx5IHQpCisgIChjb25zdHJ1Y3RvciAgICAgbmls
IDp0eXBlIHN5bWJvbCAgICAgICAgICAgOnJlYWQtb25seSB0KQorICA7OyBTbG90IGRlZmluaW5n
IHRoZSBsZW5ndGggZm9yIHZhcmlhYmxlLWxlbmd0aCBzbG90cworICAodmFyLWxlbi1zbG90LW5h
bWUgbmlsIDp0eXBlIHN5bWJvbCAgICAgICAgICAgICAgIDpyZWFkLW9ubHkgdCkKKyAgKHZhci1s
ZW4tc2xvdCAgICBuaWwgOnR5cGUgdCAgICAgICAgICAgICAgIDpyZWFkLW9ubHkgdCkKKyAgKGhh
cy1pbmRleC1zbG90ICBuaWwgOnR5cGUgKG1lbWJlciBuaWwgdCApIDpyZWFkLW9ubHkgdCkKKyAg
KGRhdGEtdmVjICAgICAgICAjKCkgOnR5cGUgc2ltcGxlLXZlY3RvciAgIDpyZWFkLW9ubHkgdCkp
CisKKworOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKyhkZWZzdHJ1Y3QgKGNzLXNsb3QKKyAgICAgICAgICAgICAoOnR5cGUg
bGlzdCkKKyAgICAgICAgICAgICA6bmFtZWQpCisgIChzbG90LW5hbWUgICAgIG5pbCA6dHlwZSBz
eW1ib2wpCisgIChhbGxvY2F0aW9uICAgIG5pbCA6dHlwZSBzeW1ib2wpCisgIChhY2Nlc3Nvci1z
eW0gIG5pbCA6dHlwZSBzeW1ib2wpCisgIChpbml0LXZhbHVlICAgIG5pbCA6dHlwZSB0KQorICAo
aW5pdC1mbiAgICAgICBuaWwgOnR5cGUgc3ltYm9sKQorICAobmV3LXNwZWMgICAgICBuaWwgOnR5
cGUgdCkKKyAgKG9yaWctdHlwZSAgICAgbmlsIDp0eXBlIHQpKQorCis7OyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKGRlZnZh
ciAqYml0LWluZGV4KiBuaWwKKyAgIlVzZWQgdG8gY291bnQgdXNlZCBpbW1lZGlhdGUgYml0cyBk
dXJpbmcgcGFyc2luZyIpCisoZGVmdmFyICpzdG9yYWdlLXN5bWJvbCogbmlsCisgICJTaG9ydGN1
dCB0byB0aGUgZGF0YSB2ZWN0b3IuIikKKyhkZWZ2YXIgKmN1cnJlbnQtY3Mtc3ltKiBuaWwKKyAg
IlRoZSBzeW1ib2wgd2UncmUgZGVmaW5pbmcgYSBDLVMgb24uIikKKyhkZWZ2YXIgKm9wZXItZnVu
YyogbmlsCisgICJUaGUgc3ltYm9sIGZvciB0aGUgdWRlZiBvcGVyYXRvci4iKQorKGRlZnZhciAq
cC1mdW5jLXN5bSogbmlsCisgICJUaGUgc3ltYm9sIGZvciB0aGUgcHJlZGljYXRlLiIpCisoZGVm
dmFyICpiYXRjaC1zaXplKiBuaWwKKyAgIkhvdyBtYW55IGl0ZW1zIHRvIGFsbG9jYXRlIGF0IG9u
Y2UgaW4gYSAybmQgbGV2ZWwgdmVjdG9yLiIpCisoZGVmdmFyICp2ZWN0b3Itc3RvcmFnZS1pbmRl
eCogbmlsCisgICJVc2VkIHRvIG51bWJlciB0aGUgc2xvdHMgZHVyaW5nIHBhcnNpbmciKQorKGRl
ZnZhciAqc2xvdC1uciogbmlsCisgICJVc2VkIHRvIG51bWJlciB0aGUgc2xvdHMgZHVyaW5nIHBh
cnNpbmciKQorKGRlZnZhciAqaW5kZXgtYml0cyogbmlsCisgICJUaGUgbnVtYmVyIG9mIF9pbmRl
eF8gYml0cyBmb3IgdGhlIGN1cnJlbnQgQy1TLiIpCisoZGVmdmFyICptYXgtYml0cyogbmlsCisg
ICJUaGUgdG90YWwgc2l6ZSBmb3IgdGhlIGN1cnJlbnQgQy1TLiIpCisoZGVmdmFyICppbmRleC1z
bG90KiBuaWwKKyAgIlRoZSBpbmRleCBzbG90IGRlZmluaXRpb24sIGlmIGFueS4iKQorCis7OyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworKGRlZnVuIGdldC11ZGVmLW1ldGFkYXRhLWZyb20tc3ltYm9sIChzeW0pCisgIChsZXQg
KCh2IChhbmQKKyAgICAgICAgICAgICAoc3ltYm9scCBzeW0pCisgICAgICAgICAgICAgKGdldCBz
eW0gJ3VkZWYtbWV0YWRhdGEpKSkpCisgICAgKHdoZW4gdgorICAgICAgKHRoZSB1ZGVmLW1ldGFk
YXRhIHYpKSkpCisKKyhkZWNsYWltIChpbmxpbmUgZ2V0LWNzLW1ldGFkYXRhLWZyb20tc3ltYm9s
KSkKKyhkZWZ1biBnZXQtY3MtbWV0YWRhdGEtZnJvbS1zeW1ib2wgKHN5bSAmb3B0aW9uYWwgYy1z
LXJlcSkKKyAgKGNvbmQKKyAgICAoKHN5bWJvbHAgc3ltKQorICAgICAobGV0ICgodi1jLXMgKGdl
dCBzeW0gJ2NvbHVtbi1zdHJ1Y3QtZGF0YSkpKQorICAgICAgIChpZiAoYW5kIGMtcy1yZXEKKyAg
ICAgICAgICAgICAgICAobm90IHYtYy1zKSkKKyAgICAgICAgICAgKGVycm9yICJ+cyBpcyBub3Qg
YSBjb2x1bW4tc3RydWN0dXJlIHR5cGUuIiBzeW0pCisgICAgICAgICAgICh2YWx1ZXMgKGFuZCB2
LWMtcworICAgICAgICAgICAgICAgICAgICAgICAgKHRoZSB1ZGVmLWMtcy1tZXRhZGF0YSB2LWMt
cykpCisgICAgICAgICAgICAgICAgICAgKGdldC11ZGVmLW1ldGFkYXRhLWZyb20tc3ltYm9sIHN5
bSkpKSkpCisgICAgKCh1ZGVmLWMtcy1tZXRhZGF0YS1wIHN5bSkKKyAgICAgKHZhbHVlcyBzeW0K
KyAgICAgICAgICAgICAoZ2V0LXVkZWYtbWV0YWRhdGEtZnJvbS1zeW1ib2wgKGNzLW1ldGEtdWRl
ZiBzeW0pKSkpKSkKKworOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyhkZWZ1biBpcy11bnNpZ25lZC1ieXRlLXNsb3Q/IChz
bG90KQorICAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJpdHMgZm9yIGFuIChVTlNJR05FRC1CWVRF
IHgpIHR5cGUuIgorICAobGV0ICgodHlwZSAoY3Mtc2xvdC1vcmlnLXR5cGUgc2xvdCkpKQorICAg
ICh3aGVuIChhbmQgKGNvbnNwIHR5cGUpCisgICAgICAgICAgICAgICAoZXEgKGZpcnN0IHR5cGUp
ICd1bnNpZ25lZC1ieXRlKQorICAgICAgICAgICAgICAgKGludGVnZXJwIChzZWNvbmQgdHlwZSkp
CisgICAgICAgICAgICAgICAobnVsbCAoY2RkciB0eXBlKSkpCisgICAgICAoc2Vjb25kIHR5cGUp
KSkpCisKKyhkZWZ1biBpcy11ZGVmLXNsb3Q/IChzbG90KQorICAiUmV0dXJucyB0aGUgVURFRiBt
ZXRhZGF0YSBvciBOSUwuIgorICAobGV0ICgodHlwZSAoY3Mtc2xvdC1vcmlnLXR5cGUgc2xvdCkp
KQorICAgIChtdWx0aXBsZS12YWx1ZS1iaW5kIChsZW4gdnR5cGUpIChzbG90LWlzLXZlY3Rvci10
eXBlIHNsb3QpCisgICAgICAoZGVjbGFyZSAoaWdub3JlIGxlbikpCisgICAgICAob3IgKGdldC11
ZGVmLW1ldGFkYXRhLWZyb20tc3ltYm9sIHR5cGUpCisgICAgICAgICAgKGdldC11ZGVmLW1ldGFk
YXRhLWZyb20tc3ltYm9sIHZ0eXBlKSkpKSkKKworKGRlZnVuIGlzLWltbWVkaWF0ZS1zbG90PyAo
c2xvdCkKKyAgKGVxIChjcy1zbG90LWFsbG9jYXRpb24gc2xvdCkKKyAgICAgIDppbW1lZGlhdGUp
KQorCisoZGVmdW4gc2xvdC1pbnB1dC10eXBlIChzbG90KQorICAobXVsdGlwbGUtdmFsdWUtYmlu
ZCAodmVjdG9yLWxlbmd0aCB2dHlwZSkgKHNsb3QtaXMtdmVjdG9yLXR5cGUgc2xvdCkKKyAgICAo
ZGVjbGFyZSAoaWdub3JlIHZlY3Rvci1sZW5ndGgpKQorICAgIChsZXQgKCh0eXBlIChvciB2dHlw
ZQorICAgICAgICAgICAgICAgICAgICAoY3Mtc2xvdC1vcmlnLXR5cGUgc2xvdCkpKSkKKyAgICAg
IChpZiAoaXMtdWRlZi1zbG90PyBzbG90KQorICAgICAgICAgIGAob3IgbnVsbCAsdHlwZSkKKyAg
ICAgICAgICB0eXBlKSkpKQorCisoZGVmdW4gdWRlZi1zdG9yYWdlLWJpdHMtbmVlZGVkICh1ZGVm
KQorICAobGV0ICgodWRlZiAoZW5zdXJlLXVkZWYgdWRlZikpKQorICAgICh1bmxlc3MgdWRlZgor
ICAgICAgKGVycm9yICJFeHBlY3RlZCB+cyB0byBiZSBhIFVERUYiIHVkZWYpKQorICAgIChsZXQg
KChjdXJyZW50PyAoZXEgKmN1cnJlbnQtY3Mtc3ltKgorICAgICAgICAgICAgICAgICAgICAgICAg
KHVkZWYtbWV0YWRhdGEtdWRlZi1zeW0gdWRlZikpKSkKKyAgICAgIDs7IE5lZWQgdG8gY2hlY2sg
LS0gaWYgaXQncyB0aGUgY3VycmVudCBDLVMsIHdlIG5lZWQgOmluZGV4LWJpdHMgc3BlY2lmaWVk
LgorICAgICAgOzsgRWxzZSBqdXN0IHRha2UgdGhlIHRvdGFsIHVkZWYgbGVuZ3RoLgorICAgICAg
KG9yICh3aGVuIGN1cnJlbnQ/CisgICAgICAgICAgICAqaW5kZXgtYml0cyopCisgICAgICAgICAg
KHdoZW4gdWRlZgorICAgICAgICAgICAgOzsgd2UgbmVlZCB0aGUgdG90YWwgc2l6ZSwgaW5jbHVk
aW5nIGFueSBvdGhlciBpbW1lZGlhdGUgZGF0YSEKKyAgICAgICAgICAgICh1ZGVmLW1ldGFkYXRh
LW1heC1iaXRzIHVkZWYpKQorICAgICAgICAgIChlcnJvciAiRm9yIHNlbGYtcmVmZXJlbmNpbmcg
Y29sdW1uLXN0cnVjdHVyZXMgKHR5cGUgfnMpIH4KKyAgICAgICAgICAgICAgICAgeW91IG5lZWQg
dG8gc3BlY2lmeSA6SU5ERVgtQklUUy4iCisgICAgICAgICAgICAgICAgICh1ZGVmLW1ldGFkYXRh
LXVkZWYtc3ltIHVkZWYpKSkpKSkKKworKGRlZnVuIHNsb3QtYnl0ZS1sZW5ndGggKHNsb3QpCisg
IChsZXQgKCh1ZGVmIChpcy11ZGVmLXNsb3Q/IHNsb3QpKSkKKyAgICAoaWYgdWRlZgorICAgICAg
ICAodWRlZi1zdG9yYWdlLWJpdHMtbmVlZGVkIHVkZWYpCisgICAgICAgIChpcy11bnNpZ25lZC1i
eXRlLXNsb3Q/IHNsb3QpKSkpCisKKyhkZWZ1biBpbW1lZGlhdGUtc2xvdC1ieXRlLXNwZWMgKHNs
b3QpCisgICh3aGVuIChpcy1pbW1lZGlhdGUtc2xvdD8gc2xvdCkKKyAgICAobGV0ICgobGVuIChz
bG90LWJ5dGUtbGVuZ3RoIHNsb3QpKSkKKyAgICAgICh3aGVuIGxlbgorICAgICAgICBgKGJ5dGUg
LGxlbiAsKmJpdC1pbmRleCopKSkpKQorCisoZGVmdW4gc2xvdC1pcy12ZWN0b3ItdHlwZSAoc2xv
dCkKKyAgIlJldHVybnMgTklMIG9yIHRoZSB2ZWN0b3IgbGVuZ3RoIGFuZCB0aGUgZWxlbWVudCB0
eXBlLiIKKyAgKGxldCAoKHR5cGUgKGNzLXNsb3Qtb3JpZy10eXBlIHNsb3QpKSkKKyAgICAod2hl
biAoYW5kIChsaXN0cCB0eXBlKQorICAgICAgICAgICAgICAgKD0gMyAobGVuZ3RoIHR5cGUpKSkK
KyAgICAgIDs7IHJlc3RyaWN0ZWQgdG8gYSBzdWJzZXQgb2YgcG9zc2libGUgYXJyYXktdHlwZXMK
KyAgICAgIChkZXN0cnVjdHVyaW5nLWJpbmQgKGtpbmQgZWxlbWVudC10eXBlIGRpbXMpIHR5cGUK
KyAgICAgICAgKHdoZW4gKGFuZCAobWVtYmVyIGtpbmQgJyhhcnJheSBzaW1wbGUtYXJyYXkgdmVj
dG9yKSkKKyAgICAgICAgICAgICAgICAgICAoPSAxIChsZW5ndGggZGltcykpKQorICAgICAgICAg
ICh2YWx1ZXMgKGZpcnN0IGRpbXMpCisgICAgICAgICAgICAgICAgICBlbGVtZW50LXR5cGUpKSkp
KSkKKworKGRlZnVuIGlzLXVkZWYtdmVjdG9yLXNsb3Q/IChzbG90KQorICAiUmV0dXJucyB0aGUg
VURFRiBtZXRhZGF0YSBvciBOSUwuIgorICAobXVsdGlwbGUtdmFsdWUtYmluZCAoZGltIGVsLXR5
cGUpIChzbG90LWlzLXZlY3Rvci10eXBlIHNsb3QpCisgICAgKGRlY2xhcmUgKGlnbm9yZSBkaW0p
KQorICAgIChhbmQgZWwtdHlwZQorICAgICAgICAgKGdldC11ZGVmLW1ldGFkYXRhLWZyb20tc3lt
Ym9sIGVsLXR5cGUpKSkpCisKKyhkZWZ1biBzbG90LXN0b3JhZ2UtdHlwZSAoc2xvdCkKKyAgKGxl
dCAoKGJpdHMgKHNsb3QtYnl0ZS1sZW5ndGggc2xvdCkpKQorICAgIChtdWx0aXBsZS12YWx1ZS1i
aW5kIChkaW0gZWwtdHlwZSkgKHNsb3QtaXMtdmVjdG9yLXR5cGUgc2xvdCkKKyAgICAgIChjb25k
CisgICAgICAgICgoaXMtaW1tZWRpYXRlLXNsb3Q/IHNsb3QpCisgICAgICAgICBuaWwpCisgICAg
ICAgIChiaXRzCisgICAgICAgICBgKHVuc2lnbmVkLWJ5dGUgLGJpdHMpKQorICAgICAgICAoZGlt
CisgICAgICAgICBlbC10eXBlKQorICAgICAgICAodAorICAgICAgICAgKGNzLXNsb3Qtb3JpZy10
eXBlIHNsb3QpKSkpKSkKKworKGRlZnVuIG1ha2UtYXJyYXktd2l0aC1zbG90LXN0b3JhZ2UtdHlw
ZSAoc2xvdCBsZW4gJnJlc3QgYXJncykKKyAgYChtYWtlLWFycmF5ICxsZW4KKyAgICAgICAgICAg
ICAgIDplbGVtZW50LXR5cGUgJywoc2xvdC1zdG9yYWdlLXR5cGUgc2xvdCkKKyAgICAgICAgICAg
ICAgICxAIGFyZ3MpKQorCisoZGVmdW4gc2xvdC1pcy1maXhlZC12ZWN0b3ItdHlwZSAoc2xvdCkK
KyAgIlJldHVybnMgTklMIE5JTCBvciB0aGUgY29uc3RhbnQgdmVjdG9yIGxlbmd0aCBhbmQgdGhl
IGVsZW1lbnQgdHlwZS4iCisgIChtdWx0aXBsZS12YWx1ZS1iaW5kIChkaW1lbnNpb24gZWxlbWVu
dC10eXBlKSAoc2xvdC1pcy12ZWN0b3ItdHlwZSBzbG90KQorICAgICh3aGVuIChudW1iZXJwIGRp
bWVuc2lvbikKKyAgICAgICh2YWx1ZXMgZGltZW5zaW9uIGVsZW1lbnQtdHlwZSkpKSkKKworKGRl
ZnVuIHZlYy1zbG90LWluZGV4LW11bHRpcGxpZXIgKHNsb3QpCisgIChsZXQgKChkaW0gKHNsb3Qt
aXMtZml4ZWQtdmVjdG9yLXR5cGUgc2xvdCkpKQorICAgIChvciBkaW0KKyAgICAgICAgMSkpKQor
Cis7IC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAt
IC0gLSAtIC0KKworKGRlZnVuIGZpbmQtc2xvdC1ieS1uYW1lIChjLXMgc2xvdC1uYW1lKQorICAo
ZmluZCBzbG90LW5hbWUKKyAgICAgICAgKGlmIChvciAobGlzdHAgYy1zKQorICAgICAgICAgICAg
ICAgICh2ZWN0b3JwIGMtcykpCisgICAgICAgICAgICBjLXMKKyAgICAgICAgICAgIChjcy1tZXRh
LXNsb3RzIChpZiAoc3ltYm9scCBjLXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGdldC1jcy1tZXRhZGF0YS1mcm9tLXN5bWJvbCBjLXMpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYy1zKSkpCisgICAgICAgIDp0ZXN0ICMnZXEKKyAgICAgICAgOmtleSAjJ2NzLXNs
b3Qtc2xvdC1uYW1lKSkKKworKGRlZnVuIGVuc3VyZS11ZGVmICh1ZGVmKQorICAoY29uZAorICAg
ICgodWRlZi1tZXRhZGF0YS1wIHVkZWYpCisgICAgIHVkZWYpCisgICAgKChlcSAqY3VycmVudC1j
cy1zeW0qIHVkZWYpCisgICAgIChnZXQtdWRlZi1tZXRhZGF0YS1mcm9tLXN5bWJvbCB1ZGVmKQor
ICAgICAjKyhvcikoZXJyb3IgInl5eSIpKQorICAgICgoc3ltYm9scCB1ZGVmKQorICAgICAoZ2V0
LXVkZWYtbWV0YWRhdGEtZnJvbS1zeW1ib2wgdWRlZikpKSkKKworCisoZGVmdW4gY29udmVydC1m
cm9tLXVkZWYtaWYtbmVlZGVkICh1ZGVmPyBmb3JtKQorICAobGV0ICgodWQgKGVuc3VyZS11ZGVm
IHVkZWY/KSkpCisgICAgKGlmIHVkCisgICAgICAgIGAoLCh1ZGVmLW1ldGFkYXRhLWZ1bmMgdWQp
IDp1ZGVmLW9yLW5pbC10by11Yi14ICxmb3JtKQorICAgICAgICBmb3JtKSkpCisKKyhkZWZ1biBj
b252ZXJ0LXRvLXVkZWYtaWYtbmVlZGVkICh1ZGVmPyBmb3JtKQorICAobGV0ICgodWQgKGVuc3Vy
ZS11ZGVmIHVkZWY/KSkpCisgICAgKGlmIHVkCisgICAgICAgIGAoLCh1ZGVmLW1ldGFkYXRhLWZ1
bmMgdWQpIDp1Yi14LXRvLXVkZWYtb3ItbmlsICxmb3JtKQorICAgICAgICBmb3JtKSkpCisKKyhk
ZWZ1biBnZXQtc3RvcmluZy1mb3JtIChzbG90IHZhci1uYW1lKQorICAobGV0ICgodWRlZiAoaXMt
dWRlZi1zbG90PyBzbG90KSkKKyAgICAgICAgKGxlbiAoc2xvdC1ieXRlLWxlbmd0aCBzbG90KSkp
CisgICAgKGNvbmQKKyAgICAgICh1ZGVmCisgICAgICAgKGFzc2VydCBsZW4pCisgICAgICAgYCh0
aGUgKHVuc2lnbmVkLWJ5dGUgLGxlbikKKyAgICAgICAgICAgICAsKGNvbnZlcnQtZnJvbS11ZGVm
LWlmLW5lZWRlZCB1ZGVmIHZhci1uYW1lKSkpCisgICAgICAodAorICAgICAgIHZhci1uYW1lKSkp
KQorCisoZGVmdW4gbWFrZS11ZGVmLXdpdGgtaW1tZWRpYXRlLXNsb3RzLWZvcm0gKHNsb3RzICZv
cHRpb25hbCAoc3RhcnQtYml0IDApKQorICBgKCwqb3Blci1mdW5jKgorICAgICA6aW50LXRvLXRh
Z2dlZC11ZGVmCisgICAgIChsb2dpb3IKKyAgICAgICAsQCAobG9vcCBmb3Igc2xvdCBpbiBzbG90
cworICAgICAgICAgICAgICAgIHdoZW4gKGlzLWltbWVkaWF0ZS1zbG90PyBzbG90KQorICAgICAg
ICAgICAgICAgIDs7IFRoZSBhcmd1bWVudCBpcyBuYW1lZCBmcm9tIHRoZSBzbG90IG5hbWUuCisg
ICAgICAgICAgICAgICAgY29sbGVjdCBgKGFzaCAsKGdldC1zdG9yaW5nLWZvcm0gc2xvdAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcy1zbG90LXNs
b3QtbmFtZSBzbG90KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxzdGFydC1iaXQp
CisgICAgICAgICAgICAgICAgYW5kIGRvIChpbmNmIHN0YXJ0LWJpdCAoc2xvdC1ieXRlLWxlbmd0
aCBzbG90KSkpKSkpCisKKyhkZWZ1biBwYXJzZS1zbG90IChpbnB1dCkKKyAgKGRlY2xhcmUgKHNi
LWV4dDptdWZmbGUtY29uZGl0aW9ucyBzdHlsZS13YXJuaW5nKSkKKyAgKGRlc3RydWN0dXJpbmct
YmluZCAobmFtZSAmb3B0aW9uYWwgaW5pdCAma2V5ICh0eXBlIHQpIChhbGxvY2F0aW9uIDpkZWZh
dWx0KSkKKyAgICAgIChzYi1pbnQ6ZW5zdXJlLWxpc3QgaW5wdXQpCisgICAgKHZhbHVlcyBuYW1l
IGluaXQgdHlwZSBhbGxvY2F0aW9uKSkpCisKKyhkZWZ1biBtYWtlLXNsb3QtZGVmIChpbnB1dCkK
KyAgKG11bHRpcGxlLXZhbHVlLWJpbmQgKG5hbWUgaW5pdCB1c2VyLXR5cGUgYWxsb2NhdGlvbikg
KHBhcnNlLXNsb3QgaW5wdXQpCisgICAgKGxldCAoKHNsb3QgKG1ha2UtY3Mtc2xvdCA6c2xvdC1u
YW1lIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDphbGxvY2F0aW9uIGFsbG9j
YXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDphY2Nlc3Nvci1zeW0gKHNiLWlu
dDpzeW1ib2xpY2F0ZSAqY3VycmVudC1jcy1zeW0qIDotIG5hbWUpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6b3JpZy10eXBlIHVzZXItdHlwZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOmluaXQtdmFsdWUgaW5pdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OmluaXQtZm4gKHNiLWludDpnZW5zeW1pZnkqICpjdXJyZW50LWNzLXN5bSogOi1zbG90LWluaXQt
IG5hbWUpKSkpCisgICAgICAjKyhvcikKKyAgICAgICh1bmxlc3MgKGlzLWltbWVkaWF0ZS1zbG90
PyBzbG90KQorICAgICAgICAoc2V0ZiAoY3Mtc2xvdC1uZXctc3BlYyBzbG90KQorICAgICAgICAg
ICAgICAocHJvZHVjZS1uZXctc3BlYy1mb3Itc2xvdCBzbG90KSkpCisgICAgICBzbG90KSkpCisK
KyhkZWZ1biBwcm9kdWNlLWltbWVkaWF0ZS1hY2Nlc3NvcnMgKHNsb3QpCisgIChsZXQgKCh1ZGVm
IChpcy11ZGVmLXNsb3Q/IHNsb3QpKQorICAgICAgICAoYWNjZXNzb3Itc3ltIChjcy1zbG90LWFj
Y2Vzc29yLXN5bSBzbG90KSkpCisgICAgYCgoZGVmdW4gLGFjY2Vzc29yLXN5bSAoaWQpCisgICAg
ICAgIChkZWNsYXJlIChvcHRpbWl6ZSAoc3BlZWQgMykgKHNhZmV0eSAxKSAoZGVidWcgMSkpCisg
ICAgICAgICAgICAgICAgICMrKG9yKQorICAgICAgICAgICAgICAgICAodHlwZSAsKmN1cnJlbnQt
Y3Mtc3ltKiBpZCkpCisgICAgICAgICwoY29udmVydC1mcm9tLXVkZWYtaWYtbmVlZGVkIHVkZWYK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYChsZGIgLChpbW1lZGlhdGUt
c2xvdC1ieXRlLXNwZWMgc2xvdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHNiLWtlcm5lbDpnZXQtbGlzcC1vYmotYWRkcmVzcyBpZCkpKSkKKyAgICAgIChk
ZWZ1biAoc2V0ZiAsYWNjZXNzb3Itc3ltKSAobmV3IHBsYWNlIGltbWVkaWF0ZSEpCisgICAgICAg
IChkZWNsYXJlIChvcHRpbWl6ZSAoc3BlZWQgMykgKHNhZmV0eSAxKSAoZGVidWcgMSkpCisgICAg
ICAgICAgICAgICAgICh0eXBlICwoc2xvdC1pbnB1dC10eXBlIHNsb3QpIG5ldykKKyAgICAgICAg
ICAgICAgICAgIysob3IpCisgICAgICAgICAgICAgICAgICh0eXBlICwqY3VycmVudC1jcy1zeW0q
IHBsYWNlKSkKKyAgICAgICAgOzsgTm8gc2V0dGVyIGZ1bmN0aW9uIGZvciBpbW1lZGlhdGUgc2xv
dHMgLQorICAgICAgICA7OyB0aGV5J3JlIHVzZWQgdG8gX2FkZHJlc3NfIGRhdGEgYW5kIHNvIGNh
bid0IGJlIGNoYW5nZWQgYWZ0ZXJ3YXJkcz8/IQorICAgICAgICAodW5sZXNzIChlcSBpbW1lZGlh
dGUhIDppbW1lZGlhdGUpCisgICAgICAgICAgKGVycm9yICJJbW1lZGlhdGUgY29sdW1uLXN0cnVj
dHVyZSBzbG90cyBhcmUgcGFzc2VkIGJ5IHZhbHVlLCBwbGVhc2UgYWNrbm93bGVkZ2UgdGhpcyBm
YWN0IikpCisgICAgICAgIChsZXQgKChyYXcgKHNiLWtlcm5lbDpnZXQtbGlzcC1vYmotYWRkcmVz
cyBwbGFjZSkpKQorICAgICAgICAgIChzZXRmIChsZGIgLChpbW1lZGlhdGUtc2xvdC1ieXRlLXNw
ZWMgc2xvdCkgcmF3KQorICAgICAgICAgICAgICAgICwoZ2V0LXN0b3JpbmctZm9ybSBzbG90ICdu
ZXcpKQorICAgICAgICAgIChzZXRmIHBsYWNlCisgICAgICAgICAgICAgICAgKHNiLWtlcm5lbDol
bWFrZS1saXNwLW9iaiByYXcpKSkKKyAgICAgICAgbmV3KSkpKQorCisoZGVmdW4gc2V0dXAtc2xv
dC12ZWN0b3ItYWRkcmVzc2luZyAoc2xvdCBpbnB1dCBzdG9yYWdlLXZlYyB2ZWMtaW5kZXgtc3lt
IGJvZHkpCisgIDtjLXMgc2xvdCBpbnB1dCB2ZWMtbmFtZSB2ZWMtaW5kZXgtc3ltIGJvZHktZm9y
bSkKKyAgKGFzc2VydCAqaW5kZXgtc2xvdCopCisgIChsZXQgKChzdG9yLXR5cGUgKHNsb3Qtc3Rv
cmFnZS10eXBlIHNsb3QpKSkKKyAgICAoc2ItaW50OndpdGgtdW5pcXVlLW5hbWVzIChpaWR4IGlu
cHV0LWluZGV4IGJhdGNoLWlkeCBpbm5lci1pZHggMm5kLW9yLXN0b3JhZ2UtdmVjKQorICAgICAg
YChsZXQqICgoLGlpZHggLGlucHV0KQorICAgICAgICAgICAgICAoLGlucHV0LWluZGV4IChjb25k
ICgoLCAqcC1mdW5jLXN5bSogLGlpZHgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICgsKGNzLXNsb3QtYWNjZXNzb3Itc3ltICppbmRleC1zbG90KikKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAsaWlkeCkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOzsgVE9ETzogYWxsb3cgYW4gaW5kZXggYXMgd2VsbD8KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoZXJyb3IgIndyb25nIGlucHV0IH5zLCBleHBlY3QgdWRlZiB+cyIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICxpaWR4ICcsKmN1cnJlbnQtY3Mtc3ltKikpKSkp
CisgICAgICAgICAobXVsdGlwbGUtdmFsdWUtYmluZCAoLGJhdGNoLWlkeCAsaW5uZXItaWR4KQor
ICAgICAgICAgICAgIDs7IFRPRE86IGJhdGNoLXNpemUgY2hhbmdlYWJsZSBkdXJpbmcgcnVudGlt
ZT8KKyAgICAgICAgICAgICAsKGlmICpiYXRjaC1zaXplKgorICAgICAgICAgICAgICAgICAgYChm
bG9vciAsaW5wdXQtaW5kZXggLCpiYXRjaC1zaXplKikKKyAgICAgICAgICAgICAgICAgIGAodmFs
dWVzIG5pbCAsaW5wdXQtaW5kZXgpKQorICAgICAgICAgICAsKHVubGVzcyAqYmF0Y2gtc2l6ZSoK
KyAgICAgICAgICAgICAgYChkZWNsYXJlIChpZ25vcmUgLGJhdGNoLWlkeCkpKQorICAgICAgICAg
ICAobGV0KiAoKCwybmQtb3Itc3RvcmFnZS12ZWMgKHN2cmVmICwqc3RvcmFnZS1zeW1ib2wqICwq
dmVjdG9yLXN0b3JhZ2UtaW5kZXgqKSkKKyAgICAgICAgICAgICAgICAgICgsc3RvcmFnZS12ZWMg
LChpZiAqYmF0Y2gtc2l6ZSoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBg
KGFyZWYgKHRoZSAoc2ltcGxlLWFycmF5IHNpbXBsZS1hcnJheSAoKikpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLDJuZC1vci1zdG9yYWdlLXZlYykK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLGJhdGNoLWlkeCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAybmQtb3Itc3RvcmFnZS12ZWMp
KQorICAgICAgICAgICAgICAgICAgKCx2ZWMtaW5kZXgtc3ltICgqICxpbm5lci1pZHgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsKHZlYy1zbG90LWluZGV4LW11bHRpcGxp
ZXIgc2xvdCkpKSkKKyAgICAgICAgICAgICA7KGRlY2xhcmUgKGlnbm9yYWJsZSAsc3RvcmFnZS12
ZWMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IFVzZSAqYmF0Y2gt
c2l6ZSogaGVyZT8KKyAgICAgICAgICAgICAoZGVjbGFyZSAodHlwZSAoc2ltcGxlLWFycmF5ICxz
dG9yLXR5cGUgKCopKSAsc3RvcmFnZS12ZWMpKQorICAgICAgICAgICAgICwgYm9keSkpKSkpKQor
CisoZGVmdW4gcHJvZHVjZS12ZWN0b3ItZGF0YS1mb3JtcyAoc2xvdCBtb2RlLXN5bSB2ZWMtc3lt
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydC1zeW0gZW5kLXN5
bSBsZW4tc3ltKQorICAobGV0ICgodWRlZiAoaXMtdWRlZi1zbG90PyBzbG90KSkpCisgICAgYChl
Y2FzZSAsbW9kZS1zeW0KKyAgICAgICAoOmRpc3BsYWNlZAorICAgICAgICAodmFsdWVzCisgICAg
ICAgICAgLChpZiB1ZGVmCisgICAgICAgICAgICAgICA7OyBUT0RPOiBIb3cgdG8gZ2V0IGNoYW5n
ZXMgcmVmbGVjdGVkIGJhY2sgaW50byB0aGUgb3JpZ2luYWwKKyAgICAgICAgICAgICAgIDs7IGlm
IHRoZXJlJ3MgYSB0cmFuc2xhdGlvbiwgZWcuIGZvciBhbiBVREVGPz8KKyAgICAgICAgICAgICAg
IDtgKG1ha2UtYXJyYXkgbGVuCisgICAgICAgICAgICAgICA7ICAgICAgICAgICAgICAgOmVsZW1l
bnQtdHlwZSAnLChjcy1zLWFycmF5LWVsLXR5cGUgc2xvdCkKKyAgICAgICAgICAgICAgIDsgICAg
ICAgICAgICAgICA6aW5pdGlhbC1jb250ZW50cworICAgICAgICAgICAgICAgOyAgICAgICAgICAg
ICAgIChtYXAgJ2xpc3QKKyAgICAgICAgICAgICAgIDsgICAgICAgICAgICAgICAgICAgIChsYW1i
ZGEgKHgpCisgICAgICAgICAgICAgICA7ICAgICAgICAgICAgICAgICAgICAgICgsZnVuYyA6dWIt
eC10by11ZGVmLW9yLW5pbCB4KSkKKyAgICAgICAgICAgICAgIDsgICAgICAgICAgICAgICAgICAg
ICxiYWNrZW5kLWRhdGEpKQorICAgICAgICAgICAgICAgYChlcnJvciAiQ2FuJ3QgcmV0dXJuIGEg
ZGlzcGxhY2VkIHZlY3RvciwgfgorICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbiBz
dG9yYWdlIHR5cGUgfnMgLyB2aXNpYmxlIHR5cGUgfnMgaXMgbmVlZGVkIGZvciBzbG90IH5zLiIK
KyAgICAgICAgICAgICAgICAgICAgICAgJywoc2xvdC1zdG9yYWdlLXR5cGUgc2xvdCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgJywoY3Mtc2xvdC1vcmlnLXR5cGUgc2xvdCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgJywoY3Mtc2xvdC1zbG90LW5hbWUgc2xvdCkpCisgICAgICAgICAgICAgICAo
bWFrZS1hcnJheS13aXRoLXNsb3Qtc3RvcmFnZS10eXBlCisgICAgICAgICAgICAgICAgIHNsb3Qg
bGVuLXN5bQorICAgICAgICAgICAgICAgICA6ZGlzcGxhY2VkLXRvIHZlYy1zeW0KKyAgICAgICAg
ICAgICAgICAgOmRpc3BsYWNlZC1pbmRleC1vZmZzZXQgc3RhcnQtc3ltKSkpKQorICAgICAgICg6
c3Vic2VxCisgICAgICAgICh2YWx1ZXMKKyAgICAgICAgICAsKGxldCAoKGJhY2tlbmQtZGF0YSBg
KHN1YnNlcSAsdmVjLXN5bSAsc3RhcnQtc3ltICxlbmQtc3ltKSkpCisgICAgICAgICAgICAgKGlm
IHVkZWYKKyAgICAgICAgICAgICAgICAgOyB1c2UgbGVuLXN5bSBoZXJlPworICAgICAgICAgICAg
ICAgICA7IFdBUk5JTkc6IGJhZCBkaW1lbnNpb24gaW4gYXJyYXkgdHlwZTogTEVOCisgICAgICAg
ICAgICAgICAgIGAobWFwICcoYXJyYXkgKG9yIG51bGwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLCh1ZGVmLW1ldGFkYXRhLXVkZWYtc3ltIHVkZWYpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAo
eCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAsKGNvbnZlcnQtdG8tdWRlZi1pZi1uZWVkZWQg
dWRlZiBgeCkpCisgICAgICAgICAgICAgICAgICAgICAgICxiYWNrZW5kLWRhdGEpCisgICAgICAg
ICAgICAgICAgIGJhY2tlbmQtZGF0YSkpKSkpKSkKKworKGRlZnVuIHByb2R1Y2Utc2xpY2UtYWNj
ZXNzb3JzIChzbG90KQorICAobGV0KiAoKGFjY2Vzc29yLXN5bSAoY3Mtc2xvdC1hY2Nlc3Nvci1z
eW0gc2xvdCkpCisgICAgICAgICAodWRlZiAoaXMtdWRlZi1zbG90PyBzbG90KSkKKyAgICAgICAg
IChkZWZhdWx0LW1vZGUgKGlmIHVkZWYgOnN1YnNlcSA6ZGlzcGxhY2VkKSkpCisgICAgKG11bHRp
cGxlLXZhbHVlLWJpbmQgKGRpbWVuc2lvbiBlbC10eXBlKSAoc2xvdC1pcy12ZWN0b3ItdHlwZSBz
bG90KQorICAgICAgKGFzc2VydCAoYW5kIGRpbWVuc2lvbiBlbC10eXBlKSkKKyAgICAgIChmbGV0
CisgICAgICAgICAgKChhY2Nlc3MtYm9keSAoYm9keSkKKyAgICAgICAgICAgICBgKChkZWNsYXJl
ICh0eXBlIChvciBudWxsIHNiLWludDppbmRleCkgaW5kZXgpCisgICAgICAgICAgICAgICAgICAg
ICAgICAodHlwZSAob3IgbnVsbCBzYi1pbnQ6aW5kZXgpIHN0YXJ0KQorICAgICAgICAgICAgICAg
ICAgICAgICAgKHR5cGUgKG9yIG51bGwgc2ItaW50OmluZGV4KSBlbmQpKQorICAgICAgICAgICAg
ICAgLChzZXR1cC1zbG90LXZlY3Rvci1hZGRyZXNzaW5nCisgICAgICAgICAgICAgICAgICBzbG90
ICdpZCAndmVjICdiYXNlLWlkeAorICAgICAgICAgICAgICAgICAgYChsZXQgKChtYXgtbGVuICwo
aWYgKG51bWJlcnAgZGltZW5zaW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGltZW5zaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7
OyBSZXRyaWV2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCh3aXRo
LWMtcy1zbG90cyAoLCpjdXJyZW50LWNzLXN5bSogaWQpICgsZGltZW5zaW9uKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLGRpbWVuc2lvbikpKSkKKyAgICAgICAg
ICAgICAgICAgICAgIChkZWNsYXJlICh0eXBlIHNiLWludDppbmRleCBtYXgtbGVuKSkKKyAgICAg
ICAgICAgICAgICAgICAgIChjaGVjay10eXBlIGluZGV4IChvciBudWxsIHNiLWludDppbmRleCkp
CisgICAgICAgICAgICAgICAgICAgICAod2hlbiBpbmRleAorICAgICAgICAgICAgICAgICAgICAg
ICAoYXNzZXJ0ICg8PSBpbmRleCBtYXgtbGVuKSkpCisgICAgICAgICAgICAgICAgICAgICAoY2hl
Y2stdHlwZSBzdGFydCAob3IgbnVsbCBzYi1pbnQ6aW5kZXgpKQorICAgICAgICAgICAgICAgICAg
ICAgKHdoZW4gc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgKGFzc2VydCAoPD0gc3RhcnQg
bWF4LWxlbikpKQorICAgICAgICAgICAgICAgICAgICAgKGNoZWNrLXR5cGUgZW5kICAgKG9yIG51
bGwgc2ItaW50OmluZGV4KSkKKyAgICAgICAgICAgICAgICAgICAgICh3aGVuIGVuZAorICAgICAg
ICAgICAgICAgICAgICAgICAoYXNzZXJ0ICg8PSAob3Igc3RhcnQgMCkgZW5kIG1heC1sZW4pKSkK
KyAgICAgICAgICAgICAgICAgICAgICwgYm9keSkpKSkpCisgICAgICAgIGAoKGRlZnVuICxhY2Nl
c3Nvci1zeW0gKGlkICZrZXkgc3RhcnQgZW5kIGluZGV4IChtb2RlICxkZWZhdWx0LW1vZGUpKQor
ICAgICAgICAgICAgIlVzZSA6SU5ERVggZm9yIGEgc2luZ2xlIGVsZW1lbnQsIDpTVEFSVCBhbmQg
OkVORCBmb3IgYSBzbGljZSx+CisgICAgICAgICAgICBhbmQgOk1PREUgOlNVQlNFUSBmb3IgYSBz
ZXBhcmF0ZSBzZXF1ZW5jZSwgb3IgOkRJU1BMQUNFRC4iCisgICAgICAgICAgICAoZGVjbGFyZSAo
b3B0aW1pemUgKHNwZWVkIDMpIChzYWZldHkgMSkgKGRlYnVnIDEpKQorICAgICAgICAgICAgICAg
ICAgICAgIysob3IpCisgICAgICAgICAgICAgICAgICAgICAodHlwZSAsKmN1cnJlbnQtY3Mtc3lt
KiBpZCkpCisgICAgICAgICAgICAsQChhY2Nlc3MtYm9keQorICAgICAgICAgICAgICAgIGAoaWYg
aW5kZXgKKyAgICAgICAgICAgICAgICAgICAodmFsdWVzICwoY29udmVydC10by11ZGVmLWlmLW5l
ZWRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWRlZgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYChhcmVmIHZlYyAoKyBiYXNlLWlkeCBpbmRleCkpKSkKKyAgICAgICAg
ICAgICAgICAgICAgIChsZXQqICgocmVhbC1zdGFydCAoKyBiYXNlLWlkeCAob3Igc3RhcnQgMCkp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZWFsLWVuZCAoKyBiYXNlLWlkeCAob3Ig
ZW5kIG1heC1sZW4pKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGVuICgtIHJlYWwt
ZW5kIHJlYWwtc3RhcnQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGRlY2xhcmUgKGlnbm9y
YWJsZSBsZW4pKQorICAgICAgICAgICAgICAgICAgICAgICAsKHByb2R1Y2UtdmVjdG9yLWRhdGEt
Zm9ybXMgc2xvdCAnbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3ZlYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3JlYWwtc3RhcnQgJ3JlYWwtZW5kICdsZW4pKSkpKQorICAgICAgICAgIChk
ZWZ1biAoc2V0ZiAsYWNjZXNzb3Itc3ltKSAobmV3IGlkICZrZXkgc3RhcnQgZW5kIGluZGV4KQor
ICAgICAgICAgICAgKGRlY2xhcmUgKG9wdGltaXplIChzcGVlZCAzKSAoc2FmZXR5IDEpIChkZWJ1
ZyAxKSkKKyAgICAgICAgICAgICAgICAgICAgICMrKG9yKQorICAgICAgICAgICAgICAgICAgICAg
KHR5cGUgLCpjdXJyZW50LWNzLXN5bSogaWQpKQorICAgICAgICAgICAgLEAoYWNjZXNzLWJvZHkK
KyAgICAgICAgICAgICAgICBgKHByb2duCisgICAgICAgICAgICAgICAgICAgKGlmIGluZGV4Cisg
ICAgICAgICAgICAgICAgICAgICAoc2V0ZiAoYXJlZiB2ZWMgKCsgaW5kZXggYmFzZS1pZHgpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLChjb252ZXJ0LWZyb20tdWRlZi1pZi1uZWVkZWQg
ZWwtdHlwZSAnbmV3KSkKKyAgICAgICAgICAgICAgICAgICAgIChsZXQqICgocmVhbC1zdGFydCAo
KyBiYXNlLWlkeCAob3Igc3RhcnQgMCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChy
ZWFsLWVuZCAoKyBiYXNlLWlkeCAob3IgZW5kIG1heC1sZW4pKSkpCisgICAgICAgICAgICAgICAg
ICAgICAgIDsgIyg2IDQgMSkgaXMgbm90IG9mIHR5cGUgKFZFQ1RPUiAoVU5TSUdORUQtQllURSAz
MikpLgorICAgICAgICAgICAgICAgICAgICAgICA7IFdlIG5lZWQgdG8gYmUgbGF4IC0tIGJ1dCBo
b3cgbXVjaCB0eXBlLWNoZWNraW5nIGlzIHJpZ2h0PworICAgICAgICAgICAgICAgICAgICAgICA7
KGNoZWNrLXR5cGUgbmV3IChhcnJheSAsKHNsb3QtaW5wdXQtdHlwZSBzbG90KSAoKikpKQorICAg
ICAgICAgICAgICAgICAgICAgICA7KGFzc2VydCAodHlwZXAgbmV3ICcoYXJyYXkgLChzbG90LWlu
cHV0LXR5cGUgc2xvdCkgKCopKSkpCisgICAgICAgICAgICAgICAgICAgICAgIChsb29wIGZvciBl
bCBhY3Jvc3MgbmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIHVwZnJvbSBy
ZWFsLXN0YXJ0IGJlbG93IHJlYWwtZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv
IChzZXRmIChhcmVmIHZlYyBpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAsKGNvbnZlcnQtZnJvbS11ZGVmLWlmLW5lZWRlZCBlbC10eXBlIGBlbCkpKSkpCisgICAgICAg
ICAgICAgICAgICAgbmV3KSkpKSkpKSkKKworKGRlZnVuIHByb2R1Y2UtYXRvbS1hY2Nlc3NvcnMg
KHNsb3QpCisgIDsoZGVmbWV0aG9kIGdldHRlci1hbmQtc2V0dGVyLWZ1bmN0aW9ucyAoKHNsb3Qg
Y3MtbWl4aW4tdmVjdG9yLXN0b3JhZ2Utc2xvdCkgY3MpCisgIDsobXVsdGlwbGUtdmFsdWUtYmlu
ZCAoZnVuYykgKHBvc3NpYmx5LXVkZWYtdmFsdWUtdHJhbnNsYXRpb24gc2xvdCkKKyAgKGxldCAo
KHVkZWYgKGlzLXVkZWYtc2xvdD8gc2xvdCkpCisgICAgICAgIChhY2Nlc3Nvci1zeW0gKGNzLXNs
b3QtYWNjZXNzb3Itc3ltIHNsb3QpKSkKKyAgICBgKChkZWZ1biAsYWNjZXNzb3Itc3ltIChpZCkK
KyAgICAgICAgKGRlY2xhcmUgKG9wdGltaXplIChzcGVlZCAzKSAoc2FmZXR5IDEpIChkZWJ1ZyAx
KSkKKyAgICAgICAgICAgICAgICAgIysob3IpICh0eXBlICwqY3VycmVudC1jcy1zeW0qIGlkKSkK
KyAgICAgICAgLChzZXR1cC1zbG90LXZlY3Rvci1hZGRyZXNzaW5nCisgICAgICAgICAgIHNsb3Qg
J2lkICd2ZWMgJ2lkeAorICAgICAgICAgICAoY29udmVydC10by11ZGVmLWlmLW5lZWRlZCB1ZGVm
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoYXJlZiB2ZWMgaWR4KSkp
KQorICAgICAgKGRlZnVuIChzZXRmICxhY2Nlc3Nvci1zeW0pIChuZXcgaWQpCisgICAgICAgIChk
ZWNsYXJlIChvcHRpbWl6ZSAoc3BlZWQgMykgKHNhZmV0eSAxKSAoZGVidWcgMSkpCisgICAgICAg
ICAgICAgICAgICh0eXBlICwoc2xvdC1pbnB1dC10eXBlIHNsb3QpIG5ldykKKyAgICAgICAgICAg
ICAgICAgIysob3IpICh0eXBlICwqY3VycmVudC1jcy1zeW0qIGlkKSkKKyAgICAgICAgLChzZXR1
cC1zbG90LXZlY3Rvci1hZGRyZXNzaW5nCisgICAgICAgICAgIHNsb3QgJ2lkICd2ZWMgJ2lkeAor
ICAgICAgICAgICBgKHNldGYgKGFyZWYgdmVjIGlkeCkKKyAgICAgICAgICAgICAgICAgICwoZ2V0
LXN0b3JpbmctZm9ybSBzbG90ICduZXcpKSkKKyAgICAgICAgbmV3KQorICAgICAgOzsgUHJvdmlk
ZSBBVE9NSUMtUFVTSCBldGMuCisgICAgICAoZGVmdW4gKHNiLWV4dDpjYXMgLGFjY2Vzc29yLXN5
bSkgKG9sZCBuZXcgaWQpCisgICAgICAgICwoc2V0dXAtc2xvdC12ZWN0b3ItYWRkcmVzc2luZwor
ICAgICAgICAgICBzbG90ICdpZCAndmVjICdpZHgKKyAgICAgICAgICAgOzsgY2FuJ3QgbWFrZSBp
dCB3b3JrIHdpdGggU0ItRVhUOkNBUywKKyAgICAgICAgICAgOzsgVU5ERUZJTkVELUZVTkNUSU9O
IGFsd2F5cyBnZXRzIGNvbXBpbGVkIGluCisgICAgICAgICAgIDtgKHNiLWM6OiVjb21wYXJlLWFu
ZC1zd2FwLXN2cmVmIHZlYyBpZHggb2xkIG5ldykKKyAgICAgICAgICAgYChzYi1leHQ6Y2FzIChh
cmVmIHZlYyBpZHgpIG9sZCBuZXcpCisgICAgICAgICAgICkpKSkpCisKKyhkZWZ1biBwcm9kdWNl
LXZlY3Rvci1zdG9yYWdlLWFjY2Vzc29ycyAoc2xvdCkKKyAgKGlmIChzbG90LWlzLXZlY3Rvci10
eXBlIHNsb3QpCisgICAgICAocHJvZHVjZS1zbGljZS1hY2Nlc3NvcnMgc2xvdCkKKyAgICAgIChw
cm9kdWNlLWF0b20tYWNjZXNzb3JzIHNsb3QpKSkKKworCisoZGVmdW4gcHJvZHVjZS1hY2Nlc3Nv
cnMgKHNsb3RzKQorICAobGV0ICgoKmJpdC1pbmRleCogK3VkZWYtcmVzZXJ2ZWQtbG93LWJpdHMr
KQorICAgICAgICAoKnZlY3Rvci1zdG9yYWdlLWluZGV4KiAwKSkKKyAgICAobG9vcCBmb3Igc2xv
dCBpbiBzbG90cworICAgICAgICAgIGZvciBmdW5zID0gKGlmIChpcy1pbW1lZGlhdGUtc2xvdD8g
c2xvdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAocHJvZzEKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHByb2R1Y2UtaW1tZWRpYXRlLWFjY2Vzc29ycyBzbG90KQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGluY2YgKmJpdC1pbmRleCogKHNsb3QtYnl0ZS1sZW5ndGggc2xv
dCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9nMQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAocHJvZHVjZS12ZWN0b3Itc3RvcmFnZS1hY2Nlc3NvcnMgc2xvdCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChpbmNmICp2ZWN0b3Itc3RvcmFnZS1pbmRleCopKSkKKyAg
ICAgICAgICBhcHBlbmQgZnVucykpKQorCisoZGVmdW4gc2xvdC1hcmd1bWVudC1pbml0LWZyb20t
dWRlZiAoc2xvdCkKKyAgKGNvbnZlcnQtZnJvbS11ZGVmLWlmLW5lZWRlZAorICAgIChpcy11ZGVm
LXNsb3Q/IHNsb3QpCisgICAgKGNzLXNsb3QtaW5pdC12YWx1ZSBzbG90KSkpCisKKyhkZWZ1biBw
cm9kdWNlLXZlY3Rvci1hcmd1bWVudCAoc2xvdCkKKyAgKGxldCAoKHZlY3Rvci1sZW5ndGggKHNs
b3QtaXMtdmVjdG9yLXR5cGUgc2xvdCkpKQorICAgIChsaXN0IChjcy1zbG90LXNsb3QtbmFtZSBz
bG90KQorICAgICAgICAgIGAobWFrZS1hcnJheSAobGlzdCAsdmVjdG9yLWxlbmd0aCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgOmluaXRpYWwtZWxlbWVudCAsKGNzLXNsb3QtaW5pdC12YWx1ZSBz
bG90KQorICAgICAgICAgICAgICAgICAgICAgICA7OmVsZW1lbnQtdHlwZSAnLChzbG90LXN0b3Jh
Z2UtdHlwZSBzbG90KQorICAgICAgICAgICAgICAgICAgICAgICA6ZWxlbWVudC10eXBlICcsKHNs
b3QtaW5wdXQtdHlwZSBzbG90KSkpKSkKKworKGRlZnVuIHByb2R1Y2Utbm9udmVjdG9yLWFyZ3Vt
ZW50IChzbG90KQorICAobGlzdCAoY3Mtc2xvdC1zbG90LW5hbWUgc2xvdCkKKyAgICAgICAgICAg
ICAgKGNzLXNsb3QtaW5pdC12YWx1ZSBzbG90KSkpCisKKyhkZWZ1biBwcm9kdWNlLWFyZ3VtZW50
LWxpc3QgKHNsb3RzKQorICAobG9vcCBmb3Igc2xvdCBpbiAoY29lcmNlIHNsb3RzICdsaXN0KQor
ICAgICAgICBmb3IgdmVjdG9yLWxlbmd0aCA9IChzbG90LWlzLXZlY3Rvci10eXBlIHNsb3QpCisg
ICAgICAgIDtmb3IgaW5pdCA9IChzbG90LWFyZ3VtZW50LWluaXQtZnJvbS11ZGVmIHNsb3QpCisg
ICAgICAgIDs7IEFueSBVREVGID0+ICh1bnNpZ25lZCBYKSBjb252ZXJzaW9uIGhhcHBlbnMgaW4g
dGhlIFNFVEYuCisgICAgICAgIGNvbGxlY3QgKGlmIHZlY3Rvci1sZW5ndGgKKyAgICAgICAgICAg
ICAgICAgICAgKHByb2R1Y2UtdmVjdG9yLWFyZ3VtZW50IHNsb3QpCisgICAgICAgICAgICAgICAg
ICAgIChwcm9kdWNlLW5vbnZlY3Rvci1hcmd1bWVudCBzbG90KSkpKQorCisoZGVmdW4gZml4dXAt
Yml0cyAobmVlZHMtaW5kZXgtc2xvdCBpbW1lZGlhdGUtYml0cykKKyAgKGNvbmQKKyAgICAoKGFu
ZCBuZWVkcy1pbmRleC1zbG90IChub3QgKmluZGV4LWJpdHMqKSAgICAgICptYXgtYml0cyopCisg
ICAgIChzZXRmICppbmRleC1iaXRzKiAgICAgICAgICgtICptYXgtYml0cyogaW1tZWRpYXRlLWJp
dHMpKSkKKyAgICAoKGFuZCBuZWVkcy1pbmRleC1zbG90IChub3QgKmluZGV4LWJpdHMqKSAobm90
ICptYXgtYml0cyopKQorICAgICAoc2V0ZiAqbWF4LWJpdHMqICAgICAgICAgICArdWRlZi11c2Fi
bGUtcmVtYWluaW5nLWJpdHMrCisgICAgICAgICAgICppbmRleC1iaXRzKiAgICAgICAgICgtICpt
YXgtYml0cyogaW1tZWRpYXRlLWJpdHMpKSkKKyAgICAoKGFuZCBuZWVkcy1pbmRleC1zbG90KQor
ICAgICAoYXNzZXJ0ICppbmRleC1iaXRzKikpKQorICA7OyBpbmRleCBzbG90IGhhbmRsZWQsIG5v
dyBjaGVjay9kbyAqbWF4LWJpdHMqCisgIChjb25kCisgICAgKChhbmQgICAgICAqaW5kZXgtYml0
cyogICAgICAgKm1heC1iaXRzKikKKyAgICAgdCkKKyAgICAoKGFuZCAgICAgICppbmRleC1iaXRz
KiAgKG5vdCAqbWF4LWJpdHMqKSkKKyAgICAgKHNldGYgKm1heC1iaXRzKiAgICAgICAgICAgKCsg
KmluZGV4LWJpdHMqIGltbWVkaWF0ZS1iaXRzKSkpCisgICAgKChhbmQgKG5vdCAqaW5kZXgtYml0
cyopICAgICAgKm1heC1iaXRzKikKKyAgICAgKHNldGYgKmluZGV4LWJpdHMqICAgICAgICAgKC0g
Km1heC1iaXRzKiBpbW1lZGlhdGUtYml0cykpKQorICAgICgoYW5kIChub3QgKmluZGV4LWJpdHMq
KSAobm90ICptYXgtYml0cyopKQorICAgICAoc2V0ZiAqbWF4LWJpdHMqICAgICAgICAgICArdWRl
Zi11c2FibGUtcmVtYWluaW5nLWJpdHMrCisgICAgICAgICAgICppbmRleC1iaXRzKiAgICAgICAg
ICgtICptYXgtYml0cyogaW1tZWRpYXRlLWJpdHMpKSkpCisgICkKKworKGRlZnVuIHByb2R1Y2Ut
Y29uc3RydWN0b3JzIChpbnRlcm5hbCB2aXNpYmxlIHNsb3RzIHZhci1sZW4gaW5kZXgtc2xvdCkK
KyAgKGxldCAoKHNsb3QtbmFtZXMgKG1hcGNhciAjJ2NzLXNsb3Qtc2xvdC1uYW1lIHNsb3RzKSkK
KyAgICAgICAgKGhhcy1zdG9yZWQtc2xvdHM/IChyZW1vdmUgIydpcy1pbW1lZGlhdGUtc2xvdD8g
c2xvdHMpKQorICAgICAgICAobWFrZXItYXJnLWxpc3QgKHByb2R1Y2UtYXJndW1lbnQtbGlzdCBz
bG90cykpKQorICAgIChzYi1pbnQ6d2l0aC11bmlxdWUtbmFtZXMgKHRtcCBudW1lcmljLWluZGV4
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiB1cC10byBjLXMKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkLXNpemUgKQorICAgICAgYCgoZGVjbGFp
bSAoaW5saW5lICwgaW50ZXJuYWwpKQorICAgICAgICA7OyBGaXJzdCBzbG90IGlzIHRoZSBpbW1l
ZGlhdGUgaW5kZXgsIHRvIGJlIHJldHVybmVkICh3aXRoIG90aGVyIGltbWVkaWF0ZXMpIGluIGEg
dWRlZiEKKyAgICAgICAgKGRlZnVuICxpbnRlcm5hbCAsc2xvdC1uYW1lcworICAgICAgICAgIChk
ZWNsYXJlIChvcHRpbWl6ZSAoZGVidWcgMykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHNwZWVkIDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb21waWxhdGlvbi1zcGVl
ZCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2FmZXR5IDEpKSkKKyAgICAgICAg
ICAobGV0KiAoKCxjLXMgKGdldC1jcy1tZXRhZGF0YS1mcm9tLXN5bWJvbCAnLCAqY3VycmVudC1j
cy1zeW0qKSkpCisgICAgICAgICAgICAoZGVjbGFyZSAobm90aW5saW5lIGNvbHVtbi1zdHJ1Y3Qt
c2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgICMrKG9yKSh0eXBlIHVkZWYtYy1zLW1ldGFkYXRh
ICxjLXMpKQorICAgICAgICAgICAgOzsgZHJvcCB0aGUgcmVzaXplIGNoZWNrcyBmb3IgaW1tZWRp
YXRlLW9ubHkgc3RydWN0dXJlcworICAgICAgICAgICAgLCh3aGVuIChhbmQgaW5kZXgtc2xvdAor
ICAgICAgICAgICAgICAgICAgICAgICAgIGhhcy1zdG9yZWQtc2xvdHM/KQorICAgICAgICAgICAg
ICAgIDs7IE1ha2UgbnVtZXJpYyBpbmRleCBhdmFpbGFibGUgdmlhIGNvcnJlY3QgbmFtZQorICAg
ICAgICAgICAgICAgIGAobGV0KiAoKCxsZW4gKG9yICx2YXItbGVuIDEpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgOzsgRm9yIGEgdmFyaWFibGUtbGVuZ3RoIGFsbG9jYXRpb24sIHdlIG5lZWQg
dGhhdCBtdWNoIGZyZWUgc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICgsdXAtdG8gKCsg
LChjcy1zbG90LXNsb3QtbmFtZSBpbmRleC1zbG90KSAsbGVuKSkpCisgICAgICAgICAgICAgICAg
ICAgKGxvb3AgZm9yICxvbGQtc2l6ZSA9IChjb2x1bW4tc3RydWN0LXNpemUgLGMtcykKKyAgICAg
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoPj0gLHVwLXRvICxvbGQtc2l6ZSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgaSBmcm9tIDAgYmVsb3cgNQorICAgICAgICAgICAgICAgICAg
ICAgICAgIGRvIChjb2x1bW4tc3RydWN0LXJlc2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLGMtcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgMSBsZXZlbDogZXhw
b25lbnRpYWwgZ3Jvd3RoOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgMi1sZXZl
bDogb25seSBvbmUgKGJhdGNoLXNpemUpIGVsZW1lbnQgYWRkZWQKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICwoaWYgKmJhdGNoLXNpemUqCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGAoKyAsdXAtdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICwqYmF0Y2gtc2l6ZSopIDs7IFRPRE86IGFsbG93IGxhdGVyIGNoYW5naW5nPworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgKG1heCAocm91bmQgKCogKHNxcnQgMikKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICx1cC10bykp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrICx1cC10bworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MCkpKSkpCisgICAgICAg
ICAgICAgICAgICAgKHdoZW4gKD49ICx1cC10byAoY29sdW1uLXN0cnVjdC1zaXplICxjLXMpKQor
ICAgICAgICAgICAgICAgICAgICAgKGVycm9yICJDYW5ub3QgcmVzaXplIH5zIiAnLCpjdXJyZW50
LWNzLXN5bSopKSkpCisgICAgICAgICAgICA7OworICAgICAgICAgICAgKGxldCAoKCx0bXAgLCht
YWtlLXVkZWYtd2l0aC1pbW1lZGlhdGUtc2xvdHMtZm9ybSBzbG90cyAwKSkpCisgICAgICAgICAg
ICAgIDs7IEdlbmVyYXRlIFNFVEZzIGZvciBjb2x1bW4tc3RydWN0IHNsb3RzCisgICAgICAgICAg
ICAgICxAKGxvb3AgZm9yIHNsb3QgaW4gc2xvdHMKKyAgICAgICAgICAgICAgICAgICAgICBmb3Ig
bmFtZSA9IChjcy1zbG90LXNsb3QtbmFtZSBzbG90KQorICAgICAgICAgICAgICAgICAgICAgIHVu
bGVzcyAoaXMtaW1tZWRpYXRlLXNsb3Q/IHNsb3QpCisgICAgICAgICAgICAgICAgICAgICAgY29s
bGVjdCBgKHNldGYgKCwoY3Mtc2xvdC1hY2Nlc3Nvci1zeW0gc2xvdCkgLHRtcCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsbmFtZSkgaW50byBzZXRmcworICAgICAgICAg
ICAgICAgICAgICAgIGZpbmFsbHkgKHJldHVybiBzZXRmcykpCisgICAgICAgICAgICAgIDs7IFJl
dHVybiBzcGVjaWZpY2FsbHkgdGFnZ2VkIFVERUYtSU1NRURJQVRFCisgICAgICAgICAgICAgICx0
bXApKSkKKyAgICAgICAgOzsKKyAgICAgICAgOzsgVXNlci12aXNpYmxlIGNvbnN0cnVjdG9yIGZ1
bmN0aW9uLgorICAgICAgICAsKGlmICppbmRleC1zbG90KgorICAgICAgICAgICAgIGAoZGVmdW4g
LCB2aXNpYmxlICgma2V5ICxAIChyZXN0IG1ha2VyLWFyZy1saXN0KSkKKyAgICAgICAgICAgICAg
ICA7OyAsQCAocmVzdCBtYWtlci1jaGVja3MpCisgICAgICAgICAgICAgICAgOzsgVmFsdWUgYmVm
b3JlIGluY3JlbWVudGluZworICAgICAgICAgICAgICAgIDs7IEFza2VkIGZyb20gdGhlIF9jdXJy
ZW50XyBtZXRhZGF0YSBpbiBjYXNlIG9mIENPTFVNTi1TVFJVQ1QtUkVTRVQKKyAgICAgICAgICAg
ICAgICAobGV0KiAoKCx0bXAgKGdldC1jcy1tZXRhZGF0YS1mcm9tLXN5bWJvbCAnLCpjdXJyZW50
LWNzLXN5bSopKQorICAgICAgICAgICAgICAgICAgICAgICAoLG51bWVyaWMtaW5kZXggKGdldC1u
ZXctaWQtcmFuZ2UgLHRtcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLHZhci1sZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQpKQorICAgICAgICAgICAgICAgICAgICAgICAo
bWF4ICwoZXhwdCAyICppbmRleC1iaXRzKikpKQorICAgICAgICAgICAgICAgICAgOzsgVE9ETzog
LTEgYmVjYXVzZSBvZiBuaWwtdmFsdWU/CisgICAgICAgICAgICAgICAgICAod2hlbiAoPj0gLG51
bWVyaWMtaW5kZXggbWF4KQorICAgICAgICAgICAgICAgICAgICAoZXJyb3IgIk92ZXJmbG93aW5n
IFVERUYgaW5kZXggfnM6ICN4fngiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnLCpjdXJy
ZW50LWNzLXN5bSogbWF4KSkKKyAgICAgICAgICAgICAgICAgIDs7IEZpcnN0IGFyZyBpcyB0aGUg
bnVtZXJpYyBpbmRleCEKKyAgICAgICAgICAgICAgICAgICgsIGludGVybmFsICxudW1lcmljLWlu
ZGV4CisgICAgICAgICAgICAgICAgICAgICAsQCAocmVzdCBzbG90LW5hbWVzKSkpKQorICAgICAg
ICAgICAgIGAoZGVmdW4gLCB2aXNpYmxlICgma2V5ICxAIG1ha2VyLWFyZy1saXN0KQorICAgICAg
ICAgICAgICAgIDs7ICxAIG1ha2VyLWNoZWNrcworICAgICAgICAgICAgICAgICgsIGludGVybmFs
ICxAIHNsb3QtbmFtZXMpKSkpKSkpCisKKyhkZWNsYWltIChpbmxpbmUgZ2V0LW5ldy1pZC1yYW5n
ZSkpCisoZGVmdW4gZ2V0LW5ldy1pZC1yYW5nZSAob2JqICZvcHRpb25hbCBjb3VudCBvbmUtbGlu
ZWFyLXBpZWNlPykKKyAgIlJldHVybnMgdGhlIF9vbGRfIHZhbHVlLCBiZWZvcmUgaW5jcmVtZW50
aW5nIgorICAobGV0KiAoKGNvdW50IChvciBjb3VudCAxKSkpCisgICAgKGNoZWNrLXR5cGUgY291
bnQgKGludGVnZXIgMCAjLiAoZmxvb3IgbW9zdC1wb3NpdGl2ZS1maXhudW0gNCkpKQorICAgIChj
b25kCisgICAgICAgOzsgU2luZ2xlLWxldmVsIGFsbG9jYXRpb24gb3Igb25lIGVsZW1lbnQgb25s
eS4KKyAgICAgICA7OyBNYXliZSBuZWVkcyByZXNpemluZzsgdGhlIGNvbnN0cnVjdG9yIHdpbGwg
ZG8gdGhhdC4KKyAgICAgICgob3IgKD0gY291bnQgMSkKKyAgICAgICAgICAgKG5vdCAoY3MtbWV0
YS1iYXRjaC1zaXplIG9iaikpCisgICAgICAgICAgIChub3Qgb25lLWxpbmVhci1waWVjZT8pKQor
ICAgICAgIChzYi1leHQ6YXRvbWljLWluY2YgKGNzLW1ldGEtbmV4dCBvYmopIGNvdW50KSkKKyAg
ICAgIDs7IENoZWNrIGFsbG9jYXRpb24gY29uc3RyYWludAorICAgICAgKCg8IChjcy1tZXRhLWJh
dGNoLXNpemUgb2JqKSBjb3VudCkKKyAgICAgICAoZXJyb3IgIkFsbG9jYXRpb24gfmQgbGFyZ2Vy
IHRoYW4gYmF0Y2ggc2l6ZSB+cyBmb3IgfnMiCisgICAgICAgICAgICAgIGNvdW50CisgICAgICAg
ICAgICAgIChjcy1tZXRhLWJhdGNoLXNpemUgb2JqKQorICAgICAgICAgICAgICAoY3MtbWV0YS11
ZGVmIG9iaikpKQorICAgICAgOzsgRmluZCBhIHN1aXRhYmxlIHBvc2l0aW9uLgorICAgICAgKHQK
KyAgICAgICA7OyBTdHJhaWdodCBhbGxvY2F0aW9uIHdvdWxkIGdldCBzcGxpdCBvdmVyIHR3byBi
YXRjaGVzPworICAgICAgIDs7IFdlIGNhbid0IGFsbG93IHRoYXQuCisgICAgICAgKGRvdGltZXMg
KGkgMTUpCisgICAgICAgICAobGV0KiAoKGN1ciAodGhlIChpbnRlZ2VyIDAgIy4gKGZsb29yIG1v
c3QtcG9zaXRpdmUtZml4bnVtIDIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoY3MtbWV0
YS1uZXh0IG9iaikpKQorICAgICAgICAgICAgICAgIChicyAoY3MtbWV0YS1iYXRjaC1zaXplIG9i
aikpCisgICAgICAgICAgICAgICAgKHBvc2l0aW9uLXdpdGhpbi1iYXRjaCAobW9kIGN1ciBicykp
CisgICAgICAgICAgICAgICAgKG5leHQtcG9zICgrIGN1ciBjb3VudCkpKQorICAgICAgICAgICAo
aWYgKDw9ICgrIHBvc2l0aW9uLXdpdGhpbi1iYXRjaCBjb3VudCkgYnMpCisgICAgICAgICAgICAg
ICA7OyBHZXQgY3VycmVudCBwb3NpdGlvbgorICAgICAgICAgICAgICAgKGxldCAoKGNoZyAoc2It
ZXh0OmNvbXBhcmUtYW5kLXN3YXAgKGNzLW1ldGEtbmV4dCBvYmopCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQtcG9zKSkpCisgICAgICAgICAg
ICAgICAgIChpZiAoPSBjaGcgY3VyKQorICAgICAgICAgICAgICAgICAgICAgKHJldHVybi1mcm9t
IGdldC1uZXctaWQtcmFuZ2UgY3VyKQorICAgICAgICAgICAgICAgICAgICAgOzsgRWxzZSByYWNl
ZCwgcmV0cnkuCisgICAgICAgICAgICAgICAgICAgICBuaWwpKQorICAgICAgICAgICAgICAgOzsg
RG9lc24ndCBmaXQgaW50byBiZWd1biBiYXRjaC4KKyAgICAgICAgICAgICAgIChsZXQqICgobmV4
dC1iYXRjaCAoKyBjdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLSBw
b3NpdGlvbi13aXRoaW4tYmF0Y2gpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnMpKQorICAgICAgICAgICAgICAgICAgICAgIChhbGxvY2F0aW9uLWVuZCAoKyBuZXh0LWJh
dGNoIGNvdW50KSkpCisgICAgICAgICAgICAgICAgIDs7IFRyeSB0byBnZXQgdGhhdCBwb3NpdGlv
bgorICAgICAgICAgICAgICAgICAobGV0ICgoY2hnIChzYi1leHQ6Y29tcGFyZS1hbmQtc3dhcCAo
Y3MtbWV0YS1uZXh0IG9iaikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFsbG9jYXRpb24tZW5kKSkpCisgICAgICAgICAgICAgICAgICAgKHdo
ZW4gKD0gY2hnIGN1cikKKyAgICAgICAgICAgICAgICAgICAgIChyZXR1cm4tZnJvbSBnZXQtbmV3
LWlkLXJhbmdlIG5leHQtYmF0Y2gpKSkpKSkpCisgICAgICAgKGVycm9yICJjYW4ndCBnZXQgbmV3
IGFsbG9jYXRpb24gZm9yIH5zIGV2ZW4gYWZ0ZXIgYSBmZXcgcmV0cmllcy4gYnJva2VuIGxvZ2lj
PyIKKyAgICAgICAgICAgICAgKGNzLW1ldGEtdWRlZiBvYmopKSkpKSkKKworCisoZGVmbWFjcm8g
d2l0aC1iYXRjaGVkLWNzLWFsbG9jYXRpb24gKChjLXMtc3ltIGZuLW5hbWUgJmtleSBiYXRjaC1z
aXplIG5ldy1iYXRjaC1jYikgJmJvZHkgYm9keSkKKyAgIlByb3ZpZGUgRk4tTkFNRSBhcm91bmQg
Qk9EWSBhcyBhIGxvY2FsIGNvbnN0cnVjdG9yLAorICB0YWtpbmcgdGhlIHNhbWUgYXJndW1lbnRz
IGFzIHRoZSBjb25zdHJ1Y3RvciBvZiBDLVMtU1lNLAorICB3aXRoIGEgbG9jYWxseSByZXNlcnZl
ZCByYW5nZSBvZiBJRHMgc28gdGhhdCB0aHJlYWRzIG9wZXJhdGUKKyAgb24gZGlmZmVyZW50IGNh
Y2hlIGxpbmVzLgorICBORVctQkFUQ0gtQ0IsIHdoZW4gZ2l2ZW4sIGdldHMgY2FsbGVkIG9uIG5l
dyByZXNlcnZhdGlvbnMKKyAgd2l0aCB0aGUgbmV3IGJhc2UgaW5kZXggYW5kIHRoZSBsZW5ndGgu
IgorICAoY2hlY2stdHlwZSBmbi1uYW1lIHN5bWJvbCkKKyAgKHNiLWludDp3aXRoLXVuaXF1ZS1u
YW1lcyAobmV4dCBsZWZ0IG5ldy1iYXRjaCBkYXRhLXZhcikKKyAgICA7IChkZWZ1biByZXR1cm4t
YmF0Y2gtbWFjcm8gKG1hY3JvLW5hbWUgY29uc3RydWN0b3Igc2xvdHMpCisgICAgKGxldCogKChj
LXMgKGdldC1jcy1tZXRhZGF0YS1mcm9tLXN5bWJvbCBjLXMtc3ltIHQpKQorICAgICAgICAgICAo
YXJnLWxpc3QgKHByb2R1Y2UtYXJndW1lbnQtbGlzdCAoY3MtbWV0YS1zbG90cyBjLXMpKSkpCisg
ICAgICBgKGxldCAoKCxuZXh0IDApCisgICAgICAgICAgICAgKCxsZWZ0IDApCisgICAgICAgICAg
ICAgKCxkYXRhLXZhciAoZ2V0LWNzLW1ldGFkYXRhLWZyb20tc3ltYm9sICcsYy1zKSkpCisgICAg
ICAgICAobGFiZWxzCisgICAgICAgICAgICAgKCgsbmV3LWJhdGNoICgpCisgICAgICAgICAgICAg
ICAgOzsgVE9ETzogdHJ5IHRvIGV4YWN0bHkgZmlsbCB1cCwgc28gdGhhdCBvdGhlciB0aHJlYWRz
CisgICAgICAgICAgICAgICAgOzsgb3IgdGhlIG5leHQgY2FsbHMgaGF2ZSBjbGVhbiBiYXRjaGVz
IGp1c3QgZm9yIHRoZW1zZWx2ZXM/CisgICAgICAgICAgICAgICAgKHNldGYgLGxlZnQgKG9yICxi
YXRjaC1zaXplIChjcy1tZXRhLWJhdGNoLXNpemUgLGRhdGEtdmFyKSkpCisgICAgICAgICAgICAg
ICAgKHNldGYgLG5leHQgKGdldC1uZXctaWQtcmFuZ2UgLGRhdGEtdmFyICxsZWZ0KSkKKyAgICAg
ICAgICAgICAgICAsKHdoZW4gbmV3LWJhdGNoLWNiCisgICAgICAgICAgICAgICAgICBgKGZ1bmNh
bGwgLG5ldy1iYXRjaC1jYiAsbmV4dCAsbGVmdCkpKQorICAgICAgICAgICAgICA7OyBJbmRleCBn
ZXRzIGNhbGN1bGF0ZWQKKyAgICAgICAgICAgICAgKCxmbi1uYW1lICgma2V5ICxAIChyZXN0IGFy
Zy1saXN0KSkKKyAgICAgICAgICAgICAgICAobGV0KiAoKGlkICxuZXh0KQorICAgICAgICAgICAg
ICAgICAgICAgICAobmVlZGVkIChvciAsKGNzLW1ldGEtdmFyLWxlbi1zbG90LW5hbWUgYy1zKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSkpCisgICAgICAgICAgICAgICAg
ICAod2hlbiAoLz0gMSBuZWVkZWQpCisgICAgICAgICAgICAgICAgICAgIChlcnJvciAiYWxsb2Nh
dGlvbnMgPiAxIGVsZW1lbnQgdmlhIGJhdGNoIG1hY3JvIG5vdCBpbXBsZW1lbnRlZCB5ZXQiKSkK
KyAgICAgICAgICAgICAgICAgICh3aGVuICg8ICxsZWZ0IG5lZWRlZCkKKyAgICAgICAgICAgICAg
ICAgICAgKCxuZXctYmF0Y2gpCisgICAgICAgICAgICAgICAgICAgIChzZXRmIGlkICxuZXh0KSkK
KyAgICAgICAgICAgICAgICAgIChpbmNmICxuZXh0KQorICAgICAgICAgICAgICAgICAgKGRlY2Yg
LGxlZnQpCisgICAgICAgICAgICAgICAgICAoLChjcy1tZXRhLWNvbnN0cnVjdG9yIGMtcykKKyAg
ICAgICAgICAgICAgICAgICAgaWQKKyAgICAgICAgICAgICAgICAgICAgLEAgKHJlc3QKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAobWFwICdsaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjJ2NzLXNsb3Qtc2xvdC1uYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
Y3MtbWV0YS1zbG90cyBjLXMpKSkpKSkpCisgICAgICAgICAgIChsb2NhbGx5CisgICAgICAgICAg
ICAgLEAgYm9keSkpKSkpKQorCisoZGVmbWFjcm8gZGVmLWNvbHVtbi1zdHJ1Y3QgKG5hbWUtYW5k
LW9wdGlvbnMgJnJlc3Qgc2xvdC1kZWZpbml0aW9ucykKKyAgIkxpa2UgREVGU1RSVUNULCBidXQg
Y3JlYXRlcyBhIChvciwgZm9yIDpCQVRDSC1TSVpFLCBtdWx0aXBsZSkgYXJyYXkocykgcGVyIHNs
b3QsCisgIGFuZCB0aGUgXCJpZGVudGl0eVwiIG9mIGFuIGluc3RhbmNlIGlzIGFjdHVhbGx5IHRo
ZSBpbmRleAorICBpbiB0aGUgYXJyYXlzLCByZXR1cm5lZCBhcyBhIHVzZXItZGVmaW5lZCBpbnRl
Z2VyIHR5cGUuCisKKyAgUmVkZWZpbml0aW9uIGxvb3NlcyBhbGwgb2xkIGRhdGEgKGxpa2Ugd2l0
aCBERUZTVFJVQ1QsCisgIHRob3VnaCBmb3IgZGlmZmVyZW50IHJlYXNvbnMuKS4KKworICBBdmFp
bGFibGUgb3B0aW9uczoKKyAgLSA6Q09OU1RSVUNUT1IgKGRlZmF1bHRzIHRvIE1BS0UtPG5hbWU+
KQorICAtIDpJTkRFWC1CSVRTIHJlc3AuIDpNQVgtQklUUworICAtIDpJTklUSUFMLVNJWkUgdG8g
YXZvaWQgaW5pdGlhbCByZWFsbG9jYXRpb25zCisgIC0gOkJBVENILVNJWkUgYWxsb2NhdGlvbiBz
aXplIGZvciBhIDItbGV2ZWwgc3RydWN0dXJlOworICAgIHBhc3MgVCBmb3IgYSBoZXVyaXN0aWMg
dG8gZGVyaXZlIGEgc2l6ZSBmcm9tIDpJTklUSUFMLVNJWkUKKyAgLSA6V0lUSC1CQVRDSC1NQUNS
TyB0byBwcm92aWRlIGEgbWFjcm8gdGhhdCBkb2VzIGJhdGNoIGFsbG9jYXRpb25zLAorICAgIGZv
ciB1c2UgaW4gaGVhdnkgbXVsdGktdGhyZWFkZWQgcHJvZ3JhbXMKKworICBBZHZhbnRhZ2VzOgor
ICAtIEdDIG9ubHkgc2VlcyBhIGZldyBiaWcgc3BlY2lhbGl6ZWQgdmVjdG9ycywgc28gZG9lcyBt
dWNoIGxlc3Mgd29yaworICAtIHNtYWxsZXIgaW5zdGFuY2UgXCJwb2ludGVyc1wiIChkZXBlbmRp
bmcgb24gdGhlIG51bWJlciBvZiBpdGVtcworICAgIGVnLiAzMmJpdCBvciBldmVuIHNtYWxsZXIp
IHdoZW4gcmVmZXJlbmNpbmcgZnJvbSBvdGhlciBjb2x1bW4tc3RydWN0dXJlcworICBSZXN0cmlj
dGlvbnM6CisgIC0gR2FyYmFnZSBjb2xsZWN0aW9uIGlzIG5vdCBhdmFpbGFibGUgLS0gb25seSBy
ZXNldCBvZiBhbGwgZGF0YSwKKyAgICBvciB5b3UgbmVlZCB0byBrZWVwIGEgZnJlZSBsaXN0IG9y
IGZyZWUgcG9pbnRlciBjaGFpbi4iCisgIDs7IEdDIGlzIG5vdCB0ZWNobmljYWxseSBpbXBvc3Np
YmxlLCBvbmx5IFRPRE8KKyAgKGRlY2xhcmUgKG9wdGltaXplIChzcGVlZCAwKSAoZGVidWcgMykp
KQorICAoZGVzdHJ1Y3R1cmluZy1iaW5kIChzdHJ1Y3QtbmFtZSAmcmVzdCBvcHRpb25zKSAoc2It
aW50OmVuc3VyZS1saXN0IG5hbWUtYW5kLW9wdGlvbnMpCisgICAgKGFzc2VydCAoc3ltYm9scCBz
dHJ1Y3QtbmFtZSkpCisgICAgKGZsZXQgKChvcHRpb24gKG5hbWUgZGVmYXVsdCkKKyAgICAgICAg
ICAgICAob3IgKHNlY29uZCAoZmluZCBuYW1lIG9wdGlvbnMgOmtleSAjJ2ZpcnN0KSkgZGVmYXVs
dCkpKQorICAgICAgKGxldCogKCgqY3VycmVudC1jcy1zeW0qIHN0cnVjdC1uYW1lKQorICAgICAg
ICAgICAgICgqYml0LWluZGV4KiArdWRlZi1yZXNlcnZlZC1sb3ctYml0cyspCisgICAgICAgICAg
ICAgKCpzbG90LW5yKiAwKQorICAgICAgICAgICAgIChpbml0aWFsLXNpemUgKG9wdGlvbiA6aW5p
dGlhbC1zaXplIDE2Mzg0KSkKKyAgICAgICAgICAgICAoYmF0Y2hlZCUgKG9wdGlvbiA6YmF0Y2gt
c2l6ZSBuaWwpKQorICAgICAgICAgICAgICgqYmF0Y2gtc2l6ZSogKGlmIChlcSBiYXRjaGVkJSB0
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0LWJhdGNoLXNpemUgaW5p
dGlhbC1zaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhdGNoZWQlKSkKKyAg
ICAgICAgICAgICA7OworICAgICAgICAgICAgIChpbmRleC1uYW1lIChzYi1pbnQ6Z2Vuc3ltaWZ5
KiA6JWluZGV4KSkKKyAgICAgICAgICAgICA7OyBEZWZhdWx0IHRvIFVERUYgbWF4LWJpdHM/Cisg
ICAgICAgICAgICAgOzsgVGhlc2UgZGVwZW5kIG9uIGVhY2ggb3RoZXIgYW5kIGFueSA6SU1NRURJ
QVRFIHNsb3RzIC0KKyAgICAgICAgICAgICA7OyBhbmQgc2VsZi1yZWZlcmVuY2luZyBzbG90cyBu
ZWVkIHRvIGtub3cgaG93IG1hbnkgYml0cyB0aGV5IG5lZWQuLi4KKyAgICAgICAgICAgICAoaW5k
ZXgtYml0cyAob3B0aW9uIDppbmRleC1iaXRzIG5pbCkpCisgICAgICAgICAgICAgKCppbmRleC1i
aXRzKiBpbmRleC1iaXRzKQorICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgKGV4aXN0aW5n
LXVkZWYgKGdldC11ZGVmLW1ldGFkYXRhLWZyb20tc3ltYm9sICpjdXJyZW50LWNzLXN5bSopKQor
ICAgICAgICAgICAgICh3YW50cy1uaWwgKG9yIChvcHRpb24gOnJlc2VydmUtbmlsLXZhbHVlIG5p
bCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgZXhpc3RpbmctdWRlZgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2ItdWRlZi1pbW1lZGlhdGU6OnVkZWYt
bWV0YWRhdGEtbmlsPyBleGlzdGluZy11ZGVmKSkpKQorICAgICAgICAgICAgICgqb3Blci1mdW5j
KiAob3IgKG9wdGlvbiA6dWRlZi1vcGVyYXRvciBuaWwpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoYW5kIGV4aXN0aW5nLXVkZWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHNiLXVkZWYtaW1tZWRpYXRlOnVkZWYtbWV0YWRhdGEtZnVuYyBleGlzdGluZy11ZGVm
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzYi1pbnQ6c3ltYm9saWNhdGUgOnVk
ZWYvb3BlcmF0b3ItIHN0cnVjdC1uYW1lKSkpCisgICAgICAgICAgICAgKCUlMSAoc2V0dXAtdWRl
ZiBzdHJ1Y3QtbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmZ1bmMlICpvcGVy
LWZ1bmMqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dWRlZi1zeW0gc3RydWN0LW5h
bWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXgtYml0cyAqaW5kZXgtYml0cyoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXgtYml0cyBuaWwpKQorICAgICAgICAg
ICAgIDs7CisgICAgICAgICAgICAgKCptYXgtYml0cyogKG9wdGlvbiA6bWF4LWJpdHMgbmlsKSkK
KyAgICAgICAgICAgICAoKnN0b3JhZ2Utc3ltYm9sKiAoc2ItaW50OmdlbnN5bWlmeSogc3RydWN0
LW5hbWUgOi1zdG9yYWdlKSkKKyAgICAgICAgICAgICA7OworICAgICAgICAgICAgIChiYXNlLWNv
bnN0cnVjdG9yIChvcHRpb24gOmJhc2UtY29uc3RydWN0b3IgKHNiLWludDpnZW5zeW1pZnkqIHN0
cnVjdC1uYW1lIDotY29uc3RydWN0b3IpKSkKKyAgICAgICAgICAgICA7OworICAgICAgICAgICAg
IChjb25zdHJ1Y3Rvci1uYW1lIChvcHRpb24gOmNvbnN0cnVjdG9yCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoaW50ZXJuIChmb3JtYXQgbmlsICJ+YX5hIiA6bWFrZS0g
c3RydWN0LW5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChzeW1ib2wtcGFja2FnZSBzdHJ1Y3QtbmFtZSkpKSkKKyAgICAgICAgICAgICA7OworICAg
ICAgICAgICAgIChhcy1hbGlzdC1zeW0gKHNiLWludDpzeW1ib2xpY2F0ZSBzdHJ1Y3QtbmFtZSA6
LWFzLWFsaXN0KSkKKyAgICAgICAgICAgICAoKnAtZnVuYy1zeW0qIChvcHRpb24gOnVkZWYtdHlw
ZXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzYi1pbnQ6c3ltYm9saWNhdGUg
c3RydWN0LW5hbWUgOi1wKSkpCisgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAobmlsLXZh
bHVlICh3aGVuIChvciAqaW5kZXgtYml0cyoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3YW50cy1uaWwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICgxLSAoZXhwdCAyIChv
ciAqaW5kZXgtYml0cyogKm1heC1iaXRzKikpKSkpCisgICAgICAgICAgICAgOzsKKyAgICAgICAg
ICAgICAodXNlci1zbG90cyAobWFwY2FyICMnbWFrZS1zbG90LWRlZgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzbG90LWRlZmluaXRpb25zKSkKKyAgICAgICAgICAgICAodmVj
dG9yLXN0b3JhZ2Utc2xvdC1jb3VudCAoY291bnQtaWYtbm90ICMnaXMtaW1tZWRpYXRlLXNsb3Q/
IHVzZXItc2xvdHMpKQorICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgKHZhci1sZW4tc3lt
IChjaGVjay12YXItbGVuLXNsb3RzIHVzZXItc2xvdHMpKQorICAgICAgICAgICAgIChpbW1lZGlh
dGUtYml0cyAocmVkdWNlICMnKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChtYXBjYXIgKGxhbWJkYSAocykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGlmIChpcy1pbW1lZGlhdGUtc2xvdD8gcykKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciAoc2xvdC1ieXRlLWxlbmd0aCBz
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChlcnJvciAiTm8gbGVuZ3RoIGNhbiBiZSBkZXRlcm1pbmVkIGZvciBzbG90IH5zIG9mIH5zLiBV
REVGIG5vdCB5ZXQgZGVmaW5lZD8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcy1zbG90LXNsb3QtbmFtZSBzKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
Y3VycmVudC1jcy1zeW0qKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdXNlci1zbG90cykpKQorICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgKG5lZWRz
LWluZGV4LXNsb3QgKG9yICppbmRleC1iaXRzKgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAocGx1c3AgdmVjdG9yLXN0b3JhZ2Utc2xvdC1jb3VudCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKG51bGwgdXNlci1zbG90cykpKQorICAgICAgICAgICAgIDs7
IG5lZWQgdG8gZml4IHVwIHRoZSBsZW5ndGggZGVmaW5pdGlvbnMgaGVyZQorICAgICAgICAgICAg
ICglJTIgKGZpeHVwLWJpdHMgbmVlZHMtaW5kZXgtc2xvdCBpbW1lZGlhdGUtYml0cykpCisgICAg
ICAgICAgICAgOzsKKyAgICAgICAgICAgICAoKmluZGV4LXNsb3QqICh3aGVuIG5lZWRzLWluZGV4
LXNsb3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1ha2Utc2xvdC1kZWYKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBgKCxpbmRleC1uYW1lCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLChvciBuaWwtdmFsdWUgMCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6dHlwZSAodW5zaWduZWQtYnl0ZSAsKmluZGV4LWJpdHMqKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDphbGxvY2F0aW9uIDppbW1lZGlhdGUpKSkpCisg
ICAgICAgICAgICAgKGFsbC1zbG90cyAoaWYgKmluZGV4LXNsb3QqCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGNvbnMgKmluZGV4LXNsb3QqIHVzZXItc2xvdHMpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdXNlci1zbG90cykpCisgICAgICAgICAgICAgKGFjY2Vzc29ycyAocHJv
ZHVjZS1hY2Nlc3NvcnMgYWxsLXNsb3RzKSkpCisgICAgICAgIChkZWNsYXJlIChpZ25vcmUgJSUx
ICUlMikpCisgICAgICAgIDs7IEEgc29sZSBpbmRleCBzbG90IHRvIGlkZW50aWZ5IHNvbWV0aGlu
ZyBpcyBnb29kIGVub3VnaAorICAgICAgICAod2hlbiAoemVyb3AgKGxlbmd0aCBhbGwtc2xvdHMp
KQorICAgICAgICAgIChlcnJvciAiTmVlZCBhdCBsZWFzdCBvbmUgc2xvdCBpbiB+cyIgc3RydWN0
LW5hbWUpKQorICAgICAgICA7OyBjb2xsZWN0IGJhc2ljIHNsb3QgZGF0YSAtLSBkb25lLgorICAg
ICAgICA7OyB0aGVuIHJ1biBhIHNhbml0eSBjaGVjaywKKyAgICAgICAgKHdoZW4gKD4gKm1heC1i
aXRzKiArdWRlZi11c2FibGUtcmVtYWluaW5nLWJpdHMrKQorICAgICAgICAgIChlcnJvciAiKm1h
eC1iaXRzKiB0b28gbGFyZ2UiKSkKKyAgICAgICAgKHdoZW4gKDwgKm1heC1iaXRzKiAoKyAqaW5k
ZXgtYml0cyogaW1tZWRpYXRlLWJpdHMpKQorICAgICAgICAgIChlcnJvciAiKm1heC1iaXRzKiB+
ZCB0b28gc21hbGwsIG5lZWQgfmQgZm9yIGluZGV4IGFuZCB+ZCBmb3IgaW1tZWRpYXRlIHNsb3Rz
IgorICAgICAgICAgICAgICAgICAqbWF4LWJpdHMqICppbmRleC1iaXRzKiBpbW1lZGlhdGUtYml0
cykpCis7OyBub3cgd3JpdGUgY29kZQorICAgICAgICBgKGxvY2FsbHkKKyAgICAgICAgICAgKGRl
Y2xhcmUgKG9wdGltaXplIChzcGVlZCAyKSAoZGVidWcgMykgKHNhZmV0eSAyKSkpCisgICAgICAg
ICAgIChldmFsLXdoZW4gKDpjb21waWxlLXRvcGxldmVsIDpsb2FkLXRvcGxldmVsIDpleGVjdXRl
KQorICAgICAgICAgICAgIChkZWYtdWRlZi1pbW1lZGlhdGUgLHN0cnVjdC1uYW1lCisgICAgICAg
ICAgICAgICA6bWF4LWJpdHMgLCptYXgtYml0cyoKKyAgICAgICAgICAgICAgIDpmdW5jLXN5bSAs
Km9wZXItZnVuYyoKKyAgICAgICAgICAgICAgIDs7IE5JTCBnZXRzIHN0b3JlZCBpbiBVLUIgY29s
dW1ucyBhcyAtMSAobW9kIGJpdHMpIHZhbHVlcworICAgICAgICAgICAgICAgOzsgTm90ZTogTnVt
YmVyIG9mIF9pbmRleF8gYml0cywgbm90IHRvdGFsIHNpemUgaW5jbHVkaW5nIG90aGVyIGltbWVk
aWF0ZSBzbG90cyEKKyAgICAgICAgICAgICAgIDsgVE9ETyBjb25maWd1cmFibGU/CisgICAgICAg
ICAgICAgICA6bmlsLXZhbHVlICxuaWwtdmFsdWUpCisgICAgICAgICAgICAgOzsKKyAgICAgICAg
ICAgICAoZGVmdmFyICwqc3RvcmFnZS1zeW1ib2wqCisgICAgICAgICAgICAgICAodmVjdG9yICxA
KGxvb3AgcmVwZWF0IHZlY3Rvci1zdG9yYWdlLXNsb3QtY291bnQKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb2xsZWN0ICMoKSkpKQorICAgICAgICAgICAgIChkZWNsYWltICh0eXBl
IChzaW1wbGUtYXJyYXkgc2ltcGxlLWFycmF5ICgsdmVjdG9yLXN0b3JhZ2Utc2xvdC1jb3VudCkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCpzdG9yYWdlLXN5bWJvbCopCisgICAgICAg
ICAgICAgICAgICAgICAgKHNiLWV4dDphbHdheXMtYm91bmQgLCpzdG9yYWdlLXN5bWJvbCopKQor
ICAgICAgICAgICA7OworICAgICAgICAgICAoZXZhbC13aGVuICg6Y29tcGlsZS10b3BsZXZlbCA6
bG9hZC10b3BsZXZlbCA6ZXhlY3V0ZSkKKyAgICAgICAgICAgICA7OyBUT0RPOiBsb3NlcyB2YWx1
ZSB1cG9uIHJlbG9hZCwga2VlcCBvbGQgY29udGVudHM/CisgICAgICAgICAgICAgKHNiLXZtOndp
dGhvdXQtYXJlbmEKKyAgICAgICAgICAgICAgIChzZXQtYy1zLW1ldGFkYXRhICcsc3RydWN0LW5h
bWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmJhdGNoLXNp
emUgICAgLCAqYmF0Y2gtc2l6ZSoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOmluZGV4LWJpdHMgICAgLCAqaW5kZXgtYml0cyoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOnZhci1sZW4tc2xvdC1uYW1lICAnLHZhci1sZW4t
c3ltCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzbG90cyAg
ICAgICAgIChjb2VyY2UgJyxhbGwtc2xvdHMgJ3ZlY3RvcikKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOzp2YXItbGVuLXNsb3QgICwod2hlbiB2YXItbGVuLXN5
bQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7ICAgICAgICAg
ICAgICAgICAgYChmaW5kLXNsb3QtYnktbmFtZSAsdG1wICcsdmFyLWxlbi1zeW0pKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aGFzLWluZGV4LXNsb3QgLChh
bmQgbmVlZHMtaW5kZXgtc2xvdCB0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6ZGF0YS12ZWMgICAgICAsICpzdG9yYWdlLXN5bWJvbCoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNvbnN0cnVjdG9yICAgJywgYmFzZS1j
b25zdHJ1Y3RvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
cC1mdW5jdGlvbiAgICAnLCAqcC1mdW5jLXN5bSoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOmFzLWFsaXN0ICAgICAgJywgYXMtYWxpc3Qtc3ltKQorICAgICAg
ICAgICAgICAgICAsQChsb29wIGZvciBzbG90IGluIGFsbC1zbG90cworICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvciBpbml0ID0gKHNsb3QtYXJndW1lbnQtaW5pdC1mcm9tLXVkZWYgc2xvdCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZm4gPSAoc2xvdC1hcmd1bWVudC1pbml0LWZy
b20tdWRlZiBzbG90KQorICAgICAgICAgICAgICAgICAgICAgICAgIDs7IElOSVQgZm9ybSBtdXN0
IGJlIGV2YWx1YXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgYChkZWZ1biAs
KGNzLXNsb3QtaW5pdC1mbiBzbG90KSAoKSAsaW5pdCkpKQorICAgICAgICAgICAgIChkZWZ1biAs
KnAtZnVuYy1zeW0qICh4KQorICAgICAgICAgICAgICAgKCwqb3Blci1mdW5jKiA6dHlwZXAgeCkp
CisgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICA7OyBPbmx5IGlubGluZSBmb3IgdGhlIGNv
bnN0cnVjdG9ycworICAgICAgICAgICAgIChkZWNsYWltIChpbmxpbmUgLEAobWFwY2FyICMnc2Vj
b25kIGFjY2Vzc29ycykpKQorICAgICAgICAgICAgICxAIGFjY2Vzc29ycworICAgICAgICAgICAg
ICxAIChwcm9kdWNlLWNvbnN0cnVjdG9ycyBiYXNlLWNvbnN0cnVjdG9yIGNvbnN0cnVjdG9yLW5h
bWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsLXNsb3RzCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhci1sZW4tc3ltCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICppbmRleC1zbG90KikKKyAgICAgICAgICAgICA7
OworICAgICAgICAgICAgIChkZWZ1biAsYXMtYWxpc3Qtc3ltIChvYmopCisgICAgICAgICAgICAg
ICAiUmV0dXJucyBPQkogYXMgYW4gQUxJU1QiCisgICAgICAgICAgICAgICAsKHVubGVzcyB1c2Vy
LXNsb3RzCisgICAgICAgICAgICAgICAgICBgKGRlY2xhcmUgKGlnbm9yZSBvYmopKSkKKyAgICAg
ICAgICAgICAgIChsaXN0CisgICAgICAgICAgICAgICAgIDs7IERvbid0IHJlcG9ydCB0aGUgaW5k
ZXgKKyAgICAgICAgICAgICAgICAgLEAobG9vcCBmb3Igc2xvdCBpbiB1c2VyLXNsb3RzCisgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yIG5hbWUgPSAoY3Mtc2xvdC1zbG90LW5hbWUgc2xvdCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYWNjID0gKGNzLXNsb3QtYWNjZXNzb3Itc3lt
IHNsb3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgdW5sZXNzIChlcSBzbG90ICppbmRleC1z
bG90KikKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0IGAoY29ucyAsKGludGVybiAo
c3ltYm9sLW5hbWUgbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6a2V5d29yZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoLGFjYyBvYmopKSkpKQorICAgICAgICAgICAgIDs7IENhbid0IGtlZXAgdGhlbSBpbmxp
bmUsIGJyZWFrcyByZXNvbHZpbmcgdGhlICpTVE9SQUdFLVNZTUJPTCoKKyAgICAgICAgICAgICA7
OyBpbiBGQVNMcyB3aXRoIGlubGluZSBleHBhbnNpb24uCisgICAgICAgICAgICAgKGRlY2xhaW0g
KG5vdGlubGluZSAsQChtYXBjYXIgIydzZWNvbmQgYWNjZXNzb3JzKSkpKSkKKyAgICAgICAgICAg
OzsgUnVudGltZSBvbmx5CisgICAgICAgICAgIChjb2x1bW4tc3RydWN0LXJlc2V0ICcsc3RydWN0
LW5hbWUpCisgICAgICAgICAgIChjb2x1bW4tc3RydWN0LXJlc2l6ZSAnLHN0cnVjdC1uYW1lICxp
bml0aWFsLXNpemUpCisgICAgICAgICAgIDs7IGRvbmUKKyAgICAgICAgICAgJyxzdHJ1Y3QtbmFt
ZSkpKSkpCisKKworOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKyhkZWZ1biBzZXQtYy1zLW1ldGFkYXRhIChzdHJ1Y3QtbmFt
ZSAmcmVzdCBkZWZzKQorICAoc2V0ZiAoZ2V0IHN0cnVjdC1uYW1lICdjb2x1bW4tc3RydWN0LWRh
dGEpCisgICAgICAgIChhcHBseSAjJ21ha2UtdWRlZi1jLXMtbWV0YWRhdGEKKyAgICAgICAgICAg
ICAgIDp1ZGVmICAgICAgICAgIHN0cnVjdC1uYW1lCisgICAgICAgICAgICAgICBkZWZzKSkpCisK
KyhkZWZ1biBzbG90LW5ldy1lbGVtZW50IChiYXRjaC1zaXplIG11bHQgc2xvdCBlbC10eXBlKQor
ICAobGV0KiAoKGluaXQgKGZ1bmNhbGwgKGNzLXNsb3QtaW5pdC1mbiBzbG90KSkpKQorICAgIChp
ZiBiYXRjaC1zaXplCisgICAgICAgIChtYWtlLWFycmF5IChsaXN0ICgqIGJhdGNoLXNpemUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIG11bHQgMSkpKQorICAgICAgICAgICAgICAg
ICAgICA6ZWxlbWVudC10eXBlIGVsLXR5cGUKKyAgICAgICAgICAgICAgICAgICAgOmluaXRpYWwt
ZWxlbWVudCBpbml0KQorICAgICAgICBpbml0KSkpCisKKyhkZWZpbmUtY29tcGlsZXItbWFjcm8g
Z2V0LW5ldy1pZC1yYW5nZSAoJndob2xlIHdob2xlIG9iaiAmb3B0aW9uYWwgY291bnQgb25lLWxp
bmVhci1waWVjZT8pCisgIChkZWNsYXJlIChpZ25vcmUgb25lLWxpbmVhci1waWVjZT8pKQorICAo
aWYgKG9yIChhbmQgKGNvbnN0YW50cCBjb3VudCkKKyAgICAgICAgICAgICAgIChudW1iZXJwIGNv
dW50KQorICAgICAgICAgICAgICAgKD0gY291bnQgMSkpCisgICAgICAgICAgKG51bGwgY291bnQp
KQorICAgICAgYChzYi1leHQ6YXRvbWljLWluY2YgKGNzLW1ldGEtbmV4dCAsb2JqKSkKKyAgICAg
IHdob2xlKSkKKworOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKyhkZWNsYWltIChmdHlwZSAoZnVuY3Rpb24gKHQpIChzYi1p
bnQ6aW5kZXgpKSBjb2x1bW4tc3RydWN0LXNpemUpKQorKGRlZnVuIGNvbHVtbi1zdHJ1Y3Qtc2l6
ZSAob2JqKQorICAiUmV0dXJucyB0aGUgYWxsb2NhdGVkIGxlbmd0aCAobm90IHRoZSBudW1iZXIg
b2YgZWxlbWVudHMgdXNlZCkiCisgIChpZiAoc3ltYm9scCBvYmopCisgICAgICAoY29sdW1uLXN0
cnVjdC1zaXplCisgICAgICAgIChnZXQtY3MtbWV0YWRhdGEtZnJvbS1zeW1ib2wgb2JqIHQpKQor
ICAgICAgKGNzLW1ldGEtYWxsb2NhdGVkIG9iaikpKQorCisKKyhkZWZ1biBjb2x1bW4tc3RydWN0
LWxhc3QtaW5kZXggKG9iaikKKyAgIlJldHVybnMgdGhlIGxhc3QgdXNlZCBpbmRleDsKKyAgZG9l
c24ndCBjYXJlIGFib3V0IGZyYWdtZW50YXRpb24gd2l0aCBiYXRjaGVkIGFsbG9jYXRpb24uIgor
ICAoaWYgKHN5bWJvbHAgb2JqKQorICAgICAgKGNvbHVtbi1zdHJ1Y3QtbGFzdC1pbmRleAorICAg
ICAgICAoZ2V0LWNzLW1ldGFkYXRhLWZyb20tc3ltYm9sIG9iaiB0KSkKKyAgICA7OyBJbiBjYXNl
IHRoaXMgaXMgY2FsbGVkIGluIGFuIEFGVEVSLVJFU0laRS1IT09LLAorICAgIDs7IGVuc3VyZSB3
ZSdyZSBub3QgZ29pbmcgb3V0c2lkZSBhbGxvY2F0aW9ucworICAgICAgKG1pbiAoY3MtbWV0YS1h
bGxvY2F0ZWQgb2JqKQorICAgICAgICAgICAoY3MtbWV0YS1uZXh0ICAgICAgb2JqKSkpKQorCisK
KyhkZWZ1biBjb2x1bW4tc3RydWN0LWdldC1zdHJ1Y3QgKG9iaikKKyAgIlJldHVybnMgdGhlIGRh
dGEgb2YgT0JKIGFzIGFuIGFsaXN0LiIKKyAgKGFzc2VydCAodWRlZi1pbW1lZGlhdGUtcCBvYmop
KQorICAobXVsdGlwbGUtdmFsdWUtYmluZCAodHlwZSkgKHVkZWYtaW1tZWRpYXRlLXR5cGUtb2Yg
b2JqKQorICAgIDs7IE9wdGltaXphdGlvbnMgcG9zc2libGUKKyAgICAoYXNzZXJ0IHR5cGUpCisg
ICAgKGxldCAoKGMtcyAoZ2V0LWNzLW1ldGFkYXRhLWZyb20tc3ltYm9sIHR5cGUpKSkKKyAgICAg
IChmdW5jYWxsIChjcy1tZXRhLWFzLWFsaXN0IGMtcykKKyAgICAgICAgICAgICAgIG9iaikpKSkK
KworKGRlZnVuIHJlZHVjZS1lbGVtZW50LWNvdW50cyAodmVjIG5ldykKKyAgKGxvb3AgZm9yIHNs
b3QgYWNyb3NzIHZlYworICAgICAgICBmb3IgaSB1cGZyb20gMAorICAgICAgICBkbyAoc2V0ZiAo
YXJlZiB2ZWMgaSkKKyAgICAgICAgICAgICAgICAgKGFkanVzdC1hcnJheSBzbG90IChsaXN0IG5l
dykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZWxlbWVudC10eXBlIChhcnJheS1l
bGVtZW50LXR5cGUgc2xvdCkpKSkpCisKKyhkZWZ1biBpbmNyZWFzZS1lbGVtZW50LWNvdW50cyAo
Yy1zIG5ldy1sZW4pCisgICh3aXRoLXNsb3RzIChkYXRhLXZlYyBzbG90cyBiYXRjaC1zaXplKSBj
LXMKKyAgICAobG9vcCBmb3IgdmVjIGFjcm9zcyBkYXRhLXZlYworICAgICAgICAgIGZvciBpbmRl
eCB1cGZyb20gMAorICAgICAgICAgIDs7CisgICAgICAgICAgZm9yIHNsb3QgYWNyb3NzIChyZW1v
dmUtaWYgIydpcy1pbW1lZGlhdGUtc2xvdD8gc2xvdHMpCisgICAgICAgICAgOzsKKyAgICAgICAg
ICBmb3Igb2xkLWxlbiA9IChsZW5ndGggdmVjKQorICAgICAgICAgIDs7IFRoaXMgaXMgdG9vIGV4
cGVuc2l2ZSB0byBydW4gaW4gdGhlIGlubmVyIGxvb3AgYmVsb3cuCisgICAgICAgICAgZm9yIGVs
LXR5cGUgPSAoc2xvdC1zdG9yYWdlLXR5cGUgc2xvdCkKKyAgICAgICAgICBmb3IgbG93ZXItbXVs
dGlwbGllciA9IChzbG90LWlzLWZpeGVkLXZlY3Rvci10eXBlIHNsb3QpCisgICAgICAgICAgZm9y
IHRoaXMtZW5kID0gKCogbmV3LWxlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBi
YXRjaC1zaXplCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKG9yIGxvd2VyLW11bHRpcGxpZXIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEpKSkKKyAgICAgICAgICBmb3Igb25lLWVsZW1lbnQgPSAo
c2xvdC1uZXctZWxlbWVudCBiYXRjaC1zaXplCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG93ZXItbXVsdGlwbGllcgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbC10eXBlKQorICAgICAgICAgIDs7IEF0IGZpcnN0LCB3ZSB3
cml0ZSBPTkUtRUxFTUVOVCB0byBhbGwgaW5kaXplcy4uLgorICAgICAgICAgIGZvciBuZXctdmVj
ID0gKG1ha2UtYXJyYXkgKGxpc3QgdGhpcy1lbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6ZWxlbWVudC10eXBlIChpZiBiYXRjaC1zaXplCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgKHZlY3RvciAsZWwtdHlwZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVs
LXR5cGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aW5pdGlhbC1lbGVt
ZW50IG9uZS1lbGVtZW50KQorICAgICAgICAgIDs7IHRoZW4gcmVwbGFjZSB3aXRoIG9sZCBjb250
ZW50cyAuLi4KKyAgICAgICAgICBkbyAocmVwbGFjZSBuZXctdmVjIHZlYyA6ZW5kMSBvbGQtbGVu
KQorICAgICAgICAgIDs7IGFuZCBmaW5hbGx5IHNldCBuZXcgY29udGVudHMsCisgICAgICAgICAg
Ozsga2VlcGluZyBPTkUtRUxFTUVOVCBhdCB0aGUgT0xELUxFTiBpbmRleAorICAgICAgICAgIGRv
IChsb29wIGZvciBpIGZyb20gKDErIG9sZC1sZW4pIGJlbG93IHRoaXMtZW5kCisgICAgICAgICAg
ICAgICAgICAgZG8gKHNldGYgKGFyZWYgbmV3LXZlYyBpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChzbG90LW5ldy1lbGVtZW50IGJhdGNoLXNpemUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsb3dlci1tdWx0aXBsaWVyCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvdAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsLXR5cGUpKSkKKyAgICAgICAgICBkbyAoc2V0
ZiAoYXJlZiBkYXRhLXZlYyBpbmRleCkKKyAgICAgICAgICAgICAgICAgICBuZXctdmVjKSkpKQor
CisKKyhkZWZnZW5lcmljIGFmdGVyLXJlc2l6ZS1ob29rIChzeW0gYy1zKQorICAoOm1ldGhvZCAo
YSBiKQorICAgIChkZWNsYXJlIChpZ25vcmUgYSBiKSkKKyAgICB0KSkKKworKGRlZm1ldGhvZCBj
b2x1bW4tc3RydWN0LXJlc2l6ZSAoKGMtcyBzeW1ib2wpIG5ldy1zaXplICZrZXkgZm9yY2Utc21h
bGxlcikKKyAgKGNvbHVtbi1zdHJ1Y3QtcmVzaXplIChnZXQtY3MtbWV0YWRhdGEtZnJvbS1zeW1i
b2wgYy1zIHQpCisgICAgICAgICAgICAgICAgICAgICAgICBuZXctc2l6ZQorICAgICAgICAgICAg
ICAgICAgICAgICAgOmZvcmNlLXNtYWxsZXIgZm9yY2Utc21hbGxlcikpCisKKyhkZWZtZXRob2Qg
Y29sdW1uLXN0cnVjdC1yZXNpemUgKChjLXMgdWRlZi1jLXMtbWV0YWRhdGEpIG5ldy1zaXplICZr
ZXkgZm9yY2Utc21hbGxlcikKKyAgIlJlc2l6ZXMgdG8gKGF0IGxlYXN0KSBORVctU0laRS4KKyAg
Q2FsbHMgY29uY3VycmVuY3ktdW5zYWZlIEFESlVTVC1BUlJBWSBmb3IgYSBzaW5nbGUtbGV2ZWwg
Y29sdW1uLXN0cnVjdCwKKyAgb3IgYWRkcy9yZW1vdmVzIGJhdGNoZXMgZm9yIGEgdHdvLWxldmVs
IGNvbHVtbi1zdHJ1Y3QuIgorICA7KGRlY2xhcmUgKG9wdGltaXplIChzYi1jOmluc3RydW1lbnQt
Y29uc2luZyAwKSkpCisgIChkZWNsYXJlIChvcHRpbWl6ZSAoZGVidWcgMykpKQorICAoc2ItdGhy
ZWFkOndpdGgtbXV0ZXggKChjcy1tZXRhLWxvY2sgYy1zKSkKKyAgICAoc2Itdm06d2l0aG91dC1h
cmVuYQorICAgICAgKGNvbmQKKyAgICAgICAgKCg8IG5ldy1zaXplIChjcy1tZXRhLWFsbG9jYXRl
ZCBjLXMpKQorICAgICAgICAgOzsgcmVkdWNlIHNpemUKKyAgICAgICAgICh3aGVuIGZvcmNlLXNt
YWxsZXIKKyAgICAgICAgICAgOzsgYnV0IG9ubHkgd2hlbiBmb3JjZWQgdG8hCisgICAgICAgICAg
IChsZXQgKChuZXctY291bnQgKGlmIChjcy1tZXRhLWJhdGNoLXNpemUgYy1zKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA7OyBTZXQgbnVtYmVyIG9mIGJhdGNoZXMgKHJvdW5kZWQg
dXApLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2VpbGluZyBuZXctc2l6ZSAo
Y3MtbWV0YS1iYXRjaC1zaXplIGMtcykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDs7IG9yIGp1c3QgbGVuZ3RoIG9mIHNsb3QgdmVjdG9ycy4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3LXNpemUpKSkKKyAgICAgICAgICAgICA7OyBUT0RPOiBDQVM/IHNob3Vs
ZG4ndCBoYXBwZW4gY29uY3VycmVudGx5IHdpdGggYWxsb2NhdGlvbnM/CisgICAgICAgICAgICAg
KHNldGYgKGNzLW1ldGEtbmV4dCBjLXMpCisgICAgICAgICAgICAgICAgICAgKG1pbiAoY3MtbWV0
YS1uZXh0IGMtcykKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldy1zaXplKSkKKyAgICAgICAg
ICAgICAoc2V0ZiAoY3MtbWV0YS1hbGxvY2F0ZWQgYy1zKQorICAgICAgICAgICAgICAgICAgIG5l
dy1zaXplKQorICAgICAgICAgICAgIChzYi12bTold3JpdGUtYmFycmllcikKKyAgICAgICAgICAg
ICAocmVkdWNlLWVsZW1lbnQtY291bnRzIChjcy1tZXRhLWRhdGEtdmVjIGMtcykKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldy1jb3VudCkKKyAgICAgICAgICAgICAoc2It
dm06JXdyaXRlLWJhcnJpZXIpKSkpCisgICAgICAgICgoPSBuZXctc2l6ZSAoY3MtbWV0YS1hbGxv
Y2F0ZWQgYy1zKSkKKyAgICAgICAgIDs7IG5vdGhpbmcgdG8gZG8gYWZ0ZXIgYWNxdWlyaW5nIG11
dGV4CisgICAgICAgICB0KQorICAgICAgICAodAorICAgICAgICAgOzsgZW5sYXJnZS4KKyAgICAg
ICAgIChsZXQqICgoMi1sZXZlbD8gKGNzLW1ldGEtYmF0Y2gtc2l6ZSBjLXMpKQorICAgICAgICAg
ICAgICAgIChuZXctY291bnQgKGlmIDItbGV2ZWw/CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGNlaWxpbmcgbmV3LXNpemUgKGNzLW1ldGEtYmF0Y2gtc2l6ZSBjLXMpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldy1zaXplKSkpCisgICAgICAgICAgIChp
bmNyZWFzZS1lbGVtZW50LWNvdW50cyBjLXMgbmV3LWNvdW50KQorICAgICAgICAgICAoc2Itdm06
JXdyaXRlLWJhcnJpZXIpCisgICAgICAgICAgIChzZXRmIChjcy1tZXRhLWFsbG9jYXRlZCBjLXMp
CisgICAgICAgICAgICAgICAgIChpZiAyLWxldmVsPworICAgICAgICAgICAgICAgICAgICAgKCog
bmV3LWNvdW50IChjcy1tZXRhLWJhdGNoLXNpemUgYy1zKSkKKyAgICAgICAgICAgICAgICAgICAg
IG5ldy1zaXplKSkKKyAgICAgICAgICAgKHNiLXZtOiV3cml0ZS1iYXJyaWVyKQorICAgICAgICAg
ICAoYWZ0ZXItcmVzaXplLWhvb2sgKGNzLW1ldGEtdWRlZiBjLXMpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjLXMpKSkpKSkKKyAgKGNvbHVtbi1zdHJ1Y3Qtc2l6ZSBjLXMpKQorCiso
ZGVmdW4gY29sdW1uLXN0cnVjdC1yZXNldCAob2JqKQorICAiU29mdC1yZXNldHMgT0JKLCBpZS4g
c2V0cyB0aGUgbGFzdCB1c2VkIGluZGV4IHRvIDAuIgorICAoY29uZAorICAgICgoc3ltYm9scCBv
YmopCisgICAgIChjb2x1bW4tc3RydWN0LXJlc2V0CisgICAgICAgKGdldC1jcy1tZXRhZGF0YS1m
cm9tLXN5bWJvbCBvYmogdCkpKQorICAgICh0CisgICAgIDs7IERvIHRoYXQgZmlyc3QsIHNvIHRo
YXQgQy1TLVZBTFVFUyBjYW4gYmUgdXNlZCBpbiBhIEFGVEVSLVJFU0laRS1IT09LCisgICAgIChj
b2x1bW4tc3RydWN0LXJlc2l6ZSBvYmogMCA6Zm9yY2Utc21hbGxlciB0KQorICAgICApKSkKKwor
KGRlZnVuIGNvbHVtbi1zdHJ1Y3QtY2xlYXIgKG9iaiAma2V5IG5ldy1pbml0aWFsLXNpemUpCisg
ICJIYXJkLXJlc2V0cyBPQkosIGllLiBkcm9wcyBzdG9yYWdlIHZlY3RvcnMuIgorICAoaWYgKHN5
bWJvbHAgb2JqKQorICAgICAgKGNvbHVtbi1zdHJ1Y3QtcmVzZXQKKyAgICAgICAgKGdldC1jcy1t
ZXRhZGF0YS1mcm9tLXN5bWJvbCBvYmogdCkpCisgICAgICAocHJvZ24KKyAgICAgICAgKGNvbHVt
bi1zdHJ1Y3QtcmVzZXQgb2JqKQorICAgICAgICAod2hlbiBuZXctaW5pdGlhbC1zaXplCisgICAg
ICAgICAgKGNvbHVtbi1zdHJ1Y3QtcmVzaXplIG9iaiBuZXctaW5pdGlhbC1zaXplKSkKKyAgICAg
ICAgbmV3LWluaXRpYWwtc2l6ZSkpKQorCis7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKGRlZnVuIGNoZWNrLXZhci1sZW4t
c2xvdHMgKHNsb3RzKQorICA7OyBJZiB0aGVyZSBhcmUgc2xvdHMgd2l0aCB2YXJpYWJsZSBsZW5n
dGgsCisgIDs7IHRoZSBzdHJ1Y3R1cmUgbXVzdCBjb250YWluIG9ubHkgOmltbWVkaWF0ZSBhbmQK
KyAgOzsgc2xvdHMgd2l0aCBzYW1lIGxlbmd0aCBzcGVjaWZpY2F0aW9uCisgIDs7IChhcyB0aGUg
aW5kZXggY2FuIG9ubHkgc3RvcmUgYSBzaW5nbGUgc3RhcnQgcG9zaXRpb24pLgorICA7OworICA7
OyBUbyBhbGxvdyBtdWx0aXBsZSwgZGlmZmVyZW50IGxlbmd0aHMKKyAgOzsgd2UnZCBuZWVkIHRv
IHJvdW5kIHVwIHRvIHRoZSBsYXJnZXN0IG9uZQorICA7OyBhbmQgYWNjZXB0IHBhZGRpbmcgaW4g
dGhlIG90aGVyIHNsb3RzLgorICAobGV0ICgodmFyLWxlbi1hcmdzICgpKQorICAgICAgICAobm9u
LWltbS1zbG90cyAoKSkpCisgICAgKGRvbGlzdCAoc2xvdCBzbG90cykKKyAgICAgIChtdWx0aXBs
ZS12YWx1ZS1iaW5kIChkaW0pIChzbG90LWlzLXZlY3Rvci10eXBlIHNsb3QpCisgICAgICAgIChj
b25kCisgICAgICAgICAgKChpcy1pbW1lZGlhdGUtc2xvdD8gc2xvdCkKKyAgICAgICAgICAgOzsg
aWdub3JlCisgICAgICAgICAgIHQpCisgICAgICAgICAgKGRpbQorICAgICAgICAgICAod2hlbiAo
c3ltYm9scCBkaW0pCisgICAgICAgICAgICAgKHB1c2huZXcgZGltIHZhci1sZW4tYXJncworICAg
ICAgICAgICAgICAgICAgICAgIDp0ZXN0ICMnZXEpKSkKKyAgICAgICAgICAodAorICAgICAgICAg
ICA7OyBub24taW1tZWRpYXRlIHNsb3QKKyAgICAgICAgICAgKHB1c2ggKGNzLXNsb3Qtc2xvdC1u
YW1lIHNsb3QpCisgICAgICAgICAgICAgICAgIG5vbi1pbW0tc2xvdHMpKSkpKQorICAgIChjYXNl
IChsZW5ndGggdmFyLWxlbi1hcmdzKQorICAgICAgKDAgOzsgbm9uZSwgb2sKKyAgICAgICB0KQor
ICAgICAgKDEgOzsgb25seSBhIHNpbmdsZSBsZW5ndGggdmFyaWFibGUgdXNlZAorICAgICAgIDs7
IFRPRE86IHByb3ZpZGUgYSB3YXkgdG8gY29tYmluZSB0d28gc3RydWN0dXJlcywgdXNpbmcgdHdv
IGluZGl6ZXMsCisgICAgICAgOzsgaW50byBvbmUgaW1tZWRpYXRlPworICAgICAgICh3aGVuIG5v
bi1pbW0tc2xvdHMKKyAgICAgICAgIChlcnJvciAiT25seSBhIHNpbmdsZSB2ZWN0b3IgaW5kZXgg
aW1wbGVtZW50ZWQgLS0gfgorICAgICAgICAgICAgICAgIHZhcmlhYmxlLWxlbmd0aCBzbG90cyB3
aXRoIGxlbmd0aCB+cyBhbmQgbm9uLWltbWVkaWF0ZSBzbG90cyB+cyBpbiB0aGUgc2FtZSBzdHJ1
Y3R1cmUgd291bGQgd2FzdGUgbWVtb3J5LiIKKyAgICAgICAgICAgICAgICB2YXItbGVuLWFyZ3Mg
bm9uLWltbS1zbG90cykpKQorICAgICAgKHQKKyAgICAgICAgKGVycm9yICJBbGwgc2xvdHMgd2l0
aCB2YXJpYWJsZSBsZW5ndGggdmVjdG9ycyBtdXN0IHVzZSB0aGUgc2FtZSBzeW1ib2wgZm9yIHRo
ZSBsZW5ndGgsIH4KKyAgICAgICAgICAgICAgIGFuZCB0aGlzIG11c3QgYmUgZGVmaW5lZCBhcyBh
biBzbG90IHdpdGggOkFMTE9DQVRJT04gOklNTUVESUFURTsgfgorICAgICAgICAgICAgICAgZm91
bmQgfnMuIiB2YXItbGVuLWFyZ3MpKSkKKyAgICAoZmlyc3QgdmFyLWxlbi1hcmdzKSkpCisKKzs7
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCis7OyBIb29rIGludG8gQ0w6V0lUSC1TTE9UUz8KKzs7IHNiLW1vcDpzbG90LXZhbHVl
LXVzaW5nLWNsYXNzPworKGRlZm1hY3JvIHdpdGgtYy1zLXNsb3RzICgodWRlZi1uYW1lIGluZGV4
KSBuYW1lcyAmYm9keSBib2R5KQorICAiSW5zdGFsbHMgc3ltYm9sLW1hY3JvcyB0aGF0IGFjY2Vz
cyBOQU1FUyBmcm9tIFVERUYtTkFNRQorICBhdCBJTkRFWCAod2hpY2ggY2FuIHJlc3AuIHNob3Vs
ZCBiZSBhIFVERUYpLgorICBOQU1FUyBjYW4gYmUgYSBsaXN0IG9mIHNsb3QgbmFtZXMgb3IgYSBs
aXN0IG9mIChTWU0gU0xPVCkuIgorICAobXVsdGlwbGUtdmFsdWUtYmluZCAoYy1zKSAoZ2V0LWNz
LW1ldGFkYXRhLWZyb20tc3ltYm9sIHVkZWYtbmFtZSB0KQorICAgIChzYi1pbnQ6d2l0aC11bmlx
dWUtbmFtZXMgKGlpZHgpCisgICAgICA7IG5vIFNCLUlOVDpPTkNFLU9OTFkgKGluZGV4KSAtLQor
ICAgICAgOzsgaW1tZWRpYXRlIHNsb3RzIG11c3QgYWNjZXNzIHRoZSBvcmlnaW5hbCBwbGFjZSEK
KyAgICAgIDs7IFRPRE86IHdhcm4gb24gc2lkZS1lZmZlY3RzPworICAgICAgYChsZXQgKCgsaWlk
eCAsaW5kZXgpKQorICAgICAgICAgKGlmICgsKHVkZWYtbWV0YWRhdGEtZnVuYyB1ZGVmLW5hbWUp
IDp0eXBlcCAsaWlkeCkKKyAgICAgICAgICAgKHN5bWJvbC1tYWNyb2xldAorICAgICAgICAgICAg
ICAgLChsb29wIGZvciBlbnRyeSBpbiBuYW1lcworICAgICAgICAgICAgICAgICAgICAgIGZvciBl
LWxpc3QgPSAoc2ItaW50OmVuc3VyZS1saXN0IGVudHJ5KQorICAgICAgICAgICAgICAgICAgICAg
IGZvciB2YXItbmFtZSA9IChmaXJzdCBlLWxpc3QpCisgICAgICAgICAgICAgICAgICAgICAgZm9y
IHNsb3QtbmFtZSA9IChvciAoc2Vjb25kIGUtbGlzdCkgdmFyLW5hbWUpCisgICAgICAgICAgICAg
ICAgICAgICAgZm9yIHNsb3QgPSAob3IgKGZpbmQtc2xvdC1ieS1uYW1lIGMtcyBzbG90LW5hbWUp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yICJJbnZhbGlkIHNs
b3QgbmFtZSB+cyIgc2xvdC1uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0IGAo
LHZhci1uYW1lICgsKGNzLXNsb3QtYWNjZXNzb3Itc3ltIHNsb3QpICxpbmRleCkpKQorICAgICAg
ICAgICAgIChwcm9nbiAsQCBib2R5KSkKKyAgICAgICAgICAgICAoZXJyb3IgIkJhZCBpbmRleCB2
YWx1ZSB+cywgd2FudGVkIGEgfnMiCisgICAgICAgICAgICAgICAgICAgICxpaWR4ICcsdWRlZi1u
YW1lKSApKSkpKQorCisKKzs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisoZGVmbWFjcm8gbWFrZS13cmFwcGVkLXVkZWYtYWNj
ZXNzb3IgKG5ldyBvbGQgY29sLXN0cnVjdC1uYW1lKQorICAiV3JhcHMgdGhlIChVTlNJR05FRCB4
KSB2YWx1ZSByZXR1cm5lZCBieSBPTEQgaW4gTkVXCisgIHNvIHRoYXQgaXQgYmVjb21lcyBhIFVE
RUYgb2YgdHlwZSBDT0xVTU4tU1RSVUNULVRZUEUuCisgIElmIHRoZXJlJ3MgYSAoU0VURiBPTEQp
LCBhIGNvcnJlc3BvbmRpbmcgd3JhcHBlciBpcyBjcmVhdGVkIGFzIHdlbGwuIgorICAobGV0KiAo
KGZuLXR5cGUgKHNiLWludHJvc3BlY3Q6ZnVuY3Rpb24tdHlwZSBvbGQpKQorICAgICAgICAgKHJl
dCUgKHRoaXJkIGZuLXR5cGUpKQorICAgICAgICAgKHJldC10eXBlIChpZiAoYW5kIChjb25zcCBy
ZXQlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcSAndmFsdWVzIChmaXJzdCByZXQl
KSkpCisgICAgICAgICAgICAgICAgICAgICAgIChzZWNvbmQgcmV0JSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgcmV0JSkpCisgICAgICAgICAob2xkLXNldGYgKGZib3VuZHAgYChzZXRmICxvbGQp
KSkKKyAgICAgICAgICh1ZGVmIChnZXQtdWRlZi1tZXRhZGF0YS1mcm9tLXN5bWJvbCBjb2wtc3Ry
dWN0LW5hbWUpKQorICAgICAgICAgKG9wICh1ZGVmLW1ldGFkYXRhLWZ1bmMgdWRlZikpKQorICAg
IChhc3NlcnQgKGVxIChmaXJzdCByZXQtdHlwZSkgJ3Vuc2lnbmVkLWJ5dGUpKQorICAgIDs7IE11
c3QgaGF2ZSBzcGFjZSBmb3IgYXQgbGVhc3QgYXMgbWFueSBiaXRzCisgICAgKGFzc2VydCAoPj0g
KHNlY29uZCByZXQtdHlwZSkgKHVkZWYtbWV0YWRhdGEtbWF4LWJpdHMgdWRlZikpKQorICAgIGAo
cHJvZ24KKyAgICAgICAjKyhvcikKKyAgICAgICAoZGVjbGFpbSAoaW5saW5lICxuZXcpCisgICAg
ICAgICAgICAgICAgOyhmdHlwZSAoZnVuY3Rpb24gLChzZWNvbmQgZm4tdHlwZSkpICh2YWx1ZXMg
LGNvbC1zdHJ1Y3QtbmFtZSkpICxuZXcpCisgICAgICAgICAgICAgICAgKQorICAgICAgIDs7IFRP
RE86ICZyZXN0IG9yIG90aGVyIGFyZ3MgcG9zc2libGU/IE5vdCBvbiBhIGdldHRlciwgcmlnaHQ/
CisgICAgICAgKGRlZnVuICxuZXcgKCZyZXN0IGFyZ3MpCisgICAgICAgICAoLG9wIDppbnQtdG8t
dGFnZ2VkLXVkZWYgKGFwcGx5IChmdW5jdGlvbiAsb2xkKSBhcmdzKSkpCisgICAgICAgLCh3aGVu
IG9sZC1zZXRmCisgICAgICAgICAgKGxldCAoKG9sZC1hcmdzIChzYi1pbnRyb3NwZWN0OmZ1bmN0
aW9uLWxhbWJkYS1saXN0IG9sZC1zZXRmKSkpCisgICAgICAgICAgICAobXVsdGlwbGUtdmFsdWUt
YmluZCAoZmxhZ3MgcmVxIG9wdCByZXN0IGtleXMpCisgICAgICAgICAgICAgICAgKHNiLWludDpw
YXJzZS1sYW1iZGEtbGlzdCBvbGQtYXJncykKKyAgICAgICAgICAgICAgKGRlY2xhcmUgKGlnbm9y
ZSBmbGFncykpCisgICAgICAgICAgICAgIChhc3NlcnQgKG51bGwga2V5cykpCisgICAgICAgICAg
ICAgIDs7IGRlY2xhaW0gZnR5cGU/CisgICAgICAgICAgICAgIGAoZGVmdW4gKHNldGYgLG5ldykg
LG9sZC1hcmdzCisgICAgICAgICAgICAgICAgIChzZXRmICgsb2xkICxAIChjZHIgcmVxKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAsQCBvcHQKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLEAgcmVzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgKCxvcCA6dWRlZi1vci1uaWwt
dG8tdWIteCAsKGZpcnN0IHJlcSkpKQorICAgICAgICAgICAgICAgICAsKGZpcnN0IHJlcSkpKSkp
CisgICAgICAgJyxuZXcpKSkKKworCis7OyBUT0RPOiBvbmx5IG1hcCByZWFsbHkgdXNlZCBlbnRy
aWVzPyBXSVRILUJBVENILU1BQ1JPIG1pZ2h0IHNraXAgc29tZS4gbmVlZCBhIFBLPworKGRlZnVu
IG1hcC1jLXMtcmFuZ2UgKGZuIGNvbC1zdHJ1Y3QpCisgICJSdW5zIE1BUENBUiBvdmVyIGFsbCBk
ZWZpbmVkIHZhbHVlcyBmb3IgQ09MLVNUUlVDVCwKKyAgY2FsbGluZyBGTiB3aXRoIHRoZSBVREVG
LiIKKyAgKG11bHRpcGxlLXZhbHVlLWJpbmQgKGMtcyB1ZGVmKSAoZ2V0LWNzLW1ldGFkYXRhLWZy
b20tc3ltYm9sIGNvbC1zdHJ1Y3QgdCkKKyAgICAobG9vcCBmb3IgbWF4ID0gKGNvbHVtbi1zdHJ1
Y3QtbGFzdC1pbmRleCBjLXMpCisgICAgICAgICAgZm9yIGkgdXBmcm9tIDAKKyAgICAgICAgICA7
OyBOb3QgYSBCRUxPVywgYmVjYXVzZSB0aGUgc2l6ZSBtYXkgY2hhbmdlIGR1cmluZyBpdGVyYXRp
b24KKyAgICAgICAgICB3aGlsZSAoPCBpIG1heCkKKyAgICAgICAgICBmb3IgdSA9IChmdW5jYWxs
ICh1ZGVmLW1ldGFkYXRhLWZ1bmMgdWRlZikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpp
bnQtdG8tdGFnZ2VkLXVkZWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGkpCisgICAgICAg
ICAgY29sbGVjdCAoZnVuY2FsbCBmbiB1KSkpKQorCis7OyBUT0RPOiBvbmx5IG1hcCByZWFsbHkg
dXNlZCBlbnRyaWVzPyBXSVRILUJBVENILU1BQ1JPIG1pZ2h0IHNraXAgc29tZS4gbmVlZCBhIFBL
PworKGRlZnVuIGMtcy12YWx1ZXMgKGNvbC1zdHJ1Y3QpCisgICJSZXR1cm5zIGEgbGlzdCBvZiBh
bGwgZGVmaW5lZCBDT0wtU1RSVUNUIHZhbHVlcy4iCisgIChtdWx0aXBsZS12YWx1ZS1iaW5kIChj
LXMgdWRlZikgKGdldC1jcy1tZXRhZGF0YS1mcm9tLXN5bWJvbCBjb2wtc3RydWN0IHQpCisgICAg
KGxvb3AgZm9yIGkgdXBmcm9tIDAKKyAgICAgICAgICA7OyBOb3QgYSBCRUxPVywgYmVjYXVzZSB0
aGUgc2l6ZSBtYXkgY2hhbmdlIGR1cmluZyBpdGVyYXRpb24KKyAgICAgICAgICB3aGlsZSAoPCBp
IChjb2x1bW4tc3RydWN0LWxhc3QtaW5kZXggYy1zKSkKKyAgICAgICAgICBjb2xsZWN0IChmdW5j
YWxsICh1ZGVmLW1ldGFkYXRhLWZ1bmMgdWRlZikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IDppbnQtdG8tdGFnZ2VkLXVkZWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGkpKSkpCisK
Kzs7IFRPRE86IG1ldGhvZCBkaXNwYXRjaCBvbiBpbm5lci10YWdnZWQgVURFRnMgLSBpdCdzIHBv
c3NpYmxlIG9uIEZJWE5VTSBldGMuIGFzIHdlbGwhCisKKzs7IFRPRE86IGJveC91bmJveCBpbnRv
ICh1bnNpZ25lZC1ieXRlIFgpIHNwZWNpYWxpemVkIGFycmF5cyBhbmQgc2xvdHMKKzs7ICAgICAg
IChXaXRob3V0IG5lZWRpbmcgYSBuZXcgYXJyYXkgd2lkZXRhZyBmb3IgZWFjaCB1ZGVmLXRhZz8p
CisKKzs7IFRPRE86IEludGVncmF0aW9uIGludG8gUk9PTSwgcHJvdmlkZSBzdGF0aXN0aWNzIGFi
b3V0IGNvbHVtbi1zdHJ1Y3QgaGVhcCB1c2FnZQorCis7OyBUT0RPOiBvcHRpb25hbGx5IGEgZnJl
ZWxpc3QKKworOzsgVE9ETzogaW50ZWdyYXRpb24gaW4gcnVja3NhY2sgZXRjLgorCis7OyBUT0RP
OiAjXE51bCBvciAwIHRlcm1pbmF0ZWQsIGVnLiBmb3IgKGFycmF5IGNoYXJhY3RlciBOKQorCis7
OyBiYTcwMTE3NGJjYWI1OTU0ZDUzMTEwNDdkMDlmYTQ0NWQ1ZGE5ZTI0IHdpdGgtc2xvdHM/IE5l
ZWRzIGNsYXNzZXMgZm9yIERFRk1FVEhPRAorCis7OyBQYXNzIFVERUZzIGJ5IHJlZmVyZW5jZSwg
dG8gbWFrZSBTRVRGIG9uIGltbWVkaWF0ZXMgd29yaz8KZGlmZiAtLWdpdCBhL2NvbnRyaWIvc2It
dWRlZi1pbW1lZGlhdGUvZXhhbXBsZS1jb2x1bW4tc3RydWN0dXJlLmxpc3AgYi9jb250cmliL3Ni
LXVkZWYtaW1tZWRpYXRlL2V4YW1wbGUtY29sdW1uLXN0cnVjdHVyZS5saXNwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNmFkZDQ4M2E4Ci0tLSAvZGV2L251bGwKKysrIGIv
Y29udHJpYi9zYi11ZGVmLWltbWVkaWF0ZS9leGFtcGxlLWNvbHVtbi1zdHJ1Y3R1cmUubGlzcApA
QCAtMCwwICsxLDEwOCBAQAorKHJlcXVpcmUgOnNiLXVkZWYtaW1tZWRpYXRlKQorCisoZGVmcGFj
a2FnZSA6Y29sLXN0cnVjdC1leGFtcGxlCisgICg6dXNlIDpjbCA6c2ItdWRlZi1pbW1lZGlhdGUp
CisgICkKKyhpbi1wYWNrYWdlIDpjb2wtc3RydWN0LWV4YW1wbGUpCisKKworCisKKyhzYi11ZGVm
LWltbWVkaWF0ZTpkZWYtY29sdW1uLXN0cnVjdCAoZm9vCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKDppbmRleC1iaXRzIDE3KQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICg6aW5pdGlhbC1zaXplIDEwKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICg6YmFzZS1jb25zdHJ1Y3RvciBtYWtlLWZvbyUpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKDp1ZGVmLXR5cGVwIGZvby1wKSkKKyAgKGEgIiIgOnR5
cGUgc3RyaW5nKQorICAoYiAwIDp0eXBlICh1bnNpZ25lZC1ieXRlIDE2KSkKKyAgKGMgMjIgOnR5
cGUgZml4bnVtKSkKKworKGRlZnBhcmFtZXRlciAqbm8tZm9vKiAobWFrZS1mb28gOmEgIjphIikp
CisKKyhkZWZtZXRob2QgcHJpbnQtb2JqZWN0ICgob2JqIGZvbykgc3RyZWFtKQorICAocHJpbnQt
dW5yZWFkYWJsZS1vYmplY3QgKG9iaiBzdHJlYW0gOnR5cGUgdCA6aWRlbnRpdHkgdCkpKQorCiso
c2ItdWRlZi1pbW1lZGlhdGU6ZGVmLWNvbHVtbi1zdHJ1Y3QgKGJhcgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoOmluZGV4LWJpdHMgMjIpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICg6Y29uc3RydWN0b3IgbWFrZS1teS1iYXIpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg6YmFzZS1jb25zdHJ1Y3RvciBtYWtlLW15
LWJhci1iYXNlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoOmluaXRp
YWwtc2l6ZSA1MCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDpiYXRj
aC1zaXplIDEwMDApKQorICAobmFtZSAgICAgICAgICA6bmFtZSA6dHlwZSBzeW1ib2wpCisgIChp
ICAgICAgICAgICAgICAgICAyIDp0eXBlICh1bnNpZ25lZC1ieXRlIDMyKSkKKyAgKHZlYyAgICAg
ICAgICAgICAgIDMgOnR5cGUgKGFycmF5ICh1bnNpZ25lZC1ieXRlIDMyKSAoMykpKQorICAodHlw
ZWQtcmVmJSAgICAgICAgNCA6dHlwZSAodW5zaWduZWQtYnl0ZSAzMikpCisgIChyZWYgICAgICAg
ICpuby1mb28qIDp0eXBlIFQpCisgIChzZWxmICAgICAgICAgICAgbmlsIDp0eXBlIGJhcikKKyAg
KHNlbGYtdmVjICAgICAgICBuaWwgOnR5cGUgKGFycmF5IGJhciAoNCkpKSA7OyBUT0RPCisgICh1
ZGVmICAgICAgICpuby1mb28qIDp0eXBlIGZvbykpCisKKzsgKHVwZ3JhZGVkLWFycmF5LWVsZW1l
bnQtdHlwZSBiYXIpCisKKyhkZWZwYXJhbWV0ZXIgKmEtYmFyKiAobWFrZS1teS1iYXIgOm5hbWUg
J2ZpcnN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDppIDU1MTUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnJlZiBuaWwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOnZlYyAobWFrZS1hcnJheSAzIDplbGVtZW50LXR5cGUgJyh1bnNp
Z25lZC1ieXRlIDMyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDppbml0aWFsLWNvbnRlbnRzICcoMSAyIDMpKSkpCisKKzs7OyBUZXN0IGNvZGUK
KworKHNiLXVkZWYtaW1tZWRpYXRlOmRlZi1jb2x1bW4tc3RydWN0IChjb250YWlucy1saXN0cwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg6bWF4LWJpdHMgMjQpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDppbmRleC1iaXRzIDgpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDppbml0aWFsLXNpemUgMTApKQorICAobCAg
bmlsIDp0eXBlIGxpc3QpKQorCisKKyhzYi11ZGVmLWltbWVkaWF0ZTpkZWYtY29sdW1uLXN0cnVj
dCAodmFyLWxlbi1zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
OmluZGV4LWJpdHMgOCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoOmlu
aXRpYWwtc2l6ZSAxNikpCisgIChsICAgICAwIDp0eXBlICh1bnNpZ25lZC1ieXRlIDgpIDphbGxv
Y2F0aW9uIDppbW1lZGlhdGUpCisgICh2ZWMgI1wuIDp0eXBlIChhcnJheSBjaGFyYWN0ZXIgKGwp
KSkpCisKKyhzYi11ZGVmLWltbWVkaWF0ZTpkZWYtY29sdW1uLXN0cnVjdCAodWRlZi1jb25zCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDppbmRleC1iaXRzIDgpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDptYXgtYml0cyAyNCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoOmluaXRpYWwtc2l6ZSAxNikpCisgIChjYXIg
bmlsIDp0eXBlIHVkZWYtY29ucyA6YWxsb2NhdGlvbiA6aW1tZWRpYXRlKQorICAoY2RyIG5pbCA6
dHlwZSB1ZGVmLWNvbnMgOmFsbG9jYXRpb24gOmltbWVkaWF0ZSkpCisKKyhkZWZ2YXIgKmxlYWYt
MSogKG1ha2UtdWRlZi1jb25zIDpjYXIgbmlsIDpjZHIgbmlsKSkKKworCisoc2ItdWRlZi1pbW1l
ZGlhdGU6ZGVmLWNvbHVtbi1zdHJ1Y3QgKG5vLXNsb3QtdWRlZgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICg6bWF4LWJpdHMgNCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoOnJlc2VydmUtbmlsLXZhbHVlIHQpKSkKKworOzsgQW4gZXh0ZW5kZWQg
Q09OUyA7KQorOzsgY2Fubm90IGFkZHJlc3MgaXRzZWxmIGluIHRoZSBzbG90cyAtIHRoZSBkYXRh
IGFyZW4ndCBzdG9yZWQgYW55d2hlcmUKKzs7IGJ1dCBpbiB0aGUgVURFRiwgYnV0IHRoZW4gaXQg
YmVjb21lcyB0byBiaWcgdG8gYmUgc3RvcmVkIHdpdGhpbiBpdHNlbGYKKyhzYi11ZGVmLWltbWVk
aWF0ZTpkZWYtY29sdW1uLXN0cnVjdCAoY29jb29uCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKDppbmRleC1iaXRzIDQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKDptYXgtYml0cyAxNikpCisgIChjYXIgIG5pbCAgICA6dHlwZSBuby1zbG90LXVk
ZWYgOmFsbG9jYXRpb24gOmltbWVkaWF0ZSkKKyAgKGNkciAgbmlsICAgIDp0eXBlIG5vLXNsb3Qt
dWRlZiA6YWxsb2NhdGlvbiA6aW1tZWRpYXRlKQorICAoY2dyICBuaWwgICAgOnR5cGUgbm8tc2xv
dC11ZGVmIDphbGxvY2F0aW9uIDppbW1lZGlhdGUpKQorCisKKyhzYi11ZGVmLWltbWVkaWF0ZTpk
ZWYtY29sdW1uLXN0cnVjdCAoYmNkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKDptYXgtYml0cyA0OCkpCisgIChkaWdpdDEgIDAgIDp0eXBlICh1bnNpZ25lZC1ieXRlIDQp
ICA6YWxsb2NhdGlvbiA6aW1tZWRpYXRlKQorICAoZGlnaXQyICAwICA6dHlwZSAodW5zaWduZWQt
Ynl0ZSA0KSAgOmFsbG9jYXRpb24gOmltbWVkaWF0ZSkKKyAgKGRpZ2l0MyAgMCAgOnR5cGUgKHVu
c2lnbmVkLWJ5dGUgNCkgIDphbGxvY2F0aW9uIDppbW1lZGlhdGUpCisgIChkaWdpdDQgIDAgIDp0
eXBlICh1bnNpZ25lZC1ieXRlIDQpICA6YWxsb2NhdGlvbiA6aW1tZWRpYXRlKSkKKworKHNiLXVk
ZWYtaW1tZWRpYXRlOmRlZi1jb2x1bW4tc3RydWN0IChiYXRjaGVkLXZhci1sZW4tc3RyaW5nCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDptYXgtYml0cyAxNikKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoOmJhdGNoLXNpemUgMTApCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDppbml0aWFsLXNpemUgMTYpKQorICAobCAg
ICAgMCA6dHlwZSAodW5zaWduZWQtYnl0ZSA4KSA6YWxsb2NhdGlvbiA6aW1tZWRpYXRlKQorICAo
dmVjICNcLiA6dHlwZSAoYXJyYXkgY2hhcmFjdGVyIChsKSkpKQorCisoc2ItdWRlZi1pbW1lZGlh
dGU6ZGVmLWNvbHVtbi1zdHJ1Y3QgKHJlZi0yLW90aGVyLXVkZWZzCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKDpiYXRjaC1zaXplICgqIDI1NiAxMDI0KSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoOmluZGV4LWJpdHMgMzIpKQorICAobGVuICAg
MCAgIDp0eXBlICh1bnNpZ25lZC1ieXRlIDE2KSA6YWxsb2NhdGlvbiA6aW1tZWRpYXRlKQorICAo
Zm9vcyBuaWwgOnR5cGUgKGFycmF5IGZvbyAobGVuKSkpCisgIChiYXJzICBuaWwgOnR5cGUgKGFy
cmF5IGJhciAobGVuKSkpKQorCmRpZmYgLS1naXQgYS9jb250cmliL3NiLXVkZWYtaW1tZWRpYXRl
L3BhY2thZ2UubGlzcCBiL2NvbnRyaWIvc2ItdWRlZi1pbW1lZGlhdGUvcGFja2FnZS5saXNwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uMGZhN2M5MWViCi0tLSAvZGV2L251
bGwKKysrIGIvY29udHJpYi9zYi11ZGVmLWltbWVkaWF0ZS9wYWNrYWdlLmxpc3AKQEAgLTAsMCAr
MSwzMyBAQAorCisoZGVmcGFja2FnZSA6c2ItdWRlZi1pbW1lZGlhdGUKKyAgKDpkb2N1bWVudGF0
aW9uICJVc2VyLWRlZmluZWQgaW50ZWdlciB0eXBlcyIpCisgICg6dXNlIDpjb21tb24tbGlzcCkK
KyAgKDppbXBvcnQtZnJvbSA6c2Itdm0KKyAgICAgICAgICAgICAgICAjOnVkZWYtaW1tZWRpYXRl
CisgICAgICAgICAgICAgICAgIzp1ZGVmLWltbWVkaWF0ZS13aWRldGFnKQorICAoOmV4cG9ydCAj
OnVkZWYtaW1tZWRpYXRlLXR5cGUtb2YKKyAgICAgICAgICAgIzp1ZGVmLWltbWVkaWF0ZS13aWRl
dGFnCisgICAgICAgICAgICM6dWRlZi1pbW1lZGlhdGUtdGFnCisgICAgICAgICAgICM6dWRlZi1p
bW1lZGlhdGUKKyAgICAgICAgICAgIzoqdWRlZi10eXBlcyoKKyAgICAgICAgICAgIzordWRlZi10
YWctYml0cysKKyAgICAgICAgICAgIzpkZWYtdWRlZi1pbW1lZGlhdGUKKyAgICAgICAgICAgIzp1
ZGVmLWltbWVkaWF0ZS1wCisgICAgICAgICAgICM6dWRlZi1nZW5lcmFsLWdldC12YWx1ZQorICAg
ICAgICAgICAjOmRlZi1jb2x1bW4tc3RydWN0CisgICAgICAgICAgICM6Y29sdW1uLXN0cnVjdC1y
ZXNpemUKKworICAgICAgICAgICAjOm1ha2Utd3JhcHBlZC11ZGVmLWFjY2Vzc29yCisgICAgICAg
ICAgICM6Y29sdW1uLXN0cnVjdC1yZXNldAorICAgICAgICAgICAjOmNvbHVtbi1zdHJ1Y3QtY2xl
YXIKKyAgICAgICAgICAgIzpjb2x1bW4tc3RydWN0LXNpemUKKyAgICAgICAgICAgIzpjb2x1bW4t
c3RydWN0LWxhc3QtaW5kZXgKKyAgICAgICAgICAgIzpjb2x1bW4tc3RydWN0LWdldC1zdHJ1Y3QK
KworICAgICAgICAgICAjOm1hcC1jLXMtcmFuZ2UKKyAgICAgICAgICAgIzpjLXMtdmFsdWVzCisg
ICAgICAgICAgICM6d2l0aC1jLXMtc2xvdHMKKyAgICAgICAgICAgIzp3aXRoLWJhdGNoZWQtY3Mt
YWxsb2NhdGlvbgorICAgICAgICAgICApKQorCisocmVxdWlyZSA6c2ItaW50cm9zcGVjdCkKZGlm
ZiAtLWdpdCBhL2NvbnRyaWIvc2ItdWRlZi1pbW1lZGlhdGUvcy1sLWEtZC1jb21wYXJpc29uLmxp
c3AgYi9jb250cmliL3NiLXVkZWYtaW1tZWRpYXRlL3MtbC1hLWQtY29tcGFyaXNvbi5saXNwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZGM2ZjI5NTVhCi0tLSAvZGV2L251
bGwKKysrIGIvY29udHJpYi9zYi11ZGVmLWltbWVkaWF0ZS9zLWwtYS1kLWNvbXBhcmlzb24ubGlz
cApAQCAtMCwwICsxLDEwNCBAQAorKHJlcXVpcmUgOnNiLXBlcmYpCisKKyhyZXF1aXJlIDpzYi11
ZGVmLWltbWVkaWF0ZSkKKworKGRlZnBhcmFtZXRlciAqbWF4KiAob3IgKGlnbm9yZS1lcnJvcnMg
KHBhcnNlLWludGVnZXIgKHNiLXBvc2l4OmdldGVudiAiVURFRl9NQVgiKSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAxNDAwMDAwMCkpCisKKyMuIChsZXQgKCh3aGF0IChvciAoc2Vjb25kIHNi
LWV4dDoqcG9zaXgtYXJndiopCisgICAgICAgICAgICAgICAgICAgIjIiKSkpCisgICAgIChkZWZw
YXJhbWV0ZXIgKmRlZiogKGlmIChzdHJpbmc9IHdoYXQgIjEiKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnZGVmc3RydWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzYi11
ZGVmLWltbWVkaWF0ZTpkZWYtY29sdW1uLXN0cnVjdCkpCisgICAgIChkZWZwYXJhbWV0ZXIgKm5h
bWUqIChjb25kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChzdHJpbmc9IHdoYXQgIjEi
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgbXktaW50ZWdlcnMpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDs7IFNpemVkIHVwIGEgZmV3IHRpbWVzLCByZWFjaGVzICptYXgq
IG1vcmUgb3IgbGVzcyBleGFjdGx5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoc3Ry
aW5nPSB3aGF0ICIyIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYChteS1pbnRlZ2Vy
cyAoOmluZGV4LWJpdHMgMzIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKDppbml0aWFsLXNpemUgMTY1MDAwKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKChzdHJpbmc9IHdoYXQgIjMiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCht
eS1pbnRlZ2VycyAoOmluZGV4LWJpdHMgMzIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICg6aW5pdGlhbC1zaXplICwocm91bmQgKCogMS4xICptYXgqKSkpKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHN0cmluZz0gd2hhdCAiNCIpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBgKG15LWludGVnZXJzICg6aW5kZXgtYml0cyAzMikKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDppbml0aWFsLXNpemUg
MTAwMDAwMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDpi
YXRjaC1zaXplIFQpKSkpKQorICAgICAoZGVmcGFyYW1ldGVyICpzdGctdHlwZSogKGlmIChzdHJp
bmc9IHdoYXQgIjEiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoc3RyaW5n
IDgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhhcnJheSBjaGFyYWN0ZXIg
KDgpKSkpCisgICAgIChkZWZwYXJhbWV0ZXIgKnJlZiogIChpZiAoc3RyaW5nPSB3aGF0ICIxIikK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhvciBudWxsIG15LWludGVnZXJzKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ215LWludGVnZXJzKSkpCisKKygjLiAqZGVmKiAg
Iy4gKm5hbWUqCisgIChwcmV2ICBuaWwgOnR5cGUgIy4gKnJlZiopCisgIChwcHJldiBuaWwgOnR5
cGUgIy4gKnJlZiopCisgIChuYW1lICAjXC0gOnR5cGUgIy4gKnN0Zy10eXBlKikKKyAgKHYxICAg
ICAgMCA6dHlwZSAodW5zaWduZWQtYnl0ZSAzMikpCisgICh2MiAgICAgIDAgOnR5cGUgKHVuc2ln
bmVkLWJ5dGUgMTYpKSkKKworOzsgT25seSBub3csIHRvIGhhdmUgdGhlIGFjY2Vzc29ycyBhdmFp
bGFibGUKKyhzYi1wZXJmOndyaXRlLXBlcmZtYXApCisKKyhkZWZwYXJhbWV0ZXIgKmRhdGEqIChs
b29wIGZvciBpIGZyb20gMCB0byAqbWF4KgorICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9y
IHBwcmV2ID0gbmlsIHRoZW4gcHJldgorICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBy
ZXYgID0gbmlsIHRoZW4gaW5zdGFuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBu
YW1lICA9IChmb3JtYXQgbmlsICJ+OCwnMHgiIGkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmb3IgaW5zdGFuY2UgPSAobWFrZS1teS1pbnRlZ2VycyA6cHJldiBwcmV2CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6cHByZXYg
cHByZXYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDp2MSBpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6bmFtZSBuYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZG8gKHNldGYgKG15LWludGVnZXJzLXYyIGluc3RhbmNlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKG1vZCBpIDM3KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZpbmFsbHkgKHJldHVybiBpbnN0YW5jZSkpKQorCis7OyBjaGVjayBjb250ZW50CisoZGVmdW4g
Y2hlY2sgKCkKKyAgKGFzc2VydCAoZXEgKmRhdGEqICpkYXRhKikpCisgIChhc3NlcnQgKG5vdCAo
ZXEgKmRhdGEqIChteS1pbnRlZ2Vycy1wcmV2ICpkYXRhKikpKSkKKyAgKGFzc2VydCAoZXEgKG15
LWludGVnZXJzLXByZXYgKmRhdGEqKSAobXktaW50ZWdlcnMtcHJldiAqZGF0YSopKSkKKyAgKGxv
b3Agd2l0aCBpbnN0YW5jZSA9ICpkYXRhKgorICAgICAgICBmb3IgaSBmcm9tICptYXgqIGRvd250
byAwCisgICAgICAgIHVubGVzcyAoZXEgKmRlZiogJ2RlZnN0cnVjdCkKKyAgICAgICAgZG8gKGxl
dCAoKHR5cGUgKHNiLXVkZWYtaW1tZWRpYXRlOnVkZWYtaW1tZWRpYXRlLXR5cGUtb2YgaW5zdGFu
Y2UpKQorICAgICAgICAgICAgICAgICAocmF3ICAoc2ItdWRlZi1pbW1lZGlhdGU6dWRlZi1nZW5l
cmFsLWdldC12YWx1ZSBpbnN0YW5jZSkpKQorICAgICAgICAgICAgIChhc3NlcnQgKGVxIHR5cGUg
J215LWludGVnZXJzKSkKKyAgICAgICAgICAgICAoYXNzZXJ0ICg9IHJhdyBpKSkpCisgICAgICAg
IDs7CisgICAgICAgIGRvIChhc3NlcnQgKD0gKG15LWludGVnZXJzLXYxIGluc3RhbmNlKQorICAg
ICAgICAgICAgICAgICAgICAgIGkpKQorICAgICAgICBkbyAoYXNzZXJ0ICg9IChteS1pbnRlZ2Vy
cy12MiBpbnN0YW5jZSkKKyAgICAgICAgICAgICAgICAgICAgICAobW9kIGkgMzcpKSkKKyAgICAg
ICAgZG8gKHNldGYgaW5zdGFuY2UgKG15LWludGVnZXJzLXByZXYgaW5zdGFuY2UpKQorICAgICAg
ICA7aWYgKHplcm9wIChtb2QgaSAxMDAwMDApKQorICAgICAgICA7ZG8gKGZvcm1hdCB0ICIgICBv
a2F5IGZvciB+ZH4lIiBpKQorICAgICAgICBmaW5hbGx5IChhc3NlcnQgKG51bGwgaW5zdGFuY2Up
KSkpCisKKworKGRlZnVuIHNpemVzICgpCisgIChpZiAoZXEgKmRlZiogJ2RlZnN0cnVjdCkKKyAg
ICAoZm9ybWF0IHQgIiAgICAgIENyZWF0ZWQ6ICAgIH5kfiUiIChteS1pbnRlZ2Vycy12MSAqZGF0
YSopKQorICAgIChmb3JtYXQgdCAiICAgICAgVXNlZCBpdGVtczogfmQgb2YgfmR+JSIKKyAgICAg
ICAgICAgIChzYi11ZGVmLWltbWVkaWF0ZTpjb2x1bW4tc3RydWN0LWxhc3QtaW5kZXggJ215LWlu
dGVnZXJzKQorICAgICAgICAgICAgKHNiLXVkZWYtaW1tZWRpYXRlOmNvbHVtbi1zdHJ1Y3Qtc2l6
ZSAnbXktaW50ZWdlcnMpKSkpCisKKyhjaGVjaykKKzs7IEJyZWFrcyBjdXJyZW50bHkgYmVjYXVz
ZSBvZiA2ME0gQ09OUyBjZWxscz8/PyBVREVGX01BWCAxM00gd29ya3MuCis7KHNiLWV4dDpnYyA6
ZnVsbCB0KQorOyhyb29tIG5pbCkKKworCis7OyBUaGUgcHJldmlvdXMgd2lkZXRhZyAjeDYxIGJy
b2tlIFMtTC1BLUQgd2hlbiBhIFVERUYgd2FzIHN0b3JlZCBpbiBhIENPTlM7Cis7OyBtYWtlIHN1
cmUgdGhpcyBrZWVwcyB3b3JraW5nIG5vdy4KKyhkZWZwYXJhbWV0ZXIgKnVkZWYtY29ucyogKGNv
bnMgKmRhdGEqICpkYXRhKikpCisoZGVmcGFyYW1ldGVyICp1ZGVmLXZlY3RvciogKHZlY3RvciAq
ZGF0YSopKQorCisobGV0ICgoZmlsZSAodGhpcmQgc2ItZXh0Oipwb3NpeC1hcmd2KikpKQorICAo
dW5sZXNzIChtZW1iZXIgZmlsZSAnKG5pbCAiIiAiLSIpIDp0ZXN0ICMnZXF1YWwpCisgICAgKHNh
dmUtbGlzcC1hbmQtZGllIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgOmV4ZWN1dGFibGUg
dAorICAgICAgICAgICAgICAgICAgICAgICA6dG9wbGV2ZWwgIydzaXplcworICAgICAgICAgICAg
ICAgICAgICAgICA6c2F2ZS1ydW50aW1lLW9wdGlvbnMgdAorICAgICAgICAgICAgICAgICAgICAg
ICApKSkKKwpkaWZmIC0tZ2l0IGEvY29udHJpYi9zYi11ZGVmLWltbWVkaWF0ZS9zYi11ZGVmLWlt
bWVkaWF0ZS5hc2QgYi9jb250cmliL3NiLXVkZWYtaW1tZWRpYXRlL3NiLXVkZWYtaW1tZWRpYXRl
LmFzZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjQ1M2UyMTI4ZAotLS0g
L2Rldi9udWxsCisrKyBiL2NvbnRyaWIvc2ItdWRlZi1pbW1lZGlhdGUvc2ItdWRlZi1pbW1lZGlh
dGUuYXNkCkBAIC0wLDAgKzEsMTkgQEAKKzs7OzsgU0ItUGVyZgorCisoZXJyb3IgIkNhbid0IGJ1
aWxkIGNvbnRyaWJzIHdpdGggQVNERiIpCisKKyhkZWZzeXN0ZW0gInNiLXVkZWYtaW1tZWRpYXRl
IgorICA6Y29tcG9uZW50cyAoKDpmaWxlICJwYWNrYWdlIikKKyAgICAgICAgICAgICAgICg6Zmls
ZSAidWRlZi1iYXNlIikKKyAgICAgICAgICAgICAgICg6ZmlsZSAidWRlZi1hbGxvYyIpCisgICAg
ICAgICAgICAgICAoOmZpbGUgImNvbHVtbi1zdHJ1Y3R1cmUiKQorICAgICAgICAgICAgICAgOyg6
ZmlsZSAiYml0ZmllbGQiKQorICAgICAgICAgICAgICAgOyg6ZmlsZSAidWRlZi1sb29rdXAiKQor
ICAgICAgICAgICAgICAgOyg6ZmlsZSAiYnVmZmVyLWluZGV4aW5nIikKKyAgICAgICAgICAgICAg
IDtleGFtcGxlLWNvbHVtbi1zdHJ1Y3R1cmUubGlzcAorICAgICAgICAgICAgICAgO2V4YW1wbGUu
bGlzcAorICAgICAgICAgICAgICAgO3NpbXBsZS5saXNwCisgICAgICAgICAgICAgICA7dGVzdC5s
aXNwCisgICAgICAgICAgICAgICApKQorCisKZGlmZiAtLWdpdCBhL2NvbnRyaWIvc2ItdWRlZi1p
bW1lZGlhdGUvdWRlZi1hbGxvYy5saXNwIGIvY29udHJpYi9zYi11ZGVmLWltbWVkaWF0ZS91ZGVm
LWFsbG9jLmxpc3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi42OWI3ZTYy
MTkKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3NiLXVkZWYtaW1tZWRpYXRlL3VkZWYtYWxs
b2MubGlzcApAQCAtMCwwICsxLDIzOCBAQAorOzs7OyBVc2VyLWRlZmluZWQgaW50ZWdlciB0eXBl
cworCis7Ozs7IFRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgU0JDTCBzeXN0ZW0uIFNlZSB0
aGUgUkVBRE1FIGZpbGUgZm9yCis7Ozs7IG1vcmUgaW5mb3JtYXRpb24uCisKKyhpbi1wYWNrYWdl
IDpzYi11ZGVmLWltbWVkaWF0ZSkKKworCis7OzsgSGlnaC1sZXZlbCBpbnRlcmZhY2UgLS0gbXVs
dGlwbGUgc3ViLXR5cGVzCis7OworCisoZGVmY29uc3RhbnQgK3VkZWYtcmVzZXJ2ZWQtbG93LWJp
dHMrICgrIHNiLXZtOm4td2lkZXRhZy1iaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICt1ZGVmLXRhZy1iaXRzKykpCisoZGVmY29uc3RhbnQgK3VkZWYtdXNhYmxl
LXJlbWFpbmluZy1iaXRzKyAoLSBzYi12bTpuLXdvcmQtYml0cworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgK3VkZWYtcmVzZXJ2ZWQtbG93LWJpdHMrKSkKKwor
CisoZGVmdW4gcmVnaXN0ZXItdWRlZi1zdWJ0eXBlLWlkICh0eXBlLW5hbWUgJmtleSAocmFuZG9t
IHQpIHByZWZlcnJlZCkKKyAgIkxvb2tzIGZvciBhIGZyZWUgSUQgaW4gKlVERUYtVFlQRVMqLAor
ICBhbmQgcmVnaXN0ZXJzIFRZUEUtTkFNRS4KKyAgTm90IHRocmVhZC1zYWZlLiIKKyAgKGNoZWNr
LXR5cGUgdHlwZS1uYW1lIHN5bWJvbCkKKyAgKGxldCAoKGxlbiAoZXhwdCAyICt1ZGVmLXRhZy1i
aXRzKykpKQorICAgICh1bmxlc3MgKnVkZWYtdHlwZXMqCisgICAgICAoc2V0ZiAqdWRlZi10eXBl
cyogKG1ha2UtYXJyYXkgbGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OmluaXRpYWwtZWxlbWVudCBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6ZWxlbWVudC10eXBlICdzeW1ib2wpKSkKKyAgICAobGV0ICgoaWQgKG9yIChnZXQtZXhpc3Rp
bmctdWRlZi1pZCB0eXBlLW5hbWUpCisgICAgICAgICAgICAgICAgICBwcmVmZXJyZWQKKyAgICAg
ICAgICAgICAgICAgICh3aGVuIHJhbmRvbQorICAgICAgICAgICAgICAgICAgICAobG9vcCByZXBl
YXQgMworICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSA9IChyYW5kb20gbGVuKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAoYXJlZiAqdWRlZi10eXBlcyogaSkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZpbmFsbHkgKHJldHVybgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGdldC1leGlzdGluZy11ZGVmLWlkIG5pbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzdGFydCAocmFuZG9tIGxlbikpKSkpCisgICAg
ICAgICAgICAgICAgICAoZ2V0LWV4aXN0aW5nLXVkZWYtaWQgbmlsKSkpKQorICAgICAgKGRlY2xh
cmUgKHR5cGUgKHVuc2lnbmVkLWJ5dGUgOCkgaWQpKQorICAgICAgKHVubGVzcyBpZAorICAgICAg
ICAoZXJyb3IgInRvbyBtYW55IHVzZXItZGVmaW5lZCBpbnRlZ2VyIHR5cGVzIGluIHVzZS4iKSkK
KyAgICAgIChzZXRmIChhcmVmICp1ZGVmLXR5cGVzKiBpZCkKKyAgICAgICAgICAgIHR5cGUtbmFt
ZSkKKyAgICAgIGlkKSkpCisKKzs7IHdpdGggc3VwZXJjbGFzcyBjdHlwZSwgKDptZXRhY2xhc3Mg
c2Ita2VybmVsOjpzdHJ1Y3R1cmUtY2xhc3MpKQorOzsgIzxTSU1QTEUtRVJST1IgIn5TIGluc3Rh
bmNlIGNvbnN0cnVjdG9yIGNhbGxlZCBpbiBhIG5vbi1zeXN0ZW0gZmlsZSIgezEwMDI5NjY3NTN9
PgorOworOyhkZWZjbGFzcyB1ZGVmLWltbWVkaWF0ZSAoKSAoKSkKKzs7IFNCLUtFUk5FTDpDVFlQ
RSBpbnN0YW5jZSBjb25zdHJ1Y3RvciBjYWxsZWQgaW4gYSBub24tc3lzdGVtIGZpbGUKKzs7ICAg
IFtDb25kaXRpb24gb2YgdHlwZSBTSU1QTEUtRVJST1JdCisKKyhkZWNsYWltIChpbmxpbmUgdWRl
Zi1nZW5lcmFsLWdldC12YWx1ZSkpCisoZGVmdW4gdWRlZi1nZW5lcmFsLWdldC12YWx1ZSAoeCkK
KyAgKGFzaCAoc2Ita2VybmVsOmdldC1saXNwLW9iai1hZGRyZXNzIHgpCisgICAgICAgKC0gKCsg
c2Itdm06bi13aWRldGFnLWJpdHMgK3VkZWYtdGFnLWJpdHMrKSkpKQorCisoZGVjbGFpbSAoaW5s
aW5lIG1ha2UtdHdpY2UtdGFnZ2VkLXVkZWYpCisgICAgICAgICAoZnR5cGUgKGZ1bmN0aW9uICgo
dW5zaWduZWQtYnl0ZSAjLiArdWRlZi10YWctYml0cyspCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAodW5zaWduZWQtYnl0ZSAjLiArdWRlZi11c2FibGUtcmVtYWluaW5nLWJpdHMrKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlcyB0IDt1ZGVmLWltbWVkaWF0ZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpCisgICAgICAgICAgICAgICAgbWFrZS10d2lj
ZS10YWdnZWQtdWRlZikpCisKKyhkZWZ1biBtYWtlLXR3aWNlLXRhZ2dlZC11ZGVmICh0YWcgdmFs
dWUpCisgIChzYi1rZXJuZWw6JW1ha2UtbGlzcC1vYmoKKyAgICAobG9naW9yIChhc2ggdmFsdWUg
K3VkZWYtcmVzZXJ2ZWQtbG93LWJpdHMrKQorICAgICAgICAgICAgKGxvZ2lvciAoYXNoIHRhZyBz
Yi12bTpuLXdpZGV0YWctYml0cykKKyAgICAgICAgICAgICAgICAgICAgdWRlZi1pbW1lZGlhdGUt
d2lkZXRhZykpKSkKKworKGRlY2xhaW0gKGlubGluZSBpcy10YWdnZWQtdWRlZi12YWx1ZSkKKyAg
ICAgICAgIChmdHlwZSAoZnVuY3Rpb24gKCh1bnNpZ25lZC1ieXRlICMuICt1ZGVmLXRhZy1iaXRz
KykgVCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlcyAob3IgKHVuc2lnbmVkLWJ5
dGUgIy4gK3VkZWYtdXNhYmxlLXJlbWFpbmluZy1iaXRzKykKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbCkpKQorICAgICAgICAgICAgICAgIGlzLXRhZ2dlZC11ZGVm
LXZhbHVlKSkKKworKGRlZnVuIGlzLXRhZ2dlZC11ZGVmLXZhbHVlICh0YWcgdWRlZikKKyAgIklm
IFVERUYgaXMgYSBVREVGIGFuZCB0YWdnZWQgYXMgVEFHLCByZXR1cm4gaXRzIHZhbHVlLiIKKyAg
KGRlY2xhcmUgKG9wdGltaXplIChzcGVlZCAzKSAoZGVidWcgMCkgKHNhZmV0eSAxKSkpCisgIChs
ZXQqICgodiAoc2Ita2VybmVsOmdldC1saXNwLW9iai1hZGRyZXNzIHVkZWYpKQorICAgICAgICAg
KHdhbnQgKGxvZ2lvciAoYXNoIHRhZyBzYi12bTpuLXdpZGV0YWctYml0cykKKyAgICAgICAgICAg
ICAgICAgICAgICAgdWRlZi1pbW1lZGlhdGUtd2lkZXRhZykpCisgICAgICAgICAoaGF2ZSAobGRi
IChieXRlICt1ZGVmLXJlc2VydmVkLWxvdy1iaXRzKyAwKQorICAgICAgICAgICAgICAgICAgICB2
KSkpCisgICAgKHdoZW4gKD0gd2FudCBoYXZlKQorICAgICAgKGxkYiAoYnl0ZSArdWRlZi11c2Fi
bGUtcmVtYWluaW5nLWJpdHMrICt1ZGVmLXJlc2VydmVkLWxvdy1iaXRzKykKKyAgICAgICAgICAg
dikpKSkKKworKGRlY2xhaW0gKGlubGluZSBjaGVjay10YWdnZWQtdWRlZi12YWx1ZSkKKyAgICAg
ICAgIChmdHlwZSAoZnVuY3Rpb24gKCh1bnNpZ25lZC1ieXRlICMuICt1ZGVmLXRhZy1iaXRzKykK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgOyB1ZGVmLWltbWVkaWF0ZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWVzICh1
bnNpZ25lZC1ieXRlICMuICt1ZGVmLXVzYWJsZS1yZW1haW5pbmctYml0cyspKSkKKyAgICAgICAg
ICAgICAgICBjaGVjay10YWdnZWQtdWRlZi12YWx1ZSkpCisKKyhkZWZ1biBjaGVjay10YWdnZWQt
dWRlZi12YWx1ZSAodGFnIHVkZWYpCisgIChkZWNsYXJlIChvcHRpbWl6ZSAoc3BlZWQgMykgKGRl
YnVnIDApIChzYWZldHkgMSkpKQorICAob3IgKGlzLXRhZ2dlZC11ZGVmLXZhbHVlIHRhZyB1ZGVm
KQorICAgICAgKGVycm9yICJuZWVkIGEgdWRlZiB3aXRoIHRhZyAjeH54ICh+YSksIG5vdCBhIH5z
IgorICAgICAgICAgICAgIHRhZworICAgICAgICAgICAgIChhbmQgKnVkZWYtdHlwZXMqIChhcmVm
ICp1ZGVmLXR5cGVzKiB0YWcpKQorICAgICAgICAgICAgIHVkZWYpKSkKKworKGRlZnN0cnVjdCB1
ZGVmLW1ldGFkYXRhCisgICh1ZGVmLWlkICAgICAgICAwICA6dHlwZSAoaW50ZWdlciAwIDI1NSkg
ICA6cmVhZC1vbmx5IHQpCisgICh1ZGVmLXN5bSAgICAgbmlsICA6dHlwZSBzeW1ib2wgICAgICAg
ICAgICA6cmVhZC1vbmx5IHQpCisgIDs7IEEgc2xvdCBjYWxsZWQgVFlQRVAgZG9lc24ndCB3b3Jr
IHdpdGggZGVmYXVsdCBhcmdzIGluIERFRlNUUlVDVAorICAoZnVuYyUgICAgICAgIG5pbCAgOnR5
cGUgc3ltYm9sICAgICAgICAgICAgOnJlYWQtb25seSB0KQorICAobmlsPyAgICAgICAgIG5pbCAg
OnR5cGUgKG9yIG51bGwgZml4bnVtKSAgOnJlYWQtb25seSB0KQorICAobWF4LWJpdHMgICAgICAg
MCAgOnR5cGUgKG9yIG51bGwgKGludGVnZXIgMSA0OCkpIDpyZWFkLW9ubHkgdCkpCisKKyhleHBv
cnQgJyggdWRlZi1tZXRhZGF0YQorICAgICAgICAgICB1ZGVmLW1ldGFkYXRhLXVkZWYtaWQKKyAg
ICAgICAgICAgdWRlZi1tZXRhZGF0YS1mdW5jCisgICAgICAgICAgIHVkZWYtbWV0YWRhdGEtdWRl
Zi1zeW0KKyAgICAgICAgICAgdWRlZi1tZXRhZGF0YS1tYXgtYml0cworICAgICAgICAgICBtYWtl
LXR3aWNlLXRhZ2dlZC11ZGVmCisgICAgICAgICAgIGNoZWNrLXRhZ2dlZC11ZGVmLXZhbHVlKSkK
KworKGRlZnVuIHVkZWYtbWV0YWRhdGEtZnVuYyAodikKKyAgKGNvbmQKKyAgICAoKG51bGwgdikK
KyAgICAgbmlsKQorICAgICgodHlwZXAgdiAndWRlZi1tZXRhZGF0YSkKKyAgICAgKHVkZWYtbWV0
YWRhdGEtZnVuYyUgdikpCisgICAgKCh0eXBlcCB2ICdzeW1ib2wpCisgICAgICh1ZGVmLW1ldGFk
YXRhLWZ1bmMKKyAgICAgICAoZ2V0IHYgJ3VkZWYtbWV0YWRhdGEpKSkKKyAgICAodAorICAgICAo
ZXJyb3IgIkJhZCB0eXBlOiB+cyIgdikpKSkKKworKGRlZnVuIHNldHVwLXVkZWYgKG5hbWUgJnJl
c3QgYXJncykKKyAgKHNldGYgKGdldCBuYW1lICd1ZGVmLW1ldGFkYXRhKQorICAgICAgICAoYXBw
bHkgIydtYWtlLXVkZWYtbWV0YWRhdGEgYXJncykpKQorCisoZGVmbWFjcm8gZGVmLXVkZWYtaW1t
ZWRpYXRlIChuYW1lICZrZXkgaWQgZnVuYy1zeW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChuaWwtdmFsdWUgdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICht
YXgtYml0cyArdWRlZi11c2FibGUtcmVtYWluaW5nLWJpdHMrKSkKKyAgIkRlZmluZXMgYSBuZXcg
dXNlci1kZWZpbmVkIGludGVnZXIgdHlwZS4iCisgIChsZXQqICgob2xkLWlkIChnZXQtZXhpc3Rp
bmctdWRlZi1pZCBuYW1lKSkKKyAgICAgICAgIChpZCAoY29uZAorICAgICAgICAgICAgICAgKChh
bmQgb2xkLWlkICAgICAgIGlkICAoPSBvbGQtaWQgaWQpKSAgaWQpCisgICAgICAgICAgICAgICAo
KGFuZCAobm90IG9sZC1pZCkgaWQpICAgICAgICAgICAgICAgICBpZCkKKyAgICAgICAgICAgICAg
IChvbGQtaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkLWlkKQorICAgICAgICAgICAg
ICAgKHQKKyAgICAgICAgICAgICAgICAocmVnaXN0ZXItdWRlZi1zdWJ0eXBlLWlkIG5hbWUpKSkp
CisgICAgICAgICAocHJlZCAoc2ItaW50OmdlbnN5bWlmeSogbmFtZSA6LXApKQorICAgICAgICAg
KG1hc2sgKDEtIChhc2ggMSBtYXgtYml0cykpKQorICAgICAgICAgKG5pbD8gKGlmIChlcSB0IG5p
bC12YWx1ZSkKKyAgICAgICAgICAgICAgICAgICBtYXNrCisgICAgICAgICAgICAgICAgICAgbmls
LXZhbHVlKSkKKyAgICAgICAgIDs7IFRPRE86IHVzZSAqUEFDS0FHRSogaW5zdGVhZCBvZiB0aGUg
TkFNRXMgcGFja2FnZT8KKyAgICAgICAgIChmdW5jLXN5bSAob3IgZnVuYy1zeW0KKyAgICAgICAg
ICAgICAgICAgICAgICAgKHNiLWludDpzeW1ib2xpY2F0ZSA6VURFRi8gbmFtZSA6LU9QRVJBVElP
TikpKSkKKyAgICAoZGVjbGFyZSAodHlwZSAodW5zaWduZWQtYnl0ZSA4KSBpZCkpCisgICAgOzsg
KERFQlVHIDEpIGlzIG5lY2Vzc2FyeSB0byBrZWVwIHRoZSBhcmd1bWVudCBhbmQgcmVzdWx0IHR5
cGVzCisgICAgYChwcm9nbgorICAgICAgIChldmFsLXdoZW4gKDpjb21waWxlLXRvcGxldmVsIDps
b2FkLXRvcGxldmVsIDpleGVjdXRlKQorICAgICAgICAgKGRlZnN0cnVjdCAoLG5hbWUgKDppbmNs
dWRlIHVkZWYtaW1tZWRpYXRlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKDpjb25zdHJ1
Y3RvciBuaWwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoOnByZWRpY2F0ZSAscHJlZCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICg6Y29waWVyIG5pbCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICkpCisgICAgICAgICA7OworICAgICAgICAgKGRlY2xhaW0gKGlubGluZSAs
cHJlZCkpCisgICAgICAgICAoc2V0ZiAoc3ltYm9sLWZ1bmN0aW9uICcscHJlZCkKKyAgICAgICAg
ICAgICAgIChsYW1iZGEgKGlucHV0KQorICAgICAgICAgICAgICAgICAoaWYgKGlzLXRhZ2dlZC11
ZGVmLXZhbHVlICxpZCBpbnB1dCkKKyAgICAgICAgICAgICAgICAgICAgIHQKKyAgICAgICAgICAg
ICAgICAgICAgIG5pbCkpKQorICAgICAgICAgOzsKKyAgICAgICAgIChsZXQgKChnb3QgKHJlZ2lz
dGVyLXVkZWYtc3VidHlwZS1pZCAnLG5hbWUgOnByZWZlcnJlZCAsaWQpKSkKKyAgICAgICAgICAg
KGFzc2VydCAoZXFsICxpZCBnb3QpKQorICAgICAgICAgKHNldHVwLXVkZWYgJyxuYW1lCisgICAg
ICAgICAgICAgICAgICAgICA6dWRlZi1pZCAgLGlkCisgICAgICAgICAgICAgICAgICAgICA6bmls
PyAgICAgLG5pbD8KKyAgICAgICAgICAgICAgICAgICAgIDpmdW5jJSAgICAnLGZ1bmMtc3ltCisg
ICAgICAgICAgICAgICAgICAgICA6dWRlZi1zeW0gJyxuYW1lCisgICAgICAgICAgICAgICAgICAg
ICA6bWF4LWJpdHMgLG1heC1iaXRzKSkKKyAgICAgICAgIDs7CisgICAgICAgICA7KGRlY2xhaW0g
KGlubGluZSAsZnVuYy1zeW0pKQorICAgICAgICAgKGxvY2FsbHkKKyAgICAgICAgICAgKGRlY2xh
cmUgKHNiLWV4dDptdWZmbGUtY29uZGl0aW9ucyB3YXJuaW5nKSkKKyAgICAgICAgICAgKGRlZnVu
ICxmdW5jLXN5bSAob3BlcmF0aW9uIGlucHV0KQorICAgICAgICAgICAgIChlY2FzZSBvcGVyYXRp
b24KKyAgICAgICAgICAgICAgICg6dHlwZXAKKyAgICAgICAgICAgICAgICAod2hlbiAoaXMtdGFn
Z2VkLXVkZWYtdmFsdWUgLGlkIGlucHV0KQorICAgICAgICAgICAgICAgICAgdCkpCisgICAgICAg
ICAgICAgICAoOmludC10by10YWdnZWQtdWRlZgorICAgICAgICAgICAgICAgIChjaGVjay10eXBl
IGlucHV0IChpbnRlZ2VyIDAgLG1hc2spKQorICAgICAgICAgICAgICAgIChtYWtlLXR3aWNlLXRh
Z2dlZC11ZGVmICxpZCBpbnB1dCkpCisgICAgICAgICAgICAgICAoOnRhZ2dlZC11ZGVmLXRvLWlu
dAorICAgICAgICAgICAgICAgICh0aGUgKGludGVnZXIgMCAsbWFzaykKKyAgICAgICAgICAgICAg
ICAgICAgIChjaGVjay10YWdnZWQtdWRlZi12YWx1ZSAsaWQgaW5wdXQpKSkKKyAgICAgICAgICAg
ICAgICg6dWRlZi1vci1uaWwtdG8tdWIteAorICAgICAgICAgICAgICAgIChpZiAobnVsbCBpbnB1
dCkKKyAgICAgICAgICAgICAgICAgICAgKGlmICxuaWw/CisgICAgICAgICAgICAgICAgICAgICAg
ICAsbmlsPworICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yICJOSUwgbm90IGFsbG93ZWQg
Zm9yIHVkZWYgfnMiICcsbmFtZSkpCisgICAgICAgICAgICAgICAgICAgICh0aGUgKGludGVnZXIg
MCAsbWFzaykKKyAgICAgICAgICAgICAgICAgICAgICAgICAoY2hlY2stdGFnZ2VkLXVkZWYtdmFs
dWUgLGlkIGlucHV0KSkpKQorICAgICAgICAgICAgICAgKDp1Yi14LXRvLXVkZWYtb3ItbmlsCisg
ICAgICAgICAgICAgICAgKGlmIChhbmQgLG5pbD8KKyAgICAgICAgICAgICAgICAgICAgICAgICAo
ZXFsIGlucHV0ICxuaWw/KSkKKyAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAg
ICAgICAgIChtYWtlLXR3aWNlLXRhZ2dlZC11ZGVmICxpZCBpbnB1dCkpKQorICAgICAgICAgICAg
ICAgKDptYXNrCisgICAgICAgICAgICAgICAgLG1hc2spCisgICAgICAgICAgICAgICAoOm5pbD8K
KyAgICAgICAgICAgICAgICAsbmlsPykKKyAgICAgICAgICAgICAgICg6dWRlZi1pZAorICAgICAg
ICAgICAgICAgICxpZCkpKSkpCisgICAgICAgOzsKKyAgICAgICAodmFsdWVzICcsbmFtZQorICAg
ICAgICAgICAgICAgLGlkKSkpKQorCisKKyhkZWZ1biB1ZGVmLWVxICh1MSB1MikKKyAgKD0gKHNi
LWtlcm5lbDpnZXQtbGlzcC1vYmotYWRkcmVzcyB1MSkKKyAgICAgKHNiLWtlcm5lbDpnZXQtbGlz
cC1vYmotYWRkcmVzcyB1MikpKQorCisoZGVmdW4gaGFzaC11ZGVmICh1KQorICA7OyBEbyB3ZSBu
ZWVkIGVxdWl2YWxlbmNlIGlmIGEgdHlwZSBGT08gZ2V0cyByZW1vdmVkIGFuZAorICA7OyByZS1k
ZWZpbmVkIHdpdGggYW5vdGhlciB1ZGVmIHRhZz8KKyAgOzsgVE9ETzogdXNlIFNYSEFTSCBvciBQ
U1hIQVNIPworICAoc2Ita2VybmVsOmdldC1saXNwLW9iai1hZGRyZXNzIHUpKQorCisoc2ItZXh0
OmRlZmluZS1oYXNoLXRhYmxlLXRlc3QgdWRlZi1lcSBoYXNoLXVkZWYpCisKKworKGRlZm1ldGhv
ZCBwcmludC1vYmplY3QgKChvYmogdWRlZi1pbW1lZGlhdGUpIHN0cmVhbSkKKyAgKGxldCogKCh2
IChzYi1rZXJuZWw6Z2V0LWxpc3Atb2JqLWFkZHJlc3Mgb2JqKSkKKyAgICAgICAgICh1dGFnIChs
ZGIgKGJ5dGUgK3VkZWYtdGFnLWJpdHMrIHNiLXZtOm4td2lkZXRhZy1iaXRzKSB2KSkpCisgICAg
KGZvcm1hdCBzdHJlYW0gIiM8VURFRiAjeH54fkBbOyB0YWdnZWQgI3h+eH5dfkBbLCBhIH5zfl0+
IgorICAgICAgICAgICAgKGFzaCB2ICgtICt1ZGVmLXJlc2VydmVkLWxvdy1iaXRzKykpCisgICAg
ICAgICAgICB1dGFnCisgICAgICAgICAgICAoYW5kICp1ZGVmLXR5cGVzKgorICAgICAgICAgICAg
ICAgICAoYXJlZiAqdWRlZi10eXBlcyogdXRhZykpKSkpCmRpZmYgLS1naXQgYS9jb250cmliL3Ni
LXVkZWYtaW1tZWRpYXRlL3VkZWYtYmFzZS5saXNwIGIvY29udHJpYi9zYi11ZGVmLWltbWVkaWF0
ZS91ZGVmLWJhc2UubGlzcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmNh
MzRkNWM4ZgotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvc2ItdWRlZi1pbW1lZGlhdGUvdWRl
Zi1iYXNlLmxpc3AKQEAgLTAsMCArMSwxMDUgQEAKKyhpbi1wYWNrYWdlIDpzYi11ZGVmLWltbWVk
aWF0ZSkKKworCis7OyBBcGFydCBmcm9tIHRoZSBiaXRzIHVzZWQgYnkgdWRlZi1pbW1lZGlhdGUt
d2lkZXRhZywKKzs7IHRoaXMgaGVyZSBkZWNsYXJlcyBhIGZ1cnRoZXIKKyhkZWZjb25zdGFudCAr
dWRlZi10YWctYml0cysgOCkKKzs7IGJpdHMgdG8gYmUgdXNlZCBmb3IgYSByYW5nZSBvZiB1c2Vy
LWRlZmluZWQgaW50ZWdlciB0eXBlcy4KKworKGRlZnZhciAqdWRlZi10eXBlcyogbmlsCisgICJW
ZWN0b3Igb2YgdXNlci1kZWZpbmVkIGludGVnZXIgdHlwZXMuCisgIE5JTCB1bnRpbCBmaXJzdCB1
c2UuIikKKyhkZWNsYWltICh0eXBlIChvciBudWxsIChzaW1wbGUtYXJyYXkgc3ltYm9sICgjLihl
eHB0IDIgK3VkZWYtdGFnLWJpdHMrKSkpKQorICAgICAgICAgICAgICAgKnVkZWYtdHlwZXMqKSkK
KworKGRlZnVuIGdldC1leGlzdGluZy11ZGVmLWlkIChuYW1lICZrZXkgKHN0YXJ0IDApKQorICAo
d2hlbiAqdWRlZi10eXBlcyoKKyAgICAocG9zaXRpb24gbmFtZSAqdWRlZi10eXBlcyoKKyAgICAg
ICAgICAgICAgOnRlc3QgIydlcQorICAgICAgICAgICAgICA6c3RhcnQgc3RhcnQpKSkKKworKGRl
ZnVuIHVkZWYtaW1tZWRpYXRlLXRhZyAoeCkKKyAgKGxkYiAoYnl0ZSArdWRlZi10YWctYml0cysg
c2Itdm06bi13aWRldGFnLWJpdHMpCisgICAgICAgKHNiLWtlcm5lbDpnZXQtbGlzcC1vYmotYWRk
cmVzcyB4KSkpCisKKyhzZXRmIChhcmVmIHNiLWM6OioqcHJpbWl0aXZlLW9iamVjdC1sYXlvdXRz
KioKKyAgICAgICAgICAgIHNiLXZtOnVkZWYtaW1tZWRpYXRlLXdpZGV0YWcpCisgICAgICAoc2It
a2VybmVsOmZpbmQtbGF5b3V0ICdzYi11ZGVmLWltbWVkaWF0ZTp1ZGVmLWltbWVkaWF0ZSkpCisK
KyhldmFsLXdoZW4gKDpjb21waWxlLXRvcGxldmVsIDpsb2FkLXRvcGxldmVsIDpleGVjdXRlKQor
ICAoZGVjbGFpbSAoaW5saW5lIG1heWJlLXVkZWYtY2hlY2stbGFtYmRhKSkKKyAgKGRlZnVuIG1h
eWJlLXVkZWYtY2hlY2stbGFtYmRhIChwbGFpbiBzdWItdGFnKQorICAgICh3aGVuIChvciBwbGFp
biBzdWItdGFnKQorICAgICAgYChsYW1iZGEgKG9iamVjdCBfKQorICAgICAgICAgKGRlY2xhcmUg
KGlnbm9yZSBfKSkKKyAgICAgICAgICg9IChsZGIgKGJ5dGUgLCgrIChpZiBzdWItdGFnCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgK3VkZWYtdGFnLWJpdHMrCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNiLXZtOm4t
d2lkZXRhZy1iaXRzKQorICAgICAgICAgICAgICAgICAgICAgICAwKQorICAgICAgICAgICAgICAg
ICAoc2Ita2VybmVsOmdldC1saXNwLW9iai1hZGRyZXNzIG9iamVjdCkpCisgICAgICAgICAgICAs
KGxvZ2lvciBzYi12bTo6dWRlZi1pbW1lZGlhdGUtd2lkZXRhZworICAgICAgICAgICAgICAgICAg
ICAgKGlmIHN1Yi10YWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAoYXNoIHN1Yi10YWcgc2It
dm06bi13aWRldGFnLWJpdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgMCkpKSkpKSkKKwor
KGV2YWwtd2hlbiAoOmNvbXBpbGUtdG9wbGV2ZWwgOmxvYWQtdG9wbGV2ZWwgOmV4ZWN1dGUpCisg
IChzZXRmIChzeW1ib2wtZnVuY3Rpb24gJ3VkZWYtaW1tZWRpYXRlLXApCisgICAgICAgIChsYW1i
ZGEgKG9iamVjdCkKKyAgICAgICAgICAoZGVjbGFyZSAob3B0aW1pemUgKHNwZWVkIDMpIChkZWJ1
ZyAwKSkpCisgICAgICAgICAgIy4gKGNhZGRkciAobWF5YmUtdWRlZi1jaGVjay1sYW1iZGEgdCBu
aWwpKSkpKQorCisoZGVjbGFpbSAoZnR5cGUgKGZ1bmN0aW9uIChUKSAodmFsdWVzIHN5bWJvbCkp
IHVkZWYtaW1tZWRpYXRlLXR5cGUtb2YpKQorKGRlZnVuIHVkZWYtaW1tZWRpYXRlLXR5cGUtb2Yg
KHgpCisgICJSZXR1cm5zIHRoZSB0eXBlIHN5bWJvbCwgb3IgTklMLiIKKzsgIChkZWNsYXJlIChp
Z25vcmUgeCkpIG5pbAorICA7OyBUT0RPOiBlcnJvciBvdXQgaWYgbm90IGEgdWRlZi1pbW1lZGlh
dGU/CisgICh3aGVuICh1ZGVmLWltbWVkaWF0ZS1wIHgpCisgICAgKGxldCAoKHR5cGUgKGFuZCAq
dWRlZi10eXBlcyoKKyAgICAgICAgICAgICAgICAgICAgIChhcmVmICp1ZGVmLXR5cGVzKiAodWRl
Zi1pbW1lZGlhdGUtdGFnIHgpKSkpKQorICAgICAgKGlmIHR5cGUKKyAgICAgICAgICB0eXBlCisg
ICAgICAgICAgJ3VkZWYtaW1tZWRpYXRlKSkpKQorCisKKyhkZWZ1biB1ZGVmLSVpbnN0YW5jZS10
eXBlcCAobm9kZSkKKyAgKGRlc3RydWN0dXJpbmctYmluZCAob2JqZWN0IHNwZWMpIChzYi1jOjpj
b21iaW5hdGlvbi1hcmdzIG5vZGUpCisgICAgKGRlY2xhcmUgKGlnbm9yZSBvYmplY3QpKQorICAg
IChvciAod2hlbiAoc2ItYzpjb25zdGFudC1sdmFyLXAgc3BlYykKKyAgICAgICAgICAobWF5YmUt
dWRlZi1jaGVjay1sYW1iZGEKKyAgICAgICAgICAgICAgICAgICAgICAoZXEgJ3VkZWYtaW1tZWRp
YXRlIChzYi1jOmx2YXItdmFsdWUgc3BlYykpCisgICAgICAgICAgICAgICAgICAgICAgKGdldC1l
eGlzdGluZy11ZGVmLWlkIChzYi1jOmx2YXItdmFsdWUgc3BlYykpKSkKKyAgICAgICAgKHNiLWM6
OmdpdmUtdXAtaXIxLXRyYW5zZm9ybSkpKSkKKworKGRlZnVuIHVkZWYtc3RydWN0dXJlLXR5cGVw
IChub2RlKQorICAoZGVzdHJ1Y3R1cmluZy1iaW5kIChvYmplY3QgdHlwZSkgKHNiLWM6OmNvbWJp
bmF0aW9uLWFyZ3Mgbm9kZSkKKyAgICAoZGVjbGFyZSAoaWdub3JlIG9iamVjdCkpCisgICAgKG9y
ICh3aGVuIChzYi1jOmNvbnN0YW50LWx2YXItcCB0eXBlKQorICAgICAgICAgIChsZXQqICgodWRl
Zi1sYXlvdXQgKGxvYWQtdGltZS12YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoc2ItYzo6ZmluZC1sYXlvdXQgJ3NiLXZtOjp1ZGVmLWltbWVkaWF0ZSkpKQorICAgICAgICAg
ICAgICAgICAobGF5b3V0IChzYi1jOmx2YXItdmFsdWUgdHlwZSkpKQorICAgICAgICAgICAgKG1h
eWJlLXVkZWYtY2hlY2stbGFtYmRhCisgICAgICAgICAgICAgIChlcSB1ZGVmLWxheW91dCBsYXlv
dXQpCisgICAgICAgICAgICAgICh3aGVuIChmaW5kIHVkZWYtbGF5b3V0CisgICAgICAgICAgICAg
ICAgICAgICAgICAgIChzYi1rZXJuZWw6bGF5b3V0LWluaGVyaXRzIGxheW91dCkpCisgICAgICAg
ICAgICAgICAgKGdldC1leGlzdGluZy11ZGVmLWlkCisgICAgICAgICAgICAgICAgICAoc2Ita2Vy
bmVsOjpzdHJ1Y3R1cmUtY2xhc3NvaWQtbmFtZQorICAgICAgICAgICAgICAgICAgICAoc2ItYzo6
bGF5b3V0LWNsYXNzb2lkIGxheW91dCkpKSkpKSkKKyAgICAgICAgKHNiLWM6OmdpdmUtdXAtaXIx
LXRyYW5zZm9ybSkpKSkKKworOzsgRHVlIHRvIGR1cGxpY2F0ZWQgYXJndW1lbnQgdHlwZXMgd2Ug
Y2FuJ3QgdXNlIERFRlRSQU5TRk9STSAtLQorOzsgdGhhdCB3b3VsZCByZW1vdmUgYW4gZXhpc3Rp
bmcgb25lLgorKGRlZnVuIGFkZC1hLXRyYW5zZm9ybSAod2hhdCB3aGVyZSkKKyAgKGxldCAoKGZp
IChzYi1pbnQ6aW5mbyA6ZnVuY3Rpb24gOmluZm8gd2hlcmUpKSkKKyAgICAodW5sZXNzIChtZW1i
ZXIgd2hhdAorICAgICAgICAgICAgICAgICAgICAoc2ItYzo6ZnVuLWluZm8tdHJhbnNmb3JtcyBm
aSkKKyAgICAgICAgICAgICAgICAgICAgOmtleSAjJ3NiLWM6OnRyYW5zZm9ybS1mdW5jdGlvbikK
KyAgICAgIChwdXNoIChzYi1jOjptYWtlLXRyYW5zZm9ybSA6dHlwZSAoc2Ita2VybmVsOnNwZWNp
Zmllci10eXBlIFQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmZ1bmN0aW9u
IHdoYXQpCisgICAgICAgICAgICAoc2ItYzo6ZnVuLWluZm8tdHJhbnNmb3JtcyBmaSkpKSkpCisK
KyhhZGQtYS10cmFuc2Zvcm0gIyd1ZGVmLSVpbnN0YW5jZS10eXBlcAorICAgICAgICAgICAgICAg
ICAnc2ItYzo6JWluc3RhbmNlLXR5cGVwKQorCisoYWRkLWEtdHJhbnNmb3JtICMndWRlZi1zdHJ1
Y3R1cmUtdHlwZXAKKyAgICAgICAgICAgICAgICAgJ3NiLWM6OnN0cnVjdHVyZS10eXBlcCkKZGlm
ZiAtLWdpdCBhL3Rlc3RzL3NiLXVkZWYuaW1wdXJlLmxpc3AgYi90ZXN0cy9zYi11ZGVmLmltcHVy
ZS5saXNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uM2U0ZTY3NjU4Ci0t
LSAvZGV2L251bGwKKysrIGIvdGVzdHMvc2ItdWRlZi5pbXB1cmUubGlzcApAQCAtMCwwICsxLDQ0
MyBAQAorKHJlcXVpcmUgOnNiLXVkZWYtaW1tZWRpYXRlKQorCisoZXZhbC13aGVuICg6Y29tcGls
ZS10b3BsZXZlbCA6bG9hZC10b3BsZXZlbCkKKyhzZXRmICpsb2FkLXZlcmJvc2UqIHQpKQorICAo
cmVxdWlyZSA6c2ItcG9zaXgpCisobGV0ICgocyAoZm9ybWF0IG5pbCAiPT09IG5vdyBpcyB+c34l
IiAobXVsdGlwbGUtdmFsdWUtbGlzdCAoZ2V0LWRlY29kZWQtdGltZSkpKSkpCisgIChzYi1wb3Np
eDp3cml0ZSAxIChzYi1hbGllbjptYWtlLWFsaWVuLXN0cmluZyBzKQorICAgICAgICAgICAgICAg
ICAgKGxlbmd0aCBzKSkpCisKKworOyAod2l0aC1jb21waWxhdGlvbi11bml0ICgpIChsb2FkICJ0
ZXN0cy90ZXN0LXV0aWwubGlzcCIpKQorCisodGVzdC11dGlsOndpdGgtc2NyYXRjaC1maWxlIChm
ICJmYXNsIikKKyAgKGxvYWQgKGNvbXBpbGUtZmlsZQorICAgICAgICAgIChtZXJnZS1wYXRobmFt
ZXMgIi4uLy4uL2NvbnRyaWIvc2ItdWRlZi1pbW1lZGlhdGUvZXhhbXBsZS1jb2x1bW4tc3RydWN0
dXJlLmxpc3AiCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzYi1leHQ6KnJ1bnRpbWUtcGF0
aG5hbWUqKQorICAgICAgICAgIDpvdXRwdXQtZmlsZSBmKSkpCisKKyhpbi1wYWNrYWdlIDpjb2wt
c3RydWN0LWV4YW1wbGUpCisodXNlLXBhY2thZ2UgOnRlc3QtdXRpbCkKKworKGFzc2VydCAobm90
ICh0eXBlcCA0ICdzYi11ZGVmLWltbWVkaWF0ZTo6dWRlZi1pbW1lZGlhdGUpKSkKKyhhc3NlcnQg
KG5vdCAoc2ItdWRlZi1pbW1lZGlhdGU6dWRlZi1pbW1lZGlhdGUtdHlwZS1vZiA0KSkpCisKKzs7
Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OworOzs7IFRlc3RpbmcgaW5kaXZpZHVhbCBmZWF0
dXJlcworCisod2l0aC10ZXN0ICg6bmFtZSAoOnVkZWYgOmZvbykpCisgIChzZXRmIChmb28tYiAq
bm8tZm9vKikgMTIxMjMpCisgIChhc3NlcnQgKGZvby1wICpuby1mb28qKSkKKyAgKGFzc2VydCAo
PSAxMjEyMworICAgICAgICAgICAgIChmb28tYiAqbm8tZm9vKikpKQorICAoYXNzZXJ0IChlcXVh
bHAgJygoOkEgLiAiOmEiKSAoOkIgLiAxMjEyMykgKDpDIC4gMjIpKQorICAgICAgICAgICAgICAg
ICAgKHNiLXVkZWYtaW1tZWRpYXRlOmNvbHVtbi1zdHJ1Y3QtZ2V0LXN0cnVjdCAqbm8tZm9vKikp
KQorICAoYXNzZXJ0IChlcXVhbHAgJygiOmEiIDEyMTIzIDIyKQorICAgICAgICAgICAgICAgICAg
KHNiLXVkZWYtaW1tZWRpYXRlOndpdGgtYy1zLXNsb3RzIChmb28gKm5vLWZvbyopIChhIGIgYykK
KyAgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiIGMpKSkpCisgIChzZXRmIChmb28tYiAqbm8t
Zm9vKikgMSkKKyAgKGFzc2VydCAoPSAxCisgICAgICAgICAgICAgKGZvby1iICpuby1mb28qKSkp
KQorCis7Oy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKHdpdGgtdGVzdCAoOm5hbWUg
KDp1ZGVmIDpiYXIpKQorICAoc2ItdWRlZi1pbW1lZGlhdGU6Y29sdW1uLXN0cnVjdC1yZXNldCAn
YmFyKQorICAoc2ItdWRlZi1pbW1lZGlhdGU6d2l0aC1iYXRjaGVkLWNzLWFsbG9jYXRpb24gKGJh
ciBtbW0gOmJhdGNoLXNpemUgMTAwMCkKKyAgICAobW1tKQorICAgIChtYWtlLW15LWJhci1iYXNl
IDQwMDAwCisgICAgICAgICAgICAgICAgICAgICAgJ2xvb3AgMCAjKDYgNCAxKSAwIG5pbCBuaWwg
IygpICpuby1mb28qKSkKKyAgOzsgT25seSBhIHNpbmdsZSBiYXRjaCBhbGxvY2F0ZWQgdmlhIGNv
bnN0cnVjdG9yIHRoYXQgY2FyZXMgYWJvdXQgbnVtYmVyaW5nCisgIChhc3NlcnQgKD0gMTAwMAor
ICAgICAgICAgICAgIChsZW5ndGgKKyAgICAgICAgICAgICAgIChzYi11ZGVmLWltbWVkaWF0ZTpj
LXMtdmFsdWVzICdiYXIpKSkpCisgIChhc3NlcnQgKD0gMTAwMAorICAgICAgICAgICAgIChsZXQg
KChjIDApKQorICAgICAgICAgICAgICAgKHNiLXVkZWYtaW1tZWRpYXRlOm1hcC1jLXMtcmFuZ2UK
KyAgICAgICAgICAgICAgICAgKGxhbWJkYSAoeCkKKyAgICAgICAgICAgICAgICAgICAoZGVjbGFy
ZSAoaWdub3JlIHgpKQorICAgICAgICAgICAgICAgICAgIChpbmNmIGMpKQorICAgICAgICAgICAg
ICAgICAnYmFyKQorICAgICAgICAgICAgICAgYykpKQorICAoYXNzZXJ0ICg9IDEwMDAKKyAgICAg
ICAgICAgICAoc2ItdWRlZi1pbW1lZGlhdGU6Y29sdW1uLXN0cnVjdC1sYXN0LWluZGV4ICdiYXIp
KSkKKyAgOzsgQnV0IHNvbWUgbW9yZSBnb3QgX3VzZWRfCisgIChhc3NlcnQgKD0gNDIwMDAKKyAg
ICAgICAgICAgICAoc2ItdWRlZi1pbW1lZGlhdGU6Y29sdW1uLXN0cnVjdC1zaXplICdiYXIpKSkp
CisKKyh3aXRoLXRlc3QgKDpuYW1lICg6dWRlZiA6YmFyLTIpKQorICAobGV0ICgoYmFyMSAobWFr
ZS1teS1iYXIKKyAgICAgICAgICAgICAgICA6bmFtZSAnc2Vjb25kCisgICAgICAgICAgICAgICAg
OmkgMTIKKyAgICAgICAgICAgICAgICA6cmVmIG5pbAorICAgICAgICAgICAgICAgIDp2ZWMgKG1h
a2UtYXJyYXkgMyA6ZWxlbWVudC10eXBlICcodW5zaWduZWQtYnl0ZSAzMikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDppbml0aWFsLWNvbnRlbnRzICcoMSAyIDMpKSkpKQorICAg
IChzYi11ZGVmLWltbWVkaWF0ZTo6d2l0aC1jLXMtc2xvdHMgKGJhciBiYXIxKSAodmVjIChpMiBp
KSAoaTMgaSkpCisgICAgICAoYXNzZXJ0ICg9IGkyIGkzKSkKKyAgICAgIChpbmNmIGkyKQorICAg
ICAgKGFzc2VydCAoPSBpMiBpMykpCisgICAgICAoc2V0ZiAoYXJlZiB2ZWMgMCkKKyAgICAgICAg
ICAgIDE3KSkKKyAgICAoYXNzZXJ0ICg9IDEzIChiYXItaSBiYXIxKSkpCisgICAgKGFzc2VydCAo
ZXF1YWxwICMoMTcgMiAzKQorICAgICAgICAgICAgICAgICAgICAoYmFyLXZlYyBiYXIxKSkpKSkK
KworKHdpdGgtdGVzdCAoOm5hbWUgKDp1ZGVmIDpiYXItMykpCisgIChsZXQqICgoYmFyMSAobWFr
ZS1teS1iYXIpKQorICAgICAgICAgKGJhcjIgKG1ha2UtbXktYmFyKSkKKyAgICAgICAgIChiYXJ0
IChtYWtlLW15LWJhcgorICAgICAgICAgICAgICAgICA6bmFtZSAndGhpcmQKKyAgICAgICAgICAg
ICAgICAgOnNlbGYtdmVjICh2ZWN0b3IgYmFyMSBiYXIyIGJhcjIpKSkKKyAgICAgICAgIChhbGlz
dCAoYmFyLWFzLWFsaXN0IGJhcnQpKSkKKyAgICAoYXNzZXJ0IChlcXVhbCAnKDpuYW1lIC4gdGhp
cmQpCisgICAgICAgICAgICAgICAgICAgKGFzc29jIDpuYW1lIGFsaXN0KSkpCisgICAgKGFzc2Vy
dCAoZXF1YWxwICh2ZWN0b3IgYmFyMSBiYXIyIGJhcjIgbmlsKQorICAgICAgICAgICAgICAgICAg
IChjZHIKKyAgICAgICAgICAgICAgICAgICAgIChhc3NvYyA6c2VsZi12ZWMgYWxpc3QpKSkpCisg
ICAgKGFzc2VydCAoZXEgYmFyMQorICAgICAgICAgICAgICAgIChiYXItc2VsZi12ZWMgYmFydCA6
aW5kZXggMCkpKQorICAgIChhc3NlcnQgKGVxIGJhcjIKKyAgICAgICAgICAgICAgICAoYmFyLXNl
bGYtdmVjIGJhcnQgOmluZGV4IDEpKSkKKyAgICAoYXNzZXJ0IChlcSBiYXIyCisgICAgICAgICAg
ICAgICAgKGJhci1zZWxmLXZlYyBiYXJ0IDppbmRleCAyKSkpCisgICAgKGFzc2VydCAoZXEgbmls
CisgICAgICAgICAgICAgICAgKGJhci1zZWxmLXZlYyBiYXJ0IDppbmRleCAzKSkpCisgICAgKSkK
KworOzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyh3aXRoLXRlc3QgKDpuYW1lICg6
dWRlZiA6YmNkKSkKKyAgKGFzc2VydCAoPSAjeDUyMDIKKyAgICAgICAgICAgICAoc2ItdWRlZi1p
bW1lZGlhdGU6dWRlZi1nZW5lcmFsLWdldC12YWx1ZQorICAgICAgICAgICAgICAgKG1ha2UtYmNk
IDpkaWdpdDEgMiA6ZGlnaXQyIDAgOmRpZ2l0MyAyIDpkaWdpdDQgNSkpKSkpCisKKzs7LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisod2l0aC10ZXN0ICg6bmFtZSAoOnVkZWYgOnZhci1s
ZW4tc3RyaW5nKSkKKyAgKHNiLXVkZWYtaW1tZWRpYXRlOmNvbHVtbi1zdHJ1Y3QtcmVzZXQgJ3Zh
ci1sZW4tc3RyaW5nKQorICAobGV0KiAoKGFiYyAobWFrZS12YXItbGVuLXN0cmluZyA6bCA3IDp2
ZWMgImFiY2RlZmciKSkKKyAgICAgICAgIChtbm8gKG1ha2UtdmFyLWxlbi1zdHJpbmcgOmwgNSA6
dmVjICJtbm9wcSIpKSkKKyAgICAoYXNzZXJ0ICg9IDcKKyAgICAgICAgICAgICAgICh2YXItbGVu
LXN0cmluZy1sIGFiYykpKQorICAgIChhc3NlcnQgKHN0cmluZz0gImFiY2RlZmciCisgICAgICAg
ICAgICAgICAgICAgICAodmFyLWxlbi1zdHJpbmctdmVjIGFiYykpKQorICAgIChzZXRmICh2YXIt
bGVuLXN0cmluZy12ZWMgYWJjIDppbmRleCAxKQorICAgICAgICAgICNcWCkKKyAgICAoYXNzZXJ0
IChzdHJpbmc9ICJhWGNkZWZnIgorICAgICAgICAgICAgICAgICAgICAgKHZhci1sZW4tc3RyaW5n
LXZlYyBhYmMpKSkKKyAgICAoc2V0ZiAodmFyLWxlbi1zdHJpbmctdmVjIGFiYyA6c3RhcnQgMSA6
ZW5kIDQpCisgICAgICAgICAgIkpLTE0iKQorICAgIChhc3NlcnQgKHN0cmluZz0gImFKS0xlZmci
CisgICAgICAgICAgICAgICAgICAgICAodmFyLWxlbi1zdHJpbmctdmVjIGFiYykpKQorICAgIChh
c3NlcnQgKHN0cmluZz0gIm9wcSIKKyAgICAgICAgICAgICAgICAgICAgICh2YXItbGVuLXN0cmlu
Zy12ZWMgbW5vCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzdGFy
dCAyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptb2RlIDpkaXNw
bGFjZWQpKSkKKyAgICAoYXNzZXJ0IChzdHJpbmc9ICJvcHEiCisgICAgICAgICAgICAgICAgICAg
ICAodmFyLWxlbi1zdHJpbmctdmVjIG1ubworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6c3RhcnQgMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6bW9kZSA6c3Vic2VxKSkpCisgICAgKGFzc2VydCAoZXF1YWwgJygoOkwgLiA1KSAoOlZF
QyAuICJtbm9wcSIpKQorICAgICAgICAgICAgICAgICAgICh2YXItbGVuLXN0cmluZy1hcy1hbGlz
dCBtbm8pKSkpKQorCis7Oy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzs7IHRlc3RzIENB
UworCisod2l0aC10ZXN0ICg6bmFtZSAoOnVkZWYgOmNvbnRhaW5zLWxpc3RzKSkKKyAgKGxldCAo
KGluc3QgKG1ha2UtY29udGFpbnMtbGlzdHMgOmwgKGxpc3QgNSA2IDcpKSkpCisgICAgKHNiLWV4
dDphdG9taWMtcHVzaCA0IChjb250YWlucy1saXN0cy1sIGluc3QpKQorICAgIChhc3NlcnQgKGVx
dWFsICcoNCA1IDYgNykKKyAgICAgICAgICAgICAgICAgICAoY29udGFpbnMtbGlzdHMtbCBpbnN0
KSkpKSkKKworOzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyh3aXRoLXRlc3QgKDpu
YW1lICg6dWRlZiA6bm8tc2xvdHMpKQorICAoc2ItdWRlZi1pbW1lZGlhdGU6Y29sdW1uLXN0cnVj
dC1yZXNldCAnbm8tc2xvdC11ZGVmKQorICAobGV0ICgoYSAobWFrZS1uby1zbG90LXVkZWYpKQor
ICAgICAgICAoYiAobWFrZS1uby1zbG90LXVkZWYpKQorICAgICAgICAoYyAobWFrZS1uby1zbG90
LXVkZWYpKQorICAgICAgICAoZCAobWFrZS1uby1zbG90LXVkZWYpKSkKKyAgICAoYXNzZXJ0IChl
cSBhIGEpKQorICAgIChhc3NlcnQgKG5vdCAoZXEgYSBiKSkpCisgICAgKGFzc2VydCAoPSA0IChs
ZW5ndGggKHJlbW92ZS1kdXBsaWNhdGVzIChsaXN0IGEgYiBjIGQpKSkpKQorICAgIDs7IFRPRE86
IG1ha2UgdGhhdCByZXR1cm4gTklMLCBhcyBwZXIgU1RPUkUgYW5kIFJFVFJJRVZFPworICAgIDso
YXNzZXJ0IChudWxsIGQpKQorICAgIDs7IFRlc3Qgb3ZlcmZsb3cKKyAgICAoZG90aW1lcyAoaSAx
MikKKyAgICAgIChtYWtlLW5vLXNsb3QtdWRlZikpCisgICAgKG11bHRpcGxlLXZhbHVlLWJpbmQg
KHJlc3VsdCBlKQorICAgICAgICAoaWdub3JlLWVycm9ycyAobWFrZS1uby1zbG90LXVkZWYpKQor
ICAgICAgKGFzc2VydCAobnVsbCByZXN1bHQpKQorICAgICAgKGFzc2VydCAodHlwZXAgZSAnZXJy
b3IpKSkpKQorCis7Oy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKHdpdGgtdGVzdCAo
Om5hbWUgKDp1ZGVmIDpjb2Nvb24pKQorICAoc2ItdWRlZi1pbW1lZGlhdGU6Y29sdW1uLXN0cnVj
dC1yZXNldCAnbm8tc2xvdC11ZGVmKQorICAobGV0ICgoXzAgKG1ha2Utbm8tc2xvdC11ZGVmKSkK
KyAgICAgICAgKF8xIChtYWtlLW5vLXNsb3QtdWRlZikpCisgICAgICAgIChfMiAobWFrZS1uby1z
bG90LXVkZWYpKQorICAgICAgICAoXzMgKG1ha2Utbm8tc2xvdC11ZGVmKSkpCisgICAgICAoYXNz
ZXJ0ICg9IDAgKHVkZWYvb3BlcmF0b3Itbm8tc2xvdC11ZGVmIDp0YWdnZWQtdWRlZi10by1pbnQg
XzApKSkKKyAgICAgIChhc3NlcnQgKD0gMSAodWRlZi9vcGVyYXRvci1uby1zbG90LXVkZWYgOnRh
Z2dlZC11ZGVmLXRvLWludCBfMSkpKQorICAgICAgKGFzc2VydCAoPSAyICh1ZGVmL29wZXJhdG9y
LW5vLXNsb3QtdWRlZiA6dGFnZ2VkLXVkZWYtdG8taW50IF8yKSkpCisgICAgICAoYXNzZXJ0ICg9
IDMgKHVkZWYvb3BlcmF0b3Itbm8tc2xvdC11ZGVmIDp0YWdnZWQtdWRlZi10by1pbnQgXzMpKSkK
KyAgICA7OworICAgIChzYi11ZGVmLWltbWVkaWF0ZTpjb2x1bW4tc3RydWN0LXJlc2V0ICdjb2Nv
b24pCisgICAgKGxldCogKChhIChtYWtlLWNvY29vbikpCisgICAgICAgICAgIChiIChtYWtlLWNv
Y29vbiAgICAgICAgICAgICAgICAgOmNhciBfMCkpCisgICAgICAgICAgIChjIChtYWtlLWNvY29v
biA6Y2dyIF8xIDpjZHIgXzEgOmNhciBfMSkpCisgICAgICAgICAgIChkIChtYWtlLWNvY29vbiA6
Y2dyIF8zICAgICAgICAgOmNhciBfMykpCisgICAgICAgICAgICh4IChtYWtlLWNvY29vbiA6Y2dy
IF8yIDpjZHIgXzEgOmNhciBfMCkpKQorICAgICAgKGFzc2VydCAoPSAjeGZmZjAKKyAgICAgICAg
ICAgICAgICAgKHVkZWYvb3BlcmF0b3ItY29jb29uIDp0YWdnZWQtdWRlZi10by1pbnQgYSkpKQor
ICAgICAgKGFzc2VydCAoPSAjeGZmMDEKKyAgICAgICAgICAgICAgICAgKHVkZWYvb3BlcmF0b3It
Y29jb29uIDp0YWdnZWQtdWRlZi10by1pbnQgYikpKQorICAgICAgKGFzc2VydCAoPSAjeDExMTIK
KyAgICAgICAgICAgICAgICAgKHVkZWYvb3BlcmF0b3ItY29jb29uIDp0YWdnZWQtdWRlZi10by1p
bnQgYykpKQorICAgICAgKGFzc2VydCAoPSAjeDNmMzMKKyAgICAgICAgICAgICAgICAgKHVkZWYv
b3BlcmF0b3ItY29jb29uIDp0YWdnZWQtdWRlZi10by1pbnQgZCkpKQorICAgICAgKGFzc2VydCAo
PSAjeDIxMDQKKyAgICAgICAgICAgICAgICAgKHVkZWYvb3BlcmF0b3ItY29jb29uIDp0YWdnZWQt
dWRlZi10by1pbnQgeCkpKSkpKQorCis7Oy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzs7
IEJhdGNoIGFsbG9jYXRpb24KKworKHdpdGgtdGVzdCAoOm5hbWUgKDp1ZGVmIDpiYXRjaGVkLXZh
ci1sZW4tc3RyaW5nKSkKKyAgKHNiLXVkZWYtaW1tZWRpYXRlOmNvbHVtbi1zdHJ1Y3QtcmVzZXQg
J2JhdGNoZWQtdmFyLWxlbi1zdHJpbmcpCisgIChzYi11ZGVmLWltbWVkaWF0ZTpjb2x1bW4tc3Ry
dWN0LXJlc2l6ZSAnYmF0Y2hlZC12YXItbGVuLXN0cmluZyAxNikKKyAgKGxldCogKChzMSAobWFr
ZS1iYXRjaGVkLXZhci1sZW4tc3RyaW5nIDpsIDUpKQorICAgICAgICAgKHMyIChtYWtlLWJhdGNo
ZWQtdmFyLWxlbi1zdHJpbmcgOmwgNSkpCisgICAgICAgICAoczMgKG1ha2UtYmF0Y2hlZC12YXIt
bGVuLXN0cmluZyA6bCA4KSkKKyAgICAgICAgIChzNCAobWFrZS1iYXRjaGVkLXZhci1sZW4tc3Ry
aW5nIDpsIDgpKQorICAgICAgICAgKGNvdW50ZXIgMCkpCisgICAgOzsgUzEgYW5kIFMyIG11c3Qg
YmUgaW4gdGhlIHNhbWUgYmF0Y2gKKyAgICAoYXNzZXJ0ICg9ICN4NTAwICh1ZGVmL29wZXJhdG9y
LWJhdGNoZWQtdmFyLWxlbi1zdHJpbmcgOnRhZ2dlZC11ZGVmLXRvLWludCBzMSkpKQorICAgIChh
c3NlcnQgKD0gI3g1MDUgKHVkZWYvb3BlcmF0b3ItYmF0Y2hlZC12YXItbGVuLXN0cmluZyA6dGFn
Z2VkLXVkZWYtdG8taW50IHMyKSkpCisgICAgOzsgUzMgaW4gdGhlIG5leHQsIGFuZCBTNCBpbiBh
bm90aGVyIGJhdGNoCisgICAgKGFzc2VydCAoPSAjeDgwYSAodWRlZi9vcGVyYXRvci1iYXRjaGVk
LXZhci1sZW4tc3RyaW5nIDp0YWdnZWQtdWRlZi10by1pbnQgczMpKSkKKyAgICAoYXNzZXJ0ICg9
ICN4ODE0ICh1ZGVmL29wZXJhdG9yLWJhdGNoZWQtdmFyLWxlbi1zdHJpbmcgOnRhZ2dlZC11ZGVm
LXRvLWludCBzNCkpKQorICAgIChzYi11ZGVmLWltbWVkaWF0ZTp3aXRoLWJhdGNoZWQtY3MtYWxs
b2NhdGlvbgorICAgICAgICAoYmF0Y2hlZC12YXItbGVuLXN0cmluZworICAgICAgICAgIGdldC1i
dmxzCisgICAgICAgICAgOm5ldy1iYXRjaC1jYiAobGFtYmRhIChuZXh0IGxlZnQpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIChkZWNsYXJlIChpZ25vcmUgbmV4dCBsZWZ0KSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGluY2YgY291bnRlcikpKQorICAgICAgKGxldCAoKHM1IChnZXQt
YnZscyA6bCAxKSkpCisgICAgICAgIDs7IE5vdCBpbXBsZW1lbnRlZCB5ZXQKKyAgICAgICAgKGFz
c2VydCAobnRoLXZhbHVlIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZ25vcmUtZXJy
b3JzIChnZXQtYnZscyA6bCAzKSkpKQorICAgICAgICAoYXNzZXJ0ICg9ICN4MTFjICh1ZGVmL29w
ZXJhdG9yLWJhdGNoZWQtdmFyLWxlbi1zdHJpbmcgOnRhZ2dlZC11ZGVmLXRvLWludCBzNSkpKQor
ICAgICAgICAobGlzdCBzNSkpKSkpCisKKzs7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
OzsgU3RvcmFnZSB2ZWN0b3IgdHlwZXMKKworKHdpdGgtdGVzdCAoOm5hbWUgKDp1ZGVmIDpzdG9y
YWdlLXZlY3Rvci10eXBlcykpCisgIChzYi11ZGVmLWltbWVkaWF0ZTo6Y29sdW1uLXN0cnVjdC1y
ZXNldCAnYmFyKQorICAoc2ItdWRlZi1pbW1lZGlhdGU6OmNvbHVtbi1zdHJ1Y3QtcmVzaXplICdi
YXIgMSkKKyAgOzsKKyAgKHNiLXVkZWYtaW1tZWRpYXRlOjpjb2x1bW4tc3RydWN0LXJlc2V0ICdm
b28pCisgIChzYi11ZGVmLWltbWVkaWF0ZTo6Y29sdW1uLXN0cnVjdC1yZXNpemUgJ2ZvbyAxKQor
ICA7OworICA7OyBDaGVjayB0aGUgKmV4cGVjdGVkKiB0eXBlczsKKyAgOzsgdGhlIGFjdHVhbCB2
ZWN0b3IgdHlwZSBtaWdodCBiZSBVUEdSQURFRC1BUlJBWS1FTEVNRU5ULVRZUEUKKyAgKGZsZXQg
KCh2LXR5cGUgKGMtcyBzbG90KQorICAgICAgICAgICAoc2ItdWRlZi1pbW1lZGlhdGU6OnNsb3Qt
c3RvcmFnZS10eXBlCisgICAgICAgICAgICAgKHNiLXVkZWYtaW1tZWRpYXRlOjpmaW5kLXNsb3Qt
YnktbmFtZSBjLXMgc2xvdCkpKSkKKyAgICA7OworICAgIChhc3NlcnQgKGVxdWFsICdzdHJpbmcg
ICAgICAgICAgICAgICAodi10eXBlICdmb28gJ2EpKSkKKyAgICAoYXNzZXJ0IChlcXVhbCAnKHVu
c2lnbmVkLWJ5dGUgMTYpICAgKHYtdHlwZSAnZm9vICdiKSkpCisgICAgKGFzc2VydCAoZXF1YWwg
J2ZpeG51bSAgICAgICAgICAgICAgICh2LXR5cGUgJ2ZvbyAnYykpKQorICAgIDs7CisgICAgKGFz
c2VydCAoZXF1YWwgJyh1bnNpZ25lZC1ieXRlIDMyKSAgICh2LXR5cGUgJ2JhciAnaSkpKQorICAg
IChhc3NlcnQgKGVxdWFsICdzeW1ib2wgICAgICAgICAgICAgICAodi10eXBlICdiYXIgJ25hbWUp
KSkKKyAgICAoYXNzZXJ0IChlcXVhbCAnKHVuc2lnbmVkLWJ5dGUgMzIpICAgKHYtdHlwZSAnYmFy
ICd2ZWMpKSkKKyAgICAoYXNzZXJ0IChlcXVhbCAnKHVuc2lnbmVkLWJ5dGUgMzIpICAgKHYtdHlw
ZSAnYmFyICd0eXBlZC1yZWYlKSkpCisgICAgKGFzc2VydCAoZXF1YWwgJ3QgICAgICAgICAgICAg
ICAgICAgICh2LXR5cGUgJ2JhciAncmVmKSkpCisgICAgKGFzc2VydCAoZXF1YWwgJyh1bnNpZ25l
ZC1ieXRlIDIyKSAgICh2LXR5cGUgJ2JhciAnc2VsZikpKQorICAgIChhc3NlcnQgKGVxdWFsICco
dW5zaWduZWQtYnl0ZSAxNykgICAodi10eXBlICdiYXIgJ3VkZWYpKSkKKyAgICApKQorCisKKzs7
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorOzsgOklOREVYLUJJVFMgYW5kIDpNQVgtQklU
UworCisod2l0aC10ZXN0ICg6bmFtZSAoOnVkZWYgOmJpdHMpKQorICAoZmxldCAoKGJpdHMgKHN5
bSkKKyAgICAgICAgICAgKG11bHRpcGxlLXZhbHVlLWJpbmQgKGNzIHVkKQorICAgICAgICAgICAg
ICAgKHNiLXVkZWYtaW1tZWRpYXRlOjpnZXQtY3MtbWV0YWRhdGEtZnJvbS1zeW1ib2wgc3ltKQor
ICAgICAgICAgICAgICh2YWx1ZXMgKHNiLXVkZWYtaW1tZWRpYXRlOjpjcy1tZXRhLWluZGV4LWJp
dHMgY3MpCisgICAgICAgICAgICAgICAgICAgICAoc2ItdWRlZi1pbW1lZGlhdGU6OnVkZWYtbWV0
YWRhdGEtbWF4LWJpdHMgdWQpKSkpKQorICAgIChhc3NlcnQgKD0gIDggKG50aC12YWx1ZSAwIChi
aXRzICdjb250YWlucy1saXN0cykpKSkKKyAgICAoYXNzZXJ0ICg9IDI0IChudGgtdmFsdWUgMSAo
Yml0cyAnY29udGFpbnMtbGlzdHMpKSkpCisgICAgKGFzc2VydCAoPSAgOCAobnRoLXZhbHVlIDAg
KGJpdHMgJ3VkZWYtY29ucykpKSkKKyAgICAoYXNzZXJ0ICg9IDI0IChudGgtdmFsdWUgMSAoYml0
cyAndWRlZi1jb25zKSkpKQorICAgIChhc3NlcnQgKD0gIDggKG50aC12YWx1ZSAwIChiaXRzICd2
YXItbGVuLXN0cmluZykpKSkKKyAgICAoYXNzZXJ0ICg9IDE2IChudGgtdmFsdWUgMSAoYml0cyAn
dmFyLWxlbi1zdHJpbmcpKSkpCisgICAgKGFzc2VydCAoPSAgOCAobnRoLXZhbHVlIDAgKGJpdHMg
J2JhdGNoZWQtdmFyLWxlbi1zdHJpbmcpKSkpKSkKKworCis7Oy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKzs7IEhpZ2gtY29uY3VycmVuY3kgcmVzaXplCisKKyhkZWZ1biB0aHJlYWQtZG8g
KG4gJmtleSB2ZXJib3NlIHNlbSAmYXV4IChwcmV2ICh1ZGVmL29wZXJhdG9yLWJhciA6aW50LXRv
LXRhZ2dlZC11ZGVmIDApKSkKKyAgKHByaW5jCisgICAgKGZvcm1hdCBuaWwgIn5hIHN0YXJ0aW5n
IHVwfiUiCisgICAgICAgICAgICAoc2ItdGhyZWFkOnRocmVhZC1vcy10aWQgc2ItdGhyZWFkOipj
dXJyZW50LXRocmVhZCopKSkKKyAgKHdoZW4gc2VtCisgICAgKHNiLXRocmVhZDp3YWl0LW9uLXNl
bWFwaG9yZSBzZW0pKQorICAoZmxldCAoKGRiZyAobiBjKQorICAgICAgICAgICAoZGVjbGFyZSAo
aWdub3JhYmxlIG4gYykpCisgICAgICAgICAgICMrKG9yKQorICAgICAgICAgICAocHJpbmMKKyAg
ICAgICAgICAgICAoZm9ybWF0IG5pbCAifmE6IH5kIGZyb20gfmF+JSIKKyAgICAgICAgICAgICAg
ICAgICAgIChzYi10aHJlYWQ6dGhyZWFkLW9zLXRpZCBzYi10aHJlYWQ6KmN1cnJlbnQtdGhyZWFk
KikgYyBuKSkpKQorICAoc2ItdWRlZi1pbW1lZGlhdGU6d2l0aC1iYXRjaGVkLWNzLWFsbG9jYXRp
b24gKGJhciBhbGxvYyA6YmF0Y2gtc2l6ZSA3CisgICAgICAgICAgICAgICAgICAgICA6bmV3LWJh
dGNoLWNiICMnZGJnKQorICAgIChkb3RpbWVzIChqIG4pCisgICAgICAobGV0ICgoaWQgKGFsbG9j
IDppIGoKKyAgICAgICAgICAgICAgICAgICAgICAgOm5hbWUgOm5hbWUKKyAgICAgICAgICAgICAg
ICAgICAgICAgOnNlbGYgcHJldgorICAgICAgICAgICAgICAgICAgICAgICA6dmVjIChtYWtlLWFy
cmF5IDMgOmluaXRpYWwtZWxlbWVudCBqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOmVsZW1lbnQtdHlwZSAnKHVuc2lnbmVkLWJ5dGUgMzIpKQorICAgICAgICAgICAg
ICAgICAgICAgICA6cmVmIChzYi10aHJlYWQ6dGhyZWFkLW9zLXRpZCBzYi10aHJlYWQ6KmN1cnJl
bnQtdGhyZWFkKikpKSkKKyAgICAgICAgKHNldGYgcHJldiBpZCkKKyAgICAgICAgKHdoZW4gdmVy
Ym9zZQorICAgICAgICAgIChwcmluYworICAgICAgICAgICAgKGZvcm1hdCBuaWwgIn5zIGdvdCB+
YX4lIiAoYmFyLXJlZiBpZCkgaWQpKSkpKSkpKQorCisoZGVmdW4gYXNzZXJ0LWJhci1zZWxmLWlz
LXNldCAoYikKKyAgKGxldCAoKHYgKHNiLWtlcm5lbDpnZXQtbGlzcC1vYmotYWRkcmVzcyBiKSkp
CisgICAgOzsgQmF0Y2ggYWxsb2NhdGlvbiBsZWF2ZXMgaG9sZXMgd2hpY2ggYXJlIHNlZW4gYXMg
TklMIGJ1dCBmaWxsZWQgbGF0ZXIgb24KKyAgICAodW5sZXNzIChhbmQgKD0gIy4gKGxvZ2lvcgor
ICAgICAgICAgICAgICAgICAgICAgICAgIChhc2ggKHNiLXVkZWYtaW1tZWRpYXRlOjpnZXQtZXhp
c3RpbmctdWRlZi1pZCAnYmFyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBzYi12bTp1ZGVmLWltbWVkaWF0ZS13aWRldGFnKQorICAg
ICAgICAgICAgICAgICAgICAobG9nYW5kIHYgI3hmZmZmKSkKKyAgICAgICAgICAgICAgICAgKGxl
dCAoKHMgKGJhci1zZWxmIGIpKSkKKyAgICAgICAgICAgICAgICAgICAob3IgKG51bGwgcykKKyAg
ICAgICAgICAgICAgICAgICAgICAgKHVkZWYvb3BlcmF0b3ItYmFyIDp0eXBlcCBzKQorICAgICAg
ICAgICAgICAgICAgICAgICAoZXJyb3IgIm5vdCBhIGJhciIpKSkpCisgICAgICAoZXJyb3IgImRh
dGEgYnJva2VuOiB+cyAgI3h+eCBpbnN0ZWFkIG9mIGEgQkFSIgorICAgICAgICAgICAgIGIgdikp
KSkKKworCisoZGVmbWV0aG9kIHNiLXVkZWYtaW1tZWRpYXRlOjphZnRlci1yZXNpemUtaG9vayAo
KHMgKGVxbCAnYmFyKSkgY3MpCisgIChhc3NlcnQgY3MpCisgIChzYi11ZGVmLWltbWVkaWF0ZTpt
YXAtYy1zLXJhbmdlCisgICAgIydhc3NlcnQtYmFyLXNlbGYtaXMtc2V0CisgICAgY3MpKQorCisK
KworKHdpdGgtdGVzdCAoOm5hbWUgKDp1ZGVmIDpjb25jdXJyZW50LXJlc2l6ZSkpCisgIChsZXQg
KChzZW0gKHNiLXRocmVhZDptYWtlLXNlbWFwaG9yZSkpCisgICAgICAgIChwZXItdGhyZWFkIDEx
MjcwKQorICAgICAgICAodGhyZWFkLWNvdW50IDQwKSkKKyAgICAoc2ItdWRlZi1pbW1lZGlhdGU6
Y29sdW1uLXN0cnVjdC1yZXNldCAnYmFyKQorICAgIChzYi11ZGVmLWltbWVkaWF0ZTpjb2x1bW4t
c3RydWN0LXNpemUgJ2JhcikKKyAgICAoc2ItdWRlZi1pbW1lZGlhdGU6Y29sdW1uLXN0cnVjdC1s
YXN0LWluZGV4ICdiYXIpCisgICAgKGFzc2VydCAoemVyb3AgKHNiLXVkZWYtaW1tZWRpYXRlOmNv
bHVtbi1zdHJ1Y3QtbGFzdC1pbmRleCAnYmFyKSkpCisgICAgKGxvb3AgcmVwZWF0IHRocmVhZC1j
b3VudAorICAgICAgICAgIGNvbGxlY3QgKHNiLXRocmVhZDptYWtlLXRocmVhZCAjJ3RocmVhZC1k
bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6YXJndW1lbnRzIChs
aXN0IHBlci10aHJlYWQgOnNlbSBzZW0gKSkKKyAgICAgICAgICBpbnRvIHRocmVhZHMKKyAgICAg
ICAgICBmaW5hbGx5IChwcm9nbgorICAgICAgICAgICAgICAgICAgICAoc2ItdGhyZWFkOnNpZ25h
bC1zZW1hcGhvcmUgc2VtIChsZW5ndGggdGhyZWFkcykpCisgICAgICAgICAgICAgICAgICAgICht
YXBjYXIgIydzYi10aHJlYWQ6am9pbi10aHJlYWQgdGhyZWFkcykpKQorICAgIChsb29wIHdpdGgg
aHQgPSAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICMnZXEpCisgICAgICAgICAgZm9yIGkgYmVsb3cg
KHNiLXVkZWYtaW1tZWRpYXRlOmNvbHVtbi1zdHJ1Y3QtbGFzdC1pbmRleCAnYmFyKQorICAgICAg
ICAgIGZvciB1ID0gKHVkZWYvb3BlcmF0b3ItYmFyIDppbnQtdG8tdGFnZ2VkLXVkZWYgaSkKKyAg
ICAgICAgICBkbyAoaW5jZiAoZ2V0aGFzaCAoYmFyLXJlZiB1KSBodCAwKSkKKyAgICAgICAgICBk
byAoYXNzZXJ0LWJhci1zZWxmLWlzLXNldCB1KQorICAgICAgICAgIGZpbmFsbHkKKyAgICAgICAg
ICAocmV0dXJuCisgICAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAgICAgKHVud2luZC1wcm90
ZWN0CisgICAgICAgICAgICAgICAgICAobG9vcCBmb3IgayBiZWluZyB0aGUgaGFzaC1rZXkgb2Yg
aHQgdXNpbmcgKGhhc2gtdmFsdWUgaHYpCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBEZWZh
dWx0IHZhbHVlIGlzICpuby1mb28qLCBpZ25vcmUgdGhlc2UgLQorICAgICAgICAgICAgICAgICAg
ICAgICAgOzsgb25seSB0aHJlYWQgVElEcyBhcmUgYWNjZXB0ZWQKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHdoZW4gKGludGVnZXJwIGspCisgICAgICAgICAgICAgICAgICAgICAgICBkbyAoYXNz
ZXJ0ICg9IGh2IHBlci10aHJlYWQpKSkKKyAgICAgICAgICAgICAgICAocHJvZ24gMSkpCisgICAg
ICAgICAgICAgICh2YWx1ZXMgaHQKKyAgICAgICAgICAgICAgICAgICAgICAnbXktYmFyLWRhdGEp
KSkpKSkKKworCisobGV0ICgoeCAwKSkKKyAgKGRlZnVuIG5leHQtaW5kZXggKCkKKyAgICAobG9n
YW5kICN4ZmZmZmZmCisgICAgICAgICAgICAoaW5jZiB4KSkpKQorCisoc2ItdWRlZi1pbW1lZGlh
dGU6bWFrZS13cmFwcGVkLXVkZWYtYWNjZXNzb3IgbmV4dC11ZGVmIG5leHQtaW5kZXggZm9vKQor
Cisod2l0aC10ZXN0ICg6bmFtZSAoOnVkZWYgOndyYXBwZWQtYWNjZXNzb3IpKQorICAoYXNzZXJ0
IChlcWwgMQorICAgICAgICAgICAgICAgKG5leHQtaW5kZXgpKSkKKyAgKGFzc2VydCAoZXFsICh1
ZGVmL29wZXJhdG9yLWZvbyA6aW50LXRvLXRhZ2dlZC11ZGVmIDIpCisgICAgICAgICAgICAgICAo
bmV4dC11ZGVmKSkpCisgIChhc3NlcnQgKGVxbCAzCisgICAgICAgICAgICAgICAodWRlZi9vcGVy
YXRvci1mb28gOnVkZWYtb3ItbmlsLXRvLXViLXggKG5leHQtdWRlZikpKSkKKyAgKGFzc2VydCAo
ZXFsICh1ZGVmL29wZXJhdG9yLWZvbyA6aW50LXRvLXRhZ2dlZC11ZGVmIDQpCisgICAgICAgICAg
ICAgICAobmV4dC11ZGVmKSkpCisgIChhc3NlcnQgKGVxbCA1CisgICAgICAgICAgICAgICAobmV4
dC1pbmRleCkpKSkKKworKHdpdGgtdGVzdCAoOm5hbWUgKDp1ZGVmIDp0eXBlcCkpCisgIChhc3Nl
cnQgKHR5cGVwICpuby1mb28qICdmb28pKSkKKworIysob3IpIDsgVE9ETyBCcm9rZW4KKyh3aXRo
LXRlc3QgKDpuYW1lICg6dWRlZiA6dHlwZS1vZikpCisgIChhc3NlcnQgKGVxICh0eXBlLW9mICht
YWtlLXR3aWNlLXRhZ2dlZC11ZGVmCisgICAgICAgICAgICAgICAgICAgICAgICAgKHBvc2l0aW9u
IG5pbCAqdWRlZi10eXBlcyopCisgICAgICAgICAgICAgICAgICAgICAgICAgMSkpCisgICAgICAg
ICAgICAgICd1ZGVmLWltbWVkaWF0ZSkpKQorCisjKyhvcikgOyBUT0RPIEJyb2tlbgorKHdpdGgt
dGVzdCAoOm5hbWUgKDp1ZGVmIDp0eXBlLW9mKSkKKyAgKGFzc2VydCAoZXEgKHR5cGUtb2YgKm5v
LWZvbyopICdmb28pKSkKKworCisoZGVmZ2VuZXJpYyB1ZGVmLWdlbi1mbiAoeCkKKyAgKDptZXRo
b2QgKCh4IGZpeG51bSkpICAgICAgICAgOmZpeG51bSkKKyAgKDptZXRob2QgKCh4IGZvbykpICAg
ICAgICAgICAgOmZvbykKKyAgKDptZXRob2QgKCh4IHVkZWYtaW1tZWRpYXRlKSkgOnVkZWYpCisg
ICg6bWV0aG9kICgoeCBiYXIpKSAgICAgICAgICAgIDpiYXIpCisgICg6bWV0aG9kICgoeCAoZXFs
ICpuby1mb28qKSkpIDpuby1mb28pKQorCisod2l0aC10ZXN0ICg6bmFtZSAoOnVkZWYgOmRlZm1l
dGhvZCkpCisgIChhc3NlcnQgKGVxICh1ZGVmLWdlbi1mbiA1KSAgICAgICAgICAgICAgICAgICA6
Zml4bnVtKSkKKyAgKGFzc2VydCAoZXEgKHVkZWYtZ2VuLWZuIChtYWtlLWZvbykpICAgICAgICAg
IDpmb28pKQorICAoYXNzZXJ0IChlcSAodWRlZi1nZW4tZm4gKG1ha2Utbm8tc2xvdC11ZGVmKSkg
OnVkZWYpKQorICAoYXNzZXJ0IChlcSAodWRlZi1nZW4tZm4gKG1ha2UtbXktYmFyKSkgICAgICAg
OmJhcikpCisgICMrKG9yKSA7IFRPRE8KKyAgKGFzc2VydCAoZXEgKHVkZWYtZ2VuLWZuICpuby1m
b28qKSAgICAgICAgICAgIDpuby1mb28pKSkKKworCis7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7
Ozs7OzsKKzs7OyBFcnJvciBjYXNlcworKGFzc2VydAorICAobnRoLXZhbHVlIDEKKyAgICAgICAg
ICAgICAoaWdub3JlLWVycm9ycworICAgICAgICAgICAgICAgKHNiLXVkZWYtaW1tZWRpYXRlOmRl
Zi1jb2x1bW4tc3RydWN0ICh2YXItbGVuLWFycmF5LWJhZDEKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoOm1heC1iaXRzIDI0KQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg6aW5kZXgtYml0cyAx
NikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
OmJhdGNoLXNpemUgMTApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKDppbml0aWFsLXNpemUgMzApKQorICAgICAgICAgICAgICAgICAobCAgIDAg
OnR5cGUgKHVuc2lnbmVkLWJ5dGUgMTYpIDphbGxvY2F0aW9uIDppbW1lZGlhdGUpCisgICAgICAg
ICAgICAgICAgIChiYWQgbmlsIDp0eXBlIGxpc3QpCisgICAgICAgICAgICAgICAgIChkICAyMiA6
dHlwZSAoYXJyYXkgZml4bnVtIChsKSkpKSkpKQorCisoYXNzZXJ0CisgIChudGgtdmFsdWUgMQor
ICAgICAgICAgICAgIChpZ25vcmUtZXJyb3JzCisgICAgICAgICAgICAgICAoc2ItdWRlZi1pbW1l
ZGlhdGU6ZGVmLWNvbHVtbi1zdHJ1Y3QgKHZhci1sZW4tYXJyYXktYmFkMgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg6bWF4LWJpdHMgMjQpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDppbmRl
eC1iaXRzIDE2KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICg6YmF0Y2gtc2l6ZSAxMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoOmluaXRpYWwtc2l6ZSAzMCkpCisgICAgICAgICAgICAgICAg
IChsICAgMCA6dHlwZSAodW5zaWduZWQtYnl0ZSAxNikgOmFsbG9jYXRpb24gOmltbWVkaWF0ZSkK
KyAgICAgICAgICAgICAgICAgKGsgICAwIDp0eXBlICh1bnNpZ25lZC1ieXRlIDE2KSA6YWxsb2Nh
dGlvbiA6aW1tZWRpYXRlKQorICAgICAgICAgICAgICAgICAoYmFkIDQ0IDp0eXBlIChhcnJheSBm
aXhudW0gKGspKSkKKyAgICAgICAgICAgICAgICAgKGQgIDIyIDp0eXBlIChhcnJheSBmaXhudW0g
KGwpKSkpKSkpCi0tIAoyLjUzLjAKCg==
--=_efb87a3e39f0a9c9b927eed12be18efe
Content-Transfer-Encoding: base64
Content-Type: text/x-diff;
 name=0001-User-defined-integer-types-SBCL-basics.patch
Content-Disposition: attachment;
 filename=0001-User-defined-integer-types-SBCL-basics.patch;
 size=5948

RnJvbSA2Y2Y5MzU5ZGQ4MDYyOWI3NzIxMDNjMTk0YTIyNDk1M2JhODU3NWFkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwIE1hcmVrIDxwaGlsaXBwQG1hcmVrLnByaXYuYXQ+
CkRhdGU6IFRodSwgMyBPY3QgMjAyNCAxNDozNDoyOSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMS8y
XSBVc2VyLWRlZmluZWQgaW50ZWdlciB0eXBlczogU0JDTCBiYXNpY3MuCgotLS0KIHNyYy9jb2Rl
L3ByZWQubGlzcCAgICAgICAgICAgICAgICAgICAgIHwgNyArKysrKysrCiBzcmMvY29sZC9leHBv
cnRzLmxpc3AgICAgICAgICAgICAgICAgICB8IDEgKwogc3JjL2NvbXBpbGVyL2dlbmVyaWMvZWFy
bHktb2JqZGVmLmxpc3AgfCAzICsrLQogc3JjL2NvbXBpbGVyL2dlbmVyaWMvbGF0ZS1vYmpkZWYu
bGlzcCAgfCA1ICsrKysrCiBzcmMvY29tcGlsZXIvZ2VuZXJpYy9vYmpkZWYubGlzcCAgICAgICB8
IDYgKysrKysrCiBzcmMvcnVudGltZS9saXNwb2JqLmggICAgICAgICAgICAgICAgICB8IDIgKysK
IDYgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt
LWdpdCBhL3NyYy9jb2RlL3ByZWQubGlzcCBiL3NyYy9jb2RlL3ByZWQubGlzcAppbmRleCA2ZWI0
ODQzZTcuLjk0ZjdlZDUzMiAxMDA2NDQKLS0tIGEvc3JjL2NvZGUvcHJlZC5saXNwCisrKyBiL3Ny
Yy9jb2RlL3ByZWQubGlzcApAQCAtMjE1LDYgKzIxNSwxMyBAQAogICAgICAodHlwZS1zcGVjaWZp
ZXIgKGN0eXBlLW9mIG9iamVjdCkpKQogICAgIChzaW1wbGUtZnVuICdjb21waWxlZC1mdW5jdGlv
bikKICAgICAodAorICAgICAgOzsgU2hvdWxkIHRoYXQgYmUgc3BlY2lhbC1jb2RlZCBpbiBsYXlv
dXQtb2YgaW4KKyAgICAgIDs7IHNyYy9jb21waWxlci94ODYtNjQvc3lzdGVtLmxpc3A6OTAgPz8K
KyAgICAgICh3aGVuICg9IHNiLXZtOnVkZWYtaW1tZWRpYXRlLXdpZGV0YWcKKyAgICAgICAgICAg
ICAgIChsb2dhbmQgKGdldC1saXNwLW9iai1hZGRyZXNzIG9iamVjdCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgc2Itdm06d2lkZXRhZy1tYXNrKSkKKyAgICAgICAgOzsgVE9ETyBzdWJ0eXBlcwor
ICAgICAgICAocmV0dXJuLWZyb20gdHlwZS1vZiAndWRlZi1pbW1lZGlhdGUpKQogICAgICAobGV0
ICgobGF5b3V0IChsYXlvdXQtb2Ygb2JqZWN0KSkpCiAgICAgICAgKHdoZW4gKD0gKGdldC1saXNw
LW9iai1hZGRyZXNzIGxheW91dCkgMCkKICAgICAgICAgIChyZXR1cm4tZnJvbSB0eXBlLW9mCmRp
ZmYgLS1naXQgYS9zcmMvY29sZC9leHBvcnRzLmxpc3AgYi9zcmMvY29sZC9leHBvcnRzLmxpc3AK
aW5kZXggYzI1MmM1YmMxLi4zNWIzMTRjZDIgMTAwNjQ0Ci0tLSBhL3NyYy9jb2xkL2V4cG9ydHMu
bGlzcAorKysgYi9zcmMvY29sZC9leHBvcnRzLmxpc3AKQEAgLTI5OTksNiArMjk5OSw3IEBAIHN0
cnVjdHVyZSByZXByZXNlbnRhdGlvbnMiKQogICAgICAgICAgICAiU0lNUExFLUZVTi1OQU1FLVNM
T1QiCiAgICAgICAgICAgICJTSU1QTEUtRlVOLUVOVFJZLVNBUCIKICAgICAgICAgICAgIkZVTi1Q
T0lOVEVSLUxPV1RBRyIKKyAgICAgICAgICAgIlVERUYtSU1NRURJQVRFLVdJREVUQUciCiAgICAg
ICAgICAgICJGVU5DVElPTi1MQVlPVVQiCiAgICAgICAgICAgICJTSU1QTEUtRlVOLUlORk8tU0xP
VCIKICAgICAgICAgICAgIlNJTVBMRS1GVU4tU0VMRi1TTE9UIgpkaWZmIC0tZ2l0IGEvc3JjL2Nv
bXBpbGVyL2dlbmVyaWMvZWFybHktb2JqZGVmLmxpc3AgYi9zcmMvY29tcGlsZXIvZ2VuZXJpYy9l
YXJseS1vYmpkZWYubGlzcAppbmRleCA5NjRiY2QyYzguLjc1NGQ3ZTk0NiAxMDA2NDQKLS0tIGEv
c3JjL2NvbXBpbGVyL2dlbmVyaWMvZWFybHktb2JqZGVmLmxpc3AKKysrIGIvc3JjL2NvbXBpbGVy
L2dlbmVyaWMvZWFybHktb2JqZGVmLmxpc3AKQEAgLTIyNCw3ICsyMjQsNyBAQAogICAjK3NiLXNp
bWQtcGFjay0yNTYgc2ltZC1wYWNrLTI1Ni13aWRldGFnICAgICAgICA7ICAgICAgIDY5CiAgICMt
c2Itc2ltZC1wYWNrLTI1NiB1bnVzZWQwMy13aWRldGFnICAgICAgICAgICAgIDsgIDYyCiAgIGZp
bGxlci13aWRldGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgIDY2ICAgNkQK
LSAgdW51c2VkMDQtd2lkZXRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyAgNkEg
ICA3MQorICB1ZGVmLWltbWVkaWF0ZS13aWRldGFnICAgICAgICAgICAgICAgICAgICAgICAgICA7
ICA2QSAgIDcxCiAgIHVudXNlZDA1LXdpZGV0YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDsgIDZFICAgNzUKICAgdW51c2VkMDYtd2lkZXRhZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOyAgNzIgICA3OQogICB1bnVzZWQwNy13aWRldGFnICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA7ICA3NiAgIDdECkBAIC0zMTEsNiArMzExLDcgQEAKICAgICAodW5ib3Vu
ZC1tYXJrZXItd2lkZXRhZyAidW5ib3VuZC1tYXJrZXIiKQogICAgICh3ZWFrLXBvaW50ZXItd2lk
ZXRhZyAid2Vha3B0ciIpCiAgICAgKGZkZWZuLXdpZGV0YWcgImZkZWZuIikKKyAgICAodWRlZi1p
bW1lZGlhdGUtd2lkZXRhZyAidWRlZiIpCiAgICAgKHNpbWQtcGFjay13aWRldGFnICJTSU1ELXBh
Y2siKQogICAgIChzaW1kLXBhY2stMjU2LXdpZGV0YWcgIlNJTUQtcGFjazI1NiIpCiAgICAgKGZp
bGxlci13aWRldGFnICJmaWxsZXIiKQpkaWZmIC0tZ2l0IGEvc3JjL2NvbXBpbGVyL2dlbmVyaWMv
bGF0ZS1vYmpkZWYubGlzcCBiL3NyYy9jb21waWxlci9nZW5lcmljL2xhdGUtb2JqZGVmLmxpc3AK
aW5kZXggOTQxZmYzYzIyLi41M2Y1NDZkM2UgMTAwNjQ0Ci0tLSBhL3NyYy9jb21waWxlci9nZW5l
cmljL2xhdGUtb2JqZGVmLmxpc3AKKysrIGIvc3JjL2NvbXBpbGVyL2dlbmVyaWMvbGF0ZS1vYmpk
ZWYubGlzcApAQCAtNzEsNiArNzEsNyBAQAogICAgICh3ZWFrLXBvaW50ZXIgIndlYWtwdHIiKQog
ICAgIChpbnN0YW5jZSAiaW5zdGFuY2UiICJsb3NlIiAiaW5zdGFuY2UiKQogICAgIChmZGVmbiAi
ZmRlZm4iKQorICAgICh1ZGVmLWltbWVkaWF0ZSAiaW1tZWRpYXRlIikKIAogICAgICMrc2Itc2lt
ZC1wYWNrIChzaW1kLXBhY2sgInVuYm94ZWQiKQogICAgICMrc2Itc2ltZC1wYWNrLTI1NiAoc2lt
ZC1wYWNrLTI1NiAidW5ib3hlZCIpCkBAIC0xNTcsNiArMTU4LDcgQEAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLG90aGVyLXBvaW50ZXItbG93dGFnKSkKICAgICAgICAgICAgICAgICAobWVt
YmVyIGJ5dGUgYCgjKzY0LWJpdCAsc2luZ2xlLWZsb2F0LXdpZGV0YWcKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAsY2hhcmFjdGVyLXdpZGV0YWcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAsdWRlZi1pbW1lZGlhdGUtd2lkZXRhZwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICx1bmJvdW5kLW1hcmtlci13aWRldGFnKSkpCiAgICAgICAgIDs7IGdvdHRhIGJl
IGEgQ09OUwogICAgICAgICAoc2V0ZiAoc3ZyZWYgbG93dGFnLXRibCBieXRlKSBsaXN0LXBvaW50
ZXItbG93dGFnKSkpCkBAIC0xODMsNiArMTg1LDggQEAKICAgICAoZG90aW1lcyAoaSAyNTYpCiAg
ICAgICAoY29uZCAoKGVxbCAwIChsb2dhbmQgaSBmaXhudW0tdGFnLW1hc2spKQogICAgICAgICAg
ICAgIChzZXRmIChzdnJlZiBzY2F2dGFiIGkpICJpbW1lZGlhdGUiIChzdnJlZiBzaXpldGFiIGkp
ICJpbW1lZGlhdGUiKSkKKyAgICAgICAgICAgICgoZXFsIHVkZWYtaW1tZWRpYXRlLXdpZGV0YWcg
KGxvZ2FuZCBpIHdpZGV0YWctbWFzaykpCisgICAgICAgICAgICAgKHNldGYgKHN2cmVmIHNjYXZ0
YWIgaSkgImltbWVkaWF0ZSIgKHN2cmVmIHNpemV0YWIgaSkgImltbWVkaWF0ZSIpKQogICAgICAg
ICAgICAgKHQKICAgICAgICAgICAgICAobGV0ICgocG9pbnRlci1raW5kIChjYXNlIChsb2dhbmQg
aSBsb3d0YWctbWFzaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCMuaW5z
dGFuY2UtcG9pbnRlci1sb3d0YWcgImluc3RhbmNlIikKQEAgLTIwMyw2ICsyMDcsNyBAQAogICAg
ICAgICAgICAgKGFyZWYgc2l6ZXRhYiAjeGZmKSAiY29uc2ZpbGxlciIpCiAgICAgICAoc2V0ZiAo
bnRoIGluc3RhbmNlLXBvaW50ZXItbG93dGFnIHB0cnRhYikgInNjYXZfaW5zdGFuY2VfcG9pbnRl
ciIKICAgICAgICAgICAgIChudGggbGlzdC1wb2ludGVyLWxvd3RhZyBwdHJ0YWIpICAgICAic2Nh
dl9saXN0X3BvaW50ZXIiCisgICAgICAgICAgICAobnRoIHVkZWYtaW1tZWRpYXRlLXdpZGV0YWcg
cHRydGFiKSAgInNjYXZfaW1tZWRpYXRlIgogICAgICAgICAgICAgKG50aCBmdW4tcG9pbnRlci1s
b3d0YWcgcHRydGFiKSAgICAgICJzY2F2X2Z1bl9wb2ludGVyIgogICAgICAgICAgICAgKG50aCBv
dGhlci1wb2ludGVyLWxvd3RhZyBwdHJ0YWIpICAgICJzY2F2X290aGVyX3BvaW50ZXIiKSkKICAg
ICAoZG9saXN0IChlbnRyeSAqc2Nhdi90cmFucy9zaXplKikKZGlmZiAtLWdpdCBhL3NyYy9jb21w
aWxlci9nZW5lcmljL29iamRlZi5saXNwIGIvc3JjL2NvbXBpbGVyL2dlbmVyaWMvb2JqZGVmLmxp
c3AKaW5kZXggMDIxNTBhN2M0Li4wYjJjNTFjNWUgMTAwNjQ0Ci0tLSBhL3NyYy9jb21waWxlci9n
ZW5lcmljL29iamRlZi5saXNwCisrKyBiL3NyYy9jb21waWxlci9nZW5lcmljL29iamRlZi5saXNw
CkBAIC03NSw2ICs3NSwxMiBAQAogICAjK3NwYXJjIChmaWxsZXIpCiAgICh2YWx1ZSA6Yy10eXBl
ICJsb25nIGRvdWJsZSIgOmxlbmd0aCAjK3g4NiAzICMrc3BhcmMgNCkpCiAKKyhkZWZzdHJ1Y3Qg
KHVkZWYtaW1tZWRpYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoOmNvbnN0cnVjdG9y
IG1ha2UtdWRlZi1pbW1lZGlhdGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoOnByZWRp
Y2F0ZSB1ZGVmLWltbWVkaWF0ZS1wKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKDpjb3Bp
ZXIgbmlsKSkpCisKKwogOzs7IEZJWE1FOiB0aGUgcHJpbWl0aXZlLXR5cGUgc2hvdWxkIHByb2Jh
Ymx5IGJlIG5hbWVkIENPTVBMRVgtUkFUSU9OQUwKIDs7OyBidXQgdGhhdCB3YXMgbW9yZSBpbnZh
c2l2ZSB0aGFuIHJlbmFtaW5nIGp1c3QgdGhlIHdpZGV0YWcKIChkZWZpbmUtcHJpbWl0aXZlLW9i
amVjdCAoY29tcGxleCA6dHlwZSBjb21wbGV4CmRpZmYgLS1naXQgYS9zcmMvcnVudGltZS9saXNw
b2JqLmggYi9zcmMvcnVudGltZS9saXNwb2JqLmgKaW5kZXggMzExNzU1ZjUzLi44YTE4OTUyYzAg
MTAwNjQ0Ci0tLSBhL3NyYy9ydW50aW1lL2xpc3BvYmouaAorKysgYi9zcmMvcnVudGltZS9saXNw
b2JqLmgKQEAgLTMxLDYgKzMxLDcgQEAgaXNfbGlzcF9pbW1lZGlhdGUobGlzcG9iaiBvYmopCiAg
ICAgaW50IHdpZGV0YWc7CiAgICAgcmV0dXJuIChmaXhudW1wKG9iaikKICAgICAgICAgICAgIHx8
ICgod2lkZXRhZyA9IGhlYWRlcl93aWRldGFnKG9iaikpID09IENIQVJBQ1RFUl9XSURFVEFHKQor
ICAgICAgICAgICAgfHwgKHdpZGV0YWcgPT0gVURFRl9JTU1FRElBVEVfV0lERVRBRykKICNpZiBO
X1dPUkRfQklUUyA9PSA2NAogICAgICAgICAgICAgfHwgKHdpZGV0YWcgPT0gU0lOR0xFX0ZMT0FU
X1dJREVUQUcpCiAjZW5kaWYKQEAgLTEzMSw2ICsxMzIsNyBAQCBzdGF0aWMgaW5saW5lIGludCBp
c19jb25zX2hhbGYobGlzcG9iaiBvYmopCiAgICAgaWYgKGZpeG51bXAob2JqKSB8fCBpc19saXNw
X3BvaW50ZXIob2JqKSkgcmV0dXJuIDE7CiAgICAgaW50IHdpZGV0YWcgPSBoZWFkZXJfd2lkZXRh
ZyhvYmopOwogICAgIHJldHVybiB3aWRldGFnID09IENIQVJBQ1RFUl9XSURFVEFHIHx8CisgICAg
ICAgICAgIHdpZGV0YWcgPT0gVURFRl9JTU1FRElBVEVfV0lERVRBRyB8fAogI2lmIE5fV09SRF9C
SVRTID09IDY0CiAgICAgICAgICAgIHdpZGV0YWcgPT0gU0lOR0xFX0ZMT0FUX1dJREVUQUcgfHwK
ICNlbmRpZgotLSAKMi41My4wCgo=
--=_efb87a3e39f0a9c9b927eed12be18efe
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--=_efb87a3e39f0a9c9b927eed12be18efe
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Sbcl-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sbcl-devel

--=_efb87a3e39f0a9c9b927eed12be18efe--