[PATCH 2 of 2] Remove unused classes
Wald Commits
scm-commit at wald.intevation.org
Tue Jan 16 18:50:46 CET 2018
IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIFRvbSBHb3R0ZnJpZWQgPHRvbUBpbnRldmF0aW9u
LmRlPgojIERhdGUgMTUxNjEyNDM5MiAtMzYwMAojIE5vZGUgSUQgNmE0YmRjY2NmYTRkZmE1YzVj
MGU4YTY1NDQ1ODBkZDkzMGU1ZTI4ZQojIFBhcmVudCAgODlkY2FhZTA4MDFjYzJmYTFhZTkxNjM2
NDNkMzMyM2YwMzY0MmM1NwpSZW1vdmUgdW51c2VkIGNsYXNzZXMuCgpUaGUgU2VkREIgaGliZXJu
YXRlIG1vZGVsIGlzIG5vdCB1c2VkIGFueXdoZXJlIGFuZCBtaWdodCBiZSBvdXRkYXRlZC4KCmRp
ZmYgLXIgODlkY2FhZTA4MDFjIC1yIDZhNGJkY2NjZmE0ZCBiYWNrZW5kL3NyYy9tYWluL2phdmEv
b3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZlci9iYWNrZW5kL1NlZERCQ3JlZGVudGlhbHMuamF2YQot
LS0gYS9iYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvYmFja2Vu
ZC9TZWREQkNyZWRlbnRpYWw9CnMuamF2YQlUdWUgSmFuIDE2IDE4OjEzOjU0IDIwMTggKzAxMDAK
KysrIGIvYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnRzL3JpdmVyL2JhY2tl
bmQvU2VkREJDcmVkZW50aWFsPQpzLmphdmEJVHVlIEphbiAxNiAxODozOTo1MiAyMDE4ICswMTAw
CkBAIC0xMCw1OCArMTAsNiBAQAo9MjAKIGltcG9ydCBvcmcuZGl2ZTRlbGVtZW50cy5hcnRpZmFj
dHMuY29tbW9uLnV0aWxzLkNvbmZpZzsKPTIwCi1pbXBvcnQgb3JnLmRpdmU0ZWxlbWVudHMucml2
ZXIuc2VkZGIubW9kZWwuQmV6dWdzcGVnZWw7Ci1pbXBvcnQgb3JnLmRpdmU0ZWxlbWVudHMucml2
ZXIuc2VkZGIubW9kZWwuQmV6dWdzcGVnZWxnZXc7Ci1pbXBvcnQgb3JnLmRpdmU0ZWxlbWVudHMu
cml2ZXIuc2VkZGIubW9kZWwuQmV6dWdzcGVnZWxnZXdJZDsKLWltcG9ydCBvcmcuZGl2ZTRlbGVt
ZW50cy5yaXZlci5zZWRkYi5tb2RlbC5CaWxkOwotaW1wb3J0IG9yZy5kaXZlNGVsZW1lbnRzLnJp
dmVyLnNlZGRiLm1vZGVsLkdld2Flc3NlcjsKLWltcG9ydCBvcmcuZGl2ZTRlbGVtZW50cy5yaXZl
ci5zZWRkYi5tb2RlbC5HZmFlbmdlcjsKLWltcG9ydCBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5z
ZWRkYi5tb2RlbC5HbG90bGlua3M7Ci1pbXBvcnQgb3JnLmRpdmU0ZWxlbWVudHMucml2ZXIuc2Vk
ZGIubW9kZWwuR2xvdGxpbmtzSWQ7Ci1pbXBvcnQgb3JnLmRpdmU0ZWxlbWVudHMucml2ZXIuc2Vk
ZGIubW9kZWwuR2xvdHJlY2h0ZTsKLWltcG9ydCBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRk
Yi5tb2RlbC5HcHJvYmU7Ci1pbXBvcnQgb3JnLmRpdmU0ZWxlbWVudHMucml2ZXIuc2VkZGIubW9k
ZWwuR3Byb2JlSWQ7Ci1pbXBvcnQgb3JnLmRpdmU0ZWxlbWVudHMucml2ZXIuc2VkZGIubW9kZWwu
R3NpZWJzYXR6OwotaW1wb3J0IG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRiLm1vZGVsLkdz
aWVidW5nOwotaW1wb3J0IG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRiLm1vZGVsLkdzaWVi
dW5nc2llYjsKLWltcG9ydCBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2RlbC5Hc2ll
YnVuZ3NpZWJJZDsKLWltcG9ydCBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2RlbC5I
cGVpbHB1bmt0OwotaW1wb3J0IG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRiLm1vZGVsLkhw
ZWlscHVua3RJZDsKLWltcG9ydCBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2RlbC5I
cGVpbHVuZzsKLWltcG9ydCBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2RlbC5NZXNz
dW5nOwotaW1wb3J0IG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRiLm1vZGVsLk1lc3N1bmds
b3Rjb3VudDsKLWltcG9ydCBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2RlbC5NZXNz
dW5nbG90Y291bnRJZDsKLWltcG9ydCBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2Rl
bC5NZXNzdW5nc3RhOwotaW1wb3J0IG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRiLm1vZGVs
Lk1lc3N1bmdzdGFJZDsKLWltcG9ydCBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2Rl
bC5NZXNzdW5ndWZlcmJlenVnOwotaW1wb3J0IG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRi
Lm1vZGVsLk1lc3N1bmd1ZmVyYmV6dWdJZDsKLWltcG9ydCBvcmcuZGl2ZTRlbGVtZW50cy5yaXZl
ci5zZWRkYi5tb2RlbC5NcGVpbHB1bmt0OwotaW1wb3J0IG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVy
LnNlZGRiLm1vZGVsLk1wZWlscHVua3RJZDsKLWltcG9ydCBvcmcuZGl2ZTRlbGVtZW50cy5yaXZl
ci5zZWRkYi5tb2RlbC5NcGVpbHVuZzsKLWltcG9ydCBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5z
ZWRkYi5tb2RlbC5Qcm9iZWJpbGQ7Ci1pbXBvcnQgb3JnLmRpdmU0ZWxlbWVudHMucml2ZXIuc2Vk
ZGIubW9kZWwuU2llYmFuYWx5c2U7Ci1pbXBvcnQgb3JnLmRpdmU0ZWxlbWVudHMucml2ZXIuc2Vk
ZGIubW9kZWwuU2xvdGxpbmtzOwotaW1wb3J0IG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRi
Lm1vZGVsLlNsb3RsaW5rc0lkOwotaW1wb3J0IG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRi
Lm1vZGVsLlNsb3RyZWNodGU7Ci1pbXBvcnQgb3JnLmRpdmU0ZWxlbWVudHMucml2ZXIuc2VkZGIu
bW9kZWwuU29obHByb2JlOwotaW1wb3J0IG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRiLm1v
ZGVsLlNvaGx0ZXN0OwotaW1wb3J0IG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRiLm1vZGVs
LlNwcm9iZTsKLWltcG9ydCBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2RlbC5TcHJv
YmVJZDsKLWltcG9ydCBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2RlbC5Tc2llYnVu
ZzsKLWltcG9ydCBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2RlbC5Tc2llYnVuZ3Np
ZWI7Ci1pbXBvcnQgb3JnLmRpdmU0ZWxlbWVudHMucml2ZXIuc2VkZGIubW9kZWwuU3NpZWJ1bmdz
aWViSWQ7Ci1pbXBvcnQgb3JnLmRpdmU0ZWxlbWVudHMucml2ZXIuc2VkZGIubW9kZWwuU3RhdGlv
bjsKLWltcG9ydCBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2RlbC5TdGF0aW9uZ2V3
OwotaW1wb3J0IG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRiLm1vZGVsLlN0YXRpb25nZXdJ
ZDsKLWltcG9ydCBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2RlbC5UbXBHbG9DaGFu
Z2VkOwotaW1wb3J0IG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRiLm1vZGVsLlRtcE1lc0Fj
aGFuZ2VkOwotaW1wb3J0IG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRiLm1vZGVsLlRtcE1l
c0djaGFuZ2VkOwotaW1wb3J0IG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRiLm1vZGVsLlRt
cE1lc1FjaGFuZ2VkOwotaW1wb3J0IG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRiLm1vZGVs
LlRtcE1lc1NjaGFuZ2VkOwotaW1wb3J0IG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRiLm1v
ZGVsLlp6YXJjaGl2OwotaW1wb3J0IG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRiLm1vZGVs
Llp6cHJvYmVuYWhtZWFydDsKLWltcG9ydCBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5t
b2RlbC5aenNvbmRpZXJ1bmdhcnQ7Ci1pbXBvcnQgb3JnLmRpdmU0ZWxlbWVudHMucml2ZXIuc2Vk
ZGIubW9kZWwuWnp0aGVtYTsKPTIwCiBwdWJsaWMgY2xhc3MgU2VkREJDcmVkZW50aWFscwogZXh0
ZW5kcyAgICAgIENyZWRlbnRpYWxzCkBAIC0xMjIsNjAgKzcwLDcgQEAKICAgICBwdWJsaWMgc3Rh
dGljIGZpbmFsIFN0cmluZyBERUZBVUxUX01BWF9XQUlUID0zRAogICAgICAgICBTeXN0ZW0uZ2V0
UHJvcGVydHkoImZseXMuc2VkZGIuY29ubmVjdGlvbi5tYXgud2FpdCIpOwo9MjAKLSAgICBwdWJs
aWMgc3RhdGljIGZpbmFsIENsYXNzIFtdIENMQVNTRVMgPTNEIHsKLSAgICAgICAgQmV6dWdzcGVn
ZWxnZXdJZC5jbGFzcywKLSAgICAgICAgQmV6dWdzcGVnZWxnZXcuY2xhc3MsCi0gICAgICAgIEJl
enVnc3BlZ2VsLmNsYXNzLAotICAgICAgICBCaWxkLmNsYXNzLAotICAgICAgICBHZXdhZXNzZXIu
Y2xhc3MsCi0gICAgICAgIEdmYWVuZ2VyLmNsYXNzLAotICAgICAgICBHbG90bGlua3NJZC5jbGFz
cywKLSAgICAgICAgR2xvdGxpbmtzLmNsYXNzLAotICAgICAgICBHbG90cmVjaHRlLmNsYXNzLAot
ICAgICAgICBHcHJvYmVJZC5jbGFzcywKLSAgICAgICAgR3Byb2JlLmNsYXNzLAotICAgICAgICBH
c2llYnNhdHouY2xhc3MsCi0gICAgICAgIEdzaWVidW5nLmNsYXNzLAotICAgICAgICBHc2llYnVu
Z3NpZWJJZC5jbGFzcywKLSAgICAgICAgR3NpZWJ1bmdzaWViLmNsYXNzLAotICAgICAgICBIcGVp
bHB1bmt0SWQuY2xhc3MsCi0gICAgICAgIEhwZWlscHVua3QuY2xhc3MsCi0gICAgICAgIEhwZWls
dW5nLmNsYXNzLAotICAgICAgICBNZXNzdW5nLmNsYXNzLAotICAgICAgICBNZXNzdW5nbG90Y291
bnRJZC5jbGFzcywKLSAgICAgICAgTWVzc3VuZ2xvdGNvdW50LmNsYXNzLAotICAgICAgICBNZXNz
dW5nc3RhSWQuY2xhc3MsCi0gICAgICAgIE1lc3N1bmdzdGEuY2xhc3MsCi0gICAgICAgIE1lc3N1
bmd1ZmVyYmV6dWdJZC5jbGFzcywKLSAgICAgICAgTWVzc3VuZ3VmZXJiZXp1Zy5jbGFzcywKLSAg
ICAgICAgTXBlaWxwdW5rdElkLmNsYXNzLAotICAgICAgICBNcGVpbHB1bmt0LmNsYXNzLAotICAg
ICAgICBNcGVpbHVuZy5jbGFzcywKLSAgICAgICAgUHJvYmViaWxkLmNsYXNzLAotICAgICAgICBT
aWViYW5hbHlzZS5jbGFzcywKLSAgICAgICAgU2xvdGxpbmtzSWQuY2xhc3MsCi0gICAgICAgIFNs
b3RsaW5rcy5jbGFzcywKLSAgICAgICAgU2xvdHJlY2h0ZS5jbGFzcywKLSAgICAgICAgU29obHBy
b2JlLmNsYXNzLAotICAgICAgICBTb2hsdGVzdC5jbGFzcywKLSAgICAgICAgU3Byb2JlSWQuY2xh
c3MsCi0gICAgICAgIFNwcm9iZS5jbGFzcywKLSAgICAgICAgU3NpZWJ1bmcuY2xhc3MsCi0gICAg
ICAgIFNzaWVidW5nc2llYklkLmNsYXNzLAotICAgICAgICBTc2llYnVuZ3NpZWIuY2xhc3MsCi0g
ICAgICAgIFN0YXRpb25nZXdJZC5jbGFzcywKLSAgICAgICAgU3RhdGlvbmdldy5jbGFzcywKLSAg
ICAgICAgU3RhdGlvbi5jbGFzcywKLSAgICAgICAgVG1wR2xvQ2hhbmdlZC5jbGFzcywKLSAgICAg
ICAgVG1wTWVzQWNoYW5nZWQuY2xhc3MsCi0gICAgICAgIFRtcE1lc0djaGFuZ2VkLmNsYXNzLAot
ICAgICAgICBUbXBNZXNRY2hhbmdlZC5jbGFzcywKLSAgICAgICAgVG1wTWVzU2NoYW5nZWQuY2xh
c3MsCi0gICAgICAgIFp6YXJjaGl2LmNsYXNzLAotICAgICAgICBaenByb2JlbmFobWVhcnQuY2xh
c3MsCi0gICAgICAgIFp6c29uZGllcnVuZ2FydC5jbGFzcywKLSAgICAgICAgWnp0aGVtYS5jbGFz
cwotICAgIH07CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBDbGFzcyBbXSBDTEFTU0VTID0zRCB7
fTsKPTIwCiAgICAgcHJpdmF0ZSBzdGF0aWMgQ3JlZGVudGlhbHMgaW5zdGFuY2U7Cj0yMApkaWZm
IC1yIDg5ZGNhYWUwODAxYyAtciA2YTRiZGNjY2ZhNGQgYmFja2VuZC9zcmMvbWFpbi9qYXZhL29y
Zy9kaXZlNGVsZW1lbnQ9CnMvcml2ZXIvc2VkZGIvbW9kZWwvQmV6dWdzcGVnZWwuamF2YQotLS0g
YS9iYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9k
ZWwvQmV6dWdzcGVnZWw9Ci5qYXZhCVR1ZSBKYW4gMTYgMTg6MTM6NTQgMjAxOCArMDEwMAorKysg
L2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwyOTQgKzAsMCBA
QAotLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1D
Mz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IElu
dGV2YXRpb24gR21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRo
ZSBHTlUgQUdQTCAoPj0zRHYzKQotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJS
QU5UWSEgQ2hlY2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVs
ZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLgotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVu
dHMucml2ZXIuc2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBi
eSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmEubWF0aC5CaWdEZWNp
bWFsOwotaW1wb3J0IGphdmEudXRpbC5EYXRlOwotaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0Owot
aW1wb3J0IGphdmEudXRpbC5TZXQ7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOwot
aW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5j
ZS5GZXRjaFR5cGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7Ci1pbXBvcnQgamF2YXgu
cGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5NYW55VG9P
bmU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuT25lVG9NYW55OwotaW1wb3J0IGphdmF4LnBl
cnNpc3RlbmNlLlRhYmxlOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRlbXBvcmFsOwotaW1w
b3J0IGphdmF4LnBlcnNpc3RlbmNlLlRlbXBvcmFsVHlwZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0
ZW5jZS5VbmlxdWVDb25zdHJhaW50OwotCi0vKioKLSAqIEJlenVnc3BlZ2VsIGdlbmVyYXRlZCBi
eSBoYm0yamF2YQotICovCi1ARW50aXR5Ci1AVGFibGUobmFtZT0zRCJCRVpVR1NQRUdFTCIKLSAg
ICAsc2NoZW1hPTNEIlNFRERCIgotICAgICwgdW5pcXVlQ29uc3RyYWludHMgPTNEIEBVbmlxdWVD
b25zdHJhaW50KGNvbHVtbk5hbWVzPTNEeyJHRVdBRVNTRVJJRCI9CiwgIk5BTUUifSkKLSkKLXB1
YmxpYyBjbGFzcyBCZXp1Z3NwZWdlbCAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7
Ci0KLQotICAgICBwcml2YXRlIGxvbmcgYmV6dWdzcGVnZWxpZDsKLSAgICAgcHJpdmF0ZSBHZXdh
ZXNzZXIgZ2V3YWVzc2VyOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwga207Ci0gICAgIHByaXZh
dGUgU3RyaW5nIG5hbWU7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBudWxscHVua3Q7Ci0gICAg
IHByaXZhdGUgU3RyaW5nIGtlbm51bmc7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBlaW56dWdz
Z2ViaWV0OwotICAgICBwcml2YXRlIERhdGUgaW5iZXRyaWViOwotICAgICBwcml2YXRlIFN0cmlu
ZyBmbGllc3NjaGFyYWt0ZXI7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBsYXVmZW50d2lja2x1
bmc7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtbnE7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1h
bCBtcTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1ocTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNp
bWFsIG5ucTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGhocTsKLSAgICAgcHJpdmF0ZSBEYXRl
IG5ucWRhdHVtOwotICAgICBwcml2YXRlIERhdGUgaGhxZGF0dW07Ci0gICAgIHByaXZhdGUgU3Ry
aW5nIGphaHJlc3JlaWhlOwotICAgICBwcml2YXRlIFN0cmluZyBiZW1lcmt1bmc7Ci0gICAgIHBy
aXZhdGUgU2V0PFN0YXRpb24+IHN0YXRpb25zID0zRCBuZXcgSGFzaFNldDxTdGF0aW9uPigwKTsK
LQotICAgIHB1YmxpYyBCZXp1Z3NwZWdlbCgpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgQmV6dWdz
cGVnZWwobG9uZyBiZXp1Z3NwZWdlbGlkLCBHZXdhZXNzZXIgZ2V3YWVzc2VyLCBCaWdEZWNpbWFs
PQoga20sIFN0cmluZyBuYW1lLCBCaWdEZWNpbWFsIG51bGxwdW5rdCkgewotICAgICAgICB0aGlz
LmJlenVnc3BlZ2VsaWQgPTNEIGJlenVnc3BlZ2VsaWQ7Ci0gICAgICAgIHRoaXMuZ2V3YWVzc2Vy
ID0zRCBnZXdhZXNzZXI7Ci0gICAgICAgIHRoaXMua20gPTNEIGttOwotICAgICAgICB0aGlzLm5h
bWUgPTNEIG5hbWU7Ci0gICAgICAgIHRoaXMubnVsbHB1bmt0ID0zRCBudWxscHVua3Q7Ci0gICAg
fQotICAgIHB1YmxpYyBCZXp1Z3NwZWdlbChsb25nIGJlenVnc3BlZ2VsaWQsIEdld2Flc3NlciBn
ZXdhZXNzZXIsIEJpZ0RlY2ltYWw9CiBrbSwgU3RyaW5nIG5hbWUsIEJpZ0RlY2ltYWwgbnVsbHB1
bmt0LCBTdHJpbmcga2VubnVuZywgQmlnRGVjaW1hbCBlaW56dWdzZz0KZWJpZXQsIERhdGUgaW5i
ZXRyaWViLCBTdHJpbmcgZmxpZXNzY2hhcmFrdGVyLCBCaWdEZWNpbWFsIGxhdWZlbnR3aWNrbHVu
ZywgPQpCaWdEZWNpbWFsIG1ucSwgQmlnRGVjaW1hbCBtcSwgQmlnRGVjaW1hbCBtaHEsIEJpZ0Rl
Y2ltYWwgbm5xLCBCaWdEZWNpbWFsIGg9CmhxLCBEYXRlIG5ucWRhdHVtLCBEYXRlIGhocWRhdHVt
LCBTdHJpbmcgamFocmVzcmVpaGUsIFN0cmluZyBiZW1lcmt1bmcsIFNldD0KPFN0YXRpb24+IHN0
YXRpb25zKSB7Ci0gICAgICAgdGhpcy5iZXp1Z3NwZWdlbGlkID0zRCBiZXp1Z3NwZWdlbGlkOwot
ICAgICAgIHRoaXMuZ2V3YWVzc2VyID0zRCBnZXdhZXNzZXI7Ci0gICAgICAgdGhpcy5rbSA9M0Qg
a207Ci0gICAgICAgdGhpcy5uYW1lID0zRCBuYW1lOwotICAgICAgIHRoaXMubnVsbHB1bmt0ID0z
RCBudWxscHVua3Q7Ci0gICAgICAgdGhpcy5rZW5udW5nID0zRCBrZW5udW5nOwotICAgICAgIHRo
aXMuZWluenVnc2dlYmlldCA9M0QgZWluenVnc2dlYmlldDsKLSAgICAgICB0aGlzLmluYmV0cmll
YiA9M0QgaW5iZXRyaWViOwotICAgICAgIHRoaXMuZmxpZXNzY2hhcmFrdGVyID0zRCBmbGllc3Nj
aGFyYWt0ZXI7Ci0gICAgICAgdGhpcy5sYXVmZW50d2lja2x1bmcgPTNEIGxhdWZlbnR3aWNrbHVu
ZzsKLSAgICAgICB0aGlzLm1ucSA9M0QgbW5xOwotICAgICAgIHRoaXMubXEgPTNEIG1xOwotICAg
ICAgIHRoaXMubWhxID0zRCBtaHE7Ci0gICAgICAgdGhpcy5ubnEgPTNEIG5ucTsKLSAgICAgICB0
aGlzLmhocSA9M0QgaGhxOwotICAgICAgIHRoaXMubm5xZGF0dW0gPTNEIG5ucWRhdHVtOwotICAg
ICAgIHRoaXMuaGhxZGF0dW0gPTNEIGhocWRhdHVtOwotICAgICAgIHRoaXMuamFocmVzcmVpaGUg
PTNEIGphaHJlc3JlaWhlOwotICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7Ci0g
ICAgICAgdGhpcy5zdGF0aW9ucyA9M0Qgc3RhdGlvbnM7Ci0gICAgfQotCi0gICAgIEBJZAotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiQkVaVUdTUEVHRUxJRCIsIHVuaXF1ZT0zRHRydWUsIG51bGxh
YmxlPTNEZmFsc2UsIHByZWNpPQpzaW9uPTNEMTEsIHNjYWxlPTNEMCkKLSAgICBwdWJsaWMgbG9u
ZyBnZXRCZXp1Z3NwZWdlbGlkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5iZXp1Z3NwZWdlbGlk
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEJlenVnc3BlZ2VsaWQobG9uZyBiZXp1Z3Nw
ZWdlbGlkKSB7Ci0gICAgICAgIHRoaXMuYmV6dWdzcGVnZWxpZCA9M0QgYmV6dWdzcGVnZWxpZDsK
LSAgICB9Ci0KLUBNYW55VG9PbmUoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSkKLSAgICBASm9pbkNv
bHVtbihuYW1lPTNEIkdFV0FFU1NFUklEIiwgbnVsbGFibGU9M0RmYWxzZSkKLSAgICBwdWJsaWMg
R2V3YWVzc2VyIGdldEdld2Flc3NlcigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ2V3YWVzc2Vy
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEdld2Flc3NlcihHZXdhZXNzZXIgZ2V3YWVz
c2VyKSB7Ci0gICAgICAgIHRoaXMuZ2V3YWVzc2VyID0zRCBnZXdhZXNzZXI7Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiS00iLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q4
LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0S20oKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLmttOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEttKEJpZ0RlY2ltYWwg
a20pIHsKLSAgICAgICAgdGhpcy5rbSA9M0Qga207Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiTkFNRSIsIG51bGxhYmxlPTNEZmFsc2UsIGxlbmd0aD0zRDUwKQotICAgIHB1YmxpYyBT
dHJpbmcgZ2V0TmFtZSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubmFtZTsKLSAgICB9Ci0KLSAg
ICBwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBuYW1lKSB7Ci0gICAgICAgIHRoaXMubmFtZSA9
M0QgbmFtZTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJOVUxMUFVOS1QiLCBudWxs
YWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0TnVsbHB1bmt0KCkgewotICAgICAgICByZXR1cm4gdGhpcy5udWxscHVua3Q7Ci0g
ICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TnVsbHB1bmt0KEJpZ0RlY2ltYWwgbnVsbHB1bmt0
KSB7Ci0gICAgICAgIHRoaXMubnVsbHB1bmt0ID0zRCBudWxscHVua3Q7Ci0gICAgfQotCi0KLSAg
ICBAQ29sdW1uKG5hbWU9M0QiS0VOTlVORyIsIGxlbmd0aD0zRDE2KQotICAgIHB1YmxpYyBTdHJp
bmcgZ2V0S2VubnVuZygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMua2VubnVuZzsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRLZW5udW5nKFN0cmluZyBrZW5udW5nKSB7Ci0gICAgICAgIHRo
aXMua2VubnVuZyA9M0Qga2VubnVuZzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJF
SU5aVUdTR0VCSUVUIiwgcHJlY2lzaW9uPTNEMTApCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0
RWluenVnc2dlYmlldCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZWluenVnc2dlYmlldDsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRFaW56dWdzZ2ViaWV0KEJpZ0RlY2ltYWwgZWluenVn
c2dlYmlldCkgewotICAgICAgICB0aGlzLmVpbnp1Z3NnZWJpZXQgPTNEIGVpbnp1Z3NnZWJpZXQ7
Ci0gICAgfQotCi0gICAgQFRlbXBvcmFsKFRlbXBvcmFsVHlwZS5EQVRFKQotICAgIEBDb2x1bW4o
bmFtZT0zRCJJTkJFVFJJRUIiLCBsZW5ndGg9M0Q3KQotICAgIHB1YmxpYyBEYXRlIGdldEluYmV0
cmllYigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaW5iZXRyaWViOwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldEluYmV0cmllYihEYXRlIGluYmV0cmllYikgewotICAgICAgICB0aGlzLmlu
YmV0cmllYiA9M0QgaW5iZXRyaWViOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkZM
SUVTU0NIQVJBS1RFUiIsIGxlbmd0aD0zRDMpCi0gICAgcHVibGljIFN0cmluZyBnZXRGbGllc3Nj
aGFyYWt0ZXIoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmZsaWVzc2NoYXJha3RlcjsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRGbGllc3NjaGFyYWt0ZXIoU3RyaW5nIGZsaWVzc2NoYXJh
a3RlcikgewotICAgICAgICB0aGlzLmZsaWVzc2NoYXJha3RlciA9M0QgZmxpZXNzY2hhcmFrdGVy
OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkxBVUZFTlRXSUNLTFVORyIsIHByZWNp
c2lvbj0zRDcsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRMYXVmZW50d2lj
a2x1bmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmxhdWZlbnR3aWNrbHVuZzsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRMYXVmZW50d2lja2x1bmcoQmlnRGVjaW1hbCBsYXVmZW50d2lj
a2x1bmcpIHsKLSAgICAgICAgdGhpcy5sYXVmZW50d2lja2x1bmcgPTNEIGxhdWZlbnR3aWNrbHVu
ZzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNTlEiLCBwcmVjaXNpb249M0Q4LCBz
Y2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TW5xKCkgewotICAgICAgICByZXR1
cm4gdGhpcy5tbnE7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TW5xKEJpZ0RlY2ltYWwg
bW5xKSB7Ci0gICAgICAgIHRoaXMubW5xID0zRCBtbnE7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiTVEiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0TXEoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1xOwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldE1xKEJpZ0RlY2ltYWwgbXEpIHsKLSAgICAgICAgdGhpcy5tcSA9M0QgbXE7
Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUhRIiwgcHJlY2lzaW9uPTNEOCwgc2Nh
bGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1ocSgpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMubWhxOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1ocShCaWdEZWNpbWFsIG1o
cSkgewotICAgICAgICB0aGlzLm1ocSA9M0QgbWhxOwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIk5OUSIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVj
aW1hbCBnZXRObnEoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm5ucTsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRObnEoQmlnRGVjaW1hbCBubnEpIHsKLSAgICAgICAgdGhpcy5ubnEgPTNE
IG5ucTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJISFEiLCBwcmVjaXNpb249M0Q4
LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0SGhxKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5oaHE7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0SGhxKEJpZ0RlY2lt
YWwgaGhxKSB7Ci0gICAgICAgIHRoaXMuaGhxID0zRCBoaHE7Ci0gICAgfQotCi0gICAgQFRlbXBv
cmFsKFRlbXBvcmFsVHlwZS5EQVRFKQotICAgIEBDb2x1bW4obmFtZT0zRCJOTlFEQVRVTSIsIGxl
bmd0aD0zRDcpCi0gICAgcHVibGljIERhdGUgZ2V0Tm5xZGF0dW0oKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLm5ucWRhdHVtOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE5ucWRhdHVtKERh
dGUgbm5xZGF0dW0pIHsKLSAgICAgICAgdGhpcy5ubnFkYXR1bSA9M0Qgbm5xZGF0dW07Ci0gICAg
fQotCi0gICAgQFRlbXBvcmFsKFRlbXBvcmFsVHlwZS5EQVRFKQotICAgIEBDb2x1bW4obmFtZT0z
RCJISFFEQVRVTSIsIGxlbmd0aD0zRDcpCi0gICAgcHVibGljIERhdGUgZ2V0SGhxZGF0dW0oKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLmhocWRhdHVtOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lk
IHNldEhocWRhdHVtKERhdGUgaGhxZGF0dW0pIHsKLSAgICAgICAgdGhpcy5oaHFkYXR1bSA9M0Qg
aGhxZGF0dW07Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiSkFIUkVTUkVJSEUiLCBs
ZW5ndGg9M0QxMikKLSAgICBwdWJsaWMgU3RyaW5nIGdldEphaHJlc3JlaWhlKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5qYWhyZXNyZWloZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRK
YWhyZXNyZWloZShTdHJpbmcgamFocmVzcmVpaGUpIHsKLSAgICAgICAgdGhpcy5qYWhyZXNyZWlo
ZSA9M0QgamFocmVzcmVpaGU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQkVNRVJL
VU5HIiwgbGVuZ3RoPTNEMjQwKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0QmVtZXJrdW5nKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5iZW1lcmt1bmc7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0QmVtZXJrdW5nKFN0cmluZyBiZW1lcmt1bmcpIHsKLSAgICAgICAgdGhpcy5iZW1lcmt1bmcg
PTNEIGJlbWVya3VuZzsKLSAgICB9Ci0KLUBPbmVUb01hbnkoZmV0Y2g9M0RGZXRjaFR5cGUuTEFa
WSwgbWFwcGVkQnk9M0QiYmV6dWdzcGVnZWwiKQotICAgIHB1YmxpYyBTZXQ8U3RhdGlvbj4gZ2V0
U3RhdGlvbnMoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnN0YXRpb25zOwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldFN0YXRpb25zKFNldDxTdGF0aW9uPiBzdGF0aW9ucykgewotICAgICAg
ICB0aGlzLnN0YXRpb25zID0zRCBzdGF0aW9uczsKLSAgICB9Ci19CmRpZmYgLXIgODlkY2FhZTA4
MDFjIC1yIDZhNGJkY2NjZmE0ZCBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVu
dD0Kcy9yaXZlci9zZWRkYi9tb2RlbC9CZXp1Z3NwZWdlbGdldy5qYXZhCi0tLSBhL2JhY2tlbmQv
c3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZlci9zZWRkYi9tb2RlbC9CZXp1Z3Nw
ZWdlbD0KZ2V3LmphdmEJVHVlIEphbiAxNiAxODoxMzo1NCAyMDE4ICswMTAwCisrKyAvZGV2L251
bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDY5ICswLDAgQEAKLS8qIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdl
dz1DMz1BNHNzZXJrPQp1bmRlCi0gKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9u
IEdtYkgKLSAqCi0gKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFH
UEwgKD49M0R2MykKLSAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENo
ZWNrIG91dCB0aGUKLSAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBS
aXZlciBmb3IgZGV0YWlscy4KLSAqLwotCi1wYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVy
LnNlZGRiLm1vZGVsOwotLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJu
YXRlIFRvb2xzIDMuNC4wLkNSMQotCi0KLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5BdHRyaWJ1
dGVPdmVycmlkZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5BdHRyaWJ1dGVPdmVycmlkZXM7
Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3Rl
bmNlLkVtYmVkZGVkSWQ7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OwotaW1wb3J0
IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOwotCi0vKioKLSAqIEJlenVnc3BlZ2VsZ2V3IGdlbmVy
YXRlZCBieSBoYm0yamF2YQotICovCi1ARW50aXR5Ci1AVGFibGUobmFtZT0zRCJCRVpVR1NQRUdF
TEdFVyIKLSAgICAsc2NoZW1hPTNEIlNFRERCIgotKQotcHVibGljIGNsYXNzIEJlenVnc3BlZ2Vs
Z2V3ICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAgIHByaXZhdGUg
QmV6dWdzcGVnZWxnZXdJZCBpZDsKLQotICAgIHB1YmxpYyBCZXp1Z3NwZWdlbGdldygpIHsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgQmV6dWdzcGVnZWxnZXcoQmV6dWdzcGVnZWxnZXdJZCBpZCkgewot
ICAgICAgIHRoaXMuaWQgPTNEIGlkOwotICAgIH0KLQotICAgICBARW1iZWRkZWRJZAotCi0gICAg
QEF0dHJpYnV0ZU92ZXJyaWRlcyggewotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0z
RCJiZXp1Z3NwZWdlbGlkIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPQo9M0QiQkVaVUdTUEVHRUxJ
RCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDApICksCi0gICAg
ICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImdld2Flc3NlcmlkIiwgY29sdW1uPTNEQENv
bHVtbihuYW1lPTNEIj0KR0VXQUVTU0VSSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249
M0QxMSwgc2NhbGU9M0QwKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJr
bSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJLTSIsIG51bGw9CmFibGU9M0RmYWxzZSwgcHJl
Y2lzaW9uPTNEOCwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFt
ZT0zRCJuYW1lIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk5BTUUiLCA9Cm51bGxhYmxlPTNE
ZmFsc2UsIGxlbmd0aD0zRDUwKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0z
RCJudWxscHVua3QiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTlU9CkxMUFVOS1QiLCBudWxs
YWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRy
aWJ1dGVPdmVycmlkZShuYW1lPTNEImtlbm51bmciLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0Qi
S0VOTj0KVU5HIiwgbGVuZ3RoPTNEMTYpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShu
YW1lPTNEImVpbnp1Z3NnZWJpZXQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9Cj0zRCJFSU5aVUdT
R0VCSUVUIiwgcHJlY2lzaW9uPTNEMTApICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShu
YW1lPTNEImluYmV0cmllYiIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJJTj0KQkVUUklFQiIs
IGxlbmd0aD0zRDcpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImZsaWVz
c2NoYXJha3RlciIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0KPTNEIkZMSUVTU0NIQVJBS1RFUiIs
IGxlbmd0aD0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImxhdWZl
bnR3aWNrbHVuZyIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0KPTNEIkxBVUZFTlRXSUNLTFVORyIs
IHByZWNpc2lvbj0zRDcsIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRl
KG5hbWU9M0QibW5xIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1OUSIsIHByPQplY2lzaW9u
PTNEOCwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJt
cSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNUSIsIHByZWM9CmlzaW9uPTNEOCwgc2NhbGU9
M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtaHEiLCBjb2x1bW49
M0RAQ29sdW1uKG5hbWU9M0QiTUhRIiwgcHI9CmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpICksCi0g
ICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm5ucSIsIGNvbHVtbj0zREBDb2x1bW4o
bmFtZT0zRCJOTlEiLCBwcj0KZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0
dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiaGhxIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkhI
USIsIHByPQplY2lzaW9uPTNEOCwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3Zl
cnJpZGUobmFtZT0zRCJubnFkYXR1bSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJOTlE9CkRB
VFVNIiwgbGVuZ3RoPTNENykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qi
aGhxZGF0dW0iLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiSEhRPQpEQVRVTSIsIGxlbmd0aD0z
RDcpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImphaHJlc3JlaWhlIiwg
Y29sdW1uPTNEQENvbHVtbihuYW1lPTNEIj0KSkFIUkVTUkVJSEUiLCBsZW5ndGg9M0QxMikgKSwK
LSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiYmVtZXJrdW5nIiwgY29sdW1uPTNE
QENvbHVtbihuYW1lPTNEIkJFPQpNRVJLVU5HIiwgbGVuZ3RoPTNEMjQwKSApLAotICAgICAgICBA
QXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJnZXduYW1lIiwgY29sdW1uPTNEQENvbHVtbihuYW1l
PTNEIkdFV049CkFNRSIsIG51bGxhYmxlPTNEZmFsc2UsIGxlbmd0aD0zRDIwKSApIH0gKQotICAg
IHB1YmxpYyBCZXp1Z3NwZWdlbGdld0lkIGdldElkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5p
ZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRJZChCZXp1Z3NwZWdlbGdld0lkIGlkKSB7
Ci0gICAgICAgIHRoaXMuaWQgPTNEIGlkOwotICAgIH0KLX0KZGlmZiAtciA4OWRjYWFlMDgwMWMg
LXIgNmE0YmRjY2NmYTRkIGJhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50PQpz
L3JpdmVyL3NlZGRiL21vZGVsL0JlenVnc3BlZ2VsZ2V3SWQuamF2YQotLS0gYS9iYWNrZW5kL3Ny
Yy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvQmV6dWdzcGVn
ZWw9Cmdld0lkLmphdmEJVHVlIEphbiAxNiAxODoxMzo1NCAyMDE4ICswMTAwCisrKyAvZGV2L251
bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDMzNSArMCwwIEBACi0vKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBH
ZXc9QzM9QTRzc2Vyaz0KdW5kZQotICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlv
biBHbWJICi0gKgotICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBB
R1BMICg+PTNEdjMpCi0gKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBD
aGVjayBvdXQgdGhlCi0gKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMg
Uml2ZXIgZm9yIGRldGFpbHMuCi0gKi8KLQotcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5yaXZl
ci5zZWRkYi5tb2RlbDsKLS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVy
bmF0ZSBUb29scyAzLjQuMC5DUjEKLQotCi1pbXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7Ci1p
bXBvcnQgamF2YS51dGlsLkRhdGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOwot
aW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVtYmVkZGFibGU7Ci0KLS8qKgotICogQmV6dWdzcGVn
ZWxnZXdJZCBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVtYmVkZGFibGUKLXB1YmxpYyBj
bGFzcyBCZXp1Z3NwZWdlbGdld0lkICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsK
LQotCi0gICAgIHByaXZhdGUgbG9uZyBiZXp1Z3NwZWdlbGlkOwotICAgICBwcml2YXRlIGxvbmcg
Z2V3YWVzc2VyaWQ7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBrbTsKLSAgICAgcHJpdmF0ZSBT
dHJpbmcgbmFtZTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG51bGxwdW5rdDsKLSAgICAgcHJp
dmF0ZSBTdHJpbmcga2VubnVuZzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGVpbnp1Z3NnZWJp
ZXQ7Ci0gICAgIHByaXZhdGUgRGF0ZSBpbmJldHJpZWI7Ci0gICAgIHByaXZhdGUgU3RyaW5nIGZs
aWVzc2NoYXJha3RlcjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGxhdWZlbnR3aWNrbHVuZzsK
LSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1ucTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1x
OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgbWhxOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
bm5xOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgaGhxOwotICAgICBwcml2YXRlIERhdGUgbm5x
ZGF0dW07Ci0gICAgIHByaXZhdGUgRGF0ZSBoaHFkYXR1bTsKLSAgICAgcHJpdmF0ZSBTdHJpbmcg
amFocmVzcmVpaGU7Ci0gICAgIHByaXZhdGUgU3RyaW5nIGJlbWVya3VuZzsKLSAgICAgcHJpdmF0
ZSBTdHJpbmcgZ2V3bmFtZTsKLQotICAgIHB1YmxpYyBCZXp1Z3NwZWdlbGdld0lkKCkgewotICAg
IH0KLQotICAgIHB1YmxpYyBCZXp1Z3NwZWdlbGdld0lkKGxvbmcgYmV6dWdzcGVnZWxpZCwgbG9u
ZyBnZXdhZXNzZXJpZCwgQmlnRGVjaW09CmFsIGttLCBTdHJpbmcgbmFtZSwgQmlnRGVjaW1hbCBu
dWxscHVua3QsIFN0cmluZyBnZXduYW1lKSB7Ci0gICAgICAgIHRoaXMuYmV6dWdzcGVnZWxpZCA9
M0QgYmV6dWdzcGVnZWxpZDsKLSAgICAgICAgdGhpcy5nZXdhZXNzZXJpZCA9M0QgZ2V3YWVzc2Vy
aWQ7Ci0gICAgICAgIHRoaXMua20gPTNEIGttOwotICAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7
Ci0gICAgICAgIHRoaXMubnVsbHB1bmt0ID0zRCBudWxscHVua3Q7Ci0gICAgICAgIHRoaXMuZ2V3
bmFtZSA9M0QgZ2V3bmFtZTsKLSAgICB9Ci0gICAgcHVibGljIEJlenVnc3BlZ2VsZ2V3SWQobG9u
ZyBiZXp1Z3NwZWdlbGlkLCBsb25nIGdld2Flc3NlcmlkLCBCaWdEZWNpbT0KYWwga20sIFN0cmlu
ZyBuYW1lLCBCaWdEZWNpbWFsIG51bGxwdW5rdCwgU3RyaW5nIGtlbm51bmcsIEJpZ0RlY2ltYWwg
ZWluenVnPQpzZ2ViaWV0LCBEYXRlIGluYmV0cmllYiwgU3RyaW5nIGZsaWVzc2NoYXJha3Rlciwg
QmlnRGVjaW1hbCBsYXVmZW50d2lja2x1bmc9CiwgQmlnRGVjaW1hbCBtbnEsIEJpZ0RlY2ltYWwg
bXEsIEJpZ0RlY2ltYWwgbWhxLCBCaWdEZWNpbWFsIG5ucSwgQmlnRGVjaW1hbD0KIGhocSwgRGF0
ZSBubnFkYXR1bSwgRGF0ZSBoaHFkYXR1bSwgU3RyaW5nIGphaHJlc3JlaWhlLCBTdHJpbmcgYmVt
ZXJrdW5nLCBTPQp0cmluZyBnZXduYW1lKSB7Ci0gICAgICAgdGhpcy5iZXp1Z3NwZWdlbGlkID0z
RCBiZXp1Z3NwZWdlbGlkOwotICAgICAgIHRoaXMuZ2V3YWVzc2VyaWQgPTNEIGdld2Flc3Nlcmlk
OwotICAgICAgIHRoaXMua20gPTNEIGttOwotICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKLSAg
ICAgICB0aGlzLm51bGxwdW5rdCA9M0QgbnVsbHB1bmt0OwotICAgICAgIHRoaXMua2VubnVuZyA9
M0Qga2VubnVuZzsKLSAgICAgICB0aGlzLmVpbnp1Z3NnZWJpZXQgPTNEIGVpbnp1Z3NnZWJpZXQ7
Ci0gICAgICAgdGhpcy5pbmJldHJpZWIgPTNEIGluYmV0cmllYjsKLSAgICAgICB0aGlzLmZsaWVz
c2NoYXJha3RlciA9M0QgZmxpZXNzY2hhcmFrdGVyOwotICAgICAgIHRoaXMubGF1ZmVudHdpY2ts
dW5nID0zRCBsYXVmZW50d2lja2x1bmc7Ci0gICAgICAgdGhpcy5tbnEgPTNEIG1ucTsKLSAgICAg
ICB0aGlzLm1xID0zRCBtcTsKLSAgICAgICB0aGlzLm1ocSA9M0QgbWhxOwotICAgICAgIHRoaXMu
bm5xID0zRCBubnE7Ci0gICAgICAgdGhpcy5oaHEgPTNEIGhocTsKLSAgICAgICB0aGlzLm5ucWRh
dHVtID0zRCBubnFkYXR1bTsKLSAgICAgICB0aGlzLmhocWRhdHVtID0zRCBoaHFkYXR1bTsKLSAg
ICAgICB0aGlzLmphaHJlc3JlaWhlID0zRCBqYWhyZXNyZWloZTsKLSAgICAgICB0aGlzLmJlbWVy
a3VuZyA9M0QgYmVtZXJrdW5nOwotICAgICAgIHRoaXMuZ2V3bmFtZSA9M0QgZ2V3bmFtZTsKLSAg
ICB9Ci0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkJFWlVHU1BFR0VMSUQiLCBudWxsYWJsZT0z
RGZhbHNlLCBwcmVjaXNpb249M0QxMSwgc2NhbD0KZT0zRDApCi0gICAgcHVibGljIGxvbmcgZ2V0
QmV6dWdzcGVnZWxpZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYmV6dWdzcGVnZWxpZDsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRCZXp1Z3NwZWdlbGlkKGxvbmcgYmV6dWdzcGVnZWxp
ZCkgewotICAgICAgICB0aGlzLmJlenVnc3BlZ2VsaWQgPTNEIGJlenVnc3BlZ2VsaWQ7Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiR0VXQUVTU0VSSUQiLCBudWxsYWJsZT0zRGZhbHNl
LCBwcmVjaXNpb249M0QxMSwgc2NhbGU9Cj0zRDApCi0gICAgcHVibGljIGxvbmcgZ2V0R2V3YWVz
c2VyaWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmdld2Flc3NlcmlkOwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldEdld2Flc3NlcmlkKGxvbmcgZ2V3YWVzc2VyaWQpIHsKLSAgICAgICAg
dGhpcy5nZXdhZXNzZXJpZCA9M0QgZ2V3YWVzc2VyaWQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiS00iLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMp
Ci0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0S20oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmtt
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEttKEJpZ0RlY2ltYWwga20pIHsKLSAgICAg
ICAgdGhpcy5rbSA9M0Qga207Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTkFNRSIs
IG51bGxhYmxlPTNEZmFsc2UsIGxlbmd0aD0zRDUwKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFt
ZSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubmFtZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXROYW1lKFN0cmluZyBuYW1lKSB7Ci0gICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKLSAg
ICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJOVUxMUFVOS1QiLCBudWxsYWJsZT0zRGZhbHNl
LCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TnVs
bHB1bmt0KCkgewotICAgICAgICByZXR1cm4gdGhpcy5udWxscHVua3Q7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0TnVsbHB1bmt0KEJpZ0RlY2ltYWwgbnVsbHB1bmt0KSB7Ci0gICAgICAg
IHRoaXMubnVsbHB1bmt0ID0zRCBudWxscHVua3Q7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiS0VOTlVORyIsIGxlbmd0aD0zRDE2KQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0S2VubnVu
ZygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMua2VubnVuZzsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRLZW5udW5nKFN0cmluZyBrZW5udW5nKSB7Ci0gICAgICAgIHRoaXMua2VubnVuZyA9
M0Qga2VubnVuZzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJFSU5aVUdTR0VCSUVU
IiwgcHJlY2lzaW9uPTNEMTApCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RWluenVnc2dlYmll
dCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZWluenVnc2dlYmlldDsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRFaW56dWdzZ2ViaWV0KEJpZ0RlY2ltYWwgZWluenVnc2dlYmlldCkgewot
ICAgICAgICB0aGlzLmVpbnp1Z3NnZWJpZXQgPTNEIGVpbnp1Z3NnZWJpZXQ7Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiSU5CRVRSSUVCIiwgbGVuZ3RoPTNENykKLSAgICBwdWJsaWMg
RGF0ZSBnZXRJbmJldHJpZWIoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmluYmV0cmllYjsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRJbmJldHJpZWIoRGF0ZSBpbmJldHJpZWIpIHsKLSAg
ICAgICAgdGhpcy5pbmJldHJpZWIgPTNEIGluYmV0cmllYjsKLSAgICB9Ci0KLQotICAgIEBDb2x1
bW4obmFtZT0zRCJGTElFU1NDSEFSQUtURVIiLCBsZW5ndGg9M0QzKQotICAgIHB1YmxpYyBTdHJp
bmcgZ2V0RmxpZXNzY2hhcmFrdGVyKCkgewotICAgICAgICByZXR1cm4gdGhpcy5mbGllc3NjaGFy
YWt0ZXI7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RmxpZXNzY2hhcmFrdGVyKFN0cmlu
ZyBmbGllc3NjaGFyYWt0ZXIpIHsKLSAgICAgICAgdGhpcy5mbGllc3NjaGFyYWt0ZXIgPTNEIGZs
aWVzc2NoYXJha3RlcjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJMQVVGRU5UV0lD
S0xVTkciLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0TGF1ZmVudHdpY2tsdW5nKCkgewotICAgICAgICByZXR1cm4gdGhpcy5sYXVmZW50d2lja2x1
bmc7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TGF1ZmVudHdpY2tsdW5nKEJpZ0RlY2lt
YWwgbGF1ZmVudHdpY2tsdW5nKSB7Ci0gICAgICAgIHRoaXMubGF1ZmVudHdpY2tsdW5nID0zRCBs
YXVmZW50d2lja2x1bmc7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTU5RIiwgcHJl
Y2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1ucSgpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMubW5xOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1u
cShCaWdEZWNpbWFsIG1ucSkgewotICAgICAgICB0aGlzLm1ucSA9M0QgbW5xOwotICAgIH0KLQot
Ci0gICAgQENvbHVtbihuYW1lPTNEIk1RIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldE1xKCkgewotICAgICAgICByZXR1cm4gdGhpcy5tcTsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNcShCaWdEZWNpbWFsIG1xKSB7Ci0gICAgICAgIHRo
aXMubXEgPTNEIG1xOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1IUSIsIHByZWNp
c2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNaHEoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLm1ocTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNaHEo
QmlnRGVjaW1hbCBtaHEpIHsKLSAgICAgICAgdGhpcy5taHEgPTNEIG1ocTsKLSAgICB9Ci0KLQot
ICAgIEBDb2x1bW4obmFtZT0zRCJOTlEiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAg
cHVibGljIEJpZ0RlY2ltYWwgZ2V0Tm5xKCkgewotICAgICAgICByZXR1cm4gdGhpcy5ubnE7Ci0g
ICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0Tm5xKEJpZ0RlY2ltYWwgbm5xKSB7Ci0gICAgICAg
IHRoaXMubm5xID0zRCBubnE7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiSEhRIiwg
cHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEhocSgp
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaGhxOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dEhocShCaWdEZWNpbWFsIGhocSkgewotICAgICAgICB0aGlzLmhocSA9M0QgaGhxOwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIk5OUURBVFVNIiwgbGVuZ3RoPTNENykKLSAgICBwdWJs
aWMgRGF0ZSBnZXRObnFkYXR1bSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubm5xZGF0dW07Ci0g
ICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0Tm5xZGF0dW0oRGF0ZSBubnFkYXR1bSkgewotICAg
ICAgICB0aGlzLm5ucWRhdHVtID0zRCBubnFkYXR1bTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4o
bmFtZT0zRCJISFFEQVRVTSIsIGxlbmd0aD0zRDcpCi0gICAgcHVibGljIERhdGUgZ2V0SGhxZGF0
dW0oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmhocWRhdHVtOwotICAgIH0KLQotICAgIHB1Ymxp
YyB2b2lkIHNldEhocWRhdHVtKERhdGUgaGhxZGF0dW0pIHsKLSAgICAgICAgdGhpcy5oaHFkYXR1
bSA9M0QgaGhxZGF0dW07Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiSkFIUkVTUkVJ
SEUiLCBsZW5ndGg9M0QxMikKLSAgICBwdWJsaWMgU3RyaW5nIGdldEphaHJlc3JlaWhlKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5qYWhyZXNyZWloZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXRKYWhyZXNyZWloZShTdHJpbmcgamFocmVzcmVpaGUpIHsKLSAgICAgICAgdGhpcy5qYWhy
ZXNyZWloZSA9M0QgamFocmVzcmVpaGU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0Qi
QkVNRVJLVU5HIiwgbGVuZ3RoPTNEMjQwKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0QmVtZXJrdW5n
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5iZW1lcmt1bmc7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0QmVtZXJrdW5nKFN0cmluZyBiZW1lcmt1bmcpIHsKLSAgICAgICAgdGhpcy5iZW1l
cmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJHRVdO
QU1FIiwgbnVsbGFibGU9M0RmYWxzZSwgbGVuZ3RoPTNEMjApCi0gICAgcHVibGljIFN0cmluZyBn
ZXRHZXduYW1lKCkgewotICAgICAgICByZXR1cm4gdGhpcy5nZXduYW1lOwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldEdld25hbWUoU3RyaW5nIGdld25hbWUpIHsKLSAgICAgICAgdGhpcy5n
ZXduYW1lID0zRCBnZXduYW1lOwotICAgIH0KLQotCi0gICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMo
T2JqZWN0IG90aGVyKSB7Ci0gICAgICAgICBpZiAoICh0aGlzID0zRD0zRCBvdGhlciApICkgcmV0
dXJuIHRydWU7Ci0gICAgICAgICBpZiAoIChvdGhlciA9M0Q9M0QgbnVsbCApICkgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgaWYgKCAhKG90aGVyIGluc3RhbmNlb2YgQmV6dWdzcGVnZWxnZXdJZCkg
KSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICBCZXp1Z3NwZWdlbGdld0lkIGNhc3RPdGhlciA9M0Qg
KCBCZXp1Z3NwZWdlbGdld0lkICkgb3RoZXI7Ci0KLSAgICAgICAgIHJldHVybiAodGhpcy5nZXRC
ZXp1Z3NwZWdlbGlkKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0QmV6dWdzcGVnZWxpZCgpKQotICYmICh0
aGlzLmdldEdld2Flc3NlcmlkKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0R2V3YWVzc2VyaWQoKSkKLSAm
JiAoICh0aGlzLmdldEttKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0S20oKSkgfHwgKCB0aGlzLmdldEtt
KCkhPTNEbnVsbCAmJiBjPQphc3RPdGhlci5nZXRLbSgpIT0zRG51bGwgJiYgdGhpcy5nZXRLbSgp
LmVxdWFscyhjYXN0T3RoZXIuZ2V0S20oKSkgKSApCi0gJiYgKCAodGhpcy5nZXROYW1lKCk9M0Q9
M0RjYXN0T3RoZXIuZ2V0TmFtZSgpKSB8fCAoIHRoaXMuZ2V0TmFtZSgpIT0zRG51bD0KbCAmJiBj
YXN0T3RoZXIuZ2V0TmFtZSgpIT0zRG51bGwgJiYgdGhpcy5nZXROYW1lKCkuZXF1YWxzKGNhc3RP
dGhlci5nZXROYW1lPQooKSkgKSApCi0gJiYgKCAodGhpcy5nZXROdWxscHVua3QoKT0zRD0zRGNh
c3RPdGhlci5nZXROdWxscHVua3QoKSkgfHwgKCB0aGlzLmdldE51bD0KbHB1bmt0KCkhPTNEbnVs
bCAmJiBjYXN0T3RoZXIuZ2V0TnVsbHB1bmt0KCkhPTNEbnVsbCAmJiB0aGlzLmdldE51bGxwdW5r
dCgpPQouZXF1YWxzKGNhc3RPdGhlci5nZXROdWxscHVua3QoKSkgKSApCi0gJiYgKCAodGhpcy5n
ZXRLZW5udW5nKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0S2VubnVuZygpKSB8fCAoIHRoaXMuZ2V0S2Vu
bnVuZz0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0S2VubnVuZygpIT0zRG51bGwgJiYgdGhp
cy5nZXRLZW5udW5nKCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldEtlbm51bmcoKSkgKSApCi0gJiYg
KCAodGhpcy5nZXRFaW56dWdzZ2ViaWV0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RWluenVnc2dlYmll
dCgpKSB8fCAoIHRoaT0Kcy5nZXRFaW56dWdzZ2ViaWV0KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIu
Z2V0RWluenVnc2dlYmlldCgpIT0zRG51bGwgJiYgdGhpPQpzLmdldEVpbnp1Z3NnZWJpZXQoKS5l
cXVhbHMoY2FzdE90aGVyLmdldEVpbnp1Z3NnZWJpZXQoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRJ
bmJldHJpZWIoKT0zRD0zRGNhc3RPdGhlci5nZXRJbmJldHJpZWIoKSkgfHwgKCB0aGlzLmdldElu
Yj0KZXRyaWViKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0SW5iZXRyaWViKCkhPTNEbnVsbCAm
JiB0aGlzLmdldEluYmV0cmllYigpPQouZXF1YWxzKGNhc3RPdGhlci5nZXRJbmJldHJpZWIoKSkg
KSApCi0gJiYgKCAodGhpcy5nZXRGbGllc3NjaGFyYWt0ZXIoKT0zRD0zRGNhc3RPdGhlci5nZXRG
bGllc3NjaGFyYWt0ZXIoKSkgfHwgKD0KIHRoaXMuZ2V0RmxpZXNzY2hhcmFrdGVyKCkhPTNEbnVs
bCAmJiBjYXN0T3RoZXIuZ2V0RmxpZXNzY2hhcmFrdGVyKCkhPTNEbnVsPQpsICYmIHRoaXMuZ2V0
RmxpZXNzY2hhcmFrdGVyKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRGbGllc3NjaGFyYWt0ZXIoKSkg
KSApCi0gJiYgKCAodGhpcy5nZXRMYXVmZW50d2lja2x1bmcoKT0zRD0zRGNhc3RPdGhlci5nZXRM
YXVmZW50d2lja2x1bmcoKSkgfHwgKD0KIHRoaXMuZ2V0TGF1ZmVudHdpY2tsdW5nKCkhPTNEbnVs
bCAmJiBjYXN0T3RoZXIuZ2V0TGF1ZmVudHdpY2tsdW5nKCkhPTNEbnVsPQpsICYmIHRoaXMuZ2V0
TGF1ZmVudHdpY2tsdW5nKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRMYXVmZW50d2lja2x1bmcoKSkg
KSApCi0gJiYgKCAodGhpcy5nZXRNbnEoKT0zRD0zRGNhc3RPdGhlci5nZXRNbnEoKSkgfHwgKCB0
aGlzLmdldE1ucSgpIT0zRG51bGwgJj0KJiBjYXN0T3RoZXIuZ2V0TW5xKCkhPTNEbnVsbCAmJiB0
aGlzLmdldE1ucSgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0TW5xKCkpICkgKQotICYmICggKHRoaXMu
Z2V0TXEoKT0zRD0zRGNhc3RPdGhlci5nZXRNcSgpKSB8fCAoIHRoaXMuZ2V0TXEoKSE9M0RudWxs
ICYmIGM9CmFzdE90aGVyLmdldE1xKCkhPTNEbnVsbCAmJiB0aGlzLmdldE1xKCkuZXF1YWxzKGNh
c3RPdGhlci5nZXRNcSgpKSApICkKLSAmJiAoICh0aGlzLmdldE1ocSgpPTNEPTNEY2FzdE90aGVy
LmdldE1ocSgpKSB8fCAoIHRoaXMuZ2V0TWhxKCkhPTNEbnVsbCAmPQomIGNhc3RPdGhlci5nZXRN
aHEoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWhxKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRNaHEoKSkg
KSApCi0gJiYgKCAodGhpcy5nZXRObnEoKT0zRD0zRGNhc3RPdGhlci5nZXRObnEoKSkgfHwgKCB0
aGlzLmdldE5ucSgpIT0zRG51bGwgJj0KJiBjYXN0T3RoZXIuZ2V0Tm5xKCkhPTNEbnVsbCAmJiB0
aGlzLmdldE5ucSgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0Tm5xKCkpICkgKQotICYmICggKHRoaXMu
Z2V0SGhxKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0SGhxKCkpIHx8ICggdGhpcy5nZXRIaHEoKSE9M0Ru
dWxsICY9CiYgY2FzdE90aGVyLmdldEhocSgpIT0zRG51bGwgJiYgdGhpcy5nZXRIaHEoKS5lcXVh
bHMoY2FzdE90aGVyLmdldEhocSgpKSApICkKLSAmJiAoICh0aGlzLmdldE5ucWRhdHVtKCk9M0Q9
M0RjYXN0T3RoZXIuZ2V0Tm5xZGF0dW0oKSkgfHwgKCB0aGlzLmdldE5ucWRhPQp0dW0oKSE9M0Ru
dWxsICYmIGNhc3RPdGhlci5nZXRObnFkYXR1bSgpIT0zRG51bGwgJiYgdGhpcy5nZXRObnFkYXR1
bSgpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRObnFkYXR1bSgpKSApICkKLSAmJiAoICh0aGlzLmdl
dEhocWRhdHVtKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0SGhxZGF0dW0oKSkgfHwgKCB0aGlzLmdldEho
cWRhPQp0dW0oKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRIaHFkYXR1bSgpIT0zRG51bGwgJiYg
dGhpcy5nZXRIaHFkYXR1bSgpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRIaHFkYXR1bSgpKSApICkK
LSAmJiAoICh0aGlzLmdldEphaHJlc3JlaWhlKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0SmFocmVzcmVp
aGUoKSkgfHwgKCB0aGlzLmdlPQp0SmFocmVzcmVpaGUoKSE9M0RudWxsICYmIGNhc3RPdGhlci5n
ZXRKYWhyZXNyZWloZSgpIT0zRG51bGwgJiYgdGhpcy5nZXRKYWg9CnJlc3JlaWhlKCkuZXF1YWxz
KGNhc3RPdGhlci5nZXRKYWhyZXNyZWloZSgpKSApICkKLSAmJiAoICh0aGlzLmdldEJlbWVya3Vu
ZygpPTNEPTNEY2FzdE90aGVyLmdldEJlbWVya3VuZygpKSB8fCAoIHRoaXMuZ2V0QmVtPQplcmt1
bmcoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRCZW1lcmt1bmcoKSE9M0RudWxsICYmIHRoaXMu
Z2V0QmVtZXJrdW5nKCk9Ci5lcXVhbHMoY2FzdE90aGVyLmdldEJlbWVya3VuZygpKSApICkKLSAm
JiAoICh0aGlzLmdldEdld25hbWUoKT0zRD0zRGNhc3RPdGhlci5nZXRHZXduYW1lKCkpIHx8ICgg
dGhpcy5nZXRHZXduYW1lPQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRHZXduYW1lKCkhPTNE
bnVsbCAmJiB0aGlzLmdldEdld25hbWUoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0R2V3bmFtZSgp
KSApICk7Ci0gICB9Ci0KLSAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7Ci0gICAgICAgICBpbnQg
cmVzdWx0ID0zRCAxNzsKLQotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArIChpbnQp
IHRoaXMuZ2V0QmV6dWdzcGVnZWxpZCgpOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3Vs
dCArIChpbnQpIHRoaXMuZ2V0R2V3YWVzc2VyaWQoKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcg
KiByZXN1bHQgKyAoIGdldEttKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRLbSgpPQouaGFz
aENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TmFtZSgp
ID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0TmE9Cm1lKCkuaGFzaENvZGUoKSApOwotICAgICAg
ICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TnVsbHB1bmt0KCkgPTNEPTNEIG51bGwg
PyAwIDogdGhpcy49CmdldE51bGxwdW5rdCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3Vs
dCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEtlbm51bmcoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlz
LmdlPQp0S2VubnVuZygpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiBy
ZXN1bHQgKyAoIGdldEVpbnp1Z3NnZWJpZXQoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0PQpoaXMuZ2V0
RWluenVnc2dlYmlldCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiBy
ZXN1bHQgKyAoIGdldEluYmV0cmllYigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuPQpnZXRJbmJl
dHJpZWIoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsg
KCBnZXRGbGllc3NjaGFyYWt0ZXIoKSA9M0Q9M0QgbnVsbCA/IDAgOj0KIHRoaXMuZ2V0RmxpZXNz
Y2hhcmFrdGVyKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3Vs
dCArICggZ2V0TGF1ZmVudHdpY2tsdW5nKCkgPTNEPTNEIG51bGwgPyAwIDo9CiB0aGlzLmdldExh
dWZlbnR3aWNrbHVuZygpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiBy
ZXN1bHQgKyAoIGdldE1ucSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0TW5xPQooKS5oYXNo
Q29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNcSgpID0z
RD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0TXEoKT0KLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJl
c3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1ocSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMu
Z2V0TWhxPQooKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0
ICsgKCBnZXRObnEoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldE5ucT0KKCkuaGFzaENvZGUo
KSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0SGhxKCkgPTNEPTNE
IG51bGwgPyAwIDogdGhpcy5nZXRIaHE9CigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3Vs
dCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE5ucWRhdHVtKCkgPTNEPTNEIG51bGwgPyAwIDogdGhp
cy5nPQpldE5ucWRhdHVtKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAq
IHJlc3VsdCArICggZ2V0SGhxZGF0dW0oKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0SGhx
ZGF0dW0oKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsg
KCBnZXRKYWhyZXNyZWloZSgpID0zRD0zRCBudWxsID8gMCA6IHRoaT0Kcy5nZXRKYWhyZXNyZWlo
ZSgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdl
dEJlbWVya3VuZygpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuPQpnZXRCZW1lcmt1bmcoKS5oYXNo
Q29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRHZXduYW1l
KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdEdld25hbWUoKS5oYXNoQ29kZSgpICk7Ci0g
ICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotfQpkaWZmIC1yIDg5ZGNhYWUwODAxYyAtciA2
YTRiZGNjY2ZhNGQgYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMvcml2
ZXIvc2VkZGIvbW9kZWwvQmlsZC5qYXZhCi0tLSBhL2JhY2tlbmQvc3JjL21haW4vamF2YS9vcmcv
ZGl2ZTRlbGVtZW50cy9yaXZlci9zZWRkYi9tb2RlbC9CaWxkLmphdmEJVD0KdWUgSmFuIDE2IDE4
OjEzOjU0IDIwMTggKzAxMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAg
KzAwMDAKQEAgLTEsMjAyICswLDAgQEAKLS8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAx
MyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCi0gKiBTb2Z0
d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgKLSAqCi0gKiBUaGlzIGZpbGUgaXMg
RnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49M0R2MykKLSAqIGFuZCBjb21lcyB3
aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUKLSAqIGRvY3VtZW50YXRp
b24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy4KLSAqLwotCi1w
YWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRiLm1vZGVsOwotLy8gR2VuZXJhdGVk
IDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQotCi0KLWlt
cG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2Uu
RW50aXR5OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsKLWltcG9ydCBqYXZh
eC5wZXJzaXN0ZW5jZS5JZDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1uOwot
aW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk1hbnlUb09uZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0
ZW5jZS5UYWJsZTsKLQotLyoqCi0gKiBCaWxkIGdlbmVyYXRlZCBieSBoYm0yamF2YQotICovCi1A
RW50aXR5Ci1AVGFibGUobmFtZT0zRCJCSUxEIgotICAgICxzY2hlbWE9M0QiU0VEREIiCi0pCi1w
dWJsaWMgY2xhc3MgQmlsZCAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7Ci0KLQot
ICAgICBwcml2YXRlIGxvbmcgYmlsZGlkOwotICAgICBwcml2YXRlIFp6dGhlbWEgenp0aGVtYTsK
LSAgICAgcHJpdmF0ZSBTb2hsdGVzdCBzb2hsdGVzdDsKLSAgICAgcHJpdmF0ZSBpbnQgbGZkbnI7
Ci0gICAgIHByaXZhdGUgYm9vbGVhbiBpc3RkaWdpdGFsOwotICAgICBwcml2YXRlIFN0cmluZyBw
ZmFkOwotICAgICBwcml2YXRlIFN0cmluZyBzdGFuZG9ydDsKLSAgICAgcHJpdmF0ZSBTdHJpbmcg
bWVkaXVtOwotICAgICBwcml2YXRlIFN0cmluZyBtZWRwZmFkOwotICAgICBwcml2YXRlIFN0cmlu
ZyBiZW1lcmt1bmc7Ci0gICAgIHByaXZhdGUgU3RyaW5nIHR5cGtsZWluOwotICAgICBwcml2YXRl
IFN0cmluZyB0eXBtaXR0ZWw7Ci0gICAgIHByaXZhdGUgU3RyaW5nIHR5cGdyb3NzOwotCi0gICAg
cHVibGljIEJpbGQoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIEJpbGQobG9uZyBiaWxkaWQsIFp6
dGhlbWEgenp0aGVtYSwgU29obHRlc3Qgc29obHRlc3QsIGludCBsZmRucj0KLCBib29sZWFuIGlz
dGRpZ2l0YWwpIHsKLSAgICAgICAgdGhpcy5iaWxkaWQgPTNEIGJpbGRpZDsKLSAgICAgICAgdGhp
cy56enRoZW1hID0zRCB6enRoZW1hOwotICAgICAgICB0aGlzLnNvaGx0ZXN0ID0zRCBzb2hsdGVz
dDsKLSAgICAgICAgdGhpcy5sZmRuciA9M0QgbGZkbnI7Ci0gICAgICAgIHRoaXMuaXN0ZGlnaXRh
bCA9M0QgaXN0ZGlnaXRhbDsKLSAgICB9Ci0gICAgcHVibGljIEJpbGQobG9uZyBiaWxkaWQsIFp6
dGhlbWEgenp0aGVtYSwgU29obHRlc3Qgc29obHRlc3QsIGludCBsZmRucj0KLCBib29sZWFuIGlz
dGRpZ2l0YWwsIFN0cmluZyBwZmFkLCBTdHJpbmcgc3RhbmRvcnQsIFN0cmluZyBtZWRpdW0sIFN0
cmluZyBtPQplZHBmYWQsIFN0cmluZyBiZW1lcmt1bmcsIFN0cmluZyB0eXBrbGVpbiwgU3RyaW5n
IHR5cG1pdHRlbCwgU3RyaW5nIHR5cGdyb3M9CnMpIHsKLSAgICAgICB0aGlzLmJpbGRpZCA9M0Qg
YmlsZGlkOwotICAgICAgIHRoaXMuenp0aGVtYSA9M0Qgenp0aGVtYTsKLSAgICAgICB0aGlzLnNv
aGx0ZXN0ID0zRCBzb2hsdGVzdDsKLSAgICAgICB0aGlzLmxmZG5yID0zRCBsZmRucjsKLSAgICAg
ICB0aGlzLmlzdGRpZ2l0YWwgPTNEIGlzdGRpZ2l0YWw7Ci0gICAgICAgdGhpcy5wZmFkID0zRCBw
ZmFkOwotICAgICAgIHRoaXMuc3RhbmRvcnQgPTNEIHN0YW5kb3J0OwotICAgICAgIHRoaXMubWVk
aXVtID0zRCBtZWRpdW07Ci0gICAgICAgdGhpcy5tZWRwZmFkID0zRCBtZWRwZmFkOwotICAgICAg
IHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7Ci0gICAgICAgdGhpcy50eXBrbGVpbiA9M0Qg
dHlwa2xlaW47Ci0gICAgICAgdGhpcy50eXBtaXR0ZWwgPTNEIHR5cG1pdHRlbDsKLSAgICAgICB0
aGlzLnR5cGdyb3NzID0zRCB0eXBncm9zczsKLSAgICB9Ci0KLSAgICAgQElkCi0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJCSUxESUQiLCB1bmlxdWU9M0R0cnVlLCBudWxsYWJsZT0zRGZhbHNlLCBw
cmVjaXNpb249M0Q9CjExLCBzY2FsZT0zRDApCi0gICAgcHVibGljIGxvbmcgZ2V0QmlsZGlkKCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5iaWxkaWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0QmlsZGlkKGxvbmcgYmlsZGlkKSB7Ci0gICAgICAgIHRoaXMuYmlsZGlkID0zRCBiaWxkaWQ7
Ci0gICAgfQotCi1ATWFueVRvT25lKGZldGNoPTNERmV0Y2hUeXBlLkxBWlkpCi0gICAgQEpvaW5D
b2x1bW4obmFtZT0zRCJUSEVNQUlEIiwgbnVsbGFibGU9M0RmYWxzZSkKLSAgICBwdWJsaWMgWnp0
aGVtYSBnZXRaenRoZW1hKCkgewotICAgICAgICByZXR1cm4gdGhpcy56enRoZW1hOwotICAgIH0K
LQotICAgIHB1YmxpYyB2b2lkIHNldFp6dGhlbWEoWnp0aGVtYSB6enRoZW1hKSB7Ci0gICAgICAg
IHRoaXMuenp0aGVtYSA9M0Qgenp0aGVtYTsKLSAgICB9Ci0KLUBNYW55VG9PbmUoZmV0Y2g9M0RG
ZXRjaFR5cGUuTEFaWSkKLSAgICBASm9pbkNvbHVtbihuYW1lPTNEIlNPSExURVNUSUQiLCBudWxs
YWJsZT0zRGZhbHNlKQotICAgIHB1YmxpYyBTb2hsdGVzdCBnZXRTb2hsdGVzdCgpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuc29obHRlc3Q7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U29o
bHRlc3QoU29obHRlc3Qgc29obHRlc3QpIHsKLSAgICAgICAgdGhpcy5zb2hsdGVzdCA9M0Qgc29o
bHRlc3Q7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTEZETlIiLCBudWxsYWJsZT0z
RGZhbHNlLCBwcmVjaXNpb249M0Q1LCBzY2FsZT0zRDApCi0gICAgcHVibGljIGludCBnZXRMZmRu
cigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubGZkbnI7Ci0gICAgfQotCi0gICAgcHVibGljIHZv
aWQgc2V0TGZkbnIoaW50IGxmZG5yKSB7Ci0gICAgICAgIHRoaXMubGZkbnIgPTNEIGxmZG5yOwot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIklTVERJR0lUQUwiLCBudWxsYWJsZT0zRGZh
bHNlLCBwcmVjaXNpb249M0QxLCBzY2FsZT0zRD0KMCkKLSAgICBwdWJsaWMgYm9vbGVhbiBpc0lz
dGRpZ2l0YWwoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmlzdGRpZ2l0YWw7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0SXN0ZGlnaXRhbChib29sZWFuIGlzdGRpZ2l0YWwpIHsKLSAgICAg
ICAgdGhpcy5pc3RkaWdpdGFsID0zRCBpc3RkaWdpdGFsOwotICAgIH0KLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIlBGQUQiLCBsZW5ndGg9M0Q1MTIpCi0gICAgcHVibGljIFN0cmluZyBnZXRQZmFk
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5wZmFkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lk
IHNldFBmYWQoU3RyaW5nIHBmYWQpIHsKLSAgICAgICAgdGhpcy5wZmFkID0zRCBwZmFkOwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNUQU5ET1JUIiwgbGVuZ3RoPTNENTApCi0gICAg
cHVibGljIFN0cmluZyBnZXRTdGFuZG9ydCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc3RhbmRv
cnQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U3RhbmRvcnQoU3RyaW5nIHN0YW5kb3J0
KSB7Ci0gICAgICAgIHRoaXMuc3RhbmRvcnQgPTNEIHN0YW5kb3J0OwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIk1FRElVTSIsIGxlbmd0aD0zRDUwKQotICAgIHB1YmxpYyBTdHJpbmcg
Z2V0TWVkaXVtKCkgewotICAgICAgICByZXR1cm4gdGhpcy5tZWRpdW07Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0TWVkaXVtKFN0cmluZyBtZWRpdW0pIHsKLSAgICAgICAgdGhpcy5tZWRp
dW0gPTNEIG1lZGl1bTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNRURQRkFEIiwg
bGVuZ3RoPTNENTApCi0gICAgcHVibGljIFN0cmluZyBnZXRNZWRwZmFkKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5tZWRwZmFkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1lZHBmYWQo
U3RyaW5nIG1lZHBmYWQpIHsKLSAgICAgICAgdGhpcy5tZWRwZmFkID0zRCBtZWRwZmFkOwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkJFTUVSS1VORyIsIGxlbmd0aD0zRDI0MCkKLSAg
ICBwdWJsaWMgU3RyaW5nIGdldEJlbWVya3VuZygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYmVt
ZXJrdW5nOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEJlbWVya3VuZyhTdHJpbmcgYmVt
ZXJrdW5nKSB7Ci0gICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7Ci0gICAgfQot
Ci0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVFlQS0xFSU4iLCBsZW5ndGg9M0Q4KQotICAgIHB1Ymxp
YyBTdHJpbmcgZ2V0VHlwa2xlaW4oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnR5cGtsZWluOwot
ICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFR5cGtsZWluKFN0cmluZyB0eXBrbGVpbikgewot
ICAgICAgICB0aGlzLnR5cGtsZWluID0zRCB0eXBrbGVpbjsKLSAgICB9Ci0KLQotICAgIEBDb2x1
bW4obmFtZT0zRCJUWVBNSVRURUwiLCBsZW5ndGg9M0Q4KQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0
VHlwbWl0dGVsKCkgewotICAgICAgICByZXR1cm4gdGhpcy50eXBtaXR0ZWw7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0VHlwbWl0dGVsKFN0cmluZyB0eXBtaXR0ZWwpIHsKLSAgICAgICAg
dGhpcy50eXBtaXR0ZWwgPTNEIHR5cG1pdHRlbDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFt
ZT0zRCJUWVBHUk9TUyIsIGxlbmd0aD0zRDgpCi0gICAgcHVibGljIFN0cmluZyBnZXRUeXBncm9z
cygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudHlwZ3Jvc3M7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0VHlwZ3Jvc3MoU3RyaW5nIHR5cGdyb3NzKSB7Ci0gICAgICAgIHRoaXMudHlwZ3Jv
c3MgPTNEIHR5cGdyb3NzOwotICAgIH0KLX0KZGlmZiAtciA4OWRjYWFlMDgwMWMgLXIgNmE0YmRj
Y2NmYTRkIGJhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50PQpzL3JpdmVyL3Nl
ZGRiL21vZGVsL0dld2Flc3Nlci5qYXZhCi0tLSBhL2JhY2tlbmQvc3JjL21haW4vamF2YS9vcmcv
ZGl2ZTRlbGVtZW50cy9yaXZlci9zZWRkYi9tb2RlbC9HZXdhZXNzZXIuaj0KYXZhCVR1ZSBKYW4g
MTYgMTg6MTM6NTQgMjAxOCArMDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMApAQCAtMSwxNDcgKzAsMCBAQAotLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEy
LCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAq
IFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoKLSAqIFRoaXMgZmls
ZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKQotICogYW5kIGNv
bWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQotICogZG9jdW1l
bnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLgotICov
Ci0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMucml2ZXIuc2VkZGIubW9kZWw7Ci0vLyBHZW5l
cmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0K
LQotaW1wb3J0IGphdmEubWF0aC5CaWdEZWNpbWFsOwotaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0
OwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1u
OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKLWltcG9ydCBqYXZheC5wZXJzaXN0
ZW5jZS5GZXRjaFR5cGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7Ci1pbXBvcnQgamF2
YXgucGVyc2lzdGVuY2UuT25lVG9NYW55OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxl
OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlVuaXF1ZUNvbnN0cmFpbnQ7Ci0KLS8qKgotICog
R2V3YWVzc2VyIGdlbmVyYXRlZCBieSBoYm0yamF2YQotICovCi1ARW50aXR5Ci1AVGFibGUobmFt
ZT0zRCJHRVdBRVNTRVIiCi0gICAgLHNjaGVtYT0zRCJTRUREQiIKLSAgICAsIHVuaXF1ZUNvbnN0
cmFpbnRzID0zRCBAVW5pcXVlQ29uc3RyYWludChjb2x1bW5OYW1lcz0zRCJOQU1FIikKLSkKLXB1
YmxpYyBjbGFzcyBHZXdhZXNzZXIgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgewot
Ci0KLSAgICAgcHJpdmF0ZSBsb25nIGdld2Flc3NlcmlkOwotICAgICBwcml2YXRlIFN0cmluZyBu
YW1lOwotICAgICBwcml2YXRlIFN0cmluZyBrZW5udW5nOwotICAgICBwcml2YXRlIEJpZ0RlY2lt
YWwgbGFlbmdlOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZWluenVnc2dlYmlldDsKLSAgICAg
cHJpdmF0ZSBTdHJpbmcgYmVtZXJrdW5nOwotICAgICBwcml2YXRlIFNldDxCZXp1Z3NwZWdlbD4g
YmV6dWdzcGVnZWxzID0zRCBuZXcgSGFzaFNldDxCZXp1Z3NwZWdlbD4oMCk7Ci0gICAgIHByaXZh
dGUgU2V0PFN0YXRpb24+IHN0YXRpb25zID0zRCBuZXcgSGFzaFNldDxTdGF0aW9uPigwKTsKLQot
ICAgIHB1YmxpYyBHZXdhZXNzZXIoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIEdld2Flc3Nlcihs
b25nIGdld2Flc3NlcmlkLCBTdHJpbmcgbmFtZSkgewotICAgICAgICB0aGlzLmdld2Flc3Nlcmlk
ID0zRCBnZXdhZXNzZXJpZDsKLSAgICAgICAgdGhpcy5uYW1lID0zRCBuYW1lOwotICAgIH0KLSAg
ICBwdWJsaWMgR2V3YWVzc2VyKGxvbmcgZ2V3YWVzc2VyaWQsIFN0cmluZyBuYW1lLCBTdHJpbmcg
a2VubnVuZywgQmlnRGVjPQppbWFsIGxhZW5nZSwgQmlnRGVjaW1hbCBlaW56dWdzZ2ViaWV0LCBT
dHJpbmcgYmVtZXJrdW5nLCBTZXQ8QmV6dWdzcGVnZWw+IGI9CmV6dWdzcGVnZWxzLCBTZXQ8U3Rh
dGlvbj4gc3RhdGlvbnMpIHsKLSAgICAgICB0aGlzLmdld2Flc3NlcmlkID0zRCBnZXdhZXNzZXJp
ZDsKLSAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7Ci0gICAgICAgdGhpcy5rZW5udW5nID0zRCBr
ZW5udW5nOwotICAgICAgIHRoaXMubGFlbmdlID0zRCBsYWVuZ2U7Ci0gICAgICAgdGhpcy5laW56
dWdzZ2ViaWV0ID0zRCBlaW56dWdzZ2ViaWV0OwotICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBi
ZW1lcmt1bmc7Ci0gICAgICAgdGhpcy5iZXp1Z3NwZWdlbHMgPTNEIGJlenVnc3BlZ2VsczsKLSAg
ICAgICB0aGlzLnN0YXRpb25zID0zRCBzdGF0aW9uczsKLSAgICB9Ci0KLSAgICAgQElkCi0KLQot
ICAgIEBDb2x1bW4obmFtZT0zRCJHRVdBRVNTRVJJRCIsIHVuaXF1ZT0zRHRydWUsIG51bGxhYmxl
PTNEZmFsc2UsIHByZWNpc2k9Cm9uPTNEMTEsIHNjYWxlPTNEMCkKLSAgICBwdWJsaWMgbG9uZyBn
ZXRHZXdhZXNzZXJpZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ2V3YWVzc2VyaWQ7Ci0gICAg
fQotCi0gICAgcHVibGljIHZvaWQgc2V0R2V3YWVzc2VyaWQobG9uZyBnZXdhZXNzZXJpZCkgewot
ICAgICAgICB0aGlzLmdld2Flc3NlcmlkID0zRCBnZXdhZXNzZXJpZDsKLSAgICB9Ci0KLQotICAg
IEBDb2x1bW4obmFtZT0zRCJOQU1FIiwgdW5pcXVlPTNEdHJ1ZSwgbnVsbGFibGU9M0RmYWxzZSwg
bGVuZ3RoPTNEMjApCi0gICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgewotICAgICAgICByZXR1
cm4gdGhpcy5uYW1lOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5h
bWUpIHsKLSAgICAgICAgdGhpcy5uYW1lID0zRCBuYW1lOwotICAgIH0KLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIktFTk5VTkciLCBsZW5ndGg9M0QxMSkKLSAgICBwdWJsaWMgU3RyaW5nIGdldEtl
bm51bmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmtlbm51bmc7Ci0gICAgfQotCi0gICAgcHVi
bGljIHZvaWQgc2V0S2VubnVuZyhTdHJpbmcga2VubnVuZykgewotICAgICAgICB0aGlzLmtlbm51
bmcgPTNEIGtlbm51bmc7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTEFFTkdFIiwg
cHJlY2lzaW9uPTNENywgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldExhZW5n
ZSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubGFlbmdlOwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldExhZW5nZShCaWdEZWNpbWFsIGxhZW5nZSkgewotICAgICAgICB0aGlzLmxhZW5nZSA9
M0QgbGFlbmdlOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkVJTlpVR1NHRUJJRVQi
LCBwcmVjaXNpb249M0QxMCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRFaW56dWdzZ2ViaWV0
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5laW56dWdzZ2ViaWV0OwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldEVpbnp1Z3NnZWJpZXQoQmlnRGVjaW1hbCBlaW56dWdzZ2ViaWV0KSB7Ci0g
ICAgICAgIHRoaXMuZWluenVnc2dlYmlldCA9M0QgZWluenVnc2dlYmlldDsKLSAgICB9Ci0KLQot
ICAgIEBDb2x1bW4obmFtZT0zRCJCRU1FUktVTkciLCBsZW5ndGg9M0QyNDApCi0gICAgcHVibGlj
IFN0cmluZyBnZXRCZW1lcmt1bmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJlbWVya3VuZzsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRCZW1lcmt1bmcoU3RyaW5nIGJlbWVya3VuZykg
ewotICAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwotICAgIH0KLQotQE9uZVRv
TWFueShmZXRjaD0zREZldGNoVHlwZS5MQVpZLCBtYXBwZWRCeT0zRCJnZXdhZXNzZXIiKQotICAg
IHB1YmxpYyBTZXQ8QmV6dWdzcGVnZWw+IGdldEJlenVnc3BlZ2VscygpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuYmV6dWdzcGVnZWxzOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEJlenVn
c3BlZ2VscyhTZXQ8QmV6dWdzcGVnZWw+IGJlenVnc3BlZ2VscykgewotICAgICAgICB0aGlzLmJl
enVnc3BlZ2VscyA9M0QgYmV6dWdzcGVnZWxzOwotICAgIH0KLQotQE9uZVRvTWFueShmZXRjaD0z
REZldGNoVHlwZS5MQVpZLCBtYXBwZWRCeT0zRCJnZXdhZXNzZXIiKQotICAgIHB1YmxpYyBTZXQ8
U3RhdGlvbj4gZ2V0U3RhdGlvbnMoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnN0YXRpb25zOwot
ICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFN0YXRpb25zKFNldDxTdGF0aW9uPiBzdGF0aW9u
cykgewotICAgICAgICB0aGlzLnN0YXRpb25zID0zRCBzdGF0aW9uczsKLSAgICB9Ci0KLQotCi0K
LX0KLQotCmRpZmYgLXIgODlkY2FhZTA4MDFjIC1yIDZhNGJkY2NjZmE0ZCBiYWNrZW5kL3NyYy9t
YWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZlci9zZWRkYi9tb2RlbC9HZmFlbmdlci5q
YXZhCi0tLSBhL2JhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZlci9z
ZWRkYi9tb2RlbC9HZmFlbmdlci5qYT0KdmEJVHVlIEphbiAxNiAxODoxMzo1NCAyMDE4ICswMTAw
CisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDEzMyAr
MCwwIEBACi0vKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFs
dCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQotICogU29mdHdhcmUgZW5naW5lZXJpbmcg
YnkgSW50ZXZhdGlvbiBHbWJICi0gKgotICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5k
ZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMpCi0gKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5P
IFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCi0gKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERp
dmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFpbHMuCi0gKi8KLQotcGFja2FnZSBvcmcuZGl2ZTRl
bGVtZW50cy5yaXZlci5zZWRkYi5tb2RlbDsKLS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMw
OjU3IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQuMC5DUjEKLQotCi1pbXBvcnQgamF2YS5tYXRoLkJp
Z0RlY2ltYWw7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7Ci1pbXBvcnQgamF2YS51dGlsLlNl
dDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuRW50aXR5OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsKLWltcG9y
dCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5PbmVUb01h
bnk7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7Ci1pbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuVW5pcXVlQ29uc3RyYWludDsKLQotLyoqCi0gKiBHZmFlbmdlciBnZW5lcmF0ZWQgYnkg
aGJtMmphdmEKLSAqLwotQEVudGl0eQotQFRhYmxlKG5hbWU9M0QiR0ZBRU5HRVIiCi0gICAgLHNj
aGVtYT0zRCJTRUREQiIKLSAgICAsIHVuaXF1ZUNvbnN0cmFpbnRzID0zRCBAVW5pcXVlQ29uc3Ry
YWludChjb2x1bW5OYW1lcz0zRCJOQU1FIikKLSkKLXB1YmxpYyBjbGFzcyBHZmFlbmdlciAgaW1w
bGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7Ci0KLQotICAgICBwcml2YXRlIGxvbmcgZ2Zh
ZW5nZXJpZDsKLSAgICAgcHJpdmF0ZSBib29sZWFuIGlzdGFrdGl2OwotICAgICBwcml2YXRlIFN0
cmluZyBuYW1lOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgYnJlaXRlOwotICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgbWFzY2hlbndlaXRlOwotICAgICBwcml2YXRlIFN0cmluZyBiZW1lcmt1bmc7
Ci0gICAgIHByaXZhdGUgU2V0PE1lc3N1bmc+IG1lc3N1bmdzID0zRCBuZXcgSGFzaFNldDxNZXNz
dW5nPigwKTsKLQotICAgIHB1YmxpYyBHZmFlbmdlcigpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
R2ZhZW5nZXIobG9uZyBnZmFlbmdlcmlkLCBib29sZWFuIGlzdGFrdGl2LCBTdHJpbmcgbmFtZSwg
QmlnRGVjPQppbWFsIGJyZWl0ZSwgQmlnRGVjaW1hbCBtYXNjaGVud2VpdGUpIHsKLSAgICAgICAg
dGhpcy5nZmFlbmdlcmlkID0zRCBnZmFlbmdlcmlkOwotICAgICAgICB0aGlzLmlzdGFrdGl2ID0z
RCBpc3Rha3RpdjsKLSAgICAgICAgdGhpcy5uYW1lID0zRCBuYW1lOwotICAgICAgICB0aGlzLmJy
ZWl0ZSA9M0QgYnJlaXRlOwotICAgICAgICB0aGlzLm1hc2NoZW53ZWl0ZSA9M0QgbWFzY2hlbndl
aXRlOwotICAgIH0KLSAgICBwdWJsaWMgR2ZhZW5nZXIobG9uZyBnZmFlbmdlcmlkLCBib29sZWFu
IGlzdGFrdGl2LCBTdHJpbmcgbmFtZSwgQmlnRGVjPQppbWFsIGJyZWl0ZSwgQmlnRGVjaW1hbCBt
YXNjaGVud2VpdGUsIFN0cmluZyBiZW1lcmt1bmcsIFNldDxNZXNzdW5nPiBtZXNzdW49CmdzKSB7
Ci0gICAgICAgdGhpcy5nZmFlbmdlcmlkID0zRCBnZmFlbmdlcmlkOwotICAgICAgIHRoaXMuaXN0
YWt0aXYgPTNEIGlzdGFrdGl2OwotICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKLSAgICAgICB0
aGlzLmJyZWl0ZSA9M0QgYnJlaXRlOwotICAgICAgIHRoaXMubWFzY2hlbndlaXRlID0zRCBtYXNj
aGVud2VpdGU7Ci0gICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICAgICB0
aGlzLm1lc3N1bmdzID0zRCBtZXNzdW5nczsKLSAgICB9Ci0KLSAgICAgQElkCi0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJHRkFFTkdFUklEIiwgdW5pcXVlPTNEdHJ1ZSwgbnVsbGFibGU9M0RmYWxz
ZSwgcHJlY2lzaW89Cm49M0QxMSwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBsb25nIGdldEdmYWVu
Z2VyaWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmdmYWVuZ2VyaWQ7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0R2ZhZW5nZXJpZChsb25nIGdmYWVuZ2VyaWQpIHsKLSAgICAgICAgdGhp
cy5nZmFlbmdlcmlkID0zRCBnZmFlbmdlcmlkOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIklTVEFLVElWIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMSwgc2NhbGU9M0Qw
KQotICAgIHB1YmxpYyBib29sZWFuIGlzSXN0YWt0aXYoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LmlzdGFrdGl2OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldElzdGFrdGl2KGJvb2xlYW4g
aXN0YWt0aXYpIHsKLSAgICAgICAgdGhpcy5pc3Rha3RpdiA9M0QgaXN0YWt0aXY7Ci0gICAgfQot
Ci0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTkFNRSIsIHVuaXF1ZT0zRHRydWUsIG51bGxhYmxlPTNE
ZmFsc2UsIGxlbmd0aD0zRDMwKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMubmFtZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXROYW1lKFN0
cmluZyBuYW1lKSB7Ci0gICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKLSAgICB9Ci0KLQotICAg
IEBDb2x1bW4obmFtZT0zRCJCUkVJVEUiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q2
LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0QnJlaXRlKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5icmVpdGU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QnJlaXRl
KEJpZ0RlY2ltYWwgYnJlaXRlKSB7Ci0gICAgICAgIHRoaXMuYnJlaXRlID0zRCBicmVpdGU7Ci0g
ICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFTldFSVRFIiwgbnVsbGFibGU9M0Rm
YWxzZSwgcHJlY2lzaW9uPTNENywgc2NhbGU9Cj0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0TWFzY2hlbndlaXRlKCkgewotICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGVud2VpdGU7Ci0g
ICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWFzY2hlbndlaXRlKEJpZ0RlY2ltYWwgbWFzY2hl
bndlaXRlKSB7Ci0gICAgICAgIHRoaXMubWFzY2hlbndlaXRlID0zRCBtYXNjaGVud2VpdGU7Ci0g
ICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQkVNRVJLVU5HIiwgbGVuZ3RoPTNEMjQwKQot
ICAgIHB1YmxpYyBTdHJpbmcgZ2V0QmVtZXJrdW5nKCkgewotICAgICAgICByZXR1cm4gdGhpcy5i
ZW1lcmt1bmc7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QmVtZXJrdW5nKFN0cmluZyBi
ZW1lcmt1bmcpIHsKLSAgICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICB9
Ci0KLUBPbmVUb01hbnkoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSwgbWFwcGVkQnk9M0QiZ2ZhZW5n
ZXIiKQotICAgIHB1YmxpYyBTZXQ8TWVzc3VuZz4gZ2V0TWVzc3VuZ3MoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLm1lc3N1bmdzOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1lc3N1bmdz
KFNldDxNZXNzdW5nPiBtZXNzdW5ncykgewotICAgICAgICB0aGlzLm1lc3N1bmdzID0zRCBtZXNz
dW5nczsKLSAgICB9Ci19CmRpZmYgLXIgODlkY2FhZTA4MDFjIC1yIDZhNGJkY2NjZmE0ZCBiYWNr
ZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZlci9zZWRkYi9tb2RlbC9H
bG90bGlua3MuamF2YQotLS0gYS9iYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVu
dHMvcml2ZXIvc2VkZGIvbW9kZWwvR2xvdGxpbmtzLmo9CmF2YQlUdWUgSmFuIDE2IDE4OjEzOjU0
IDIwMTggKzAxMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAK
QEAgLTEsODAgKzAsMCBAQAotLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1
bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVu
Z2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNv
ZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKQotICogYW5kIGNvbWVzIHdpdGggQUJT
T0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21p
bmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLgotICovCi0KLXBhY2thZ2Ug
b3JnLmRpdmU0ZWxlbWVudHMucml2ZXIuc2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYu
MjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0ZU92ZXJyaWRlOwotaW1wb3J0IGphdmF4LnBlcnNpc3Rl
bmNlLkF0dHJpYnV0ZU92ZXJyaWRlczsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47
Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW1iZWRkZWRJZDsKLWltcG9ydCBqYXZheC5wZXJz
aXN0ZW5jZS5FbnRpdHk7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7Ci0KLS8qKgot
ICogR2xvdGxpbmtzIGdlbmVyYXRlZCBieSBoYm0yamF2YQotICovCi1ARW50aXR5Ci1AVGFibGUo
bmFtZT0zRCJHTE9UTElOS1MiCi0gICAgLHNjaGVtYT0zRCJTRUREQiIKLSkKLXB1YmxpYyBjbGFz
cyBHbG90bGlua3MgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgewotCi0KLSAgICAg
cHJpdmF0ZSBHbG90bGlua3NJZCBpZDsKLQotICAgIHB1YmxpYyBHbG90bGlua3MoKSB7Ci0gICAg
fQotCi0gICAgcHVibGljIEdsb3RsaW5rcyhHbG90bGlua3NJZCBpZCkgewotICAgICAgIHRoaXMu
aWQgPTNEIGlkOwotICAgIH0KLQotICAgICBARW1iZWRkZWRJZAotCi0KLSAgICBAQXR0cmlidXRl
T3ZlcnJpZGVzKCB7Ci0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImdsb3RyZWNo
dGVpZCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRD0KIkdMT1RSRUNIVEVJRCIsIG51bGxhYmxl
PTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDApICksCi0gICAgICAgIEBBdHRyaWJ1
dGVPdmVycmlkZShuYW1lPTNEIm1lc3N1bmdpZCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJN
RT0KU1NVTkdJRCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDAp
ICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInVmZXJhYnN0IiwgY29sdW1u
PTNEQENvbHVtbihuYW1lPTNEIlVGRT0KUkFCU1QiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNp
b249M0Q4LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNE
InRnZXNjaGllYmUiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiVD0KR0VTQ0hJRUJFIiwgcHJl
Y2lzaW9uPTNEOCwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFt
ZT0zRCJkbSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJETSIsIHByZWM9CmlzaW9uPTNENywg
c2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJzayIsIGNv
bHVtbj0zREBDb2x1bW4obmFtZT0zRCJTSyIsIHByZWM9CmlzaW9uPTNEOCwgc2NhbGU9M0QzKSAp
LAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJzbyIsIGNvbHVtbj0zREBDb2x1
bW4obmFtZT0zRCJTTyIsIHByZWM9CmlzaW9uPTNEOCwgc2NhbGU9M0QzKSApLAotICAgICAgICBA
QXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ1IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlUi
LCBwcmVjaXM9Cmlvbj0zRDgsIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJy
aWRlKG5hbWU9M0QiZDkwIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkQ5MCIsIHByPQplY2lz
aW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0z
RCJkODQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiRDg0IiwgcHI9CmVjaXNpb249M0Q3LCBz
Y2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImQ4MCIsIGNv
bHVtbj0zREBDb2x1bW4obmFtZT0zRCJEODAiLCBwcj0KZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkg
KSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZDc1IiwgY29sdW1uPTNEQENv
bHVtbihuYW1lPTNEIkQ3NSIsIHByPQplY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAgICAg
ICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkNzAiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9
M0QiRDcwIiwgcHI9CmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1
dGVPdmVycmlkZShuYW1lPTNEImQ2MCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJENjAiLCBw
cj0KZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRl
KG5hbWU9M0QiZDUwIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkQ1MCIsIHByPQplY2lzaW9u
PTNENywgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJk
NDAiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiRDQwIiwgcHI9CmVjaXNpb249M0Q3LCBzY2Fs
ZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImQzMCIsIGNvbHVt
bj0zREBDb2x1bW4obmFtZT0zRCJEMzAiLCBwcj0KZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwK
LSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZDI1IiwgY29sdW1uPTNEQENvbHVt
bihuYW1lPTNEIkQyNSIsIHByPQplY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAgICAgICBA
QXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkMjAiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0Qi
RDIwIiwgcHI9CmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVP
dmVycmlkZShuYW1lPTNEImQxNiIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJEMTYiLCBwcj0K
ZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5h
bWU9M0QiZDEwIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkQxMCIsIHByPQplY2lzaW9uPTNE
Nywgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkbWlu
IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkRNSU4iLCA9CnByZWNpc2lvbj0zRDcsIHNjYWxl
PTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZHVyY2hkbWluIiwg
Y29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkRVPQpSQ0hETUlOIiwgcHJlY2lzaW9uPTNENiwgc2Nh
bGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkbWF4IiwgY29s
dW1uPTNEQENvbHVtbihuYW1lPTNEIkRNQVgiLCA9CnByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkg
KSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZHVyY2hkbWF4IiwgY29sdW1u
PTNEQENvbHVtbihuYW1lPTNEIkRVPQpSQ0hETUFYIiwgcHJlY2lzaW9uPTNENiwgc2NhbGU9M0Qz
KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJzdGRhYnciLCBjb2x1bW49
M0RAQ29sdW1uKG5hbWU9M0QiU1REQUI9ClciLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpICks
Ci0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInN0ZGZlaGxlciIsIGNvbHVtbj0z
REBDb2x1bW4obmFtZT0zRCJTVD0KREZFSExFUiIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykg
KSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiYmVtZXJrdW5nIiwgY29sdW1u
PTNEQENvbHVtbihuYW1lPTNEIkJFPQpNRVJLVU5HIiwgbGVuZ3RoPTNEMjQwKSApLAotICAgICAg
ICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ1ZmVyYWJsaW5rcyIsIGNvbHVtbj0zREBDb2x1
bW4obmFtZT0zRCI9ClVGRVJBQkxJTktTIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKSApLAot
ICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJsaW5rc2Fic3QiLCBjb2x1bW49M0RA
Q29sdW1uKG5hbWU9M0QiTEk9Ck5LU0FCU1QiLCBwcmVjaXNpb249M0QyMiwgc2NhbGU9M0QwKSAp
IH0gKQotICAgIHB1YmxpYyBHbG90bGlua3NJZCBnZXRJZCgpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuaWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0SWQoR2xvdGxpbmtzSWQgaWQpIHsK
LSAgICAgICAgdGhpcy5pZCA9M0QgaWQ7Ci0gICAgfQotfQpkaWZmIC1yIDg5ZGNhYWUwODAxYyAt
ciA2YTRiZGNjY2ZhNGQgYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMv
cml2ZXIvc2VkZGIvbW9kZWwvR2xvdGxpbmtzSWQuamF2YQotLS0gYS9iYWNrZW5kL3NyYy9tYWlu
L2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvR2xvdGxpbmtzSWQ9Ci5q
YXZhCVR1ZSBKYW4gMTYgMTg6MTM6NTQgMjAxOCArMDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4g
MDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSw0NzIgKzAsMCBAQAotLyogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nl
cms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoK
LSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYz
KQotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRo
ZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBk
ZXRhaWxzLgotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMucml2ZXIuc2VkZGIubW9k
ZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMg
My40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmEubWF0aC5CaWdEZWNpbWFsOwotaW1wb3J0IGphdmF4
LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbWJlZGRhYmxl
OwotCi0vKioKLSAqIEdsb3RsaW5rc0lkIGdlbmVyYXRlZCBieSBoYm0yamF2YQotICovCi1ARW1i
ZWRkYWJsZQotcHVibGljIGNsYXNzIEdsb3RsaW5rc0lkICBpbXBsZW1lbnRzIGphdmEuaW8uU2Vy
aWFsaXphYmxlIHsKLQotCi0gICAgIHByaXZhdGUgbG9uZyBnbG90cmVjaHRlaWQ7Ci0gICAgIHBy
aXZhdGUgbG9uZyBtZXNzdW5naWQ7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB1ZmVyYWJzdDsK
LSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHRnZXNjaGllYmU7Ci0gICAgIHByaXZhdGUgQmlnRGVj
aW1hbCBkbTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHNrOwotICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgc287Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB1OwotICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgZDkwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDg0OwotICAgICBwcml2YXRlIEJp
Z0RlY2ltYWwgZDgwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDc1OwotICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgZDcwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDYwOwotICAgICBwcml2
YXRlIEJpZ0RlY2ltYWwgZDUwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDQwOwotICAgICBw
cml2YXRlIEJpZ0RlY2ltYWwgZDMwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDI1OwotICAg
ICBwcml2YXRlIEJpZ0RlY2ltYWwgZDIwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDE2Owot
ICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDEwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZG1p
bjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGR1cmNoZG1pbjsKLSAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIGRtYXg7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkdXJjaGRtYXg7Ci0gICAgIHBy
aXZhdGUgQmlnRGVjaW1hbCBzdGRhYnc7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzdGRmZWhs
ZXI7Ci0gICAgIHByaXZhdGUgU3RyaW5nIGJlbWVya3VuZzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNp
bWFsIHVmZXJhYmxpbmtzOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgbGlua3NhYnN0OwotCi0g
ICAgcHVibGljIEdsb3RsaW5rc0lkKCkgewotICAgIH0KLQotCi0gICAgcHVibGljIEdsb3RsaW5r
c0lkKGxvbmcgZ2xvdHJlY2h0ZWlkLCBsb25nIG1lc3N1bmdpZCwgQmlnRGVjaW1hbCB1ZmVyYT0K
YnN0KSB7Ci0gICAgICAgIHRoaXMuZ2xvdHJlY2h0ZWlkID0zRCBnbG90cmVjaHRlaWQ7Ci0gICAg
ICAgIHRoaXMubWVzc3VuZ2lkID0zRCBtZXNzdW5naWQ7Ci0gICAgICAgIHRoaXMudWZlcmFic3Qg
PTNEIHVmZXJhYnN0OwotICAgIH0KLSAgICBwdWJsaWMgR2xvdGxpbmtzSWQobG9uZyBnbG90cmVj
aHRlaWQsIGxvbmcgbWVzc3VuZ2lkLCBCaWdEZWNpbWFsIHVmZXJhPQpic3QsIEJpZ0RlY2ltYWwg
dGdlc2NoaWViZSwgQmlnRGVjaW1hbCBkbSwgQmlnRGVjaW1hbCBzaywgQmlnRGVjaW1hbCBzbywg
Qmk9CmdEZWNpbWFsIHUsIEJpZ0RlY2ltYWwgZDkwLCBCaWdEZWNpbWFsIGQ4NCwgQmlnRGVjaW1h
bCBkODAsIEJpZ0RlY2ltYWwgZDc1LD0KIEJpZ0RlY2ltYWwgZDcwLCBCaWdEZWNpbWFsIGQ2MCwg
QmlnRGVjaW1hbCBkNTAsIEJpZ0RlY2ltYWwgZDQwLCBCaWdEZWNpbWFsPQogZDMwLCBCaWdEZWNp
bWFsIGQyNSwgQmlnRGVjaW1hbCBkMjAsIEJpZ0RlY2ltYWwgZDE2LCBCaWdEZWNpbWFsIGQxMCwg
QmlnRGU9CmNpbWFsIGRtaW4sIEJpZ0RlY2ltYWwgZHVyY2hkbWluLCBCaWdEZWNpbWFsIGRtYXgs
IEJpZ0RlY2ltYWwgZHVyY2hkbWF4LCBCaT0KZ0RlY2ltYWwgc3RkYWJ3LCBCaWdEZWNpbWFsIHN0
ZGZlaGxlciwgU3RyaW5nIGJlbWVya3VuZywgQmlnRGVjaW1hbCB1ZmVyYWJsPQppbmtzLCBCaWdE
ZWNpbWFsIGxpbmtzYWJzdCkgewotICAgICAgIHRoaXMuZ2xvdHJlY2h0ZWlkID0zRCBnbG90cmVj
aHRlaWQ7Ci0gICAgICAgdGhpcy5tZXNzdW5naWQgPTNEIG1lc3N1bmdpZDsKLSAgICAgICB0aGlz
LnVmZXJhYnN0ID0zRCB1ZmVyYWJzdDsKLSAgICAgICB0aGlzLnRnZXNjaGllYmUgPTNEIHRnZXNj
aGllYmU7Ci0gICAgICAgdGhpcy5kbSA9M0QgZG07Ci0gICAgICAgdGhpcy5zayA9M0Qgc2s7Ci0g
ICAgICAgdGhpcy5zbyA9M0Qgc287Ci0gICAgICAgdGhpcy51ID0zRCB1OwotICAgICAgIHRoaXMu
ZDkwID0zRCBkOTA7Ci0gICAgICAgdGhpcy5kODQgPTNEIGQ4NDsKLSAgICAgICB0aGlzLmQ4MCA9
M0QgZDgwOwotICAgICAgIHRoaXMuZDc1ID0zRCBkNzU7Ci0gICAgICAgdGhpcy5kNzAgPTNEIGQ3
MDsKLSAgICAgICB0aGlzLmQ2MCA9M0QgZDYwOwotICAgICAgIHRoaXMuZDUwID0zRCBkNTA7Ci0g
ICAgICAgdGhpcy5kNDAgPTNEIGQ0MDsKLSAgICAgICB0aGlzLmQzMCA9M0QgZDMwOwotICAgICAg
IHRoaXMuZDI1ID0zRCBkMjU7Ci0gICAgICAgdGhpcy5kMjAgPTNEIGQyMDsKLSAgICAgICB0aGlz
LmQxNiA9M0QgZDE2OwotICAgICAgIHRoaXMuZDEwID0zRCBkMTA7Ci0gICAgICAgdGhpcy5kbWlu
ID0zRCBkbWluOwotICAgICAgIHRoaXMuZHVyY2hkbWluID0zRCBkdXJjaGRtaW47Ci0gICAgICAg
dGhpcy5kbWF4ID0zRCBkbWF4OwotICAgICAgIHRoaXMuZHVyY2hkbWF4ID0zRCBkdXJjaGRtYXg7
Ci0gICAgICAgdGhpcy5zdGRhYncgPTNEIHN0ZGFidzsKLSAgICAgICB0aGlzLnN0ZGZlaGxlciA9
M0Qgc3RkZmVobGVyOwotICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7Ci0gICAg
ICAgdGhpcy51ZmVyYWJsaW5rcyA9M0QgdWZlcmFibGlua3M7Ci0gICAgICAgdGhpcy5saW5rc2Fi
c3QgPTNEIGxpbmtzYWJzdDsKLSAgICB9Ci0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkdMT1RS
RUNIVEVJRCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0KPTNEMCkK
LSAgICBwdWJsaWMgbG9uZyBnZXRHbG90cmVjaHRlaWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
Lmdsb3RyZWNodGVpZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRHbG90cmVjaHRlaWQo
bG9uZyBnbG90cmVjaHRlaWQpIHsKLSAgICAgICAgdGhpcy5nbG90cmVjaHRlaWQgPTNEIGdsb3Ry
ZWNodGVpZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNRVNTVU5HSUQiLCBudWxs
YWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0Q9CjApCi0gICAgcHVibGljIGxv
bmcgZ2V0TWVzc3VuZ2lkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5tZXNzdW5naWQ7Ci0gICAg
fQotCi0gICAgcHVibGljIHZvaWQgc2V0TWVzc3VuZ2lkKGxvbmcgbWVzc3VuZ2lkKSB7Ci0gICAg
ICAgIHRoaXMubWVzc3VuZ2lkID0zRCBtZXNzdW5naWQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiVUZFUkFCU1QiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q4LCBzY2Fs
ZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VWZlcmFic3QoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLnVmZXJhYnN0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFVmZXJhYnN0
KEJpZ0RlY2ltYWwgdWZlcmFic3QpIHsKLSAgICAgICAgdGhpcy51ZmVyYWJzdCA9M0QgdWZlcmFi
c3Q7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVEdFU0NISUVCRSIsIHByZWNpc2lv
bj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRUZ2VzY2hpZWJlKCkg
ewotICAgICAgICByZXR1cm4gdGhpcy50Z2VzY2hpZWJlOwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldFRnZXNjaGllYmUoQmlnRGVjaW1hbCB0Z2VzY2hpZWJlKSB7Ci0gICAgICAgIHRoaXMu
dGdlc2NoaWViZSA9M0QgdGdlc2NoaWViZTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJETSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXREbSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZG07Ci0gICAgfQotCi0gICAgcHVibGljIHZv
aWQgc2V0RG0oQmlnRGVjaW1hbCBkbSkgewotICAgICAgICB0aGlzLmRtID0zRCBkbTsKLSAgICB9
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJTSyIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykK
LSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRTaygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc2s7
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U2soQmlnRGVjaW1hbCBzaykgewotICAgICAg
ICB0aGlzLnNrID0zRCBzazsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJTTyIsIHBy
ZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRTbygpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuc287Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U28o
QmlnRGVjaW1hbCBzbykgewotICAgICAgICB0aGlzLnNvID0zRCBzbzsKLSAgICB9Ci0KLQotICAg
IEBDb2x1bW4obmFtZT0zRCJVIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldFUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnU7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0VShCaWdEZWNpbWFsIHUpIHsKLSAgICAgICAgdGhpcy51ID0zRCB1
OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQ5MCIsIHByZWNpc2lvbj0zRDcsIHNj
YWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREOTAoKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLmQ5MDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREOTAoQmlnRGVjaW1hbCBk
OTApIHsKLSAgICAgICAgdGhpcy5kOTAgPTNEIGQ5MDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4o
bmFtZT0zRCJEODQiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0RDg0KCkgewotICAgICAgICByZXR1cm4gdGhpcy5kODQ7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0RDg0KEJpZ0RlY2ltYWwgZDg0KSB7Ci0gICAgICAgIHRoaXMuZDg0ID0z
RCBkODQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDgwIiwgcHJlY2lzaW9uPTNE
Nywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQ4MCgpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuZDgwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQ4MChCaWdEZWNp
bWFsIGQ4MCkgewotICAgICAgICB0aGlzLmQ4MCA9M0QgZDgwOwotICAgIH0KLQotCi0gICAgQENv
bHVtbihuYW1lPTNEIkQ3NSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMg
QmlnRGVjaW1hbCBnZXRENzUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQ3NTsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRENzUoQmlnRGVjaW1hbCBkNzUpIHsKLSAgICAgICAgdGhpcy5k
NzUgPTNEIGQ3NTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJENzAiLCBwcmVjaXNp
b249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDcwKCkgewotICAg
ICAgICByZXR1cm4gdGhpcy5kNzA7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RDcwKEJp
Z0RlY2ltYWwgZDcwKSB7Ci0gICAgICAgIHRoaXMuZDcwID0zRCBkNzA7Ci0gICAgfQotCi0KLSAg
ICBAQ29sdW1uKG5hbWU9M0QiRDYwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldEQ2MCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDYwOwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQ2MChCaWdEZWNpbWFsIGQ2MCkgewotICAgICAgICB0
aGlzLmQ2MCA9M0QgZDYwOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQ1MCIsIHBy
ZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRENTAoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLmQ1MDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRE
NTAoQmlnRGVjaW1hbCBkNTApIHsKLSAgICAgICAgdGhpcy5kNTAgPTNEIGQ1MDsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJENDAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0g
ICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDQwKCkgewotICAgICAgICByZXR1cm4gdGhpcy5kNDA7
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RDQwKEJpZ0RlY2ltYWwgZDQwKSB7Ci0gICAg
ICAgIHRoaXMuZDQwID0zRCBkNDA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDMw
IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQz
MCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDMwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lk
IHNldEQzMChCaWdEZWNpbWFsIGQzMCkgewotICAgICAgICB0aGlzLmQzMCA9M0QgZDMwOwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQyNSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNE
NCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREMjUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LmQyNTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREMjUoQmlnRGVjaW1hbCBkMjUpIHsK
LSAgICAgICAgdGhpcy5kMjUgPTNEIGQyNTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJEMjAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0RDIwKCkgewotICAgICAgICByZXR1cm4gdGhpcy5kMjA7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0RDIwKEJpZ0RlY2ltYWwgZDIwKSB7Ci0gICAgICAgIHRoaXMuZDIwID0zRCBkMjA7
Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDE2IiwgcHJlY2lzaW9uPTNENywgc2Nh
bGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQxNigpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuZDE2OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQxNihCaWdEZWNpbWFsIGQx
NikgewotICAgICAgICB0aGlzLmQxNiA9M0QgZDE2OwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIkQxMCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVj
aW1hbCBnZXREMTAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQxMDsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXREMTAoQmlnRGVjaW1hbCBkMTApIHsKLSAgICAgICAgdGhpcy5kMTAgPTNE
IGQxMDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJETUlOIiwgcHJlY2lzaW9uPTNE
Nywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldERtaW4oKSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLmRtaW47Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RG1pbihCaWdE
ZWNpbWFsIGRtaW4pIHsKLSAgICAgICAgdGhpcy5kbWluID0zRCBkbWluOwotICAgIH0KLQotCi0g
ICAgQENvbHVtbihuYW1lPTNEIkRVUkNIRE1JTiIsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNEMykK
LSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREdXJjaGRtaW4oKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLmR1cmNoZG1pbjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREdXJjaGRtaW4oQmln
RGVjaW1hbCBkdXJjaGRtaW4pIHsKLSAgICAgICAgdGhpcy5kdXJjaGRtaW4gPTNEIGR1cmNoZG1p
bjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJETUFYIiwgcHJlY2lzaW9uPTNENywg
c2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldERtYXgoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLmRtYXg7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RG1heChCaWdEZWNp
bWFsIGRtYXgpIHsKLSAgICAgICAgdGhpcy5kbWF4ID0zRCBkbWF4OwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIkRVUkNIRE1BWCIsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNEMykKLSAg
ICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREdXJjaGRtYXgoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LmR1cmNoZG1heDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREdXJjaGRtYXgoQmlnRGVj
aW1hbCBkdXJjaGRtYXgpIHsKLSAgICAgICAgdGhpcy5kdXJjaGRtYXggPTNEIGR1cmNoZG1heDsK
LSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJTVERBQlciLCBwcmVjaXNpb249M0Q4LCBz
Y2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0U3RkYWJ3KCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5zdGRhYnc7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U3RkYWJ3KEJp
Z0RlY2ltYWwgc3RkYWJ3KSB7Ci0gICAgICAgIHRoaXMuc3RkYWJ3ID0zRCBzdGRhYnc7Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiU1RERkVITEVSIiwgcHJlY2lzaW9uPTNEOCwgc2Nh
bGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFN0ZGZlaGxlcigpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuc3RkZmVobGVyOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFN0ZGZl
aGxlcihCaWdEZWNpbWFsIHN0ZGZlaGxlcikgewotICAgICAgICB0aGlzLnN0ZGZlaGxlciA9M0Qg
c3RkZmVobGVyOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkJFTUVSS1VORyIsIGxl
bmd0aD0zRDI0MCkKLSAgICBwdWJsaWMgU3RyaW5nIGdldEJlbWVya3VuZygpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuYmVtZXJrdW5nOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEJlbWVy
a3VuZyhTdHJpbmcgYmVtZXJrdW5nKSB7Ci0gICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1l
cmt1bmc7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVUZFUkFCTElOS1MiLCBwcmVj
aXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VWZlcmFibGlu
a3MoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnVmZXJhYmxpbmtzOwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldFVmZXJhYmxpbmtzKEJpZ0RlY2ltYWwgdWZlcmFibGlua3MpIHsKLSAgICAg
ICAgdGhpcy51ZmVyYWJsaW5rcyA9M0QgdWZlcmFibGlua3M7Ci0gICAgfQotCi0KLSAgICBAQ29s
dW1uKG5hbWU9M0QiTElOS1NBQlNUIiwgcHJlY2lzaW9uPTNEMjIsIHNjYWxlPTNEMCkKLSAgICBw
dWJsaWMgQmlnRGVjaW1hbCBnZXRMaW5rc2Fic3QoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmxp
bmtzYWJzdDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRMaW5rc2Fic3QoQmlnRGVjaW1h
bCBsaW5rc2Fic3QpIHsKLSAgICAgICAgdGhpcy5saW5rc2Fic3QgPTNEIGxpbmtzYWJzdDsKLSAg
ICB9Ci0KLQotICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvdGhlcikgewotICAgICAg
ICAgaWYgKCAodGhpcyA9M0Q9M0Qgb3RoZXIgKSApIHJldHVybiB0cnVlOwotICAgICAgICAgaWYg
KCAob3RoZXIgPTNEPTNEIG51bGwgKSApIHJldHVybiBmYWxzZTsKLSAgICAgICAgIGlmICggIShv
dGhlciBpbnN0YW5jZW9mIEdsb3RsaW5rc0lkKSApIHJldHVybiBmYWxzZTsKLSAgICAgICAgIEds
b3RsaW5rc0lkIGNhc3RPdGhlciA9M0QgKCBHbG90bGlua3NJZCApIG90aGVyOwotCi0gICAgICAg
ICByZXR1cm4gKHRoaXMuZ2V0R2xvdHJlY2h0ZWlkKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0R2xvdHJl
Y2h0ZWlkKCkpCi0gJiYgKHRoaXMuZ2V0TWVzc3VuZ2lkKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWVz
c3VuZ2lkKCkpCi0gJiYgKCAodGhpcy5nZXRVZmVyYWJzdCgpPTNEPTNEY2FzdE90aGVyLmdldFVm
ZXJhYnN0KCkpIHx8ICggdGhpcy5nZXRVZmVyYT0KYnN0KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIu
Z2V0VWZlcmFic3QoKSE9M0RudWxsICYmIHRoaXMuZ2V0VWZlcmFic3QoKS5lcXVhPQpscyhjYXN0
T3RoZXIuZ2V0VWZlcmFic3QoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRUZ2VzY2hpZWJlKCk9M0Q9
M0RjYXN0T3RoZXIuZ2V0VGdlc2NoaWViZSgpKSB8fCAoIHRoaXMuZ2V0VD0KZ2VzY2hpZWJlKCkh
PTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0VGdlc2NoaWViZSgpIT0zRG51bGwgJiYgdGhpcy5nZXRU
Z2VzY2hpPQplYmUoKS5lcXVhbHMoY2FzdE90aGVyLmdldFRnZXNjaGllYmUoKSkgKSApCi0gJiYg
KCAodGhpcy5nZXREbSgpPTNEPTNEY2FzdE90aGVyLmdldERtKCkpIHx8ICggdGhpcy5nZXREbSgp
IT0zRG51bGwgJiYgYz0KYXN0T3RoZXIuZ2V0RG0oKSE9M0RudWxsICYmIHRoaXMuZ2V0RG0oKS5l
cXVhbHMoY2FzdE90aGVyLmdldERtKCkpICkgKQotICYmICggKHRoaXMuZ2V0U2soKT0zRD0zRGNh
c3RPdGhlci5nZXRTaygpKSB8fCAoIHRoaXMuZ2V0U2soKSE9M0RudWxsICYmIGM9CmFzdE90aGVy
LmdldFNrKCkhPTNEbnVsbCAmJiB0aGlzLmdldFNrKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRTaygp
KSApICkKLSAmJiAoICh0aGlzLmdldFNvKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0U28oKSkgfHwgKCB0
aGlzLmdldFNvKCkhPTNEbnVsbCAmJiBjPQphc3RPdGhlci5nZXRTbygpIT0zRG51bGwgJiYgdGhp
cy5nZXRTbygpLmVxdWFscyhjYXN0T3RoZXIuZ2V0U28oKSkgKSApCi0gJiYgKCAodGhpcy5nZXRV
KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0VSgpKSB8fCAoIHRoaXMuZ2V0VSgpIT0zRG51bGwgJiYgY2Fz
dD0KT3RoZXIuZ2V0VSgpIT0zRG51bGwgJiYgdGhpcy5nZXRVKCkuZXF1YWxzKGNhc3RPdGhlci5n
ZXRVKCkpICkgKQotICYmICggKHRoaXMuZ2V0RDkwKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RDkwKCkp
IHx8ICggdGhpcy5nZXREOTAoKSE9M0RudWxsICY9CiYgY2FzdE90aGVyLmdldEQ5MCgpIT0zRG51
bGwgJiYgdGhpcy5nZXREOTAoKS5lcXVhbHMoY2FzdE90aGVyLmdldEQ5MCgpKSApICkKLSAmJiAo
ICh0aGlzLmdldEQ4NCgpPTNEPTNEY2FzdE90aGVyLmdldEQ4NCgpKSB8fCAoIHRoaXMuZ2V0RDg0
KCkhPTNEbnVsbCAmPQomIGNhc3RPdGhlci5nZXREODQoKSE9M0RudWxsICYmIHRoaXMuZ2V0RDg0
KCkuZXF1YWxzKGNhc3RPdGhlci5nZXREODQoKSkgKSApCi0gJiYgKCAodGhpcy5nZXREODAoKT0z
RD0zRGNhc3RPdGhlci5nZXREODAoKSkgfHwgKCB0aGlzLmdldEQ4MCgpIT0zRG51bGwgJj0KJiBj
YXN0T3RoZXIuZ2V0RDgwKCkhPTNEbnVsbCAmJiB0aGlzLmdldEQ4MCgpLmVxdWFscyhjYXN0T3Ro
ZXIuZ2V0RDgwKCkpICkgKQotICYmICggKHRoaXMuZ2V0RDc1KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0
RDc1KCkpIHx8ICggdGhpcy5nZXRENzUoKSE9M0RudWxsICY9CiYgY2FzdE90aGVyLmdldEQ3NSgp
IT0zRG51bGwgJiYgdGhpcy5nZXRENzUoKS5lcXVhbHMoY2FzdE90aGVyLmdldEQ3NSgpKSApICkK
LSAmJiAoICh0aGlzLmdldEQ3MCgpPTNEPTNEY2FzdE90aGVyLmdldEQ3MCgpKSB8fCAoIHRoaXMu
Z2V0RDcwKCkhPTNEbnVsbCAmPQomIGNhc3RPdGhlci5nZXRENzAoKSE9M0RudWxsICYmIHRoaXMu
Z2V0RDcwKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRENzAoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRE
NjAoKT0zRD0zRGNhc3RPdGhlci5nZXRENjAoKSkgfHwgKCB0aGlzLmdldEQ2MCgpIT0zRG51bGwg
Jj0KJiBjYXN0T3RoZXIuZ2V0RDYwKCkhPTNEbnVsbCAmJiB0aGlzLmdldEQ2MCgpLmVxdWFscyhj
YXN0T3RoZXIuZ2V0RDYwKCkpICkgKQotICYmICggKHRoaXMuZ2V0RDUwKCk9M0Q9M0RjYXN0T3Ro
ZXIuZ2V0RDUwKCkpIHx8ICggdGhpcy5nZXRENTAoKSE9M0RudWxsICY9CiYgY2FzdE90aGVyLmdl
dEQ1MCgpIT0zRG51bGwgJiYgdGhpcy5nZXRENTAoKS5lcXVhbHMoY2FzdE90aGVyLmdldEQ1MCgp
KSApICkKLSAmJiAoICh0aGlzLmdldEQ0MCgpPTNEPTNEY2FzdE90aGVyLmdldEQ0MCgpKSB8fCAo
IHRoaXMuZ2V0RDQwKCkhPTNEbnVsbCAmPQomIGNhc3RPdGhlci5nZXRENDAoKSE9M0RudWxsICYm
IHRoaXMuZ2V0RDQwKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRENDAoKSkgKSApCi0gJiYgKCAodGhp
cy5nZXREMzAoKT0zRD0zRGNhc3RPdGhlci5nZXREMzAoKSkgfHwgKCB0aGlzLmdldEQzMCgpIT0z
RG51bGwgJj0KJiBjYXN0T3RoZXIuZ2V0RDMwKCkhPTNEbnVsbCAmJiB0aGlzLmdldEQzMCgpLmVx
dWFscyhjYXN0T3RoZXIuZ2V0RDMwKCkpICkgKQotICYmICggKHRoaXMuZ2V0RDI1KCk9M0Q9M0Rj
YXN0T3RoZXIuZ2V0RDI1KCkpIHx8ICggdGhpcy5nZXREMjUoKSE9M0RudWxsICY9CiYgY2FzdE90
aGVyLmdldEQyNSgpIT0zRG51bGwgJiYgdGhpcy5nZXREMjUoKS5lcXVhbHMoY2FzdE90aGVyLmdl
dEQyNSgpKSApICkKLSAmJiAoICh0aGlzLmdldEQyMCgpPTNEPTNEY2FzdE90aGVyLmdldEQyMCgp
KSB8fCAoIHRoaXMuZ2V0RDIwKCkhPTNEbnVsbCAmPQomIGNhc3RPdGhlci5nZXREMjAoKSE9M0Ru
dWxsICYmIHRoaXMuZ2V0RDIwKCkuZXF1YWxzKGNhc3RPdGhlci5nZXREMjAoKSkgKSApCi0gJiYg
KCAodGhpcy5nZXREMTYoKT0zRD0zRGNhc3RPdGhlci5nZXREMTYoKSkgfHwgKCB0aGlzLmdldEQx
NigpIT0zRG51bGwgJj0KJiBjYXN0T3RoZXIuZ2V0RDE2KCkhPTNEbnVsbCAmJiB0aGlzLmdldEQx
NigpLmVxdWFscyhjYXN0T3RoZXIuZ2V0RDE2KCkpICkgKQotICYmICggKHRoaXMuZ2V0RDEwKCk9
M0Q9M0RjYXN0T3RoZXIuZ2V0RDEwKCkpIHx8ICggdGhpcy5nZXREMTAoKSE9M0RudWxsICY9CiYg
Y2FzdE90aGVyLmdldEQxMCgpIT0zRG51bGwgJiYgdGhpcy5nZXREMTAoKS5lcXVhbHMoY2FzdE90
aGVyLmdldEQxMCgpKSApICkKLSAmJiAoICh0aGlzLmdldERtaW4oKT0zRD0zRGNhc3RPdGhlci5n
ZXREbWluKCkpIHx8ICggdGhpcy5nZXREbWluKCkhPTNEbnVsPQpsICYmIGNhc3RPdGhlci5nZXRE
bWluKCkhPTNEbnVsbCAmJiB0aGlzLmdldERtaW4oKS5lcXVhbHMoY2FzdE90aGVyLmdldERtaW49
CigpKSApICkKLSAmJiAoICh0aGlzLmdldER1cmNoZG1pbigpPTNEPTNEY2FzdE90aGVyLmdldER1
cmNoZG1pbigpKSB8fCAoIHRoaXMuZ2V0RHVyPQpjaGRtaW4oKSE9M0RudWxsICYmIGNhc3RPdGhl
ci5nZXREdXJjaGRtaW4oKSE9M0RudWxsICYmIHRoaXMuZ2V0RHVyY2hkbWluKCk9Ci5lcXVhbHMo
Y2FzdE90aGVyLmdldER1cmNoZG1pbigpKSApICkKLSAmJiAoICh0aGlzLmdldERtYXgoKT0zRD0z
RGNhc3RPdGhlci5nZXREbWF4KCkpIHx8ICggdGhpcy5nZXREbWF4KCkhPTNEbnVsPQpsICYmIGNh
c3RPdGhlci5nZXREbWF4KCkhPTNEbnVsbCAmJiB0aGlzLmdldERtYXgoKS5lcXVhbHMoY2FzdE90
aGVyLmdldERtYXg9CigpKSApICkKLSAmJiAoICh0aGlzLmdldER1cmNoZG1heCgpPTNEPTNEY2Fz
dE90aGVyLmdldER1cmNoZG1heCgpKSB8fCAoIHRoaXMuZ2V0RHVyPQpjaGRtYXgoKSE9M0RudWxs
ICYmIGNhc3RPdGhlci5nZXREdXJjaGRtYXgoKSE9M0RudWxsICYmIHRoaXMuZ2V0RHVyY2hkbWF4
KCk9Ci5lcXVhbHMoY2FzdE90aGVyLmdldER1cmNoZG1heCgpKSApICkKLSAmJiAoICh0aGlzLmdl
dFN0ZGFidygpPTNEPTNEY2FzdE90aGVyLmdldFN0ZGFidygpKSB8fCAoIHRoaXMuZ2V0U3RkYWJ3
KCkhPQo9M0RudWxsICYmIGNhc3RPdGhlci5nZXRTdGRhYncoKSE9M0RudWxsICYmIHRoaXMuZ2V0
U3RkYWJ3KCkuZXF1YWxzKGNhc3RPdGg9CmVyLmdldFN0ZGFidygpKSApICkKLSAmJiAoICh0aGlz
LmdldFN0ZGZlaGxlcigpPTNEPTNEY2FzdE90aGVyLmdldFN0ZGZlaGxlcigpKSB8fCAoIHRoaXMu
Z2V0U3RkPQpmZWhsZXIoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRTdGRmZWhsZXIoKSE9M0Ru
dWxsICYmIHRoaXMuZ2V0U3RkZmVobGVyKCk9Ci5lcXVhbHMoY2FzdE90aGVyLmdldFN0ZGZlaGxl
cigpKSApICkKLSAmJiAoICh0aGlzLmdldEJlbWVya3VuZygpPTNEPTNEY2FzdE90aGVyLmdldEJl
bWVya3VuZygpKSB8fCAoIHRoaXMuZ2V0QmVtPQplcmt1bmcoKSE9M0RudWxsICYmIGNhc3RPdGhl
ci5nZXRCZW1lcmt1bmcoKSE9M0RudWxsICYmIHRoaXMuZ2V0QmVtZXJrdW5nKCk9Ci5lcXVhbHMo
Y2FzdE90aGVyLmdldEJlbWVya3VuZygpKSApICkKLSAmJiAoICh0aGlzLmdldFVmZXJhYmxpbmtz
KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0VWZlcmFibGlua3MoKSkgfHwgKCB0aGlzLmdlPQp0VWZlcmFi
bGlua3MoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRVZmVyYWJsaW5rcygpIT0zRG51bGwgJiYg
dGhpcy5nZXRVZmU9CnJhYmxpbmtzKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRVZmVyYWJsaW5rcygp
KSApICkKLSAmJiAoICh0aGlzLmdldExpbmtzYWJzdCgpPTNEPTNEY2FzdE90aGVyLmdldExpbmtz
YWJzdCgpKSB8fCAoIHRoaXMuZ2V0TGluPQprc2Fic3QoKSE9M0RudWxsICYmIGNhc3RPdGhlci5n
ZXRMaW5rc2Fic3QoKSE9M0RudWxsICYmIHRoaXMuZ2V0TGlua3NhYnN0KCk9Ci5lcXVhbHMoY2Fz
dE90aGVyLmdldExpbmtzYWJzdCgpKSApICk7Ci0gICB9Ci0KLSAgIHB1YmxpYyBpbnQgaGFzaENv
ZGUoKSB7Ci0gICAgICAgICBpbnQgcmVzdWx0ID0zRCAxNzsKLQotICAgICAgICAgcmVzdWx0ID0z
RCAzNyAqIHJlc3VsdCArIChpbnQpIHRoaXMuZ2V0R2xvdHJlY2h0ZWlkKCk7Ci0gICAgICAgICBy
ZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKGludCkgdGhpcy5nZXRNZXNzdW5naWQoKTsKLSAgICAg
ICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFVmZXJhYnN0KCkgPTNEPTNEIG51bGwg
PyAwIDogdGhpcy5nPQpldFVmZXJhYnN0KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0
ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0VGdlc2NoaWViZSgpID0zRD0zRCBudWxsID8gMCA6IHRo
aXM9Ci5nZXRUZ2VzY2hpZWJlKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAz
NyAqIHJlc3VsdCArICggZ2V0RG0oKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldERtKCk9Ci5o
YXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRTaygp
ID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0U2soKT0KLmhhc2hDb2RlKCkgKTsKLSAgICAgICAg
IHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFNvKCkgPTNEPTNEIG51bGwgPyAwIDogdGhp
cy5nZXRTbygpPQouaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3Vs
dCArICggZ2V0VSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0VSgpLmg9CmFzaENvZGUoKSAp
OwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0RDkwKCkgPTNEPTNEIG51
bGwgPyAwIDogdGhpcy5nZXREOTA9CigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9
M0QgMzcgKiByZXN1bHQgKyAoIGdldEQ4NCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0RDg0
PQooKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBn
ZXREODAoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEQ4MD0KKCkuaGFzaENvZGUoKSApOwot
ICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0RDc1KCkgPTNEPTNEIG51bGwg
PyAwIDogdGhpcy5nZXRENzU9CigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0Qg
MzcgKiByZXN1bHQgKyAoIGdldEQ3MCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0RDcwPQoo
KS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRE
NjAoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEQ2MD0KKCkuaGFzaENvZGUoKSApOwotICAg
ICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0RDUwKCkgPTNEPTNEIG51bGwgPyAw
IDogdGhpcy5nZXRENTA9CigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcg
KiByZXN1bHQgKyAoIGdldEQ0MCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0RDQwPQooKS5o
YXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXREMzAo
KSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEQzMD0KKCkuaGFzaENvZGUoKSApOwotICAgICAg
ICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0RDI1KCkgPTNEPTNEIG51bGwgPyAwIDog
dGhpcy5nZXREMjU9CigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiBy
ZXN1bHQgKyAoIGdldEQyMCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0RDIwPQooKS5oYXNo
Q29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXREMTYoKSA9
M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEQxNj0KKCkuaGFzaENvZGUoKSApOwotICAgICAgICAg
cmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0RDEwKCkgPTNEPTNEIG51bGwgPyAwIDogdGhp
cy5nZXREMTA9CigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1
bHQgKyAoIGdldERtaW4oKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldERtPQppbigpLmhhc2hD
b2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldER1cmNoZG1p
bigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuPQpnZXREdXJjaGRtaW4oKS5oYXNoQ29kZSgpICk7
Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXREbWF4KCkgPTNEPTNEIG51
bGwgPyAwIDogdGhpcy5nZXREbT0KYXgoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQg
PTNEIDM3ICogcmVzdWx0ICsgKCBnZXREdXJjaGRtYXgoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlz
Lj0KZ2V0RHVyY2hkbWF4KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAq
IHJlc3VsdCArICggZ2V0U3RkYWJ3KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXQ9ClN0ZGFi
dygpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdl
dFN0ZGZlaGxlcigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuPQpnZXRTdGRmZWhsZXIoKS5oYXNo
Q29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRCZW1lcmt1
bmcoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLj0KZ2V0QmVtZXJrdW5nKCkuaGFzaENvZGUoKSAp
OwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0VWZlcmFibGlua3MoKSA9
M0Q9M0QgbnVsbCA/IDAgOiB0aGk9CnMuZ2V0VWZlcmFibGlua3MoKS5oYXNoQ29kZSgpICk7Ci0g
ICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRMaW5rc2Fic3QoKSA9M0Q9M0Qg
bnVsbCA/IDAgOiB0aGlzLj0KZ2V0TGlua3NhYnN0KCkuaGFzaENvZGUoKSApOwotICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgIH0KLX0KZGlmZiAtciA4OWRjYWFlMDgwMWMgLXIgNmE0YmRjY2Nm
YTRkIGJhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50PQpzL3JpdmVyL3NlZGRi
L21vZGVsL0dsb3RyZWNodGUuamF2YQotLS0gYS9iYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2Rp
dmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvR2xvdHJlY2h0ZS49CmphdmEJVHVlIEphbiAx
NiAxODoxMzo1NCAyMDE4ICswMTAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAx
OTcwICswMDAwCkBAIC0xLDQyMCArMCwwIEBACi0vKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIs
IDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQotICog
U29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0gKgotICogVGhpcyBmaWxl
IGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMpCi0gKiBhbmQgY29t
ZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCi0gKiBkb2N1bWVu
dGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFpbHMuCi0gKi8K
LQotcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2RlbDsKLS8vIEdlbmVy
YXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQuMC5DUjEKLQot
Ci1pbXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7
Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47
Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OwotaW1wb3J0IGphdmF4LnBlcnNpc3Rl
bmNlLkZldGNoVHlwZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKLWltcG9ydCBqYXZh
eC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk1hbnlU
b09uZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5PbmVUb01hbnk7Ci1pbXBvcnQgamF2YXgu
cGVyc2lzdGVuY2UuT25lVG9PbmU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7Ci0K
LS8qKgotICogR2xvdHJlY2h0ZSBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVudGl0eQot
QFRhYmxlKG5hbWU9M0QiR0xPVFJFQ0hURSIKLSAgICAsc2NoZW1hPTNEIlNFRERCIgotKQotcHVi
bGljIGNsYXNzIEdsb3RyZWNodGUgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgewot
Ci0KLSAgICAgcHJpdmF0ZSBsb25nIGdsb3RyZWNodGVpZDsKLSAgICAgcHJpdmF0ZSBNZXNzdW5n
IG1lc3N1bmc7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB1ZmVyYWJzdDsKLSAgICAgcHJpdmF0
ZSBCaWdEZWNpbWFsIHRnZXNjaGllYmU7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkbTsKLSAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHNrOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgc287Ci0g
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCB1OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDkwOwot
ICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDg0OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDgw
OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDc1OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
ZDcwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDYwOwotICAgICBwcml2YXRlIEJpZ0RlY2lt
YWwgZDUwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDQwOwotICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgZDMwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDI1OwotICAgICBwcml2YXRlIEJp
Z0RlY2ltYWwgZDIwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDE2OwotICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgZDEwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZG1pbjsKLSAgICAgcHJp
dmF0ZSBCaWdEZWNpbWFsIGR1cmNoZG1pbjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGRtYXg7
Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkdXJjaGRtYXg7Ci0gICAgIHByaXZhdGUgQmlnRGVj
aW1hbCBzdGRhYnc7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzdGRmZWhsZXI7Ci0gICAgIHBy
aXZhdGUgU3RyaW5nIGJlbWVya3VuZzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHVmZXJhYmxp
bmtzOwotICAgICBwcml2YXRlIEdzaWVidW5nIGdzaWVidW5nOwotICAgICBwcml2YXRlIFNldDxH
cHJvYmU+IGdwcm9iZXMgPTNEIG5ldyBIYXNoU2V0PEdwcm9iZT4oMCk7Ci0KLSAgICBwdWJsaWMg
R2xvdHJlY2h0ZSgpIHsKLSAgICB9Ci0KLQotICAgIHB1YmxpYyBHbG90cmVjaHRlKGxvbmcgZ2xv
dHJlY2h0ZWlkLCBNZXNzdW5nIG1lc3N1bmcsIEJpZ0RlY2ltYWwgdWZlcmE9CmJzdCkgewotICAg
ICAgICB0aGlzLmdsb3RyZWNodGVpZCA9M0QgZ2xvdHJlY2h0ZWlkOwotICAgICAgICB0aGlzLm1l
c3N1bmcgPTNEIG1lc3N1bmc7Ci0gICAgICAgIHRoaXMudWZlcmFic3QgPTNEIHVmZXJhYnN0Owot
ICAgIH0KLSAgICBwdWJsaWMgR2xvdHJlY2h0ZShsb25nIGdsb3RyZWNodGVpZCwgTWVzc3VuZyBt
ZXNzdW5nLCBCaWdEZWNpbWFsIHVmZXJhPQpic3QsIEJpZ0RlY2ltYWwgdGdlc2NoaWViZSwgQmln
RGVjaW1hbCBkbSwgQmlnRGVjaW1hbCBzaywgQmlnRGVjaW1hbCBzbywgQmk9CmdEZWNpbWFsIHUs
IEJpZ0RlY2ltYWwgZDkwLCBCaWdEZWNpbWFsIGQ4NCwgQmlnRGVjaW1hbCBkODAsIEJpZ0RlY2lt
YWwgZDc1LD0KIEJpZ0RlY2ltYWwgZDcwLCBCaWdEZWNpbWFsIGQ2MCwgQmlnRGVjaW1hbCBkNTAs
IEJpZ0RlY2ltYWwgZDQwLCBCaWdEZWNpbWFsPQogZDMwLCBCaWdEZWNpbWFsIGQyNSwgQmlnRGVj
aW1hbCBkMjAsIEJpZ0RlY2ltYWwgZDE2LCBCaWdEZWNpbWFsIGQxMCwgQmlnRGU9CmNpbWFsIGRt
aW4sIEJpZ0RlY2ltYWwgZHVyY2hkbWluLCBCaWdEZWNpbWFsIGRtYXgsIEJpZ0RlY2ltYWwgZHVy
Y2hkbWF4LCBCaT0KZ0RlY2ltYWwgc3RkYWJ3LCBCaWdEZWNpbWFsIHN0ZGZlaGxlciwgU3RyaW5n
IGJlbWVya3VuZywgQmlnRGVjaW1hbCB1ZmVyYWJsPQppbmtzLCBHc2llYnVuZyBnc2llYnVuZywg
U2V0PEdwcm9iZT4gZ3Byb2JlcykgewotICAgICAgIHRoaXMuZ2xvdHJlY2h0ZWlkID0zRCBnbG90
cmVjaHRlaWQ7Ci0gICAgICAgdGhpcy5tZXNzdW5nID0zRCBtZXNzdW5nOwotICAgICAgIHRoaXMu
dWZlcmFic3QgPTNEIHVmZXJhYnN0OwotICAgICAgIHRoaXMudGdlc2NoaWViZSA9M0QgdGdlc2No
aWViZTsKLSAgICAgICB0aGlzLmRtID0zRCBkbTsKLSAgICAgICB0aGlzLnNrID0zRCBzazsKLSAg
ICAgICB0aGlzLnNvID0zRCBzbzsKLSAgICAgICB0aGlzLnUgPTNEIHU7Ci0gICAgICAgdGhpcy5k
OTAgPTNEIGQ5MDsKLSAgICAgICB0aGlzLmQ4NCA9M0QgZDg0OwotICAgICAgIHRoaXMuZDgwID0z
RCBkODA7Ci0gICAgICAgdGhpcy5kNzUgPTNEIGQ3NTsKLSAgICAgICB0aGlzLmQ3MCA9M0QgZDcw
OwotICAgICAgIHRoaXMuZDYwID0zRCBkNjA7Ci0gICAgICAgdGhpcy5kNTAgPTNEIGQ1MDsKLSAg
ICAgICB0aGlzLmQ0MCA9M0QgZDQwOwotICAgICAgIHRoaXMuZDMwID0zRCBkMzA7Ci0gICAgICAg
dGhpcy5kMjUgPTNEIGQyNTsKLSAgICAgICB0aGlzLmQyMCA9M0QgZDIwOwotICAgICAgIHRoaXMu
ZDE2ID0zRCBkMTY7Ci0gICAgICAgdGhpcy5kMTAgPTNEIGQxMDsKLSAgICAgICB0aGlzLmRtaW4g
PTNEIGRtaW47Ci0gICAgICAgdGhpcy5kdXJjaGRtaW4gPTNEIGR1cmNoZG1pbjsKLSAgICAgICB0
aGlzLmRtYXggPTNEIGRtYXg7Ci0gICAgICAgdGhpcy5kdXJjaGRtYXggPTNEIGR1cmNoZG1heDsK
LSAgICAgICB0aGlzLnN0ZGFidyA9M0Qgc3RkYWJ3OwotICAgICAgIHRoaXMuc3RkZmVobGVyID0z
RCBzdGRmZWhsZXI7Ci0gICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICAg
ICB0aGlzLnVmZXJhYmxpbmtzID0zRCB1ZmVyYWJsaW5rczsKLSAgICAgICB0aGlzLmdzaWVidW5n
ID0zRCBnc2llYnVuZzsKLSAgICAgICB0aGlzLmdwcm9iZXMgPTNEIGdwcm9iZXM7Ci0gICAgfQot
Ci0gICAgIEBJZAotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiR0xPVFJFQ0hURUlEIiwgdW5pcXVl
PTNEdHJ1ZSwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzPQppb249M0QxMSwgc2NhbGU9M0QwKQot
ICAgIHB1YmxpYyBsb25nIGdldEdsb3RyZWNodGVpZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
Z2xvdHJlY2h0ZWlkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEdsb3RyZWNodGVpZChs
b25nIGdsb3RyZWNodGVpZCkgewotICAgICAgICB0aGlzLmdsb3RyZWNodGVpZCA9M0QgZ2xvdHJl
Y2h0ZWlkOwotICAgIH0KLQotQE1hbnlUb09uZShmZXRjaD0zREZldGNoVHlwZS5MQVpZKQotICAg
IEBKb2luQ29sdW1uKG5hbWU9M0QiTUVTU1VOR0lEIiwgbnVsbGFibGU9M0RmYWxzZSkKLSAgICBw
dWJsaWMgTWVzc3VuZyBnZXRNZXNzdW5nKCkgewotICAgICAgICByZXR1cm4gdGhpcy5tZXNzdW5n
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1lc3N1bmcoTWVzc3VuZyBtZXNzdW5nKSB7
Ci0gICAgICAgIHRoaXMubWVzc3VuZyA9M0QgbWVzc3VuZzsKLSAgICB9Ci0KLQotICAgIEBDb2x1
bW4obmFtZT0zRCJVRkVSQUJTVCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDgsIHNj
YWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRVZmVyYWJzdCgpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMudWZlcmFic3Q7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VWZlcmFi
c3QoQmlnRGVjaW1hbCB1ZmVyYWJzdCkgewotICAgICAgICB0aGlzLnVmZXJhYnN0ID0zRCB1ZmVy
YWJzdDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJUR0VTQ0hJRUJFIiwgcHJlY2lz
aW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFRnZXNjaGllYmUo
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRnZXNjaGllYmU7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0VGdlc2NoaWViZShCaWdEZWNpbWFsIHRnZXNjaGllYmUpIHsKLSAgICAgICAgdGhp
cy50Z2VzY2hpZWJlID0zRCB0Z2VzY2hpZWJlOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIkRNIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFs
IGdldERtKCkgewotICAgICAgICByZXR1cm4gdGhpcy5kbTsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXREbShCaWdEZWNpbWFsIGRtKSB7Ci0gICAgICAgIHRoaXMuZG0gPTNEIGRtOwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNLIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0Qz
KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFNrKCkgewotICAgICAgICByZXR1cm4gdGhpcy5z
azsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTayhCaWdEZWNpbWFsIHNrKSB7Ci0gICAg
ICAgIHRoaXMuc2sgPTNEIHNrOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNPIiwg
cHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFNvKCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5zbzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRT
byhCaWdEZWNpbWFsIHNvKSB7Ci0gICAgICAgIHRoaXMuc28gPTNEIHNvOwotICAgIH0KLQotCi0g
ICAgQENvbHVtbihuYW1lPTNEIlUiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVi
bGljIEJpZ0RlY2ltYWwgZ2V0VSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudTsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRVKEJpZ0RlY2ltYWwgdSkgewotICAgICAgICB0aGlzLnUgPTNE
IHU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDkwIiwgcHJlY2lzaW9uPTNENywg
c2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQ5MCgpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuZDkwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQ5MChCaWdEZWNpbWFs
IGQ5MCkgewotICAgICAgICB0aGlzLmQ5MCA9M0QgZDkwOwotICAgIH0KLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIkQ4NCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmln
RGVjaW1hbCBnZXREODQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQ4NDsKLSAgICB9Ci0KLSAg
ICBwdWJsaWMgdm9pZCBzZXREODQoQmlnRGVjaW1hbCBkODQpIHsKLSAgICAgICAgdGhpcy5kODQg
PTNEIGQ4NDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJEODAiLCBwcmVjaXNpb249
M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDgwKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5kODA7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RDgwKEJpZ0Rl
Y2ltYWwgZDgwKSB7Ci0gICAgICAgIHRoaXMuZDgwID0zRCBkODA7Ci0gICAgfQotCi0KLSAgICBA
Q29sdW1uKG5hbWU9M0QiRDc1IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldEQ3NSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDc1OwotICAgIH0K
LQotICAgIHB1YmxpYyB2b2lkIHNldEQ3NShCaWdEZWNpbWFsIGQ3NSkgewotICAgICAgICB0aGlz
LmQ3NSA9M0QgZDc1OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQ3MCIsIHByZWNp
c2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRENzAoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLmQ3MDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRENzAo
QmlnRGVjaW1hbCBkNzApIHsKLSAgICAgICAgdGhpcy5kNzAgPTNEIGQ3MDsKLSAgICB9Ci0KLQot
ICAgIEBDb2x1bW4obmFtZT0zRCJENjAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAg
cHVibGljIEJpZ0RlY2ltYWwgZ2V0RDYwKCkgewotICAgICAgICByZXR1cm4gdGhpcy5kNjA7Ci0g
ICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RDYwKEJpZ0RlY2ltYWwgZDYwKSB7Ci0gICAgICAg
IHRoaXMuZDYwID0zRCBkNjA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDUwIiwg
cHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQ1MCgp
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDUwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dEQ1MChCaWdEZWNpbWFsIGQ1MCkgewotICAgICAgICB0aGlzLmQ1MCA9M0QgZDUwOwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQ0MCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkK
LSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRENDAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQ0
MDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRENDAoQmlnRGVjaW1hbCBkNDApIHsKLSAg
ICAgICAgdGhpcy5kNDAgPTNEIGQ0MDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJE
MzAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0
RDMwKCkgewotICAgICAgICByZXR1cm4gdGhpcy5kMzA7Ci0gICAgfQotCi0gICAgcHVibGljIHZv
aWQgc2V0RDMwKEJpZ0RlY2ltYWwgZDMwKSB7Ci0gICAgICAgIHRoaXMuZDMwID0zRCBkMzA7Ci0g
ICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDI1IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9
M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQyNSgpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuZDI1OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQyNShCaWdEZWNpbWFsIGQyNSkg
ewotICAgICAgICB0aGlzLmQyNSA9M0QgZDI1OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIkQyMCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1h
bCBnZXREMjAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQyMDsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXREMjAoQmlnRGVjaW1hbCBkMjApIHsKLSAgICAgICAgdGhpcy5kMjAgPTNEIGQy
MDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJEMTYiLCBwcmVjaXNpb249M0Q3LCBz
Y2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDE2KCkgewotICAgICAgICByZXR1
cm4gdGhpcy5kMTY7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RDE2KEJpZ0RlY2ltYWwg
ZDE2KSB7Ci0gICAgICAgIHRoaXMuZDE2ID0zRCBkMTY7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiRDEwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdE
ZWNpbWFsIGdldEQxMCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDEwOwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldEQxMChCaWdEZWNpbWFsIGQxMCkgewotICAgICAgICB0aGlzLmQxMCA9
M0QgZDEwOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkRNSU4iLCBwcmVjaXNpb249
M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RG1pbigpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuZG1pbjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREbWluKEJp
Z0RlY2ltYWwgZG1pbikgewotICAgICAgICB0aGlzLmRtaW4gPTNEIGRtaW47Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiRFVSQ0hETUlOIiwgcHJlY2lzaW9uPTNENiwgc2NhbGU9M0Qz
KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldER1cmNoZG1pbigpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuZHVyY2hkbWluOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldER1cmNoZG1pbihC
aWdEZWNpbWFsIGR1cmNoZG1pbikgewotICAgICAgICB0aGlzLmR1cmNoZG1pbiA9M0QgZHVyY2hk
bWluOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkRNQVgiLCBwcmVjaXNpb249M0Q3
LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RG1heCgpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuZG1heDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREbWF4KEJpZ0Rl
Y2ltYWwgZG1heCkgewotICAgICAgICB0aGlzLmRtYXggPTNEIGRtYXg7Ci0gICAgfQotCi0KLSAg
ICBAQ29sdW1uKG5hbWU9M0QiRFVSQ0hETUFYIiwgcHJlY2lzaW9uPTNENiwgc2NhbGU9M0QzKQot
ICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldER1cmNoZG1heCgpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuZHVyY2hkbWF4OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldER1cmNoZG1heChCaWdE
ZWNpbWFsIGR1cmNoZG1heCkgewotICAgICAgICB0aGlzLmR1cmNoZG1heCA9M0QgZHVyY2hkbWF4
OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNUREFCVyIsIHByZWNpc2lvbj0zRDgs
IHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRTdGRhYncoKSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLnN0ZGFidzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTdGRhYnco
QmlnRGVjaW1hbCBzdGRhYncpIHsKLSAgICAgICAgdGhpcy5zdGRhYncgPTNEIHN0ZGFidzsKLSAg
ICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJTVERGRUhMRVIiLCBwcmVjaXNpb249M0Q4LCBz
Y2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0U3RkZmVobGVyKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5zdGRmZWhsZXI7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U3Rk
ZmVobGVyKEJpZ0RlY2ltYWwgc3RkZmVobGVyKSB7Ci0gICAgICAgIHRoaXMuc3RkZmVobGVyID0z
RCBzdGRmZWhsZXI7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQkVNRVJLVU5HIiwg
bGVuZ3RoPTNEMjQwKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0QmVtZXJrdW5nKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5iZW1lcmt1bmc7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QmVt
ZXJrdW5nKFN0cmluZyBiZW1lcmt1bmcpIHsKLSAgICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJl
bWVya3VuZzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJVRkVSQUJMSU5LUyIsIHBy
ZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRVZmVyYWJs
aW5rcygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudWZlcmFibGlua3M7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0VWZlcmFibGlua3MoQmlnRGVjaW1hbCB1ZmVyYWJsaW5rcykgewotICAg
ICAgICB0aGlzLnVmZXJhYmxpbmtzID0zRCB1ZmVyYWJsaW5rczsKLSAgICB9Ci0KLUBPbmVUb09u
ZShmZXRjaD0zREZldGNoVHlwZS5MQVpZLCBtYXBwZWRCeT0zRCJnbG90cmVjaHRlIikKLSAgICBw
dWJsaWMgR3NpZWJ1bmcgZ2V0R3NpZWJ1bmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmdzaWVi
dW5nOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEdzaWVidW5nKEdzaWVidW5nIGdzaWVi
dW5nKSB7Ci0gICAgICAgIHRoaXMuZ3NpZWJ1bmcgPTNEIGdzaWVidW5nOwotICAgIH0KLQotQE9u
ZVRvTWFueShmZXRjaD0zREZldGNoVHlwZS5MQVpZLCBtYXBwZWRCeT0zRCJnbG90cmVjaHRlIikK
LSAgICBwdWJsaWMgU2V0PEdwcm9iZT4gZ2V0R3Byb2JlcygpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuZ3Byb2JlczsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRHcHJvYmVzKFNldDxHcHJv
YmU+IGdwcm9iZXMpIHsKLSAgICAgICAgdGhpcy5ncHJvYmVzID0zRCBncHJvYmVzOwotICAgIH0K
LX0KZGlmZiAtciA4OWRjYWFlMDgwMWMgLXIgNmE0YmRjY2NmYTRkIGJhY2tlbmQvc3JjL21haW4v
amF2YS9vcmcvZGl2ZTRlbGVtZW50PQpzL3JpdmVyL3NlZGRiL21vZGVsL0dwcm9iZS5qYXZhCi0t
LSBhL2JhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZlci9zZWRkYi9t
b2RlbC9HcHJvYmUuamF2YT0KCVR1ZSBKYW4gMTYgMTg6MTM6NTQgMjAxOCArMDEwMAorKysgL2Rl
di9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxNDYgKzAsMCBAQAot
LyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1C
Q3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2
YXRpb24gR21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBH
TlUgQUdQTCAoPj0zRHYzKQotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5U
WSEgQ2hlY2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1l
bnRzIFJpdmVyIGZvciBkZXRhaWxzLgotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMu
cml2ZXIuc2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBI
aWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmEubWF0aC5CaWdEZWNpbWFs
OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0ZU92ZXJyaWRlOwotaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0ZU92ZXJyaWRlczsKLWltcG9ydCBqYXZheC5wZXJzaXN0
ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW1iZWRkZWRJZDsKLWltcG9y
dCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRmV0
Y2hUeXBlOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkpvaW5Db2x1bW47Ci1pbXBvcnQgamF2
YXgucGVyc2lzdGVuY2UuTWFueVRvT25lOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxl
OwotCi0vKioKLSAqIEdwcm9iZSBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVudGl0eQot
QFRhYmxlKG5hbWU9M0QiR1BST0JFIgotICAgICxzY2hlbWE9M0QiU0VEREIiCi0pCi1wdWJsaWMg
Y2xhc3MgR3Byb2JlICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAg
IHByaXZhdGUgR3Byb2JlSWQgaWQ7Ci0gICAgIHByaXZhdGUgR2xvdHJlY2h0ZSBnbG90cmVjaHRl
OwotICAgICBwcml2YXRlIGludCBtZXNzZGF1ZXI7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBt
ZW5nZTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGd0cmllYjsKLSAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIGZha3RvcjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1lbmdlRjsKLSAgICAgcHJp
dmF0ZSBCaWdEZWNpbWFsIGd0cmllYkY7Ci0KLSAgICBwdWJsaWMgR3Byb2JlKCkgewotICAgIH0K
LQotICAgIHB1YmxpYyBHcHJvYmUoR3Byb2JlSWQgaWQsIEdsb3RyZWNodGUgZ2xvdHJlY2h0ZSwg
aW50IG1lc3NkYXVlciwgQmlnRGU9CmNpbWFsIG1lbmdlKSB7Ci0gICAgICAgIHRoaXMuaWQgPTNE
IGlkOwotICAgICAgICB0aGlzLmdsb3RyZWNodGUgPTNEIGdsb3RyZWNodGU7Ci0gICAgICAgIHRo
aXMubWVzc2RhdWVyID0zRCBtZXNzZGF1ZXI7Ci0gICAgICAgIHRoaXMubWVuZ2UgPTNEIG1lbmdl
OwotICAgIH0KLSAgICBwdWJsaWMgR3Byb2JlKEdwcm9iZUlkIGlkLCBHbG90cmVjaHRlIGdsb3Ry
ZWNodGUsIGludCBtZXNzZGF1ZXIsIEJpZ0RlPQpjaW1hbCBtZW5nZSwgQmlnRGVjaW1hbCBndHJp
ZWIsIEJpZ0RlY2ltYWwgZmFrdG9yLCBCaWdEZWNpbWFsIG1lbmdlRiwgQmlnRGU9CmNpbWFsIGd0
cmllYkYpIHsKLSAgICAgICB0aGlzLmlkID0zRCBpZDsKLSAgICAgICB0aGlzLmdsb3RyZWNodGUg
PTNEIGdsb3RyZWNodGU7Ci0gICAgICAgdGhpcy5tZXNzZGF1ZXIgPTNEIG1lc3NkYXVlcjsKLSAg
ICAgICB0aGlzLm1lbmdlID0zRCBtZW5nZTsKLSAgICAgICB0aGlzLmd0cmllYiA9M0QgZ3RyaWVi
OwotICAgICAgIHRoaXMuZmFrdG9yID0zRCBmYWt0b3I7Ci0gICAgICAgdGhpcy5tZW5nZUYgPTNE
IG1lbmdlRjsKLSAgICAgICB0aGlzLmd0cmllYkYgPTNEIGd0cmllYkY7Ci0gICAgfQotCi0gICAg
IEBFbWJlZGRlZElkCi0KLQotICAgIEBBdHRyaWJ1dGVPdmVycmlkZXMoIHsKLSAgICAgICAgQEF0
dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZ2xvdHJlY2h0ZWlkIiwgY29sdW1uPTNEQENvbHVtbihu
YW1lPTNEPQoiR0xPVFJFQ0hURUlEIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMTEs
IHNjYWxlPTNEMCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibGZkbnIi
LCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTEZETlIiPQosIG51bGxhYmxlPTNEZmFsc2UsIHBy
ZWNpc2lvbj0zRDUsIHNjYWxlPTNEMCkgKSB9ICkKLSAgICBwdWJsaWMgR3Byb2JlSWQgZ2V0SWQo
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmlkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dElkKEdwcm9iZUlkIGlkKSB7Ci0gICAgICAgIHRoaXMuaWQgPTNEIGlkOwotICAgIH0KLQotQE1h
bnlUb09uZShmZXRjaD0zREZldGNoVHlwZS5MQVpZKQotICAgIEBKb2luQ29sdW1uKG5hbWU9M0Qi
R0xPVFJFQ0hURUlEIiwgbnVsbGFibGU9M0RmYWxzZSwgaW5zZXJ0YWJsZT0zRGZhbHM9CmUsIHVw
ZGF0YWJsZT0zRGZhbHNlKQotICAgIHB1YmxpYyBHbG90cmVjaHRlIGdldEdsb3RyZWNodGUoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLmdsb3RyZWNodGU7Ci0gICAgfQotCi0gICAgcHVibGljIHZv
aWQgc2V0R2xvdHJlY2h0ZShHbG90cmVjaHRlIGdsb3RyZWNodGUpIHsKLSAgICAgICAgdGhpcy5n
bG90cmVjaHRlID0zRCBnbG90cmVjaHRlOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNE
Ik1FU1NEQVVFUiIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDUsIHNjYWxlPTNEMCkK
LSAgICBwdWJsaWMgaW50IGdldE1lc3NkYXVlcigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWVz
c2RhdWVyOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1lc3NkYXVlcihpbnQgbWVzc2Rh
dWVyKSB7Ci0gICAgICAgIHRoaXMubWVzc2RhdWVyID0zRCBtZXNzZGF1ZXI7Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiTUVOR0UiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249
M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWVuZ2UoKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLm1lbmdlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1lbmdl
KEJpZ0RlY2ltYWwgbWVuZ2UpIHsKLSAgICAgICAgdGhpcy5tZW5nZSA9M0QgbWVuZ2U7Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiR1RSSUVCIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9
M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEd0cmllYigpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuZ3RyaWViOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEd0cmllYihCaWdEZWNp
bWFsIGd0cmllYikgewotICAgICAgICB0aGlzLmd0cmllYiA9M0QgZ3RyaWViOwotICAgIH0KLQot
Ci0gICAgQENvbHVtbihuYW1lPTNEIkZBS1RPUiIsIHByZWNpc2lvbj0zRDQsIHNjYWxlPTNEMykK
LSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRGYWt0b3IoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LmZha3RvcjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRGYWt0b3IoQmlnRGVjaW1hbCBm
YWt0b3IpIHsKLSAgICAgICAgdGhpcy5mYWt0b3IgPTNEIGZha3RvcjsKLSAgICB9Ci0KLQotICAg
IEBDb2x1bW4obmFtZT0zRCJNRU5HRV9GIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldE1lbmdlRigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWVu
Z2VGOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1lbmdlRihCaWdEZWNpbWFsIG1lbmdl
RikgewotICAgICAgICB0aGlzLm1lbmdlRiA9M0QgbWVuZ2VGOwotICAgIH0KLQotCi0gICAgQENv
bHVtbihuYW1lPTNEIkdUUklFQl9GIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldEd0cmllYkYoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmd0cmll
YkY7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0R3RyaWViRihCaWdEZWNpbWFsIGd0cmll
YkYpIHsKLSAgICAgICAgdGhpcy5ndHJpZWJGID0zRCBndHJpZWJGOwotICAgIH0KLX0KZGlmZiAt
ciA4OWRjYWFlMDgwMWMgLXIgNmE0YmRjY2NmYTRkIGJhY2tlbmQvc3JjL21haW4vamF2YS9vcmcv
ZGl2ZTRlbGVtZW50PQpzL3JpdmVyL3NlZGRiL21vZGVsL0dwcm9iZUlkLmphdmEKLS0tIGEvYmFj
a2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVsL0dw
cm9iZUlkLmphPQp2YQlUdWUgSmFuIDE2IDE4OjEzOjU0IDIwMTggKzAxMDAKKysrIC9kZXYvbnVs
bAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsNzMgKzAsMCBAQAotLyogQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3
PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24g
R21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQ
TCAoPj0zRHYzKQotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hl
Y2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJp
dmVyIGZvciBkZXRhaWxzLgotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMucml2ZXIu
c2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5h
dGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsK
LWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbWJlZGRhYmxlOwotCi0vKioKLSAqIEdwcm9iZUlk
IGdlbmVyYXRlZCBieSBoYm0yamF2YQotICovCi1ARW1iZWRkYWJsZQotcHVibGljIGNsYXNzIEdw
cm9iZUlkICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAgIHByaXZh
dGUgbG9uZyBnbG90cmVjaHRlaWQ7Ci0gICAgIHByaXZhdGUgaW50IGxmZG5yOwotCi0gICAgcHVi
bGljIEdwcm9iZUlkKCkgewotICAgIH0KLQotICAgIHB1YmxpYyBHcHJvYmVJZChsb25nIGdsb3Ry
ZWNodGVpZCwgaW50IGxmZG5yKSB7Ci0gICAgICAgdGhpcy5nbG90cmVjaHRlaWQgPTNEIGdsb3Ry
ZWNodGVpZDsKLSAgICAgICB0aGlzLmxmZG5yID0zRCBsZmRucjsKLSAgICB9Ci0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIkdMT1RSRUNIVEVJRCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lv
bj0zRDExLCBzY2FsZT0KPTNEMCkKLSAgICBwdWJsaWMgbG9uZyBnZXRHbG90cmVjaHRlaWQoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLmdsb3RyZWNodGVpZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRHbG90cmVjaHRlaWQobG9uZyBnbG90cmVjaHRlaWQpIHsKLSAgICAgICAgdGhpcy5n
bG90cmVjaHRlaWQgPTNEIGdsb3RyZWNodGVpZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFt
ZT0zRCJMRkROUiIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDUsIHNjYWxlPTNEMCkK
LSAgICBwdWJsaWMgaW50IGdldExmZG5yKCkgewotICAgICAgICByZXR1cm4gdGhpcy5sZmRucjsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRMZmRucihpbnQgbGZkbnIpIHsKLSAgICAgICAg
dGhpcy5sZmRuciA9M0QgbGZkbnI7Ci0gICAgfQotCi0KLSAgIHB1YmxpYyBib29sZWFuIGVxdWFs
cyhPYmplY3Qgb3RoZXIpIHsKLSAgICAgICAgIGlmICggKHRoaXMgPTNEPTNEIG90aGVyICkgKSBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgIGlmICggKG90aGVyID0zRD0zRCBudWxsICkgKSByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICBpZiAoICEob3RoZXIgaW5zdGFuY2VvZiBHcHJvYmVJZCkgKSByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICBHcHJvYmVJZCBjYXN0T3RoZXIgPTNEICggR3Byb2JlSWQgKSBv
dGhlcjsKLQotICAgICAgICAgcmV0dXJuICh0aGlzLmdldEdsb3RyZWNodGVpZCgpPTNEPTNEY2Fz
dE90aGVyLmdldEdsb3RyZWNodGVpZCgpKQotICYmICh0aGlzLmdldExmZG5yKCk9M0Q9M0RjYXN0
T3RoZXIuZ2V0TGZkbnIoKSk7Ci0gICB9Ci0KLSAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7Ci0g
ICAgICAgICBpbnQgcmVzdWx0ID0zRCAxNzsKLQotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJl
c3VsdCArIChpbnQpIHRoaXMuZ2V0R2xvdHJlY2h0ZWlkKCk7Ci0gICAgICAgICByZXN1bHQgPTNE
IDM3ICogcmVzdWx0ICsgdGhpcy5nZXRMZmRucigpOwotICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
LSAgIH0KLX0KZGlmZiAtciA4OWRjYWFlMDgwMWMgLXIgNmE0YmRjY2NmYTRkIGJhY2tlbmQvc3Jj
L21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50PQpzL3JpdmVyL3NlZGRiL21vZGVsL0dzaWVic2F0
ei5qYXZhCi0tLSBhL2JhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZl
ci9zZWRkYi9tb2RlbC9Hc2llYnNhdHouaj0KYXZhCVR1ZSBKYW4gMTYgMTg6MTM6NTQgMjAxOCAr
MDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwz
NzEgKzAsMCBAQAotLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fu
c3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVy
aW5nIGJ5IEludGV2YXRpb24gR21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJl
IHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKQotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVM
WSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0
aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLgotICovCi0KLXBhY2thZ2Ugb3JnLmRp
dmU0ZWxlbWVudHMucml2ZXIuc2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAx
MTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmEubWF0
aC5CaWdEZWNpbWFsOwotaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwotaW1wb3J0IGphdmEudXRp
bC5TZXQ7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOwotaW1wb3J0IGphdmF4LnBl
cnNpc3RlbmNlLkVudGl0eTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7Ci1p
bXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuT25l
VG9NYW55OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOwotaW1wb3J0IGphdmF4LnBl
cnNpc3RlbmNlLlVuaXF1ZUNvbnN0cmFpbnQ7Ci0KLS8qKgotICogR3NpZWJzYXR6IGdlbmVyYXRl
ZCBieSBoYm0yamF2YQotICovCi1ARW50aXR5Ci1AVGFibGUobmFtZT0zRCJHU0lFQlNBVFoiCi0g
ICAgLHNjaGVtYT0zRCJTRUREQiIKLSAgICAsIHVuaXF1ZUNvbnN0cmFpbnRzID0zRCBAVW5pcXVl
Q29uc3RyYWludChjb2x1bW5OYW1lcz0zRCJOQU1FIikKLSkKLXB1YmxpYyBjbGFzcyBHc2llYnNh
dHogIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgewotCi0KLSAgICAgcHJpdmF0ZSBs
b25nIGdzaWVic2F0emlkOwotICAgICBwcml2YXRlIFN0cmluZyBuYW1lOwotICAgICBwcml2YXRl
IGJvb2xlYW4gaXN0YWt0aXY7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMDE7Ci0gICAg
IHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMDI7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWVi
MDM7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMDQ7Ci0gICAgIHByaXZhdGUgQmlnRGVj
aW1hbCBzaWViMDU7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMDY7Ci0gICAgIHByaXZh
dGUgQmlnRGVjaW1hbCBzaWViMDc7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMDg7Ci0g
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMDk7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBz
aWViMTA7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMTE7Ci0gICAgIHByaXZhdGUgQmln
RGVjaW1hbCBzaWViMTI7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMTM7Ci0gICAgIHBy
aXZhdGUgQmlnRGVjaW1hbCBzaWViMTQ7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMTU7
Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMTY7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1h
bCBzaWViMTc7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMTg7Ci0gICAgIHByaXZhdGUg
QmlnRGVjaW1hbCBzaWViMTk7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMjA7Ci0gICAg
IHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMjE7Ci0gICAgIHByaXZhdGUgU3RyaW5nIGJlbWVya3Vu
ZzsKLSAgICAgcHJpdmF0ZSBTZXQ8U3NpZWJ1bmc+IHNzaWVidW5ncyA9M0QgbmV3IEhhc2hTZXQ8
U3NpZWJ1bmc+KDApOwotICAgICBwcml2YXRlIFNldDxNZXNzdW5nPiBtZXNzdW5ncyA9M0QgbmV3
IEhhc2hTZXQ8TWVzc3VuZz4oMCk7Ci0KLSAgICBwdWJsaWMgR3NpZWJzYXR6KCkgewotICAgIH0K
LQotCi0gICAgcHVibGljIEdzaWVic2F0eihsb25nIGdzaWVic2F0emlkLCBTdHJpbmcgbmFtZSwg
Ym9vbGVhbiBpc3Rha3RpdikgewotICAgICAgICB0aGlzLmdzaWVic2F0emlkID0zRCBnc2llYnNh
dHppZDsKLSAgICAgICAgdGhpcy5uYW1lID0zRCBuYW1lOwotICAgICAgICB0aGlzLmlzdGFrdGl2
ID0zRCBpc3Rha3RpdjsKLSAgICB9Ci0gICAgcHVibGljIEdzaWVic2F0eihsb25nIGdzaWVic2F0
emlkLCBTdHJpbmcgbmFtZSwgYm9vbGVhbiBpc3Rha3RpdiwgQmlnRD0KZWNpbWFsIHNpZWIwMSwg
QmlnRGVjaW1hbCBzaWViMDIsIEJpZ0RlY2ltYWwgc2llYjAzLCBCaWdEZWNpbWFsIHNpZWIwNCwg
QmlnPQpEZWNpbWFsIHNpZWIwNSwgQmlnRGVjaW1hbCBzaWViMDYsIEJpZ0RlY2ltYWwgc2llYjA3
LCBCaWdEZWNpbWFsIHNpZWIwOCwgQmk9CmdEZWNpbWFsIHNpZWIwOSwgQmlnRGVjaW1hbCBzaWVi
MTAsIEJpZ0RlY2ltYWwgc2llYjExLCBCaWdEZWNpbWFsIHNpZWIxMiwgQj0KaWdEZWNpbWFsIHNp
ZWIxMywgQmlnRGVjaW1hbCBzaWViMTQsIEJpZ0RlY2ltYWwgc2llYjE1LCBCaWdEZWNpbWFsIHNp
ZWIxNiwgPQpCaWdEZWNpbWFsIHNpZWIxNywgQmlnRGVjaW1hbCBzaWViMTgsIEJpZ0RlY2ltYWwg
c2llYjE5LCBCaWdEZWNpbWFsIHNpZWIyMCw9CiBCaWdEZWNpbWFsIHNpZWIyMSwgU3RyaW5nIGJl
bWVya3VuZywgU2V0PFNzaWVidW5nPiBzc2llYnVuZ3MsIFNldDxNZXNzdW5nPj0KIG1lc3N1bmdz
KSB7Ci0gICAgICAgdGhpcy5nc2llYnNhdHppZCA9M0QgZ3NpZWJzYXR6aWQ7Ci0gICAgICAgdGhp
cy5uYW1lID0zRCBuYW1lOwotICAgICAgIHRoaXMuaXN0YWt0aXYgPTNEIGlzdGFrdGl2OwotICAg
ICAgIHRoaXMuc2llYjAxID0zRCBzaWViMDE7Ci0gICAgICAgdGhpcy5zaWViMDIgPTNEIHNpZWIw
MjsKLSAgICAgICB0aGlzLnNpZWIwMyA9M0Qgc2llYjAzOwotICAgICAgIHRoaXMuc2llYjA0ID0z
RCBzaWViMDQ7Ci0gICAgICAgdGhpcy5zaWViMDUgPTNEIHNpZWIwNTsKLSAgICAgICB0aGlzLnNp
ZWIwNiA9M0Qgc2llYjA2OwotICAgICAgIHRoaXMuc2llYjA3ID0zRCBzaWViMDc7Ci0gICAgICAg
dGhpcy5zaWViMDggPTNEIHNpZWIwODsKLSAgICAgICB0aGlzLnNpZWIwOSA9M0Qgc2llYjA5Owot
ICAgICAgIHRoaXMuc2llYjEwID0zRCBzaWViMTA7Ci0gICAgICAgdGhpcy5zaWViMTEgPTNEIHNp
ZWIxMTsKLSAgICAgICB0aGlzLnNpZWIxMiA9M0Qgc2llYjEyOwotICAgICAgIHRoaXMuc2llYjEz
ID0zRCBzaWViMTM7Ci0gICAgICAgdGhpcy5zaWViMTQgPTNEIHNpZWIxNDsKLSAgICAgICB0aGlz
LnNpZWIxNSA9M0Qgc2llYjE1OwotICAgICAgIHRoaXMuc2llYjE2ID0zRCBzaWViMTY7Ci0gICAg
ICAgdGhpcy5zaWViMTcgPTNEIHNpZWIxNzsKLSAgICAgICB0aGlzLnNpZWIxOCA9M0Qgc2llYjE4
OwotICAgICAgIHRoaXMuc2llYjE5ID0zRCBzaWViMTk7Ci0gICAgICAgdGhpcy5zaWViMjAgPTNE
IHNpZWIyMDsKLSAgICAgICB0aGlzLnNpZWIyMSA9M0Qgc2llYjIxOwotICAgICAgIHRoaXMuYmVt
ZXJrdW5nID0zRCBiZW1lcmt1bmc7Ci0gICAgICAgdGhpcy5zc2llYnVuZ3MgPTNEIHNzaWVidW5n
czsKLSAgICAgICB0aGlzLm1lc3N1bmdzID0zRCBtZXNzdW5nczsKLSAgICB9Ci0KLSAgICAgQElk
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJHU0lFQlNBVFpJRCIsIHVuaXF1ZT0zRHRydWUsIG51
bGxhYmxlPTNEZmFsc2UsIHByZWNpc2k9Cm9uPTNEMTEsIHNjYWxlPTNEMCkKLSAgICBwdWJsaWMg
bG9uZyBnZXRHc2llYnNhdHppZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ3NpZWJzYXR6aWQ7
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0R3NpZWJzYXR6aWQobG9uZyBnc2llYnNhdHpp
ZCkgewotICAgICAgICB0aGlzLmdzaWVic2F0emlkID0zRCBnc2llYnNhdHppZDsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJOQU1FIiwgdW5pcXVlPTNEdHJ1ZSwgbnVsbGFibGU9M0Rm
YWxzZSwgbGVuZ3RoPTNEMjApCi0gICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5uYW1lOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE5hbWUoU3Ry
aW5nIG5hbWUpIHsKLSAgICAgICAgdGhpcy5uYW1lID0zRCBuYW1lOwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIklTVEFLVElWIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNE
MSwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBib29sZWFuIGlzSXN0YWt0aXYoKSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLmlzdGFrdGl2OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldElzdGFr
dGl2KGJvb2xlYW4gaXN0YWt0aXYpIHsKLSAgICAgICAgdGhpcy5pc3Rha3RpdiA9M0QgaXN0YWt0
aXY7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiU0lFQjAxIiwgcHJlY2lzaW9uPTNE
Nywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFNpZWIwMSgpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuc2llYjAxOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNpZWIw
MShCaWdEZWNpbWFsIHNpZWIwMSkgewotICAgICAgICB0aGlzLnNpZWIwMSA9M0Qgc2llYjAxOwot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNJRUIwMiIsIHByZWNpc2lvbj0zRDcsIHNj
YWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRTaWViMDIoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLnNpZWIwMjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTaWViMDIoQmln
RGVjaW1hbCBzaWViMDIpIHsKLSAgICAgICAgdGhpcy5zaWViMDIgPTNEIHNpZWIwMjsKLSAgICB9
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJTSUVCMDMiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0z
RDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0U2llYjAzKCkgewotICAgICAgICByZXR1cm4g
dGhpcy5zaWViMDM7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U2llYjAzKEJpZ0RlY2lt
YWwgc2llYjAzKSB7Ci0gICAgICAgIHRoaXMuc2llYjAzID0zRCBzaWViMDM7Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiU0lFQjA0IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQot
ICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFNpZWIwNCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
c2llYjA0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNpZWIwNChCaWdEZWNpbWFsIHNp
ZWIwNCkgewotICAgICAgICB0aGlzLnNpZWIwNCA9M0Qgc2llYjA0OwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIlNJRUIwNSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBw
dWJsaWMgQmlnRGVjaW1hbCBnZXRTaWViMDUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnNpZWIw
NTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTaWViMDUoQmlnRGVjaW1hbCBzaWViMDUp
IHsKLSAgICAgICAgdGhpcy5zaWViMDUgPTNEIHNpZWIwNTsKLSAgICB9Ci0KLQotICAgIEBDb2x1
bW4obmFtZT0zRCJTSUVCMDYiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGlj
IEJpZ0RlY2ltYWwgZ2V0U2llYjA2KCkgewotICAgICAgICByZXR1cm4gdGhpcy5zaWViMDY7Ci0g
ICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U2llYjA2KEJpZ0RlY2ltYWwgc2llYjA2KSB7Ci0g
ICAgICAgIHRoaXMuc2llYjA2ID0zRCBzaWViMDY7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiU0lFQjA3IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdE
ZWNpbWFsIGdldFNpZWIwNygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc2llYjA3OwotICAgIH0K
LQotICAgIHB1YmxpYyB2b2lkIHNldFNpZWIwNyhCaWdEZWNpbWFsIHNpZWIwNykgewotICAgICAg
ICB0aGlzLnNpZWIwNyA9M0Qgc2llYjA3OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNE
IlNJRUIwOCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1h
bCBnZXRTaWViMDgoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnNpZWIwODsKLSAgICB9Ci0KLSAg
ICBwdWJsaWMgdm9pZCBzZXRTaWViMDgoQmlnRGVjaW1hbCBzaWViMDgpIHsKLSAgICAgICAgdGhp
cy5zaWViMDggPTNEIHNpZWIwODsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJTSUVC
MDkiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0
U2llYjA5KCkgewotICAgICAgICByZXR1cm4gdGhpcy5zaWViMDk7Ci0gICAgfQotCi0gICAgcHVi
bGljIHZvaWQgc2V0U2llYjA5KEJpZ0RlY2ltYWwgc2llYjA5KSB7Ci0gICAgICAgIHRoaXMuc2ll
YjA5ID0zRCBzaWViMDk7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiU0lFQjEwIiwg
cHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFNpZWIx
MCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc2llYjEwOwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldFNpZWIxMChCaWdEZWNpbWFsIHNpZWIxMCkgewotICAgICAgICB0aGlzLnNpZWIxMCA9
M0Qgc2llYjEwOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNJRUIxMSIsIHByZWNp
c2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRTaWViMTEoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLnNpZWIxMTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXRTaWViMTEoQmlnRGVjaW1hbCBzaWViMTEpIHsKLSAgICAgICAgdGhpcy5zaWViMTEgPTNEIHNp
ZWIxMTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJTSUVCMTIiLCBwcmVjaXNpb249
M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0U2llYjEyKCkgewotICAg
ICAgICByZXR1cm4gdGhpcy5zaWViMTI7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U2ll
YjEyKEJpZ0RlY2ltYWwgc2llYjEyKSB7Ci0gICAgICAgIHRoaXMuc2llYjEyID0zRCBzaWViMTI7
Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiU0lFQjEzIiwgcHJlY2lzaW9uPTNENywg
c2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFNpZWIxMygpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuc2llYjEzOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNpZWIxMyhC
aWdEZWNpbWFsIHNpZWIxMykgewotICAgICAgICB0aGlzLnNpZWIxMyA9M0Qgc2llYjEzOwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNJRUIxNCIsIHByZWNpc2lvbj0zRDcsIHNjYWxl
PTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRTaWViMTQoKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLnNpZWIxNDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTaWViMTQoQmlnRGVj
aW1hbCBzaWViMTQpIHsKLSAgICAgICAgdGhpcy5zaWViMTQgPTNEIHNpZWIxNDsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJTSUVCMTUiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQp
Ci0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0U2llYjE1KCkgewotICAgICAgICByZXR1cm4gdGhp
cy5zaWViMTU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U2llYjE1KEJpZ0RlY2ltYWwg
c2llYjE1KSB7Ci0gICAgICAgIHRoaXMuc2llYjE1ID0zRCBzaWViMTU7Ci0gICAgfQotCi0KLSAg
ICBAQ29sdW1uKG5hbWU9M0QiU0lFQjE2IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldFNpZWIxNigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc2ll
YjE2OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNpZWIxNihCaWdEZWNpbWFsIHNpZWIx
NikgewotICAgICAgICB0aGlzLnNpZWIxNiA9M0Qgc2llYjE2OwotICAgIH0KLQotCi0gICAgQENv
bHVtbihuYW1lPTNEIlNJRUIxNyIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXRTaWViMTcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnNpZWIxNzsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTaWViMTcoQmlnRGVjaW1hbCBzaWViMTcpIHsK
LSAgICAgICAgdGhpcy5zaWViMTcgPTNEIHNpZWIxNzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4o
bmFtZT0zRCJTSUVCMTgiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0U2llYjE4KCkgewotICAgICAgICByZXR1cm4gdGhpcy5zaWViMTg7Ci0gICAg
fQotCi0gICAgcHVibGljIHZvaWQgc2V0U2llYjE4KEJpZ0RlY2ltYWwgc2llYjE4KSB7Ci0gICAg
ICAgIHRoaXMuc2llYjE4ID0zRCBzaWViMTg7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiU0lFQjE5IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNp
bWFsIGdldFNpZWIxOSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc2llYjE5OwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldFNpZWIxOShCaWdEZWNpbWFsIHNpZWIxOSkgewotICAgICAgICB0
aGlzLnNpZWIxOSA9M0Qgc2llYjE5OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNJ
RUIyMCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXRTaWViMjAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnNpZWIyMDsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRTaWViMjAoQmlnRGVjaW1hbCBzaWViMjApIHsKLSAgICAgICAgdGhpcy5z
aWViMjAgPTNEIHNpZWIyMDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJTSUVCMjEi
LCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0U2ll
YjIxKCkgewotICAgICAgICByZXR1cm4gdGhpcy5zaWViMjE7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0U2llYjIxKEJpZ0RlY2ltYWwgc2llYjIxKSB7Ci0gICAgICAgIHRoaXMuc2llYjIx
ID0zRCBzaWViMjE7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQkVNRVJLVU5HIiwg
bGVuZ3RoPTNEMjQwKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0QmVtZXJrdW5nKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5iZW1lcmt1bmc7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QmVt
ZXJrdW5nKFN0cmluZyBiZW1lcmt1bmcpIHsKLSAgICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJl
bWVya3VuZzsKLSAgICB9Ci0KLUBPbmVUb01hbnkoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSwgbWFw
cGVkQnk9M0QiZ3NpZWJzYXR6IikKLSAgICBwdWJsaWMgU2V0PFNzaWVidW5nPiBnZXRTc2llYnVu
Z3MoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnNzaWVidW5nczsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRTc2llYnVuZ3MoU2V0PFNzaWVidW5nPiBzc2llYnVuZ3MpIHsKLSAgICAgICAg
dGhpcy5zc2llYnVuZ3MgPTNEIHNzaWVidW5nczsKLSAgICB9Ci0KLUBPbmVUb01hbnkoZmV0Y2g9
M0RGZXRjaFR5cGUuTEFaWSwgbWFwcGVkQnk9M0QiZ3NpZWJzYXR6IikKLSAgICBwdWJsaWMgU2V0
PE1lc3N1bmc+IGdldE1lc3N1bmdzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5tZXNzdW5nczsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNZXNzdW5ncyhTZXQ8TWVzc3VuZz4gbWVzc3Vu
Z3MpIHsKLSAgICAgICAgdGhpcy5tZXNzdW5ncyA9M0QgbWVzc3VuZ3M7Ci0gICAgfQotfQpkaWZm
IC1yIDg5ZGNhYWUwODAxYyAtciA2YTRiZGNjY2ZhNGQgYmFja2VuZC9zcmMvbWFpbi9qYXZhL29y
Zy9kaXZlNGVsZW1lbnQ9CnMvcml2ZXIvc2VkZGIvbW9kZWwvR3NpZWJ1bmcuamF2YQotLS0gYS9i
YWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwv
R3NpZWJ1bmcuamE9CnZhCVR1ZSBKYW4gMTYgMTg6MTM6NTQgMjAxOCArMDEwMAorKysgL2Rldi9u
dWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwzNTYgKzAsMCBAQAotLyog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3Ig
R2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRp
b24gR21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUg
QUdQTCAoPj0zRHYzKQotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEg
Q2hlY2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRz
IFJpdmVyIGZvciBkZXRhaWxzLgotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMucml2
ZXIuc2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJl
cm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmEubWF0aC5CaWdEZWNpbWFsOwot
aW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5j
ZS5FbnRpdHk7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRmV0Y2hUeXBlOwotaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRlZFZhbHVlOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNl
LklkOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk9uZVRvT25lOwotaW1wb3J0IGphdmF4LnBl
cnNpc3RlbmNlLlByaW1hcnlLZXlKb2luQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNl
LlRhYmxlOwotaW1wb3J0IG9yZy5oaWJlcm5hdGUuYW5ub3RhdGlvbnMuR2VuZXJpY0dlbmVyYXRv
cjsKLWltcG9ydCBvcmcuaGliZXJuYXRlLmFubm90YXRpb25zLlBhcmFtZXRlcjsKLQotLyoqCi0g
KiBHc2llYnVuZyBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVudGl0eQotQFRhYmxlKG5h
bWU9M0QiR1NJRUJVTkciCi0gICAgLHNjaGVtYT0zRCJTRUREQiIKLSkKLXB1YmxpYyBjbGFzcyBH
c2llYnVuZyAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7Ci0KLQotICAgICBwcml2
YXRlIGxvbmcgZ2xvdHJlY2h0ZWlkOwotICAgICBwcml2YXRlIEdsb3RyZWNodGUgZ2xvdHJlY2h0
ZTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGdtYXNzZTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNp
bWFsIHJzaWViMDE7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjAyOwotICAgICBwcml2
YXRlIEJpZ0RlY2ltYWwgcnNpZWIwMzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMDQ7
Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjA1OwotICAgICBwcml2YXRlIEJpZ0RlY2lt
YWwgcnNpZWIwNjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMDc7Ci0gICAgIHByaXZh
dGUgQmlnRGVjaW1hbCByc2llYjA4OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIwOTsK
LSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMTA7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1h
bCByc2llYjExOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIxMjsKLSAgICAgcHJpdmF0
ZSBCaWdEZWNpbWFsIHJzaWViMTM7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjE0Owot
ICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIxNTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IHJzaWViMTY7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjE3OwotICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgcnNpZWIxODsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMTk7Ci0g
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjIwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
cnNpZWIyMTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJlc3Q7Ci0gICAgIHByaXZhdGUgU3Ry
aW5nIGJlbWVya3VuZzsKLQotICAgIHB1YmxpYyBHc2llYnVuZygpIHsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgR3NpZWJ1bmcoR2xvdHJlY2h0ZSBnbG90cmVjaHRlKSB7Ci0gICAgICAgIHRoaXMuZ2xv
dHJlY2h0ZSA9M0QgZ2xvdHJlY2h0ZTsKLSAgICB9Ci0gICAgcHVibGljIEdzaWVidW5nKEdsb3Ry
ZWNodGUgZ2xvdHJlY2h0ZSwgQmlnRGVjaW1hbCBnbWFzc2UsIEJpZ0RlY2ltYWwgcj0Kc2llYjAx
LCBCaWdEZWNpbWFsIHJzaWViMDIsIEJpZ0RlY2ltYWwgcnNpZWIwMywgQmlnRGVjaW1hbCByc2ll
YjA0LCBCaWdEZWNpPQptYWwgcnNpZWIwNSwgQmlnRGVjaW1hbCByc2llYjA2LCBCaWdEZWNpbWFs
IHJzaWViMDcsIEJpZ0RlY2ltYWwgcnNpZWIwOCwgQmk9CmdEZWNpbWFsIHJzaWViMDksIEJpZ0Rl
Y2ltYWwgcnNpZWIxMCwgQmlnRGVjaW1hbCByc2llYjExLCBCaWdEZWNpbWFsIHJzaWViMT0KMiwg
QmlnRGVjaW1hbCByc2llYjEzLCBCaWdEZWNpbWFsIHJzaWViMTQsIEJpZ0RlY2ltYWwgcnNpZWIx
NSwgQmlnRGVjaW1hbCByPQpzaWViMTYsIEJpZ0RlY2ltYWwgcnNpZWIxNywgQmlnRGVjaW1hbCBy
c2llYjE4LCBCaWdEZWNpbWFsIHJzaWViMTksIEJpZ0RlY2k9Cm1hbCByc2llYjIwLCBCaWdEZWNp
bWFsIHJzaWViMjEsIEJpZ0RlY2ltYWwgcmVzdCwgU3RyaW5nIGJlbWVya3VuZykgewotICAgICAg
IHRoaXMuZ2xvdHJlY2h0ZSA9M0QgZ2xvdHJlY2h0ZTsKLSAgICAgICB0aGlzLmdtYXNzZSA9M0Qg
Z21hc3NlOwotICAgICAgIHRoaXMucnNpZWIwMSA9M0QgcnNpZWIwMTsKLSAgICAgICB0aGlzLnJz
aWViMDIgPTNEIHJzaWViMDI7Ci0gICAgICAgdGhpcy5yc2llYjAzID0zRCByc2llYjAzOwotICAg
ICAgIHRoaXMucnNpZWIwNCA9M0QgcnNpZWIwNDsKLSAgICAgICB0aGlzLnJzaWViMDUgPTNEIHJz
aWViMDU7Ci0gICAgICAgdGhpcy5yc2llYjA2ID0zRCByc2llYjA2OwotICAgICAgIHRoaXMucnNp
ZWIwNyA9M0QgcnNpZWIwNzsKLSAgICAgICB0aGlzLnJzaWViMDggPTNEIHJzaWViMDg7Ci0gICAg
ICAgdGhpcy5yc2llYjA5ID0zRCByc2llYjA5OwotICAgICAgIHRoaXMucnNpZWIxMCA9M0QgcnNp
ZWIxMDsKLSAgICAgICB0aGlzLnJzaWViMTEgPTNEIHJzaWViMTE7Ci0gICAgICAgdGhpcy5yc2ll
YjEyID0zRCByc2llYjEyOwotICAgICAgIHRoaXMucnNpZWIxMyA9M0QgcnNpZWIxMzsKLSAgICAg
ICB0aGlzLnJzaWViMTQgPTNEIHJzaWViMTQ7Ci0gICAgICAgdGhpcy5yc2llYjE1ID0zRCByc2ll
YjE1OwotICAgICAgIHRoaXMucnNpZWIxNiA9M0QgcnNpZWIxNjsKLSAgICAgICB0aGlzLnJzaWVi
MTcgPTNEIHJzaWViMTc7Ci0gICAgICAgdGhpcy5yc2llYjE4ID0zRCByc2llYjE4OwotICAgICAg
IHRoaXMucnNpZWIxOSA9M0QgcnNpZWIxOTsKLSAgICAgICB0aGlzLnJzaWViMjAgPTNEIHJzaWVi
MjA7Ci0gICAgICAgdGhpcy5yc2llYjIxID0zRCByc2llYjIxOwotICAgICAgIHRoaXMucmVzdCA9
M0QgcmVzdDsKLSAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwotICAgIH0KLQot
ICAgICBAR2VuZXJpY0dlbmVyYXRvcihuYW1lPTNEImdlbmVyYXRvciIsIHN0cmF0ZWd5PTNEImZv
cmVpZ24iLCBwYXJhbWV0ZXI9CnM9M0RAUGFyYW1ldGVyKG5hbWU9M0QicHJvcGVydHkiLCB2YWx1
ZT0zRCJnbG90cmVjaHRlIikpQElkIEBHZW5lcmF0ZWRWYWx1ZT0KKGdlbmVyYXRvcj0zRCJnZW5l
cmF0b3IiKQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiR0xPVFJFQ0hURUlEIiwgdW5pcXVlPTNE
dHJ1ZSwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzPQppb249M0QxMSwgc2NhbGU9M0QwKQotICAg
IHB1YmxpYyBsb25nIGdldEdsb3RyZWNodGVpZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ2xv
dHJlY2h0ZWlkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEdsb3RyZWNodGVpZChsb25n
IGdsb3RyZWNodGVpZCkgewotICAgICAgICB0aGlzLmdsb3RyZWNodGVpZCA9M0QgZ2xvdHJlY2h0
ZWlkOwotICAgIH0KLQotQE9uZVRvT25lKGZldGNoPTNERmV0Y2hUeXBlLkxBWlkpQFByaW1hcnlL
ZXlKb2luQ29sdW1uCi0gICAgcHVibGljIEdsb3RyZWNodGUgZ2V0R2xvdHJlY2h0ZSgpIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuZ2xvdHJlY2h0ZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXRHbG90cmVjaHRlKEdsb3RyZWNodGUgZ2xvdHJlY2h0ZSkgewotICAgICAgICB0aGlzLmdsb3Ry
ZWNodGUgPTNEIGdsb3RyZWNodGU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiR01B
U1NFIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdl
dEdtYXNzZSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ21hc3NlOwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldEdtYXNzZShCaWdEZWNpbWFsIGdtYXNzZSkgewotICAgICAgICB0aGlzLmdt
YXNzZSA9M0QgZ21hc3NlOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJTSUVCMDEi
LCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNp
ZWIwMSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIwMTsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRSc2llYjAxKEJpZ0RlY2ltYWwgcnNpZWIwMSkgewotICAgICAgICB0aGlzLnJz
aWViMDEgPTNEIHJzaWViMDE7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIw
MiIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRS
c2llYjAyKCkgewotICAgICAgICByZXR1cm4gdGhpcy5yc2llYjAyOwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldFJzaWViMDIoQmlnRGVjaW1hbCByc2llYjAyKSB7Ci0gICAgICAgIHRoaXMu
cnNpZWIwMiA9M0QgcnNpZWIwMjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSU0lF
QjAzIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdl
dFJzaWViMDMoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJzaWViMDM7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0UnNpZWIwMyhCaWdEZWNpbWFsIHJzaWViMDMpIHsKLSAgICAgICAgdGhp
cy5yc2llYjAzID0zRCByc2llYjAzOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJT
SUVCMDQiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0UnNpZWIwNCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIwNDsKLSAgICB9Ci0KLSAg
ICBwdWJsaWMgdm9pZCBzZXRSc2llYjA0KEJpZ0RlY2ltYWwgcnNpZWIwNCkgewotICAgICAgICB0
aGlzLnJzaWViMDQgPTNEIHJzaWViMDQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0Qi
UlNJRUIwNSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1h
bCBnZXRSc2llYjA1KCkgewotICAgICAgICByZXR1cm4gdGhpcy5yc2llYjA1OwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMDUoQmlnRGVjaW1hbCByc2llYjA1KSB7Ci0gICAgICAg
IHRoaXMucnNpZWIwNSA9M0QgcnNpZWIwNTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJSU0lFQjA2IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNp
bWFsIGdldFJzaWViMDYoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJzaWViMDY7Ci0gICAgfQot
Ci0gICAgcHVibGljIHZvaWQgc2V0UnNpZWIwNihCaWdEZWNpbWFsIHJzaWViMDYpIHsKLSAgICAg
ICAgdGhpcy5yc2llYjA2ID0zRCByc2llYjA2OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIlJTSUVCMDciLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0UnNpZWIwNygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIwNzsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjA3KEJpZ0RlY2ltYWwgcnNpZWIwNykgewotICAg
ICAgICB0aGlzLnJzaWViMDcgPTNEIHJzaWViMDc7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiUlNJRUIwOCIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmln
RGVjaW1hbCBnZXRSc2llYjA4KCkgewotICAgICAgICByZXR1cm4gdGhpcy5yc2llYjA4OwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMDgoQmlnRGVjaW1hbCByc2llYjA4KSB7Ci0g
ICAgICAgIHRoaXMucnNpZWIwOCA9M0QgcnNpZWIwODsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4o
bmFtZT0zRCJSU0lFQjA5IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBC
aWdEZWNpbWFsIGdldFJzaWViMDkoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJzaWViMDk7Ci0g
ICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnNpZWIwOShCaWdEZWNpbWFsIHJzaWViMDkpIHsK
LSAgICAgICAgdGhpcy5yc2llYjA5ID0zRCByc2llYjA5OwotICAgIH0KLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIlJTSUVCMTAiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGlj
IEJpZ0RlY2ltYWwgZ2V0UnNpZWIxMCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIxMDsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjEwKEJpZ0RlY2ltYWwgcnNpZWIxMCkg
ewotICAgICAgICB0aGlzLnJzaWViMTAgPTNEIHJzaWViMTA7Ci0gICAgfQotCi0KLSAgICBAQ29s
dW1uKG5hbWU9M0QiUlNJRUIxMSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXRSc2llYjExKCkgewotICAgICAgICByZXR1cm4gdGhpcy5yc2llYjEx
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMTEoQmlnRGVjaW1hbCByc2llYjEx
KSB7Ci0gICAgICAgIHRoaXMucnNpZWIxMSA9M0QgcnNpZWIxMTsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJSU0lFQjEyIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMTIoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJzaWVi
MTI7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnNpZWIxMihCaWdEZWNpbWFsIHJzaWVi
MTIpIHsKLSAgICAgICAgdGhpcy5yc2llYjEyID0zRCByc2llYjEyOwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIlJTSUVCMTMiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAg
cHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIxMygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnNp
ZWIxMzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjEzKEJpZ0RlY2ltYWwgcnNp
ZWIxMykgewotICAgICAgICB0aGlzLnJzaWViMTMgPTNEIHJzaWViMTM7Ci0gICAgfQotCi0KLSAg
ICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIxNCIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAg
ICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSc2llYjE0KCkgewotICAgICAgICByZXR1cm4gdGhpcy5y
c2llYjE0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMTQoQmlnRGVjaW1hbCBy
c2llYjE0KSB7Ci0gICAgICAgIHRoaXMucnNpZWIxNCA9M0QgcnNpZWIxNDsKLSAgICB9Ci0KLQot
ICAgIEBDb2x1bW4obmFtZT0zRCJSU0lFQjE1IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQot
ICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMTUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LnJzaWViMTU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnNpZWIxNShCaWdEZWNpbWFs
IHJzaWViMTUpIHsKLSAgICAgICAgdGhpcy5yc2llYjE1ID0zRCByc2llYjE1OwotICAgIH0KLQot
Ci0gICAgQENvbHVtbihuYW1lPTNEIlJTSUVCMTYiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMp
Ci0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIxNigpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMucnNpZWIxNjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjE2KEJpZ0RlY2lt
YWwgcnNpZWIxNikgewotICAgICAgICB0aGlzLnJzaWViMTYgPTNEIHJzaWViMTY7Ci0gICAgfQot
Ci0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIxNyIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNE
MykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSc2llYjE3KCkgewotICAgICAgICByZXR1cm4g
dGhpcy5yc2llYjE3OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMTcoQmlnRGVj
aW1hbCByc2llYjE3KSB7Ci0gICAgICAgIHRoaXMucnNpZWIxNyA9M0QgcnNpZWIxNzsKLSAgICB9
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSU0lFQjE4IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9
M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMTgoKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLnJzaWViMTg7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnNpZWIxOChCaWdE
ZWNpbWFsIHJzaWViMTgpIHsKLSAgICAgICAgdGhpcy5yc2llYjE4ID0zRCByc2llYjE4OwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJTSUVCMTkiLCBwcmVjaXNpb249M0Q5LCBzY2Fs
ZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIxOSgpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMucnNpZWIxOTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjE5KEJp
Z0RlY2ltYWwgcnNpZWIxOSkgewotICAgICAgICB0aGlzLnJzaWViMTkgPTNEIHJzaWViMTk7Ci0g
ICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIyMCIsIHByZWNpc2lvbj0zRDksIHNj
YWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSc2llYjIwKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5yc2llYjIwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMjAo
QmlnRGVjaW1hbCByc2llYjIwKSB7Ci0gICAgICAgIHRoaXMucnNpZWIyMCA9M0QgcnNpZWIyMDsK
LSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSU0lFQjIxIiwgcHJlY2lzaW9uPTNEOSwg
c2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMjEoKSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLnJzaWViMjE7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnNpZWIy
MShCaWdEZWNpbWFsIHJzaWViMjEpIHsKLSAgICAgICAgdGhpcy5yc2llYjIxID0zRCByc2llYjIx
OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJFU1QiLCBwcmVjaXNpb249M0Q5LCBz
Y2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UmVzdCgpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMucmVzdDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSZXN0KEJpZ0RlY2lt
YWwgcmVzdCkgewotICAgICAgICB0aGlzLnJlc3QgPTNEIHJlc3Q7Ci0gICAgfQotCi0KLSAgICBA
Q29sdW1uKG5hbWU9M0QiQkVNRVJLVU5HIiwgbGVuZ3RoPTNEMjQwKQotICAgIHB1YmxpYyBTdHJp
bmcgZ2V0QmVtZXJrdW5nKCkgewotICAgICAgICByZXR1cm4gdGhpcy5iZW1lcmt1bmc7Ci0gICAg
fQotCi0gICAgcHVibGljIHZvaWQgc2V0QmVtZXJrdW5nKFN0cmluZyBiZW1lcmt1bmcpIHsKLSAg
ICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICB9Ci19CmRpZmYgLXIgODlk
Y2FhZTA4MDFjIC1yIDZhNGJkY2NjZmE0ZCBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0
ZWxlbWVudD0Kcy9yaXZlci9zZWRkYi9tb2RlbC9Hc2llYnVuZ3NpZWIuamF2YQotLS0gYS9iYWNr
ZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvR3Np
ZWJ1bmdzaWU9CmIuamF2YQlUdWUgSmFuIDE2IDE4OjEzOjU0IDIwMTggKzAxMDAKKysrIC9kZXYv
bnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsOTYgKzAsMCBAQAotLyog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3Ig
R2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRp
b24gR21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUg
QUdQTCAoPj0zRHYzKQotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEg
Q2hlY2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRz
IFJpdmVyIGZvciBkZXRhaWxzLgotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMucml2
ZXIuc2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJl
cm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJp
YnV0ZU92ZXJyaWRlOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0ZU92ZXJyaWRl
czsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuRW1iZWRkZWRJZDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7Ci1pbXBv
cnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7Ci0KLS8qKgotICogR3NpZWJ1bmdzaWViIGdlbmVy
YXRlZCBieSBoYm0yamF2YQotICovCi1ARW50aXR5Ci1AVGFibGUobmFtZT0zRCJHU0lFQlVOR1NJ
RUIiCi0gICAgLHNjaGVtYT0zRCJTRUREQiIKLSkKLXB1YmxpYyBjbGFzcyBHc2llYnVuZ3NpZWIg
IGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgewotCi0KLSAgICAgcHJpdmF0ZSBHc2ll
YnVuZ3NpZWJJZCBpZDsKLQotICAgIHB1YmxpYyBHc2llYnVuZ3NpZWIoKSB7Ci0gICAgfQotCi0g
ICAgcHVibGljIEdzaWVidW5nc2llYihHc2llYnVuZ3NpZWJJZCBpZCkgewotICAgICAgIHRoaXMu
aWQgPTNEIGlkOwotICAgIH0KLQotICAgICBARW1iZWRkZWRJZAotCi0KLSAgICBAQXR0cmlidXRl
T3ZlcnJpZGVzKCB7Ci0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImdsb3RyZWNo
dGVpZCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRD0KIkdMT1RSRUNIVEVJRCIsIG51bGxhYmxl
PTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDApICksCi0gICAgICAgIEBBdHRyaWJ1
dGVPdmVycmlkZShuYW1lPTNEImdzaWVic2F0emlkIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNE
Ij0KR1NJRUJTQVRaSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9
M0QwKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJnbWFzc2UiLCBjb2x1
bW49M0RAQ29sdW1uKG5hbWU9M0QiR01BU1M9CkUiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMp
ICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTAxIiwgY29sdW1u
PTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMDEiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQp
ICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMDEiLCBjb2x1bW49
M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzAxIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSAp
LAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUwMiIsIGNvbHVtbj0z
REBDb2x1bW4obmFtZT0zRCJNQVM9CkNIRTAyIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSAp
LAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazAyIiwgY29sdW1uPTNE
QENvbHVtbihuYW1lPTNEIlJVRUM9CkswMiIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwK
LSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hlMDMiLCBjb2x1bW49M0RA
Q29sdW1uKG5hbWU9M0QiTUFTPQpDSEUwMyIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwK
LSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2swMyIsIGNvbHVtbj0zREBD
b2x1bW4obmFtZT0zRCJSVUVDPQpLMDMiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCi0g
ICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTA0IiwgY29sdW1uPTNEQENv
bHVtbihuYW1lPTNEIk1BUz0KQ0hFMDQiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0g
ICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMDQiLCBjb2x1bW49M0RAQ29s
dW1uKG5hbWU9M0QiUlVFQz0KSzA0IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAotICAg
ICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUwNSIsIGNvbHVtbj0zREBDb2x1
bW4obmFtZT0zRCJNQVM9CkNIRTA1IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAg
ICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazA1IiwgY29sdW1uPTNEQENvbHVt
bihuYW1lPTNEIlJVRUM9CkswNSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKLSAgICAg
ICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hlMDYiLCBjb2x1bW49M0RAQ29sdW1u
KG5hbWU9M0QiTUFTPQpDSEUwNiIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAg
ICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2swNiIsIGNvbHVtbj0zREBDb2x1bW4o
bmFtZT0zRCJSVUVDPQpLMDYiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCi0gICAgICAg
IEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTA3IiwgY29sdW1uPTNEQENvbHVtbihu
YW1lPTNEIk1BUz0KQ0hFMDciLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAg
IEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMDciLCBjb2x1bW49M0RAQ29sdW1uKG5h
bWU9M0QiUlVFQz0KSzA3IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAotICAgICAgICBA
QXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUwOCIsIGNvbHVtbj0zREBDb2x1bW4obmFt
ZT0zRCJNQVM9CkNIRTA4IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAgICAgICBA
QXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazA4IiwgY29sdW1uPTNEQENvbHVtbihuYW1l
PTNEIlJVRUM9CkswOCIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0
dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hlMDkiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9
M0QiTUFTPQpDSEUwOSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0
dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2swOSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0z
RCJSVUVDPQpLMDkiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRy
aWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTEwIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNE
Ik1BUz0KQ0hFMTAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRy
aWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMTAiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0Qi
UlVFQz0KSzEwIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmli
dXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUxMSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJN
QVM9CkNIRTExIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmli
dXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazExIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJV
RUM9CksxMSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0
ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hlMTIiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFT
PQpDSEUxMiIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0
ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2sxMiIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVD
PQpLMTIiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVP
dmVycmlkZShuYW1lPTNEIm1hc2NoZTEzIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0K
Q0hFMTMiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVP
dmVycmlkZShuYW1lPTNEInJ1ZWNrMTMiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0K
SzEzIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3Zl
cnJpZGUobmFtZT0zRCJtYXNjaGUxNCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNI
RTE0IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3Zl
cnJpZGUobmFtZT0zRCJydWVjazE0IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9Cksx
NCIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJy
aWRlKG5hbWU9M0QibWFzY2hlMTUiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpDSEUx
NSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJy
aWRlKG5hbWU9M0QicnVlY2sxNSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpLMTUi
LCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlk
ZShuYW1lPTNEIm1hc2NoZTE2IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMTYi
LCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlk
ZShuYW1lPTNEInJ1ZWNrMTYiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzE2Iiwg
cHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUo
bmFtZT0zRCJtYXNjaGUxNyIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNIRTE3Iiwg
cHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUo
bmFtZT0zRCJydWVjazE3IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9CksxNyIsIHBy
ZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5h
bWU9M0QibWFzY2hlMTgiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpDSEUxOCIsIHBy
ZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5h
bWU9M0QicnVlY2sxOCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpLMTgiLCBwcmVj
aXNpb249M0Q5LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1l
PTNEIm1hc2NoZTE5IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMTkiLCBwcmVj
aXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1l
PTNEInJ1ZWNrMTkiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzE5IiwgcHJlY2lz
aW9uPTNEOSwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0z
RCJtYXNjaGUyMCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNIRTIwIiwgcHJlY2lz
aW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0z
RCJydWVjazIwIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9CksyMCIsIHByZWNpc2lv
bj0zRDksIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qi
bWFzY2hlMjEiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpDSEUyMSIsIHByZWNpc2lv
bj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qi
cnVlY2syMSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpLMjEiLCBwcmVjaXNpb249
M0Q5LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJl
c3QiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUkVTVCIsID0KcHJlY2lzaW9uPTNEOSwgc2Nh
bGU9M0QzKSApIH0gKQotICAgIHB1YmxpYyBHc2llYnVuZ3NpZWJJZCBnZXRJZCgpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuaWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0SWQoR3NpZWJ1
bmdzaWViSWQgaWQpIHsKLSAgICAgICAgdGhpcy5pZCA9M0QgaWQ7Ci0gICAgfQotfQpkaWZmIC1y
IDg5ZGNhYWUwODAxYyAtciA2YTRiZGNjY2ZhNGQgYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9k
aXZlNGVsZW1lbnQ9CnMvcml2ZXIvc2VkZGIvbW9kZWwvR3NpZWJ1bmdzaWViSWQuamF2YQotLS0g
YS9iYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9k
ZWwvR3NpZWJ1bmdzaWU9CmJJZC5qYXZhCVR1ZSBKYW4gMTYgMTg6MTM6NTQgMjAxOCArMDEwMAor
KysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSw2OTUgKzAs
MCBAQAotLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQg
Zj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5
IEludGV2YXRpb24gR21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVy
IHRoZSBHTlUgQUdQTCAoPj0zRHYzKQotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBX
QVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZl
NEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLgotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxl
bWVudHMucml2ZXIuc2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1
NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmEubWF0aC5CaWdE
ZWNpbWFsOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZheC5w
ZXJzaXN0ZW5jZS5FbWJlZGRhYmxlOwotCi0vKioKLSAqIEdzaWVidW5nc2llYklkIGdlbmVyYXRl
ZCBieSBoYm0yamF2YQotICovCi1ARW1iZWRkYWJsZQotcHVibGljIGNsYXNzIEdzaWVidW5nc2ll
YklkICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAgIHByaXZhdGUg
bG9uZyBnbG90cmVjaHRlaWQ7Ci0gICAgIHByaXZhdGUgbG9uZyBnc2llYnNhdHppZDsKLSAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIGdtYXNzZTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2No
ZTAxOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2swMTsKLSAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIG1hc2NoZTAyOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2swMjsKLSAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTAzOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVl
Y2swMzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTA0OwotICAgICBwcml2YXRlIEJp
Z0RlY2ltYWwgcnVlY2swNDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTA1OwotICAg
ICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2swNTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1h
c2NoZTA2OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2swNjsKLSAgICAgcHJpdmF0ZSBC
aWdEZWNpbWFsIG1hc2NoZTA3OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2swNzsKLSAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTA4OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
cnVlY2swODsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTA5OwotICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgcnVlY2swOTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTEwOwot
ICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2sxMDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IG1hc2NoZTExOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2sxMTsKLSAgICAgcHJpdmF0
ZSBCaWdEZWNpbWFsIG1hc2NoZTEyOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2sxMjsK
LSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTEzOwotICAgICBwcml2YXRlIEJpZ0RlY2lt
YWwgcnVlY2sxMzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTE0OwotICAgICBwcml2
YXRlIEJpZ0RlY2ltYWwgcnVlY2sxNDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTE1
OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2sxNTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNp
bWFsIG1hc2NoZTE2OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2sxNjsKLSAgICAgcHJp
dmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTE3OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2sx
NzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTE4OwotICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgcnVlY2sxODsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTE5OwotICAgICBw
cml2YXRlIEJpZ0RlY2ltYWwgcnVlY2sxOTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2No
ZTIwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2syMDsKLSAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIG1hc2NoZTIxOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2syMTsKLSAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIHJlc3Q7Ci0KLSAgICBwdWJsaWMgR3NpZWJ1bmdzaWViSWQoKSB7
Ci0gICAgfQotCi0KLSAgICBwdWJsaWMgR3NpZWJ1bmdzaWViSWQobG9uZyBnbG90cmVjaHRlaWQs
IGxvbmcgZ3NpZWJzYXR6aWQpIHsKLSAgICAgICAgdGhpcy5nbG90cmVjaHRlaWQgPTNEIGdsb3Ry
ZWNodGVpZDsKLSAgICAgICAgdGhpcy5nc2llYnNhdHppZCA9M0QgZ3NpZWJzYXR6aWQ7Ci0gICAg
fQotICAgIHB1YmxpYyBHc2llYnVuZ3NpZWJJZChsb25nIGdsb3RyZWNodGVpZCwgbG9uZyBnc2ll
YnNhdHppZCwgQmlnRGVjaW1hbCA9CmdtYXNzZSwgQmlnRGVjaW1hbCBtYXNjaGUwMSwgQmlnRGVj
aW1hbCBydWVjazAxLCBCaWdEZWNpbWFsIG1hc2NoZTAyLCBCaWdEZT0KY2ltYWwgcnVlY2swMiwg
QmlnRGVjaW1hbCBtYXNjaGUwMywgQmlnRGVjaW1hbCBydWVjazAzLCBCaWdEZWNpbWFsIG1hc2No
ZTA0PQosIEJpZ0RlY2ltYWwgcnVlY2swNCwgQmlnRGVjaW1hbCBtYXNjaGUwNSwgQmlnRGVjaW1h
bCBydWVjazA1LCBCaWdEZWNpbWFsIG09CmFzY2hlMDYsIEJpZ0RlY2ltYWwgcnVlY2swNiwgQmln
RGVjaW1hbCBtYXNjaGUwNywgQmlnRGVjaW1hbCBydWVjazA3LCBCaWdEZT0KY2ltYWwgbWFzY2hl
MDgsIEJpZ0RlY2ltYWwgcnVlY2swOCwgQmlnRGVjaW1hbCBtYXNjaGUwOSwgQmlnRGVjaW1hbCBy
dWVjazA5PQosIEJpZ0RlY2ltYWwgbWFzY2hlMTAsIEJpZ0RlY2ltYWwgcnVlY2sxMCwgQmlnRGVj
aW1hbCBtYXNjaGUxMSwgQmlnRGVjaW1hbCA9CnJ1ZWNrMTEsIEJpZ0RlY2ltYWwgbWFzY2hlMTIs
IEJpZ0RlY2ltYWwgcnVlY2sxMiwgQmlnRGVjaW1hbCBtYXNjaGUxMywgQmlnRD0KZWNpbWFsIHJ1
ZWNrMTMsIEJpZ0RlY2ltYWwgbWFzY2hlMTQsIEJpZ0RlY2ltYWwgcnVlY2sxNCwgQmlnRGVjaW1h
bCBtYXNjaGUxPQo1LCBCaWdEZWNpbWFsIHJ1ZWNrMTUsIEJpZ0RlY2ltYWwgbWFzY2hlMTYsIEJp
Z0RlY2ltYWwgcnVlY2sxNiwgQmlnRGVjaW1hbCA9Cm1hc2NoZTE3LCBCaWdEZWNpbWFsIHJ1ZWNr
MTcsIEJpZ0RlY2ltYWwgbWFzY2hlMTgsIEJpZ0RlY2ltYWwgcnVlY2sxOCwgQmlnRD0KZWNpbWFs
IG1hc2NoZTE5LCBCaWdEZWNpbWFsIHJ1ZWNrMTksIEJpZ0RlY2ltYWwgbWFzY2hlMjAsIEJpZ0Rl
Y2ltYWwgcnVlY2syPQowLCBCaWdEZWNpbWFsIG1hc2NoZTIxLCBCaWdEZWNpbWFsIHJ1ZWNrMjEs
IEJpZ0RlY2ltYWwgcmVzdCkgewotICAgICAgIHRoaXMuZ2xvdHJlY2h0ZWlkID0zRCBnbG90cmVj
aHRlaWQ7Ci0gICAgICAgdGhpcy5nc2llYnNhdHppZCA9M0QgZ3NpZWJzYXR6aWQ7Ci0gICAgICAg
dGhpcy5nbWFzc2UgPTNEIGdtYXNzZTsKLSAgICAgICB0aGlzLm1hc2NoZTAxID0zRCBtYXNjaGUw
MTsKLSAgICAgICB0aGlzLnJ1ZWNrMDEgPTNEIHJ1ZWNrMDE7Ci0gICAgICAgdGhpcy5tYXNjaGUw
MiA9M0QgbWFzY2hlMDI7Ci0gICAgICAgdGhpcy5ydWVjazAyID0zRCBydWVjazAyOwotICAgICAg
IHRoaXMubWFzY2hlMDMgPTNEIG1hc2NoZTAzOwotICAgICAgIHRoaXMucnVlY2swMyA9M0QgcnVl
Y2swMzsKLSAgICAgICB0aGlzLm1hc2NoZTA0ID0zRCBtYXNjaGUwNDsKLSAgICAgICB0aGlzLnJ1
ZWNrMDQgPTNEIHJ1ZWNrMDQ7Ci0gICAgICAgdGhpcy5tYXNjaGUwNSA9M0QgbWFzY2hlMDU7Ci0g
ICAgICAgdGhpcy5ydWVjazA1ID0zRCBydWVjazA1OwotICAgICAgIHRoaXMubWFzY2hlMDYgPTNE
IG1hc2NoZTA2OwotICAgICAgIHRoaXMucnVlY2swNiA9M0QgcnVlY2swNjsKLSAgICAgICB0aGlz
Lm1hc2NoZTA3ID0zRCBtYXNjaGUwNzsKLSAgICAgICB0aGlzLnJ1ZWNrMDcgPTNEIHJ1ZWNrMDc7
Ci0gICAgICAgdGhpcy5tYXNjaGUwOCA9M0QgbWFzY2hlMDg7Ci0gICAgICAgdGhpcy5ydWVjazA4
ID0zRCBydWVjazA4OwotICAgICAgIHRoaXMubWFzY2hlMDkgPTNEIG1hc2NoZTA5OwotICAgICAg
IHRoaXMucnVlY2swOSA9M0QgcnVlY2swOTsKLSAgICAgICB0aGlzLm1hc2NoZTEwID0zRCBtYXNj
aGUxMDsKLSAgICAgICB0aGlzLnJ1ZWNrMTAgPTNEIHJ1ZWNrMTA7Ci0gICAgICAgdGhpcy5tYXNj
aGUxMSA9M0QgbWFzY2hlMTE7Ci0gICAgICAgdGhpcy5ydWVjazExID0zRCBydWVjazExOwotICAg
ICAgIHRoaXMubWFzY2hlMTIgPTNEIG1hc2NoZTEyOwotICAgICAgIHRoaXMucnVlY2sxMiA9M0Qg
cnVlY2sxMjsKLSAgICAgICB0aGlzLm1hc2NoZTEzID0zRCBtYXNjaGUxMzsKLSAgICAgICB0aGlz
LnJ1ZWNrMTMgPTNEIHJ1ZWNrMTM7Ci0gICAgICAgdGhpcy5tYXNjaGUxNCA9M0QgbWFzY2hlMTQ7
Ci0gICAgICAgdGhpcy5ydWVjazE0ID0zRCBydWVjazE0OwotICAgICAgIHRoaXMubWFzY2hlMTUg
PTNEIG1hc2NoZTE1OwotICAgICAgIHRoaXMucnVlY2sxNSA9M0QgcnVlY2sxNTsKLSAgICAgICB0
aGlzLm1hc2NoZTE2ID0zRCBtYXNjaGUxNjsKLSAgICAgICB0aGlzLnJ1ZWNrMTYgPTNEIHJ1ZWNr
MTY7Ci0gICAgICAgdGhpcy5tYXNjaGUxNyA9M0QgbWFzY2hlMTc7Ci0gICAgICAgdGhpcy5ydWVj
azE3ID0zRCBydWVjazE3OwotICAgICAgIHRoaXMubWFzY2hlMTggPTNEIG1hc2NoZTE4OwotICAg
ICAgIHRoaXMucnVlY2sxOCA9M0QgcnVlY2sxODsKLSAgICAgICB0aGlzLm1hc2NoZTE5ID0zRCBt
YXNjaGUxOTsKLSAgICAgICB0aGlzLnJ1ZWNrMTkgPTNEIHJ1ZWNrMTk7Ci0gICAgICAgdGhpcy5t
YXNjaGUyMCA9M0QgbWFzY2hlMjA7Ci0gICAgICAgdGhpcy5ydWVjazIwID0zRCBydWVjazIwOwot
ICAgICAgIHRoaXMubWFzY2hlMjEgPTNEIG1hc2NoZTIxOwotICAgICAgIHRoaXMucnVlY2syMSA9
M0QgcnVlY2syMTsKLSAgICAgICB0aGlzLnJlc3QgPTNEIHJlc3Q7Ci0gICAgfQotCi0KLQotICAg
IEBDb2x1bW4obmFtZT0zRCJHTE9UUkVDSFRFSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNp
b249M0QxMSwgc2NhbGU9Cj0zRDApCi0gICAgcHVibGljIGxvbmcgZ2V0R2xvdHJlY2h0ZWlkKCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5nbG90cmVjaHRlaWQ7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0R2xvdHJlY2h0ZWlkKGxvbmcgZ2xvdHJlY2h0ZWlkKSB7Ci0gICAgICAgIHRoaXMu
Z2xvdHJlY2h0ZWlkID0zRCBnbG90cmVjaHRlaWQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiR1NJRUJTQVRaSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxMSwgc2Nh
bGU9Cj0zRDApCi0gICAgcHVibGljIGxvbmcgZ2V0R3NpZWJzYXR6aWQoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLmdzaWVic2F0emlkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEdzaWVi
c2F0emlkKGxvbmcgZ3NpZWJzYXR6aWQpIHsKLSAgICAgICAgdGhpcy5nc2llYnNhdHppZCA9M0Qg
Z3NpZWJzYXR6aWQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiR01BU1NFIiwgcHJl
Y2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEdtYXNzZSgp
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ21hc3NlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lk
IHNldEdtYXNzZShCaWdEZWNpbWFsIGdtYXNzZSkgewotICAgICAgICB0aGlzLmdtYXNzZSA9M0Qg
Z21hc3NlOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTAxIiwgcHJlY2lz
aW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTAxKCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUwMTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXRNYXNjaGUwMShCaWdEZWNpbWFsIG1hc2NoZTAxKSB7Ci0gICAgICAgIHRoaXMubWFzY2hl
MDEgPTNEIG1hc2NoZTAxOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMDEi
LCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVl
Y2swMSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnVlY2swMTsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRSdWVjazAxKEJpZ0RlY2ltYWwgcnVlY2swMSkgewotICAgICAgICB0aGlzLnJ1
ZWNrMDEgPTNEIHJ1ZWNrMDE7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hF
MDIiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0
TWFzY2hlMDIoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTAyOwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldE1hc2NoZTAyKEJpZ0RlY2ltYWwgbWFzY2hlMDIpIHsKLSAgICAgICAg
dGhpcy5tYXNjaGUwMiA9M0QgbWFzY2hlMDI7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiUlVFQ0swMiIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVj
aW1hbCBnZXRSdWVjazAyKCkgewotICAgICAgICByZXR1cm4gdGhpcy5ydWVjazAyOwotICAgIH0K
LQotICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMDIoQmlnRGVjaW1hbCBydWVjazAyKSB7Ci0gICAg
ICAgIHRoaXMucnVlY2swMiA9M0QgcnVlY2swMjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFt
ZT0zRCJNQVNDSEUwMyIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmln
RGVjaW1hbCBnZXRNYXNjaGUwMygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMDM7Ci0g
ICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMDMoQmlnRGVjaW1hbCBtYXNjaGUwMykg
ewotICAgICAgICB0aGlzLm1hc2NoZTAzID0zRCBtYXNjaGUwMzsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJSVUVDSzAzIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMDMoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJ1ZWNr
MDM7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnVlY2swMyhCaWdEZWNpbWFsIHJ1ZWNr
MDMpIHsKLSAgICAgICAgdGhpcy5ydWVjazAzID0zRCBydWVjazAzOwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIk1BU0NIRTA0IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTA0KCkgewotICAgICAgICByZXR1cm4gdGhpcy5t
YXNjaGUwNDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUwNChCaWdEZWNpbWFs
IG1hc2NoZTA0KSB7Ci0gICAgICAgIHRoaXMubWFzY2hlMDQgPTNEIG1hc2NoZTA0OwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMDQiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0z
RDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2swNCgpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMucnVlY2swNDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazA0KEJpZ0Rl
Y2ltYWwgcnVlY2swNCkgewotICAgICAgICB0aGlzLnJ1ZWNrMDQgPTNEIHJ1ZWNrMDQ7Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMDUiLCBwcmVjaXNpb249M0Q3LCBzY2Fs
ZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMDUoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLm1hc2NoZTA1OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTA1
KEJpZ0RlY2ltYWwgbWFzY2hlMDUpIHsKLSAgICAgICAgdGhpcy5tYXNjaGUwNSA9M0QgbWFzY2hl
MDU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0swNSIsIHByZWNpc2lvbj0z
RDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazA1KCkgewotICAg
ICAgICByZXR1cm4gdGhpcy5ydWVjazA1OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJ1
ZWNrMDUoQmlnRGVjaW1hbCBydWVjazA1KSB7Ci0gICAgICAgIHRoaXMucnVlY2swNSA9M0QgcnVl
Y2swNTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUwNiIsIHByZWNpc2lv
bj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUwNigpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMDY7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0TWFzY2hlMDYoQmlnRGVjaW1hbCBtYXNjaGUwNikgewotICAgICAgICB0aGlzLm1hc2NoZTA2
ID0zRCBtYXNjaGUwNjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzA2Iiwg
cHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNr
MDYoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMDY7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0UnVlY2swNihCaWdEZWNpbWFsIHJ1ZWNrMDYpIHsKLSAgICAgICAgdGhpcy5ydWVj
azA2ID0zRCBydWVjazA2OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTA3
IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1h
c2NoZTA3KCkgewotICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUwNzsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRNYXNjaGUwNyhCaWdEZWNpbWFsIG1hc2NoZTA3KSB7Ci0gICAgICAgIHRo
aXMubWFzY2hlMDcgPTNEIG1hc2NoZTA3OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNE
IlJVRUNLMDciLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2lt
YWwgZ2V0UnVlY2swNygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnVlY2swNzsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazA3KEJpZ0RlY2ltYWwgcnVlY2swNykgewotICAgICAg
ICB0aGlzLnJ1ZWNrMDcgPTNEIHJ1ZWNrMDc7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiTUFTQ0hFMDgiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0TWFzY2hlMDgoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTA4OwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTA4KEJpZ0RlY2ltYWwgbWFzY2hlMDgpIHsK
LSAgICAgICAgdGhpcy5tYXNjaGUwOCA9M0QgbWFzY2hlMDg7Ci0gICAgfQotCi0KLSAgICBAQ29s
dW1uKG5hbWU9M0QiUlVFQ0swOCIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXRSdWVjazA4KCkgewotICAgICAgICByZXR1cm4gdGhpcy5ydWVjazA4
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMDgoQmlnRGVjaW1hbCBydWVjazA4
KSB7Ci0gICAgICAgIHRoaXMucnVlY2swOCA9M0QgcnVlY2swODsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJNQVNDSEUwOSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBw
dWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUwOSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWFz
Y2hlMDk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMDkoQmlnRGVjaW1hbCBt
YXNjaGUwOSkgewotICAgICAgICB0aGlzLm1hc2NoZTA5ID0zRCBtYXNjaGUwOTsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzA5IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0Qz
KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMDkoKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLnJ1ZWNrMDk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnVlY2swOShCaWdEZWNp
bWFsIHJ1ZWNrMDkpIHsKLSAgICAgICAgdGhpcy5ydWVjazA5ID0zRCBydWVjazA5OwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTEwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9
M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTEwKCkgewotICAgICAgICByZXR1
cm4gdGhpcy5tYXNjaGUxMDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUxMChC
aWdEZWNpbWFsIG1hc2NoZTEwKSB7Ci0gICAgICAgIHRoaXMubWFzY2hlMTAgPTNEIG1hc2NoZTEw
OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMTAiLCBwcmVjaXNpb249M0Q5
LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2sxMCgpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMucnVlY2sxMDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSdWVj
azEwKEJpZ0RlY2ltYWwgcnVlY2sxMCkgewotICAgICAgICB0aGlzLnJ1ZWNrMTAgPTNEIHJ1ZWNr
MTA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMTEiLCBwcmVjaXNpb249
M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMTEoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTExOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dE1hc2NoZTExKEJpZ0RlY2ltYWwgbWFzY2hlMTEpIHsKLSAgICAgICAgdGhpcy5tYXNjaGUxMSA9
M0QgbWFzY2hlMTE7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0sxMSIsIHBy
ZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazEx
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5ydWVjazExOwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldFJ1ZWNrMTEoQmlnRGVjaW1hbCBydWVjazExKSB7Ci0gICAgICAgIHRoaXMucnVlY2sx
MSA9M0QgcnVlY2sxMTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUxMiIs
IHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNj
aGUxMigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMTI7Ci0gICAgfQotCi0gICAgcHVi
bGljIHZvaWQgc2V0TWFzY2hlMTIoQmlnRGVjaW1hbCBtYXNjaGUxMikgewotICAgICAgICB0aGlz
Lm1hc2NoZTEyID0zRCBtYXNjaGUxMjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJS
VUVDSzEyIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFs
IGdldFJ1ZWNrMTIoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMTI7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0UnVlY2sxMihCaWdEZWNpbWFsIHJ1ZWNrMTIpIHsKLSAgICAgICAg
dGhpcy5ydWVjazEyID0zRCBydWVjazEyOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNE
Ik1BU0NIRTEzIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNp
bWFsIGdldE1hc2NoZTEzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUxMzsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUxMyhCaWdEZWNpbWFsIG1hc2NoZTEzKSB7Ci0g
ICAgICAgIHRoaXMubWFzY2hlMTMgPTNEIG1hc2NoZTEzOwotICAgIH0KLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIlJVRUNLMTMiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGlj
IEJpZ0RlY2ltYWwgZ2V0UnVlY2sxMygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnVlY2sxMzsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazEzKEJpZ0RlY2ltYWwgcnVlY2sxMykg
ewotICAgICAgICB0aGlzLnJ1ZWNrMTMgPTNEIHJ1ZWNrMTM7Ci0gICAgfQotCi0KLSAgICBAQ29s
dW1uKG5hbWU9M0QiTUFTQ0hFMTQiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVi
bGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMTQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1hc2No
ZTE0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTE0KEJpZ0RlY2ltYWwgbWFz
Y2hlMTQpIHsKLSAgICAgICAgdGhpcy5tYXNjaGUxNCA9M0QgbWFzY2hlMTQ7Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0sxNCIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykK
LSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazE0KCkgewotICAgICAgICByZXR1cm4gdGhp
cy5ydWVjazE0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMTQoQmlnRGVjaW1h
bCBydWVjazE0KSB7Ci0gICAgICAgIHRoaXMucnVlY2sxNCA9M0QgcnVlY2sxNDsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUxNSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNE
NCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUxNSgpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMubWFzY2hlMTU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMTUoQmln
RGVjaW1hbCBtYXNjaGUxNSkgewotICAgICAgICB0aGlzLm1hc2NoZTE1ID0zRCBtYXNjaGUxNTsK
LSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzE1IiwgcHJlY2lzaW9uPTNEOSwg
c2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMTUoKSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLnJ1ZWNrMTU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnVlY2sx
NShCaWdEZWNpbWFsIHJ1ZWNrMTUpIHsKLSAgICAgICAgdGhpcy5ydWVjazE1ID0zRCBydWVjazE1
OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTE2IiwgcHJlY2lzaW9uPTNE
Nywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTE2KCkgewotICAg
ICAgICByZXR1cm4gdGhpcy5tYXNjaGUxNjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRN
YXNjaGUxNihCaWdEZWNpbWFsIG1hc2NoZTE2KSB7Ci0gICAgICAgIHRoaXMubWFzY2hlMTYgPTNE
IG1hc2NoZTE2OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMTYiLCBwcmVj
aXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2sxNigp
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnVlY2sxNjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXRSdWVjazE2KEJpZ0RlY2ltYWwgcnVlY2sxNikgewotICAgICAgICB0aGlzLnJ1ZWNrMTYg
PTNEIHJ1ZWNrMTY7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMTciLCBw
cmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hl
MTcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTE3OwotICAgIH0KLQotICAgIHB1Ymxp
YyB2b2lkIHNldE1hc2NoZTE3KEJpZ0RlY2ltYWwgbWFzY2hlMTcpIHsKLSAgICAgICAgdGhpcy5t
YXNjaGUxNyA9M0QgbWFzY2hlMTc7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlVF
Q0sxNyIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXRSdWVjazE3KCkgewotICAgICAgICByZXR1cm4gdGhpcy5ydWVjazE3OwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldFJ1ZWNrMTcoQmlnRGVjaW1hbCBydWVjazE3KSB7Ci0gICAgICAgIHRo
aXMucnVlY2sxNyA9M0QgcnVlY2sxNzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJN
QVNDSEUxOCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1h
bCBnZXRNYXNjaGUxOCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMTg7Ci0gICAgfQot
Ci0gICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMTgoQmlnRGVjaW1hbCBtYXNjaGUxOCkgewotICAg
ICAgICB0aGlzLm1hc2NoZTE4ID0zRCBtYXNjaGUxODsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4o
bmFtZT0zRCJSVUVDSzE4IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBC
aWdEZWNpbWFsIGdldFJ1ZWNrMTgoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMTg7Ci0g
ICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnVlY2sxOChCaWdEZWNpbWFsIHJ1ZWNrMTgpIHsK
LSAgICAgICAgdGhpcy5ydWVjazE4ID0zRCBydWVjazE4OwotICAgIH0KLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIk1BU0NIRTE5IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldE1hc2NoZTE5KCkgewotICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUx
OTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUxOShCaWdEZWNpbWFsIG1hc2No
ZTE5KSB7Ci0gICAgICAgIHRoaXMubWFzY2hlMTkgPTNEIG1hc2NoZTE5OwotICAgIH0KLQotCi0g
ICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMTkiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0g
ICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2sxOSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
cnVlY2sxOTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazE5KEJpZ0RlY2ltYWwg
cnVlY2sxOSkgewotICAgICAgICB0aGlzLnJ1ZWNrMTkgPTNEIHJ1ZWNrMTk7Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMjAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQp
Ci0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMjAoKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLm1hc2NoZTIwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTIwKEJpZ0Rl
Y2ltYWwgbWFzY2hlMjApIHsKLSAgICAgICAgdGhpcy5tYXNjaGUyMCA9M0QgbWFzY2hlMjA7Ci0g
ICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0syMCIsIHByZWNpc2lvbj0zRDksIHNj
YWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazIwKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5ydWVjazIwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMjAo
QmlnRGVjaW1hbCBydWVjazIwKSB7Ci0gICAgICAgIHRoaXMucnVlY2syMCA9M0QgcnVlY2syMDsK
LSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUyMSIsIHByZWNpc2lvbj0zRDcs
IHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUyMSgpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMubWFzY2hlMjE7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWFz
Y2hlMjEoQmlnRGVjaW1hbCBtYXNjaGUyMSkgewotICAgICAgICB0aGlzLm1hc2NoZTIxID0zRCBt
YXNjaGUyMTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzIxIiwgcHJlY2lz
aW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMjEoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMjE7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0UnVlY2syMShCaWdEZWNpbWFsIHJ1ZWNrMjEpIHsKLSAgICAgICAgdGhpcy5ydWVjazIxID0z
RCBydWVjazIxOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJFU1QiLCBwcmVjaXNp
b249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UmVzdCgpIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMucmVzdDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSZXN0
KEJpZ0RlY2ltYWwgcmVzdCkgewotICAgICAgICB0aGlzLnJlc3QgPTNEIHJlc3Q7Ci0gICAgfQot
Ci0KLSAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb3RoZXIpIHsKLSAgICAgICAgIGlm
ICggKHRoaXMgPTNEPTNEIG90aGVyICkgKSByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIGlmICggKG90
aGVyID0zRD0zRCBudWxsICkgKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICBpZiAoICEob3RoZXIg
aW5zdGFuY2VvZiBHc2llYnVuZ3NpZWJJZCkgKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICBHc2ll
YnVuZ3NpZWJJZCBjYXN0T3RoZXIgPTNEICggR3NpZWJ1bmdzaWViSWQgKSBvdGhlcjsKLQotICAg
ICAgICAgcmV0dXJuICh0aGlzLmdldEdsb3RyZWNodGVpZCgpPTNEPTNEY2FzdE90aGVyLmdldEds
b3RyZWNodGVpZCgpKQotICYmICh0aGlzLmdldEdzaWVic2F0emlkKCk9M0Q9M0RjYXN0T3RoZXIu
Z2V0R3NpZWJzYXR6aWQoKSkKLSAmJiAoICh0aGlzLmdldEdtYXNzZSgpPTNEPTNEY2FzdE90aGVy
LmdldEdtYXNzZSgpKSB8fCAoIHRoaXMuZ2V0R21hc3NlKCkhPQo9M0RudWxsICYmIGNhc3RPdGhl
ci5nZXRHbWFzc2UoKSE9M0RudWxsICYmIHRoaXMuZ2V0R21hc3NlKCkuZXF1YWxzKGNhc3RPdGg9
CmVyLmdldEdtYXNzZSgpKSApICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTAxKCk9M0Q9M0RjYXN0
T3RoZXIuZ2V0TWFzY2hlMDEoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMDEoKSE9M0RudWxsICYm
IGNhc3RPdGhlci5nZXRNYXNjaGUwMSgpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUwMSgpLmVx
dWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUwMSgpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNr
MDEoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazAxKCkpIHx8ICggdGhpcy5nZXRSdWVjazAxPQoo
KSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazAxKCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1
ZWNrMDEoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2swMSgpKSApICkKLSAmJiAoICh0aGlz
LmdldE1hc2NoZTAyKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMDIoKSkgfHwgKCB0aGlzLmdl
dE1hc2NoPQplMDIoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUwMigpIT0zRG51bGwg
JiYgdGhpcy5nZXRNYXNjaGUwMigpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUwMigpKSAp
ICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMDIoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazAyKCkp
IHx8ICggdGhpcy5nZXRSdWVjazAyPQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazAy
KCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMDIoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVl
Y2swMigpKSApICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTAzKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0
TWFzY2hlMDMoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMDMoKSE9M0RudWxsICYmIGNhc3RPdGhl
ci5nZXRNYXNjaGUwMygpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUwMygpLmVxdWE9CmxzKGNh
c3RPdGhlci5nZXRNYXNjaGUwMygpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMDMoKT0zRD0z
RGNhc3RPdGhlci5nZXRSdWVjazAzKCkpIHx8ICggdGhpcy5nZXRSdWVjazAzPQooKSE9M0RudWxs
ICYmIGNhc3RPdGhlci5nZXRSdWVjazAzKCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMDMoKS5l
cXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2swMygpKSApICkKLSAmJiAoICh0aGlzLmdldE1hc2No
ZTA0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMDQoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQpl
MDQoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUwNCgpIT0zRG51bGwgJiYgdGhpcy5n
ZXRNYXNjaGUwNCgpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUwNCgpKSApICkKLSAmJiAo
ICh0aGlzLmdldFJ1ZWNrMDQoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazA0KCkpIHx8ICggdGhp
cy5nZXRSdWVjazA0PQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazA0KCkhPTNEbnVs
bCAmJiB0aGlzLmdldFJ1ZWNrMDQoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2swNCgpKSAp
ICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTA1KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMDUo
KSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMDUoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNj
aGUwNSgpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUwNSgpLmVxdWE9CmxzKGNhc3RPdGhlci5n
ZXRNYXNjaGUwNSgpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMDUoKT0zRD0zRGNhc3RPdGhl
ci5nZXRSdWVjazA1KCkpIHx8ICggdGhpcy5nZXRSdWVjazA1PQooKSE9M0RudWxsICYmIGNhc3RP
dGhlci5nZXRSdWVjazA1KCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMDUoKS5lcXVhbHMoY2E9
CnN0T3RoZXIuZ2V0UnVlY2swNSgpKSApICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTA2KCk9M0Q9
M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMDYoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMDYoKSE9M0Ru
dWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUwNigpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUw
NigpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUwNigpKSApICkKLSAmJiAoICh0aGlzLmdl
dFJ1ZWNrMDYoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazA2KCkpIHx8ICggdGhpcy5nZXRSdWVj
azA2PQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazA2KCkhPTNEbnVsbCAmJiB0aGlz
LmdldFJ1ZWNrMDYoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2swNigpKSApICkKLSAmJiAo
ICh0aGlzLmdldE1hc2NoZTA3KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMDcoKSkgfHwgKCB0
aGlzLmdldE1hc2NoPQplMDcoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUwNygpIT0z
RG51bGwgJiYgdGhpcy5nZXRNYXNjaGUwNygpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUw
NygpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMDcoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVj
azA3KCkpIHx8ICggdGhpcy5nZXRSdWVjazA3PQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRS
dWVjazA3KCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMDcoKS5lcXVhbHMoY2E9CnN0T3RoZXIu
Z2V0UnVlY2swNygpKSApICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTA4KCk9M0Q9M0RjYXN0T3Ro
ZXIuZ2V0TWFzY2hlMDgoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMDgoKSE9M0RudWxsICYmIGNh
c3RPdGhlci5nZXRNYXNjaGUwOCgpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUwOCgpLmVxdWE9
CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUwOCgpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMDgo
KT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazA4KCkpIHx8ICggdGhpcy5nZXRSdWVjazA4PQooKSE9
M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazA4KCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNr
MDgoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2swOCgpKSApICkKLSAmJiAoICh0aGlzLmdl
dE1hc2NoZTA5KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMDkoKSkgfHwgKCB0aGlzLmdldE1h
c2NoPQplMDkoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUwOSgpIT0zRG51bGwgJiYg
dGhpcy5nZXRNYXNjaGUwOSgpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUwOSgpKSApICkK
LSAmJiAoICh0aGlzLmdldFJ1ZWNrMDkoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazA5KCkpIHx8
ICggdGhpcy5nZXRSdWVjazA5PQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazA5KCkh
PTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMDkoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2sw
OSgpKSApICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTEwKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFz
Y2hlMTAoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMTAoKSE9M0RudWxsICYmIGNhc3RPdGhlci5n
ZXRNYXNjaGUxMCgpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUxMCgpLmVxdWE9CmxzKGNhc3RP
dGhlci5nZXRNYXNjaGUxMCgpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMTAoKT0zRD0zRGNh
c3RPdGhlci5nZXRSdWVjazEwKCkpIHx8ICggdGhpcy5nZXRSdWVjazEwPQooKSE9M0RudWxsICYm
IGNhc3RPdGhlci5nZXRSdWVjazEwKCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMTAoKS5lcXVh
bHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2sxMCgpKSApICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTEx
KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMTEoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMTEo
KSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUxMSgpIT0zRG51bGwgJiYgdGhpcy5nZXRN
YXNjaGUxMSgpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUxMSgpKSApICkKLSAmJiAoICh0
aGlzLmdldFJ1ZWNrMTEoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazExKCkpIHx8ICggdGhpcy5n
ZXRSdWVjazExPQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazExKCkhPTNEbnVsbCAm
JiB0aGlzLmdldFJ1ZWNrMTEoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2sxMSgpKSApICkK
LSAmJiAoICh0aGlzLmdldE1hc2NoZTEyKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMTIoKSkg
fHwgKCB0aGlzLmdldE1hc2NoPQplMTIoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUx
MigpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUxMigpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRN
YXNjaGUxMigpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMTIoKT0zRD0zRGNhc3RPdGhlci5n
ZXRSdWVjazEyKCkpIHx8ICggdGhpcy5nZXRSdWVjazEyPQooKSE9M0RudWxsICYmIGNhc3RPdGhl
ci5nZXRSdWVjazEyKCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMTIoKS5lcXVhbHMoY2E9CnN0
T3RoZXIuZ2V0UnVlY2sxMigpKSApICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTEzKCk9M0Q9M0Rj
YXN0T3RoZXIuZ2V0TWFzY2hlMTMoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMTMoKSE9M0RudWxs
ICYmIGNhc3RPdGhlci5nZXRNYXNjaGUxMygpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUxMygp
LmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUxMygpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1
ZWNrMTMoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazEzKCkpIHx8ICggdGhpcy5nZXRSdWVjazEz
PQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazEzKCkhPTNEbnVsbCAmJiB0aGlzLmdl
dFJ1ZWNrMTMoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2sxMygpKSApICkKLSAmJiAoICh0
aGlzLmdldE1hc2NoZTE0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMTQoKSkgfHwgKCB0aGlz
LmdldE1hc2NoPQplMTQoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUxNCgpIT0zRG51
bGwgJiYgdGhpcy5nZXRNYXNjaGUxNCgpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUxNCgp
KSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMTQoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazE0
KCkpIHx8ICggdGhpcy5nZXRSdWVjazE0PQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVj
azE0KCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMTQoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0
UnVlY2sxNCgpKSApICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTE1KCk9M0Q9M0RjYXN0T3RoZXIu
Z2V0TWFzY2hlMTUoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMTUoKSE9M0RudWxsICYmIGNhc3RP
dGhlci5nZXRNYXNjaGUxNSgpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUxNSgpLmVxdWE9Cmxz
KGNhc3RPdGhlci5nZXRNYXNjaGUxNSgpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMTUoKT0z
RD0zRGNhc3RPdGhlci5nZXRSdWVjazE1KCkpIHx8ICggdGhpcy5nZXRSdWVjazE1PQooKSE9M0Ru
dWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazE1KCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMTUo
KS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2sxNSgpKSApICkKLSAmJiAoICh0aGlzLmdldE1h
c2NoZTE2KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMTYoKSkgfHwgKCB0aGlzLmdldE1hc2No
PQplMTYoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUxNigpIT0zRG51bGwgJiYgdGhp
cy5nZXRNYXNjaGUxNigpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUxNigpKSApICkKLSAm
JiAoICh0aGlzLmdldFJ1ZWNrMTYoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazE2KCkpIHx8ICgg
dGhpcy5nZXRSdWVjazE2PQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazE2KCkhPTNE
bnVsbCAmJiB0aGlzLmdldFJ1ZWNrMTYoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2sxNigp
KSApICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTE3KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hl
MTcoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMTcoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRN
YXNjaGUxNygpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUxNygpLmVxdWE9CmxzKGNhc3RPdGhl
ci5nZXRNYXNjaGUxNygpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMTcoKT0zRD0zRGNhc3RP
dGhlci5nZXRSdWVjazE3KCkpIHx8ICggdGhpcy5nZXRSdWVjazE3PQooKSE9M0RudWxsICYmIGNh
c3RPdGhlci5nZXRSdWVjazE3KCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMTcoKS5lcXVhbHMo
Y2E9CnN0T3RoZXIuZ2V0UnVlY2sxNygpKSApICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTE4KCk9
M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMTgoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMTgoKSE9
M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUxOCgpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNj
aGUxOCgpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUxOCgpKSApICkKLSAmJiAoICh0aGlz
LmdldFJ1ZWNrMTgoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazE4KCkpIHx8ICggdGhpcy5nZXRS
dWVjazE4PQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazE4KCkhPTNEbnVsbCAmJiB0
aGlzLmdldFJ1ZWNrMTgoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2sxOCgpKSApICkKLSAm
JiAoICh0aGlzLmdldE1hc2NoZTE5KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMTkoKSkgfHwg
KCB0aGlzLmdldE1hc2NoPQplMTkoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUxOSgp
IT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUxOSgpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNj
aGUxOSgpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMTkoKT0zRD0zRGNhc3RPdGhlci5nZXRS
dWVjazE5KCkpIHx8ICggdGhpcy5nZXRSdWVjazE5PQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5n
ZXRSdWVjazE5KCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMTkoKS5lcXVhbHMoY2E9CnN0T3Ro
ZXIuZ2V0UnVlY2sxOSgpKSApICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTIwKCk9M0Q9M0RjYXN0
T3RoZXIuZ2V0TWFzY2hlMjAoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMjAoKSE9M0RudWxsICYm
IGNhc3RPdGhlci5nZXRNYXNjaGUyMCgpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUyMCgpLmVx
dWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUyMCgpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNr
MjAoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazIwKCkpIHx8ICggdGhpcy5nZXRSdWVjazIwPQoo
KSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazIwKCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1
ZWNrMjAoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2syMCgpKSApICkKLSAmJiAoICh0aGlz
LmdldE1hc2NoZTIxKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMjEoKSkgfHwgKCB0aGlzLmdl
dE1hc2NoPQplMjEoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUyMSgpIT0zRG51bGwg
JiYgdGhpcy5nZXRNYXNjaGUyMSgpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUyMSgpKSAp
ICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMjEoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazIxKCkp
IHx8ICggdGhpcy5nZXRSdWVjazIxPQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazIx
KCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMjEoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVl
Y2syMSgpKSApICkKLSAmJiAoICh0aGlzLmdldFJlc3QoKT0zRD0zRGNhc3RPdGhlci5nZXRSZXN0
KCkpIHx8ICggdGhpcy5nZXRSZXN0KCkhPTNEbnVsPQpsICYmIGNhc3RPdGhlci5nZXRSZXN0KCkh
PTNEbnVsbCAmJiB0aGlzLmdldFJlc3QoKS5lcXVhbHMoY2FzdE90aGVyLmdldFJlc3Q9CigpKSAp
ICk7Ci0gICB9Ci0KLSAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7Ci0gICAgICAgICBpbnQgcmVz
dWx0ID0zRCAxNzsKLQotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArIChpbnQpIHRo
aXMuZ2V0R2xvdHJlY2h0ZWlkKCk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsg
KGludCkgdGhpcy5nZXRHc2llYnNhdHppZCgpOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJl
c3VsdCArICggZ2V0R21hc3NlKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXQ9CkdtYXNzZSgp
Lmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1h
c2NoZTAxKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTAxKCkuaGFzaENvZGUo
KSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2swMSgpID0z
RD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazAxKCkuaGFzaENvZGUoKSApOwotICAgICAg
ICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMDIoKSA9M0Q9M0QgbnVsbCA/
IDAgOiB0aGlzLmc9CmV0TWFzY2hlMDIoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQg
PTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazAyKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5n
ZT0KdFJ1ZWNrMDIoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVz
dWx0ICsgKCBnZXRNYXNjaGUwMygpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUw
MygpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdl
dFJ1ZWNrMDMoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2swMygpLmhhc2hDb2Rl
KCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTA0KCkg
PTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTA0KCkuaGFzaENvZGUoKSApOwotICAg
ICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2swNCgpID0zRD0zRCBudWxs
ID8gMCA6IHRoaXMuZ2U9CnRSdWVjazA0KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0
ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMDUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlz
Lmc9CmV0TWFzY2hlMDUoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICog
cmVzdWx0ICsgKCBnZXRSdWVjazA1KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNr
MDUoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBn
ZXRNYXNjaGUwNigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUwNigpLmhhc2hD
b2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMDYo
KSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2swNigpLmhhc2hDb2RlKCkgKTsKLSAg
ICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTA3KCkgPTNEPTNEIG51
bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTA3KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVz
dWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2swNygpID0zRD0zRCBudWxsID8gMCA6IHRo
aXMuZ2U9CnRSdWVjazA3KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAq
IHJlc3VsdCArICggZ2V0TWFzY2hlMDgoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFz
Y2hlMDgoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsg
KCBnZXRSdWVjazA4KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMDgoKS5oYXNo
Q29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUw
OSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUwOSgpLmhhc2hDb2RlKCkgKTsK
LSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMDkoKSA9M0Q9M0Qg
bnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2swOSgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJl
c3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTEwKCkgPTNEPTNEIG51bGwgPyAwIDog
dGhpcy5nPQpldE1hc2NoZTEwKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAz
NyAqIHJlc3VsdCArICggZ2V0UnVlY2sxMCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRS
dWVjazEwKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCAr
ICggZ2V0TWFzY2hlMTEoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMTEoKS5o
YXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVj
azExKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMTEoKS5oYXNoQ29kZSgpICk7
Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUxMigpID0zRD0z
RCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUxMigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAg
IHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMTIoKSA9M0Q9M0QgbnVsbCA/IDAg
OiB0aGlzLmdlPQp0UnVlY2sxMigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0Qg
MzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTEzKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpl
dE1hc2NoZTEzKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3Vs
dCArICggZ2V0UnVlY2sxMygpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazEzKCku
aGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFz
Y2hlMTQoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMTQoKS5oYXNoQ29kZSgp
ICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazE0KCkgPTNE
PTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMTQoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAg
ICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUxNSgpID0zRD0zRCBudWxsID8g
MCA6IHRoaXMuZz0KZXRNYXNjaGUxNSgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9
M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMTUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdl
PQp0UnVlY2sxNSgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1
bHQgKyAoIGdldE1hc2NoZTE2KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTE2
KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0
UnVlY2sxNigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazE2KCkuaGFzaENvZGUo
KSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMTcoKSA9
M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMTcoKS5oYXNoQ29kZSgpICk7Ci0gICAg
ICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazE3KCkgPTNEPTNEIG51bGwg
PyAwIDogdGhpcy5nZT0KdFJ1ZWNrMTcoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQg
PTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUxOCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMu
Zz0KZXRNYXNjaGUxOCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiBy
ZXN1bHQgKyAoIGdldFJ1ZWNrMTgoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2sx
OCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdl
dE1hc2NoZTE5KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTE5KCkuaGFzaENv
ZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2sxOSgp
ID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazE5KCkuaGFzaENvZGUoKSApOwotICAg
ICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMjAoKSA9M0Q9M0QgbnVs
bCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMjAoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1
bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazIwKCkgPTNEPTNEIG51bGwgPyAwIDogdGhp
cy5nZT0KdFJ1ZWNrMjAoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICog
cmVzdWx0ICsgKCBnZXRNYXNjaGUyMSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNj
aGUyMSgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAo
IGdldFJ1ZWNrMjEoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2syMSgpLmhhc2hD
b2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJlc3QoKSA9
M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldFJlPQpzdCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAg
IHJldHVybiByZXN1bHQ7Ci0gICB9Ci19CmRpZmYgLXIgODlkY2FhZTA4MDFjIC1yIDZhNGJkY2Nj
ZmE0ZCBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZlci9zZWRk
Yi9tb2RlbC9IcGVpbHB1bmt0LmphdmEKLS0tIGEvYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9k
aXZlNGVsZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVsL0hwZWlscHVua3QuPQpqYXZhCVR1ZSBKYW4g
MTYgMTg6MTM6NTQgMjAxOCArMDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMApAQCAtMSw5MiArMCwwIEBACi0vKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIs
IDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQotICog
U29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0gKgotICogVGhpcyBmaWxl
IGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMpCi0gKiBhbmQgY29t
ZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCi0gKiBkb2N1bWVu
dGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFpbHMuCi0gKi8K
LQotcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2RlbDsKLS8vIEdlbmVy
YXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQuMC5DUjEKLQot
Ci1pbXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2Uu
QXR0cmlidXRlT3ZlcnJpZGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQXR0cmlidXRlT3Zl
cnJpZGVzOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZheC5w
ZXJzaXN0ZW5jZS5FbWJlZGRlZElkOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsK
LWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7Ci1pbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuSm9pbkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5NYW55VG9PbmU7Ci1p
bXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7Ci0KLS8qKgotICogSHBlaWxwdW5rdCBnZW5l
cmF0ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVudGl0eQotQFRhYmxlKG5hbWU9M0QiSFBFSUxQVU5L
VCIKLSAgICAsc2NoZW1hPTNEIlNFRERCIgotKQotcHVibGljIGNsYXNzIEhwZWlscHVua3QgIGlt
cGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgewotCi0KLSAgICAgcHJpdmF0ZSBIcGVpbHB1
bmt0SWQgaWQ7Ci0gICAgIHByaXZhdGUgSHBlaWx1bmcgaHBlaWx1bmc7Ci0gICAgIHByaXZhdGUg
QmlnRGVjaW1hbCB5OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgejsKLQotICAgIHB1YmxpYyBI
cGVpbHB1bmt0KCkgewotICAgIH0KLQotICAgIHB1YmxpYyBIcGVpbHB1bmt0KEhwZWlscHVua3RJ
ZCBpZCwgSHBlaWx1bmcgaHBlaWx1bmcsIEJpZ0RlY2ltYWwgeSwgQmk9CmdEZWNpbWFsIHopIHsK
LSAgICAgICB0aGlzLmlkID0zRCBpZDsKLSAgICAgICB0aGlzLmhwZWlsdW5nID0zRCBocGVpbHVu
ZzsKLSAgICAgICB0aGlzLnkgPTNEIHk7Ci0gICAgICAgdGhpcy56ID0zRCB6OwotICAgIH0KLQot
ICAgICBARW1iZWRkZWRJZAotCi0KLSAgICBAQXR0cmlidXRlT3ZlcnJpZGVzKCB7Ci0gICAgICAg
IEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImhwZWlsdW5naWQiLCBjb2x1bW49M0RAQ29sdW1u
KG5hbWU9M0QiSD0KUEVJTFVOR0lEIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMTEs
IHNjYWxlPTNEMCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicHVua3Ru
ciIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJQVU5LPQpUTlIiLCBudWxsYWJsZT0zRGZhbHNl
LCBwcmVjaXNpb249M0Q1LCBzY2FsZT0zRDApICkgfSApCi0gICAgcHVibGljIEhwZWlscHVua3RJ
ZCBnZXRJZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaWQ7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0SWQoSHBlaWxwdW5rdElkIGlkKSB7Ci0gICAgICAgIHRoaXMuaWQgPTNEIGlkOwot
ICAgIH0KLQotQE1hbnlUb09uZShmZXRjaD0zREZldGNoVHlwZS5MQVpZKQotICAgIEBKb2luQ29s
dW1uKG5hbWU9M0QiSFBFSUxVTkdJRCIsIG51bGxhYmxlPTNEZmFsc2UsIGluc2VydGFibGU9M0Rm
YWxzZSw9CiB1cGRhdGFibGU9M0RmYWxzZSkKLSAgICBwdWJsaWMgSHBlaWx1bmcgZ2V0SHBlaWx1
bmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmhwZWlsdW5nOwotICAgIH0KLQotICAgIHB1Ymxp
YyB2b2lkIHNldEhwZWlsdW5nKEhwZWlsdW5nIGhwZWlsdW5nKSB7Ci0gICAgICAgIHRoaXMuaHBl
aWx1bmcgPTNEIGhwZWlsdW5nOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlkiLCBu
dWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0WSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMueTsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRZKEJpZ0RlY2ltYWwgeSkgewotICAgICAgICB0aGlzLnkgPTNEIHk7Ci0g
ICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiWiIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNp
c2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRaKCkgewotICAg
ICAgICByZXR1cm4gdGhpcy56OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFooQmlnRGVj
aW1hbCB6KSB7Ci0gICAgICAgIHRoaXMueiA9M0QgejsKLSAgICB9Ci19CmRpZmYgLXIgODlkY2Fh
ZTA4MDFjIC1yIDZhNGJkY2NjZmE0ZCBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxl
bWVudD0Kcy9yaXZlci9zZWRkYi9tb2RlbC9IcGVpbHB1bmt0SWQuamF2YQotLS0gYS9iYWNrZW5k
L3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvSHBlaWxw
dW5rdEk9CmQuamF2YQlUdWUgSmFuIDE2IDE4OjEzOjU0IDIwMTggKzAxMDAKKysrIC9kZXYvbnVs
bAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsNzMgKzAsMCBAQAotLyogQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3
PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24g
R21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQ
TCAoPj0zRHYzKQotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hl
Y2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJp
dmVyIGZvciBkZXRhaWxzLgotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMucml2ZXIu
c2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5h
dGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsK
LWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbWJlZGRhYmxlOwotCi0vKioKLSAqIEhwZWlscHVu
a3RJZCBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVtYmVkZGFibGUKLXB1YmxpYyBjbGFz
cyBIcGVpbHB1bmt0SWQgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgewotCi0KLSAg
ICAgcHJpdmF0ZSBsb25nIGhwZWlsdW5naWQ7Ci0gICAgIHByaXZhdGUgaW50IHB1bmt0bnI7Ci0K
LSAgICBwdWJsaWMgSHBlaWxwdW5rdElkKCkgewotICAgIH0KLQotICAgIHB1YmxpYyBIcGVpbHB1
bmt0SWQobG9uZyBocGVpbHVuZ2lkLCBpbnQgcHVua3RucikgewotICAgICAgIHRoaXMuaHBlaWx1
bmdpZCA9M0QgaHBlaWx1bmdpZDsKLSAgICAgICB0aGlzLnB1bmt0bnIgPTNEIHB1bmt0bnI7Ci0g
ICAgfQotCi0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJIUEVJTFVOR0lEIiwgbnVsbGFibGU9M0Rm
YWxzZSwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPQo9M0QwKQotICAgIHB1YmxpYyBsb25nIGdldEhw
ZWlsdW5naWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmhwZWlsdW5naWQ7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0SHBlaWx1bmdpZChsb25nIGhwZWlsdW5naWQpIHsKLSAgICAgICAg
dGhpcy5ocGVpbHVuZ2lkID0zRCBocGVpbHVuZ2lkOwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIlBVTktUTlIiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q1LCBzY2FsZT0z
RDApCi0gICAgcHVibGljIGludCBnZXRQdW5rdG5yKCkgewotICAgICAgICByZXR1cm4gdGhpcy5w
dW5rdG5yOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFB1bmt0bnIoaW50IHB1bmt0bnIp
IHsKLSAgICAgICAgdGhpcy5wdW5rdG5yID0zRCBwdW5rdG5yOwotICAgIH0KLQotCi0gICBwdWJs
aWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG90aGVyKSB7Ci0gICAgICAgICBpZiAoICh0aGlzID0z
RD0zRCBvdGhlciApICkgcmV0dXJuIHRydWU7Ci0gICAgICAgICBpZiAoIChvdGhlciA9M0Q9M0Qg
bnVsbCApICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgaWYgKCAhKG90aGVyIGluc3RhbmNlb2Yg
SHBlaWxwdW5rdElkKSApIHJldHVybiBmYWxzZTsKLSAgICAgICAgIEhwZWlscHVua3RJZCBjYXN0
T3RoZXIgPTNEICggSHBlaWxwdW5rdElkICkgb3RoZXI7Ci0KLSAgICAgICAgIHJldHVybiAodGhp
cy5nZXRIcGVpbHVuZ2lkKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0SHBlaWx1bmdpZCgpKQotICYmICh0
aGlzLmdldFB1bmt0bnIoKT0zRD0zRGNhc3RPdGhlci5nZXRQdW5rdG5yKCkpOwotICAgfQotCi0g
ICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgewotICAgICAgICAgaW50IHJlc3VsdCA9M0QgMTc7Ci0K
LSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoaW50KSB0aGlzLmdldEhwZWlsdW5n
aWQoKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyB0aGlzLmdldFB1bmt0bnIo
KTsKLSAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci19CmRpZmYgLXIgODlkY2FhZTA4MDFj
IC1yIDZhNGJkY2NjZmE0ZCBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudD0K
cy9yaXZlci9zZWRkYi9tb2RlbC9IcGVpbHVuZy5qYXZhCi0tLSBhL2JhY2tlbmQvc3JjL21haW4v
amF2YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZlci9zZWRkYi9tb2RlbC9IcGVpbHVuZy5qYT0KdmEJ
VHVlIEphbiAxNiAxODoxMzo1NCAyMDE4ICswMTAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAw
MDowMDowMCAxOTcwICswMDAwCkBAIC0xLDQ3MSArMCwwIEBACi0vKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0K
dW5kZQotICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0gKgotICog
VGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMpCi0g
KiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCi0g
KiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFp
bHMuCi0gKi8KLQotcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2RlbDsK
LS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQu
MC5DUjEKLQotCi1pbXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7Ci1pbXBvcnQgamF2YS51dGls
LkRhdGU7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsK
LWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVu
Y2UuRW50aXR5OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsKLWltcG9ydCBq
YXZheC5wZXJzaXN0ZW5jZS5JZDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1u
OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk1hbnlUb09uZTsKLWltcG9ydCBqYXZheC5wZXJz
aXN0ZW5jZS5PbmVUb01hbnk7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7Ci1pbXBv
cnQgamF2YXgucGVyc2lzdGVuY2UuVGVtcG9yYWw7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2Uu
VGVtcG9yYWxUeXBlOwotCi0vKioKLSAqIEhwZWlsdW5nIGdlbmVyYXRlZCBieSBoYm0yamF2YQot
ICovCi1ARW50aXR5Ci1AVGFibGUobmFtZT0zRCJIUEVJTFVORyIKLSAgICAsc2NoZW1hPTNEIlNF
RERCIgotKQotcHVibGljIGNsYXNzIEhwZWlsdW5nICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFs
aXphYmxlIHsKLQotCi0gICAgIHByaXZhdGUgbG9uZyBocGVpbHVuZ2lkOwotICAgICBwcml2YXRl
IFN0YXRpb24gc3RhdGlvbjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGttOwotICAgICBwcml2
YXRlIERhdGUgZGF0dW07Ci0gICAgIHByaXZhdGUgU3RyaW5nIGdsd25hbWU7Ci0gICAgIHByaXZh
dGUgQmlnRGVjaW1hbCBnbHdob2VoZTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGJ1bGlhYnN0
OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgYnVsaWhvZWhlOwotICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgYnVsaWZ1c3M7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBidWxpcnVlY2tlbjsKLSAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGJ1cmVhYnN0OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
YnVyZWhvZWhlOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgYnVyZWZ1c3M7Ci0gICAgIHByaXZh
dGUgQmlnRGVjaW1hbCBidXJlcnVlY2tlbjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGZhaHJs
aWFic3Q7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBmYWhycmVhYnN0OwotICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgZmFocnRpZWY7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBhdXNibGlhYnN0
OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgYXVzYnJlYWJzdDsKLSAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIGFjaHNlYWJzdDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHRlaWx2b25hYnN0Owot
ICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdGVpbGJpc2Fic3Q7Ci0gICAgIHByaXZhdGUgQmlnRGVj
aW1hbCBobWFic3Q7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBsZ2tyZWNodHM7Ci0gICAgIHBy
aXZhdGUgQmlnRGVjaW1hbCBsZ2tob2NoOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgbGdraG9l
aGU7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCByZ2tyZWNodHM7Ci0gICAgIHByaXZhdGUgQmln
RGVjaW1hbCByZ2tob2NoOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcmdraG9laGU7Ci0gICAg
IHByaXZhdGUgU3RyaW5nIGJlbWVya3VuZzsKLSAgICAgcHJpdmF0ZSBEYXRlIGxhc3R1cGRhdGVk
OwotICAgICBwcml2YXRlIExvbmcgb2xkcHJmaWQ7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBt
aXR0ZWFic3Q7Ci0gICAgIHByaXZhdGUgU2V0PEhwZWlscHVua3Q+IGhwZWlscHVua3RzID0zRCBu
ZXcgSGFzaFNldDxIcGVpbHB1bmt0PigwKTsKLSAgICAgcHJpdmF0ZSBTZXQ8TWVzc3VuZz4gbWVz
c3VuZ3MgPTNEIG5ldyBIYXNoU2V0PE1lc3N1bmc+KDApOwotCi0gICAgcHVibGljIEhwZWlsdW5n
KCkgewotICAgIH0KLQotICAgIHB1YmxpYyBIcGVpbHVuZyhsb25nIGhwZWlsdW5naWQsIFN0YXRp
b24gc3RhdGlvbiwgQmlnRGVjaW1hbCBrbSwgRGF0ZSA9CmRhdHVtLCBEYXRlIGxhc3R1cGRhdGVk
KSB7Ci0gICAgICAgIHRoaXMuaHBlaWx1bmdpZCA9M0QgaHBlaWx1bmdpZDsKLSAgICAgICAgdGhp
cy5zdGF0aW9uID0zRCBzdGF0aW9uOwotICAgICAgICB0aGlzLmttID0zRCBrbTsKLSAgICAgICAg
dGhpcy5kYXR1bSA9M0QgZGF0dW07Ci0gICAgICAgIHRoaXMubGFzdHVwZGF0ZWQgPTNEIGxhc3R1
cGRhdGVkOwotICAgIH0KLSAgICBwdWJsaWMgSHBlaWx1bmcobG9uZyBocGVpbHVuZ2lkLCBTdGF0
aW9uIHN0YXRpb24sIEJpZ0RlY2ltYWwga20sIERhdGUgPQpkYXR1bSwgU3RyaW5nIGdsd25hbWUs
IEJpZ0RlY2ltYWwgZ2x3aG9laGUsIEJpZ0RlY2ltYWwgYnVsaWFic3QsIEJpZ0RlY2ltYWw9CiBi
dWxpaG9laGUsIEJpZ0RlY2ltYWwgYnVsaWZ1c3MsIEJpZ0RlY2ltYWwgYnVsaXJ1ZWNrZW4sIEJp
Z0RlY2ltYWwgYnVyZWFicz0KdCwgQmlnRGVjaW1hbCBidXJlaG9laGUsIEJpZ0RlY2ltYWwgYnVy
ZWZ1c3MsIEJpZ0RlY2ltYWwgYnVyZXJ1ZWNrZW4sIEJpZ0RlPQpjaW1hbCBmYWhybGlhYnN0LCBC
aWdEZWNpbWFsIGZhaHJyZWFic3QsIEJpZ0RlY2ltYWwgZmFocnRpZWYsIEJpZ0RlY2ltYWwgYXU9
CnNibGlhYnN0LCBCaWdEZWNpbWFsIGF1c2JyZWFic3QsIEJpZ0RlY2ltYWwgYWNoc2VhYnN0LCBC
aWdEZWNpbWFsIHRlaWx2b25hYj0Kc3QsIEJpZ0RlY2ltYWwgdGVpbGJpc2Fic3QsIEJpZ0RlY2lt
YWwgaG1hYnN0LCBCaWdEZWNpbWFsIGxna3JlY2h0cywgQmlnRGVjPQppbWFsIGxna2hvY2gsIEJp
Z0RlY2ltYWwgbGdraG9laGUsIEJpZ0RlY2ltYWwgcmdrcmVjaHRzLCBCaWdEZWNpbWFsIHJna2hv
Y2g9CiwgQmlnRGVjaW1hbCByZ2tob2VoZSwgU3RyaW5nIGJlbWVya3VuZywgRGF0ZSBsYXN0dXBk
YXRlZCwgTG9uZyBvbGRwcmZpZCwgQj0KaWdEZWNpbWFsIG1pdHRlYWJzdCwgU2V0PEhwZWlscHVu
a3Q+IGhwZWlscHVua3RzLCBTZXQ8TWVzc3VuZz4gbWVzc3VuZ3MpIHsKLSAgICAgICB0aGlzLmhw
ZWlsdW5naWQgPTNEIGhwZWlsdW5naWQ7Ci0gICAgICAgdGhpcy5zdGF0aW9uID0zRCBzdGF0aW9u
OwotICAgICAgIHRoaXMua20gPTNEIGttOwotICAgICAgIHRoaXMuZGF0dW0gPTNEIGRhdHVtOwot
ICAgICAgIHRoaXMuZ2x3bmFtZSA9M0QgZ2x3bmFtZTsKLSAgICAgICB0aGlzLmdsd2hvZWhlID0z
RCBnbHdob2VoZTsKLSAgICAgICB0aGlzLmJ1bGlhYnN0ID0zRCBidWxpYWJzdDsKLSAgICAgICB0
aGlzLmJ1bGlob2VoZSA9M0QgYnVsaWhvZWhlOwotICAgICAgIHRoaXMuYnVsaWZ1c3MgPTNEIGJ1
bGlmdXNzOwotICAgICAgIHRoaXMuYnVsaXJ1ZWNrZW4gPTNEIGJ1bGlydWVja2VuOwotICAgICAg
IHRoaXMuYnVyZWFic3QgPTNEIGJ1cmVhYnN0OwotICAgICAgIHRoaXMuYnVyZWhvZWhlID0zRCBi
dXJlaG9laGU7Ci0gICAgICAgdGhpcy5idXJlZnVzcyA9M0QgYnVyZWZ1c3M7Ci0gICAgICAgdGhp
cy5idXJlcnVlY2tlbiA9M0QgYnVyZXJ1ZWNrZW47Ci0gICAgICAgdGhpcy5mYWhybGlhYnN0ID0z
RCBmYWhybGlhYnN0OwotICAgICAgIHRoaXMuZmFocnJlYWJzdCA9M0QgZmFocnJlYWJzdDsKLSAg
ICAgICB0aGlzLmZhaHJ0aWVmID0zRCBmYWhydGllZjsKLSAgICAgICB0aGlzLmF1c2JsaWFic3Qg
PTNEIGF1c2JsaWFic3Q7Ci0gICAgICAgdGhpcy5hdXNicmVhYnN0ID0zRCBhdXNicmVhYnN0Owot
ICAgICAgIHRoaXMuYWNoc2VhYnN0ID0zRCBhY2hzZWFic3Q7Ci0gICAgICAgdGhpcy50ZWlsdm9u
YWJzdCA9M0QgdGVpbHZvbmFic3Q7Ci0gICAgICAgdGhpcy50ZWlsYmlzYWJzdCA9M0QgdGVpbGJp
c2Fic3Q7Ci0gICAgICAgdGhpcy5obWFic3QgPTNEIGhtYWJzdDsKLSAgICAgICB0aGlzLmxna3Jl
Y2h0cyA9M0QgbGdrcmVjaHRzOwotICAgICAgIHRoaXMubGdraG9jaCA9M0QgbGdraG9jaDsKLSAg
ICAgICB0aGlzLmxna2hvZWhlID0zRCBsZ2tob2VoZTsKLSAgICAgICB0aGlzLnJna3JlY2h0cyA9
M0QgcmdrcmVjaHRzOwotICAgICAgIHRoaXMucmdraG9jaCA9M0QgcmdraG9jaDsKLSAgICAgICB0
aGlzLnJna2hvZWhlID0zRCByZ2tob2VoZTsKLSAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVt
ZXJrdW5nOwotICAgICAgIHRoaXMubGFzdHVwZGF0ZWQgPTNEIGxhc3R1cGRhdGVkOwotICAgICAg
IHRoaXMub2xkcHJmaWQgPTNEIG9sZHByZmlkOwotICAgICAgIHRoaXMubWl0dGVhYnN0ID0zRCBt
aXR0ZWFic3Q7Ci0gICAgICAgdGhpcy5ocGVpbHB1bmt0cyA9M0QgaHBlaWxwdW5rdHM7Ci0gICAg
ICAgdGhpcy5tZXNzdW5ncyA9M0QgbWVzc3VuZ3M7Ci0gICAgfQotCi0gICAgIEBJZAotCi0KLSAg
ICBAQ29sdW1uKG5hbWU9M0QiSFBFSUxVTkdJRCIsIHVuaXF1ZT0zRHRydWUsIG51bGxhYmxlPTNE
ZmFsc2UsIHByZWNpc2lvPQpuPTNEMTEsIHNjYWxlPTNEMCkKLSAgICBwdWJsaWMgbG9uZyBnZXRI
cGVpbHVuZ2lkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5ocGVpbHVuZ2lkOwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldEhwZWlsdW5naWQobG9uZyBocGVpbHVuZ2lkKSB7Ci0gICAgICAg
IHRoaXMuaHBlaWx1bmdpZCA9M0QgaHBlaWx1bmdpZDsKLSAgICB9Ci0KLUBNYW55VG9PbmUoZmV0
Y2g9M0RGZXRjaFR5cGUuTEFaWSkKLSAgICBASm9pbkNvbHVtbihuYW1lPTNEIlNUQVRJT05JRCIs
IG51bGxhYmxlPTNEZmFsc2UpCi0gICAgcHVibGljIFN0YXRpb24gZ2V0U3RhdGlvbigpIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuc3RhdGlvbjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRT
dGF0aW9uKFN0YXRpb24gc3RhdGlvbikgewotICAgICAgICB0aGlzLnN0YXRpb24gPTNEIHN0YXRp
b247Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiS00iLCBudWxsYWJsZT0zRGZhbHNl
LCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0S20o
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmttOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dEttKEJpZ0RlY2ltYWwga20pIHsKLSAgICAgICAgdGhpcy5rbSA9M0Qga207Ci0gICAgfQotCi0g
ICAgQFRlbXBvcmFsKFRlbXBvcmFsVHlwZS5EQVRFKQotICAgIEBDb2x1bW4obmFtZT0zRCJEQVRV
TSIsIG51bGxhYmxlPTNEZmFsc2UsIGxlbmd0aD0zRDcpCi0gICAgcHVibGljIERhdGUgZ2V0RGF0
dW0oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmRhdHVtOwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldERhdHVtKERhdGUgZGF0dW0pIHsKLSAgICAgICAgdGhpcy5kYXR1bSA9M0QgZGF0dW07
Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiR0xXTkFNRSIsIGxlbmd0aD0zRDgpCi0g
ICAgcHVibGljIFN0cmluZyBnZXRHbHduYW1lKCkgewotICAgICAgICByZXR1cm4gdGhpcy5nbHdu
YW1lOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEdsd25hbWUoU3RyaW5nIGdsd25hbWUp
IHsKLSAgICAgICAgdGhpcy5nbHduYW1lID0zRCBnbHduYW1lOwotICAgIH0KLQotCi0gICAgQENv
bHVtbihuYW1lPTNEIkdMV0hPRUhFIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldEdsd2hvZWhlKCkgewotICAgICAgICByZXR1cm4gdGhpcy5nbHdo
b2VoZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRHbHdob2VoZShCaWdEZWNpbWFsIGds
d2hvZWhlKSB7Ci0gICAgICAgIHRoaXMuZ2x3aG9laGUgPTNEIGdsd2hvZWhlOwotICAgIH0KLQot
Ci0gICAgQENvbHVtbihuYW1lPTNEIkJVTElBQlNUIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0Qz
KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEJ1bGlhYnN0KCkgewotICAgICAgICByZXR1cm4g
dGhpcy5idWxpYWJzdDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRCdWxpYWJzdChCaWdE
ZWNpbWFsIGJ1bGlhYnN0KSB7Ci0gICAgICAgIHRoaXMuYnVsaWFic3QgPTNEIGJ1bGlhYnN0Owot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkJVTElIT0VIRSIsIHByZWNpc2lvbj0zRDgs
IHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRCdWxpaG9laGUoKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLmJ1bGlob2VoZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRC
dWxpaG9laGUoQmlnRGVjaW1hbCBidWxpaG9laGUpIHsKLSAgICAgICAgdGhpcy5idWxpaG9laGUg
PTNEIGJ1bGlob2VoZTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJCVUxJRlVTUyIs
IHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRCdWxp
ZnVzcygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYnVsaWZ1c3M7Ci0gICAgfQotCi0gICAgcHVi
bGljIHZvaWQgc2V0QnVsaWZ1c3MoQmlnRGVjaW1hbCBidWxpZnVzcykgewotICAgICAgICB0aGlz
LmJ1bGlmdXNzID0zRCBidWxpZnVzczsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJC
VUxJUlVFQ0tFTiIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVj
aW1hbCBnZXRCdWxpcnVlY2tlbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYnVsaXJ1ZWNrZW47
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QnVsaXJ1ZWNrZW4oQmlnRGVjaW1hbCBidWxp
cnVlY2tlbikgewotICAgICAgICB0aGlzLmJ1bGlydWVja2VuID0zRCBidWxpcnVlY2tlbjsKLSAg
ICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJCVVJFQUJTVCIsIHByZWNpc2lvbj0zRDgsIHNj
YWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRCdXJlYWJzdCgpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuYnVyZWFic3Q7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QnVyZWFi
c3QoQmlnRGVjaW1hbCBidXJlYWJzdCkgewotICAgICAgICB0aGlzLmJ1cmVhYnN0ID0zRCBidXJl
YWJzdDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJCVVJFSE9FSEUiLCBwcmVjaXNp
b249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0QnVyZWhvZWhlKCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5idXJlaG9laGU7Ci0gICAgfQotCi0gICAgcHVibGljIHZv
aWQgc2V0QnVyZWhvZWhlKEJpZ0RlY2ltYWwgYnVyZWhvZWhlKSB7Ci0gICAgICAgIHRoaXMuYnVy
ZWhvZWhlID0zRCBidXJlaG9laGU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQlVS
RUZVU1MiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0QnVyZWZ1c3MoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJ1cmVmdXNzOwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldEJ1cmVmdXNzKEJpZ0RlY2ltYWwgYnVyZWZ1c3MpIHsKLSAgICAg
ICAgdGhpcy5idXJlZnVzcyA9M0QgYnVyZWZ1c3M7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiQlVSRVJVRUNLRU4iLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGlj
IEJpZ0RlY2ltYWwgZ2V0QnVyZXJ1ZWNrZW4oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJ1cmVy
dWVja2VuOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEJ1cmVydWVja2VuKEJpZ0RlY2lt
YWwgYnVyZXJ1ZWNrZW4pIHsKLSAgICAgICAgdGhpcy5idXJlcnVlY2tlbiA9M0QgYnVyZXJ1ZWNr
ZW47Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRkFIUkxJQUJTVCIsIHByZWNpc2lv
bj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRGYWhybGlhYnN0KCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5mYWhybGlhYnN0OwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldEZhaHJsaWFic3QoQmlnRGVjaW1hbCBmYWhybGlhYnN0KSB7Ci0gICAgICAgIHRoaXMu
ZmFocmxpYWJzdCA9M0QgZmFocmxpYWJzdDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJGQUhSUkVBQlNUIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdE
ZWNpbWFsIGdldEZhaHJyZWFic3QoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmZhaHJyZWFic3Q7
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RmFocnJlYWJzdChCaWdEZWNpbWFsIGZhaHJy
ZWFic3QpIHsKLSAgICAgICAgdGhpcy5mYWhycmVhYnN0ID0zRCBmYWhycmVhYnN0OwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIkZBSFJUSUVGIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9
M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEZhaHJ0aWVmKCkgewotICAgICAgICByZXR1
cm4gdGhpcy5mYWhydGllZjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRGYWhydGllZihC
aWdEZWNpbWFsIGZhaHJ0aWVmKSB7Ci0gICAgICAgIHRoaXMuZmFocnRpZWYgPTNEIGZhaHJ0aWVm
OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkFVU0JMSUFCU1QiLCBwcmVjaXNpb249
M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0QXVzYmxpYWJzdCgpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuYXVzYmxpYWJzdDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXRBdXNibGlhYnN0KEJpZ0RlY2ltYWwgYXVzYmxpYWJzdCkgewotICAgICAgICB0aGlzLmF1
c2JsaWFic3QgPTNEIGF1c2JsaWFic3Q7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0Qi
QVVTQlJFQUJTVCIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVj
aW1hbCBnZXRBdXNicmVhYnN0KCkgewotICAgICAgICByZXR1cm4gdGhpcy5hdXNicmVhYnN0Owot
ICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEF1c2JyZWFic3QoQmlnRGVjaW1hbCBhdXNicmVh
YnN0KSB7Ci0gICAgICAgIHRoaXMuYXVzYnJlYWJzdCA9M0QgYXVzYnJlYWJzdDsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJBQ0hTRUFCU1QiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0z
RDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0QWNoc2VhYnN0KCkgewotICAgICAgICByZXR1
cm4gdGhpcy5hY2hzZWFic3Q7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QWNoc2VhYnN0
KEJpZ0RlY2ltYWwgYWNoc2VhYnN0KSB7Ci0gICAgICAgIHRoaXMuYWNoc2VhYnN0ID0zRCBhY2hz
ZWFic3Q7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVEVJTFZPTkFCU1QiLCBwcmVj
aXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VGVpbHZvbmFi
c3QoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRlaWx2b25hYnN0OwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldFRlaWx2b25hYnN0KEJpZ0RlY2ltYWwgdGVpbHZvbmFic3QpIHsKLSAgICAg
ICAgdGhpcy50ZWlsdm9uYWJzdCA9M0QgdGVpbHZvbmFic3Q7Ci0gICAgfQotCi0KLSAgICBAQ29s
dW1uKG5hbWU9M0QiVEVJTEJJU0FCU1QiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAg
cHVibGljIEJpZ0RlY2ltYWwgZ2V0VGVpbGJpc2Fic3QoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LnRlaWxiaXNhYnN0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFRlaWxiaXNhYnN0KEJp
Z0RlY2ltYWwgdGVpbGJpc2Fic3QpIHsKLSAgICAgICAgdGhpcy50ZWlsYmlzYWJzdCA9M0QgdGVp
bGJpc2Fic3Q7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiSE1BQlNUIiwgcHJlY2lz
aW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEhtYWJzdCgpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuaG1hYnN0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dEhtYWJzdChCaWdEZWNpbWFsIGhtYWJzdCkgewotICAgICAgICB0aGlzLmhtYWJzdCA9M0QgaG1h
YnN0OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkxHS1JFQ0hUUyIsIHByZWNpc2lv
bj0zRDExLCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TGdrcmVjaHRzKCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5sZ2tyZWNodHM7Ci0gICAgfQotCi0gICAgcHVibGljIHZv
aWQgc2V0TGdrcmVjaHRzKEJpZ0RlY2ltYWwgbGdrcmVjaHRzKSB7Ci0gICAgICAgIHRoaXMubGdr
cmVjaHRzID0zRCBsZ2tyZWNodHM7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTEdL
SE9DSCIsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0TGdraG9jaCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubGdraG9jaDsKLSAgICB9Ci0KLSAg
ICBwdWJsaWMgdm9pZCBzZXRMZ2tob2NoKEJpZ0RlY2ltYWwgbGdraG9jaCkgewotICAgICAgICB0
aGlzLmxna2hvY2ggPTNEIGxna2hvY2g7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0Qi
TEdLSE9FSEUiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2lt
YWwgZ2V0TGdraG9laGUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmxna2hvZWhlOwotICAgIH0K
LQotICAgIHB1YmxpYyB2b2lkIHNldExna2hvZWhlKEJpZ0RlY2ltYWwgbGdraG9laGUpIHsKLSAg
ICAgICAgdGhpcy5sZ2tob2VoZSA9M0QgbGdraG9laGU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiUkdLUkVDSFRTIiwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEMykKLSAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXRSZ2tyZWNodHMoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJna3Jl
Y2h0czsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSZ2tyZWNodHMoQmlnRGVjaW1hbCBy
Z2tyZWNodHMpIHsKLSAgICAgICAgdGhpcy5yZ2tyZWNodHMgPTNEIHJna3JlY2h0czsKLSAgICB9
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSR0tIT0NIIiwgcHJlY2lzaW9uPTNEMTEsIHNjYWxl
PTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSZ2tob2NoKCkgewotICAgICAgICByZXR1
cm4gdGhpcy5yZ2tob2NoOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJna2hvY2goQmln
RGVjaW1hbCByZ2tob2NoKSB7Ci0gICAgICAgIHRoaXMucmdraG9jaCA9M0QgcmdraG9jaDsKLSAg
ICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSR0tIT0VIRSIsIHByZWNpc2lvbj0zRDgsIHNj
YWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSZ2tob2VoZSgpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMucmdraG9laGU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UmdraG9l
aGUoQmlnRGVjaW1hbCByZ2tob2VoZSkgewotICAgICAgICB0aGlzLnJna2hvZWhlID0zRCByZ2to
b2VoZTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJCRU1FUktVTkciLCBsZW5ndGg9
M0QyNDApCi0gICAgcHVibGljIFN0cmluZyBnZXRCZW1lcmt1bmcoKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLmJlbWVya3VuZzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRCZW1lcmt1bmco
U3RyaW5nIGJlbWVya3VuZykgewotICAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5n
OwotICAgIH0KLQotICAgIEBUZW1wb3JhbChUZW1wb3JhbFR5cGUuREFURSkKLSAgICBAQ29sdW1u
KG5hbWU9M0QiTEFTVFVQREFURUQiLCBudWxsYWJsZT0zRGZhbHNlLCBsZW5ndGg9M0Q3KQotICAg
IHB1YmxpYyBEYXRlIGdldExhc3R1cGRhdGVkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5sYXN0
dXBkYXRlZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRMYXN0dXBkYXRlZChEYXRlIGxh
c3R1cGRhdGVkKSB7Ci0gICAgICAgIHRoaXMubGFzdHVwZGF0ZWQgPTNEIGxhc3R1cGRhdGVkOwot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk9MRFBSRklEIiwgcHJlY2lzaW9uPTNEMTEs
IHNjYWxlPTNEMCkKLSAgICBwdWJsaWMgTG9uZyBnZXRPbGRwcmZpZCgpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMub2xkcHJmaWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0T2xkcHJmaWQo
TG9uZyBvbGRwcmZpZCkgewotICAgICAgICB0aGlzLm9sZHByZmlkID0zRCBvbGRwcmZpZDsKLSAg
ICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNSVRURUFCU1QiLCBwcmVjaXNpb249M0Q4LCBz
Y2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWl0dGVhYnN0KCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5taXR0ZWFic3Q7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWl0
dGVhYnN0KEJpZ0RlY2ltYWwgbWl0dGVhYnN0KSB7Ci0gICAgICAgIHRoaXMubWl0dGVhYnN0ID0z
RCBtaXR0ZWFic3Q7Ci0gICAgfQotCi1AT25lVG9NYW55KGZldGNoPTNERmV0Y2hUeXBlLkxBWlks
IG1hcHBlZEJ5PTNEImhwZWlsdW5nIikKLSAgICBwdWJsaWMgU2V0PEhwZWlscHVua3Q+IGdldEhw
ZWlscHVua3RzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5ocGVpbHB1bmt0czsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRIcGVpbHB1bmt0cyhTZXQ8SHBlaWxwdW5rdD4gaHBlaWxwdW5r
dHMpIHsKLSAgICAgICAgdGhpcy5ocGVpbHB1bmt0cyA9M0QgaHBlaWxwdW5rdHM7Ci0gICAgfQot
Ci1AT25lVG9NYW55KGZldGNoPTNERmV0Y2hUeXBlLkxBWlksIG1hcHBlZEJ5PTNEImhwZWlsdW5n
IikKLSAgICBwdWJsaWMgU2V0PE1lc3N1bmc+IGdldE1lc3N1bmdzKCkgewotICAgICAgICByZXR1
cm4gdGhpcy5tZXNzdW5nczsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNZXNzdW5ncyhT
ZXQ8TWVzc3VuZz4gbWVzc3VuZ3MpIHsKLSAgICAgICAgdGhpcy5tZXNzdW5ncyA9M0QgbWVzc3Vu
Z3M7Ci0gICAgfQotfQpkaWZmIC1yIDg5ZGNhYWUwODAxYyAtciA2YTRiZGNjY2ZhNGQgYmFja2Vu
ZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMvcml2ZXIvc2VkZGIvbW9kZWwvTWVz
c3VuZy5qYXZhCi0tLSBhL2JhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50cy9y
aXZlci9zZWRkYi9tb2RlbC9NZXNzdW5nLmphdj0KYQlUdWUgSmFuIDE2IDE4OjEzOjU0IDIwMTgg
KzAxMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEs
MTAwMyArMCwwIEBACi0vKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVz
YW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQotICogU29mdHdhcmUgZW5naW5l
ZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0gKgotICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdh
cmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMpCi0gKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVU
RUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCi0gKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3
aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFpbHMuCi0gKi8KLQotcGFja2FnZSBvcmcu
ZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2RlbDsKLS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEy
IDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQuMC5DUjEKLQotCi1pbXBvcnQgamF2YS5t
YXRoLkJpZ0RlY2ltYWw7Ci1pbXBvcnQgamF2YS51dGlsLkRhdGU7Ci1pbXBvcnQgamF2YS51dGls
Lkhhc2hTZXQ7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5j
ZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OwotaW1wb3J0IGphdmF4
LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKLWlt
cG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3Rl
bmNlLk1hbnlUb09uZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5PbmVUb01hbnk7Ci1pbXBv
cnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGVt
cG9yYWw7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGVtcG9yYWxUeXBlOwotCi0vKioKLSAq
IE1lc3N1bmcgZ2VuZXJhdGVkIGJ5IGhibTJqYXZhCi0gKi8KLUBFbnRpdHkKLUBUYWJsZShuYW1l
PTNEIk1FU1NVTkciCi0gICAgLHNjaGVtYT0zRCJTRUREQiIKLSkKLXB1YmxpYyBjbGFzcyBNZXNz
dW5nICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotICAgICBwcml2YXRlIGxv
bmcgbWVzc3VuZ2lkOwotICAgICBwcml2YXRlIFN0YXRpb24gc3RhdGlvbjsKLSAgICAgcHJpdmF0
ZSBHc2llYnNhdHogZ3NpZWJzYXR6OwotICAgICBwcml2YXRlIEdmYWVuZ2VyIGdmYWVuZ2VyOwot
ICAgICBwcml2YXRlIEhwZWlsdW5nIGhwZWlsdW5nOwotICAgICBwcml2YXRlIERhdGUgZGF0dW07
Ci0gICAgIHByaXZhdGUgTG9uZyBtcGVpbHVuZ2lkOwotICAgICBwcml2YXRlIGludCBtZXNzbnI7
Ci0gICAgIHByaXZhdGUgU3RyaW5nIGZndWU7Ci0gICAgIHByaXZhdGUgRGF0ZSB1aHJ2b247Ci0g
ICAgIHByaXZhdGUgRGF0ZSB1aHJiaXM7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB3c3BjbTsK
LSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIFFCcGVnZWw7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1h
bCB3c3BubjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGllOwotICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgd3RlbXA7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBnYnJlaXRlOwotICAgICBwcml2
YXRlIEJpZ0RlY2ltYWwgZ2JyZWl0ZXZvbjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGdicmVp
dGViaXM7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB0Z2VzY2hpZWJlOwotICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgdHNhbmQ7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB0c2Nod2ViOwotICAg
ICBwcml2YXRlIEJpZ0RlY2ltYWwgY3NjaHdlYjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHVm
ZXJsaWFic3Q7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB1ZmVycmVhYnN0OwotICAgICBwcml2
YXRlIEJpZ0RlY2ltYWwgcTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIEFIcGVpbDsKLSAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIEFNcGVpbDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGI7Ci0g
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCBobTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHZtOwot
ICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdnNvaGxlOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
dGF1OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdGF1djsKLSAgICAgcHJpdmF0ZSBCaWdEZWNp
bWFsIHRlaWxROwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdGVpbEFIcGVpbDsKLSAgICAgcHJp
dmF0ZSBCaWdEZWNpbWFsIHRlaWxBTXBlaWw7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB0ZWls
QjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHRlaWxIbTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNp
bWFsIHRlaWxWbTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHRlaWxWc29obGU7Ci0gICAgIHBy
aXZhdGUgQmlnRGVjaW1hbCB0ZWlsVGF1OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdGVpbFRh
dXY7Ci0gICAgIHByaXZhdGUgQm9vbGVhbiBtaXR0ZWx0eXA7Ci0gICAgIHByaXZhdGUgQmlnRGVj
aW1hbCBkbTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHNrOwotICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgc287Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB1OwotICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgZDkwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDg0OwotICAgICBwcml2YXRlIEJp
Z0RlY2ltYWwgZDgwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDc1OwotICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgZDcwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDYwOwotICAgICBwcml2
YXRlIEJpZ0RlY2ltYWwgZDUwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDQwOwotICAgICBw
cml2YXRlIEJpZ0RlY2ltYWwgZDMwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDI1OwotICAg
ICBwcml2YXRlIEJpZ0RlY2ltYWwgZDIwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDE2Owot
ICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDEwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZG1p
bjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGR1cmNoZG1pbjsKLSAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIGRtYXg7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkdXJjaGRtYXg7Ci0gICAgIHBy
aXZhdGUgaW50IE5HZXNjaGllYjsKLSAgICAgcHJpdmF0ZSBpbnQgTlZpZWxwa3Q7Ci0gICAgIHBy
aXZhdGUgRGF0ZSBzeXNEYXRlOwotICAgICBwcml2YXRlIFN0cmluZyBiZW1lcmt1bmc7Ci0gICAg
IHByaXZhdGUgRGF0ZSBsYXN0dXBkYXRlZDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGttOwot
ICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZ2xvdGFic3RvZmZzZXQ7Ci0gICAgIHByaXZhdGUgQmln
RGVjaW1hbCBzbG90YWJzdG9mZnNldDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGdicmVpdGV2
b25saW5rczsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGdicmVpdGViaXNsaW5rczsKLSAgICAg
cHJpdmF0ZSBCb29sZWFuIGdsb3R1ZmVyYWJzdGlzdHZvbmxpbmtzOwotICAgICBwcml2YXRlIEJv
b2xlYW4gc2xvdHVmZXJhYnN0aXN0dm9ubGlua3M7Ci0gICAgIHByaXZhdGUgU2V0PEdsb3RyZWNo
dGU+IGdsb3RyZWNodGVzID0zRCBuZXcgSGFzaFNldDxHbG90cmVjaHRlPigwKTsKLSAgICAgcHJp
dmF0ZSBTZXQ8U2xvdHJlY2h0ZT4gc2xvdHJlY2h0ZXMgPTNEIG5ldyBIYXNoU2V0PFNsb3RyZWNo
dGU+KDApOwotCi0gICAgcHVibGljIE1lc3N1bmcoKSB7Ci0gICAgfQotCi0KLSAgICBwdWJsaWMg
TWVzc3VuZyhsb25nIG1lc3N1bmdpZCwgU3RhdGlvbiBzdGF0aW9uLCBEYXRlIGRhdHVtLCBpbnQg
bWVzc25yPQosIGludCBOR2VzY2hpZWIsIGludCBOVmllbHBrdCwgRGF0ZSBsYXN0dXBkYXRlZCwg
QmlnRGVjaW1hbCBnbG90YWJzdG9mZnNldCw9CiBCaWdEZWNpbWFsIHNsb3RhYnN0b2Zmc2V0KSB7
Ci0gICAgICAgIHRoaXMubWVzc3VuZ2lkID0zRCBtZXNzdW5naWQ7Ci0gICAgICAgIHRoaXMuc3Rh
dGlvbiA9M0Qgc3RhdGlvbjsKLSAgICAgICAgdGhpcy5kYXR1bSA9M0QgZGF0dW07Ci0gICAgICAg
IHRoaXMubWVzc25yID0zRCBtZXNzbnI7Ci0gICAgICAgIHRoaXMuTkdlc2NoaWViID0zRCBOR2Vz
Y2hpZWI7Ci0gICAgICAgIHRoaXMuTlZpZWxwa3QgPTNEIE5WaWVscGt0OwotICAgICAgICB0aGlz
Lmxhc3R1cGRhdGVkID0zRCBsYXN0dXBkYXRlZDsKLSAgICAgICAgdGhpcy5nbG90YWJzdG9mZnNl
dCA9M0QgZ2xvdGFic3RvZmZzZXQ7Ci0gICAgICAgIHRoaXMuc2xvdGFic3RvZmZzZXQgPTNEIHNs
b3RhYnN0b2Zmc2V0OwotICAgIH0KLSAgICBwdWJsaWMgTWVzc3VuZyhsb25nIG1lc3N1bmdpZCwg
U3RhdGlvbiBzdGF0aW9uLCBHc2llYnNhdHogZ3NpZWJzYXR6LCBHPQpmYWVuZ2VyIGdmYWVuZ2Vy
LCBIcGVpbHVuZyBocGVpbHVuZywgRGF0ZSBkYXR1bSwgTG9uZyBtcGVpbHVuZ2lkLCBpbnQgbWVz
c249CnIsIFN0cmluZyBmZ3VlLCBEYXRlIHVocnZvbiwgRGF0ZSB1aHJiaXMsIEJpZ0RlY2ltYWwg
d3NwY20sIEJpZ0RlY2ltYWwgUUJwZT0KZ2VsLCBCaWdEZWNpbWFsIHdzcG5uLCBCaWdEZWNpbWFs
IGllLCBCaWdEZWNpbWFsIHd0ZW1wLCBCaWdEZWNpbWFsIGdicmVpdGUsPQogQmlnRGVjaW1hbCBn
YnJlaXRldm9uLCBCaWdEZWNpbWFsIGdicmVpdGViaXMsIEJpZ0RlY2ltYWwgdGdlc2NoaWViZSwg
QmlnRGU9CmNpbWFsIHRzYW5kLCBCaWdEZWNpbWFsIHRzY2h3ZWIsIEJpZ0RlY2ltYWwgY3NjaHdl
YiwgQmlnRGVjaW1hbCB1ZmVybGlhYnN0LD0KIEJpZ0RlY2ltYWwgdWZlcnJlYWJzdCwgQmlnRGVj
aW1hbCBxLCBCaWdEZWNpbWFsIEFIcGVpbCwgQmlnRGVjaW1hbCBBTXBlaWwsPQogQmlnRGVjaW1h
bCBiLCBCaWdEZWNpbWFsIGhtLCBCaWdEZWNpbWFsIHZtLCBCaWdEZWNpbWFsIHZzb2hsZSwgQmln
RGVjaW1hbCA9CnRhdSwgQmlnRGVjaW1hbCB0YXV2LCBCaWdEZWNpbWFsIHRlaWxRLCBCaWdEZWNp
bWFsIHRlaWxBSHBlaWwsIEJpZ0RlY2ltYWwgdD0KZWlsQU1wZWlsLCBCaWdEZWNpbWFsIHRlaWxC
LCBCaWdEZWNpbWFsIHRlaWxIbSwgQmlnRGVjaW1hbCB0ZWlsVm0sIEJpZ0RlY2ltPQphbCB0ZWls
VnNvaGxlLCBCaWdEZWNpbWFsIHRlaWxUYXUsIEJpZ0RlY2ltYWwgdGVpbFRhdXYsIEJvb2xlYW4g
bWl0dGVsdHlwLCA9CkJpZ0RlY2ltYWwgZG0sIEJpZ0RlY2ltYWwgc2ssIEJpZ0RlY2ltYWwgc28s
IEJpZ0RlY2ltYWwgdSwgQmlnRGVjaW1hbCBkOTAsID0KQmlnRGVjaW1hbCBkODQsIEJpZ0RlY2lt
YWwgZDgwLCBCaWdEZWNpbWFsIGQ3NSwgQmlnRGVjaW1hbCBkNzAsIEJpZ0RlY2ltYWwgPQpkNjAs
IEJpZ0RlY2ltYWwgZDUwLCBCaWdEZWNpbWFsIGQ0MCwgQmlnRGVjaW1hbCBkMzAsIEJpZ0RlY2lt
YWwgZDI1LCBCaWdEZWM9CmltYWwgZDIwLCBCaWdEZWNpbWFsIGQxNiwgQmlnRGVjaW1hbCBkMTAs
IEJpZ0RlY2ltYWwgZG1pbiwgQmlnRGVjaW1hbCBkdXJjaD0KZG1pbiwgQmlnRGVjaW1hbCBkbWF4
LCBCaWdEZWNpbWFsIGR1cmNoZG1heCwgaW50IE5HZXNjaGllYiwgaW50IE5WaWVscGt0LCBEPQph
dGUgc3lzRGF0ZSwgU3RyaW5nIGJlbWVya3VuZywgRGF0ZSBsYXN0dXBkYXRlZCwgQmlnRGVjaW1h
bCBrbSwgQmlnRGVjaW1hbCA9Cmdsb3RhYnN0b2Zmc2V0LCBCaWdEZWNpbWFsIHNsb3RhYnN0b2Zm
c2V0LCBCaWdEZWNpbWFsIGdicmVpdGV2b25saW5rcywgQmlnRD0KZWNpbWFsIGdicmVpdGViaXNs
aW5rcywgQm9vbGVhbiBnbG90dWZlcmFic3Rpc3R2b25saW5rcywgQm9vbGVhbiBzbG90dWZlcmFi
PQpzdGlzdHZvbmxpbmtzLCBTZXQ8R2xvdHJlY2h0ZT4gZ2xvdHJlY2h0ZXMsIFNldDxTbG90cmVj
aHRlPiBzbG90cmVjaHRlcykgewotICAgICAgIHRoaXMubWVzc3VuZ2lkID0zRCBtZXNzdW5naWQ7
Ci0gICAgICAgdGhpcy5zdGF0aW9uID0zRCBzdGF0aW9uOwotICAgICAgIHRoaXMuZ3NpZWJzYXR6
ID0zRCBnc2llYnNhdHo7Ci0gICAgICAgdGhpcy5nZmFlbmdlciA9M0QgZ2ZhZW5nZXI7Ci0gICAg
ICAgdGhpcy5ocGVpbHVuZyA9M0QgaHBlaWx1bmc7Ci0gICAgICAgdGhpcy5kYXR1bSA9M0QgZGF0
dW07Ci0gICAgICAgdGhpcy5tcGVpbHVuZ2lkID0zRCBtcGVpbHVuZ2lkOwotICAgICAgIHRoaXMu
bWVzc25yID0zRCBtZXNzbnI7Ci0gICAgICAgdGhpcy5mZ3VlID0zRCBmZ3VlOwotICAgICAgIHRo
aXMudWhydm9uID0zRCB1aHJ2b247Ci0gICAgICAgdGhpcy51aHJiaXMgPTNEIHVocmJpczsKLSAg
ICAgICB0aGlzLndzcGNtID0zRCB3c3BjbTsKLSAgICAgICB0aGlzLlFCcGVnZWwgPTNEIFFCcGVn
ZWw7Ci0gICAgICAgdGhpcy53c3BubiA9M0Qgd3Nwbm47Ci0gICAgICAgdGhpcy5pZSA9M0QgaWU7
Ci0gICAgICAgdGhpcy53dGVtcCA9M0Qgd3RlbXA7Ci0gICAgICAgdGhpcy5nYnJlaXRlID0zRCBn
YnJlaXRlOwotICAgICAgIHRoaXMuZ2JyZWl0ZXZvbiA9M0QgZ2JyZWl0ZXZvbjsKLSAgICAgICB0
aGlzLmdicmVpdGViaXMgPTNEIGdicmVpdGViaXM7Ci0gICAgICAgdGhpcy50Z2VzY2hpZWJlID0z
RCB0Z2VzY2hpZWJlOwotICAgICAgIHRoaXMudHNhbmQgPTNEIHRzYW5kOwotICAgICAgIHRoaXMu
dHNjaHdlYiA9M0QgdHNjaHdlYjsKLSAgICAgICB0aGlzLmNzY2h3ZWIgPTNEIGNzY2h3ZWI7Ci0g
ICAgICAgdGhpcy51ZmVybGlhYnN0ID0zRCB1ZmVybGlhYnN0OwotICAgICAgIHRoaXMudWZlcnJl
YWJzdCA9M0QgdWZlcnJlYWJzdDsKLSAgICAgICB0aGlzLnEgPTNEIHE7Ci0gICAgICAgdGhpcy5B
SHBlaWwgPTNEIEFIcGVpbDsKLSAgICAgICB0aGlzLkFNcGVpbCA9M0QgQU1wZWlsOwotICAgICAg
IHRoaXMuYiA9M0QgYjsKLSAgICAgICB0aGlzLmhtID0zRCBobTsKLSAgICAgICB0aGlzLnZtID0z
RCB2bTsKLSAgICAgICB0aGlzLnZzb2hsZSA9M0QgdnNvaGxlOwotICAgICAgIHRoaXMudGF1ID0z
RCB0YXU7Ci0gICAgICAgdGhpcy50YXV2ID0zRCB0YXV2OwotICAgICAgIHRoaXMudGVpbFEgPTNE
IHRlaWxROwotICAgICAgIHRoaXMudGVpbEFIcGVpbCA9M0QgdGVpbEFIcGVpbDsKLSAgICAgICB0
aGlzLnRlaWxBTXBlaWwgPTNEIHRlaWxBTXBlaWw7Ci0gICAgICAgdGhpcy50ZWlsQiA9M0QgdGVp
bEI7Ci0gICAgICAgdGhpcy50ZWlsSG0gPTNEIHRlaWxIbTsKLSAgICAgICB0aGlzLnRlaWxWbSA9
M0QgdGVpbFZtOwotICAgICAgIHRoaXMudGVpbFZzb2hsZSA9M0QgdGVpbFZzb2hsZTsKLSAgICAg
ICB0aGlzLnRlaWxUYXUgPTNEIHRlaWxUYXU7Ci0gICAgICAgdGhpcy50ZWlsVGF1diA9M0QgdGVp
bFRhdXY7Ci0gICAgICAgdGhpcy5taXR0ZWx0eXAgPTNEIG1pdHRlbHR5cDsKLSAgICAgICB0aGlz
LmRtID0zRCBkbTsKLSAgICAgICB0aGlzLnNrID0zRCBzazsKLSAgICAgICB0aGlzLnNvID0zRCBz
bzsKLSAgICAgICB0aGlzLnUgPTNEIHU7Ci0gICAgICAgdGhpcy5kOTAgPTNEIGQ5MDsKLSAgICAg
ICB0aGlzLmQ4NCA9M0QgZDg0OwotICAgICAgIHRoaXMuZDgwID0zRCBkODA7Ci0gICAgICAgdGhp
cy5kNzUgPTNEIGQ3NTsKLSAgICAgICB0aGlzLmQ3MCA9M0QgZDcwOwotICAgICAgIHRoaXMuZDYw
ID0zRCBkNjA7Ci0gICAgICAgdGhpcy5kNTAgPTNEIGQ1MDsKLSAgICAgICB0aGlzLmQ0MCA9M0Qg
ZDQwOwotICAgICAgIHRoaXMuZDMwID0zRCBkMzA7Ci0gICAgICAgdGhpcy5kMjUgPTNEIGQyNTsK
LSAgICAgICB0aGlzLmQyMCA9M0QgZDIwOwotICAgICAgIHRoaXMuZDE2ID0zRCBkMTY7Ci0gICAg
ICAgdGhpcy5kMTAgPTNEIGQxMDsKLSAgICAgICB0aGlzLmRtaW4gPTNEIGRtaW47Ci0gICAgICAg
dGhpcy5kdXJjaGRtaW4gPTNEIGR1cmNoZG1pbjsKLSAgICAgICB0aGlzLmRtYXggPTNEIGRtYXg7
Ci0gICAgICAgdGhpcy5kdXJjaGRtYXggPTNEIGR1cmNoZG1heDsKLSAgICAgICB0aGlzLk5HZXNj
aGllYiA9M0QgTkdlc2NoaWViOwotICAgICAgIHRoaXMuTlZpZWxwa3QgPTNEIE5WaWVscGt0Owot
ICAgICAgIHRoaXMuc3lzRGF0ZSA9M0Qgc3lzRGF0ZTsKLSAgICAgICB0aGlzLmJlbWVya3VuZyA9
M0QgYmVtZXJrdW5nOwotICAgICAgIHRoaXMubGFzdHVwZGF0ZWQgPTNEIGxhc3R1cGRhdGVkOwot
ICAgICAgIHRoaXMua20gPTNEIGttOwotICAgICAgIHRoaXMuZ2xvdGFic3RvZmZzZXQgPTNEIGds
b3RhYnN0b2Zmc2V0OwotICAgICAgIHRoaXMuc2xvdGFic3RvZmZzZXQgPTNEIHNsb3RhYnN0b2Zm
c2V0OwotICAgICAgIHRoaXMuZ2JyZWl0ZXZvbmxpbmtzID0zRCBnYnJlaXRldm9ubGlua3M7Ci0g
ICAgICAgdGhpcy5nYnJlaXRlYmlzbGlua3MgPTNEIGdicmVpdGViaXNsaW5rczsKLSAgICAgICB0
aGlzLmdsb3R1ZmVyYWJzdGlzdHZvbmxpbmtzID0zRCBnbG90dWZlcmFic3Rpc3R2b25saW5rczsK
LSAgICAgICB0aGlzLnNsb3R1ZmVyYWJzdGlzdHZvbmxpbmtzID0zRCBzbG90dWZlcmFic3Rpc3R2
b25saW5rczsKLSAgICAgICB0aGlzLmdsb3RyZWNodGVzID0zRCBnbG90cmVjaHRlczsKLSAgICAg
ICB0aGlzLnNsb3RyZWNodGVzID0zRCBzbG90cmVjaHRlczsKLSAgICB9Ci0KLSAgICAgQElkCi0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJNRVNTVU5HSUQiLCB1bmlxdWU9M0R0cnVlLCBudWxsYWJs
ZT0zRGZhbHNlLCBwcmVjaXNpb249Cj0zRDExLCBzY2FsZT0zRDApCi0gICAgcHVibGljIGxvbmcg
Z2V0TWVzc3VuZ2lkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5tZXNzdW5naWQ7Ci0gICAgfQot
Ci0gICAgcHVibGljIHZvaWQgc2V0TWVzc3VuZ2lkKGxvbmcgbWVzc3VuZ2lkKSB7Ci0gICAgICAg
IHRoaXMubWVzc3VuZ2lkID0zRCBtZXNzdW5naWQ7Ci0gICAgfQotCi1ATWFueVRvT25lKGZldGNo
PTNERmV0Y2hUeXBlLkxBWlkpCi0gICAgQEpvaW5Db2x1bW4obmFtZT0zRCJTVEFUSU9OSUQiLCBu
dWxsYWJsZT0zRGZhbHNlKQotICAgIHB1YmxpYyBTdGF0aW9uIGdldFN0YXRpb24oKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLnN0YXRpb247Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U3Rh
dGlvbihTdGF0aW9uIHN0YXRpb24pIHsKLSAgICAgICAgdGhpcy5zdGF0aW9uID0zRCBzdGF0aW9u
OwotICAgIH0KLQotQE1hbnlUb09uZShmZXRjaD0zREZldGNoVHlwZS5MQVpZKQotICAgIEBKb2lu
Q29sdW1uKG5hbWU9M0QiR1NJRUJTQVRaSUQiKQotICAgIHB1YmxpYyBHc2llYnNhdHogZ2V0R3Np
ZWJzYXR6KCkgewotICAgICAgICByZXR1cm4gdGhpcy5nc2llYnNhdHo7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0R3NpZWJzYXR6KEdzaWVic2F0eiBnc2llYnNhdHopIHsKLSAgICAgICAg
dGhpcy5nc2llYnNhdHogPTNEIGdzaWVic2F0ejsKLSAgICB9Ci0KLUBNYW55VG9PbmUoZmV0Y2g9
M0RGZXRjaFR5cGUuTEFaWSkKLSAgICBASm9pbkNvbHVtbihuYW1lPTNEIkdGQUVOR0VSSUQiKQot
ICAgIHB1YmxpYyBHZmFlbmdlciBnZXRHZmFlbmdlcigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
Z2ZhZW5nZXI7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0R2ZhZW5nZXIoR2ZhZW5nZXIg
Z2ZhZW5nZXIpIHsKLSAgICAgICAgdGhpcy5nZmFlbmdlciA9M0QgZ2ZhZW5nZXI7Ci0gICAgfQot
Ci1ATWFueVRvT25lKGZldGNoPTNERmV0Y2hUeXBlLkxBWlkpCi0gICAgQEpvaW5Db2x1bW4obmFt
ZT0zRCJIUEVJTFVOR0lEIikKLSAgICBwdWJsaWMgSHBlaWx1bmcgZ2V0SHBlaWx1bmcoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLmhwZWlsdW5nOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dEhwZWlsdW5nKEhwZWlsdW5nIGhwZWlsdW5nKSB7Ci0gICAgICAgIHRoaXMuaHBlaWx1bmcgPTNE
IGhwZWlsdW5nOwotICAgIH0KLQotICAgIEBUZW1wb3JhbChUZW1wb3JhbFR5cGUuREFURSkKLSAg
ICBAQ29sdW1uKG5hbWU9M0QiREFUVU0iLCBudWxsYWJsZT0zRGZhbHNlLCBsZW5ndGg9M0Q3KQot
ICAgIHB1YmxpYyBEYXRlIGdldERhdHVtKCkgewotICAgICAgICByZXR1cm4gdGhpcy5kYXR1bTsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREYXR1bShEYXRlIGRhdHVtKSB7Ci0gICAgICAg
IHRoaXMuZGF0dW0gPTNEIGRhdHVtOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1Q
RUlMVU5HSUQiLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBMb25nIGdl
dE1wZWlsdW5naWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1wZWlsdW5naWQ7Ci0gICAgfQot
Ci0gICAgcHVibGljIHZvaWQgc2V0TXBlaWx1bmdpZChMb25nIG1wZWlsdW5naWQpIHsKLSAgICAg
ICAgdGhpcy5tcGVpbHVuZ2lkID0zRCBtcGVpbHVuZ2lkOwotICAgIH0KLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIk1FU1NOUiIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDUsIHNjYWxl
PTNEMCkKLSAgICBwdWJsaWMgaW50IGdldE1lc3NucigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
bWVzc25yOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1lc3NucihpbnQgbWVzc25yKSB7
Ci0gICAgICAgIHRoaXMubWVzc25yID0zRCBtZXNzbnI7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiRkdVRSIsIGxlbmd0aD0zRDEwKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0Rmd1ZSgp
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZmd1ZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXRGZ3VlKFN0cmluZyBmZ3VlKSB7Ci0gICAgICAgIHRoaXMuZmd1ZSA9M0QgZmd1ZTsKLSAgICB9
Ci0KLSAgICBAVGVtcG9yYWwoVGVtcG9yYWxUeXBlLkRBVEUpCi0gICAgQENvbHVtbihuYW1lPTNE
IlVIUlZPTiIsIGxlbmd0aD0zRDcpCi0gICAgcHVibGljIERhdGUgZ2V0VWhydm9uKCkgewotICAg
ICAgICByZXR1cm4gdGhpcy51aHJ2b247Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VWhy
dm9uKERhdGUgdWhydm9uKSB7Ci0gICAgICAgIHRoaXMudWhydm9uID0zRCB1aHJ2b247Ci0gICAg
fQotCi0gICAgQFRlbXBvcmFsKFRlbXBvcmFsVHlwZS5EQVRFKQotICAgIEBDb2x1bW4obmFtZT0z
RCJVSFJCSVMiLCBsZW5ndGg9M0Q3KQotICAgIHB1YmxpYyBEYXRlIGdldFVocmJpcygpIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMudWhyYmlzOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFVo
cmJpcyhEYXRlIHVocmJpcykgewotICAgICAgICB0aGlzLnVocmJpcyA9M0QgdWhyYmlzOwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIldTUENNIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9
M0QxKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFdzcGNtKCkgewotICAgICAgICByZXR1cm4g
dGhpcy53c3BjbTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRXc3BjbShCaWdEZWNpbWFs
IHdzcGNtKSB7Ci0gICAgICAgIHRoaXMud3NwY20gPTNEIHdzcGNtOwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIlFfQlBFR0VMIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldFFCcGVnZWwoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLlFC
cGVnZWw7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UUJwZWdlbChCaWdEZWNpbWFsIFFC
cGVnZWwpIHsKLSAgICAgICAgdGhpcy5RQnBlZ2VsID0zRCBRQnBlZ2VsOwotICAgIH0KLQotCi0g
ICAgQENvbHVtbihuYW1lPTNEIldTUE5OIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldFdzcG5uKCkgewotICAgICAgICByZXR1cm4gdGhpcy53c3Bu
bjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRXc3BubihCaWdEZWNpbWFsIHdzcG5uKSB7
Ci0gICAgICAgIHRoaXMud3Nwbm4gPTNEIHdzcG5uOwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIklFIiwgcHJlY2lzaW9uPTNENiwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNp
bWFsIGdldEllKCkgewotICAgICAgICByZXR1cm4gdGhpcy5pZTsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRJZShCaWdEZWNpbWFsIGllKSB7Ci0gICAgICAgIHRoaXMuaWUgPTNEIGllOwot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIldURU1QIiwgcHJlY2lzaW9uPTNENCwgc2Nh
bGU9M0QxKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFd0ZW1wKCkgewotICAgICAgICByZXR1
cm4gdGhpcy53dGVtcDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRXdGVtcChCaWdEZWNp
bWFsIHd0ZW1wKSB7Ci0gICAgICAgIHRoaXMud3RlbXAgPTNEIHd0ZW1wOwotICAgIH0KLQotCi0g
ICAgQENvbHVtbihuYW1lPTNEIkdCUkVJVEUiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0g
ICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0R2JyZWl0ZSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
Z2JyZWl0ZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRHYnJlaXRlKEJpZ0RlY2ltYWwg
Z2JyZWl0ZSkgewotICAgICAgICB0aGlzLmdicmVpdGUgPTNEIGdicmVpdGU7Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiR0JSRUlURVZPTiIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNE
MykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRHYnJlaXRldm9uKCkgewotICAgICAgICByZXR1
cm4gdGhpcy5nYnJlaXRldm9uOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEdicmVpdGV2
b24oQmlnRGVjaW1hbCBnYnJlaXRldm9uKSB7Ci0gICAgICAgIHRoaXMuZ2JyZWl0ZXZvbiA9M0Qg
Z2JyZWl0ZXZvbjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJHQlJFSVRFQklTIiwg
cHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEdicmVp
dGViaXMoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmdicmVpdGViaXM7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0R2JyZWl0ZWJpcyhCaWdEZWNpbWFsIGdicmVpdGViaXMpIHsKLSAgICAg
ICAgdGhpcy5nYnJlaXRlYmlzID0zRCBnYnJlaXRlYmlzOwotICAgIH0KLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIlRHRVNDSElFQkUiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVi
bGljIEJpZ0RlY2ltYWwgZ2V0VGdlc2NoaWViZSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudGdl
c2NoaWViZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUZ2VzY2hpZWJlKEJpZ0RlY2lt
YWwgdGdlc2NoaWViZSkgewotICAgICAgICB0aGlzLnRnZXNjaGllYmUgPTNEIHRnZXNjaGllYmU7
Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVFNBTkQiLCBwcmVjaXNpb249M0Q5LCBz
Y2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VHNhbmQoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLnRzYW5kOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFRzYW5kKEJpZ0Rl
Y2ltYWwgdHNhbmQpIHsKLSAgICAgICAgdGhpcy50c2FuZCA9M0QgdHNhbmQ7Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiVFNDSFdFQiIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykK
LSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRUc2Nod2ViKCkgewotICAgICAgICByZXR1cm4gdGhp
cy50c2Nod2ViOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFRzY2h3ZWIoQmlnRGVjaW1h
bCB0c2Nod2ViKSB7Ci0gICAgICAgIHRoaXMudHNjaHdlYiA9M0QgdHNjaHdlYjsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJDU0NIV0VCIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0Qz
KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldENzY2h3ZWIoKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLmNzY2h3ZWI7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0Q3NjaHdlYihCaWdEZWNp
bWFsIGNzY2h3ZWIpIHsKLSAgICAgICAgdGhpcy5jc2Nod2ViID0zRCBjc2Nod2ViOwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIlVGRVJMSUFCU1QiLCBwcmVjaXNpb249M0Q4LCBzY2Fs
ZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VWZlcmxpYWJzdCgpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMudWZlcmxpYWJzdDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRVZmVy
bGlhYnN0KEJpZ0RlY2ltYWwgdWZlcmxpYWJzdCkgewotICAgICAgICB0aGlzLnVmZXJsaWFic3Qg
PTNEIHVmZXJsaWFic3Q7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVUZFUlJFQUJT
VCIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRV
ZmVycmVhYnN0KCkgewotICAgICAgICByZXR1cm4gdGhpcy51ZmVycmVhYnN0OwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldFVmZXJyZWFic3QoQmlnRGVjaW1hbCB1ZmVycmVhYnN0KSB7Ci0g
ICAgICAgIHRoaXMudWZlcnJlYWJzdCA9M0QgdWZlcnJlYWJzdDsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJRIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBC
aWdEZWNpbWFsIGdldFEoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnE7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0UShCaWdEZWNpbWFsIHEpIHsKLSAgICAgICAgdGhpcy5xID0zRCBxOwot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkFfSFBFSUwiLCBwcmVjaXNpb249M0Q2LCBz
Y2FsZT0zRDEpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0QUhwZWlsKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5BSHBlaWw7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QUhwZWlsKEJp
Z0RlY2ltYWwgQUhwZWlsKSB7Ci0gICAgICAgIHRoaXMuQUhwZWlsID0zRCBBSHBlaWw7Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQV9NUEVJTCIsIHByZWNpc2lvbj0zRDYsIHNjYWxl
PTNEMSkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRBTXBlaWwoKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLkFNcGVpbDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRBTXBlaWwoQmlnRGVj
aW1hbCBBTXBlaWwpIHsKLSAgICAgICAgdGhpcy5BTXBlaWwgPTNEIEFNcGVpbDsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJCIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldEIoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmI7Ci0gICAg
fQotCi0gICAgcHVibGljIHZvaWQgc2V0QihCaWdEZWNpbWFsIGIpIHsKLSAgICAgICAgdGhpcy5i
ID0zRCBiOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkhNIiwgcHJlY2lzaW9uPTNE
OCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEhtKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5obTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRIbShCaWdEZWNpbWFs
IGhtKSB7Ci0gICAgICAgIHRoaXMuaG0gPTNEIGhtOwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIlZNIiwgcHJlY2lzaW9uPTNENiwgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNp
bWFsIGdldFZtKCkgewotICAgICAgICByZXR1cm4gdGhpcy52bTsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRWbShCaWdEZWNpbWFsIHZtKSB7Ci0gICAgICAgIHRoaXMudm0gPTNEIHZtOwot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlZTT0hMRSIsIHByZWNpc2lvbj0zRDYsIHNj
YWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRWc29obGUoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLnZzb2hsZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRWc29obGUoQmln
RGVjaW1hbCB2c29obGUpIHsKLSAgICAgICAgdGhpcy52c29obGUgPTNEIHZzb2hsZTsKLSAgICB9
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJUQVUiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDQp
Ci0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VGF1KCkgewotICAgICAgICByZXR1cm4gdGhpcy50
YXU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VGF1KEJpZ0RlY2ltYWwgdGF1KSB7Ci0g
ICAgICAgIHRoaXMudGF1ID0zRCB0YXU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0Qi
VEFVViIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNENikKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXRUYXV2KCkgewotICAgICAgICByZXR1cm4gdGhpcy50YXV2OwotICAgIH0KLQotICAgIHB1Ymxp
YyB2b2lkIHNldFRhdXYoQmlnRGVjaW1hbCB0YXV2KSB7Ci0gICAgICAgIHRoaXMudGF1diA9M0Qg
dGF1djsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJURUlMX1EiLCBwcmVjaXNpb249
M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VGVpbFEoKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLnRlaWxROwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFRlaWxR
KEJpZ0RlY2ltYWwgdGVpbFEpIHsKLSAgICAgICAgdGhpcy50ZWlsUSA9M0QgdGVpbFE7Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVEVJTF9BX0hQRUlMIiwgcHJlY2lzaW9uPTNENiwg
c2NhbGU9M0QxKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFRlaWxBSHBlaWwoKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLnRlaWxBSHBlaWw7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0
VGVpbEFIcGVpbChCaWdEZWNpbWFsIHRlaWxBSHBlaWwpIHsKLSAgICAgICAgdGhpcy50ZWlsQUhw
ZWlsID0zRCB0ZWlsQUhwZWlsOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlRFSUxf
QV9NUEVJTCIsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNEMSkKLSAgICBwdWJsaWMgQmlnRGVjaW1h
bCBnZXRUZWlsQU1wZWlsKCkgewotICAgICAgICByZXR1cm4gdGhpcy50ZWlsQU1wZWlsOwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFRlaWxBTXBlaWwoQmlnRGVjaW1hbCB0ZWlsQU1wZWls
KSB7Ci0gICAgICAgIHRoaXMudGVpbEFNcGVpbCA9M0QgdGVpbEFNcGVpbDsKLSAgICB9Ci0KLQot
ICAgIEBDb2x1bW4obmFtZT0zRCJURUlMX0IiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0g
ICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VGVpbEIoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRl
aWxCOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFRlaWxCKEJpZ0RlY2ltYWwgdGVpbEIp
IHsKLSAgICAgICAgdGhpcy50ZWlsQiA9M0QgdGVpbEI7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiVEVJTF9ITSIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMg
QmlnRGVjaW1hbCBnZXRUZWlsSG0oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRlaWxIbTsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUZWlsSG0oQmlnRGVjaW1hbCB0ZWlsSG0pIHsKLSAg
ICAgICAgdGhpcy50ZWlsSG0gPTNEIHRlaWxIbTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFt
ZT0zRCJURUlMX1ZNIiwgcHJlY2lzaW9uPTNENiwgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdE
ZWNpbWFsIGdldFRlaWxWbSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudGVpbFZtOwotICAgIH0K
LQotICAgIHB1YmxpYyB2b2lkIHNldFRlaWxWbShCaWdEZWNpbWFsIHRlaWxWbSkgewotICAgICAg
ICB0aGlzLnRlaWxWbSA9M0QgdGVpbFZtOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNE
IlRFSUxfVlNPSExFIiwgcHJlY2lzaW9uPTNENiwgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdE
ZWNpbWFsIGdldFRlaWxWc29obGUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRlaWxWc29obGU7
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VGVpbFZzb2hsZShCaWdEZWNpbWFsIHRlaWxW
c29obGUpIHsKLSAgICAgICAgdGhpcy50ZWlsVnNvaGxlID0zRCB0ZWlsVnNvaGxlOwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIlRFSUxfVEFVIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9
M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFRlaWxUYXUoKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLnRlaWxUYXU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VGVpbFRhdShCaWdE
ZWNpbWFsIHRlaWxUYXUpIHsKLSAgICAgICAgdGhpcy50ZWlsVGF1ID0zRCB0ZWlsVGF1OwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlRFSUxfVEFVViIsIHByZWNpc2lvbj0zRDksIHNj
YWxlPTNENikKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRUZWlsVGF1digpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMudGVpbFRhdXY7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VGVpbFRh
dXYoQmlnRGVjaW1hbCB0ZWlsVGF1dikgewotICAgICAgICB0aGlzLnRlaWxUYXV2ID0zRCB0ZWls
VGF1djsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNSVRURUxUWVAiLCBwcmVjaXNp
b249M0QxLCBzY2FsZT0zRDApCi0gICAgcHVibGljIEJvb2xlYW4gZ2V0TWl0dGVsdHlwKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5taXR0ZWx0eXA7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0TWl0dGVsdHlwKEJvb2xlYW4gbWl0dGVsdHlwKSB7Ci0gICAgICAgIHRoaXMubWl0dGVsdHlw
ID0zRCBtaXR0ZWx0eXA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRE0iLCBwcmVj
aXNpb249M0Q3LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RG0oKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLmRtOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldERtKEJp
Z0RlY2ltYWwgZG0pIHsKLSAgICAgICAgdGhpcy5kbSA9M0QgZG07Ci0gICAgfQotCi0KLSAgICBA
Q29sdW1uKG5hbWU9M0QiU0siLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGlj
IEJpZ0RlY2ltYWwgZ2V0U2soKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnNrOwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldFNrKEJpZ0RlY2ltYWwgc2spIHsKLSAgICAgICAgdGhpcy5zayA9
M0Qgc2s7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiU08iLCBwcmVjaXNpb249M0Q4
LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0U28oKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLnNvOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNvKEJpZ0RlY2ltYWwg
c28pIHsKLSAgICAgICAgdGhpcy5zbyA9M0Qgc287Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiVSIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1h
bCBnZXRVKCkgewotICAgICAgICByZXR1cm4gdGhpcy51OwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldFUoQmlnRGVjaW1hbCB1KSB7Ci0gICAgICAgIHRoaXMudSA9M0QgdTsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJEOTAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0g
ICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDkwKCkgewotICAgICAgICByZXR1cm4gdGhpcy5kOTA7
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RDkwKEJpZ0RlY2ltYWwgZDkwKSB7Ci0gICAg
ICAgIHRoaXMuZDkwID0zRCBkOTA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDg0
IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQ4
NCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDg0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lk
IHNldEQ4NChCaWdEZWNpbWFsIGQ4NCkgewotICAgICAgICB0aGlzLmQ4NCA9M0QgZDg0OwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQ4MCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNE
NCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREODAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LmQ4MDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREODAoQmlnRGVjaW1hbCBkODApIHsK
LSAgICAgICAgdGhpcy5kODAgPTNEIGQ4MDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJENzUiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0RDc1KCkgewotICAgICAgICByZXR1cm4gdGhpcy5kNzU7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0RDc1KEJpZ0RlY2ltYWwgZDc1KSB7Ci0gICAgICAgIHRoaXMuZDc1ID0zRCBkNzU7
Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDcwIiwgcHJlY2lzaW9uPTNENywgc2Nh
bGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQ3MCgpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuZDcwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQ3MChCaWdEZWNpbWFsIGQ3
MCkgewotICAgICAgICB0aGlzLmQ3MCA9M0QgZDcwOwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIkQ2MCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVj
aW1hbCBnZXRENjAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQ2MDsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRENjAoQmlnRGVjaW1hbCBkNjApIHsKLSAgICAgICAgdGhpcy5kNjAgPTNE
IGQ2MDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJENTAiLCBwcmVjaXNpb249M0Q3
LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDUwKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5kNTA7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RDUwKEJpZ0RlY2lt
YWwgZDUwKSB7Ci0gICAgICAgIHRoaXMuZDUwID0zRCBkNTA7Ci0gICAgfQotCi0KLSAgICBAQ29s
dW1uKG5hbWU9M0QiRDQwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBC
aWdEZWNpbWFsIGdldEQ0MCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDQwOwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldEQ0MChCaWdEZWNpbWFsIGQ0MCkgewotICAgICAgICB0aGlzLmQ0
MCA9M0QgZDQwOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQzMCIsIHByZWNpc2lv
bj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREMzAoKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLmQzMDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREMzAoQmln
RGVjaW1hbCBkMzApIHsKLSAgICAgICAgdGhpcy5kMzAgPTNEIGQzMDsKLSAgICB9Ci0KLQotICAg
IEBDb2x1bW4obmFtZT0zRCJEMjUiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVi
bGljIEJpZ0RlY2ltYWwgZ2V0RDI1KCkgewotICAgICAgICByZXR1cm4gdGhpcy5kMjU7Ci0gICAg
fQotCi0gICAgcHVibGljIHZvaWQgc2V0RDI1KEJpZ0RlY2ltYWwgZDI1KSB7Ci0gICAgICAgIHRo
aXMuZDI1ID0zRCBkMjU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDIwIiwgcHJl
Y2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQyMCgpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuZDIwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQy
MChCaWdEZWNpbWFsIGQyMCkgewotICAgICAgICB0aGlzLmQyMCA9M0QgZDIwOwotICAgIH0KLQot
Ci0gICAgQENvbHVtbihuYW1lPTNEIkQxNiIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAg
ICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREMTYoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQxNjsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREMTYoQmlnRGVjaW1hbCBkMTYpIHsKLSAgICAg
ICAgdGhpcy5kMTYgPTNEIGQxNjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJEMTAi
LCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDEw
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5kMTA7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0RDEwKEJpZ0RlY2ltYWwgZDEwKSB7Ci0gICAgICAgIHRoaXMuZDEwID0zRCBkMTA7Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRE1JTiIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNE
NCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREbWluKCkgewotICAgICAgICByZXR1cm4gdGhp
cy5kbWluOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldERtaW4oQmlnRGVjaW1hbCBkbWlu
KSB7Ci0gICAgICAgIHRoaXMuZG1pbiA9M0QgZG1pbjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4o
bmFtZT0zRCJEVVJDSERNSU4iLCBwcmVjaXNpb249M0Q2LCBzY2FsZT0zRDMpCi0gICAgcHVibGlj
IEJpZ0RlY2ltYWwgZ2V0RHVyY2hkbWluKCkgewotICAgICAgICByZXR1cm4gdGhpcy5kdXJjaGRt
aW47Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RHVyY2hkbWluKEJpZ0RlY2ltYWwgZHVy
Y2hkbWluKSB7Ci0gICAgICAgIHRoaXMuZHVyY2hkbWluID0zRCBkdXJjaGRtaW47Ci0gICAgfQot
Ci0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRE1BWCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNEMykK
LSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREbWF4KCkgewotICAgICAgICByZXR1cm4gdGhpcy5k
bWF4OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldERtYXgoQmlnRGVjaW1hbCBkbWF4KSB7
Ci0gICAgICAgIHRoaXMuZG1heCA9M0QgZG1heDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFt
ZT0zRCJEVVJDSERNQVgiLCBwcmVjaXNpb249M0Q2LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0RHVyY2hkbWF4KCkgewotICAgICAgICByZXR1cm4gdGhpcy5kdXJjaGRtYXg7
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RHVyY2hkbWF4KEJpZ0RlY2ltYWwgZHVyY2hk
bWF4KSB7Ci0gICAgICAgIHRoaXMuZHVyY2hkbWF4ID0zRCBkdXJjaGRtYXg7Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiTl9HRVNDSElFQiIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNp
c2lvbj0zRDUsIHNjYWxlPTNEPQowKQotICAgIHB1YmxpYyBpbnQgZ2V0Tkdlc2NoaWViKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5OR2VzY2hpZWI7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0Tkdlc2NoaWViKGludCBOR2VzY2hpZWIpIHsKLSAgICAgICAgdGhpcy5OR2VzY2hpZWIgPTNE
IE5HZXNjaGllYjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJOX1ZJRUxQS1QiLCBu
dWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q1LCBzY2FsZT0zRDApCi0gICAgcHVibGljIGlu
dCBnZXROVmllbHBrdCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuTlZpZWxwa3Q7Ci0gICAgfQot
Ci0gICAgcHVibGljIHZvaWQgc2V0TlZpZWxwa3QoaW50IE5WaWVscGt0KSB7Ci0gICAgICAgIHRo
aXMuTlZpZWxwa3QgPTNEIE5WaWVscGt0OwotICAgIH0KLQotICAgIEBUZW1wb3JhbChUZW1wb3Jh
bFR5cGUuREFURSkKLSAgICBAQ29sdW1uKG5hbWU9M0QiU1lTX0RBVEUiLCBsZW5ndGg9M0Q3KQot
ICAgIHB1YmxpYyBEYXRlIGdldFN5c0RhdGUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnN5c0Rh
dGU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U3lzRGF0ZShEYXRlIHN5c0RhdGUpIHsK
LSAgICAgICAgdGhpcy5zeXNEYXRlID0zRCBzeXNEYXRlOwotICAgIH0KLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIkJFTUVSS1VORyIsIGxlbmd0aD0zRDI0MCkKLSAgICBwdWJsaWMgU3RyaW5nIGdl
dEJlbWVya3VuZygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYmVtZXJrdW5nOwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldEJlbWVya3VuZyhTdHJpbmcgYmVtZXJrdW5nKSB7Ci0gICAgICAg
IHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7Ci0gICAgfQotCi0gICAgQFRlbXBvcmFsKFRl
bXBvcmFsVHlwZS5EQVRFKQotICAgIEBDb2x1bW4obmFtZT0zRCJMQVNUVVBEQVRFRCIsIG51bGxh
YmxlPTNEZmFsc2UsIGxlbmd0aD0zRDcpCi0gICAgcHVibGljIERhdGUgZ2V0TGFzdHVwZGF0ZWQo
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmxhc3R1cGRhdGVkOwotICAgIH0KLQotICAgIHB1Ymxp
YyB2b2lkIHNldExhc3R1cGRhdGVkKERhdGUgbGFzdHVwZGF0ZWQpIHsKLSAgICAgICAgdGhpcy5s
YXN0dXBkYXRlZCA9M0QgbGFzdHVwZGF0ZWQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiS00iLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0S20oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmttOwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldEttKEJpZ0RlY2ltYWwga20pIHsKLSAgICAgICAgdGhpcy5rbSA9M0Qga207Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiR0xPVEFCU1RPRkZTRVQiLCBudWxsYWJsZT0zRGZh
bHNlLCBwcmVjaXNpb249M0Q4LCBzY2FsPQplPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXRHbG90YWJzdG9mZnNldCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ2xvdGFic3RvZmZzZXQ7
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0R2xvdGFic3RvZmZzZXQoQmlnRGVjaW1hbCBn
bG90YWJzdG9mZnNldCkgewotICAgICAgICB0aGlzLmdsb3RhYnN0b2Zmc2V0ID0zRCBnbG90YWJz
dG9mZnNldDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJTTE9UQUJTVE9GRlNFVCIs
IG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDgsIHNjYWw9CmU9M0QzKQotICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldFNsb3RhYnN0b2Zmc2V0KCkgewotICAgICAgICByZXR1cm4gdGhpcy5z
bG90YWJzdG9mZnNldDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTbG90YWJzdG9mZnNl
dChCaWdEZWNpbWFsIHNsb3RhYnN0b2Zmc2V0KSB7Ci0gICAgICAgIHRoaXMuc2xvdGFic3RvZmZz
ZXQgPTNEIHNsb3RhYnN0b2Zmc2V0OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkdC
UkVJVEVWT05MSU5LUyIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmln
RGVjaW1hbCBnZXRHYnJlaXRldm9ubGlua3MoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmdicmVp
dGV2b25saW5rczsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRHYnJlaXRldm9ubGlua3Mo
QmlnRGVjaW1hbCBnYnJlaXRldm9ubGlua3MpIHsKLSAgICAgICAgdGhpcy5nYnJlaXRldm9ubGlu
a3MgPTNEIGdicmVpdGV2b25saW5rczsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJH
QlJFSVRFQklTTElOS1MiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0R2JyZWl0ZWJpc2xpbmtzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5nYnJl
aXRlYmlzbGlua3M7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0R2JyZWl0ZWJpc2xpbmtz
KEJpZ0RlY2ltYWwgZ2JyZWl0ZWJpc2xpbmtzKSB7Ci0gICAgICAgIHRoaXMuZ2JyZWl0ZWJpc2xp
bmtzID0zRCBnYnJlaXRlYmlzbGlua3M7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0Qi
R0xPVFVGRVJBQlNUSVNUVk9OTElOS1MiLCBwcmVjaXNpb249M0QxLCBzY2FsZT0zRDApCi0gICAg
cHVibGljIEJvb2xlYW4gZ2V0R2xvdHVmZXJhYnN0aXN0dm9ubGlua3MoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLmdsb3R1ZmVyYWJzdGlzdHZvbmxpbmtzOwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldEdsb3R1ZmVyYWJzdGlzdHZvbmxpbmtzKEJvb2xlYW4gZ2xvdHVmZXJhYnN0aXN0dm9u
bGlua3M9CikgewotICAgICAgICB0aGlzLmdsb3R1ZmVyYWJzdGlzdHZvbmxpbmtzID0zRCBnbG90
dWZlcmFic3Rpc3R2b25saW5rczsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJTTE9U
VUZFUkFCU1RJU1RWT05MSU5LUyIsIHByZWNpc2lvbj0zRDEsIHNjYWxlPTNEMCkKLSAgICBwdWJs
aWMgQm9vbGVhbiBnZXRTbG90dWZlcmFic3Rpc3R2b25saW5rcygpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuc2xvdHVmZXJhYnN0aXN0dm9ubGlua3M7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0U2xvdHVmZXJhYnN0aXN0dm9ubGlua3MoQm9vbGVhbiBzbG90dWZlcmFic3Rpc3R2b25saW5r
cz0KKSB7Ci0gICAgICAgIHRoaXMuc2xvdHVmZXJhYnN0aXN0dm9ubGlua3MgPTNEIHNsb3R1ZmVy
YWJzdGlzdHZvbmxpbmtzOwotICAgIH0KLQotQE9uZVRvTWFueShmZXRjaD0zREZldGNoVHlwZS5M
QVpZLCBtYXBwZWRCeT0zRCJtZXNzdW5nIikKLSAgICBwdWJsaWMgU2V0PEdsb3RyZWNodGU+IGdl
dEdsb3RyZWNodGVzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5nbG90cmVjaHRlczsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRHbG90cmVjaHRlcyhTZXQ8R2xvdHJlY2h0ZT4gZ2xvdHJl
Y2h0ZXMpIHsKLSAgICAgICAgdGhpcy5nbG90cmVjaHRlcyA9M0QgZ2xvdHJlY2h0ZXM7Ci0gICAg
fQotCi1AT25lVG9NYW55KGZldGNoPTNERmV0Y2hUeXBlLkxBWlksIG1hcHBlZEJ5PTNEIm1lc3N1
bmciKQotICAgIHB1YmxpYyBTZXQ8U2xvdHJlY2h0ZT4gZ2V0U2xvdHJlY2h0ZXMoKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLnNsb3RyZWNodGVzOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dFNsb3RyZWNodGVzKFNldDxTbG90cmVjaHRlPiBzbG90cmVjaHRlcykgewotICAgICAgICB0aGlz
LnNsb3RyZWNodGVzID0zRCBzbG90cmVjaHRlczsKLSAgICB9Ci19CmRpZmYgLXIgODlkY2FhZTA4
MDFjIC1yIDZhNGJkY2NjZmE0ZCBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVu
dD0Kcy9yaXZlci9zZWRkYi9tb2RlbC9NZXNzdW5nbG90Y291bnQuamF2YQotLS0gYS9iYWNrZW5k
L3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvTWVzc3Vu
Z2xvdGM9Cm91bnQuamF2YQlUdWUgSmFuIDE2IDE4OjEzOjU0IDIwMTggKzAxMDAKKysrIC9kZXYv
bnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsNTMgKzAsMCBAQAotLyog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3Ig
R2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRp
b24gR21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUg
QUdQTCAoPj0zRHYzKQotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEg
Q2hlY2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRz
IFJpdmVyIGZvciBkZXRhaWxzLgotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMucml2
ZXIuc2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJl
cm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJp
YnV0ZU92ZXJyaWRlOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0ZU92ZXJyaWRl
czsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuRW1iZWRkZWRJZDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7Ci1pbXBv
cnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7Ci0KLS8qKgotICogTWVzc3VuZ2xvdGNvdW50IGdl
bmVyYXRlZCBieSBoYm0yamF2YQotICovCi1ARW50aXR5Ci1AVGFibGUobmFtZT0zRCJNRVNTVU5H
TE9UQ09VTlQiCi0gICAgLHNjaGVtYT0zRCJTRUREQiIKLSkKLXB1YmxpYyBjbGFzcyBNZXNzdW5n
bG90Y291bnQgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgewotCi0KLSAgICAgcHJp
dmF0ZSBNZXNzdW5nbG90Y291bnRJZCBpZDsKLQotICAgIHB1YmxpYyBNZXNzdW5nbG90Y291bnQo
KSB7Ci0gICAgfQotCi0gICAgcHVibGljIE1lc3N1bmdsb3Rjb3VudChNZXNzdW5nbG90Y291bnRJ
ZCBpZCkgewotICAgICAgIHRoaXMuaWQgPTNEIGlkOwotICAgIH0KLQotICAgICBARW1iZWRkZWRJ
ZAotCi0KLSAgICBAQXR0cmlidXRlT3ZlcnJpZGVzKCB7Ci0gICAgICAgIEBBdHRyaWJ1dGVPdmVy
cmlkZShuYW1lPTNEIm1lc3N1bmdpZCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNRT0KU1NV
TkdJRCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDApICksCi0g
ICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImdsb3Rjb3VudCIsIGNvbHVtbj0zREBD
b2x1bW4obmFtZT0zRCJHTD0KT1RDT1VOVCIsIHByZWNpc2lvbj0zRDIyLCBzY2FsZT0zRDApICks
Ci0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInNsb3Rjb3VudCIsIGNvbHVtbj0z
REBDb2x1bW4obmFtZT0zRCJTTD0KT1RDT1VOVCIsIHByZWNpc2lvbj0zRDIyLCBzY2FsZT0zRDAp
ICkgfSApCi0gICAgcHVibGljIE1lc3N1bmdsb3Rjb3VudElkIGdldElkKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5pZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRJZChNZXNzdW5nbG90
Y291bnRJZCBpZCkgewotICAgICAgICB0aGlzLmlkID0zRCBpZDsKLSAgICB9Ci19CmRpZmYgLXIg
ODlkY2FhZTA4MDFjIC1yIDZhNGJkY2NjZmE0ZCBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2Rp
dmU0ZWxlbWVudD0Kcy9yaXZlci9zZWRkYi9tb2RlbC9NZXNzdW5nbG90Y291bnRJZC5qYXZhCi0t
LSBhL2JhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZlci9zZWRkYi9t
b2RlbC9NZXNzdW5nbG90Yz0Kb3VudElkLmphdmEJVHVlIEphbiAxNiAxODoxMzo1NCAyMDE4ICsw
MTAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDky
ICswLDAgQEAKLS8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0
YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCi0gKiBTb2Z0d2FyZSBlbmdpbmVlcmlu
ZyBieSBJbnRldmF0aW9uIEdtYkgKLSAqCi0gKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1
bmRlciB0aGUgR05VIEFHUEwgKD49M0R2MykKLSAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkg
Tk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUKLSAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGgg
RGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy4KLSAqLwotCi1wYWNrYWdlIG9yZy5kaXZl
NGVsZW1lbnRzLnJpdmVyLnNlZGRiLm1vZGVsOwotLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6
MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQotCi0KLWltcG9ydCBqYXZhLm1hdGgu
QmlnRGVjaW1hbDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2
YXgucGVyc2lzdGVuY2UuRW1iZWRkYWJsZTsKLQotLyoqCi0gKiBNZXNzdW5nbG90Y291bnRJZCBn
ZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVtYmVkZGFibGUKLXB1YmxpYyBjbGFzcyBNZXNz
dW5nbG90Y291bnRJZCAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7Ci0KLQotICAg
ICBwcml2YXRlIGxvbmcgbWVzc3VuZ2lkOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZ2xvdGNv
dW50OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgc2xvdGNvdW50OwotCi0gICAgcHVibGljIE1l
c3N1bmdsb3Rjb3VudElkKCkgewotICAgIH0KLQotCi0gICAgcHVibGljIE1lc3N1bmdsb3Rjb3Vu
dElkKGxvbmcgbWVzc3VuZ2lkKSB7Ci0gICAgICAgIHRoaXMubWVzc3VuZ2lkID0zRCBtZXNzdW5n
aWQ7Ci0gICAgfQotICAgIHB1YmxpYyBNZXNzdW5nbG90Y291bnRJZChsb25nIG1lc3N1bmdpZCwg
QmlnRGVjaW1hbCBnbG90Y291bnQsIEJpZ0RlY2k9Cm1hbCBzbG90Y291bnQpIHsKLSAgICAgICB0
aGlzLm1lc3N1bmdpZCA9M0QgbWVzc3VuZ2lkOwotICAgICAgIHRoaXMuZ2xvdGNvdW50ID0zRCBn
bG90Y291bnQ7Ci0gICAgICAgdGhpcy5zbG90Y291bnQgPTNEIHNsb3Rjb3VudDsKLSAgICB9Ci0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1FU1NVTkdJRCIsIG51bGxhYmxlPTNEZmFsc2UsIHBy
ZWNpc2lvbj0zRDExLCBzY2FsZT0zRD0KMCkKLSAgICBwdWJsaWMgbG9uZyBnZXRNZXNzdW5naWQo
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1lc3N1bmdpZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRNZXNzdW5naWQobG9uZyBtZXNzdW5naWQpIHsKLSAgICAgICAgdGhpcy5tZXNzdW5n
aWQgPTNEIG1lc3N1bmdpZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJHTE9UQ09V
TlQiLCBwcmVjaXNpb249M0QyMiwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdl
dEdsb3Rjb3VudCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ2xvdGNvdW50OwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldEdsb3Rjb3VudChCaWdEZWNpbWFsIGdsb3Rjb3VudCkgewotICAg
ICAgICB0aGlzLmdsb3Rjb3VudCA9M0QgZ2xvdGNvdW50OwotICAgIH0KLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIlNMT1RDT1VOVCIsIHByZWNpc2lvbj0zRDIyLCBzY2FsZT0zRDApCi0gICAgcHVi
bGljIEJpZ0RlY2ltYWwgZ2V0U2xvdGNvdW50KCkgewotICAgICAgICByZXR1cm4gdGhpcy5zbG90
Y291bnQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U2xvdGNvdW50KEJpZ0RlY2ltYWwg
c2xvdGNvdW50KSB7Ci0gICAgICAgIHRoaXMuc2xvdGNvdW50ID0zRCBzbG90Y291bnQ7Ci0gICAg
fQotCi0KLSAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb3RoZXIpIHsKLSAgICAgICAg
IGlmICggKHRoaXMgPTNEPTNEIG90aGVyICkgKSByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIGlmICgg
KG90aGVyID0zRD0zRCBudWxsICkgKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICBpZiAoICEob3Ro
ZXIgaW5zdGFuY2VvZiBNZXNzdW5nbG90Y291bnRJZCkgKSByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICBNZXNzdW5nbG90Y291bnRJZCBjYXN0T3RoZXIgPTNEICggTWVzc3VuZ2xvdGNvdW50SWQgKSBv
dGhlcjsKLQotICAgICAgICAgcmV0dXJuICh0aGlzLmdldE1lc3N1bmdpZCgpPTNEPTNEY2FzdE90
aGVyLmdldE1lc3N1bmdpZCgpKQotICYmICggKHRoaXMuZ2V0R2xvdGNvdW50KCk9M0Q9M0RjYXN0
T3RoZXIuZ2V0R2xvdGNvdW50KCkpIHx8ICggdGhpcy5nZXRHbG89CnRjb3VudCgpIT0zRG51bGwg
JiYgY2FzdE90aGVyLmdldEdsb3Rjb3VudCgpIT0zRG51bGwgJiYgdGhpcy5nZXRHbG90Y291bnQo
KT0KLmVxdWFscyhjYXN0T3RoZXIuZ2V0R2xvdGNvdW50KCkpICkgKQotICYmICggKHRoaXMuZ2V0
U2xvdGNvdW50KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0U2xvdGNvdW50KCkpIHx8ICggdGhpcy5nZXRT
bG89CnRjb3VudCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFNsb3Rjb3VudCgpIT0zRG51bGwg
JiYgdGhpcy5nZXRTbG90Y291bnQoKT0KLmVxdWFscyhjYXN0T3RoZXIuZ2V0U2xvdGNvdW50KCkp
ICkgKTsKLSAgIH0KLQotICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKLSAgICAgICAgIGludCBy
ZXN1bHQgPTNEIDE3OwotCi0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKGludCkg
dGhpcy5nZXRNZXNzdW5naWQoKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAo
IGdldEdsb3Rjb3VudCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuPQpnZXRHbG90Y291bnQoKS5o
YXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRTbG90
Y291bnQoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLj0KZ2V0U2xvdGNvdW50KCkuaGFzaENvZGUo
KSApOwotICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLX0KZGlmZiAtciA4OWRjYWFlMDgw
MWMgLXIgNmE0YmRjY2NmYTRkIGJhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50
PQpzL3JpdmVyL3NlZGRiL21vZGVsL01lc3N1bmdzdGEuamF2YQotLS0gYS9iYWNrZW5kL3NyYy9t
YWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvTWVzc3VuZ3N0YS49
CmphdmEJVHVlIEphbiAxNiAxODoxMzo1NCAyMDE4ICswMTAwCisrKyAvZGV2L251bGwJVGh1IEph
biAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDEzMCArMCwwIEBACi0vKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRz
c2Vyaz0KdW5kZQotICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0g
KgotICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNE
djMpCi0gKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQg
dGhlCi0gKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9y
IGRldGFpbHMuCi0gKi8KLQotcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5t
b2RlbDsKLS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29s
cyAzLjQuMC5DUjEKLQotCi1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQXR0cmlidXRlT3ZlcnJp
ZGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQXR0cmlidXRlT3ZlcnJpZGVzOwotaW1wb3J0
IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbWJl
ZGRlZElkOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKLWltcG9ydCBqYXZheC5w
ZXJzaXN0ZW5jZS5UYWJsZTsKLQotLyoqCi0gKiBNZXNzdW5nc3RhIGdlbmVyYXRlZCBieSBoYm0y
amF2YQotICovCi1ARW50aXR5Ci1AVGFibGUobmFtZT0zRCJNRVNTVU5HU1RBIgotICAgICxzY2hl
bWE9M0QiU0VEREIiCi0pCi1wdWJsaWMgY2xhc3MgTWVzc3VuZ3N0YSAgaW1wbGVtZW50cyBqYXZh
LmlvLlNlcmlhbGl6YWJsZSB7Ci0KLQotICAgICBwcml2YXRlIE1lc3N1bmdzdGFJZCBpZDsKLQot
ICAgIHB1YmxpYyBNZXNzdW5nc3RhKCkgewotICAgIH0KLQotICAgIHB1YmxpYyBNZXNzdW5nc3Rh
KE1lc3N1bmdzdGFJZCBpZCkgewotICAgICAgIHRoaXMuaWQgPTNEIGlkOwotICAgIH0KLQotICAg
ICBARW1iZWRkZWRJZAotCi0KLSAgICBAQXR0cmlidXRlT3ZlcnJpZGVzKCB7Ci0gICAgICAgIEBB
dHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1lc3N1bmdpZCIsIGNvbHVtbj0zREBDb2x1bW4obmFt
ZT0zRCJNRT0KU1NVTkdJRCIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNE
InN0YXRpb25pZCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJTVD0KQVRJT05JRCIpICksCi0g
ICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImRhdHVtIiwgY29sdW1uPTNEQENvbHVt
bihuYW1lPTNEIkRBVFVNIj0KKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0z
RCJocGVpbHVuZ2lkIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkg9ClBFSUxVTkdJRCIpICks
Ci0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1wZWlsdW5naWQiLCBjb2x1bW49
M0RAQ29sdW1uKG5hbWU9M0QiTT0KUEVJTFVOR0lEIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92
ZXJyaWRlKG5hbWU9M0QiZ2ZhZW5nZXJpZCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJHPQpG
QUVOR0VSSUQiKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJnc2llYnNh
dHppZCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCI9CkdTSUVCU0FUWklEIikgKSwKLSAgICAg
ICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWVzc25yIiwgY29sdW1uPTNEQENvbHVtbihu
YW1lPTNEIk1FU1NOPQpSIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qi
Zmd1ZSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJGR1VFIikgPQopLAotICAgICAgICBAQXR0
cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ1aHJ2b24iLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0Qi
VUhSVk89Ck4iKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ1aHJiaXMi
LCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiVUhSQkk9ClMiKSApLAotICAgICAgICBAQXR0cmli
dXRlT3ZlcnJpZGUobmFtZT0zRCJ3c3BjbSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJXU1BD
TSI9CikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiUUJwZWdlbCIsIGNv
bHVtbj0zREBDb2x1bW4obmFtZT0zRCJRX0JQPQpFR0VMIikgKSwKLSAgICAgICAgQEF0dHJpYnV0
ZU92ZXJyaWRlKG5hbWU9M0Qid3Nwbm4iLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiV1NQTk4i
PQopICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImllIiwgY29sdW1uPTNE
QENvbHVtbihuYW1lPTNEIklFIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9
M0Qid3RlbXAiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiV1RFTVAiPQopICksCi0gICAgICAg
IEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImdicmVpdGUiLCBjb2x1bW49M0RAQ29sdW1uKG5h
bWU9M0QiR0JSRT0KSVRFIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qi
Z2JyZWl0ZXZvbiIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJHPQpCUkVJVEVWT04iKSApLAot
ICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJnYnJlaXRlYmlzIiwgY29sdW1uPTNE
QENvbHVtbihuYW1lPTNEIkc9CkJSRUlURUJJUyIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVy
cmlkZShuYW1lPTNEInRnZXNjaGllYmUiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiVD0KR0VT
Q0hJRUJFIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QidHNhbmQiLCBj
b2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiVFNBTkQiPQopICksCi0gICAgICAgIEBBdHRyaWJ1dGVP
dmVycmlkZShuYW1lPTNEInRzY2h3ZWIiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiVFNDSD0K
V0VCIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiY3NjaHdlYiIsIGNv
bHVtbj0zREBDb2x1bW4obmFtZT0zRCJDU0NIPQpXRUIiKSApLAotICAgICAgICBAQXR0cmlidXRl
T3ZlcnJpZGUobmFtZT0zRCJ1ZmVybGlhYnN0IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlU9
CkZFUkxJQUJTVCIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInVmZXJy
ZWFic3QiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiVT0KRkVSUkVBQlNUIikgKSwKLSAgICAg
ICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0z
RCJRIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiQUhwZWlsIiwgY29s
dW1uPTNEQENvbHVtbihuYW1lPTNEIkFfSFBFPQpJTCIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVP
dmVycmlkZShuYW1lPTNEIkFNcGVpbCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJBX01QRT0K
SUwiKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJiIiwgY29sdW1uPTNE
QENvbHVtbihuYW1lPTNEIkIiKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0z
RCJobSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJITSIpICksCi0gICAgICAgIEBBdHRyaWJ1
dGVPdmVycmlkZShuYW1lPTNEInZtIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlZNIikgKSwK
LSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QidnNvaGxlIiwgY29sdW1uPTNEQENv
bHVtbihuYW1lPTNEIlZTT0hMPQpFIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5h
bWU9M0QidGF1IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlRBVSIpICksCi0gICAgICAgIEBB
dHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInRhdXYiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0Qi
VEFVViIpID0KKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QidGVpbFEiLCBj
b2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiVEVJTF9RPQoiKSApLAotICAgICAgICBAQXR0cmlidXRl
T3ZlcnJpZGUobmFtZT0zRCJ0ZWlsQUhwZWlsIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlQ9
CkVJTF9BX0hQRUlMIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QidGVp
bEFNcGVpbCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJUPQpFSUxfQV9NUEVJTCIpICksCi0g
ICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInRlaWxCIiwgY29sdW1uPTNEQENvbHVt
bihuYW1lPTNEIlRFSUxfQj0KIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9
M0QidGVpbEhtIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlRFSUxfPQpITSIpICksCi0gICAg
ICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInRlaWxWbSIsIGNvbHVtbj0zREBDb2x1bW4o
bmFtZT0zRCJURUlMXz0KVk0iKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0z
RCJ0ZWlsVnNvaGxlIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlQ9CkVJTF9WU09ITEUiKSAp
LAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ0ZWlsVGF1IiwgY29sdW1uPTNE
QENvbHVtbihuYW1lPTNEIlRFSUw9Cl9UQVUiKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJp
ZGUobmFtZT0zRCJ0ZWlsVGF1diIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJURUk9CkxfVEFV
ViIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1pdHRlbHR5cCIsIGNv
bHVtbj0zREBDb2x1bW4obmFtZT0zRCJNST0KVFRFTFRZUCIpICksCi0gICAgICAgIEBBdHRyaWJ1
dGVPdmVycmlkZShuYW1lPTNEImRtIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkRNIikgKSwK
LSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qic2siLCBjb2x1bW49M0RAQ29sdW1u
KG5hbWU9M0QiU0siKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJzbyIs
IGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJTTyIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVy
cmlkZShuYW1lPTNEInUiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiVSIpICksCi0gICAgICAg
IEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImQ5MCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0z
RCJEOTAiKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkODQiLCBjb2x1
bW49M0RAQ29sdW1uKG5hbWU9M0QiRDg0IikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRl
KG5hbWU9M0QiZDgwIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkQ4MCIpICksCi0gICAgICAg
IEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImQ3NSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0z
RCJENzUiKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkNzAiLCBjb2x1
bW49M0RAQ29sdW1uKG5hbWU9M0QiRDcwIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRl
KG5hbWU9M0QiZDYwIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkQ2MCIpICksCi0gICAgICAg
IEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImQ1MCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0z
RCJENTAiKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkNDAiLCBjb2x1
bW49M0RAQ29sdW1uKG5hbWU9M0QiRDQwIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRl
KG5hbWU9M0QiZDMwIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkQzMCIpICksCi0gICAgICAg
IEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImQyNSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0z
RCJEMjUiKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkMjAiLCBjb2x1
bW49M0RAQ29sdW1uKG5hbWU9M0QiRDIwIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRl
KG5hbWU9M0QiZDE2IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkQxNiIpICksCi0gICAgICAg
IEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImQxMCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0z
RCJEMTAiKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkbWluIiwgY29s
dW1uPTNEQENvbHVtbihuYW1lPTNEIkRNSU4iKSA9CiksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVy
cmlkZShuYW1lPTNEImR1cmNoZG1pbiIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJEVT0KUkNI
RE1JTiIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImRtYXgiLCBjb2x1
bW49M0RAQ29sdW1uKG5hbWU9M0QiRE1BWCIpID0KKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJy
aWRlKG5hbWU9M0QiZHVyY2hkbWF4IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkRVPQpSQ0hE
TUFYIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiTkdlc2NoaWViIiwg
Y29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk5fPQpHRVNDSElFQiIpICksCi0gICAgICAgIEBBdHRy
aWJ1dGVPdmVycmlkZShuYW1lPTNEIk5WaWVscGt0IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNE
Ik5fVj0KSUVMUEtUIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qic3lz
RGF0ZSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJTWVNfPQpEQVRFIikgKSwKLSAgICAgICAg
QEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiYmVtZXJrdW5nIiwgY29sdW1uPTNEQENvbHVtbihu
YW1lPTNEIkJFPQpNRVJLVU5HIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9
M0QibGFzdHVwZGF0ZWQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiPQpMQVNUVVBEQVRFRCIp
ICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImttIiwgY29sdW1uPTNEQENv
bHVtbihuYW1lPTNEIktNIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qi
Z2xvdGFic3RvZmZzZXQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9Cj0zRCJHTE9UQUJTVE9GRlNF
VCIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInNsb3RhYnN0b2Zmc2V0
IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPQo9M0QiU0xPVEFCU1RPRkZTRVQiKSApLAotICAgICAg
ICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJnYnJlaXRldm9ubGlua3MiLCBjb2x1bW49M0RA
Q29sdW1uKG5hbWU9Cj0zRCJHQlJFSVRFVk9OTElOS1MiKSApLAotICAgICAgICBAQXR0cmlidXRl
T3ZlcnJpZGUobmFtZT0zRCJnYnJlaXRlYmlzbGlua3MiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9
Cj0zRCJHQlJFSVRFQklTTElOS1MiKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFt
ZT0zRCJzdGFuYW1lIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlNUQU49CkFNRSIpICksCi0g
ICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInN0YWttIiwgY29sdW1uPTNEQENvbHVt
bihuYW1lPTNEIlNUQUtNIj0KKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0z
RCJnZXdhZXNzZXJpZCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCI9CkdFV0FFU1NFUklEIikg
KSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZ2V3bmFtZSIsIGNvbHVtbj0z
REBDb2x1bW4obmFtZT0zRCJHRVdOPQpBTUUiKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJp
ZGUobmFtZT0zRCJiZXp1Z3NwZWdlbGlkIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPQo9M0QiQkVa
VUdTUEVHRUxJRCIpICkgfSApCi0gICAgcHVibGljIE1lc3N1bmdzdGFJZCBnZXRJZCgpIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuaWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0SWQoTWVz
c3VuZ3N0YUlkIGlkKSB7Ci0gICAgICAgIHRoaXMuaWQgPTNEIGlkOwotICAgIH0KLX0KZGlmZiAt
ciA4OWRjYWFlMDgwMWMgLXIgNmE0YmRjY2NmYTRkIGJhY2tlbmQvc3JjL21haW4vamF2YS9vcmcv
ZGl2ZTRlbGVtZW50PQpzL3JpdmVyL3NlZGRiL21vZGVsL01lc3N1bmdzdGFJZC5qYXZhCi0tLSBh
L2JhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZlci9zZWRkYi9tb2Rl
bC9NZXNzdW5nc3RhST0KZC5qYXZhCVR1ZSBKYW4gMTYgMTg6MTM6NTQgMjAxOCArMDEwMAorKysg
L2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMTY2ICswLDAg
QEAKLS8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9
QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCi0gKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJ
bnRldmF0aW9uIEdtYkgKLSAqCi0gKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0
aGUgR05VIEFHUEwgKD49M0R2MykKLSAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FS
UkFOVFkhIENoZWNrIG91dCB0aGUKLSAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRF
bGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy4KLSAqLwotCi1wYWNrYWdlIG9yZy5kaXZlNGVsZW1l
bnRzLnJpdmVyLnNlZGRiLm1vZGVsOwotLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcg
YnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQotCi0KLWltcG9ydCBqYXZhLmlvLlNlcmlhbGl6
YWJsZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVy
c2lzdGVuY2UuRW1iZWRkYWJsZTsKLQotLyoqCi0gKiBNZXNzdW5nc3RhSWQgZ2VuZXJhdGVkIGJ5
IGhibTJqYXZhCi0gKi8KLUBFbWJlZGRhYmxlCi1wdWJsaWMgY2xhc3MgTWVzc3VuZ3N0YUlkICBp
bXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAgIHByaXZhdGUgU2VyaWFs
aXphYmxlIG1lc3N1bmdpZDsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgc3RhdGlvbmlkOwot
ICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBkYXR1bTsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFi
bGUgaHBlaWx1bmdpZDsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgbXBlaWx1bmdpZDsKLSAg
ICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgZ2ZhZW5nZXJpZDsKLSAgICAgcHJpdmF0ZSBTZXJpYWxp
emFibGUgZ3NpZWJzYXR6aWQ7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIG1lc3NucjsKLSAg
ICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgZmd1ZTsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUg
dWhydm9uOwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSB1aHJiaXM7Ci0gICAgIHByaXZhdGUg
U2VyaWFsaXphYmxlIHdzcGNtOwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBRQnBlZ2VsOwot
ICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSB3c3BubjsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFi
bGUgaWU7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIHd0ZW1wOwotICAgICBwcml2YXRlIFNl
cmlhbGl6YWJsZSBnYnJlaXRlOwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBnYnJlaXRldm9u
OwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBnYnJlaXRlYmlzOwotICAgICBwcml2YXRlIFNl
cmlhbGl6YWJsZSB0Z2VzY2hpZWJlOwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSB0c2FuZDsK
LSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgdHNjaHdlYjsKLSAgICAgcHJpdmF0ZSBTZXJpYWxp
emFibGUgY3NjaHdlYjsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgdWZlcmxpYWJzdDsKLSAg
ICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgdWZlcnJlYWJzdDsKLSAgICAgcHJpdmF0ZSBTZXJpYWxp
emFibGUgcTsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgQUhwZWlsOwotICAgICBwcml2YXRl
IFNlcmlhbGl6YWJsZSBBTXBlaWw7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGI7Ci0gICAg
IHByaXZhdGUgU2VyaWFsaXphYmxlIGhtOwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSB2bTsK
LSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgdnNvaGxlOwotICAgICBwcml2YXRlIFNlcmlhbGl6
YWJsZSB0YXU7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIHRhdXY7Ci0gICAgIHByaXZhdGUg
U2VyaWFsaXphYmxlIHRlaWxROwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSB0ZWlsQUhwZWls
OwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSB0ZWlsQU1wZWlsOwotICAgICBwcml2YXRlIFNl
cmlhbGl6YWJsZSB0ZWlsQjsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgdGVpbEhtOwotICAg
ICBwcml2YXRlIFNlcmlhbGl6YWJsZSB0ZWlsVm07Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxl
IHRlaWxWc29obGU7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIHRlaWxUYXU7Ci0gICAgIHBy
aXZhdGUgU2VyaWFsaXphYmxlIHRlaWxUYXV2OwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBt
aXR0ZWx0eXA7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGRtOwotICAgICBwcml2YXRlIFNl
cmlhbGl6YWJsZSBzazsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgc287Ci0gICAgIHByaXZh
dGUgU2VyaWFsaXphYmxlIHU7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGQ5MDsKLSAgICAg
cHJpdmF0ZSBTZXJpYWxpemFibGUgZDg0OwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBkODA7
Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGQ3NTsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFi
bGUgZDcwOwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBkNjA7Ci0gICAgIHByaXZhdGUgU2Vy
aWFsaXphYmxlIGQ1MDsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgZDQwOwotICAgICBwcml2
YXRlIFNlcmlhbGl6YWJsZSBkMzA7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGQyNTsKLSAg
ICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgZDIwOwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBk
MTY7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGQxMDsKLSAgICAgcHJpdmF0ZSBTZXJpYWxp
emFibGUgZG1pbjsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgZHVyY2hkbWluOwotICAgICBw
cml2YXRlIFNlcmlhbGl6YWJsZSBkbWF4OwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBkdXJj
aGRtYXg7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIE5HZXNjaGllYjsKLSAgICAgcHJpdmF0
ZSBTZXJpYWxpemFibGUgTlZpZWxwa3Q7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIHN5c0Rh
dGU7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGJlbWVya3VuZzsKLSAgICAgcHJpdmF0ZSBT
ZXJpYWxpemFibGUgbGFzdHVwZGF0ZWQ7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGttOwot
ICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBnbG90YWJzdG9mZnNldDsKLSAgICAgcHJpdmF0ZSBT
ZXJpYWxpemFibGUgc2xvdGFic3RvZmZzZXQ7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGdi
cmVpdGV2b25saW5rczsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgZ2JyZWl0ZWJpc2xpbmtz
OwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBzdGFuYW1lOwotICAgICBwcml2YXRlIFNlcmlh
bGl6YWJsZSBzdGFrbTsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgZ2V3YWVzc2VyaWQ7Ci0g
ICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGdld25hbWU7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXph
YmxlIGJlenVnc3BlZ2VsaWQ7Ci0KLSAgICBwdWJsaWMgTWVzc3VuZ3N0YUlkKCkgewotICAgIH0K
LQotICAgIHB1YmxpYyBNZXNzdW5nc3RhSWQoU2VyaWFsaXphYmxlIG1lc3N1bmdpZCwgU2VyaWFs
aXphYmxlIHN0YXRpb25pZCwgU2U9CnJpYWxpemFibGUgZGF0dW0sIFNlcmlhbGl6YWJsZSBocGVp
bHVuZ2lkLCBTZXJpYWxpemFibGUgbXBlaWx1bmdpZCwgU2VyaWFsaT0KemFibGUgZ2ZhZW5nZXJp
ZCwgU2VyaWFsaXphYmxlIGdzaWVic2F0emlkLCBTZXJpYWxpemFibGUgbWVzc25yLCBTZXJpYWxp
emFiPQpsZSBmZ3VlLCBTZXJpYWxpemFibGUgdWhydm9uLCBTZXJpYWxpemFibGUgdWhyYmlzLCBT
ZXJpYWxpemFibGUgd3NwY20sIFNlcmk9CmFsaXphYmxlIFFCcGVnZWwsIFNlcmlhbGl6YWJsZSB3
c3BubiwgU2VyaWFsaXphYmxlIGllLCBTZXJpYWxpemFibGUgd3RlbXAsID0KU2VyaWFsaXphYmxl
IGdicmVpdGUsIFNlcmlhbGl6YWJsZSBnYnJlaXRldm9uLCBTZXJpYWxpemFibGUgZ2JyZWl0ZWJp
cywgU2VyPQppYWxpemFibGUgdGdlc2NoaWViZSwgU2VyaWFsaXphYmxlIHRzYW5kLCBTZXJpYWxp
emFibGUgdHNjaHdlYiwgU2VyaWFsaXphYmw9CmUgY3NjaHdlYiwgU2VyaWFsaXphYmxlIHVmZXJs
aWFic3QsIFNlcmlhbGl6YWJsZSB1ZmVycmVhYnN0LCBTZXJpYWxpemFibGUgcT0KLCBTZXJpYWxp
emFibGUgQUhwZWlsLCBTZXJpYWxpemFibGUgQU1wZWlsLCBTZXJpYWxpemFibGUgYiwgU2VyaWFs
aXphYmxlIGhtPQosIFNlcmlhbGl6YWJsZSB2bSwgU2VyaWFsaXphYmxlIHZzb2hsZSwgU2VyaWFs
aXphYmxlIHRhdSwgU2VyaWFsaXphYmxlIHRhdXY9CiwgU2VyaWFsaXphYmxlIHRlaWxRLCBTZXJp
YWxpemFibGUgdGVpbEFIcGVpbCwgU2VyaWFsaXphYmxlIHRlaWxBTXBlaWwsIFNlcj0KaWFsaXph
YmxlIHRlaWxCLCBTZXJpYWxpemFibGUgdGVpbEhtLCBTZXJpYWxpemFibGUgdGVpbFZtLCBTZXJp
YWxpemFibGUgdGVpPQpsVnNvaGxlLCBTZXJpYWxpemFibGUgdGVpbFRhdSwgU2VyaWFsaXphYmxl
IHRlaWxUYXV2LCBTZXJpYWxpemFibGUgbWl0dGVsdHk9CnAsIFNlcmlhbGl6YWJsZSBkbSwgU2Vy
aWFsaXphYmxlIHNrLCBTZXJpYWxpemFibGUgc28sIFNlcmlhbGl6YWJsZSB1LCBTZXJpYT0KbGl6
YWJsZSBkOTAsIFNlcmlhbGl6YWJsZSBkODQsIFNlcmlhbGl6YWJsZSBkODAsIFNlcmlhbGl6YWJs
ZSBkNzUsIFNlcmlhbGl6PQphYmxlIGQ3MCwgU2VyaWFsaXphYmxlIGQ2MCwgU2VyaWFsaXphYmxl
IGQ1MCwgU2VyaWFsaXphYmxlIGQ0MCwgU2VyaWFsaXphYmw9CmUgZDMwLCBTZXJpYWxpemFibGUg
ZDI1LCBTZXJpYWxpemFibGUgZDIwLCBTZXJpYWxpemFibGUgZDE2LCBTZXJpYWxpemFibGUgZD0K
MTAsIFNlcmlhbGl6YWJsZSBkbWluLCBTZXJpYWxpemFibGUgZHVyY2hkbWluLCBTZXJpYWxpemFi
bGUgZG1heCwgU2VyaWFsaXphPQpibGUgZHVyY2hkbWF4LCBTZXJpYWxpemFibGUgTkdlc2NoaWVi
LCBTZXJpYWxpemFibGUgTlZpZWxwa3QsIFNlcmlhbGl6YWJsZSA9CnN5c0RhdGUsIFNlcmlhbGl6
YWJsZSBiZW1lcmt1bmcsIFNlcmlhbGl6YWJsZSBsYXN0dXBkYXRlZCwgU2VyaWFsaXphYmxlIGtt
LD0KIFNlcmlhbGl6YWJsZSBnbG90YWJzdG9mZnNldCwgU2VyaWFsaXphYmxlIHNsb3RhYnN0b2Zm
c2V0LCBTZXJpYWxpemFibGUgZ2JyPQplaXRldm9ubGlua3MsIFNlcmlhbGl6YWJsZSBnYnJlaXRl
YmlzbGlua3MsIFNlcmlhbGl6YWJsZSBzdGFuYW1lLCBTZXJpYWxpemE9CmJsZSBzdGFrbSwgU2Vy
aWFsaXphYmxlIGdld2Flc3NlcmlkLCBTZXJpYWxpemFibGUgZ2V3bmFtZSwgU2VyaWFsaXphYmxl
IGJlej0KdWdzcGVnZWxpZCkgewotICAgICAgIHRoaXMubWVzc3VuZ2lkID0zRCBtZXNzdW5naWQ7
Ci0gICAgICAgdGhpcy5zdGF0aW9uaWQgPTNEIHN0YXRpb25pZDsKLSAgICAgICB0aGlzLmRhdHVt
ID0zRCBkYXR1bTsKLSAgICAgICB0aGlzLmhwZWlsdW5naWQgPTNEIGhwZWlsdW5naWQ7Ci0gICAg
ICAgdGhpcy5tcGVpbHVuZ2lkID0zRCBtcGVpbHVuZ2lkOwotICAgICAgIHRoaXMuZ2ZhZW5nZXJp
ZCA9M0QgZ2ZhZW5nZXJpZDsKLSAgICAgICB0aGlzLmdzaWVic2F0emlkID0zRCBnc2llYnNhdHpp
ZDsKLSAgICAgICB0aGlzLm1lc3NuciA9M0QgbWVzc25yOwotICAgICAgIHRoaXMuZmd1ZSA9M0Qg
Zmd1ZTsKLSAgICAgICB0aGlzLnVocnZvbiA9M0QgdWhydm9uOwotICAgICAgIHRoaXMudWhyYmlz
ID0zRCB1aHJiaXM7Ci0gICAgICAgdGhpcy53c3BjbSA9M0Qgd3NwY207Ci0gICAgICAgdGhpcy5R
QnBlZ2VsID0zRCBRQnBlZ2VsOwotICAgICAgIHRoaXMud3Nwbm4gPTNEIHdzcG5uOwotICAgICAg
IHRoaXMuaWUgPTNEIGllOwotICAgICAgIHRoaXMud3RlbXAgPTNEIHd0ZW1wOwotICAgICAgIHRo
aXMuZ2JyZWl0ZSA9M0QgZ2JyZWl0ZTsKLSAgICAgICB0aGlzLmdicmVpdGV2b24gPTNEIGdicmVp
dGV2b247Ci0gICAgICAgdGhpcy5nYnJlaXRlYmlzID0zRCBnYnJlaXRlYmlzOwotICAgICAgIHRo
aXMudGdlc2NoaWViZSA9M0QgdGdlc2NoaWViZTsKLSAgICAgICB0aGlzLnRzYW5kID0zRCB0c2Fu
ZDsKLSAgICAgICB0aGlzLnRzY2h3ZWIgPTNEIHRzY2h3ZWI7Ci0gICAgICAgdGhpcy5jc2Nod2Vi
ID0zRCBjc2Nod2ViOwotICAgICAgIHRoaXMudWZlcmxpYWJzdCA9M0QgdWZlcmxpYWJzdDsKLSAg
ICAgICB0aGlzLnVmZXJyZWFic3QgPTNEIHVmZXJyZWFic3Q7Ci0gICAgICAgdGhpcy5xID0zRCBx
OwotICAgICAgIHRoaXMuQUhwZWlsID0zRCBBSHBlaWw7Ci0gICAgICAgdGhpcy5BTXBlaWwgPTNE
IEFNcGVpbDsKLSAgICAgICB0aGlzLmIgPTNEIGI7Ci0gICAgICAgdGhpcy5obSA9M0QgaG07Ci0g
ICAgICAgdGhpcy52bSA9M0Qgdm07Ci0gICAgICAgdGhpcy52c29obGUgPTNEIHZzb2hsZTsKLSAg
ICAgICB0aGlzLnRhdSA9M0QgdGF1OwotICAgICAgIHRoaXMudGF1diA9M0QgdGF1djsKLSAgICAg
ICB0aGlzLnRlaWxRID0zRCB0ZWlsUTsKLSAgICAgICB0aGlzLnRlaWxBSHBlaWwgPTNEIHRlaWxB
SHBlaWw7Ci0gICAgICAgdGhpcy50ZWlsQU1wZWlsID0zRCB0ZWlsQU1wZWlsOwotICAgICAgIHRo
aXMudGVpbEIgPTNEIHRlaWxCOwotICAgICAgIHRoaXMudGVpbEhtID0zRCB0ZWlsSG07Ci0gICAg
ICAgdGhpcy50ZWlsVm0gPTNEIHRlaWxWbTsKLSAgICAgICB0aGlzLnRlaWxWc29obGUgPTNEIHRl
aWxWc29obGU7Ci0gICAgICAgdGhpcy50ZWlsVGF1ID0zRCB0ZWlsVGF1OwotICAgICAgIHRoaXMu
dGVpbFRhdXYgPTNEIHRlaWxUYXV2OwotICAgICAgIHRoaXMubWl0dGVsdHlwID0zRCBtaXR0ZWx0
eXA7Ci0gICAgICAgdGhpcy5kbSA9M0QgZG07Ci0gICAgICAgdGhpcy5zayA9M0Qgc2s7Ci0gICAg
ICAgdGhpcy5zbyA9M0Qgc287Ci0gICAgICAgdGhpcy51ID0zRCB1OwotICAgICAgIHRoaXMuZDkw
ID0zRCBkOTA7Ci0gICAgICAgdGhpcy5kODQgPTNEIGQ4NDsKLSAgICAgICB0aGlzLmQ4MCA9M0Qg
ZDgwOwotICAgICAgIHRoaXMuZDc1ID0zRCBkNzU7Ci0gICAgICAgdGhpcy5kNzAgPTNEIGQ3MDsK
LSAgICAgICB0aGlzLmQ2MCA9M0QgZDYwOwotICAgICAgIHRoaXMuZDUwID0zRCBkNTA7Ci0gICAg
ICAgdGhpcy5kNDAgPTNEIGQ0MDsKLSAgICAgICB0aGlzLmQzMCA9M0QgZDMwOwotICAgICAgIHRo
aXMuZDI1ID0zRCBkMjU7Ci0gICAgICAgdGhpcy5kMjAgPTNEIGQyMDsKLSAgICAgICB0aGlzLmQx
NiA9M0QgZDE2OwotICAgICAgIHRoaXMuZDEwID0zRCBkMTA7Ci0gICAgICAgdGhpcy5kbWluID0z
RCBkbWluOwotICAgICAgIHRoaXMuZHVyY2hkbWluID0zRCBkdXJjaGRtaW47Ci0gICAgICAgdGhp
cy5kbWF4ID0zRCBkbWF4OwotICAgICAgIHRoaXMuZHVyY2hkbWF4ID0zRCBkdXJjaGRtYXg7Ci0g
ICAgICAgdGhpcy5OR2VzY2hpZWIgPTNEIE5HZXNjaGllYjsKLSAgICAgICB0aGlzLk5WaWVscGt0
ID0zRCBOVmllbHBrdDsKLSAgICAgICB0aGlzLnN5c0RhdGUgPTNEIHN5c0RhdGU7Ci0gICAgICAg
dGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICAgICB0aGlzLmxhc3R1cGRhdGVkID0z
RCBsYXN0dXBkYXRlZDsKLSAgICAgICB0aGlzLmttID0zRCBrbTsKLSAgICAgICB0aGlzLmdsb3Rh
YnN0b2Zmc2V0ID0zRCBnbG90YWJzdG9mZnNldDsKLSAgICAgICB0aGlzLnNsb3RhYnN0b2Zmc2V0
ID0zRCBzbG90YWJzdG9mZnNldDsKLSAgICAgICB0aGlzLmdicmVpdGV2b25saW5rcyA9M0QgZ2Jy
ZWl0ZXZvbmxpbmtzOwotICAgICAgIHRoaXMuZ2JyZWl0ZWJpc2xpbmtzID0zRCBnYnJlaXRlYmlz
bGlua3M7Ci0gICAgICAgdGhpcy5zdGFuYW1lID0zRCBzdGFuYW1lOwotICAgICAgIHRoaXMuc3Rh
a20gPTNEIHN0YWttOwotICAgICAgIHRoaXMuZ2V3YWVzc2VyaWQgPTNEIGdld2Flc3NlcmlkOwot
ICAgICAgIHRoaXMuZ2V3bmFtZSA9M0QgZ2V3bmFtZTsKLSAgICAgICB0aGlzLmJlenVnc3BlZ2Vs
aWQgPTNEIGJlenVnc3BlZ2VsaWQ7Ci0gICAgfQotCi0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJN
RVNTVU5HSUQiKQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0TWVzc3VuZ2lkKCkgewotICAg
ICAgICByZXR1cm4gdGhpcy5tZXNzdW5naWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0
TWVzc3VuZ2lkKFNlcmlhbGl6YWJsZSBtZXNzdW5naWQpIHsKLSAgICAgICAgdGhpcy5tZXNzdW5n
aWQgPTNEIG1lc3N1bmdpZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJTVEFUSU9O
SUQiKQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0U3RhdGlvbmlkKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5zdGF0aW9uaWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U3RhdGlv
bmlkKFNlcmlhbGl6YWJsZSBzdGF0aW9uaWQpIHsKLSAgICAgICAgdGhpcy5zdGF0aW9uaWQgPTNE
IHN0YXRpb25pZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJEQVRVTSIpCi0gICAg
cHVibGljIFNlcmlhbGl6YWJsZSBnZXREYXR1bSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZGF0
dW07Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RGF0dW0oU2VyaWFsaXphYmxlIGRhdHVt
KSB7Ci0gICAgICAgIHRoaXMuZGF0dW0gPTNEIGRhdHVtOwotICAgIH0KLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIkhQRUlMVU5HSUQiKQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0SHBlaWx1
bmdpZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaHBlaWx1bmdpZDsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRIcGVpbHVuZ2lkKFNlcmlhbGl6YWJsZSBocGVpbHVuZ2lkKSB7Ci0gICAg
ICAgIHRoaXMuaHBlaWx1bmdpZCA9M0QgaHBlaWx1bmdpZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1
bW4obmFtZT0zRCJNUEVJTFVOR0lEIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldE1wZWls
dW5naWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1wZWlsdW5naWQ7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0TXBlaWx1bmdpZChTZXJpYWxpemFibGUgbXBlaWx1bmdpZCkgewotICAg
ICAgICB0aGlzLm1wZWlsdW5naWQgPTNEIG1wZWlsdW5naWQ7Ci0gICAgfQotCi0KLSAgICBAQ29s
dW1uKG5hbWU9M0QiR0ZBRU5HRVJJRCIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRHZmFl
bmdlcmlkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5nZmFlbmdlcmlkOwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldEdmYWVuZ2VyaWQoU2VyaWFsaXphYmxlIGdmYWVuZ2VyaWQpIHsKLSAg
ICAgICAgdGhpcy5nZmFlbmdlcmlkID0zRCBnZmFlbmdlcmlkOwotICAgIH0KLQotCi0gICAgQENv
bHVtbihuYW1lPTNEIkdTSUVCU0FUWklEIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldEdz
aWVic2F0emlkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5nc2llYnNhdHppZDsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRHc2llYnNhdHppZChTZXJpYWxpemFibGUgZ3NpZWJzYXR6aWQp
IHsKLSAgICAgICAgdGhpcy5nc2llYnNhdHppZCA9M0QgZ3NpZWJzYXR6aWQ7Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiTUVTU05SIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdl
dE1lc3NucigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWVzc25yOwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldE1lc3NucihTZXJpYWxpemFibGUgbWVzc25yKSB7Ci0gICAgICAgIHRoaXMu
bWVzc25yID0zRCBtZXNzbnI7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRkdVRSIp
Ci0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRGZ3VlKCkgewotICAgICAgICByZXR1cm4gdGhp
cy5mZ3VlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEZndWUoU2VyaWFsaXphYmxlIGZn
dWUpIHsKLSAgICAgICAgdGhpcy5mZ3VlID0zRCBmZ3VlOwotICAgIH0KLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIlVIUlZPTiIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRVaHJ2b24oKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLnVocnZvbjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXRVaHJ2b24oU2VyaWFsaXphYmxlIHVocnZvbikgewotICAgICAgICB0aGlzLnVocnZvbiA9M0Qg
dWhydm9uOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlVIUkJJUyIpCi0gICAgcHVi
bGljIFNlcmlhbGl6YWJsZSBnZXRVaHJiaXMoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnVocmJp
czsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRVaHJiaXMoU2VyaWFsaXphYmxlIHVocmJp
cykgewotICAgICAgICB0aGlzLnVocmJpcyA9M0QgdWhyYmlzOwotICAgIH0KLQotCi0gICAgQENv
bHVtbihuYW1lPTNEIldTUENNIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldFdzcGNtKCkg
ewotICAgICAgICByZXR1cm4gdGhpcy53c3BjbTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXRXc3BjbShTZXJpYWxpemFibGUgd3NwY20pIHsKLSAgICAgICAgdGhpcy53c3BjbSA9M0Qgd3Nw
Y207Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUV9CUEVHRUwiKQotICAgIHB1Ymxp
YyBTZXJpYWxpemFibGUgZ2V0UUJwZWdlbCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuUUJwZWdl
bDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRRQnBlZ2VsKFNlcmlhbGl6YWJsZSBRQnBl
Z2VsKSB7Ci0gICAgICAgIHRoaXMuUUJwZWdlbCA9M0QgUUJwZWdlbDsKLSAgICB9Ci0KLQotICAg
IEBDb2x1bW4obmFtZT0zRCJXU1BOTiIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRXc3Bu
bigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMud3Nwbm47Ci0gICAgfQotCi0gICAgcHVibGljIHZv
aWQgc2V0V3Nwbm4oU2VyaWFsaXphYmxlIHdzcG5uKSB7Ci0gICAgICAgIHRoaXMud3Nwbm4gPTNE
IHdzcG5uOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIklFIikKLSAgICBwdWJsaWMg
U2VyaWFsaXphYmxlIGdldEllKCkgewotICAgICAgICByZXR1cm4gdGhpcy5pZTsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRJZShTZXJpYWxpemFibGUgaWUpIHsKLSAgICAgICAgdGhpcy5p
ZSA9M0QgaWU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiV1RFTVAiKQotICAgIHB1
YmxpYyBTZXJpYWxpemFibGUgZ2V0V3RlbXAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnd0ZW1w
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFd0ZW1wKFNlcmlhbGl6YWJsZSB3dGVtcCkg
ewotICAgICAgICB0aGlzLnd0ZW1wID0zRCB3dGVtcDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4o
bmFtZT0zRCJHQlJFSVRFIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldEdicmVpdGUoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLmdicmVpdGU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0R2JyZWl0ZShTZXJpYWxpemFibGUgZ2JyZWl0ZSkgewotICAgICAgICB0aGlzLmdicmVpdGUg
PTNEIGdicmVpdGU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiR0JSRUlURVZPTiIp
Ci0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRHYnJlaXRldm9uKCkgewotICAgICAgICByZXR1
cm4gdGhpcy5nYnJlaXRldm9uOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEdicmVpdGV2
b24oU2VyaWFsaXphYmxlIGdicmVpdGV2b24pIHsKLSAgICAgICAgdGhpcy5nYnJlaXRldm9uID0z
RCBnYnJlaXRldm9uOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkdCUkVJVEVCSVMi
KQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0R2JyZWl0ZWJpcygpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuZ2JyZWl0ZWJpczsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRHYnJlaXRl
YmlzKFNlcmlhbGl6YWJsZSBnYnJlaXRlYmlzKSB7Ci0gICAgICAgIHRoaXMuZ2JyZWl0ZWJpcyA9
M0QgZ2JyZWl0ZWJpczsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJUR0VTQ0hJRUJF
IikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldFRnZXNjaGllYmUoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLnRnZXNjaGllYmU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VGdlc2No
aWViZShTZXJpYWxpemFibGUgdGdlc2NoaWViZSkgewotICAgICAgICB0aGlzLnRnZXNjaGllYmUg
PTNEIHRnZXNjaGllYmU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVFNBTkQiKQot
ICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0VHNhbmQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LnRzYW5kOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFRzYW5kKFNlcmlhbGl6YWJsZSB0
c2FuZCkgewotICAgICAgICB0aGlzLnRzYW5kID0zRCB0c2FuZDsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJUU0NIV0VCIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldFRzY2h3
ZWIoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRzY2h3ZWI7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0VHNjaHdlYihTZXJpYWxpemFibGUgdHNjaHdlYikgewotICAgICAgICB0aGlzLnRz
Y2h3ZWIgPTNEIHRzY2h3ZWI7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQ1NDSFdF
QiIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRDc2Nod2ViKCkgewotICAgICAgICByZXR1
cm4gdGhpcy5jc2Nod2ViOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldENzY2h3ZWIoU2Vy
aWFsaXphYmxlIGNzY2h3ZWIpIHsKLSAgICAgICAgdGhpcy5jc2Nod2ViID0zRCBjc2Nod2ViOwot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlVGRVJMSUFCU1QiKQotICAgIHB1YmxpYyBT
ZXJpYWxpemFibGUgZ2V0VWZlcmxpYWJzdCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudWZlcmxp
YWJzdDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRVZmVybGlhYnN0KFNlcmlhbGl6YWJs
ZSB1ZmVybGlhYnN0KSB7Ci0gICAgICAgIHRoaXMudWZlcmxpYWJzdCA9M0QgdWZlcmxpYWJzdDsK
LSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJVRkVSUkVBQlNUIikKLSAgICBwdWJsaWMg
U2VyaWFsaXphYmxlIGdldFVmZXJyZWFic3QoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnVmZXJy
ZWFic3Q7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VWZlcnJlYWJzdChTZXJpYWxpemFi
bGUgdWZlcnJlYWJzdCkgewotICAgICAgICB0aGlzLnVmZXJyZWFic3QgPTNEIHVmZXJyZWFic3Q7
Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUSIpCi0gICAgcHVibGljIFNlcmlhbGl6
YWJsZSBnZXRRKCkgewotICAgICAgICByZXR1cm4gdGhpcy5xOwotICAgIH0KLQotICAgIHB1Ymxp
YyB2b2lkIHNldFEoU2VyaWFsaXphYmxlIHEpIHsKLSAgICAgICAgdGhpcy5xID0zRCBxOwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkFfSFBFSUwiKQotICAgIHB1YmxpYyBTZXJpYWxp
emFibGUgZ2V0QUhwZWlsKCkgewotICAgICAgICByZXR1cm4gdGhpcy5BSHBlaWw7Ci0gICAgfQot
Ci0gICAgcHVibGljIHZvaWQgc2V0QUhwZWlsKFNlcmlhbGl6YWJsZSBBSHBlaWwpIHsKLSAgICAg
ICAgdGhpcy5BSHBlaWwgPTNEIEFIcGVpbDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJBX01QRUlMIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldEFNcGVpbCgpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuQU1wZWlsOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEFNcGVp
bChTZXJpYWxpemFibGUgQU1wZWlsKSB7Ci0gICAgICAgIHRoaXMuQU1wZWlsID0zRCBBTXBlaWw7
Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQiIpCi0gICAgcHVibGljIFNlcmlhbGl6
YWJsZSBnZXRCKCkgewotICAgICAgICByZXR1cm4gdGhpcy5iOwotICAgIH0KLQotICAgIHB1Ymxp
YyB2b2lkIHNldEIoU2VyaWFsaXphYmxlIGIpIHsKLSAgICAgICAgdGhpcy5iID0zRCBiOwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkhNIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxl
IGdldEhtKCkgewotICAgICAgICByZXR1cm4gdGhpcy5obTsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRIbShTZXJpYWxpemFibGUgaG0pIHsKLSAgICAgICAgdGhpcy5obSA9M0QgaG07Ci0g
ICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVk0iKQotICAgIHB1YmxpYyBTZXJpYWxpemFi
bGUgZ2V0Vm0oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnZtOwotICAgIH0KLQotICAgIHB1Ymxp
YyB2b2lkIHNldFZtKFNlcmlhbGl6YWJsZSB2bSkgewotICAgICAgICB0aGlzLnZtID0zRCB2bTsK
LSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJWU09ITEUiKQotICAgIHB1YmxpYyBTZXJp
YWxpemFibGUgZ2V0VnNvaGxlKCkgewotICAgICAgICByZXR1cm4gdGhpcy52c29obGU7Ci0gICAg
fQotCi0gICAgcHVibGljIHZvaWQgc2V0VnNvaGxlKFNlcmlhbGl6YWJsZSB2c29obGUpIHsKLSAg
ICAgICAgdGhpcy52c29obGUgPTNEIHZzb2hsZTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFt
ZT0zRCJUQVUiKQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0VGF1KCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy50YXU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VGF1KFNlcmlhbGl6
YWJsZSB0YXUpIHsKLSAgICAgICAgdGhpcy50YXUgPTNEIHRhdTsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJUQVVWIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldFRhdXYoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLnRhdXY7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0
VGF1dihTZXJpYWxpemFibGUgdGF1dikgewotICAgICAgICB0aGlzLnRhdXYgPTNEIHRhdXY7Ci0g
ICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVEVJTF9RIikKLSAgICBwdWJsaWMgU2VyaWFs
aXphYmxlIGdldFRlaWxRKCkgewotICAgICAgICByZXR1cm4gdGhpcy50ZWlsUTsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRUZWlsUShTZXJpYWxpemFibGUgdGVpbFEpIHsKLSAgICAgICAg
dGhpcy50ZWlsUSA9M0QgdGVpbFE7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVEVJ
TF9BX0hQRUlMIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldFRlaWxBSHBlaWwoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLnRlaWxBSHBlaWw7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0VGVpbEFIcGVpbChTZXJpYWxpemFibGUgdGVpbEFIcGVpbCkgewotICAgICAgICB0aGlzLnRl
aWxBSHBlaWwgPTNEIHRlaWxBSHBlaWw7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0Qi
VEVJTF9BX01QRUlMIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldFRlaWxBTXBlaWwoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLnRlaWxBTXBlaWw7Ci0gICAgfQotCi0gICAgcHVibGljIHZv
aWQgc2V0VGVpbEFNcGVpbChTZXJpYWxpemFibGUgdGVpbEFNcGVpbCkgewotICAgICAgICB0aGlz
LnRlaWxBTXBlaWwgPTNEIHRlaWxBTXBlaWw7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiVEVJTF9CIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldFRlaWxCKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy50ZWlsQjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUZWlsQihT
ZXJpYWxpemFibGUgdGVpbEIpIHsKLSAgICAgICAgdGhpcy50ZWlsQiA9M0QgdGVpbEI7Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVEVJTF9ITSIpCi0gICAgcHVibGljIFNlcmlhbGl6
YWJsZSBnZXRUZWlsSG0oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRlaWxIbTsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRUZWlsSG0oU2VyaWFsaXphYmxlIHRlaWxIbSkgewotICAgICAg
ICB0aGlzLnRlaWxIbSA9M0QgdGVpbEhtOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNE
IlRFSUxfVk0iKQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0VGVpbFZtKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy50ZWlsVm07Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VGVpbFZt
KFNlcmlhbGl6YWJsZSB0ZWlsVm0pIHsKLSAgICAgICAgdGhpcy50ZWlsVm0gPTNEIHRlaWxWbTsK
LSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJURUlMX1ZTT0hMRSIpCi0gICAgcHVibGlj
IFNlcmlhbGl6YWJsZSBnZXRUZWlsVnNvaGxlKCkgewotICAgICAgICByZXR1cm4gdGhpcy50ZWls
VnNvaGxlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFRlaWxWc29obGUoU2VyaWFsaXph
YmxlIHRlaWxWc29obGUpIHsKLSAgICAgICAgdGhpcy50ZWlsVnNvaGxlID0zRCB0ZWlsVnNvaGxl
OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlRFSUxfVEFVIikKLSAgICBwdWJsaWMg
U2VyaWFsaXphYmxlIGdldFRlaWxUYXUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRlaWxUYXU7
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VGVpbFRhdShTZXJpYWxpemFibGUgdGVpbFRh
dSkgewotICAgICAgICB0aGlzLnRlaWxUYXUgPTNEIHRlaWxUYXU7Ci0gICAgfQotCi0KLSAgICBA
Q29sdW1uKG5hbWU9M0QiVEVJTF9UQVVWIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldFRl
aWxUYXV2KCkgewotICAgICAgICByZXR1cm4gdGhpcy50ZWlsVGF1djsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRUZWlsVGF1dihTZXJpYWxpemFibGUgdGVpbFRhdXYpIHsKLSAgICAgICAg
dGhpcy50ZWlsVGF1diA9M0QgdGVpbFRhdXY7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiTUlUVEVMVFlQIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldE1pdHRlbHR5cCgpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMubWl0dGVsdHlwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lk
IHNldE1pdHRlbHR5cChTZXJpYWxpemFibGUgbWl0dGVsdHlwKSB7Ci0gICAgICAgIHRoaXMubWl0
dGVsdHlwID0zRCBtaXR0ZWx0eXA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRE0i
KQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0RG0oKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LmRtOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldERtKFNlcmlhbGl6YWJsZSBkbSkgewot
ICAgICAgICB0aGlzLmRtID0zRCBkbTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJT
SyIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRTaygpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuc2s7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U2soU2VyaWFsaXphYmxlIHNrKSB7
Ci0gICAgICAgIHRoaXMuc2sgPTNEIHNrOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNE
IlNPIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldFNvKCkgewotICAgICAgICByZXR1cm4g
dGhpcy5zbzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTbyhTZXJpYWxpemFibGUgc28p
IHsKLSAgICAgICAgdGhpcy5zbyA9M0Qgc287Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiVSIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRVKCkgewotICAgICAgICByZXR1cm4g
dGhpcy51OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFUoU2VyaWFsaXphYmxlIHUpIHsK
LSAgICAgICAgdGhpcy51ID0zRCB1OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQ5
MCIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXREOTAoKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLmQ5MDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREOTAoU2VyaWFsaXphYmxlIGQ5
MCkgewotICAgICAgICB0aGlzLmQ5MCA9M0QgZDkwOwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIkQ4NCIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXREODQoKSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLmQ4NDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREODQoU2VyaWFs
aXphYmxlIGQ4NCkgewotICAgICAgICB0aGlzLmQ4NCA9M0QgZDg0OwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIkQ4MCIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXREODAoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLmQ4MDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRE
ODAoU2VyaWFsaXphYmxlIGQ4MCkgewotICAgICAgICB0aGlzLmQ4MCA9M0QgZDgwOwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQ3NSIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBn
ZXRENzUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQ3NTsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRENzUoU2VyaWFsaXphYmxlIGQ3NSkgewotICAgICAgICB0aGlzLmQ3NSA9M0QgZDc1
OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQ3MCIpCi0gICAgcHVibGljIFNlcmlh
bGl6YWJsZSBnZXRENzAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQ3MDsKLSAgICB9Ci0KLSAg
ICBwdWJsaWMgdm9pZCBzZXRENzAoU2VyaWFsaXphYmxlIGQ3MCkgewotICAgICAgICB0aGlzLmQ3
MCA9M0QgZDcwOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQ2MCIpCi0gICAgcHVi
bGljIFNlcmlhbGl6YWJsZSBnZXRENjAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQ2MDsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRENjAoU2VyaWFsaXphYmxlIGQ2MCkgewotICAgICAg
ICB0aGlzLmQ2MCA9M0QgZDYwOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQ1MCIp
Ci0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRENTAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LmQ1MDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRENTAoU2VyaWFsaXphYmxlIGQ1MCkg
ewotICAgICAgICB0aGlzLmQ1MCA9M0QgZDUwOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIkQ0MCIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRENDAoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLmQ0MDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRENDAoU2VyaWFsaXph
YmxlIGQ0MCkgewotICAgICAgICB0aGlzLmQ0MCA9M0QgZDQwOwotICAgIH0KLQotCi0gICAgQENv
bHVtbihuYW1lPTNEIkQzMCIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXREMzAoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLmQzMDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREMzAo
U2VyaWFsaXphYmxlIGQzMCkgewotICAgICAgICB0aGlzLmQzMCA9M0QgZDMwOwotICAgIH0KLQot
Ci0gICAgQENvbHVtbihuYW1lPTNEIkQyNSIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRE
MjUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQyNTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXREMjUoU2VyaWFsaXphYmxlIGQyNSkgewotICAgICAgICB0aGlzLmQyNSA9M0QgZDI1Owot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQyMCIpCi0gICAgcHVibGljIFNlcmlhbGl6
YWJsZSBnZXREMjAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQyMDsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXREMjAoU2VyaWFsaXphYmxlIGQyMCkgewotICAgICAgICB0aGlzLmQyMCA9
M0QgZDIwOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQxNiIpCi0gICAgcHVibGlj
IFNlcmlhbGl6YWJsZSBnZXREMTYoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQxNjsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREMTYoU2VyaWFsaXphYmxlIGQxNikgewotICAgICAgICB0
aGlzLmQxNiA9M0QgZDE2OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQxMCIpCi0g
ICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXREMTAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQx
MDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREMTAoU2VyaWFsaXphYmxlIGQxMCkgewot
ICAgICAgICB0aGlzLmQxMCA9M0QgZDEwOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNE
IkRNSU4iKQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0RG1pbigpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuZG1pbjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREbWluKFNlcmlhbGl6
YWJsZSBkbWluKSB7Ci0gICAgICAgIHRoaXMuZG1pbiA9M0QgZG1pbjsKLSAgICB9Ci0KLQotICAg
IEBDb2x1bW4obmFtZT0zRCJEVVJDSERNSU4iKQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0
RHVyY2hkbWluKCkgewotICAgICAgICByZXR1cm4gdGhpcy5kdXJjaGRtaW47Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0RHVyY2hkbWluKFNlcmlhbGl6YWJsZSBkdXJjaGRtaW4pIHsKLSAg
ICAgICAgdGhpcy5kdXJjaGRtaW4gPTNEIGR1cmNoZG1pbjsKLSAgICB9Ci0KLQotICAgIEBDb2x1
bW4obmFtZT0zRCJETUFYIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldERtYXgoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLmRtYXg7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RG1h
eChTZXJpYWxpemFibGUgZG1heCkgewotICAgICAgICB0aGlzLmRtYXggPTNEIGRtYXg7Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRFVSQ0hETUFYIikKLSAgICBwdWJsaWMgU2VyaWFs
aXphYmxlIGdldER1cmNoZG1heCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZHVyY2hkbWF4Owot
ICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldER1cmNoZG1heChTZXJpYWxpemFibGUgZHVyY2hk
bWF4KSB7Ci0gICAgICAgIHRoaXMuZHVyY2hkbWF4ID0zRCBkdXJjaGRtYXg7Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiTl9HRVNDSElFQiIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJs
ZSBnZXROR2VzY2hpZWIoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLk5HZXNjaGllYjsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXROR2VzY2hpZWIoU2VyaWFsaXphYmxlIE5HZXNjaGllYikg
ewotICAgICAgICB0aGlzLk5HZXNjaGllYiA9M0QgTkdlc2NoaWViOwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIk5fVklFTFBLVCIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRO
VmllbHBrdCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuTlZpZWxwa3Q7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0TlZpZWxwa3QoU2VyaWFsaXphYmxlIE5WaWVscGt0KSB7Ci0gICAgICAg
IHRoaXMuTlZpZWxwa3QgPTNEIE5WaWVscGt0OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIlNZU19EQVRFIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldFN5c0RhdGUoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLnN5c0RhdGU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0
U3lzRGF0ZShTZXJpYWxpemFibGUgc3lzRGF0ZSkgewotICAgICAgICB0aGlzLnN5c0RhdGUgPTNE
IHN5c0RhdGU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQkVNRVJLVU5HIikKLSAg
ICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldEJlbWVya3VuZygpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuYmVtZXJrdW5nOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEJlbWVya3VuZyhTZXJp
YWxpemFibGUgYmVtZXJrdW5nKSB7Ci0gICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1
bmc7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTEFTVFVQREFURUQiKQotICAgIHB1
YmxpYyBTZXJpYWxpemFibGUgZ2V0TGFzdHVwZGF0ZWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
Lmxhc3R1cGRhdGVkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldExhc3R1cGRhdGVkKFNl
cmlhbGl6YWJsZSBsYXN0dXBkYXRlZCkgewotICAgICAgICB0aGlzLmxhc3R1cGRhdGVkID0zRCBs
YXN0dXBkYXRlZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJLTSIpCi0gICAgcHVi
bGljIFNlcmlhbGl6YWJsZSBnZXRLbSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMua207Ci0gICAg
fQotCi0gICAgcHVibGljIHZvaWQgc2V0S20oU2VyaWFsaXphYmxlIGttKSB7Ci0gICAgICAgIHRo
aXMua20gPTNEIGttOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkdMT1RBQlNUT0ZG
U0VUIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldEdsb3RhYnN0b2Zmc2V0KCkgewotICAg
ICAgICByZXR1cm4gdGhpcy5nbG90YWJzdG9mZnNldDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXRHbG90YWJzdG9mZnNldChTZXJpYWxpemFibGUgZ2xvdGFic3RvZmZzZXQpIHsKLSAgICAg
ICAgdGhpcy5nbG90YWJzdG9mZnNldCA9M0QgZ2xvdGFic3RvZmZzZXQ7Ci0gICAgfQotCi0KLSAg
ICBAQ29sdW1uKG5hbWU9M0QiU0xPVEFCU1RPRkZTRVQiKQotICAgIHB1YmxpYyBTZXJpYWxpemFi
bGUgZ2V0U2xvdGFic3RvZmZzZXQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnNsb3RhYnN0b2Zm
c2V0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNsb3RhYnN0b2Zmc2V0KFNlcmlhbGl6
YWJsZSBzbG90YWJzdG9mZnNldCkgewotICAgICAgICB0aGlzLnNsb3RhYnN0b2Zmc2V0ID0zRCBz
bG90YWJzdG9mZnNldDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJHQlJFSVRFVk9O
TElOS1MiKQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0R2JyZWl0ZXZvbmxpbmtzKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5nYnJlaXRldm9ubGlua3M7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0R2JyZWl0ZXZvbmxpbmtzKFNlcmlhbGl6YWJsZSBnYnJlaXRldm9ubGlua3MpIHsK
LSAgICAgICAgdGhpcy5nYnJlaXRldm9ubGlua3MgPTNEIGdicmVpdGV2b25saW5rczsKLSAgICB9
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJHQlJFSVRFQklTTElOS1MiKQotICAgIHB1YmxpYyBT
ZXJpYWxpemFibGUgZ2V0R2JyZWl0ZWJpc2xpbmtzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5n
YnJlaXRlYmlzbGlua3M7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0R2JyZWl0ZWJpc2xp
bmtzKFNlcmlhbGl6YWJsZSBnYnJlaXRlYmlzbGlua3MpIHsKLSAgICAgICAgdGhpcy5nYnJlaXRl
YmlzbGlua3MgPTNEIGdicmVpdGViaXNsaW5rczsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFt
ZT0zRCJTVEFOQU1FIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldFN0YW5hbWUoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLnN0YW5hbWU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0
U3RhbmFtZShTZXJpYWxpemFibGUgc3RhbmFtZSkgewotICAgICAgICB0aGlzLnN0YW5hbWUgPTNE
IHN0YW5hbWU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiU1RBS00iKQotICAgIHB1
YmxpYyBTZXJpYWxpemFibGUgZ2V0U3Rha20oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnN0YWtt
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFN0YWttKFNlcmlhbGl6YWJsZSBzdGFrbSkg
ewotICAgICAgICB0aGlzLnN0YWttID0zRCBzdGFrbTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4o
bmFtZT0zRCJHRVdBRVNTRVJJRCIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRHZXdhZXNz
ZXJpZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ2V3YWVzc2VyaWQ7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0R2V3YWVzc2VyaWQoU2VyaWFsaXphYmxlIGdld2Flc3NlcmlkKSB7Ci0g
ICAgICAgIHRoaXMuZ2V3YWVzc2VyaWQgPTNEIGdld2Flc3NlcmlkOwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIkdFV05BTUUiKQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0R2V3
bmFtZSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ2V3bmFtZTsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRHZXduYW1lKFNlcmlhbGl6YWJsZSBnZXduYW1lKSB7Ci0gICAgICAgIHRoaXMu
Z2V3bmFtZSA9M0QgZ2V3bmFtZTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJCRVpV
R1NQRUdFTElEIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldEJlenVnc3BlZ2VsaWQoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLmJlenVnc3BlZ2VsaWQ7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0QmV6dWdzcGVnZWxpZChTZXJpYWxpemFibGUgYmV6dWdzcGVnZWxpZCkgewotICAg
ICAgICB0aGlzLmJlenVnc3BlZ2VsaWQgPTNEIGJlenVnc3BlZ2VsaWQ7Ci0gICAgfQotCi0KLSAg
IHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb3RoZXIpIHsKLSAgICAgICAgIGlmICggKHRo
aXMgPTNEPTNEIG90aGVyICkgKSByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIGlmICggKG90aGVyID0z
RD0zRCBudWxsICkgKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICBpZiAoICEob3RoZXIgaW5zdGFu
Y2VvZiBNZXNzdW5nc3RhSWQpICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgTWVzc3VuZ3N0YUlk
IGNhc3RPdGhlciA9M0QgKCBNZXNzdW5nc3RhSWQgKSBvdGhlcjsKLQotICAgICAgICAgcmV0dXJu
ICggKHRoaXMuZ2V0TWVzc3VuZ2lkKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWVzc3VuZ2lkKCkpIHx8
ICg9CiB0aGlzLmdldE1lc3N1bmdpZCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1lc3N1bmdp
ZCgpIT0zRG51bGwgJiYgdGhpcy5nZT0KdE1lc3N1bmdpZCgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0
TWVzc3VuZ2lkKCkpICkgKQotICYmICggKHRoaXMuZ2V0U3RhdGlvbmlkKCk9M0Q9M0RjYXN0T3Ro
ZXIuZ2V0U3RhdGlvbmlkKCkpIHx8ICggdGhpcy5nZXRTdGE9CnRpb25pZCgpIT0zRG51bGwgJiYg
Y2FzdE90aGVyLmdldFN0YXRpb25pZCgpIT0zRG51bGwgJiYgdGhpcy5nZXRTdGF0aW9uaWQoKT0K
LmVxdWFscyhjYXN0T3RoZXIuZ2V0U3RhdGlvbmlkKCkpICkgKQotICYmICggKHRoaXMuZ2V0RGF0
dW0oKT0zRD0zRGNhc3RPdGhlci5nZXREYXR1bSgpKSB8fCAoIHRoaXMuZ2V0RGF0dW0oKSE9M0Q9
Cm51bGwgJiYgY2FzdE90aGVyLmdldERhdHVtKCkhPTNEbnVsbCAmJiB0aGlzLmdldERhdHVtKCku
ZXF1YWxzKGNhc3RPdGhlci5nZT0KdERhdHVtKCkpICkgKQotICYmICggKHRoaXMuZ2V0SHBlaWx1
bmdpZCgpPTNEPTNEY2FzdE90aGVyLmdldEhwZWlsdW5naWQoKSkgfHwgKCB0aGlzLmdldEg9CnBl
aWx1bmdpZCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldEhwZWlsdW5naWQoKSE9M0RudWxsICYm
IHRoaXMuZ2V0SHBlaWx1bj0KZ2lkKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRIcGVpbHVuZ2lkKCkp
ICkgKQotICYmICggKHRoaXMuZ2V0TXBlaWx1bmdpZCgpPTNEPTNEY2FzdE90aGVyLmdldE1wZWls
dW5naWQoKSkgfHwgKCB0aGlzLmdldE09CnBlaWx1bmdpZCgpIT0zRG51bGwgJiYgY2FzdE90aGVy
LmdldE1wZWlsdW5naWQoKSE9M0RudWxsICYmIHRoaXMuZ2V0TXBlaWx1bj0KZ2lkKCkuZXF1YWxz
KGNhc3RPdGhlci5nZXRNcGVpbHVuZ2lkKCkpICkgKQotICYmICggKHRoaXMuZ2V0R2ZhZW5nZXJp
ZCgpPTNEPTNEY2FzdE90aGVyLmdldEdmYWVuZ2VyaWQoKSkgfHwgKCB0aGlzLmdldEc9CmZhZW5n
ZXJpZCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldEdmYWVuZ2VyaWQoKSE9M0RudWxsICYmIHRo
aXMuZ2V0R2ZhZW5nZT0KcmlkKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRHZmFlbmdlcmlkKCkpICkg
KQotICYmICggKHRoaXMuZ2V0R3NpZWJzYXR6aWQoKT0zRD0zRGNhc3RPdGhlci5nZXRHc2llYnNh
dHppZCgpKSB8fCAoIHRoaXMuZ2U9CnRHc2llYnNhdHppZCgpIT0zRG51bGwgJiYgY2FzdE90aGVy
LmdldEdzaWVic2F0emlkKCkhPTNEbnVsbCAmJiB0aGlzLmdldEdzaT0KZWJzYXR6aWQoKS5lcXVh
bHMoY2FzdE90aGVyLmdldEdzaWVic2F0emlkKCkpICkgKQotICYmICggKHRoaXMuZ2V0TWVzc25y
KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWVzc25yKCkpIHx8ICggdGhpcy5nZXRNZXNzbnIoKSE9Cj0z
RG51bGwgJiYgY2FzdE90aGVyLmdldE1lc3NucigpIT0zRG51bGwgJiYgdGhpcy5nZXRNZXNzbnIo
KS5lcXVhbHMoY2FzdE90aD0KZXIuZ2V0TWVzc25yKCkpICkgKQotICYmICggKHRoaXMuZ2V0Rmd1
ZSgpPTNEPTNEY2FzdE90aGVyLmdldEZndWUoKSkgfHwgKCB0aGlzLmdldEZndWUoKSE9M0RudWw9
CmwgJiYgY2FzdE90aGVyLmdldEZndWUoKSE9M0RudWxsICYmIHRoaXMuZ2V0Rmd1ZSgpLmVxdWFs
cyhjYXN0T3RoZXIuZ2V0Rmd1ZT0KKCkpICkgKQotICYmICggKHRoaXMuZ2V0VWhydm9uKCk9M0Q9
M0RjYXN0T3RoZXIuZ2V0VWhydm9uKCkpIHx8ICggdGhpcy5nZXRVaHJ2b24oKSE9Cj0zRG51bGwg
JiYgY2FzdE90aGVyLmdldFVocnZvbigpIT0zRG51bGwgJiYgdGhpcy5nZXRVaHJ2b24oKS5lcXVh
bHMoY2FzdE90aD0KZXIuZ2V0VWhydm9uKCkpICkgKQotICYmICggKHRoaXMuZ2V0VWhyYmlzKCk9
M0Q9M0RjYXN0T3RoZXIuZ2V0VWhyYmlzKCkpIHx8ICggdGhpcy5nZXRVaHJiaXMoKSE9Cj0zRG51
bGwgJiYgY2FzdE90aGVyLmdldFVocmJpcygpIT0zRG51bGwgJiYgdGhpcy5nZXRVaHJiaXMoKS5l
cXVhbHMoY2FzdE90aD0KZXIuZ2V0VWhyYmlzKCkpICkgKQotICYmICggKHRoaXMuZ2V0V3NwY20o
KT0zRD0zRGNhc3RPdGhlci5nZXRXc3BjbSgpKSB8fCAoIHRoaXMuZ2V0V3NwY20oKSE9M0Q9Cm51
bGwgJiYgY2FzdE90aGVyLmdldFdzcGNtKCkhPTNEbnVsbCAmJiB0aGlzLmdldFdzcGNtKCkuZXF1
YWxzKGNhc3RPdGhlci5nZT0KdFdzcGNtKCkpICkgKQotICYmICggKHRoaXMuZ2V0UUJwZWdlbCgp
PTNEPTNEY2FzdE90aGVyLmdldFFCcGVnZWwoKSkgfHwgKCB0aGlzLmdldFFCcGVnZWw9CigpIT0z
RG51bGwgJiYgY2FzdE90aGVyLmdldFFCcGVnZWwoKSE9M0RudWxsICYmIHRoaXMuZ2V0UUJwZWdl
bCgpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRRQnBlZ2VsKCkpICkgKQotICYmICggKHRoaXMuZ2V0
V3Nwbm4oKT0zRD0zRGNhc3RPdGhlci5nZXRXc3BubigpKSB8fCAoIHRoaXMuZ2V0V3Nwbm4oKSE9
M0Q9Cm51bGwgJiYgY2FzdE90aGVyLmdldFdzcG5uKCkhPTNEbnVsbCAmJiB0aGlzLmdldFdzcG5u
KCkuZXF1YWxzKGNhc3RPdGhlci5nZT0KdFdzcG5uKCkpICkgKQotICYmICggKHRoaXMuZ2V0SWUo
KT0zRD0zRGNhc3RPdGhlci5nZXRJZSgpKSB8fCAoIHRoaXMuZ2V0SWUoKSE9M0RudWxsICYmIGM9
CmFzdE90aGVyLmdldEllKCkhPTNEbnVsbCAmJiB0aGlzLmdldEllKCkuZXF1YWxzKGNhc3RPdGhl
ci5nZXRJZSgpKSApICkKLSAmJiAoICh0aGlzLmdldFd0ZW1wKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0
V3RlbXAoKSkgfHwgKCB0aGlzLmdldFd0ZW1wKCkhPTNEPQpudWxsICYmIGNhc3RPdGhlci5nZXRX
dGVtcCgpIT0zRG51bGwgJiYgdGhpcy5nZXRXdGVtcCgpLmVxdWFscyhjYXN0T3RoZXIuZ2U9CnRX
dGVtcCgpKSApICkKLSAmJiAoICh0aGlzLmdldEdicmVpdGUoKT0zRD0zRGNhc3RPdGhlci5nZXRH
YnJlaXRlKCkpIHx8ICggdGhpcy5nZXRHYnJlaXRlPQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5n
ZXRHYnJlaXRlKCkhPTNEbnVsbCAmJiB0aGlzLmdldEdicmVpdGUoKS5lcXVhbHMoY2E9CnN0T3Ro
ZXIuZ2V0R2JyZWl0ZSgpKSApICkKLSAmJiAoICh0aGlzLmdldEdicmVpdGV2b24oKT0zRD0zRGNh
c3RPdGhlci5nZXRHYnJlaXRldm9uKCkpIHx8ICggdGhpcy5nZXRHPQpicmVpdGV2b24oKSE9M0Ru
dWxsICYmIGNhc3RPdGhlci5nZXRHYnJlaXRldm9uKCkhPTNEbnVsbCAmJiB0aGlzLmdldEdicmVp
dGU9CnZvbigpLmVxdWFscyhjYXN0T3RoZXIuZ2V0R2JyZWl0ZXZvbigpKSApICkKLSAmJiAoICh0
aGlzLmdldEdicmVpdGViaXMoKT0zRD0zRGNhc3RPdGhlci5nZXRHYnJlaXRlYmlzKCkpIHx8ICgg
dGhpcy5nZXRHPQpicmVpdGViaXMoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRHYnJlaXRlYmlz
KCkhPTNEbnVsbCAmJiB0aGlzLmdldEdicmVpdGU9CmJpcygpLmVxdWFscyhjYXN0T3RoZXIuZ2V0
R2JyZWl0ZWJpcygpKSApICkKLSAmJiAoICh0aGlzLmdldFRnZXNjaGllYmUoKT0zRD0zRGNhc3RP
dGhlci5nZXRUZ2VzY2hpZWJlKCkpIHx8ICggdGhpcy5nZXRUPQpnZXNjaGllYmUoKSE9M0RudWxs
ICYmIGNhc3RPdGhlci5nZXRUZ2VzY2hpZWJlKCkhPTNEbnVsbCAmJiB0aGlzLmdldFRnZXNjaGk9
CmViZSgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0VGdlc2NoaWViZSgpKSApICkKLSAmJiAoICh0aGlz
LmdldFRzYW5kKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0VHNhbmQoKSkgfHwgKCB0aGlzLmdldFRzYW5k
KCkhPTNEPQpudWxsICYmIGNhc3RPdGhlci5nZXRUc2FuZCgpIT0zRG51bGwgJiYgdGhpcy5nZXRU
c2FuZCgpLmVxdWFscyhjYXN0T3RoZXIuZ2U9CnRUc2FuZCgpKSApICkKLSAmJiAoICh0aGlzLmdl
dFRzY2h3ZWIoKT0zRD0zRGNhc3RPdGhlci5nZXRUc2Nod2ViKCkpIHx8ICggdGhpcy5nZXRUc2No
d2ViPQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRUc2Nod2ViKCkhPTNEbnVsbCAmJiB0aGlz
LmdldFRzY2h3ZWIoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0VHNjaHdlYigpKSApICkKLSAmJiAo
ICh0aGlzLmdldENzY2h3ZWIoKT0zRD0zRGNhc3RPdGhlci5nZXRDc2Nod2ViKCkpIHx8ICggdGhp
cy5nZXRDc2Nod2ViPQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRDc2Nod2ViKCkhPTNEbnVs
bCAmJiB0aGlzLmdldENzY2h3ZWIoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0Q3NjaHdlYigpKSAp
ICkKLSAmJiAoICh0aGlzLmdldFVmZXJsaWFic3QoKT0zRD0zRGNhc3RPdGhlci5nZXRVZmVybGlh
YnN0KCkpIHx8ICggdGhpcy5nZXRVPQpmZXJsaWFic3QoKSE9M0RudWxsICYmIGNhc3RPdGhlci5n
ZXRVZmVybGlhYnN0KCkhPTNEbnVsbCAmJiB0aGlzLmdldFVmZXJsaWE9CmJzdCgpLmVxdWFscyhj
YXN0T3RoZXIuZ2V0VWZlcmxpYWJzdCgpKSApICkKLSAmJiAoICh0aGlzLmdldFVmZXJyZWFic3Qo
KT0zRD0zRGNhc3RPdGhlci5nZXRVZmVycmVhYnN0KCkpIHx8ICggdGhpcy5nZXRVPQpmZXJyZWFi
c3QoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRVZmVycmVhYnN0KCkhPTNEbnVsbCAmJiB0aGlz
LmdldFVmZXJyZWE9CmJzdCgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0VWZlcnJlYWJzdCgpKSApICkK
LSAmJiAoICh0aGlzLmdldFEoKT0zRD0zRGNhc3RPdGhlci5nZXRRKCkpIHx8ICggdGhpcy5nZXRR
KCkhPTNEbnVsbCAmJiBjYXN0PQpPdGhlci5nZXRRKCkhPTNEbnVsbCAmJiB0aGlzLmdldFEoKS5l
cXVhbHMoY2FzdE90aGVyLmdldFEoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRBSHBlaWwoKT0zRD0z
RGNhc3RPdGhlci5nZXRBSHBlaWwoKSkgfHwgKCB0aGlzLmdldEFIcGVpbCgpIT0KPTNEbnVsbCAm
JiBjYXN0T3RoZXIuZ2V0QUhwZWlsKCkhPTNEbnVsbCAmJiB0aGlzLmdldEFIcGVpbCgpLmVxdWFs
cyhjYXN0T3RoPQplci5nZXRBSHBlaWwoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRBTXBlaWwoKT0z
RD0zRGNhc3RPdGhlci5nZXRBTXBlaWwoKSkgfHwgKCB0aGlzLmdldEFNcGVpbCgpIT0KPTNEbnVs
bCAmJiBjYXN0T3RoZXIuZ2V0QU1wZWlsKCkhPTNEbnVsbCAmJiB0aGlzLmdldEFNcGVpbCgpLmVx
dWFscyhjYXN0T3RoPQplci5nZXRBTXBlaWwoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRCKCk9M0Q9
M0RjYXN0T3RoZXIuZ2V0QigpKSB8fCAoIHRoaXMuZ2V0QigpIT0zRG51bGwgJiYgY2FzdD0KT3Ro
ZXIuZ2V0QigpIT0zRG51bGwgJiYgdGhpcy5nZXRCKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRCKCkp
ICkgKQotICYmICggKHRoaXMuZ2V0SG0oKT0zRD0zRGNhc3RPdGhlci5nZXRIbSgpKSB8fCAoIHRo
aXMuZ2V0SG0oKSE9M0RudWxsICYmIGM9CmFzdE90aGVyLmdldEhtKCkhPTNEbnVsbCAmJiB0aGlz
LmdldEhtKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRIbSgpKSApICkKLSAmJiAoICh0aGlzLmdldFZt
KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0Vm0oKSkgfHwgKCB0aGlzLmdldFZtKCkhPTNEbnVsbCAmJiBj
PQphc3RPdGhlci5nZXRWbSgpIT0zRG51bGwgJiYgdGhpcy5nZXRWbSgpLmVxdWFscyhjYXN0T3Ro
ZXIuZ2V0Vm0oKSkgKSApCi0gJiYgKCAodGhpcy5nZXRWc29obGUoKT0zRD0zRGNhc3RPdGhlci5n
ZXRWc29obGUoKSkgfHwgKCB0aGlzLmdldFZzb2hsZSgpIT0KPTNEbnVsbCAmJiBjYXN0T3RoZXIu
Z2V0VnNvaGxlKCkhPTNEbnVsbCAmJiB0aGlzLmdldFZzb2hsZSgpLmVxdWFscyhjYXN0T3RoPQpl
ci5nZXRWc29obGUoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRUYXUoKT0zRD0zRGNhc3RPdGhlci5n
ZXRUYXUoKSkgfHwgKCB0aGlzLmdldFRhdSgpIT0zRG51bGwgJj0KJiBjYXN0T3RoZXIuZ2V0VGF1
KCkhPTNEbnVsbCAmJiB0aGlzLmdldFRhdSgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0VGF1KCkpICkg
KQotICYmICggKHRoaXMuZ2V0VGF1digpPTNEPTNEY2FzdE90aGVyLmdldFRhdXYoKSkgfHwgKCB0
aGlzLmdldFRhdXYoKSE9M0RudWw9CmwgJiYgY2FzdE90aGVyLmdldFRhdXYoKSE9M0RudWxsICYm
IHRoaXMuZ2V0VGF1digpLmVxdWFscyhjYXN0T3RoZXIuZ2V0VGF1dj0KKCkpICkgKQotICYmICgg
KHRoaXMuZ2V0VGVpbFEoKT0zRD0zRGNhc3RPdGhlci5nZXRUZWlsUSgpKSB8fCAoIHRoaXMuZ2V0
VGVpbFEoKSE9M0Q9Cm51bGwgJiYgY2FzdE90aGVyLmdldFRlaWxRKCkhPTNEbnVsbCAmJiB0aGlz
LmdldFRlaWxRKCkuZXF1YWxzKGNhc3RPdGhlci5nZT0KdFRlaWxRKCkpICkgKQotICYmICggKHRo
aXMuZ2V0VGVpbEFIcGVpbCgpPTNEPTNEY2FzdE90aGVyLmdldFRlaWxBSHBlaWwoKSkgfHwgKCB0
aGlzLmdldFQ9CmVpbEFIcGVpbCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFRlaWxBSHBlaWwo
KSE9M0RudWxsICYmIHRoaXMuZ2V0VGVpbEFIcD0KZWlsKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRU
ZWlsQUhwZWlsKCkpICkgKQotICYmICggKHRoaXMuZ2V0VGVpbEFNcGVpbCgpPTNEPTNEY2FzdE90
aGVyLmdldFRlaWxBTXBlaWwoKSkgfHwgKCB0aGlzLmdldFQ9CmVpbEFNcGVpbCgpIT0zRG51bGwg
JiYgY2FzdE90aGVyLmdldFRlaWxBTXBlaWwoKSE9M0RudWxsICYmIHRoaXMuZ2V0VGVpbEFNcD0K
ZWlsKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRUZWlsQU1wZWlsKCkpICkgKQotICYmICggKHRoaXMu
Z2V0VGVpbEIoKT0zRD0zRGNhc3RPdGhlci5nZXRUZWlsQigpKSB8fCAoIHRoaXMuZ2V0VGVpbEIo
KSE9M0Q9Cm51bGwgJiYgY2FzdE90aGVyLmdldFRlaWxCKCkhPTNEbnVsbCAmJiB0aGlzLmdldFRl
aWxCKCkuZXF1YWxzKGNhc3RPdGhlci5nZT0KdFRlaWxCKCkpICkgKQotICYmICggKHRoaXMuZ2V0
VGVpbEhtKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0VGVpbEhtKCkpIHx8ICggdGhpcy5nZXRUZWlsSG0o
KSE9Cj0zRG51bGwgJiYgY2FzdE90aGVyLmdldFRlaWxIbSgpIT0zRG51bGwgJiYgdGhpcy5nZXRU
ZWlsSG0oKS5lcXVhbHMoY2FzdE90aD0KZXIuZ2V0VGVpbEhtKCkpICkgKQotICYmICggKHRoaXMu
Z2V0VGVpbFZtKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0VGVpbFZtKCkpIHx8ICggdGhpcy5nZXRUZWls
Vm0oKSE9Cj0zRG51bGwgJiYgY2FzdE90aGVyLmdldFRlaWxWbSgpIT0zRG51bGwgJiYgdGhpcy5n
ZXRUZWlsVm0oKS5lcXVhbHMoY2FzdE90aD0KZXIuZ2V0VGVpbFZtKCkpICkgKQotICYmICggKHRo
aXMuZ2V0VGVpbFZzb2hsZSgpPTNEPTNEY2FzdE90aGVyLmdldFRlaWxWc29obGUoKSkgfHwgKCB0
aGlzLmdldFQ9CmVpbFZzb2hsZSgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFRlaWxWc29obGUo
KSE9M0RudWxsICYmIHRoaXMuZ2V0VGVpbFZzbz0KaGxlKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRU
ZWlsVnNvaGxlKCkpICkgKQotICYmICggKHRoaXMuZ2V0VGVpbFRhdSgpPTNEPTNEY2FzdE90aGVy
LmdldFRlaWxUYXUoKSkgfHwgKCB0aGlzLmdldFRlaWxUYXU9CigpIT0zRG51bGwgJiYgY2FzdE90
aGVyLmdldFRlaWxUYXUoKSE9M0RudWxsICYmIHRoaXMuZ2V0VGVpbFRhdSgpLmVxdWFscyhjYT0K
c3RPdGhlci5nZXRUZWlsVGF1KCkpICkgKQotICYmICggKHRoaXMuZ2V0VGVpbFRhdXYoKT0zRD0z
RGNhc3RPdGhlci5nZXRUZWlsVGF1digpKSB8fCAoIHRoaXMuZ2V0VGVpbFQ9CmF1digpIT0zRG51
bGwgJiYgY2FzdE90aGVyLmdldFRlaWxUYXV2KCkhPTNEbnVsbCAmJiB0aGlzLmdldFRlaWxUYXV2
KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldFRlaWxUYXV2KCkpICkgKQotICYmICggKHRoaXMuZ2V0
TWl0dGVsdHlwKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWl0dGVsdHlwKCkpIHx8ICggdGhpcy5nZXRN
aXQ9CnRlbHR5cCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1pdHRlbHR5cCgpIT0zRG51bGwg
JiYgdGhpcy5nZXRNaXR0ZWx0eXAoKT0KLmVxdWFscyhjYXN0T3RoZXIuZ2V0TWl0dGVsdHlwKCkp
ICkgKQotICYmICggKHRoaXMuZ2V0RG0oKT0zRD0zRGNhc3RPdGhlci5nZXREbSgpKSB8fCAoIHRo
aXMuZ2V0RG0oKSE9M0RudWxsICYmIGM9CmFzdE90aGVyLmdldERtKCkhPTNEbnVsbCAmJiB0aGlz
LmdldERtKCkuZXF1YWxzKGNhc3RPdGhlci5nZXREbSgpKSApICkKLSAmJiAoICh0aGlzLmdldFNr
KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0U2soKSkgfHwgKCB0aGlzLmdldFNrKCkhPTNEbnVsbCAmJiBj
PQphc3RPdGhlci5nZXRTaygpIT0zRG51bGwgJiYgdGhpcy5nZXRTaygpLmVxdWFscyhjYXN0T3Ro
ZXIuZ2V0U2soKSkgKSApCi0gJiYgKCAodGhpcy5nZXRTbygpPTNEPTNEY2FzdE90aGVyLmdldFNv
KCkpIHx8ICggdGhpcy5nZXRTbygpIT0zRG51bGwgJiYgYz0KYXN0T3RoZXIuZ2V0U28oKSE9M0Ru
dWxsICYmIHRoaXMuZ2V0U28oKS5lcXVhbHMoY2FzdE90aGVyLmdldFNvKCkpICkgKQotICYmICgg
KHRoaXMuZ2V0VSgpPTNEPTNEY2FzdE90aGVyLmdldFUoKSkgfHwgKCB0aGlzLmdldFUoKSE9M0Ru
dWxsICYmIGNhc3Q9Ck90aGVyLmdldFUoKSE9M0RudWxsICYmIHRoaXMuZ2V0VSgpLmVxdWFscyhj
YXN0T3RoZXIuZ2V0VSgpKSApICkKLSAmJiAoICh0aGlzLmdldEQ5MCgpPTNEPTNEY2FzdE90aGVy
LmdldEQ5MCgpKSB8fCAoIHRoaXMuZ2V0RDkwKCkhPTNEbnVsbCAmPQomIGNhc3RPdGhlci5nZXRE
OTAoKSE9M0RudWxsICYmIHRoaXMuZ2V0RDkwKCkuZXF1YWxzKGNhc3RPdGhlci5nZXREOTAoKSkg
KSApCi0gJiYgKCAodGhpcy5nZXREODQoKT0zRD0zRGNhc3RPdGhlci5nZXREODQoKSkgfHwgKCB0
aGlzLmdldEQ4NCgpIT0zRG51bGwgJj0KJiBjYXN0T3RoZXIuZ2V0RDg0KCkhPTNEbnVsbCAmJiB0
aGlzLmdldEQ4NCgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0RDg0KCkpICkgKQotICYmICggKHRoaXMu
Z2V0RDgwKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RDgwKCkpIHx8ICggdGhpcy5nZXREODAoKSE9M0Ru
dWxsICY9CiYgY2FzdE90aGVyLmdldEQ4MCgpIT0zRG51bGwgJiYgdGhpcy5nZXREODAoKS5lcXVh
bHMoY2FzdE90aGVyLmdldEQ4MCgpKSApICkKLSAmJiAoICh0aGlzLmdldEQ3NSgpPTNEPTNEY2Fz
dE90aGVyLmdldEQ3NSgpKSB8fCAoIHRoaXMuZ2V0RDc1KCkhPTNEbnVsbCAmPQomIGNhc3RPdGhl
ci5nZXRENzUoKSE9M0RudWxsICYmIHRoaXMuZ2V0RDc1KCkuZXF1YWxzKGNhc3RPdGhlci5nZXRE
NzUoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRENzAoKT0zRD0zRGNhc3RPdGhlci5nZXRENzAoKSkg
fHwgKCB0aGlzLmdldEQ3MCgpIT0zRG51bGwgJj0KJiBjYXN0T3RoZXIuZ2V0RDcwKCkhPTNEbnVs
bCAmJiB0aGlzLmdldEQ3MCgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0RDcwKCkpICkgKQotICYmICgg
KHRoaXMuZ2V0RDYwKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RDYwKCkpIHx8ICggdGhpcy5nZXRENjAo
KSE9M0RudWxsICY9CiYgY2FzdE90aGVyLmdldEQ2MCgpIT0zRG51bGwgJiYgdGhpcy5nZXRENjAo
KS5lcXVhbHMoY2FzdE90aGVyLmdldEQ2MCgpKSApICkKLSAmJiAoICh0aGlzLmdldEQ1MCgpPTNE
PTNEY2FzdE90aGVyLmdldEQ1MCgpKSB8fCAoIHRoaXMuZ2V0RDUwKCkhPTNEbnVsbCAmPQomIGNh
c3RPdGhlci5nZXRENTAoKSE9M0RudWxsICYmIHRoaXMuZ2V0RDUwKCkuZXF1YWxzKGNhc3RPdGhl
ci5nZXRENTAoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRENDAoKT0zRD0zRGNhc3RPdGhlci5nZXRE
NDAoKSkgfHwgKCB0aGlzLmdldEQ0MCgpIT0zRG51bGwgJj0KJiBjYXN0T3RoZXIuZ2V0RDQwKCkh
PTNEbnVsbCAmJiB0aGlzLmdldEQ0MCgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0RDQwKCkpICkgKQot
ICYmICggKHRoaXMuZ2V0RDMwKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RDMwKCkpIHx8ICggdGhpcy5n
ZXREMzAoKSE9M0RudWxsICY9CiYgY2FzdE90aGVyLmdldEQzMCgpIT0zRG51bGwgJiYgdGhpcy5n
ZXREMzAoKS5lcXVhbHMoY2FzdE90aGVyLmdldEQzMCgpKSApICkKLSAmJiAoICh0aGlzLmdldEQy
NSgpPTNEPTNEY2FzdE90aGVyLmdldEQyNSgpKSB8fCAoIHRoaXMuZ2V0RDI1KCkhPTNEbnVsbCAm
PQomIGNhc3RPdGhlci5nZXREMjUoKSE9M0RudWxsICYmIHRoaXMuZ2V0RDI1KCkuZXF1YWxzKGNh
c3RPdGhlci5nZXREMjUoKSkgKSApCi0gJiYgKCAodGhpcy5nZXREMjAoKT0zRD0zRGNhc3RPdGhl
ci5nZXREMjAoKSkgfHwgKCB0aGlzLmdldEQyMCgpIT0zRG51bGwgJj0KJiBjYXN0T3RoZXIuZ2V0
RDIwKCkhPTNEbnVsbCAmJiB0aGlzLmdldEQyMCgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0RDIwKCkp
ICkgKQotICYmICggKHRoaXMuZ2V0RDE2KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RDE2KCkpIHx8ICgg
dGhpcy5nZXREMTYoKSE9M0RudWxsICY9CiYgY2FzdE90aGVyLmdldEQxNigpIT0zRG51bGwgJiYg
dGhpcy5nZXREMTYoKS5lcXVhbHMoY2FzdE90aGVyLmdldEQxNigpKSApICkKLSAmJiAoICh0aGlz
LmdldEQxMCgpPTNEPTNEY2FzdE90aGVyLmdldEQxMCgpKSB8fCAoIHRoaXMuZ2V0RDEwKCkhPTNE
bnVsbCAmPQomIGNhc3RPdGhlci5nZXREMTAoKSE9M0RudWxsICYmIHRoaXMuZ2V0RDEwKCkuZXF1
YWxzKGNhc3RPdGhlci5nZXREMTAoKSkgKSApCi0gJiYgKCAodGhpcy5nZXREbWluKCk9M0Q9M0Rj
YXN0T3RoZXIuZ2V0RG1pbigpKSB8fCAoIHRoaXMuZ2V0RG1pbigpIT0zRG51bD0KbCAmJiBjYXN0
T3RoZXIuZ2V0RG1pbigpIT0zRG51bGwgJiYgdGhpcy5nZXREbWluKCkuZXF1YWxzKGNhc3RPdGhl
ci5nZXREbWluPQooKSkgKSApCi0gJiYgKCAodGhpcy5nZXREdXJjaGRtaW4oKT0zRD0zRGNhc3RP
dGhlci5nZXREdXJjaGRtaW4oKSkgfHwgKCB0aGlzLmdldER1cj0KY2hkbWluKCkhPTNEbnVsbCAm
JiBjYXN0T3RoZXIuZ2V0RHVyY2hkbWluKCkhPTNEbnVsbCAmJiB0aGlzLmdldER1cmNoZG1pbigp
PQouZXF1YWxzKGNhc3RPdGhlci5nZXREdXJjaGRtaW4oKSkgKSApCi0gJiYgKCAodGhpcy5nZXRE
bWF4KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RG1heCgpKSB8fCAoIHRoaXMuZ2V0RG1heCgpIT0zRG51
bD0KbCAmJiBjYXN0T3RoZXIuZ2V0RG1heCgpIT0zRG51bGwgJiYgdGhpcy5nZXREbWF4KCkuZXF1
YWxzKGNhc3RPdGhlci5nZXREbWF4PQooKSkgKSApCi0gJiYgKCAodGhpcy5nZXREdXJjaGRtYXgo
KT0zRD0zRGNhc3RPdGhlci5nZXREdXJjaGRtYXgoKSkgfHwgKCB0aGlzLmdldER1cj0KY2hkbWF4
KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0RHVyY2hkbWF4KCkhPTNEbnVsbCAmJiB0aGlzLmdl
dER1cmNoZG1heCgpPQouZXF1YWxzKGNhc3RPdGhlci5nZXREdXJjaGRtYXgoKSkgKSApCi0gJiYg
KCAodGhpcy5nZXROR2VzY2hpZWIoKT0zRD0zRGNhc3RPdGhlci5nZXROR2VzY2hpZWIoKSkgfHwg
KCB0aGlzLmdldE5HZT0Kc2NoaWViKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0Tkdlc2NoaWVi
KCkhPTNEbnVsbCAmJiB0aGlzLmdldE5HZXNjaGllYigpPQouZXF1YWxzKGNhc3RPdGhlci5nZXRO
R2VzY2hpZWIoKSkgKSApCi0gJiYgKCAodGhpcy5nZXROVmllbHBrdCgpPTNEPTNEY2FzdE90aGVy
LmdldE5WaWVscGt0KCkpIHx8ICggdGhpcy5nZXROVmllbD0KcGt0KCkhPTNEbnVsbCAmJiBjYXN0
T3RoZXIuZ2V0TlZpZWxwa3QoKSE9M0RudWxsICYmIHRoaXMuZ2V0TlZpZWxwa3QoKS5lcXVhPQps
cyhjYXN0T3RoZXIuZ2V0TlZpZWxwa3QoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRTeXNEYXRlKCk9
M0Q9M0RjYXN0T3RoZXIuZ2V0U3lzRGF0ZSgpKSB8fCAoIHRoaXMuZ2V0U3lzRGF0ZT0KKCkhPTNE
bnVsbCAmJiBjYXN0T3RoZXIuZ2V0U3lzRGF0ZSgpIT0zRG51bGwgJiYgdGhpcy5nZXRTeXNEYXRl
KCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFN5c0RhdGUoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRC
ZW1lcmt1bmcoKT0zRD0zRGNhc3RPdGhlci5nZXRCZW1lcmt1bmcoKSkgfHwgKCB0aGlzLmdldEJl
bT0KZXJrdW5nKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0QmVtZXJrdW5nKCkhPTNEbnVsbCAm
JiB0aGlzLmdldEJlbWVya3VuZygpPQouZXF1YWxzKGNhc3RPdGhlci5nZXRCZW1lcmt1bmcoKSkg
KSApCi0gJiYgKCAodGhpcy5nZXRMYXN0dXBkYXRlZCgpPTNEPTNEY2FzdE90aGVyLmdldExhc3R1
cGRhdGVkKCkpIHx8ICggdGhpcy5nZT0KdExhc3R1cGRhdGVkKCkhPTNEbnVsbCAmJiBjYXN0T3Ro
ZXIuZ2V0TGFzdHVwZGF0ZWQoKSE9M0RudWxsICYmIHRoaXMuZ2V0TGFzPQp0dXBkYXRlZCgpLmVx
dWFscyhjYXN0T3RoZXIuZ2V0TGFzdHVwZGF0ZWQoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRLbSgp
PTNEPTNEY2FzdE90aGVyLmdldEttKCkpIHx8ICggdGhpcy5nZXRLbSgpIT0zRG51bGwgJiYgYz0K
YXN0T3RoZXIuZ2V0S20oKSE9M0RudWxsICYmIHRoaXMuZ2V0S20oKS5lcXVhbHMoY2FzdE90aGVy
LmdldEttKCkpICkgKQotICYmICggKHRoaXMuZ2V0R2xvdGFic3RvZmZzZXQoKT0zRD0zRGNhc3RP
dGhlci5nZXRHbG90YWJzdG9mZnNldCgpKSB8fCAoIHQ9Cmhpcy5nZXRHbG90YWJzdG9mZnNldCgp
IT0zRG51bGwgJiYgY2FzdE90aGVyLmdldEdsb3RhYnN0b2Zmc2V0KCkhPTNEbnVsbCAmJj0KIHRo
aXMuZ2V0R2xvdGFic3RvZmZzZXQoKS5lcXVhbHMoY2FzdE90aGVyLmdldEdsb3RhYnN0b2Zmc2V0
KCkpICkgKQotICYmICggKHRoaXMuZ2V0U2xvdGFic3RvZmZzZXQoKT0zRD0zRGNhc3RPdGhlci5n
ZXRTbG90YWJzdG9mZnNldCgpKSB8fCAoIHQ9Cmhpcy5nZXRTbG90YWJzdG9mZnNldCgpIT0zRG51
bGwgJiYgY2FzdE90aGVyLmdldFNsb3RhYnN0b2Zmc2V0KCkhPTNEbnVsbCAmJj0KIHRoaXMuZ2V0
U2xvdGFic3RvZmZzZXQoKS5lcXVhbHMoY2FzdE90aGVyLmdldFNsb3RhYnN0b2Zmc2V0KCkpICkg
KQotICYmICggKHRoaXMuZ2V0R2JyZWl0ZXZvbmxpbmtzKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0R2Jy
ZWl0ZXZvbmxpbmtzKCkpIHx8ICg9CiB0aGlzLmdldEdicmVpdGV2b25saW5rcygpIT0zRG51bGwg
JiYgY2FzdE90aGVyLmdldEdicmVpdGV2b25saW5rcygpIT0zRG51bD0KbCAmJiB0aGlzLmdldEdi
cmVpdGV2b25saW5rcygpLmVxdWFscyhjYXN0T3RoZXIuZ2V0R2JyZWl0ZXZvbmxpbmtzKCkpICkg
KQotICYmICggKHRoaXMuZ2V0R2JyZWl0ZWJpc2xpbmtzKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0R2Jy
ZWl0ZWJpc2xpbmtzKCkpIHx8ICg9CiB0aGlzLmdldEdicmVpdGViaXNsaW5rcygpIT0zRG51bGwg
JiYgY2FzdE90aGVyLmdldEdicmVpdGViaXNsaW5rcygpIT0zRG51bD0KbCAmJiB0aGlzLmdldEdi
cmVpdGViaXNsaW5rcygpLmVxdWFscyhjYXN0T3RoZXIuZ2V0R2JyZWl0ZWJpc2xpbmtzKCkpICkg
KQotICYmICggKHRoaXMuZ2V0U3RhbmFtZSgpPTNEPTNEY2FzdE90aGVyLmdldFN0YW5hbWUoKSkg
fHwgKCB0aGlzLmdldFN0YW5hbWU9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFN0YW5hbWUo
KSE9M0RudWxsICYmIHRoaXMuZ2V0U3RhbmFtZSgpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRTdGFu
YW1lKCkpICkgKQotICYmICggKHRoaXMuZ2V0U3Rha20oKT0zRD0zRGNhc3RPdGhlci5nZXRTdGFr
bSgpKSB8fCAoIHRoaXMuZ2V0U3Rha20oKSE9M0Q9Cm51bGwgJiYgY2FzdE90aGVyLmdldFN0YWtt
KCkhPTNEbnVsbCAmJiB0aGlzLmdldFN0YWttKCkuZXF1YWxzKGNhc3RPdGhlci5nZT0KdFN0YWtt
KCkpICkgKQotICYmICggKHRoaXMuZ2V0R2V3YWVzc2VyaWQoKT0zRD0zRGNhc3RPdGhlci5nZXRH
ZXdhZXNzZXJpZCgpKSB8fCAoIHRoaXMuZ2U9CnRHZXdhZXNzZXJpZCgpIT0zRG51bGwgJiYgY2Fz
dE90aGVyLmdldEdld2Flc3NlcmlkKCkhPTNEbnVsbCAmJiB0aGlzLmdldEdldz0KYWVzc2VyaWQo
KS5lcXVhbHMoY2FzdE90aGVyLmdldEdld2Flc3NlcmlkKCkpICkgKQotICYmICggKHRoaXMuZ2V0
R2V3bmFtZSgpPTNEPTNEY2FzdE90aGVyLmdldEdld25hbWUoKSkgfHwgKCB0aGlzLmdldEdld25h
bWU9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldEdld25hbWUoKSE9M0RudWxsICYmIHRoaXMu
Z2V0R2V3bmFtZSgpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRHZXduYW1lKCkpICkgKQotICYmICgg
KHRoaXMuZ2V0QmV6dWdzcGVnZWxpZCgpPTNEPTNEY2FzdE90aGVyLmdldEJlenVnc3BlZ2VsaWQo
KSkgfHwgKCB0aGk9CnMuZ2V0QmV6dWdzcGVnZWxpZCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdl
dEJlenVnc3BlZ2VsaWQoKSE9M0RudWxsICYmIHRoaT0Kcy5nZXRCZXp1Z3NwZWdlbGlkKCkuZXF1
YWxzKGNhc3RPdGhlci5nZXRCZXp1Z3NwZWdlbGlkKCkpICkgKTsKLSAgIH0KLQotICAgcHVibGlj
IGludCBoYXNoQ29kZSgpIHsKLSAgICAgICAgIGludCByZXN1bHQgPTNEIDE3OwotCi0gICAgICAg
ICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNZXNzdW5naWQoKSA9M0Q9M0QgbnVsbCA/
IDAgOiB0aGlzLj0KZ2V0TWVzc3VuZ2lkKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0
ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0U3RhdGlvbmlkKCkgPTNEPTNEIG51bGwgPyAwIDogdGhp
cy49CmdldFN0YXRpb25pZCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcg
KiByZXN1bHQgKyAoIGdldERhdHVtKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXREPQphdHVt
KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0
SHBlaWx1bmdpZCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXM9Ci5nZXRIcGVpbHVuZ2lkKCkuaGFz
aENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TXBlaWx1
bmdpZCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXM9Ci5nZXRNcGVpbHVuZ2lkKCkuaGFzaENvZGUo
KSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0R2ZhZW5nZXJpZCgp
ID0zRD0zRCBudWxsID8gMCA6IHRoaXM9Ci5nZXRHZmFlbmdlcmlkKCkuaGFzaENvZGUoKSApOwot
ICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0R3NpZWJzYXR6aWQoKSA9M0Q9
M0QgbnVsbCA/IDAgOiB0aGk9CnMuZ2V0R3NpZWJzYXR6aWQoKS5oYXNoQ29kZSgpICk7Ci0gICAg
ICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNZXNzbnIoKSA9M0Q9M0QgbnVsbCA/
IDAgOiB0aGlzLmdldD0KTWVzc25yKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0z
RCAzNyAqIHJlc3VsdCArICggZ2V0Rmd1ZSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0Rmc9
CnVlKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICgg
Z2V0VWhydm9uKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXQ9ClVocnZvbigpLmhhc2hDb2Rl
KCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFVocmJpcygpID0z
RD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0PQpVaHJiaXMoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAg
ICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRXc3BjbSgpID0zRD0zRCBudWxsID8gMCA6
IHRoaXMuZ2V0Vz0Kc3BjbSgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcg
KiByZXN1bHQgKyAoIGdldFFCcGVnZWwoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UUJw
ZWdlbCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAo
IGdldFdzcG5uKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRXPQpzcG5uKCkuaGFzaENvZGUo
KSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0SWUoKSA9M0Q9M0Qg
bnVsbCA/IDAgOiB0aGlzLmdldEllKCk9Ci5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQg
PTNEIDM3ICogcmVzdWx0ICsgKCBnZXRXdGVtcCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0
Vz0KdGVtcCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQg
KyAoIGdldEdicmVpdGUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0R2JyZWl0ZSgpLmhh
c2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEdicmVp
dGV2b24oKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzPQouZ2V0R2JyZWl0ZXZvbigpLmhhc2hDb2Rl
KCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEdicmVpdGViaXMo
KSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzPQouZ2V0R2JyZWl0ZWJpcygpLmhhc2hDb2RlKCkgKTsK
LSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFRnZXNjaGllYmUoKSA9M0Q9
M0QgbnVsbCA/IDAgOiB0aGlzPQouZ2V0VGdlc2NoaWViZSgpLmhhc2hDb2RlKCkgKTsKLSAgICAg
ICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFRzYW5kKCkgPTNEPTNEIG51bGwgPyAw
IDogdGhpcy5nZXRUPQpzYW5kKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAz
NyAqIHJlc3VsdCArICggZ2V0VHNjaHdlYigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRU
c2Nod2ViKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCAr
ICggZ2V0Q3NjaHdlYigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRDc2Nod2ViKCkuaGFz
aENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0VWZlcmxp
YWJzdCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXM9Ci5nZXRVZmVybGlhYnN0KCkuaGFzaENvZGUo
KSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0VWZlcnJlYWJzdCgp
ID0zRD0zRCBudWxsID8gMCA6IHRoaXM9Ci5nZXRVZmVycmVhYnN0KCkuaGFzaENvZGUoKSApOwot
ICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0USgpID0zRD0zRCBudWxsID8g
MCA6IHRoaXMuZ2V0USgpLmg9CmFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAq
IHJlc3VsdCArICggZ2V0QUhwZWlsKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXQ9CkFIcGVp
bCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdl
dEFNcGVpbCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0PQpBTXBlaWwoKS5oYXNoQ29kZSgp
ICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRCKCkgPTNEPTNEIG51
bGwgPyAwIDogdGhpcy5nZXRCKCkuaD0KYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNE
IDM3ICogcmVzdWx0ICsgKCBnZXRIbSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0SG0oKT0K
Lmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFZt
KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRWbSgpPQouaGFzaENvZGUoKSApOwotICAgICAg
ICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0VnNvaGxlKCkgPTNEPTNEIG51bGwgPyAw
IDogdGhpcy5nZXQ9ClZzb2hsZSgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0Qg
MzcgKiByZXN1bHQgKyAoIGdldFRhdSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0VGF1PQoo
KS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRU
YXV2KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRUYT0KdXYoKS5oYXNoQ29kZSgpICk7Ci0g
ICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRUZWlsUSgpID0zRD0zRCBudWxs
ID8gMCA6IHRoaXMuZ2V0VD0KZWlsUSgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9
M0QgMzcgKiByZXN1bHQgKyAoIGdldFRlaWxBSHBlaWwoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlz
PQouZ2V0VGVpbEFIcGVpbCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcg
KiByZXN1bHQgKyAoIGdldFRlaWxBTXBlaWwoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzPQouZ2V0
VGVpbEFNcGVpbCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1
bHQgKyAoIGdldFRlaWxCKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRUPQplaWxCKCkuaGFz
aENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0VGVpbEht
KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXQ9ClRlaWxIbSgpLmhhc2hDb2RlKCkgKTsKLSAg
ICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFRlaWxWbSgpID0zRD0zRCBudWxs
ID8gMCA6IHRoaXMuZ2V0PQpUZWlsVm0oKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQg
PTNEIDM3ICogcmVzdWx0ICsgKCBnZXRUZWlsVnNvaGxlKCkgPTNEPTNEIG51bGwgPyAwIDogdGhp
cz0KLmdldFRlaWxWc29obGUoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3
ICogcmVzdWx0ICsgKCBnZXRUZWlsVGF1KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFRl
aWxUYXUoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsg
KCBnZXRUZWlsVGF1digpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRUZWlsVGF1digpLmhh
c2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1pdHRl
bHR5cCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuPQpnZXRNaXR0ZWx0eXAoKS5oYXNoQ29kZSgp
ICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXREbSgpID0zRD0zRCBu
dWxsID8gMCA6IHRoaXMuZ2V0RG0oKT0KLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9
M0QgMzcgKiByZXN1bHQgKyAoIGdldFNrKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRTaygp
PQouaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0
U28oKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldFNvKCk9Ci5oYXNoQ29kZSgpICk7Ci0gICAg
ICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRVKCkgPTNEPTNEIG51bGwgPyAwIDog
dGhpcy5nZXRVKCkuaD0KYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVz
dWx0ICsgKCBnZXREOTAoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEQ5MD0KKCkuaGFzaENv
ZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0RDg0KCkgPTNE
PTNEIG51bGwgPyAwIDogdGhpcy5nZXREODQ9CigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJl
c3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEQ4MCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMu
Z2V0RDgwPQooKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0
ICsgKCBnZXRENzUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEQ3NT0KKCkuaGFzaENvZGUo
KSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0RDcwKCkgPTNEPTNE
IG51bGwgPyAwIDogdGhpcy5nZXRENzA9CigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3Vs
dCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEQ2MCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0
RDYwPQooKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsg
KCBnZXRENTAoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEQ1MD0KKCkuaGFzaENvZGUoKSAp
OwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0RDQwKCkgPTNEPTNEIG51
bGwgPyAwIDogdGhpcy5nZXRENDA9CigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9
M0QgMzcgKiByZXN1bHQgKyAoIGdldEQzMCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0RDMw
PQooKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBn
ZXREMjUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEQyNT0KKCkuaGFzaENvZGUoKSApOwot
ICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0RDIwKCkgPTNEPTNEIG51bGwg
PyAwIDogdGhpcy5nZXREMjA9CigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0Qg
MzcgKiByZXN1bHQgKyAoIGdldEQxNigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0RDE2PQoo
KS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRE
MTAoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEQxMD0KKCkuaGFzaENvZGUoKSApOwotICAg
ICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0RG1pbigpID0zRD0zRCBudWxsID8g
MCA6IHRoaXMuZ2V0RG09CmluKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAz
NyAqIHJlc3VsdCArICggZ2V0RHVyY2hkbWluKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy49Cmdl
dER1cmNoZG1pbigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1
bHQgKyAoIGdldERtYXgoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldERtPQpheCgpLmhhc2hD
b2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldER1cmNoZG1h
eCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuPQpnZXREdXJjaGRtYXgoKS5oYXNoQ29kZSgpICk7
Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXROR2VzY2hpZWIoKSA9M0Q9
M0QgbnVsbCA/IDAgOiB0aGlzLj0KZ2V0Tkdlc2NoaWViKCkuaGFzaENvZGUoKSApOwotICAgICAg
ICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TlZpZWxwa3QoKSA9M0Q9M0QgbnVsbCA/
IDAgOiB0aGlzLmc9CmV0TlZpZWxwa3QoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQg
PTNEIDM3ICogcmVzdWx0ICsgKCBnZXRTeXNEYXRlKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5n
ZT0KdFN5c0RhdGUoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVz
dWx0ICsgKCBnZXRCZW1lcmt1bmcoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLj0KZ2V0QmVtZXJr
dW5nKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICgg
Z2V0TGFzdHVwZGF0ZWQoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGk9CnMuZ2V0TGFzdHVwZGF0ZWQo
KS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRL
bSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0S20oKT0KLmhhc2hDb2RlKCkgKTsKLSAgICAg
ICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEdsb3RhYnN0b2Zmc2V0KCkgPTNEPTNE
IG51bGwgPyAwIDogPQp0aGlzLmdldEdsb3RhYnN0b2Zmc2V0KCkuaGFzaENvZGUoKSApOwotICAg
ICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0U2xvdGFic3RvZmZzZXQoKSA9M0Q9
M0QgbnVsbCA/IDAgOiA9CnRoaXMuZ2V0U2xvdGFic3RvZmZzZXQoKS5oYXNoQ29kZSgpICk7Ci0g
ICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRHYnJlaXRldm9ubGlua3MoKSA9
M0Q9M0QgbnVsbCA/IDAgOj0KIHRoaXMuZ2V0R2JyZWl0ZXZvbmxpbmtzKCkuaGFzaENvZGUoKSAp
OwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0R2JyZWl0ZWJpc2xpbmtz
KCkgPTNEPTNEIG51bGwgPyAwIDo9CiB0aGlzLmdldEdicmVpdGViaXNsaW5rcygpLmhhc2hDb2Rl
KCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFN0YW5hbWUoKSA9
M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0U3RhbmFtZSgpLmhhc2hDb2RlKCkgKTsKLSAgICAg
ICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFN0YWttKCkgPTNEPTNEIG51bGwgPyAw
IDogdGhpcy5nZXRTPQp0YWttKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAz
NyAqIHJlc3VsdCArICggZ2V0R2V3YWVzc2VyaWQoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGk9CnMu
Z2V0R2V3YWVzc2VyaWQoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICog
cmVzdWx0ICsgKCBnZXRHZXduYW1lKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdEdld25h
bWUoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBn
ZXRCZXp1Z3NwZWdlbGlkKCkgPTNEPTNEIG51bGwgPyAwIDogdD0KaGlzLmdldEJlenVnc3BlZ2Vs
aWQoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotfQpkaWZm
IC1yIDg5ZGNhYWUwODAxYyAtciA2YTRiZGNjY2ZhNGQgYmFja2VuZC9zcmMvbWFpbi9qYXZhL29y
Zy9kaXZlNGVsZW1lbnQ9CnMvcml2ZXIvc2VkZGIvbW9kZWwvTWVzc3VuZ3VmZXJiZXp1Zy5qYXZh
Ci0tLSBhL2JhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZlci9zZWRk
Yi9tb2RlbC9NZXNzdW5ndWZlcj0KYmV6dWcuamF2YQlUdWUgSmFuIDE2IDE4OjEzOjU0IDIwMTgg
KzAxMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEs
NTMgKzAsMCBAQAotLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fu
c3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVy
aW5nIGJ5IEludGV2YXRpb24gR21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJl
IHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKQotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVM
WSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0
aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLgotICovCi0KLXBhY2thZ2Ugb3JnLmRp
dmU0ZWxlbWVudHMucml2ZXIuc2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAx
MTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmF4LnBl
cnNpc3RlbmNlLkF0dHJpYnV0ZU92ZXJyaWRlOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0
dHJpYnV0ZU92ZXJyaWRlczsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBv
cnQgamF2YXgucGVyc2lzdGVuY2UuRW1iZWRkZWRJZDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5j
ZS5FbnRpdHk7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7Ci0KLS8qKgotICogTWVz
c3VuZ3VmZXJiZXp1ZyBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVudGl0eQotQFRhYmxl
KG5hbWU9M0QiTUVTU1VOR1VGRVJCRVpVRyIKLSAgICAsc2NoZW1hPTNEIlNFRERCIgotKQotcHVi
bGljIGNsYXNzIE1lc3N1bmd1ZmVyYmV6dWcgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFi
bGUgewotCi0KLSAgICAgcHJpdmF0ZSBNZXNzdW5ndWZlcmJlenVnSWQgaWQ7Ci0KLSAgICBwdWJs
aWMgTWVzc3VuZ3VmZXJiZXp1ZygpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgTWVzc3VuZ3VmZXJi
ZXp1ZyhNZXNzdW5ndWZlcmJlenVnSWQgaWQpIHsKLSAgICAgICB0aGlzLmlkID0zRCBpZDsKLSAg
ICB9Ci0KLSAgICAgQEVtYmVkZGVkSWQKLQotCi0gICAgQEF0dHJpYnV0ZU92ZXJyaWRlcyggewot
ICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtZXNzdW5naWQiLCBjb2x1bW49M0RA
Q29sdW1uKG5hbWU9M0QiTUU9ClNTVU5HSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249
M0QxMSwgc2NhbGU9M0QwKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ1
ZmVyaXN0bGlua3MiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0Q9CiJVRkVSSVNUTElOS1MiLCBu
dWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxLCBzY2FsZT0zRDApICksCi0gICAgICAgIEBB
dHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImhtYWJzdCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0z
RCJITUFCUz0KVCIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykgKSB9ICkKLSAgICBwdWJsaWMg
TWVzc3VuZ3VmZXJiZXp1Z0lkIGdldElkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5pZDsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRJZChNZXNzdW5ndWZlcmJlenVnSWQgaWQpIHsKLSAg
ICAgICAgdGhpcy5pZCA9M0QgaWQ7Ci0gICAgfQotfQpkaWZmIC1yIDg5ZGNhYWUwODAxYyAtciA2
YTRiZGNjY2ZhNGQgYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMvcml2
ZXIvc2VkZGIvbW9kZWwvTWVzc3VuZ3VmZXJiZXp1Z0lkLmphdmEKLS0tIGEvYmFja2VuZC9zcmMv
bWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVsL01lc3N1bmd1ZmVy
PQpiZXp1Z0lkLmphdmEJVHVlIEphbiAxNiAxODoxMzo1NCAyMDE4ICswMTAwCisrKyAvZGV2L251
bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDkyICswLDAgQEAKLS8qIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdl
dz1DMz1BNHNzZXJrPQp1bmRlCi0gKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9u
IEdtYkgKLSAqCi0gKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFH
UEwgKD49M0R2MykKLSAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENo
ZWNrIG91dCB0aGUKLSAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBS
aXZlciBmb3IgZGV0YWlscy4KLSAqLwotCi1wYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVy
LnNlZGRiLm1vZGVsOwotLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJu
YXRlIFRvb2xzIDMuNC4wLkNSMQotCi0KLWltcG9ydCBqYXZhLm1hdGguQmlnRGVjaW1hbDsKLWlt
cG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2Uu
RW1iZWRkYWJsZTsKLQotLyoqCi0gKiBNZXNzdW5ndWZlcmJlenVnSWQgZ2VuZXJhdGVkIGJ5IGhi
bTJqYXZhCi0gKi8KLUBFbWJlZGRhYmxlCi1wdWJsaWMgY2xhc3MgTWVzc3VuZ3VmZXJiZXp1Z0lk
ICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAgIHByaXZhdGUgbG9u
ZyBtZXNzdW5naWQ7Ci0gICAgIHByaXZhdGUgYm9vbGVhbiB1ZmVyaXN0bGlua3M7Ci0gICAgIHBy
aXZhdGUgQmlnRGVjaW1hbCBobWFic3Q7Ci0KLSAgICBwdWJsaWMgTWVzc3VuZ3VmZXJiZXp1Z0lk
KCkgewotICAgIH0KLQotICAgIHB1YmxpYyBNZXNzdW5ndWZlcmJlenVnSWQobG9uZyBtZXNzdW5n
aWQsIGJvb2xlYW4gdWZlcmlzdGxpbmtzKSB7Ci0gICAgICAgIHRoaXMubWVzc3VuZ2lkID0zRCBt
ZXNzdW5naWQ7Ci0gICAgICAgIHRoaXMudWZlcmlzdGxpbmtzID0zRCB1ZmVyaXN0bGlua3M7Ci0g
ICAgfQotICAgIHB1YmxpYyBNZXNzdW5ndWZlcmJlenVnSWQobG9uZyBtZXNzdW5naWQsIGJvb2xl
YW4gdWZlcmlzdGxpbmtzLCBCaWdEZWM9CmltYWwgaG1hYnN0KSB7Ci0gICAgICAgdGhpcy5tZXNz
dW5naWQgPTNEIG1lc3N1bmdpZDsKLSAgICAgICB0aGlzLnVmZXJpc3RsaW5rcyA9M0QgdWZlcmlz
dGxpbmtzOwotICAgICAgIHRoaXMuaG1hYnN0ID0zRCBobWFic3Q7Ci0gICAgfQotCi0KLQotICAg
IEBDb2x1bW4obmFtZT0zRCJNRVNTVU5HSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249
M0QxMSwgc2NhbGU9M0Q9CjApCi0gICAgcHVibGljIGxvbmcgZ2V0TWVzc3VuZ2lkKCkgewotICAg
ICAgICByZXR1cm4gdGhpcy5tZXNzdW5naWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0
TWVzc3VuZ2lkKGxvbmcgbWVzc3VuZ2lkKSB7Ci0gICAgICAgIHRoaXMubWVzc3VuZ2lkID0zRCBt
ZXNzdW5naWQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVUZFUklTVExJTktTIiwg
bnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMSwgc2NhbGU9Cj0zRDApCi0gICAgcHVibGlj
IGJvb2xlYW4gaXNVZmVyaXN0bGlua3MoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnVmZXJpc3Rs
aW5rczsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRVZmVyaXN0bGlua3MoYm9vbGVhbiB1
ZmVyaXN0bGlua3MpIHsKLSAgICAgICAgdGhpcy51ZmVyaXN0bGlua3MgPTNEIHVmZXJpc3RsaW5r
czsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJITUFCU1QiLCBwcmVjaXNpb249M0Q4
LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0SG1hYnN0KCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5obWFic3Q7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0SG1hYnN0
KEJpZ0RlY2ltYWwgaG1hYnN0KSB7Ci0gICAgICAgIHRoaXMuaG1hYnN0ID0zRCBobWFic3Q7Ci0g
ICAgfQotCi0KLSAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb3RoZXIpIHsKLSAgICAg
ICAgIGlmICggKHRoaXMgPTNEPTNEIG90aGVyICkgKSByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIGlm
ICggKG90aGVyID0zRD0zRCBudWxsICkgKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICBpZiAoICEo
b3RoZXIgaW5zdGFuY2VvZiBNZXNzdW5ndWZlcmJlenVnSWQpICkgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgTWVzc3VuZ3VmZXJiZXp1Z0lkIGNhc3RPdGhlciA9M0QgKCBNZXNzdW5ndWZlcmJlenVn
SWQgKSBvdGhlcjsKLQotICAgICAgICAgcmV0dXJuICh0aGlzLmdldE1lc3N1bmdpZCgpPTNEPTNE
Y2FzdE90aGVyLmdldE1lc3N1bmdpZCgpKQotICYmICh0aGlzLmlzVWZlcmlzdGxpbmtzKCk9M0Q9
M0RjYXN0T3RoZXIuaXNVZmVyaXN0bGlua3MoKSkKLSAmJiAoICh0aGlzLmdldEhtYWJzdCgpPTNE
PTNEY2FzdE90aGVyLmdldEhtYWJzdCgpKSB8fCAoIHRoaXMuZ2V0SG1hYnN0KCkhPQo9M0RudWxs
ICYmIGNhc3RPdGhlci5nZXRIbWFic3QoKSE9M0RudWxsICYmIHRoaXMuZ2V0SG1hYnN0KCkuZXF1
YWxzKGNhc3RPdGg9CmVyLmdldEhtYWJzdCgpKSApICk7Ci0gICB9Ci0KLSAgIHB1YmxpYyBpbnQg
aGFzaENvZGUoKSB7Ci0gICAgICAgICBpbnQgcmVzdWx0ID0zRCAxNzsKLQotICAgICAgICAgcmVz
dWx0ID0zRCAzNyAqIHJlc3VsdCArIChpbnQpIHRoaXMuZ2V0TWVzc3VuZ2lkKCk7Ci0gICAgICAg
ICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKHRoaXMuaXNVZmVyaXN0bGlua3MoKT8xOjApOwot
ICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0SG1hYnN0KCkgPTNEPTNEIG51
bGwgPyAwIDogdGhpcy5nZXQ9CkhtYWJzdCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICB9Ci19CmRpZmYgLXIgODlkY2FhZTA4MDFjIC1yIDZhNGJkY2NjZmE0ZCBi
YWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZlci9zZWRkYi9tb2Rl
bC9NcGVpbHB1bmt0LmphdmEKLS0tIGEvYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVs
ZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVsL01wZWlscHVua3QuPQpqYXZhCVR1ZSBKYW4gMTYgMTg6
MTM6NTQgMjAxOCArMDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
MDAwMApAQCAtMSw5MiArMCwwIEBACi0vKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMg
YnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQotICogU29mdHdh
cmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0gKgotICogVGhpcyBmaWxlIGlzIEZy
ZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMpCi0gKiBhbmQgY29tZXMgd2l0
aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCi0gKiBkb2N1bWVudGF0aW9u
IGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFpbHMuCi0gKi8KLQotcGFj
a2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2RlbDsKLS8vIEdlbmVyYXRlZCAx
NC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQuMC5DUjEKLQotCi1pbXBv
cnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQXR0cmli
dXRlT3ZlcnJpZGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQXR0cmlidXRlT3ZlcnJpZGVz
OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0
ZW5jZS5FbWJlZGRlZElkOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKLWltcG9y
dCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2Uu
Sm9pbkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5NYW55VG9PbmU7Ci1pbXBvcnQg
amF2YXgucGVyc2lzdGVuY2UuVGFibGU7Ci0KLS8qKgotICogTXBlaWxwdW5rdCBnZW5lcmF0ZWQg
YnkgaGJtMmphdmEKLSAqLwotQEVudGl0eQotQFRhYmxlKG5hbWU9M0QiTVBFSUxQVU5LVCIKLSAg
ICAsc2NoZW1hPTNEIlNFRERCIgotKQotcHVibGljIGNsYXNzIE1wZWlscHVua3QgIGltcGxlbWVu
dHMgamF2YS5pby5TZXJpYWxpemFibGUgewotCi0KLSAgICAgcHJpdmF0ZSBNcGVpbHB1bmt0SWQg
aWQ7Ci0gICAgIHByaXZhdGUgTXBlaWx1bmcgbXBlaWx1bmc7Ci0gICAgIHByaXZhdGUgQmlnRGVj
aW1hbCB5OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgejsKLQotICAgIHB1YmxpYyBNcGVpbHB1
bmt0KCkgewotICAgIH0KLQotICAgIHB1YmxpYyBNcGVpbHB1bmt0KE1wZWlscHVua3RJZCBpZCwg
TXBlaWx1bmcgbXBlaWx1bmcsIEJpZ0RlY2ltYWwgeSwgQmk9CmdEZWNpbWFsIHopIHsKLSAgICAg
ICB0aGlzLmlkID0zRCBpZDsKLSAgICAgICB0aGlzLm1wZWlsdW5nID0zRCBtcGVpbHVuZzsKLSAg
ICAgICB0aGlzLnkgPTNEIHk7Ci0gICAgICAgdGhpcy56ID0zRCB6OwotICAgIH0KLQotICAgICBA
RW1iZWRkZWRJZAotCi0KLSAgICBAQXR0cmlidXRlT3ZlcnJpZGVzKCB7Ci0gICAgICAgIEBBdHRy
aWJ1dGVPdmVycmlkZShuYW1lPTNEIm1wZWlsdW5naWQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9
M0QiTT0KUEVJTFVOR0lEIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMTEsIHNjYWxl
PTNEMCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicHVua3RuciIsIGNv
bHVtbj0zREBDb2x1bW4obmFtZT0zRCJQVU5LPQpUTlIiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVj
aXNpb249M0Q1LCBzY2FsZT0zRDApICkgfSApCi0gICAgcHVibGljIE1wZWlscHVua3RJZCBnZXRJ
ZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0SWQoTXBlaWxwdW5rdElkIGlkKSB7Ci0gICAgICAgIHRoaXMuaWQgPTNEIGlkOwotICAgIH0K
LQotQE1hbnlUb09uZShmZXRjaD0zREZldGNoVHlwZS5MQVpZKQotICAgIEBKb2luQ29sdW1uKG5h
bWU9M0QiTVBFSUxVTkdJRCIsIG51bGxhYmxlPTNEZmFsc2UsIGluc2VydGFibGU9M0RmYWxzZSw9
CiB1cGRhdGFibGU9M0RmYWxzZSkKLSAgICBwdWJsaWMgTXBlaWx1bmcgZ2V0TXBlaWx1bmcoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLm1wZWlsdW5nOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lk
IHNldE1wZWlsdW5nKE1wZWlsdW5nIG1wZWlsdW5nKSB7Ci0gICAgICAgIHRoaXMubXBlaWx1bmcg
PTNEIG1wZWlsdW5nOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlkiLCBudWxsYWJs
ZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2lt
YWwgZ2V0WSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMueTsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRZKEJpZ0RlY2ltYWwgeSkgewotICAgICAgICB0aGlzLnkgPTNEIHk7Ci0gICAgfQot
Ci0KLSAgICBAQ29sdW1uKG5hbWU9M0QiWiIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0z
RDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRaKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy56OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFooQmlnRGVjaW1hbCB6
KSB7Ci0gICAgICAgIHRoaXMueiA9M0QgejsKLSAgICB9Ci19CmRpZmYgLXIgODlkY2FhZTA4MDFj
IC1yIDZhNGJkY2NjZmE0ZCBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudD0K
cy9yaXZlci9zZWRkYi9tb2RlbC9NcGVpbHB1bmt0SWQuamF2YQotLS0gYS9iYWNrZW5kL3NyYy9t
YWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvTXBlaWxwdW5rdEk9
CmQuamF2YQlUdWUgSmFuIDE2IDE4OjEzOjU0IDIwMTggKzAxMDAKKysrIC9kZXYvbnVsbAlUaHUg
SmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsNzMgKzAsMCBAQAotLyogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0
c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAot
ICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0z
RHYzKQotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0
IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZv
ciBkZXRhaWxzLgotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMucml2ZXIuc2VkZGIu
bW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9v
bHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9y
dCBqYXZheC5wZXJzaXN0ZW5jZS5FbWJlZGRhYmxlOwotCi0vKioKLSAqIE1wZWlscHVua3RJZCBn
ZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVtYmVkZGFibGUKLXB1YmxpYyBjbGFzcyBNcGVp
bHB1bmt0SWQgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgewotCi0KLSAgICAgcHJp
dmF0ZSBsb25nIG1wZWlsdW5naWQ7Ci0gICAgIHByaXZhdGUgaW50IHB1bmt0bnI7Ci0KLSAgICBw
dWJsaWMgTXBlaWxwdW5rdElkKCkgewotICAgIH0KLQotICAgIHB1YmxpYyBNcGVpbHB1bmt0SWQo
bG9uZyBtcGVpbHVuZ2lkLCBpbnQgcHVua3RucikgewotICAgICAgIHRoaXMubXBlaWx1bmdpZCA9
M0QgbXBlaWx1bmdpZDsKLSAgICAgICB0aGlzLnB1bmt0bnIgPTNEIHB1bmt0bnI7Ci0gICAgfQot
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNUEVJTFVOR0lEIiwgbnVsbGFibGU9M0RmYWxzZSwg
cHJlY2lzaW9uPTNEMTEsIHNjYWxlPQo9M0QwKQotICAgIHB1YmxpYyBsb25nIGdldE1wZWlsdW5n
aWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1wZWlsdW5naWQ7Ci0gICAgfQotCi0gICAgcHVi
bGljIHZvaWQgc2V0TXBlaWx1bmdpZChsb25nIG1wZWlsdW5naWQpIHsKLSAgICAgICAgdGhpcy5t
cGVpbHVuZ2lkID0zRCBtcGVpbHVuZ2lkOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNE
IlBVTktUTlIiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q1LCBzY2FsZT0zRDApCi0g
ICAgcHVibGljIGludCBnZXRQdW5rdG5yKCkgewotICAgICAgICByZXR1cm4gdGhpcy5wdW5rdG5y
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFB1bmt0bnIoaW50IHB1bmt0bnIpIHsKLSAg
ICAgICAgdGhpcy5wdW5rdG5yID0zRCBwdW5rdG5yOwotICAgIH0KLQotCi0gICBwdWJsaWMgYm9v
bGVhbiBlcXVhbHMoT2JqZWN0IG90aGVyKSB7Ci0gICAgICAgICBpZiAoICh0aGlzID0zRD0zRCBv
dGhlciApICkgcmV0dXJuIHRydWU7Ci0gICAgICAgICBpZiAoIChvdGhlciA9M0Q9M0QgbnVsbCAp
ICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgaWYgKCAhKG90aGVyIGluc3RhbmNlb2YgTXBlaWxw
dW5rdElkKSApIHJldHVybiBmYWxzZTsKLSAgICAgICAgIE1wZWlscHVua3RJZCBjYXN0T3RoZXIg
PTNEICggTXBlaWxwdW5rdElkICkgb3RoZXI7Ci0KLSAgICAgICAgIHJldHVybiAodGhpcy5nZXRN
cGVpbHVuZ2lkKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TXBlaWx1bmdpZCgpKQotICYmICh0aGlzLmdl
dFB1bmt0bnIoKT0zRD0zRGNhc3RPdGhlci5nZXRQdW5rdG5yKCkpOwotICAgfQotCi0gICBwdWJs
aWMgaW50IGhhc2hDb2RlKCkgewotICAgICAgICAgaW50IHJlc3VsdCA9M0QgMTc7Ci0KLSAgICAg
ICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoaW50KSB0aGlzLmdldE1wZWlsdW5naWQoKTsK
LSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyB0aGlzLmdldFB1bmt0bnIoKTsKLSAg
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci19CmRpZmYgLXIgODlkY2FhZTA4MDFjIC1yIDZh
NGJkY2NjZmE0ZCBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZl
ci9zZWRkYi9tb2RlbC9NcGVpbHVuZy5qYXZhCi0tLSBhL2JhY2tlbmQvc3JjL21haW4vamF2YS9v
cmcvZGl2ZTRlbGVtZW50cy9yaXZlci9zZWRkYi9tb2RlbC9NcGVpbHVuZy5qYT0KdmEJVHVlIEph
biAxNiAxODoxMzo1NCAyMDE4ICswMTAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
MCAxOTcwICswMDAwCkBAIC0xLDE0OCArMCwwIEBACi0vKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQot
ICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0gKgotICogVGhpcyBm
aWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMpCi0gKiBhbmQg
Y29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCi0gKiBkb2N1
bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFpbHMuCi0g
Ki8KLQotcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2RlbDsKLS8vIEdl
bmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQuMC5DUjEK
LQotCi1pbXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7Ci1pbXBvcnQgamF2YS51dGlsLkRhdGU7
Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLWltcG9y
dCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50
aXR5OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsKLWltcG9ydCBqYXZheC5w
ZXJzaXN0ZW5jZS5JZDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1uOwotaW1w
b3J0IGphdmF4LnBlcnNpc3RlbmNlLk1hbnlUb09uZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5j
ZS5PbmVUb01hbnk7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7Ci1pbXBvcnQgamF2
YXgucGVyc2lzdGVuY2UuVGVtcG9yYWw7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGVtcG9y
YWxUeXBlOwotCi0vKioKLSAqIE1wZWlsdW5nIGdlbmVyYXRlZCBieSBoYm0yamF2YQotICovCi1A
RW50aXR5Ci1AVGFibGUobmFtZT0zRCJNUEVJTFVORyIKLSAgICAsc2NoZW1hPTNEIlNFRERCIgot
KQotcHVibGljIGNsYXNzIE1wZWlsdW5nICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxl
IHsKLQotCi0gICAgIHByaXZhdGUgbG9uZyBtcGVpbHVuZ2lkOwotICAgICBwcml2YXRlIFN0YXRp
b24gc3RhdGlvbjsKLSAgICAgcHJpdmF0ZSBEYXRlIGRhdHVtOwotICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwga207Ci0gICAgIHByaXZhdGUgU3RyaW5nIGJlbWVya3VuZzsKLSAgICAgcHJpdmF0ZSBE
YXRlIGxhc3R1cGRhdGVkOwotICAgICBwcml2YXRlIExvbmcgb2xkYXBlaWxpZDsKLSAgICAgcHJp
dmF0ZSBTZXQ8TXBlaWxwdW5rdD4gbXBlaWxwdW5rdHMgPTNEIG5ldyBIYXNoU2V0PE1wZWlscHVu
a3Q+KDApOwotCi0gICAgcHVibGljIE1wZWlsdW5nKCkgewotICAgIH0KLQotICAgIHB1YmxpYyBN
cGVpbHVuZyhsb25nIG1wZWlsdW5naWQsIFN0YXRpb24gc3RhdGlvbiwgRGF0ZSBkYXR1bSwgQmln
RGVjaW09CmFsIGttLCBEYXRlIGxhc3R1cGRhdGVkKSB7Ci0gICAgICAgIHRoaXMubXBlaWx1bmdp
ZCA9M0QgbXBlaWx1bmdpZDsKLSAgICAgICAgdGhpcy5zdGF0aW9uID0zRCBzdGF0aW9uOwotICAg
ICAgICB0aGlzLmRhdHVtID0zRCBkYXR1bTsKLSAgICAgICAgdGhpcy5rbSA9M0Qga207Ci0gICAg
ICAgIHRoaXMubGFzdHVwZGF0ZWQgPTNEIGxhc3R1cGRhdGVkOwotICAgIH0KLSAgICBwdWJsaWMg
TXBlaWx1bmcobG9uZyBtcGVpbHVuZ2lkLCBTdGF0aW9uIHN0YXRpb24sIERhdGUgZGF0dW0sIEJp
Z0RlY2ltPQphbCBrbSwgU3RyaW5nIGJlbWVya3VuZywgRGF0ZSBsYXN0dXBkYXRlZCwgTG9uZyBv
bGRhcGVpbGlkLCBTZXQ8TXBlaWxwdW5rdD49CiBtcGVpbHB1bmt0cykgewotICAgICAgIHRoaXMu
bXBlaWx1bmdpZCA9M0QgbXBlaWx1bmdpZDsKLSAgICAgICB0aGlzLnN0YXRpb24gPTNEIHN0YXRp
b247Ci0gICAgICAgdGhpcy5kYXR1bSA9M0QgZGF0dW07Ci0gICAgICAgdGhpcy5rbSA9M0Qga207
Ci0gICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICAgICB0aGlzLmxhc3R1
cGRhdGVkID0zRCBsYXN0dXBkYXRlZDsKLSAgICAgICB0aGlzLm9sZGFwZWlsaWQgPTNEIG9sZGFw
ZWlsaWQ7Ci0gICAgICAgdGhpcy5tcGVpbHB1bmt0cyA9M0QgbXBlaWxwdW5rdHM7Ci0gICAgfQot
Ci0gICAgIEBJZAotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTVBFSUxVTkdJRCIsIHVuaXF1ZT0z
RHRydWUsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvPQpuPTNEMTEsIHNjYWxlPTNEMCkKLSAg
ICBwdWJsaWMgbG9uZyBnZXRNcGVpbHVuZ2lkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5tcGVp
bHVuZ2lkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1wZWlsdW5naWQobG9uZyBtcGVp
bHVuZ2lkKSB7Ci0gICAgICAgIHRoaXMubXBlaWx1bmdpZCA9M0QgbXBlaWx1bmdpZDsKLSAgICB9
Ci0KLUBNYW55VG9PbmUoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSkKLSAgICBASm9pbkNvbHVtbihu
YW1lPTNEIlNUQVRJT05JRCIsIG51bGxhYmxlPTNEZmFsc2UpCi0gICAgcHVibGljIFN0YXRpb24g
Z2V0U3RhdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGlvbjsKLSAgICB9Ci0KLSAg
ICBwdWJsaWMgdm9pZCBzZXRTdGF0aW9uKFN0YXRpb24gc3RhdGlvbikgewotICAgICAgICB0aGlz
LnN0YXRpb24gPTNEIHN0YXRpb247Ci0gICAgfQotCi0gICAgQFRlbXBvcmFsKFRlbXBvcmFsVHlw
ZS5EQVRFKQotICAgIEBDb2x1bW4obmFtZT0zRCJEQVRVTSIsIG51bGxhYmxlPTNEZmFsc2UsIGxl
bmd0aD0zRDcpCi0gICAgcHVibGljIERhdGUgZ2V0RGF0dW0oKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLmRhdHVtOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldERhdHVtKERhdGUgZGF0dW0p
IHsKLSAgICAgICAgdGhpcy5kYXR1bSA9M0QgZGF0dW07Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiS00iLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMp
Ci0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0S20oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmtt
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEttKEJpZ0RlY2ltYWwga20pIHsKLSAgICAg
ICAgdGhpcy5rbSA9M0Qga207Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQkVNRVJL
VU5HIiwgbGVuZ3RoPTNEMjQwKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0QmVtZXJrdW5nKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5iZW1lcmt1bmc7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0QmVtZXJrdW5nKFN0cmluZyBiZW1lcmt1bmcpIHsKLSAgICAgICAgdGhpcy5iZW1lcmt1bmcg
PTNEIGJlbWVya3VuZzsKLSAgICB9Ci0KLSAgICBAVGVtcG9yYWwoVGVtcG9yYWxUeXBlLkRBVEUp
Ci0gICAgQENvbHVtbihuYW1lPTNEIkxBU1RVUERBVEVEIiwgbnVsbGFibGU9M0RmYWxzZSwgbGVu
Z3RoPTNENykKLSAgICBwdWJsaWMgRGF0ZSBnZXRMYXN0dXBkYXRlZCgpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMubGFzdHVwZGF0ZWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TGFzdHVw
ZGF0ZWQoRGF0ZSBsYXN0dXBkYXRlZCkgewotICAgICAgICB0aGlzLmxhc3R1cGRhdGVkID0zRCBs
YXN0dXBkYXRlZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJPTERBUEVJTElEIiwg
cHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEMCkKLSAgICBwdWJsaWMgTG9uZyBnZXRPbGRhcGVpbGlk
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5vbGRhcGVpbGlkOwotICAgIH0KLQotICAgIHB1Ymxp
YyB2b2lkIHNldE9sZGFwZWlsaWQoTG9uZyBvbGRhcGVpbGlkKSB7Ci0gICAgICAgIHRoaXMub2xk
YXBlaWxpZCA9M0Qgb2xkYXBlaWxpZDsKLSAgICB9Ci0KLUBPbmVUb01hbnkoZmV0Y2g9M0RGZXRj
aFR5cGUuTEFaWSwgbWFwcGVkQnk9M0QibXBlaWx1bmciKQotICAgIHB1YmxpYyBTZXQ8TXBlaWxw
dW5rdD4gZ2V0TXBlaWxwdW5rdHMoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1wZWlscHVua3Rz
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1wZWlscHVua3RzKFNldDxNcGVpbHB1bmt0
PiBtcGVpbHB1bmt0cykgewotICAgICAgICB0aGlzLm1wZWlscHVua3RzID0zRCBtcGVpbHB1bmt0
czsKLSAgICB9Ci19CmRpZmYgLXIgODlkY2FhZTA4MDFjIC1yIDZhNGJkY2NjZmE0ZCBiYWNrZW5k
L3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZlci9zZWRkYi9tb2RlbC9Qcm9i
ZWJpbGQuamF2YQotLS0gYS9iYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMv
cml2ZXIvc2VkZGIvbW9kZWwvUHJvYmViaWxkLmo9CmF2YQlUdWUgSmFuIDE2IDE4OjEzOjU0IDIw
MTggKzAxMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAg
LTEsMjAyICswLDAgQEAKLS8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5k
ZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCi0gKiBTb2Z0d2FyZSBlbmdp
bmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgKLSAqCi0gKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0
d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49M0R2MykKLSAqIGFuZCBjb21lcyB3aXRoIEFCU09M
VVRFTFkgTk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUKLSAqIGRvY3VtZW50YXRpb24gY29taW5n
IHdpdGggRGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy4KLSAqLwotCi1wYWNrYWdlIG9y
Zy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRiLm1vZGVsOwotLy8gR2VuZXJhdGVkIDE0LjA2LjIw
MTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQotCi0KLWltcG9ydCBqYXZh
eC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5Owot
aW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0
ZW5jZS5JZDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1uOwotaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLk1hbnlUb09uZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJs
ZTsKLQotLyoqCi0gKiBQcm9iZWJpbGQgZ2VuZXJhdGVkIGJ5IGhibTJqYXZhCi0gKi8KLUBFbnRp
dHkKLUBUYWJsZShuYW1lPTNEIlBST0JFQklMRCIKLSAgICAsc2NoZW1hPTNEIlNFRERCIgotKQot
cHVibGljIGNsYXNzIFByb2JlYmlsZCAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7
Ci0KLQotICAgICBwcml2YXRlIGxvbmcgcHJvYmViaWxkaWQ7Ci0gICAgIHByaXZhdGUgWnp0aGVt
YSB6enRoZW1hOwotICAgICBwcml2YXRlIFNvaGxwcm9iZSBzb2hscHJvYmU7Ci0gICAgIHByaXZh
dGUgaW50IGxmZG5yOwotICAgICBwcml2YXRlIGJvb2xlYW4gaXN0ZGlnaXRhbDsKLSAgICAgcHJp
dmF0ZSBTdHJpbmcgcGZhZDsKLSAgICAgcHJpdmF0ZSBTdHJpbmcgc3RhbmRvcnQ7Ci0gICAgIHBy
aXZhdGUgU3RyaW5nIG1lZGl1bTsKLSAgICAgcHJpdmF0ZSBTdHJpbmcgbWVkcGZhZDsKLSAgICAg
cHJpdmF0ZSBTdHJpbmcgYmVtZXJrdW5nOwotICAgICBwcml2YXRlIFN0cmluZyB0eXBrbGVpbjsK
LSAgICAgcHJpdmF0ZSBTdHJpbmcgdHlwbWl0dGVsOwotICAgICBwcml2YXRlIFN0cmluZyB0eXBn
cm9zczsKLQotICAgIHB1YmxpYyBQcm9iZWJpbGQoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIFBy
b2JlYmlsZChsb25nIHByb2JlYmlsZGlkLCBaenRoZW1hIHp6dGhlbWEsIFNvaGxwcm9iZSBzb2hs
cHJvYj0KZSwgaW50IGxmZG5yLCBib29sZWFuIGlzdGRpZ2l0YWwpIHsKLSAgICAgICAgdGhpcy5w
cm9iZWJpbGRpZCA9M0QgcHJvYmViaWxkaWQ7Ci0gICAgICAgIHRoaXMuenp0aGVtYSA9M0Qgenp0
aGVtYTsKLSAgICAgICAgdGhpcy5zb2hscHJvYmUgPTNEIHNvaGxwcm9iZTsKLSAgICAgICAgdGhp
cy5sZmRuciA9M0QgbGZkbnI7Ci0gICAgICAgIHRoaXMuaXN0ZGlnaXRhbCA9M0QgaXN0ZGlnaXRh
bDsKLSAgICB9Ci0gICAgcHVibGljIFByb2JlYmlsZChsb25nIHByb2JlYmlsZGlkLCBaenRoZW1h
IHp6dGhlbWEsIFNvaGxwcm9iZSBzb2hscHJvYj0KZSwgaW50IGxmZG5yLCBib29sZWFuIGlzdGRp
Z2l0YWwsIFN0cmluZyBwZmFkLCBTdHJpbmcgc3RhbmRvcnQsIFN0cmluZyBtZWRpPQp1bSwgU3Ry
aW5nIG1lZHBmYWQsIFN0cmluZyBiZW1lcmt1bmcsIFN0cmluZyB0eXBrbGVpbiwgU3RyaW5nIHR5
cG1pdHRlbCwgU3Q9CnJpbmcgdHlwZ3Jvc3MpIHsKLSAgICAgICB0aGlzLnByb2JlYmlsZGlkID0z
RCBwcm9iZWJpbGRpZDsKLSAgICAgICB0aGlzLnp6dGhlbWEgPTNEIHp6dGhlbWE7Ci0gICAgICAg
dGhpcy5zb2hscHJvYmUgPTNEIHNvaGxwcm9iZTsKLSAgICAgICB0aGlzLmxmZG5yID0zRCBsZmRu
cjsKLSAgICAgICB0aGlzLmlzdGRpZ2l0YWwgPTNEIGlzdGRpZ2l0YWw7Ci0gICAgICAgdGhpcy5w
ZmFkID0zRCBwZmFkOwotICAgICAgIHRoaXMuc3RhbmRvcnQgPTNEIHN0YW5kb3J0OwotICAgICAg
IHRoaXMubWVkaXVtID0zRCBtZWRpdW07Ci0gICAgICAgdGhpcy5tZWRwZmFkID0zRCBtZWRwZmFk
OwotICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7Ci0gICAgICAgdGhpcy50eXBr
bGVpbiA9M0QgdHlwa2xlaW47Ci0gICAgICAgdGhpcy50eXBtaXR0ZWwgPTNEIHR5cG1pdHRlbDsK
LSAgICAgICB0aGlzLnR5cGdyb3NzID0zRCB0eXBncm9zczsKLSAgICB9Ci0KLSAgICAgQElkCi0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJQUk9CRUJJTERJRCIsIHVuaXF1ZT0zRHRydWUsIG51bGxh
YmxlPTNEZmFsc2UsIHByZWNpc2k9Cm9uPTNEMTEsIHNjYWxlPTNEMCkKLSAgICBwdWJsaWMgbG9u
ZyBnZXRQcm9iZWJpbGRpZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucHJvYmViaWxkaWQ7Ci0g
ICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UHJvYmViaWxkaWQobG9uZyBwcm9iZWJpbGRpZCkg
ewotICAgICAgICB0aGlzLnByb2JlYmlsZGlkID0zRCBwcm9iZWJpbGRpZDsKLSAgICB9Ci0KLUBN
YW55VG9PbmUoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSkKLSAgICBASm9pbkNvbHVtbihuYW1lPTNE
IlRIRU1BSUQiLCBudWxsYWJsZT0zRGZhbHNlKQotICAgIHB1YmxpYyBaenRoZW1hIGdldFp6dGhl
bWEoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnp6dGhlbWE7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0Wnp0aGVtYShaenRoZW1hIHp6dGhlbWEpIHsKLSAgICAgICAgdGhpcy56enRoZW1h
ID0zRCB6enRoZW1hOwotICAgIH0KLQotQE1hbnlUb09uZShmZXRjaD0zREZldGNoVHlwZS5MQVpZ
KQotICAgIEBKb2luQ29sdW1uKG5hbWU9M0QiU09ITFBST0JFSUQiLCBudWxsYWJsZT0zRGZhbHNl
KQotICAgIHB1YmxpYyBTb2hscHJvYmUgZ2V0U29obHByb2JlKCkgewotICAgICAgICByZXR1cm4g
dGhpcy5zb2hscHJvYmU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U29obHByb2JlKFNv
aGxwcm9iZSBzb2hscHJvYmUpIHsKLSAgICAgICAgdGhpcy5zb2hscHJvYmUgPTNEIHNvaGxwcm9i
ZTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJMRkROUiIsIG51bGxhYmxlPTNEZmFs
c2UsIHByZWNpc2lvbj0zRDUsIHNjYWxlPTNEMCkKLSAgICBwdWJsaWMgaW50IGdldExmZG5yKCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5sZmRucjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXRMZmRucihpbnQgbGZkbnIpIHsKLSAgICAgICAgdGhpcy5sZmRuciA9M0QgbGZkbnI7Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiSVNURElHSVRBTCIsIG51bGxhYmxlPTNEZmFsc2Us
IHByZWNpc2lvbj0zRDEsIHNjYWxlPTNEPQowKQotICAgIHB1YmxpYyBib29sZWFuIGlzSXN0ZGln
aXRhbCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaXN0ZGlnaXRhbDsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRJc3RkaWdpdGFsKGJvb2xlYW4gaXN0ZGlnaXRhbCkgewotICAgICAgICB0
aGlzLmlzdGRpZ2l0YWwgPTNEIGlzdGRpZ2l0YWw7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiUEZBRCIsIGxlbmd0aD0zRDUxMikKLSAgICBwdWJsaWMgU3RyaW5nIGdldFBmYWQoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLnBmYWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0
UGZhZChTdHJpbmcgcGZhZCkgewotICAgICAgICB0aGlzLnBmYWQgPTNEIHBmYWQ7Ci0gICAgfQot
Ci0KLSAgICBAQ29sdW1uKG5hbWU9M0QiU1RBTkRPUlQiLCBsZW5ndGg9M0Q1MCkKLSAgICBwdWJs
aWMgU3RyaW5nIGdldFN0YW5kb3J0KCkgewotICAgICAgICByZXR1cm4gdGhpcy5zdGFuZG9ydDsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTdGFuZG9ydChTdHJpbmcgc3RhbmRvcnQpIHsK
LSAgICAgICAgdGhpcy5zdGFuZG9ydCA9M0Qgc3RhbmRvcnQ7Ci0gICAgfQotCi0KLSAgICBAQ29s
dW1uKG5hbWU9M0QiTUVESVVNIiwgbGVuZ3RoPTNENTApCi0gICAgcHVibGljIFN0cmluZyBnZXRN
ZWRpdW0oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1lZGl1bTsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRNZWRpdW0oU3RyaW5nIG1lZGl1bSkgewotICAgICAgICB0aGlzLm1lZGl1bSA9
M0QgbWVkaXVtOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1FRFBGQUQiLCBsZW5n
dGg9M0Q1MCkKLSAgICBwdWJsaWMgU3RyaW5nIGdldE1lZHBmYWQoKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLm1lZHBmYWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWVkcGZhZChTdHJp
bmcgbWVkcGZhZCkgewotICAgICAgICB0aGlzLm1lZHBmYWQgPTNEIG1lZHBmYWQ7Ci0gICAgfQot
Ci0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQkVNRVJLVU5HIiwgbGVuZ3RoPTNEMjQwKQotICAgIHB1
YmxpYyBTdHJpbmcgZ2V0QmVtZXJrdW5nKCkgewotICAgICAgICByZXR1cm4gdGhpcy5iZW1lcmt1
bmc7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QmVtZXJrdW5nKFN0cmluZyBiZW1lcmt1
bmcpIHsKLSAgICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICB9Ci0KLQot
ICAgIEBDb2x1bW4obmFtZT0zRCJUWVBLTEVJTiIsIGxlbmd0aD0zRDgpCi0gICAgcHVibGljIFN0
cmluZyBnZXRUeXBrbGVpbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudHlwa2xlaW47Ci0gICAg
fQotCi0gICAgcHVibGljIHZvaWQgc2V0VHlwa2xlaW4oU3RyaW5nIHR5cGtsZWluKSB7Ci0gICAg
ICAgIHRoaXMudHlwa2xlaW4gPTNEIHR5cGtsZWluOwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIlRZUE1JVFRFTCIsIGxlbmd0aD0zRDgpCi0gICAgcHVibGljIFN0cmluZyBnZXRUeXBt
aXR0ZWwoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnR5cG1pdHRlbDsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRUeXBtaXR0ZWwoU3RyaW5nIHR5cG1pdHRlbCkgewotICAgICAgICB0aGlz
LnR5cG1pdHRlbCA9M0QgdHlwbWl0dGVsOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNE
IlRZUEdST1NTIiwgbGVuZ3RoPTNEOCkKLSAgICBwdWJsaWMgU3RyaW5nIGdldFR5cGdyb3NzKCkg
ewotICAgICAgICByZXR1cm4gdGhpcy50eXBncm9zczsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXRUeXBncm9zcyhTdHJpbmcgdHlwZ3Jvc3MpIHsKLSAgICAgICAgdGhpcy50eXBncm9zcyA9
M0QgdHlwZ3Jvc3M7Ci0gICAgfQotfQpkaWZmIC1yIDg5ZGNhYWUwODAxYyAtciA2YTRiZGNjY2Zh
NGQgYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMvcml2ZXIvc2VkZGIv
bW9kZWwvU2llYmFuYWx5c2UuamF2YQotLS0gYS9iYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2Rp
dmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvU2llYmFuYWx5c2U9Ci5qYXZhCVR1ZSBKYW4g
MTYgMTg6MTM6NTQgMjAxOCArMDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMApAQCAtMSwzNjkgKzAsMCBAQAotLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEy
LCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAq
IFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoKLSAqIFRoaXMgZmls
ZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKQotICogYW5kIGNv
bWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQotICogZG9jdW1l
bnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLgotICov
Ci0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMucml2ZXIuc2VkZGIubW9kZWw7Ci0vLyBHZW5l
cmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0K
LQotaW1wb3J0IGphdmEubWF0aC5CaWdEZWNpbWFsOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNl
LkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7Ci1pbXBvcnQgamF2YXgu
cGVyc2lzdGVuY2UuRmV0Y2hUeXBlOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOwotaW1w
b3J0IGphdmF4LnBlcnNpc3RlbmNlLkpvaW5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVu
Y2UuTWFueVRvT25lOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk9uZVRvT25lOwotaW1wb3J0
IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOwotCi0vKioKLSAqIFNpZWJhbmFseXNlIGdlbmVyYXRl
ZCBieSBoYm0yamF2YQotICovCi1ARW50aXR5Ci1AVGFibGUobmFtZT0zRCJTSUVCQU5BTFlTRSIK
LSAgICAsc2NoZW1hPTNEIlNFRERCIgotKQotcHVibGljIGNsYXNzIFNpZWJhbmFseXNlICBpbXBs
ZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAgIHByaXZhdGUgbG9uZyBzaWVi
YW5hbHlzZWlkOwotICAgICBwcml2YXRlIFNvaGxwcm9iZSBzb2hscHJvYmU7Ci0gICAgIHByaXZh
dGUgYm9vbGVhbiBpc3RkaWdpdGFsOwotICAgICBwcml2YXRlIFN0cmluZyBzdGFuZG9ydDsKLSAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGRtOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgc287Ci0g
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzazsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHU7Ci0g
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkOTA7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkODQ7
Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkODA7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBk
NzU7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkNzA7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1h
bCBkNjA7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkNTA7Ci0gICAgIHByaXZhdGUgQmlnRGVj
aW1hbCBkNDA7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkMzA7Ci0gICAgIHByaXZhdGUgQmln
RGVjaW1hbCBkMjU7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkMjA7Ci0gICAgIHByaXZhdGUg
QmlnRGVjaW1hbCBkMTY7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkMTA7Ci0gICAgIHByaXZh
dGUgQmlnRGVjaW1hbCBkbWluOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZHVyY2hkbWluOwot
ICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZG1heDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGR1
cmNoZG1heDsKLSAgICAgcHJpdmF0ZSBTdHJpbmcgYmVtZXJrdW5nOwotICAgICBwcml2YXRlIFNz
aWVidW5nIHNzaWVidW5nOwotCi0gICAgcHVibGljIFNpZWJhbmFseXNlKCkgewotICAgIH0KLQot
ICAgIHB1YmxpYyBTaWViYW5hbHlzZShsb25nIHNpZWJhbmFseXNlaWQsIFNvaGxwcm9iZSBzb2hs
cHJvYmUsIGJvb2xlYW4gaXM9CnRkaWdpdGFsKSB7Ci0gICAgICAgIHRoaXMuc2llYmFuYWx5c2Vp
ZCA9M0Qgc2llYmFuYWx5c2VpZDsKLSAgICAgICAgdGhpcy5zb2hscHJvYmUgPTNEIHNvaGxwcm9i
ZTsKLSAgICAgICAgdGhpcy5pc3RkaWdpdGFsID0zRCBpc3RkaWdpdGFsOwotICAgIH0KLSAgICBw
dWJsaWMgU2llYmFuYWx5c2UobG9uZyBzaWViYW5hbHlzZWlkLCBTb2hscHJvYmUgc29obHByb2Jl
LCBib29sZWFuIGlzPQp0ZGlnaXRhbCwgU3RyaW5nIHN0YW5kb3J0LCBCaWdEZWNpbWFsIGRtLCBC
aWdEZWNpbWFsIHNvLCBCaWdEZWNpbWFsIHNrLCBCaWc9CkRlY2ltYWwgdSwgQmlnRGVjaW1hbCBk
OTAsIEJpZ0RlY2ltYWwgZDg0LCBCaWdEZWNpbWFsIGQ4MCwgQmlnRGVjaW1hbCBkNzUsID0KQmln
RGVjaW1hbCBkNzAsIEJpZ0RlY2ltYWwgZDYwLCBCaWdEZWNpbWFsIGQ1MCwgQmlnRGVjaW1hbCBk
NDAsIEJpZ0RlY2ltYWwgPQpkMzAsIEJpZ0RlY2ltYWwgZDI1LCBCaWdEZWNpbWFsIGQyMCwgQmln
RGVjaW1hbCBkMTYsIEJpZ0RlY2ltYWwgZDEwLCBCaWdEZWM9CmltYWwgZG1pbiwgQmlnRGVjaW1h
bCBkdXJjaGRtaW4sIEJpZ0RlY2ltYWwgZG1heCwgQmlnRGVjaW1hbCBkdXJjaGRtYXgsIFN0cj0K
aW5nIGJlbWVya3VuZywgU3NpZWJ1bmcgc3NpZWJ1bmcpIHsKLSAgICAgICB0aGlzLnNpZWJhbmFs
eXNlaWQgPTNEIHNpZWJhbmFseXNlaWQ7Ci0gICAgICAgdGhpcy5zb2hscHJvYmUgPTNEIHNvaGxw
cm9iZTsKLSAgICAgICB0aGlzLmlzdGRpZ2l0YWwgPTNEIGlzdGRpZ2l0YWw7Ci0gICAgICAgdGhp
cy5zdGFuZG9ydCA9M0Qgc3RhbmRvcnQ7Ci0gICAgICAgdGhpcy5kbSA9M0QgZG07Ci0gICAgICAg
dGhpcy5zbyA9M0Qgc287Ci0gICAgICAgdGhpcy5zayA9M0Qgc2s7Ci0gICAgICAgdGhpcy51ID0z
RCB1OwotICAgICAgIHRoaXMuZDkwID0zRCBkOTA7Ci0gICAgICAgdGhpcy5kODQgPTNEIGQ4NDsK
LSAgICAgICB0aGlzLmQ4MCA9M0QgZDgwOwotICAgICAgIHRoaXMuZDc1ID0zRCBkNzU7Ci0gICAg
ICAgdGhpcy5kNzAgPTNEIGQ3MDsKLSAgICAgICB0aGlzLmQ2MCA9M0QgZDYwOwotICAgICAgIHRo
aXMuZDUwID0zRCBkNTA7Ci0gICAgICAgdGhpcy5kNDAgPTNEIGQ0MDsKLSAgICAgICB0aGlzLmQz
MCA9M0QgZDMwOwotICAgICAgIHRoaXMuZDI1ID0zRCBkMjU7Ci0gICAgICAgdGhpcy5kMjAgPTNE
IGQyMDsKLSAgICAgICB0aGlzLmQxNiA9M0QgZDE2OwotICAgICAgIHRoaXMuZDEwID0zRCBkMTA7
Ci0gICAgICAgdGhpcy5kbWluID0zRCBkbWluOwotICAgICAgIHRoaXMuZHVyY2hkbWluID0zRCBk
dXJjaGRtaW47Ci0gICAgICAgdGhpcy5kbWF4ID0zRCBkbWF4OwotICAgICAgIHRoaXMuZHVyY2hk
bWF4ID0zRCBkdXJjaGRtYXg7Ci0gICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsK
LSAgICAgICB0aGlzLnNzaWVidW5nID0zRCBzc2llYnVuZzsKLSAgICB9Ci0KLSAgICAgQElkCi0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJTSUVCQU5BTFlTRUlEIiwgdW5pcXVlPTNEdHJ1ZSwgbnVs
bGFibGU9M0RmYWxzZSwgcHJlY2k9CnNpb249M0QxMSwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBs
b25nIGdldFNpZWJhbmFseXNlaWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnNpZWJhbmFseXNl
aWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U2llYmFuYWx5c2VpZChsb25nIHNpZWJh
bmFseXNlaWQpIHsKLSAgICAgICAgdGhpcy5zaWViYW5hbHlzZWlkID0zRCBzaWViYW5hbHlzZWlk
OwotICAgIH0KLQotQE1hbnlUb09uZShmZXRjaD0zREZldGNoVHlwZS5MQVpZKQotICAgIEBKb2lu
Q29sdW1uKG5hbWU9M0QiU09ITFBST0JFSUQiLCBudWxsYWJsZT0zRGZhbHNlKQotICAgIHB1Ymxp
YyBTb2hscHJvYmUgZ2V0U29obHByb2JlKCkgewotICAgICAgICByZXR1cm4gdGhpcy5zb2hscHJv
YmU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U29obHByb2JlKFNvaGxwcm9iZSBzb2hs
cHJvYmUpIHsKLSAgICAgICAgdGhpcy5zb2hscHJvYmUgPTNEIHNvaGxwcm9iZTsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJJU1RESUdJVEFMIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJl
Y2lzaW9uPTNEMSwgc2NhbGU9M0Q9CjApCi0gICAgcHVibGljIGJvb2xlYW4gaXNJc3RkaWdpdGFs
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5pc3RkaWdpdGFsOwotICAgIH0KLQotICAgIHB1Ymxp
YyB2b2lkIHNldElzdGRpZ2l0YWwoYm9vbGVhbiBpc3RkaWdpdGFsKSB7Ci0gICAgICAgIHRoaXMu
aXN0ZGlnaXRhbCA9M0QgaXN0ZGlnaXRhbDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJTVEFORE9SVCIsIGxlbmd0aD0zRDUwKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U3RhbmRvcnQo
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnN0YW5kb3J0OwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldFN0YW5kb3J0KFN0cmluZyBzdGFuZG9ydCkgewotICAgICAgICB0aGlzLnN0YW5kb3J0
ID0zRCBzdGFuZG9ydDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJETSIsIHByZWNp
c2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREbSgpIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuZG07Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RG0oQmln
RGVjaW1hbCBkbSkgewotICAgICAgICB0aGlzLmRtID0zRCBkbTsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJTTyIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMg
QmlnRGVjaW1hbCBnZXRTbygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc287Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0U28oQmlnRGVjaW1hbCBzbykgewotICAgICAgICB0aGlzLnNvID0z
RCBzbzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJTSyIsIHByZWNpc2lvbj0zRDgs
IHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRTaygpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuc2s7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U2soQmlnRGVjaW1hbCBz
aykgewotICAgICAgICB0aGlzLnNrID0zRCBzazsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFt
ZT0zRCJVIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFs
IGdldFUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnU7Ci0gICAgfQotCi0gICAgcHVibGljIHZv
aWQgc2V0VShCaWdEZWNpbWFsIHUpIHsKLSAgICAgICAgdGhpcy51ID0zRCB1OwotICAgIH0KLQot
Ci0gICAgQENvbHVtbihuYW1lPTNEIkQ5MCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAg
ICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREOTAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQ5MDsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREOTAoQmlnRGVjaW1hbCBkOTApIHsKLSAgICAg
ICAgdGhpcy5kOTAgPTNEIGQ5MDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJEODQi
LCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDg0
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5kODQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0RDg0KEJpZ0RlY2ltYWwgZDg0KSB7Ci0gICAgICAgIHRoaXMuZDg0ID0zRCBkODQ7Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDgwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0
KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQ4MCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
ZDgwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQ4MChCaWdEZWNpbWFsIGQ4MCkgewot
ICAgICAgICB0aGlzLmQ4MCA9M0QgZDgwOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNE
IkQ3NSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXRENzUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQ3NTsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRENzUoQmlnRGVjaW1hbCBkNzUpIHsKLSAgICAgICAgdGhpcy5kNzUgPTNEIGQ3NTsK
LSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJENzAiLCBwcmVjaXNpb249M0Q3LCBzY2Fs
ZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDcwKCkgewotICAgICAgICByZXR1cm4g
dGhpcy5kNzA7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RDcwKEJpZ0RlY2ltYWwgZDcw
KSB7Ci0gICAgICAgIHRoaXMuZDcwID0zRCBkNzA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiRDYwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNp
bWFsIGdldEQ2MCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDYwOwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldEQ2MChCaWdEZWNpbWFsIGQ2MCkgewotICAgICAgICB0aGlzLmQ2MCA9M0Qg
ZDYwOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQ1MCIsIHByZWNpc2lvbj0zRDcs
IHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRENTAoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLmQ1MDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRENTAoQmlnRGVjaW1h
bCBkNTApIHsKLSAgICAgICAgdGhpcy5kNTAgPTNEIGQ1MDsKLSAgICB9Ci0KLQotICAgIEBDb2x1
bW4obmFtZT0zRCJENDAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0RDQwKCkgewotICAgICAgICByZXR1cm4gdGhpcy5kNDA7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0RDQwKEJpZ0RlY2ltYWwgZDQwKSB7Ci0gICAgICAgIHRoaXMuZDQw
ID0zRCBkNDA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDMwIiwgcHJlY2lzaW9u
PTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQzMCgpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuZDMwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQzMChCaWdE
ZWNpbWFsIGQzMCkgewotICAgICAgICB0aGlzLmQzMCA9M0QgZDMwOwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIkQyNSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXREMjUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQyNTsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREMjUoQmlnRGVjaW1hbCBkMjUpIHsKLSAgICAgICAgdGhp
cy5kMjUgPTNEIGQyNTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJEMjAiLCBwcmVj
aXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDIwKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5kMjA7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RDIw
KEJpZ0RlY2ltYWwgZDIwKSB7Ci0gICAgICAgIHRoaXMuZDIwID0zRCBkMjA7Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiRDE2IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldEQxNigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDE2Owot
ICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQxNihCaWdEZWNpbWFsIGQxNikgewotICAgICAg
ICB0aGlzLmQxNiA9M0QgZDE2OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQxMCIs
IHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREMTAo
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQxMDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXREMTAoQmlnRGVjaW1hbCBkMTApIHsKLSAgICAgICAgdGhpcy5kMTAgPTNEIGQxMDsKLSAgICB9
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJETUlOIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0
KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldERtaW4oKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LmRtaW47Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RG1pbihCaWdEZWNpbWFsIGRtaW4p
IHsKLSAgICAgICAgdGhpcy5kbWluID0zRCBkbWluOwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIkRVUkNIRE1JTiIsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMg
QmlnRGVjaW1hbCBnZXREdXJjaGRtaW4oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmR1cmNoZG1p
bjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREdXJjaGRtaW4oQmlnRGVjaW1hbCBkdXJj
aGRtaW4pIHsKLSAgICAgICAgdGhpcy5kdXJjaGRtaW4gPTNEIGR1cmNoZG1pbjsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJETUFYIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQot
ICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldERtYXgoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmRt
YXg7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RG1heChCaWdEZWNpbWFsIGRtYXgpIHsK
LSAgICAgICAgdGhpcy5kbWF4ID0zRCBkbWF4OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIkRVUkNIRE1BWCIsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmln
RGVjaW1hbCBnZXREdXJjaGRtYXgoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmR1cmNoZG1heDsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREdXJjaGRtYXgoQmlnRGVjaW1hbCBkdXJjaGRt
YXgpIHsKLSAgICAgICAgdGhpcy5kdXJjaGRtYXggPTNEIGR1cmNoZG1heDsKLSAgICB9Ci0KLQot
ICAgIEBDb2x1bW4obmFtZT0zRCJCRU1FUktVTkciLCBsZW5ndGg9M0QyNDApCi0gICAgcHVibGlj
IFN0cmluZyBnZXRCZW1lcmt1bmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJlbWVya3VuZzsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRCZW1lcmt1bmcoU3RyaW5nIGJlbWVya3VuZykg
ewotICAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwotICAgIH0KLQotQE9uZVRv
T25lKGZldGNoPTNERmV0Y2hUeXBlLkxBWlksIG1hcHBlZEJ5PTNEInNpZWJhbmFseXNlIikKLSAg
ICBwdWJsaWMgU3NpZWJ1bmcgZ2V0U3NpZWJ1bmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnNz
aWVidW5nOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNzaWVidW5nKFNzaWVidW5nIHNz
aWVidW5nKSB7Ci0gICAgICAgIHRoaXMuc3NpZWJ1bmcgPTNEIHNzaWVidW5nOwotICAgIH0KLX0K
ZGlmZiAtciA4OWRjYWFlMDgwMWMgLXIgNmE0YmRjY2NmYTRkIGJhY2tlbmQvc3JjL21haW4vamF2
YS9vcmcvZGl2ZTRlbGVtZW50PQpzL3JpdmVyL3NlZGRiL21vZGVsL1Nsb3RsaW5rcy5qYXZhCi0t
LSBhL2JhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZlci9zZWRkYi9t
b2RlbC9TbG90bGlua3Muaj0KYXZhCVR1ZSBKYW4gMTYgMTg6MTM6NTQgMjAxOCArMDEwMAorKysg
L2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSw2MSArMCwwIEBA
Ci0vKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMz
PUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQotICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50
ZXZhdGlvbiBHbWJICi0gKgotICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhl
IEdOVSBBR1BMICg+PTNEdjMpCi0gKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJB
TlRZISBDaGVjayBvdXQgdGhlCi0gKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxl
bWVudHMgUml2ZXIgZm9yIGRldGFpbHMuCi0gKi8KLQotcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50
cy5yaXZlci5zZWRkYi5tb2RlbDsKLS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5
IEhpYmVybmF0ZSBUb29scyAzLjQuMC5DUjEKLQotCi1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2Uu
QXR0cmlidXRlT3ZlcnJpZGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQXR0cmlidXRlT3Zl
cnJpZGVzOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZheC5w
ZXJzaXN0ZW5jZS5FbWJlZGRlZElkOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsK
LWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKLQotLyoqCi0gKiBTbG90bGlua3MgZ2Vu
ZXJhdGVkIGJ5IGhibTJqYXZhCi0gKi8KLUBFbnRpdHkKLUBUYWJsZShuYW1lPTNEIlNMT1RMSU5L
UyIKLSAgICAsc2NoZW1hPTNEIlNFRERCIgotKQotcHVibGljIGNsYXNzIFNsb3RsaW5rcyAgaW1w
bGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7Ci0KLQotICAgICBwcml2YXRlIFNsb3RsaW5r
c0lkIGlkOwotCi0gICAgcHVibGljIFNsb3RsaW5rcygpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
U2xvdGxpbmtzKFNsb3RsaW5rc0lkIGlkKSB7Ci0gICAgICAgdGhpcy5pZCA9M0QgaWQ7Ci0gICAg
fQotCi0gICAgIEBFbWJlZGRlZElkCi0KLSAgICBAQXR0cmlidXRlT3ZlcnJpZGVzKCB7Ci0gICAg
ICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInNsb3RyZWNodGVpZCIsIGNvbHVtbj0zREBD
b2x1bW4obmFtZT0zRD0KIlNMT1RSRUNIVEVJRCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lv
bj0zRDExLCBzY2FsZT0zRDApICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNE
Im1lc3N1bmdpZCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNRT0KU1NVTkdJRCIsIG51bGxh
YmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDApICksCi0gICAgICAgIEBBdHRy
aWJ1dGVPdmVycmlkZShuYW1lPTNEInVmZXJhYnN0IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNE
IlVGRT0KUkFCU1QiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMp
ICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInRzYW5kIiwgY29sdW1uPTNE
QENvbHVtbihuYW1lPTNEIlRTQU5EIj0KLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpICksCi0g
ICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInRzY2h3ZWIiLCBjb2x1bW49M0RAQ29s
dW1uKG5hbWU9M0QiVFNDSD0KV0VCIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKSApLAotICAg
ICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJmdiIsIGNvbHVtbj0zREBDb2x1bW4obmFt
ZT0zRCJGViIsIHByZWM9CmlzaW9uPTNENiwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmli
dXRlT3ZlcnJpZGUobmFtZT0zRCJ2bSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJWTSIsIHBy
ZWM9CmlzaW9uPTNENiwgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUo
bmFtZT0zRCJ0aWVmZSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJUSUVGRSI9CiwgcHJlY2lz
aW9uPTNEOCwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0z
RCJ2c29obGUiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiVlNPSEw9CkUiLCBwcmVjaXNpb249
M0Q2LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImJl
bWVya3VuZyIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJCRT0KTUVSS1VORyIsIGxlbmd0aD0z
RDI0MCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QidWZlcmFibGlua3Mi
LCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiPQpVRkVSQUJMSU5LUyIsIHByZWNpc2lvbj0zRDgs
IHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibGlua3Nh
YnN0IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkxJPQpOS1NBQlNUIiwgcHJlY2lzaW9uPTNE
MjIsIHNjYWxlPTNEMCkgKSB9ICkKLSAgICBwdWJsaWMgU2xvdGxpbmtzSWQgZ2V0SWQoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLmlkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldElkKFNs
b3RsaW5rc0lkIGlkKSB7Ci0gICAgICAgIHRoaXMuaWQgPTNEIGlkOwotICAgIH0KLX0KZGlmZiAt
ciA4OWRjYWFlMDgwMWMgLXIgNmE0YmRjY2NmYTRkIGJhY2tlbmQvc3JjL21haW4vamF2YS9vcmcv
ZGl2ZTRlbGVtZW50PQpzL3JpdmVyL3NlZGRiL21vZGVsL1Nsb3RsaW5rc0lkLmphdmEKLS0tIGEv
YmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVs
L1Nsb3RsaW5rc0lkPQouamF2YQlUdWUgSmFuIDE2IDE4OjEzOjU0IDIwMTggKzAxMDAKKysrIC9k
ZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMjE5ICswLDAgQEAK
LS8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9
QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCi0gKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRl
dmF0aW9uIEdtYkgKLSAqCi0gKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUg
R05VIEFHUEwgKD49M0R2MykKLSAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFO
VFkhIENoZWNrIG91dCB0aGUKLSAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVt
ZW50cyBSaXZlciBmb3IgZGV0YWlscy4KLSAqLwotCi1wYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRz
LnJpdmVyLnNlZGRiLm1vZGVsOwotLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkg
SGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQotCi0KLWltcG9ydCBqYXZhLm1hdGguQmlnRGVjaW1h
bDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuRW1iZWRkYWJsZTsKLQotLyoqCi0gKiBTbG90bGlua3NJZCBnZW5lcmF0ZWQgYnkgaGJt
MmphdmEKLSAqLwotQEVtYmVkZGFibGUKLXB1YmxpYyBjbGFzcyBTbG90bGlua3NJZCAgaW1wbGVt
ZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7Ci0KLQotICAgICBwcml2YXRlIGxvbmcgc2xvdHJl
Y2h0ZWlkOwotICAgICBwcml2YXRlIGxvbmcgbWVzc3VuZ2lkOwotICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgdWZlcmFic3Q7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB0c2FuZDsKLSAgICAgcHJp
dmF0ZSBCaWdEZWNpbWFsIHRzY2h3ZWI7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBmdjsKLSAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHZtOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdGllZmU7
Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB2c29obGU7Ci0gICAgIHByaXZhdGUgU3RyaW5nIGJl
bWVya3VuZzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHVmZXJhYmxpbmtzOwotICAgICBwcml2
YXRlIEJpZ0RlY2ltYWwgbGlua3NhYnN0OwotCi0gICAgcHVibGljIFNsb3RsaW5rc0lkKCkgewot
ICAgIH0KLQotICAgIHB1YmxpYyBTbG90bGlua3NJZChsb25nIHNsb3RyZWNodGVpZCwgbG9uZyBt
ZXNzdW5naWQsIEJpZ0RlY2ltYWwgdWZlcmE9CmJzdCkgewotICAgICAgICB0aGlzLnNsb3RyZWNo
dGVpZCA9M0Qgc2xvdHJlY2h0ZWlkOwotICAgICAgICB0aGlzLm1lc3N1bmdpZCA9M0QgbWVzc3Vu
Z2lkOwotICAgICAgICB0aGlzLnVmZXJhYnN0ID0zRCB1ZmVyYWJzdDsKLSAgICB9Ci0gICAgcHVi
bGljIFNsb3RsaW5rc0lkKGxvbmcgc2xvdHJlY2h0ZWlkLCBsb25nIG1lc3N1bmdpZCwgQmlnRGVj
aW1hbCB1ZmVyYT0KYnN0LCBCaWdEZWNpbWFsIHRzYW5kLCBCaWdEZWNpbWFsIHRzY2h3ZWIsIEJp
Z0RlY2ltYWwgZnYsIEJpZ0RlY2ltYWwgdm0sIEJpPQpnRGVjaW1hbCB0aWVmZSwgQmlnRGVjaW1h
bCB2c29obGUsIFN0cmluZyBiZW1lcmt1bmcsIEJpZ0RlY2ltYWwgdWZlcmFibGlua3M9CiwgQmln
RGVjaW1hbCBsaW5rc2Fic3QpIHsKLSAgICAgICB0aGlzLnNsb3RyZWNodGVpZCA9M0Qgc2xvdHJl
Y2h0ZWlkOwotICAgICAgIHRoaXMubWVzc3VuZ2lkID0zRCBtZXNzdW5naWQ7Ci0gICAgICAgdGhp
cy51ZmVyYWJzdCA9M0QgdWZlcmFic3Q7Ci0gICAgICAgdGhpcy50c2FuZCA9M0QgdHNhbmQ7Ci0g
ICAgICAgdGhpcy50c2Nod2ViID0zRCB0c2Nod2ViOwotICAgICAgIHRoaXMuZnYgPTNEIGZ2Owot
ICAgICAgIHRoaXMudm0gPTNEIHZtOwotICAgICAgIHRoaXMudGllZmUgPTNEIHRpZWZlOwotICAg
ICAgIHRoaXMudnNvaGxlID0zRCB2c29obGU7Ci0gICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJl
bWVya3VuZzsKLSAgICAgICB0aGlzLnVmZXJhYmxpbmtzID0zRCB1ZmVyYWJsaW5rczsKLSAgICAg
ICB0aGlzLmxpbmtzYWJzdCA9M0QgbGlua3NhYnN0OwotICAgIH0KLQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiU0xPVFJFQ0hURUlEIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMTEs
IHNjYWxlPQo9M0QwKQotICAgIHB1YmxpYyBsb25nIGdldFNsb3RyZWNodGVpZCgpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuc2xvdHJlY2h0ZWlkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dFNsb3RyZWNodGVpZChsb25nIHNsb3RyZWNodGVpZCkgewotICAgICAgICB0aGlzLnNsb3RyZWNo
dGVpZCA9M0Qgc2xvdHJlY2h0ZWlkOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1F
U1NVTkdJRCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRD0KMCkK
LSAgICBwdWJsaWMgbG9uZyBnZXRNZXNzdW5naWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1l
c3N1bmdpZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNZXNzdW5naWQobG9uZyBtZXNz
dW5naWQpIHsKLSAgICAgICAgdGhpcy5tZXNzdW5naWQgPTNEIG1lc3N1bmdpZDsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJVRkVSQUJTVCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNp
c2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRVZmVyYWJzdCgp
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMudWZlcmFic3Q7Ci0gICAgfQotCi0gICAgcHVibGljIHZv
aWQgc2V0VWZlcmFic3QoQmlnRGVjaW1hbCB1ZmVyYWJzdCkgewotICAgICAgICB0aGlzLnVmZXJh
YnN0ID0zRCB1ZmVyYWJzdDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJUU0FORCIs
IHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRUc2Fu
ZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudHNhbmQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZv
aWQgc2V0VHNhbmQoQmlnRGVjaW1hbCB0c2FuZCkgewotICAgICAgICB0aGlzLnRzYW5kID0zRCB0
c2FuZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJUU0NIV0VCIiwgcHJlY2lzaW9u
PTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFRzY2h3ZWIoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLnRzY2h3ZWI7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0
VHNjaHdlYihCaWdEZWNpbWFsIHRzY2h3ZWIpIHsKLSAgICAgICAgdGhpcy50c2Nod2ViID0zRCB0
c2Nod2ViOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkZWIiwgcHJlY2lzaW9uPTNE
Niwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEZ2KCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5mdjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRGdihCaWdEZWNpbWFs
IGZ2KSB7Ci0gICAgICAgIHRoaXMuZnYgPTNEIGZ2OwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIlZNIiwgcHJlY2lzaW9uPTNENiwgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNp
bWFsIGdldFZtKCkgewotICAgICAgICByZXR1cm4gdGhpcy52bTsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRWbShCaWdEZWNpbWFsIHZtKSB7Ci0gICAgICAgIHRoaXMudm0gPTNEIHZtOwot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlRJRUZFIiwgcHJlY2lzaW9uPTNEOCwgc2Nh
bGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFRpZWZlKCkgewotICAgICAgICByZXR1
cm4gdGhpcy50aWVmZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUaWVmZShCaWdEZWNp
bWFsIHRpZWZlKSB7Ci0gICAgICAgIHRoaXMudGllZmUgPTNEIHRpZWZlOwotICAgIH0KLQotCi0g
ICAgQENvbHVtbihuYW1lPTNEIlZTT0hMRSIsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNENCkKLSAg
ICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRWc29obGUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnZz
b2hsZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRWc29obGUoQmlnRGVjaW1hbCB2c29o
bGUpIHsKLSAgICAgICAgdGhpcy52c29obGUgPTNEIHZzb2hsZTsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJCRU1FUktVTkciLCBsZW5ndGg9M0QyNDApCi0gICAgcHVibGljIFN0cmlu
ZyBnZXRCZW1lcmt1bmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJlbWVya3VuZzsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRCZW1lcmt1bmcoU3RyaW5nIGJlbWVya3VuZykgewotICAg
ICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwotICAgIH0KLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIlVGRVJBQkxJTktTIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldFVmZXJhYmxpbmtzKCkgewotICAgICAgICByZXR1cm4gdGhpcy51
ZmVyYWJsaW5rczsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRVZmVyYWJsaW5rcyhCaWdE
ZWNpbWFsIHVmZXJhYmxpbmtzKSB7Ci0gICAgICAgIHRoaXMudWZlcmFibGlua3MgPTNEIHVmZXJh
YmxpbmtzOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkxJTktTQUJTVCIsIHByZWNp
c2lvbj0zRDIyLCBzY2FsZT0zRDApCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TGlua3NhYnN0
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5saW5rc2Fic3Q7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0TGlua3NhYnN0KEJpZ0RlY2ltYWwgbGlua3NhYnN0KSB7Ci0gICAgICAgIHRoaXMu
bGlua3NhYnN0ID0zRCBsaW5rc2Fic3Q7Ci0gICAgfQotCi0KLSAgIHB1YmxpYyBib29sZWFuIGVx
dWFscyhPYmplY3Qgb3RoZXIpIHsKLSAgICAgICAgIGlmICggKHRoaXMgPTNEPTNEIG90aGVyICkg
KSByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIGlmICggKG90aGVyID0zRD0zRCBudWxsICkgKSByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICBpZiAoICEob3RoZXIgaW5zdGFuY2VvZiBTbG90bGlua3NJZCkg
KSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICBTbG90bGlua3NJZCBjYXN0T3RoZXIgPTNEICggU2xv
dGxpbmtzSWQgKSBvdGhlcjsKLQotICAgICAgICAgcmV0dXJuICh0aGlzLmdldFNsb3RyZWNodGVp
ZCgpPTNEPTNEY2FzdE90aGVyLmdldFNsb3RyZWNodGVpZCgpKQotICYmICh0aGlzLmdldE1lc3N1
bmdpZCgpPTNEPTNEY2FzdE90aGVyLmdldE1lc3N1bmdpZCgpKQotICYmICggKHRoaXMuZ2V0VWZl
cmFic3QoKT0zRD0zRGNhc3RPdGhlci5nZXRVZmVyYWJzdCgpKSB8fCAoIHRoaXMuZ2V0VWZlcmE9
CmJzdCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFVmZXJhYnN0KCkhPTNEbnVsbCAmJiB0aGlz
LmdldFVmZXJhYnN0KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldFVmZXJhYnN0KCkpICkgKQotICYm
ICggKHRoaXMuZ2V0VHNhbmQoKT0zRD0zRGNhc3RPdGhlci5nZXRUc2FuZCgpKSB8fCAoIHRoaXMu
Z2V0VHNhbmQoKSE9M0Q9Cm51bGwgJiYgY2FzdE90aGVyLmdldFRzYW5kKCkhPTNEbnVsbCAmJiB0
aGlzLmdldFRzYW5kKCkuZXF1YWxzKGNhc3RPdGhlci5nZT0KdFRzYW5kKCkpICkgKQotICYmICgg
KHRoaXMuZ2V0VHNjaHdlYigpPTNEPTNEY2FzdE90aGVyLmdldFRzY2h3ZWIoKSkgfHwgKCB0aGlz
LmdldFRzY2h3ZWI9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFRzY2h3ZWIoKSE9M0RudWxs
ICYmIHRoaXMuZ2V0VHNjaHdlYigpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRUc2Nod2ViKCkpICkg
KQotICYmICggKHRoaXMuZ2V0RnYoKT0zRD0zRGNhc3RPdGhlci5nZXRGdigpKSB8fCAoIHRoaXMu
Z2V0RnYoKSE9M0RudWxsICYmIGM9CmFzdE90aGVyLmdldEZ2KCkhPTNEbnVsbCAmJiB0aGlzLmdl
dEZ2KCkuZXF1YWxzKGNhc3RPdGhlci5nZXRGdigpKSApICkKLSAmJiAoICh0aGlzLmdldFZtKCk9
M0Q9M0RjYXN0T3RoZXIuZ2V0Vm0oKSkgfHwgKCB0aGlzLmdldFZtKCkhPTNEbnVsbCAmJiBjPQph
c3RPdGhlci5nZXRWbSgpIT0zRG51bGwgJiYgdGhpcy5nZXRWbSgpLmVxdWFscyhjYXN0T3RoZXIu
Z2V0Vm0oKSkgKSApCi0gJiYgKCAodGhpcy5nZXRUaWVmZSgpPTNEPTNEY2FzdE90aGVyLmdldFRp
ZWZlKCkpIHx8ICggdGhpcy5nZXRUaWVmZSgpIT0zRD0KbnVsbCAmJiBjYXN0T3RoZXIuZ2V0VGll
ZmUoKSE9M0RudWxsICYmIHRoaXMuZ2V0VGllZmUoKS5lcXVhbHMoY2FzdE90aGVyLmdlPQp0VGll
ZmUoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRWc29obGUoKT0zRD0zRGNhc3RPdGhlci5nZXRWc29o
bGUoKSkgfHwgKCB0aGlzLmdldFZzb2hsZSgpIT0KPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0VnNv
aGxlKCkhPTNEbnVsbCAmJiB0aGlzLmdldFZzb2hsZSgpLmVxdWFscyhjYXN0T3RoPQplci5nZXRW
c29obGUoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRCZW1lcmt1bmcoKT0zRD0zRGNhc3RPdGhlci5n
ZXRCZW1lcmt1bmcoKSkgfHwgKCB0aGlzLmdldEJlbT0KZXJrdW5nKCkhPTNEbnVsbCAmJiBjYXN0
T3RoZXIuZ2V0QmVtZXJrdW5nKCkhPTNEbnVsbCAmJiB0aGlzLmdldEJlbWVya3VuZygpPQouZXF1
YWxzKGNhc3RPdGhlci5nZXRCZW1lcmt1bmcoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRVZmVyYWJs
aW5rcygpPTNEPTNEY2FzdE90aGVyLmdldFVmZXJhYmxpbmtzKCkpIHx8ICggdGhpcy5nZT0KdFVm
ZXJhYmxpbmtzKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0VWZlcmFibGlua3MoKSE9M0RudWxs
ICYmIHRoaXMuZ2V0VWZlPQpyYWJsaW5rcygpLmVxdWFscyhjYXN0T3RoZXIuZ2V0VWZlcmFibGlu
a3MoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRMaW5rc2Fic3QoKT0zRD0zRGNhc3RPdGhlci5nZXRM
aW5rc2Fic3QoKSkgfHwgKCB0aGlzLmdldExpbj0Ka3NhYnN0KCkhPTNEbnVsbCAmJiBjYXN0T3Ro
ZXIuZ2V0TGlua3NhYnN0KCkhPTNEbnVsbCAmJiB0aGlzLmdldExpbmtzYWJzdCgpPQouZXF1YWxz
KGNhc3RPdGhlci5nZXRMaW5rc2Fic3QoKSkgKSApOwotICAgfQotCi0gICBwdWJsaWMgaW50IGhh
c2hDb2RlKCkgewotICAgICAgICAgaW50IHJlc3VsdCA9M0QgMTc7Ci0KLSAgICAgICAgIHJlc3Vs
dCA9M0QgMzcgKiByZXN1bHQgKyAoaW50KSB0aGlzLmdldFNsb3RyZWNodGVpZCgpOwotICAgICAg
ICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArIChpbnQpIHRoaXMuZ2V0TWVzc3VuZ2lkKCk7Ci0g
ICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRVZmVyYWJzdCgpID0zRD0zRCBu
dWxsID8gMCA6IHRoaXMuZz0KZXRVZmVyYWJzdCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJl
c3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFRzYW5kKCkgPTNEPTNEIG51bGwgPyAwIDogdGhp
cy5nZXRUPQpzYW5kKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJl
c3VsdCArICggZ2V0VHNjaHdlYigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRUc2Nod2Vi
KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0
RnYoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEZ2KCk9Ci5oYXNoQ29kZSgpICk7Ci0gICAg
ICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRWbSgpID0zRD0zRCBudWxsID8gMCA6
IHRoaXMuZ2V0Vm0oKT0KLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiBy
ZXN1bHQgKyAoIGdldFRpZWZlKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRUPQppZWZlKCku
aGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0VnNv
aGxlKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXQ9ClZzb2hsZSgpLmhhc2hDb2RlKCkgKTsK
LSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEJlbWVya3VuZygpID0zRD0z
RCBudWxsID8gMCA6IHRoaXMuPQpnZXRCZW1lcmt1bmcoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAg
ICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRVZmVyYWJsaW5rcygpID0zRD0zRCBudWxs
ID8gMCA6IHRoaT0Kcy5nZXRVZmVyYWJsaW5rcygpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJl
c3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldExpbmtzYWJzdCgpID0zRD0zRCBudWxsID8gMCA6
IHRoaXMuPQpnZXRMaW5rc2Fic3QoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgfQotfQpkaWZmIC1yIDg5ZGNhYWUwODAxYyAtciA2YTRiZGNjY2ZhNGQgYmFja2Vu
ZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMvcml2ZXIvc2VkZGIvbW9kZWwvU2xv
dHJlY2h0ZS5qYXZhCi0tLSBhL2JhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50
cy9yaXZlci9zZWRkYi9tb2RlbC9TbG90cmVjaHRlLj0KamF2YQlUdWUgSmFuIDE2IDE4OjEzOjU0
IDIwMTggKzAxMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAK
QEAgLTEsMTkxICswLDAgQEAKLS8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBC
dW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCi0gKiBTb2Z0d2FyZSBl
bmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgKLSAqCi0gKiBUaGlzIGZpbGUgaXMgRnJlZSBT
b2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49M0R2MykKLSAqIGFuZCBjb21lcyB3aXRoIEFC
U09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUKLSAqIGRvY3VtZW50YXRpb24gY29t
aW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy4KLSAqLwotCi1wYWNrYWdl
IG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRiLm1vZGVsOwotLy8gR2VuZXJhdGVkIDE0LjA2
LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQotCi0KLWltcG9ydCBq
YXZhLm1hdGguQmlnRGVjaW1hbDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBq
YXZhLnV0aWwuU2V0OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBq
YXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRmV0Y2hU
eXBlOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOwotaW1wb3J0IGphdmF4LnBlcnNpc3Rl
bmNlLkpvaW5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTWFueVRvT25lOwotaW1w
b3J0IGphdmF4LnBlcnNpc3RlbmNlLk9uZVRvTWFueTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5j
ZS5UYWJsZTsKLQotLyoqCi0gKiBTbG90cmVjaHRlIGdlbmVyYXRlZCBieSBoYm0yamF2YQotICov
Ci1ARW50aXR5Ci1AVGFibGUobmFtZT0zRCJTTE9UUkVDSFRFIgotICAgICxzY2hlbWE9M0QiU0VE
REIiCi0pCi1wdWJsaWMgY2xhc3MgU2xvdHJlY2h0ZSAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlh
bGl6YWJsZSB7Ci0KLQotICAgICBwcml2YXRlIGxvbmcgc2xvdHJlY2h0ZWlkOwotICAgICBwcml2
YXRlIE1lc3N1bmcgbWVzc3VuZzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHVmZXJhYnN0Owot
ICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdHNhbmQ7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB0
c2Nod2ViOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZnY7Ci0gICAgIHByaXZhdGUgQmlnRGVj
aW1hbCB2bTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHRpZWZlOwotICAgICBwcml2YXRlIEJp
Z0RlY2ltYWwgdnNvaGxlOwotICAgICBwcml2YXRlIFN0cmluZyBiZW1lcmt1bmc7Ci0gICAgIHBy
aXZhdGUgQmlnRGVjaW1hbCB1ZmVyYWJsaW5rczsKLSAgICAgcHJpdmF0ZSBTZXQ8U3Byb2JlPiBz
cHJvYmVzID0zRCBuZXcgSGFzaFNldDxTcHJvYmU+KDApOwotCi0gICAgcHVibGljIFNsb3RyZWNo
dGUoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIFNsb3RyZWNodGUobG9uZyBzbG90cmVjaHRlaWQs
IE1lc3N1bmcgbWVzc3VuZywgQmlnRGVjaW1hbCB1ZmVyYT0KYnN0KSB7Ci0gICAgICAgIHRoaXMu
c2xvdHJlY2h0ZWlkID0zRCBzbG90cmVjaHRlaWQ7Ci0gICAgICAgIHRoaXMubWVzc3VuZyA9M0Qg
bWVzc3VuZzsKLSAgICAgICAgdGhpcy51ZmVyYWJzdCA9M0QgdWZlcmFic3Q7Ci0gICAgfQotICAg
IHB1YmxpYyBTbG90cmVjaHRlKGxvbmcgc2xvdHJlY2h0ZWlkLCBNZXNzdW5nIG1lc3N1bmcsIEJp
Z0RlY2ltYWwgdWZlcmE9CmJzdCwgQmlnRGVjaW1hbCB0c2FuZCwgQmlnRGVjaW1hbCB0c2Nod2Vi
LCBCaWdEZWNpbWFsIGZ2LCBCaWdEZWNpbWFsIHZtLCBCaT0KZ0RlY2ltYWwgdGllZmUsIEJpZ0Rl
Y2ltYWwgdnNvaGxlLCBTdHJpbmcgYmVtZXJrdW5nLCBCaWdEZWNpbWFsIHVmZXJhYmxpbmtzPQos
IFNldDxTcHJvYmU+IHNwcm9iZXMpIHsKLSAgICAgICB0aGlzLnNsb3RyZWNodGVpZCA9M0Qgc2xv
dHJlY2h0ZWlkOwotICAgICAgIHRoaXMubWVzc3VuZyA9M0QgbWVzc3VuZzsKLSAgICAgICB0aGlz
LnVmZXJhYnN0ID0zRCB1ZmVyYWJzdDsKLSAgICAgICB0aGlzLnRzYW5kID0zRCB0c2FuZDsKLSAg
ICAgICB0aGlzLnRzY2h3ZWIgPTNEIHRzY2h3ZWI7Ci0gICAgICAgdGhpcy5mdiA9M0QgZnY7Ci0g
ICAgICAgdGhpcy52bSA9M0Qgdm07Ci0gICAgICAgdGhpcy50aWVmZSA9M0QgdGllZmU7Ci0gICAg
ICAgdGhpcy52c29obGUgPTNEIHZzb2hsZTsKLSAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVt
ZXJrdW5nOwotICAgICAgIHRoaXMudWZlcmFibGlua3MgPTNEIHVmZXJhYmxpbmtzOwotICAgICAg
IHRoaXMuc3Byb2JlcyA9M0Qgc3Byb2JlczsKLSAgICB9Ci0KLSAgICAgQElkCi0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJTTE9UUkVDSFRFSUQiLCB1bmlxdWU9M0R0cnVlLCBudWxsYWJsZT0zRGZh
bHNlLCBwcmVjaXM9Cmlvbj0zRDExLCBzY2FsZT0zRDApCi0gICAgcHVibGljIGxvbmcgZ2V0U2xv
dHJlY2h0ZWlkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5zbG90cmVjaHRlaWQ7Ci0gICAgfQot
Ci0gICAgcHVibGljIHZvaWQgc2V0U2xvdHJlY2h0ZWlkKGxvbmcgc2xvdHJlY2h0ZWlkKSB7Ci0g
ICAgICAgIHRoaXMuc2xvdHJlY2h0ZWlkID0zRCBzbG90cmVjaHRlaWQ7Ci0gICAgfQotCi1ATWFu
eVRvT25lKGZldGNoPTNERmV0Y2hUeXBlLkxBWlkpCi0gICAgQEpvaW5Db2x1bW4obmFtZT0zRCJN
RVNTVU5HSUQiLCBudWxsYWJsZT0zRGZhbHNlKQotICAgIHB1YmxpYyBNZXNzdW5nIGdldE1lc3N1
bmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1lc3N1bmc7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0TWVzc3VuZyhNZXNzdW5nIG1lc3N1bmcpIHsKLSAgICAgICAgdGhpcy5tZXNzdW5n
ID0zRCBtZXNzdW5nOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlVGRVJBQlNUIiwg
bnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBC
aWdEZWNpbWFsIGdldFVmZXJhYnN0KCkgewotICAgICAgICByZXR1cm4gdGhpcy51ZmVyYWJzdDsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRVZmVyYWJzdChCaWdEZWNpbWFsIHVmZXJhYnN0
KSB7Ci0gICAgICAgIHRoaXMudWZlcmFic3QgPTNEIHVmZXJhYnN0OwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIlRTQU5EIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldFRzYW5kKCkgewotICAgICAgICByZXR1cm4gdGhpcy50c2FuZDsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUc2FuZChCaWdEZWNpbWFsIHRzYW5kKSB7Ci0g
ICAgICAgIHRoaXMudHNhbmQgPTNEIHRzYW5kOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIlRTQ0hXRUIiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0VHNjaHdlYigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudHNjaHdlYjsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUc2Nod2ViKEJpZ0RlY2ltYWwgdHNjaHdlYikgewotICAg
ICAgICB0aGlzLnRzY2h3ZWIgPTNEIHRzY2h3ZWI7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiRlYiLCBwcmVjaXNpb249M0Q2LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2lt
YWwgZ2V0RnYoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmZ2OwotICAgIH0KLQotICAgIHB1Ymxp
YyB2b2lkIHNldEZ2KEJpZ0RlY2ltYWwgZnYpIHsKLSAgICAgICAgdGhpcy5mdiA9M0QgZnY7Ci0g
ICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVk0iLCBwcmVjaXNpb249M0Q2LCBzY2FsZT0z
RDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0Vm0oKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LnZtOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFZtKEJpZ0RlY2ltYWwgdm0pIHsKLSAg
ICAgICAgdGhpcy52bSA9M0Qgdm07Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVElF
RkUiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0
VGllZmUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRpZWZlOwotICAgIH0KLQotICAgIHB1Ymxp
YyB2b2lkIHNldFRpZWZlKEJpZ0RlY2ltYWwgdGllZmUpIHsKLSAgICAgICAgdGhpcy50aWVmZSA9
M0QgdGllZmU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVlNPSExFIiwgcHJlY2lz
aW9uPTNENiwgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFZzb2hsZSgpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMudnNvaGxlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dFZzb2hsZShCaWdEZWNpbWFsIHZzb2hsZSkgewotICAgICAgICB0aGlzLnZzb2hsZSA9M0QgdnNv
aGxlOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkJFTUVSS1VORyIsIGxlbmd0aD0z
RDI0MCkKLSAgICBwdWJsaWMgU3RyaW5nIGdldEJlbWVya3VuZygpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuYmVtZXJrdW5nOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEJlbWVya3VuZyhT
dHJpbmcgYmVtZXJrdW5nKSB7Ci0gICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7
Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVUZFUkFCTElOS1MiLCBwcmVjaXNpb249
M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VWZlcmFibGlua3MoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLnVmZXJhYmxpbmtzOwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldFVmZXJhYmxpbmtzKEJpZ0RlY2ltYWwgdWZlcmFibGlua3MpIHsKLSAgICAgICAgdGhp
cy51ZmVyYWJsaW5rcyA9M0QgdWZlcmFibGlua3M7Ci0gICAgfQotCi1AT25lVG9NYW55KGZldGNo
PTNERmV0Y2hUeXBlLkxBWlksIG1hcHBlZEJ5PTNEInNsb3RyZWNodGUiKQotICAgIHB1YmxpYyBT
ZXQ8U3Byb2JlPiBnZXRTcHJvYmVzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5zcHJvYmVzOwot
ICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNwcm9iZXMoU2V0PFNwcm9iZT4gc3Byb2Jlcykg
ewotICAgICAgICB0aGlzLnNwcm9iZXMgPTNEIHNwcm9iZXM7Ci0gICAgfQotfQpkaWZmIC1yIDg5
ZGNhYWUwODAxYyAtciA2YTRiZGNjY2ZhNGQgYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZl
NGVsZW1lbnQ9CnMvcml2ZXIvc2VkZGIvbW9kZWwvU29obHByb2JlLmphdmEKLS0tIGEvYmFja2Vu
ZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVsL1NvaGxw
cm9iZS5qPQphdmEJVHVlIEphbiAxNiAxODoxMzo1NCAyMDE4ICswMTAwCisrKyAvZGV2L251bGwJ
VGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDE2NCArMCwwIEBACi0vKiBDb3B5
cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9
QzM9QTRzc2Vyaz0KdW5kZQotICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBH
bWJICi0gKgotICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BM
ICg+PTNEdjMpCi0gKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVj
ayBvdXQgdGhlCi0gKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2
ZXIgZm9yIGRldGFpbHMuCi0gKi8KLQotcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5z
ZWRkYi5tb2RlbDsKLS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0
ZSBUb29scyAzLjQuMC5DUjEKLQotCi1pbXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7Ci1pbXBv
cnQgamF2YS51dGlsLkRhdGU7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7Ci1pbXBvcnQgamF2
YS51dGlsLlNldDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2
YXgucGVyc2lzdGVuY2UuRW50aXR5OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlw
ZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5j
ZS5Kb2luQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk1hbnlUb09uZTsKLWltcG9y
dCBqYXZheC5wZXJzaXN0ZW5jZS5PbmVUb01hbnk7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2Uu
VGFibGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGVtcG9yYWw7Ci1pbXBvcnQgamF2YXgu
cGVyc2lzdGVuY2UuVGVtcG9yYWxUeXBlOwotCi0vKioKLSAqIFNvaGxwcm9iZSBnZW5lcmF0ZWQg
YnkgaGJtMmphdmEKLSAqLwotQEVudGl0eQotQFRhYmxlKG5hbWU9M0QiU09ITFBST0JFIgotICAg
ICxzY2hlbWE9M0QiU0VEREIiCi0pCi1wdWJsaWMgY2xhc3MgU29obHByb2JlICBpbXBsZW1lbnRz
IGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAgIHByaXZhdGUgbG9uZyBzb2hscHJvYmVp
ZDsKLSAgICAgcHJpdmF0ZSBaenByb2JlbmFobWVhcnQgenpwcm9iZW5haG1lYXJ0OwotICAgICBw
cml2YXRlIFNvaGx0ZXN0IHNvaGx0ZXN0OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdGllZmV2
b247Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB0aWVmZWJpczsKLSAgICAgcHJpdmF0ZSBTdHJp
bmcgYmVzY2hyZWlidW5nOwotICAgICBwcml2YXRlIERhdGUgbGFzdHVwZGF0ZWQ7Ci0gICAgIHBy
aXZhdGUgU2V0PFByb2JlYmlsZD4gcHJvYmViaWxkcyA9M0QgbmV3IEhhc2hTZXQ8UHJvYmViaWxk
PigwKTsKLSAgICAgcHJpdmF0ZSBTZXQ8U2llYmFuYWx5c2U+IHNpZWJhbmFseXNlcyA9M0QgbmV3
IEhhc2hTZXQ8U2llYmFuYWx5c2U+KDApOwotCi0gICAgcHVibGljIFNvaGxwcm9iZSgpIHsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgU29obHByb2JlKGxvbmcgc29obHByb2JlaWQsIFp6cHJvYmVuYWht
ZWFydCB6enByb2JlbmFobWVhcnQsIFNvPQpobHRlc3Qgc29obHRlc3QsIERhdGUgbGFzdHVwZGF0
ZWQpIHsKLSAgICAgICAgdGhpcy5zb2hscHJvYmVpZCA9M0Qgc29obHByb2JlaWQ7Ci0gICAgICAg
IHRoaXMuenpwcm9iZW5haG1lYXJ0ID0zRCB6enByb2JlbmFobWVhcnQ7Ci0gICAgICAgIHRoaXMu
c29obHRlc3QgPTNEIHNvaGx0ZXN0OwotICAgICAgICB0aGlzLmxhc3R1cGRhdGVkID0zRCBsYXN0
dXBkYXRlZDsKLSAgICB9Ci0gICAgcHVibGljIFNvaGxwcm9iZShsb25nIHNvaGxwcm9iZWlkLCBa
enByb2JlbmFobWVhcnQgenpwcm9iZW5haG1lYXJ0LCBTbz0KaGx0ZXN0IHNvaGx0ZXN0LCBCaWdE
ZWNpbWFsIHRpZWZldm9uLCBCaWdEZWNpbWFsIHRpZWZlYmlzLCBTdHJpbmcgYmVzY2hyZWliPQp1
bmcsIERhdGUgbGFzdHVwZGF0ZWQsIFNldDxQcm9iZWJpbGQ+IHByb2JlYmlsZHMsIFNldDxTaWVi
YW5hbHlzZT4gc2llYmFuYWw9CnlzZXMpIHsKLSAgICAgICB0aGlzLnNvaGxwcm9iZWlkID0zRCBz
b2hscHJvYmVpZDsKLSAgICAgICB0aGlzLnp6cHJvYmVuYWhtZWFydCA9M0Qgenpwcm9iZW5haG1l
YXJ0OwotICAgICAgIHRoaXMuc29obHRlc3QgPTNEIHNvaGx0ZXN0OwotICAgICAgIHRoaXMudGll
ZmV2b24gPTNEIHRpZWZldm9uOwotICAgICAgIHRoaXMudGllZmViaXMgPTNEIHRpZWZlYmlzOwot
ICAgICAgIHRoaXMuYmVzY2hyZWlidW5nID0zRCBiZXNjaHJlaWJ1bmc7Ci0gICAgICAgdGhpcy5s
YXN0dXBkYXRlZCA9M0QgbGFzdHVwZGF0ZWQ7Ci0gICAgICAgdGhpcy5wcm9iZWJpbGRzID0zRCBw
cm9iZWJpbGRzOwotICAgICAgIHRoaXMuc2llYmFuYWx5c2VzID0zRCBzaWViYW5hbHlzZXM7Ci0g
ICAgfQotCi0gICAgIEBJZAotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiU09ITFBST0JFSUQiLCB1
bmlxdWU9M0R0cnVlLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpPQpvbj0zRDExLCBzY2FsZT0z
RDApCi0gICAgcHVibGljIGxvbmcgZ2V0U29obHByb2JlaWQoKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLnNvaGxwcm9iZWlkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNvaGxwcm9iZWlk
KGxvbmcgc29obHByb2JlaWQpIHsKLSAgICAgICAgdGhpcy5zb2hscHJvYmVpZCA9M0Qgc29obHBy
b2JlaWQ7Ci0gICAgfQotCi1ATWFueVRvT25lKGZldGNoPTNERmV0Y2hUeXBlLkxBWlkpCi0gICAg
QEpvaW5Db2x1bW4obmFtZT0zRCJQUk9CRU5BSE1FQVJUSUQiLCBudWxsYWJsZT0zRGZhbHNlKQot
ICAgIHB1YmxpYyBaenByb2JlbmFobWVhcnQgZ2V0Wnpwcm9iZW5haG1lYXJ0KCkgewotICAgICAg
ICByZXR1cm4gdGhpcy56enByb2JlbmFobWVhcnQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0Wnpwcm9iZW5haG1lYXJ0KFp6cHJvYmVuYWhtZWFydCB6enByb2JlbmFobWVhcnQpIHsKLSAg
ICAgICAgdGhpcy56enByb2JlbmFobWVhcnQgPTNEIHp6cHJvYmVuYWhtZWFydDsKLSAgICB9Ci0K
LUBNYW55VG9PbmUoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSkKLSAgICBASm9pbkNvbHVtbihuYW1l
PTNEIlNPSExURVNUSUQiLCBudWxsYWJsZT0zRGZhbHNlKQotICAgIHB1YmxpYyBTb2hsdGVzdCBn
ZXRTb2hsdGVzdCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc29obHRlc3Q7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0U29obHRlc3QoU29obHRlc3Qgc29obHRlc3QpIHsKLSAgICAgICAg
dGhpcy5zb2hsdGVzdCA9M0Qgc29obHRlc3Q7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiVElFRkVWT04iLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0VGllZmV2b24oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRpZWZldm9uOwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFRpZWZldm9uKEJpZ0RlY2ltYWwgdGllZmV2b24pIHsK
LSAgICAgICAgdGhpcy50aWVmZXZvbiA9M0QgdGllZmV2b247Ci0gICAgfQotCi0KLSAgICBAQ29s
dW1uKG5hbWU9M0QiVElFRkVCSVMiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVi
bGljIEJpZ0RlY2ltYWwgZ2V0VGllZmViaXMoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRpZWZl
YmlzOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFRpZWZlYmlzKEJpZ0RlY2ltYWwgdGll
ZmViaXMpIHsKLSAgICAgICAgdGhpcy50aWVmZWJpcyA9M0QgdGllZmViaXM7Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiQkVTQ0hSRUlCVU5HIiwgbGVuZ3RoPTNEMTAyNCkKLSAgICBw
dWJsaWMgU3RyaW5nIGdldEJlc2NocmVpYnVuZygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYmVz
Y2hyZWlidW5nOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEJlc2NocmVpYnVuZyhTdHJp
bmcgYmVzY2hyZWlidW5nKSB7Ci0gICAgICAgIHRoaXMuYmVzY2hyZWlidW5nID0zRCBiZXNjaHJl
aWJ1bmc7Ci0gICAgfQotCi0gICAgQFRlbXBvcmFsKFRlbXBvcmFsVHlwZS5EQVRFKQotICAgIEBD
b2x1bW4obmFtZT0zRCJMQVNUVVBEQVRFRCIsIG51bGxhYmxlPTNEZmFsc2UsIGxlbmd0aD0zRDcp
Ci0gICAgcHVibGljIERhdGUgZ2V0TGFzdHVwZGF0ZWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
Lmxhc3R1cGRhdGVkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldExhc3R1cGRhdGVkKERh
dGUgbGFzdHVwZGF0ZWQpIHsKLSAgICAgICAgdGhpcy5sYXN0dXBkYXRlZCA9M0QgbGFzdHVwZGF0
ZWQ7Ci0gICAgfQotCi1AT25lVG9NYW55KGZldGNoPTNERmV0Y2hUeXBlLkxBWlksIG1hcHBlZEJ5
PTNEInNvaGxwcm9iZSIpCi0gICAgcHVibGljIFNldDxQcm9iZWJpbGQ+IGdldFByb2JlYmlsZHMo
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnByb2JlYmlsZHM7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0UHJvYmViaWxkcyhTZXQ8UHJvYmViaWxkPiBwcm9iZWJpbGRzKSB7Ci0gICAgICAg
IHRoaXMucHJvYmViaWxkcyA9M0QgcHJvYmViaWxkczsKLSAgICB9Ci0KLUBPbmVUb01hbnkoZmV0
Y2g9M0RGZXRjaFR5cGUuTEFaWSwgbWFwcGVkQnk9M0Qic29obHByb2JlIikKLSAgICBwdWJsaWMg
U2V0PFNpZWJhbmFseXNlPiBnZXRTaWViYW5hbHlzZXMoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LnNpZWJhbmFseXNlczsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTaWViYW5hbHlzZXMo
U2V0PFNpZWJhbmFseXNlPiBzaWViYW5hbHlzZXMpIHsKLSAgICAgICAgdGhpcy5zaWViYW5hbHlz
ZXMgPTNEIHNpZWJhbmFseXNlczsKLSAgICB9Ci0KLQotCi0KLX0KLQotCmRpZmYgLXIgODlkY2Fh
ZTA4MDFjIC1yIDZhNGJkY2NjZmE0ZCBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxl
bWVudD0Kcy9yaXZlci9zZWRkYi9tb2RlbC9Tb2hsdGVzdC5qYXZhCi0tLSBhL2JhY2tlbmQvc3Jj
L21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZlci9zZWRkYi9tb2RlbC9Tb2hsdGVzdC5q
YT0KdmEJVHVlIEphbiAxNiAxODoxMzo1NCAyMDE4ICswMTAwCisrKyAvZGV2L251bGwJVGh1IEph
biAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDMwNyArMCwwIEBACi0vKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRz
c2Vyaz0KdW5kZQotICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0g
KgotICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNE
djMpCi0gKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQg
dGhlCi0gKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9y
IGRldGFpbHMuCi0gKi8KLQotcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5t
b2RlbDsKLS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29s
cyAzLjQuMC5DUjEKLQotCi1pbXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7Ci1pbXBvcnQgamF2
YS51dGlsLkRhdGU7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7Ci1pbXBvcnQgamF2YS51dGls
LlNldDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVy
c2lzdGVuY2UuRW50aXR5OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsKLWlt
cG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Kb2lu
Q29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk1hbnlUb09uZTsKLWltcG9ydCBqYXZh
eC5wZXJzaXN0ZW5jZS5PbmVUb01hbnk7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7
Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGVtcG9yYWw7Ci1pbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuVGVtcG9yYWxUeXBlOwotCi0vKioKLSAqIFNvaGx0ZXN0IGdlbmVyYXRlZCBieSBoYm0y
amF2YQotICovCi1ARW50aXR5Ci1AVGFibGUobmFtZT0zRCJTT0hMVEVTVCIKLSAgICAsc2NoZW1h
PTNEIlNFRERCIgotKQotcHVibGljIGNsYXNzIFNvaGx0ZXN0ICBpbXBsZW1lbnRzIGphdmEuaW8u
U2VyaWFsaXphYmxlIHsKLQotICAgICBwcml2YXRlIGxvbmcgc29obHRlc3RpZDsKLSAgICAgcHJp
dmF0ZSBTdGF0aW9uIHN0YXRpb247Ci0gICAgIHByaXZhdGUgWnpzb25kaWVydW5nYXJ0IHp6c29u
ZGllcnVuZ2FydDsKLSAgICAgcHJpdmF0ZSBaemFyY2hpdiB6emFyY2hpdjsKLSAgICAgcHJpdmF0
ZSBEYXRlIGRhdHVtOwotICAgICBwcml2YXRlIGJvb2xlYW4gaXN0bnVyamFocjsKLSAgICAgcHJp
dmF0ZSBCaWdEZWNpbWFsIGttOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgYWJzdGFuZDsKLSAg
ICAgcHJpdmF0ZSBib29sZWFuIGFic3Rpc3R2b25saW5rczsKLSAgICAgcHJpdmF0ZSBib29sZWFu
IGFic3RiZXp1ZzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGFic3RvZmZzZXQ7Ci0gICAgIHBy
aXZhdGUgQmlnRGVjaW1hbCBhYnN0bGlua3M7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCByZWNo
dHM7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBob2NoOwotICAgICBwcml2YXRlIEJpZ0RlY2lt
YWwgaG9laGU7Ci0gICAgIHByaXZhdGUgU3RyaW5nIGJlbWVya3VuZzsKLSAgICAgcHJpdmF0ZSBT
dHJpbmcgc29obGViZXNjaHJlaWI7Ci0gICAgIHByaXZhdGUgU3RyaW5nIHNvbmRpZXJ1bmdiZXNj
aHJlaWI7Ci0gICAgIHByaXZhdGUgRGF0ZSBsYXN0dXBkYXRlZDsKLSAgICAgcHJpdmF0ZSBTZXQ8
QmlsZD4gYmlsZHMgPTNEIG5ldyBIYXNoU2V0PEJpbGQ+KDApOwotICAgICBwcml2YXRlIFNldDxT
b2hscHJvYmU+IHNvaGxwcm9iZXMgPTNEIG5ldyBIYXNoU2V0PFNvaGxwcm9iZT4oMCk7Ci0KLSAg
ICBwdWJsaWMgU29obHRlc3QoKSB7Ci0gICAgfQotCi0KLSAgICBwdWJsaWMgU29obHRlc3QobG9u
ZyBzb2hsdGVzdGlkLCBTdGF0aW9uIHN0YXRpb24sIERhdGUgZGF0dW0sIGJvb2xlYW4gPQppc3Ru
dXJqYWhyLCBCaWdEZWNpbWFsIGFic3RhbmQsIGJvb2xlYW4gYWJzdGlzdHZvbmxpbmtzLCBib29s
ZWFuIGFic3RiZXp1Zyw9CiBCaWdEZWNpbWFsIGFic3RvZmZzZXQsIERhdGUgbGFzdHVwZGF0ZWQp
IHsKLSAgICAgICAgdGhpcy5zb2hsdGVzdGlkID0zRCBzb2hsdGVzdGlkOwotICAgICAgICB0aGlz
LnN0YXRpb24gPTNEIHN0YXRpb247Ci0gICAgICAgIHRoaXMuZGF0dW0gPTNEIGRhdHVtOwotICAg
ICAgICB0aGlzLmlzdG51cmphaHIgPTNEIGlzdG51cmphaHI7Ci0gICAgICAgIHRoaXMuYWJzdGFu
ZCA9M0QgYWJzdGFuZDsKLSAgICAgICAgdGhpcy5hYnN0aXN0dm9ubGlua3MgPTNEIGFic3Rpc3R2
b25saW5rczsKLSAgICAgICAgdGhpcy5hYnN0YmV6dWcgPTNEIGFic3RiZXp1ZzsKLSAgICAgICAg
dGhpcy5hYnN0b2Zmc2V0ID0zRCBhYnN0b2Zmc2V0OwotICAgICAgICB0aGlzLmxhc3R1cGRhdGVk
ID0zRCBsYXN0dXBkYXRlZDsKLSAgICB9Ci0gICAgcHVibGljIFNvaGx0ZXN0KGxvbmcgc29obHRl
c3RpZCwgU3RhdGlvbiBzdGF0aW9uLCBaenNvbmRpZXJ1bmdhcnQgenpzbz0KbmRpZXJ1bmdhcnQs
IFp6YXJjaGl2IHp6YXJjaGl2LCBEYXRlIGRhdHVtLCBib29sZWFuIGlzdG51cmphaHIsIEJpZ0Rl
Y2ltYWwgPQprbSwgQmlnRGVjaW1hbCBhYnN0YW5kLCBib29sZWFuIGFic3Rpc3R2b25saW5rcywg
Ym9vbGVhbiBhYnN0YmV6dWcsIEJpZ0RlY2k9Cm1hbCBhYnN0b2Zmc2V0LCBCaWdEZWNpbWFsIGFi
c3RsaW5rcywgQmlnRGVjaW1hbCByZWNodHMsIEJpZ0RlY2ltYWwgaG9jaCwgQj0KaWdEZWNpbWFs
IGhvZWhlLCBTdHJpbmcgYmVtZXJrdW5nLCBTdHJpbmcgc29obGViZXNjaHJlaWIsIFN0cmluZyBz
b25kaWVydW5nPQpiZXNjaHJlaWIsIERhdGUgbGFzdHVwZGF0ZWQsIFNldDxCaWxkPiBiaWxkcywg
U2V0PFNvaGxwcm9iZT4gc29obHByb2JlcykgewotICAgICAgIHRoaXMuc29obHRlc3RpZCA9M0Qg
c29obHRlc3RpZDsKLSAgICAgICB0aGlzLnN0YXRpb24gPTNEIHN0YXRpb247Ci0gICAgICAgdGhp
cy56enNvbmRpZXJ1bmdhcnQgPTNEIHp6c29uZGllcnVuZ2FydDsKLSAgICAgICB0aGlzLnp6YXJj
aGl2ID0zRCB6emFyY2hpdjsKLSAgICAgICB0aGlzLmRhdHVtID0zRCBkYXR1bTsKLSAgICAgICB0
aGlzLmlzdG51cmphaHIgPTNEIGlzdG51cmphaHI7Ci0gICAgICAgdGhpcy5rbSA9M0Qga207Ci0g
ICAgICAgdGhpcy5hYnN0YW5kID0zRCBhYnN0YW5kOwotICAgICAgIHRoaXMuYWJzdGlzdHZvbmxp
bmtzID0zRCBhYnN0aXN0dm9ubGlua3M7Ci0gICAgICAgdGhpcy5hYnN0YmV6dWcgPTNEIGFic3Ri
ZXp1ZzsKLSAgICAgICB0aGlzLmFic3RvZmZzZXQgPTNEIGFic3RvZmZzZXQ7Ci0gICAgICAgdGhp
cy5hYnN0bGlua3MgPTNEIGFic3RsaW5rczsKLSAgICAgICB0aGlzLnJlY2h0cyA9M0QgcmVjaHRz
OwotICAgICAgIHRoaXMuaG9jaCA9M0QgaG9jaDsKLSAgICAgICB0aGlzLmhvZWhlID0zRCBob2Vo
ZTsKLSAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwotICAgICAgIHRoaXMuc29o
bGViZXNjaHJlaWIgPTNEIHNvaGxlYmVzY2hyZWliOwotICAgICAgIHRoaXMuc29uZGllcnVuZ2Jl
c2NocmVpYiA9M0Qgc29uZGllcnVuZ2Jlc2NocmVpYjsKLSAgICAgICB0aGlzLmxhc3R1cGRhdGVk
ID0zRCBsYXN0dXBkYXRlZDsKLSAgICAgICB0aGlzLmJpbGRzID0zRCBiaWxkczsKLSAgICAgICB0
aGlzLnNvaGxwcm9iZXMgPTNEIHNvaGxwcm9iZXM7Ci0gICAgfQotCi0gICAgIEBJZAotCi0KLSAg
ICBAQ29sdW1uKG5hbWU9M0QiU09ITFRFU1RJRCIsIHVuaXF1ZT0zRHRydWUsIG51bGxhYmxlPTNE
ZmFsc2UsIHByZWNpc2lvPQpuPTNEMTEsIHNjYWxlPTNEMCkKLSAgICBwdWJsaWMgbG9uZyBnZXRT
b2hsdGVzdGlkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5zb2hsdGVzdGlkOwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldFNvaGx0ZXN0aWQobG9uZyBzb2hsdGVzdGlkKSB7Ci0gICAgICAg
IHRoaXMuc29obHRlc3RpZCA9M0Qgc29obHRlc3RpZDsKLSAgICB9Ci0KLUBNYW55VG9PbmUoZmV0
Y2g9M0RGZXRjaFR5cGUuTEFaWSkKLSAgICBASm9pbkNvbHVtbihuYW1lPTNEIlNUQVRJT05JRCIs
IG51bGxhYmxlPTNEZmFsc2UpCi0gICAgcHVibGljIFN0YXRpb24gZ2V0U3RhdGlvbigpIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuc3RhdGlvbjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRT
dGF0aW9uKFN0YXRpb24gc3RhdGlvbikgewotICAgICAgICB0aGlzLnN0YXRpb24gPTNEIHN0YXRp
b247Ci0gICAgfQotCi1ATWFueVRvT25lKGZldGNoPTNERmV0Y2hUeXBlLkxBWlkpCi0gICAgQEpv
aW5Db2x1bW4obmFtZT0zRCJTT05ESUVSVU5HQVJUSUQiKQotICAgIHB1YmxpYyBaenNvbmRpZXJ1
bmdhcnQgZ2V0Wnpzb25kaWVydW5nYXJ0KCkgewotICAgICAgICByZXR1cm4gdGhpcy56enNvbmRp
ZXJ1bmdhcnQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0Wnpzb25kaWVydW5nYXJ0KFp6
c29uZGllcnVuZ2FydCB6enNvbmRpZXJ1bmdhcnQpIHsKLSAgICAgICAgdGhpcy56enNvbmRpZXJ1
bmdhcnQgPTNEIHp6c29uZGllcnVuZ2FydDsKLSAgICB9Ci0KLUBNYW55VG9PbmUoZmV0Y2g9M0RG
ZXRjaFR5cGUuTEFaWSkKLSAgICBASm9pbkNvbHVtbihuYW1lPTNEIkFSQ0hJVklEIikKLSAgICBw
dWJsaWMgWnphcmNoaXYgZ2V0WnphcmNoaXYoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnp6YXJj
aGl2OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFp6YXJjaGl2KFp6YXJjaGl2IHp6YXJj
aGl2KSB7Ci0gICAgICAgIHRoaXMuenphcmNoaXYgPTNEIHp6YXJjaGl2OwotICAgIH0KLQotICAg
IEBUZW1wb3JhbChUZW1wb3JhbFR5cGUuREFURSkKLSAgICBAQ29sdW1uKG5hbWU9M0QiREFUVU0i
LCBudWxsYWJsZT0zRGZhbHNlLCBsZW5ndGg9M0Q3KQotICAgIHB1YmxpYyBEYXRlIGdldERhdHVt
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5kYXR1bTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXREYXR1bShEYXRlIGRhdHVtKSB7Ci0gICAgICAgIHRoaXMuZGF0dW0gPTNEIGRhdHVtOwot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIklTVE5VUkpBSFIiLCBudWxsYWJsZT0zRGZh
bHNlLCBwcmVjaXNpb249M0QxLCBzY2FsZT0zRD0KMCkKLSAgICBwdWJsaWMgYm9vbGVhbiBpc0lz
dG51cmphaHIoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmlzdG51cmphaHI7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0SXN0bnVyamFocihib29sZWFuIGlzdG51cmphaHIpIHsKLSAgICAg
ICAgdGhpcy5pc3RudXJqYWhyID0zRCBpc3RudXJqYWhyOwotICAgIH0KLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIktNIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdE
ZWNpbWFsIGdldEttKCkgewotICAgICAgICByZXR1cm4gdGhpcy5rbTsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRLbShCaWdEZWNpbWFsIGttKSB7Ci0gICAgICAgIHRoaXMua20gPTNEIGtt
OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkFCU1RBTkQiLCBudWxsYWJsZT0zRGZh
bHNlLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0
QWJzdGFuZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYWJzdGFuZDsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRBYnN0YW5kKEJpZ0RlY2ltYWwgYWJzdGFuZCkgewotICAgICAgICB0aGlz
LmFic3RhbmQgPTNEIGFic3RhbmQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQUJT
VElTVFZPTkxJTktTIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMSwgc2NhPQpsZT0z
RDApCi0gICAgcHVibGljIGJvb2xlYW4gaXNBYnN0aXN0dm9ubGlua3MoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLmFic3Rpc3R2b25saW5rczsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRB
YnN0aXN0dm9ubGlua3MoYm9vbGVhbiBhYnN0aXN0dm9ubGlua3MpIHsKLSAgICAgICAgdGhpcy5h
YnN0aXN0dm9ubGlua3MgPTNEIGFic3Rpc3R2b25saW5rczsKLSAgICB9Ci0KLQotICAgIEBDb2x1
bW4obmFtZT0zRCJBQlNUQkVaVUciLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxLCBz
Y2FsZT0zRDApCi0gICAgcHVibGljIGJvb2xlYW4gaXNBYnN0YmV6dWcoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLmFic3RiZXp1ZzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRBYnN0YmV6
dWcoYm9vbGVhbiBhYnN0YmV6dWcpIHsKLSAgICAgICAgdGhpcy5hYnN0YmV6dWcgPTNEIGFic3Ri
ZXp1ZzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJBQlNUT0ZGU0VUIiwgbnVsbGFi
bGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0Q9CjMpCi0gICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0QWJzdG9mZnNldCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYWJzdG9mZnNldDsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRBYnN0b2Zmc2V0KEJpZ0RlY2ltYWwgYWJzdG9m
ZnNldCkgewotICAgICAgICB0aGlzLmFic3RvZmZzZXQgPTNEIGFic3RvZmZzZXQ7Ci0gICAgfQot
Ci0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQUJTVExJTktTIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9
M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEFic3RsaW5rcygpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuYWJzdGxpbmtzOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEFic3RsaW5r
cyhCaWdEZWNpbWFsIGFic3RsaW5rcykgewotICAgICAgICB0aGlzLmFic3RsaW5rcyA9M0QgYWJz
dGxpbmtzOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJFQ0hUUyIsIHByZWNpc2lv
bj0zRDExLCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UmVjaHRzKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5yZWNodHM7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0
UmVjaHRzKEJpZ0RlY2ltYWwgcmVjaHRzKSB7Ci0gICAgICAgIHRoaXMucmVjaHRzID0zRCByZWNo
dHM7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiSE9DSCIsIHByZWNpc2lvbj0zRDEx
LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0SG9jaCgpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuaG9jaDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRIb2NoKEJpZ0Rl
Y2ltYWwgaG9jaCkgewotICAgICAgICB0aGlzLmhvY2ggPTNEIGhvY2g7Ci0gICAgfQotCi0KLSAg
ICBAQ29sdW1uKG5hbWU9M0QiSE9FSEUiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAg
cHVibGljIEJpZ0RlY2ltYWwgZ2V0SG9laGUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmhvZWhl
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEhvZWhlKEJpZ0RlY2ltYWwgaG9laGUpIHsK
LSAgICAgICAgdGhpcy5ob2VoZSA9M0QgaG9laGU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiQkVNRVJLVU5HIiwgbGVuZ3RoPTNEMjQwKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0QmVt
ZXJrdW5nKCkgewotICAgICAgICByZXR1cm4gdGhpcy5iZW1lcmt1bmc7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0QmVtZXJrdW5nKFN0cmluZyBiZW1lcmt1bmcpIHsKLSAgICAgICAgdGhp
cy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJTT0hMRUJFU0NIUkVJQiIsIGxlbmd0aD0zRDEwMjQpCi0gICAgcHVibGljIFN0cmluZyBnZXRT
b2hsZWJlc2NocmVpYigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc29obGViZXNjaHJlaWI7Ci0g
ICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U29obGViZXNjaHJlaWIoU3RyaW5nIHNvaGxlYmVz
Y2hyZWliKSB7Ci0gICAgICAgIHRoaXMuc29obGViZXNjaHJlaWIgPTNEIHNvaGxlYmVzY2hyZWli
OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNPTkRJRVJVTkdCRVNDSFJFSUIiLCBs
ZW5ndGg9M0QxMDI0KQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U29uZGllcnVuZ2Jlc2NocmVpYigp
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc29uZGllcnVuZ2Jlc2NocmVpYjsKLSAgICB9Ci0KLSAg
ICBwdWJsaWMgdm9pZCBzZXRTb25kaWVydW5nYmVzY2hyZWliKFN0cmluZyBzb25kaWVydW5nYmVz
Y2hyZWliKSB7Ci0gICAgICAgIHRoaXMuc29uZGllcnVuZ2Jlc2NocmVpYiA9M0Qgc29uZGllcnVu
Z2Jlc2NocmVpYjsKLSAgICB9Ci0KLSAgICBAVGVtcG9yYWwoVGVtcG9yYWxUeXBlLkRBVEUpCi0g
ICAgQENvbHVtbihuYW1lPTNEIkxBU1RVUERBVEVEIiwgbnVsbGFibGU9M0RmYWxzZSwgbGVuZ3Ro
PTNENykKLSAgICBwdWJsaWMgRGF0ZSBnZXRMYXN0dXBkYXRlZCgpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMubGFzdHVwZGF0ZWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TGFzdHVwZGF0
ZWQoRGF0ZSBsYXN0dXBkYXRlZCkgewotICAgICAgICB0aGlzLmxhc3R1cGRhdGVkID0zRCBsYXN0
dXBkYXRlZDsKLSAgICB9Ci0KLUBPbmVUb01hbnkoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSwgbWFw
cGVkQnk9M0Qic29obHRlc3QiKQotICAgIHB1YmxpYyBTZXQ8QmlsZD4gZ2V0QmlsZHMoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLmJpbGRzOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEJp
bGRzKFNldDxCaWxkPiBiaWxkcykgewotICAgICAgICB0aGlzLmJpbGRzID0zRCBiaWxkczsKLSAg
ICB9Ci0KLUBPbmVUb01hbnkoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSwgbWFwcGVkQnk9M0Qic29o
bHRlc3QiKQotICAgIHB1YmxpYyBTZXQ8U29obHByb2JlPiBnZXRTb2hscHJvYmVzKCkgewotICAg
ICAgICByZXR1cm4gdGhpcy5zb2hscHJvYmVzOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dFNvaGxwcm9iZXMoU2V0PFNvaGxwcm9iZT4gc29obHByb2JlcykgewotICAgICAgICB0aGlzLnNv
aGxwcm9iZXMgPTNEIHNvaGxwcm9iZXM7Ci0gICAgfQotfQpkaWZmIC1yIDg5ZGNhYWUwODAxYyAt
ciA2YTRiZGNjY2ZhNGQgYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMv
cml2ZXIvc2VkZGIvbW9kZWwvU3Byb2JlLmphdmEKLS0tIGEvYmFja2VuZC9zcmMvbWFpbi9qYXZh
L29yZy9kaXZlNGVsZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVsL1Nwcm9iZS5qYXZhPQoJVHVlIEph
biAxNiAxODoxMzo1NCAyMDE4ICswMTAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
MCAxOTcwICswMDAwCkBAIC0xLDE2MiArMCwwIEBACi0vKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQot
ICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0gKgotICogVGhpcyBm
aWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMpCi0gKiBhbmQg
Y29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCi0gKiBkb2N1
bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFpbHMuCi0g
Ki8KLQotcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2RlbDsKLS8vIEdl
bmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQuMC5DUjEK
LQotCi1pbXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVu
Y2UuQXR0cmlidXRlT3ZlcnJpZGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQXR0cmlidXRl
T3ZlcnJpZGVzOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZh
eC5wZXJzaXN0ZW5jZS5FbWJlZGRlZElkOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0
eTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7Ci1pbXBvcnQgamF2YXgucGVy
c2lzdGVuY2UuSm9pbkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5NYW55VG9PbmU7
Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7Ci0KLS8qKgotICogU3Byb2JlIGdlbmVy
YXRlZCBieSBoYm0yamF2YQotICovCi1ARW50aXR5Ci1AVGFibGUobmFtZT0zRCJTUFJPQkUiCi0g
ICAgLHNjaGVtYT0zRCJTRUREQiIKLSkKLXB1YmxpYyBjbGFzcyBTcHJvYmUgIGltcGxlbWVudHMg
amF2YS5pby5TZXJpYWxpemFibGUgewotCi0KLSAgICAgcHJpdmF0ZSBTcHJvYmVJZCBpZDsKLSAg
ICAgcHJpdmF0ZSBTbG90cmVjaHRlIHNsb3RyZWNodGU7Ci0gICAgIHByaXZhdGUgc2hvcnQgd3By
b3pwa3Q7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB3cGt0OwotICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgdnBrdDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGNzYW5kcGt0OwotICAgICBwcml2
YXRlIEJpZ0RlY2ltYWwgY3NjaHdlYnBrdDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHNhbmR0
cmllYjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHNjaHdlYnRyaWViOwotCi0gICAgcHVibGlj
IFNwcm9iZSgpIHsKLSAgICB9Ci0KLQotICAgIHB1YmxpYyBTcHJvYmUoU3Byb2JlSWQgaWQsIFNs
b3RyZWNodGUgc2xvdHJlY2h0ZSwgc2hvcnQgd3Byb3pwa3QsIEJpZ0Q9CmVjaW1hbCB3cGt0LCBC
aWdEZWNpbWFsIHZwa3QsIEJpZ0RlY2ltYWwgY3NhbmRwa3QsIEJpZ0RlY2ltYWwgY3NjaHdlYnBr
dCkgewotICAgICAgICB0aGlzLmlkID0zRCBpZDsKLSAgICAgICAgdGhpcy5zbG90cmVjaHRlID0z
RCBzbG90cmVjaHRlOwotICAgICAgICB0aGlzLndwcm96cGt0ID0zRCB3cHJvenBrdDsKLSAgICAg
ICAgdGhpcy53cGt0ID0zRCB3cGt0OwotICAgICAgICB0aGlzLnZwa3QgPTNEIHZwa3Q7Ci0gICAg
ICAgIHRoaXMuY3NhbmRwa3QgPTNEIGNzYW5kcGt0OwotICAgICAgICB0aGlzLmNzY2h3ZWJwa3Qg
PTNEIGNzY2h3ZWJwa3Q7Ci0gICAgfQotICAgIHB1YmxpYyBTcHJvYmUoU3Byb2JlSWQgaWQsIFNs
b3RyZWNodGUgc2xvdHJlY2h0ZSwgc2hvcnQgd3Byb3pwa3QsIEJpZ0Q9CmVjaW1hbCB3cGt0LCBC
aWdEZWNpbWFsIHZwa3QsIEJpZ0RlY2ltYWwgY3NhbmRwa3QsIEJpZ0RlY2ltYWwgY3NjaHdlYnBr
dCwgQj0KaWdEZWNpbWFsIHNhbmR0cmllYiwgQmlnRGVjaW1hbCBzY2h3ZWJ0cmllYikgewotICAg
ICAgIHRoaXMuaWQgPTNEIGlkOwotICAgICAgIHRoaXMuc2xvdHJlY2h0ZSA9M0Qgc2xvdHJlY2h0
ZTsKLSAgICAgICB0aGlzLndwcm96cGt0ID0zRCB3cHJvenBrdDsKLSAgICAgICB0aGlzLndwa3Qg
PTNEIHdwa3Q7Ci0gICAgICAgdGhpcy52cGt0ID0zRCB2cGt0OwotICAgICAgIHRoaXMuY3NhbmRw
a3QgPTNEIGNzYW5kcGt0OwotICAgICAgIHRoaXMuY3NjaHdlYnBrdCA9M0QgY3NjaHdlYnBrdDsK
LSAgICAgICB0aGlzLnNhbmR0cmllYiA9M0Qgc2FuZHRyaWViOwotICAgICAgIHRoaXMuc2Nod2Vi
dHJpZWIgPTNEIHNjaHdlYnRyaWViOwotICAgIH0KLQotICAgICBARW1iZWRkZWRJZAotCi0KLSAg
ICBAQXR0cmlidXRlT3ZlcnJpZGVzKCB7Ci0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1l
PTNEInNsb3RyZWNodGVpZCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRD0KIlNMT1RSRUNIVEVJ
RCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDApICksCi0gICAg
ICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImxmZG5yIiwgY29sdW1uPTNEQENvbHVtbihu
YW1lPTNEIkxGRE5SIj0KLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q1LCBzY2FsZT0z
RDApICkgfSApCi0gICAgcHVibGljIFNwcm9iZUlkIGdldElkKCkgewotICAgICAgICByZXR1cm4g
dGhpcy5pZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRJZChTcHJvYmVJZCBpZCkgewot
ICAgICAgICB0aGlzLmlkID0zRCBpZDsKLSAgICB9Ci0KLUBNYW55VG9PbmUoZmV0Y2g9M0RGZXRj
aFR5cGUuTEFaWSkKLSAgICBASm9pbkNvbHVtbihuYW1lPTNEIlNMT1RSRUNIVEVJRCIsIG51bGxh
YmxlPTNEZmFsc2UsIGluc2VydGFibGU9M0RmYWxzPQplLCB1cGRhdGFibGU9M0RmYWxzZSkKLSAg
ICBwdWJsaWMgU2xvdHJlY2h0ZSBnZXRTbG90cmVjaHRlKCkgewotICAgICAgICByZXR1cm4gdGhp
cy5zbG90cmVjaHRlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNsb3RyZWNodGUoU2xv
dHJlY2h0ZSBzbG90cmVjaHRlKSB7Ci0gICAgICAgIHRoaXMuc2xvdHJlY2h0ZSA9M0Qgc2xvdHJl
Y2h0ZTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJXUFJPWlBLVCIsIG51bGxhYmxl
PTNEZmFsc2UsIHByZWNpc2lvbj0zRDMsIHNjYWxlPTNEMCkKLSAgICBwdWJsaWMgc2hvcnQgZ2V0
V3Byb3pwa3QoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLndwcm96cGt0OwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldFdwcm96cGt0KHNob3J0IHdwcm96cGt0KSB7Ci0gICAgICAgIHRoaXMu
d3Byb3pwa3QgPTNEIHdwcm96cGt0OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIldQ
S1QiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVi
bGljIEJpZ0RlY2ltYWwgZ2V0V3BrdCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMud3BrdDsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRXcGt0KEJpZ0RlY2ltYWwgd3BrdCkgewotICAgICAg
ICB0aGlzLndwa3QgPTNEIHdwa3Q7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVlBL
VCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNENCkKLSAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXRWcGt0KCkgewotICAgICAgICByZXR1cm4gdGhpcy52cGt0OwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFZwa3QoQmlnRGVjaW1hbCB2cGt0KSB7Ci0gICAgICAg
IHRoaXMudnBrdCA9M0QgdnBrdDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJDU0FO
RFBLVCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBw
dWJsaWMgQmlnRGVjaW1hbCBnZXRDc2FuZHBrdCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuY3Nh
bmRwa3Q7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0Q3NhbmRwa3QoQmlnRGVjaW1hbCBj
c2FuZHBrdCkgewotICAgICAgICB0aGlzLmNzYW5kcGt0ID0zRCBjc2FuZHBrdDsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJDU0NIV0VCUEtUIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJl
Y2lzaW9uPTNEOCwgc2NhbGU9M0Q9CjMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0Q3NjaHdl
YnBrdCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuY3NjaHdlYnBrdDsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRDc2Nod2VicGt0KEJpZ0RlY2ltYWwgY3NjaHdlYnBrdCkgewotICAgICAg
ICB0aGlzLmNzY2h3ZWJwa3QgPTNEIGNzY2h3ZWJwa3Q7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiU0FORFRSSUVCIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldFNhbmR0cmllYigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc2FuZHRy
aWViOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNhbmR0cmllYihCaWdEZWNpbWFsIHNh
bmR0cmllYikgewotICAgICAgICB0aGlzLnNhbmR0cmllYiA9M0Qgc2FuZHRyaWViOwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNDSFdFQlRSSUVCIiwgcHJlY2lzaW9uPTNEOCwgc2Nh
bGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFNjaHdlYnRyaWViKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5zY2h3ZWJ0cmllYjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRT
Y2h3ZWJ0cmllYihCaWdEZWNpbWFsIHNjaHdlYnRyaWViKSB7Ci0gICAgICAgIHRoaXMuc2Nod2Vi
dHJpZWIgPTNEIHNjaHdlYnRyaWViOwotICAgIH0KLX0KZGlmZiAtciA4OWRjYWFlMDgwMWMgLXIg
NmE0YmRjY2NmYTRkIGJhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50PQpzL3Jp
dmVyL3NlZGRiL21vZGVsL1Nwcm9iZUlkLmphdmEKLS0tIGEvYmFja2VuZC9zcmMvbWFpbi9qYXZh
L29yZy9kaXZlNGVsZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVsL1Nwcm9iZUlkLmphPQp2YQlUdWUg
SmFuIDE2IDE4OjEzOjU0IDIwMTggKzAxMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAw
OjAwIDE5NzAgKzAwMDAKQEAgLTEsNzMgKzAsMCBAQAotLyogQ29weXJpZ2h0IChDKSAyMDExLCAy
MDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUK
LSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoKLSAqIFRoaXMg
ZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKQotICogYW5k
IGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQotICogZG9j
dW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLgot
ICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMucml2ZXIuc2VkZGIubW9kZWw7Ci0vLyBH
ZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1Ix
Ci0KLQotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJz
aXN0ZW5jZS5FbWJlZGRhYmxlOwotCi0vKioKLSAqIFNwcm9iZUlkIGdlbmVyYXRlZCBieSBoYm0y
amF2YQotICovCi1ARW1iZWRkYWJsZQotcHVibGljIGNsYXNzIFNwcm9iZUlkICBpbXBsZW1lbnRz
IGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAgIHByaXZhdGUgbG9uZyBzbG90cmVjaHRl
aWQ7Ci0gICAgIHByaXZhdGUgaW50IGxmZG5yOwotCi0gICAgcHVibGljIFNwcm9iZUlkKCkgewot
ICAgIH0KLQotICAgIHB1YmxpYyBTcHJvYmVJZChsb25nIHNsb3RyZWNodGVpZCwgaW50IGxmZG5y
KSB7Ci0gICAgICAgdGhpcy5zbG90cmVjaHRlaWQgPTNEIHNsb3RyZWNodGVpZDsKLSAgICAgICB0
aGlzLmxmZG5yID0zRCBsZmRucjsKLSAgICB9Ci0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNM
T1RSRUNIVEVJRCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0KPTNE
MCkKLSAgICBwdWJsaWMgbG9uZyBnZXRTbG90cmVjaHRlaWQoKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLnNsb3RyZWNodGVpZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTbG90cmVjaHRl
aWQobG9uZyBzbG90cmVjaHRlaWQpIHsKLSAgICAgICAgdGhpcy5zbG90cmVjaHRlaWQgPTNEIHNs
b3RyZWNodGVpZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJMRkROUiIsIG51bGxh
YmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDUsIHNjYWxlPTNEMCkKLSAgICBwdWJsaWMgaW50IGdl
dExmZG5yKCkgewotICAgICAgICByZXR1cm4gdGhpcy5sZmRucjsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRMZmRucihpbnQgbGZkbnIpIHsKLSAgICAgICAgdGhpcy5sZmRuciA9M0QgbGZk
bnI7Ci0gICAgfQotCi0KLSAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb3RoZXIpIHsK
LSAgICAgICAgIGlmICggKHRoaXMgPTNEPTNEIG90aGVyICkgKSByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgIGlmICggKG90aGVyID0zRD0zRCBudWxsICkgKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICBp
ZiAoICEob3RoZXIgaW5zdGFuY2VvZiBTcHJvYmVJZCkgKSByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICBTcHJvYmVJZCBjYXN0T3RoZXIgPTNEICggU3Byb2JlSWQgKSBvdGhlcjsKLQotICAgICAgICAg
cmV0dXJuICh0aGlzLmdldFNsb3RyZWNodGVpZCgpPTNEPTNEY2FzdE90aGVyLmdldFNsb3RyZWNo
dGVpZCgpKQotICYmICh0aGlzLmdldExmZG5yKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TGZkbnIoKSk7
Ci0gICB9Ci0KLSAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7Ci0gICAgICAgICBpbnQgcmVzdWx0
ID0zRCAxNzsKLQotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArIChpbnQpIHRoaXMu
Z2V0U2xvdHJlY2h0ZWlkKCk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgdGhp
cy5nZXRMZmRucigpOwotICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLX0KZGlmZiAtciA4
OWRjYWFlMDgwMWMgLXIgNmE0YmRjY2NmYTRkIGJhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2
ZTRlbGVtZW50PQpzL3JpdmVyL3NlZGRiL21vZGVsL1NzaWVidW5nLmphdmEKLS0tIGEvYmFja2Vu
ZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVsL1NzaWVi
dW5nLmphPQp2YQlUdWUgSmFuIDE2IDE4OjEzOjU0IDIwMTggKzAxMDAKKysrIC9kZXYvbnVsbAlU
aHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMzU5ICswLDAgQEAKLS8qIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1D
Mz1BNHNzZXJrPQp1bmRlCi0gKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdt
YkgKLSAqCi0gKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwg
KD49M0R2MykKLSAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNr
IG91dCB0aGUKLSAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZl
ciBmb3IgZGV0YWlscy4KLSAqLwotCi1wYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNl
ZGRiLm1vZGVsOwotLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRl
IFRvb2xzIDMuNC4wLkNSMQotCi0KLWltcG9ydCBqYXZhLm1hdGguQmlnRGVjaW1hbDsKLWltcG9y
dCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50
aXR5OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsKLWltcG9ydCBqYXZheC5w
ZXJzaXN0ZW5jZS5HZW5lcmF0ZWRWYWx1ZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsK
LWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNp
c3RlbmNlLk1hbnlUb09uZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5PbmVUb09uZTsKLWlt
cG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5QcmltYXJ5S2V5Sm9pbkNvbHVtbjsKLWltcG9ydCBqYXZh
eC5wZXJzaXN0ZW5jZS5UYWJsZTsKLWltcG9ydCBvcmcuaGliZXJuYXRlLmFubm90YXRpb25zLkdl
bmVyaWNHZW5lcmF0b3I7Ci1pbXBvcnQgb3JnLmhpYmVybmF0ZS5hbm5vdGF0aW9ucy5QYXJhbWV0
ZXI7Ci0KLS8qKgotICogU3NpZWJ1bmcgZ2VuZXJhdGVkIGJ5IGhibTJqYXZhCi0gKi8KLUBFbnRp
dHkKLUBUYWJsZShuYW1lPTNEIlNTSUVCVU5HIgotICAgICxzY2hlbWE9M0QiU0VEREIiCi0pCi1w
dWJsaWMgY2xhc3MgU3NpZWJ1bmcgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgewot
Ci0KLSAgICAgcHJpdmF0ZSBsb25nIHNpZWJhbmFseXNlaWQ7Ci0gICAgIHByaXZhdGUgU2llYmFu
YWx5c2Ugc2llYmFuYWx5c2U7Ci0gICAgIHByaXZhdGUgR3NpZWJzYXR6IGdzaWVic2F0ejsKLSAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGdtYXNzZTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJz
aWViMDE7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjAyOwotICAgICBwcml2YXRlIEJp
Z0RlY2ltYWwgcnNpZWIwMzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMDQ7Ci0gICAg
IHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjA1OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNp
ZWIwNjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMDc7Ci0gICAgIHByaXZhdGUgQmln
RGVjaW1hbCByc2llYjA4OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIwOTsKLSAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMTA7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2ll
YjExOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIxMjsKLSAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIHJzaWViMTM7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjE0OwotICAgICBw
cml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIxNTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWVi
MTY7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjE3OwotICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgcnNpZWIxODsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMTk7Ci0gICAgIHBy
aXZhdGUgQmlnRGVjaW1hbCByc2llYjIwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIy
MTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJlc3Q7Ci0KLSAgICBwdWJsaWMgU3NpZWJ1bmco
KSB7Ci0gICAgfQotCi0gICAgcHVibGljIFNzaWVidW5nKFNpZWJhbmFseXNlIHNpZWJhbmFseXNl
LCBHc2llYnNhdHogZ3NpZWJzYXR6KSB7Ci0gICAgICAgIHRoaXMuc2llYmFuYWx5c2UgPTNEIHNp
ZWJhbmFseXNlOwotICAgICAgICB0aGlzLmdzaWVic2F0eiA9M0QgZ3NpZWJzYXR6OwotICAgIH0K
LSAgICBwdWJsaWMgU3NpZWJ1bmcoU2llYmFuYWx5c2Ugc2llYmFuYWx5c2UsIEdzaWVic2F0eiBn
c2llYnNhdHosIEJpZ0RlY2ltPQphbCBnbWFzc2UsIEJpZ0RlY2ltYWwgcnNpZWIwMSwgQmlnRGVj
aW1hbCByc2llYjAyLCBCaWdEZWNpbWFsIHJzaWViMDMsIEJpZ0Q9CmVjaW1hbCByc2llYjA0LCBC
aWdEZWNpbWFsIHJzaWViMDUsIEJpZ0RlY2ltYWwgcnNpZWIwNiwgQmlnRGVjaW1hbCByc2llYjA3
LD0KIEJpZ0RlY2ltYWwgcnNpZWIwOCwgQmlnRGVjaW1hbCByc2llYjA5LCBCaWdEZWNpbWFsIHJz
aWViMTAsIEJpZ0RlY2ltYWwgcnNpPQplYjExLCBCaWdEZWNpbWFsIHJzaWViMTIsIEJpZ0RlY2lt
YWwgcnNpZWIxMywgQmlnRGVjaW1hbCByc2llYjE0LCBCaWdEZWNpbWE9CmwgcnNpZWIxNSwgQmln
RGVjaW1hbCByc2llYjE2LCBCaWdEZWNpbWFsIHJzaWViMTcsIEJpZ0RlY2ltYWwgcnNpZWIxOCwg
QmlnRD0KZWNpbWFsIHJzaWViMTksIEJpZ0RlY2ltYWwgcnNpZWIyMCwgQmlnRGVjaW1hbCByc2ll
YjIxLCBCaWdEZWNpbWFsIHJlc3QpIHsKLSAgICAgICB0aGlzLnNpZWJhbmFseXNlID0zRCBzaWVi
YW5hbHlzZTsKLSAgICAgICB0aGlzLmdzaWVic2F0eiA9M0QgZ3NpZWJzYXR6OwotICAgICAgIHRo
aXMuZ21hc3NlID0zRCBnbWFzc2U7Ci0gICAgICAgdGhpcy5yc2llYjAxID0zRCByc2llYjAxOwot
ICAgICAgIHRoaXMucnNpZWIwMiA9M0QgcnNpZWIwMjsKLSAgICAgICB0aGlzLnJzaWViMDMgPTNE
IHJzaWViMDM7Ci0gICAgICAgdGhpcy5yc2llYjA0ID0zRCByc2llYjA0OwotICAgICAgIHRoaXMu
cnNpZWIwNSA9M0QgcnNpZWIwNTsKLSAgICAgICB0aGlzLnJzaWViMDYgPTNEIHJzaWViMDY7Ci0g
ICAgICAgdGhpcy5yc2llYjA3ID0zRCByc2llYjA3OwotICAgICAgIHRoaXMucnNpZWIwOCA9M0Qg
cnNpZWIwODsKLSAgICAgICB0aGlzLnJzaWViMDkgPTNEIHJzaWViMDk7Ci0gICAgICAgdGhpcy5y
c2llYjEwID0zRCByc2llYjEwOwotICAgICAgIHRoaXMucnNpZWIxMSA9M0QgcnNpZWIxMTsKLSAg
ICAgICB0aGlzLnJzaWViMTIgPTNEIHJzaWViMTI7Ci0gICAgICAgdGhpcy5yc2llYjEzID0zRCBy
c2llYjEzOwotICAgICAgIHRoaXMucnNpZWIxNCA9M0QgcnNpZWIxNDsKLSAgICAgICB0aGlzLnJz
aWViMTUgPTNEIHJzaWViMTU7Ci0gICAgICAgdGhpcy5yc2llYjE2ID0zRCByc2llYjE2OwotICAg
ICAgIHRoaXMucnNpZWIxNyA9M0QgcnNpZWIxNzsKLSAgICAgICB0aGlzLnJzaWViMTggPTNEIHJz
aWViMTg7Ci0gICAgICAgdGhpcy5yc2llYjE5ID0zRCByc2llYjE5OwotICAgICAgIHRoaXMucnNp
ZWIyMCA9M0QgcnNpZWIyMDsKLSAgICAgICB0aGlzLnJzaWViMjEgPTNEIHJzaWViMjE7Ci0gICAg
ICAgdGhpcy5yZXN0ID0zRCByZXN0OwotICAgIH0KLQotICAgICBAR2VuZXJpY0dlbmVyYXRvcihu
YW1lPTNEImdlbmVyYXRvciIsIHN0cmF0ZWd5PTNEImZvcmVpZ24iLCBwYXJhbWV0ZXI9CnM9M0RA
UGFyYW1ldGVyKG5hbWU9M0QicHJvcGVydHkiLCB2YWx1ZT0zRCJzaWViYW5hbHlzZSIpKUBJZCBA
R2VuZXJhdGVkVmFsdT0KZShnZW5lcmF0b3I9M0QiZ2VuZXJhdG9yIikKLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIlNJRUJBTkFMWVNFSUQiLCB1bmlxdWU9M0R0cnVlLCBudWxsYWJsZT0zRGZhbHNl
LCBwcmVjaT0Kc2lvbj0zRDExLCBzY2FsZT0zRDApCi0gICAgcHVibGljIGxvbmcgZ2V0U2llYmFu
YWx5c2VpZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc2llYmFuYWx5c2VpZDsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRTaWViYW5hbHlzZWlkKGxvbmcgc2llYmFuYWx5c2VpZCkgewot
ICAgICAgICB0aGlzLnNpZWJhbmFseXNlaWQgPTNEIHNpZWJhbmFseXNlaWQ7Ci0gICAgfQotCi1A
T25lVG9PbmUoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSlAUHJpbWFyeUtleUpvaW5Db2x1bW4KLSAg
ICBwdWJsaWMgU2llYmFuYWx5c2UgZ2V0U2llYmFuYWx5c2UoKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLnNpZWJhbmFseXNlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNpZWJhbmFseXNl
KFNpZWJhbmFseXNlIHNpZWJhbmFseXNlKSB7Ci0gICAgICAgIHRoaXMuc2llYmFuYWx5c2UgPTNE
IHNpZWJhbmFseXNlOwotICAgIH0KLQotQE1hbnlUb09uZShmZXRjaD0zREZldGNoVHlwZS5MQVpZ
KQotICAgIEBKb2luQ29sdW1uKG5hbWU9M0QiR1NJRUJTQVRaSUQiLCBudWxsYWJsZT0zRGZhbHNl
KQotICAgIHB1YmxpYyBHc2llYnNhdHogZ2V0R3NpZWJzYXR6KCkgewotICAgICAgICByZXR1cm4g
dGhpcy5nc2llYnNhdHo7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0R3NpZWJzYXR6KEdz
aWVic2F0eiBnc2llYnNhdHopIHsKLSAgICAgICAgdGhpcy5nc2llYnNhdHogPTNEIGdzaWVic2F0
ejsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJHTUFTU0UiLCBwcmVjaXNpb249M0Q5
LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0R21hc3NlKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5nbWFzc2U7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0R21hc3Nl
KEJpZ0RlY2ltYWwgZ21hc3NlKSB7Ci0gICAgICAgIHRoaXMuZ21hc3NlID0zRCBnbWFzc2U7Ci0g
ICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIwMSIsIHByZWNpc2lvbj0zRDksIHNj
YWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSc2llYjAxKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5yc2llYjAxOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMDEo
QmlnRGVjaW1hbCByc2llYjAxKSB7Ci0gICAgICAgIHRoaXMucnNpZWIwMSA9M0QgcnNpZWIwMTsK
LSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSU0lFQjAyIiwgcHJlY2lzaW9uPTNEOSwg
c2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMDIoKSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLnJzaWViMDI7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnNpZWIw
MihCaWdEZWNpbWFsIHJzaWViMDIpIHsKLSAgICAgICAgdGhpcy5yc2llYjAyID0zRCByc2llYjAy
OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJTSUVCMDMiLCBwcmVjaXNpb249M0Q5
LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIwMygpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMucnNpZWIwMzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSc2ll
YjAzKEJpZ0RlY2ltYWwgcnNpZWIwMykgewotICAgICAgICB0aGlzLnJzaWViMDMgPTNEIHJzaWVi
MDM7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIwNCIsIHByZWNpc2lvbj0z
RDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSc2llYjA0KCkgewotICAg
ICAgICByZXR1cm4gdGhpcy5yc2llYjA0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJz
aWViMDQoQmlnRGVjaW1hbCByc2llYjA0KSB7Ci0gICAgICAgIHRoaXMucnNpZWIwNCA9M0QgcnNp
ZWIwNDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSU0lFQjA1IiwgcHJlY2lzaW9u
PTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMDUoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLnJzaWViMDU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0
UnNpZWIwNShCaWdEZWNpbWFsIHJzaWViMDUpIHsKLSAgICAgICAgdGhpcy5yc2llYjA1ID0zRCBy
c2llYjA1OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJTSUVCMDYiLCBwcmVjaXNp
b249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIwNigpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIwNjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXRSc2llYjA2KEJpZ0RlY2ltYWwgcnNpZWIwNikgewotICAgICAgICB0aGlzLnJzaWViMDYgPTNE
IHJzaWViMDY7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIwNyIsIHByZWNp
c2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSc2llYjA3KCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5yc2llYjA3OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lk
IHNldFJzaWViMDcoQmlnRGVjaW1hbCByc2llYjA3KSB7Ci0gICAgICAgIHRoaXMucnNpZWIwNyA9
M0QgcnNpZWIwNzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSU0lFQjA4IiwgcHJl
Y2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMDgo
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJzaWViMDg7Ci0gICAgfQotCi0gICAgcHVibGljIHZv
aWQgc2V0UnNpZWIwOChCaWdEZWNpbWFsIHJzaWViMDgpIHsKLSAgICAgICAgdGhpcy5yc2llYjA4
ID0zRCByc2llYjA4OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJTSUVCMDkiLCBw
cmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIw
OSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIwOTsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRSc2llYjA5KEJpZ0RlY2ltYWwgcnNpZWIwOSkgewotICAgICAgICB0aGlzLnJzaWVi
MDkgPTNEIHJzaWViMDk7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIxMCIs
IHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSc2ll
YjEwKCkgewotICAgICAgICByZXR1cm4gdGhpcy5yc2llYjEwOwotICAgIH0KLQotICAgIHB1Ymxp
YyB2b2lkIHNldFJzaWViMTAoQmlnRGVjaW1hbCByc2llYjEwKSB7Ci0gICAgICAgIHRoaXMucnNp
ZWIxMCA9M0QgcnNpZWIxMDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSU0lFQjEx
IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJz
aWViMTEoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJzaWViMTE7Ci0gICAgfQotCi0gICAgcHVi
bGljIHZvaWQgc2V0UnNpZWIxMShCaWdEZWNpbWFsIHJzaWViMTEpIHsKLSAgICAgICAgdGhpcy5y
c2llYjExID0zRCByc2llYjExOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJTSUVC
MTIiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0
UnNpZWIxMigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIxMjsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRSc2llYjEyKEJpZ0RlY2ltYWwgcnNpZWIxMikgewotICAgICAgICB0aGlz
LnJzaWViMTIgPTNEIHJzaWViMTI7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlNJ
RUIxMyIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXRSc2llYjEzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5yc2llYjEzOwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldFJzaWViMTMoQmlnRGVjaW1hbCByc2llYjEzKSB7Ci0gICAgICAgIHRo
aXMucnNpZWIxMyA9M0QgcnNpZWIxMzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJS
U0lFQjE0IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFs
IGdldFJzaWViMTQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJzaWViMTQ7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0UnNpZWIxNChCaWdEZWNpbWFsIHJzaWViMTQpIHsKLSAgICAgICAg
dGhpcy5yc2llYjE0ID0zRCByc2llYjE0OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNE
IlJTSUVCMTUiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2lt
YWwgZ2V0UnNpZWIxNSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIxNTsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjE1KEJpZ0RlY2ltYWwgcnNpZWIxNSkgewotICAgICAg
ICB0aGlzLnJzaWViMTUgPTNEIHJzaWViMTU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiUlNJRUIxNiIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVj
aW1hbCBnZXRSc2llYjE2KCkgewotICAgICAgICByZXR1cm4gdGhpcy5yc2llYjE2OwotICAgIH0K
LQotICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMTYoQmlnRGVjaW1hbCByc2llYjE2KSB7Ci0gICAg
ICAgIHRoaXMucnNpZWIxNiA9M0QgcnNpZWIxNjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFt
ZT0zRCJSU0lFQjE3IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdE
ZWNpbWFsIGdldFJzaWViMTcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJzaWViMTc7Ci0gICAg
fQotCi0gICAgcHVibGljIHZvaWQgc2V0UnNpZWIxNyhCaWdEZWNpbWFsIHJzaWViMTcpIHsKLSAg
ICAgICAgdGhpcy5yc2llYjE3ID0zRCByc2llYjE3OwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIlJTSUVCMTgiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0UnNpZWIxOCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIxODsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjE4KEJpZ0RlY2ltYWwgcnNpZWIxOCkgewot
ICAgICAgICB0aGlzLnJzaWViMTggPTNEIHJzaWViMTg7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiUlNJRUIxOSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMg
QmlnRGVjaW1hbCBnZXRSc2llYjE5KCkgewotICAgICAgICByZXR1cm4gdGhpcy5yc2llYjE5Owot
ICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMTkoQmlnRGVjaW1hbCByc2llYjE5KSB7
Ci0gICAgICAgIHRoaXMucnNpZWIxOSA9M0QgcnNpZWIxOTsKLSAgICB9Ci0KLQotICAgIEBDb2x1
bW4obmFtZT0zRCJSU0lFQjIwIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldFJzaWViMjAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJzaWViMjA7
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnNpZWIyMChCaWdEZWNpbWFsIHJzaWViMjAp
IHsKLSAgICAgICAgdGhpcy5yc2llYjIwID0zRCByc2llYjIwOwotICAgIH0KLQotCi0gICAgQENv
bHVtbihuYW1lPTNEIlJTSUVCMjEiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVi
bGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIyMSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIy
MTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjIxKEJpZ0RlY2ltYWwgcnNpZWIy
MSkgewotICAgICAgICB0aGlzLnJzaWViMjEgPTNEIHJzaWViMjE7Ci0gICAgfQotCi0KLSAgICBA
Q29sdW1uKG5hbWU9M0QiUkVTVCIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXRSZXN0KCkgewotICAgICAgICByZXR1cm4gdGhpcy5yZXN0OwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJlc3QoQmlnRGVjaW1hbCByZXN0KSB7Ci0gICAgICAg
IHRoaXMucmVzdCA9M0QgcmVzdDsKLSAgICB9Ci19CmRpZmYgLXIgODlkY2FhZTA4MDFjIC1yIDZh
NGJkY2NjZmE0ZCBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZl
ci9zZWRkYi9tb2RlbC9Tc2llYnVuZ3NpZWIuamF2YQotLS0gYS9iYWNrZW5kL3NyYy9tYWluL2ph
dmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvU3NpZWJ1bmdzaWU9CmIuamF2
YQlUdWUgSmFuIDE2IDE4OjEzOjU0IDIwMTggKzAxMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAx
IDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsOTYgKzAsMCBAQAotLyogQ29weXJpZ2h0IChDKSAy
MDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9
CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoKLSAq
IFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKQot
ICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQot
ICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRh
aWxzLgotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMucml2ZXIuc2VkZGIubW9kZWw7
Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40
LjAuQ1IxCi0KLQotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0ZU92ZXJyaWRlOwot
aW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0ZU92ZXJyaWRlczsKLWltcG9ydCBqYXZh
eC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW1iZWRkZWRJ
ZDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7Ci1pbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuVGFibGU7Ci0KLS8qKgotICogU3NpZWJ1bmdzaWViIGdlbmVyYXRlZCBieSBoYm0yamF2
YQotICovCi1ARW50aXR5Ci1AVGFibGUobmFtZT0zRCJTU0lFQlVOR1NJRUIiCi0gICAgLHNjaGVt
YT0zRCJTRUREQiIKLSkKLXB1YmxpYyBjbGFzcyBTc2llYnVuZ3NpZWIgIGltcGxlbWVudHMgamF2
YS5pby5TZXJpYWxpemFibGUgewotCi0KLSAgICAgcHJpdmF0ZSBTc2llYnVuZ3NpZWJJZCBpZDsK
LQotICAgIHB1YmxpYyBTc2llYnVuZ3NpZWIoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIFNzaWVi
dW5nc2llYihTc2llYnVuZ3NpZWJJZCBpZCkgewotICAgICAgIHRoaXMuaWQgPTNEIGlkOwotICAg
IH0KLQotICAgICBARW1iZWRkZWRJZAotCi0KLSAgICBAQXR0cmlidXRlT3ZlcnJpZGVzKCB7Ci0g
ICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInNpZWJhbmFseXNlaWQiLCBjb2x1bW49
M0RAQ29sdW1uKG5hbWU9Cj0zRCJTSUVCQU5BTFlTRUlEIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJl
Y2lzaW9uPTNEMTEsIHNjYWxlPTNEMCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5h
bWU9M0QiZ3NpZWJzYXR6aWQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiPQpHU0lFQlNBVFpJ
RCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDApICksCi0gICAg
ICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImdtYXNzZSIsIGNvbHVtbj0zREBDb2x1bW4o
bmFtZT0zRCJHTUFTUz0KRSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKLSAgICAgICAg
QEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hlMDEiLCBjb2x1bW49M0RAQ29sdW1uKG5h
bWU9M0QiTUFTPQpDSEUwMSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAg
QEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2swMSIsIGNvbHVtbj0zREBDb2x1bW4obmFt
ZT0zRCJSVUVDPQpLMDEiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBB
dHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTAyIiwgY29sdW1uPTNEQENvbHVtbihuYW1l
PTNEIk1BUz0KQ0hFMDIiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBB
dHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMDIiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9
M0QiUlVFQz0KSzAyIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0
cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUwMyIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0z
RCJNQVM9CkNIRTAzIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0
cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazAzIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNE
IlJVRUM9CkswMyIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJp
YnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hlMDQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0Qi
TUFTPQpDSEUwNCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJp
YnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2swNCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJS
VUVDPQpLMDQiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1
dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTA1IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1B
Uz0KQ0hFMDUiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1
dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMDUiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVF
Qz0KSzA1IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRl
T3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUwNiIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9
CkNIRTA2IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRl
T3ZlcnJpZGUobmFtZT0zRCJydWVjazA2IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9
CkswNiIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92
ZXJyaWRlKG5hbWU9M0QibWFzY2hlMDciLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpD
SEUwNyIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92
ZXJyaWRlKG5hbWU9M0QicnVlY2swNyIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpL
MDciLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVy
cmlkZShuYW1lPTNEIm1hc2NoZTA4IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hF
MDgiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVy
cmlkZShuYW1lPTNEInJ1ZWNrMDgiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzA4
IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJp
ZGUobmFtZT0zRCJtYXNjaGUwOSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNIRTA5
IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJp
ZGUobmFtZT0zRCJydWVjazA5IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9CkswOSIs
IHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRl
KG5hbWU9M0QibWFzY2hlMTAiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpDSEUxMCIs
IHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRl
KG5hbWU9M0QicnVlY2sxMCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpLMTAiLCBw
cmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShu
YW1lPTNEIm1hc2NoZTExIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMTEiLCBw
cmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShu
YW1lPTNEInJ1ZWNrMTEiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzExIiwgcHJl
Y2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFt
ZT0zRCJtYXNjaGUxMiIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNIRTEyIiwgcHJl
Y2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFt
ZT0zRCJydWVjazEyIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9CksxMiIsIHByZWNp
c2lvbj0zRDksIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9
M0QibWFzY2hlMTMiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpDSEUxMyIsIHByZWNp
c2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9
M0QicnVlY2sxMyIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpLMTMiLCBwcmVjaXNp
b249M0Q5LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNE
Im1hc2NoZTE0IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMTQiLCBwcmVjaXNp
b249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNE
InJ1ZWNrMTQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzE0IiwgcHJlY2lzaW9u
PTNEOSwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJt
YXNjaGUxNSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNIRTE1IiwgcHJlY2lzaW9u
PTNENywgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJy
dWVjazE1IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9CksxNSIsIHByZWNpc2lvbj0z
RDksIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFz
Y2hlMTYiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpDSEUxNiIsIHByZWNpc2lvbj0z
RDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVl
Y2sxNiIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpLMTYiLCBwcmVjaXNpb249M0Q5
LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2No
ZTE3IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMTciLCBwcmVjaXNpb249M0Q3
LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNr
MTciLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzE3IiwgcHJlY2lzaW9uPTNEOSwg
c2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUx
OCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNIRTE4IiwgcHJlY2lzaW9uPTNENywg
c2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazE4
IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9CksxOCIsIHByZWNpc2lvbj0zRDksIHNj
YWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hlMTki
LCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpDSEUxOSIsIHByZWNpc2lvbj0zRDcsIHNj
YWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2sxOSIs
IGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpLMTkiLCBwcmVjaXNpb249M0Q5LCBzY2Fs
ZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTIwIiwg
Y29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMjAiLCBwcmVjaXNpb249M0Q3LCBzY2Fs
ZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMjAiLCBj
b2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzIwIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9
M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUyMSIsIGNv
bHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNIRTIxIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9
M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazIxIiwgY29s
dW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9CksyMSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNE
MykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicmVzdCIsIGNvbHVtbj0z
REBDb2x1bW4obmFtZT0zRCJSRVNUIiwgPQpwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICkgfSAp
Ci0gICAgcHVibGljIFNzaWVidW5nc2llYklkIGdldElkKCkgewotICAgICAgICByZXR1cm4gdGhp
cy5pZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRJZChTc2llYnVuZ3NpZWJJZCBpZCkg
ewotICAgICAgICB0aGlzLmlkID0zRCBpZDsKLSAgICB9Ci19CmRpZmYgLXIgODlkY2FhZTA4MDFj
IC1yIDZhNGJkY2NjZmE0ZCBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudD0K
cy9yaXZlci9zZWRkYi9tb2RlbC9Tc2llYnVuZ3NpZWJJZC5qYXZhCi0tLSBhL2JhY2tlbmQvc3Jj
L21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZlci9zZWRkYi9tb2RlbC9Tc2llYnVuZ3Np
ZT0KYklkLmphdmEJVHVlIEphbiAxNiAxODoxMzo1NCAyMDE4ICswMTAwCisrKyAvZGV2L251bGwJ
VGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDY5NCArMCwwIEBACi0vKiBDb3B5
cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9
QzM9QTRzc2Vyaz0KdW5kZQotICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBH
bWJICi0gKgotICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BM
ICg+PTNEdjMpCi0gKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVj
ayBvdXQgdGhlCi0gKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2
ZXIgZm9yIGRldGFpbHMuCi0gKi8KLQotcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5z
ZWRkYi5tb2RlbDsKLS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0
ZSBUb29scyAzLjQuMC5DUjEKLQotCi1pbXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7Ci1pbXBv
cnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVt
YmVkZGFibGU7Ci0KLS8qKgotICogU3NpZWJ1bmdzaWViSWQgZ2VuZXJhdGVkIGJ5IGhibTJqYXZh
Ci0gKi8KLUBFbWJlZGRhYmxlCi1wdWJsaWMgY2xhc3MgU3NpZWJ1bmdzaWViSWQgIGltcGxlbWVu
dHMgamF2YS5pby5TZXJpYWxpemFibGUgewotCi0KLSAgICAgcHJpdmF0ZSBsb25nIHNpZWJhbmFs
eXNlaWQ7Ci0gICAgIHByaXZhdGUgbG9uZyBnc2llYnNhdHppZDsKLSAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIGdtYXNzZTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTAxOwotICAgICBw
cml2YXRlIEJpZ0RlY2ltYWwgcnVlY2swMTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2No
ZTAyOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2swMjsKLSAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIG1hc2NoZTAzOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2swMzsKLSAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTA0OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVl
Y2swNDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTA1OwotICAgICBwcml2YXRlIEJp
Z0RlY2ltYWwgcnVlY2swNTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTA2OwotICAg
ICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2swNjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1h
c2NoZTA3OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2swNzsKLSAgICAgcHJpdmF0ZSBC
aWdEZWNpbWFsIG1hc2NoZTA4OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2swODsKLSAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTA5OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
cnVlY2swOTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTEwOwotICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgcnVlY2sxMDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTExOwot
ICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2sxMTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IG1hc2NoZTEyOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2sxMjsKLSAgICAgcHJpdmF0
ZSBCaWdEZWNpbWFsIG1hc2NoZTEzOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2sxMzsK
LSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTE0OwotICAgICBwcml2YXRlIEJpZ0RlY2lt
YWwgcnVlY2sxNDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTE1OwotICAgICBwcml2
YXRlIEJpZ0RlY2ltYWwgcnVlY2sxNTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTE2
OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2sxNjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNp
bWFsIG1hc2NoZTE3OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2sxNzsKLSAgICAgcHJp
dmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTE4OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2sx
ODsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTE5OwotICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgcnVlY2sxOTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTIwOwotICAgICBw
cml2YXRlIEJpZ0RlY2ltYWwgcnVlY2syMDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2No
ZTIxOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2syMTsKLSAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIHJlc3Q7Ci0KLSAgICBwdWJsaWMgU3NpZWJ1bmdzaWViSWQoKSB7Ci0gICAgfQotCi0g
ICAgcHVibGljIFNzaWVidW5nc2llYklkKGxvbmcgc2llYmFuYWx5c2VpZCwgbG9uZyBnc2llYnNh
dHppZCkgewotICAgICAgICB0aGlzLnNpZWJhbmFseXNlaWQgPTNEIHNpZWJhbmFseXNlaWQ7Ci0g
ICAgICAgIHRoaXMuZ3NpZWJzYXR6aWQgPTNEIGdzaWVic2F0emlkOwotICAgIH0KLSAgICBwdWJs
aWMgU3NpZWJ1bmdzaWViSWQobG9uZyBzaWViYW5hbHlzZWlkLCBsb25nIGdzaWVic2F0emlkLCBC
aWdEZWNpbWFsPQogZ21hc3NlLCBCaWdEZWNpbWFsIG1hc2NoZTAxLCBCaWdEZWNpbWFsIHJ1ZWNr
MDEsIEJpZ0RlY2ltYWwgbWFzY2hlMDIsIEJpZ0Q9CmVjaW1hbCBydWVjazAyLCBCaWdEZWNpbWFs
IG1hc2NoZTAzLCBCaWdEZWNpbWFsIHJ1ZWNrMDMsIEJpZ0RlY2ltYWwgbWFzY2hlMD0KNCwgQmln
RGVjaW1hbCBydWVjazA0LCBCaWdEZWNpbWFsIG1hc2NoZTA1LCBCaWdEZWNpbWFsIHJ1ZWNrMDUs
IEJpZ0RlY2ltYWwgPQptYXNjaGUwNiwgQmlnRGVjaW1hbCBydWVjazA2LCBCaWdEZWNpbWFsIG1h
c2NoZTA3LCBCaWdEZWNpbWFsIHJ1ZWNrMDcsIEJpZ0Q9CmVjaW1hbCBtYXNjaGUwOCwgQmlnRGVj
aW1hbCBydWVjazA4LCBCaWdEZWNpbWFsIG1hc2NoZTA5LCBCaWdEZWNpbWFsIHJ1ZWNrMD0KOSwg
QmlnRGVjaW1hbCBtYXNjaGUxMCwgQmlnRGVjaW1hbCBydWVjazEwLCBCaWdEZWNpbWFsIG1hc2No
ZTExLCBCaWdEZWNpbWFsPQogcnVlY2sxMSwgQmlnRGVjaW1hbCBtYXNjaGUxMiwgQmlnRGVjaW1h
bCBydWVjazEyLCBCaWdEZWNpbWFsIG1hc2NoZTEzLCBCaWc9CkRlY2ltYWwgcnVlY2sxMywgQmln
RGVjaW1hbCBtYXNjaGUxNCwgQmlnRGVjaW1hbCBydWVjazE0LCBCaWdEZWNpbWFsIG1hc2NoZT0K
MTUsIEJpZ0RlY2ltYWwgcnVlY2sxNSwgQmlnRGVjaW1hbCBtYXNjaGUxNiwgQmlnRGVjaW1hbCBy
dWVjazE2LCBCaWdEZWNpbWFsPQogbWFzY2hlMTcsIEJpZ0RlY2ltYWwgcnVlY2sxNywgQmlnRGVj
aW1hbCBtYXNjaGUxOCwgQmlnRGVjaW1hbCBydWVjazE4LCBCaWc9CkRlY2ltYWwgbWFzY2hlMTks
IEJpZ0RlY2ltYWwgcnVlY2sxOSwgQmlnRGVjaW1hbCBtYXNjaGUyMCwgQmlnRGVjaW1hbCBydWVj
az0KMjAsIEJpZ0RlY2ltYWwgbWFzY2hlMjEsIEJpZ0RlY2ltYWwgcnVlY2syMSwgQmlnRGVjaW1h
bCByZXN0KSB7Ci0gICAgICAgdGhpcy5zaWViYW5hbHlzZWlkID0zRCBzaWViYW5hbHlzZWlkOwot
ICAgICAgIHRoaXMuZ3NpZWJzYXR6aWQgPTNEIGdzaWVic2F0emlkOwotICAgICAgIHRoaXMuZ21h
c3NlID0zRCBnbWFzc2U7Ci0gICAgICAgdGhpcy5tYXNjaGUwMSA9M0QgbWFzY2hlMDE7Ci0gICAg
ICAgdGhpcy5ydWVjazAxID0zRCBydWVjazAxOwotICAgICAgIHRoaXMubWFzY2hlMDIgPTNEIG1h
c2NoZTAyOwotICAgICAgIHRoaXMucnVlY2swMiA9M0QgcnVlY2swMjsKLSAgICAgICB0aGlzLm1h
c2NoZTAzID0zRCBtYXNjaGUwMzsKLSAgICAgICB0aGlzLnJ1ZWNrMDMgPTNEIHJ1ZWNrMDM7Ci0g
ICAgICAgdGhpcy5tYXNjaGUwNCA9M0QgbWFzY2hlMDQ7Ci0gICAgICAgdGhpcy5ydWVjazA0ID0z
RCBydWVjazA0OwotICAgICAgIHRoaXMubWFzY2hlMDUgPTNEIG1hc2NoZTA1OwotICAgICAgIHRo
aXMucnVlY2swNSA9M0QgcnVlY2swNTsKLSAgICAgICB0aGlzLm1hc2NoZTA2ID0zRCBtYXNjaGUw
NjsKLSAgICAgICB0aGlzLnJ1ZWNrMDYgPTNEIHJ1ZWNrMDY7Ci0gICAgICAgdGhpcy5tYXNjaGUw
NyA9M0QgbWFzY2hlMDc7Ci0gICAgICAgdGhpcy5ydWVjazA3ID0zRCBydWVjazA3OwotICAgICAg
IHRoaXMubWFzY2hlMDggPTNEIG1hc2NoZTA4OwotICAgICAgIHRoaXMucnVlY2swOCA9M0QgcnVl
Y2swODsKLSAgICAgICB0aGlzLm1hc2NoZTA5ID0zRCBtYXNjaGUwOTsKLSAgICAgICB0aGlzLnJ1
ZWNrMDkgPTNEIHJ1ZWNrMDk7Ci0gICAgICAgdGhpcy5tYXNjaGUxMCA9M0QgbWFzY2hlMTA7Ci0g
ICAgICAgdGhpcy5ydWVjazEwID0zRCBydWVjazEwOwotICAgICAgIHRoaXMubWFzY2hlMTEgPTNE
IG1hc2NoZTExOwotICAgICAgIHRoaXMucnVlY2sxMSA9M0QgcnVlY2sxMTsKLSAgICAgICB0aGlz
Lm1hc2NoZTEyID0zRCBtYXNjaGUxMjsKLSAgICAgICB0aGlzLnJ1ZWNrMTIgPTNEIHJ1ZWNrMTI7
Ci0gICAgICAgdGhpcy5tYXNjaGUxMyA9M0QgbWFzY2hlMTM7Ci0gICAgICAgdGhpcy5ydWVjazEz
ID0zRCBydWVjazEzOwotICAgICAgIHRoaXMubWFzY2hlMTQgPTNEIG1hc2NoZTE0OwotICAgICAg
IHRoaXMucnVlY2sxNCA9M0QgcnVlY2sxNDsKLSAgICAgICB0aGlzLm1hc2NoZTE1ID0zRCBtYXNj
aGUxNTsKLSAgICAgICB0aGlzLnJ1ZWNrMTUgPTNEIHJ1ZWNrMTU7Ci0gICAgICAgdGhpcy5tYXNj
aGUxNiA9M0QgbWFzY2hlMTY7Ci0gICAgICAgdGhpcy5ydWVjazE2ID0zRCBydWVjazE2OwotICAg
ICAgIHRoaXMubWFzY2hlMTcgPTNEIG1hc2NoZTE3OwotICAgICAgIHRoaXMucnVlY2sxNyA9M0Qg
cnVlY2sxNzsKLSAgICAgICB0aGlzLm1hc2NoZTE4ID0zRCBtYXNjaGUxODsKLSAgICAgICB0aGlz
LnJ1ZWNrMTggPTNEIHJ1ZWNrMTg7Ci0gICAgICAgdGhpcy5tYXNjaGUxOSA9M0QgbWFzY2hlMTk7
Ci0gICAgICAgdGhpcy5ydWVjazE5ID0zRCBydWVjazE5OwotICAgICAgIHRoaXMubWFzY2hlMjAg
PTNEIG1hc2NoZTIwOwotICAgICAgIHRoaXMucnVlY2syMCA9M0QgcnVlY2syMDsKLSAgICAgICB0
aGlzLm1hc2NoZTIxID0zRCBtYXNjaGUyMTsKLSAgICAgICB0aGlzLnJ1ZWNrMjEgPTNEIHJ1ZWNr
MjE7Ci0gICAgICAgdGhpcy5yZXN0ID0zRCByZXN0OwotICAgIH0KLQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiU0lFQkFOQUxZU0VJRCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDEx
LCBzY2FsPQplPTNEMCkKLSAgICBwdWJsaWMgbG9uZyBnZXRTaWViYW5hbHlzZWlkKCkgewotICAg
ICAgICByZXR1cm4gdGhpcy5zaWViYW5hbHlzZWlkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lk
IHNldFNpZWJhbmFseXNlaWQobG9uZyBzaWViYW5hbHlzZWlkKSB7Ci0gICAgICAgIHRoaXMuc2ll
YmFuYWx5c2VpZCA9M0Qgc2llYmFuYWx5c2VpZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFt
ZT0zRCJHU0lFQlNBVFpJRCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2Fs
ZT0KPTNEMCkKLSAgICBwdWJsaWMgbG9uZyBnZXRHc2llYnNhdHppZCgpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuZ3NpZWJzYXR6aWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0R3NpZWJz
YXR6aWQobG9uZyBnc2llYnNhdHppZCkgewotICAgICAgICB0aGlzLmdzaWVic2F0emlkID0zRCBn
c2llYnNhdHppZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJHTUFTU0UiLCBwcmVj
aXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0R21hc3NlKCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5nbWFzc2U7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0R21hc3NlKEJpZ0RlY2ltYWwgZ21hc3NlKSB7Ci0gICAgICAgIHRoaXMuZ21hc3NlID0zRCBn
bWFzc2U7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMDEiLCBwcmVjaXNp
b249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMDEoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTAxOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lk
IHNldE1hc2NoZTAxKEJpZ0RlY2ltYWwgbWFzY2hlMDEpIHsKLSAgICAgICAgdGhpcy5tYXNjaGUw
MSA9M0QgbWFzY2hlMDE7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0swMSIs
IHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVj
azAxKCkgewotICAgICAgICByZXR1cm4gdGhpcy5ydWVjazAxOwotICAgIH0KLQotICAgIHB1Ymxp
YyB2b2lkIHNldFJ1ZWNrMDEoQmlnRGVjaW1hbCBydWVjazAxKSB7Ci0gICAgICAgIHRoaXMucnVl
Y2swMSA9M0QgcnVlY2swMTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUw
MiIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRN
YXNjaGUwMigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMDI7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0TWFzY2hlMDIoQmlnRGVjaW1hbCBtYXNjaGUwMikgewotICAgICAgICB0
aGlzLm1hc2NoZTAyID0zRCBtYXNjaGUwMjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJSVUVDSzAyIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNp
bWFsIGdldFJ1ZWNrMDIoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMDI7Ci0gICAgfQot
Ci0gICAgcHVibGljIHZvaWQgc2V0UnVlY2swMihCaWdEZWNpbWFsIHJ1ZWNrMDIpIHsKLSAgICAg
ICAgdGhpcy5ydWVjazAyID0zRCBydWVjazAyOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIk1BU0NIRTAzIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdE
ZWNpbWFsIGdldE1hc2NoZTAzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUwMzsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUwMyhCaWdEZWNpbWFsIG1hc2NoZTAzKSB7
Ci0gICAgICAgIHRoaXMubWFzY2hlMDMgPTNEIG1hc2NoZTAzOwotICAgIH0KLQotCi0gICAgQENv
bHVtbihuYW1lPTNEIlJVRUNLMDMiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVi
bGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2swMygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnVlY2sw
MzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazAzKEJpZ0RlY2ltYWwgcnVlY2sw
MykgewotICAgICAgICB0aGlzLnJ1ZWNrMDMgPTNEIHJ1ZWNrMDM7Ci0gICAgfQotCi0KLSAgICBA
Q29sdW1uKG5hbWU9M0QiTUFTQ0hFMDQiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAg
cHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMDQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1h
c2NoZTA0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTA0KEJpZ0RlY2ltYWwg
bWFzY2hlMDQpIHsKLSAgICAgICAgdGhpcy5tYXNjaGUwNCA9M0QgbWFzY2hlMDQ7Ci0gICAgfQot
Ci0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0swNCIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNE
MykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazA0KCkgewotICAgICAgICByZXR1cm4g
dGhpcy5ydWVjazA0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMDQoQmlnRGVj
aW1hbCBydWVjazA0KSB7Ci0gICAgICAgIHRoaXMucnVlY2swNCA9M0QgcnVlY2swNDsKLSAgICB9
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUwNSIsIHByZWNpc2lvbj0zRDcsIHNjYWxl
PTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUwNSgpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMubWFzY2hlMDU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMDUo
QmlnRGVjaW1hbCBtYXNjaGUwNSkgewotICAgICAgICB0aGlzLm1hc2NoZTA1ID0zRCBtYXNjaGUw
NTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzA1IiwgcHJlY2lzaW9uPTNE
OSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMDUoKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLnJ1ZWNrMDU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnVl
Y2swNShCaWdEZWNpbWFsIHJ1ZWNrMDUpIHsKLSAgICAgICAgdGhpcy5ydWVjazA1ID0zRCBydWVj
azA1OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTA2IiwgcHJlY2lzaW9u
PTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTA2KCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUwNjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXRNYXNjaGUwNihCaWdEZWNpbWFsIG1hc2NoZTA2KSB7Ci0gICAgICAgIHRoaXMubWFzY2hlMDYg
PTNEIG1hc2NoZTA2OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMDYiLCBw
cmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2sw
NigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnVlY2swNjsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRSdWVjazA2KEJpZ0RlY2ltYWwgcnVlY2swNikgewotICAgICAgICB0aGlzLnJ1ZWNr
MDYgPTNEIHJ1ZWNrMDY7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMDci
LCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFz
Y2hlMDcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTA3OwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldE1hc2NoZTA3KEJpZ0RlY2ltYWwgbWFzY2hlMDcpIHsKLSAgICAgICAgdGhp
cy5tYXNjaGUwNyA9M0QgbWFzY2hlMDc7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0Qi
UlVFQ0swNyIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1h
bCBnZXRSdWVjazA3KCkgewotICAgICAgICByZXR1cm4gdGhpcy5ydWVjazA3OwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMDcoQmlnRGVjaW1hbCBydWVjazA3KSB7Ci0gICAgICAg
IHRoaXMucnVlY2swNyA9M0QgcnVlY2swNzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJNQVNDSEUwOCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVj
aW1hbCBnZXRNYXNjaGUwOCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMDg7Ci0gICAg
fQotCi0gICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMDgoQmlnRGVjaW1hbCBtYXNjaGUwOCkgewot
ICAgICAgICB0aGlzLm1hc2NoZTA4ID0zRCBtYXNjaGUwODsKLSAgICB9Ci0KLQotICAgIEBDb2x1
bW4obmFtZT0zRCJSVUVDSzA4IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldFJ1ZWNrMDgoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMDg7
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnVlY2swOChCaWdEZWNpbWFsIHJ1ZWNrMDgp
IHsKLSAgICAgICAgdGhpcy5ydWVjazA4ID0zRCBydWVjazA4OwotICAgIH0KLQotCi0gICAgQENv
bHVtbihuYW1lPTNEIk1BU0NIRTA5IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTA5KCkgewotICAgICAgICByZXR1cm4gdGhpcy5tYXNj
aGUwOTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUwOShCaWdEZWNpbWFsIG1h
c2NoZTA5KSB7Ci0gICAgICAgIHRoaXMubWFzY2hlMDkgPTNEIG1hc2NoZTA5OwotICAgIH0KLQot
Ci0gICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMDkiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMp
Ci0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2swOSgpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMucnVlY2swOTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazA5KEJpZ0RlY2lt
YWwgcnVlY2swOSkgewotICAgICAgICB0aGlzLnJ1ZWNrMDkgPTNEIHJ1ZWNrMDk7Ci0gICAgfQot
Ci0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMTAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0z
RDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMTAoKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLm1hc2NoZTEwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTEwKEJp
Z0RlY2ltYWwgbWFzY2hlMTApIHsKLSAgICAgICAgdGhpcy5tYXNjaGUxMCA9M0QgbWFzY2hlMTA7
Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0sxMCIsIHByZWNpc2lvbj0zRDks
IHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazEwKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5ydWVjazEwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNr
MTAoQmlnRGVjaW1hbCBydWVjazEwKSB7Ci0gICAgICAgIHRoaXMucnVlY2sxMCA9M0QgcnVlY2sx
MDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUxMSIsIHByZWNpc2lvbj0z
RDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUxMSgpIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMTE7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0
TWFzY2hlMTEoQmlnRGVjaW1hbCBtYXNjaGUxMSkgewotICAgICAgICB0aGlzLm1hc2NoZTExID0z
RCBtYXNjaGUxMTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzExIiwgcHJl
Y2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMTEo
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMTE7Ci0gICAgfQotCi0gICAgcHVibGljIHZv
aWQgc2V0UnVlY2sxMShCaWdEZWNpbWFsIHJ1ZWNrMTEpIHsKLSAgICAgICAgdGhpcy5ydWVjazEx
ID0zRCBydWVjazExOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTEyIiwg
cHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2No
ZTEyKCkgewotICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUxMjsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRNYXNjaGUxMihCaWdEZWNpbWFsIG1hc2NoZTEyKSB7Ci0gICAgICAgIHRoaXMu
bWFzY2hlMTIgPTNEIG1hc2NoZTEyOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJV
RUNLMTIiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0UnVlY2sxMigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnVlY2sxMjsKLSAgICB9Ci0KLSAg
ICBwdWJsaWMgdm9pZCBzZXRSdWVjazEyKEJpZ0RlY2ltYWwgcnVlY2sxMikgewotICAgICAgICB0
aGlzLnJ1ZWNrMTIgPTNEIHJ1ZWNrMTI7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0Qi
TUFTQ0hFMTMiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2lt
YWwgZ2V0TWFzY2hlMTMoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTEzOwotICAgIH0K
LQotICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTEzKEJpZ0RlY2ltYWwgbWFzY2hlMTMpIHsKLSAg
ICAgICAgdGhpcy5tYXNjaGUxMyA9M0QgbWFzY2hlMTM7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiUlVFQ0sxMyIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMg
QmlnRGVjaW1hbCBnZXRSdWVjazEzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5ydWVjazEzOwot
ICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMTMoQmlnRGVjaW1hbCBydWVjazEzKSB7
Ci0gICAgICAgIHRoaXMucnVlY2sxMyA9M0QgcnVlY2sxMzsKLSAgICB9Ci0KLQotICAgIEBDb2x1
bW4obmFtZT0zRCJNQVNDSEUxNCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUxNCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hl
MTQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMTQoQmlnRGVjaW1hbCBtYXNj
aGUxNCkgewotICAgICAgICB0aGlzLm1hc2NoZTE0ID0zRCBtYXNjaGUxNDsKLSAgICB9Ci0KLQot
ICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzE0IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQot
ICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMTQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LnJ1ZWNrMTQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnVlY2sxNChCaWdEZWNpbWFs
IHJ1ZWNrMTQpIHsKLSAgICAgICAgdGhpcy5ydWVjazE0ID0zRCBydWVjazE0OwotICAgIH0KLQot
Ci0gICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTE1IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0
KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTE1KCkgewotICAgICAgICByZXR1cm4g
dGhpcy5tYXNjaGUxNTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUxNShCaWdE
ZWNpbWFsIG1hc2NoZTE1KSB7Ci0gICAgICAgIHRoaXMubWFzY2hlMTUgPTNEIG1hc2NoZTE1Owot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMTUiLCBwcmVjaXNpb249M0Q5LCBz
Y2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2sxNSgpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMucnVlY2sxNTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazE1
KEJpZ0RlY2ltYWwgcnVlY2sxNSkgewotICAgICAgICB0aGlzLnJ1ZWNrMTUgPTNEIHJ1ZWNrMTU7
Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMTYiLCBwcmVjaXNpb249M0Q3
LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMTYoKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLm1hc2NoZTE2OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1h
c2NoZTE2KEJpZ0RlY2ltYWwgbWFzY2hlMTYpIHsKLSAgICAgICAgdGhpcy5tYXNjaGUxNiA9M0Qg
bWFzY2hlMTY7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0sxNiIsIHByZWNp
c2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazE2KCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5ydWVjazE2OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lk
IHNldFJ1ZWNrMTYoQmlnRGVjaW1hbCBydWVjazE2KSB7Ci0gICAgICAgIHRoaXMucnVlY2sxNiA9
M0QgcnVlY2sxNjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUxNyIsIHBy
ZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUx
NygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMTc7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0TWFzY2hlMTcoQmlnRGVjaW1hbCBtYXNjaGUxNykgewotICAgICAgICB0aGlzLm1h
c2NoZTE3ID0zRCBtYXNjaGUxNzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSVUVD
SzE3IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdl
dFJ1ZWNrMTcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMTc7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0UnVlY2sxNyhCaWdEZWNpbWFsIHJ1ZWNrMTcpIHsKLSAgICAgICAgdGhp
cy5ydWVjazE3ID0zRCBydWVjazE3OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1B
U0NIRTE4IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFs
IGdldE1hc2NoZTE4KCkgewotICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUxODsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUxOChCaWdEZWNpbWFsIG1hc2NoZTE4KSB7Ci0gICAg
ICAgIHRoaXMubWFzY2hlMTggPTNEIG1hc2NoZTE4OwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIlJVRUNLMTgiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0UnVlY2sxOCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnVlY2sxODsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazE4KEJpZ0RlY2ltYWwgcnVlY2sxOCkgewot
ICAgICAgICB0aGlzLnJ1ZWNrMTggPTNEIHJ1ZWNrMTg7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiTUFTQ0hFMTkiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGlj
IEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMTkoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTE5
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTE5KEJpZ0RlY2ltYWwgbWFzY2hl
MTkpIHsKLSAgICAgICAgdGhpcy5tYXNjaGUxOSA9M0QgbWFzY2hlMTk7Ci0gICAgfQotCi0KLSAg
ICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0sxOSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAg
ICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazE5KCkgewotICAgICAgICByZXR1cm4gdGhpcy5y
dWVjazE5OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMTkoQmlnRGVjaW1hbCBy
dWVjazE5KSB7Ci0gICAgICAgIHRoaXMucnVlY2sxOSA9M0QgcnVlY2sxOTsKLSAgICB9Ci0KLQot
ICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUyMCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkK
LSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUyMCgpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMubWFzY2hlMjA7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMjAoQmlnRGVj
aW1hbCBtYXNjaGUyMCkgewotICAgICAgICB0aGlzLm1hc2NoZTIwID0zRCBtYXNjaGUyMDsKLSAg
ICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzIwIiwgcHJlY2lzaW9uPTNEOSwgc2Nh
bGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMjAoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLnJ1ZWNrMjA7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnVlY2syMChC
aWdEZWNpbWFsIHJ1ZWNrMjApIHsKLSAgICAgICAgdGhpcy5ydWVjazIwID0zRCBydWVjazIwOwot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTIxIiwgcHJlY2lzaW9uPTNENywg
c2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTIxKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5tYXNjaGUyMTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNYXNj
aGUyMShCaWdEZWNpbWFsIG1hc2NoZTIxKSB7Ci0gICAgICAgIHRoaXMubWFzY2hlMjEgPTNEIG1h
c2NoZTIxOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMjEiLCBwcmVjaXNp
b249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2syMSgpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMucnVlY2syMTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXRSdWVjazIxKEJpZ0RlY2ltYWwgcnVlY2syMSkgewotICAgICAgICB0aGlzLnJ1ZWNrMjEgPTNE
IHJ1ZWNrMjE7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUkVTVCIsIHByZWNpc2lv
bj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSZXN0KCkgewotICAg
ICAgICByZXR1cm4gdGhpcy5yZXN0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJlc3Qo
QmlnRGVjaW1hbCByZXN0KSB7Ci0gICAgICAgIHRoaXMucmVzdCA9M0QgcmVzdDsKLSAgICB9Ci0K
LQotICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvdGhlcikgewotICAgICAgICAgaWYg
KCAodGhpcyA9M0Q9M0Qgb3RoZXIgKSApIHJldHVybiB0cnVlOwotICAgICAgICAgaWYgKCAob3Ro
ZXIgPTNEPTNEIG51bGwgKSApIHJldHVybiBmYWxzZTsKLSAgICAgICAgIGlmICggIShvdGhlciBp
bnN0YW5jZW9mIFNzaWVidW5nc2llYklkKSApIHJldHVybiBmYWxzZTsKLSAgICAgICAgIFNzaWVi
dW5nc2llYklkIGNhc3RPdGhlciA9M0QgKCBTc2llYnVuZ3NpZWJJZCApIG90aGVyOwotCi0gICAg
ICAgICByZXR1cm4gKHRoaXMuZ2V0U2llYmFuYWx5c2VpZCgpPTNEPTNEY2FzdE90aGVyLmdldFNp
ZWJhbmFseXNlaWQoKSkKLSAmJiAodGhpcy5nZXRHc2llYnNhdHppZCgpPTNEPTNEY2FzdE90aGVy
LmdldEdzaWVic2F0emlkKCkpCi0gJiYgKCAodGhpcy5nZXRHbWFzc2UoKT0zRD0zRGNhc3RPdGhl
ci5nZXRHbWFzc2UoKSkgfHwgKCB0aGlzLmdldEdtYXNzZSgpIT0KPTNEbnVsbCAmJiBjYXN0T3Ro
ZXIuZ2V0R21hc3NlKCkhPTNEbnVsbCAmJiB0aGlzLmdldEdtYXNzZSgpLmVxdWFscyhjYXN0T3Ro
PQplci5nZXRHbWFzc2UoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRNYXNjaGUwMSgpPTNEPTNEY2Fz
dE90aGVyLmdldE1hc2NoZTAxKCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTAxKCkhPTNEbnVsbCAm
JiBjYXN0T3RoZXIuZ2V0TWFzY2hlMDEoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMDEoKS5l
cXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMDEoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRSdWVj
azAxKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2swMSgpKSB8fCAoIHRoaXMuZ2V0UnVlY2swMT0K
KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2swMSgpIT0zRG51bGwgJiYgdGhpcy5nZXRS
dWVjazAxKCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMDEoKSkgKSApCi0gJiYgKCAodGhp
cy5nZXRNYXNjaGUwMigpPTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTAyKCkpIHx8ICggdGhpcy5n
ZXRNYXNjaD0KZTAyKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMDIoKSE9M0RudWxs
ICYmIHRoaXMuZ2V0TWFzY2hlMDIoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMDIoKSkg
KSApCi0gJiYgKCAodGhpcy5nZXRSdWVjazAyKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2swMigp
KSB8fCAoIHRoaXMuZ2V0UnVlY2swMj0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2sw
MigpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazAyKCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1
ZWNrMDIoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRNYXNjaGUwMygpPTNEPTNEY2FzdE90aGVyLmdl
dE1hc2NoZTAzKCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTAzKCkhPTNEbnVsbCAmJiBjYXN0T3Ro
ZXIuZ2V0TWFzY2hlMDMoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMDMoKS5lcXVhPQpscyhj
YXN0T3RoZXIuZ2V0TWFzY2hlMDMoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRSdWVjazAzKCk9M0Q9
M0RjYXN0T3RoZXIuZ2V0UnVlY2swMygpKSB8fCAoIHRoaXMuZ2V0UnVlY2swMz0KKCkhPTNEbnVs
bCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2swMygpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazAzKCku
ZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMDMoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRNYXNj
aGUwNCgpPTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTA0KCkpIHx8ICggdGhpcy5nZXRNYXNjaD0K
ZTA0KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMDQoKSE9M0RudWxsICYmIHRoaXMu
Z2V0TWFzY2hlMDQoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMDQoKSkgKSApCi0gJiYg
KCAodGhpcy5nZXRSdWVjazA0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2swNCgpKSB8fCAoIHRo
aXMuZ2V0UnVlY2swND0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2swNCgpIT0zRG51
bGwgJiYgdGhpcy5nZXRSdWVjazA0KCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMDQoKSkg
KSApCi0gJiYgKCAodGhpcy5nZXRNYXNjaGUwNSgpPTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTA1
KCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTA1KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFz
Y2hlMDUoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMDUoKS5lcXVhPQpscyhjYXN0T3RoZXIu
Z2V0TWFzY2hlMDUoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRSdWVjazA1KCk9M0Q9M0RjYXN0T3Ro
ZXIuZ2V0UnVlY2swNSgpKSB8fCAoIHRoaXMuZ2V0UnVlY2swNT0KKCkhPTNEbnVsbCAmJiBjYXN0
T3RoZXIuZ2V0UnVlY2swNSgpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazA1KCkuZXF1YWxzKGNh
PQpzdE90aGVyLmdldFJ1ZWNrMDUoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRNYXNjaGUwNigpPTNE
PTNEY2FzdE90aGVyLmdldE1hc2NoZTA2KCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTA2KCkhPTNE
bnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMDYoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hl
MDYoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMDYoKSkgKSApCi0gJiYgKCAodGhpcy5n
ZXRSdWVjazA2KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2swNigpKSB8fCAoIHRoaXMuZ2V0UnVl
Y2swNj0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2swNigpIT0zRG51bGwgJiYgdGhp
cy5nZXRSdWVjazA2KCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMDYoKSkgKSApCi0gJiYg
KCAodGhpcy5nZXRNYXNjaGUwNygpPTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTA3KCkpIHx8ICgg
dGhpcy5nZXRNYXNjaD0KZTA3KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMDcoKSE9
M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMDcoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hl
MDcoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRSdWVjazA3KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVl
Y2swNygpKSB8fCAoIHRoaXMuZ2V0UnVlY2swNz0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0
UnVlY2swNygpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazA3KCkuZXF1YWxzKGNhPQpzdE90aGVy
LmdldFJ1ZWNrMDcoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRNYXNjaGUwOCgpPTNEPTNEY2FzdE90
aGVyLmdldE1hc2NoZTA4KCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTA4KCkhPTNEbnVsbCAmJiBj
YXN0T3RoZXIuZ2V0TWFzY2hlMDgoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMDgoKS5lcXVh
PQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMDgoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRSdWVjazA4
KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2swOCgpKSB8fCAoIHRoaXMuZ2V0UnVlY2swOD0KKCkh
PTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2swOCgpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVj
azA4KCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMDgoKSkgKSApCi0gJiYgKCAodGhpcy5n
ZXRNYXNjaGUwOSgpPTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTA5KCkpIHx8ICggdGhpcy5nZXRN
YXNjaD0KZTA5KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMDkoKSE9M0RudWxsICYm
IHRoaXMuZ2V0TWFzY2hlMDkoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMDkoKSkgKSAp
Ci0gJiYgKCAodGhpcy5nZXRSdWVjazA5KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2swOSgpKSB8
fCAoIHRoaXMuZ2V0UnVlY2swOT0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2swOSgp
IT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazA5KCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNr
MDkoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRNYXNjaGUxMCgpPTNEPTNEY2FzdE90aGVyLmdldE1h
c2NoZTEwKCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTEwKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIu
Z2V0TWFzY2hlMTAoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMTAoKS5lcXVhPQpscyhjYXN0
T3RoZXIuZ2V0TWFzY2hlMTAoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRSdWVjazEwKCk9M0Q9M0Rj
YXN0T3RoZXIuZ2V0UnVlY2sxMCgpKSB8fCAoIHRoaXMuZ2V0UnVlY2sxMD0KKCkhPTNEbnVsbCAm
JiBjYXN0T3RoZXIuZ2V0UnVlY2sxMCgpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazEwKCkuZXF1
YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMTAoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRNYXNjaGUx
MSgpPTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTExKCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTEx
KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMTEoKSE9M0RudWxsICYmIHRoaXMuZ2V0
TWFzY2hlMTEoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMTEoKSkgKSApCi0gJiYgKCAo
dGhpcy5nZXRSdWVjazExKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2sxMSgpKSB8fCAoIHRoaXMu
Z2V0UnVlY2sxMT0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2sxMSgpIT0zRG51bGwg
JiYgdGhpcy5nZXRSdWVjazExKCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMTEoKSkgKSAp
Ci0gJiYgKCAodGhpcy5nZXRNYXNjaGUxMigpPTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTEyKCkp
IHx8ICggdGhpcy5nZXRNYXNjaD0KZTEyKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hl
MTIoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMTIoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0
TWFzY2hlMTIoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRSdWVjazEyKCk9M0Q9M0RjYXN0T3RoZXIu
Z2V0UnVlY2sxMigpKSB8fCAoIHRoaXMuZ2V0UnVlY2sxMj0KKCkhPTNEbnVsbCAmJiBjYXN0T3Ro
ZXIuZ2V0UnVlY2sxMigpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazEyKCkuZXF1YWxzKGNhPQpz
dE90aGVyLmdldFJ1ZWNrMTIoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRNYXNjaGUxMygpPTNEPTNE
Y2FzdE90aGVyLmdldE1hc2NoZTEzKCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTEzKCkhPTNEbnVs
bCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMTMoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMTMo
KS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMTMoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRS
dWVjazEzKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2sxMygpKSB8fCAoIHRoaXMuZ2V0UnVlY2sx
Mz0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2sxMygpIT0zRG51bGwgJiYgdGhpcy5n
ZXRSdWVjazEzKCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMTMoKSkgKSApCi0gJiYgKCAo
dGhpcy5nZXRNYXNjaGUxNCgpPTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTE0KCkpIHx8ICggdGhp
cy5nZXRNYXNjaD0KZTE0KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMTQoKSE9M0Ru
dWxsICYmIHRoaXMuZ2V0TWFzY2hlMTQoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMTQo
KSkgKSApCi0gJiYgKCAodGhpcy5nZXRSdWVjazE0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2sx
NCgpKSB8fCAoIHRoaXMuZ2V0UnVlY2sxND0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVl
Y2sxNCgpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazE0KCkuZXF1YWxzKGNhPQpzdE90aGVyLmdl
dFJ1ZWNrMTQoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRNYXNjaGUxNSgpPTNEPTNEY2FzdE90aGVy
LmdldE1hc2NoZTE1KCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTE1KCkhPTNEbnVsbCAmJiBjYXN0
T3RoZXIuZ2V0TWFzY2hlMTUoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMTUoKS5lcXVhPQps
cyhjYXN0T3RoZXIuZ2V0TWFzY2hlMTUoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRSdWVjazE1KCk9
M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2sxNSgpKSB8fCAoIHRoaXMuZ2V0UnVlY2sxNT0KKCkhPTNE
bnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2sxNSgpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazE1
KCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMTUoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRN
YXNjaGUxNigpPTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTE2KCkpIHx8ICggdGhpcy5nZXRNYXNj
aD0KZTE2KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMTYoKSE9M0RudWxsICYmIHRo
aXMuZ2V0TWFzY2hlMTYoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMTYoKSkgKSApCi0g
JiYgKCAodGhpcy5nZXRSdWVjazE2KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2sxNigpKSB8fCAo
IHRoaXMuZ2V0UnVlY2sxNj0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2sxNigpIT0z
RG51bGwgJiYgdGhpcy5nZXRSdWVjazE2KCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMTYo
KSkgKSApCi0gJiYgKCAodGhpcy5nZXRNYXNjaGUxNygpPTNEPTNEY2FzdE90aGVyLmdldE1hc2No
ZTE3KCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTE3KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0
TWFzY2hlMTcoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMTcoKS5lcXVhPQpscyhjYXN0T3Ro
ZXIuZ2V0TWFzY2hlMTcoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRSdWVjazE3KCk9M0Q9M0RjYXN0
T3RoZXIuZ2V0UnVlY2sxNygpKSB8fCAoIHRoaXMuZ2V0UnVlY2sxNz0KKCkhPTNEbnVsbCAmJiBj
YXN0T3RoZXIuZ2V0UnVlY2sxNygpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazE3KCkuZXF1YWxz
KGNhPQpzdE90aGVyLmdldFJ1ZWNrMTcoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRNYXNjaGUxOCgp
PTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTE4KCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTE4KCkh
PTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMTgoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFz
Y2hlMTgoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMTgoKSkgKSApCi0gJiYgKCAodGhp
cy5nZXRSdWVjazE4KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2sxOCgpKSB8fCAoIHRoaXMuZ2V0
UnVlY2sxOD0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2sxOCgpIT0zRG51bGwgJiYg
dGhpcy5nZXRSdWVjazE4KCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMTgoKSkgKSApCi0g
JiYgKCAodGhpcy5nZXRNYXNjaGUxOSgpPTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTE5KCkpIHx8
ICggdGhpcy5nZXRNYXNjaD0KZTE5KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMTko
KSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMTkoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFz
Y2hlMTkoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRSdWVjazE5KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0
UnVlY2sxOSgpKSB8fCAoIHRoaXMuZ2V0UnVlY2sxOT0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIu
Z2V0UnVlY2sxOSgpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazE5KCkuZXF1YWxzKGNhPQpzdE90
aGVyLmdldFJ1ZWNrMTkoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRNYXNjaGUyMCgpPTNEPTNEY2Fz
dE90aGVyLmdldE1hc2NoZTIwKCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTIwKCkhPTNEbnVsbCAm
JiBjYXN0T3RoZXIuZ2V0TWFzY2hlMjAoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMjAoKS5l
cXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMjAoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRSdWVj
azIwKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2syMCgpKSB8fCAoIHRoaXMuZ2V0UnVlY2syMD0K
KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2syMCgpIT0zRG51bGwgJiYgdGhpcy5nZXRS
dWVjazIwKCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMjAoKSkgKSApCi0gJiYgKCAodGhp
cy5nZXRNYXNjaGUyMSgpPTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTIxKCkpIHx8ICggdGhpcy5n
ZXRNYXNjaD0KZTIxKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMjEoKSE9M0RudWxs
ICYmIHRoaXMuZ2V0TWFzY2hlMjEoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMjEoKSkg
KSApCi0gJiYgKCAodGhpcy5nZXRSdWVjazIxKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2syMSgp
KSB8fCAoIHRoaXMuZ2V0UnVlY2syMT0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2sy
MSgpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazIxKCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1
ZWNrMjEoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRSZXN0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UmVz
dCgpKSB8fCAoIHRoaXMuZ2V0UmVzdCgpIT0zRG51bD0KbCAmJiBjYXN0T3RoZXIuZ2V0UmVzdCgp
IT0zRG51bGwgJiYgdGhpcy5nZXRSZXN0KCkuZXF1YWxzKGNhc3RPdGhlci5nZXRSZXN0PQooKSkg
KSApOwotICAgfQotCi0gICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgewotICAgICAgICAgaW50IHJl
c3VsdCA9M0QgMTc7Ci0KLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoaW50KSB0
aGlzLmdldFNpZWJhbmFseXNlaWQoKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQg
KyAoaW50KSB0aGlzLmdldEdzaWVic2F0emlkKCk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICog
cmVzdWx0ICsgKCBnZXRHbWFzc2UoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldD0KR21hc3Nl
KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0
TWFzY2hlMDEoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMDEoKS5oYXNoQ29k
ZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazAxKCkg
PTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMDEoKS5oYXNoQ29kZSgpICk7Ci0gICAg
ICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUwMigpID0zRD0zRCBudWxs
ID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUwMigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3Vs
dCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMDIoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlz
LmdlPQp0UnVlY2swMigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiBy
ZXN1bHQgKyAoIGdldE1hc2NoZTAzKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2No
ZTAzKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICgg
Z2V0UnVlY2swMygpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazAzKCkuaGFzaENv
ZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMDQo
KSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMDQoKS5oYXNoQ29kZSgpICk7Ci0g
ICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazA0KCkgPTNEPTNEIG51
bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMDQoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1
bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUwNSgpID0zRD0zRCBudWxsID8gMCA6IHRo
aXMuZz0KZXRNYXNjaGUwNSgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcg
KiByZXN1bHQgKyAoIGdldFJ1ZWNrMDUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVl
Y2swNSgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAo
IGdldE1hc2NoZTA2KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTA2KCkuaGFz
aENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2sw
NigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazA2KCkuaGFzaENvZGUoKSApOwot
ICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMDcoKSA9M0Q9M0Qg
bnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMDcoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICBy
ZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazA3KCkgPTNEPTNEIG51bGwgPyAwIDog
dGhpcy5nZT0KdFJ1ZWNrMDcoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3
ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUwOCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRN
YXNjaGUwOCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQg
KyAoIGdldFJ1ZWNrMDgoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2swOCgpLmhh
c2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2No
ZTA5KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTA5KCkuaGFzaENvZGUoKSAp
OwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2swOSgpID0zRD0z
RCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazA5KCkuaGFzaENvZGUoKSApOwotICAgICAgICAg
cmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMTAoKSA9M0Q9M0QgbnVsbCA/IDAg
OiB0aGlzLmc9CmV0TWFzY2hlMTAoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNE
IDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazEwKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0K
dFJ1ZWNrMTAoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0
ICsgKCBnZXRNYXNjaGUxMSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUxMSgp
Lmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1
ZWNrMTEoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2sxMSgpLmhhc2hDb2RlKCkg
KTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTEyKCkgPTNE
PTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTEyKCkuaGFzaENvZGUoKSApOwotICAgICAg
ICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2sxMigpID0zRD0zRCBudWxsID8g
MCA6IHRoaXMuZ2U9CnRSdWVjazEyKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0z
RCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMTMoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9
CmV0TWFzY2hlMTMoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVz
dWx0ICsgKCBnZXRSdWVjazEzKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMTMo
KS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRN
YXNjaGUxNCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUxNCgpLmhhc2hDb2Rl
KCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMTQoKSA9
M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2sxNCgpLmhhc2hDb2RlKCkgKTsKLSAgICAg
ICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTE1KCkgPTNEPTNEIG51bGwg
PyAwIDogdGhpcy5nPQpldE1hc2NoZTE1KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0
ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2sxNSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMu
Z2U9CnRSdWVjazE1KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJl
c3VsdCArICggZ2V0TWFzY2hlMTYoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hl
MTYoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBn
ZXRSdWVjazE2KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMTYoKS5oYXNoQ29k
ZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUxNygp
ID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUxNygpLmhhc2hDb2RlKCkgKTsKLSAg
ICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMTcoKSA9M0Q9M0QgbnVs
bCA/IDAgOiB0aGlzLmdlPQp0UnVlY2sxNygpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3Vs
dCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTE4KCkgPTNEPTNEIG51bGwgPyAwIDogdGhp
cy5nPQpldE1hc2NoZTE4KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAq
IHJlc3VsdCArICggZ2V0UnVlY2sxOCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVj
azE4KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICgg
Z2V0TWFzY2hlMTkoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMTkoKS5oYXNo
Q29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazE5
KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMTkoKS5oYXNoQ29kZSgpICk7Ci0g
ICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUyMCgpID0zRD0zRCBu
dWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUyMCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJl
c3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMjAoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0
aGlzLmdlPQp0UnVlY2syMCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcg
KiByZXN1bHQgKyAoIGdldE1hc2NoZTIxKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1h
c2NoZTIxKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCAr
ICggZ2V0UnVlY2syMSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazIxKCkuaGFz
aENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UmVzdCgp
ID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0UmU9CnN0KCkuaGFzaENvZGUoKSApOwotICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLX0KZGlmZiAtciA4OWRjYWFlMDgwMWMgLXIgNmE0YmRj
Y2NmYTRkIGJhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50PQpzL3JpdmVyL3Nl
ZGRiL21vZGVsL1N0YXRpb24uamF2YQotLS0gYS9iYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2Rp
dmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvU3RhdGlvbi5qYXY9CmEJVHVlIEphbiAxNiAx
ODoxMzo1NCAyMDE4ICswMTAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcw
ICswMDAwCkBAIC0xLDMxMyArMCwwIEBACi0vKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIw
MTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQotICogU29m
dHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0gKgotICogVGhpcyBmaWxlIGlz
IEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMpCi0gKiBhbmQgY29tZXMg
d2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCi0gKiBkb2N1bWVudGF0
aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFpbHMuCi0gKi8KLQot
cGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2RlbDsKLS8vIEdlbmVyYXRl
ZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQuMC5DUjEKLQotCi1p
bXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7Ci1p
bXBvcnQgamF2YS51dGlsLlNldDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1p
bXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNl
LkZldGNoVHlwZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKLWltcG9ydCBqYXZheC5w
ZXJzaXN0ZW5jZS5Kb2luQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk1hbnlUb09u
ZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5PbmVUb01hbnk7Ci1pbXBvcnQgamF2YXgucGVy
c2lzdGVuY2UuVGFibGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVW5pcXVlQ29uc3RyYWlu
dDsKLQotLyoqCi0gKiBTdGF0aW9uIGdlbmVyYXRlZCBieSBoYm0yamF2YQotICovCi1ARW50aXR5
Ci1AVGFibGUobmFtZT0zRCJTVEFUSU9OIgotICAgICxzY2hlbWE9M0QiU0VEREIiCi0gICAgLCB1
bmlxdWVDb25zdHJhaW50cyA9M0QgQFVuaXF1ZUNvbnN0cmFpbnQoY29sdW1uTmFtZXM9M0R7IkdF
V0FFU1NFUklEIj0KLCAiTkFNRSJ9KQotKQotcHVibGljIGNsYXNzIFN0YXRpb24gIGltcGxlbWVu
dHMgamF2YS5pby5TZXJpYWxpemFibGUgewotCi0KLSAgICAgcHJpdmF0ZSBsb25nIHN0YXRpb25p
ZDsKLSAgICAgcHJpdmF0ZSBCZXp1Z3NwZWdlbCBiZXp1Z3NwZWdlbDsKLSAgICAgcHJpdmF0ZSBH
ZXdhZXNzZXIgZ2V3YWVzc2VyOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwga207Ci0gICAgIHBy
aXZhdGUgU3RyaW5nIG5hbWU7Ci0gICAgIHByaXZhdGUgYm9vbGVhbiB1ZmVyaXN0bGlua3M7Ci0g
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCB0ZWlsVm9uOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
dGVpbEJpczsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGFic3RIbXN0OwotICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgTEhvY2h3ZXJ0OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgTFJlY2h3ZXJ0
OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgTE5uOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
UkhvY2h3ZXJ0OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgUlJlY2h3ZXJ0OwotICAgICBwcml2
YXRlIEJpZ0RlY2ltYWwgUk5uOwotICAgICBwcml2YXRlIFN0cmluZyBiZW1lcmt1bmc7Ci0gICAg
IHByaXZhdGUgTG9uZyBvbGRtc3RpZDsKLSAgICAgcHJpdmF0ZSBib29sZWFuIGlzdGZlc3RzdG9m
ZjsKLSAgICAgcHJpdmF0ZSBTZXQ8U29obHRlc3Q+IHNvaGx0ZXN0cyA9M0QgbmV3IEhhc2hTZXQ8
U29obHRlc3Q+KDApOwotICAgICBwcml2YXRlIFNldDxIcGVpbHVuZz4gaHBlaWx1bmdzID0zRCBu
ZXcgSGFzaFNldDxIcGVpbHVuZz4oMCk7Ci0gICAgIHByaXZhdGUgU2V0PE1wZWlsdW5nPiBtcGVp
bHVuZ3MgPTNEIG5ldyBIYXNoU2V0PE1wZWlsdW5nPigwKTsKLSAgICAgcHJpdmF0ZSBTZXQ8TWVz
c3VuZz4gbWVzc3VuZ3MgPTNEIG5ldyBIYXNoU2V0PE1lc3N1bmc+KDApOwotCi0gICAgcHVibGlj
IFN0YXRpb24oKSB7Ci0gICAgfQotCi0gICAgcHVibGljIFN0YXRpb24obG9uZyBzdGF0aW9uaWQs
IEdld2Flc3NlciBnZXdhZXNzZXIsIEJpZ0RlY2ltYWwga20sIFN0cj0KaW5nIG5hbWUsIGJvb2xl
YW4gdWZlcmlzdGxpbmtzLCBib29sZWFuIGlzdGZlc3RzdG9mZikgewotICAgICAgICB0aGlzLnN0
YXRpb25pZCA9M0Qgc3RhdGlvbmlkOwotICAgICAgICB0aGlzLmdld2Flc3NlciA9M0QgZ2V3YWVz
c2VyOwotICAgICAgICB0aGlzLmttID0zRCBrbTsKLSAgICAgICAgdGhpcy5uYW1lID0zRCBuYW1l
OwotICAgICAgICB0aGlzLnVmZXJpc3RsaW5rcyA9M0QgdWZlcmlzdGxpbmtzOwotICAgICAgICB0
aGlzLmlzdGZlc3RzdG9mZiA9M0QgaXN0ZmVzdHN0b2ZmOwotICAgIH0KLSAgICBwdWJsaWMgU3Rh
dGlvbihsb25nIHN0YXRpb25pZCwgQmV6dWdzcGVnZWwgYmV6dWdzcGVnZWwsIEdld2Flc3NlciBn
ZXdhPQplc3NlciwgQmlnRGVjaW1hbCBrbSwgU3RyaW5nIG5hbWUsIGJvb2xlYW4gdWZlcmlzdGxp
bmtzLCBCaWdEZWNpbWFsIHRlaWxWb249CiwgQmlnRGVjaW1hbCB0ZWlsQmlzLCBCaWdEZWNpbWFs
IGFic3RIbXN0LCBCaWdEZWNpbWFsIExIb2Nod2VydCwgQmlnRGVjaW1hbD0KIExSZWNod2VydCwg
QmlnRGVjaW1hbCBMTm4sIEJpZ0RlY2ltYWwgUkhvY2h3ZXJ0LCBCaWdEZWNpbWFsIFJSZWNod2Vy
dCwgQmlnPQpEZWNpbWFsIFJObiwgU3RyaW5nIGJlbWVya3VuZywgTG9uZyBvbGRtc3RpZCwgYm9v
bGVhbiBpc3RmZXN0c3RvZmYsIFNldDxTb2g9Cmx0ZXN0PiBzb2hsdGVzdHMsIFNldDxIcGVpbHVu
Zz4gaHBlaWx1bmdzLCBTZXQ8TXBlaWx1bmc+IG1wZWlsdW5ncywgU2V0PE1lcz0Kc3VuZz4gbWVz
c3VuZ3MpIHsKLSAgICAgICB0aGlzLnN0YXRpb25pZCA9M0Qgc3RhdGlvbmlkOwotICAgICAgIHRo
aXMuYmV6dWdzcGVnZWwgPTNEIGJlenVnc3BlZ2VsOwotICAgICAgIHRoaXMuZ2V3YWVzc2VyID0z
RCBnZXdhZXNzZXI7Ci0gICAgICAgdGhpcy5rbSA9M0Qga207Ci0gICAgICAgdGhpcy5uYW1lID0z
RCBuYW1lOwotICAgICAgIHRoaXMudWZlcmlzdGxpbmtzID0zRCB1ZmVyaXN0bGlua3M7Ci0gICAg
ICAgdGhpcy50ZWlsVm9uID0zRCB0ZWlsVm9uOwotICAgICAgIHRoaXMudGVpbEJpcyA9M0QgdGVp
bEJpczsKLSAgICAgICB0aGlzLmFic3RIbXN0ID0zRCBhYnN0SG1zdDsKLSAgICAgICB0aGlzLkxI
b2Nod2VydCA9M0QgTEhvY2h3ZXJ0OwotICAgICAgIHRoaXMuTFJlY2h3ZXJ0ID0zRCBMUmVjaHdl
cnQ7Ci0gICAgICAgdGhpcy5MTm4gPTNEIExObjsKLSAgICAgICB0aGlzLlJIb2Nod2VydCA9M0Qg
UkhvY2h3ZXJ0OwotICAgICAgIHRoaXMuUlJlY2h3ZXJ0ID0zRCBSUmVjaHdlcnQ7Ci0gICAgICAg
dGhpcy5STm4gPTNEIFJObjsKLSAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwot
ICAgICAgIHRoaXMub2xkbXN0aWQgPTNEIG9sZG1zdGlkOwotICAgICAgIHRoaXMuaXN0ZmVzdHN0
b2ZmID0zRCBpc3RmZXN0c3RvZmY7Ci0gICAgICAgdGhpcy5zb2hsdGVzdHMgPTNEIHNvaGx0ZXN0
czsKLSAgICAgICB0aGlzLmhwZWlsdW5ncyA9M0QgaHBlaWx1bmdzOwotICAgICAgIHRoaXMubXBl
aWx1bmdzID0zRCBtcGVpbHVuZ3M7Ci0gICAgICAgdGhpcy5tZXNzdW5ncyA9M0QgbWVzc3VuZ3M7
Ci0gICAgfQotCi0gICAgIEBJZAotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiU1RBVElPTklEIiwg
dW5pcXVlPTNEdHJ1ZSwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPQo9M0QxMSwgc2NhbGU9
M0QwKQotICAgIHB1YmxpYyBsb25nIGdldFN0YXRpb25pZCgpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuc3RhdGlvbmlkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFN0YXRpb25pZChsb25n
IHN0YXRpb25pZCkgewotICAgICAgICB0aGlzLnN0YXRpb25pZCA9M0Qgc3RhdGlvbmlkOwotICAg
IH0KLQotQE1hbnlUb09uZShmZXRjaD0zREZldGNoVHlwZS5MQVpZKQotICAgIEBKb2luQ29sdW1u
KG5hbWU9M0QiQkVaVUdTUEVHRUxJRCIpCi0gICAgcHVibGljIEJlenVnc3BlZ2VsIGdldEJlenVn
c3BlZ2VsKCkgewotICAgICAgICByZXR1cm4gdGhpcy5iZXp1Z3NwZWdlbDsKLSAgICB9Ci0KLSAg
ICBwdWJsaWMgdm9pZCBzZXRCZXp1Z3NwZWdlbChCZXp1Z3NwZWdlbCBiZXp1Z3NwZWdlbCkgewot
ICAgICAgICB0aGlzLmJlenVnc3BlZ2VsID0zRCBiZXp1Z3NwZWdlbDsKLSAgICB9Ci0KLUBNYW55
VG9PbmUoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSkKLSAgICBASm9pbkNvbHVtbihuYW1lPTNEIkdF
V0FFU1NFUklEIiwgbnVsbGFibGU9M0RmYWxzZSkKLSAgICBwdWJsaWMgR2V3YWVzc2VyIGdldEdl
d2Flc3NlcigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ2V3YWVzc2VyOwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldEdld2Flc3NlcihHZXdhZXNzZXIgZ2V3YWVzc2VyKSB7Ci0gICAgICAg
IHRoaXMuZ2V3YWVzc2VyID0zRCBnZXdhZXNzZXI7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiS00iLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0g
ICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0S20oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmttOwot
ICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEttKEJpZ0RlY2ltYWwga20pIHsKLSAgICAgICAg
dGhpcy5rbSA9M0Qga207Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTkFNRSIsIG51
bGxhYmxlPTNEZmFsc2UsIGxlbmd0aD0zRDUwKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgp
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMubmFtZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXROYW1lKFN0cmluZyBuYW1lKSB7Ci0gICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKLSAgICB9
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJVRkVSSVNUTElOS1MiLCBudWxsYWJsZT0zRGZhbHNl
LCBwcmVjaXNpb249M0QxLCBzY2FsZT0KPTNEMCkKLSAgICBwdWJsaWMgYm9vbGVhbiBpc1VmZXJp
c3RsaW5rcygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudWZlcmlzdGxpbmtzOwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldFVmZXJpc3RsaW5rcyhib29sZWFuIHVmZXJpc3RsaW5rcykgewot
ICAgICAgICB0aGlzLnVmZXJpc3RsaW5rcyA9M0QgdWZlcmlzdGxpbmtzOwotICAgIH0KLQotCi0g
ICAgQENvbHVtbihuYW1lPTNEIlRFSUxfVk9OIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQot
ICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFRlaWxWb24oKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LnRlaWxWb247Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VGVpbFZvbihCaWdEZWNpbWFs
IHRlaWxWb24pIHsKLSAgICAgICAgdGhpcy50ZWlsVm9uID0zRCB0ZWlsVm9uOwotICAgIH0KLQot
Ci0gICAgQENvbHVtbihuYW1lPTNEIlRFSUxfQklTIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0Qz
KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFRlaWxCaXMoKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLnRlaWxCaXM7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VGVpbEJpcyhCaWdEZWNp
bWFsIHRlaWxCaXMpIHsKLSAgICAgICAgdGhpcy50ZWlsQmlzID0zRCB0ZWlsQmlzOwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIkFCU1RfSE1TVCIsIHByZWNpc2lvbj0zRDgsIHNjYWxl
PTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRBYnN0SG1zdCgpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuYWJzdEhtc3Q7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QWJzdEhtc3Qo
QmlnRGVjaW1hbCBhYnN0SG1zdCkgewotICAgICAgICB0aGlzLmFic3RIbXN0ID0zRCBhYnN0SG1z
dDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJMX0hPQ0hXRVJUIiwgcHJlY2lzaW9u
PTNEMTEsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRMSG9jaHdlcnQoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLkxIb2Nod2VydDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXRMSG9jaHdlcnQoQmlnRGVjaW1hbCBMSG9jaHdlcnQpIHsKLSAgICAgICAgdGhpcy5MSG9j
aHdlcnQgPTNEIExIb2Nod2VydDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJMX1JF
Q0hXRVJUIiwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1h
bCBnZXRMUmVjaHdlcnQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLkxSZWNod2VydDsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRMUmVjaHdlcnQoQmlnRGVjaW1hbCBMUmVjaHdlcnQpIHsK
LSAgICAgICAgdGhpcy5MUmVjaHdlcnQgPTNEIExSZWNod2VydDsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJMX05OIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldExObigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuTE5uOwotICAgIH0K
LQotICAgIHB1YmxpYyB2b2lkIHNldExObihCaWdEZWNpbWFsIExObikgewotICAgICAgICB0aGlz
LkxObiA9M0QgTE5uOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJfSE9DSFdFUlQi
LCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJI
b2Nod2VydCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuUkhvY2h3ZXJ0OwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldFJIb2Nod2VydChCaWdEZWNpbWFsIFJIb2Nod2VydCkgewotICAgICAg
ICB0aGlzLlJIb2Nod2VydCA9M0QgUkhvY2h3ZXJ0OwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIlJfUkVDSFdFUlQiLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QzKQotICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldFJSZWNod2VydCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuUlJlY2h3
ZXJ0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJSZWNod2VydChCaWdEZWNpbWFsIFJS
ZWNod2VydCkgewotICAgICAgICB0aGlzLlJSZWNod2VydCA9M0QgUlJlY2h3ZXJ0OwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJfTk4iLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMp
Ci0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0Uk5uKCkgewotICAgICAgICByZXR1cm4gdGhpcy5S
Tm47Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0Uk5uKEJpZ0RlY2ltYWwgUk5uKSB7Ci0g
ICAgICAgIHRoaXMuUk5uID0zRCBSTm47Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0Qi
QkVNRVJLVU5HIiwgbGVuZ3RoPTNEMjQwKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0QmVtZXJrdW5n
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5iZW1lcmt1bmc7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0QmVtZXJrdW5nKFN0cmluZyBiZW1lcmt1bmcpIHsKLSAgICAgICAgdGhpcy5iZW1l
cmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJPTERN
U1RJRCIsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDApCi0gICAgcHVibGljIExvbmcgZ2V0T2xk
bXN0aWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm9sZG1zdGlkOwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldE9sZG1zdGlkKExvbmcgb2xkbXN0aWQpIHsKLSAgICAgICAgdGhpcy5vbGRt
c3RpZCA9M0Qgb2xkbXN0aWQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiSVNURkVT
VFNUT0ZGIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMSwgc2NhbGU9Cj0zRDApCi0g
ICAgcHVibGljIGJvb2xlYW4gaXNJc3RmZXN0c3RvZmYoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LmlzdGZlc3RzdG9mZjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRJc3RmZXN0c3RvZmYo
Ym9vbGVhbiBpc3RmZXN0c3RvZmYpIHsKLSAgICAgICAgdGhpcy5pc3RmZXN0c3RvZmYgPTNEIGlz
dGZlc3RzdG9mZjsKLSAgICB9Ci0KLUBPbmVUb01hbnkoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSwg
bWFwcGVkQnk9M0Qic3RhdGlvbiIpCi0gICAgcHVibGljIFNldDxTb2hsdGVzdD4gZ2V0U29obHRl
c3RzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5zb2hsdGVzdHM7Ci0gICAgfQotCi0gICAgcHVi
bGljIHZvaWQgc2V0U29obHRlc3RzKFNldDxTb2hsdGVzdD4gc29obHRlc3RzKSB7Ci0gICAgICAg
IHRoaXMuc29obHRlc3RzID0zRCBzb2hsdGVzdHM7Ci0gICAgfQotCi1AT25lVG9NYW55KGZldGNo
PTNERmV0Y2hUeXBlLkxBWlksIG1hcHBlZEJ5PTNEInN0YXRpb24iKQotICAgIHB1YmxpYyBTZXQ8
SHBlaWx1bmc+IGdldEhwZWlsdW5ncygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaHBlaWx1bmdz
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEhwZWlsdW5ncyhTZXQ8SHBlaWx1bmc+IGhw
ZWlsdW5ncykgewotICAgICAgICB0aGlzLmhwZWlsdW5ncyA9M0QgaHBlaWx1bmdzOwotICAgIH0K
LQotQE9uZVRvTWFueShmZXRjaD0zREZldGNoVHlwZS5MQVpZLCBtYXBwZWRCeT0zRCJzdGF0aW9u
IikKLSAgICBwdWJsaWMgU2V0PE1wZWlsdW5nPiBnZXRNcGVpbHVuZ3MoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLm1wZWlsdW5nczsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNcGVpbHVu
Z3MoU2V0PE1wZWlsdW5nPiBtcGVpbHVuZ3MpIHsKLSAgICAgICAgdGhpcy5tcGVpbHVuZ3MgPTNE
IG1wZWlsdW5nczsKLSAgICB9Ci0KLUBPbmVUb01hbnkoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSwg
bWFwcGVkQnk9M0Qic3RhdGlvbiIpCi0gICAgcHVibGljIFNldDxNZXNzdW5nPiBnZXRNZXNzdW5n
cygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWVzc3VuZ3M7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0TWVzc3VuZ3MoU2V0PE1lc3N1bmc+IG1lc3N1bmdzKSB7Ci0gICAgICAgIHRoaXMu
bWVzc3VuZ3MgPTNEIG1lc3N1bmdzOwotICAgIH0KLX0KZGlmZiAtciA4OWRjYWFlMDgwMWMgLXIg
NmE0YmRjY2NmYTRkIGJhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50PQpzL3Jp
dmVyL3NlZGRiL21vZGVsL1N0YXRpb25nZXcuamF2YQotLS0gYS9iYWNrZW5kL3NyYy9tYWluL2ph
dmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvU3RhdGlvbmdldy49CmphdmEJ
VHVlIEphbiAxNiAxODoxMzo1NCAyMDE4ICswMTAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAw
MDowMDowMCAxOTcwICswMDAwCkBAIC0xLDY5ICswLDAgQEAKLS8qIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1
bmRlCi0gKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgKLSAqCi0gKiBU
aGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49M0R2MykKLSAq
IGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUKLSAq
IGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWls
cy4KLSAqLwotCi1wYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRiLm1vZGVsOwot
Ly8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4w
LkNSMQotCi0KLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5BdHRyaWJ1dGVPdmVycmlkZTsKLWlt
cG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5BdHRyaWJ1dGVPdmVycmlkZXM7Ci1pbXBvcnQgamF2YXgu
cGVyc2lzdGVuY2UuQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVtYmVkZGVkSWQ7
Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OwotaW1wb3J0IGphdmF4LnBlcnNpc3Rl
bmNlLlRhYmxlOwotCi0vKioKLSAqIFN0YXRpb25nZXcgZ2VuZXJhdGVkIGJ5IGhibTJqYXZhCi0g
Ki8KLUBFbnRpdHkKLUBUYWJsZShuYW1lPTNEIlNUQVRJT05HRVciCi0gICAgLHNjaGVtYT0zRCJT
RUREQiIKLSkKLXB1YmxpYyBjbGFzcyBTdGF0aW9uZ2V3ICBpbXBsZW1lbnRzIGphdmEuaW8uU2Vy
aWFsaXphYmxlIHsKLQotCi0gICAgIHByaXZhdGUgU3RhdGlvbmdld0lkIGlkOwotCi0gICAgcHVi
bGljIFN0YXRpb25nZXcoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIFN0YXRpb25nZXcoU3RhdGlv
bmdld0lkIGlkKSB7Ci0gICAgICAgdGhpcy5pZCA9M0QgaWQ7Ci0gICAgfQotCi0gICAgIEBFbWJl
ZGRlZElkCi0KLQotICAgIEBBdHRyaWJ1dGVPdmVycmlkZXMoIHsKLSAgICAgICAgQEF0dHJpYnV0
ZU92ZXJyaWRlKG5hbWU9M0Qic3RhdGlvbmlkIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlNU
PQpBVElPTklEIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEMCkg
KSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZ2V3YWVzc2VyaWQiLCBjb2x1
bW49M0RAQ29sdW1uKG5hbWU9M0QiPQpHRVdBRVNTRVJJRCIsIG51bGxhYmxlPTNEZmFsc2UsIHBy
ZWNpc2lvbj0zRDExLCBzY2FsZT0zRDApICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShu
YW1lPTNEImttIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIktNIiwgbnVsbD0KYWJsZT0zRGZh
bHNlLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVy
cmlkZShuYW1lPTNEImJlenVnc3BlZ2VsaWQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9Cj0zRCJC
RVpVR1NQRUdFTElEIiwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEMCkgKSwKLSAgICAgICAgQEF0
dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibmFtZSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJO
QU1FIiwgPQpudWxsYWJsZT0zRGZhbHNlLCBsZW5ndGg9M0Q1MCkgKSwKLSAgICAgICAgQEF0dHJp
YnV0ZU92ZXJyaWRlKG5hbWU9M0QidWZlcmlzdGxpbmtzIiwgY29sdW1uPTNEQENvbHVtbihuYW1l
PTNEPQoiVUZFUklTVExJTktTIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMSwgc2Nh
bGU9M0QwKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ0ZWlsVm9uIiwg
Y29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlRFSUw9Cl9WT04iLCBwcmVjaXNpb249M0Q4LCBzY2Fs
ZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInRlaWxCaXMiLCBj
b2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiVEVJTD0KX0JJUyIsIHByZWNpc2lvbj0zRDgsIHNjYWxl
PTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiYWJzdEhtc3QiLCBj
b2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiQUJTPQpUX0hNU1QiLCBwcmVjaXNpb249M0Q4LCBzY2Fs
ZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIkxIb2Nod2VydCIs
IGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJMXz0KSE9DSFdFUlQiLCBwcmVjaXNpb249M0QxMSwg
c2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJMUmVjaHdl
cnQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTF89ClJFQ0hXRVJUIiwgcHJlY2lzaW9uPTNE
MTEsIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiTE5u
IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkxfTk4iLCBwPQpyZWNpc2lvbj0zRDgsIHNjYWxl
PTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiUkhvY2h3ZXJ0Iiwg
Y29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJfPQpIT0NIV0VSVCIsIHByZWNpc2lvbj0zRDExLCBz
Y2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIlJSZWNod2Vy
dCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSXz0KUkVDSFdFUlQiLCBwcmVjaXNpb249M0Qx
MSwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJSTm4i
LCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUl9OTiIsIHA9CnJlY2lzaW9uPTNEOCwgc2NhbGU9
M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJiZW1lcmt1bmciLCBj
b2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiQkU9Ck1FUktVTkciLCBsZW5ndGg9M0QyNDApICksCi0g
ICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm9sZG1zdGlkIiwgY29sdW1uPTNEQENv
bHVtbihuYW1lPTNEIk9MRD0KTVNUSUQiLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QwKSApLAot
ICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJpc3RmZXN0c3RvZmYiLCBjb2x1bW49
M0RAQ29sdW1uKG5hbWU9M0Q9CiJJU1RGRVNUU1RPRkYiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVj
aXNpb249M0QxLCBzY2FsZT0zRDApICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1l
PTNEImdld25hbWUiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiR0VXTj0KQU1FIiwgbnVsbGFi
bGU9M0RmYWxzZSwgbGVuZ3RoPTNEMjApICkgfSApCi0gICAgcHVibGljIFN0YXRpb25nZXdJZCBn
ZXRJZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZv
aWQgc2V0SWQoU3RhdGlvbmdld0lkIGlkKSB7Ci0gICAgICAgIHRoaXMuaWQgPTNEIGlkOwotICAg
IH0KLX0KZGlmZiAtciA4OWRjYWFlMDgwMWMgLXIgNmE0YmRjY2NmYTRkIGJhY2tlbmQvc3JjL21h
aW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50PQpzL3JpdmVyL3NlZGRiL21vZGVsL1N0YXRpb25nZXdJ
ZC5qYXZhCi0tLSBhL2JhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZl
ci9zZWRkYi9tb2RlbC9TdGF0aW9uZ2V3ST0KZC5qYXZhCVR1ZSBKYW4gMTYgMTg6MTM6NTQgMjAx
OCArMDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAt
MSwzMjEgKzAsMCBAQAotLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRl
c2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2lu
ZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3
YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKQotICogYW5kIGNvbWVzIHdpdGggQUJTT0xV
VEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcg
d2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLgotICovCi0KLXBhY2thZ2Ugb3Jn
LmRpdmU0ZWxlbWVudHMucml2ZXIuc2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAx
MiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmEu
bWF0aC5CaWdEZWNpbWFsOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9y
dCBqYXZheC5wZXJzaXN0ZW5jZS5FbWJlZGRhYmxlOwotCi0vKioKLSAqIFN0YXRpb25nZXdJZCBn
ZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVtYmVkZGFibGUKLXB1YmxpYyBjbGFzcyBTdGF0
aW9uZ2V3SWQgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgewotCi0KLSAgICAgcHJp
dmF0ZSBsb25nIHN0YXRpb25pZDsKLSAgICAgcHJpdmF0ZSBsb25nIGdld2Flc3NlcmlkOwotICAg
ICBwcml2YXRlIEJpZ0RlY2ltYWwga207Ci0gICAgIHByaXZhdGUgTG9uZyBiZXp1Z3NwZWdlbGlk
OwotICAgICBwcml2YXRlIFN0cmluZyBuYW1lOwotICAgICBwcml2YXRlIGJvb2xlYW4gdWZlcmlz
dGxpbmtzOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdGVpbFZvbjsKLSAgICAgcHJpdmF0ZSBC
aWdEZWNpbWFsIHRlaWxCaXM7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBhYnN0SG1zdDsKLSAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIExIb2Nod2VydDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IExSZWNod2VydDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIExObjsKLSAgICAgcHJpdmF0ZSBC
aWdEZWNpbWFsIFJIb2Nod2VydDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIFJSZWNod2VydDsK
LSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIFJObjsKLSAgICAgcHJpdmF0ZSBTdHJpbmcgYmVtZXJr
dW5nOwotICAgICBwcml2YXRlIExvbmcgb2xkbXN0aWQ7Ci0gICAgIHByaXZhdGUgYm9vbGVhbiBp
c3RmZXN0c3RvZmY7Ci0gICAgIHByaXZhdGUgU3RyaW5nIGdld25hbWU7Ci0KLSAgICBwdWJsaWMg
U3RhdGlvbmdld0lkKCkgewotICAgIH0KLQotICAgIHB1YmxpYyBTdGF0aW9uZ2V3SWQobG9uZyBz
dGF0aW9uaWQsIGxvbmcgZ2V3YWVzc2VyaWQsIEJpZ0RlY2ltYWwga20sIFM9CnRyaW5nIG5hbWUs
IGJvb2xlYW4gdWZlcmlzdGxpbmtzLCBib29sZWFuIGlzdGZlc3RzdG9mZiwgU3RyaW5nIGdld25h
bWUpIHsKLSAgICAgICAgdGhpcy5zdGF0aW9uaWQgPTNEIHN0YXRpb25pZDsKLSAgICAgICAgdGhp
cy5nZXdhZXNzZXJpZCA9M0QgZ2V3YWVzc2VyaWQ7Ci0gICAgICAgIHRoaXMua20gPTNEIGttOwot
ICAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7Ci0gICAgICAgIHRoaXMudWZlcmlzdGxpbmtzID0z
RCB1ZmVyaXN0bGlua3M7Ci0gICAgICAgIHRoaXMuaXN0ZmVzdHN0b2ZmID0zRCBpc3RmZXN0c3Rv
ZmY7Ci0gICAgICAgIHRoaXMuZ2V3bmFtZSA9M0QgZ2V3bmFtZTsKLSAgICB9Ci0gICAgcHVibGlj
IFN0YXRpb25nZXdJZChsb25nIHN0YXRpb25pZCwgbG9uZyBnZXdhZXNzZXJpZCwgQmlnRGVjaW1h
bCBrbSwgTD0Kb25nIGJlenVnc3BlZ2VsaWQsIFN0cmluZyBuYW1lLCBib29sZWFuIHVmZXJpc3Rs
aW5rcywgQmlnRGVjaW1hbCB0ZWlsVm9uLCBCPQppZ0RlY2ltYWwgdGVpbEJpcywgQmlnRGVjaW1h
bCBhYnN0SG1zdCwgQmlnRGVjaW1hbCBMSG9jaHdlcnQsIEJpZ0RlY2ltYWwgTFI9CmVjaHdlcnQs
IEJpZ0RlY2ltYWwgTE5uLCBCaWdEZWNpbWFsIFJIb2Nod2VydCwgQmlnRGVjaW1hbCBSUmVjaHdl
cnQsIEJpZ0RlYz0KaW1hbCBSTm4sIFN0cmluZyBiZW1lcmt1bmcsIExvbmcgb2xkbXN0aWQsIGJv
b2xlYW4gaXN0ZmVzdHN0b2ZmLCBTdHJpbmcgZ2V3PQpuYW1lKSB7Ci0gICAgICAgdGhpcy5zdGF0
aW9uaWQgPTNEIHN0YXRpb25pZDsKLSAgICAgICB0aGlzLmdld2Flc3NlcmlkID0zRCBnZXdhZXNz
ZXJpZDsKLSAgICAgICB0aGlzLmttID0zRCBrbTsKLSAgICAgICB0aGlzLmJlenVnc3BlZ2VsaWQg
PTNEIGJlenVnc3BlZ2VsaWQ7Ci0gICAgICAgdGhpcy5uYW1lID0zRCBuYW1lOwotICAgICAgIHRo
aXMudWZlcmlzdGxpbmtzID0zRCB1ZmVyaXN0bGlua3M7Ci0gICAgICAgdGhpcy50ZWlsVm9uID0z
RCB0ZWlsVm9uOwotICAgICAgIHRoaXMudGVpbEJpcyA9M0QgdGVpbEJpczsKLSAgICAgICB0aGlz
LmFic3RIbXN0ID0zRCBhYnN0SG1zdDsKLSAgICAgICB0aGlzLkxIb2Nod2VydCA9M0QgTEhvY2h3
ZXJ0OwotICAgICAgIHRoaXMuTFJlY2h3ZXJ0ID0zRCBMUmVjaHdlcnQ7Ci0gICAgICAgdGhpcy5M
Tm4gPTNEIExObjsKLSAgICAgICB0aGlzLlJIb2Nod2VydCA9M0QgUkhvY2h3ZXJ0OwotICAgICAg
IHRoaXMuUlJlY2h3ZXJ0ID0zRCBSUmVjaHdlcnQ7Ci0gICAgICAgdGhpcy5STm4gPTNEIFJObjsK
LSAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwotICAgICAgIHRoaXMub2xkbXN0
aWQgPTNEIG9sZG1zdGlkOwotICAgICAgIHRoaXMuaXN0ZmVzdHN0b2ZmID0zRCBpc3RmZXN0c3Rv
ZmY7Ci0gICAgICAgdGhpcy5nZXduYW1lID0zRCBnZXduYW1lOwotICAgIH0KLQotCi0KLSAgICBA
Q29sdW1uKG5hbWU9M0QiU1RBVElPTklEIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNE
MTEsIHNjYWxlPTNEPQowKQotICAgIHB1YmxpYyBsb25nIGdldFN0YXRpb25pZCgpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuc3RhdGlvbmlkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFN0
YXRpb25pZChsb25nIHN0YXRpb25pZCkgewotICAgICAgICB0aGlzLnN0YXRpb25pZCA9M0Qgc3Rh
dGlvbmlkOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkdFV0FFU1NFUklEIiwgbnVs
bGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPQo9M0QwKQotICAgIHB1YmxpYyBs
b25nIGdldEdld2Flc3NlcmlkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5nZXdhZXNzZXJpZDsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRHZXdhZXNzZXJpZChsb25nIGdld2Flc3Nlcmlk
KSB7Ci0gICAgICAgIHRoaXMuZ2V3YWVzc2VyaWQgPTNEIGdld2Flc3NlcmlkOwotICAgIH0KLQot
Ci0gICAgQENvbHVtbihuYW1lPTNEIktNIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNE
OCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEttKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5rbTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRLbShCaWdEZWNpbWFs
IGttKSB7Ci0gICAgICAgIHRoaXMua20gPTNEIGttOwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIkJFWlVHU1BFR0VMSUQiLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QwKQotICAgIHB1
YmxpYyBMb25nIGdldEJlenVnc3BlZ2VsaWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJlenVn
c3BlZ2VsaWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QmV6dWdzcGVnZWxpZChMb25n
IGJlenVnc3BlZ2VsaWQpIHsKLSAgICAgICAgdGhpcy5iZXp1Z3NwZWdlbGlkID0zRCBiZXp1Z3Nw
ZWdlbGlkOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk5BTUUiLCBudWxsYWJsZT0z
RGZhbHNlLCBsZW5ndGg9M0Q1MCkKLSAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLm5hbWU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TmFtZShT
dHJpbmcgbmFtZSkgewotICAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7Ci0gICAgfQotCi0KLSAg
ICBAQ29sdW1uKG5hbWU9M0QiVUZFUklTVExJTktTIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lz
aW9uPTNEMSwgc2NhbGU9Cj0zRDApCi0gICAgcHVibGljIGJvb2xlYW4gaXNVZmVyaXN0bGlua3Mo
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnVmZXJpc3RsaW5rczsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRVZmVyaXN0bGlua3MoYm9vbGVhbiB1ZmVyaXN0bGlua3MpIHsKLSAgICAgICAg
dGhpcy51ZmVyaXN0bGlua3MgPTNEIHVmZXJpc3RsaW5rczsKLSAgICB9Ci0KLQotICAgIEBDb2x1
bW4obmFtZT0zRCJURUlMX1ZPTiIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXRUZWlsVm9uKCkgewotICAgICAgICByZXR1cm4gdGhpcy50ZWlsVm9u
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFRlaWxWb24oQmlnRGVjaW1hbCB0ZWlsVm9u
KSB7Ci0gICAgICAgIHRoaXMudGVpbFZvbiA9M0QgdGVpbFZvbjsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJURUlMX0JJUyIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBw
dWJsaWMgQmlnRGVjaW1hbCBnZXRUZWlsQmlzKCkgewotICAgICAgICByZXR1cm4gdGhpcy50ZWls
QmlzOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFRlaWxCaXMoQmlnRGVjaW1hbCB0ZWls
QmlzKSB7Ci0gICAgICAgIHRoaXMudGVpbEJpcyA9M0QgdGVpbEJpczsKLSAgICB9Ci0KLQotICAg
IEBDb2x1bW4obmFtZT0zRCJBQlNUX0hNU1QiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0g
ICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0QWJzdEhtc3QoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LmFic3RIbXN0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEFic3RIbXN0KEJpZ0RlY2lt
YWwgYWJzdEhtc3QpIHsKLSAgICAgICAgdGhpcy5hYnN0SG1zdCA9M0QgYWJzdEhtc3Q7Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTF9IT0NIV0VSVCIsIHByZWNpc2lvbj0zRDExLCBz
Y2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TEhvY2h3ZXJ0KCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5MSG9jaHdlcnQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TEhv
Y2h3ZXJ0KEJpZ0RlY2ltYWwgTEhvY2h3ZXJ0KSB7Ci0gICAgICAgIHRoaXMuTEhvY2h3ZXJ0ID0z
RCBMSG9jaHdlcnQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTF9SRUNIV0VSVCIs
IHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TFJl
Y2h3ZXJ0KCkgewotICAgICAgICByZXR1cm4gdGhpcy5MUmVjaHdlcnQ7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0TFJlY2h3ZXJ0KEJpZ0RlY2ltYWwgTFJlY2h3ZXJ0KSB7Ci0gICAgICAg
IHRoaXMuTFJlY2h3ZXJ0ID0zRCBMUmVjaHdlcnQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiTF9OTiIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVj
aW1hbCBnZXRMTm4oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLkxObjsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRMTm4oQmlnRGVjaW1hbCBMTm4pIHsKLSAgICAgICAgdGhpcy5MTm4gPTNE
IExObjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSX0hPQ0hXRVJUIiwgcHJlY2lz
aW9uPTNEMTEsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSSG9jaHdlcnQo
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLlJIb2Nod2VydDsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRSSG9jaHdlcnQoQmlnRGVjaW1hbCBSSG9jaHdlcnQpIHsKLSAgICAgICAgdGhpcy5S
SG9jaHdlcnQgPTNEIFJIb2Nod2VydDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJS
X1JFQ0hXRVJUIiwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVj
aW1hbCBnZXRSUmVjaHdlcnQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLlJSZWNod2VydDsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSUmVjaHdlcnQoQmlnRGVjaW1hbCBSUmVjaHdlcnQp
IHsKLSAgICAgICAgdGhpcy5SUmVjaHdlcnQgPTNEIFJSZWNod2VydDsKLSAgICB9Ci0KLQotICAg
IEBDb2x1bW4obmFtZT0zRCJSX05OIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldFJObigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuUk5uOwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJObihCaWdEZWNpbWFsIFJObikgewotICAgICAgICB0
aGlzLlJObiA9M0QgUk5uOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkJFTUVSS1VO
RyIsIGxlbmd0aD0zRDI0MCkKLSAgICBwdWJsaWMgU3RyaW5nIGdldEJlbWVya3VuZygpIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuYmVtZXJrdW5nOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dEJlbWVya3VuZyhTdHJpbmcgYmVtZXJrdW5nKSB7Ci0gICAgICAgIHRoaXMuYmVtZXJrdW5nID0z
RCBiZW1lcmt1bmc7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiT0xETVNUSUQiLCBw
cmVjaXNpb249M0QxMSwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBMb25nIGdldE9sZG1zdGlkKCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5vbGRtc3RpZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXRPbGRtc3RpZChMb25nIG9sZG1zdGlkKSB7Ci0gICAgICAgIHRoaXMub2xkbXN0aWQgPTNE
IG9sZG1zdGlkOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIklTVEZFU1RTVE9GRiIs
IG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDEsIHNjYWxlPQo9M0QwKQotICAgIHB1Ymxp
YyBib29sZWFuIGlzSXN0ZmVzdHN0b2ZmKCkgewotICAgICAgICByZXR1cm4gdGhpcy5pc3RmZXN0
c3RvZmY7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0SXN0ZmVzdHN0b2ZmKGJvb2xlYW4g
aXN0ZmVzdHN0b2ZmKSB7Ci0gICAgICAgIHRoaXMuaXN0ZmVzdHN0b2ZmID0zRCBpc3RmZXN0c3Rv
ZmY7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiR0VXTkFNRSIsIG51bGxhYmxlPTNE
ZmFsc2UsIGxlbmd0aD0zRDIwKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0R2V3bmFtZSgpIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuZ2V3bmFtZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRH
ZXduYW1lKFN0cmluZyBnZXduYW1lKSB7Ci0gICAgICAgIHRoaXMuZ2V3bmFtZSA9M0QgZ2V3bmFt
ZTsKLSAgICB9Ci0KLQotICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvdGhlcikgewot
ICAgICAgICAgaWYgKCAodGhpcyA9M0Q9M0Qgb3RoZXIgKSApIHJldHVybiB0cnVlOwotICAgICAg
ICAgaWYgKCAob3RoZXIgPTNEPTNEIG51bGwgKSApIHJldHVybiBmYWxzZTsKLSAgICAgICAgIGlm
ICggIShvdGhlciBpbnN0YW5jZW9mIFN0YXRpb25nZXdJZCkgKSByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICBTdGF0aW9uZ2V3SWQgY2FzdE90aGVyID0zRCAoIFN0YXRpb25nZXdJZCApIG90aGVyOwot
Ci0gICAgICAgICByZXR1cm4gKHRoaXMuZ2V0U3RhdGlvbmlkKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0
U3RhdGlvbmlkKCkpCi0gJiYgKHRoaXMuZ2V0R2V3YWVzc2VyaWQoKT0zRD0zRGNhc3RPdGhlci5n
ZXRHZXdhZXNzZXJpZCgpKQotICYmICggKHRoaXMuZ2V0S20oKT0zRD0zRGNhc3RPdGhlci5nZXRL
bSgpKSB8fCAoIHRoaXMuZ2V0S20oKSE9M0RudWxsICYmIGM9CmFzdE90aGVyLmdldEttKCkhPTNE
bnVsbCAmJiB0aGlzLmdldEttKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRLbSgpKSApICkKLSAmJiAo
ICh0aGlzLmdldEJlenVnc3BlZ2VsaWQoKT0zRD0zRGNhc3RPdGhlci5nZXRCZXp1Z3NwZWdlbGlk
KCkpIHx8ICggdGhpPQpzLmdldEJlenVnc3BlZ2VsaWQoKSE9M0RudWxsICYmIGNhc3RPdGhlci5n
ZXRCZXp1Z3NwZWdlbGlkKCkhPTNEbnVsbCAmJiB0aGk9CnMuZ2V0QmV6dWdzcGVnZWxpZCgpLmVx
dWFscyhjYXN0T3RoZXIuZ2V0QmV6dWdzcGVnZWxpZCgpKSApICkKLSAmJiAoICh0aGlzLmdldE5h
bWUoKT0zRD0zRGNhc3RPdGhlci5nZXROYW1lKCkpIHx8ICggdGhpcy5nZXROYW1lKCkhPTNEbnVs
PQpsICYmIGNhc3RPdGhlci5nZXROYW1lKCkhPTNEbnVsbCAmJiB0aGlzLmdldE5hbWUoKS5lcXVh
bHMoY2FzdE90aGVyLmdldE5hbWU9CigpKSApICkKLSAmJiAodGhpcy5pc1VmZXJpc3RsaW5rcygp
PTNEPTNEY2FzdE90aGVyLmlzVWZlcmlzdGxpbmtzKCkpCi0gJiYgKCAodGhpcy5nZXRUZWlsVm9u
KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0VGVpbFZvbigpKSB8fCAoIHRoaXMuZ2V0VGVpbFZvbj0KKCkh
PTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0VGVpbFZvbigpIT0zRG51bGwgJiYgdGhpcy5nZXRUZWls
Vm9uKCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFRlaWxWb24oKSkgKSApCi0gJiYgKCAodGhpcy5n
ZXRUZWlsQmlzKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0VGVpbEJpcygpKSB8fCAoIHRoaXMuZ2V0VGVp
bEJpcz0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0VGVpbEJpcygpIT0zRG51bGwgJiYgdGhp
cy5nZXRUZWlsQmlzKCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFRlaWxCaXMoKSkgKSApCi0gJiYg
KCAodGhpcy5nZXRBYnN0SG1zdCgpPTNEPTNEY2FzdE90aGVyLmdldEFic3RIbXN0KCkpIHx8ICgg
dGhpcy5nZXRBYnN0SD0KbXN0KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0QWJzdEhtc3QoKSE9
M0RudWxsICYmIHRoaXMuZ2V0QWJzdEhtc3QoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0QWJzdEht
c3QoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRMSG9jaHdlcnQoKT0zRD0zRGNhc3RPdGhlci5nZXRM
SG9jaHdlcnQoKSkgfHwgKCB0aGlzLmdldExIbz0KY2h3ZXJ0KCkhPTNEbnVsbCAmJiBjYXN0T3Ro
ZXIuZ2V0TEhvY2h3ZXJ0KCkhPTNEbnVsbCAmJiB0aGlzLmdldExIb2Nod2VydCgpPQouZXF1YWxz
KGNhc3RPdGhlci5nZXRMSG9jaHdlcnQoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRMUmVjaHdlcnQo
KT0zRD0zRGNhc3RPdGhlci5nZXRMUmVjaHdlcnQoKSkgfHwgKCB0aGlzLmdldExSZT0KY2h3ZXJ0
KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TFJlY2h3ZXJ0KCkhPTNEbnVsbCAmJiB0aGlzLmdl
dExSZWNod2VydCgpPQouZXF1YWxzKGNhc3RPdGhlci5nZXRMUmVjaHdlcnQoKSkgKSApCi0gJiYg
KCAodGhpcy5nZXRMTm4oKT0zRD0zRGNhc3RPdGhlci5nZXRMTm4oKSkgfHwgKCB0aGlzLmdldExO
bigpIT0zRG51bGwgJj0KJiBjYXN0T3RoZXIuZ2V0TE5uKCkhPTNEbnVsbCAmJiB0aGlzLmdldExO
bigpLmVxdWFscyhjYXN0T3RoZXIuZ2V0TE5uKCkpICkgKQotICYmICggKHRoaXMuZ2V0UkhvY2h3
ZXJ0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UkhvY2h3ZXJ0KCkpIHx8ICggdGhpcy5nZXRSSG89CmNo
d2VydCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJIb2Nod2VydCgpIT0zRG51bGwgJiYgdGhp
cy5nZXRSSG9jaHdlcnQoKT0KLmVxdWFscyhjYXN0T3RoZXIuZ2V0UkhvY2h3ZXJ0KCkpICkgKQot
ICYmICggKHRoaXMuZ2V0UlJlY2h3ZXJ0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UlJlY2h3ZXJ0KCkp
IHx8ICggdGhpcy5nZXRSUmU9CmNod2VydCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJSZWNo
d2VydCgpIT0zRG51bGwgJiYgdGhpcy5nZXRSUmVjaHdlcnQoKT0KLmVxdWFscyhjYXN0T3RoZXIu
Z2V0UlJlY2h3ZXJ0KCkpICkgKQotICYmICggKHRoaXMuZ2V0Uk5uKCk9M0Q9M0RjYXN0T3RoZXIu
Z2V0Uk5uKCkpIHx8ICggdGhpcy5nZXRSTm4oKSE9M0RudWxsICY9CiYgY2FzdE90aGVyLmdldFJO
bigpIT0zRG51bGwgJiYgdGhpcy5nZXRSTm4oKS5lcXVhbHMoY2FzdE90aGVyLmdldFJObigpKSAp
ICkKLSAmJiAoICh0aGlzLmdldEJlbWVya3VuZygpPTNEPTNEY2FzdE90aGVyLmdldEJlbWVya3Vu
ZygpKSB8fCAoIHRoaXMuZ2V0QmVtPQplcmt1bmcoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRC
ZW1lcmt1bmcoKSE9M0RudWxsICYmIHRoaXMuZ2V0QmVtZXJrdW5nKCk9Ci5lcXVhbHMoY2FzdE90
aGVyLmdldEJlbWVya3VuZygpKSApICkKLSAmJiAoICh0aGlzLmdldE9sZG1zdGlkKCk9M0Q9M0Rj
YXN0T3RoZXIuZ2V0T2xkbXN0aWQoKSkgfHwgKCB0aGlzLmdldE9sZG1zPQp0aWQoKSE9M0RudWxs
ICYmIGNhc3RPdGhlci5nZXRPbGRtc3RpZCgpIT0zRG51bGwgJiYgdGhpcy5nZXRPbGRtc3RpZCgp
LmVxdWE9CmxzKGNhc3RPdGhlci5nZXRPbGRtc3RpZCgpKSApICkKLSAmJiAodGhpcy5pc0lzdGZl
c3RzdG9mZigpPTNEPTNEY2FzdE90aGVyLmlzSXN0ZmVzdHN0b2ZmKCkpCi0gJiYgKCAodGhpcy5n
ZXRHZXduYW1lKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0R2V3bmFtZSgpKSB8fCAoIHRoaXMuZ2V0R2V3
bmFtZT0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0R2V3bmFtZSgpIT0zRG51bGwgJiYgdGhp
cy5nZXRHZXduYW1lKCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldEdld25hbWUoKSkgKSApOwotICAg
fQotCi0gICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgewotICAgICAgICAgaW50IHJlc3VsdCA9M0Qg
MTc7Ci0KLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoaW50KSB0aGlzLmdldFN0
YXRpb25pZCgpOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArIChpbnQpIHRoaXMu
Z2V0R2V3YWVzc2VyaWQoKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdl
dEttKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRLbSgpPQouaGFzaENvZGUoKSApOwotICAg
ICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0QmV6dWdzcGVnZWxpZCgpID0zRD0z
RCBudWxsID8gMCA6IHQ9Cmhpcy5nZXRCZXp1Z3NwZWdlbGlkKCkuaGFzaENvZGUoKSApOwotICAg
ICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TmFtZSgpID0zRD0zRCBudWxsID8g
MCA6IHRoaXMuZ2V0TmE9Cm1lKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAz
NyAqIHJlc3VsdCArICh0aGlzLmlzVWZlcmlzdGxpbmtzKCk/MTowKTsKLSAgICAgICAgIHJlc3Vs
dCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFRlaWxWb24oKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlz
LmdlPQp0VGVpbFZvbigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiBy
ZXN1bHQgKyAoIGdldFRlaWxCaXMoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0VGVpbEJp
cygpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdl
dEFic3RIbXN0KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldEFic3RIbXN0KCkuaGFzaENv
ZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TEhvY2h3ZXJ0
KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy49CmdldExIb2Nod2VydCgpLmhhc2hDb2RlKCkgKTsK
LSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldExSZWNod2VydCgpID0zRD0z
RCBudWxsID8gMCA6IHRoaXMuPQpnZXRMUmVjaHdlcnQoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAg
ICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRMTm4oKSA9M0Q9M0QgbnVsbCA/IDAgOiB0
aGlzLmdldExObj0KKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJl
c3VsdCArICggZ2V0UkhvY2h3ZXJ0KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy49CmdldFJIb2No
d2VydCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAo
IGdldFJSZWNod2VydCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuPQpnZXRSUmVjaHdlcnQoKS5o
YXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSTm4o
KSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldFJObj0KKCkuaGFzaENvZGUoKSApOwotICAgICAg
ICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0QmVtZXJrdW5nKCkgPTNEPTNEIG51bGwg
PyAwIDogdGhpcy49CmdldEJlbWVya3VuZygpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3Vs
dCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE9sZG1zdGlkKCkgPTNEPTNEIG51bGwgPyAwIDogdGhp
cy5nPQpldE9sZG1zdGlkKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAq
IHJlc3VsdCArICh0aGlzLmlzSXN0ZmVzdHN0b2ZmKCk/MTowKTsKLSAgICAgICAgIHJlc3VsdCA9
M0QgMzcgKiByZXN1bHQgKyAoIGdldEdld25hbWUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdl
PQp0R2V3bmFtZSgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9
Ci19CmRpZmYgLXIgODlkY2FhZTA4MDFjIC1yIDZhNGJkY2NjZmE0ZCBiYWNrZW5kL3NyYy9tYWlu
L2phdmEvb3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZlci9zZWRkYi9tb2RlbC9UbXBHbG9DaGFuZ2Vk
LmphdmEKLS0tIGEvYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnRzL3JpdmVy
L3NlZGRiL21vZGVsL1RtcEdsb0NoYW5nPQplZC5qYXZhCVR1ZSBKYW4gMTYgMTg6MTM6NTQgMjAx
OCArMDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAt
MSw1MCArMCwwIEBACi0vKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVz
YW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQotICogU29mdHdhcmUgZW5naW5l
ZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0gKgotICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdh
cmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMpCi0gKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVU
RUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCi0gKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3
aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFpbHMuCi0gKi8KLQotcGFja2FnZSBvcmcu
ZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2RlbDsKLS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEy
IDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQuMC5DUjEKLQotCi1pbXBvcnQgamF2YXgu
cGVyc2lzdGVuY2UuQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKLWlt
cG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJs
ZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5VbmlxdWVDb25zdHJhaW50OwotCi0vKioKLSAq
IFRtcEdsb0NoYW5nZWQgZ2VuZXJhdGVkIGJ5IGhibTJqYXZhCi0gKi8KLUBFbnRpdHkKLUBUYWJs
ZShuYW1lPTNEIlRNUF9HTE9fQ0hBTkdFRCIKLSAgICAsc2NoZW1hPTNEIlNFRERCIgotICAgICwg
dW5pcXVlQ29uc3RyYWludHMgPTNEIEBVbmlxdWVDb25zdHJhaW50KGNvbHVtbk5hbWVzPTNEIkdM
T1RSRUNIVEVJRCIpCi0pCi1wdWJsaWMgY2xhc3MgVG1wR2xvQ2hhbmdlZCAgaW1wbGVtZW50cyBq
YXZhLmlvLlNlcmlhbGl6YWJsZSB7Ci0KLQotICAgICBwcml2YXRlIGxvbmcgZ2xvdHJlY2h0ZWlk
OwotCi0gICAgcHVibGljIFRtcEdsb0NoYW5nZWQoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIFRt
cEdsb0NoYW5nZWQobG9uZyBnbG90cmVjaHRlaWQpIHsKLSAgICAgICB0aGlzLmdsb3RyZWNodGVp
ZCA9M0QgZ2xvdHJlY2h0ZWlkOwotICAgIH0KLQotICAgICBASWQKLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIkdMT1RSRUNIVEVJRCIsIHVuaXF1ZT0zRHRydWUsIG51bGxhYmxlPTNEZmFsc2UsIHBy
ZWNpcz0KaW9uPTNEMTEsIHNjYWxlPTNEMCkKLSAgICBwdWJsaWMgbG9uZyBnZXRHbG90cmVjaHRl
aWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmdsb3RyZWNodGVpZDsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRHbG90cmVjaHRlaWQobG9uZyBnbG90cmVjaHRlaWQpIHsKLSAgICAgICAg
dGhpcy5nbG90cmVjaHRlaWQgPTNEIGdsb3RyZWNodGVpZDsKLSAgICB9Ci19CmRpZmYgLXIgODlk
Y2FhZTA4MDFjIC1yIDZhNGJkY2NjZmE0ZCBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0
ZWxlbWVudD0Kcy9yaXZlci9zZWRkYi9tb2RlbC9UbXBNZXNBY2hhbmdlZC5qYXZhCi0tLSBhL2Jh
Y2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZlci9zZWRkYi9tb2RlbC9U
bXBNZXNBY2hhbj0KZ2VkLmphdmEJVHVlIEphbiAxNiAxODoxMzo1NCAyMDE4ICswMTAwCisrKyAv
ZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDUwICswLDAgQEAK
LS8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9
QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCi0gKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRl
dmF0aW9uIEdtYkgKLSAqCi0gKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUg
R05VIEFHUEwgKD49M0R2MykKLSAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFO
VFkhIENoZWNrIG91dCB0aGUKLSAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVt
ZW50cyBSaXZlciBmb3IgZGV0YWlscy4KLSAqLwotCi1wYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRz
LnJpdmVyLnNlZGRiLm1vZGVsOwotLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkg
SGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQotCi0KLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5D
b2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OwotaW1wb3J0IGphdmF4LnBl
cnNpc3RlbmNlLklkOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOwotaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLlVuaXF1ZUNvbnN0cmFpbnQ7Ci0KLS8qKgotICogVG1wTWVzQWNoYW5n
ZWQgZ2VuZXJhdGVkIGJ5IGhibTJqYXZhCi0gKi8KLUBFbnRpdHkKLUBUYWJsZShuYW1lPTNEIlRN
UF9NRVNfQUNIQU5HRUQiCi0gICAgLHNjaGVtYT0zRCJTRUREQiIKLSAgICAsIHVuaXF1ZUNvbnN0
cmFpbnRzID0zRCBAVW5pcXVlQ29uc3RyYWludChjb2x1bW5OYW1lcz0zRCJNRVNTVU5HSUQiKQot
KQotcHVibGljIGNsYXNzIFRtcE1lc0FjaGFuZ2VkICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFs
aXphYmxlIHsKLQotCi0gICAgIHByaXZhdGUgbG9uZyBtZXNzdW5naWQ7Ci0KLSAgICBwdWJsaWMg
VG1wTWVzQWNoYW5nZWQoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIFRtcE1lc0FjaGFuZ2VkKGxv
bmcgbWVzc3VuZ2lkKSB7Ci0gICAgICAgdGhpcy5tZXNzdW5naWQgPTNEIG1lc3N1bmdpZDsKLSAg
ICB9Ci0KLSAgICAgQElkCi0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNRVNTVU5HSUQiLCB1bmlx
dWU9M0R0cnVlLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249Cj0zRDExLCBzY2FsZT0zRDAp
Ci0gICAgcHVibGljIGxvbmcgZ2V0TWVzc3VuZ2lkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5t
ZXNzdW5naWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWVzc3VuZ2lkKGxvbmcgbWVz
c3VuZ2lkKSB7Ci0gICAgICAgIHRoaXMubWVzc3VuZ2lkID0zRCBtZXNzdW5naWQ7Ci0gICAgfQot
fQpkaWZmIC1yIDg5ZGNhYWUwODAxYyAtciA2YTRiZGNjY2ZhNGQgYmFja2VuZC9zcmMvbWFpbi9q
YXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMvcml2ZXIvc2VkZGIvbW9kZWwvVG1wTWVzR2NoYW5nZWQu
amF2YQotLS0gYS9iYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIv
c2VkZGIvbW9kZWwvVG1wTWVzR2NoYW49CmdlZC5qYXZhCVR1ZSBKYW4gMTYgMTg6MTM6NTQgMjAx
OCArMDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAt
MSw1MCArMCwwIEBACi0vKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVz
YW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQotICogU29mdHdhcmUgZW5naW5l
ZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0gKgotICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdh
cmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMpCi0gKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVU
RUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCi0gKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3
aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFpbHMuCi0gKi8KLQotcGFja2FnZSBvcmcu
ZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2RlbDsKLS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEy
IDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQuMC5DUjEKLQotCi1pbXBvcnQgamF2YXgu
cGVyc2lzdGVuY2UuQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKLWlt
cG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJs
ZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5VbmlxdWVDb25zdHJhaW50OwotCi0vKioKLSAq
IFRtcE1lc0djaGFuZ2VkIGdlbmVyYXRlZCBieSBoYm0yamF2YQotICovCi1ARW50aXR5Ci1AVGFi
bGUobmFtZT0zRCJUTVBfTUVTX0dDSEFOR0VEIgotICAgICxzY2hlbWE9M0QiU0VEREIiCi0gICAg
LCB1bmlxdWVDb25zdHJhaW50cyA9M0QgQFVuaXF1ZUNvbnN0cmFpbnQoY29sdW1uTmFtZXM9M0Qi
TUVTU1VOR0lEIikKLSkKLXB1YmxpYyBjbGFzcyBUbXBNZXNHY2hhbmdlZCAgaW1wbGVtZW50cyBq
YXZhLmlvLlNlcmlhbGl6YWJsZSB7Ci0KLQotICAgICBwcml2YXRlIGxvbmcgbWVzc3VuZ2lkOwot
Ci0gICAgcHVibGljIFRtcE1lc0djaGFuZ2VkKCkgewotICAgIH0KLQotICAgIHB1YmxpYyBUbXBN
ZXNHY2hhbmdlZChsb25nIG1lc3N1bmdpZCkgewotICAgICAgIHRoaXMubWVzc3VuZ2lkID0zRCBt
ZXNzdW5naWQ7Ci0gICAgfQotCi0gICAgIEBJZAotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUVT
U1VOR0lEIiwgdW5pcXVlPTNEdHJ1ZSwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPQo9M0Qx
MSwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBsb25nIGdldE1lc3N1bmdpZCgpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMubWVzc3VuZ2lkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1lc3N1
bmdpZChsb25nIG1lc3N1bmdpZCkgewotICAgICAgICB0aGlzLm1lc3N1bmdpZCA9M0QgbWVzc3Vu
Z2lkOwotICAgIH0KLX0KZGlmZiAtciA4OWRjYWFlMDgwMWMgLXIgNmE0YmRjY2NmYTRkIGJhY2tl
bmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50PQpzL3JpdmVyL3NlZGRiL21vZGVsL1Rt
cE1lc1FjaGFuZ2VkLmphdmEKLS0tIGEvYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVs
ZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVsL1RtcE1lc1FjaGFuPQpnZWQuamF2YQlUdWUgSmFuIDE2
IDE4OjEzOjU0IDIwMTggKzAxMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5
NzAgKzAwMDAKQEAgLTEsNTAgKzAsMCBAQAotLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAy
MDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNv
ZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoKLSAqIFRoaXMgZmlsZSBp
cyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKQotICogYW5kIGNvbWVz
IHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQotICogZG9jdW1lbnRh
dGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLgotICovCi0K
LXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMucml2ZXIuc2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0
ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0KLQot
aW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5j
ZS5FbnRpdHk7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7Ci1pbXBvcnQgamF2YXgucGVy
c2lzdGVuY2UuVGFibGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVW5pcXVlQ29uc3RyYWlu
dDsKLQotLyoqCi0gKiBUbXBNZXNRY2hhbmdlZCBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAqLwot
QEVudGl0eQotQFRhYmxlKG5hbWU9M0QiVE1QX01FU19RQ0hBTkdFRCIKLSAgICAsc2NoZW1hPTNE
IlNFRERCIgotICAgICwgdW5pcXVlQ29uc3RyYWludHMgPTNEIEBVbmlxdWVDb25zdHJhaW50KGNv
bHVtbk5hbWVzPTNEIk1FU1NVTkdJRCIpCi0pCi1wdWJsaWMgY2xhc3MgVG1wTWVzUWNoYW5nZWQg
IGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgewotCi0KLSAgICAgcHJpdmF0ZSBsb25n
IG1lc3N1bmdpZDsKLQotICAgIHB1YmxpYyBUbXBNZXNRY2hhbmdlZCgpIHsKLSAgICB9Ci0KLSAg
ICBwdWJsaWMgVG1wTWVzUWNoYW5nZWQobG9uZyBtZXNzdW5naWQpIHsKLSAgICAgICB0aGlzLm1l
c3N1bmdpZCA9M0QgbWVzc3VuZ2lkOwotICAgIH0KLQotICAgICBASWQKLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIk1FU1NVTkdJRCIsIHVuaXF1ZT0zRHRydWUsIG51bGxhYmxlPTNEZmFsc2UsIHBy
ZWNpc2lvbj0KPTNEMTEsIHNjYWxlPTNEMCkKLSAgICBwdWJsaWMgbG9uZyBnZXRNZXNzdW5naWQo
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1lc3N1bmdpZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRNZXNzdW5naWQobG9uZyBtZXNzdW5naWQpIHsKLSAgICAgICAgdGhpcy5tZXNzdW5n
aWQgPTNEIG1lc3N1bmdpZDsKLSAgICB9Ci19CmRpZmYgLXIgODlkY2FhZTA4MDFjIC1yIDZhNGJk
Y2NjZmE0ZCBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZlci9z
ZWRkYi9tb2RlbC9UbXBNZXNTY2hhbmdlZC5qYXZhCi0tLSBhL2JhY2tlbmQvc3JjL21haW4vamF2
YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZlci9zZWRkYi9tb2RlbC9UbXBNZXNTY2hhbj0KZ2VkLmph
dmEJVHVlIEphbiAxNiAxODoxMzo1NCAyMDE4ICswMTAwCisrKyAvZGV2L251bGwJVGh1IEphbiAw
MSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDUwICswLDAgQEAKLS8qIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJr
PQp1bmRlCi0gKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgKLSAqCi0g
KiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49M0R2MykK
LSAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUK
LSAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0
YWlscy4KLSAqLwotCi1wYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRiLm1vZGVs
OwotLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMu
NC4wLkNSMQotCi0KLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2
YXgucGVyc2lzdGVuY2UuRW50aXR5OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOwotaW1w
b3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlVu
aXF1ZUNvbnN0cmFpbnQ7Ci0KLS8qKgotICogVG1wTWVzU2NoYW5nZWQgZ2VuZXJhdGVkIGJ5IGhi
bTJqYXZhCi0gKi8KLUBFbnRpdHkKLUBUYWJsZShuYW1lPTNEIlRNUF9NRVNfU0NIQU5HRUQiCi0g
ICAgLHNjaGVtYT0zRCJTRUREQiIKLSAgICAsIHVuaXF1ZUNvbnN0cmFpbnRzID0zRCBAVW5pcXVl
Q29uc3RyYWludChjb2x1bW5OYW1lcz0zRCJNRVNTVU5HSUQiKQotKQotcHVibGljIGNsYXNzIFRt
cE1lc1NjaGFuZ2VkICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAg
IHByaXZhdGUgbG9uZyBtZXNzdW5naWQ7Ci0KLSAgICBwdWJsaWMgVG1wTWVzU2NoYW5nZWQoKSB7
Ci0gICAgfQotCi0gICAgcHVibGljIFRtcE1lc1NjaGFuZ2VkKGxvbmcgbWVzc3VuZ2lkKSB7Ci0g
ICAgICAgdGhpcy5tZXNzdW5naWQgPTNEIG1lc3N1bmdpZDsKLSAgICB9Ci0KLSAgICAgQElkCi0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJNRVNTVU5HSUQiLCB1bmlxdWU9M0R0cnVlLCBudWxsYWJs
ZT0zRGZhbHNlLCBwcmVjaXNpb249Cj0zRDExLCBzY2FsZT0zRDApCi0gICAgcHVibGljIGxvbmcg
Z2V0TWVzc3VuZ2lkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5tZXNzdW5naWQ7Ci0gICAgfQot
Ci0gICAgcHVibGljIHZvaWQgc2V0TWVzc3VuZ2lkKGxvbmcgbWVzc3VuZ2lkKSB7Ci0gICAgICAg
IHRoaXMubWVzc3VuZ2lkID0zRCBtZXNzdW5naWQ7Ci0gICAgfQotfQpkaWZmIC1yIDg5ZGNhYWUw
ODAxYyAtciA2YTRiZGNjY2ZhNGQgYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1l
bnQ9CnMvcml2ZXIvc2VkZGIvbW9kZWwvWnphcmNoaXYuamF2YQotLS0gYS9iYWNrZW5kL3NyYy9t
YWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvWnphcmNoaXYuamE9
CnZhCVR1ZSBKYW4gMTYgMTg6MTM6NTQgMjAxOCArMDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4g
MDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMDQgKzAsMCBAQAotLyogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nl
cms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoK
LSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYz
KQotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRo
ZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBk
ZXRhaWxzLgotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMucml2ZXIuc2VkZGIubW9k
ZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMg
My40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwotaW1wb3J0IGphdmEudXRp
bC5TZXQ7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOwotaW1wb3J0IGphdmF4LnBl
cnNpc3RlbmNlLkVudGl0eTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7Ci1p
bXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuT25l
VG9NYW55OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOwotCi0vKioKLSAqIFp6YXJj
aGl2IGdlbmVyYXRlZCBieSBoYm0yamF2YQotICovCi1ARW50aXR5Ci1AVGFibGUobmFtZT0zRCJa
WkFSQ0hJViIKLSAgICAsc2NoZW1hPTNEIlNFRERCIgotKQotcHVibGljIGNsYXNzIFp6YXJjaGl2
ICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAgIHByaXZhdGUgbG9u
ZyBhcmNoaXZpZDsKLSAgICAgcHJpdmF0ZSBTdHJpbmcgbmFtZTsKLSAgICAgcHJpdmF0ZSBib29s
ZWFuIGlzdGFrdGl2OwotICAgICBwcml2YXRlIFN0cmluZyBiZW1lcmt1bmc7Ci0gICAgIHByaXZh
dGUgU2V0PFNvaGx0ZXN0PiBzb2hsdGVzdHMgPTNEIG5ldyBIYXNoU2V0PFNvaGx0ZXN0PigwKTsK
LQotICAgIHB1YmxpYyBaemFyY2hpdigpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgWnphcmNoaXYo
bG9uZyBhcmNoaXZpZCwgU3RyaW5nIG5hbWUsIGJvb2xlYW4gaXN0YWt0aXYpIHsKLSAgICAgICAg
dGhpcy5hcmNoaXZpZCA9M0QgYXJjaGl2aWQ7Ci0gICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsK
LSAgICAgICAgdGhpcy5pc3Rha3RpdiA9M0QgaXN0YWt0aXY7Ci0gICAgfQotICAgIHB1YmxpYyBa
emFyY2hpdihsb25nIGFyY2hpdmlkLCBTdHJpbmcgbmFtZSwgYm9vbGVhbiBpc3Rha3RpdiwgU3Ry
aW5nIGI9CmVtZXJrdW5nLCBTZXQ8U29obHRlc3Q+IHNvaGx0ZXN0cykgewotICAgICAgIHRoaXMu
YXJjaGl2aWQgPTNEIGFyY2hpdmlkOwotICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKLSAgICAg
ICB0aGlzLmlzdGFrdGl2ID0zRCBpc3Rha3RpdjsKLSAgICAgICB0aGlzLmJlbWVya3VuZyA9M0Qg
YmVtZXJrdW5nOwotICAgICAgIHRoaXMuc29obHRlc3RzID0zRCBzb2hsdGVzdHM7Ci0gICAgfQot
Ci0gICAgIEBJZAotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQVJDSElWSUQiLCB1bmlxdWU9M0R0
cnVlLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249Cj0zRDExLCBzY2FsZT0zRDApCi0gICAg
cHVibGljIGxvbmcgZ2V0QXJjaGl2aWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmFyY2hpdmlk
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEFyY2hpdmlkKGxvbmcgYXJjaGl2aWQpIHsK
LSAgICAgICAgdGhpcy5hcmNoaXZpZCA9M0QgYXJjaGl2aWQ7Ci0gICAgfQotCi0KLSAgICBAQ29s
dW1uKG5hbWU9M0QiTkFNRSIsIG51bGxhYmxlPTNEZmFsc2UsIGxlbmd0aD0zRDUwKQotICAgIHB1
YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubmFtZTsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBuYW1lKSB7Ci0gICAgICAgIHRoaXMu
bmFtZSA9M0QgbmFtZTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJJU1RBS1RJViIs
IG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDEsIHNjYWxlPTNEMCkKLSAgICBwdWJsaWMg
Ym9vbGVhbiBpc0lzdGFrdGl2KCkgewotICAgICAgICByZXR1cm4gdGhpcy5pc3Rha3RpdjsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRJc3Rha3Rpdihib29sZWFuIGlzdGFrdGl2KSB7Ci0g
ICAgICAgIHRoaXMuaXN0YWt0aXYgPTNEIGlzdGFrdGl2OwotICAgIH0KLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIkJFTUVSS1VORyIsIGxlbmd0aD0zRDI0MCkKLSAgICBwdWJsaWMgU3RyaW5nIGdl
dEJlbWVya3VuZygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYmVtZXJrdW5nOwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldEJlbWVya3VuZyhTdHJpbmcgYmVtZXJrdW5nKSB7Ci0gICAgICAg
IHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7Ci0gICAgfQotCi1AT25lVG9NYW55KGZldGNo
PTNERmV0Y2hUeXBlLkxBWlksIG1hcHBlZEJ5PTNEInp6YXJjaGl2IikKLSAgICBwdWJsaWMgU2V0
PFNvaGx0ZXN0PiBnZXRTb2hsdGVzdHMoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnNvaGx0ZXN0
czsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTb2hsdGVzdHMoU2V0PFNvaGx0ZXN0PiBz
b2hsdGVzdHMpIHsKLSAgICAgICAgdGhpcy5zb2hsdGVzdHMgPTNEIHNvaGx0ZXN0czsKLSAgICB9
Ci19CmRpZmYgLXIgODlkY2FhZTA4MDFjIC1yIDZhNGJkY2NjZmE0ZCBiYWNrZW5kL3NyYy9tYWlu
L2phdmEvb3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZlci9zZWRkYi9tb2RlbC9aenByb2JlbmFobWVh
cnQuamF2YQotLS0gYS9iYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2
ZXIvc2VkZGIvbW9kZWwvWnpwcm9iZW5haG09CmVhcnQuamF2YQlUdWUgSmFuIDE2IDE4OjEzOjU0
IDIwMTggKzAxMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAK
QEAgLTEsMTE4ICswLDAgQEAKLS8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBC
dW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCi0gKiBTb2Z0d2FyZSBl
bmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgKLSAqCi0gKiBUaGlzIGZpbGUgaXMgRnJlZSBT
b2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49M0R2MykKLSAqIGFuZCBjb21lcyB3aXRoIEFC
U09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUKLSAqIGRvY3VtZW50YXRpb24gY29t
aW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy4KLSAqLwotCi1wYWNrYWdl
IG9yZy5kaXZlNGVsZW1lbnRzLnJpdmVyLnNlZGRiLm1vZGVsOwotLy8gR2VuZXJhdGVkIDE0LjA2
LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQotCi0KLWltcG9ydCBq
YXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotaW1wb3J0IGphdmF4LnBl
cnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7Ci1pbXBv
cnQgamF2YXgucGVyc2lzdGVuY2UuRmV0Y2hUeXBlOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNl
LklkOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk9uZVRvTWFueTsKLWltcG9ydCBqYXZheC5w
ZXJzaXN0ZW5jZS5UYWJsZTsKLQotLyoqCi0gKiBaenByb2JlbmFobWVhcnQgZ2VuZXJhdGVkIGJ5
IGhibTJqYXZhCi0gKi8KLUBFbnRpdHkKLUBUYWJsZShuYW1lPTNEIlpaUFJPQkVOQUhNRUFSVCIK
LSAgICAsc2NoZW1hPTNEIlNFRERCIgotKQotcHVibGljIGNsYXNzIFp6cHJvYmVuYWhtZWFydCAg
aW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7Ci0KLQotICAgICBwcml2YXRlIGxvbmcg
cHJvYmVuYWhtZWFydGlkOwotICAgICBwcml2YXRlIGJvb2xlYW4gaXN0a2VybjsKLSAgICAgcHJp
dmF0ZSBTdHJpbmcgbmFtZTsKLSAgICAgcHJpdmF0ZSBib29sZWFuIGlzdGFrdGl2OwotICAgICBw
cml2YXRlIFN0cmluZyBiZW1lcmt1bmc7Ci0gICAgIHByaXZhdGUgU2V0PFNvaGxwcm9iZT4gc29o
bHByb2JlcyA9M0QgbmV3IEhhc2hTZXQ8U29obHByb2JlPigwKTsKLQotICAgIHB1YmxpYyBaenBy
b2JlbmFobWVhcnQoKSB7Ci0gICAgfQotCi0KLSAgICBwdWJsaWMgWnpwcm9iZW5haG1lYXJ0KGxv
bmcgcHJvYmVuYWhtZWFydGlkLCBib29sZWFuIGlzdGtlcm4sIFN0cmluZyBuPQphbWUsIGJvb2xl
YW4gaXN0YWt0aXYpIHsKLSAgICAgICAgdGhpcy5wcm9iZW5haG1lYXJ0aWQgPTNEIHByb2JlbmFo
bWVhcnRpZDsKLSAgICAgICAgdGhpcy5pc3RrZXJuID0zRCBpc3RrZXJuOwotICAgICAgICB0aGlz
Lm5hbWUgPTNEIG5hbWU7Ci0gICAgICAgIHRoaXMuaXN0YWt0aXYgPTNEIGlzdGFrdGl2OwotICAg
IH0KLSAgICBwdWJsaWMgWnpwcm9iZW5haG1lYXJ0KGxvbmcgcHJvYmVuYWhtZWFydGlkLCBib29s
ZWFuIGlzdGtlcm4sIFN0cmluZyBuPQphbWUsIGJvb2xlYW4gaXN0YWt0aXYsIFN0cmluZyBiZW1l
cmt1bmcsIFNldDxTb2hscHJvYmU+IHNvaGxwcm9iZXMpIHsKLSAgICAgICB0aGlzLnByb2JlbmFo
bWVhcnRpZCA9M0QgcHJvYmVuYWhtZWFydGlkOwotICAgICAgIHRoaXMuaXN0a2VybiA9M0QgaXN0
a2VybjsKLSAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7Ci0gICAgICAgdGhpcy5pc3Rha3RpdiA9
M0QgaXN0YWt0aXY7Ci0gICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICAg
ICB0aGlzLnNvaGxwcm9iZXMgPTNEIHNvaGxwcm9iZXM7Ci0gICAgfQotCi0gICAgIEBJZAotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiUFJPQkVOQUhNRUFSVElEIiwgdW5pcXVlPTNEdHJ1ZSwgbnVs
bGFibGU9M0RmYWxzZSwgcHJlPQpjaXNpb249M0QxMSwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBs
b25nIGdldFByb2JlbmFobWVhcnRpZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucHJvYmVuYWht
ZWFydGlkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFByb2JlbmFobWVhcnRpZChsb25n
IHByb2JlbmFobWVhcnRpZCkgewotICAgICAgICB0aGlzLnByb2JlbmFobWVhcnRpZCA9M0QgcHJv
YmVuYWhtZWFydGlkOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIklTVEtFUk4iLCBu
dWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxLCBzY2FsZT0zRDApCi0gICAgcHVibGljIGJv
b2xlYW4gaXNJc3RrZXJuKCkgewotICAgICAgICByZXR1cm4gdGhpcy5pc3RrZXJuOwotICAgIH0K
LQotICAgIHB1YmxpYyB2b2lkIHNldElzdGtlcm4oYm9vbGVhbiBpc3RrZXJuKSB7Ci0gICAgICAg
IHRoaXMuaXN0a2VybiA9M0QgaXN0a2VybjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJOQU1FIiwgbnVsbGFibGU9M0RmYWxzZSwgbGVuZ3RoPTNENTApCi0gICAgcHVibGljIFN0cmlu
ZyBnZXROYW1lKCkgewotICAgICAgICByZXR1cm4gdGhpcy5uYW1lOwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpIHsKLSAgICAgICAgdGhpcy5uYW1lID0zRCBu
YW1lOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIklTVEFLVElWIiwgbnVsbGFibGU9
M0RmYWxzZSwgcHJlY2lzaW9uPTNEMSwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBib29sZWFuIGlz
SXN0YWt0aXYoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmlzdGFrdGl2OwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldElzdGFrdGl2KGJvb2xlYW4gaXN0YWt0aXYpIHsKLSAgICAgICAgdGhp
cy5pc3Rha3RpdiA9M0QgaXN0YWt0aXY7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0Qi
QkVNRVJLVU5HIiwgbGVuZ3RoPTNEMjQwKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0QmVtZXJrdW5n
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5iZW1lcmt1bmc7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0QmVtZXJrdW5nKFN0cmluZyBiZW1lcmt1bmcpIHsKLSAgICAgICAgdGhpcy5iZW1l
cmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICB9Ci0KLUBPbmVUb01hbnkoZmV0Y2g9M0RGZXRjaFR5
cGUuTEFaWSwgbWFwcGVkQnk9M0Qienpwcm9iZW5haG1lYXJ0IikKLSAgICBwdWJsaWMgU2V0PFNv
aGxwcm9iZT4gZ2V0U29obHByb2JlcygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc29obHByb2Jl
czsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTb2hscHJvYmVzKFNldDxTb2hscHJvYmU+
IHNvaGxwcm9iZXMpIHsKLSAgICAgICAgdGhpcy5zb2hscHJvYmVzID0zRCBzb2hscHJvYmVzOwot
ICAgIH0KLX0KZGlmZiAtciA4OWRjYWFlMDgwMWMgLXIgNmE0YmRjY2NmYTRkIGJhY2tlbmQvc3Jj
L21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50PQpzL3JpdmVyL3NlZGRiL21vZGVsL1p6c29uZGll
cnVuZ2FydC5qYXZhCi0tLSBhL2JhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50
cy9yaXZlci9zZWRkYi9tb2RlbC9aenNvbmRpZXJ1bj0KZ2FydC5qYXZhCVR1ZSBKYW4gMTYgMTg6
MTM6NTQgMjAxOCArMDEwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
MDAwMApAQCAtMSwxMDQgKzAsMCBAQAotLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEz
IGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3
YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBG
cmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKQotICogYW5kIGNvbWVzIHdp
dGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlv
biBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLgotICovCi0KLXBh
Y2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMucml2ZXIuc2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQg
MTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1w
b3J0IGphdmEudXRpbC5IYXNoU2V0OwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci1pbXBvcnQgamF2
YXgucGVyc2lzdGVuY2UuQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsK
LWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7Ci1pbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuSWQ7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuT25lVG9NYW55OwotaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLlRhYmxlOwotCi0vKioKLSAqIFp6c29uZGllcnVuZ2FydCBnZW5lcmF0
ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVudGl0eQotQFRhYmxlKG5hbWU9M0QiWlpTT05ESUVSVU5H
QVJUIgotICAgICxzY2hlbWE9M0QiU0VEREIiCi0pCi1wdWJsaWMgY2xhc3MgWnpzb25kaWVydW5n
YXJ0ICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAgIHByaXZhdGUg
bG9uZyBzb25kaWVydW5nYXJ0aWQ7Ci0gICAgIHByaXZhdGUgU3RyaW5nIG5hbWU7Ci0gICAgIHBy
aXZhdGUgYm9vbGVhbiBpc3Rha3RpdjsKLSAgICAgcHJpdmF0ZSBTdHJpbmcgYmVtZXJrdW5nOwot
ICAgICBwcml2YXRlIFNldDxTb2hsdGVzdD4gc29obHRlc3RzID0zRCBuZXcgSGFzaFNldDxTb2hs
dGVzdD4oMCk7Ci0KLSAgICBwdWJsaWMgWnpzb25kaWVydW5nYXJ0KCkgewotICAgIH0KLQotICAg
IHB1YmxpYyBaenNvbmRpZXJ1bmdhcnQobG9uZyBzb25kaWVydW5nYXJ0aWQsIFN0cmluZyBuYW1l
LCBib29sZWFuIGlzdGE9Cmt0aXYpIHsKLSAgICAgICAgdGhpcy5zb25kaWVydW5nYXJ0aWQgPTNE
IHNvbmRpZXJ1bmdhcnRpZDsKLSAgICAgICAgdGhpcy5uYW1lID0zRCBuYW1lOwotICAgICAgICB0
aGlzLmlzdGFrdGl2ID0zRCBpc3Rha3RpdjsKLSAgICB9Ci0gICAgcHVibGljIFp6c29uZGllcnVu
Z2FydChsb25nIHNvbmRpZXJ1bmdhcnRpZCwgU3RyaW5nIG5hbWUsIGJvb2xlYW4gaXN0YT0Ka3Rp
diwgU3RyaW5nIGJlbWVya3VuZywgU2V0PFNvaGx0ZXN0PiBzb2hsdGVzdHMpIHsKLSAgICAgICB0
aGlzLnNvbmRpZXJ1bmdhcnRpZCA9M0Qgc29uZGllcnVuZ2FydGlkOwotICAgICAgIHRoaXMubmFt
ZSA9M0QgbmFtZTsKLSAgICAgICB0aGlzLmlzdGFrdGl2ID0zRCBpc3Rha3RpdjsKLSAgICAgICB0
aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwotICAgICAgIHRoaXMuc29obHRlc3RzID0zRCBz
b2hsdGVzdHM7Ci0gICAgfQotCi0gICAgIEBJZAotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiU09O
RElFUlVOR0FSVElEIiwgdW5pcXVlPTNEdHJ1ZSwgbnVsbGFibGU9M0RmYWxzZSwgcHJlPQpjaXNp
b249M0QxMSwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBsb25nIGdldFNvbmRpZXJ1bmdhcnRpZCgp
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc29uZGllcnVuZ2FydGlkOwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldFNvbmRpZXJ1bmdhcnRpZChsb25nIHNvbmRpZXJ1bmdhcnRpZCkgewotICAg
ICAgICB0aGlzLnNvbmRpZXJ1bmdhcnRpZCA9M0Qgc29uZGllcnVuZ2FydGlkOwotICAgIH0KLQot
Ci0gICAgQENvbHVtbihuYW1lPTNEIk5BTUUiLCBudWxsYWJsZT0zRGZhbHNlLCBsZW5ndGg9M0Q1
MCkKLSAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm5h
bWU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkgewotICAg
ICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0Qi
SVNUQUtUSVYiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxLCBzY2FsZT0zRDApCi0g
ICAgcHVibGljIGJvb2xlYW4gaXNJc3Rha3RpdigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaXN0
YWt0aXY7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0SXN0YWt0aXYoYm9vbGVhbiBpc3Rh
a3RpdikgewotICAgICAgICB0aGlzLmlzdGFrdGl2ID0zRCBpc3Rha3RpdjsKLSAgICB9Ci0KLQot
ICAgIEBDb2x1bW4obmFtZT0zRCJCRU1FUktVTkciLCBsZW5ndGg9M0QyNDApCi0gICAgcHVibGlj
IFN0cmluZyBnZXRCZW1lcmt1bmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJlbWVya3VuZzsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRCZW1lcmt1bmcoU3RyaW5nIGJlbWVya3VuZykg
ewotICAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwotICAgIH0KLQotQE9uZVRv
TWFueShmZXRjaD0zREZldGNoVHlwZS5MQVpZLCBtYXBwZWRCeT0zRCJ6enNvbmRpZXJ1bmdhcnQi
KQotICAgIHB1YmxpYyBTZXQ8U29obHRlc3Q+IGdldFNvaGx0ZXN0cygpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuc29obHRlc3RzOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNvaGx0ZXN0
cyhTZXQ8U29obHRlc3Q+IHNvaGx0ZXN0cykgewotICAgICAgICB0aGlzLnNvaGx0ZXN0cyA9M0Qg
c29obHRlc3RzOwotICAgIH0KLX0KZGlmZiAtciA4OWRjYWFlMDgwMWMgLXIgNmE0YmRjY2NmYTRk
IGJhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50PQpzL3JpdmVyL3NlZGRiL21v
ZGVsL1p6dGhlbWEuamF2YQotLS0gYS9iYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxl
bWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvWnp0aGVtYS5qYXY9CmEJVHVlIEphbiAxNiAxODoxMzo1
NCAyMDE4ICswMTAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAw
CkBAIC0xLDExNiArMCwwIEBACi0vKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkg
QnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQotICogU29mdHdhcmUg
ZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0gKgotICogVGhpcyBmaWxlIGlzIEZyZWUg
U29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMpCi0gKiBhbmQgY29tZXMgd2l0aCBB
QlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCi0gKiBkb2N1bWVudGF0aW9uIGNv
bWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFpbHMuCi0gKi8KLQotcGFja2Fn
ZSBvcmcuZGl2ZTRlbGVtZW50cy5yaXZlci5zZWRkYi5tb2RlbDsKLS8vIEdlbmVyYXRlZCAxNC4w
Ni4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQuMC5DUjEKLQotCi1pbXBvcnQg
amF2YS51dGlsLkhhc2hTZXQ7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLWltcG9ydCBqYXZheC5w
ZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OwotaW1w
b3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5j
ZS5JZDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5PbmVUb01hbnk7Ci1pbXBvcnQgamF2YXgu
cGVyc2lzdGVuY2UuVGFibGU7Ci0KLS8qKgotICogWnp0aGVtYSBnZW5lcmF0ZWQgYnkgaGJtMmph
dmEKLSAqLwotQEVudGl0eQotQFRhYmxlKG5hbWU9M0QiWlpUSEVNQSIKLSAgICAsc2NoZW1hPTNE
IlNFRERCIgotKQotcHVibGljIGNsYXNzIFp6dGhlbWEgIGltcGxlbWVudHMgamF2YS5pby5TZXJp
YWxpemFibGUgewotCi0KLSAgICAgcHJpdmF0ZSBsb25nIHRoZW1haWQ7Ci0gICAgIHByaXZhdGUg
U3RyaW5nIG5hbWU7Ci0gICAgIHByaXZhdGUgYm9vbGVhbiBpc3Rha3RpdjsKLSAgICAgcHJpdmF0
ZSBTdHJpbmcgYmVtZXJrdW5nOwotICAgICBwcml2YXRlIFNldDxCaWxkPiBiaWxkcyA9M0QgbmV3
IEhhc2hTZXQ8QmlsZD4oMCk7Ci0gICAgIHByaXZhdGUgU2V0PFByb2JlYmlsZD4gcHJvYmViaWxk
cyA9M0QgbmV3IEhhc2hTZXQ8UHJvYmViaWxkPigwKTsKLQotICAgIHB1YmxpYyBaenRoZW1hKCkg
ewotICAgIH0KLQotCi0gICAgcHVibGljIFp6dGhlbWEobG9uZyB0aGVtYWlkLCBTdHJpbmcgbmFt
ZSwgYm9vbGVhbiBpc3Rha3RpdikgewotICAgICAgICB0aGlzLnRoZW1haWQgPTNEIHRoZW1haWQ7
Ci0gICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKLSAgICAgICAgdGhpcy5pc3Rha3RpdiA9M0Qg
aXN0YWt0aXY7Ci0gICAgfQotICAgIHB1YmxpYyBaenRoZW1hKGxvbmcgdGhlbWFpZCwgU3RyaW5n
IG5hbWUsIGJvb2xlYW4gaXN0YWt0aXYsIFN0cmluZyBiZW09CmVya3VuZywgU2V0PEJpbGQ+IGJp
bGRzLCBTZXQ8UHJvYmViaWxkPiBwcm9iZWJpbGRzKSB7Ci0gICAgICAgdGhpcy50aGVtYWlkID0z
RCB0aGVtYWlkOwotICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKLSAgICAgICB0aGlzLmlzdGFr
dGl2ID0zRCBpc3Rha3RpdjsKLSAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwot
ICAgICAgIHRoaXMuYmlsZHMgPTNEIGJpbGRzOwotICAgICAgIHRoaXMucHJvYmViaWxkcyA9M0Qg
cHJvYmViaWxkczsKLSAgICB9Ci0KLSAgICAgQElkCi0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJU
SEVNQUlEIiwgdW5pcXVlPTNEdHJ1ZSwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPQo9M0Qx
MSwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBsb25nIGdldFRoZW1haWQoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLnRoZW1haWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VGhlbWFpZChs
b25nIHRoZW1haWQpIHsKLSAgICAgICAgdGhpcy50aGVtYWlkID0zRCB0aGVtYWlkOwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIk5BTUUiLCBudWxsYWJsZT0zRGZhbHNlLCBsZW5ndGg9
M0Q1MCkKLSAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
Lm5hbWU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkgewot
ICAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiSVNUQUtUSVYiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxLCBzY2FsZT0zRDAp
Ci0gICAgcHVibGljIGJvb2xlYW4gaXNJc3Rha3RpdigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
aXN0YWt0aXY7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0SXN0YWt0aXYoYm9vbGVhbiBp
c3Rha3RpdikgewotICAgICAgICB0aGlzLmlzdGFrdGl2ID0zRCBpc3Rha3RpdjsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJCRU1FUktVTkciLCBsZW5ndGg9M0QyNDApCi0gICAgcHVi
bGljIFN0cmluZyBnZXRCZW1lcmt1bmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJlbWVya3Vu
ZzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRCZW1lcmt1bmcoU3RyaW5nIGJlbWVya3Vu
ZykgewotICAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwotICAgIH0KLQotQE9u
ZVRvTWFueShmZXRjaD0zREZldGNoVHlwZS5MQVpZLCBtYXBwZWRCeT0zRCJ6enRoZW1hIikKLSAg
ICBwdWJsaWMgU2V0PEJpbGQ+IGdldEJpbGRzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5iaWxk
czsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRCaWxkcyhTZXQ8QmlsZD4gYmlsZHMpIHsK
LSAgICAgICAgdGhpcy5iaWxkcyA9M0QgYmlsZHM7Ci0gICAgfQotCi1AT25lVG9NYW55KGZldGNo
PTNERmV0Y2hUeXBlLkxBWlksIG1hcHBlZEJ5PTNEInp6dGhlbWEiKQotICAgIHB1YmxpYyBTZXQ8
UHJvYmViaWxkPiBnZXRQcm9iZWJpbGRzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5wcm9iZWJp
bGRzOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFByb2JlYmlsZHMoU2V0PFByb2JlYmls
ZD4gcHJvYmViaWxkcykgewotICAgICAgICB0aGlzLnByb2JlYmlsZHMgPTNEIHByb2JlYmlsZHM7
Ci0gICAgfQotfQo
More information about the Dive4Elements-commits
mailing list