This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

c++/5566: When we access the stream objects,it dumps core



>Number:         5566
>Category:       c++
>Synopsis:       When we access the stream objects,it dumps core
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Feb 01 02:06:01 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Prabha Suresh
>Release:        Gcc 2.6 version
>Organization:
>Environment:
Solaris 2.7
Machine hardware:   sun4u
OS version:         5.7
Processor type:     sparc
Hardware:           SUNW,Ultra-1

>Description:
We have a stream object,we allocate memory for it,but when we try to copy some 
strings to it,it dumps core
>How-To-Repeat:

>Fix:

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

Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci8vIAovLyBOQU1FOiAgIENQTW9uRk1TZXJ2ZXIuQwovLyAKLy8g
REVTQ1JJUFRJT046ICAKLy8gCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gCi8vIAovLz09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09IAovLyAKLy8gUkVWICAgREFURSAgICAgICAgTkFNRSAgICAgICAgICAgICAgICAgICAg
VVBEQVRFIAovLyAtLS0gICAtLS0tLS0tLSAgICAtLS0tLS0tLS0tLS0tLS0gICAgICAgICAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCi8vIDAwMCAgIDAxLzI2Lzk5ICAgIGxkaW5oICAgICAg
ICAgICAgICAgICAgIE9yaWdpbmFsIAovLyAgICAgICAxMC8yOC85OSAgICBsZGluaCAgICAgICAg
ICAgICAgICAgICBGaXhlZCBDUiAxMzA5MTYKLy8gMDAxICAgMTAvMTcvMDEgICAgcHJhYmhhICAg
ICAgICAgICAgICAgICAgUG9ydGVkIHRvIFNNNy4wCi8vCi8vPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0vLwov
LyAgR2xvYmFsIGluY2x1ZGVzIAojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDx1bmlzdGQu
aD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKI2lmZGVmIE1TUF9WRVJTSU9OIAogICAjaW5jbHVkZSA8
Zmlzb19hcGkuaD4KI2VuZGlmCgovLyAgTG9jYWwgaW5jbHVkZXMgCiNpbmNsdWRlICJDUE1vbkZN
U2VydmVyLkgiCiNpbmNsdWRlICJBcE1udENvbW1vbi5IIgojaW5jbHVkZSAiQ1BNb25HVUlNYW5h
Z2VyLkgiCiNpbmNsdWRlICJDUE1vbkZJU09SZXBvcnQuSCIKLy9pbnQgKmFycl89bmV3IGludCgw
KTsKLypSZXNMb2FkUmVwb3J0Q1BVQmFzZSAgQ1BNb25GTVNlcnZlcjo6X2NwdUl0ZW07CiAgUmVz
b3VyY2VMb2FkQmFzZUNQVSAgQ1BNb25GTVNlcnZlcjo6X2NwdXRtcEl0ZW07CiAgUmVzTG9hZFJl
cG9ydEZpbGVTeXN0ZW1CYXNlIENQTW9uRk1TZXJ2ZXI6Ol9maWxlSXRlbTsKICBSZXNvdXJjZUxv
YWRCYXNlRmlsZVN5c3RlbSBDUE1vbkZNU2VydmVyOjpfZmlsZXRtcEl0ZW07CiAgUmVzb3VyY2VM
b2FkQmFzZURpc2sgQ1BNb25GTVNlcnZlcjo6X2Rpc2t0bXBJdGVtOwogIFJlc0xvYWRSZXBvcnRE
aXNrQmFzZSBDUE1vbkZNU2VydmVyOjpfZGlza0l0ZW07CiAgTG9hZFNhbXBsZUFycmF5IENQTW9u
Rk1TZXJ2ZXI6Ol9sb2Fkc2FtcDsqLwovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gCi8vIAovLyBOQU1FOiBD
UE1vbkZNU2VydmVyCi8vIAovLyBERVNDUklQVElPTjogCi8vICAgICAgICAgICAgICAKLy89PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ICAKLy8gCi8vIEFSR1VNRU5UUzogCi8vIAovLyBSRVRVUk4gVkFMVUVTOiBO
b25lLiAKLy8gCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCkNQTW9uRk1TZXJ2ZXI6OkNQTW9uRk1TZXJ2
ZXIoQ1BNb25HVUlNYW5hZ2VyICogR1VJTWFuYWdlciwgQ1BNb25GSVNPUmVwb3J0ICogRklTT3Jl
cG9ydCk6dGhlR1VJTWFuYWdlcihHVUlNYW5hZ2VyKSx0aGVDUE1vbkZJU09SZXBvcnQoRklTT3Jl
cG9ydCkKewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogIHJlc0xvYWRSZXBvcnQuZGlz
a0xvYWQuVGhyZXNob2xkID0gLTE7ICAKICByZXNMb2FkUmVwb3J0LmRpc2tMb2FkLkNsZWFySVBS
VGhyZXNob2xkID0gLTE7CiAgcmVzTG9hZFJlcG9ydC5kaXNrTG9hZC5FdmVudFR5cGUgPSAwIDsK
ICByZXNMb2FkUmVwb3J0LmZpbGVTeXN0ZW1DYXBhY2l0eS5FdmVudFR5cGUgPSAwIDsgICAgCgoK
ICByZXNMb2FkUmVwb3J0LmNwdUxvYWQuVGhyZXNob2xkID0gLTEgOwogIHJlc0xvYWRSZXBvcnQu
Y3B1TG9hZC5DbGVhcklQUlRocmVzaG9sZCA9IC0xOwogIHJlc0xvYWRSZXBvcnQuY3B1TG9hZC5J
c3N1ZWRVbmV2ZW5Mb2FkSXByID0gMCA7CiAgcmVzTG9hZFJlcG9ydC5jcHVMb2FkLklzc3VlZENw
dU92ZXJsb2FkSXByID0gMCA7CiAgcmVzTG9hZFJlcG9ydC5jcHVMb2FkLkV2ZW50VHlwZSA9IDAg
OwoKCiAgcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLlRocmVzaG9sZCA9IC0xOwogIHJlc0xvYWRS
ZXBvcnQubWVtb3J5TG9hZC5DbGVhcklQUlRocmVzaG9sZCA9IC0xOwogIHJlc0xvYWRSZXBvcnQu
bWVtb3J5TG9hZC5Jc3N1ZWRNZW1vcnlJbnN1ZmZJcHIgPSAwIDsKICByZXNMb2FkUmVwb3J0Lm1l
bW9yeUxvYWQuRXZlbnRUeXBlID0gMCA7CgogIHJlc0xvYWRSZXBvcnQuc3dhcFNwYWNlTG9hZC5U
aHJlc2hvbGQgPSAtMTsKICByZXNMb2FkUmVwb3J0LnN3YXBTcGFjZUxvYWQuQ2xlYXJJUFJUaHJl
c2hvbGQgPSAtMTsKICByZXNMb2FkUmVwb3J0LnN3YXBTcGFjZUxvYWQuSXNzdWVkU3dhcFNwYWNl
SXByID0gMCA7CiAgcmVzTG9hZFJlcG9ydC5zd2FwU3BhY2VMb2FkLkV2ZW50VHlwZSA9IDAgOwoK
CiAgcmVzTG9hZFJlcG9ydC5jcHVVc2FnZS5FdmVudFR5cGUgPSAwIDsKICByZXNMb2FkUmVwb3J0
LmNwdVVzYWdlLk90aGVyVXNhZ2UgPSAwLjAgOwogIHJlc0xvYWRSZXBvcnQuY3B1VXNhZ2UuSWRs
ZVVzYWdlID0gMC4wIDsKCiAgcmVzTG9hZFJlcG9ydC5tZW1vcnlVc2FnZS5FdmVudFR5cGUgPSAw
ICA7CiAgcmVzTG9hZFJlcG9ydC5tZW1vcnlVc2FnZS5PdGhlclVzYWdlID0gMC4wIDsKICByZXNM
b2FkUmVwb3J0Lm1lbW9yeVVzYWdlLklkbGVVc2FnZSA9IDAuMCA7CiAgCiAgcmVzTG9hZFJlcG9y
dC5taXNjU3lzdGVtU3RhdHVzLk51bWJlck9mQmxvY2tlZFByb2NzID0gLTEgOyAgICAKICByZXNM
b2FkUmVwb3J0Lm1pc2NTeXN0ZW1TdGF0dXMuTnVtYmVyT2ZSdW5uYWJsZVByb2NzID0gLTEgOyAg
ICAKICByZXNMb2FkUmVwb3J0Lm1pc2NTeXN0ZW1TdGF0dXMuTnVtYmVyT2ZDUFVzID0gLTEgOyAg
ICAKICByZXNMb2FkUmVwb3J0Lm1pc2NTeXN0ZW1TdGF0dXMuTnVtYmVyT2ZCbG9ja2VkUHJvY3NU
aHJlc2hvbGQgPSAtMSA7ICAgIAogIHJlc0xvYWRSZXBvcnQubWlzY1N5c3RlbVN0YXR1cy5OdW1i
ZXJPZlJ1bm5hYmxlUHJvY3NUaHJlc2hvbGQgPSAtMSA7ICAgIAogIHJlc0xvYWRSZXBvcnQubWlz
Y1N5c3RlbVN0YXR1cy5Jc3N1ZWRCbG9ja2VkSU9JcHIgPSAwIDsgICAgCiAgcmVzTG9hZFJlcG9y
dC5taXNjU3lzdGVtU3RhdHVzLklzc3VlZENwdVBvd2VySW5zdWZmSXByID0gMCA7ICAgIAoKICBy
ZXNMb2FkUmVwb3J0LnN3YXBTcGFjZUxvYWQuU2FtcGxlRGF0YS5zdGFydCA9IDA7CiAgcmVzTG9h
ZFJlcG9ydC5zd2FwU3BhY2VMb2FkLlNhbXBsZURhdGEubmV4dCA9IDA7CiAgcmVzTG9hZFJlcG9y
dC5zd2FwU3BhY2VMb2FkLlNhbXBsZURhdGEubWF4TGVuZ3RoID0gMDsKICByZXNMb2FkUmVwb3J0
LnN3YXBTcGFjZUxvYWQuU2FtcGxlRGF0YS5sZW5ndGggPSAwOwoKICByZXNMb2FkUmVwb3J0Lm1l
bW9yeUxvYWQuU2FtcGxlRGF0YS5zdGFydCA9IDA7CiAgcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2Fk
LlNhbXBsZURhdGEubmV4dCA9IDA7CiAgcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLlNhbXBsZURh
dGEubWF4TGVuZ3RoID0gMDsKICByZXNMb2FkUmVwb3J0Lm1lbW9yeUxvYWQuU2FtcGxlRGF0YS5s
ZW5ndGggPSAwOwoKLy9JbmNsdWRlZCBmb3IgRklYSU5HIHRoZSBQUlQgb2YgTUVNT1JZIExPQUQK
CiAgIHJlc0xvYWRSZXBvcnQubWVtb3J5TG9hZC5JZC5JZENvZGUgPSAwOwoKfQoKLy89PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09IAovLyAKLy8gTkFNRTogfkNQTW9uRk1TZXJ2ZXIKLy8gCi8vIERFU0NSSVBUSU9O
OiAKLy8gICAgICAgICAgICAgIAovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAovLyAKLy8gQVJHVU1FTlRT
OiAKLy8gCi8vIFJFVFVSTiBWQUxVRVM6IE5vbmUuIAovLyAKLy89PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAK
Q1BNb25GTVNlcnZlcjo6fkNQTW9uRk1TZXJ2ZXIoKQp7Cgp9CgovLz09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0g
Ci8vIAovLyBOQU1FOiAKLy8gCi8vIERFU0NSSVBUSU9OOiAKLy8gICAgICAgICAgICAgIAovLz09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0gIAovLyAKLy8gQVJHVU1FTlRTOiAKLy8gCi8vIFJFVFVSTiBWQUxVRVM6
IE5vbmUuIAovLyAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKdm9pZCBDUE1vbkZNU2VydmVyOjpnZXRE
aXNrTG9hZERhdGEob3N0cnN0cmVhbSAgJiBvdXRidWYpCnsKICBSZXNMb2FkUmVwb3J0RGlza0Jh
c2UJICBhbkl0ZW07CiAgdW5zaWduZWQgc2hvcnQgICAgICAgICAgICAgICAgICBpaSwgbGVuZ3Ro
OwoKICBsZW5ndGggPSByZXNMb2FkUmVwb3J0LmRpc2tMb2FkLmxpc3QuZW50cmllcygpOwogIG91
dGJ1ZiA8PCBsZW5ndGggPDwiICI7CiAgCiAgZm9yICggaWk9MDsgaWk8bGVuZ3RoOyBpaSsrKSAK
ICAgIHsKICAgICAgYW5JdGVtID0gcmVzTG9hZFJlcG9ydC5kaXNrTG9hZC5saXN0LmdldEl0ZW0o
aWkpOwogICAgICBvdXRidWYgPDwgYW5JdGVtLk5hbWUgPDwiICI8PCByZXNMb2FkUmVwb3J0LmRp
c2tMb2FkLlRocmVzaG9sZCA8PCIgIjw8IGFuSXRlbS5DdXJyZW50TGV2ZWwgPDwiICI7CiAgICB9
IAp9CgovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0gCi8vIAovLyBOQU1FOiAKLy8gCi8vIERFU0NSSVBUSU9O
OiAKLy8gICAgICAgICAgICAgIAovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAovLyAKLy8gQVJHVU1FTlRT
OiAKLy8gCi8vIFJFVFVSTiBWQUxVRVM6IE5vbmUuIAovLyAKLy89PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAK
dm9pZCBDUE1vbkZNU2VydmVyOjpnZXRGaWxlU3lzdGVtQ2FwYWNpdHlEYXRhKCBvc3Ryc3RyZWFt
ICAmIG91dGJ1ZiApCnsKICBSZXNMb2FkUmVwb3J0RmlsZVN5c3RlbUJhc2UgYW5JdGVtOwogIHVu
c2lnbmVkIHNob3J0ICAgICAgICAgICAgICAgIGlpLCBsZW5ndGg7CiAgaW50ICBkaXNrX251bSA9
IDA7CiAgY2hhciAgICAgICBidWZbNTEyXTsKICBjaGFyICAgICAgICp0b2tlblB0cjsKICAKICBs
ZW5ndGggPSAgcmVzTG9hZFJlcG9ydC5maWxlU3lzdGVtQ2FwYWNpdHkubGlzdC5lbnRyaWVzKCk7
CiAgCiAgb3V0YnVmIDw8IGxlbmd0aCA8PCIgIjsKICBmb3IgKCBpaT0wOyBpaTxsZW5ndGg7IGlp
KyspIAogICAgewogICAgICBhbkl0ZW0gPSByZXNMb2FkUmVwb3J0LmZpbGVTeXN0ZW1DYXBhY2l0
eS5saXN0LmdldEl0ZW0oaWkpOwogICAgICBvdXRidWYgPDwgYW5JdGVtLk5hbWUgPDwiICI8PCBh
bkl0ZW0uVGhyZXNob2xkIDw8IiAiPDwgYW5JdGVtLkN1cnJlbnRMZXZlbCA8PCIgIjsKICAgICAg
aWYgKCAocmVhZGxpbmsoYW5JdGVtLkRldmljZU5hbWUsIGJ1Ziwgc2l6ZW9mKGJ1ZikgKSApID09
IDApIAoJewoJICBpZiAoICh0b2tlblB0ciA9IHN0cnRvayggYnVmLCAiRlRzY3NpQCIpKSB8fCAo
dG9rZW5QdHIgPSBzdHJ0b2soIGJ1ZiwgInNkQCIpKSApCgkgICAgZGlza19udW0gPSBhdG9pKGJ1
Zik7Cgl9IAogICAgICBlbHNlIAoJewoJICBkaXNrX251bSA9IDA7Cgl9CiAgICAgIG91dGJ1ZiA8
PCBkaXNrX251bSA8PCIgIjsKICAgIH0KfQoKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IAovLyAKLy8gTkFN
RTogCi8vIAovLyBERVNDUklQVElPTjogCi8vICAgICAgICAgICAgICAKLy89PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ICAKLy8gCi8vIEFSR1VNRU5UUzogCi8vIAovLyBSRVRVUk4gVkFMVUVTOiBOb25lLiAKLy8g
Ci8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PSAgCnZvaWQgQ1BNb25GTVNlcnZlcjo6Z2V0Q1BVTG9hZERhdGEo
b3N0cnN0cmVhbSAgJiBvdXRidWYpCnsKICBSZXNMb2FkUmVwb3J0Q1BVQmFzZSBhbkl0ZW07CiAg
dW5zaWduZWQgc2hvcnQgICAgICAgICAgIGlpLGxlbmd0aDsKICAKICBsZW5ndGggPSByZXNMb2Fk
UmVwb3J0LmNwdUxvYWQubGlzdC5lbnRyaWVzKCk7CiAgb3V0YnVmIDw8IGxlbmd0aCA8PCIgIjsK
ICBmb3IgKCBpaT0wOyBpaTxsZW5ndGg7IGlpKyspIAogICAgewogICAgICBhbkl0ZW0gPSByZXNM
b2FkUmVwb3J0LmNwdUxvYWQubGlzdC5nZXRJdGVtKGlpKTsKICAgICAgb3V0YnVmIDw8IGFuSXRl
bS5OYW1lIDw8IiAiPDwgcmVzTG9hZFJlcG9ydC5jcHVMb2FkLlRocmVzaG9sZCA8PCIgIjw8IGFu
SXRlbS5DdXJyZW50TGV2ZWwgPDwiICI7CiAgICB9IAp9CiAKLy89PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IAov
LyAKLy8gTkFNRTogCi8vIAovLyBERVNDUklQVElPTjogCi8vICAgICAgICAgICAgICAKLy89PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ICAKLy8gCi8vIEFSR1VNRU5UUzogCi8vIAovLyBSRVRVUk4gVkFMVUVTOiBO
b25lLiAKLy8gCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCnZvaWQgQ1BNb25GTVNlcnZlcjo6Z2V0TWVt
b3J5TG9hZERhdGEob3N0cnN0cmVhbSAgJiBvdXRidWYgKQp7CiAgdW5zaWduZWQgc2hvcnQgbGVu
Z3RoID0gMTsgICAvLyBvbmUgcmVjb3JkCiAgCiAgb3V0YnVmIDw8IGxlbmd0aCA8PCIgIjsKICBv
dXRidWYgPDwgIm1lbW9yeV9sb2FkIiA8PCIgIjw8IHJlc0xvYWRSZXBvcnQubWVtb3J5TG9hZC5U
aHJlc2hvbGQgPDwiICI8PAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc0xv
YWRSZXBvcnQubWVtb3J5TG9hZC5DdXJyZW50TGV2ZWwgPDwiICI7Cn0KCgovLz09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0gCi8vIAovLyBOQU1FOiAKLy8gCi8vIERFU0NSSVBUSU9OOiAKLy8gICAgICAgICAgICAg
IAovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0gIAovLyAKLy8gQVJHVU1FTlRTOiAKLy8gCi8vIFJFVFVSTiBW
QUxVRVM6IE5vbmUuIAovLyAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKdm9pZCBDUE1vbkZNU2VydmVy
OjpnZXRTd2FwU3BhY2VMb2FkRGF0YShvc3Ryc3RyZWFtICAmIG91dGJ1ZiApCnsKICB1bnNpZ25l
ZCBzaG9ydCBsZW5ndGggPSAxOyAgLy8gb25lIHJlY29yZAogIAogIG91dGJ1ZiA8PCBsZW5ndGgg
PDwiICI7CiAgb3V0YnVmIDw8ICJzd2FwX3NwYWNlX2xvYWQiIDw8IiAiPDwgcmVzTG9hZFJlcG9y
dC5zd2FwU3BhY2VMb2FkLlRocmVzaG9sZCA8PCIgIjw8CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNMb2FkUmVwb3J0LnN3YXBTcGFjZUxvYWQuQ3VycmVudExldmVs
IDw8IiAiOwp9CgoKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IAovLyAKLy8gTkFNRTogCi8vIAovLyBERVND
UklQVElPTjogCi8vICAgICAgICAgICAgICAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKLy8gCi8vIEFS
R1VNRU5UUzogCi8vIAovLyBSRVRVUk4gVkFMVUVTOiBOb25lLiAKLy8gCi8vPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PSAgCnZvaWQgQ1BNb25GTVNlcnZlcjo6Z2V0Q1BVVXNhZ2VEYXRhKG9zdHJzdHJlYW0gICYg
b3V0YnVmICkKewogIFJlc0xvYWRSZXBvcnRVc2FnZUJhc2UgICBhbkl0ZW07CiAgdW5zaWduZWQg
c2hvcnQgICAgICAgICAgICBpaSwgbGVuZ3RoOwogIAogIGxlbmd0aCA9IHJlc0xvYWRSZXBvcnQu
Y3B1VXNhZ2UubGlzdC5lbnRyaWVzKCk7CiAgb3V0YnVmIDw8IGxlbmd0aCA8PCIgIjsKICBmb3Ig
KCBpaT0wOyBpaTxsZW5ndGg7IGlpKyspCiAgICB7CiAJYW5JdGVtID0gcmVzTG9hZFJlcG9ydC5j
cHVVc2FnZS5saXN0LmdldEl0ZW0oaWkpOwoJb3V0YnVmIDw8YW5JdGVtLlByb2Nlc3NOYW1lIDw8
IiAiPDwgaWkgKyAxIDw8IiAiPDwgKGZsb2F0KWFuSXRlbS5Vc2FnZSA8PCIgIjsKICAgIH0KICBv
dXRidWYgPDwgKGZsb2F0KXJlc0xvYWRSZXBvcnQuY3B1VXNhZ2UuSWRsZVVzYWdlIDw8IiAiPDwg
KGZsb2F0KXJlc0xvYWRSZXBvcnQuY3B1VXNhZ2UuT3RoZXJVc2FnZSA8PCIgIjsgCn0KCi8vPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PSAKLy8gCi8vIE5BTUU6IAovLyAKLy8gREVTQ1JJUFRJT046IAovLyAgICAg
ICAgICAgICAgCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCi8vIAovLyBBUkdVTUVOVFM6IAovLyAKLy8g
UkVUVVJOIFZBTFVFUzogTm9uZS4gCi8vIAovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAp2b2lkIENQTW9u
Rk1TZXJ2ZXI6OmdldE1lbW9yeVVzYWdlRGF0YShvc3Ryc3RyZWFtICAmIG91dGJ1ZiApCnsKICBS
ZXNMb2FkUmVwb3J0VXNhZ2VCYXNlCSBhbkl0ZW07CiAgdW5zaWduZWQgc2hvcnQgICAgICAgICAg
ICAgICAgaWksIGxlbmd0aDsKICAKICBsZW5ndGggPSByZXNMb2FkUmVwb3J0Lm1lbW9yeVVzYWdl
Lmxpc3QuZW50cmllcygpOwogIG91dGJ1ZiA8PCBsZW5ndGggPDwiICI7CiAgZm9yICggaWk9MDsg
aWk8bGVuZ3RoOyBpaSsrKQogICAgewogICAgICBhbkl0ZW0gPSByZXNMb2FkUmVwb3J0Lm1lbW9y
eVVzYWdlLmxpc3QuZ2V0SXRlbShpaSk7CiAgICAgIG91dGJ1ZiA8PGFuSXRlbS5Qcm9jZXNzTmFt
ZSA8PCIgIjw8IGlpICsgMSA8PCIgIjw8IChmbG9hdClhbkl0ZW0uVXNhZ2UgPDwiICI7CiAgICB9
CiAgb3V0YnVmIDw8IChmbG9hdClyZXNMb2FkUmVwb3J0Lm1lbW9yeVVzYWdlLklkbGVVc2FnZSA8
PCIgIjw8IChmbG9hdClyZXNMb2FkUmVwb3J0Lm1lbW9yeVVzYWdlLk90aGVyVXNhZ2UgPDwiICI7
IAoKfQoKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09IAovLyAKLy8gTkFNRTogCi8vIAovLyBERVNDUklQVElP
TjogCi8vICAgICAgICAgICAgICAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKLy8gCi8vIEFSR1VNRU5U
UzogCi8vIAovLyBSRVRVUk4gVkFMVUVTOiBOb25lLiAKLy8gCi8vPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAg
CnZvaWQgQ1BNb25GTVNlcnZlcjo6Z2V0TWlzY1N5c3RlbVN0YXR1c0RhdGEob3N0cnN0cmVhbSAg
JiBvdXRidWYgKQp7CiAgIHVuc2lnbmVkIHNob3J0ICAgIGxlbmd0aCA9IDE7CiAgIAogICBvdXRi
dWYgPDwgbGVuZ3RoIDw8IiAiOwogICBvdXRidWYgPDwgcmVzTG9hZFJlcG9ydC5taXNjU3lzdGVt
U3RhdHVzLk51bWJlck9mQmxvY2tlZFByb2NzIDw8IiAiPDwgCiAgICAgICAgICAgICByZXNMb2Fk
UmVwb3J0Lm1pc2NTeXN0ZW1TdGF0dXMuTnVtYmVyT2ZSdW5uYWJsZVByb2NzIDw8IiAiOwogICBv
dXRidWYgPDwgcmVzTG9hZFJlcG9ydC5taXNjU3lzdGVtU3RhdHVzLk51bWJlck9mQ1BVcyA8PCIg
Ijw8IAogICAgICAgICAgICAgIHJlc0xvYWRSZXBvcnQubWlzY1N5c3RlbVN0YXR1cy5OdW1iZXJP
ZkJsb2NrZWRQcm9jc1RocmVzaG9sZCA8PCIgIjsKICAgb3V0YnVmIDw8IHJlc0xvYWRSZXBvcnQu
bWlzY1N5c3RlbVN0YXR1cy5OdW1iZXJPZlJ1bm5hYmxlUHJvY3NUaHJlc2hvbGQgPDwiICI7Cn0K
CgovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0gCi8vIAovLyBOQU1FOiBjb25maWd1cmF0aW9uSW5mbwovLyAK
Ly8gREVTQ1JJUFRJT046IFJlY2VpdmVkIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24sIGNvbnN0
cnVjdCByZXNvdXJjZSBsb2FkIHJlcG9ydCB0YWJsZQovLyAgICAgICAgICAgICAgCiAgLy8gUmVj
ZWl2ZWQgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBDb25maWdTZXJ2ZXIKICAv
LyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGNvbnRhaW5zIHR3byBwYXJ0cwogIC8vIDEuIFRo
cmVzaG9sZCBpbmZvCiAgLy8gMi4gIEluZm9ybWF0aW9uIHVzZWQgdG8gY29uc3RydWN0IGFwTW50
UmVzTG9hZFJlcG9ydCB0YWJsZQogIC8vIE5lZWQgdG8gY29uc3RydWN0IHRoZSBSZXNMb2FkUmVw
b3J0IFRhYmxlIGZpcnN0LCB0aGVuCiAgLy8gdXBkYXRlIHRoZSB0aHJlc2hvbGQgaW5mb3JtYXRp
b24gaW4gdGhhdCB0YWJsZS4KLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKLy8gCi8vIEFSR1VNRU5UUzog
QXBNbnRGTUNvbmZpZ0luZm8gJiB0aGVGTUNvbmZpZ0luZm8KLy8gCi8vIFJFVFVSTiBWQUxVRVM6
IE5vbmUuIAovLyAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKdm9pZCBDUE1vbkZNU2VydmVyOjpjb25m
aWd1cmF0aW9uSW5mbygKQ1BNb25GTUNvbmZpZ0luZm8gIHRoZUZNQ29uZmlnSW5mbyApCnsKICBj
b25zdHJ1Y3RSZXNMb2FkUmVwb3J0KHRoZUZNQ29uZmlnSW5mby5hZ2VudENvbmZpZ0RhdGEsdGhl
Rk1Db25maWdJbmZvLmZNU2FtcGxlTGVuZ3RoKTsKaW50IHJldDsKY291dDw8InJldHVybiBpcyI8
PHJldDw8ZW5kbDsKICB1cGRhdGVUaHJlc2hvbGRJbmZvKHRoZUZNQ29uZmlnSW5mbyk7Cn0KCi8v
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PSAKLy8gCi8vIE5BTUU6IGNvbnN0cnVjdFJlc0xvYWRSZXBvcnQKLy8g
Ci8vIERFU0NSSVBUSU9OOiBjb25zdHJ1Y3QgdGhlIHJlc291cmNlIGxvYWQgcmVwb3J0IGZyb20g
cmVzb3VyY2UgbG9hZCB0YWJsZS4KLy8gICAgICAgICAgICAgIAovLz09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0g
IAovLyAKLy8gUEFSQU1FVEVSUyAgIFJlc291cmNlTG9hZCAmYWdlbnRDb25maWdEYXRhXywgaW50
ICBzYW1wbGVMb2FkTGVuZ3RoXwkgICAKLy8gCi8vIFJFVFVSTiBWQUxVRVM6ICB2b2lkCi8vIAov
Lz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0gIAp2b2lkIENQTW9uRk1TZXJ2ZXI6OmNvbnN0cnVjdFJlc0xvYWRS
ZXBvcnQoIFJlc291cmNlTG9hZCBhZ2VudENvbmZpZ0RhdGFfLCBpbnQgc2FtcGxlTG9hZExlbmd0
aF8pCnsKICBjb25zdHJ1Y3RSZXNMb2FkUmVwb3J0Q1BVKCBhZ2VudENvbmZpZ0RhdGFfLmNwdUxv
YWQgLCBzYW1wbGVMb2FkTGVuZ3RoXyk7CiAgY29uc3RydWN0UmVzTG9hZFJlcG9ydERpc2soIGFn
ZW50Q29uZmlnRGF0YV8uZGlza0xvYWQgLCBzYW1wbGVMb2FkTGVuZ3RoXyk7CiAgY29uc3RydWN0
UmVzTG9hZFJlcG9ydEZpbGVTeXN0ZW0oYWdlbnRDb25maWdEYXRhXy5maWxlU3lzdGVtQ2FwYWNp
dHkpOwogIC8vIC0tLS0tPiByZXBsYWNlcyB0aGUgbWV0aG9kcyBiZWxvdyB3aXRoIGEgZm9yIGxv
b3AKICAvLyBhcE1udFJlc0xvYWRSZXBvcnQuU3dhcFNwYWNlTG9hZCgpLkNvbnN0cnVjdEFycmF5
KHNhbXBsZUxvYWRMZW5ndGhfKTsKICAvLyBhcE1udFJlc0xvYWRSZXBvcnQuTWVtb3J5TG9hZCgp
LkNvbnN0cnVjdEFycmF5KHNhbXBsZUxvYWRMZW5ndGhfKTsKICBmb3IoIGludCBpaSA9IDA7IGlp
ICA8IHNhbXBsZUxvYWRMZW5ndGhfOyBpaSsrKQogICAgewogICAgICAvLyByZXNMb2FkUmVwb3J0
LnN3YXBTcGFjZUxvYWQuU2FtcGxlRGF0YS5zYW1wbGVBcnJheS5hZGRJdGVtKGludCgwKSk7CiAg
ICAgIHJlc0xvYWRSZXBvcnQubWVtb3J5TG9hZC5TYW1wbGVEYXRhLnNhbXBsZUFycmF5LmFkZEl0
ZW0oIGludCgwKSk7CiAgICB9CmZvciggaW50IGlpID0gMDsgaWkgIDwgc2FtcGxlTG9hZExlbmd0
aF87IGlpKyspCiAgICB7CiAgICAgIHJlc0xvYWRSZXBvcnQuc3dhcFNwYWNlTG9hZC5TYW1wbGVE
YXRhLnNhbXBsZUFycmF5LmFkZEl0ZW0oaW50KDApKTsKICAgIH0KICAKICBjb3V0IDw8ICIgc3dh
cHNwYyBsb2FkIG5vIG9mIGVudHJpZXMgIiA8PCAgcmVzTG9hZFJlcG9ydC5zd2FwU3BhY2VMb2Fk
LlNhbXBsZURhdGEuc2FtcGxlQXJyYXkuZW50cmllcygpIDw8IGVuZGw7CiAgY291dCA8PCAiIG1l
bW9yeSBsb2FkIG5vIG9mIGVudHJpZXMgIiA8PCAgcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLlNh
bXBsZURhdGEuc2FtcGxlQXJyYXkuZW50cmllcygpIDw8IGVuZGw7CiAgY291dDw8Iml0ZW0gdmFs
dWUiPDxyZXNMb2FkUmVwb3J0Lm1lbW9yeUxvYWQuU2FtcGxlRGF0YS5zYW1wbGVBcnJheS5nZXRJ
dGVtKDApPDxlbmRsOwogIGNvdXQ8PCJtZW1vcnkgaXRlbSI8PCByZXNMb2FkUmVwb3J0Lm1lbW9y
eUxvYWQuU2FtcGxlRGF0YS5zYW1wbGVBcnJheS5nZXRJdGVtKDkpPDxlbmRsOwogIHJlc0xvYWRS
ZXBvcnQuc3dhcFNwYWNlTG9hZC5TYW1wbGVEYXRhLm1heExlbmd0aCA9IHNhbXBsZUxvYWRMZW5n
dGhfOwogIHJlc0xvYWRSZXBvcnQubWVtb3J5TG9hZC5TYW1wbGVEYXRhLm1heExlbmd0aCA9IHNh
bXBsZUxvYWRMZW5ndGhfOwogIHJlc0xvYWRSZXBvcnQubWlzY1N5c3RlbVN0YXR1cy5OdW1iZXJP
ZkNQVXMgPSByZXNMb2FkUmVwb3J0LmNwdUxvYWQubGlzdC5lbnRyaWVzKCk7CiAKfQoKCi8vPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PSAKLy8gCi8vIE5BTUU6IAovLyAKLy8gREVTQ1JJUFRJT046IFJlY2VpdmUg
cmVzb3VyY2UgbG9hZCBpbmZvcm1hdGlvbiwgdXBkYXRlIHJlc291cmNlIGxvYWQgdGFibGUsIAov
LyAgICAgICAgICAgICAgYXBwbHkgYWxnb3JpdGhtcyB0byBkZXRlcm1pbmUgZmF1bHRzCi8vICAg
ICAgICAgICAgICAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKLy8gCi8vIEFSR1VNRU5UUzogUmVzb3Vy
Y2VMb2FkICB0aGVSZXNvdXJjZUxvYWQKLy8gCi8vIFJFVFVSTiBWQUxVRVM6IE5vbmUuIAovLyAK
Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ICAKdm9pZCBDUE1vbkZNU2VydmVyOjpyZXNvdXJjZUxvYWRSZXBv
cnQoUmVzb3VyY2VMb2FkIHRoZVJlc291cmNlTG9hZCkKeyAKICBpbnQgbGVubmd0aCA7CgogIHVw
ZGF0ZVJlc0xvYWRSZXBvcnREaXNrKHRoZVJlc291cmNlTG9hZC5kaXNrTG9hZCApOwogIHVwZGF0
ZVJlc0xvYWRSZXBvcnRGaWxlU3lzdGVtKCB0aGVSZXNvdXJjZUxvYWQuZmlsZVN5c3RlbUNhcGFj
aXR5KTsKICB1cGRhdGVSZXNMb2FkUmVwb3J0Q1BVKHRoZVJlc291cmNlTG9hZC5jcHVMb2FkKTsK
ICB1cGRhdGVSZXNMb2FkUmVwb3J0U3dhcFNwYWNlKHRoZVJlc291cmNlTG9hZC5Td2FwU3BhY2VM
b2FkICApOwogIHVwZGF0ZVJlc0xvYWRSZXBvcnRNZW1vcnkodGhlUmVzb3VyY2VMb2FkLk1lbW9y
eUxvYWQpOwogIHVwZGF0ZVJlc0xvYWRSZXBvcnROdW1PZlJ1bm5hYmxlUHJvYyggdGhlUmVzb3Vy
Y2VMb2FkLk51bWJlck9mUnVubmFibGVQcm9jcyk7CiAgdXBkYXRlUmVzTG9hZFJlcG9ydE51bU9m
QmxvY2tlZFByb2MoIHRoZVJlc291cmNlTG9hZC5OdW1iZXJPZkJsb2NrZWRQcm9jcyk7CiAgYmxv
Y2tlZElPRmF1bHREZXRlY3QoKTsgIAogIGluc3VmZkNQVXBvd2VyRGV0ZWN0KCk7CgogIC8vIFN5
c3RlbSBpcyBub3cgcmVhZHkgdG8gaGFuZGxlIHJlcXVlc3RzICAKICB0aGVHVUlNYW5hZ2VyLT5z
ZXRTeXN0ZW1TdGF0ZSgpOwoKICBsZW5uZ3RoID0gZmF1bHRSZXBvcnQuZW50cmllcygpOwoKICBm
b3IgKCBpbnQgaWkgPSAwOyBpaSA8IGxlbm5ndGggOyBpaSsrKQogICAgewogICAgICBGYXVsdFJl
cG9ydEJhc2UgIHRlbXBGYXVsdEJ1ZmZlcjsKICAgICAgdGVtcEZhdWx0QnVmZmVyID0gZmF1bHRS
ZXBvcnQucmVtb3ZlQXQoMCk7CiAgICAgIC8qICAgICAKCWNlcnIgPDwgIioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIgPDwgZW5kbDsKCWNl
cnIgPDwgIlNlbmQgRmF1bHQgUmVwb3J0OiAiIDw8ICJGYXVsdFR5cGU9IiA8PCAoaW50KSh0ZW1w
RmF1bHRCdWZmZXItPkZhdWx0VHlwZSkKCTw8ICAiIEFsYXJtIEFjdGlvbj0iIDw8IChpbnQpKHRl
bXBGYXVsdEJ1ZmZlci0+YWxhcm1BY3Rpb24pCgk8PCAiIERldmljZTE9IiA8PCAoY29uc3QgY2hh
ciAqKSh0ZW1wRmF1bHRCdWZmZXItPkRldmljZTEpCgk8PCAiIFZhbHVlMT0iIDw8IChpbnQpKHRl
bXBGYXVsdEJ1ZmZlci0+VmFsdWUxKQoJPDwgIiBEZXZpY2UyPSIgPDwgKGNvbnN0IGNoYXIgKiko
dGVtcEZhdWx0QnVmZmVyLT5EZXZpY2UyKQoJPDwgIiBWYWx1ZTI9IiA8PCAoaW50KSh0ZW1wRmF1
bHRCdWZmZXItPlZhbHVlMikKCTw8ICIgVGhyZXNob2xkPSIgPDwgKGludCkodGVtcEZhdWx0QnVm
ZmVyLT5UaHJlc2hvbGQpIDw8IGVuZGw7CgljZXJyIDw8ICIqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiIDw8IGVuZGw7CgkqLwoJdGhlQ1BN
b25GSVNPUmVwb3J0LT5maXNvUmVwb3J0KCZ0ZW1wRmF1bHRCdWZmZXIpOyAgICAgICAgICAgIAog
ICAgfQogIGZhdWx0UmVwb3J0LmNsZWFyQW5kRGVzdHJveSgpOwp9CgoKLy89PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09IAovLyAKLy8gTkFNRTogdXBkYXRlUmVzTG9hZFJlcG9ydERpc2sKLy8KLy8gREVTQ1JJUFRJ
T046IHVwZGF0ZSBkaXNrIGxvYWQgaW5mb3JtYXRpb24gaW4gcmVzb3VyY2UgbG9hZCByZXBvcnQg
dGFibGUKLy8gICAgICAgICAgICAgIAovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAovLyAKLy8gUEFSQU1F
VEVSUyAgOiAgIGNoYXIJICpidWZmZXJQcnRfLCB1bnNpZ25lZCBzaG9ydAludW1PZkVudHJpZXNf
Ci8vIAovLyBSRVRVUk4gVkFMVUVTOiB2b2lkCi8vIAovLyBSRVZJU0lPTiBISVNUT1JZICAgICA6
IE9yaWdpbmFsCi8vICAgICAgICAgICAgICAgICAgICAgICAgCi8vICAgICAgICAwNy8yMy85OCBs
ZGluaDogIGZpeCBwcnQgMTIyNDkyICJubyBJUFIgZm9yIGZ0LVNQQVJDIHNvZnR3YXJlIGZhdWx0
IGNsZWFyYW5jZSIgCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCnZvaWQgQ1BNb25GTVNlcnZlcjo6dXBk
YXRlUmVzTG9hZFJlcG9ydERpc2soQ1BNb25TaW5nbGVMaW5rTGlzdDxSZXNvdXJjZUxvYWRCYXNl
RGlzaz4gdGhlRGlza0xvYWQgKQp7CiAgIHVuc2lnbmVkIHNob3J0ICBzcmNMZW5ndGgsIHRtcExl
bmd0aCA7CgogICBSZXNMb2FkUmVwb3J0RGlza0Jhc2UgICAgc3JjSXRlbTsKICAgUmVzb3VyY2VM
b2FkQmFzZURpc2sJICAgdG1wSXRlbTsKICAKICAgdG1wTGVuZ3RoID0gdGhlRGlza0xvYWQuZW50
cmllcygpOwogICAKICAgZm9yKGludCBpaT0wOyBpaTwgdG1wTGVuZ3RoIDsgaWkrKykKICAgICB7
ICAgICAgIAogICAgICAgdG1wSXRlbSA9IHRoZURpc2tMb2FkLmdldEl0ZW0oaWkpOwogICAgICAg
c3JjTGVuZ3RoID0gcmVzTG9hZFJlcG9ydC5kaXNrTG9hZC5saXN0LmVudHJpZXMoKTsKICAgICAg
IGZvciAoIGludCBqaiA9IDA7IGpqIDwgc3JjTGVuZ3RoIDsgamorKykKCSB7CgkgICBzcmNJdGVt
ID0gcmVzTG9hZFJlcG9ydC5kaXNrTG9hZC5saXN0LmdldEl0ZW0oamopOwoJICAgaWYgKCBzcmNJ
dGVtLklkLklkQ29kZSA9PSB0bXBJdGVtLkl0ZW1JZCkKCSAgICAgewoJICAgICAgIGlmICggc3Jj
SXRlbS5DdXJyZW50TGV2ZWwgPT0gLTEpCgkJIHsKCQkgICAgc3JjSXRlbS5BdmVyYWdlT2ZMYXN0
MiA9IHRtcEl0ZW0uSXRlbVZhbHVlOwoJCSB9CgkgICAgICAgZWxzZQoJCSB7CiAgCQkgICAgc3Jj
SXRlbS5BdmVyYWdlT2ZMYXN0MiA9IChzcmNJdGVtLkN1cnJlbnRMZXZlbCArIHRtcEl0ZW0uSXRl
bVZhbHVlKS8yOwoJCSB9ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgIGluc2VydEluU2Ft
cGxlQXJyYXkoc3JjSXRlbS5TYW1wbGVEYXRhLCB0bXBJdGVtLkl0ZW1WYWx1ZSk7CgkgICAgICAg
c3JjSXRlbS5BdmVyYWdlVmFsdWUgPSBzYW1wbGVBcnJheUF2ZXJhZ2Uoc3JjSXRlbS5TYW1wbGVE
YXRhKTsKCSAgICAgICBzcmNJdGVtLkN1cnJlbnRMZXZlbCA9IHRtcEl0ZW0uSXRlbVZhbHVlOwoJ
ICAgICAgIGlmICggc3JjSXRlbS5BdmVyYWdlT2ZMYXN0MiA+IHJlc0xvYWRSZXBvcnQuZGlza0xv
YWQuVGhyZXNob2xkICkKCQkgewoJCSAgIGlmKCAhc3JjSXRlbS5Jc3N1ZWREaXNrT3ZlcmxvYWRJ
cHIpCgkJICAgICB7CgkJICAgICAgIHNyY0l0ZW0uSXNzdWVkRGlza092ZXJsb2FkSXByID0gQVBf
TU5UX0lTU1VFX0lQUiA7CgkJICAgICAgIGZhdWx0UmVwb3J0SW5zZXJ0KEFTUF9DTV9ESVNLX09W
RVJMT0FELEFQX01OVF9BTEFSTV9PTixzcmNJdGVtLk5hbWUsCgkJICAgICAgIAkJCXNyY0l0ZW0u
QXZlcmFnZU9mTGFzdDIsIiAiLCAwLCByZXNMb2FkUmVwb3J0LmRpc2tMb2FkLlRocmVzaG9sZCk7
CgkJICAgICB9CgkJIH0KCSAgICAgICBlbHNlICBpZiAoIHNyY0l0ZW0uQXZlcmFnZU9mTGFzdDIg
PCByZXNMb2FkUmVwb3J0LmRpc2tMb2FkLkNsZWFySVBSVGhyZXNob2xkKQoJCSB7CgkJICAgaWYg
KCBzcmNJdGVtLklzc3VlZERpc2tPdmVybG9hZElwciApCgkJICAgICB7CgkJICAgICAgIHNyY0l0
ZW0uSXNzdWVkRGlza092ZXJsb2FkSXByID0gQVBfTU5UX0NMRUFSX0lQUiA7CgkJICAgICAgIGZh
dWx0UmVwb3J0SW5zZXJ0KEFTUF9DTV9ESVNLX09WRVJMT0FELEFQX01OVF9BTEFSTV9PRkYsc3Jj
SXRlbS5OYW1lLAoJCSAgICAgICAJCXNyY0l0ZW0uQXZlcmFnZU9mTGFzdDIsIiAiLCAwLCByZXNM
b2FkUmVwb3J0LmRpc2tMb2FkLkNsZWFySVBSVGhyZXNob2xkKTsKCQkgICAgIH0KCQkgfQoJICAg
ICAgIGJyZWFrOwoJICAgICB9CgkgfSAgICAgICAKICAgICB9Cn0KCi8vPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PSAKLy8gCi8vIE5BTUU6IHVwZGF0ZVJlc0xvYWRSZXBvcnRGaWxlU3lzdGVtCi8vIAovLyBERVND
UklQVElPTjogIHVwZGF0ZSBmaWxlIHN5c3RlbSBpbmZvcm1hdGlvbiBpbiByZXNvdXJjZSBsb2Fk
IHJlcG9ydCB0YWJsZQovLyAgICAgICAgICAgICAgIFVwZGF0ZSB0aGUgZW50cnkgc3BlY2lmaWVk
IGluIGZzQnVmZmVyXy4gIElmIHRoZXJlCi8vCQkgaXMgYW55IGRlZmF1bHQgZGV0ZWN0ZWQsIGNy
ZWF0ZSBhbiBmYXVsdCByZXBvcnQKLy8JCSBhbmQgYWRkIGl0IHRvIHRoZSBhcE1udEZhdWx0UmVw
b3J0XyBsaXN0LiAgICAgICAgICAgICAgCi8vCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCi8vIAovLyBQ
QVJBTUVURVJTIDogCWNoYXIgICpidWZmZXJQdHJfLCB1bnNpZ25lZCBzaG9ydCBudW1PZkVudHJp
ZXNfCi8vIAovLyBSRVRVUk4gVkFMVUVTOiB2b2lkCi8vCi8vIFJFVklTSU9OIEhJU1RPUlkgICAg
IDogT3JpZ2luYWwKLy8gICAgICAgMDcvMjMvOTggbGRpbmggOiBmaXggcHJ0IDEyMjQ5MiAibm8g
SVBSIGZvciBmdC1TUEFSQyBzb2Z0d2FyZSBmYXVsdCBjbGVhcmFuY2UiIAovLz09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0gIAp2b2lkIENQTW9uRk1TZXJ2ZXI6OnVwZGF0ZVJlc0xvYWRSZXBvcnRGaWxlU3lzdGVt
KENQTW9uU2luZ2xlTGlua0xpc3Q8IFJlc291cmNlTG9hZEJhc2VGaWxlU3lzdGVtPiB0aGVGaWxl
U3lzdGVtKSAKewogIHVuc2lnbmVkIHNob3J0ICBzcmNMZW5ndGgsIHRtcExlbmd0aCA7CiAgUmVz
TG9hZFJlcG9ydEZpbGVTeXN0ZW1CYXNlICBzcmNJdGVtOyAKICBSZXNvdXJjZUxvYWRCYXNlRmls
ZVN5c3RlbSAgIHRtcEl0ZW07CgogIHRtcExlbmd0aCA9IHRoZUZpbGVTeXN0ZW0uZW50cmllcygp
OwogIGZvciAoIGludCBpaT0wOyBpaSA8IHRtcExlbmd0aCA7IGlpKyspCiAgICB7CiAgICAgIHRt
cEl0ZW0gPSB0aGVGaWxlU3lzdGVtLmdldEl0ZW0oaWkpOwogICAgICBzcmNMZW5ndGggPSByZXNM
b2FkUmVwb3J0LmZpbGVTeXN0ZW1DYXBhY2l0eS5saXN0LmVudHJpZXMoKTsgCiAgICAgIGZvciAo
IGludCBqaiA9IDA7IGpqIDwgc3JjTGVuZ3RoIDsgamorKykgCgl7CgkgIHNyY0l0ZW0gPSByZXNM
b2FkUmVwb3J0LmZpbGVTeXN0ZW1DYXBhY2l0eS5saXN0LmdldEl0ZW0oamopOwoJICBpZiAoIHNy
Y0l0ZW0uSWQuSWRDb2RlID09IHRtcEl0ZW0uSXRlbUlkICkKCSAgICB7CgkgICAgICBzcmNJdGVt
LkF2YWlsYWJsZVNwYWNlID0gdG1wSXRlbS5BdmFpbGFibGVTcGFjZTsKCSAgICAgIHNyY0l0ZW0u
Q3VycmVudExldmVsID0gdG1wSXRlbS5JdGVtVmFsdWU7IAoJICAgICAgaWYgKCBzcmNJdGVtLkN1
cnJlbnRMZXZlbCA+IHNyY0l0ZW0uVGhyZXNob2xkICkKCQl7CgkJICBpZiggIXNyY0l0ZW0uSXNz
dWVkRmlsZVN5c0lwcikKCQkgICAgewoJCSAgICAgIHNyY0l0ZW0uSXNzdWVkRmlsZVN5c0lwciA9
IEFQX01OVF9JU1NVRV9JUFIgOyAgICAgCiAgICAgICAgICAgICAgICAgICAgICBmYXVsdFJlcG9y
dEluc2VydCggQVNQX0NNX0ZJTEVfU1lTVEVNX0ZVTEwsIEFQX01OVF9BTEFSTV9PTiwKCQkJCQkg
ICBzcmNJdGVtLiBOYW1lLCAgc3JjSXRlbS5DdXJyZW50TGV2ZWwsIHNyY0l0ZW0uRGV2aWNlTmFt
ZSwKCQkJCQkgICAgc3JjSXRlbS5BdmFpbGFibGVTcGFjZSwgc3JjSXRlbS5UaHJlc2hvbGQpOyAK
CQkgICAgfQoJCX0KCSAgICAgIGVsc2UKCQl7CgkJICBpZiAoc3JjSXRlbS5Jc3N1ZWRGaWxlU3lz
SXByKSAKCQkgICAgewoJCSAgICAgIHNyY0l0ZW0uSXNzdWVkRmlsZVN5c0lwciA9IEFQX01OVF9D
TEVBUl9JUFI7CgkJICAgICAgZmF1bHRSZXBvcnRJbnNlcnQoIEFTUF9DTV9GSUxFX1NZU1RFTV9G
VUxMLCBBUF9NTlRfQUxBUk1fT0ZGLAoJCQkJICAgICAgICBzcmNJdGVtLk5hbWUsIHNyY0l0ZW0u
Q3VycmVudExldmVsLCBzcmNJdGVtLkRldmljZU5hbWUsCgkJCQkJc3JjSXRlbS5BdmFpbGFibGVT
cGFjZSwgc3JjSXRlbS5UaHJlc2hvbGQpOwoJCQkJCQoJCSAgICB9CgkJfQoJCWJyZWFrOwoJICAg
IH0KCX0gICAgIAogICAgfQogIAp9CgoKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IAovLyAKLy8gTkFNRTog
dXBkYXRlUmVzTG9hZFJlcG9ydENQVQovLyAKLy8gREVTQ1JJUFRJT046ICB1cGRhdGUgY3B1IHVz
YWdlIGluZm9ybWF0aW9uIGluIHJlc291cmNlIGxvYWQgcmVwb3J0IHRhYmxlCi8vICAgICAgICAg
ICAgICAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ICAKLy8gCi8vIFBBUkFNRVRFUlMgOiAgY2hhciAqYnVm
ZmVyUHJ0XywgdW5zaWduZWQgc2hvcnQgbnVtT2ZFbnRyaWVzXzsKLy8JCQkJCQkJCi8vIFJFVFVS
TiBWQUxVRVM6ICB1bnNpZ25lZCBzaG9ydAovLyAKLy89PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKdm9pZCBD
UE1vbkZNU2VydmVyOjp1cGRhdGVSZXNMb2FkUmVwb3J0Q1BVKCBDUE1vblNpbmdsZUxpbmtMaXN0
PCBSZXNvdXJjZUxvYWRCYXNlQ1BVID4gdGhlQ1BVcyApCnsKICB1bnNpZ25lZCBzaG9ydCAgc3Jj
TGVuZ3RoLCB0bXBMZW5ndGggOwogIFJlc0xvYWRSZXBvcnRDUFVCYXNlICAgc3JjSXRlbTsgCiAg
UmVzb3VyY2VMb2FkQmFzZUNQVSAgICB0bXBJdGVtOwoKICB0bXBMZW5ndGggPSB0aGVDUFVzLmVu
dHJpZXMoKTsKICBmb3IoaW50IGlpPTA7IGlpICA8ICB0bXBMZW5ndGggOyBpaSsrKQogICAgewog
ICAgICB0bXBJdGVtID0gdGhlQ1BVcy5nZXRJdGVtKGlpKTsKICAgICAgc3JjTGVuZ3RoID0gcmVz
TG9hZFJlcG9ydC5jcHVMb2FkLmxpc3QuZW50cmllcygpOwogICAgICBmb3IgKGludCAgamogPSAw
OyBqaiA8IHNyY0xlbmd0aCA7IGpqKyspCgl7CgkgIHNyY0l0ZW0gPSByZXNMb2FkUmVwb3J0LmNw
dUxvYWQubGlzdC5nZXRJdGVtKGpqKTsKCSAgaWYgKCBzcmNJdGVtLklkLklkQ29kZSA9PSB0bXBJ
dGVtLkl0ZW1JZCApCgkgICAgewoJICAgICAgaWYgKCBzcmNJdGVtLkN1cnJlbnRMZXZlbCA9PSAt
MSkKCQl7CgkJICBzcmNJdGVtLkF2ZXJhZ2VPZkxhc3QyID0gdG1wSXRlbS5JdGVtVmFsdWU7IAoJ
CX0KCSAgICAgIGVsc2UKCQl7CgkJICBzcmNJdGVtLkF2ZXJhZ2VPZkxhc3QyID0gKHNyY0l0ZW0u
Q3VycmVudExldmVsICsgCgkJCQkJICAgICAgICB0bXBJdGVtLkl0ZW1WYWx1ZSApLzI7CgkJfSAg
CgkgICAgICBpbnNlcnRJblNhbXBsZUFycmF5KHNyY0l0ZW0uU2FtcGxlRGF0YSwgdG1wSXRlbS5J
dGVtVmFsdWUpOwoJICAgICAgc3JjSXRlbS5BdmVyYWdlVmFsdWUgPSBzYW1wbGVBcnJheUF2ZXJh
Z2Uoc3JjSXRlbS5TYW1wbGVEYXRhKTsgCgkgICAgICBzcmNJdGVtLkN1cnJlbnRMZXZlbCA9IHRt
cEl0ZW0uSXRlbVZhbHVlOyAKCgkgICAgICBpZiAoICBzcmNJdGVtLkN1cnJlbnRMZXZlbCA+IHJl
c0xvYWRSZXBvcnQuY3B1TG9hZC5UaHJlc2hvbGQgKQoJCXsKCQkgIGlmICggIXJlc0xvYWRSZXBv
cnQuY3B1TG9hZC5Jc3N1ZWRDcHVPdmVybG9hZElwciApCgkJICAgIHsKCQkgICAgICByZXNMb2Fk
UmVwb3J0LmNwdUxvYWQuSXNzdWVkQ3B1T3ZlcmxvYWRJcHIgPSBBUF9NTlRfSVNTVUVfSVBSIDsK
CQkgICAgICBmYXVsdFJlcG9ydEluc2VydChBU1BfQ01fQ1BVX09WRVJMT0FELCBBUF9NTlRfQUxB
Uk1fT04sIHNyY0l0ZW0uTmFtZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzcmNJdGVtLkF2ZXJhZ2VPZkxhc3QyLCIgIiwgMCwgcmVzTG9hZFJlcG9ydC5jcHVMb2Fk
LlRocmVzaG9sZCk7CgkJICAgIH0KCQl9CgkgICAgICBlbHNlICBpZiAoICBzcmNJdGVtLkN1cnJl
bnRMZXZlbCA8IHJlc0xvYWRSZXBvcnQuY3B1TG9hZC5DbGVhcklQUlRocmVzaG9sZCApCgkJewoJ
CSAgaWYoIHJlc0xvYWRSZXBvcnQuY3B1TG9hZC5Jc3N1ZWRDcHVPdmVybG9hZElwcikgCgkJICAg
IHsKCQkgICAgICByZXNMb2FkUmVwb3J0LmNwdUxvYWQuSXNzdWVkQ3B1T3ZlcmxvYWRJcHIgPSBB
UF9NTlRfQ0xFQVJfSVBSIDsKCQkgICAgICBmYXVsdFJlcG9ydEluc2VydCggQVNQX0NNX0NQVV9P
VkVSTE9BRCwgQVBfTU5UX0FMQVJNX09GRiwgIHNyY0l0ZW0uTmFtZSwKCQkJCQkgc3JjSXRlbS5B
dmVyYWdlT2ZMYXN0MiwgIiAiICwgMCwgcmVzTG9hZFJlcG9ydC5jcHVMb2FkLkNsZWFySVBSVGhy
ZXNob2xkKTsKCQkgICAgfQoJCX0KCSAgICAgIGJyZWFrOwoJICAgIH0KCX0KICAgICAgCiAgICAg
IGRldGVjdFVuZXZlbkxvYWQoKTsgICAgICAKICAgIH0KICAKfQoKCi8vPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PSAKLy8gCi8vIE5BTUU6IHVwZGF0ZVJlc0xvYWRSZXBvcnRTd2FwU3BhY2UKLy8gCi8vIERFU0NS
SVBUSU9OOiBkYXRlIG1lbW9yeSBhbmQgc3dhcCBzcGFjZSBpbmZvcm1hdGlvbiBpbiB0aGUgdGFi
bGUuCi8vICAgICAgICAgICAgICAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKLy8gCi8vIFBBUkFNRVRF
UlMgOiAgY2hhciAgKmJ1ZmZlclBydF8sICB1bnNpZ25lZCBzaG9ydAludW1PZkVudHJpZXNfCi8v
IAovLyBSRVRVUk4gVkFMVUVTOiB2b2lkCi8vIAovLz09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAp2b2lkIENQ
TW9uRk1TZXJ2ZXI6OnVwZGF0ZVJlc0xvYWRSZXBvcnRTd2FwU3BhY2UoaW50IHRoZVN3YXBTcGFj
ZUxvYWQgKQp7CiAgaWYgKCByZXNMb2FkUmVwb3J0LnN3YXBTcGFjZUxvYWQuSWQuSWRDb2RlID09
IDAgKQogICAgewogICAgICBpZiAoIHJlc0xvYWRSZXBvcnQuc3dhcFNwYWNlTG9hZC5DdXJyZW50
TGV2ZWwgPT0gLTEpCgl7CgkgIHJlc0xvYWRSZXBvcnQuc3dhcFNwYWNlTG9hZC5BdmVyYWdlT2ZM
YXN0MiA9IHRoZVN3YXBTcGFjZUxvYWQ7Cgl9CiAgICAgIGVsc2UKCXsKCSAgcmVzTG9hZFJlcG9y
dC5zd2FwU3BhY2VMb2FkLkF2ZXJhZ2VPZkxhc3QyID0gKHJlc0xvYWRSZXBvcnQuc3dhcFNwYWNl
TG9hZC5DdXJyZW50TGV2ZWwgKyB0aGVTd2FwU3BhY2VMb2FkKS8yOwoJfSAKICAgICAgCiAgICAg
IGluc2VydEluU2FtcGxlQXJyYXkocmVzTG9hZFJlcG9ydC5zd2FwU3BhY2VMb2FkLlNhbXBsZURh
dGEsIHRoZVN3YXBTcGFjZUxvYWQpOwogICAgICByZXNMb2FkUmVwb3J0LnN3YXBTcGFjZUxvYWQu
QXZlcmFnZVZhbHVlID0gc2FtcGxlQXJyYXlBdmVyYWdlKHJlc0xvYWRSZXBvcnQuc3dhcFNwYWNl
TG9hZC5TYW1wbGVEYXRhKTsgCiAgICAgIHJlc0xvYWRSZXBvcnQuc3dhcFNwYWNlTG9hZC5DdXJy
ZW50TGV2ZWwgPSB0aGVTd2FwU3BhY2VMb2FkOyAKICAgICAgCiAgICAgIGlmICggcmVzTG9hZFJl
cG9ydC5zd2FwU3BhY2VMb2FkLkF2ZXJhZ2VPZkxhc3QyID4gcmVzTG9hZFJlcG9ydC5zd2FwU3Bh
Y2VMb2FkLlRocmVzaG9sZCApCgl7CgkgIGlmKCAhcmVzTG9hZFJlcG9ydC5zd2FwU3BhY2VMb2Fk
Lklzc3VlZFN3YXBTcGFjZUlwciApCgkgICAgewoJICAgICAgcmVzTG9hZFJlcG9ydC5zd2FwU3Bh
Y2VMb2FkLklzc3VlZFN3YXBTcGFjZUlwciA9IEFQX01OVF9JU1NVRV9JUFIgOwoJICAgICAgZmF1
bHRSZXBvcnRJbnNlcnQoQVNQX0NNX1NXQVBfU1BBQ0VfSU5TVUZGLEFQX01OVF9BTEFSTV9PTiwg
IiIsIHJlc0xvYWRSZXBvcnQuc3dhcFNwYWNlTG9hZC5BdmVyYWdlT2ZMYXN0MiwKCQkJCSIiLDAs
IHJlc0xvYWRSZXBvcnQuc3dhcFNwYWNlTG9hZC5UaHJlc2hvbGQpOwoJICAgIH0JICAKCX0KICAg
ICAgZWxzZSBpZiAocmVzTG9hZFJlcG9ydC5zd2FwU3BhY2VMb2FkLkF2ZXJhZ2VPZkxhc3QyIDwg
cmVzTG9hZFJlcG9ydC5zd2FwU3BhY2VMb2FkLkNsZWFySVBSVGhyZXNob2xkICkKCXsKCSAgaWYo
IHJlc0xvYWRSZXBvcnQuc3dhcFNwYWNlTG9hZC5Jc3N1ZWRTd2FwU3BhY2VJcHIgKQoJICAgIHsK
CSAgICAgIHJlc0xvYWRSZXBvcnQuc3dhcFNwYWNlTG9hZC5Jc3N1ZWRTd2FwU3BhY2VJcHIgPSBB
UF9NTlRfQ0xFQVJfSVBSIDsKCSAgICAgIGZhdWx0UmVwb3J0SW5zZXJ0KEFTUF9DTV9TV0FQX1NQ
QUNFX0lOU1VGRixBUF9NTlRfQUxBUk1fT0ZGLCIiLCByZXNMb2FkUmVwb3J0LnN3YXBTcGFjZUxv
YWQuQXZlcmFnZU9mTGFzdDIsCgkJCQkiIiwgMCwgcmVzTG9hZFJlcG9ydC5zd2FwU3BhY2VMb2Fk
LkNsZWFySVBSVGhyZXNob2xkICk7IAoJICAgIH0KCX0KICAgIH0KIAp9CgovLz09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0gCi8vIAovLyBOQU1FOiB1cGRhdGVSZXNMb2FkUmVwb3J0TnVtT2ZCbG9ja2VkUHJvYwov
LyAKLy8gREVTQ1JJUFRJT046ICB1cGRhdGUgbWVtb3J5IGluZm9ybWF0aW9uIGluIHRoZSB0YWJs
ZQovLyAgICAgICAgICAgICAgCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCi8vIAovLyBQQVJBTUVURVJT
OiAJY2hhciAgKmJ1ZmZlclBydF8sIHVuc2lnbmVkIHNob3J0ICBudW1PZkVudHJpZXNfCi8vIAov
LyBSRVRVUk4gVkFMVUVTOiB2b2lkIAovLyAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKdm9pZCBDUE1v
bkZNU2VydmVyOjp1cGRhdGVSZXNMb2FkUmVwb3J0TnVtT2ZCbG9ja2VkUHJvYyh1bG9uZyB0aGVO
dW1iZXJPZkJsb2NrZWRQcm9jcyApCnsKICByZXNMb2FkUmVwb3J0Lm1pc2NTeXN0ZW1TdGF0dXMu
TnVtYmVyT2ZCbG9ja2VkUHJvY3MgPSB0aGVOdW1iZXJPZkJsb2NrZWRQcm9jczsKfQoKCgovLz09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0gCi8vIAovLyBOQU1FOiB1cGRhdGVSZXNMb2FkUmVwb3J0TnVtT2ZSdW5u
YWJsZVByb2MKLy8gCi8vIERFU0NSSVBUSU9OOiB1cGRhdGUgbWVtb3J5IGluZm9ybWF0aW9uIGlu
IHRoZSB0YWJsZQovLyAgICAgICAgICAgICAgCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCi8vIAovLyBQ
QVJBTUVURVJTIDogICAgIGNoYXIgICAqYnVmZmVyUHJ0XywgIHVuc2lnbmVkIHNob3J0CW51bU9m
RW50cmllc18KLy8gCi8vIFJFVFVSTiBWQUxVRVM6ICB2b2lkCi8vIAovLz09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0gIAp2b2lkIENQTW9uRk1TZXJ2ZXI6OnVwZGF0ZVJlc0xvYWRSZXBvcnROdW1PZlJ1bm5hYmxl
UHJvYyh1bG9uZyB0aGVOdW1iZXJPZlJ1bm5hYmxlUHJvY3MpCnsKICAgcmVzTG9hZFJlcG9ydC5t
aXNjU3lzdGVtU3RhdHVzLk51bWJlck9mUnVubmFibGVQcm9jcyA9IHRoZU51bWJlck9mUnVubmFi
bGVQcm9jczsKfQoKCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAKLy8gCi8vIE5BTUU6IHVwZGF0ZVJlc0xv
YWRSZXBvcnRNZW1vcnkKLy8gCi8vIERFU0NSSVBUSU9OOiB1cGRhdGUgbWVtb3J5IGluZm9ybWF0
aW9uIGluIHRoZSB0YWJsZSAKLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5EIAovLyAg
ICAgICAgICAgICAgVXBkYXRlIGVudHJ5IGFzIHNwZWNpZmllZCBieSBwYXJhbWV0ZXIgbWlzY0J1
ZmZlcl8KLy8JCUlmIHRoZXJlIGlzIGFueSBmYXVsdCBkZXRlY3RlZCwgYSBmYXVsdCByZXBvcnQg
ZW50cnkKLy8JCWlzIGFkZGVkIHRvIHRoZSBhcE1udEZhdWx0UmVwb3J0XyBsaXN0Ci8vICAgICAg
ICAgICAgICAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKLy8gCi8vIFBBUkFNRVRFUlMgOiAgIGNoYXIJ
ICAqYnVmZmVyUHJ0XywgdW5zaWduZWQgc2hvcnQJbnVtT2ZFbnRyaWVzXwovLwovLyBSRVRVUk4g
VkFMVUVTOiAgIHZvaWQgCi8vCi8vIFJFVklTSU9OIEhJU1RPUlkgICAKLy8gICAgICAwNy8yMy85
OCBsZGluaCA6ICBmaXggcHJ0IDEyMjQ5MiAibm8gSVBSIGZvciBmdC1TUEFSQyBzb2Z0d2FyZSBm
YXVsdCBjbGVhcmFuY2UiIAovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAp2b2lkIENQTW9uRk1TZXJ2ZXI6
OnVwZGF0ZVJlc0xvYWRSZXBvcnRNZW1vcnkoIGludCB0aGVNZW1vcnlMb2FkKQp7CgogIGlmICgg
cmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLklkLklkQ29kZSA9PSAwKQogICAgewogICAgICBpZiAo
IHJlc0xvYWRSZXBvcnQubWVtb3J5TG9hZC5DdXJyZW50TGV2ZWwgPT0gLTEpCgl7CgkgIHJlc0xv
YWRSZXBvcnQubWVtb3J5TG9hZC5BdmVyYWdlT2ZMYXN0MiA9IHRoZU1lbW9yeUxvYWQ7Cgl9CiAg
ICAgIGVsc2UKCXsKCSAgcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLkF2ZXJhZ2VPZkxhc3QyID0g
KHJlc0xvYWRSZXBvcnQubWVtb3J5TG9hZC5DdXJyZW50TGV2ZWwgKyAKCQkJCQkJICAgICB0aGVN
ZW1vcnlMb2FkKSAvMjsKCX0gIAogICAgICBpbnNlcnRJblNhbXBsZUFycmF5KCByZXNMb2FkUmVw
b3J0Lm1lbW9yeUxvYWQuU2FtcGxlRGF0YSwgdGhlTWVtb3J5TG9hZCk7CiAgICAgIHJlc0xvYWRS
ZXBvcnQubWVtb3J5TG9hZC5BdmVyYWdlVmFsdWUgPSBzYW1wbGVBcnJheUF2ZXJhZ2UocmVzTG9h
ZFJlcG9ydC5tZW1vcnlMb2FkLlNhbXBsZURhdGEpOyAKICAgICAgcmVzTG9hZFJlcG9ydC5tZW1v
cnlMb2FkLkN1cnJlbnRMZXZlbCA9IHRoZU1lbW9yeUxvYWQ7CiAgICAgIGlmICggcmVzTG9hZFJl
cG9ydC5tZW1vcnlMb2FkLkF2ZXJhZ2VPZkxhc3QyID4gcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2Fk
LlRocmVzaG9sZCApCgl7CgkgIGlmICghcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLklzc3VlZE1l
bW9yeUluc3VmZklwcikgCgkgICAgewoJICAgICAgcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLklz
c3VlZE1lbW9yeUluc3VmZklwciA9IEFQX01OVF9JU1NVRV9JUFI7CSAgICAgIAoJICAgICAgZmF1
bHRSZXBvcnRJbnNlcnQoIEFTUF9DTV9NRU1PUllfSU5TVUZGLCBBUF9NTlRfQUxBUk1fT04sICIi
LCByZXNMb2FkUmVwb3J0Lm1lbW9yeUxvYWQuQXZlcmFnZU9mTGFzdDIsICIiLCAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMCwgcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLlRocmVz
aG9sZCk7CgkgICAgfQoJfQogICAgICBlbHNlIGlmICggcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2Fk
LkF2ZXJhZ2VPZkxhc3QyID4gcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLkNsZWFySVBSVGhyZXNo
b2xkICkKCXsKCSAgaWYocmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLklzc3VlZE1lbW9yeUluc3Vm
ZklwcikKCSAgICB7CgkgICAgICByZXNMb2FkUmVwb3J0Lm1lbW9yeUxvYWQuSXNzdWVkTWVtb3J5
SW5zdWZmSXByID0gQVBfTU5UX0NMRUFSX0lQUjsKCSAgICAgIGZhdWx0UmVwb3J0SW5zZXJ0KEFT
UF9DTV9NRU1PUllfSU5TVUZGLCBBUF9NTlRfQUxBUk1fT0ZGLCAiIiwgcmVzTG9hZFJlcG9ydC5t
ZW1vcnlMb2FkLkF2ZXJhZ2VPZkxhc3QyLCAiIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwICwgcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLkNsZWFySVBSVGhyZXNob2xkICk7
CgkgICAgICAKCSAgICB9Cgl9CiAgICB9Cn0KCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAKLy8gCi8vIE5B
TUU6IHJlc291cmNlVXNhZ2VSZXBvcnQoKQovLyAKLy8gREVTQ1JJUFRJT046IFJlY2VpdmUgcmVz
b3VyY2UgdXNhZ2UgaW5mb3JtYXRpb24sIHVwZGF0ZSByZXNvdXJjZSB1c2FnZSB0YWJsZQovLyAg
ICAgICAgICAgICAgCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCi8vIAovLyBQQVJBTUVURVJTOiBSZXNv
dXJjZUxvYWRVc2FnZQovLyAKLy8gUkVUVVJOIFZBTFVFUzogTm9uZS4gCi8vIAovLz09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0gIAp2b2lkIENQTW9uRk1TZXJ2ZXI6OnJlc291cmNlVXNhZ2VSZXBvcnQoUmVzb3Vy
Y2VMb2FkVXNhZ2UgdGhlUmVzb3VyY2VMb2FkVXNhZ2UpCnsKICB1cGRhdGVSZXNMb2FkUmVwb3J0
Q1BVVXNhZ2UoIHRoZVJlc291cmNlTG9hZFVzYWdlLiBjcHVVc2FnZSApOwogIHVwZGF0ZVJlc0xv
YWRSZXBvcnRNZW1Vc2FnZSggdGhlUmVzb3VyY2VMb2FkVXNhZ2UuIG1lbW9yeVVzYWdlKTsKICB1
cGRhdGVSZXNMb2FkUmVwb3J0TWlzY1VzYWdlKCB0aGVSZXNvdXJjZUxvYWRVc2FnZS5taXNjVXNh
Z2UgKTsKCiAgdGhlR1VJTWFuYWdlci0+cHJvY2Vzc1VzYWdlSW5mbyh0aGlzKTsKfQoKCi8vPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PSAKLy8gCi8vIE5BTUU6IHNodXREb3duKCkKLy8gCi8vIERFU0NSSVBUSU9O
OiAgU2VuZCB0aGUgc2h1dCBkb3duIHJlcXVlc3QKLy8gICAgICAgICAgICAgIAovLz09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0gIAovLyAKLy8gUEFSQU1FVEVSUyA6IHZvaWQKLy8gCi8vIFJFVFVSTiBWQUxVRVM6
IHZvaWQKLy8gCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCnZvaWQgQ1BNb25GTVNlcnZlcjo6c2h1dERv
d24oKQp7CiAgZmF1bHRSZXBvcnQuY2xlYXJBbmREZXN0cm95KCk7CgogIHJlc0xvYWRSZXBvcnQu
ZGlza0xvYWQubGlzdC5jbGVhckFuZERlc3Ryb3koKTsgCiAgcmVzTG9hZFJlcG9ydC5maWxlU3lz
dGVtQ2FwYWNpdHkubGlzdC5jbGVhckFuZERlc3Ryb3koKTsgCiAgcmVzTG9hZFJlcG9ydC5jcHVM
b2FkLmxpc3QuY2xlYXJBbmREZXN0cm95KCk7IAogIHJlc0xvYWRSZXBvcnQuY3B1VXNhZ2UubGlz
dC5jbGVhckFuZERlc3Ryb3koKTsKICByZXNMb2FkUmVwb3J0Lm1lbW9yeVVzYWdlLmxpc3QuY2xl
YXJBbmREZXN0cm95KCk7CiAKICBsb2dTdGF0dXNJbmZvLmRpc2suY2xlYXJBbmREZXN0cm95KCk7
IAogIGxvZ1N0YXR1c0luZm8uZmlsZVN5c3RlbS5jbGVhckFuZERlc3Ryb3koKTsgCiAgbG9nU3Rh
dHVzSW5mby5jcHUuY2xlYXJBbmREZXN0cm95KCk7IAogIGxvZ1N0YXR1c0luZm8ubWVtb3J5LmNs
ZWFyQW5kRGVzdHJveSgpOyAKICBsb2dTdGF0dXNJbmZvLnN3YXBTcGFjZS5jbGVhckFuZERlc3Ry
b3koKTsgCiAgbG9nU3RhdHVzSW5mby5jcHVVc2FnZS5jbGVhckFuZERlc3Ryb3koKTsgCiAgbG9n
U3RhdHVzSW5mby5tZW1vcnlVc2FnZS5jbGVhckFuZERlc3Ryb3koKTsgCgogIHRoZUdVSU1hbmFn
ZXIgPSBOVUxMOyAKICB0aGVDUE1vbkZJU09SZXBvcnQgPSBOVUxMOwovL3ByYWJoYSAxMC8xNy8w
MSBwb3J0ZWQgdG8gU003LjAKICAvLyBDUE1vbkZNU2VydmVyOjp+Q1BNb25GTVNlcnZlcigpOyAK
fQoKCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PSAKLy8gCi8vIE5BTUU6IHVwZGF0ZVJlc0xvYWRSZXBvcnRN
aXNjVXNhZ2UKLy8gCi8vIERFU0NSSVBUSU9OOiAgdXBkYXRlIG1pc2MuIHVzYWdlIGluZm9ybWF0
aW9uIGluIHJlc291cmNlIGxvYWQgcmVwb3J0IHRhYmxlCi8vICAgICAgICAgICAgICAKLy89PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ICAKLy8gCi8vIEFSR1VNRU5UUzogCi8vIAovLyBSRVRVUk4gVkFMVUVTOiBO
b25lLiAKLy8gCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCnZvaWQgQ1BNb25GTVNlcnZlcjo6dXBkYXRl
UmVzTG9hZFJlcG9ydE1pc2NVc2FnZShSZXNvdXJjZUxvYWRVc2FnZUJhc2VNaXNjICBtaXNjVXNh
Z2UpCnsKICByZXNMb2FkUmVwb3J0Lm1lbW9yeVVzYWdlLk90aGVyVXNhZ2UgPSBtaXNjVXNhZ2Uu
T3RoZXJNZW1vcnlVc2FnZTsKICByZXNMb2FkUmVwb3J0Lm1lbW9yeVVzYWdlLklkbGVVc2FnZSA9
IG1pc2NVc2FnZS5JZGxlTWVtb3J5VXNhZ2U7CiAgcmVzTG9hZFJlcG9ydC5jcHVVc2FnZS5PdGhl
clVzYWdlID0gbWlzY1VzYWdlLk90aGVyQ1BVVXNhZ2U7CiAgcmVzTG9hZFJlcG9ydC5jcHVVc2Fn
ZS5JZGxlVXNhZ2UgPSBtaXNjVXNhZ2UuSWRsZUNQVVVzYWdlOyAKfQoKLy89PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09IAovLyAKLy8gTkFNRTogdXBkYXRlUmVzTG9hZFJlcG9ydE1lbVVzYWdlCi8vIAovLyBERVND
UklQVElPTjogIHVwZGF0ZSBtZW1vcnkgdXNhZ2UgaW5mb3JtYXRpb24gaW4gcmVzb3VyY2UgbG9h
ZCByZXBvcnQgdGFibGUKLy8gICAgICAgICAgICAgIAovLz09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAovLyAK
Ly8gUEFSQU1FVEVSUyAgICAgICAgICAgOiAgIGNoYXIgICpidWZmZXJQcnRfLCB1bnNpZ25lZCBz
aG9ydAludW1PZkVudHJpZXNfCi8vIAovLyBSRVRVUk4gVkFMVUVTOiB2b2lkCi8vIAovLz09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0gIAp2b2lkIENQTW9uRk1TZXJ2ZXI6OnVwZGF0ZVJlc0xvYWRSZXBvcnRNZW1V
c2FnZSggQ1BNb25TaW5nbGVMaW5rTGlzdDxSZXNvdXJjZUxvYWRVc2FnZUJhc2U+ICBtZW1Vc2Fn
ZSkKewogIHVuc2lnbmVkIHNob3J0ICB0bXBMZW5ndGggOwogIFJlc0xvYWRSZXBvcnRVc2FnZUJh
c2Ugc3JjSXRlbTsKICBSZXNvdXJjZUxvYWRVc2FnZUJhc2UgdG1wSXRlbTsKCiAgcmVzTG9hZFJl
cG9ydC5tZW1vcnlVc2FnZS5saXN0LmNsZWFyQW5kRGVzdHJveSgpOwogIHRtcExlbmd0aCA9IG1l
bVVzYWdlLmVudHJpZXMoKTsKCiAgZm9yKGludCBpaT0wOyBpaTwgdG1wTGVuZ3RoOyBpaSsrKQog
ICAgeyAgICAgCiAgICAgIHRtcEl0ZW0gPSBtZW1Vc2FnZS5nZXRJdGVtKGlpKTsKICAgICAgc3Jj
SXRlbS5JZC5JZENvZGUgPSBpaTsKICAgICAgc3JjSXRlbS5Qcm9jZXNzSUQgPSB0bXBJdGVtLlBy
b2Nlc3NJZDsKICAgICAgc3JjSXRlbS5Vc2FnZSA9IChmbG9hdCkgdG1wSXRlbS5NZW1vcnlVc2Fn
ZTsgCiAgICAgIHN0cmNweShzcmNJdGVtLlByb2Nlc3NOYW1lLCB0bXBJdGVtLlByb2dyYW1OYW1l
KTsKICAgICAgc3RyY3B5KHNyY0l0ZW0uQ29tbWFuZExpbmVBcmd1bWVudCwgdG1wSXRlbS5Db21t
YW5kTGluZSk7CiAgICAgIHJlc0xvYWRSZXBvcnQubWVtb3J5VXNhZ2UubGlzdC5hZGRJdGVtKHNy
Y0l0ZW0pOwogICAgfQp9CgoKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IAovLyAKLy8gTkFNRTogdXBkYXRl
UmVzTG9hZFJlcG9ydENQVSAgIAovLyAKLy8gREVTQ1JJUFRJT046ICB1cGRhdGUgY3B1IHVzYWdl
IGluZm9ybWF0aW9uIGluIHJlc291cmNlIGxvYWQgcmVwb3J0IHRhYmxlIAovLyAgICAgICAgICAg
ICAgCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PSAgCi8vIAovLyBQQVJBTUVURVJTICAgICAgICAgIAovLyAK
Ly8gUkVUVVJOIFZBTFVFUzogdm9pZAovLyAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKdm9pZCBDUE1v
bkZNU2VydmVyOjp1cGRhdGVSZXNMb2FkUmVwb3J0Q1BVVXNhZ2UoIENQTW9uU2luZ2xlTGlua0xp
c3Q8UmVzb3VyY2VMb2FkVXNhZ2VCYXNlPiAgY3B1VXNhZ2UpCnsKICB1bnNpZ25lZCBzaG9ydCAg
dG1wTGVuZ3RoIDsKICBSZXNMb2FkUmVwb3J0VXNhZ2VCYXNlIHNyY0l0ZW07CiAgUmVzb3VyY2VM
b2FkVXNhZ2VCYXNlIHRtcEl0ZW07CgogIHJlc0xvYWRSZXBvcnQuY3B1VXNhZ2UubGlzdC5jbGVh
ckFuZERlc3Ryb3koKTsKICB0bXBMZW5ndGggPSBjcHVVc2FnZS5lbnRyaWVzKCk7CgogIGZvcihp
bnQgaWk9MDsgaWk8IHRtcExlbmd0aDsgaWkrKykKICAgIHsgICAgIAogICAgICB0bXBJdGVtID0g
Y3B1VXNhZ2UuZ2V0SXRlbShpaSk7CiAgICAgIAogICAgICBzcmNJdGVtLklkLklkQ29kZSA9IGlp
OwogICAgICBzcmNJdGVtLlByb2Nlc3NJRCA9IHRtcEl0ZW0uUHJvY2Vzc0lkOwogICAgICBzcmNJ
dGVtLlVzYWdlID0gKGZsb2F0KSB0bXBJdGVtLkNQVVVzYWdlOyAKICAgICAgc3RyY3B5KHNyY0l0
ZW0uUHJvY2Vzc05hbWUsIHRtcEl0ZW0uUHJvZ3JhbU5hbWUpOwogICAgICBzdHJjcHkoc3JjSXRl
bS5Db21tYW5kTGluZUFyZ3VtZW50LCB0bXBJdGVtLkNvbW1hbmRMaW5lKTsKICAgICAgcmVzTG9h
ZFJlcG9ydC5jcHVVc2FnZS5saXN0LmFkZEl0ZW0oc3JjSXRlbSk7CiAgICB9Cn0KCi8vPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PSAKLy8gCi8vIE5BTUU6IGZtQ29uc3RydWN0UmVzTG9hZFJlcG9ydENQVQovLyAK
Ly8gREVTQ1JJUFRJT046IGNvbnN0cnVjdCByZXNvdXJjZSBsb2FkIHJlcG9ydCwgQ1BVIHNlY3Rp
b24KLy8gICAgICAgICAgICAgIAovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAovLyAKLy8gQVJHVU1FTlRT
OiBSZXNvdXJjZUxvYWRDUFVVRGVmQ2xhc3MgJmFnZW50VGFibGVfLCBpbnQgc2FtcGxlTG9hZExl
bmd0aF8KLy8gCi8vIFJFVFVSTiBWQUxVRVM6IHZvaWQKLy8gCi8vPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAg
CnZvaWQgQ1BNb25GTVNlcnZlcjo6Y29uc3RydWN0UmVzTG9hZFJlcG9ydENQVSggQ1BNb25TaW5n
bGVMaW5rTGlzdDxSZXNvdXJjZUxvYWRCYXNlQ1BVPiBhZ2VudFRhYmxlXywgaW50IHNhbXBsZUxv
YWRMZW5ndGhfICAgKQp7CiAgdW5zaWduZWQgc2hvcnQJbGVuZ3RoOwogIHVuc2lnbmVkIHNob3J0
CWlpOwogIC8vICBBcE1udFJlc291cmNlTG9hZEJhc2VDUFUJCWFuSXRlbTsKICAKICBSZXNMb2Fk
UmVwb3J0Q1BVQmFzZQlhbkl0ZW07IAogIFJlc291cmNlTG9hZEJhc2VDUFUgICB0bXBJdGVtOwoK
ICBsZW5ndGggPSBhZ2VudFRhYmxlXy5lbnRyaWVzKCk7CiAgZm9yICggaWk9MDsgaWk8bGVuZ3Ro
OyBpaSsrKQogICAgewogICAgICAvKiAgICAgIF9jcHV0bXBJdGVtID0gYWdlbnRUYWJsZV8uZ2V0
SXRlbShpaSk7CgkgICAgICBfY3B1SXRlbS5BdmVyYWdlVmFsdWUgPSAtMSA7CgkgICAgICBfY3B1
SXRlbS5DdXJyZW50TGV2ZWwgPSAtMTsKCSAgICAgIF9jcHVJdGVtLkF2ZXJhZ2VPZkxhc3QyID0g
LTEgOwoJICAgICAgc3RyY3B5KF9jcHVJdGVtLk5hbWUsIF9jcHV0bXBJdGVtLkl0ZW1OYW1lICk7
IAoJICAgICAgX2NwdUl0ZW0uSWQuQ2xhc3NDb2RlID0gQVBfTU5UX1JFU09VUkNFQ0xBU1NfQ1BV
OwoJICAgICAgX2NwdUl0ZW0uSWQuSWRDb2RlID0gX2NwdXRtcEl0ZW0uSXRlbUlkOwoJICAgICAg
Zm9yKCBpbnQgeXkgPSAwOyB5eSAgPCBzYW1wbGVMb2FkTGVuZ3RoXzsgeXkrKykKCSAgICAgIHsK
CSAgICAgIF9jcHVJdGVtLlNhbXBsZURhdGEuc2FtcGxlQXJyYXkuYWRkSXRlbSggaW50KDApKTsK
CSAgICAgIH0KCSAgICAgIF9jcHVJdGVtLlNhbXBsZURhdGEuc3RhcnQgPSAwOwoJICAgICAgX2Nw
dUl0ZW0uU2FtcGxlRGF0YS5uZXh0ID0gMDsKCSAgICAgIF9jcHVJdGVtLlNhbXBsZURhdGEubWF4
TGVuZ3RoID0gMDsKCSAgICAgIF9jcHVJdGVtLlNhbXBsZURhdGEubGVuZ3RoID0gMDsKCSAgICAg
IF9jcHVJdGVtLlNhbXBsZURhdGEubWF4TGVuZ3RoID0gc2FtcGxlTG9hZExlbmd0aF87IAoJICAg
ICAgCgkgICAgICByZXNMb2FkUmVwb3J0LmNwdUxvYWQubGlzdC5hZGRJdGVtKF9jcHVJdGVtKTsq
LwogICAgICB0bXBJdGVtID0gYWdlbnRUYWJsZV8uZ2V0SXRlbShpaSk7CiAgICAgIGFuSXRlbS5B
dmVyYWdlVmFsdWUgPSAtMSA7CiAgICAgIGFuSXRlbS5DdXJyZW50TGV2ZWwgPSAtMTsKICAgICAg
YW5JdGVtLkF2ZXJhZ2VPZkxhc3QyID0gLTEgOwogICAgICBzdHJjcHkoYW5JdGVtLk5hbWUsIHRt
cEl0ZW0uSXRlbU5hbWUgKTsgCiAgICAgIGFuSXRlbS5JZC5DbGFzc0NvZGUgPSBBUF9NTlRfUkVT
T1VSQ0VDTEFTU19DUFU7CiAgICAgIGFuSXRlbS5JZC5JZENvZGUgPSB0bXBJdGVtLkl0ZW1JZDsK
ICAgICAgZm9yKCBpbnQgeXkgPSAwOyB5eSAgPCBzYW1wbGVMb2FkTGVuZ3RoXzsgeXkrKykKCXsK
CSAgYW5JdGVtLlNhbXBsZURhdGEuc2FtcGxlQXJyYXkuYWRkSXRlbSggaW50KDApKTsKCX0KICAg
ICAgYW5JdGVtLlNhbXBsZURhdGEuc3RhcnQgPSAwOwogICAgICBhbkl0ZW0uU2FtcGxlRGF0YS5u
ZXh0ID0gMDsKICAgICAgYW5JdGVtLlNhbXBsZURhdGEubWF4TGVuZ3RoID0gMDsKICAgICAgYW5J
dGVtLlNhbXBsZURhdGEubGVuZ3RoID0gMDsKICAgICAgYW5JdGVtLlNhbXBsZURhdGEubWF4TGVu
Z3RoID0gc2FtcGxlTG9hZExlbmd0aF87IAogICAgICAKICAgICAgcmVzTG9hZFJlcG9ydC5jcHVM
b2FkLmxpc3QuYWRkSXRlbShhbkl0ZW0pOwogICAgfQogCn0KCgovLz09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0g
Ci8vIAovLyBOQU1FOiBmbUNvbnN0cnVjdFJlc0xvYWRSZXBvcnRGaWxlU3lzdGVtCi8vIAovLyBE
RVNDUklQVElPTjogY29uc3RydWN0IHJlc291cmNlIGxvYWQgcmVwb3J0LCBmaWxlIHN5c3RlbSBz
ZWN0aW9uCi8vICAgICAgICAgICAgICAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKLy8gCi8vIFBBUkFN
RVRFUlMgOiBBcE1udFJlc291cmNlTG9hZEZpbGVTeXN0ZW1VRGVmQ2xhc3MgJmFnZW50VGFibGVf
Ci8vIAovLyBSRVRVUk4gVkFMVUVTOiB2b2lkIAovLyAKLy89PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKdm9p
ZCBDUE1vbkZNU2VydmVyOjpjb25zdHJ1Y3RSZXNMb2FkUmVwb3J0RmlsZVN5c3RlbSggQ1BNb25T
aW5nbGVMaW5rTGlzdDxSZXNvdXJjZUxvYWRCYXNlRmlsZVN5c3RlbT4gIGFnZW50VGFibGVfICkK
ewogIHVuc2lnbmVkIHNob3J0CWxlbmd0aDsKICB1bnNpZ25lZCBzaG9ydAlpaTsKIAogIFJlc0xv
YWRSZXBvcnRGaWxlU3lzdGVtQmFzZSBhbkl0ZW07IAogIFJlc291cmNlTG9hZEJhc2VGaWxlU3lz
dGVtIHRtcEl0ZW07CgogIGxlbmd0aCA9IGFnZW50VGFibGVfLmVudHJpZXMoKTsKICBmb3IgKCBp
aT0wOyBpaTxsZW5ndGg7IGlpKyspCiAgICB7CiAgICAgIC8qCglfZmlsZXRtcEl0ZW0gPSBhZ2Vu
dFRhYmxlXy5nZXRJdGVtKGlpKTsKCV9maWxlSXRlbS5UaHJlc2hvbGQgPSAtMSA7IAoJX2ZpbGVJ
dGVtLkF2YWlsYWJsZVNwYWNlID0gLTEgOwoJX2ZpbGVJdGVtLkN1cnJlbnRMZXZlbCA9IC0xIDsK
CV9maWxlSXRlbS5Jc3N1ZWRGaWxlU3lzSXByID0gMDsKCXN0cmNweShfZmlsZUl0ZW0uTmFtZSwg
X2ZpbGV0bXBJdGVtLkl0ZW1OYW1lKTsKCXN0cmNweShfZmlsZUl0ZW0uRGV2aWNlTmFtZSwgX2Zp
bGV0bXBJdGVtLkRpc2tOYW1lICk7CglfZmlsZUl0ZW0uSWQuQ2xhc3NDb2RlID0gQVBfTU5UX1JF
U09VUkNFQ0xBU1NfRklMRVNZU1RFTTsKCV9maWxlSXRlbS5JZC5JZENvZGUgPSBfZmlsZXRtcEl0
ZW0uSXRlbUlkOwoJcmVzTG9hZFJlcG9ydC5maWxlU3lzdGVtQ2FwYWNpdHkubGlzdC5hZGRJdGVt
KF9maWxlSXRlbSk7Ki8KICAgICAgdG1wSXRlbSA9IGFnZW50VGFibGVfLmdldEl0ZW0oaWkpOwog
ICAgICBhbkl0ZW0uVGhyZXNob2xkID0gLTEgOyAKICAgICAgYW5JdGVtLkF2YWlsYWJsZVNwYWNl
ID0gLTEgOwogICAgICBhbkl0ZW0uQ3VycmVudExldmVsID0gLTEgOwogICAgICBhbkl0ZW0uSXNz
dWVkRmlsZVN5c0lwciA9IDA7CiAgICAgIHN0cmNweShhbkl0ZW0uTmFtZSwgdG1wSXRlbS5JdGVt
TmFtZSk7CiAgICAgIHN0cmNweShhbkl0ZW0uRGV2aWNlTmFtZSwgdG1wSXRlbS5EaXNrTmFtZSAp
OwogICAgICBhbkl0ZW0uSWQuQ2xhc3NDb2RlID0gQVBfTU5UX1JFU09VUkNFQ0xBU1NfRklMRVNZ
U1RFTTsKICAgICAgYW5JdGVtLklkLklkQ29kZSA9IHRtcEl0ZW0uSXRlbUlkOwogICAgICByZXNM
b2FkUmVwb3J0LmZpbGVTeXN0ZW1DYXBhY2l0eS5saXN0LmFkZEl0ZW0oYW5JdGVtKTsKICAgIH0K
fQoKCgovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0gCi8vIAovLyBOQU1FOiBmbUNvbnN0cnVjdFJlc0xvYWRS
ZXBvcnREaXNrCi8vIAovLyBERVNDUklQVElPTjogY29uc3RydWN0IHJlc291cmNlIGxvYWQgcmVw
b3J0IHRhYmxlLCBkaXNrIHNlY3Rpb24KLy8gICAgICAgICAgICAgIAovLz09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0gIAovLyAKLy8gUEFSQU1FVEVSUyAgIDogIFJlc291cmNlTG9hZERpc2tVRGVmQ2xhc3MgICZh
Z2VudFRhYmxlXywgaW50ICBzYW1wbGVMb2FkTGVuZ3RoXwovLyAKLy8gUkVUVVJOIFZBTFVFUzog
dm9pZCAKLy8gCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCnZvaWQgQ1BNb25GTVNlcnZlcjo6Y29uc3Ry
dWN0UmVzTG9hZFJlcG9ydERpc2soIENQTW9uU2luZ2xlTGlua0xpc3Q8UmVzb3VyY2VMb2FkQmFz
ZURpc2s+ICBhZ2VudFRhYmxlXywgaW50ICBzYW1wbGVMb2FkTGVuZ3RoXyApCnsKICB1bnNpZ25l
ZCBzaG9ydCAgICAgbGVuZ3RoOwogIHVuc2lnbmVkIHNob3J0ICAgICBpaTsKIAogIFJlc291cmNl
TG9hZEJhc2VEaXNrICB0bXBJdGVtOwogIFJlc0xvYWRSZXBvcnREaXNrQmFzZSAgYW5JdGVtOwog
IAogIGxlbmd0aCA9IGFnZW50VGFibGVfLmVudHJpZXMoKTsKICBmb3IgKCBpaT0wOyBpaTxsZW5n
dGg7IGlpKyspCiAgICB7CiAgICAgIC8qICAgX2Rpc2t0bXBJdGVtID0gYWdlbnRUYWJsZV8uZ2V0
SXRlbShpaSk7CgkgICBfZGlza0l0ZW0uQXZlcmFnZVZhbHVlID0gLTEgOwoJICAgX2Rpc2tJdGVt
LkN1cnJlbnRMZXZlbCA9IC0xIDsKCSAgIF9kaXNrSXRlbS5BdmVyYWdlT2ZMYXN0MiA9IC0xIDsK
CSAgIF9kaXNrSXRlbS5Jc3N1ZWREaXNrT3ZlcmxvYWRJcHIgPSAwIDsJCQkKCSAgIHN0cmNweShf
ZGlza0l0ZW0uTmFtZSxfZGlza3RtcEl0ZW0uSXRlbU5hbWUpOwoJICAgX2Rpc2tJdGVtLklkLkNs
YXNzQ29kZSA9IEFQX01OVF9SRVNPVVJDRUNMQVNTX0RJU0s7CgkgICBfZGlza0l0ZW0uSWQuSWRD
b2RlID0gX2Rpc2t0bXBJdGVtLkl0ZW1JZDsKCSAgIGZvciggaW50IHl5ID0gMDsgeXkgIDwgc2Ft
cGxlTG9hZExlbmd0aF87IHl5KyspCgkgICB7CgkgICBfZGlza0l0ZW0uU2FtcGxlRGF0YS5zYW1w
bGVBcnJheS5hZGRJdGVtKGludCgwKSk7CgkgICB9CgkgICBfZGlza0l0ZW0uU2FtcGxlRGF0YS5z
dGFydCA9IDA7CgkgICBfZGlza0l0ZW0uU2FtcGxlRGF0YS5uZXh0ID0gMDsKCSAgIF9kaXNrSXRl
bS5TYW1wbGVEYXRhLm1heExlbmd0aCA9IDA7CgkgICBfZGlza0l0ZW0uU2FtcGxlRGF0YS5sZW5n
dGggPSAwOwoJICAgX2Rpc2tJdGVtLlNhbXBsZURhdGEubWF4TGVuZ3RoID0gc2FtcGxlTG9hZExl
bmd0aF87IAoJICAgcmVzTG9hZFJlcG9ydC5kaXNrTG9hZC5saXN0LmFkZEl0ZW0oX2Rpc2tJdGVt
KTsKICAgICAgKi8KICAgICAgdG1wSXRlbSA9IGFnZW50VGFibGVfLmdldEl0ZW0oaWkpOwogICAg
ICBhbkl0ZW0uQXZlcmFnZVZhbHVlID0gLTEgOwogICAgICBhbkl0ZW0uQ3VycmVudExldmVsID0g
LTEgOwogICAgICBhbkl0ZW0uQXZlcmFnZU9mTGFzdDIgPSAtMSA7CiAgICAgIGFuSXRlbS5Jc3N1
ZWREaXNrT3ZlcmxvYWRJcHIgPSAwIDsJCQkKICAgICAgc3RyY3B5KGFuSXRlbS5OYW1lLHRtcEl0
ZW0uSXRlbU5hbWUpOwogICAgICBhbkl0ZW0uSWQuQ2xhc3NDb2RlID0gQVBfTU5UX1JFU09VUkNF
Q0xBU1NfRElTSzsKICAgICAgYW5JdGVtLklkLklkQ29kZSA9IHRtcEl0ZW0uSXRlbUlkOwogICAg
ICBmb3IoIGludCB5eSA9IDA7IHl5ICA8IHNhbXBsZUxvYWRMZW5ndGhfOyB5eSsrKQoJewoJICBh
bkl0ZW0uU2FtcGxlRGF0YS5zYW1wbGVBcnJheS5hZGRJdGVtKGludCgwKSk7Cgl9CiAgICAgIGFu
SXRlbS5TYW1wbGVEYXRhLnN0YXJ0ID0gMDsKICAgICAgYW5JdGVtLlNhbXBsZURhdGEubmV4dCA9
IDA7CiAgICAgIGFuSXRlbS5TYW1wbGVEYXRhLm1heExlbmd0aCA9IDA7CiAgICAgIGFuSXRlbS5T
YW1wbGVEYXRhLmxlbmd0aCA9IDA7CiAgICAgIGFuSXRlbS5TYW1wbGVEYXRhLm1heExlbmd0aCA9
IHNhbXBsZUxvYWRMZW5ndGhfOyAKICAgICByZXNMb2FkUmVwb3J0LmRpc2tMb2FkLmxpc3QuYWRk
SXRlbShhbkl0ZW0pOwoKICAgIH0KfQoKCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAKLy8gCi8vIE5BTUU6
IGZtVXBkYXRlVGhyZXNob2xkSW5mbwovLyAKLy8gREVTQ1JJUFRJT046IEluc2VydCB0aHJlc2hv
bGQgaW5mb3JtYXRpb24gaW50byB0aGUgcmVzb3VyY2UgbG9hZCByZXBvcnQgdGFibGUuCi8vICAg
ICAgICAgICAgICAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKLy8gCi8vIFBBUkFNRVRFUlMgICAgICAg
ICAgIDogQXBNbnRUaHJlc2hvbGRzICZ0aHJlc2hvbGRMaXN0XyAKLy8gCi8vIFJFVFVSTiBWQUxV
RVM6IE5vbmUuIAovLyAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKdm9pZCBDUE1vbkZNU2VydmVyOjp1
cGRhdGVUaHJlc2hvbGRJbmZvKCBDUE1vbkZNQ29uZmlnSW5mbyB0aHJlc2hvbGRJbmZvICkKewog
IHJlc0xvYWRSZXBvcnQuY3B1TG9hZC5UaHJlc2hvbGQgPSB0aHJlc2hvbGRJbmZvLnRocmVzaG9s
ZHMuQ1BVTG9hZDsKICByZXNMb2FkUmVwb3J0LmRpc2tMb2FkLlRocmVzaG9sZCA9IHRocmVzaG9s
ZEluZm8udGhyZXNob2xkcy5EaXNrTG9hZDsKICByZXNMb2FkUmVwb3J0Lm1lbW9yeUxvYWQuVGhy
ZXNob2xkID0gdGhyZXNob2xkSW5mby50aHJlc2hvbGRzLk1lbW9yeUxvYWQ7CiAgcmVzTG9hZFJl
cG9ydC5zd2FwU3BhY2VMb2FkLlRocmVzaG9sZCA9IHRocmVzaG9sZEluZm8udGhyZXNob2xkcy5T
d2FwU3BhY2VMb2FkOwogIHJlc0xvYWRSZXBvcnQubWlzY1N5c3RlbVN0YXR1cy5OdW1iZXJPZkJs
b2NrZWRQcm9jc1RocmVzaG9sZCA9IHRocmVzaG9sZEluZm8udGhyZXNob2xkcy5OdW1iZXJPZkJs
b2NrZWRQcm9jczsKICByZXNMb2FkUmVwb3J0Lm1pc2NTeXN0ZW1TdGF0dXMuTnVtYmVyT2ZSdW5u
YWJsZVByb2NzVGhyZXNob2xkID0gdGhyZXNob2xkSW5mby50aHJlc2hvbGRzLk51bWJlck9mUnVu
bmFibGVQcm9jczsKCgogIHJlc0xvYWRSZXBvcnQuY3B1TG9hZC5DbGVhcklQUlRocmVzaG9sZCA9
IHRocmVzaG9sZEluZm8udGhyZXNob2xkcy5DUFVMb2FkOwogIHJlc0xvYWRSZXBvcnQuZGlza0xv
YWQuQ2xlYXJJUFJUaHJlc2hvbGQgPSB0aHJlc2hvbGRJbmZvLnRocmVzaG9sZHMuRGlza0xvYWQ7
CiAgcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLkNsZWFySVBSVGhyZXNob2xkID0gdGhyZXNob2xk
SW5mby50aHJlc2hvbGRzLk1lbW9yeUxvYWQ7CiAgcmVzTG9hZFJlcG9ydC5zd2FwU3BhY2VMb2Fk
LkNsZWFySVBSVGhyZXNob2xkID0gdGhyZXNob2xkSW5mby50aHJlc2hvbGRzLlN3YXBTcGFjZUxv
YWQ7CiAgcmVzTG9hZFJlcG9ydC5taXNjU3lzdGVtU3RhdHVzLkJsb2NrZWRQcm9jc0NsZWFySVBS
VGhyZXNob2xkID0gdGhyZXNob2xkSW5mby50aHJlc2hvbGRzLk51bWJlck9mQmxvY2tlZFByb2Nz
OwogIHJlc0xvYWRSZXBvcnQubWlzY1N5c3RlbVN0YXR1cy5SdW5uYWJsZVByb2NzQ2xlYXJJUFJU
aHJlc2hvbGQgPSB0aHJlc2hvbGRJbmZvLnRocmVzaG9sZHMuTnVtYmVyT2ZSdW5uYWJsZVByb2Nz
OwoKCiAgRmlsZVN5c3RlbVRocmVzaG9sZEJhc2UgdG1wSXRlbTE7CiAgUmVzTG9hZFJlcG9ydEZp
bGVTeXN0ZW1CYXNlIHRtcEl0ZW0yOwoKICBpbnQgbGVuZ3RoID0gIHRocmVzaG9sZEluZm8udGhy
ZXNob2xkcy5maWxlU3lzdGVtQ2FwYWNpdHkuZW50cmllcygpOwoKICBmb3IgKCBpbnQgaWkgPSAw
OyBpaTxsZW5ndGg7IGlpKyspCiAgICB7CiAgICAgIHRtcEl0ZW0xID0gdGhyZXNob2xkSW5mby50
aHJlc2hvbGRzLmZpbGVTeXN0ZW1DYXBhY2l0eS5nZXRJdGVtKGlpKTsKICAgICAgaWYgKCBzdHJj
bXAoIChjb25zdCBjaGFyICopKHRtcEl0ZW0xLlBhdGhOYW1lKSwgImRlZmF1bHQiKSA9PSAwKQoJ
ewogICAgICAgICAgaW50IG51bUVudHJ5ID0gcmVzTG9hZFJlcG9ydC5maWxlU3lzdGVtQ2FwYWNp
dHkubGlzdC5lbnRyaWVzKCk7CiAgICAgICAgICBmb3IoIGludCBqaiA9IDAgOyBqajwgbnVtRW50
cnk7IGpqKyspCgkgICAgewoKICAgICAgICAgICAgICAgdG1wSXRlbTIgPSByZXNMb2FkUmVwb3J0
LmZpbGVTeXN0ZW1DYXBhY2l0eS5saXN0LmdldEl0ZW0oamopOwoJICAgICAgIGlmICggdG1wSXRl
bTIuVGhyZXNob2xkID09IC0xKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
ICB0bXBJdGVtMi5UaHJlc2hvbGQgPSB0bXBJdGVtMS5UaHJlc2hvbGQ7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICB9Cgl9CiAgICAgIGVsc2UKCXsKCSAgaW50IG51bUVudHJ5ID0gcmVz
TG9hZFJlcG9ydC5maWxlU3lzdGVtQ2FwYWNpdHkubGlzdC5lbnRyaWVzKCk7CiAgICAgICAgICBm
b3IoIGludCBqaiA9IDA7IGpqPCBudW1FbnRyeTsgamorKykKCSAgICB7CgkgICAgICB0bXBJdGVt
MiA9IHJlc0xvYWRSZXBvcnQuZmlsZVN5c3RlbUNhcGFjaXR5Lmxpc3QuZ2V0SXRlbShqaik7CiAg
ICAgICAgICAgICAgaWYgKCAhc3RyY21wKCB0bXBJdGVtMS5QYXRoTmFtZSwgdG1wSXRlbTIuTmFt
ZSkgKQoJCXsKCQkgIHRtcEl0ZW0yLlRocmVzaG9sZCA9IHRtcEl0ZW0xLlRocmVzaG9sZDsKCQkg
IGJyZWFrOwkJCgkJfQkgICAgICAKICAgICAgICAgICAgfQoJfQogICAgfQp9CgoKLy89PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09IAovLyAKLy8gTkFNRTogYmxvY2tlZElPRmF1bHREZXRlY3QKLy8gCi8vIERFU0NS
SVBUSU9OOiBkZXRlY3QgQmxvY2tlZElPIGZhdWx0LCBhbmQgSW5zdWZmaWNpZW50IENQVSBwb3dl
ciBmYXVsdC4KLy8gICAgICAgICAgICAgIAovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAovLyAKLy8gUEFS
QU1FVEVSUyAgICB2b2lkICAgICAgIAovLyAKLy8gUkVUVVJOIFZBTFVFUzogIHZvaWQKLy8gCi8v
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PSAgCnZvaWQgQ1BNb25GTVNlcnZlcjo6YmxvY2tlZElPRmF1bHREZXRl
Y3QoKQp7CiAgaW50CQludW1PZkJsb2NrZWRQcm9jczsKICBpbnQJCW51bU9mUnVubmFibGVQcm9j
czsKICBpbnQJCXRoZVRocmVzaG9sZDsKICBpbnQgICAgICAgICAgIGNsZWFySVBSVGhyZXNob2xk
OwogIGludAkJbnVtT2ZDUFU7CiAKICAvLyBEZXRlY3QgYmxvY2tlZCBJTyBmYXVsdAogIG51bU9m
QmxvY2tlZFByb2NzID0gcmVzTG9hZFJlcG9ydC5taXNjU3lzdGVtU3RhdHVzLk51bWJlck9mQmxv
Y2tlZFByb2NzOwogIG51bU9mUnVubmFibGVQcm9jcyA9IHJlc0xvYWRSZXBvcnQubWlzY1N5c3Rl
bVN0YXR1cy5OdW1iZXJPZlJ1bm5hYmxlUHJvY3M7CiAgdGhlVGhyZXNob2xkID0gcmVzTG9hZFJl
cG9ydC5taXNjU3lzdGVtU3RhdHVzLk51bWJlck9mQmxvY2tlZFByb2NzVGhyZXNob2xkOwogIGNs
ZWFySVBSVGhyZXNob2xkID0gcmVzTG9hZFJlcG9ydC5taXNjU3lzdGVtU3RhdHVzLkJsb2NrZWRQ
cm9jc0NsZWFySVBSVGhyZXNob2xkOwogIGlmICggKG51bU9mQmxvY2tlZFByb2NzIC0gbnVtT2ZS
dW5uYWJsZVByb2NzLzIpID4gdGhlVGhyZXNob2xkICkKICAgIHsKICAgICBpZiggICEgcmVzTG9h
ZFJlcG9ydC5taXNjU3lzdGVtU3RhdHVzLklzc3VlZEJsb2NrZWRJT0lwciAgICkKCXsKICAgICAg
ICAgICByZXNMb2FkUmVwb3J0Lm1pc2NTeXN0ZW1TdGF0dXMuSXNzdWVkQmxvY2tlZElPSXByID0g
QVBfTU5UX0lTU1VFX0lQUiA7CiAgICAgICAgICAgZmF1bHRSZXBvcnRJbnNlcnQoQVNQX0NNX0JM
T0NLRURfSU8sQVBfTU5UX0FMQVJNX09OLCIiLG51bU9mQmxvY2tlZFByb2NzLCAiIiwKICAgICAg
ICAgICBudW1PZlJ1bm5hYmxlUHJvY3MsIHRoZVRocmVzaG9sZCk7CSAKCX0KICAgICB9CiAgZWxz
ZSAgaWYgKCAobnVtT2ZCbG9ja2VkUHJvY3MgLSBudW1PZlJ1bm5hYmxlUHJvY3MvMikgPD0gIGNs
ZWFySVBSVGhyZXNob2xkICApCiAgICB7CiAgICAgaWYoIHJlc0xvYWRSZXBvcnQubWlzY1N5c3Rl
bVN0YXR1cy5Jc3N1ZWRCbG9ja2VkSU9JcHIgKQoJewogICAgICAgICAgcmVzTG9hZFJlcG9ydC5t
aXNjU3lzdGVtU3RhdHVzLklzc3VlZEJsb2NrZWRJT0lwciA9IEFQX01OVF9DTEVBUl9JUFIgOwog
ICAgICAgICAgZmF1bHRSZXBvcnRJbnNlcnQoQVNQX0NNX0JMT0NLRURfSU8sQVBfTU5UX0FMQVJN
X09GRiwgIiIsbnVtT2ZCbG9ja2VkUHJvY3MsCgkJCSIiLG51bU9mUnVubmFibGVQcm9jcywgY2xl
YXJJUFJUaHJlc2hvbGQpOyAgCgl9CiAgICB9CiAgICAKfQoKLy89PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IAov
LyAKLy8gTkFNRTogaW5zdWZmQ1BVcG93ZXJEZXRlY3QKLy8gCi8vIERFU0NSSVBUSU9OOiBkZXRl
Y3QgaW5zdWZmaWNpZW50IENQVSBwb3dlciBCbG9ja2VkSU8gZmF1bHQKLy8gICAgICAgICAgICAg
IAovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0gIAovLyAKLy8gUEFSQU1FVEVSUyAgICB2b2lkICAgICAgIAov
LyAKLy8gUkVUVVJOIFZBTFVFUzogIHZvaWQKLy8gCi8vPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCnZvaWQg
Q1BNb25GTVNlcnZlcjo6aW5zdWZmQ1BVcG93ZXJEZXRlY3QoKQp7CiAgLy8gRGV0ZWN0IGluc3Vm
ZmljaWVudCBDUFUgcG93ZXIKICBpbnQgbnVtT2ZDUFUgPSByZXNMb2FkUmVwb3J0Lm1pc2NTeXN0
ZW1TdGF0dXMuTnVtYmVyT2ZDUFVzOwogIGludCB0aGVUaHJlc2hvbGQgPSByZXNMb2FkUmVwb3J0
Lm1pc2NTeXN0ZW1TdGF0dXMuTnVtYmVyT2ZSdW5uYWJsZVByb2NzVGhyZXNob2xkOwogIGludCBj
bGVhcklQUlRocmVzaG9sZCA9ICByZXNMb2FkUmVwb3J0Lm1pc2NTeXN0ZW1TdGF0dXMuUnVubmFi
bGVQcm9jc0NsZWFySVBSVGhyZXNob2xkOwogIGludCBudW1PZlJ1bm5hYmxlUHJvY3MgPSByZXNM
b2FkUmVwb3J0Lm1pc2NTeXN0ZW1TdGF0dXMuTnVtYmVyT2ZSdW5uYWJsZVByb2NzOwoKICBpZiAo
IChpbnQpKG51bU9mUnVubmFibGVQcm9jcy9udW1PZkNQVSArIDAuNSkgPiB0aGVUaHJlc2hvbGQg
KQogICAgewogICAgIGlmKCAhIHJlc0xvYWRSZXBvcnQubWlzY1N5c3RlbVN0YXR1cy5Jc3N1ZWRD
cHVQb3dlckluc3VmZklwciAgKQogICAgICAgewogICAgICAgIHJlc0xvYWRSZXBvcnQubWlzY1N5
c3RlbVN0YXR1cy5Jc3N1ZWRDcHVQb3dlckluc3VmZklwciA9IEFQX01OVF9JU1NVRV9JUFIgOwog
ICAgICAgIGZhdWx0UmVwb3J0SW5zZXJ0KEFTUF9DTV9DUFVfUE9XRVJfSU5TVUZGLEFQX01OVF9B
TEFSTV9PTiwiIiwgbnVtT2ZSdW5uYWJsZVByb2NzLAoJCQkiIiwgbnVtT2ZDUFUsdGhlVGhyZXNo
b2xkKTsgCgl9CiAgICB9CiAgZWxzZSAgaWYgKCAoaW50KShudW1PZlJ1bm5hYmxlUHJvY3MvbnVt
T2ZDUFUgKyAwLjUpIDw9IGNsZWFySVBSVGhyZXNob2xkICkKICAgIHsKICAgICBpZiggcmVzTG9h
ZFJlcG9ydC5taXNjU3lzdGVtU3RhdHVzLklzc3VlZENwdVBvd2VySW5zdWZmSXByICkKICAgICAg
IHsKICAgICAgICByZXNMb2FkUmVwb3J0Lm1pc2NTeXN0ZW1TdGF0dXMuSXNzdWVkQ3B1UG93ZXJJ
bnN1ZmZJcHIgPSBBUF9NTlRfQ0xFQVJfSVBSIDsKICAgICAgICBmYXVsdFJlcG9ydEluc2VydChB
U1BfQ01fQ1BVX1BPV0VSX0lOU1VGRixBUF9NTlRfQUxBUk1fT0ZGLCAiIiwgbnVtT2ZSdW5uYWJs
ZVByb2NzLAoJCQkiIiwgbnVtT2ZDUFUsIGNsZWFySVBSVGhyZXNob2xkKTsgIAoJfQogICAgfQog
ICAgCn0KCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PSAKLy8gCi8vIE5BTUU6IGluc2VydEluU2FtcGxlQXJy
YXkgCi8vIAovLyBERVNDUklQVElPTjogQWRkIG5ldyBsb2FkIHZhbHVlIHRvIHRoZSBhcnJheQov
LyAgICAgICAgICAgICAgCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCi8vIAovLyBQQVJBTUVURVJTICAg
ICAgICAgCi8vIAovLyBSRVRVUk4gVkFMVUVTOiAgdm9pZAovLyAKLy89PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ICAKdm9pZCBDUE1vbkZNU2VydmVyOjppbnNlcnRJblNhbXBsZUFycmF5KExvYWRTYW1wbGVBcnJh
eSAmIGVudHJ5UHRyLCBpbnQgbmV3SXRlbSkKewogIGlmICggZW50cnlQdHIubGVuZ3RoIDwgZW50
cnlQdHIubWF4TGVuZ3RoICkKICAgIHsKICAgICAgKGVudHJ5UHRyLnNhbXBsZUFycmF5LmdldEl0
ZW0oZW50cnlQdHIubmV4dCkpID0gbmV3SXRlbTsKICAgICAgZW50cnlQdHIubGVuZ3RoKys7CiAg
ICAgIGlmICggKytlbnRyeVB0ci5uZXh0ID49IGVudHJ5UHRyLm1heExlbmd0aCkKCXsKCSAgZW50
cnlQdHIubmV4dCA9IDA7Cgl9CiAgICB9CiAgZWxzZQogICAgewogICAgICAvLyByZWFjaGVkIG1h
eC4gb2YgdGhlIGFycmF5CiAgICAgIGlmICggKytlbnRyeVB0ci5zdGFydCA+PSBlbnRyeVB0ci5t
YXhMZW5ndGggKQoJewoJICBlbnRyeVB0ci5zdGFydCA9IDA7Cgl9CiAgICAgIGVudHJ5UHRyLmxl
bmd0aC0tOwogICAgICBpbnNlcnRJblNhbXBsZUFycmF5KGVudHJ5UHRyLG5ld0l0ZW0pOwogICAg
fSAgIAp9CgovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0gCi8vIAovLyBOQU1FOiBzYW1wbGVBcnJheUF2ZXJh
Z2UKLy8gCi8vIERFU0NSSVBUSU9OOiBDYWxjdWxhdGUgdGhlIGF2ZXJhZ2Ugb2YgdmFsdWVzIGlu
IHRoZSBhcnJheQovLyAgICAgICAgICAgICAgCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCi8vIAovLyBQ
QVJBTUVURVJTICAgICAgICAgCi8vIAovLyBSRVRVUk4gVkFMVUVTOiAgdm9pZAovLyAKLy89PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ICAKaW50IENQTW9uRk1TZXJ2ZXI6OnNhbXBsZUFycmF5QXZlcmFnZSggTG9h
ZFNhbXBsZUFycmF5ICYgZW50cnlQdHIpCnsKICBpbnQgCQkJCXN1bTsKICB1bnNpZ25lZCBzaG9y
dAlpaTsKICBpbnQJCQkJYXZlcmFnZTsKIAogIHN1bSA9IDA7CiAgaWYgKCBlbnRyeVB0ci5zdGFy
dCA8IGVudHJ5UHRyLm5leHQgKQogICAgewogICAgICBmb3IgKCBpaT0gZW50cnlQdHIuc3RhcnQ7
IGlpPCBlbnRyeVB0ci5uZXh0OyBpaSsrKQoJewoJICBzdW0gPSBzdW0gKyAoZW50cnlQdHIuc2Ft
cGxlQXJyYXkuZ2V0SXRlbShpaSkpIDsgCgl9CiAgICB9CiAgZWxzZQogICAgewogICAgICBmb3Ig
KCBpaT0gZW50cnlQdHIuc3RhcnQ7IGlpPCBlbnRyeVB0ci5tYXhMZW5ndGg7IGlpKyspCgl7Cgkg
IHN1bSA9IHN1bSArIChlbnRyeVB0ci5zYW1wbGVBcnJheS5nZXRJdGVtKGlpKSk7Cgl9CiAgICAg
IGZvciAoIGlpPTA7IGlpPGVudHJ5UHRyLm5leHQ7IGlpKyspCgl7CgkgIHN1bSA9IHN1bSArIChl
bnRyeVB0ci5zYW1wbGVBcnJheS5nZXRJdGVtKGlpKSk7IAoJfQogICAgfQogIGF2ZXJhZ2UgPSBz
dW0gLyBlbnRyeVB0ci5sZW5ndGg7CiAgcmV0dXJuIGF2ZXJhZ2U7IAp9CgoKLy89PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09IAovLyAKLy8gTkFNRTogZGV0ZWN0VW5ldmVuTG9hZCgpCi8vIAovLyBERVNDUklQVElP
TjogQ2FsY3VsYXRlIHRoZSBhdmVyYWdlIG9mIHZhbHVlcyBpbiB0aGUgYXJyYXkKLy8gICAgICAg
ICAgICAgIAovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAovLyAKLy8gUEFSQU1FVEVSUyAgICAgICAgIAov
LyAKLy8gUkVUVVJOIFZBTFVFUzogIHZvaWQKLy8KLy8gUkVWSVNJT04gSElTVE9SWSAgIAovLyAg
ICAgICAxMS0yMy05OCBsZGluaCA6IGZpeGVkIFBSVCAxMjc1NDIgIlZBUFMgZG9lcyBub3QgcmVw
b3J0IENQVSBVTkVWRU4gTE9BRC4iIAovLyAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKdm9pZCAgQ1BN
b25GTVNlcnZlcjo6ZGV0ZWN0VW5ldmVuTG9hZCgpCnsKICBSZXNMb2FkUmVwb3J0Q1BVQmFzZQlh
bkl0ZW07CiAgUmVzTG9hZFJlcG9ydENQVUJhc2UJdGFyZ2V0SXRlbTsKICB1bnNpZ25lZCBzaG9y
dAlpaSwgamosIGxlbmd0aDsKICAKICBsZW5ndGggPSByZXNMb2FkUmVwb3J0LmNwdUxvYWQubGlz
dC5lbnRyaWVzKCk7CiAgZm9yICggaWk9MDsgaWk8bGVuZ3RoO2lpKyspCiAgICB7CiAgICAgIGFu
SXRlbSA9IHJlc0xvYWRSZXBvcnQuY3B1TG9hZC5saXN0LmdldEl0ZW0oaWkpOwogICAgICBpZiAo
IGFuSXRlbS5BdmVyYWdlT2ZMYXN0MiA+IHJlc0xvYWRSZXBvcnQuY3B1TG9hZC5UaHJlc2hvbGQg
KQoJewoJICAvLyBmb3VuZCB0aGUgb25lIHRoYXQncyBncmVhdGVyIHRoYW4gdGhyZXNob2xkLCBs
b29wIHRocm91Z2h0CgkgIC8vIGFnYWluIGFuZCBmaW5kIG9uZSB0aGF0IGlzIGJlbG93IGhhbGYg
b2YgdGhyZXNob2xkCgkgIGZvciAoIGpqPTA7IGpqPGxlbmd0aDsgamorKykKCSAgICB7CgkgICAg
ICB0YXJnZXRJdGVtID0gcmVzTG9hZFJlcG9ydC5jcHVMb2FkLmxpc3QuZ2V0SXRlbShqaik7ICAK
CSAgICAgIGlmICggdGFyZ2V0SXRlbS5BdmVyYWdlT2ZMYXN0MiA8ICgwLjUqcmVzTG9hZFJlcG9y
dC5jcHVMb2FkLlRocmVzaG9sZCkgKQoJCXsKCQkgIGlmICghcmVzTG9hZFJlcG9ydC5jcHVMb2Fk
Lklzc3VlZFVuZXZlbkxvYWRJcHIpIAoJCSAgICB7CgkJICAgICAgcmVzTG9hZFJlcG9ydC5jcHVM
b2FkLklzc3VlZFVuZXZlbkxvYWRJcHIgPSBBUF9NTlRfSVNTVUVfSVBSIDsKCQkgICAgICBmYXVs
dFJlcG9ydEluc2VydChBU1BfQ01fQ1BVX1VORVZFTl9MT0FELCBBUF9NTlRfQUxBUk1fT04sIGFu
SXRlbS5OYW1lLAoJCQlhbkl0ZW0uQXZlcmFnZU9mTGFzdDIsIHRhcmdldEl0ZW0uTmFtZSwgdGFy
Z2V0SXRlbS5BdmVyYWdlT2ZMYXN0MiwKCQkJcmVzTG9hZFJlcG9ydC5jcHVMb2FkLlRocmVzaG9s
ZCk7ICAKCQkgICAgfQoJCX0KCSAgICAgIGVsc2UKCQl7CgkJICBpZihyZXNMb2FkUmVwb3J0LmNw
dUxvYWQuSXNzdWVkVW5ldmVuTG9hZElwcikKCQkgICAgewoJCSAgICAgIHJlc0xvYWRSZXBvcnQu
Y3B1TG9hZC5Jc3N1ZWRVbmV2ZW5Mb2FkSXByID0gQVBfTU5UX0NMRUFSX0lQUiA7CgkJICAgICAg
ZmF1bHRSZXBvcnRJbnNlcnQoQVNQX0NNX0NQVV9VTkVWRU5fTE9BRCwgQVBfTU5UX0FMQVJNX09G
RiwgYW5JdGVtLk5hbWUsCgkJCSBhbkl0ZW0uQXZlcmFnZU9mTGFzdDIsIHRhcmdldEl0ZW0uTmFt
ZSwgdGFyZ2V0SXRlbS5BdmVyYWdlT2ZMYXN0MiwKCQkJIHJlc0xvYWRSZXBvcnQuY3B1TG9hZC5U
aHJlc2hvbGQpOyAKCQkgICAgfQoJCX0KCSAgICB9Cgl9IAogICAgfQogIAp9ICAKICAKLy89PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09IAovLyAKLy8gTkFNRTogZmF1bHRSZXBvcnRJbnNlcnQKLy8gCi8vIERFU0NS
SVBUSU9OOiBBcHBlbmQgYW4gZWxlbWVudCB0byB0aGUgRmF1bHRSZXBvciBMaXN0Ci8vICAgICAg
ICAgICAgICAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKLy8gCi8vIFBBUkFNRVRFUlMgICAgICAgICAK
Ly8gCi8vIFJFVFVSTiBWQUxVRVM6ICB2b2lkCi8vIAovLz09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAp2b2lk
IENQTW9uRk1TZXJ2ZXI6OmZhdWx0UmVwb3J0SW5zZXJ0KGludCBmYXVsdFR5cGVfICwgaW50IGFs
YXJtU3RhdHVzXywgY29uc3QgY2hhciAqIGRldmljZTFfLCAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgdmFsdWUxXywgY29uc3QgY2hhciAqIGRldmljZTJfLCBpbnQg
dmFsdWUyXywgaW50IHRocmVzaG9sZF8gKQp7CiAgRmF1bHRSZXBvcnRCYXNlICAgYW5JdGVtIDsK
ICBhbkl0ZW0uRmF1bHRUeXBlID0gZmF1bHRUeXBlXzsKICBhbkl0ZW0uYWxhcm1BY3Rpb24gPSBh
bGFybVN0YXR1c187CiAgc3RyY3B5KGFuSXRlbS5EZXZpY2UxLGRldmljZTFfKTsKICBhbkl0ZW0u
VmFsdWUxID0gdmFsdWUxXzsKICBzdHJjcHkoYW5JdGVtLkRldmljZTIsIGRldmljZTJfKTsKICBh
bkl0ZW0uVmFsdWUyID0gdmFsdWUyXzsKICBhbkl0ZW0uVGhyZXNob2xkID0gdGhyZXNob2xkXzsK
ICBmYXVsdFJlcG9ydC5hZGRJdGVtKGFuSXRlbSk7IAp9Cgo=


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]