Re: Slot characteristic inheritance

Pierre Lorenzon <[email protected]> Sat, 30 Jun 2007 22:58:10 +0200 (CEST)
Newsgroups gmane.emacs.eieio
Message-ID <[email protected]>
----Next_Part(Sat_Jun_30_22_58_10_2007_759)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hi Again,

In my last modification of eieio.el, I did not implement any
protocol for the doc attribute. It seems clear for me that this
attribute should be overrriddable : Hence I implement it as
overriddable ! I send the modified eieio.el : modifications are
between line 733 and 785 in the join file.

Sure I ran the tests and they passed and used these new
features for my own classes and they produced the expected
result !

Regards

Pierre


----Next_Part(Sat_Jun_30_22_58_10_2007_759)--
Content-Type: Application/Octet-Stream
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="eieio.el"

Ozs7IGVpZWlvLmVsIC0tLSBFbmhhbmNlZCBJbXBsZW1lbnRhdGlvbiBvZiBFbWFjcyBJbnRlcnBy
ZXRlZCBPYmplY3RzCjs7ICAgICAgICAgICAgICAgb3IgbWF5YmUgRXJpYydzIEltcGxlbWVudGF0
aW9uIG9mIEVtYWNzIEludHJlcHJldGVkIE9iamVjdHMKCjs7Owo7OyBDb3B5cmlnaHQgKEMpIDk1
LDk2LDk4LDk5LDIwMDAsMDEsMDIsMDMsMDQsMDUsMDYsMDcgRXJpYyBNLiBMdWRsYW0KOzsKOzsg
QXV0aG9yOiA8emFwcG9AZ251Lm9yZz4KOzsgUkNTOiAkSWQ6IGVpZWlvLmVsLHYgMS4xNDkgMjAw
Ny8wMy8xOCAxNzoyMDo0MSB6YXBwbyBFeHAgJAo7OyBLZXl3b3JkczogT08sIGxpc3AKKGRlZnZh
ciBlaWVpby12ZXJzaW9uICIxLjAiCiAgIkN1cnJlbnQgdmVyc2lvbiBvZiBFSUVJTy4iKQo7Owo7
OyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yIG1vZGlmeQo7OyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCjs7IGFueSBsYXRlciB2
ZXJzaW9uLgo7Owo7OyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo7OyBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo7Owo7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo7OyBhbG9uZyB3aXRo
IEdOVSBFbWFjczsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZQo7
OyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCjs7IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgo7Owo7OyBQbGVhc2Ugc2Vu
ZCBidWcgcmVwb3J0cywgZXRjLiB0byB6YXBwb0BnbnUub3JnCgo7OzsgQ29tbWVudGFyeToKOzsK
OzsgRUlFSU8gaXMgYSBzZXJpZXMgb2YgTGlzcCByb3V0aW5lcyB3aGljaCBpbXBsZW1lbnRzIGEg
c3Vic2V0IG9mCjs7IENMT1MsIHRoZSBDb21tb24gTGlzcCBPYmplY3QgU3lzdGVtLiAgSW4gYWRk
aXRpb24sIEVJRUlPIGFsc28gYWRkcwo7OyBhIGZldyBuZXcgZmVhdHVyZXMgd2hpY2ggaGVscCBp
dCBpbnRlZ3JhdGUgbW9yZSBzdHJvbmdseSB3aXRoIHRoZQo7OyBFbWFjcyBydW5uaW5nIGVudmly
b25tZW50Lgo7Owo7OyBTZWUgZWllaW8udGV4aSBmb3IgY29tcGxldGUgZG9jdW1lbnRhdGlvbiBv
biB1c2luZyB0aGlzIHBhY2thZ2UuCgo7OyBUaGVyZSBpcyBmdW5ueSBzdHVmZiBnb2luZyBvbiB3
aXRoIHR5cGVwIGFuZCBkZWZ0eXBlLiAgVGhpcwo7OyBpcyB0aGUgb25seSB3YXkgSSBzZWVtIHRv
IGJlIGFibGUgdG8gbWFrZSB0aGlzIHN0dWZmIGxvYWQgcHJvcGVybHkuCihyZXF1aXJlICdjbCkK
KGxvYWQgImNsLW1hY3MiIG5pbCB0KSA7IE5vIHByb3ZpZGUgaW4gdGhpcyBmaWxlLgoKOzs7IENv
ZGU6CihkZWZ1biBlaWVpby12ZXJzaW9uICgpCiAgIkRpc3BsYXkgdGhlIGN1cnJlbnQgdmVyc2lv
biBvZiBFSUVJTy4iCiAgKGludGVyYWN0aXZlKQogIChtZXNzYWdlIGVpZWlvLXZlcnNpb24pKQoK
KHJlcXVpcmUgJ2ludmVyc2lvbikKCihkZWZ1biBlaWVpby1yZXF1aXJlLXZlcnNpb24gKG1ham9y
IG1pbm9yICZvcHRpb25hbCBiZXRhKQogICJOb24tbmlsIGlmIHRoaXMgdmVyc2lvbiBvZiBFSUVJ
TyBkb2VzIG5vdCBzYXRpc2Z5IGEgc3BlY2lmaWMgdmVyc2lvbi4KQXJndW1lbnRzIGNhbiBiZToK
CiAgKE1BSk9SIE1JTk9SICZvcHRpb25hbCBCRVRBKQoKICBWYWx1ZXMgTUFKT1IgYW5kIE1JTk9S
IG11c3QgYmUgaW50ZWdlcnMuICBCRVRBIGNhbiBiZSBhbiBpbnRlZ2VyLCBvcgpleGNsdWRlZCBp
ZiBhIHJlbGVhc2VkIHZlcnNpb24gaXMgcmVxdWlyZWQuCgpJdCBpcyBhc3N1bWVkIHRoYXQgaWYg
dGhlIGN1cnJlbnQgdmVyc2lvbiBpcyBuZXdlciB0aGFuIHRoYXQgc3BlY2lmaWVkLApldmVyeXRo
aW5nIHBhc3Nlcy4gIEV4Y2VwdGlvbnMgb2NjdXIgd2hlbiBrbm93biBpbmNvbXBhdGliaWxpdGll
cyBhcmUKaW50cm9kdWNlZC4iCiAgKGludmVyc2lvbi10ZXN0ICdlaWVpbwoJCSAgKGZvcm1hdCAi
JXMuJXMlcyIgbWFqb3IgbWlub3IKCQkJICAoaWYgYmV0YSAoZm9ybWF0ICJiZXRhJXMiIGJldGEp
ICIiKSkpKQoKKGV2YWwtYW5kLWNvbXBpbGUKOzsgQWJvdW50IHRoZSBhYm92ZS4gIEVJRUlPIG11
c3QgcHJvY2VzcyBpdCdzIG93biBjb2RlIHdoZW4gaXQgY29tcGlsZXMKOzsgaXRzZWxmLCB0aHVz
LCBieSBldmFsLWFuZC1jb21waWxpbmcgb3V0c2VsdmVzLCB3ZSBzb2x2ZSB0aGUgcHJvYmxlbS4K
Cjs7IENvbXBhdGliaWxpdHkKKGlmIChmYm91bmRwICdjb21waWxlZC1mdW5jdGlvbi1hcmdsaXN0
KQoKICAgIDs7IFhFbWFjcyBjYW4gb25seSBhY2Nlc3MgYSBjb21waWxlZCBmdW5jdGlvbnMgYXJn
bGlzdCBsaWtlIHRoaXM6CiAgICAoZGVmYWxpYXMgJ2VpZWlvLWNvbXBpbGVkLWZ1bmN0aW9uLWFy
Z2xpc3QgJ2NvbXBpbGVkLWZ1bmN0aW9uLWFyZ2xpc3QpCgogIDs7IEVtYWNzIGRvZXNuJ3QgaGF2
ZSB0aGlzIGZ1bmN0aW9uLCBidXQgc2luY2UgRlVOQyBpcyBhIHZlY3Rvciwgd2UgY2FuIGp1c3QK
ICA7OyBncmFiIHRoZSBhcHByb3ByaWF0ZSBlbGVtZW50LgogIChkZWZ1biBlaWVpby1jb21waWxl
ZC1mdW5jdGlvbi1hcmdsaXN0IChmdW5jKQogICAgIlJldHVybiB0aGUgYXJndW1lbnQgbGlzdCBm
b3IgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uIEZVTkMuIgogICAgKGFyZWYgZnVuYyAwKSkKCiAgKQoK
DAo7OzsKOzsgVmFyaWFibGUgZGVjbGFyYXRpb25zLgo7OwoKKGRlZnZhciBlaWVpby1ob29rIG5p
bAogICIqVGhpcyBob29rIGlzIGV4ZWN1dGVkLCB0aGVuIGNsZWFyZWQgZWFjaCB0aW1lIGBkZWZj
bGFzcycgaXMgY2FsbGVkLgpUaGUgaW1tZWRpYXRlIGVmZmVjdCBpcyB0aGF0IEkgY2FuIHNhZmVs
eSBrZWVwIHRyYWNrIG9mIGNvbW1vbi1saXNwCmBzZXRmJyBkZWZpbml0aW9ucyByZWdhcmRsZXNz
IG9mIHRoZSBvcmRlci4gIFVzZXJzIGNhbiBhZGQgaG9va3MgdG8KdGhpcyB2YXJpYWJsZSB3aXRo
b3V0IHdvcnJ5aW5nIGFib3V0IHdlYXRoZXIgdGhpcyBwYWNrYWdlIGhhcyBiZWVuCmxvYWRlZCBv
ciBub3QuIikKCihkZWZ2YXIgZWllaW8tZXJyb3ItdW5zdXBwb3J0ZWQtY2xhc3MtdGFncyBuaWwK
ICAiKk5vbiBuaWwgdG8gdGhyb3cgYW4gZXJyb3IgaWYgYW4gZW5jb3VudGVyZWQgdGFnIHVzIHVu
c3VwcG9ydGVkLgpUaGlzIG1heSBwcmV2ZW50IGNsYXNzZXMgZnJvbSBDTE9TIGFwcGxpY2F0aW9u
cyBmcm9tIGJlaW5nIHVzZWQgd2l0aCBFSUVJTwpzaW5jZSBFSUVJTyBkb2VzIG5vdCBzdXBwb3J0
IGFsbCBDTE9TIHRhZ3MuIikKCihkZWZ2YXIgZWllaW8tc2tpcC10eXBlY2hlY2sgbmlsCiAgIipJ
ZiBub24tbmlsLCBza2lwIGFsbCBzbG90IHR5cGVjaGVja2luZy4KU2V0IHRoaXMgdG8gdCBwZXJt
YW5lbnRseSBpZiBhIHByb2dyYW0gaXMgZnVuY3Rpb25pbmcgd2VsbCB0byBnZXQgYQpzbWFsbCBz
cGVlZCBpbmNyZWFzZS4gIFRoaXMgdmFyaWFibGUgaXMgYWxzbyB1c2VkIGludGVybmFsbHkgdG8g
aGFuZGxlCmRlZmF1bHQgc2V0dGluZyBmb3Igb3B0aW1pemF0aW9uIHB1cnBvc2VzLiIpCgo7OyBT
dGF0ZSBWYXJpYWJsZXMKKGRlZnZhciB0aGlzIG5pbAogICJJbnNpZGUgYSBtZXRob2QsIHRoaXMg
dmFyaWFibGUgaXMgdGhlIG9iamVjdCBpbiBxdWVzdGlvbi4KRE8gTk9UIFNFVCBUSElTIFlPVVJT
RUxGIHVubGVzcyB5b3UgYXJlIHRyeWluZyB0byBzaW11bGF0ZSBmcmllbmRseSBmaWVsZHMuCgpO
b3RlOiBFbWJlZGRlZCBtZXRob2RzIGFyZSBubyBsb25nZXIgc3VwcG9ydGVkLiAgVGhlIHZhcmlh
YmxlIFRISVMgaXMKc3RpbGwgc2V0IGZvciBDTE9TIG1ldGhvZHMgZm9yIHRoZSBzYWtlIG9mIHJv
dXRpbmVzIGxpa2UKYGNhbGwtbmV4dC1tZXRob2QnIikKCihkZWZ2YXIgc2NvcGVkLWNsYXNzIG5p
bAogICJUaGlzIGlzIHNldCB0byBhIGNsYXNzIHdoZW4gYSBtZXRob2QgaXMgcnVubmluZy4KVGhp
cyBpcyBzbyB3ZSBrbm93IHdlIGFyZSBhbGxvd2VkIHRvIGNoZWNrIHByaXZhdGUgcGFydHMgb3Ig
aG93IHRvCmV4ZWN1dGUgYSBgY2FsbC1uZXh0LW1ldGhvZCcuICBETyBOT1QgU0VUIFRISVMgWU9V
UlNFTEYhIikKCihkZWZ2YXIgZWllaW8taW5pdGlhbGl6aW5nLW9iamVjdCAgbmlsCiAgIlNldCB0
byBub24tbmlsIHdoaWxlIGluaXRpYWxpemluZyBhbiBvYmplY3QuIikKCihkZWZjb25zdCBlaWVp
by11bmJvdW5kIChtYWtlLXN5bWJvbCAidW5ib3VuZCIpCiAgIlVuaW50ZXJuZWQgc3ltYm9sIHJl
cHJlc2VudGluZyBhbiB1bmJvdW5kIHNsb3QgaW4gYW4gb2JqZWN0LiIpCgo7OyBUaGlzIGlzIGEg
Ym9vdHN0cmFwIGZvciBlaWVpby1kZWZhdWx0LXN1cGVyY2xhc3Mgc28gaXQgaGFzIGEgdmFsdWUK
Ozsgd2hpbGUgaXQgaXMgYmVpbmcgYnVpbHQgaXRzZWxmLgooZGVmdmFyIGVpZWlvLWRlZmF1bHQt
c3VwZXJjbGFzcyBuaWwpCgooZGVmY29uc3QgY2xhc3Mtc3ltYm9sIDEgIkNsYXNzJ3Mgc3ltYm9s
IChzZWxmLXJlZmVyZW5jaW5nLikuIikKKGRlZmNvbnN0IGNsYXNzLXBhcmVudCAyICJDbGFzcyBw
YXJlbnQgZmllbGQuIikKKGRlZmNvbnN0IGNsYXNzLWNoaWxkcmVuIDMgIkNsYXNzIGNoaWxkcmVu
IGNsYXNzIGZpZWxkLiIpCihkZWZjb25zdCBjbGFzcy1zeW1ib2wtb2JhcnJheSA0ICJPYmFycmF5
IHBlcm1pdHRpbmcgZmFzdCBhY2Nlc3MgdG8gdmFyaWFibGUgcG9zaXRpb24gaW5kZXhlcy4iKQoo
ZGVmY29uc3QgY2xhc3MtcHVibGljLWEgNSAiQ2xhc3MgcHVibGljIGF0dHJpYnV0ZSBpbmRleC4i
KQooZGVmY29uc3QgY2xhc3MtcHVibGljLWQgNiAiQ2xhc3MgcHVibGljIGF0dHJpYnV0ZSBkZWZh
dWx0cyBpbmRleC4iKQooZGVmY29uc3QgY2xhc3MtcHVibGljLWRvYyA3ICJDbGFzcyBwdWJsaWMg
ZG9jdW1lbnRhdGlvbiBzdHJpbmdzIGZvciBhdHRyaWJ1dGVzLiIpCihkZWZjb25zdCBjbGFzcy1w
dWJsaWMtdHlwZSA4ICJDbGFzcyBwdWJsaWMgdHlwZSBmb3IgYSBzbG90LiIpCihkZWZjb25zdCBj
bGFzcy1wdWJsaWMtY3VzdG9tIDkgIkNsYXNzIHB1YmxpYyBjdXN0b20gdHlwZSBmb3IgYSBzbG90
LiIpCihkZWZjb25zdCBjbGFzcy1wdWJsaWMtY3VzdG9tLWxhYmVsIDEwICJDbGFzcyBwdWJsaWMg
Y3VzdG9tIGdyb3VwIGZvciBhIHNsb3QuIikKKGRlZmNvbnN0IGNsYXNzLXB1YmxpYy1jdXN0b20t
Z3JvdXAgMTEgIkNsYXNzIHB1YmxpYyBjdXN0b20gZ3JvdXAgZm9yIGEgc2xvdC4iKQooZGVmY29u
c3QgY2xhc3MtcHJvdGVjdGlvbiAxMiAiQ2xhc3MgcHJvdGVjdGlvbiBmb3IgYSBzbG90LiIpCihk
ZWZjb25zdCBjbGFzcy1pbml0YXJnLXR1cGxlcyAxMyAiQ2xhc3MgaW5pdGFyZyB0dXBsZXMgbGlz
dC4iKQooZGVmY29uc3QgY2xhc3MtY2xhc3MtYWxsb2NhdGlvbi1hIDE0ICJDbGFzcyBhbGxvY2F0
ZWQgYXR0cmlidXRlcy4iKQooZGVmY29uc3QgY2xhc3MtY2xhc3MtYWxsb2NhdGlvbi1kb2MgMTUg
IkNsYXNzIGFsbG9jYXRlZCBkb2N1bWVudGF0aW9uLiIpCihkZWZjb25zdCBjbGFzcy1jbGFzcy1h
bGxvY2F0aW9uLXR5cGUgMTYgIkNsYXNzIGFsbG9jYXRlZCB2YWx1ZSB0eXBlLiIpCihkZWZjb25z
dCBjbGFzcy1jbGFzcy1hbGxvY2F0aW9uLWN1c3RvbSAxNyAiQ2xhc3MgYWxsb2NhdGVkIGN1c3Rv
bSBkZXNjcmlwdG9yLiIpCihkZWZjb25zdCBjbGFzcy1jbGFzcy1hbGxvY2F0aW9uLWN1c3RvbS1s
YWJlbCAxOCAiQ2xhc3MgYWxsb2NhdGVkIGN1c3RvbSBkZXNjcmlwdG9yLiIpCihkZWZjb25zdCBj
bGFzcy1jbGFzcy1hbGxvY2F0aW9uLWN1c3RvbS1ncm91cCAxOSAiQ2xhc3MgYWxsb2NhdGVkIGN1
c3RvbSBncm91cC4iKQooZGVmY29uc3QgY2xhc3MtY2xhc3MtYWxsb2NhdGlvbi1wcm90ZWN0aW9u
IDIwICJDbGFzcyBhbGxvY2F0ZWQgcHJvdGVjdGlvbiBsaXN0LiIpCihkZWZjb25zdCBjbGFzcy1j
bGFzcy1hbGxvY2F0aW9uLXZhbHVlcyAyMSAiQ2xhc3MgYWxsb2NhdGVkIHZhbHVlIHZlY3Rvci4i
KQooZGVmY29uc3QgY2xhc3MtZGVmYXVsdC1vYmplY3QtY2FjaGUgMjIKICAiQ2FjaGUgaW5kZXgg
b2Ygd2hhdCBhIG5ld2x5IGNyZWF0ZWQgb2JqZWN0IHdvdWxkIGxvb2sgbGlrZS4KVGhpcyB3aWxs
IHNwZWVkIHVwIGluc3RhbnRpYXRpb24gdGltZSBhcyBvbmx5IGEgYGNvcHktc2VxdWVuY2UnIHdp
bGwKYmUgbmVlZGVkLCBpbnN0ZWFkIG9mIGxvb3Bpbmcgb3ZlciBhbGwgdGhlIHZhbHVlcyBhbmQg
c2V0dGluZyB0aGVtCmZyb20gdGhlIGRlZmF1bHQuIikKKGRlZmNvbnN0IGNsYXNzLW9wdGlvbnMg
MjMKICAiU3RvcmFnZSBsb2NhdGlvbiBvZiB0YWdnZWQgY2xhc3Mgb3B0aW9ucy4KU3RvcmVkIG91
dHJpZ2h0IHdpdGhvdXQgbW9kaWZpY2F0aW9ucyBvciBzdHJpcHBpbmcuIikKCihkZWZjb25zdCBj
bGFzcy1udW0tZmllbGRzIDI0CiAgIk51bWJlciBvZiBmaWVsZHMgaW4gdGhlIGNsYXNzIGRlZmlu
aXRpb24gb2JqZWN0LiIpCgooZGVmY29uc3Qgb2JqZWN0LWNsYXNzIDEgIkluZGV4IGluIGFuIG9i
amVjdCB2ZWN0b3Igd2hlcmUgdGhlIGNsYXNzIGlzIHN0b3JlZC4iKQooZGVmY29uc3Qgb2JqZWN0
LW5hbWUgMiAiSW5kZXggaW4gYW4gb2JqZWN0IHdoZXJlIHRoZSBuYW1lIGlzIHN0b3JlZC4iKQoK
KGRlZmNvbnN0IG1ldGhvZC1zdGF0aWMgMCAiSW5kZXggaW50byA6U1RBVElDIHRhZyBvbiBhIG1l
dGhvZC4iKQooZGVmY29uc3QgbWV0aG9kLWJlZm9yZSAxICJJbmRleCBpbnRvIDpCRUZPUkUgdGFn
IG9uIGEgbWV0aG9kLiIpCihkZWZjb25zdCBtZXRob2QtcHJpbWFyeSAyICJJbmRleCBpbnRvIDpQ
UklNQVJZIHRhZyBvbiBhIG1ldGhvZC4iKQooZGVmY29uc3QgbWV0aG9kLWFmdGVyIDMgIkluZGV4
IGludG8gOkFGVEVSIHRhZyBvbiBhIG1ldGhvZC4iKQooZGVmY29uc3QgbWV0aG9kLW51bS1saXN0
cyA0ICJOdW1iZXIgb2YgaW5kZXhlcyBpbnRvIG1ldGhvZHMgdmVjdG9yIGluIHdoaWNoIGdyb3Vw
cyBvZiBmdW5jdGlvbnMgYXJlIGtlcHQuIikKKGRlZmNvbnN0IG1ldGhvZC1nZW5lcmljLWJlZm9y
ZSA0ICJJbmRleCBpbnRvIGdlbmVyaWMgOkJFRk9SRSB0YWcgb24gYSBtZXRob2QuIikKKGRlZmNv
bnN0IG1ldGhvZC1nZW5lcmljLXByaW1hcnkgNSAiSW5kZXggaW50byBnZW5lcmljIDpQUklNQVJZ
IHRhZyBvbiBhIG1ldGhvZC4iKQooZGVmY29uc3QgbWV0aG9kLWdlbmVyaWMtYWZ0ZXIgNiAiSW5k
ZXggaW50byBnZW5lcmljIDpBRlRFUiB0YWcgb24gYSBtZXRob2QuIikKKGRlZmNvbnN0IG1ldGhv
ZC1udW0tZmllbGRzIDcgIk51bWJlciBvZiBpbmRleGVzIGludG8gYSBtZXRob2QncyB2ZWN0b3Iu
IikKCjs7IEhvdyB0byBzcGVjaWFsdHkgY29tcGlsZSBzdHVmZi4KKGF1dG9sb2FkICdieXRlLWNv
bXBpbGUtZmlsZS1mb3JtLWRlZm1ldGhvZCAiZWllaW8tY29tcCIKICAiVGhpcyBmdW5jdGlvbiBp
cyB1c2VkIHRvIGJ5dGUgY29tcGlsZSBtZXRob2RzIGluIGEgbmljZSB3YXkuIikKKHB1dCAnZGVm
bWV0aG9kICdieXRlLWh1bmstaGFuZGxlciAnYnl0ZS1jb21waWxlLWZpbGUtZm9ybS1kZWZtZXRo
b2QpCgooZXZhbC13aGVuLWNvbXBpbGUgKHJlcXVpcmUgJ2VpZWlvLWNvbXApKQoKDAo7OzsgSW1w
b3J0YW50IG1hY3JvcyB1c2VkIGluIGVpZWlvLgo7OwooZGVmbWFjcm8gY2xhc3MtdiAoY2xhc3Mp
ICJJbnRlcm5hbDogUmV0dXJuIHRoZSBjbGFzcyB2ZWN0b3IgZnJvbSB0aGUgQ0xBU1Mgc3ltYm9s
LiIKICA7OyBObyBjaGVjazogSWYgZWllaW8gZ2V0cyB0aGlzIGZhciwgaXQncyBwcm9iYWJseSBi
ZWVuIGNoZWNrZWQgYWxyZWFkeS4KICBgKGdldCAsY2xhc3MgYGVpZWlvLWNsYXNzLWRlZmluaXRp
b24pKQoKKGRlZm1hY3JvIGNsYXNzLXAgKGNsYXNzKQogICJSZXR1cm4gdCBpZiBDTEFTUyBpcyBh
IHZhbGlkIGNsYXNzIHZlY3Rvci4KQ0xBU1MgaXMgYSBzeW1ib2wuICBEZWZjbGFzcyB3aWxsIGFz
c2lnbiB0aGUgY2xhc3Mgc3ltYm9sIHRvIGl0c2VsZiwgc28KdGhlIHNob3J0Y3V0IChjbGFzcy1w
IGZvbykgd2lsbCB3b3JrLiAgVGhlIGZvcm0gKGNsYXNzLXAgJ2ZvbykgaXMgbW9yZQpyb2J1c3Qu
IgogIDs7IHRoaXMgbmV3IG1ldGhvZCBpcyBmYXN0ZXIgc2luY2UgaXQgZG9lc24ndCB3YXN0ZSB0
aW1lIGNoZWNraW5nIGxvdHMgb2YKICA7OyB0aGluZ3MuCiAgYChjb25kaXRpb24tY2FzZSBuaWwK
ICAgICAgIChlcSAoYXJlZiAoY2xhc3MtdiAsY2xhc3MpIDApICdkZWZjbGFzcykKICAgICAoZXJy
b3IgbmlsKSkpCgooZGVmbWFjcm8gb2JqZWN0LXAgKG9iaikgIlJldHVybiB0IGlmIE9CSiBpcyBh
biBvYmplY3QgdmVjdG9yLiIKICBgKGNvbmRpdGlvbi1jYXNlIG5pbAogICAgICAgKGxldCAoKHRv
YmogLG9iaikpCgkgKGFuZCAoZXEgKGFyZWYgdG9iaiAwKSAnb2JqZWN0KQoJICAgICAgKGNsYXNz
LXAgKGFyZWYgdG9iaiBvYmplY3QtY2xhc3MpKSkpCiAgICAgKGVycm9yIG5pbCkpKQoKKGRlZm1h
Y3JvIGNsYXNzLWNvbnN0cnVjdG9yIChjbGFzcykKICAiUmV0dXJuIHRoZSBzeW1ib2wgcmVwcmVz
ZW50aW5nIHRoZSBjb25zdHJ1Y3RvciBvZiBDTEFTUy4iCiAgYChhcmVmIChjbGFzcy12ICxjbGFz
cykgY2xhc3Mtc3ltYm9sKSkKCihkZWZtYWNybyBnZW5lcmljLXAgKG1ldGhvZCkKICAiUmV0dXJu
IHQgaWYgc3ltYm9sIE1FVEhPRCBpcyBhIGdlbmVyaWMgZnVuY3Rpb24uCk9ubHkgbWV0aG9kcyBo
YXZlIHRoZSBzeW1ib2wgYGVpZWlvLW1ldGhvZC1vYmFycmF5JyBhcyBhIHByb3BlcnR5ICh3aGlj
aApjb250YWlucyBhIGxpc3Qgb2YgYWxsIGJpbmRpbmdzIHRvIHRoYXQgbWV0aG9kIHR5cGUuKSIK
ICBgKGFuZCAoZmJvdW5kcCAsbWV0aG9kKSAoZ2V0ICxtZXRob2QgJ2VpZWlvLW1ldGhvZC1vYmFy
cmF5KSkpCgooZGVmbWFjcm8gY2xhc3Mtb3B0aW9uLWFzc29jIChsaXN0IG9wdGlvbikKICAiUmV0
dXJuIGZyb20gTElTVCB0aGUgZm91bmQgT1BUSU9OLiAgTmlsIGlmIGl0IGRvZXNuJ3QgZXhpc3Qu
IgogIGAoY2FyLXNhZmUgKGNkciAobWVtcSAsb3B0aW9uICxsaXN0KSkpKQoKKGRlZm1hY3JvIGNs
YXNzLW9wdGlvbiAoY2xhc3Mgb3B0aW9uKQogICJSZXR1cm4gdGhlIHZhbHVlIHN0b3JlZCBmb3Ig
Q0xBU1MnIE9QVElPTi4KUmV0dXJuIG5pbCBpZiB0aGF0IG9wdGlvbiBkb2Vzbid0IGV4aXN0LiIK
ICBgKGNsYXNzLW9wdGlvbi1hc3NvYyAoYXJlZiAoY2xhc3MtdiAsY2xhc3MpIGNsYXNzLW9wdGlv
bnMpICcsb3B0aW9uKSkKCihkZWZtYWNybyBjbGFzcy1hYnN0cmFjdC1wIChjbGFzcykKICAiUmV0
dXJuIG5vbi1uaWwgaWYgQ0xBU1MgaXMgYWJzdHJhY3QuCkFic3RyYWN0IGNsYXNzZXMgY2Fubm90
IGJlIGluc3RhbnRpYXRlZC4iCiAgYChjbGFzcy1vcHRpb24gLGNsYXNzIDphYnN0cmFjdCkpCgoM
Cjs7OyBEZWZpbmluZyBhIG5ldyBjbGFzcwo7OwooZGVmbWFjcm8gZGVmY2xhc3MgKG5hbWUgc3Vw
ZXJjbGFzcyBmaWVsZHMgJnJlc3Qgb3B0aW9ucy1hbmQtZG9jKQogICJEZWZpbmUgTkFNRSBhcyBh
IG5ldyBjbGFzcyBkZXJpdmVkIGZyb20gU1VQRVJDTEFTUyB3aXRoIEZJRUxEUy4KT1BUSU9OUy1B
TkQtRE9DIGlzIHVzZWQgYXMgdGhlIGNsYXNzJyBvcHRpb25zIGFuZCBiYXNlIGRvY3VtZW50YXRp
b24uClNVUEVSQ0xBU1MgaXMgYSBsaXN0IG9mIHN1cGVyY2xhc3NlcyB0byBpbmhlcml0IGZyb20s
IHdpdGggRklFTERTCmJlaW5nIHRoZSBmaWVsZHMgcmVzaWRpbmcgaW4gdGhhdCBjbGFzcyBkZWZp
bml0aW9uLiAgTk9URTogQ3VycmVudGx5Cm9ubHkgb25lIGZpZWxkIG1heSBleGlzdCBpbiBTVVBF
UkNMQVNTIGFzIG11bHRpcGxlIGluaGVyaXRhbmNlIGlzIG5vdAp5ZXQgc3VwcG9ydGVkLiAgU3Vw
cG9ydGVkIHRhZ3MgYXJlOgoKICA6aW5pdGZvcm0gICAtIGluaXRpYWxpemluZyBmb3JtCiAgOmlu
aXRhcmcgICAgLSB0YWcgdXNlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24KICA6YWNjZXNzb3IgICAt
IHRhZyB1c2VkIHRvIGNyZWF0ZSBhIGZ1bmN0aW9uIHRvIGFjY2VzcyB0aGlzIGZpZWxkCiAgOmFs
bG9jYXRpb24gLSBzcGVjaWZ5IHdoZXJlIHRoZSB2YWx1ZSBpcyBzdG9yZWQuCiAgICAgICAgICAg
ICAgICBkZWZhdWx0cyB0byBgOmluc3RhbmNlJywgYnV0IGNvdWxkIGFsc28gYmUgYDpjbGFzcycK
ICA6d3JpdGVyICAgICAtIGEgZnVuY3Rpb24gc3ltYm9sIHdoaWNoIHdpbGwgYHdyaXRlJyBhbiBv
YmplY3QncyBzbG90CiAgOnJlYWRlciAgICAgLSBhIGZ1bmN0aW9uIHN5bWJvbCB3aGljaCB3aWxs
IGByZWFkJyBhbiBvYmplY3QKICA6dHlwZSAgICAgICAtIHRoZSB0eXBlIG9mIGRhdGEgYWxsb3dl
ZCBpbiB0aGlzIHNsb3QgKHNlZSBgdHlwZXAnKQogIDpkb2N1bWVudGF0aW9uCiAgICAgICAgICAg
ICAgLSBBIHN0cmluZyBkb2N1bWVudGluZyB1c2Ugb2YgdGhpcyBzbG90LgoKVGhlIGZvbGxvd2lu
ZyBhcmUgZXh0ZW5zaW9ucyBvbiBDTE9TOgogIDpwcm90ZWN0aW9uIC0gU3BlY2lmeSBwcm90ZWN0
aW9uIGZvciB0aGlzIHNsb3QuCiAgICAgICAgICAgICAgICBEZWZhdWx0cyB0byBgOnB1YmxpYycu
ICBBbHNvIHVzZSBgOnByb3RlY3RlZCcsIG9yIGA6cHJpdmF0ZScKICA6Y3VzdG9tICAgICAtIFdo
ZW4gY3VzdG9taXppbmcgYW4gb2JqZWN0LCB0aGUgY3VzdG9tIDp0eXBlLiAgUHVibGljIG9ubHku
CiAgOmxhYmVsICAgICAgLSBBIHRleHQgc3RyaW5nIGxhYmVsIHVzZWQgZm9yIGEgc2xvdCB3aGVu
IGN1c3RvbWl6aW5nLgogIDpncm91cCAgICAgIC0gTmFtZSBvZiBhIGN1c3RvbWl6YXRpb24gZ3Jv
dXAgdGhpcyBzbG90IGJlbG9uZ3MgaW4uCgpBIGNsYXNzIGNhbiBhbHNvIGhhdmUgb3B0aW9uYWwg
b3B0aW9ucy4gIFRoZXNlIG9wdGlvbnMgaGFwcGVuIGluIHBsYWNlCm9mIGRvY3VtZW50YXRpb24s
IChpbmNsdWRpbmcgYSA6ZG9jdW1lbnRhdGlvbiB0YWcpIGluIGFkZGl0aW9uIHRvCmRvY3VtZW50
YXRpb24sIG9yIG5vdCBhdCBhbGwuICBTdXBwb3J0ZWQgb3B0aW9ucyBhcmU6CgogIDpkb2N1bWVu
dGF0aW9uIC0gVGhlIGRvYy1zdHJpbmcgdXNlZCBmb3IgdGhpcyBjbGFzcy4KCk9wdGlvbnMgYWRk
ZWQgdG8gRUlFSU86CgogIDphbGxvdy1uaWwtaW5pdGZvcm0gLSBOb24tbmlsIHRvIHNraXAgdHlw
ZWNoZWNraW5nIG9mIGluaXRmb3JtcyBpZiBuaWwuCiAgOmN1c3RvbS1ncm91cHMgICAgICAtIExp
c3Qgb2YgY3VzdG9tIGdyb3VwIG5hbWVzLiAgT3JnYW5pemVzIHNsb3RzIGludG8KICAgICAgICAg
ICAgICAgICAgICAgICAgcmVhc29uYWJsZSBncm91cHMgZm9yIGN1c3RvbWl6YXRpb25zLgogIDph
YnN0cmFjdCAgICAgICAgICAgLSBOb24tbmlsIHRvIHByZXZlbnQgaW5zdGFuY2VzIG9mIHRoaXMg
Y2xhc3MuCiAgICAgICAgICAgICAgICAgICAgICAgIElmIGEgc3RyaW5nLCB1c2UgYXMgYW4gZXJy
b3Igc3RyaW5nIGlmIHNvbWVvbmUgZG9lcwogICAgICAgICAgICAgICAgICAgICAgICB0cnkgdG8g
bWFrZSBhbiBpbnN0YW5jZS4KCk9wdGlvbnMgaW4gQ0xPUyBub3Qgc3VwcG9ydGVkIGluIEVJRUlP
OgoKICA6bWV0YWNsYXNzIC0gQ2xhc3MgdG8gdXNlIGluIHBsYWNlIG9mIGBzdGFuZGFyZC1jbGFz
cycKICA6ZGVmYXVsdC1pbml0YXJncyAtIEluaXRhcmdzIHRvIHVzZSB3aGVuIGluaXRpYWxpemlu
ZyBuZXcgb2JqZWN0cyBvZgogICAgICAgICAgICAgICAgICAgICAgdGhpcyBjbGFzcy4KCkR1ZSB0
byB0aGUgd2F5IGNsYXNzIG9wdGlvbnMgYXJlIHNldCB1cCwgeW91IGNhbiBhZGQgYW55IHRhZ3Mg
aW4geW91Cndpc2gsIGFuZCByZWZlcmVuY2UgdGhlbSB1c2luZyB0aGUgZnVuY3Rpb24gYGNsYXNz
LW9wdGlvbicuIgogIDs7IFdlIG11c3QgYGV2YWwtYW5kLWNvbXBpbGUnIHRoaXMgc28gdGhhdCB3
aGVuIHdlIGJ5dGUgY29tcGlsZQogIDs7IGFuIGVpZWlvIHByb2dyYW0sIHRoZXJlIGlzIG5vIG5l
ZWQgdG8gbG9hZCBpdCBhaGVhZCBvZiB0aW1lLgogIDs7IEl0IGFsc28gcHJvdmlkZXMgbG90cyBv
ZiBuaWNlIGRlYnVnZ2luZyBlcnJvcnMgYXQgY29tcGlsZSB0aW1lLgogIGAoZXZhbC1hbmQtY29t
cGlsZQogICAgIChlaWVpby1kZWZjbGFzcyAnLG5hbWUgJyxzdXBlcmNsYXNzICcsZmllbGRzICcs
b3B0aW9ucy1hbmQtZG9jKSkpCgooZGVmdW4gZWllaW8tZGVmY2xhc3MgKGNuYW1lIHN1cGVyY2xh
c3NlcyBmaWVsZHMgb3B0aW9ucy1hbmQtZG9jKQogICJTZWUgYGRlZmNsYXNzJyBmb3IgbW9yZSBp
bmZvcm1hdGlvbi4KRGVmaW5lIENOQU1FIGFzIGEgbmV3IHN1YmNsYXNzIG9mIFNVUEVSQ0xBU1NF
Uywgd2l0aCBGSUVMRFMgYmVpbmcgdGhlCmZpZWxkcyByZXNpZGluZyBpbiB0aGF0IGNsYXNzIGRl
ZmluaXRpb24sIGFuZCB3aXRoIG9wdGlvbnMgb3IgZG9jdW1lbnRhdGlvbgpPUFRJT05TLUFORC1E
T0MgYXMgdGhlIHRvcGxldmVsIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgY2xhc3MuIgogIDs7IFJ1
biBvdXIgZWllaW8taG9vayBlYWNoIHRpbWUsIGFuZCBjbGVhciBpdCB3aGVuIHdlIGFyZSBkb25l
LgogIDs7IFRoaXMgd2F5IHBlb3BsZSBjYW4gYWRkIGhvb2tzIHNhZmVseSBpZiB0aGV5IHdhbnQg
dG8gbW9kaWZ5IGVpZWlvCiAgOzsgb3IgYWRkIGRlZmluaXRpb25zIHdoZW4gZWllaW8gaXMgbG9h
ZGVkIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQuCiAgKHJ1bi1ob29rcyAnZWllaW8taG9vaykKICAo
c2V0cSBlaWVpby1ob29rIG5pbCkKCiAgKGlmIChub3QgKHN5bWJvbHAgY25hbWUpKSAoc2lnbmFs
ICd3cm9uZy10eXBlLWFyZ3VtZW50ICcoc3ltYm9scCBjbmFtZSkpKQogIChpZiAobm90IChsaXN0
cCBzdXBlcmNsYXNzZXMpKSAoc2lnbmFsICd3cm9uZy10eXBlLWFyZ3VtZW50ICcobGlzdHAgc3Vw
ZXJjbGFzc2VzKSkpCgogIChsZXQqICgocG5hbWUgKGlmIHN1cGVyY2xhc3NlcyBzdXBlcmNsYXNz
ZXMgbmlsKSkKCSAobmV3YyAobWFrZS12ZWN0b3IgY2xhc3MtbnVtLWZpZWxkcyBuaWwpKQoJIChv
bGRjICh3aGVuIChjbGFzcy1wIGNuYW1lKSAoY2xhc3MtdiBjbmFtZSkpKQoJIChncm91cHMgbmls
KSA7OyBsaXN0IG9mIGdyb3VwcyBpZCdkIGZyb20gc2xvdHMKCSAob3B0aW9ucyBuaWwpCgkgKGNs
ZWFycGFyZW50IG5pbCkpCgogICAgKGFzZXQgbmV3YyAwICdkZWZjbGFzcykKICAgIChhc2V0IG5l
d2MgY2xhc3Mtc3ltYm9sIGNuYW1lKQoKICAgIDs7IElmIHRoaXMgY2xhc3MgYWxyZWFkeSBleGlz
dGVkLCBhbmQgd2UgYXJlIHVwZGF0aW5nIGl0J3Mgc3RydWN0dXJlLAogICAgOzsgbWFrZSBzdXJl
IHdlIGtlZXAgdGhlIG9sZCBjaGlsZCBsaXN0LiAgVGhpcyBjYW4gY2F1c2UgYnVncywgYnV0CiAg
ICA7OyBpZiBubyBuZXcgc2xvdHMgYXJlIGNyZWF0ZWQsIGl0IGFsc28gc2F2ZXMgdGltZSwgYW5k
IHByZXZlbnRzCiAgICA7OyBtZXRob2QgdGFibGUgYnJlYWthZ2UsIHBhcnRpY3VsYXJseSB3aGVu
IHRoZSB1c2VycyBpcyBvbmx5CiAgICA7OyBieXRlIGNvbXBpbGluZyBhbiBFSUVJTyBmaWxlLgog
ICAgKHdoZW4gb2xkYwogICAgICAoYXNldCBuZXdjIGNsYXNzLWNoaWxkcmVuIChhcmVmIG9sZGMg
Y2xhc3MtY2hpbGRyZW4pKSkKCiAgICAoY29uZCAoKGFuZCAoc3RyaW5ncCAoY2FyIG9wdGlvbnMt
YW5kLWRvYykpCgkJKC89IDEgKCUgKGxlbmd0aCBvcHRpb25zLWFuZC1kb2MpIDIpKSkKCSAgIChl
cnJvciAiVG9vIG1hbnkgYXJndW1lbnRzIHRvIGBkZWZjbGFzcyciKSkKCSAgKChhbmQgKHN5bWJv
bHAgKGNhciBvcHRpb25zLWFuZC1kb2MpKQoJCSgvPSAwICglIChsZW5ndGggb3B0aW9ucy1hbmQt
ZG9jKSAyKSkpCgkgICAoZXJyb3IgIlRvbyBtYW55IGFyZ3VtZW50cyB0byBgZGVmY2xhc3MnIikp
CgkgICkKCiAgICAoc2V0cSBvcHRpb25zCgkgIChpZiAoc3RyaW5ncCAoY2FyIG9wdGlvbnMtYW5k
LWRvYykpCgkgICAgICAoY29ucyA6ZG9jdW1lbnRhdGlvbiBvcHRpb25zLWFuZC1kb2MpCgkgICAg
b3B0aW9ucy1hbmQtZG9jKSkKCiAgICAoaWYgcG5hbWUKCShwcm9nbgoJICAod2hpbGUgcG5hbWUK
CSAgICAoaWYgKGFuZCAoY2FyIHBuYW1lKSAoc3ltYm9scCAoY2FyIHBuYW1lKSkpCgkJKGlmIChu
b3QgKGNsYXNzLXAgKGNhciBwbmFtZSkpKQoJCSAgICA7OyBiYWQgY2xhc3MKCQkgICAgKGVycm9y
ICJHaXZlbiBwYXJlbnQgY2xhc3MgJXMgaXMgbm90IGEgY2xhc3MiIChjYXIgcG5hbWUpKQoJCSAg
OzsgZ29vZCBwYXJlbnQgY2xhc3MuLi4KCQkgIDs7IHNhdmUgbmV3IGNoaWxkIGluIHBhcmVudAoJ
CSAgKGlmIChub3QgKG1lbWJlciBjbmFtZSAoYXJlZiAoY2xhc3MtdiAoY2FyIHBuYW1lKSkgY2xh
c3MtY2hpbGRyZW4pKSkKCQkgICAgICAoYXNldCAoY2xhc3MtdiAoY2FyIHBuYW1lKSkgY2xhc3Mt
Y2hpbGRyZW4KCQkJICAgIChjb25zIGNuYW1lIChhcmVmIChjbGFzcy12IChjYXIgcG5hbWUpKSBj
bGFzcy1jaGlsZHJlbikpKSkKCQkgIDs7IEdldCBjdXN0b20gZ3JvdXBzLCBhbmQgc3RvcmUgdGhl
bSBpbnRvIG91ciBsb2NhbCBjb3B5LgoJCSAgKG1hcGNhciAobGFtYmRhIChnKSAoYWRkLXRvLWxp
c3QgJ2dyb3VwcyBnKSkKCQkJICAoY2xhc3Mtb3B0aW9uIChjYXIgcG5hbWUpIDpjdXN0b20tZ3Jv
dXBzKSkKCQkgIDs7IHNhdmUgcGFyZW50IGluIGNoaWxkCgkJICAoYXNldCBuZXdjIGNsYXNzLXBh
cmVudCAoY29ucyAoY2FyIHBuYW1lKSAoYXJlZiBuZXdjIGNsYXNzLXBhcmVudCkpKSkKCSAgICAg
IChlcnJvciAiSW52YWxpZCBwYXJlbnQgY2xhc3MgJXMiIHBuYW1lKSkKCSAgICAoc2V0cSBwbmFt
ZSAoY2RyIHBuYW1lKSkpCgkgIDs7IFJldmVyc2UgdGhlIGxpc3Qgb2Ygb3VyIHBhcmVudHMgc28g
dGhhdCB0aGV5IGFyZSBwcmlvcml0aXplZCBpbgoJICA7OyB0aGUgc2FtZSBvcmRlciBhcyBzcGVj
aWZpZWQgaW4gdGhlIGNvZGUuCgkgIChhc2V0IG5ld2MgY2xhc3MtcGFyZW50IChucmV2ZXJzZSAo
YXJlZiBuZXdjIGNsYXNzLXBhcmVudCkpKSApCiAgICAgIDs7IElmIHRoZXJlIGlzIG5vdGhpbmcg
dG8gbG9vcCBvdmVyLCB0aGVuIGluaGVyaXQgZnJvbSB0aGUKICAgICAgOzsgZGVmYXVsdCBzdXBl
cmNsYXNzLgogICAgICAodW5sZXNzIChlcSBjbmFtZSAnZWllaW8tZGVmYXVsdC1zdXBlcmNsYXNz
KQoJOzsgYWRvcHQgdGhlIGRlZmF1bHQgcGFyZW50IGhlcmUsIGJ1dCBjbGVhciBpdCBsYXRlci4u
LgoJKHNldHEgY2xlYXJwYXJlbnQgdCkKCTs7IHNhdmUgbmV3IGNoaWxkIGluIHBhcmVudAoJKGlm
IChub3QgKG1lbWJlciBjbmFtZSAoYXJlZiAoY2xhc3MtdiAnZWllaW8tZGVmYXVsdC1zdXBlcmNs
YXNzKSBjbGFzcy1jaGlsZHJlbikpKQoJICAgIChhc2V0IChjbGFzcy12ICdlaWVpby1kZWZhdWx0
LXN1cGVyY2xhc3MpIGNsYXNzLWNoaWxkcmVuCgkJICAoY29ucyBjbmFtZSAoYXJlZiAoY2xhc3Mt
diAnZWllaW8tZGVmYXVsdC1zdXBlcmNsYXNzKSBjbGFzcy1jaGlsZHJlbikpKSkKCTs7IHNhdmUg
cGFyZW50IGluIGNoaWxkCgkoYXNldCBuZXdjIGNsYXNzLXBhcmVudCAobGlzdCBlaWVpby1kZWZh
dWx0LXN1cGVyY2xhc3MpKSkpCiAgICAKICAgIDs7IHR1cm4gdGhpcyBpbnRvIGEgdXNlYWJsZSBz
ZWxmLXBvaW50aW5nIHN5bWJvbAogICAgKHNldCBjbmFtZSBjbmFtZSkKCiAgICA7OyBUaGVzZSB0
d28gdGVzdHMgbXVzdCBiZSBjcmVhdGVkIHJpZ2h0IGF3YXkgc28gd2UgY2FuIGhhdmUgc2VsZi0K
ICAgIDs7IHJlZmVyZW5jaW5nIGNsYXNzZXMuICBlaSwgYSBjbGFzcyB3aG9zZSBzbG90IGNhbiBj
b250YWluIG9ubHkKICAgIDs7IHBvaW50ZXJzIHRvIGl0c2VsZi4KCiAgICA7OyBDcmVhdGUgdGhl
IHRlc3QgZnVuY3Rpb24KICAgIChsZXQgKChjc3ltIChpbnRlcm4gKGNvbmNhdCAoc3ltYm9sLW5h
bWUgY25hbWUpICItcCIpKSkpCiAgICAgIChmc2V0IGNzeW0KCSAgICAobGlzdCAnbGFtYmRhIChs
aXN0ICdvYmopCgkJICAoZm9ybWF0ICJUZXN0IE9CSiB0byBzZWUgaWYgaXQgYW4gb2JqZWN0IG9m
IHR5cGUgJXMiIGNuYW1lKQoJCSAgKGxpc3QgJ2FuZCAnKG9iamVjdC1wIG9iaikKCQkJKGxpc3Qg
J3NhbWUtY2xhc3MtcCAnb2JqIGNuYW1lKSkpKSkKCiAgICA7OyBDcmVhdGUgYSBoYW5keSBjaGls
ZCB0ZXN0IHRvbwogICAgKGxldCAoKGNzeW0gKGludGVybiAoY29uY2F0IChzeW1ib2wtbmFtZSBj
bmFtZSkgIi1jaGlsZC1wIikpKSkKICAgICAgKGZzZXQgY3N5bQoJICAgIGAobGFtYmRhIChvYmop
CgkgICAgICAgLChmb3JtYXQKCQkgICJUZXN0IE9CSiB0byBzZWUgaWYgaXQgYW4gb2JqZWN0IGlz
IGEgY2hpbGQgb2YgdHlwZSAlcyIKCQkgIGNuYW1lKQoJICAgICAgIChhbmQgKG9iamVjdC1wIG9i
aikKCQkgICAgKG9iamVjdC1vZi1jbGFzcy1wIG9iaiAsY25hbWUpKSkpCiAgICAKICAgICAgOzsg
V2hlbiB1c2luZyB0eXBlcCwgKHR5cGVwIE9CSiAnbXljbGFzcykgcmV0dXJucyB0IGZvciBvYmpl
Y3RzIHdoaWNoCiAgICAgIDs7IGFyZSBzdWJjbGFzc2VzIG9mIG15Y2xhc3MuICBGb3Igb3VyIHBy
ZWRpY2F0ZXMsIGhvd2V2ZXIsIGl0IGlzCiAgICAgIDs7IGltcG9ydGFudCBmb3IgRUlFSU8gdG8g
YmUgYmFja3dhcmRzIGNvbXBhdGlibGUsIHdoZXJlCiAgICAgIDs7IG15b2JqZWN0LXAsIGFuZCBt
eW9iamVjdC1jaGlsZC1wIGFyZSBkaWZmZXJlbnQuCiAgICAgIDs7ICJjbCIgdXNlcyB0aGlzIHRl
Y2huaXF1ZSB0byBzcGVjaWZ5IHN5bWJvbHMgd2l0aCBzcGVjaWZpYyB0eXBlcAogICAgICA7OyB0
ZXN0LCBzbyB3ZSBjYW4gbGV0IHR5cGVwIGhhdmUgdGhlIENMT1MgZG9jdW1lbnRlZCBiZWhhdmlv
cgogICAgICA7OyB3aGlsZSBrZWVwaW5nIG91ciBhYm92ZSBwcmVkaWNhdGUgY2xlYW4uCiAgICAg
IChldmFsIGAoZGVmdHlwZSAsY25hbWUgKCkKCSAgICAgICAnKHNhdGlzZmllcwoJCSAsKGludGVy
biAoY29uY2F0IChzeW1ib2wtbmFtZSBjbmFtZSkgIi1jaGlsZC1wIikpKSkpCgogICAgICApCgog
ICAgOzsgYmVmb3JlIGFkZGluZyBuZXcgZmllbGRzLCBsZXRzIGFkZCBhbGwgdGhlIG1ldGhvZHMg
YW5kIGNsYXNzZXMKICAgIDs7IGluIGZyb20gdGhlIHBhcmVudCBjbGFzcwogICAgKGVpZWlvLWNv
cHktcGFyZW50cy1pbnRvLXN1YmNsYXNzIG5ld2Mgc3VwZXJjbGFzc2VzKQoKICAgIDs7IFN0b3Jl
IHRoZSBuZXcgY2xhc3MgdmVjdG9yIGRlZmluaXRpb24gaW50byB0aGUgc3ltYm9sLiAgV2UgbmVl
ZCB0bwogICAgOzsgZG8gdGhpcyBmaXJzdCBzbyB0aGF0IHdlIGNhbiBjYWxsIGRlZm1ldGhvZCBm
b3IgdGhlIGFjY2Vzc29yLgogICAgOzsgVGhlIHZlY3RvciB3aWxsIGJlIHVwZGF0ZWQgYnkgdGhl
IGZvbGxvd2luZyB3aGlsZSBsb29wIGFuZCB3aWxsIG5vdAogICAgOzsgbmVlZCB0byBiZSBzdG9y
ZWQgYSBzZWNvbmQgdGltZS4KICAgIChwdXQgY25hbWUgJ2VpZWlvLWNsYXNzLWRlZmluaXRpb24g
bmV3YykKCiAgICA7OyBRdWVyeSBlYWNoIGZpZWxkIGluIHRoZSBkZWNsYXJhdGlvbiBsaXN0IGFu
ZCBtYW5nbGUgaW50byB0aGUKICAgIDs7IGNsYXNzIHN0cnVjdHVyZSBJIGhhdmUgZGVmaW5lZC4K
ICAgICh3aGlsZSBmaWVsZHMKICAgICAgKGxldCogKChmaWVsZDEgIChjYXIgZmllbGRzKSkKCSAg
ICAgKG5hbWUgICAgKGNhciBmaWVsZDEpKQoJICAgICAoZmllbGQgICAoY2RyIGZpZWxkMSkpCgkg
ICAgIChhY2NlcyAgIChwbGlzdC1nZXQgZmllbGQgJzphY2Nlc3NvcikpCgkgICAgIChpbml0ICAg
IChvciAocGxpc3QtZ2V0IGZpZWxkICc6aW5pdGZvcm0pCgkJCSAgKGlmIChtZW1iZXIgJzppbml0
Zm9ybSBmaWVsZCkgbmlsCgkJCSAgICBlaWVpby11bmJvdW5kKSkpCgkgICAgIChpbml0YXJnIChw
bGlzdC1nZXQgZmllbGQgJzppbml0YXJnKSkKCSAgICAgKGRvY3N0ciAgKHBsaXN0LWdldCBmaWVs
ZCAnOmRvY3VtZW50YXRpb24pKQoJICAgICAocHJvdCAgICAocGxpc3QtZ2V0IGZpZWxkICc6cHJv
dGVjdGlvbikpCgkgICAgIChyZWFkZXIgIChwbGlzdC1nZXQgZmllbGQgJzpyZWFkZXIpKQoJICAg
ICAod3JpdGVyICAocGxpc3QtZ2V0IGZpZWxkICc6d3JpdGVyKSkKCSAgICAgKGFsbG9jICAgKHBs
aXN0LWdldCBmaWVsZCAnOmFsbG9jYXRpb24pKQoJICAgICAodHlwZSAgICAocGxpc3QtZ2V0IGZp
ZWxkICc6dHlwZSkpCgkgICAgIChjdXN0b20gIChwbGlzdC1nZXQgZmllbGQgJzpjdXN0b20pKQoJ
ICAgICAobGFiZWwgICAocGxpc3QtZ2V0IGZpZWxkICc6bGFiZWwpKQoJICAgICAoY3VzdG9tZyAo
cGxpc3QtZ2V0IGZpZWxkICc6Z3JvdXApKQoJICAgICAKCSAgICAgKHNraXAtbmlsIChjbGFzcy1v
cHRpb24tYXNzb2Mgb3B0aW9ucyA6YWxsb3ctbmlsLWluaXRmb3JtKSkKCSAgICAgKQoKCShpZiBl
aWVpby1lcnJvci11bnN1cHBvcnRlZC1jbGFzcy10YWdzCgkgICAgKGxldCAoKHRtcCBmaWVsZCkp
CgkgICAgICAod2hpbGUgdG1wCgkJKGlmIChub3QgKG1lbWJlciAoY2FyIHRtcCkgJyg6YWNjZXNz
b3IKCQkJCQkgICAgIDppbml0Zm9ybQoJCQkJCSAgICAgOmluaXRhcmcKCQkJCQkgICAgIDpkb2N1
bWVudGF0aW9uCgkJCQkJICAgICA6cHJvdGVjdGlvbgoJCQkJCSAgICAgOnJlYWRlcgoJCQkJCSAg
ICAgOndyaXRlcgoJCQkJCSAgICAgOmFsbG9jYXRpb24KCQkJCQkgICAgIDp0eXBlCgkJCQkJICAg
ICA6Y3VzdG9tCgkJCQkJICAgICA6bGFiZWwKCQkJCQkgICAgIDpncm91cAoJCQkJCSAgICAgOmFs
bG93LW5pbC1pbml0Zm9ybQoJCQkJCSAgICAgOmN1c3RvbS1ncm91cHMpKSkKCQkgICAgKHNpZ25h
bCAnaW52YWxpZC1zbG90LXR5cGUgKGxpc3QgKGNhciB0bXApKSkpCgkJKHNldHEgdG1wIChjZHIg
KGNkciB0bXApKSkpKSkKCgk7OyBDbGVhbiB1cCB0aGUgbWVhbmluZyBvZiBwcm90ZWN0aW9uLgoJ
KGNvbmQgKChvciAoZXEgcHJvdCAncHVibGljKSAoZXEgcHJvdCA6cHVibGljKSkgKHNldHEgcHJv
dCBuaWwpKQoJICAgICAgKChvciAoZXEgcHJvdCAncHJvdGVjdGVkKSAoZXEgcHJvdCA6cHJvdGVj
dGVkKSkgKHNldHEgcHJvdCAncHJvdGVjdGVkKSkKCSAgICAgICgob3IgKGVxIHByb3QgJ3ByaXZh
dGUpIChlcSBwcm90IDpwcml2YXRlKSkgKHNldHEgcHJvdCAncHJpdmF0ZSkpCgkgICAgICAoKGVx
IHByb3QgbmlsKSBuaWwpCgkgICAgICAodCAoc2lnbmFsICdpbnZhbGlkLXNsb3QtdHlwZSAobGlz
dCAnOnByb3RlY3Rpb24gcHJvdCkpKSkKCgk7OyBNYWtlIHN1cmUgdGhlIDphbGxvY2F0aW9uIHBh
cmFtZXRlciBoYXMgYSB2YWxpZCB2YWx1ZS4KCShpZiAobm90IChvciAobm90IGFsbG9jKSAoZXEg
YWxsb2MgOmNsYXNzKSAoZXEgYWxsb2MgOmluc3RhbmNlKSkpCgkgICAgKHNpZ25hbCAnaW52YWxp
ZC1zbG90LXR5cGUgKGxpc3QgJzphbGxvY2F0aW9uIGFsbG9jKSkpCgoJOzsgVGhlIGRlZmF1bHQg
dHlwZSBzcGVjaWZpZXIgaXMgc3VwcG9zZWQgdG8gYmUgdCwgbWVhbmluZyBhbnl0aGluZy4KCShp
ZiAobm90IHR5cGUpIChzZXRxIHR5cGUgdCkpCgoJOzsgTGFiZWwgaXMgbmlsLCBvciBhIHN0cmlu
ZwoJKGlmIChub3QgKG9yIChudWxsIGxhYmVsKSAoc3RyaW5ncCBsYWJlbCkpKQoJICAgIChzaWdu
YWwgJ2ludmFsaWQtc2xvdC10eXBlIChsaXN0ICc6bGFiZWwgbGFiZWwpKSkKCQoJOzsgSXMgdGhl
cmUgYW4gaW5pdGFyZywgYnV0IGFsbG9jYXRpb24gb2YgY2xhc3M/CgkoaWYgKGFuZCBpbml0YXJn
IChlcSBhbGxvYyA6Y2xhc3MpKQoJICAgIChtZXNzYWdlICJDbGFzcyBhbGxvY2F0ZWQgc2xvdHMg
ZG8gbm90IG5lZWQgOmluaXRhcmciKSkKCgk7OyBpbnRlcm4gdGhlIHN5bWJvbCBzbyB3ZSBjYW4g
dXNlIGl0IGJsYW5rbHkKCShpZiBpbml0YXJnIChzZXQgaW5pdGFyZyBpbml0YXJnKSkKCgk7OyBU
aGUgY3VzdG9tZ3JvdXAgc2hvdWxkIGJlIGEgbGlzdCBvZiBzeW1ib2xzCgkoY29uZCAoKG51bGwg
Y3VzdG9tZykKCSAgICAgICAoc2V0cSBjdXN0b21nICcoZGVmYXVsdCkpKQoJICAgICAgKChub3Qg
KGxpc3RwIGN1c3RvbWcpKQoJICAgICAgIChzZXRxIGN1c3RvbWcgKGxpc3QgY3VzdG9tZykpKSkK
CTs7IFRoZSBjdXN0b21ncm91cCBiZXR0ZXIgYmUgYSBzeW1ib2wsIG9yIGxpc3QgbyBzeW1ib2xz
LgoJKG1hcGNhciAobGFtYmRhIChjZykKCQkgIChpZiAobm90IChzeW1ib2xwIGNnKSkKCQkgICAg
ICAoc2lnbmFsICdpbnZhbGlkLXNsb3QtdHlwZSAobGlzdCAnOmdyb3VwIGNnKSkpKQoJCWN1c3Rv
bWcpCgoJOzsgRmlyc3QgdXAsIGFkZCB0aGlzIGZpZWxkIGludG8gb3VyIG5ldyBjbGFzcy4KCShl
aWVpby1hZGQtbmV3LWZpZWxkIG5ld2MgbmFtZSBpbml0IGRvY3N0ciB0eXBlIGN1c3RvbSBsYWJl
bCBjdXN0b21nCgkJCSAgICAgcHJvdCBpbml0YXJnIGFsbG9jICdkZWZhdWx0b3ZlcnJpZGUgc2tp
cC1uaWwpCgoJOzsgV2UgbmVlZCB0byBpZCB0aGUgZ3JvdXAsIGFuZCBzdG9yZSB0aGVtIGluIGEg
Z3JvdXAgbGlzdCBhdHRyaWJ1dGUuCgkobWFwY2FyIChsYW1iZGEgKGNnKSAoYWRkLXRvLWxpc3Qg
J2dyb3VwcyBjZykpIGN1c3RvbWcpCgoJOzsgYW55b25lIGNhbiBoYXZlIGFuIGFjY2Vzc29yIGZ1
bmN0aW9uLiAgVGhpcyBjcmVhdGVzIGEgZnVuY3Rpb24KCTs7IG9mIHRoZSBzcGVjaWZpZWQgbmFt
ZSwgYW5kIGFsc28gcGVyZm9ybXMgYSBgZGVmc2V0ZicgaWYgYXBwbGljYWJsZQoJOzsgc28gdGhh
dCB1c2VycyBjYW4gYHNldGYnIHRoZSBzcGFjZSByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uCgko
aWYgYWNjZXMKCSAgICAocHJvZ24KCSAgICAgIChlaWVpby1kZWZtZXRob2QgYWNjZXMKCQkobGlz
dCAoaWYgKGVxIGFsbG9jIDpjbGFzcykgOlNUQVRJQyA6UFJJTUFSWSkKCQkgICAgICAobGlzdCAo
bGlzdCAndGhpcyBjbmFtZSkpCgkJICAgICAgKGZvcm1hdAoJCSAgICAgICAiUmV0cmlldmVzIHRo
ZSBzbG90IGAlcycgZnJvbSBhbiBvYmplY3Qgb2YgY2xhc3MgYCVzJyIKCQkgICAgICAgbmFtZSBj
bmFtZSkKCQkgICAgICAobGlzdCAnZWllaW8tb3JlZiAndGhpcyAobGlzdCAncXVvdGUgbmFtZSkp
KSkKCSAgICAgIDs7IFRoYW5rcyBQYXNjYWwgQm91cmd1aWdub24gPHBqYkBpbmZvcm1hdGltYWdv
LmNvbT4KCSAgICAgIDs7IEZvciB0aGlzIGNvbXBsZXggbWFjcm8uCgkgICAgICAoZXZhbCAobWFj
cm9leHBhbmQKCQkgICAgIChsaXN0ICAnZGVmc2V0ZiBhY2NlcyAnKHdpZGdldCkgJyhzdG9yZSkK
CQkJICAgIChsaXN0ICdsaXN0ICcnZWllaW8tb3NldCAnd2lkZ2V0CgkJCQkgIChsaXN0ICdxdW90
ZSAobGlzdCAncXVvdGUgbmFtZSkpICdzdG9yZSkpKSkKCSAgICAgIDs7YChkZWZzZXRmICxhY2Nl
cyAod2lkZ2V0KSAoc3RvcmUpIChlaWVpby1vc2V0IHdpZGdldCAnLGNuYW1lIHN0b3JlKSkKCSAg
ICAgICkKCSAgKQoJOzsgSWYgYSB3cml0ZXIgaXMgZGVmaW5lZCwgdGhlbiBjcmVhdGUgYSBnZW5l
cmljIG1ldGhvZCBvZiB0aGF0Cgk7OyBuYW1lIHdob3NlIHB1cnBvc2UgaXMgdG8gc2V0IHRoZSB2
YWx1ZSBvZiB0aGUgc2xvdC4KCShpZiB3cml0ZXIKCSAgICAocHJvZ24KCSAgICAgIChlaWVpby1k
ZWZtZXRob2Qgd3JpdGVyCgkJKGxpc3QgKGxpc3QgKGxpc3QgJ3RoaXMgY25hbWUpICd2YWx1ZSkK
CQkgICAgICAoZm9ybWF0ICJTZXQgdGhlIHNsb3QgYCVzJyBvZiBhbiBvYmplY3Qgb2YgY2xhc3Mg
YCVzJyIKCQkJICAgICAgbmFtZSBjbmFtZSkKCQkgICAgICBgKHNldGYgKHNsb3QtdmFsdWUgdGhp
cyAnLG5hbWUpIHZhbHVlKSkpCgkgICAgICApKQoJOzsgSWYgYSByZWFkZXIgaXMgZGVmaW5lZCwg
dGhlbiBjcmVhdGUgYSBnZW5lcmljIG1ldGhvZAoJOzsgb2YgdGhhdCBuYW1lIHdob3NlIHB1cnBv
c2UgaXMgdG8gYWNjZXNzIHRoaXMgc2xvdCB2YWx1ZS4KCShpZiByZWFkZXIKCSAgICAocHJvZ24K
CSAgICAgIChlaWVpby1kZWZtZXRob2QgcmVhZGVyCgkJKGxpc3QgKGxpc3QgKGxpc3QgJ3RoaXMg
Y25hbWUpKQoJCSAgICAgIChmb3JtYXQgIkFjY2VzcyB0aGUgc2xvdCBgJXMnIGZyb20gb2JqZWN0
IG9mIGNsYXNzIGAlcyciCgkJCSAgICAgIG5hbWUgY25hbWUpCgkJICAgICAgYChzbG90LXZhbHVl
IHRoaXMgJyxuYW1lKSkpKSkKCSkKICAgICAgKHNldHEgZmllbGRzIChjZHIgZmllbGRzKSkpCgog
ICAgOzsgTm93IHRoYXQgZXZlcnl0aGluZyBoYXMgYmVlbiBsb2FkZWQgdXAsIGFsbCBvdXIgbGlz
dHMgYXJlIGJhY2t3YXJkcyEgIEZpeCB0aGF0IHVwIG5vdy4KICAgIChhc2V0IG5ld2MgY2xhc3Mt
cHVibGljLWEgKG5yZXZlcnNlIChhcmVmIG5ld2MgY2xhc3MtcHVibGljLWEpKSkKICAgIChhc2V0
IG5ld2MgY2xhc3MtcHVibGljLWQgKG5yZXZlcnNlIChhcmVmIG5ld2MgY2xhc3MtcHVibGljLWQp
KSkKICAgIChhc2V0IG5ld2MgY2xhc3MtcHVibGljLWRvYyAobnJldmVyc2UgKGFyZWYgbmV3YyBj
bGFzcy1wdWJsaWMtZG9jKSkpCiAgICAoYXNldCBuZXdjIGNsYXNzLXB1YmxpYy10eXBlCgkgIChh
cHBseSAndmVjdG9yIChucmV2ZXJzZSAoYXJlZiBuZXdjIGNsYXNzLXB1YmxpYy10eXBlKSkpKQog
ICAgKGFzZXQgbmV3YyBjbGFzcy1wdWJsaWMtY3VzdG9tIChucmV2ZXJzZSAoYXJlZiBuZXdjIGNs
YXNzLXB1YmxpYy1jdXN0b20pKSkKICAgIChhc2V0IG5ld2MgY2xhc3MtcHVibGljLWN1c3RvbS1s
YWJlbCAobnJldmVyc2UgKGFyZWYgbmV3YyBjbGFzcy1wdWJsaWMtY3VzdG9tLWxhYmVsKSkpCiAg
ICAoYXNldCBuZXdjIGNsYXNzLXB1YmxpYy1jdXN0b20tZ3JvdXAgKG5yZXZlcnNlIChhcmVmIG5l
d2MgY2xhc3MtcHVibGljLWN1c3RvbS1ncm91cCkpKQogICAgKGFzZXQgbmV3YyBjbGFzcy1wcm90
ZWN0aW9uIChucmV2ZXJzZSAoYXJlZiBuZXdjIGNsYXNzLXByb3RlY3Rpb24pKSkKICAgIChhc2V0
IG5ld2MgY2xhc3MtaW5pdGFyZy10dXBsZXMgKG5yZXZlcnNlIChhcmVmIG5ld2MgY2xhc3MtaW5p
dGFyZy10dXBsZXMpKSkKCiAgICA7OyBUaGUgc3RvcmFnZSBmb3IgY2xhc3MtY2xhc3MtYWxsb2Nh
dGlvbi10eXBlIG5lZWRzIHRvIGJlIHR1cm5lZCBpbnRvCiAgICA7OyBhIHZlY3RvciBub3cuCiAg
ICAoYXNldCBuZXdjIGNsYXNzLWNsYXNzLWFsbG9jYXRpb24tdHlwZQoJICAoYXBwbHkgJ3ZlY3Rv
ciAoYXJlZiBuZXdjIGNsYXNzLWNsYXNzLWFsbG9jYXRpb24tdHlwZSkpKQoKICAgIDs7IEFsc28s
IHRha2UgY2xhc3MgYWxsb2NhdGVkIHZhbHVlcywgYW5kIHZlY3Rvcml6ZSB0aGVtIGZvciBzcGVl
ZC4KICAgIChhc2V0IG5ld2MgY2xhc3MtY2xhc3MtYWxsb2NhdGlvbi12YWx1ZXMKCSAgKGFwcGx5
ICd2ZWN0b3IgKGFyZWYgbmV3YyBjbGFzcy1jbGFzcy1hbGxvY2F0aW9uLXZhbHVlcykpKQoKICAg
IDs7IEF0dGFjaCBmaWVsZCBzeW1ib2xzIGludG8gYW4gb2JhcnJheSwgYW5kIHN0b3JlIHRoZSBp
bmRleCBvZgogICAgOzsgdGhpcyBmaWVsZCBhcyB0aGUgdmFyaWFibGUgc2xvdCBpbiB0aGlzIG5l
dyBzeW1ib2wuICBXZSBuZWVkIHRvCiAgICA7OyBrbm93IGFib3V0IHByaW1lcywgYmVjYXVzZSBv
YmFycmF5cyBhcmUgYmVzdCBzZXQgaW4gdmVjdG9ycyBvZgogICAgOzsgcHJpbWUgbnVtYmVyIGxl
bmd0aCwgYW5kIHdlIGFsc28gbmVlZCB0byBtYWtlIG91ciB2ZWN0b3Igc21hbGwKICAgIDs7IHRv
IHNhdmUgc3BhY2UsIGFuZCBhbHNvIG9wdGltYWwgZm9yIHRoZSBudW1iZXIgb2YgaXRlbXMgd2Ug
aGF2ZS4KICAgIChsZXQqICgoY250IDApCgkgICAocHVic3ltcyAoYXJlZiBuZXdjIGNsYXNzLXB1
YmxpYy1hKSkKCSAgIChwcm90cyAoYXJlZiBuZXdjIGNsYXNzLXByb3RlY3Rpb24pKQoJICAgKGwg
KGxlbmd0aCBwdWJzeW1zKSkKCSAgICh2bCAobGV0ICgocHJpbWVzICcoIDMgNSA3IDExIDEzIDE3
IDE5IDIzIDI5IDMxIDM3IDQxIDQzIDQ3CgkJCQkgIDUzIDU5IDYxIDY3IDcxIDczIDc5IDgzIDg5
IDk3IDEwMSApKSkKCQkgKHdoaWxlIChhbmQgcHJpbWVzICg8IChjYXIgcHJpbWVzKSBsKSkKCQkg
ICAoc2V0cSBwcmltZXMgKGNkciBwcmltZXMpKSkKCQkgKGNhciBwcmltZXMpKSkKCSAgIChvYSAo
bWFrZS12ZWN0b3IgdmwgMCkpCgkgICAobmV3c3ltKSkKICAgICAgKHdoaWxlIHB1YnN5bXMKCShz
ZXRxIG5ld3N5bSAoaW50ZXJuIChzeW1ib2wtbmFtZSAoY2FyIHB1YnN5bXMpKSBvYSkpCgkoc2V0
IG5ld3N5bSBjbnQpCgkoc2V0cSBjbnQgKDErIGNudCkpCgkoaWYgKGNhciBwcm90cykgKHB1dCBu
ZXdzeW0gJ3Byb3RlY3Rpb24gKGNhciBwcm90cykpKQoJKHNldHEgcHVic3ltcyAoY2RyIHB1YnN5
bXMpCgkgICAgICBwcm90cyAoY2RyIHByb3RzKSkpCiAgICAgIChhc2V0IG5ld2MgY2xhc3Mtc3lt
Ym9sLW9iYXJyYXkgb2EpCiAgICAgICkKCiAgICA7OyBDcmVhdGUgdGhlIGNvbnN0cnVjdG9yIGZ1
bmN0aW9uCiAgICAoaWYgKGNsYXNzLW9wdGlvbi1hc3NvYyBvcHRpb25zIDphYnN0cmFjdCkKCTs7
IEFic3RyYWN0IGNsYXNzZXMgY2Fubm90IGJlIGluc3RhbnRpYXRlZC4gIFNheSBzby4KCShsZXQg
KChhYnMgKGNsYXNzLW9wdGlvbi1hc3NvYyBvcHRpb25zIDphYnN0cmFjdCkpKQoJICAoaWYgKG5v
dCAoc3RyaW5ncCBhYnMpKQoJICAgICAgKHNldHEgYWJzIChmb3JtYXQgIkNsYXNzICVzIGlzIGFi
c3RyYWN0IiBjbmFtZSkpKQoJICAoZnNldCBjbmFtZQoJCWAobGFtYmRhICgmcmVzdCBzdHVmZikK
CQkgICAsKGZvcm1hdCAiWW91IGNhbm5vdCBjcmVhdGUgYSBuZXcgb2JqZWN0IG9mIHR5cGUgJXMi
IGNuYW1lKQoJCSAgIChlcnJvciAsYWJzKSkpKQoKICAgICAgOzsgTm9uLWFic3RyYWN0IGNsYXNz
ZXMgbmVlZCBhIGNvbnN0cnVjdG9yLgogICAgICAoZnNldCBjbmFtZQoJICAgIGAobGFtYmRhIChu
ZXduYW1lICZyZXN0IGZpZWxkcykKCSAgICAgICAsKGZvcm1hdCAiQ3JlYXRlIGEgbmV3IG9iamVj
dCB3aXRoIG5hbWUgTkFNRSBvZiBjbGFzcyB0eXBlICVzIiBjbmFtZSkKCSAgICAgICAoYXBwbHkg
J2NvbnN0cnVjdG9yICxjbmFtZSBuZXduYW1lIGZpZWxkcykpKQogICAgICApCgogICAgOzsgU2V0
IHVwIGEgc3BlY2lhbGl6ZWQgZG9jIHN0cmluZy4KICAgIDs7IFVzZSBzdG9yZWQgdmFsdWUgc2lu
Y2UgaXQgaXMgY2FsY3VsYXRlZCBpbiBhIG5vbi10cml2aWFsIHdheQogICAgKHB1dCBjbmFtZSAn
dmFyaWFibGUtZG9jdW1lbnRhdGlvbgoJIChjbGFzcy1vcHRpb24tYXNzb2Mgb3B0aW9ucyA6ZG9j
dW1lbnRhdGlvbikpCgogICAgOzsgV2UgaGF2ZSBhIGxpc3Qgb2YgY3VzdG9tIGdyb3Vwcy4gIFN0
b3JlIHRoZW0gaW50byB0aGUgb3B0aW9ucy4KICAgIChsZXQgKChnIChjbGFzcy1vcHRpb24tYXNz
b2Mgb3B0aW9ucyA6Y3VzdG9tLWdyb3VwcykpKQogICAgICAobWFwY2FyIChsYW1iZGEgKGNnKSAo
YWRkLXRvLWxpc3QgJ2cgY2cpKSBncm91cHMpCiAgICAgIChpZiAobWVtcSA6Y3VzdG9tLWdyb3Vw
cyBvcHRpb25zKQoJICAoc2V0Y2FyIChjZHIgKG1lbXEgOmN1c3RvbS1ncm91cHMgb3B0aW9ucykp
IGcpCgkoc2V0cSBvcHRpb25zIChjb25zIDpjdXN0b20tZ3JvdXBzIChjb25zIGcgb3B0aW9ucykp
KSkpCgogICAgOzsgU2V0IHVwIHRoZSBvcHRpb25zIHdlIGhhdmUgY29sbGVjdGVkLgogICAgKGFz
ZXQgbmV3YyBjbGFzcy1vcHRpb25zIG9wdGlvbnMpCgogICAgOzsgaWYgdGhpcyBpcyBhIHN1cGVy
Y2xhc3MsIGNsZWFyIG91dCBwYXJlbnQgKHdoaWNoIHdhcyBzZXQgdG8gdGhlCiAgICA7OyBkZWZh
dWx0IHN1cGVyY2xhc3MgZWllaW8tZGVmYXVsdC1zdXBlcmNsYXNzKQogICAgKGlmIGNsZWFycGFy
ZW50IChhc2V0IG5ld2MgY2xhc3MtcGFyZW50IG5pbCkpCgogICAgOzsgQ3JlYXRlIHRoZSBjYWNo
ZWQgZGVmYXVsdCBvYmplY3QuCiAgICAobGV0ICgoY2FjaGUgKG1ha2UtdmVjdG9yICgrIChsZW5n
dGggKGFyZWYgbmV3YyBjbGFzcy1wdWJsaWMtYSkpCgkJCQkgMykgbmlsKSkpCiAgICAgIChhc2V0
IGNhY2hlIDAgJ29iamVjdCkKICAgICAgKGFzZXQgY2FjaGUgb2JqZWN0LWNsYXNzIGNuYW1lKQog
ICAgICAoYXNldCBjYWNoZSBvYmplY3QtbmFtZSAnZGVmYXVsdC1jYWNoZS1vYmplY3QpCiAgICAg
IChsZXQgKChlaWVpby1za2lwLXR5cGVjaGVjayB0KSkKCTs7IEFsbCB0eXBlLWNoZWNraW5nIGhh
cyBiZWVuIGRvbmUgdG8gb3VyIHNhdGlzZmFjdGlvbgoJOzsgYmVmb3JlIHRoaXMgY2FsbC4gIERv
bid0IHdhc3RlIG91ciB0aW1lIGluIHRoaXMgY2FsbC4uCgkoZWllaW8tc2V0LWRlZmF1bHRzIGNh
Y2hlIHQpKQogICAgICAoYXNldCBuZXdjIGNsYXNzLWRlZmF1bHQtb2JqZWN0LWNhY2hlIGNhY2hl
KSkKCiAgICA7OyBSZXR1cm4gb3VyIG5ldyBjbGFzcyBvYmplY3QKICAgIG5ld2MKICAgICkpCgoo
ZGVmdW4gZWllaW8tcGVyZm9ybS1zbG90LXZhbGlkYXRpb24tZm9yLWRlZmF1bHQgKGZpZWxkIHNw
ZWMgdmFsdWUgc2tpcG5pbCkKICAiRm9yIEZJRUxELCBzaWduYWwgaWYgU1BFQyBkb2VzIG5vdCBt
YXRjaCBWQUxVRS4KSWYgU0tJUE5JTCBpcyBub24tbmlsLCB0aGVuIGlmIFZBTFVFIGlzIG5pbCwg
cmV0dXJuIHQuIgogIChsZXQgKCh2YWwgKGVpZWlvLWRlZmF1bHQtZXZhbC1tYXliZSB2YWx1ZSkp
KQogICAgKGlmIChhbmQgKG5vdCBlaWVpby1za2lwLXR5cGVjaGVjaykKCSAgICAgKG5vdCAoYW5k
IHNraXBuaWwgKG51bGwgdmFsKSkpCgkgICAgIChub3QgKGVpZWlvLXBlcmZvcm0tc2xvdC12YWxp
ZGF0aW9uIHNwZWMgdmFsKSkpCgkoc2lnbmFsICdpbnZhbGlkLXNsb3QtdHlwZSAobGlzdCBmaWVs
ZCBzcGVjIHZhbCkpKSkpCgooZGVmdW4gZWllaW8tYWRkLW5ldy1maWVsZCAobmV3YyBhIGQgZG9j
IHR5cGUgY3VzdCBsYWJlbCBjdXN0ZyBwcm90IGluaXQgYWxsb2MKCQkJCSAmb3B0aW9uYWwgZGVm
YXVsdG92ZXJyaWRlIHNraXBuaWwpCiAgIkFkZCBpbnRvIE5FV0MgYXR0cmlidXRlIEEuCklmIEEg
YWxyZWFkeSBleGlzdHMgaW4gTkVXQywgdGhlbiBkbyBub3RoaW5nLiAgSWYgaXQgZG9lc24ndCBl
eGlzdCwKdGhlbiBhbHNvIGFkZCBpbiBEIChkZWZ1YWx0KSwgRE9DLCBUWVBFLCBDVVNULCBMQUJF
TCwgQ1VTVEcsIFBST1QsIGFuZCBJTklUIGFyZy4KQXJndW1lbnQgQUxMT0Mgc3BlY2lmaWVzIGlm
IHRoZSBmaWVsZCBpcyBhbGxvY2F0ZWQgcGVyIGluc3RhbmNlLCBvciBwZXIgY2xhc3MuCklmIG9w
dGlvbmFsIERFRkFVTFRPVkVSUklERSBpcyBub24tbmlsLCB0aGVuIGlmIEEgZXhpc3RzIGluIE5F
V0MsCndlIG11c3Qgb3ZlcnJpZGUgaXQncyB2YWx1ZSBmb3IgYSBkZWZhdWx0LgpPcHRpb25hbCBh
cmd1bWVudCBTS0lQTklMIGluZGljYXRlcyBpZiB0eXBlIGNoZWNraW5nIHNob3VsZCBiZSBza2lw
cGVkCmlmIGRlZmF1bHQgdmFsdWUgaXMgbmlsLiIKICA7OyBNYWtlIHN1cmUgd2UgZHVwbGljYXRl
IHRob3NlIGl0ZW1zIHRoYXQgYXJlIHNlcXVlbmNlcy4KICAoaWYgKHNlcXVlbmNlcCBkKSAoc2V0
cSBkIChjb3B5LXNlcXVlbmNlIGQpKSkKICAoaWYgKHNlcXVlbmNlcCB0eXBlKSAoc2V0cSB0eXBl
IChjb3B5LXNlcXVlbmNlIHR5cGUpKSkKICAoaWYgKHNlcXVlbmNlcCBjdXN0KSAoc2V0cSBjdXN0
IChjb3B5LXNlcXVlbmNlIGN1c3QpKSkKICAoaWYgKHNlcXVlbmNlcCBjdXN0ZykgKHNldHEgY3Vz
dGcgKGNvcHktc2VxdWVuY2UgY3VzdGcpKSkKCiAgOzsgVG8gcHJldmVudCBvdmVycmlkZSBpbmZv
cm1hdGlvbiB3L291dCBzcGVjaWZpY2F0aW9uIG9mIHN0b3JhZ2UsCiAgOzsgd2UgbmVlZCB0byBk
byB0aGlzIGxpdHRsZSBoYWNrLgogIChpZiAobWVtYmVyIGEgKGFyZWYgbmV3YyBjbGFzcy1jbGFz
cy1hbGxvY2F0aW9uLWEpKSAoc2V0cSBhbGxvYyAnOmNsYXNzKSkKCiAgKGlmIChvciAobm90IGFs
bG9jKSAoYW5kIChzeW1ib2xwIGFsbG9jKSAoZXEgYWxsb2MgJzppbnN0YW5jZSkpKQogICAgICA7
OyBJbiB0aGlzIGNhc2UsIHdlIG1vZGlmeSB0aGUgSU5TVEFOQ0UgdmVyc2lvbiBvZiBhIGdpdmVu
IHNsb3QuCiAgICAgIDs7IE9ubHkgYWRkIHRoaXMgZWxlbWVudCBpZiBpdCBpcyBzby1mYXIgdW5p
cXVlCiAgICAgIChpZiAobm90IChtZW1iZXIgYSAoYXJlZiBuZXdjIGNsYXNzLXB1YmxpYy1hKSkp
CgkgIChwcm9nbgoJICAgIChlaWVpby1wZXJmb3JtLXNsb3QtdmFsaWRhdGlvbi1mb3ItZGVmYXVs
dCBhIHR5cGUgZCBza2lwbmlsKQoJICAgIChhc2V0IG5ld2MgY2xhc3MtcHVibGljLWEgKGNvbnMg
YSAoYXJlZiBuZXdjIGNsYXNzLXB1YmxpYy1hKSkpCgkgICAgKGFzZXQgbmV3YyBjbGFzcy1wdWJs
aWMtZCAoY29ucyBkIChhcmVmIG5ld2MgY2xhc3MtcHVibGljLWQpKSkKCSAgICAoYXNldCBuZXdj
IGNsYXNzLXB1YmxpYy1kb2MgKGNvbnMgZG9jIChhcmVmIG5ld2MgY2xhc3MtcHVibGljLWRvYykp
KQoJICAgIChhc2V0IG5ld2MgY2xhc3MtcHVibGljLXR5cGUgKGNvbnMgdHlwZSAoYXJlZiBuZXdj
IGNsYXNzLXB1YmxpYy10eXBlKSkpCgkgICAgKGFzZXQgbmV3YyBjbGFzcy1wdWJsaWMtY3VzdG9t
IChjb25zIGN1c3QgKGFyZWYgbmV3YyBjbGFzcy1wdWJsaWMtY3VzdG9tKSkpCgkgICAgKGFzZXQg
bmV3YyBjbGFzcy1wdWJsaWMtY3VzdG9tLWxhYmVsIChjb25zIGxhYmVsIChhcmVmIG5ld2MgY2xh
c3MtcHVibGljLWN1c3RvbS1sYWJlbCkpKQoJICAgIChhc2V0IG5ld2MgY2xhc3MtcHVibGljLWN1
c3RvbS1ncm91cCAoY29ucyBjdXN0ZyAoYXJlZiBuZXdjIGNsYXNzLXB1YmxpYy1jdXN0b20tZ3Jv
dXApKSkKCSAgICAoYXNldCBuZXdjIGNsYXNzLXByb3RlY3Rpb24gKGNvbnMgcHJvdCAoYXJlZiBu
ZXdjIGNsYXNzLXByb3RlY3Rpb24pKSkKCSAgICAoYXNldCBuZXdjIGNsYXNzLWluaXRhcmctdHVw
bGVzIChjb25zIChjb25zIGluaXQgYSkgKGFyZWYgbmV3YyBjbGFzcy1pbml0YXJnLXR1cGxlcykp
KQoJICAgICkKCTs7IFdoZW4gZGVmYXVsdG92ZXJyaWRlIGlzIHRydWUsIHdlIGFyZSB1c3VhbGx5
IGFkZGluZyBuZXcgbG9jYWwKCTs7IGF0dHJpYnV0ZXMgd2hpY2ggbXVzdCBvdmVycmlkZSB0aGUg
ZGVmYXVsdCB2YWx1ZSBvZiBhbnkgZmllbGQKCTs7IHBhc3NlZCBpbiBieSBvbmUgb2YgdGhlIHBh
cmVudCBjbGFzc2VzLgoJKGlmIGRlZmF1bHRvdmVycmlkZQoJICAgIChwcm9nbgoJICAgICAgOzsg
VGhlcmUgaXMgYSBtYXRjaCwgYW5kIHdlIG11c3Qgb3ZlcnJpZGUgdGhlIG9sZCB2YWx1ZS4KCSAg
ICAgIChsZXQqICgoY2EgKGFyZWYgbmV3YyBjbGFzcy1wdWJsaWMtYSkpCgkJICAgICAobnAgKG1l
bWJlciBhIGNhKSkKCQkgICAgIChudW0gKC0gKGxlbmd0aCBjYSkgKGxlbmd0aCBucCkpKQoJCSAg
ICAgKGRwIChpZiBucCAobnRoY2RyIG51bSAoYXJlZiBuZXdjIGNsYXNzLXB1YmxpYy1kKSkKCQkJ
ICAgbmlsKSkKCQkgICAgICh0cCAoaWYgbnAgKG50aCBudW0gKGFyZWYgbmV3YyBjbGFzcy1wdWJs
aWMtdHlwZSkpKSkKCQkgICAgICkKCQkoaWYgKG5vdCBucCkKCQkgICAgKGVycm9yICJFaWVpbyBp
bnRlcm5hbCBlcnJvciBvdmVycmlkaW5nIGRlZmF1bHQgdmFsdWUgZm9yICVzIgoJCQkgICBhKQoJ
CSAgOzsgSWYgdHlwZSBpcyBwYXNzZWQgaW4sIGlzIGl0IHRoZSBzYW1lPwoJCSAgKGlmIChub3Qg
KGVxIHR5cGUgdCkpCgkJICAgICAgKGlmIChub3QgKGVxdWFsIHR5cGUgdHApKQoJCQkgIChlcnJv
cgoJCQkgICAiQ2hpbGQgc2xvdCB0eXBlIGAlcycgZG9lcyBub3QgbWF0Y2ggaW5oZXJpdGVkIHR5
cGUgYCVzJyBmb3IgYCVzJyIKCQkJICAgdHlwZSB0cCBhKSkpCgkJICA7OyBJZiB3ZSBoYXZlIGEg
cmVwZWF0LCBvbmx5IHVwZGF0ZSB0aGUgaW5pdGFyZy4uLgoJCSAgKGVpZWlvLXBlcmZvcm0tc2xv
dC12YWxpZGF0aW9uLWZvci1kZWZhdWx0IGEgdHAgZCBza2lwbmlsKQoJCSAgKHNldGNhciBkcCBk
KQoJCSAgOzsgSWYgd2UgaGF2ZSBhIG5ldyBpbml0YXJnLCBjaGVjayBmb3IgaXQuCgkJICAod2hl
biBpbml0CgkJICAgIChsZXQqICgoaW5pdHMgKGFyZWYgbmV3YyBjbGFzcy1pbml0YXJnLXR1cGxl
cykpCgkJCSAgIChpbml0YSAocmFzc3EgYSBpbml0cykpKQoJCSAgICAgIDs7IFJlcGxhY2UgdGhl
IENBUiBvZiB0aGUgYXNzb2NpYXRlIElOSVRBLgoJCSAgICAgIDs7KG1lc3NhZ2UgIkluaXRhcmc6
ICVTIHJlcGxhY2UgJXMiIGluaXRhIGluaXQpCgkJICAgICAgKHNldGNhciBpbml0YSBpbml0KQoJ
CSAgICAgICkpCgkJICA7OyBUT0RPOgoJCSAgOzsgIEZvciBvdGhlciBzbG90cyAocHJvdGVjdGlv
biwgZXRjKSB3ZSBzaG91bGQgZ2V0IHRoZQoJCSAgOzsgIG9yaWdpbmFsIHZhbHVlLCBhbmQgbWFr
ZSBzdXJlIGVhY2ggaXMgZXF1YWwgdG8gdGhlCgkJICA7OyAgbGFzdCB2YWx1ZSBhbmQgdGhyb3cg
YW4gZXJyb3IsIG9yIGFjY2VwdAoJCSAgOzsgIGl0LgoJCSAgOzsgUExOIFR1ZSBKdW4gMjYgMTE6
NTc6MDYgMjAwNyA6IFRoZQoJCSAgOzsgcHJvdGVjdGlvbiBpcyBjaGVja2VkIGFuZCBTSE9VTEQg
bWF0Y2ggdGhlCgkJICA7OyBzdXBlcmNsYXNzIHByb3RlY3Rpb24uIE90aGVyd2lzZSBhbiBlcnJv
cgoJCSAgOzsgaXMgdGhyb3duLiBIb3dldmVyIEkgd29uZGVyIGlmIGEgbW9yZQoJCSAgOzsgZmxl
eGlibGUgc2NoZWR1bGUgbWlnaHQgYmUgaW1wbGVtZW50ZWQuIAoJCSAgKGlmIHByb3QKCQkgICAg
ICAobGV0ICgoc3VwZXItcHJvdAoJCQkgICAgIChjYXIgKG50aGNkciBudW0KCQkJCQkgIChhcmVm
IG5ld2MKICBjbGFzcy1wcm90ZWN0aW9uKSkpKSkKCQkJKGlmIChub3QgKGVxIHByb3Qgc3VwZXIt
cHJvdCkpCgkJCSAgICAoZXJyb3IKCQkJICAgIkNoaWxkIHNsb3QgcHJvdGVjdGlvbiBgJXMnIGRv
ZXMgbm90IG1hdGNoIGluaGVyaXRlZCBwcm90ZWN0aW9uIGAlcycgZm9yIGAlcyciCgkJCSAgIHBy
b3Qgc3VwZXItcHJvdCBhKSkpKQoJCSAgOzsgV2UgZG8gYSBub24gcmVkdW5kYW50IGNvbWJpbmF0
aW9uIG9mCgkJICA7OyBhbmNpZW50IGN1c3RvbSBncm91cHMgYW5kIG5ldyBvbmVzIHVzaW5nCgkJ
ICA7OyB0aGUgY29tbW9uIGxpc3AgYHVuaW9uJyBtZXRob2QuCgkJICAoaWYgY3VzdGcKCQkgICAg
ICAobGV0ICgod2hlcmUtZ3JvdXBzIChudGhjZHIKCQkJCQkgICBudW0gKGFyZWYgbmV3YwoJCQkJ
CQkgICAgIGNsYXNzLXB1YmxpYy1jdXN0b20tZ3JvdXApKSkpCgkJCShzZXRjYXIgd2hlcmUtZ3Jv
dXBzCgkJCQkodW5pb24gKGNhciB3aGVyZS1ncm91cHMpCgkJCQkgICAgICAgKGlmIChsaXN0cCBj
dXN0ZykgY3VzdGcKICAobGlzdCBjdXN0ZykpKSkpKQoJCSAgOzsgIEVuZCBQTE4KCQkgIDs7ICBQ
TE4gTW9uIEp1biAyNSAyMjo0NDozNCAyMDA3IDogSWYgYSBuZXcKCQkgIDs7ICBjdXN0IGlzIHNl
dCwgc2ltcGx5IHJlcGxhY2VzIHRoZSBvbGQgb25lLgoJCSAgKHdoZW4gY3VzdAoJCSAgICA7OyAo
bWVzc2FnZSAiQ3VzdG9tIHR5cGUgcmVkZWZpbmVkIHRvICVzIiBjdXN0KSAKCQkgICAgKHNldGNh
ciAobnRoY2RyIG51bQoJCQkJICAgIChhcmVmIG5ld2MKCQkJCQkgIGNsYXNzLXB1YmxpYy1jdXN0
b20pKQogIGN1c3QpKQoJCSAgOzsgSWYgYSBuZXcgbGFiZWwgaXMgc3BlY2lmaWVkLCBpdCBzaW1w
bHkKCQkgIDs7IHJlcGxhY2VzIHRoZSBvbGQgb25lLgoJCSAgKHdoZW4gbGFiZWwKCQkgICAgOzs7
IChtZXNzYWdlICJDdXN0b20gbGFiZWwgcmVkZWZpbmVkIHRvICVzIiBsYWJlbCkKCQkgICAgKHNl
dGNhciAobnRoY2RyIG51bQoJCQkJICAgIChhcmVmIG5ld2MKCQkJCQkgIGNsYXNzLXB1YmxpYy1j
dXN0b20tbGFiZWwpKQoJCQkgICAgbGFiZWwpKQoJCSAgOzsgIEVuZCBQTE4KCQkgIDs7OyBQTE4g
U2F0IEp1biAzMCAxNzoyNDo0MiAyMDA3IDogd2hlbiBhIG5ldwo7OzsgZG9jIGlzIHNwZWNpZmll
ZCwgc2ltcGx5IHJlcGxhY2VzIHRoZSBvbGQgb25lLgoJCSAgKHdoZW4gZG9jCgkJICAgIChtZXNz
YWdlICJEb2N1bWVudGF0aW9uIHJlZGVmaW5lZCB0byAlcyIgZG9jKQoJCSAgICAoc2V0Y2FyIChu
dGhjZHIgbnVtCgkJCQkgICAgKGFyZWYgbmV3YwoJCQkJCSAgY2xhc3MtcHVibGljLWRvYykpCgkJ
CSAgICBkb2MpKQoJCSAgOzs7IEVuZCBQTE4KCQkgICkpKSkpCiAgICAobGV0ICgodmFsdWUgKGVp
ZWlvLWRlZmF1bHQtZXZhbC1tYXliZSBkKSkpCiAgICAgIChpZiAobm90IChtZW1iZXIgYSAoYXJl
ZiBuZXdjIGNsYXNzLWNsYXNzLWFsbG9jYXRpb24tYSkpKQoJICAocHJvZ24KCSAgICAoZWllaW8t
cGVyZm9ybS1zbG90LXZhbGlkYXRpb24tZm9yLWRlZmF1bHQgYSB0eXBlIHZhbHVlIHNraXBuaWwp
CgkgICAgOzsgSGVyZSB3ZSBoYXZlIGZvdW5kIGEgOmNsYXNzIHZlcnNpb24gb2YgYSBzbG90LiAg
VGhpcwoJICAgIDs7IHJlcXVpcmVzIGEgdmVyeSBkaWZmZXJlbnQgYXByb2FjaC4KCSAgICAoYXNl
dCBuZXdjIGNsYXNzLWNsYXNzLWFsbG9jYXRpb24tYSAoY29ucyBhIChhcmVmIG5ld2MgY2xhc3Mt
Y2xhc3MtYWxsb2NhdGlvbi1hKSkpCgkgICAgKGFzZXQgbmV3YyBjbGFzcy1jbGFzcy1hbGxvY2F0
aW9uLWRvYyAoY29ucyBkb2MgKGFyZWYgbmV3YyBjbGFzcy1jbGFzcy1hbGxvY2F0aW9uLWRvYykp
KQoJICAgIChhc2V0IG5ld2MgY2xhc3MtY2xhc3MtYWxsb2NhdGlvbi10eXBlIChjb25zIHR5cGUg
KGFyZWYgbmV3YyBjbGFzcy1jbGFzcy1hbGxvY2F0aW9uLXR5cGUpKSkKCSAgICAoYXNldCBuZXdj
IGNsYXNzLWNsYXNzLWFsbG9jYXRpb24tY3VzdG9tIChjb25zIGN1c3QgKGFyZWYgbmV3YyBjbGFz
cy1jbGFzcy1hbGxvY2F0aW9uLWN1c3RvbSkpKQoJICAgIChhc2V0IG5ld2MgY2xhc3MtY2xhc3Mt
YWxsb2NhdGlvbi1jdXN0b20tbGFiZWwgKGNvbnMgbGFiZWwgKGFyZWYgbmV3YyBjbGFzcy1jbGFz
cy1hbGxvY2F0aW9uLWN1c3RvbS1sYWJlbCkpKQoJICAgIChhc2V0IG5ld2MgY2xhc3MtY2xhc3Mt
YWxsb2NhdGlvbi1jdXN0b20tZ3JvdXAgKGNvbnMgY3VzdGcgKGFyZWYgbmV3YyBjbGFzcy1jbGFz
cy1hbGxvY2F0aW9uLWN1c3RvbS1ncm91cCkpKQoJICAgIChhc2V0IG5ld2MgY2xhc3MtY2xhc3Mt
YWxsb2NhdGlvbi1wcm90ZWN0aW9uIChjb25zIHByb3QgKGFyZWYgbmV3YyBjbGFzcy1jbGFzcy1h
bGxvY2F0aW9uLXByb3RlY3Rpb24pKSkKICA7OyBEZWZhdWx0IHZhbHVlIGlzIHN0b3JlZCBpbiB0
aGUgJ3ZhbHVlcyBzZWN0aW9uLCBzaW5jZSBuZXcgb2JqZWN0cwoJICAgIDs7IGNhbid0IGluaXRp
YWxpemUgZnJvbSB0aGlzIGVsZW1lbnQuCgkgICAgKGFzZXQgbmV3YyBjbGFzcy1jbGFzcy1hbGxv
Y2F0aW9uLXZhbHVlcyAoY29ucyB2YWx1ZSAoYXJlZiBuZXdjIGNsYXNzLWNsYXNzLWFsbG9jYXRp
b24tdmFsdWVzKSkpKQoJKGlmIGRlZmF1bHRvdmVycmlkZQoJICAgIChwcm9nbgoJICAgICAgOzsg
VGhlcmUgaXMgYSBtYXRjaCwgYW5kIHdlIG11c3Qgb3ZlcnJpZGUgdGhlIG9sZCB2YWx1ZS4KCSAg
ICAgIChsZXQqICgoY2EgKGFyZWYgbmV3YyBjbGFzcy1jbGFzcy1hbGxvY2F0aW9uLWEpKQoJCSAg
ICAgKG5wIChtZW1iZXIgYSBjYSkpCgkJICAgICAobnVtICgtIChsZW5ndGggY2EpIChsZW5ndGgg
bnApKSkKCQkgICAgIChkcCAoaWYgbnAKCQkJICAgICAobnRoY2RyIG51bQoJCQkJICAgICAoYXJl
ZiBuZXdjIGNsYXNzLWNsYXNzLWFsbG9jYXRpb24tdmFsdWVzKSkKCQkJICAgbmlsKSkKCQkgICAg
ICh0cCAoaWYgbnAgKG50aCBudW0gKGFyZWYgbmV3YyBjbGFzcy1jbGFzcy1hbGxvY2F0aW9uLXR5
cGUpKQoJCQkgICBuaWwpKSkKCQkoaWYgKG5vdCBucCkKCQkgICAgKGVycm9yICJFaWVpbyBpbnRl
cm5hbCBlcnJvciBvdmVycmlkaW5nIGRlZmF1bHQgdmFsdWUgZm9yICVzIgoJCQkgICBhKQoJCSAg
OzsgSWYgdHlwZSBpcyBwYXNzZWQgaW4sIGlzIGl0IHRoZSBzYW1lPwoJCSAgKGlmIChub3QgKGVx
IHR5cGUgdCkpCgkJICAgICAgKGlmIChub3QgKGVxdWFsIHR5cGUgdHApKQoJCQkgIChlcnJvcgoJ
CQkgICAiQ2hpbGQgc2xvdCB0eXBlIGAlcycgZG9lcyBub3QgbWF0Y2ggaW5oZXJpdGVkIHR5cGUg
YCVzJyBmb3IgYCVzJyIKCQkJICAgdHlwZSB0cCBhKSkpCgkJICA7OyBJZiB3ZSBoYXZlIGEgcmVw
ZWF0LCBvbmx5IHVwZGF0ZSB0aGUgdmxhdWUuLi4KCQkgIChlaWVpby1wZXJmb3JtLXNsb3QtdmFs
aWRhdGlvbi1mb3ItZGVmYXVsdCBhIHRwIHZhbHVlIHNraXBuaWwpCgkJICAoc2V0Y2FyIGRwIHZh
bHVlKSkKCQkpKSkpKQogICAgKSkKCihkZWZ1biBlaWVpby1jb3B5LXBhcmVudHMtaW50by1zdWJj
bGFzcyAobmV3YyBwYXJlbnRzKQogICJDb3B5IGludG8gTkVXQyB0aGUgZmllbGRzIG9mIFBBUkVO
VFMuCkZvbGxvdyB0aGUgcnVsZXMgb2Ygbm90IG92ZXJ3cml0dGluZyBlYXJseSBwYXJlbnRzIHdo
ZW4gYXBwbHlpbmcgdG8KdGhlIG5ldyBjaGlsZCBjbGFzcy4iCiAgKGxldCAoKHBzIChhcmVmIG5l
d2MgY2xhc3MtcGFyZW50KSkKCShzbiAoY2xhc3Mtb3B0aW9uLWFzc29jIChhcmVmIG5ld2MgY2xh
c3Mtb3B0aW9ucykKCQkJCSc6YWxsb3ctbmlsLWluaXRmb3JtKSkpCiAgICAod2hpbGUgcHMKICAg
ICAgOzsgRmlyc3QsIGR1cGxpY2F0ZSBhbGwgdGhlIGZpZWxkcyBvZiB0aGUgcGFyZW50LgogICAg
ICAobGV0ICgocGN2IChjbGFzcy12IChjYXIgcHMpKSkpCgkobGV0ICgocGEgKGFyZWYgcGN2IGNs
YXNzLXB1YmxpYy1hKSkKCSAgICAgIChwZCAoYXJlZiBwY3YgY2xhc3MtcHVibGljLWQpKQoJICAg
ICAgKHBkb2MgKGFyZWYgcGN2IGNsYXNzLXB1YmxpYy1kb2MpKQoJICAgICAgKHB0eXBlIChhcmVm
IHBjdiBjbGFzcy1wdWJsaWMtdHlwZSkpCgkgICAgICAocGN1c3QgKGFyZWYgcGN2IGNsYXNzLXB1
YmxpYy1jdXN0b20pKQoJICAgICAgKHBsYWJlbCAoYXJlZiBwY3YgY2xhc3MtcHVibGljLWN1c3Rv
bS1sYWJlbCkpCgkgICAgICAocGN1c3RnIChhcmVmIHBjdiBjbGFzcy1wdWJsaWMtY3VzdG9tLWdy
b3VwKSkKCSAgICAgIChwcHJvdCAoYXJlZiBwY3YgY2xhc3MtcHJvdGVjdGlvbikpCgkgICAgICAo
cGluaXQgKGFyZWYgcGN2IGNsYXNzLWluaXRhcmctdHVwbGVzKSkKCSAgICAgIChpIDApKQoJICAo
d2hpbGUgcGEKCSAgICAoZWllaW8tYWRkLW5ldy1maWVsZCBuZXdjCgkJCQkgKGNhciBwYSkgKGNh
ciBwZCkgKGNhciBwZG9jKSAoYXJlZiBwdHlwZSBpKQoJCQkJIChjYXIgcGN1c3QpIChjYXIgcGxh
YmVsKSAoY2FyIHBjdXN0ZykKCQkJCSAoY2FyIHBwcm90KSAoY2FyLXNhZmUgKGNhciBwaW5pdCkp
IG5pbCBuaWwgc24pCgkgICAgOzsgSW5jcmVtZW50IGVhY2ggdmFsdWUuCgkgICAgKHNldHEgcGEg
KGNkciBwYSkKCQkgIHBkIChjZHIgcGQpCgkJICBwZG9jIChjZHIgcGRvYykKCQkgIGkgKDErIGkp
CgkJICBwY3VzdCAoY2RyIHBjdXN0KQoJCSAgcGxhYmVsIChjZHIgcGxhYmVsKQoJCSAgcGN1c3Rn
IChjZHIgcGN1c3RnKQoJCSAgcHByb3QgKGNkciBwcHJvdCkKCQkgIHBpbml0IChjZHIgcGluaXQp
KQoJICAgICkpIDs7IHdoaWxlL2xldAoJOzsgTm93IGR1cGxpY2F0ZSBhbGwgdGhlIGNsYXNzIGFs
bG9jIGZpZWxkcy4KCShsZXQgKChwYSAoYXJlZiBwY3YgY2xhc3MtY2xhc3MtYWxsb2NhdGlvbi1h
KSkKCSAgICAgIChwZG9jIChhcmVmIHBjdiBjbGFzcy1jbGFzcy1hbGxvY2F0aW9uLWRvYykpCgkg
ICAgICAocHR5cGUgKGFyZWYgcGN2IGNsYXNzLWNsYXNzLWFsbG9jYXRpb24tdHlwZSkpCgkgICAg
ICAocGN1c3QgKGFyZWYgcGN2IGNsYXNzLWNsYXNzLWFsbG9jYXRpb24tY3VzdG9tKSkKCSAgICAg
IChwbGFiZWwgKGFyZWYgcGN2IGNsYXNzLWNsYXNzLWFsbG9jYXRpb24tY3VzdG9tLWxhYmVsKSkK
CSAgICAgIChwY3VzdGcgKGFyZWYgcGN2IGNsYXNzLWNsYXNzLWFsbG9jYXRpb24tY3VzdG9tLWdy
b3VwKSkKCSAgICAgIChwcHJvdCAoYXJlZiBwY3YgY2xhc3MtY2xhc3MtYWxsb2NhdGlvbi1wcm90
ZWN0aW9uKSkKCSAgICAgIChwdmFsIChhcmVmIHBjdiBjbGFzcy1jbGFzcy1hbGxvY2F0aW9uLXZh
bHVlcykpCgkgICAgICAoaSAwKSkKCSAgKHdoaWxlIHBhCgkgICAgKGVpZWlvLWFkZC1uZXctZmll
bGQgbmV3YwoJCQkJIChjYXIgcGEpIChhcmVmIHB2YWwgaSkgKGNhciBwZG9jKSAoYXJlZiBwdHlw
ZSBpKQoJCQkJIChjYXIgcGN1c3QpIChjYXIgcGxhYmVsKSAoY2FyIHBjdXN0ZykKCQkJCSAoY2Fy
IHBwcm90KSBuaWwgJzpjbGFzcyBzbikKCSAgICA7OyBJbmNyZW1lbnQgZWFjaCB2YWx1ZS4KCSAg
ICAoc2V0cSBwYSAoY2RyIHBhKQoJCSAgcGRvYyAoY2RyIHBkb2MpCgkJICBwY3VzdCAoY2RyIHBj
dXN0KQoJCSAgcGxhYmVsIChjZHIgcGxhYmVsKQoJCSAgcGN1c3RnIChjZHIgcGN1c3RnKQoJCSAg
cHByb3QgKGNkciBwcHJvdCkKCQkgIGkgKDErIGkpKQoJICAgICkpKSA7OyB3aGlsZS9sZXQKICAg
ICAgOzsgTG9vcCBvdmVyIGVhY2ggcGFyZW50IGNsYXNzCiAgICAgIChzZXRxIHBzIChjZHIgcHMp
KSkKICAgICkpCgo7OzsgQ0xPUyBzdHlsZSBpbXBsZW1lbnRhdGlvbiBvZiBvYmplY3QgY3JlYXRv
cnMuCjs7CihkZWZ1biBtYWtlLWluc3RhbmNlIChjbGFzcyAmcmVzdCBpbml0YXJncykKICAiTWFr
ZSBhIG5ldyBpbnN0YW5jZSBvZiBDTEFTUyB3aXRoIE5BTUUgYW5kIGluaXRpYWxpemF0aW9uIGJh
c2VkIG9uIElOSVRBUkdTLgpUaGUgY2xhc3MnIGNvbnN0cnVjdG9yIHJlcXVpcmVzIGEgbmFtZSBm
b3IgdXNlIHdoZW4gcHJpbnRpbmcuCmBtYWtlLWluc3RhbmNlJyBpbiBDTE9TIGRvZXNuJ3QgdXNl
IG5hbWVzIHRoZSB3YXkgRW1hY3MgZG9lcywgc28gdGhlCmNsYXNzIGlzIHVzZWQgYXMgdGhlIG5h
bWUgc2xvdCBpbnN0ZWFkIHdoZW4gSU5JVEFSR1MgZG9lc24ndCBzdGFydCB3aXRoCmEgc3RyaW5n
LiAgVGhlIHJlc3Qgb2YgSU5JVEFSR1MgYXJlIGxhYmVsL3ZhbHVlIHBhaXJzLiAgVGhlIGxhYmVs
J3MKYXJlIHRoZSBzeW1ib2xzIGNyZWF0ZWQgd2l0aCB0aGUgOmluaXRhcmcgdGFnIGZyb20gdGhl
IGBkZWZjbGFzcycgY2FsbC4KVGhlIHZhbHVlIGlzIHRoZSB2YWx1ZSBzdG9yZWQgaW4gdGhhdCBz
bG90LgpDTEFTUyBpcyBhIHN5bWJvbC4gIERlZmNsYXNzIHdpbGwgYXNzaWduIHRoZSBjbGFzcyBz
eW1ib2wgdG8gaXRzZWxmLCBzbwp0aGUgc2hvcnRjdXQgKG1ha2UtaW5zdGFuY2UgZm9vKSB3aWxs
IHdvcmsuICBUaGUgZm9ybSAobWFrZS1pbnN0YW5jZSAnZm9vKQppcyBtb3JlIHJvYnVzdC4iCiAg
KGlmIChhbmQgKGNhciBpbml0YXJncykgKHN0cmluZ3AgKGNhciBpbml0YXJncykpKQogICAgICAo
YXBwbHkgKGNsYXNzLWNvbnN0cnVjdG9yIGNsYXNzKSBpbml0YXJncykKICAgIChhcHBseSAgKGNs
YXNzLWNvbnN0cnVjdG9yIGNsYXNzKQoJICAgIChjb25kICgoc3ltYm9scCBjbGFzcykgKHN5bWJv
bC1uYW1lIGNsYXNzKSkKCQkgICh0IChmb3JtYXQgIiVTIiBjbGFzcykpKQoJICAgIGluaXRhcmdz
KSkpCgoMCjs7OyBDTE9TIG1ldGhvZHMgYW5kIGdlbmVyaWNzCjs7CihkZWZtYWNybyBkZWZnZW5l
cmljIChtZXRob2QgYXJncyAmb3B0aW9uYWwgZG9jLXN0cmluZykKICAiQ3JlYXRlIGEgZ2VuZXJp
YyBmdW5jdGlvbiBNRVRIT0QuICBBUkdTIGlzIGlnbm9yZWQuCkRPQy1TVFJJTkcgaXMgdGhlIGJh
c2UgZG9jdW1lbnRhdGlvbiBmb3IgdGhpcyBjbGFzcy4gIEEgZ2VuZXJpYwpmdW5jdGlvbiBoYXMg
bm8gYm9keSwgYXMgaXQncyBwdXJwb3NlIGlzIHRvIGRlY2lkZSB3aGljaCBtZXRob2QgYm9keQpp
cyBhcHByb3ByaWF0ZSB0byB1c2UuICBVc2UgYGRlZm1ldGhvZCcgdG8gY3JlYXRlIG1ldGhvZHMs
IGFuZCBpdApjYWxscyBkZWZnZW5lcmljIGZvciB5b3UuICBXaXRoIHRoaXMgaW1wbGVtZW50YXRp
b24gdGhlIGFyZ3VtZW50cyBhcmUKY3VycmVudGx5IGlnbm9yZWQuICBZb3UgY2FuIHVzZSBgZGVm
Z2VuZXJpYycgdG8gYXBwbHkgc3BlY2lhbGl6ZWQKdG9wIGxldmVsIGRvY3VtZW50YXRpb24gdG8g
YSBtZXRob2QuIgogIGAoZWllaW8tZGVmZ2VuZXJpYyAocXVvdGUgLG1ldGhvZCkgLGRvYy1zdHJp
bmcpKQoKKGRlZnVuIGVpZWlvLWRlZmdlbmVyaWMtZm9ybSAobWV0aG9kIGRvYy1zdHJpbmcpCiAg
IlRoZSBsYW1iZGEgZm9ybSB0aGF0IHdvdWxkIGJlIHVzZWQgYXMgdGhlIGZ1bmN0aW9uIGRlZmlu
ZWQgb24gTUVUSE9ELgpBbGwgbWV0aG9kcyBzaG91bGQgY2FsbCB0aGUgc2FtZSBFSUVJTyBmdW5j
dGlvbiBmb3IgZGlzcGF0Y2guCkRPQy1TVFJJTkcgaXMgdGhlIGRvY3VtZW50YXRpb24gYXR0YWNo
ZWQgdG8gTUVUSE9ELiIKICBgKGxhbWJkYSAoJnJlc3QgbG9jYWwtYXJncykKICAgICAsZG9jLXN0
cmluZwogICAgIChlaWVpby1nZW5lcmljLWNhbGwgKHF1b3RlICxtZXRob2QpIGxvY2FsLWFyZ3Mp
KSkKCihkZWZ1biBlaWVpby1kZWZnZW5lcmljIChtZXRob2QgZG9jLXN0cmluZykKICAiRW5naW5l
IHBhcnQgdG8gYGRlZmdlbmVyaWMnIG1hY3JvIGRlZmluaW5nIE1FVEhPRCB3aXRoIERPQy1TVFJJ
TkcuIgogIChpZiAoYW5kIChmYm91bmRwIG1ldGhvZCkgKG5vdCAoZ2VuZXJpYy1wIG1ldGhvZCkp
CgkgICAob3IgKGJ5dGUtY29kZS1mdW5jdGlvbi1wIChzeW1ib2wtZnVuY3Rpb24gbWV0aG9kKSkK
CSAgICAgICAobm90IChlcSAnYXV0b2xvYWQgKGNhciAoc3ltYm9sLWZ1bmN0aW9uIG1ldGhvZCkp
KSkpCgkgICApCiAgICAgIChlcnJvciAiWW91IGNhbm5vdCBjcmVhdGUgYSBnZW5lcmljL21ldGhv
ZCBvdmVyIGFuIGV4aXN0aW5nIHN5bWJvbDogJXMiCgkgICAgIG1ldGhvZCkpCiAgOzsgRG9uJ3Qg
ZG8gdGhpcyBvdmVyIGFuZCBvdmVyLgogICh1bmxlc3MgKGZib3VuZHAgJ21ldGhvZCkKICAgIDs7
IFRoaXMgZGVmdW4gdGVsbHMgZW1hY3Mgd2hlcmUgdGhlIGZpcnN0IGRlZmluaXRpb24gb2YgdGhp
cwogICAgOzsgbWV0aG9kIGlzIGRlZmluZWQuCiAgICBgKGRlZnVuICxtZXRob2QgbmlsKQogICAg
OzsgQXBwbHkgdGhlIGFjdHVhbCBib2R5IG9mIHRoaXMgZnVuY3Rpb24uCiAgICAoZnNldCBtZXRo
b2QgKGVpZWlvLWRlZmdlbmVyaWMtZm9ybSBtZXRob2QgZG9jLXN0cmluZykpCiAgICA7OyBNYWtl
IHN1cmUgdGhlIG1ldGhvZCB0YWJsZXMgYXJlIGluc3RhbGxlZC4KICAgIChlaWVpb210LWluc3Rh
bGwgbWV0aG9kKQogICAgOzsgUmV0dXJuIHRoZSBtZXRob2QKICAgICdtZXRob2QpKQoKKGRlZnVu
IGVpZWlvLXVuYmluZC1tZXRob2QtaW1wbGVtZW50YXRpb25zIChtZXRob2QpCiAgIk1ha2UgdGhl
IGdlbmVyaWMgbWV0aG9kIE1FVEhPRCBoYXZlIG5vIGltcGxlbWVudGF0aW9ucy4uCkl0IHdpbGwg
bGVhdmUgdGhlIG9yaWdpbmFsIGdlbmVyaWMgZnVuY3Rpb24gaW4gcGxhY2UsIGJ1dCByZW1vdmUK
cmVmZXJlbmNlIHRvIGFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgTUVUSE9ELiIKICAocHV0IG1ldGhv
ZCAnZWllaW8tbWV0aG9kLXRyZWUgbmlsKQogIChwdXQgbWV0aG9kICdlaWVpby1tZXRob2Qtb2Jh
cnJheSBuaWwpKQoKKGRlZm1hY3JvIGRlZm1ldGhvZCAobWV0aG9kICZyZXN0IGFyZ3MpCiAgIkNy
ZWF0ZSBhIG5ldyBNRVRIT0QgdGhyb3VnaCBgZGVmZ2VuZXJpYycgd2l0aCBBUkdTLgpBUkdTIGxp
c3RzIGFueSBrZXlzIChzdWNoIGFzIDpCRUZPUkUsIDpQUklNQVJZLCA6QUZURVIsIG9yIDpTVEFU
SUMpLAp0aGUgYXJnbHN0LCBhbmQgZG9jIHN0cmluZywgYW5kIGV2ZW50dWFsbHkgdGhlIGJvZHks
IHN1Y2ggYXM6CgogKGRlZm1ldGhvZCBteW1ldGhvZCBbOkJFRk9SRSB8IDpQUklNQVJZIHwgOkFG
VEVSIHwgOlNUQVRJQ10gKGFyZ3MpCiAgICBkb2Mtc3RyaW5nIGJvZHkpIgogIGAoZWllaW8tZGVm
bWV0aG9kIChxdW90ZSAsbWV0aG9kKSAocXVvdGUgLGFyZ3MpKSkKCihkZWZ1biBlaWVpby1kZWZt
ZXRob2QgKG1ldGhvZCBhcmdzKQogICJXb3JrIHBhcnQgb2YgdGhlIGBkZWZtZXRob2QnIG1hY3Jv
IGRlZmluaW5nIE1FVEhPRCB3aXRoIEFSR1MuIgogIChsZXQgKChrZXkgbmlsKSAoYm9keSBuaWwp
IChmaXJzdGFyZyBuaWwpIChhcmdmaXggbmlsKSAoYXJnY2xhc3MgbmlsKSBsb29wYSkKICAgIDs7
IGZpbmQgb3B0aW9uYWwga2V5cwogICAgKHNldHEga2V5CgkgIChjb25kICgoZXEgJzpCRUZPUkUg
KGNhciBhcmdzKSkKCQkgKHNldHEgYXJncyAoY2RyIGFyZ3MpKQoJCSBtZXRob2QtYmVmb3JlKQoJ
CSgoZXEgJzpBRlRFUiAoY2FyIGFyZ3MpKQoJCSAoc2V0cSBhcmdzIChjZHIgYXJncykpCgkJIG1l
dGhvZC1hZnRlcikKCQkoKGVxICc6UFJJTUFSWSAoY2FyIGFyZ3MpKQoJCSAoc2V0cSBhcmdzIChj
ZHIgYXJncykpCgkJIG1ldGhvZC1wcmltYXJ5KQoJCSgoZXEgJzpTVEFUSUMgKGNhciBhcmdzKSkK
CQkgKHNldHEgYXJncyAoY2RyIGFyZ3MpKQoJCSBtZXRob2Qtc3RhdGljKQoJCTs7IFByaW1hcnkg
a2V5CgkJKHQgbWV0aG9kLXByaW1hcnkpKSkKICAgIDs7IGdldCBib2R5LCBhbmQgZml4IGNvbnRl
bnRzIG9mIGFyZ3MgdG8gYmUgdGhlIGFyZ3VtZW50cyBvZiB0aGUgZm4uCiAgICAoc2V0cSBib2R5
IChjZHIgYXJncykKCSAgYXJncyAoY2FyIGFyZ3MpKQogICAgKHNldHEgbG9vcGEgYXJncykKICAg
IDs7IENyZWF0ZSBhIGZpeGVkIHZlcnNpb24gb2YgdGhlIGFyZ3VtZW50cwogICAgKHdoaWxlIGxv
b3BhCiAgICAgIChzZXRxIGFyZ2ZpeCAoY29ucyAoaWYgKGxpc3RwIChjYXIgbG9vcGEpKSAoY2Fy
IChjYXIgbG9vcGEpKSAoY2FyIGxvb3BhKSkKCQkJIGFyZ2ZpeCkpCiAgICAgIChzZXRxIGxvb3Bh
IChjZHIgbG9vcGEpKSkKICAgIDs7IG1ha2Ugc3VyZSB0aGVyZSBpcyBhIGdlbmVyaWMKICAgIChl
aWVpby1kZWZnZW5lcmljCiAgICAgbWV0aG9kCiAgICAgKGlmIChzdHJpbmdwIChjYXIgYm9keSkp
CgkgKGNhciBib2R5KSAoZm9ybWF0ICJHZW5lcmljYWxseSBjcmVhdGVkIG1ldGhvZCBgJXMnIiBt
ZXRob2QpKSkKICAgIDs7IGNyZWF0ZSBzeW1ib2wgZm9yIHByb3BlcnR5IHRvIGJpbmQgdG8uICBJ
ZiB0aGUgZmlyc3QgYXJnIGlzIG9mCiAgICA7OyB0aGUgZm9ybSAodmFybmFtZSB2YXJ0eXBlKSBh
bmQgYHZhcnR5cGUnIGlzIGEgY2xhc3MsIHRoZW4KICAgIDs7IHRoYXQgY2xhc3Mgd2lsbCBiZSB0
aGUgdHlwZSBzeW1ib2wuICBJZiBub3QsIHRoZW4gaXQgd2lsbCBmYWxsCiAgICA7OyB1bmRlciB0
aGUgdHlwZSBgcHJpbWFyeScgd2hpY2ggaXMgYSBub24tc3BlY2lmaWMgY2FsbGluZyBvZiB0aGUK
ICAgIDs7IGZ1bmN0aW9uLgogICAgKHNldHEgZmlyc3RhcmcgKGNhciBhcmdzKSkKICAgIChpZiAo
bGlzdHAgZmlyc3RhcmcpCgkocHJvZ24KCSAgKHNldHEgYXJnY2xhc3MgIChudGggMSBmaXJzdGFy
ZykpCgkgIChpZiAobm90IChjbGFzcy1wIGFyZ2NsYXNzKSkKCSAgICAgIChlcnJvciAiVW5rbm93
biBjbGFzcyB0eXBlICVzIGluIG1ldGhvZCBwYXJhbWV0ZXJzIgoJCSAgICAgKG50aCAxIGZpcnN0
YXJnKSkpKQogICAgICAoaWYgKD0ga2V5IC0xKQoJICAoc2lnbmFsICd3cm9uZy10eXBlLWFyZ3Vt
ZW50IChsaXN0IDpTVEFUSUMgJ25vbi1jbGFzcy1hcmcpKSkKICAgICAgOzsgZ2VuZXJpY3MgYXJl
IGhpZ2hlcgogICAgICAoc2V0cSBrZXkgKCsga2V5IDMpKSkKICAgIDs7IFB1dCB0aGlzIGxhbWJk
YSBpbnRvIHRoZSBzeW1ib2wgc28gd2UgY2FuIGZpbmQgaXQKICAgIChpZiAoYnl0ZS1jb2RlLWZ1
bmN0aW9uLXAgKGNhci1zYWZlIGJvZHkpKQoJKGVpZWlvbXQtYWRkIG1ldGhvZCAoY2FyLXNhZmUg
Ym9keSkga2V5IGFyZ2NsYXNzKQogICAgICAoZWllaW9tdC1hZGQgbWV0aG9kIChhcHBlbmQgKGxp
c3QgJ2xhbWJkYSAocmV2ZXJzZSBhcmdmaXgpKSBib2R5KQoJCSAgIGtleSBhcmdjbGFzcykpCiAg
ICApCiAgbWV0aG9kKQoKOzs7IFNsb3QgdHlwZSB2YWxpZGF0aW9uCjs7CihkZWZ1biBlaWVpby1w
ZXJmb3JtLXNsb3QtdmFsaWRhdGlvbiAoc3BlYyB2YWx1ZSkKICAiUmV0dXJuIG5vbi1uaWwgaWYg
U1BFQyBkb2VzIG5vdCBtYXRjaCBWQUxVRS4iCiAgOzsgdHlwZXAgaXMgaW4gY2wtbWFjcwogIChv
ciAoZXEgc3BlYyB0KQkJCTsgdCBhbHdheXMgcGFzc2VzCiAgICAgIChlcSB2YWx1ZSBlaWVpby11
bmJvdW5kKQkJOyB1bmJvdW5kIGFsd2F5cyBwYXNzZXMKICAgICAgKHR5cGVwIHZhbHVlIHNwZWMp
KSkKCihkZWZ1biBlaWVpby12YWxpZGF0ZS1zbG90LXZhbHVlIChjbGFzcyBmaWVsZC1pZHggdmFs
dWUgZmllbGQpCiAgIk1ha2Ugc3VyZSB0aGF0IGZvciBDTEFTUyByZWZlcmVuY2luZyBGSUVMRC1J
RFgsIHRoYXQgVkFMVUUgaXMgdmFsaWQuCkNoZWNrcyB0aGUgOnR5cGUgc3BlY2lmaWVyLgpGSUVM
RCBpcyB0aGUgZmllbGQgdGhhdCBpcyBiZWluZyBjaGVja2VkLCBhbmQgaXMgb25seSB1c2VkIHdo
ZW4gdGhyb3dpbmcKYW5kIGVycm9yLiIKICAoaWYgZWllaW8tc2tpcC10eXBlY2hlY2sKICAgICAg
bmlsCiAgICA7OyBUcmltIG9mZiBvYmplY3QgSURYIGp1bmsgYWRkZWQgaW4gZm9yIHRoZSBvYmpl
Y3QgaW5kZXguCiAgICAoc2V0cSBmaWVsZC1pZHggKC0gZmllbGQtaWR4IDMpKQogICAgKGxldCAo
KHN0IChhcmVmIChhcmVmIChjbGFzcy12IGNsYXNzKSBjbGFzcy1wdWJsaWMtdHlwZSkgZmllbGQt
aWR4KSkpCiAgICAgIChpZiAobm90IChlaWVpby1wZXJmb3JtLXNsb3QtdmFsaWRhdGlvbiBzdCB2
YWx1ZSkpCgkgIChzaWduYWwgJ2ludmFsaWQtc2xvdC10eXBlIChsaXN0IGNsYXNzIGZpZWxkIHN0
IHZhbHVlKSkpKSkpCgooZGVmdW4gZWllaW8tdmFsaWRhdGUtY2xhc3Mtc2xvdC12YWx1ZSAoY2xh
c3MgZmllbGQtaWR4IHZhbHVlIGZpZWxkKQogICJNYWtlIHN1cmUgdGhhdCBmb3IgQ0xBU1MgcmVm
ZXJlbmNpbmcgRklFTEQtSURYLCB0aGF0IFZBTFVFIGlzIHZhbGlkLgpDaGVja3MgdGhlIDp0eXBl
IHNwZWNpZmllci4KRklFTEQgaXMgdGhlIGZpZWxkIHRoYXQgaXMgYmVpbmcgY2hlY2tlZCwgYW5k
IGlzIG9ubHkgdXNlZCB3aGVuIHRocm93aW5nCmFuZCBlcnJvci4iCiAgKGlmIGVpZWlvLXNraXAt
dHlwZWNoZWNrCiAgICAgIG5pbAogICAgKGxldCAoKHN0IChhcmVmIChhcmVmIChjbGFzcy12IGNs
YXNzKSBjbGFzcy1jbGFzcy1hbGxvY2F0aW9uLXR5cGUpCgkJICAgIGZpZWxkLWlkeCkpKQogICAg
ICAoaWYgKG5vdCAoZWllaW8tcGVyZm9ybS1zbG90LXZhbGlkYXRpb24gc3QgdmFsdWUpKQoJICAo
c2lnbmFsICdpbnZhbGlkLXNsb3QtdHlwZSAobGlzdCBjbGFzcyBmaWVsZCBzdCB2YWx1ZSkpKSkp
KQoKKGRlZnVuIGVpZWlvLWJhcmYtaWYtc2xvdC11bmJvdW5kICh2YWx1ZSBpbnN0YW5jZSBzbG90
bmFtZSBmbikKICAiVGhyb3cgYSBzaWduYWwgaWYgVkFMVUUgaXMgYSByZXByZXNlbnRhdGlvbiBv
ZiBhbiBVTkJPVU5EIHNsb3QuCklOU1RBTkNFIGlzIHRoZSBvYmplY3QgYmVpbmcgcmVmZXJlbmNl
ZC4gIFNMT1ROQU1FIGlzIHRoZSBvZmZlbmRpbmcKc2xvdC4gIElmIHRoZSBzbG90IGlzIG9rLCBy
ZXR1cm4gVkFMVUUuCkFyZ3VtZW50IEZOIGlzIHRoZSBmdW5jdGlvbiBjYWxsaW5nIHRoaXMgdmVy
aWZpZXIuIgogIChpZiAoYW5kIChlcSB2YWx1ZSBlaWVpby11bmJvdW5kKSAobm90IGVpZWlvLXNr
aXAtdHlwZWNoZWNrKSkKICAgICAgKHNsb3QtdW5ib3VuZCBpbnN0YW5jZSAob2JqZWN0LWNsYXNz
IGluc3RhbmNlKSBzbG90bmFtZSBmbikKICAgIHZhbHVlKSkKCjs7OyBNaXNzaW5nIHR5cGVzIHRo
YXQgYXJlIHVzZWZ1bCB0byBtZS4KOzsKKGRlZnVuIGJvb2xlYW4tcCAoYm9vbCkKICAiUmV0dXJu
IG5vbi1uaWwgaWYgQk9PTCBpcyBuaWwgb3IgdC4iCiAgKG9yIChudWxsIGJvb2wpIChlcSBib29s
IHQpKSkKCjs7OyBHZXQvU2V0IHNsb3RzIGluIGFuIG9iamVjdC4KOzsKKGRlZm1hY3JvIG9yZWYg
KG9iaiBmaWVsZCkKICAiUmV0cmlldmUgdGhlIHZhbHVlIHN0b3JlZCBpbiBPQkogaW4gdGhlIHNs
b3QgbmFtZWQgYnkgRklFTEQuCkZpZWxkIGlzIHRoZSBuYW1lIG9mIHRoZSBzbG90IHdoZW4gY3Jl
YXRlZCBieSBgZGVmY2xhc3MnIG9yIHRoZSBsYWJlbApjcmVhdGVkIGJ5IHRoZSA6aW5pdGFyZyB0
YWcuIgogIGAoZWllaW8tb3JlZiAsb2JqIChxdW90ZSAsZmllbGQpKSkKCihkZWZ1biBlaWVpby1v
cmVmIChvYmogZmllbGQpCiAgIlJldHVybiB0aGUgdmFsdWUgaW4gT0JKIGF0IEZJRUxEIGluIHRo
ZSBvYmplY3QgdmVjdG9yLiIKICAoaWYgKG5vdCAob3IgKG9iamVjdC1wIG9iaikgKGNsYXNzLXAg
b2JqKSkpCiAgICAgIChzaWduYWwgJ3dyb25nLXR5cGUtYXJndW1lbnQgKGxpc3QgJyhvciBvYmpl
Y3QtcCBjbGFzcy1wKSBvYmopKSkKICAoaWYgKG5vdCAoc3ltYm9scCBmaWVsZCkpCiAgICAgIChz
aWduYWwgJ3dyb25nLXR5cGUtYXJndW1lbnQgKGxpc3QgJ3N5bWJvbHAgZmllbGQpKSkKICAobGV0
KiAoKGNsYXNzIChpZiAoY2xhc3MtcCBvYmopIG9iaiAoYXJlZiBvYmogb2JqZWN0LWNsYXNzKSkp
CgkgKGMgKGVpZWlvLWZpZWxkLW5hbWUtaW5kZXggY2xhc3Mgb2JqIGZpZWxkKSkpCiAgICAoaWYg
KG5vdCBjKQoJOzsgSXQgbWlnaHQgYmUgbWlzc2luZyBiZWNhdXNlIGl0IGlzIGEgOmNsYXNzIGFs
bG9jYXRlZCBmaWVsZC4KCTs7IExldHMgY2hlY2sgdGhhdCBpbmZvIG91dC4KCShpZiAoc2V0cSBj
IChlaWVpby1jbGFzcy1maWVsZC1uYW1lLWluZGV4IGNsYXNzIGZpZWxkKSkKCSAgICA7OyBPcmVm
IHRoYXQgc2xvdC4KCSAgICAoYXJlZiAoYXJlZiAoY2xhc3MtdiBjbGFzcykgY2xhc3MtY2xhc3Mt
YWxsb2NhdGlvbi12YWx1ZXMpIGMpCgkgIDs7IFRoZSBzbG90LW1pc3NpbmcgbWV0aG9kIGlzIGEg
Y29vbCB3YXkgb2YgYWxsb3dpbmcgYW4gb2JqZWN0IGF1dGhvcgoJICA7OyB0byBpbnRlcmNlcHQg
bWlzc2luZyBzbG90IGRlZmluaXRpb25zLiAgU2luY2UgaXQgaXMgYWxzbyB0aGUgTEFTVAoJICA7
OyB0aGluZyBjYWxsZWQgaW4gdGhpcyBmbiwgaXQncyByZXR1cm4gdmFsdWUgd291bGQgYmUgcmV0
cmlldmVkLgoJICAoc2xvdC1taXNzaW5nIG9iaiBmaWVsZCAnb3JlZikKCSAgOzsoc2lnbmFsICdp
bnZhbGlkLXNsb3QtbmFtZSAobGlzdCAob2JqZWN0LW5hbWUgb2JqKSBmaWVsZCkpCgkgICkKICAg
ICAgKGlmIChub3QgKG9iamVjdC1wIG9iaikpCgkgIChzaWduYWwgJ3dyb25nLXR5cGUtYXJndW1l
bnQgKGxpc3QgJ29iamVjdC1wIG9iaikpKQogICAgICAoZWllaW8tYmFyZi1pZi1zbG90LXVuYm91
bmQgKGFyZWYgb2JqIGMpIG9iaiBmaWVsZCAnb3JlZikpKSkKCihkZWZhbGlhcyAnc2xvdC12YWx1
ZSAnZWllaW8tb3JlZikKKGRlZmFsaWFzICdzZXQtc2xvdC12YWx1ZSAnZWllaW8tb3NldCkKCjs7
IFRoaXMgYWxpYXMgaXMgbmVlZGVkIHNvIHRoYXQgZnVuY3Rpb25zIGNhbiBiZSB3cml0dGVuCjs7
IGZvciBkZWZhdWx0cywgYnV0IHN0aWxsIGJlaGF2ZSBsaWtlIGxhbWJkYXMuCihkZWZtYWNybyBs
YW1iZGEtZGVmYXVsdCAoJnJlc3QgY2RyKQogICJUaGUgc2FtZSBhcyBgbGFtYmRhJyBidXQgaXMg
dXNlZCBhcyBhIGRlZmF1bHQgdmFsdWUgaW4gYGRlZmNsYXNzJy4KQXMgc3VjaCwgdGhlIGZvcm0g
KGxhbWJkYS1kZWZhdWx0IEFSR1MgRE9DU1RSSU5HIElOVEVSQUNUSVZFIEJPRFkpIGlzCnNlbGYg
cXVvdGluZy4gIFRoaXMgbWFjcm8gaXMgbWVhbnQgZm9yIHRoZSBzb2xlIHB1cnBvc2Ugb2YgcXVv
dGluZwpsYW1iZGEgZXhwcmVzc2lvbnMgaW50byBjbGFzcyBkZWZhdWx0cy4gIEFueSBgbGFtYmRh
LWRlZmF1bHQnCmV4cHJlc3Npb24gaXMgYXV0b21hdGljYWxseSB0cmFuc2Zvcm1lZCBpbnRvIGEg
YGxhbWJkYScgZXhwcmVzc2lvbgp3aGVuIGNvcGllZCBmcm9tIHRoZSBkZWZhdWx0cyBpbnRvIGEg
bmV3IG9iamVjdC4gIFRoZSB1c2Ugb2YKYG9yZWYtZGVmYXVsdCcsIGhvd2V2ZXIsIHdpbGwgcmV0
dXJuIGEgYGxhbWJkYS1kZWZhdWx0JyBleHByZXNzaW9uLgpDRFIgaXMgZnVuY3Rpb24gZGVmaW5p
dGlvbiBhbmQgYm9keS4iCiAgOzsgVGhpcyBkZWZpbml0aW9uIGlzIGNvcGllZCBkaXJlY3RseSBm
cm9tIHN1YnIuZWwgZm9yIGxhbWJkYQogIChsaXN0ICdmdW5jdGlvbiAoY29ucyAnbGFtYmRhLWRl
ZmF1bHQgY2RyKSkpCgoocHV0ICdsYW1iZGEtZGVmYXVsdCAnbGlzcC1pbmRlbnQtZnVuY3Rpb24g
J2RlZnVuKQoocHV0ICdsYW1iZGEtZGVmYXVsdCAnYnl0ZS1jb21waWxlICdieXRlLWNvbXBpbGUt
bGFtYmRhLWZvcm0pCgooZGVmbWFjcm8gb3JlZi1kZWZhdWx0IChvYmogZmllbGQpCiAgIkdldHMg
dGhlIGRlZmF1bHQgdmFsdWUgb2YgT0JKIChtYXliZSBhIGNsYXNzKSBmb3IgRklFTEQuClRoZSBk
ZWZhdWx0IHZhbHVlIGlzIHRoZSB2YWx1ZSBpbnN0YWxsZWQgaW4gYSBjbGFzcyB3aXRoIHRoZSA6
aW5pdGZvcm0KdGFnLiAgRklFTEQgY2FuIGJlIHRoZSBzbG90IG5hbWUsIG9yIHRoZSB0YWcgc3Bl
Y2lmaWVkIGJ5IHRoZSA6aW5pdGFyZwp0YWcgaW4gdGhlIGBkZWZjbGFzcycgY2FsbC4iCiAgYChl
aWVpby1vcmVmLWRlZmF1bHQgLG9iaiAocXVvdGUgLGZpZWxkKSkpCgooZGVmdW4gZWllaW8tb3Jl
Zi1kZWZhdWx0IChvYmogZmllbGQpCiAgIkRvZXMgdGhlIHdvcmsgZm9yIHRoZSBtYWNybyBgb3Jl
Zi1kZWZhdWx0JyB3aXRoIHNpbWlsYXIgcGFyYW1ldGVycy4KRmlsbHMgaW4gT0JKJ3MgRklFTEQg
d2l0aCBpdCdzIGRlZmF1bHQgdmFsdWUuIgogIChpZiAobm90IChvciAob2JqZWN0LXAgb2JqKSAo
Y2xhc3MtcCBvYmopKSkgKHNpZ25hbCAnd3JvbmctdHlwZS1hcmd1bWVudCAobGlzdCAnb2JqZWN0
LXAgb2JqKSkpCiAgKGlmIChub3QgKHN5bWJvbHAgZmllbGQpKSAoc2lnbmFsICd3cm9uZy10eXBl
LWFyZ3VtZW50IChsaXN0ICdzeW1ib2xwIGZpZWxkKSkpCiAgKGxldCogKChjbCAoaWYgKG9iamVj
dC1wIG9iaikgKGFyZWYgb2JqIG9iamVjdC1jbGFzcykgb2JqKSkKCSAoYyAoZWllaW8tZmllbGQt
bmFtZS1pbmRleCBjbCBvYmogZmllbGQpKSkKICAgIChpZiAobm90IGMpCgk7OyBJdCBtaWdodCBi
ZSBtaXNzaW5nIGJlY2F1c2UgaXQgaXMgYSA6Y2xhc3MgYWxsb2NhdGVkIGZpZWxkLgoJOzsgTGV0
cyBjaGVjayB0aGF0IGluZm8gb3V0LgoJKGlmIChzZXRxIGMKCQkgIChlaWVpby1jbGFzcy1maWVs
ZC1uYW1lLWluZGV4IGNsIGZpZWxkKSkKCSAgICA7OyBPcmVmIHRoYXQgc2xvdC4KCSAgICAoYXJl
ZiAoYXJlZiAoY2xhc3MtdiBjbCkgY2xhc3MtY2xhc3MtYWxsb2NhdGlvbi12YWx1ZXMpCgkJICBj
KQoJICAoc2xvdC1taXNzaW5nIG9iaiBmaWVsZCAnb3JlZi1kZWZhdWx0KQoJICA7OyhzaWduYWwg
J2ludmFsaWQtc2xvdC1uYW1lIChsaXN0IChjbGFzcy1uYW1lIGNsKSBmaWVsZCkpCgkgICkKICAg
ICAgKGVpZWlvLWJhcmYtaWYtc2xvdC11bmJvdW5kCiAgICAgICAobGV0ICgodmFsIChudGggKC0g
YyAzKSAoYXJlZiAoY2xhc3MtdiBjbCkgY2xhc3MtcHVibGljLWQpKSkpCgkgKGVpZWlvLWRlZmF1
bHQtZXZhbC1tYXliZSB2YWwpKQogICAgICAgb2JqIGNsICdvcmVmLWRlZmF1bHQpKSkpCgooZGVm
dW4gZWllaW8tZGVmYXVsdC1ldmFsLW1heWJlICh2YWwpCiAgIkNoZWNrIFZBTCwgYW5kIHJldHVy
biB3aGF0IGBvcmVmLWRlZmF1bHQnIHdvdWxkIHByb3ZpZGUuIgogIDs7IGNoZWNrIGZvciBmdW5j
dGlvbnMgdG8gZXZhbHVhdGUKICAoaWYgKGFuZCAobGlzdHAgdmFsKSAoZXF1YWwgKGNhciB2YWwp
ICdsYW1iZGEpKQogICAgICAoZnVuY2FsbCB2YWwpCiAgICA7OyBjaGVjayBmb3IgcXVvdGVkIHRo
aW5ncywgYW5kIHVucXVvdGUgdGhlbQogICAgKGlmIChhbmQgKGxpc3RwIHZhbCkgKGVxIChjYXIg
dmFsKSAncXVvdGUpKQoJKGNhciAoY2RyIHZhbCkpCiAgICAgIDs7IHJldHVybiBpdCB2ZXJiYXRp
bQogICAgICAoaWYgKGFuZCAobGlzdHAgdmFsKSAoZXEgKGNhciB2YWwpICdsYW1iZGEtZGVmYXVs
dCkpCgkgIChsZXQgKChzIChjb3B5LXNlcXVlbmNlIHZhbCkpKQoJICAgIChzZXRjYXIgcyAnbGFt
YmRhKQoJICAgIHMpCgl2YWwpKSkpCgo7OzsgT2JqZWN0IFNldCBtYWNyb3MKOzsKKGRlZm1hY3Jv
IG9zZXQgKG9iaiBmaWVsZCB2YWx1ZSkKICAiU2V0IHRoZSB2YWx1ZSBpbiBPQkogZm9yIHNsb3Qg
RklFTEQgdG8gVkFMVUUuCkZJRUxEIGlzIHRoZSBzbG90IG5hbWUgYXMgc3BlY2lmaWVkIGluIGBk
ZWZjbGFzcycgb3IgdGhlIHRhZyBjcmVhdGVkCndpdGggaW4gdGhlIDppbml0YXJnIHNsb3QuICBW
QUxVRSBjYW4gYmUgYW55IExpc3Agb2JqZWN0LiIKICBgKGVpZWlvLW9zZXQgLG9iaiAocXVvdGUg
LGZpZWxkKSAsdmFsdWUpKQoKKGRlZnVuIGVpZWlvLW9zZXQgKG9iaiBmaWVsZCB2YWx1ZSkKICAi
RG9lcyB0aGUgd29yayBmb3IgdGhlIG1hY3JvIGBvc2V0Jy4KRmlsbHMgaW4gT0JKJ3MgRklFTEQg
d2l0aCBWQUxVRS4iCiAgKGlmIChub3QgKG9iamVjdC1wIG9iaikpIChzaWduYWwgJ3dyb25nLXR5
cGUtYXJndW1lbnQgKGxpc3QgJ29iamVjdC1wIG9iaikpKQogIChpZiAobm90IChzeW1ib2xwIGZp
ZWxkKSkgKHNpZ25hbCAnd3JvbmctdHlwZS1hcmd1bWVudCAobGlzdCAnc3ltYm9scCBmaWVsZCkp
KQogIChsZXQgKChjIChlaWVpby1maWVsZC1uYW1lLWluZGV4IChvYmplY3QtY2xhc3MtZmFzdCBv
YmopIG9iaiBmaWVsZCkpKQogICAgKGlmIChub3QgYykKCTs7IEl0IG1pZ2h0IGJlIG1pc3Npbmcg
YmVjYXVzZSBpdCBpcyBhIDpjbGFzcyBhbGxvY2F0ZWQgZmllbGQuCgk7OyBMZXRzIGNoZWNrIHRo
YXQgaW5mbyBvdXQuCgkoaWYgKHNldHEgYwoJCSAgKGVpZWlvLWNsYXNzLWZpZWxkLW5hbWUtaW5k
ZXggKGFyZWYgb2JqIG9iamVjdC1jbGFzcykgZmllbGQpKQoJICAgIDs7IE9zZXQgdGhhdCBzbG90
LgoJICAgIChwcm9nbgoJICAgICAgKGVpZWlvLXZhbGlkYXRlLWNsYXNzLXNsb3QtdmFsdWUgKG9i
amVjdC1jbGFzcy1mYXN0IG9iaikgYyB2YWx1ZSBmaWVsZCkKCSAgICAgIChhc2V0IChhcmVmIChj
bGFzcy12IChhcmVmIG9iaiBvYmplY3QtY2xhc3MpKQoJCQkgIGNsYXNzLWNsYXNzLWFsbG9jYXRp
b24tdmFsdWVzKQoJCSAgICBjIHZhbHVlKSkKCSAgOzsgU2VlIG9yZWYgZm9yIGNvbW1lbnQgb24g
YHNsb3QtbWlzc2luZycKCSAgKHNsb3QtbWlzc2luZyBvYmogZmllbGQgJ29zZXQgdmFsdWUpCgkg
IDs7KHNpZ25hbCAnaW52YWxpZC1zbG90LW5hbWUgKGxpc3QgKG9iamVjdC1uYW1lIG9iaikgZmll
bGQpKQoJICApCiAgICAgIChlaWVpby12YWxpZGF0ZS1zbG90LXZhbHVlIChvYmplY3QtY2xhc3Mt
ZmFzdCBvYmopIGMgdmFsdWUgZmllbGQpCiAgICAgIChhc2V0IG9iaiBjIHZhbHVlKSkpKQoKKGRl
Zm1hY3JvIG9zZXQtZGVmYXVsdCAoY2xhc3MgZmllbGQgdmFsdWUpCiAgIlNldCB0aGUgZGVmYXVs
dCBzbG90IGluIENMQVNTIGZvciBGSUVMRCB0byBWQUxVRS4KVGhlIGRlZmF1bHQgdmFsdWUgaXMg
dXN1YWxseSBzZXQgd2l0aCB0aGUgOmluaXRmb3JtIHRhZyBkdXJpbmcgY2xhc3MKY3JlYXRpb24u
ICBUaGlzIGFsbG93cyB1c2VycyB0byBjaGFuZ2UgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgY2xh
c3NlcwphZnRlciB0aGV5IGFyZSBjcmVhdGVkLiIKICBgKGVpZWlvLW9zZXQtZGVmYXVsdCAsY2xh
c3MgKHF1b3RlICxmaWVsZCkgLHZhbHVlKSkKCihkZWZ1biBlaWVpby1vc2V0LWRlZmF1bHQgKGNs
YXNzIGZpZWxkIHZhbHVlKQogICJEb2VzIHRoZSB3b3JrIGZvciB0aGUgbWFjcm8gYG9zZXQtZGVm
YXVsdCcuCkZpbGxzIGluIHRoZSBkZWZhdWx0IHZhbHVlIGluIENMQVNTJyBpbiBGSUVMRCB3aXRo
IFZBTFVFLiIKICAoaWYgKG5vdCAoY2xhc3MtcCBjbGFzcykpIChzaWduYWwgJ3dyb25nLXR5cGUt
YXJndW1lbnQgKGxpc3QgJ2NsYXNzLXAgY2xhc3MpKSkKICAoaWYgKG5vdCAoc3ltYm9scCBmaWVs
ZCkpIChzaWduYWwgJ3dyb25nLXR5cGUtYXJndW1lbnQgKGxpc3QgJ3N5bWJvbHAgZmllbGQpKSkK
ICAobGV0KiAoKHNjb3BlZC1jbGFzcyBjbGFzcykKCSAoYyAoZWllaW8tZmllbGQtbmFtZS1pbmRl
eCBjbGFzcyBuaWwgZmllbGQpKSkKICAgIChpZiAobm90IGMpCgk7OyBJdCBtaWdodCBiZSBtaXNz
aW5nIGJlY2F1c2UgaXQgaXMgYSA6Y2xhc3MgYWxsb2NhdGVkIGZpZWxkLgoJOzsgTGV0cyBjaGVj
ayB0aGF0IGluZm8gb3V0LgoJKGlmIChzZXRxIGMgKGVpZWlvLWNsYXNzLWZpZWxkLW5hbWUtaW5k
ZXggY2xhc3MgZmllbGQpKQoJICAgIChwcm9nbgoJICAgICAgOzsgT3JlZiB0aGF0IHNsb3QuCgkg
ICAgICAoZWllaW8tdmFsaWRhdGUtY2xhc3Mtc2xvdC12YWx1ZSBjbGFzcyBjIHZhbHVlIGZpZWxk
KQoJICAgICAgKGFzZXQgKGFyZWYgKGNsYXNzLXYgY2xhc3MpIGNsYXNzLWNsYXNzLWFsbG9jYXRp
b24tdmFsdWVzKSBjCgkJICAgIHZhbHVlKSkKCSAgKHNpZ25hbCAnaW52YWxpZC1zbG90LW5hbWUg
KGxpc3QgKGNsYXNzLW5hbWUgY2xhc3MpIGZpZWxkKSkpCiAgICAgIChlaWVpby12YWxpZGF0ZS1z
bG90LXZhbHVlIGNsYXNzIGMgdmFsdWUgZmllbGQpCiAgICAgIDs7IFNldCB0aGlzIGludG8gdGhl
IHN0b3JhZ2UgZm9yIGRlZmF1bHRzLgogICAgICAoc2V0Y2FyIChudGhjZHIgKC0gYyAzKSAoYXJl
ZiAoY2xhc3MtdiBjbGFzcykgY2xhc3MtcHVibGljLWQpKQoJICAgICAgdmFsdWUpCiAgICAgIDs7
IFRha2UgdGhlIHZhbHVlLCBhbmQgcHV0IGl0IGludG8gb3VyIGNhY2hlIG9iamVjdC4KICAgICAg
KGVpZWlvLW9zZXQgKGFyZWYgKGNsYXNzLXYgY2xhc3MpIGNsYXNzLWRlZmF1bHQtb2JqZWN0LWNh
Y2hlKQoJCSAgZmllbGQgdmFsdWUpCiAgICAgICkpKQoKOzs7IEhhbmR5IENMT1MgbWFjcm9zCjs7
CihkZWZtYWNybyB3aXRoLXNsb3RzIChzcGVjLWxpc3Qgb2JqZWN0ICZyZXN0IGJvZHkpCiAgIlRo
ZSBtYWNybyB3aXRoLXNsb3RzIGVzdGFibGlzaGVzIGEgbGV4aWNhbCBlbnZpcm9ubWVudCBmb3IK
cmVmZXJyaW5nIHRvIHRoZSBzbG90cyBpbiB0aGUgaW5zdGFuY2UgbmFtZWQgYnkgdGhlIGdpdmVu
CnNsb3QtbmFtZXMgYXMgdGhvdWdoIHRoZXkgd2VyZSB2YXJpYWJsZXMuIFdpdGhpbiBzdWNoIGEg
Y29udGV4dAp0aGUgdmFsdWUgb2YgdGhlIHNsb3QgY2FuIGJlIHNwZWNpZmllZCBieSB1c2luZyBp
dHMgc2xvdCBuYW1lLAphcyBpZiBpdCB3ZXJlIGEgbGV4aWNhbGx5IGJvdW5kIHZhcmlhYmxlLiBC
b3RoIHNldGYgYW5kIHNldHEKY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSB2YWx1ZSBvZiB0aGUgc2xv
dC4iCiAgOzsgVHJhbnNmb3JtIHRoZSBzcGVjLWxpc3QgaW50byBhIHN5bWJvbC1tYWNyb2xldCBz
cGVjLWxpc3QuCiAgKGxldCAoKG1hcHBpbmdzIChtYXBjYXIgKGxhbWJkYSAoZW50cnkpCgkJCSAg
ICAobGV0ICgodmFyICAoaWYgKGxpc3RwIGVudHJ5KSAoY2FyIGVudHJ5KSBlbnRyeSkpCgkJCQkg
IChzbG90IChpZiAobGlzdHAgZW50cnkpIChjYWRyIGVudHJ5KSBlbnRyeSkpKQoJCQkgICAgICAo
bGlzdCB2YXIgYChzbG90LXZhbHVlICxvYmplY3QgJyxzbG90KSkpKQoJCQkgIHNwZWMtbGlzdCkp
KQogICAgKGFwcGVuZCAobGlzdCAnc3ltYm9sLW1hY3JvbGV0IG1hcHBpbmdzKQoJICAgIGJvZHkp
KSkKKHB1dCAnd2l0aC1zbG90cyAnbGlzcC1pbmRlbnQtZnVuY3Rpb24gMikKCgwKOzs7IFNpbXBs
ZSBnZW5lcmF0b3JzLCBhbmQgcXVlcnkgZnVuY3Rpb25zLiAgTm9uZSBvZiB0aGVzZSB3b3VsZCBk
bwo7OyAgd2VsbCBlbWJlZGRlZCBpbnRvIGFuIG9iamVjdC4KOzsKKGRlZm1hY3JvIG9iamVjdC1j
bGFzcy1mYXN0IChvYmopICJSZXR1cm4gdGhlIGNsYXNzIHN0cnVjdCBkZWZpbmluZyBPQkogd2l0
aCBubyBjaGVjay4iCiAgYChhcmVmICxvYmogb2JqZWN0LWNsYXNzKSkKICAKKGRlZnVuIGNsYXNz
LW5hbWUgKGNsYXNzKSAiUmV0dXJuIGEgTGlzcCBsaWtlIHN5bWJvbCBuYW1lIGZvciBDTEFTUy4i
CiAgKGlmIChub3QgKGNsYXNzLXAgY2xhc3MpKSAoc2lnbmFsICd3cm9uZy10eXBlLWFyZ3VtZW50
IChsaXN0ICdjbGFzcy1wIGNsYXNzKSkpCiAgOzsgSSB0aGluayB0aGlzIGlzIHN1cHBvc2VkIHRv
IHJldHVybiBhIHN5bWJvbCwgYnV0IHRvIG1lIENMQVNTIGlzIGEgc3ltYm9sLAogIDs7IGFuZCBJ
IHdhbnRlZCBhIHN0cmluZy4gIEFyZyEKICAoZm9ybWF0ICIjPGNsYXNzICVzPiIgKHN5bWJvbC1u
YW1lIGNsYXNzKSkpCgooZGVmdW4gb2JqZWN0LW5hbWUgKG9iaiAmb3B0aW9uYWwgZXh0cmEpCiAg
IlJldHVybiBhIExpc3AgbGlrZSBzeW1ib2wgc3RyaW5nIGZvciBvYmplY3QgT0JKLgpJZiBFWFRS
QSwgaW5jbHVkZSB0aGF0IGluIHRoZSBzdHJpbmcgcmV0dXJuZWQgdG8gcmVwcmVzZW50IHRoZSBz
eW1ib2wuIgogIChpZiAobm90IChvYmplY3QtcCBvYmopKSAoc2lnbmFsICd3cm9uZy10eXBlLWFy
Z3VtZW50IChsaXN0ICdvYmplY3QtcCBvYmopKSkKICAoZm9ybWF0ICIjPCVzICVzJXM+IiAoc3lt
Ym9sLW5hbWUgKG9iamVjdC1jbGFzcy1mYXN0IG9iaikpCgkgIChhcmVmIG9iaiBvYmplY3QtbmFt
ZSkgKG9yIGV4dHJhICIiKSkpCgooZGVmdW4gb2JqZWN0LW5hbWUtc3RyaW5nIChvYmopICJSZXR1
cm4gYSBzdHJpbmcgd2hpY2ggaXMgT0JKJ3MgbmFtZS4iCiAgKGlmIChub3QgKG9iamVjdC1wIG9i
aikpIChzaWduYWwgJ3dyb25nLXR5cGUtYXJndW1lbnQgKGxpc3QgJ29iamVjdC1wIG9iaikpKQog
IChhcmVmIG9iaiBvYmplY3QtbmFtZSkpCgooZGVmdW4gb2JqZWN0LXNldC1uYW1lLXN0cmluZyAo
b2JqIG5hbWUpICJTZXQgdGhlIHN0cmluZyB3aGljaCBpcyBPQkoncyBOQU1FLiIKICAoaWYgKG5v
dCAob2JqZWN0LXAgb2JqKSkgKHNpZ25hbCAnd3JvbmctdHlwZS1hcmd1bWVudCAobGlzdCAnb2Jq
ZWN0LXAgb2JqKSkpCiAgKGlmIChub3QgKHN0cmluZ3AgbmFtZSkpIChzaWduYWwgJ3dyb25nLXR5
cGUtYXJndW1lbnQgKGxpc3QgJ3N0cmluZ3AgbmFtZSkpKQogIChhc2V0IG9iaiBvYmplY3QtbmFt
ZSBuYW1lKSkKCihkZWZ1biBvYmplY3QtY2xhc3MgKG9iaikgIlJldHVybiB0aGUgY2xhc3Mgc3Ry
dWN0IGRlZmluaW5nIE9CSi4iCiAgKGlmIChub3QgKG9iamVjdC1wIG9iaikpIChzaWduYWwgJ3dy
b25nLXR5cGUtYXJndW1lbnQgKGxpc3QgJ29iamVjdC1wIG9iaikpKQogIChvYmplY3QtY2xhc3Mt
ZmFzdCBvYmopKQooZGVmYWxpYXMgJ2NsYXNzLW9mICdvYmplY3QtY2xhc3MpCgooZGVmdW4gb2Jq
ZWN0LWNsYXNzLW5hbWUgKG9iaikgIlJldHVybiBhIExpc3AgbGlrZSBzeW1ib2wgbmFtZSBmb3Ig
T0JKJ3MgY2xhc3MuIgogIChpZiAobm90IChvYmplY3QtcCBvYmopKSAoc2lnbmFsICd3cm9uZy10
eXBlLWFyZ3VtZW50IChsaXN0ICdvYmplY3QtcCBvYmopKSkKICAoY2xhc3MtbmFtZSAob2JqZWN0
LWNsYXNzLWZhc3Qgb2JqKSkpCgooZGVmbWFjcm8gY2xhc3MtcGFyZW50cy1mYXN0IChjbGFzcykg
IlJldHVybiBwYXJlbnQgY2xhc3NlcyB0byBDTEFTUyB3aXRoIG5vIGNoZWNrLiIKICBgKGFyZWYg
KGNsYXNzLXYgLGNsYXNzKSBjbGFzcy1wYXJlbnQpKQoKKGRlZnVuIGNsYXNzLXBhcmVudHMgKGNs
YXNzKSAiUmV0dXJuIHBhcmVudCBjbGFzc2VzIHRvIENMQVNTLiAgKG92ZXJsb2FkIG9mIHZhcmlh
YmxlKS4iCiAgKGlmIChub3QgKGNsYXNzLXAgY2xhc3MpKSAoc2lnbmFsICd3cm9uZy10eXBlLWFy
Z3VtZW50IChsaXN0ICdjbGFzcy1wIGNsYXNzKSkpCiAgKGNsYXNzLXBhcmVudHMtZmFzdCBjbGFz
cykpCgooZGVmbWFjcm8gY2xhc3MtY2hpbGRyZW4tZmFzdCAoY2xhc3MpICJSZXR1cm4gY2hpbGQg
Y2xhc3NlcyB0byBDTEFTUyB3aXRoIG5vIGNoZWNrLiIKICBgKGFyZWYgKGNsYXNzLXYgLGNsYXNz
KSBjbGFzcy1jaGlsZHJlbikpCgooZGVmdW4gY2xhc3MtY2hpbGRyZW4gKGNsYXNzKSAiUmV0dXJu
IGNoaWxkIGNsYXNzc2VzIHRvIENMQVNTLiIKICAoaWYgKG5vdCAoY2xhc3MtcCBjbGFzcykpIChz
aWduYWwgJ3dyb25nLXR5cGUtYXJndW1lbnQgKGxpc3QgJ2NsYXNzLXAgY2xhc3MpKSkKICAoY2xh
c3MtY2hpbGRyZW4tZmFzdCBjbGFzcykpCgooZGVmbWFjcm8gY2xhc3MtcGFyZW50LWZhc3QgKGNs
YXNzKSAiUmV0dXJuIGZpcnN0IHBhcmVudCBjbGFzcyB0byBDTEFTUyB3aXRoIG5vIGNoZWNrLiIK
ICBgKGNhciAoY2xhc3MtcGFyZW50cy1mYXN0ICxjbGFzcykpKQoKKGRlZm1hY3JvIGNsYXNzLXBh
cmVudCAoY2xhc3MpICJSZXR1cm4gZmlyc3QgcGFyZW50IGNsYXNzIHRvIENMQVNTLiAgKG92ZXJs
b2FkIG9mIHZhcmlhYmxlKS4iCiAgYChjYXIgKGNsYXNzLXBhcmVudHMgLGNsYXNzKSkpCgooZGVm
bWFjcm8gc2FtZS1jbGFzcy1mYXN0LXAgKG9iaiBjbGFzcykgIlJldHVybiB0IGlmIE9CSiBpcyBv
ZiBjbGFzcy10eXBlIENMQVNTIHdpdGggbm8gZXJyb3IgY2hlY2tpbmcuIgogIGAoZXEgKGFyZWYg
LG9iaiBvYmplY3QtY2xhc3MpICxjbGFzcykpCgooZGVmdW4gc2FtZS1jbGFzcy1wIChvYmogY2xh
c3MpICJSZXR1cm4gdCBpZiBPQkogaXMgb2YgY2xhc3MtdHlwZSBDTEFTUy4iCiAgKGlmIChub3Qg
KGNsYXNzLXAgY2xhc3MpKSAoc2lnbmFsICd3cm9uZy10eXBlLWFyZ3VtZW50IChsaXN0ICdjbGFz
cy1wIGNsYXNzKSkpCiAgKGlmIChub3QgKG9iamVjdC1wIG9iaikpIChzaWduYWwgJ3dyb25nLXR5
cGUtYXJndW1lbnQgKGxpc3QgJ29iamVjdC1wIG9iaikpKQogIChzYW1lLWNsYXNzLWZhc3QtcCBv
YmogY2xhc3MpKQoKKGRlZnVuIG9iamVjdC1vZi1jbGFzcy1wIChvYmogY2xhc3MpCiAgIlJldHVy
biBub24tbmlsIGlmIE9CSiBpcyBhbiBpbnN0YW5jZSBvZiBDTEFTUyBvciBDTEFTUycgc3ViY2xh
c3Nlcy4iCiAgKGlmIChub3QgKG9iamVjdC1wIG9iaikpIChzaWduYWwgJ3dyb25nLXR5cGUtYXJn
dW1lbnQgKGxpc3QgJ29iamVjdC1wIG9iaikpKQogIDs7IGNsYXNzIHdpbGwgYmUgY2hlY2tlZCBv
bmUgbGF5ZXIgZG93bgogIChjaGlsZC1vZi1jbGFzcy1wIChhcmVmIG9iaiBvYmplY3QtY2xhc3Mp
IGNsYXNzKSkKOzsgQmFja3dhcmRzIGNvbXBhdGliaWxpdHkKKGRlZmFsaWFzICdvYmotb2YtY2xh
c3MtcCAnb2JqZWN0LW9mLWNsYXNzLXApCgooZGVmdW4gY2hpbGQtb2YtY2xhc3MtcCAoY2hpbGQg
Y2xhc3MpCiAgIklmIENISUxEIGNsYXNzIGlzIGEgc3ViY2xhc3Mgb2YgQ0xBU1MuIgogIChpZiAo
bm90IChjbGFzcy1wIGNsYXNzKSkgKHNpZ25hbCAnd3JvbmctdHlwZS1hcmd1bWVudCAobGlzdCAn
Y2xhc3MtcCBjbGFzcykpKQogIChpZiAobm90IChjbGFzcy1wIGNoaWxkKSkgKHNpZ25hbCAnd3Jv
bmctdHlwZS1hcmd1bWVudCAobGlzdCAnY2xhc3MtcCBjaGlsZCkpKQogIChsZXQgKChwIG5pbCkp
CiAgICAod2hpbGUgKGFuZCBjaGlsZCAobm90IChlcSBjaGlsZCBjbGFzcykpKQogICAgICAoc2V0
cSBwIChhcHBlbmQgcCAoYXJlZiAoY2xhc3MtdiBjaGlsZCkgY2xhc3MtcGFyZW50KSkKCSAgICBj
aGlsZCAoY2FyIHApCgkgICAgcCAoY2RyIHApKSkKICAgIChpZiBjaGlsZCB0KSkpCgooZGVmdW4g
b2JqZWN0LXNsb3RzIChvYmopICJMaXN0IG9mIHNsb3RzIGF2YWlsYWJsZSBpbiBPQkouIgogIChp
ZiAobm90IChvYmplY3QtcCBvYmopKSAoc2lnbmFsICd3cm9uZy10eXBlLWFyZ3VtZW50IChsaXN0
ICdvYmplY3QtcCBvYmopKSkKICAoYXJlZiAoY2xhc3MtdiAob2JqZWN0LWNsYXNzLWZhc3Qgb2Jq
KSkgY2xhc3MtcHVibGljLWEpKQoKKGRlZnVuIGNsYXNzLXNsb3QtaW5pdGFyZyAoY2xhc3Mgc2xv
dCkgIkZldGNoIGZyb20gQ0xBU1MsIFNMT1QncyA6aW5pdGFyZy4iCiAgKGlmIChub3QgKGNsYXNz
LXAgY2xhc3MpKSAoc2lnbmFsICd3cm9uZy10eXBlLWFyZ3VtZW50IChsaXN0ICdjbGFzcy1wIGNs
YXNzKSkpCiAgKGxldCAoKGlhIChhcmVmIChjbGFzcy12IGNsYXNzKSBjbGFzcy1pbml0YXJnLXR1
cGxlcykpCgkoZiBuaWwpKQogICAgKHdoaWxlIChhbmQgaWEgKG5vdCBmKSkKICAgICAgKGlmIChl
cSAoY2RyIChjYXIgaWEpKSBzbG90KQoJICAoc2V0cSBmIChjYXIgKGNhciBpYSkpKSkKICAgICAg
KHNldHEgaWEgKGNkciBpYSkpKQogICAgZikpCgo7OzsgQ0xPUyBxdWVyaWVzIGludG8gY2xhc3Nl
cyBhbmQgc2xvdHMKOzsKKGRlZnVuIHNsb3QtYm91bmRwIChvYmplY3Qgc2xvdCkKICAiTm9uLW5p
bCBpZiBPQkpFQ1QncyBTTE9UIGlzIGJvdW5kLgpTZXR0aW5nIGEgc2xvdCdzIHZhbHVlIG1ha2Vz
IGl0IGJvdW5kLiAgQ2FsbGluZyBgc2xvdC1tYWtldW5ib3VuZCcgd2lsbAptYWtlIGEgc2xvdCB1
bmJvdW5kLgpPQkpFQ1QgY2FuIGJlIGFuIGluc3RhbmNlIG9yIGEgY2xhc3MuIgogIDs7IFNraXAg
dHlwZWNoZWNraW5nIHdoaWxlIHJldHJpZXZpbmcgdGhpcyB2YWx1ZS4KICAobGV0ICgoZWllaW8t
c2tpcC10eXBlY2hlY2sgdCkpCiAgICA7OyBSZXR1cm4gbmlsIGlmIHRoZSBtYWdpYyBzeW1ib2wg
aXMgaW4gdGhlcmUuCiAgICAoaWYgKG9iamVjdC1wIG9iamVjdCkKCShpZiAoZXEgKGVpZWlvLW9y
ZWYgb2JqZWN0IHNsb3QpIGVpZWlvLXVuYm91bmQpIG5pbCB0KQogICAgICAoaWYgKGNsYXNzLXAg
b2JqZWN0KQoJICAoaWYgKGVxIChlaWVpby1vcmVmLWRlZmF1bHQgb2JqZWN0IHNsb3QpIGVpZWlv
LXVuYm91bmQpIG5pbCB0KQoJKHNpZ25hbCAnd3JvbmctdHlwZS1hcmd1bWVudCAobGlzdCAnb2Jq
ZWN0LXAgb2JqZWN0KSkpKSkpCgooZGVmdW4gc2xvdC1tYWtldW5ib3VuZCAob2JqZWN0IHNsb3Qp
CiAgIkluIE9CSkVDVCwgbWFrZSBTTE9UIHVuYm91bmQuIgogIChlaWVpby1vc2V0IG9iamVjdCBz
bG90IGVpZWlvLXVuYm91bmQpKQoKKGRlZnVuIHNsb3QtZXhpc3RzLXAgKG9iamVjdC1vci1jbGFz
cyBzbG90KQogICJOb24tbmlsIGlmIE9CSkVDVC1PUi1DTEFTUyBoYXMgU0xPVC4iCiAgKGxldCAo
KGN2IChjbGFzcy12IChjb25kICgob2JqZWN0LXAgb2JqZWN0LW9yLWNsYXNzKQoJCQkgICAgKG9i
amVjdC1jbGFzcyBvYmplY3Qtb3ItY2xhc3MpKQoJCQkgICAoKGNsYXNzLXAgb2JqZWN0LW9yLWNs
YXNzKQoJCQkgICAgb2JqZWN0LW9yLWNsYXNzKSkKCQkgICAgICkpKQogICAgKG9yIChtZW1xIHNs
b3QgKGFyZWYgY3YgY2xhc3MtcHVibGljLWEpKQoJKG1lbXEgc2xvdCAoYXJlZiBjdiBjbGFzcy1j
bGFzcy1hbGxvY2F0aW9uLWEpKSkKICAgICkpCgooZGVmdW4gZmluZC1jbGFzcyAoc3ltYm9sICZv
cHRpb25hbCBlcnJvcnApCiAgIlJldHVybiB0aGUgY2xhc3MgdGhhdCBTWU1CT0wgcmVwcmVzZW50
cy4gKENMT1MgZnVuY3Rpb24pCklmIHRoZXJlIGlzIG5vIGNsYXNzLCBuaWwgaXMgcmV0dXJuZWQg
aWYgRVJST1JQIGlzIG5pbC4iCiAgKGlmIChub3QgKGNsYXNzLXAgc3ltYm9sKSkKICAgICAgKGlm
IGVycm9ycCAoc2lnbmFsICd3cm9uZy10eXBlLWFyZ3VtZW50IChsaXN0ICdjbGFzcy1wIHN5bWJv
bCkpCgluaWwpCiAgICAoY2xhc3MtdiBzeW1ib2wpKSkKCjs7OyBTbGlnaHRseSBtb3JlIGNvbXBs
ZXggdXRpbGl0eSBmdW5jdGlvbnMgZm9yIG9iamVjdHMKOzsKKGRlZnVuIG9iamVjdC1hc3NvYyAo
a2V5IGZpZWxkIGxpc3QpCiAgIlJldHVybiBub24tbmlsIGlmIEtFWSBpcyBgZXF1YWwnIHRvIHRo
ZSBGSUVMRCBvZiB0aGUgY2FyIG9mIG9iamVjdHMgaW4gTElTVC4KVGhlIHZhbHVlIGlzIGFjdHVh
bGx5IHRoZSBlbGVtZW50IG9mIExJU1Qgd2hvc2UgZmllbGQgZXF1YWxzIEtFWS4iCiAgKGlmIChu
b3QgKGxpc3RwIGxpc3QpKSAoc2lnbmFsICd3cm9uZy10eXBlLWFyZ3VtZW50IChsaXN0ICdsaXN0
cCBsaXN0KSkpCiAgKHdoaWxlIChhbmQgbGlzdCAobm90IChjb25kaXRpb24tY2FzZSBuaWwKCQkJ
ICAgIDs7IFRoaXMgcHJldmVudHMgZXJyb3JzIGZvciBtaXNzaW5nIHNsb3RzLgoJCQkgICAgKGVx
dWFsIGtleSAoZWllaW8tb3JlZiAoY2FyIGxpc3QpIGZpZWxkKSkKCQkJICAoZXJyb3IgbmlsKSkp
KQogICAgKHNldHEgbGlzdCAoY2RyIGxpc3QpKSkKICAoY2FyIGxpc3QpKQoKKGRlZnVuIG9iamVj
dC1hc3NvYy1saXN0IChmaWVsZCBsaXN0KQogICJSZXR1cm4gYW4gYXNzb2NpYXRpb24gbGlzdCB3
aXRoIHRoZSBjb250ZW50cyBvZiBGSUVMRCBhcyB0aGUga2V5IGVsZW1lbnQuCkxJU1QgbXVzdCBi
ZSBhIGxpc3Qgb2Ygb2JqZWN0cyB3aXRoIEZJRUxEIGluIGl0LgpUaGlzIGlzIHVzZWZ1bCB3aGVu
IHlvdSBuZWVkIHRvIGRvIGNvbXBsZXRpbmcgcmVhZCBvbiBhbiBvYmplY3QgZ3JvdXAuIgogIChp
ZiAobm90IChsaXN0cCBsaXN0KSkgKHNpZ25hbCAnd3JvbmctdHlwZS1hcmd1bWVudCAobGlzdCAn
bGlzdHAgbGlzdCkpKQogIChsZXQgKChhc3NvY2xpc3QgbmlsKSkKICAgICh3aGlsZSBsaXN0CiAg
ICAgIChzZXRxIGFzc29jbGlzdCAoY29ucyAoY29ucyAoZWllaW8tb3JlZiAoY2FyIGxpc3QpIGZp
ZWxkKQoJCQkJICAoY2FyIGxpc3QpKQoJCQkgICAgYXNzb2NsaXN0KSkKICAgICAgKHNldHEgbGlz
dCAoY2RyIGxpc3QpKSkKICAgIChucmV2ZXJzZSBhc3NvY2xpc3QpKSkKCihkZWZ1biBvYmplY3Qt
YXNzb2MtbGlzdC1zYWZlIChmaWVsZCBsaXN0KQogICJSZXR1cm4gYW4gYXNzb2NpYXRpb24gbGlz
dCB3aXRoIHRoZSBjb250ZW50cyBvZiBGSUVMRCBhcyB0aGUga2V5IGVsZW1lbnQuCkxJU1QgbXVz
dCBiZSBhIGxpc3Qgb2Ygb2JqZWN0cywgYnV0IHRob3NlIG9iamVjdHMgZG8gbm90IG5lZWQgdG8g
aGF2ZQpGSUVMRCBpbiBpdC4gIElmIGl0IGRvZXMgbm90LCB0aGVuIHRoYXQgZWxlbWVudCBpcyBs
ZWZ0IG91dCBvZiB0aGUgYXNzb2NpYXRpb24KbGlzdC4iCiAgKGlmIChub3QgKGxpc3RwIGxpc3Qp
KSAoc2lnbmFsICd3cm9uZy10eXBlLWFyZ3VtZW50IChsaXN0ICdsaXN0cCBsaXN0KSkpCiAgKGxl
dCAoKGFzc29jbGlzdCBuaWwpKQogICAgKHdoaWxlIGxpc3QKICAgICAgKGlmIChzbG90LWV4aXN0
cy1wIChjYXIgbGlzdCkgZmllbGQpCgkgIChzZXRxIGFzc29jbGlzdCAoY29ucyAoY29ucyAoZWll
aW8tb3JlZiAoY2FyIGxpc3QpIGZpZWxkKQoJCQkJICAgICAgKGNhciBsaXN0KSkKCQkJCWFzc29j
bGlzdCkpKQogICAgICAoc2V0cSBsaXN0IChjZHIgbGlzdCkpKQogICAgKG5yZXZlcnNlIGFzc29j
bGlzdCkpKQoKKGRlZnVuIG9iamVjdC1hZGQtdG8tbGlzdCAob2JqZWN0IHNsb3QgaXRlbSAmb3B0
aW9uYWwgYXBwZW5kKQogICJJbiBPQkpFQ1QncyBTTE9ULCBhZGQgSVRFTSB0byB0aGUgcHJlLWV4
aXN0aW5nIGxpc3Qgb2YgZWxlbWVudHMuCk9wdGlvbmFsIGFyZ3VtZW50IEFQUEVORCBpbmRpY2F0
ZXMgd2UgbmVlZCB0byBhcHBlbmQgdG8gdGhlIGxpc3QuCklmIElURU0gYWxyZWFkeSBleGlzdHMg
aW4gdGhlIGxpc3QgaW4gU0xPVCwgdGhlbiBpdCBpcyBub3QgYWRkZWQuCkNvbXBhcmlzb24gaXMg
ZG9uZSB3aXRoIGBlcXVhbCcgdGhyb3VnaCB0aGUgYG1lbWJlcicgZnVuY3Rpb24gY2FsbC4KSWYg
U0xPVCBpcyB1bmJvdW5kLCBiaW5kIGl0IHRvIHRoZSBsaXN0IGNvbnRhaW5pbmcgSVRFTS4iCiAg
KGxldCAob3YpCiAgICA7OyBGaW5kIHRoZSBvcmlnaW5hdGluZyBsaXN0LgogICAgKGlmIChub3Qg
KHNsb3QtYm91bmRwIG9iamVjdCBzbG90KSkKCShzZXRxIG92IChsaXN0IGl0ZW0pKQogICAgICAo
c2V0cSBvdiAoZWllaW8tb3JlZiBvYmplY3Qgc2xvdCkpCiAgICAgIDs7IHR1cm4gaXQgaW50byBh
IGxpc3QuCiAgICAgICh1bmxlc3MgKGxpc3RwIG92KQoJKHNldHEgb3YgKGxpc3Qgb3YpKSkKICAg
ICAgOzsgRG8gdGhlIGNvbWJpbmF0aW9uCiAgICAgIChpZiAobm90IChtZW1iZXIgaXRlbSBvdikp
CgkgIChzZXRxIG92CgkJKGlmIGFwcGVuZAoJCSAgICAoYXBwZW5kIG92IChsaXN0IGl0ZW0pKQoJ
CSAgKGNvbnMgaXRlbSBvdikpKSkpCiAgICA7OyBTZXQgYmFjayBpbnRvIHRoZSBzbG90LgogICAg
KGVpZWlvLW9zZXQgb2JqZWN0IHNsb3Qgb3YpKSkKCihkZWZ1biBvYmplY3QtcmVtb3ZlLWZyb20t
bGlzdCAob2JqZWN0IHNsb3QgaXRlbSkKICAiSW4gT0JKRUNUJ3MgU0xPVCwgcmVtb3ZlIG9jY3Vy
cmVuY2VzIElURU0uCklmIElURU0gYWxyZWFkeSBleGlzdHMgaW4gdGhlIGxpc3QgaW4gU0xPVCwg
dGhlbiBpdCBpcyBub3QgYWRkZWQuCkNvbXBhcmlzb24gaXMgZG9uZSB3aXRoIGBlcXVhbCcgdGhy
b3VnaCB0aGUgYGRlbGV0ZScgZnVuY3Rpb24gY2FsbC4KSWYgU0xPVCBpcyB1bmJvdW5kLCBkbyBu
b3RoaW5nLiIKICAoaWYgKG5vdCAoc2xvdC1ib3VuZHAgb2JqZWN0IHNsb3QpKQogICAgICBuaWwK
ICAgIChlaWVpby1vc2V0IG9iamVjdCBzbG90IChkZWxldGUgaXRlbSAoZWllaW8tb3JlZiBvYmpl
Y3Qgc2xvdCkpKSkpCgwKOzs7IEVJRUlPIGludGVybmFsIHNlYXJjaCBmdW5jdGlvbnMKOzsKKGRl
ZnVuIGVpZWlvLWZpZWxkLW9yaWdpbmF0aW5nLWNsYXNzLXAgKHN0YXJ0LWNsYXNzIGZpZWxkKQog
ICJSZXR1cm4gTm9uLW5pbCBpZiBTVEFSVC1DTEFTUyBpcyB0aGUgZmlyc3QgY2xhc3MgdG8gZGVm
aW5lIEZJRUxELgpUaGlzIGlzIGZvciB0ZXN0aW5nIGlmIGBzY29wZWQtY2xhc3MnIGlzIHRoZSBj
bGFzcyB0aGF0IGRlZmluZXMgRklFTEQKc28gdGhhdCB3ZSBjYW4gcHJvdGVjdCBwcml2YXRlIHNs
b3RzLiIKICAobGV0ICgocGFyIChjbGFzcy1wYXJlbnRzIHN0YXJ0LWNsYXNzKSkKCShyZXQgdCkp
CiAgICAoaWYgKG5vdCBwYXIpCgl0CiAgICAgICh3aGlsZSAoYW5kIHBhciByZXQpCgkoaWYgKGlu
dGVybi1zb2Z0IChzeW1ib2wtbmFtZSBmaWVsZCkKCQkJIChhcmVmIChjbGFzcy12IChjYXIgcGFy
KSkKCQkJICAgICAgIGNsYXNzLXN5bWJvbC1vYmFycmF5KSkKCSAgICAoc2V0cSByZXQgbmlsKSkK
CShzZXRxIHBhciAoY2RyIHBhcikpKQogICAgICByZXQpKSkKCihkZWZ1biBlaWVpby1maWVsZC1u
YW1lLWluZGV4IChjbGFzcyBvYmogZmllbGQpCiAgIkluIENMQVNTIGZvciBPQkogZmluZCB0aGUg
aW5kZXggb2YgdGhlIG5hbWVkIEZJRUxELgpUaGUgZmllbGQgaXMgYSBzeW1ib2wgd2hpY2ggaXMg
aW5zdGFsbGVkIGluIENMQVNTIGJ5IHRoZSBgZGVmY2xhc3MnCmNhbGwuICBPQkogY2FuIGJlIG5p
bCwgYnV0IGlmIGl0IGlzIGFuIG9iamVjdCwgYW5kIHRoZSBzbG90IGluIHF1ZXN0aW9uCmlzIHBy
b3RlY3RlZCwgYWNjZXNzIHdpbGwgYmUgYWxsb3dlZCBpZiBvYmogaXMgYSBjaGlsZCBvZiB0aGUg
Y3VycmVudGx5CmBzY29wZWQtY2xhc3MnLgpJZiBGSUVMRCBpcyB0aGUgdmFsdWUgY3JlYXRlZCB3
aXRoIDppbml0YXJnIGluc3RlYWQsCnJldmVyc2UtbG9va3VwIHRoYXQgbmFtZSwgYW5kIHJlY3Vy
c2Ugd2l0aCB0aGUgYXNzb2NpYXRlZCBzbG90IHZhbHVlLiIKICA7OyBSZW1vdmVkIGNoZWNrcyB0
byBvdXRzaWRlIHRoaXMgY2FsbAogIChsZXQqICgoZnN5bSAoaW50ZXJuLXNvZnQgKHN5bWJvbC1u
YW1lIGZpZWxkKQoJCQkgICAgKGFyZWYgKGNsYXNzLXYgY2xhc3MpCgkJCQkgIGNsYXNzLXN5bWJv
bC1vYmFycmF5KSkpCgkgKGZzaSAoaWYgKHN5bWJvbHAgZnN5bSkgKHN5bWJvbC12YWx1ZSBmc3lt
KSBuaWwpKSkKICAgIChpZiAoaW50ZWdlcnAgZnNpKQoJKGNvbmQKCSAoKG5vdCAoZ2V0IGZzeW0g
J3Byb3RlY3Rpb24pKQoJICAoKyAzIGZzaSkpCgkgKChhbmQgKGVxIChnZXQgZnN5bSAncHJvdGVj
dGlvbikgJ3Byb3RlY3RlZCkKCSAgICAgICBzY29wZWQtY2xhc3MKCSAgICAgICAob3IgKGNoaWxk
LW9mLWNsYXNzLXAgY2xhc3Mgc2NvcGVkLWNsYXNzKQoJCSAgIChhbmQgKG9iamVjdC1wIG9iaikK
CQkJKGNoaWxkLW9mLWNsYXNzLXAgY2xhc3MgKG9iamVjdC1jbGFzcyBvYmopKSkpKQoJICAoKyAz
IGZzaSkpCgkgKChhbmQgKGVxIChnZXQgZnN5bSAncHJvdGVjdGlvbikgJ3ByaXZhdGUpCgkgICAg
ICAgKG9yIChhbmQgc2NvcGVkLWNsYXNzCgkJCShlaWVpby1maWVsZC1vcmlnaW5hdGluZy1jbGFz
cy1wIHNjb3BlZC1jbGFzcyBmaWVsZCkpCgkJICAgZWllaW8taW5pdGlhbGl6aW5nLW9iamVjdCkp
CgkgICgrIDMgZnNpKSkKCSAodCBuaWwpKQogICAgICAobGV0ICgoZm4gKGVpZWlvLWluaXRhcmct
dG8tYXR0cmlidXRlIGNsYXNzIGZpZWxkKSkpCgkoaWYgZm4gKGVpZWlvLWZpZWxkLW5hbWUtaW5k
ZXggY2xhc3Mgb2JqIGZuKSBuaWwpKSkpKQoKKGRlZnVuIGVpZWlvLWNsYXNzLWZpZWxkLW5hbWUt
aW5kZXggKGNsYXNzIGZpZWxkKQogICJJbiBDTEFTUyBmaW5kIHRoZSBpbmRleCBvZiB0aGUgbmFt
ZWQgRklFTEQuClRoZSBmaWVsZCBpcyBhIHN5bWJvbCB3aGljaCBpcyBpbnN0YWxsZWQgaW4gQ0xB
U1MgYnkgdGhlIGBkZWZjbGFzcycKY2FsbC4gIElmIEZJRUxEIGlzIHRoZSB2YWx1ZSBjcmVhdGVk
IHdpdGggOmluaXRhcmcgaW5zdGVhZCwKcmV2ZXJzZS1sb29rdXAgdGhhdCBuYW1lLCBhbmQgcmVj
dXJzZSB3aXRoIHRoZSBhc3NvY2lhdGVkIHNsb3QgdmFsdWUuIgogIDs7IFRoaXMgd2lsbCBoYXBw
ZW4gbGVzcyBvZnRlbiwgYW5kIHdpdGggZmV3ZXIgc2xvdHMuICBEbyB0aGlzIHRoZQogIDs7IHN0
b3JhZ2UgY2hlYXAgd2F5LgogIChsZXQqICgoYSAoYXJlZiAoY2xhc3MtdiBjbGFzcykgY2xhc3Mt
Y2xhc3MtYWxsb2NhdGlvbi1hKSkKCSAobDEgKGxlbmd0aCBhKSkKCSAoYWYgKG1lbXEgZmllbGQg
YSkpCgkgKGwyIChsZW5ndGggYWYpKSkKICAgIDs7IFNsb3QgIyBpcyBsZW5ndGggb2YgdGhlIHRv
dGFsIGxpc3QsIG1pbnVzIHRoZSByZW1haW5pbmcgbGlzdCBvZgogICAgOzsgdGhlIGZvdW5kIHNs
b3QuCiAgICAoaWYgYWYgKC0gbDEgbDIpKSkpCgwKOzs7IENMT1MgZ2VuZXJpY3MgaW50ZXJuYWwg
ZnVuY3Rpb24gaGFuZGxpbmcKOzsKKGRlZnZhciBlaWVpby1nZW5lcmljLWNhbGwtbWV0aG9kbmFt
ZSBuaWwKICAiV2hlbiB1c2luZyBgY2FsbC1uZXh0LW1ldGhvZCcsIHByb3ZpZGVzIGEgY29udGV4
dCBvbiBob3cgdG8gZG8gaXQuIikKKGRlZnZhciBlaWVpby1nZW5lcmljLWNhbGwtYXJnbHN0IG5p
bAogICJXaGVuIHVzaW5nIGBjYWxsLW5leHQtbWV0aG9kJywgcHJvdmlkZXMgYSBjb250ZXh0IGZv
ciBwYXJhbWV0ZXJzLiIpCihkZWZ2YXIgZWllaW8tZ2VuZXJpYy1jYWxsLWtleSBuaWwKICAiV2hl
biB1c2luZyBgY2FsbC1uZXh0LW1ldGhvZCcsIHByb3ZpZGVzIGEgY29udGV4dCBmb3IgdGhlIGN1
cnJlbnQga2V5LgpLZXlzIGFyZSBhIG51bWJlciByZXByZXNlbnRpbmcgOkJFRk9SRSwgOlBSSU1B
UlksIGFuZCA6QUZURVIgbWV0aG9kcy4iKQooZGVmdmFyIGVpZWlvLWdlbmVyaWMtY2FsbC1uZXh0
LW1ldGhvZC1saXN0IG5pbAogICJXaGVuIGV4ZWN1dGluZyBhIFBSSU1BUlkgb3IgU1RBVElDIG1l
dGhvZCwgdHJhY2sgdGhlICduZXh0LW1ldGhvZCcuCkR1cmluZyBleGVjdXRpb25zLCB0aGUgbGlz
dCBpcyBmaXJzdCBnZW5lcmF0ZWQsIHRoZW4gYXMgZWFjaCBuZXh0IG1ldGhvZAppcyBjYWxsZWQs
IHRoZSBuZXh0IG1ldGhvZCBpcyBwb3BwZWQgb2ZmIHRoZSBzdGFjay4iKQoKKGRlZnVuIGVpZWlv
LWdlbmVyaWMtY2FsbCAobWV0aG9kIGFyZ3MpCiAgIkNhbGwgTUVUSE9EIHdpdGggQVJHUy4KQVJH
UyBwcm92aWRlcyB0aGUgY29udGV4dCBvbiB3aGljaCBpbXBsZW1lbnRhdGlvbiB0byB1c2UuClRo
aXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gYSBnZW5lcmljIGZ1bmN0aW9uLiIKICA7OyBX
ZSBtdXN0IGV4cGFuZCBvdXIgYXJndW1lbnRzIGZpcnN0IGFzIHRoZXkgYXJlIGFsd2F5cwogIDs7
IHBhc3NlZCBpbiBhcyBxdW90ZWQgc3ltYm9scwogIChsZXQgKChuZXdhcmdzIG5pbCkgKG1jbGFz
cyBuaWwpICAobGFtYmRhcyBuaWwpICh0bGFtYmRhcyBuaWwpIChrZXlzIG5pbCkKCShlaWVpby1n
ZW5lcmljLWNhbGwtbWV0aG9kbmFtZSBtZXRob2QpCgkoZWllaW8tZ2VuZXJpYy1jYWxsLWFyZ2xz
dCBhcmdzKQoJKGZpcnN0YXJnIG5pbCkKCShwcmltYXJ5bWV0aG9kbGlzdCBuaWwpKQogICAgOzsg
Z2V0IGEgY29weQogICAgKHNldHEgbmV3YXJncyBhcmdzCgkgIGZpcnN0YXJnIChjYXIgbmV3YXJn
cykpCiAgICA7OyBJcyB0aGUgY2xhc3MgcGFzc2VkIGluIGF1dG9sb2FkZWQ/CiAgICA7OyBTaW5j
ZSBjbGFzcyBuYW1lcyBhcmUgYWxzbyBjb25zdHJ1Y3RvcnMsIHRoZXkgY2FuIGJlIGF1dG9sb2Fk
ZWQKICAgIDs7IHZpYSB0aGUgYXV0b2xvYWQgY29tbWFuZC4gIENoZWNrIGZvciB0aGlzLCBhbmQg
bG9hZCB0aGVtIGluLgogICAgOzsgSXQncyBvayBpZiBpdCBkb2Vzbid0IHR1cm4gb3V0IHRvIGJl
IGEgY2xhc3MuICBQcm9iYWJseSB3YW50IHRoYXQKICAgIDs7IGZ1bmN0aW9uIGxvYWRlZCBhbnl3
YXkuCiAgICAoaWYgKGFuZCAoc3ltYm9scCBmaXJzdGFyZykKCSAgICAgKGZib3VuZHAgZmlyc3Rh
cmcpCgkgICAgIChsaXN0cCAoc3ltYm9sLWZ1bmN0aW9uIGZpcnN0YXJnKSkKCSAgICAgKGVxICdh
dXRvbG9hZCAoY2FyIChzeW1ib2wtZnVuY3Rpb24gZmlyc3RhcmcpKSkpCgkobG9hZCAobnRoIDEg
KHN5bWJvbC1mdW5jdGlvbiBmaXJzdGFyZykpKSkKICAgIDs7IGxvb2t1cCB0aGUgZm9ybXMgdG8g
dXNlCiAgICAoY29uZCAoKG9iamVjdC1wIGZpcnN0YXJnKQoJICAgKHNldHEgbWNsYXNzIChvYmpl
Y3QtY2xhc3MtZmFzdCBmaXJzdGFyZykpKQoJICAoKGNsYXNzLXAgZmlyc3RhcmcpCgkgICAoc2V0
cSBtY2xhc3MgZmlyc3RhcmcKCQkgKSkpCiAgICA7OyBOb3cgY3JlYXRlIGEgbGlzdCBpbiByZXZl
cnNlIG9yZGVyIG9mIGFsbCB0aGUgY2FsbHMgd2UgaGF2ZQogICAgOzsgbWFrZSBpbiBvcmRlciB0
byBzdWNjZXNzZnVsbHkgZG8gdGhpcyByaWdodC4gIFJ1bGVzOgogICAgOzsgMSkgT25seSBjYWxs
IGdlbmVyaWNzIGlmIHNjb3BlZC1jbGFzcyBpcyBub3QgZGVmaW5lZAogICAgOzsgICAgVGhpcyBw
cmV2ZW50cyBtdWx0aXBsZSBjYWxscyBpbiB0aGUgY2FzZSBvZiByZWN1cnNpb24KICAgIDs7IDIp
IE9ubHkgY2FsbCBzdGF0aWMgaWYgdGhpcyBpcyBhIHN0YXRpYyBtZXRob2QuCiAgICA7OyAzKSBP
bmx5IGNhbGwgc3BlY2lmaWNzIGlmIHRoZSBkZWZpbml0aW9uIGFsbG93cyBmb3IgdGhlbS4KICAg
IDs7IDQpIENhbGwgaW4gb3JkZXIgYmFzZWQgb24gOkJFRk9SRSwgOlBSSU1BUlksIGFuZCA6QUZU
RVIKICAgICh3aGVuIChvYmplY3QtcCBmaXJzdGFyZykKICAgICAgOzsgTm9uLXN0YXRpYyBjYWxs
cyBkbyBhbGwgdGhpcyBzdHVmZi4KCiAgICAgIDs7IDpBRlRFUiBtZXRob2RzCiAgICAgIChzZXRx
IHRsYW1iZGFzCgkgICAgKGlmIG1jbGFzcwoJCShlaWVpb210LW1ldGhvZC1saXN0IG1ldGhvZCBt
ZXRob2QtYWZ0ZXIgbWNsYXNzKQoJICAgICAgKGxpc3QgKGVpZWlvLWdlbmVyaWMtZm9ybSBtZXRo
b2QgbWV0aG9kLWFmdGVyIG5pbCkpKQoJICAgIDs7KG9yIChhbmQgbWNsYXNzIChlaWVpby1nZW5l
cmljLWZvcm0gbWV0aG9kIG1ldGhvZC1hZnRlciBtY2xhc3MpKQoJICAgIDs7CShlaWVpby1nZW5l
cmljLWZvcm0gbWV0aG9kIG1ldGhvZC1hZnRlciBuaWwpKQoJICAgICkKICAgICAgKHNldHEgbGFt
YmRhcyAoYXBwZW5kIHRsYW1iZGFzIGxhbWJkYXMpCgkgICAga2V5cyAoYXBwZW5kIChtYWtlLWxp
c3QgKGxlbmd0aCB0bGFtYmRhcykgbWV0aG9kLWFmdGVyKSBrZXlzKSkKICAgICAgCiAgICAgIDs7
IDpQUklNQVJZIG1ldGhvZHMKICAgICAgKHNldHEgdGxhbWJkYXMKCSAgICAob3IgKGFuZCBtY2xh
c3MgKGVpZWlvLWdlbmVyaWMtZm9ybSBtZXRob2QgbWV0aG9kLXByaW1hcnkgbWNsYXNzKSkKCQko
ZWllaW8tZ2VuZXJpYy1mb3JtIG1ldGhvZCBtZXRob2QtcHJpbWFyeSBuaWwpKSkKICAgICAgKHdo
ZW4gdGxhbWJkYXMKCShzZXRxIGxhbWJkYXMgKGNvbnMgdGxhbWJkYXMgbGFtYmRhcykKCSAgICAg
IGtleXMgKGNvbnMgbWV0aG9kLXByaW1hcnkga2V5cykKCSAgICAgIHByaW1hcnltZXRob2RsaXN0
CgkgICAgICAoZWllaW9tdC1tZXRob2QtbGlzdCBtZXRob2QgbWV0aG9kLXByaW1hcnkgbWNsYXNz
KSkpCgogICAgICA7OyA6QkVGT1JFIG1ldGhvZHMKICAgICAgKHNldHEgdGxhbWJkYXMKCSAgICAo
aWYgbWNsYXNzCgkJKGVpZWlvbXQtbWV0aG9kLWxpc3QgbWV0aG9kIG1ldGhvZC1iZWZvcmUgbWNs
YXNzKQoJICAgICAgKGxpc3QgKGVpZWlvLWdlbmVyaWMtZm9ybSBtZXRob2QgbWV0aG9kLWJlZm9y
ZSBuaWwpKSkKCSAgICA7OyhvciAoYW5kIG1jbGFzcyAoZWllaW8tZ2VuZXJpYy1mb3JtIG1ldGhv
ZCBtZXRob2QtYmVmb3JlIG1jbGFzcykpCgkgICAgOzsJKGVpZWlvLWdlbmVyaWMtZm9ybSBtZXRo
b2QgbWV0aG9kLWJlZm9yZSBuaWwpKQoJICAgICkKICAgICAgKHNldHEgbGFtYmRhcyAoYXBwZW5k
IHRsYW1iZGFzIGxhbWJkYXMpCgkgICAga2V5cyAoYXBwZW5kIChtYWtlLWxpc3QgKGxlbmd0aCB0
bGFtYmRhcykgbWV0aG9kLWJlZm9yZSkga2V5cykpCiAgICAgICkKCiAgICA7OyBJZiB0aGVyZSB3
ZXJlIG5vIG1ldGhvZHMgZm91bmQsIHRoZW4gdGhlcmUgY291bGQgYmUgOlNUQVRJQyBtZXRob2Rz
LgogICAgKHdoZW4gKG5vdCBsYW1iZGFzKQogICAgICAoc2V0cSB0bGFtYmRhcwoJICAgIChlaWVp
by1nZW5lcmljLWZvcm0gbWV0aG9kIG1ldGhvZC1zdGF0aWMgbWNsYXNzKSkKICAgICAgKHNldHEg
bGFtYmRhcyAoY29ucyB0bGFtYmRhcyBsYW1iZGFzKQoJICAgIGtleXMgKGNvbnMgbWV0aG9kLXN0
YXRpYyBrZXlzKQoJICAgIHByaW1hcnltZXRob2RsaXN0ICA7OyBSZS11c2UgZXZlbiB3aXRoIGJh
ZCBuYW1lIGhlcmUKCSAgICAoZWllaW9tdC1tZXRob2QtbGlzdCBtZXRob2QgbWV0aG9kLXN0YXRp
YyBtY2xhc3MpKSkKCiAgICA7OyBOb3cgbG9vcCB0aHJvdWdoIGFsbCBvY2N1cmFuY2VzIGZvcm1z
IHdoaWNoIHdlIG11c3QgZXhlY3V0ZQogICAgOzsgKHdoaWNoIGFyZSBoYXBwaWx5IHNvcnRlZCBu
b3cpIGFuZCBleGVjdXRlIHRoZW0gYWxsIQogICAgKGxldCAoKHJ2YWwgbmlsKSAobGFzdHZhbCBu
aWwpIChydmFsZXZlciBuaWwpIChmb3VuZCBuaWwpKQogICAgICAod2hpbGUgbGFtYmRhcwoJKGlm
IChjYXIgbGFtYmRhcykKCSAgICAobGV0KiAoKHNjb3BlZC1jbGFzcyAoY2RyIChjYXIgbGFtYmRh
cykpKQoJCSAgIChlaWVpby1nZW5lcmljLWNhbGwta2V5IChjYXIga2V5cykpCgkJICAgKGhhcy1y
ZXR1cm4tdmFsCgkJICAgIChvciAoPSBlaWVpby1nZW5lcmljLWNhbGwta2V5IG1ldGhvZC1wcmlt
YXJ5KQoJCQkoPSBlaWVpby1nZW5lcmljLWNhbGwta2V5IG1ldGhvZC1zdGF0aWMpKSkKCQkgICAo
ZWllaW8tZ2VuZXJpYy1jYWxsLW5leHQtbWV0aG9kLWxpc3QKCQkgICAgOzsgVXNlIHRoZSBjZHIs
IGFzIHRoZSBmaXJzdCBlbGVtZW50IGlzIHRoZSBmY24KCQkgICAgOzsgd2UgYXJlIGNhbGxpbmcg
cmlnaHQgbm93LgoJCSAgICAod2hlbiBoYXMtcmV0dXJuLXZhbCAoY2RyIHByaW1hcnltZXRob2Rs
aXN0KSkpCgkJICAgKQoJICAgICAgKHNldHEgZm91bmQgdCkKCSAgICAgIDs7KHNldHEgcnZhbCAo
YXBwbHkgKGNhciAoY2FyIGxhbWJkYXMpKSBuZXdhcmdzKSkKCSAgICAgIChzZXRxIGxhc3R2YWwg
KGFwcGx5IChjYXIgKGNhciBsYW1iZGFzKSkgbmV3YXJncykpCgkgICAgICAod2hlbiBoYXMtcmV0
dXJuLXZhbAoJICAgICAgCShzZXRxIHJ2YWwgbGFzdHZhbAoJICAgICAgCSAgICAgIHJ2YWxldmVy
IHQpKQoJICAgICAgKSkKCShzZXRxIGxhbWJkYXMgKGNkciBsYW1iZGFzKQoJICAgICAga2V5cyAo
Y2RyIGtleXMpKSkKICAgICAgKGlmIChub3QgZm91bmQpCgkgIChpZiAob2JqZWN0LXAgKGNhciBh
cmdzKSkKCSAgICAgIChzZXRxIHJ2YWwgKG5vLWFwcGxpY2FibGUtbWV0aG9kIChjYXIgYXJncykg
bWV0aG9kKQoJCSAgICBydmFsZXZlciB0KQoJICAgIChzaWduYWwKCSAgICAgJ25vLW1ldGhvZC1k
ZWZpbml0aW9uCgkgICAgIChsaXN0IG1ldGhvZCBhcmdzKSkpKQogICAgICA7OyBSaWdodCBIZXJl
Li4uIGl0IGNvdWxkIGJlIHRoYXQgbGFzdHZhbCBpcyByZXR1cm5lZCB3aGVuCiAgICAgIDs7IHJ2
YWxldmVyIGlzIG5pbC4gIElzIHRoYXQgcmlnaHQ/CiAgICAgIHJ2YWwpKSkKCihkZWZ1biBlaWVp
b210LW1ldGhvZC1saXN0IChtZXRob2Qga2V5IGNsYXNzKQogICJSZXR1cm4gYW4gYWxpc3QgbGlz
dCBvZiBtZXRob2RzIGxhbWJkYXMuCk1FVEhPRCBpcyB0aGUgbWV0aG9kIG5hbWUuCktFWSByZXBy
ZXNlbnRzIGVpdGhlciA6QkVGT1JFLCBvciA6QUZURVIgbWV0aG9kcy4KQ0xBU1MgaXMgdGhlIHN0
YXJ0aW5nIGNsYXNzIHRvIHNlYXJjaCBmcm9tIGluIHRoZSBtZXRob2QgdHJlZS4iCiAgKGxldCAo
KGxhbWJkYXMgbmlsKQoJKG1jbGFzcyAobGlzdCBjbGFzcykpKQogICAgKHdoaWxlIG1jbGFzcwog
ICAgICAod2hlbiAoY2FyIG1jbGFzcykKCTs7IGxvb2t1cCB0aGUgZm9ybSB0byB1c2UgZm9yIHRo
ZSBQUklNQVJZIG9iamVjdCBmb3IgdGhlIG5leHQgbGV2ZWwKCShsZXQgKCh0bXBsIChlaWVpby1n
ZW5lcmljLWZvcm0gbWV0aG9kIGtleSAoY2FyIG1jbGFzcykpKSkKCSAgKHdoZW4gKG9yIChub3Qg
bGFtYmRhcykgCgkJICAgIDs7IFRoaXMgcHJldmVudHMgZHVwbGljYXRlcyBjb21pbmcgb3V0IG9m
IHRoZQoJCSAgICA7OyBjbGFzcyBtZXRob2Qgb3B0aW1pemVyLiAgUGVyaGFwcyB3ZSBzaG91bGQK
CQkgICAgOzsganVzdCBub3Qgb3B0aW1pemUgYmVmb3JlL2FmdGVycz8KCQkgICAgKG5vdCAoZXEg
KGNhciB0bXBsKSAoY2FyIChjYXIgbGFtYmRhcykpKSkpCgkgICAgKHNldHEgbGFtYmRhcyAoY29u
cyB0bXBsIGxhbWJkYXMpKQoJICAgIChpZiAobnVsbCAoY2FyIGxhbWJkYXMpKQoJCShzZXRxIGxh
bWJkYXMgKGNkciBsYW1iZGFzKSkpKSkpCiAgICAgIDs7IEFkZCBuZXcgY2xhc3NlcyB0byBtY2xh
c3MKICAgICAgKHNldHEgbWNsYXNzIChhcHBlbmQgKGNkciBtY2xhc3MpIChlaWVpb210LW5leHQg
KGNhciBtY2xhc3MpKSkpCiAgICAgICkKICAgIChpZiAoZXEga2V5IG1ldGhvZC1hZnRlcikKCWxh
bWJkYXMKICAgICAgKG5yZXZlcnNlIGxhbWJkYXMpKSkpCgooZGVmdW4gbmV4dC1tZXRob2QtcCAo
KQogICJSZXR1cm4gYSBsaXN0IG9mIGxhbWJkYXMgd2hpY2ggcXVhbGlmeSBhcyB0aGUgYG5leHQt
bWV0aG9kJy4iCiAgZWllaW8tZ2VuZXJpYy1jYWxsLW5leHQtbWV0aG9kLWxpc3QpCgooZGVmdW4g
Y2FsbC1uZXh0LW1ldGhvZCAoJnJlc3QgcmVwbGFjZW1lbnQtYXJncykKICAiQ2FsbCB0aGUgbmV4
dCBsb2dpY2FsIG1ldGhvZCBmcm9tIGFub3RoZXIgbWV0aG9kLgpUaGUgbmV4dCBsb2dpY2FsIG1l
dGhvZCBpcyB0aGUgbWV0aG9kIGJlbG9uZyB0byB0aGUgcGFyZW50IGNsYXNzIG9mCnRoZSBjdXJy
ZW50bHkgcnVubmluZyBtZXRob2QuICBJZiBSRVBMQUNFTUVOVC1BUkdTIGlzIG5vbi1uaWwsIHRo
ZW4KdXNlIHRoZW0gaW5zdGVhZCBvZiBgZWllaW8tZ2VuZXJpYy1jYWxsLWFyZ2xzdCcuICBUaGUg
Z2VuZXJpYyBhcmcgbGlzdAphcmUgdGhlIGFyZ3VtZW50cyBwYXNzZWQgaW4gYXQgdGhlIHRvcCBs
ZXZlbC4iCiAgKGlmIChub3Qgc2NvcGVkLWNsYXNzKQogICAgICAoZXJyb3IgIkNhbGwtbmV4dC1t
ZXRob2Qgbm90IGNhbGxlZCB3aXRoaW4gYSBjbGFzcyBzcGVjaWZpYyBtZXRob2QiKSkKICAoaWYg
KGFuZCAoLz0gZWllaW8tZ2VuZXJpYy1jYWxsLWtleSBtZXRob2QtcHJpbWFyeSkKCSAgICgvPSBl
aWVpby1nZW5lcmljLWNhbGwta2V5IG1ldGhvZC1zdGF0aWMpKQogICAgICAoZXJyb3IgIkNhbm5v
dCBgY2FsbC1uZXh0LW1ldGhvZCcgZXhjZXB0IGluIDpQUklNQVJZIG9yIDpTVEFUSUMgbWV0aG9k
cyIpCiAgICApCiAgKGxldCAoKG5ld2FyZ3MgKG9yIHJlcGxhY2VtZW50LWFyZ3MgZWllaW8tZ2Vu
ZXJpYy1jYWxsLWFyZ2xzdCkpCgkobmV4dCAoY2FyIGVpZWlvLWdlbmVyaWMtY2FsbC1uZXh0LW1l
dGhvZC1saXN0KSkKCShyZXR1cm52YWwgbmlsKQoJKQogICAgKGlmIChvciAobm90IG5leHQpIChu
b3QgKGNhciBuZXh0KSkpCgkobm8tbmV4dC1tZXRob2QgKGNhciBuZXdhcmdzKSkKICAgICAgKGxl
dCogKChlaWVpby1nZW5lcmljLWNhbGwtbmV4dC1tZXRob2QtbGlzdAoJICAgICAgKGNkciBlaWVp
by1nZW5lcmljLWNhbGwtbmV4dC1tZXRob2QtbGlzdCkpCgkgICAgIChzY29wZWQtY2xhc3MgKGNk
ciBuZXh0KSkKCSAgICAgKGZjbiAoY2FyIG5leHQpKQoJICAgICApCgkoYXBwbHkgZmNuIG5ld2Fy
Z3MpCgkpKSkpCgwKOzs7Cjs7IGVpZWlvLW1ldGhvZC10cmVlIDogZWllaW9tdC0KOzsKOzsgU3Rv
cmVkIGFzIGVpZWlvLW1ldGhvZC10cmVlIGluIHByb3BlcnR5IGxpc3Qgb2YgYSBnZW5lcmljIG1l
dGhvZAo7Owo7OyAoZWllaW8tbWV0aG9kLXRyZWUgLiBbQkVGT1JFIFBSSU1BUlkgQUZURVIKOzsg
ICAgICAgICAgICAgICAgICAgICAgIGdlbmVyaWNCRUZPUkUgZ2VuZXJpY1BSSU1BUlkgZ2VuZXJp
Y0FGVEVSXSkKOzsgYW5kCjs7IChlaWVpby1tZXRob2Qtb2JhcnJheSAuIFtCRUZPUkUgUFJJTUFS
WSBBRlRFUgo7OyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY0JFRk9SRSBnZW5lcmlj
UFJJTUFSWSBnZW5lcmljQUZURVJdKQo7OyAgICB3aGVyZSB0aGUgYXNzb2NpYXRpb24gaXMgYSB2
ZWN0b3IuCjs7ICAgIChhcmVmIDAgIC0tIGFsbCBzdGF0aWMgbWV0aG9kcy4KOzsgICAgKGFyZWYg
MSAgLS0gYWxsIG1ldGhvZHMgY2xhc3NpZmllZCBhcyA6QkVGT1JFCjs7ICAgIChhcmVmIDIgIC0t
IGFsbCBtZXRob2RzIGNsYXNzaWZpZWQgYXMgOlBSSU1BUlkKOzsgICAgKGFyZWYgMyAgLS0gYWxs
IG1ldGhvZHMgY2xhc3NpZmllZCBhcyA6QUZURVIKOzsgICAgKGFyZWYgNCAgLS0gYSBnZW5lcmlj
IGNsYXNzaWZpZWQgYXMgOkJFRk9SRQo7OyAgICAoYXJlZiA1ICAtLSBhIGdlbmVyaWMgY2xhc3Np
ZmllZCBhcyA6UFJJTUFSWQo7OyAgICAoYXJlZiA2ICAtLSBhIGdlbmVyaWMgY2xhc3NpZmllZCBh
cyA6QUZURVIKOzsKKGRlZnZhciBlaWVpb210LW9wdGltaXppbmctb2JhcnJheSBuaWwKICAiV2hp
bGUgbWFwcGluZyBhdG9tcywgdGhpcyBjb250YWluIHRoZSBvYmFycmF5IGJlaW5nIG9wdGltaXpl
ZC4iKQoKKGRlZnVuIGVpZWlvbXQtaW5zdGFsbCAobWV0aG9kLW5hbWUpCiAgIkluc3RhbGwgdGhl
IG1ldGhvZCB0cmVlLCBhbmQgb2JhcnJheSBvbnRvIE1FVEhPRC1OQU1FLgpEbyBub3QgZG8gdGhl
IHdvcmsgaWYgdGhleSBhbHJlYWR5IGV4aXN0LiIKICAobGV0ICgoZW10diAoZ2V0IG1ldGhvZC1u
YW1lICdlaWVpby1tZXRob2QtdHJlZSkpCgkoZW10byAoZ2V0IG1ldGhvZC1uYW1lICdlaWVpby1t
ZXRob2Qtb2JhcnJheSkpKQogICAgKGlmIChvciAobm90IGVtdHYpIChub3QgZW10bykpCgkocHJv
Z24KCSAgKHNldHEgZW10diAocHV0IG1ldGhvZC1uYW1lICdlaWVpby1tZXRob2QtdHJlZQoJCQkg
IChtYWtlLXZlY3RvciBtZXRob2QtbnVtLWZpZWxkcyBuaWwpKQoJCWVtdG8gKHB1dCBtZXRob2Qt
bmFtZSAnZWllaW8tbWV0aG9kLW9iYXJyYXkKCQkJICAobWFrZS12ZWN0b3IgbWV0aG9kLW51bS1m
aWVsZHMgbmlsKSkpCgkgIChhc2V0IGVtdG8gMCAobWFrZS12ZWN0b3IgMTEgMCkpCgkgIChhc2V0
IGVtdG8gMSAobWFrZS12ZWN0b3IgMTEgMCkpCgkgIChhc2V0IGVtdG8gMiAobWFrZS12ZWN0b3Ig
NDEgMCkpCgkgIChhc2V0IGVtdG8gMyAobWFrZS12ZWN0b3IgMTEgMCkpCgkgICkpKSkKCihkZWZ1
biBlaWVpb210LWFkZCAobWV0aG9kLW5hbWUgbWV0aG9kIGtleSBjbGFzcykKICAiQWRkIHRvIE1F
VEhPRC1OQU1FIHRoZSBmb3JtcyBNRVRIT0QgaW4gYSBjYWxsIHBvc2l0aW9uIEtFWSBmb3IgQ0xB
U1MuCk1FVEhPRC1OQU1FIGlzIHRoZSBuYW1lIGNyZWF0ZWQgYnkgYSBjYWxsIHRvIGBkZWZnZW5l
cmljJy4KTUVUSE9EIGFyZSB0aGUgZm9ybXMgZm9yIGEgZ2l2ZW4gaW1wbGVtZW50YXRpb24uCktF
WSBpcyBhbiBpbnRlZ2VyIChzZWUgY29tbWVudCBpbiBlaWVpby5lbCBuZWFyIHRoaXMgZnVuY3Rp
b24pIHdoaWNoCmlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgOlNUQVRJQyA6QkVGT1JFIDpQUklNQVJZ
IGFuZCA6QUZURVIgdGFncy4KSXQgYWxzbyBpbmRpY2F0ZXMgaWYgQ0xBU1MgaXMgZGVmaW5lZCBv
ciBub3QuCkNMQVNTIGlzIHRoZSBjbGFzcyB0aGlzIG1ldGhvZCBpcyBhc3NvY2lhdGVkIHdpdGgu
IgogIChpZiAob3IgKD4ga2V5IG1ldGhvZC1udW0tZmllbGRzKSAoPCBrZXkgMCkpCiAgICAgIChl
cnJvciAiRWllaW9tdC1hZGQ6IG1ldGhvZCBrZXkgZXJyb3IhIikpCiAgKGxldCAoKGVtdHYgKGdl
dCBtZXRob2QtbmFtZSAnZWllaW8tbWV0aG9kLXRyZWUpKQoJKGVtdG8gKGdldCBtZXRob2QtbmFt
ZSAnZWllaW8tbWV0aG9kLW9iYXJyYXkpKSkKICAgIDs7IE1ha2Ugc3VyZSB0aGUgbWV0aG9kIHRh
YmxlcyBhcmUgYXZhaWxhYmxlLgogICAgKGlmIChvciAobm90IGVtdHYpIChub3QgZW10bykpCgko
ZXJyb3IgIlByb2dyYW1tZXIgZXJyb3I6IGVpZWlvbXQtYWRkIikpCiAgICA7OyBvbmx5IGFkZCBu
ZXcgY2VsbHMgb24gaWYgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0IQogICAgKGlmIChhc3NxIGNs
YXNzIChhcmVmIGVtdHYga2V5KSkKCShzZXRjZHIgKGFzc3EgY2xhc3MgKGFyZWYgZW10diBrZXkp
KSBtZXRob2QpCiAgICAgIChhc2V0IGVtdHYga2V5IChjb25zIChjb25zIGNsYXNzIG1ldGhvZCkg
KGFyZWYgZW10diBrZXkpKSkpCiAgICA7OyBBZGQgZnVuY3Rpb24gZGVmaW5pdGlvbiBpbnRvIG5l
d2x5IGNyZWF0ZWQgc3ltYm9sLCBhbmQgc3RvcmUKICAgIDs7IHNhaWQgc3ltYm9sIGluIHRoZSBj
b3JyZWN0IG9iYXJyYXksIG90aGVyd2lzZSB1c2UgdGhlCiAgICA7OyBvdGhlciBhcnJheSB0byBr
ZWVwIHRoaXMgc3R1ZmYKICAgIChpZiAoPCBrZXkgbWV0aG9kLW51bS1saXN0cykKCShsZXQgKChu
c3ltIChpbnRlcm4gKHN5bWJvbC1uYW1lIGNsYXNzKSAoYXJlZiBlbXRvIGtleSkpKSkKCSAgKGZz
ZXQgbnN5bSBtZXRob2QpKSkKICAgIDs7IE5vdyBvcHRpbWl6ZSB0aGUgZW50aXJlIG9iYXJyYXkK
ICAgIChpZiAoPCBrZXkgbWV0aG9kLW51bS1saXN0cykKCShsZXQgKChlaWVpb210LW9wdGltaXpp
bmctb2JhcnJheSAoYXJlZiBlbXRvIGtleSkpKQoJICAobWFwYXRvbXMgJ2VpZWlvbXQtc3ltLW9w
dGltaXplIGVpZWlvbXQtb3B0aW1pemluZy1vYmFycmF5KSkpCiAgICApKQoKKGRlZnVuIGVpZWlv
bXQtbmV4dCAoY2xhc3MpCiAgIlJldHVybiB0aGUgbmV4dCBwYXJlbnQgY2xhc3MgZm9yIENMQVNT
LgpJZiBDTEFTUyBpcyBhIHN1cGVyY2xhc3MsIHJldHVybiB2YXJpYWJsZSBgZWllaW8tZGVmYXVs
dC1zdXBlcmNsYXNzJy4gIElmIENMQVNTCmlzIHZhcmlhYmxlIGBlaWVpby1kZWZhdWx0LXN1cGVy
Y2xhc3MnIHRoZW4gcmV0dXJuIG5pbC4gIFRoaXMgaXMgZGlmZmVyZW50IGZyb20KZnVuY3Rpb24g
YGNsYXNzLXBhcmVudCcgYXMgY2xhc3MgcGFyZW50IHJldHVybnMgbmlsIGZvciBzdXBlcmNsYXNz
ZXMuICBUaGlzCmZ1bmN0aW9uIHBlcmZvcm1zIG5vIHR5cGUgY2hlY2tpbmchIgogIDs7IE5vIHR5
cGUtY2hlY2tpbmcgYmVjYXVzZSBhbGwgY2FsbHMgYXJlIG1hZGUgZnJvbSBmdW5jdGlvbnMgd2hp
Y2gKICA7OyBhcmUgc2FmZSBhbmQgZG8gY2hlY2tpbmcgZm9yIHVzLgogIChvciAoY2xhc3MtcGFy
ZW50cy1mYXN0IGNsYXNzKQogICAgICAoaWYgKGVxIGNsYXNzICdlaWVpby1kZWZhdWx0LXN1cGVy
Y2xhc3MpCgkgIG5pbAoJJyhlaWVpby1kZWZhdWx0LXN1cGVyY2xhc3MpKSkpCgooZGVmdW4gZWll
aW9tdC1zeW0tb3B0aW1pemUgKHMpCiAgIkZpbmQgdGhlIG5leHQgY2xhc3MgYWJvdmUgUyB3aGlj
aCBoYXMgYSBmdW5jdGlvbiBib2R5IGZvciB0aGUgb3B0aW1pemVyLiIKICA7OyAobWVzc2FnZSAi
T3B0aW1pemluZyAlUyIgcykKICAobGV0ICgoZXMgKGludGVybi1zb2Z0IChzeW1ib2wtbmFtZSBz
KSkpIDtleHRlcm5hbCBzeW1ib2wgb2YgY2xhc3MKCShvdiBuaWwpCgkoY29udCB0KSkKICAgIDs7
IFRoaXMgY29udmVydHMgRVMgZnJvbSBhIHNpbmdsZSBzeW1ib2wgdG8gYSBsaXN0IG9mIHBhcmVu
dCBjbGFzc2VzLgogICAgKHNldHEgZXMgKGVpZWlvbXQtbmV4dCBlcykpCiAgICA7OyBMb29wIG92
ZXIgRVMsIHRoZW4gaXQncyBjaGlsZHJlbiBpbmRpdmlkdWFsbHkuCiAgICA7OyBXZSBjYW4gaGF2
ZSBtdWx0aXBsZSBoaXRzIG9ubHkgYXQgb25lIGxldmVsIG9mIHRoZSBwYXJlbnQgdHJlZS4KICAg
ICh3aGlsZSAoYW5kIGVzIGNvbnQpCiAgICAgIChzZXRxIG92IChpbnRlcm4tc29mdCAoc3ltYm9s
LW5hbWUgKGNhciBlcykpIGVpZWlvbXQtb3B0aW1pemluZy1vYmFycmF5KSkKICAgICAgKGlmIChm
Ym91bmRwIG92KQoJICAocHJvZ24KCSAgICAoc2V0IHMgb3YpCQkJO3N0b3JlIG92IGFzIG91ciBu
ZXh0IHN5bWJvbAoJICAgIChzZXRxIGNvbnQgbmlsKSkKCShzZXRxIGVzIChhcHBlbmQgKGNkciBl
cykgKGVpZWlvbXQtbmV4dCAoY2FyIGVzKSkpKSkpCiAgICA7OyBJZiB0aGVyZSBpcyBubyBuZWFy
ZXN0IGNhbGwsIHRoZW4gc2V0IG91ciB2YWx1ZSB0byBuaWwKICAgIChpZiAobm90IGVzKSAoc2V0
IHMgbmlsKSkKICAgICkpCgooZGVmdW4gZWllaW8tZ2VuZXJpYy1mb3JtIChtZXRob2Qga2V5IGNs
YXNzKQogIlJldHVybiB0aGUgbGFtYmRhIGZvcm0gYmVsb25naW5nIHRvIE1FVEhPRCB1c2luZyBL
RVkgYmFzZWQgdXBvbiBDTEFTUy4KSWYgQ0xBU1MgaXMgbm90IGEgY2xhc3MgdGhlbiB1c2UgYGdl
bmVyaWMnIGluc3RlYWQuICBJZiBjbGFzcyBoYXMgbm8KZm9ybSwgYnV0IGhhcyBhIHBhcmVudCBj
bGFzcywgdGhlbiB0cmFjZSB0byB0aGF0IHBhcmVudCBjbGFzcy4gIFRoZQpmaXJzdCB0aW1lIGEg
Zm9ybSBpcyByZXF1ZXN0ZWQgZnJvbSBhIHN5bWJvbCwgYW4gb3B0aW1pemVkIHBhdGggaXMKbWVt
b2l6ZWQgZm9yIGZ1dHVyZSBmYXN0ZXIgdXNlLiIKIChsZXQgKChlbXRvIChhcmVmIChnZXQgbWV0
aG9kICdlaWVpby1tZXRob2Qtb2JhcnJheSkKCQkgICAoaWYgY2xhc3Mga2V5ICgrIGtleSAzKSkp
KSkKICAgKGlmIChjbGFzcy1wIGNsYXNzKQogICAgICAgOzsgMSkgZmluZCBvdXIgc3ltYm9sCiAg
ICAgICAobGV0ICgoY3MgKGludGVybi1zb2Z0IChzeW1ib2wtbmFtZSBjbGFzcykgZW10bykpKQoJ
IChpZiAobm90IGNzKQoJICAgICA7OyAyKSBJZiB0aGVyZSBpc24ndCBvbmUsIHRoZW4gbWFrZSBv
bmUuCgkgICAgIDs7ICAgIFRoaXMgY2FuIGJlIHNsb3cgc2luY2UgaXQgb25seSBvY2N1cnMgb25j
ZQoJICAgICAocHJvZ24KCSAgICAgICAoc2V0cSBjcyAoaW50ZXJuIChzeW1ib2wtbmFtZSBjbGFz
cykgZW10bykpCgkgICAgICAgOzsgMi4xKSBDYWNoZSBpdCdzIG5lYXJlc3QgbmVpZ2hib3Igd2l0
aCBhIHF1aWNrIG9wdGltaXplCgkgICAgICAgOzsgICAgICB3aGljaCBzaG91bGQgb25seSBvY2N1
ciBvbmNlIGZvciB0aGlzIGNhbGwgZXZlcgoJICAgICAgIChsZXQgKChlaWVpb210LW9wdGltaXpp
bmctb2JhcnJheSBlbXRvKSkKCQkgKGVpZWlvbXQtc3ltLW9wdGltaXplIGNzKSkpKQoJIDs7IDMp
IElmIGl0J3MgYm91bmQgcmV0dXJuIHRoaXMgb25lLgoJIChpZiAoZmJvdW5kcCAgY3MpCgkgICAg
IChjb25zIGNzIChhcmVmIChjbGFzcy12IGNsYXNzKSBjbGFzcy1zeW1ib2wpKQoJICAgOzsgNCkg
SWYgaXQncyBub3QgYm91bmQgdGhlbiB0aGlzIHZhcmlhYmxlIGtub3dzIHNvbWV0aGluZwoJICAg
KGlmIChzeW1ib2wtdmFsdWUgY3MpCgkgICAgICAgKHByb2duCgkJIDs7IDQuMSkgVGhpcyBzeW1i
b2wgaG9sZHMgdGhlIG5leHQgY2xhc3MgaW4gaXQncyB2YWx1ZQoJCSAoc2V0cSBjbGFzcyAoc3lt
Ym9sLXZhbHVlIGNzKQoJCSAgICAgICBjcyAoaW50ZXJuLXNvZnQgKHN5bWJvbC1uYW1lIGNsYXNz
KSBlbXRvKSkKCQkgOzsgNC4yKSBUaGUgb3B0aW1pemVyIHNob3VsZCBhbHdheXMgaGF2ZSBjaG9z
ZW4gYQoJCSA7OyAgICAgIGZ1bmN0aW9uLXN5bWJvbAoJCSA7OyhpZiAoZmJvdW5kcCBjcykKCQkg
KGNvbnMgY3MgKGFyZWYgKGNsYXNzLXYgKGludGVybiAoc3ltYm9sLW5hbWUgY2xhc3MpKSkKCQkJ
CWNsYXNzLXN5bWJvbCkpCgkJICAgOzsoZXJyb3IgIkVJRUlPIG9wdGltaXplcjogZXJyYXRpYyBk
YXRhIGxvc3MhIikpCgkJICkKCSAgICAgICA7OyBUaGVyZSBuZXZlciB3aWxsIGJlIGEgZnVuY2Fs
bC4uLgoJICAgICAgIG5pbCkpKQogICAgIDs7IGZvciBhIGdlbmVyaWMgY2FsbCwgd2hhdCBpcyBh
IGxpc3QsIGlzIHRoZSBmdW5jdGlvbiBib2R5IHdlIHdhbnQuCiAgICAgKGxldCAoKGVtdGwgKGFy
ZWYgKGdldCBtZXRob2QgJ2VpZWlvLW1ldGhvZC10cmVlKQoJCSAgICAgICAoaWYgY2xhc3Mga2V5
ICgrIGtleSAzKSkpKSkKICAgICAgIChpZiBlbXRsCgkgICA7OyBUaGUgY2FyIG9mIEVNVEwgaXMg
c3VwcG9zZWQgdG8gYmUgYSBjbGFzcywgd2hpY2ggaW4gdGhpcwoJICAgOzsgY2FzZSBpcyBuaWws
IHNvIHNraXAgaXQuCgkgICAoY29ucyAoY2RyIChjYXIgZW10bCkpIG5pbCkKCSBuaWwpKSkpKQoK
Ozs7Cjs7IFdheSB0byBhc3NpZ24gZmllbGRzIGJhc2VkIG9uIGEgbGlzdC4gIFVzZWQgZm9yIGNv
bnN0cnVjdG9ycywgb3IKOzsgZXZlbiByZXNldHRpbmcgYW4gb2JqZWN0IGF0IHJ1bi10aW1lCjs7
CihkZWZ1biBlaWVpby1zZXQtZGVmYXVsdHMgKG9iaiAmb3B0aW9uYWwgc2V0LWFsbCkKICAiVGFr
ZSBvYmplY3QgT0JKLCBhbmQgcmVzZXQgYWxsIGZpZWxkcyB0byB0aGVpciBkZWZhdWx0cy4KSWYg
U0VULUFMTCBpcyBub24tbmlsLCB0aGVuIHdoZW4gYSBkZWZhdWx0IGlzIG5pbCwgdGhhdCB2YWx1
ZSBpcwpyZXNldC4gIElmIFNFVC1BTEwgaXMgbmlsLCB0aGUgZmllbGRzIGFyZSBvbmx5IHJlc2V0
IGlmIHRoZSBkZWZhdWx0IGlzCm5vdCBuaWwuIgogIChsZXQgKChzY29wZWQtY2xhc3MgKGFyZWYg
b2JqIG9iamVjdC1jbGFzcykpCgkoZWllaW8taW5pdGlhbGl6aW5nLW9iamVjdCB0KQoJKHB1YiAo
YXJlZiAoY2xhc3MtdiAoYXJlZiBvYmogb2JqZWN0LWNsYXNzKSkgY2xhc3MtcHVibGljLWEpKSkK
ICAgICh3aGlsZSBwdWIKICAgICAgKGxldCAoKGRmIChlaWVpby1vcmVmLWRlZmF1bHQgb2JqIChj
YXIgcHViKSkpKQoJKGlmIChhbmQgKGxpc3RwIGRmKSAoZXEgKGNhciBkZikgJ2xhbWJkYS1kZWZh
dWx0KSkKCSAgICAocHJvZ24KCSAgICAgIChzZXRxIGRmIChjb3B5LXNlcXVlbmNlIGRmKSkKCSAg
ICAgIChzZXRjYXIgZGYgJ2xhbWJkYSkpKQoJKGlmIChvciBkZiBzZXQtYWxsKQoJICAgIChlaWVp
by1vc2V0IG9iaiAoY2FyIHB1YikgZGYpKSkKICAgICAgKHNldHEgcHViIChjZHIgcHViKSkpKSkK
CihkZWZ1biBlaWVpby1pbml0YXJnLXRvLWF0dHJpYnV0ZSAoY2xhc3MgaW5pdGFyZykKICAiRm9y
IENMQVNTLCBjb252ZXJ0IElOSVRBUkcgdG8gdGhlIGFjdHVhbCBhdHRyaWJ1dGUgbmFtZS4KSWYg
dGhlcmUgaXMgbm8gdHJhbnNsYXRpb24sIHBhc3MgaXQgaW4gZGlyZWN0bHkgKHNvIHdlIGNhbiBj
aGVhdCBpZgpuZWVkIGJlLi4gTWF5IHJlbW92ZSB0aGF0IGxhdGVyLi4uKSIKICAobGV0ICgodHVw
bGUgKGFzc29jIGluaXRhcmcgKGFyZWYgKGNsYXNzLXYgY2xhc3MpIGNsYXNzLWluaXRhcmctdHVw
bGVzKSkpKQogICAgKGlmIHR1cGxlCgkoY2RyIHR1cGxlKQogICAgICBuaWwpKSkKCihkZWZ1biBl
aWVpby1hdHRyaWJ1dGUtdG8taW5pdGFyZyAoY2xhc3MgYXR0cmlidXRlKQogICJJbiBDTEFTUywg
Y29udmVydCB0aGUgQVRUUklCVVRFIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgaW5pdCBhcmd1bWVu
dCB0YWcuClRoaXMgaXMgdXN1YWxseSBhIHN5bWJvbCB0aGF0IHN0YXJ0cyB3aXRoIGA6Jy4iCiAg
KGxldCAoKHR1cGxlIChyYXNzb2MgYXR0cmlidXRlIChhcmVmIChjbGFzcy12IGNsYXNzKSBjbGFz
cy1pbml0YXJnLXR1cGxlcykpKSkKICAgIChpZiB0dXBsZQoJKGNhciB0dXBsZSkKICAgICAgbmls
KSkpCgoMCjs7OyBIZXJlIGFyZSBzb21lIHNwZWNpYWwgdHlwZXMgb2YgZXJyb3JzCjs7CihpbnRl
cm4gIm5vLW1ldGhvZC1kZWZpbml0aW9uIikKKHB1dCAnbm8tbWV0aG9kLWRlZmluaXRpb24gJ2Vy
cm9yLWNvbmRpdGlvbnMgJyhuby1tZXRob2QtZGVmaW5pdGlvbiBlcnJvcikpCihwdXQgJ25vLW1l
dGhvZC1kZWZpbml0aW9uICdlcnJvci1tZXNzYWdlICJObyBtZXRob2QgZGVmaW5pdGlvbiIpCgoo
aW50ZXJuICJuby1uZXh0LW1ldGhvZCIpCihwdXQgJ25vLW5leHQtbWV0aG9kICdlcnJvci1jb25k
aXRpb25zICcobm8tbmV4dC1tZXRob2QgZXJyb3IpKQoocHV0ICduby1uZXh0LW1ldGhvZCAnZXJy
b3ItbWVzc2FnZSAiTm8gbmV4dCBtZXRob2QiKQoKKGludGVybiAiaW52YWxpZC1zbG90LW5hbWUi
KQoocHV0ICdpbnZhbGlkLXNsb3QtbmFtZSAnZXJyb3ItY29uZGl0aW9ucyAnKGludmFsaWQtc2xv
dC1uYW1lIGVycm9yKSkKKHB1dCAnaW52YWxpZC1zbG90LW5hbWUgJ2Vycm9yLW1lc3NhZ2UgIklu
dmFsaWQgc2xvdCBuYW1lIikKCihpbnRlcm4gImludmFsaWQtc2xvdC10eXBlIikKKHB1dCAnaW52
YWxpZC1zbG90LXR5cGUgJ2Vycm9yLWNvbmRpdGlvbnMgJyhpbnZhbGlkLXNsb3QtdHlwZSBlcnJv
ciBuaWwpKQoocHV0ICdpbnZhbGlkLXNsb3QtdHlwZSAnZXJyb3ItbWVzc2FnZSAiSW52YWxpZCBz
bG90IHR5cGUiKQoKKGludGVybiAidW5ib3VuZC1zbG90IikKKHB1dCAndW5ib3VuZC1zbG90ICdl
cnJvci1jb25kaXRpb25zICcodW5ib3VuZC1zbG90IGVycm9yIG5pbCkpCihwdXQgJ3VuYm91bmQt
c2xvdCAnZXJyb3ItbWVzc2FnZSAiVW5ib3VuZCBzbG90IikKCjs7OyBIZXJlIGFyZSBzb21lIENM
T1MgaXRlbXMgdGhhdCBuZWVkIHRoZSBDTCBwYWNrYWdlCjs7CgooZGVmc2V0ZiBzbG90LXZhbHVl
IChvYmogZmllbGQpIChzdG9yZSkgKGxpc3QgJ2VpZWlvLW9zZXQgb2JqIGZpZWxkIHN0b3JlKSkK
KGRlZnNldGYgZWllaW8tb3JlZiAob2JqIGZpZWxkKSAoc3RvcmUpIChsaXN0ICdlaWVpby1vc2V0
IG9iaiBmaWVsZCBzdG9yZSkpCgo7OyBUaGUgYmVsb3cgc2V0ZiBtZXRob2Qgd2FzIHdyaXR0ZW4g
YnkgQXJuZCBLb2hycyA8a29ocnNAYWNtLm9yZz4KKGRlZmluZS1zZXRmLW1ldGhvZCBvcmVmIChv
YmogZmllbGQpIAogIChsZXQgKChvYmotdGVtcCAoZ2Vuc3ltKSkgCgkoZmllbGQtdGVtcCAoZ2Vu
c3ltKSkgCgkoc3RvcmUtdGVtcCAoZ2Vuc3ltKSkpIAogICAgKGxpc3QgKGxpc3Qgb2JqLXRlbXAg
ZmllbGQtdGVtcCkgCgkgIChsaXN0IG9iaiBgKHF1b3RlICxmaWVsZCkpIAoJICAobGlzdCBzdG9y
ZS10ZW1wKSAKCSAgKGxpc3QgJ3NldC1zbG90LXZhbHVlIG9iai10ZW1wIGZpZWxkLXRlbXAKCQlz
dG9yZS10ZW1wKQoJICAobGlzdCAnc2xvdC12YWx1ZSBvYmotdGVtcCBmaWVsZC10ZW1wKSkpKQoK
DAo7OzsKOzsgV2Ugd2FudCBhbGwgb2JqZWN0cyBjcmVhdGVkIGJ5IEVJRUlPIHRvIGhhdmUgc29t
ZSBkZWZhdWx0IHNldCBvZgo7OyBiZWhhdmlvdXJzIHNvIHdlIGNhbiBjcmVhdGUgb2JqZWN0IHV0
aWxpdGllcywgYW5kIGFsbG93IHZhcmlvdXMKOzsgdHlwZXMgb2YgZXJyb3IgY2hlY2tpbmcuICBU
byBkbyB0aGlzLCBjcmVhdGUgdGhlIGRlZmF1bHQgRUlFSU8KOzsgY2xhc3MsIGFuZCB3aGVuIG5v
IHBhcmVudCBjbGFzcyBpcyBzcGVjaWZpZWQsIHVzZSB0aGlzIGFzIHRoZQo7OyBkZWZhdWx0LiAg
KEJ1dCBkb24ndCBzdG9yZSBpdCBpbiB0aGUgb3RoZXIgY2xhc3NlcyBhcyB0aGUgZGVmYXVsdCwK
OzsgYWxsb3dpbmcgZm9yIHRyYW5zcGFyZW50IHN1cHBvcnQuKQo7OwoKKGRlZmNsYXNzIGVpZWlv
LWRlZmF1bHQtc3VwZXJjbGFzcyBuaWwKICBuaWwKICAiRGVmYXVsdCBjbGFzcyB1c2VkIGFzIHBh
cmVudCBjbGFzcyBmb3Igc3VwZXJjbGFzc2VzLgpJdHMgZmllbGRzIGFyZSBhdXRvbWF0aWNhbGx5
IGFkb3B0ZWQgYnkgc3VjaCBzdXBlcmNsYXNzZXMgYnV0IG5vdApzdG9yZWQgaW4gdGhlIGBwYXJl
bnQnIGZpZWxkLiAgV2hlbiBzZWFyY2hpbmcgZm9yIGF0dHJpYnV0ZXMgb3IKbWV0aG9kcywgd2hl
biB0aGUgbGFzdCBwYXJlbnQgaXMgZm91bmQsIHRoZSBzZWFyY2ggd2lsbCByZWN1cnNlIHRvCnRo
aXMgY2xhc3MuIgogIDphYnN0cmFjdCB0KQoKKGRlZmFsaWFzICdzdGFuZGFyZC1jbGFzcyAnZWll
aW8tZGVmYXVsdC1zdXBlcmNsYXNzKQoKKGRlZm1ldGhvZCBjb25zdHJ1Y3RvciA6U1RBVElDCiAg
KChjbGFzcyBlaWVpby1kZWZhdWx0LXN1cGVyY2xhc3MpIG5ld25hbWUgJnJlc3QgZmllbGRzKQog
ICJEZWZhdWx0IGNvbnN0cnVjdG9yIGZvciBDTEFTUyBgZWllaW8tZGVmdWFsdC1zdXBlcmNsYXNz
Jy4KTkVXTkFNRSBpcyB0aGUgbmFtZSB0byBiZSBnaXZlbiB0byB0aGUgY29uc3RydWN0ZWQgb2Jq
ZWN0LgpGSUVMRFMgYXJlIHRoZSBpbml0aWFsaXphdGlvbiBmaWVsZHMgdXNlZCBieSBgc2hhcmVk
LWluaXRpYWxpemUnLgpUaGlzIHN0YXRpYyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gb2JqZWN0
IGlzIGNvbnN0cnVjdGVkLgpJdCBhbGxvY2F0ZXMgdGhlIHZlY3RvciB1c2VkIHRvIHJlcHJlc2Vu
dCBhbiBFSUVJTyBvYmplY3QsIGFuZCB0aGVuCmNhbGxzIGBzaGFyZWQtaW5pdGlhbGl6ZScgb24g
dGhhdCBvYmplY3QuIgogIChsZXQqICgobmV3LW9iamVjdCAoY29weS1zZXF1ZW5jZSAoYXJlZiAo
Y2xhc3MtdiBjbGFzcykKCQkJCQkgIGNsYXNzLWRlZmF1bHQtb2JqZWN0LWNhY2hlKSkpKQogICAg
OzsgVXBkYXRlIHRoZSBuYW1lIGZvciB0aGUgbmV3bHkgY3JlYXRlZCBvYmplY3QuCiAgICAoYXNl
dCBuZXctb2JqZWN0IG9iamVjdC1uYW1lIG5ld25hbWUpCiAgICA7OyBDYWxsIHRoZSBpbml0aWFs
aXplIG1ldGhvZCBvbiB0aGUgbmV3IG9iamVjdCB3aXRoIHRoZSBmaWVsZHMKICAgIDs7IHRoYXQg
d2VyZSBwYXNzZWQgZG93biB0byB1cy4KICAgIChpbml0aWFsaXplLWluc3RhbmNlIG5ldy1vYmpl
Y3QgZmllbGRzKQogICAgOzsgUmV0dXJuIHRoZSBjcmVhdGVkIG9iamVjdC4KICAgIG5ldy1vYmpl
Y3QpKQoKKGRlZm1ldGhvZCBzaGFyZWQtaW5pdGlhbGl6ZSAoKG9iaiBlaWVpby1kZWZhdWx0LXN1
cGVyY2xhc3MpIGZpZWxkcykKICAiU2V0IGZpZWxkcyBvZiBPQkogd2l0aCBGSUVMRFMgd2hpY2gg
aXMgYSBsaXN0IG9mIG5hbWUvdmFsdWUgcGFpcnMuCkNhbGxlZCBmcm9tIHRoZSBjb25zdHJ1Y3Rv
ciByb3V0aW5lLiIKICAobGV0ICgoc2NvcGVkLWNsYXNzIChhcmVmIG9iaiBvYmplY3QtY2xhc3Mp
KSkKICAgICh3aGlsZSBmaWVsZHMKICAgICAgKGxldCAoKHJuIChlaWVpby1pbml0YXJnLXRvLWF0
dHJpYnV0ZSAob2JqZWN0LWNsYXNzLWZhc3Qgb2JqKQoJCQkJCSAgICAoY2FyIGZpZWxkcykpKSkK
CShpZiAobm90IHJuKQoJICAgIChzbG90LW1pc3Npbmcgb2JqIChjYXIgZmllbGRzKSAnb3NldCAo
Y2FyIChjZHIgZmllbGRzKSkpKQoJKGVpZWlvLW9zZXQgb2JqIHJuIChjYXIgKGNkciBmaWVsZHMp
KSkpCiAgICAgIChzZXRxIGZpZWxkcyAoY2RyIChjZHIgZmllbGRzKSkpKSkpCgooZGVmbWV0aG9k
IGluaXRpYWxpemUtaW5zdGFuY2UgKCh0aGlzIGVpZWlvLWRlZmF1bHQtc3VwZXJjbGFzcykKCQkJ
CSZvcHRpb25hbCBmaWVsZHMpCiAgICAiQ29uc3RydWN0cyB0aGUgbmV3IG9iamVjdCBUSElTIGJh
c2VkIG9uIEZJRUxEUy4KRklFTERTIGlzIGEgdGFnZ2VkIGxpc3Qgd2hlcmUgb2RkIG51bWJlcmVk
IGVsZW1lbnRzIGFyZSB0YWdzLCBhbmQKZXZlbiBudW1iZXJlZCBlbGVtZW50cyBhcmUgdGhlIHZh
bHVlcyB0byBzdG9yZSBpbiB0aGUgdGFnZ2VkIHNsb3QuICBJZgp5b3Ugb3ZlcmxvYWQgdGhlIGBp
bml0aWFsaXplLWluc3RhbmNlJywgdGhlcmUgeW91IHdpbGwgbmVlZCB0byBjYWxsCmBzaGFyZWQt
aW5pdGlhbGl6ZScgeW91cnNlbGYsIG9yIHlvdSBjYW4gY2FsbCBgY2FsbC1uZXh0LW1ldGhvZCcg
dG8KaGF2ZSB0aGlzIGNvbnN0cnVjdG9yIGNhbGxlZCBhdXRvbWF0aWNhbGx5LiAgSWYgdGhlc2Ug
c3RlcHMgYXJlIG5vdAp0YWtlbiwgdGhlbiBuZXcgb2JqZWN0cyBvZiB5b3VyIGNsYXNzIHdpbGwg
bm90IGhhdmUgdGhlaXIgdmFsdWVzCmR5bmFtaWNhbGx5IHNldCBmcm9tIEZJRUxEUy4iCiAgICA7
OyBGaXJzdCwgc2VlIGlmIGFueSBvZiBvdXIgZGVmYXVsdHMgYXJlIGBsYW1iZGEnLCBhbmQKICAg
IDs7IHJlLWV2YWx1YXRlIHRoZW0gYW5kIGFwcGx5IHRoZSB2YWx1ZSB0byBvdXIgc2xvdHMuCiAg
ICAobGV0KiAoKHNjb3BlZC1jbGFzcyAoY2xhc3MtdiAoYXJlZiB0aGlzIG9iamVjdC1jbGFzcykp
KQoJICAgKHNsb3QgKGFyZWYgc2NvcGVkLWNsYXNzIGNsYXNzLXB1YmxpYy1hKSkKCSAgIChkZWZh
dWx0cyAoYXJlZiBzY29wZWQtY2xhc3MgY2xhc3MtcHVibGljLWQpKSkKICAgICAgKHdoaWxlIHNs
b3QKCShpZiAoYW5kIChsaXN0cCAoY2FyIGRlZmF1bHRzKSkKCQkgKGVxICdsYW1iZGEgKGNhciAo
Y2FyIGRlZmF1bHRzKSkpKQoJICAgIChlaWVpby1vc2V0IHRoaXMgKGNhciBzbG90KSAoZnVuY2Fs
bCAoY2FyIGRlZmF1bHRzKSkpKQoJKHNldHEgc2xvdCAoY2RyIHNsb3QpCgkgICAgICBkZWZhdWx0
cyAoY2RyIGRlZmF1bHRzKSkpKQogICAgOzsgU2hhcmVkIGluaXRpYWxpemUgd2lsbCBwYXJzZSBv
dXIgZmllbGRzIGZvciB1cy4KICAgIChzaGFyZWQtaW5pdGlhbGl6ZSB0aGlzIGZpZWxkcykpCgoo
ZGVmbWV0aG9kIHNsb3QtbWlzc2luZyAoKG9iamVjdCBlaWVpby1kZWZhdWx0LXN1cGVyY2xhc3Mp
IHNsb3QtbmFtZQoJCQkgb3BlcmF0aW9uICZvcHRpb25hbCBuZXctdmFsdWUpCiAgIlNsb3QgbWlz
c2luZyBpcyBpbnZva2VkIHdoZW4gYW4gYXR0ZW1wdCB0byBhY2Nlc3MgYSBzbG90IGluIE9CSkVD
VCBmYWlscy4KU0xPVC1OQU1FIGlzIHRoZSBuYW1lIG9mIHRoZSBmYWlsZWQgc2xvdCwgT1BFUkFU
SU9OIGlzIHRoZSB0eXBlIG9mIGFjY2Vzcwp0aGF0IHdhcyByZXF1ZXN0ZWQsIGFuZCBvcHRpb25h
bCBORVctVkFMVUUgaXMgdGhlIHZhbHVlIHRoYXQgd2FzIGRlc2lyZWQKdG8gYmUgc2V0LiIKICAo
c2lnbmFsICdpbnZhbGlkLXNsb3QtbmFtZSAobGlzdCAob2JqZWN0LW5hbWUgb2JqZWN0KQoJCQkJ
ICAgc2xvdC1uYW1lKSkpCgooZGVmbWV0aG9kIHNsb3QtdW5ib3VuZCAoKG9iamVjdCBlaWVpby1k
ZWZhdWx0LXN1cGVyY2xhc3MpCgkJCSBjbGFzcyBzbG90LW5hbWUgZm4pCiAgIlNsb3QgdW5ib3Vu
ZCBpcyBpbnZva2VkIGR1cmluZyBhbiBhdHRlbXB0IHRvIHJlZmVyZW5jZSBhbiB1bmJvdW5kIHNs
b3QuCk9CSkVDVCBpcyB0aGUgaW5zdGFuY2Ugb2YgdGhlIG9iamVjdCBiZWluZyByZWZlcmVuY2Uu
ICBDTEFTUyBpcyB0aGUKY2xhc3Mgb2YgT0JKRUNULCBhbmQgU0xPVC1OQU1FIGlzIHRoZSBvZmZl
bmRpbmcgc2xvdC4gIFRoaXMgZnVuY3Rpb24KdGhyb3dzIHRoZSBzaWduYWwgYHVuYm91bmQtc2xv
dCcuICBZb3UgY2FuIG92ZXJsb2FkIHRoaXMgZnVuY3Rpb24gYW5kCnJldHVybiB0aGUgdmFsdWUg
dG8gdXNlIGluIHBsYWNlIG9mIHRoZSB1bmJvdW5kIHZhbHVlLgpBcmd1bWVudCBGTiBpcyB0aGUg
ZnVuY3Rpb24gc2lnbmFsaW5nIHRoaXMgZXJyb3IuClVzZSBgc2xvdC1ib3VuZHAnIHRvIGRldGVy
bWluZSBpZiBhIHNsb3QgaXMgYm91bmQgb3Igbm90LiIKICAoc2lnbmFsICd1bmJvdW5kLXNsb3Qg
KGxpc3QgKGNsYXNzLW5hbWUgY2xhc3MpIChvYmplY3QtbmFtZSBvYmplY3QpCgkJCSAgICAgIHNs
b3QtbmFtZSBmbikpKQoKKGRlZm1ldGhvZCBuby1hcHBsaWNhYmxlLW1ldGhvZCAoKG9iamVjdCBl
aWVpby1kZWZhdWx0LXN1cGVyY2xhc3MpCgkJCQkgbWV0aG9kKQogICJDYWxsZWQgaWYgdGhlcmUg
YXJlIG5vIGltcGxlbWVudGF0aW9ucyBmb3IgT0JKRUNUIGluIE1FVEhPRC4KT0JKRUNUIGlzIHRo
ZSBvYmplY3Qgd2hpY2ggaGFzIG5vIG1ldGhvZCBpbXBsZW1lbnRhdGlvbi4iCiAgKHNpZ25hbCAn
bm8tbWV0aG9kLWRlZmluaXRpb24gKGxpc3QgbWV0aG9kIChvYmplY3QtbmFtZSBvYmplY3QpKSkK
ICApCgooZGVmbWV0aG9kIG5vLW5leHQtbWV0aG9kICgob2JqZWN0IGVpZWlvLWRlZmF1bHQtc3Vw
ZXJjbGFzcykKCQkJICAgJnJlc3QgYXJncykKICAiQ2FsbGVkIGZyb20gYGNhbGwtbmV4dC1tZXRo
b2QnIHdoZW4gbm8gYWRkaXRpb25hbCBtZXRob2RzIGFyZSBhdmFpbGFibGUuCk9CSkVDVCBpcyBv
dGhlIG9iamVjdCBiZWluZyBjYWxsZWQgb24gYGNhbGwtbmV4dC1tZXRob2QnLgpBUkdTIGFyZSB0
aGUgIGFyZ3VtZW50cyBpdCBpcyBjYWxsZWQgYnkuClRoaXMgbWV0aG9kIHRocm93cyBgbm8tbmV4
dC1tZXRob2QnIGJ5IGRlZmF1bHQuICBPdmVycmlkZSB0aGlzCm1ldGhvZCB0byBub3QgdGhyb3cg
YW4gZXJyb3IsIGFuZCBpdCdzIHJldHVybiB2YWx1ZSBiZWNvbWVzIHRoZQpyZXR1cm4gdmFsdWUg
b2YgYGNhbGwtbmV4dC1tZXRob2QnLiIKICAoc2lnbmFsICduby1uZXh0LW1ldGhvZCAobGlzdCAo
b2JqZWN0LW5hbWUgb2JqZWN0KSBhcmdzKSkKKQoKKGRlZm1ldGhvZCBjbG9uZSAoKG9iaiBlaWVp
by1kZWZhdWx0LXN1cGVyY2xhc3MpICZyZXN0IHBhcmFtcykKICAiTWFrZSBhIGRlZXAgY29weSBv
ZiBPQkosIGFuZCB0aGVuIGFwcGx5IFBBUkFNUy4KUEFSQU1TIGlzIGEgcGFyYW1ldGVyIGxpc3Qg
b2YgdGhlIHNhbWUgZm9ybSBhcyBJTklUSUFMSVpFLUlOU1RBTkNFCndoaWNoIGFyZSBhcHBsaWVk
IHRvIGNoYW5nZSB0aGUgb2JqZWN0LiAgV2hlbiBvdmVybG9hZGluZyBgY2xvbmUnLCBiZQpzdXJl
IHRvIGNhbGwgYGNhbGwtbmV4dC1tZXRob2QnIGZpcnN0IGFuZCBtb2RpZnkgdGhlIHJldHVybmVk
IG9iamVjdC4iCiAgKGxldCAoKG5vYmogKGNvcHktc2VxdWVuY2Ugb2JqKSkKCShubSAoYXJlZiBv
Ymogb2JqZWN0LW5hbWUpKQoJKHBhc3NuYW1lIChhbmQgcGFyYW1zIChzdHJpbmdwIChjYXIgcGFy
YW1zKSkpKQoJKG51bSAxKSkKICAgIChpZiBwYXJhbXMgKHNoYXJlZC1pbml0aWFsaXplIG5vYmog
KGlmIHBhc3NuYW1lIChjZHIgcGFyYW1zKSBwYXJhbXMpKSkKICAgIChpZiAobm90IHBhc3NuYW1l
KQoJKHNhdmUtbWF0Y2gtZGF0YQoJICAoaWYgKHN0cmluZy1tYXRjaCAiLVxcKFswLTldK1xcKSIg
bm0pCgkgICAgICAoc2V0cSBudW0gKDErIChzdHJpbmctdG8tbnVtYmVyIChtYXRjaC1zdHJpbmcg
MSBubSkpKQoJCSAgICBubSAoc3Vic3RyaW5nIG5tIDAgKG1hdGNoLWJlZ2lubmluZyAwKSkpKQoJ
ICAoYXNldCBub2JqIG9iamVjdC1uYW1lIChjb25jYXQgbm0gIi0iIChpbnQtdG8tc3RyaW5nIG51
bSkpKSkKICAgICAgKGFzZXQgbm9iaiBvYmplY3QtbmFtZSAoY2FyIHBhcmFtcykpKQogICAgbm9i
aikpCgooZGVmbWV0aG9kIGRlc3RydWN0b3IgKCh0aGlzIGVpZWlvLWRlZmF1bHQtc3VwZXJjbGFz
cykgJnJlc3QgcGFyYW1zKQogICJEZXN0cnVjdG9yIGZvciBjbGVhbmluZyB1cCBhbnkgZHluYW1p
YyBsaW5rcyB0byBvdXIgb2JqZWN0LgpBcmd1bWVudCBUSElTIGlzIHRoZSBvYmplY3QgYmVpbmcg
ZGVzdHJveWVkLiAgUEFSQU1TIGFyZSBhZGRpdGlvbmFsCmlnbm9yZWQgcGFyYW1ldGVycy4iCiAg
OzsgTm8gY2xlYW51cC4uLiB5ZXQuCiAgKQoKKGRlZm1ldGhvZCBvYmplY3QtcHJpbnQgKCh0aGlz
IGVpZWlvLWRlZmF1bHQtc3VwZXJjbGFzcykgJnJlc3Qgc3RyaW5ncykKICAiUHJldHR5IHByaW50
ZXIgZm9yIG9iamVjdCBUSElTLiAgQ2FsbCBmdW5jdGlvbiBgb2JqZWN0LW5hbWUnIHdpdGggU1RS
SU5HUy4KVGhlIGRlZmF1bHQgbWV0aG9kIGZvciBwcmludGluZyBvYmplY3QgVEhJUyBpcyB0byB1
c2UgdGhlCmZ1bmN0aW9uIGBvYmplY3QtbmFtZScuICBBdCB0aW1lcyBpdCBjb3VsZCBiZSB1c2Vm
dWwgdG8gcHV0IGEgc3VtbWFyeQpvZiB0aGUgb2JqZWN0IGludG8gdGhlIGRlZmF1bHQgIzxub3Rh
dGlvbj4gc3RyaW5nLiAgT3ZlcmxvYWQgdGhpcwpmdW5jdGlvbiB0byBhbGxvdyBzdW1tYXJpZXMg
b2YgeW91ciBvYmplY3RzIHRvIGJlIHVzZWQgYnkgZWllaW8KYnJvd3NpbmcgdG9vbHMuICBUaGUg
b3B0aW9uYWwgcGFyYW1ldGVyIFNUUklOR1MgaXMgZm9yIGFkZGl0aW9uYWwKc3VtbWFyeSBwYXJ0
cyB0byBwdXQgaW50byB0aGUgbmFtZSBzdHJpbmcuICBXaGVuIHBhc3NpbmcgaW4gZXh0cmEKc3Ry
aW5ncyBmcm9tIGNoaWxkIGNsYXNzZXMsIGFsd2F5cyByZW1lbWJlciB0byBwcmVwZW5kIGEgc3Bh
Y2UuIgogIChvYmplY3QtbmFtZSB0aGlzIChhcHBseSAnY29uY2F0IHN0cmluZ3MpKSkKCihkZWZ2
YXIgZWllaW8tcHJpbnQtZGVwdGggMAogICJXaGVuIHByaW50aW5nLCBrZWVwIHRyYWNrIG9mIHRo
ZSBjdXJyZW50IGluZGVudGF0aW9uIGRlcHRoLiIpCgooZGVmbWV0aG9kIG9iamVjdC13cml0ZSAo
KHRoaXMgZWllaW8tZGVmYXVsdC1zdXBlcmNsYXNzKSAmb3B0aW9uYWwgY29tbWVudCkKICAiV3Jp
dGUgb2JqZWN0IFRISVMgb3V0IHRvIHRoZSBjdXJyZW50IHN0cmVhbS4KVGhpcyB3cml0ZXMgb3V0
IHRoZSB2ZWN0b3IgdmVyc2lvbiBvZiB0aGlzIG9iamVjdC4gIENvbXBsZXggYW5kIHJlY3Vyc2l2
ZQpvYmplY3QgYXJlIGRpc2NvdXJhZ2VkIGZyb20gYmVpbmcgd3JpdHRlbi4KICBJZiBvcHRpb25h
bCBDT01NRU5UIGlzIG5vbi1uaWwsIGluY2x1ZGUgY29tbWVudHMgd2hlbiBvdXRwdXR0aW5nCnRo
aXMgb2JqZWN0LiIKICAod2hlbiBjb21tZW50CiAgICAocHJpbmMgIjs7IE9iamVjdCAiKQogICAg
KHByaW5jIChvYmplY3QtbmFtZS1zdHJpbmcgdGhpcykpCiAgICAocHJpbmMgIlxuIikKICAgIChw
cmluYyBjb21tZW50KQogICAgKHByaW5jICJcbiIpKQogIChsZXQqICgoY2wgKG9iamVjdC1jbGFz
cyB0aGlzKSkKCSAoY3YgKGNsYXNzLXYgY2wpKSkKICAgIDs7IE5vdyBvdXRwdXQgcmVhZGFibGUg
bGlzcCB0byByZWNyZWF0ZSB0aGlzIG9iamVjdAogICAgOzsgSXQgc2hvdWxkIGxvb2sgbGlrZSB0
aGlzOgogICAgOzsgKDxjb25zdHJ1Y3Rvcj4gPG5hbWU+IDxzbG90PiA8ZmllbGQ+IC4uLiApCiAg
ICA7OyBFYWNoIHNsb3QncyBmaWVsZCBpcyB3cml0ZW4gdXNpbmcgaXRzIDp3cml0ZXIuCiAgICAo
cHJpbmMgKG1ha2Utc3RyaW5nICgqIGVpZWlvLXByaW50LWRlcHRoIDIpID8gKSkKICAgIChwcmlu
YyAiKCIpCiAgICAocHJpbmMgKHN5bWJvbC1uYW1lIChjbGFzcy1jb25zdHJ1Y3RvciAob2JqZWN0
LWNsYXNzIHRoaXMpKSkpCiAgICAocHJpbmMgIiBcIiIpCiAgICAocHJpbmMgKG9iamVjdC1uYW1l
LXN0cmluZyB0aGlzKSkKICAgIChwcmluYyAiXCJcbiIpCiAgICA7OyBMb29wIG92ZXIgYWxsIHRo
ZSBwdWJsaWMgc2xvdHMKICAgIChsZXQgKChwdWJsYSAoYXJlZiBjdiBjbGFzcy1wdWJsaWMtYSkp
CgkgIChwdWJsZCAoYXJlZiBjdiBjbGFzcy1wdWJsaWMtZCkpCgkgIChlaWVpby1wcmludC1kZXB0
aCAoMSsgZWllaW8tcHJpbnQtZGVwdGgpKSkKICAgICAgKHdoaWxlIHB1YmxhCgkod2hlbiAoc2xv
dC1ib3VuZHAgdGhpcyAoY2FyIHB1YmxhKSkKCSAgKGxldCAoKGkgKGNsYXNzLXNsb3QtaW5pdGFy
ZyBjbCAoY2FyIHB1YmxhKSkpCgkJKHYgKGVpZWlvLW9yZWYgdGhpcyAoY2FyIHB1YmxhKSkpKQoJ
ICAgICh1bmxlc3MgKG9yIChub3QgaSkgKGVxdWFsIHYgKGNhciBwdWJsZCkpKQoJICAgICAgKHBy
aW5jIChtYWtlLXN0cmluZyAoKiBlaWVpby1wcmludC1kZXB0aCAyKSA/ICkpCgkgICAgICAocHJp
bmMgKHN5bWJvbC1uYW1lIGkpKQoJICAgICAgKHByaW5jICIgIikKCSAgICAgIChlaWVpby1vdmVy
cmlkZS1wcmluMSB2KQoJICAgICAgKHByaW5jICJcbiIpKSkpCgkoc2V0cSBwdWJsYSAoY2RyIHB1
YmxhKSBwdWJsZCAoY2RyIHB1YmxkKSkpCiAgICAgIChwcmluYyAobWFrZS1zdHJpbmcgKCogZWll
aW8tcHJpbnQtZGVwdGggMikgPyApKSkKICAgIChwcmluYyAiKVxuIikpKQoKKGRlZnVuIGVpZWlv
LW92ZXJyaWRlLXByaW4xICh0aGluZykKICAiUGVyZm9ybSBhIHByaW4xIG9uIFRISU5HIHRha2lu
ZyBhZHZhbnRhZ2Ugb2Ygb2JqZWN0IGtub3dsZWRnZS4iCiAgKGNvbmQgKChvYmplY3QtcCB0aGlu
ZykKCSAob2JqZWN0LXdyaXRlIHRoaW5nKSkKCSgobGlzdHAgdGhpbmcpCgkgKGVpZWlvLWxpc3Qt
cHJpbjEgdGhpbmcpKQoJKChjbGFzcy1wIHRoaW5nKQoJIChwcmluYyAoY2xhc3MtbmFtZSB0aGlu
ZykpKQoJKChzeW1ib2xwIHRoaW5nKQoJIChwcmluYyAoY29uY2F0ICInIiAoc3ltYm9sLW5hbWUg
dGhpbmcpKSkpCgkodCAocHJpbjEgdGhpbmcpKSkpCgooZGVmdW4gZWllaW8tbGlzdC1wcmluMSAo
bGlzdCkKICAiRGlzcGxheSBMSVNUIHdoZXJlIGxpc3QgbWF5IGNvbnRhaW4gb2JqZWN0cy4iCiAg
KGlmIChub3QgKG9iamVjdC1wIChjYXIgbGlzdCkpKQogICAgICAocHJvZ24KCShwcmluYyAiJyIp
CgkocHJpbjEgbGlzdCkpCiAgICAocHJpbmMgIihsaXN0ICIpCiAgICAoaWYgKG9iamVjdC1wIChj
YXIgbGlzdCkpIChwcmluYyAiXG4gIikpCiAgICAod2hpbGUgbGlzdAogICAgICAoaWYgKG9iamVj
dC1wIChjYXIgbGlzdCkpCgkgIChvYmplY3Qtd3JpdGUgKGNhciBsaXN0KSkKCShwcmluYyAiJyIp
CgkocHJpbjEgKGNhciBsaXN0KSkpCiAgICAgIChwcmluYyAiICIpCiAgICAgIChzZXRxIGxpc3Qg
KGNkciBsaXN0KSkpCiAgICAocHJpbmMgKG1ha2Utc3RyaW5nICgqIGVpZWlvLXByaW50LWRlcHRo
IDIpID8gKSkKICAgIChwcmluYyAiKSIpKSkKCgwKOzs7IFVuaW1wbGVtZW50ZWQgZnVuY3Rpb25z
IGZyb20gQ0xPUwo7OwooZGVmdW4gY2hhbmdlLWNsYXNzIChvYmogY2xhc3MpCiAgIkNoYW5nZSB0
aGUgY2xhc3Mgb2YgT0JKIHRvIHR5cGUgQ0xBU1MuClRoaXMgbWF5IGNyZWF0ZSBvciBkZWxldGUg
c2xvdHMsIGJ1dCBkb2VzIG5vdCBhZmZlY3QgdGhlIHJldHVybiB2YWx1ZQpvZiBgZXEnLiIKICAo
ZXJyb3IgIkVpZWlvOiBgY2hhbmdlLWNsYXNzJyBpcyB1bmltcGxlbWVudGVkIikpCgopCgoMCjs7
OyBJbnRlcmZhY2luZyB3aXRoIGVkZWJ1Zwo7OwooZGVmdW4gZWllaW8tZWRlYnVnLXByaW4xLXRv
LXN0cmluZyAob2JqZWN0ICZvcHRpb25hbCBub2VzY2FwZSkKICAiRGlzcGxheSBlaWVpbyBPQkpF
Q1QgaW4gZmFuY3kgZm9ybWF0LiAgT3ZlcnJpZGVzIHRoZSBlZGVidWcgZGVmYXVsdC4KT3B0aW9u
YWwgYXJndW1lbnQgTk9FU0NBUEUgaXMgcGFzc2VkIHRvIGBwcmluMS10by1zdHJpbmcnIHdoZW4g
YXBwcm9wcmlhdGUuIgogIChjb25kICgoY2xhc3MtcCBvYmplY3QpIChjbGFzcy1uYW1lIG9iamVj
dCkpCgkoKG9iamVjdC1wIG9iamVjdCkgKG9iamVjdC1wcmludCBvYmplY3QpKQoJKChhbmQgKGxp
c3RwIG9iamVjdCkgKG9yIChjbGFzcy1wIChjYXIgb2JqZWN0KSkKCQkJCSAob2JqZWN0LXAgKGNh
ciBvYmplY3QpKSkpCgkgKGNvbmNhdCAiKCIgKG1hcGNvbmNhdCAnZWllaW8tZWRlYnVnLXByaW4x
LXRvLXN0cmluZyBvYmplY3QgIiAiKSAiKSIpKQoJKHQgKHByaW4xLXRvLXN0cmluZyBvYmplY3Qg
bm9lc2NhcGUpKSkpCgooYWRkLWhvb2sgJ2VkZWJ1Zy1zZXR1cC1ob29rCgkgIChsYW1iZGEgKCkK
CSAgICAoZGVmLWVkZWJ1Zy1zcGVjIGRlZm1ldGhvZAoJICAgICAgKCZkZWZpbmUJCQk7IHRoaXMg
bWVhbnMgd2UgYXJlIGRlZmluaW5nIHNvbWV0aGluZwoJICAgICAgIFsmb3IgbmFtZSAoInNldGYi
IDpuYW1lIHNldGYgbmFtZSldCgkgICAgICAgOzsgXl4gVGhpcyBpcyB0aGUgbWV0aG9kcyBzeW1i
b2wKCSAgICAgICBbICZvcHRpb25hbCBzeW1ib2xwIF0gICAgOyB0aGlzIGlzIGtleSA6QkVGT1JF
IGV0YwoJICAgICAgIGxpc3QgICAgICAgICAgICAgIDsgYXJndW1lbnRzCgkgICAgICAgWyAmb3B0
aW9uYWwgc3RyaW5ncCBdICAgIDsgZG9jdW1lbnRhdGlvbiBzdHJpbmcKCSAgICAgICBkZWYtYm9k
eQkgICAgICAgICAgICAgICAgOyBwYXJ0IHRvIGJlIGRlYnVnZ2VkCgkgICAgICAgKSkKCSAgICA7
OyBUaGUgcmVzdCBvZiB0aGUgbWFjcm9zCgkgICAgKGRlZi1lZGVidWctc3BlYyBvcmVmIChmb3Jt
IHF1b3RlKSkKCSAgICAoZGVmLWVkZWJ1Zy1zcGVjIG9yZWYtZGVmYXVsdCAoZm9ybSBxdW90ZSkp
CgkgICAgKGRlZi1lZGVidWctc3BlYyBvc2V0IChmb3JtIHF1b3RlIGZvcm0pKQoJICAgIChkZWYt
ZWRlYnVnLXNwZWMgb3NldC1kZWZhdWx0IChmb3JtIHF1b3RlIGZvcm0pKQoJICAgIChkZWYtZWRl
YnVnLXNwZWMgY2xhc3MtdiBmb3JtKQoJICAgIChkZWYtZWRlYnVnLXNwZWMgY2xhc3MtcCBmb3Jt
KQoJICAgIChkZWYtZWRlYnVnLXNwZWMgb2JqZWN0LXAgZm9ybSkKCSAgICAoZGVmLWVkZWJ1Zy1z
cGVjIGNsYXNzLWNvbnN0cnVjdG9yIGZvcm0pCgkgICAgKGRlZi1lZGVidWctc3BlYyBnZW5lcmlj
LXAgZm9ybSkKCSAgICAoZGVmLWVkZWJ1Zy1zcGVjIHdpdGgtc2xvdHMgKGxpc3QgbGlzdCBkZWYt
Ym9keSkpCgkgICAgOzsgSSBzdXNwZWN0IHRoaXMgaXNuJ3QgdGhlIGJlc3Qgd2F5IHRvIGRvIHRo
aXMsIGJ1dCB3aGVuCgkgICAgOzsgY3VzdC1wcmludCB3YXMgdXNlZCBvbiBteSBzeXN0ZW0gYWxs
IG15IG9iamVjdHMKCSAgICA7OyBhcHBlYXJlZCBhcyAiIzEgPSIgd2hpY2ggd2FzIG5vdCB1c2Vm
dWwuICBUaGlzIGFsbG93cwoJICAgIDs7IGVkZWJ1ZyB0byBwcmludCBteSBvYmplY3RzIGluIHRo
ZSBuaWNlIHdheSB0aGV5IHdlcmUKCSAgICA7OyBtZWFudCB0byB3aXRoIGBvYmplY3QtcHJpbnQn
IGFuZCBgY2xhc3MtbmFtZScKCSAgICA7OyAoZGVmYWxpYXMgJ2VkZWJ1Zy1wcmluMS10by1zdHJp
bmcgJ2VpZWlvLWVkZWJ1Zy1wcmluMS10by1zdHJpbmcpCgkgICAgKQoJICApCgooZXZhbC1hZnRl
ci1sb2FkICJjZWRldC1lZGVidWciCiAgJyhwcm9nbgogICAgIChjZWRldC1lZGVidWctYWRkLXBy
aW50LW92ZXJyaWRlICcoY2xhc3MtcCBvYmplY3QpICcoY2xhc3MtbmFtZSBvYmplY3QpICkKICAg
ICAoY2VkZXQtZWRlYnVnLWFkZC1wcmludC1vdmVycmlkZSAnKG9iamVjdC1wIG9iamVjdCkgJyhv
YmplY3QtcHJpbnQgb2JqZWN0KSApCiAgICAgKGNlZGV0LWVkZWJ1Zy1hZGQtcHJpbnQtb3ZlcnJp
ZGUgJyhhbmQgKGxpc3RwIG9iamVjdCkKCQkJCQkgICAgKG9yIChjbGFzcy1wIChjYXIgb2JqZWN0
KSkgKG9iamVjdC1wIChjYXIgb2JqZWN0KSkpKQoJCQkJICAgICAgJyhjZWRldC1lZGVidWctcHJp
bjEtcmVjdXJzZSBvYmplY3QpICkKICAgICApKQoKOzs7IEludGVyZmFjaW5nIHdpdGggaW1lbnUg
aW4gZW1hY3MgbGlzcCBtb2RlCjs7ICAgIChPbmx5IGlmIHRoZSBleHByZXNzaW9uIGlzIGRlZmlu
ZWQpCjs7CihpZiAoZXZhbC13aGVuLWNvbXBpbGUgKGJvdW5kcCAnbGlzdC1pbWVudS1nZW5lcmlj
LWV4cHJlc3Npb24pKQoocHJvZ24KCihkZWZ1biBlaWVpby11cGRhdGUtbGlzcC1pbWVudS1leHBy
ZXNzaW9uICgpCiAgIkV4YW1pbmUgYGxpc3AtaW1lbnUtZ2VuZXJpYy1leHByZXNzaW9uJyBhbmQg
bW9kaWZ5IGl0IHRvIGZpbmQgYGRlZm1ldGhvZCcuIgogIChsZXQgKChleHAgbGlzcC1pbWVudS1n
ZW5lcmljLWV4cHJlc3Npb24pKQogICAgKHdoaWxlIGV4cAogICAgICA7OyBpdCdzIG9mIHRoZSBm
b3JtICcoICggdGl0bGUgZXhwciBpbmR4ICkgLi4uICkKICAgICAgKGxldCogKChzdWJjYXIgKGNk
ciAoY2FyIGV4cCkpKQoJICAgICAoc3Vic3RyIChjYXIgc3ViY2FyKSkpCgkoaWYgKGFuZCAobm90
IChzdHJpbmctbWF0Y2ggInxtZXRob2RcXFxcIiBzdWJzdHIpKQoJCSAoc3RyaW5nLW1hdGNoICJ8
YWR2aWNlXFxcXCIgc3Vic3RyKSkKCSAgICAoc2V0Y2FyIHN1YmNhcgoJCSAgICAocmVwbGFjZS1t
YXRjaCAifGFkdmljZVxcfG1ldGhvZFxcIiB0IHQgc3Vic3RyIDApKSkpCiAgICAgIChzZXRxIGV4
cCAoY2RyIGV4cCkpKSkpCgooZWllaW8tdXBkYXRlLWxpc3AtaW1lbnUtZXhwcmVzc2lvbikKCikp
Cgo7OzsgQXV0b2xvYWRpbmcgc29tZSBleHRlcm5hbCBzeW1ib2xzLCBhbmQgaG9va2luZyBpbnRv
IHRoZSBoZWxwIHN5c3RlbQo7OwoKKGF1dG9sb2FkICdlaWVpby1oZWxwLW1vZGUtYXVnbWVudGF0
aW9uLW1heWJlZSAiZWllaW8tb3B0IiAiRm9yIGJ1ZmZlcnMgdGhyb3duIGludG8gaGVscCBtb2Rl
LCBhdWdtZW50IGZvciBlaWVpby4iKQooYXV0b2xvYWQgJ2VpZWlvLWJyb3dzZSAiZWllaW8tb3B0
IiAiQ3JlYXRlIGFuIG9iamVjdCBicm93c2VyIHdpbmRvdyIgdCkKKGF1dG9sb2FkICdlaWVpby1k
ZXNjcmliZS1jbGFzcyAiZWllaW8tb3B0IiAiRGVzY3JpYmUgQ0xBU1MgZGVmaW5lZCBieSBhIHN0
cmluZyBvciBzeW1ib2wiIHQpCihhdXRvbG9hZCAnZGVzY3JpYmUtY2xhc3MgImVpZWlvLW9wdCIg
IkRlc2NyaWJlIENMQVNTIGRlZmluZWQgYnkgYSBzdHJpbmcgb3Igc3ltYm9sIiB0KQooYXV0b2xv
YWQgJ2VpZWlvLWRlc2NyaWJlLWdlbmVyaWMgImVpZWlvLW9wdCIgIkRlc2NyaWJlIEdFTkVSSUMg
ZGVmaW5lZCBieSBhIHN0cmluZyBvciBzeW1ib2wiIHQpCihhdXRvbG9hZCAnZGVzY3JpYmUtZ2Vu
ZXJpYyAiZWllaW8tb3B0IiAiRGVzY3JpYmUgR0VORVJJQyBkZWZpbmVkIGJ5IGEgc3RyaW5nIG9y
IHN5bWJvbCIgdCkKKGF1dG9sb2FkICdlaWVpb2RvYy1jbGFzcyAiZWllaW8tZG9jIiAiQ3JlYXRl
IHRleGluZm8gZG9jdW1lbnRhdGlvbiBhYm91dCBhIGNsYXNzIGhpZXJhcmNoeS4iIHQpCgooYXV0
b2xvYWQgJ2N1c3RvbWl6ZS1vYmplY3QgImVpZWlvLWN1c3RvbSIgIkNyZWF0ZSBhIGN1c3RvbSBi
dWZmZXIgZWRpdGluZyBPQkouIikKCjs7IG1ha2Ugc3VyZSB0aGlzIHNob3dzIHVwIGFmdGVyIHRo
ZSBoZWxwIG1vZGUgaG9vay4KKGFkZC1ob29rICd0ZW1wLWJ1ZmZlci1zaG93LWhvb2sgJ2VpZWlv
LWhlbHAtbW9kZS1hdWdtZW50YXRpb24tbWF5YmVlIHQpCihyZXF1aXJlICdhZHZpY2UpCihkZWZh
ZHZpY2UgZGVzY3JpYmUtdmFyaWFibGUgKGFyb3VuZCBlaWVpby1kZXNjcmliZSBhY3RpdmF0ZSkK
ICAiRGlzcGxheSB0aGUgZnVsbCBkb2N1bWVudGF0aW9uIG9mIEZVTkNUSU9OIChhIHN5bWJvbCku
ClJldHVybnMgdGhlIGRvY3VtZW50YXRpb24gYXMgYSBzdHJpbmcsIGFsc28uIgogIChpZiAoY2xh
c3MtcCAoYWQtZ2V0LWFyZyAwKSkKICAgICAgKGVpZWlvLWRlc2NyaWJlLWNsYXNzIChhZC1nZXQt
YXJnIDApKQogICAgYWQtZG8taXQpKQoKKGRlZmFkdmljZSBkZXNjcmliZS1mdW5jdGlvbiAoYXJv
dW5kIGVpZWlvLWRlc2NyaWJlIGFjdGl2YXRlKQogICJEaXNwbGF5IHRoZSBmdWxsIGRvY3VtZW50
YXRpb24gb2YgVkFSSUFCTEUgKGEgc3ltYm9sKS4KUmV0dXJucyB0aGUgZG9jdW1lbnRhdGlvbiBh
cyBhIHN0cmluZywgYWxzby4iCiAgKGlmIChnZW5lcmljLXAgKGFkLWdldC1hcmcgMCkpCiAgICAg
IChlaWVpby1kZXNjcmliZS1nZW5lcmljIChhZC1nZXQtYXJnIDApKQogICAgYWQtZG8taXQpKQoK
KHByb3ZpZGUgJ2VpZWlvKQo7OzsgZWllaW8gZW5kcyBoZXJlCg==

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

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
----Next_Part(Sat_Jun_30_22_58_10_2007_759)--
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
cedet-eieio mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/cedet-eieio

----Next_Part(Sat_Jun_30_22_58_10_2007_759)----