[mono/monodevelop] [29 commits] e62279dd: Remove the BUILD_REVISION check and the ENABLE_RAYGUN constant.

"Jeremie Laval ([email protected])" <[email protected]> Tue, 19 Nov 2013 21:43:11 +0000
Newsgroups gmane.comp.gnome.mono.patches
Message-ID <0000014272512a41-486f29f7-374b-4157-9d79-57edf4f1a5b0-000000@email.amazonses.com>
DQogICBCcmFuY2g6IHJlZnMvaGVhZHMvbW9ub2RldmVsb3AtNC4zLjAtYnJhbmNoDQogICAgIEhv
bWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wDQogIENvbXBhcmU6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbXBhcmUvYzExNmZmNGRmM2Y1Li4uOGM0
MDk2MWY5YTA4DQoNCiAgIENvbW1pdDogZTYyMjc5ZGQzM2MwZTQ0YTU1ZjUwNDhkNWZjN2MwMjAy
NDY1YjQ2Mg0KICAgQXV0aG9yOiBDb2R5IFJ1c3NlbGwgPGNvZHlAamh1LmVkdT4gKGJyYXRzY2hl
KQ0KICAgICBEYXRlOiAyMDEzLTExLTE1IDE4OjU5OjI5IEdNVA0KICAgICAgVVJMOiBodHRwczov
L2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvZTYyMjc5ZGQzM2MwZTQ0YTU1ZjUw
NDhkNWZjN2MwMjAyNDY1YjQ2Mg0KDQpSZW1vdmUgdGhlIEJVSUxEX1JFVklTSU9OIGNoZWNrIGFu
ZCB0aGUgRU5BQkxFX1JBWUdVTiBjb25zdGFudC4NCg0KQ2hhbmdlZCBwYXRoczoKICBNIG1haW4v
c3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3JlLmNzcHJvagogIE0gbWFp
bi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9wLkNvcmUvTG9nZ2luZ1NlcnZp
Y2UuY3MKDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZl
bG9wLkNvcmUuY3Nwcm9qDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMTIsOSArMTIsNiBAQAogICAgIDxCdWls
ZEluZm8+Li5cLi5cLi5cYnVpbGRcYmluXGJ1aWxkaW5mbzwvQnVpbGRJbmZvPgogICAgIDxWY1Jl
dmlzaW9uPi4uXC4uXC4uXHZjcmV2aXNpb248L1ZjUmV2aXNpb24+CiAgIDwvUHJvcGVydHlHcm91
cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChCVUlMRF9SRVZJU0lPTiknICE9ICcn
Ij4KLSAgICAgIDxEZWZpbmVDb25zdGFudHM+JChEZWZpbmVDb25zdGFudHMpO0VOQUJMRV9SQVlH
VU48L0RlZmluZUNvbnN0YW50cz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8Q2hvb3NlPgogICAg
IDxXaGVuIENvbmRpdGlvbj0iIEV4aXN0cygnYzpcUHJvZ3JhbSBGaWxlc1xHaXRcYmluXGdpdC5l
eGUnKSAiPgogICAgICAgPFByb3BlcnR5R3JvdXA+DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3Jl
L01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuQ29yZS9Mb2dnaW5nU2VydmljZS5jcw0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KQEAgLTEwMSwxMiArMTAxLDEwIEBAIHN0YXRpYyBMb2dnaW5nU2VydmljZSAoKQog
CiAJCQl0aW1lc3RhbXAgPSBEYXRlVGltZS5Ob3c7CiAKLSNpZiBFTkFCTEVfUkFZR1VOCiAJCQlz
dHJpbmcgcmF5Z3VuS2V5ID0gQnJhbmRpbmdTZXJ2aWNlLkdldFN0cmluZyAoIlJheWd1bkFwaUtl
eSIpOwogCQkJaWYgKHJheWd1bktleSAhPSBudWxsKSB7CiAJCQkJcmF5Z3VuQ2xpZW50ID0gbmV3
IFJheWd1bkNsaWVudCAocmF5Z3VuS2V5KTsKIAkJCX0KLSNlbmRpZgogCiAJCQkvL3JlbW92ZSB0
aGUgZGVmYXVsdCB0cmFjZSBsaXN0ZW5lciBvbiAuTkVULCBpdCB0aHJvd3MgdXAgaG9ycmlibGUg
ZGlhbG9nIGJveGVzIGZvciBhc3NlcnRzCiAJCQlTeXN0ZW0uRGlhZ25vc3RpY3MuRGVidWcuTGlz
dGVuZXJzLkNsZWFyICgpOw0KDQogICBDb21taXQ6IDMzNjgzOWNmNzMwNDkxODZkZTZlYzFkODUw
NzBiNDZjNGM5NWNkMDYNCiAgIEF1dGhvcjogQ29keSBSdXNzZWxsIDxjb2R5QGpodS5lZHU+IChi
cmF0c2NoZSkNCiAgICAgRGF0ZTogMjAxMy0xMS0xNSAxOToxNDoxMCBHTVQNCiAgICAgIFVSTDog
aHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzMzNjgzOWNmNzMwNDkx
ODZkZTZlYzFkODUwNzBiNDZjNGM5NWNkMDYNCg0KUHV0IHRoZSBCVUlMRF9SRVZJU0lPTiBjaGVj
a2luZyBiYWNrIGluLCBidXQgaW4gdGhlIHJpZ2h0IHBsYWNlLiBJdCB3YXMgYmVpbmcgb3Zlcndy
aXR0ZW4gYnkgbGF0ZXIgUHJvcGVydHlHcm91cHMgYmVmb3JlLg0KDQpDaGFuZ2VkIHBhdGhzOgog
IE0gbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9wLkNvcmUuY3Nwcm9q
CiAgTSBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuQ29yZS9Mb2dn
aW5nU2VydmljZS5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUv
TW9ub0RldmVsb3AuQ29yZS5jc3Byb2oNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC02OCw2ICs2OCw5IEBACiAg
ICAgPEdlbmVyYXRlRG9jdW1lbnRhdGlvbj50cnVlPC9HZW5lcmF0ZURvY3VtZW50YXRpb24+CiAg
ICAgPE5vV2Fybj4xNTkxOzE1NzM8L05vV2Fybj4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJv
cGVydHlHcm91cCBDb25kaXRpb249IickKEJVSUxEX1JFVklTSU9OKScgIT0gJyciPgorICAgIDxE
ZWZpbmVDb25zdGFudHM+JChEZWZpbmVDb25zdGFudHMpO0VOQUJMRV9SQVlHVU48L0RlZmluZUNv
bnN0YW50cz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxSZWZlcmVu
Y2UgSW5jbHVkZT0iU3lzdGVtIiAvPgogICAgIDxSZWZlcmVuY2UgSW5jbHVkZT0iTW9uby5Qb3Np
eCIgLz4NCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2
ZWxvcC5Db3JlL0xvZ2dpbmdTZXJ2aWNlLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMTAxLDEwICsxMDEs
MTIgQEAgc3RhdGljIExvZ2dpbmdTZXJ2aWNlICgpCiAKIAkJCXRpbWVzdGFtcCA9IERhdGVUaW1l
Lk5vdzsKIAorI2lmIEVOQUJMRV9SQVlHVU4KIAkJCXN0cmluZyByYXlndW5LZXkgPSBCcmFuZGlu
Z1NlcnZpY2UuR2V0U3RyaW5nICgiUmF5Z3VuQXBpS2V5Iik7CiAJCQlpZiAocmF5Z3VuS2V5ICE9
IG51bGwpIHsKIAkJCQlyYXlndW5DbGllbnQgPSBuZXcgUmF5Z3VuQ2xpZW50IChyYXlndW5LZXkp
OwogCQkJfQorI2VuZGlmCiAKIAkJCS8vcmVtb3ZlIHRoZSBkZWZhdWx0IHRyYWNlIGxpc3RlbmVy
IG9uIC5ORVQsIGl0IHRocm93cyB1cCBob3JyaWJsZSBkaWFsb2cgYm94ZXMgZm9yIGFzc2VydHMK
IAkJCVN5c3RlbS5EaWFnbm9zdGljcy5EZWJ1Zy5MaXN0ZW5lcnMuQ2xlYXIgKCk7DQoNCiAgIENv
bW1pdDogNTA5YWEwMTk3ZWFkOWQ0ZTRjMGQyNDM1ZmMxOTNjOTYxYTNlNDNhZQ0KICAgQXV0aG9y
OiBKZWZmcmV5IFN0ZWRmYXN0IDxqZWZmQHhhbWFyaW4uY29tPiAoanN0ZWRmYXN0KQ0KICAgICBE
YXRlOiAyMDEzLTExLTE1IDIwOjQzOjE0IEdNVA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1Yi5j
b20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvNTA5YWEwMTk3ZWFkOWQ0ZTRjMGQyNDM1ZmMxOTNj
OTYxYTNlNDNhZQ0KDQp1cGRhdGVkIGRlYnVnZ2VyLWxpYnMNCg0KQ2hhbmdlZCBwYXRoczoKICBN
IG1haW4vZXh0ZXJuYWwvZGVidWdnZXItbGlicwoNCk1vZGlmaWVkOiBtYWluL2V4dGVybmFsL2Rl
YnVnZ2VyLWxpYnMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xICsxIEBACi1TdWJwcm9qZWN0IGNvbW1pdCBm
NzQ5MWU1MzU3MDNiODM1MjQzMmZiNzYwZGRjMDQxNzQzZjkwMGMzCitTdWJwcm9qZWN0IGNvbW1p
dCBmMDRjYjUwNzBmYTM4YWNkYWZmNDZkMTQxNmE3ZDQxZGE1YmI1NzhkDQoNCiAgIENvbW1pdDog
NDdiYzJkZTA1ZjNiMGJjYmNmZGUxMzMzNTFjMTExOTQ2Y2RkODU4ZQ0KICAgQXV0aG9yOiBKZWZm
cmV5IFN0ZWRmYXN0IDxqZWZmQHhhbWFyaW4uY29tPiAoanN0ZWRmYXN0KQ0KICAgICBEYXRlOiAy
MDEzLTExLTE1IDIxOjI4OjM3IEdNVA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbW9u
by9tb25vZGV2ZWxvcC9jb21taXQvNDdiYzJkZTA1ZjNiMGJjYmNmZGUxMzMzNTFjMTExOTQ2Y2Rk
ODU4ZQ0KDQpmaXhlZCB0aGUgYnVpbGQNCg0KQ2hhbmdlZCBwYXRoczoKICBNIG1haW4vZXh0ZXJu
YWwvZGVidWdnZXItbGlicwoNCk1vZGlmaWVkOiBtYWluL2V4dGVybmFsL2RlYnVnZ2VyLWxpYnMN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCkBAIC0xICsxIEBACi1TdWJwcm9qZWN0IGNvbW1pdCBmMDRjYjUwNzBmYTM4
YWNkYWZmNDZkMTQxNmE3ZDQxZGE1YmI1NzhkCitTdWJwcm9qZWN0IGNvbW1pdCAzNDU5NTAyNGYw
MDcyYzFjZmM1YjFkZGUxZDE5NGQwZGNjNWMxMWZiDQoNCiAgIENvbW1pdDogNWJiY2MwMzUxZGEx
ZjRmNDQ2NzUwZjM5NTdhM2M1MjFiZjRiNzNlZQ0KICAgQXV0aG9yOiBDb2R5IFJ1c3NlbGwgPGNv
ZHlAamh1LmVkdT4gKGJyYXRzY2hlKQ0KICAgICBEYXRlOiAyMDEzLTExLTE2IDAzOjIyOjQ0IEdN
VA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQv
NWJiY2MwMzUxZGExZjRmNDQ2NzUwZjM5NTdhM2M1MjFiZjRiNzNlZQ0KDQpbQ29yZV0gUmVtb3Zl
IHRoZSBvbGQsIHByZS1SYXlndW4gbG9nIHVwbG9hZGluZy4NCg0KQ2hhbmdlZCBwYXRoczoKICBN
IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3JlL0xvZ2dpbmdT
ZXJ2aWNlLmNzCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25v
RGV2ZWxvcC5Db3JlL0xvZ2dpbmdTZXJ2aWNlLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMTgxLDIwICsx
ODEsNiBAQCBpbnRlcm5hbCBzdGF0aWMgdm9pZCBSZXBvcnRVbmhhbmRsZWRFeGNlcHRpb24gKEV4
Y2VwdGlvbiBleCwgYm9vbCB3aWxsU2h1dERvd24sCiAJCQkJaWYgKFJlcG9ydENyYXNoZXMuSGFz
VmFsdWUgJiYgIVJlcG9ydENyYXNoZXMuVmFsdWUpCiAJCQkJCXJldHVybjsKIAotCQkJCWJ5dGVb
XSBkYXRhOwotCQkJCXVzaW5nICh2YXIgc3RyZWFtID0gbmV3IE1lbW9yeVN0cmVhbSAoKSkgewot
CQkJCQl1c2luZyAodmFyIHdyaXRlciA9IFN5c3RlbS5YbWwuWG1sV3JpdGVyLkNyZWF0ZSAoc3Ry
ZWFtKSkgewotCQkJCQkJd3JpdGVyLldyaXRlU3RhcnRFbGVtZW50ICgiQ3Jhc2hMb2ciKTsKLQkJ
CQkJCXdyaXRlci5Xcml0ZUF0dHJpYnV0ZVN0cmluZyAoInZlcnNpb24iLCBTZXJ2aWNlVmVyc2lv
bik7Ci0KLQkJCQkJCXdyaXRlci5Xcml0ZUVsZW1lbnRTdHJpbmcgKCJTeXN0ZW1JbmZvcm1hdGlv
biIsIFN5c3RlbUluZm9ybWF0aW9uLkdldFRleHREZXNjcmlwdGlvbiAoKSk7Ci0JCQkJCQl3cml0
ZXIuV3JpdGVFbGVtZW50U3RyaW5nICgiRXhjZXB0aW9uIiwgZXguVG9TdHJpbmcgKCkpOwotCi0J
CQkJCQl3cml0ZXIuV3JpdGVFbmRFbGVtZW50ICgpOwotCQkJCQl9Ci0JCQkJCWRhdGEgPSBzdHJl
YW0uVG9BcnJheSAoKTsKLQkJCQl9Ci0KIAkJCQl2YXIgY3VzdG9tRGF0YSA9IG5ldyBIYXNodGFi
bGUgKCk7CiAJCQkJY3VzdG9tRGF0YVsiU3lzdGVtSW5mb3JtYXRpb24iXSA9IFN5c3RlbUluZm9y
bWF0aW9uLkdldFRleHREZXNjcmlwdGlvbiAoKTsKIApAQCAtMjA0LDE3ICsxOTAsNiBAQCBpbnRl
cm5hbCBzdGF0aWMgdm9pZCBSZXBvcnRVbmhhbmRsZWRFeGNlcHRpb24gKEV4Y2VwdGlvbiBleCwg
Ym9vbCB3aWxsU2h1dERvd24sCiAJCQkJCX0pOwogCQkJCX0KIAotCQkJCS8vIExvZyB0byBkaXNr
IG9ubHkgaWYgdXBsb2FkaW5nIGZhaWxzLgotCQkJCXZhciBmaWxlbmFtZSA9IHN0cmluZy5Gb3Jt
YXQgKCJ7MH0uezF9LnsyfS5jcmFzaGxvZyIsIERhdGVUaW1lLlV0Y05vdy5Ub1N0cmluZyAoInl5
eXktTU0tZGRfX0hILW1tLXNzIiksIFN5c3RlbUluZm9ybWF0aW9uLlNlc3Npb25VdWlkLCBJbnRl
cmxvY2tlZC5JbmNyZW1lbnQgKHJlZiBDcmFzaElkKSk7Ci0JCQkJVGhyZWFkUG9vbC5RdWV1ZVVz
ZXJXb3JrSXRlbSAoZGVsZWdhdGUgewotCQkJCQlpZiAoIVRyeVVwbG9hZFJlcG9ydCAoZmlsZW5h
bWUsIGRhdGEpKSB7Ci0JCQkJCQlpZiAoIURpcmVjdG9yeS5FeGlzdHMgKENyYXNoTG9nRGlyZWN0
b3J5KSkKLQkJCQkJCQlEaXJlY3RvcnkuQ3JlYXRlRGlyZWN0b3J5IChDcmFzaExvZ0RpcmVjdG9y
eSk7Ci0KLQkJCQkJCUZpbGUuV3JpdGVBbGxCeXRlcyAoQ3Jhc2hMb2dEaXJlY3RvcnkuQ29tYmlu
ZSAoZmlsZW5hbWUpLCBkYXRhKTsKLQkJCQkJfQotCQkJCX0pOwotCiAJCQkJLy9lbnN1cmUgd2Ug
ZG9uJ3QgbG9zZSB0aGUgc2V0dGluZwogCQkJCWlmIChSZXBvcnRDcmFzaGVzICE9IG9sZFJlcG9y
dENyYXNoZXMpIHsKIAkJCQkJUHJvcGVydHlTZXJ2aWNlLlNhdmVQcm9wZXJ0aWVzICgpOw0KDQog
ICBDb21taXQ6IDYyZmUwYTA5ZmYxYjgyYmYzZDVkNzBjMWU1OWU4ZTNjYjE2YjMxNzcNCiAgIEF1
dGhvcjogTWlrZSBLcsO8Z2VyIDxta3J1ZWdlckB4YW1hcmluLmNvbT4gKG1rcnVlZ2VyKQ0KICAg
ICBEYXRlOiAyMDEzLTExLTE2IDA2OjA2OjQ1IEdNVA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1
Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvNjJmZTBhMDlmZjFiODJiZjNkNWQ3MGMxZTU5
ZThlM2NiMTZiMzE3Nw0KDQpGaXhlZCAnQnVnIDE2MjY4IC0gVHlwZSBzeXN0ZW0gZXhjZXB0aW9u
cyBpbiB0aGUgbG9nJy4NCg0KQ2hhbmdlZCBwYXRoczoKICBNIG1haW4vc3JjL2NvcmUvTW9ub0Rl
dmVsb3AuSWRlL01vbm9EZXZlbG9wLklkZS5UeXBlU3lzdGVtL1R5cGVTeXN0ZW1TZXJ2aWNlLmNz
Cg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuSWRlL01vbm9EZXZlbG9wLklk
ZS5UeXBlU3lzdGVtL1R5cGVTeXN0ZW1TZXJ2aWNlLmNzDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMTEyOCwx
OSArMTEyOCwyNSBAQCBwdWJsaWMgdm9pZCBJbmZvcm1GaWxlQWRkZWQgKFBhcnNlZEZpbGVFdmVu
dEFyZ3MgZSkKIAogCQkJW05vblNlcmlhbGl6ZWRdCiAJCQlpbnQgbG9hZE9wZXJhdGlvbkRlcHRo
ID0gMDsKKwkJCVtOb25TZXJpYWxpemVkXQorCQkJcmVhZG9ubHkgb2JqZWN0IGxvYWRPcGVyYXRp
b25Mb2NrZXIgPSBuZXcgb2JqZWN0ICgpOwogCi0JCQlpbnRlcm5hbCBpbnQgTG9hZE9wZXJhdGlv
bkRlcHRoIHsKLQkJCQlnZXQgewotCQkJCQlyZXR1cm4gbG9hZE9wZXJhdGlvbkRlcHRoOwotCQkJ
CX0KLQkJCQlzZXQgewotCQkJCQlsb2FkT3BlcmF0aW9uRGVwdGggPSB2YWx1ZTsKLQkJCQkJaWYg
KGxvYWRPcGVyYXRpb25EZXB0aCA8IDApCi0JCQkJCQl0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlv
bkV4Y2VwdGlvbiAoKTsKLQkJCQkJT25Mb2FkIChFdmVudEFyZ3MuRW1wdHkpOworCQkJaW50ZXJu
YWwgdm9pZCBCZWdpbkxvYWRPcGVyYXRpb24gKCkKKwkJCXsKKwkJCQlsb2NrIChsb2FkT3BlcmF0
aW9uTG9ja2VyKSB7CisJCQkJCWxvYWRPcGVyYXRpb25EZXB0aCsrOwogCQkJCX0KIAkJCX0KIAor
CQkJaW50ZXJuYWwgdm9pZCBFbmRMb2FkT3BlcmF0aW9uICgpCisJCQl7CisJCQkJbG9jayAobG9h
ZE9wZXJhdGlvbkxvY2tlcikgeworCQkJCQlpZiAobG9hZE9wZXJhdGlvbkRlcHRoID4gMCkgewor
CQkJCQkJbG9hZE9wZXJhdGlvbkRlcHRoLS07CisJCQkJCX0KKwkJCQl9CisJCQkJT25Mb2FkIChF
dmVudEFyZ3MuRW1wdHkpOworCQkJfQogCQkJYm9vbCBpbkxvYWQ7CiAJCQlwdWJsaWMgYm9vbCBJ
bkxvYWQgewogCQkJCWdldCB7CkBAIC0xMjY5LDcgKzEyNzUsNyBAQCBwdWJsaWMgTGF6eVByb2pl
Y3RMb2FkZXIgKFByb2plY3RDb250ZW50V3JhcHBlciB3cmFwcGVyKQogCQkJCQl0aGlzLndyYXBw
ZXIgPSB3cmFwcGVyOwogCQkJCQljb250ZXh0VGFzayA9IFRhc2suRmFjdG9yeS5TdGFydE5ldyAo
ZGVsZWdhdGUgewogCQkJCQkJdHJ5IHsKLQkJCQkJCQl0aGlzLndyYXBwZXIuTG9hZE9wZXJhdGlv
bkRlcHRoKys7CisJCQkJCQkJdGhpcy53cmFwcGVyLkJlZ2luTG9hZE9wZXJhdGlvbiAoKTsKIAkJ
CQkJCQl2YXIgcCA9IHRoaXMud3JhcHBlci5Qcm9qZWN0OwogCQkJCQkJCXZhciBjb250ZXh0ID0g
TG9hZFByb2plY3RDYWNoZSAocCk7CiAKQEAgLTEyODgsNyArMTI5NCw3IEBAIHB1YmxpYyBMYXp5
UHJvamVjdExvYWRlciAoUHJvamVjdENvbnRlbnRXcmFwcGVyIHdyYXBwZXIpCiAJCQkJCQkJUXVl
dWVQYXJzZUpvYiAodGhpcy53cmFwcGVyKTsKIAkJCQkJCQlyZXR1cm4gY29udGV4dDsKIAkJCQkJ
CX0gZmluYWxseSB7Ci0JCQkJCQkJdGhpcy53cmFwcGVyLkxvYWRPcGVyYXRpb25EZXB0aC0tOwor
CQkJCQkJCXRoaXMud3JhcHBlci5FbmRMb2FkT3BlcmF0aW9uICgpOwogCQkJCQkJfQogCQkJCQl9
KTsKIAkJCQl9CkBAIC0yNTM3LDcgKzI1NDMsNyBAQCBwdWJsaWMgdm9pZCBSdW4gKElQcm9ncmVz
c01vbml0b3IgbW9uaXRvcikKIAkJCQlUeXBlU3lzdGVtUGFyc2VyIHBhcnNlciA9IG51bGw7CiAJ
CQkJdmFyIHRhZ3MgPSBDb250ZXh0LkdldEV4dGVuc2lvbk9iamVjdCA8UHJvamVjdENvbW1lbnRU
YWdzPiAoKTsKIAkJCQl0cnkgewotCQkJCQlDb250ZXh0LkxvYWRPcGVyYXRpb25EZXB0aCsrOwor
CQkJCQlDb250ZXh0LkJlZ2luTG9hZE9wZXJhdGlvbiAoKTsKIAkJCQkJZm9yZWFjaCAodmFyIGZp
bGUgaW4gKEZpbGVMaXN0ID8/IENvbnRleHQuUHJvamVjdC5GaWxlcykpIHsKIAkJCQkJCXZhciBm
aWxlTmFtZSA9IGZpbGUuRmlsZVBhdGg7CiAJCQkJCQlpZiAoZmlsZXNTa2lwcGVkSW5QYXJzZVRo
cmVhZC5BbnkgKGYgPT4gZiA9PSBmaWxlTmFtZSkpCkBAIC0yNTU4LDcgKzI1NjQsNyBAQCBwdWJs
aWMgdm9pZCBSdW4gKElQcm9ncmVzc01vbml0b3IgbW9uaXRvcikKIAkJCQkJCUNvbnRleHQuSW5m
b3JtRmlsZUFkZGVkIChuZXcgUGFyc2VkRmlsZUV2ZW50QXJncyAocGFyc2VkRG9jdW1lbnQuUGFy
c2VkRmlsZSkpOwogCQkJCQl9CiAJCQkJfSBmaW5hbGx5IHsKLQkJCQkJQ29udGV4dC5Mb2FkT3Bl
cmF0aW9uRGVwdGgtLTsKKwkJCQkJQ29udGV4dC5FbmRMb2FkT3BlcmF0aW9uICgpOwogCQkJCX0K
IAkJCX0KIAkJfQpAQCAtMjYxNCw3ICsyNjIwLDcgQEAgc3RhdGljIHZvaWQgUXVldWVQYXJzZUpv
YiAoUHJvamVjdENvbnRlbnRXcmFwcGVyIGNvbnRleHQsIElFbnVtZXJhYmxlPFByb2plY3RGaWwK
IAkJCX07CiAJCQlsb2NrIChwYXJzZVF1ZXVlTG9jaykgewogCQkJCVJlbW92ZVBhcnNlSm9iIChj
b250ZXh0KTsKLQkJCQljb250ZXh0LkxvYWRPcGVyYXRpb25EZXB0aCsrOworCQkJCWNvbnRleHQu
QmVnaW5Mb2FkT3BlcmF0aW9uICgpOwogCQkJCXBhcnNlUXVldWVJbmRleCBbY29udGV4dF0gPSBq
b2I7CiAJCQkJcGFyc2VRdWV1ZS5FbnF1ZXVlIChqb2IpOwogCQkJCXBhcnNlRXZlbnQuU2V0ICgp
OwpAQCAtMjY1Miw3ICsyNjU4LDcgQEAgc3RhdGljIHZvaWQgUmVtb3ZlUGFyc2VKb2IgKFByb2pl
Y3RDb250ZW50V3JhcHBlciBwcm9qZWN0KQogCQkJCVBhcnNpbmdKb2Igam9iOwogCQkJCWlmIChw
YXJzZVF1ZXVlSW5kZXguVHJ5R2V0VmFsdWUgKHByb2plY3QsIG91dCBqb2IpKSB7CiAJCQkJCXBh
cnNlUXVldWVJbmRleC5SZW1vdmUgKHByb2plY3QpOwotCQkJCQlwcm9qZWN0LkxvYWRPcGVyYXRp
b25EZXB0aC0tOworCQkJCQlwcm9qZWN0LkVuZExvYWRPcGVyYXRpb24gKCk7CiAJCQkJfQogCQkJ
fQogCQl9CkBAIC0yNzA1LDcgKzI3MTEsNyBAQCBzdGF0aWMgdm9pZCBDaGVja01vZGlmaWVkRmls
ZXMgKFByb2plY3QgcHJvamVjdCwgUHJvamVjdEZpbGVbXSBwcm9qZWN0RmlsZXMsIFBybwogCQl7
CiAJCQljb250ZW50LlJ1bldoZW5Mb2FkZWQgKGRlbGVnYXRlKElQcm9qZWN0Q29udGVudCBjbnQp
IHsKIAkJCQl0cnkgewotCQkJCQljb250ZW50LkxvYWRPcGVyYXRpb25EZXB0aCsrOworCQkJCQlj
b250ZW50LkJlZ2luTG9hZE9wZXJhdGlvbiAoKTsKIAkJCQkJdmFyIG1vZGlmaWVkRmlsZXMgPSBu
ZXcgTGlzdDxQcm9qZWN0RmlsZT4gKCk7CiAJCQkJCXZhciBvbGRGaWxlTmV3RmlsZSA9IG5ldyBM
aXN0PFR1cGxlPFByb2plY3RGaWxlLCBJVW5yZXNvbHZlZEZpbGU+PiAoKTsKIApAQCAtMjc0Nyw3
ICsyNzUzLDcgQEAgc3RhdGljIHZvaWQgQ2hlY2tNb2RpZmllZEZpbGVzIChQcm9qZWN0IHByb2pl
Y3QsIFByb2plY3RGaWxlW10gcHJvamVjdEZpbGVzLCBQcm8KIAkJCQl9IGNhdGNoIChFeGNlcHRp
b24gZSkgewogCQkJCQlMb2dnaW5nU2VydmljZS5Mb2dFcnJvciAoIkV4Y2VwdGlvbiBpbiBjaGVj
ayBtb2RpZmllZCBmaWxlcy4iLCBlKTsKIAkJCQl9IGZpbmFsbHkgewotCQkJCQljb250ZW50Lkxv
YWRPcGVyYXRpb25EZXB0aC0tOworCQkJCQljb250ZW50LkVuZExvYWRPcGVyYXRpb24gKCk7CiAJ
CQkJfQogCiAJCQl9KTsKQEAgLTI4MjAsNyArMjgyNiw3IEBAIHN0YXRpYyB2b2lkIENvbnN1bWVQ
YXJzaW5nUXVldWUgKCkKIAkJCQkJCQkJbW9uaXRvciA9IEdldFBhcnNlUHJvZ3Jlc3NNb25pdG9y
ICgpOwogCQkJCQkJCW1vbml0b3IuUmVwb3J0RXJyb3IgKG51bGwsIGV4KTsKIAkJCQkJCX0gZmlu
YWxseSB7Ci0JCQkJCQkJam9iLkNvbnRleHQuTG9hZE9wZXJhdGlvbkRlcHRoLS07CisJCQkJCQkJ
am9iLkNvbnRleHQuRW5kTG9hZE9wZXJhdGlvbiAoKTsKIAkJCQkJCX0KIAkJCQkJfQogCQkJCQkN
Cg0KICAgQ29tbWl0OiA4MzQ0M2Y2NjJlM2IxZWE2NGU4YjZhZmU4MWU4MjdhMDQ4YzFkZmQ3DQog
ICBBdXRob3I6IE1pa2UgS3LDvGdlciA8bWtydWVnZXJAeGFtYXJpbi5jb20+IChta3J1ZWdlcikN
CiAgICAgRGF0ZTogMjAxMy0xMS0xNiAwNjoyMzowMSBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9n
aXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzgzNDQzZjY2MmUzYjFlYTY0ZThiNmFm
ZTgxZTgyN2EwNDhjMWRmZDcNCg0KRml4ZWQgJ0J1ZyAxNjI4MyAtIFdyb25nIGxpdGVyYWwgc3Ry
aW5nIGFkZGl0aW9uJw0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9leHRlcm5hbC9ucmVmYWN0
b3J5CiAgTSBtYWluL3Rlc3RzL1VuaXRUZXN0cy9Nb25vRGV2ZWxvcC5DU2hhcnBCaW5kaW5nL09u
VGhlRmx5Rm9ybWF0dGVyVGVzdHMuY3MKDQpNb2RpZmllZDogbWFpbi9leHRlcm5hbC9ucmVmYWN0
b3J5DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQpAQCAtMSArMSBAQAotU3VicHJvamVjdCBjb21taXQgMjA0NGVhMzZk
M2NmODMxY2FjMWMwYzliZjZkZjBlZmRjZTAyMzBiMAorU3VicHJvamVjdCBjb21taXQgNDY3ZGQ3
NDgwMTllYWYwNDA0ODVkN2JmYjE2M2VhMDM4M2QyOGEzOA0KDQpNb2RpZmllZDogbWFpbi90ZXN0
cy9Vbml0VGVzdHMvTW9ub0RldmVsb3AuQ1NoYXJwQmluZGluZy9PblRoZUZseUZvcm1hdHRlclRl
c3RzLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQpAQCAtMjczLDYgKzI3MywyMSBAQCBwdWJsaWMgdm9pZCBUZXN0
QnVnMTYxNzRfVmlydHVhbEluZGVudCAoKQogCQkJCUNvbnNvbGUuV3JpdGVMaW5lIChuZXdUZXh0
KTsKIAkJCUFzc2VydC5BcmVFcXVhbCAoZXhwZWN0ZWQsIG5ld1RleHQpOwogCQl9CisKKworCQkv
Ly8gPHN1bW1hcnk+CisJCS8vLyBCdWcgMTYyODMgLSBXcm9uZyBsaXRlcmFsIHN0cmluZyBhZGRp
dGlvbgorCQkvLy8gPC9zdW1tYXJ5PgorCQlbVGVzdF0KKwkJcHVibGljIHZvaWQgVGVzdEJ1ZzE2
MjgzICgpCisJCXsKKwkJCVRlc3RWaWV3Q29udGVudCBjb250ZW50OworCQkJdmFyIGV4dCA9IFNl
dHVwICgiJFwiXFxkZXZcXG51bGwgezB9XCIiLCBvdXQgY29udGVudCk7CisJCQljb250ZW50Lkdl
dFRleHRFZGl0b3JEYXRhICgpLkluc2VydCAoMCwgIkAiKTsKKwkJCWV4dC5LZXlQcmVzcyAoKEdk
ay5LZXkpJ0AnLCAnQCcsIEdkay5Nb2RpZmllclR5cGUuTm9uZSk7CisJCQl2YXIgbmV3VGV4dCA9
IGNvbnRlbnQuVGV4dDsKKwkJCUFzc2VydC5BcmVFcXVhbCAoIkBcIlxcZGV2XG51bGwgezB9XCIi
LCBuZXdUZXh0KTsKKwkJfQogCX0KIH0KIA0KDQogICBDb21taXQ6IDVjZjc1NTE0ZjYxMTZmZWQx
ZTRhZGFkYWMwMmQ5YjJmMDllZTNiYTYNCiAgIEF1dGhvcjogTWlrZSBLcsO8Z2VyIDxta3J1ZWdl
ckB4YW1hcmluLmNvbT4gKG1rcnVlZ2VyKQ0KICAgICBEYXRlOiAyMDEzLTExLTE2IDA2OjI1OjIz
IEdNVA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21t
aXQvNWNmNzU1MTRmNjExNmZlZDFlNGFkYWRhYzAyZDliMmYwOWVlM2JhNg0KDQpGaXhlZCAnQnVn
IDE2MjgxIC0gRXJyb3IgY2xvc2luZyB0aGUgTW9ub0RldmVsb3AgcHJvamVjdCB1c2luZyA0LjIu
MCcuDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLklkZS9N
b25vRGV2ZWxvcC5JZGUuVHlwZVN5c3RlbS9UeXBlU3lzdGVtU2VydmljZS5jcwoNCk1vZGlmaWVk
OiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLklkZS9Nb25vRGV2ZWxvcC5JZGUuVHlwZVN5c3Rl
bS9UeXBlU3lzdGVtU2VydmljZS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTE3MzYsNyArMTczNiw4IEBA
IGludGVybmFsIHN0YXRpYyB2b2lkIFVubG9hZFByb2plY3QgKFByb2plY3QgcHJvamVjdCkKIAkJ
CQkKIAkJCVByb2plY3RDb250ZW50V3JhcHBlciB3cmFwcGVyOwogCQkJbG9jayAocHJvamVjdFdy
YXBwZXJVcGRhdGVMb2NrKSB7Ci0JCQkJd3JhcHBlciA9IHByb2plY3RDb250ZW50cyBbcHJvamVj
dF07CisJCQkJaWYgKCFwcm9qZWN0Q29udGVudHMuVHJ5R2V0VmFsdWUgKHByb2plY3QsIG91dCB3
cmFwcGVyKSkKKwkJCQkJcmV0dXJuOwogCQkJCXByb2plY3RDb250ZW50cy5SZW1vdmUgKHByb2pl
Y3QpOwogCQkJfQogCQkJU3RvcmVQcm9qZWN0Q2FjaGUgKHByb2plY3QsIHdyYXBwZXIpOw0KDQog
ICBDb21taXQ6IGZjZWFkNTc4OWU5NjI1NGNhYmM0N2M4ZWMxN2NiMWQ3YWM2MzU2OTgNCiAgIEF1
dGhvcjogU3RlcGhlbiBHcmVhbSA8c3RlcGhlbi5ncmVhbUBnbWFpbC5jb20+IChUaHJlZVRvZXMp
DQogICAgIERhdGU6IDIwMTMtMTEtMTYgMTU6MDM6MzEgR01UDQogICAgICBVUkw6IGh0dHBzOi8v
Z2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC9mY2VhZDU3ODllOTYyNTRjYWJjNDdj
OGVjMTdjYjFkN2FjNjM1Njk4DQoNCkZpeGVkIGEgYnVnIHdoZXJlIFhTUCB3b3VsZCBmYWlsIHRv
IGxhdW5jaCB3aGVuIHVzaW5nIC5ORVQgNCBjb25maWd1cmF0aW9uIG9uIFdpbmRvd3MuIFBhdGgg
Z2VuZXJhdG9yIHdvdWxkIGdlbmVyYXRlIHRoZSBjb3JyZWN0IHBhdGgsIGFuZCB0aGVuIHN3aXRj
aCBpdCBvdXQgZm9yIHRoZSA0LjUgbGlicmFyeSBwYXRoIGluc3RlYWQuIFhTUCBpc24ndCBwYWNr
YWdlZCBpbnRvIHRoYXQgZGlyZWN0b3J5IG9uIFdpbmRvd3MsIHNvIE1vbm9EZXZlbG9wIHdvdWxk
IHRocm93IGFuIGV4Y2VwdGlvbiB3aGVuIGl0IGNvdWxkbid0IGZpbmQgaXQNCg0KQ2hhbmdlZCBw
YXRoczoKICBNIG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5EZWJ1Z2dlci5Tb2Z0L01vbm9E
ZXZlbG9wLkRlYnVnZ2VyLlNvZnQuQXNwTmV0L0FzcE5ldFNvZnREZWJ1Z2dlckVuZ2luZS5jcwoN
Ck1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuRGVidWdnZXIuU29mdC9Nb25v
RGV2ZWxvcC5EZWJ1Z2dlci5Tb2Z0LkFzcE5ldC9Bc3BOZXRTb2Z0RGVidWdnZXJFbmdpbmUuY3MN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCkBAIC01Nyw3ICs1Nyw3IEBAIEZpbGVQYXRoIEdldEZ4RGlyIChNb25vVGFy
Z2V0UnVudGltZSBydW50aW1lLCBDbHJWZXJzaW9uIHZlcnNpb24pCiAJCQkJcmV0dXJuIHByZWZp
eC5Db21iaW5lICgibGliIiwgIm1vbm8iLCAiMi4wIik7CiAJCQljYXNlIENsclZlcnNpb24uTmV0
XzRfMDoKIAkJCQl2YXIgbmV0NDVQYXRoID0gcHJlZml4LkNvbWJpbmUgKCJsaWIiLCAibW9ubyIs
ICI0LjUiKTsKLQkJCQlpZiAoRGlyZWN0b3J5LkV4aXN0cyAobmV0NDVQYXRoKSkgcmV0dXJuIG5l
dDQ1UGF0aDsKKwkJCQlpZiAoRGlyZWN0b3J5LkV4aXN0cyAobmV0NDVQYXRoKSAmJiAhTW9ub0Rl
dmVsb3AuQ29yZS5QbGF0Zm9ybS5Jc1dpbmRvd3MpIHJldHVybiBuZXQ0NVBhdGg7CiAJCQkJcmV0
dXJuIHByZWZpeC5Db21iaW5lICgibGliIiwgIm1vbm8iLCAiNC4wIik7CiAJCQljYXNlIENsclZl
cnNpb24uTmV0XzRfNToKIAkJCQlyZXR1cm4gcHJlZml4LkNvbWJpbmUgKCJsaWIiLCAibW9ubyIs
ICI0LjUiKTsNCg0KICAgQ29tbWl0OiA5YjZkMDVlODljOTA2NjQ5NmUxY2ZiY2FhZDdjMTNjZGY4
YTVkNjFjDQogICBBdXRob3I6IEFsYW4gTWNHb3Zlcm4gPGFsYW4ubWNnb3Zlcm5AZ21haWwuY29t
PiAoYWxhbm1jZ292ZXJuKQ0KICAgICBEYXRlOiAyMDEzLTExLTE3IDE4OjAxOjA4IEdNVA0KICAg
ICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvOWI2ZDA1
ZTg5YzkwNjY0OTZlMWNmYmNhYWQ3YzEzY2RmOGE1ZDYxYw0KDQpNZXJnZSBwdWxsIHJlcXVlc3Qg
IzQzNyBmcm9tIFRocmVlVG9lcy9tYXN0ZXIKCkZpeGVkIGEgYnVnIHdoZXJlIFhTUCB3b3VsZCBm
YWlsIHRvIGxhdW5jaCB3aGVuIHVzaW5nIC5ORVQgNCBjb25maWd1cmF0aW9uDQoNCkNoYW5nZWQg
cGF0aHM6CiAgTSBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuRGVidWdnZXIuU29mdC9Nb25v
RGV2ZWxvcC5EZWJ1Z2dlci5Tb2Z0LkFzcE5ldC9Bc3BOZXRTb2Z0RGVidWdnZXJFbmdpbmUuY3MK
DQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLkRlYnVnZ2VyLlNvZnQvTW9u
b0RldmVsb3AuRGVidWdnZXIuU29mdC5Bc3BOZXQvQXNwTmV0U29mdERlYnVnZ2VyRW5naW5lLmNz
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQpAQCAtNTcsNyArNTcsNyBAQCBGaWxlUGF0aCBHZXRGeERpciAoTW9ub1Rh
cmdldFJ1bnRpbWUgcnVudGltZSwgQ2xyVmVyc2lvbiB2ZXJzaW9uKQogCQkJCXJldHVybiBwcmVm
aXguQ29tYmluZSAoImxpYiIsICJtb25vIiwgIjIuMCIpOwogCQkJY2FzZSBDbHJWZXJzaW9uLk5l
dF80XzA6CiAJCQkJdmFyIG5ldDQ1UGF0aCA9IHByZWZpeC5Db21iaW5lICgibGliIiwgIm1vbm8i
LCAiNC41Iik7Ci0JCQkJaWYgKERpcmVjdG9yeS5FeGlzdHMgKG5ldDQ1UGF0aCkpIHJldHVybiBu
ZXQ0NVBhdGg7CisJCQkJaWYgKERpcmVjdG9yeS5FeGlzdHMgKG5ldDQ1UGF0aCkgJiYgIU1vbm9E
ZXZlbG9wLkNvcmUuUGxhdGZvcm0uSXNXaW5kb3dzKSByZXR1cm4gbmV0NDVQYXRoOwogCQkJCXJl
dHVybiBwcmVmaXguQ29tYmluZSAoImxpYiIsICJtb25vIiwgIjQuMCIpOwogCQkJY2FzZSBDbHJW
ZXJzaW9uLk5ldF80XzU6CiAJCQkJcmV0dXJuIHByZWZpeC5Db21iaW5lICgibGliIiwgIm1vbm8i
LCAiNC41Iik7DQoNCiAgIENvbW1pdDogMDgwYTEzY2UwYjg1ZDQ3MjhkM2YyN2ZmNzcyMDQwZDlh
YTc1ZTVhYQ0KICAgQXV0aG9yOiBUaGVyem9rIDx0ZXJvbWFyaW9AeWFob28uY29tPiAoVGhlcnpv
aykNCiAgICAgRGF0ZTogMjAxMy0xMS0xNyAyMjo1NjoxNyBHTVQNCiAgICAgIFVSTDogaHR0cHM6
Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzA4MGExM2NlMGI4NWQ0NzI4ZDNm
MjdmZjc3MjA0MGQ5YWE3NWU1YWENCg0KW1ZlcnNpb25Db250cm9sXSBJbXBsZW1lbnRlZCBiYWNr
ZW5kIHNwZWNpZmljIHRlc3RzCgpJbmNsdWRlIGEgZml4dXAgZm9yIEdldFB1c2hEaWZmLg0KDQpD
aGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZl
bG9wLlZlcnNpb25Db250cm9sLkdpdC5UZXN0cy9CYXNlR2l0UmVwb3NpdG9yeVRlc3RzLmNzCiAg
TSBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRy
b2wuR2l0LlRlc3RzL0Jhc2VSZXBvc2l0b3J5VGVzdHMuY3MKICBNIG1haW4vc3JjL2FkZGlucy9W
ZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQvTW9ub0RldmVsb3Au
VmVyc2lvbkNvbnRyb2wuR2l0L0dpdFJlcG9zaXRvcnkuY3MKICBNIG1haW4vc3JjL2FkZGlucy9W
ZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLlRlc3Rz
L0Jhc2VTdm5SZXBvc2l0b3J5VGVzdHMuY3MKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29u
dHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLlRlc3RzL1JlcG9zaXRv
cnlUZXN0cy5jcwogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL1N1YnZlcnNpb24u
V2luMzIuVGVzdHMvUmVwb3NpdG9yeVRlc3RzLmNzCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlu
cy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQuVGVzdHMvQmFz
ZUdpdFJlcG9zaXRvcnlUZXN0cy5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTMyLDE0ICszMiwxNCBAQAog
dXNpbmcgTkdpdC5BcGk7DQogdXNpbmcgTlVuaXQuRnJhbWV3b3JrOw0KIHVzaW5nIFN5c3RlbS5J
TzsNCi11c2luZyBTeXN0ZW07DQogdXNpbmcgTkdpdC5TdG9yYWdlLkZpbGU7DQogdXNpbmcgTkdp
dC5SZXZ3YWxrOw0KK3VzaW5nIFN5c3RlbS5MaW5xOw0KIA0KIG5hbWVzcGFjZSBNb25vRGV2ZWxv
cC5WZXJzaW9uQ29udHJvbC5HaXQuVGVzdHMNCiB7DQogCVtUZXN0Rml4dHVyZV0NCi0JcHVibGlj
IGNsYXNzIEJhc2VHaXRVdGlsc1Rlc3QgOiBCYXNlUmVwb1V0aWxzVGVzdA0KKwlzZWFsZWQgY2xh
c3MgQmFzZUdpdFV0aWxzVGVzdCA6IEJhc2VSZXBvVXRpbHNUZXN0DQogCXsNCiAJCVtTZXRVcF0N
CiAJCXB1YmxpYyBvdmVycmlkZSB2b2lkIFNldHVwICgpDQpAQCAtMTYxLDYgKzE2MSwxODQgQEAg
cHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQgQmxhbWVFeHRyYUludGVybmFscyAoQW5ub3RhdGlvbiBb
XSBhbm5vdGF0aW9ucykKIAkJCUFzc2VydC5Jc1RydWUgKGFubm90YXRpb25zIFsyXS5IYXNEYXRl
KTsNCiAJCX0NCiANCisJCVtUZXN0XQ0KKwkJcHVibGljIHZvaWQgVGVzdEdpdFN0YXNoICgpDQor
CQl7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsNCisJCQlBZGRGaWxlICgi
ZmlsZTIiLCAibm90aGluZyIsIHRydWUsIHRydWUpOw0KKwkJCUFkZEZpbGUgKCJmaWxlMSIsICJ0
ZXh0IiwgdHJ1ZSwgZmFsc2UpOw0KKwkJCXJlcG8yLkdldFN0YXNoZXMgKCkuQ3JlYXRlIChudWxs
KTsNCisJCQlBc3NlcnQuSXNUcnVlICghRmlsZS5FeGlzdHMgKFJvb3RDaGVja291dCArICJmaWxl
MSIpLCAiU3Rhc2ggY3JlYXRpb24gZmFpbHVyZSIpOw0KKwkJCXJlcG8yLkdldFN0YXNoZXMgKCku
UG9wIChudWxsKTsNCisNCisJCQlWZXJzaW9uSW5mbyB2aSA9IHJlcG8yLkdldFZlcnNpb25JbmZv
IChSb290Q2hlY2tvdXQgKyAiZmlsZTEiLCBWZXJzaW9uSW5mb1F1ZXJ5RmxhZ3MuSWdub3JlQ2Fj
aGUpOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoVmVyc2lvblN0YXR1cy5TY2hlZHVsZWRBZGQsIHZp
LlN0YXR1cyAmIFZlcnNpb25TdGF0dXMuU2NoZWR1bGVkQWRkLCAiU3Rhc2ggcG9wIGZhaWx1cmUi
KTsNCisJCX0NCisNCisJCVtUZXN0XQ0KKwkJcHVibGljIHZvaWQgVGVzdEdpdEJyYW5jaENyZWF0
aW9uICgpDQorCQl7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsNCisNCisJ
CQlBZGRGaWxlICgiZmlsZTEiLCAidGV4dCIsIHRydWUsIHRydWUpOw0KKwkJCXJlcG8yLkNyZWF0
ZUJyYW5jaCAoImJyYW5jaDEiLCBudWxsKTsNCisNCisJCQlyZXBvMi5Td2l0Y2hUb0JyYW5jaCAo
bmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVzc01vbml0
b3IgKCksICJicmFuY2gxIik7DQorCQkJQXNzZXJ0LkFyZUVxdWFsICgiYnJhbmNoMSIsIHJlcG8y
LkdldEN1cnJlbnRCcmFuY2ggKCkpOw0KKwkJCUFzc2VydC5Jc1RydWUgKEZpbGUuRXhpc3RzIChS
b290Q2hlY2tvdXQgKyAiZmlsZTEiKSwgIkJyYW5jaCBub3QgaW5oZXJpdGluZyBmcm9tIGN1cnJl
bnQuIik7DQorDQorCQkJQWRkRmlsZSAoImZpbGUyIiwgInRleHQiLCB0cnVlLCBmYWxzZSk7DQor
CQkJcmVwbzIuQ3JlYXRlQnJhbmNoICgiYnJhbmNoMiIsIG51bGwpOw0KKwkJCXJlcG8yLlN3aXRj
aFRvQnJhbmNoIChuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVsbFBy
b2dyZXNzTW9uaXRvciAoKSwgImJyYW5jaDIiKTsNCisJCQlBc3NlcnQuSXNUcnVlICghRmlsZS5F
eGlzdHMgKFJvb3RDaGVja291dCArICJmaWxlMiIpLCAiVW5jb21taXR0ZWQgY2hhbmdlcyB3ZXJl
IG5vdCBzdGFzaGVkIik7DQorCQkJcmVwbzIuR2V0U3Rhc2hlcyAoKS5Qb3AgKG5ldyBOdWxsUHJv
Z3Jlc3NNb25pdG9yICgpKTsNCisNCisJCQlBc3NlcnQuSXNUcnVlIChGaWxlLkV4aXN0cyAoUm9v
dENoZWNrb3V0ICsgImZpbGUyIiksICJVbmNvbW1pdHRlZCBjaGFuZ2VzIHdlcmUgbm90IHN0YXNo
ZWQgY29ycmVjdGx5Iik7DQorDQorCQkJcmVwbzIuU3dpdGNoVG9CcmFuY2ggKG5ldyBNb25vRGV2
ZWxvcC5Db3JlLlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NNb25pdG9yICgpLCAibWFz
dGVyIik7DQorCQkJcmVwbzIuUmVtb3ZlQnJhbmNoICgiYnJhbmNoMSIpOw0KKwkJCUFzc2VydC5J
c0ZhbHNlIChyZXBvMi5HZXRCcmFuY2hlcyAoKS5BbnkgKGIgPT4gYi5OYW1lID09ICJicmFuY2gx
IiksICJGYWlsZWQgdG8gZGVsZXRlIGJyYW5jaCIpOw0KKw0KKwkJCXJlcG8yLlJlbmFtZUJyYW5j
aCAoImJyYW5jaDIiLCAiYnJhbmNoMyIpOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLkdldEJy
YW5jaGVzICgpLkFueSAoYiA9PiBiLk5hbWUgPT0gImJyYW5jaDMiKSAmJiByZXBvMi5HZXRCcmFu
Y2hlcyAoKS5BbGwgKGIgPT4gYi5OYW1lICE9ICJicmFuY2gyIiksICJGYWlsZWQgdG8gcmVuYW1l
IGJyYW5jaCIpOw0KKwkJfQ0KKw0KKwkJW1Rlc3RdDQorCQlwdWJsaWMgdm9pZCBUZXN0R2l0U3lu
Y0JyYW5jaGVzICgpDQorCQl7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsN
CisJCQlBZGRGaWxlICgiZmlsZTEiLCAidGV4dCIsIHRydWUsIHRydWUpOw0KKwkJCVBvc3RDb21t
aXQgKHJlcG8yKTsNCisNCisJCQlyZXBvMi5DcmVhdGVCcmFuY2ggKCJicmFuY2gzIiwgbnVsbCk7
DQorCQkJcmVwbzIuU3dpdGNoVG9CcmFuY2ggKG5ldyBNb25vRGV2ZWxvcC5Db3JlLlByb2dyZXNz
TW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NNb25pdG9yICgpLCAiYnJhbmNoMyIpOw0KKwkJCUFkZEZp
bGUgKCJmaWxlMiIsICJhc2RmIiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJcmVwbzIuUHVzaCAobmV3IE1v
bm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVzc01vbml0b3IgKCks
ICJvcmlnaW4iLCAiYnJhbmNoMyIpOw0KKw0KKwkJCXJlcG8yLlN3aXRjaFRvQnJhbmNoIChuZXcg
TW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVsbFByb2dyZXNzTW9uaXRvciAo
KSwgIm1hc3RlciIpOw0KKw0KKwkJCXJlcG8yLkNyZWF0ZUJyYW5jaCAoImJyYW5jaDQiLCAib3Jp
Z2luL2JyYW5jaDMiKTsNCisJCQlyZXBvMi5Td2l0Y2hUb0JyYW5jaCAobmV3IE1vbm9EZXZlbG9w
LkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVzc01vbml0b3IgKCksICJicmFuY2g0
Iik7DQorCQkJQXNzZXJ0LklzVHJ1ZSAoRmlsZS5FeGlzdHMgKFJvb3RDaGVja291dCArICJmaWxl
MiIpLCAiVHJhY2tpbmcgcmVtb3RlIGlzIG5vdCBncmFiYmluZyBjb3JyZWN0IGNvbW1pdHMiKTsN
CisJCX0NCisNCisJCVtUZXN0XQ0KKwkJcHVibGljIHZvaWQgVGVzdFB1c2hDaGFuZ2VzZXQgKCkN
CisJCXsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlSZXBvOw0KKwkJCUFkZEZpbGUg
KCJmaWxlIiwgIm1laCIsIHRydWUsIHRydWUpOw0KKwkJCVBvc3RDb21taXQgKHJlcG8yKTsNCisN
CisJCQlBZGRGaWxlICgiZmlsZTEiLCAidGV4dCIsIHRydWUsIHRydWUpOw0KKwkJCUFkZEZpbGUg
KCJmaWxlMiIsICJ0ZXh0MiIsIHRydWUsIHRydWUpOw0KKw0KKwkJCUNoYW5nZVNldCBkaWZmID0g
cmVwbzIuR2V0UHVzaENoYW5nZVNldCAoIm9yaWdpbiIsICJtYXN0ZXIiKTsNCisJCQlBc3NlcnQu
QXJlRXF1YWwgKDIsIGRpZmYuSXRlbXMuQ291bnQgKCkpOw0KKw0KKwkJCUNoYW5nZVNldEl0ZW0g
aXRlbSA9IGRpZmYuR2V0RmlsZUl0ZW0gKFJvb3RDaGVja291dCArICJmaWxlMSIpOw0KKwkJCUFz
c2VydC5Jc05vdE51bGwgKGl0ZW0pOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoVmVyc2lvblN0YXR1
cy5TY2hlZHVsZWRBZGQsIGl0ZW0uU3RhdHVzICYgVmVyc2lvblN0YXR1cy5TY2hlZHVsZWRBZGQp
Ow0KKw0KKwkJCWl0ZW0gPSBkaWZmLkdldEZpbGVJdGVtIChSb290Q2hlY2tvdXQgKyAiZmlsZTEi
KTsNCisJCQlBc3NlcnQuSXNOb3ROdWxsIChpdGVtKTsNCisJCQlBc3NlcnQuQXJlRXF1YWwgKFZl
cnNpb25TdGF0dXMuU2NoZWR1bGVkQWRkLCBpdGVtLlN0YXR1cyAmIFZlcnNpb25TdGF0dXMuU2No
ZWR1bGVkQWRkKTsNCisJCX0NCisNCisJCVtUZXN0XQ0KKwkJW0lnbm9yZSAoIkdldFB1c2hEaWZm
IGNvbnRlbnQgaXMgYWx3YXlzIGVtcHR5IildDQorCQlwdWJsaWMgdm9pZCBUZXN0UHVzaERpZmYg
KCkNCisJCXsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlSZXBvOw0KKwkJCUFkZEZp
bGUgKCJmaWxlIiwgIm1laCIsIHRydWUsIHRydWUpOw0KKwkJCVBvc3RDb21taXQgKHJlcG8yKTsN
CisNCisJCQlBZGRGaWxlICgiZmlsZTEiLCAidGV4dCIsIHRydWUsIHRydWUpOw0KKwkJCUFkZEZp
bGUgKCJmaWxlMiIsICJ0ZXh0MiIsIHRydWUsIHRydWUpOw0KKw0KKwkJCURpZmZJbmZvW10gZGlm
ZiA9IHJlcG8yLkdldFB1c2hEaWZmICgib3JpZ2luIiwgIm1hc3RlciIpOw0KKwkJCUFzc2VydC5B
cmVFcXVhbCAoMiwgZGlmZi5MZW5ndGgpOw0KKw0KKwkJCURpZmZJbmZvIGl0ZW0gPSBkaWZmIFsw
XTsNCisJCQlBc3NlcnQuSXNOb3ROdWxsIChpdGVtKTsNCisJCQlBc3NlcnQuQXJlRXF1YWwgKCJm
aWxlMSIsIGl0ZW0uRmlsZU5hbWUuRmlsZU5hbWUpOw0KKwkJCS8vQXNzZXJ0LkFyZUVxdWFsICgi
dGV4dCIsIGl0ZW0uQ29udGVudCk7DQorDQorCQkJaXRlbSA9IGRpZmYgWzFdOw0KKwkJCUFzc2Vy
dC5Jc05vdE51bGwgKGl0ZW0pOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoImZpbGUyIiwgaXRlbS5G
aWxlTmFtZS5GaWxlTmFtZSk7DQorCQkJLy9Bc3NlcnQuQXJlRXF1YWwgKCJ0ZXh0MiIsIGl0ZW0u
Q29udGVudCk7DQorCQl9DQorDQorCQlbVGVzdF0NCisJCXB1YmxpYyB2b2lkIFRlc3RHaXRVcmwg
KCkNCisJCXsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlSZXBvOw0KKwkJCUFzc2Vy
dC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJnaXRAZ2l0aHViLmNvbTptb25vL21vbm9kZXZl
bG9wIikpOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJnaXQ6Ly9naXRo
dWIuY29tOjgwL21vbm8vbW9ub2RldmVsb3AuZ2l0IikpOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJl
cG8yLklzVXJsVmFsaWQgKCJzc2g6Ly91c2VyQGhvc3QuY29tOjgwL21vbm8vbW9ub2RldmVsb3Au
Z2l0IikpOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJodHRwOi8vZ2l0
aHViLmNvbTo4MC9tb25vL21vbm9kZXZlbG9wLmdpdCIpKTsNCisJCQlBc3NlcnQuSXNUcnVlIChy
ZXBvMi5Jc1VybFZhbGlkICgiaHR0cHM6Ly9naXRodWIuY29tOjgwL21vbm8vbW9ub2RldmVsb3Au
Z2l0IikpOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJmdHA6Ly9naXRo
dWIuY29tOjgwL21vbm8vbW9ub2RldmVsb3AuZ2l0IikpOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJl
cG8yLklzVXJsVmFsaWQgKCJmdHBzOi8vZ2l0aHViLmNvbTo4MC9tb25vL21vbm9kZXZlbG9wLmdp
dCIpKTsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBvMi5Jc1VybFZhbGlkICgiZmlsZTovLy9tb25v
L21vbm9kZXZlbG9wLmdpdCIpKTsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBvMi5Jc1VybFZhbGlk
ICgicnN5bmM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVscG8uZ2l0IikpOw0KKwkJfQ0KKw0K
KwkJW1Rlc3RdDQorCQlwdWJsaWMgdm9pZCBUZXN0UmVtb3RlICgpDQorCQl7DQorCQkJdmFyIHJl
cG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsNCisNCisJCQlBc3NlcnQuQXJlRXF1YWwgKCJvcmln
aW4iLCByZXBvMi5HZXRDdXJyZW50UmVtb3RlICgpKTsNCisNCisJCQlBZGRGaWxlICgiZmlsZTEi
LCAidGV4dCIsIHRydWUsIHRydWUpOw0KKwkJCVBvc3RDb21taXQgKHJlcG8yKTsNCisJCQlyZXBv
Mi5DcmVhdGVCcmFuY2ggKCJicmFuY2gxIiwgbnVsbCk7DQorCQkJcmVwbzIuU3dpdGNoVG9CcmFu
Y2ggKG5ldyBNb25vRGV2ZWxvcC5Db3JlLlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NN
b25pdG9yICgpLCAiYnJhbmNoMSIpOw0KKwkJCUFkZEZpbGUgKCJmaWxlMiIsICJ0ZXh0IiwgdHJ1
ZSwgdHJ1ZSk7DQorCQkJUG9zdENvbW1pdCAocmVwbzIpOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAo
MiwgcmVwbzIuR2V0QnJhbmNoZXMgKCkuQ291bnQgKCkpOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAo
MSwgcmVwbzIuR2V0UmVtb3RlcyAoKS5Db3VudCAoKSk7DQorDQorCQkJcmVwbzIuUmVuYW1lUmVt
b3RlICgib3JpZ2luIiwgIm90aGVyIik7DQorCQkJQXNzZXJ0LkFyZUVxdWFsICgib3RoZXIiLCBy
ZXBvMi5HZXRDdXJyZW50UmVtb3RlICgpKTsNCisNCisJCQlyZXBvMi5SZW1vdmVSZW1vdGUgKCJv
dGhlciIpOw0KKwkJCUFzc2VydC5Jc0ZhbHNlIChyZXBvMi5HZXRSZW1vdGVzICgpLkFueSAoKSk7
DQorCQl9DQorDQorCQlbVGVzdF0NCisJCXB1YmxpYyB2b2lkIFRlc3RJc01lcmdlZCAoKQ0KKwkJ
ew0KKwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KVJlcG87DQorCQkJQWRkRmlsZSAoImZp
bGUxIiwgInRleHQiLCB0cnVlLCB0cnVlKTsNCisNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBvMi5J
c0JyYW5jaE1lcmdlZCAoIm1hc3RlciIpKTsNCisNCisJCQlyZXBvMi5DcmVhdGVCcmFuY2ggKCJi
cmFuY2gxIiwgbnVsbCk7DQorCQkJcmVwbzIuU3dpdGNoVG9CcmFuY2ggKG5ldyBNb25vRGV2ZWxv
cC5Db3JlLlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NNb25pdG9yICgpLCAiYnJhbmNo
MSIpOw0KKwkJCUFkZEZpbGUgKCJmaWxlMiIsICJ0ZXh0IiwgdHJ1ZSwgdHJ1ZSk7DQorDQorCQkJ
cmVwbzIuU3dpdGNoVG9CcmFuY2ggKG5ldyBNb25vRGV2ZWxvcC5Db3JlLlByb2dyZXNzTW9uaXRv
cmluZy5OdWxsUHJvZ3Jlc3NNb25pdG9yICgpLCAibWFzdGVyIik7DQorCQkJQXNzZXJ0LklzRmFs
c2UgKHJlcG8yLklzQnJhbmNoTWVyZ2VkICgiYnJhbmNoMSIpKTsNCisJCQlyZXBvMi5NZXJnZSAo
ImJyYW5jaDEiLCBHaXRVcGRhdGVPcHRpb25zLk5vcm1hbFVwZGF0ZSwgbmV3IE1vbm9EZXZlbG9w
LkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVzc01vbml0b3IgKCkpOw0KKwkJCUFz
c2VydC5Jc1RydWUgKHJlcG8yLklzQnJhbmNoTWVyZ2VkICgiYnJhbmNoMSIpKTsNCisJCX0NCisN
CisJCVtUZXN0XQ0KKwkJcHVibGljIHZvaWQgVGVzdFRhZ3MgKCkNCisJCXsNCisJCQl2YXIgcmVw
bzIgPSAoR2l0UmVwb3NpdG9yeSlSZXBvOw0KKwkJCUFkZEZpbGUgKCJmaWxlMSIsICJ0ZXh0Iiwg
dHJ1ZSwgdHJ1ZSk7DQorCQkJcmVwbzIuQWRkVGFnICgidGFnMSIsIEdldEhlYWRSZXZpc2lvbiAo
KSwgIm15LXRhZyIpOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoMSwgcmVwbzIuR2V0VGFncyAoKS5D
b3VudCAoKSk7DQorCQkJQXNzZXJ0LkFyZUVxdWFsICgidGFnMSIsIHJlcG8yLkdldFRhZ3MgKCku
Rmlyc3QgKCkpOw0KKwkJCXJlcG8yLlJlbW92ZVRhZyAoInRhZzEiKTsNCisJCQlBc3NlcnQuQXJl
RXF1YWwgKDAsIHJlcG8yLkdldFRhZ3MgKCkuQ291bnQgKCkpOw0KKwkJfQ0KKw0KKwkJLy8gVE9E
TzogVGVzdCByZWJhc2UgYW5kIG1lcmdlIC0gVGhpcyBpcyBicm9rZW4gb24gV2luZG93cw0KKw0K
IAkJcHJvdGVjdGVkIG92ZXJyaWRlIFJlcG9zaXRvcnkgR2V0UmVwbyAoc3RyaW5nIHBhdGgsIHN0
cmluZyB1cmwpDQogCQl7DQogCQkJcmV0dXJuIG5ldyBHaXRSZXBvc2l0b3J5IChwYXRoLCB1cmwp
Ow0NCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxv
cC5WZXJzaW9uQ29udHJvbC5HaXQuVGVzdHMvQmFzZVJlcG9zaXRvcnlUZXN0cy5jcw0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KQEAgLTM1LDcgKzM1LDcgQEAKIG5hbWVzcGFjZSBNb25vRGV2ZWxvcC5WZXJzaW9uQ29u
dHJvbC5UZXN0cwogewogCVtUZXN0Rml4dHVyZV0KLQlwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFz
ZVJlcG9VdGlsc1Rlc3QKKwlhYnN0cmFjdCBjbGFzcyBCYXNlUmVwb1V0aWxzVGVzdAogCXsKIAkJ
Ly8gW0dpdF0gU2V0IHVzZXIgYW5kIGVtYWlsLgogCQlwcm90ZWN0ZWQgY29uc3Qgc3RyaW5nIEF1
dGhvciA9ICJhdXRob3IiOw0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250
cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdpdC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29u
dHJvbC5HaXQvR2l0UmVwb3NpdG9yeS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTE1NTcsNyArMTU1Nyw3
IEBAIHB1YmxpYyBDaGFuZ2VTZXQgR2V0UHVzaENoYW5nZVNldCAoc3RyaW5nIHJlbW90ZSwgc3Ry
aW5nIGJyYW5jaCkKIAkJCUNoYW5nZVNldCBjc2V0ID0gQ3JlYXRlQ2hhbmdlU2V0IChSb290UGF0
aCk7CiAJCQlPYmplY3RJZCBjaWQxID0gUm9vdFJlcG9zaXRvcnkuUmVzb2x2ZSAocmVtb3RlICsg
Ii8iICsgYnJhbmNoKTsKIAkJCU9iamVjdElkIGNpZDIgPSBSb290UmVwb3NpdG9yeS5SZXNvbHZl
IChSb290UmVwb3NpdG9yeS5HZXRCcmFuY2ggKCkpOwotCQkJUmV2V2FsayBydyA9IG5ldyBSZXZX
YWxrIChSb290UmVwb3NpdG9yeSk7CisJCQlSZXZXYWxrCXJ3ID0gbmV3IFJldldhbGsgKFJvb3RS
ZXBvc2l0b3J5KTsKIAkJCVJldkNvbW1pdCBjMSA9IHJ3LlBhcnNlQ29tbWl0IChjaWQxKTsKIAkJ
CVJldkNvbW1pdCBjMiA9IHJ3LlBhcnNlQ29tbWl0IChjaWQyKTsKIAkJCQpAQCAtMTU4OSw3ICsx
NTg5LDcgQEAgcHVibGljIERpZmZJbmZvW10gR2V0UHVzaERpZmYgKHN0cmluZyByZW1vdGUsIHN0
cmluZyBicmFuY2gpCiAJCQlSZXZDb21taXQgYzIgPSBydy5QYXJzZUNvbW1pdCAoY2lkMik7CiAJ
CQkKIAkJCUxpc3Q8RGlmZkluZm8+IGRpZmZzID0gbmV3IExpc3Q8RGlmZkluZm8+ICgpOwotCQkJ
Zm9yZWFjaCAodmFyIGNoYW5nZSBpbiBHaXRVdGlsLkNvbXBhcmVDb21taXRzIChSb290UmVwb3Np
dG9yeSwgYzEsIGMyKSkgeworCQkJZm9yZWFjaCAodmFyIGNoYW5nZSBpbiBHaXRVdGlsLkNvbXBh
cmVDb21taXRzIChSb290UmVwb3NpdG9yeSwgYzIsIGMxKSkgewogCQkJCXN0cmluZyBkaWZmOwog
CQkJCXN3aXRjaCAoY2hhbmdlLkdldENoYW5nZVR5cGUgKCkpIHsKIAkJCQljYXNlIERpZmZFbnRy
eS5DaGFuZ2VUeXBlLkRFTEVURToNCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9u
Q29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLlRlc3RzL0Jhc2VT
dm5SZXBvc2l0b3J5VGVzdHMuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0zMyw5ICszMyw5IEBACiBuYW1l
c3BhY2UgTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5UZXN0cw0KIHsNCiAJ
W1Rlc3RGaXh0dXJlXQ0KLQlwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFzZVN2blV0aWxzVGVzdCA6
IEJhc2VSZXBvVXRpbHNUZXN0DQorCWFic3RyYWN0IGNsYXNzIEJhc2VTdm5VdGlsc1Rlc3QgOiBC
YXNlUmVwb1V0aWxzVGVzdA0KIAl7DQotCQlwcm90ZWN0ZWQgUHJvY2VzcyBzdm5TZXJ2ZSA9IG51
bGw7DQorCQlwcm90ZWN0ZWQgUHJvY2VzcyBTdm5TZXJ2ZSA9IG51bGw7DQogDQogCQlbU2V0VXBd
DQogCQlwdWJsaWMgb3ZlcnJpZGUgdm9pZCBTZXR1cCAoKQ0KQEAgLTU5LDEzICs1OSwxMyBAQCBw
dWJsaWMgb3ZlcnJpZGUgdm9pZCBTZXR1cCAoKQogCQkJLy8gQ3JlYXRlIGhvc3QgKFdpbjMyKQ0K
IAkJCS8vIFRoaXMgbmVlZHMgdG8gYmUgZG9uZSBhZnRlciBkb2luZyB0aGUgc3ZuQWRtaW4gY3Jl
YXRpb24uDQogCQkJLy8gQW5kIGJlZm9yZSBjaGVja291dC4NCi0JCQlpZiAoc3ZuU2VydmUgIT0g
bnVsbCkgew0KKwkJCWlmIChTdm5TZXJ2ZSAhPSBudWxsKSB7DQogCQkJCWluZm8gPSBuZXcgUHJv
Y2Vzc1N0YXJ0SW5mbyAoKTsNCiAJCQkJaW5mby5GaWxlTmFtZSA9ICJzdm5zZXJ2ZSI7DQogCQkJ
CWluZm8uQXJndW1lbnRzID0gIi1kciAiICsgUm9vdFVybDsNCiAJCQkJaW5mby5XaW5kb3dTdHls
ZSA9IFByb2Nlc3NXaW5kb3dTdHlsZS5IaWRkZW47DQotCQkJCXN2blNlcnZlLlN0YXJ0SW5mbyA9
IGluZm87DQotCQkJCXN2blNlcnZlLlN0YXJ0ICgpOw0KKwkJCQlTdm5TZXJ2ZS5TdGFydEluZm8g
PSBpbmZvOw0KKwkJCQlTdm5TZXJ2ZS5TdGFydCAoKTsNCiANCiAJCQkJLy8gQ3JlYXRlIHVzZXIg
dG8gYXV0aC4NCiAJCQkJdXNpbmcgKHZhciBwZXJtID0gRmlsZS4gQ3JlYXRlVGV4dCAoUm9vdFVy
bCArIFBhdGguRGlyZWN0b3J5U2VwYXJhdG9yQ2hhciArICJyZXBvIiArDQ0KDQpNb2RpZmllZDog
bWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9s
LlN1YnZlcnNpb24uVGVzdHMvUmVwb3NpdG9yeVRlc3RzLmNzDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMzYs
NyArMzYsNyBAQAogbmFtZXNwYWNlIFZlcnNpb25Db250cm9sLlN1YnZlcnNpb24uVW5peC5UZXN0
cwogewogCVtUZXN0Rml4dHVyZV0KLQlwdWJsaWMgY2xhc3MgVW5peFN2blV0aWxzVGVzdCA6IE1v
bm9EZXZlbG9wLlZlcnNpb25Db250cm9sLlN1YnZlcnNpb24uVGVzdHMuQmFzZVN2blV0aWxzVGVz
dAorCXNlYWxlZCBjbGFzcyBVbml4U3ZuVXRpbHNUZXN0IDogTW9ub0RldmVsb3AuVmVyc2lvbkNv
bnRyb2wuU3VidmVyc2lvbi5UZXN0cy5CYXNlU3ZuVXRpbHNUZXN0CiAJewogCQlTdWJ2ZXJzaW9u
QmFja2VuZCBTdm5DbGllbnQgewogCQkJZ2V0IHsgcmV0dXJuIFJlcG8uU3ZuOyB9DQoNCk1vZGlm
aWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvU3VidmVyc2lvbi5XaW4zMi5UZXN0
cy9SZXBvc2l0b3J5VGVzdHMuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0zNiwyMSArMzYsMjEgQEAKIG5h
bWVzcGFjZSBNb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLlRlc3RzDQogew0K
IAlbVGVzdEZpeHR1cmVdDQotCXB1YmxpYyBjbGFzcyBTaGFycFN2blV0aWxzVGVzdCA6IEJhc2VT
dm5VdGlsc1Rlc3QNCisJc2VhbGVkIGNsYXNzIFNoYXJwU3ZuVXRpbHNUZXN0IDogQmFzZVN2blV0
aWxzVGVzdA0KIAl7DQogCQlbU2V0VXBdDQogCQlwdWJsaWMgb3ZlcnJpZGUgdm9pZCBTZXR1cCAo
KQ0KIAkJew0KIAkJCVJvb3RVcmwgPSBuZXcgRmlsZVBhdGggKEZpbGVTZXJ2aWNlLkNyZWF0ZVRl
bXBEaXJlY3RvcnkgKCkpOw0KIAkJCVJlcG9Mb2NhdGlvbiA9ICJzdm46Ly9sb2NhbGhvc3Q6MzY5
MC9yZXBvIjsNCi0JCQlzdm5TZXJ2ZSA9IG5ldyBQcm9jZXNzICgpOw0KKwkJCVN2blNlcnZlID0g
bmV3IFByb2Nlc3MgKCk7DQogCQkJYmFzZS5TZXR1cCAoKTsNCiAJCX0NCiANCiAJCVtUZWFyRG93
bl0NCiAJCXB1YmxpYyBvdmVycmlkZSB2b2lkIFRlYXJEb3duICgpDQogCQl7DQotCQkJc3ZuU2Vy
dmUuS2lsbCAoKTsNCisJCQlTdm5TZXJ2ZS5LaWxsICgpOw0KIA0KIAkJCWJhc2UuVGVhckRvd24g
KCk7DQogCQl9DQ0KDQogICBDb21taXQ6IDgwOWU1MTdiZDQ4MThmNzc2MzA1OGZiZjUxNTcyZDli
M2UxNmMwZGMNCiAgIEF1dGhvcjogVGhlcnpvayA8dGVyb21hcmlvQHlhaG9vLmNvbT4gKFRoZXJ6
b2spDQogICAgIERhdGU6IDIwMTMtMTEtMTggMDE6MTc6MDAgR01UDQogICAgICBVUkw6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC84MDllNTE3YmQ0ODE4Zjc3NjMw
NThmYmY1MTU3MmQ5YjNlMTZjMGRjDQoNCltDb2RlIElzc3VlcyBQYWRdIEZpeGVkIE5SRSBvbiB1
c2luZyBjb21ib2JveCBiZWZvcmUgcnVubmluZyBhbmFseXNpcw0KDQpDaGFuZ2VkIHBhdGhzOgog
IE0gbWFpbi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLlJlZmFjdG9yaW5nL01vbm9EZXZlbG9wLkNv
ZGVJc3N1ZXMvQ29kZUlzc3VlUGFkLmNzCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9Nb25v
RGV2ZWxvcC5SZWZhY3RvcmluZy9Nb25vRGV2ZWxvcC5Db2RlSXNzdWVzL0NvZGVJc3N1ZVBhZC5j
cw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KQEAgLTI5OSw2ICsyOTksOSBAQCB2b2lkIFNldE5vZGUgKFRyZWVOYXZp
Z2F0b3IgbmF2aWdhdG9yLCBJSXNzdWVUcmVlTm9kZSBub2RlKQogCiAJCXZvaWQgQ2xlYXJTaWJs
aW5nTm9kZXMgKFRyZWVOYXZpZ2F0b3IgbmF2aWdhdG9yKQogCQl7CisJCQlpZiAobmF2aWdhdG9y
ID09IG51bGwpCisJCQkJcmV0dXJuOworCiAJCQlkbyB7CiAJCQkJdmFyIG5vZGUgPSBuYXZpZ2F0
b3IuR2V0VmFsdWUgKG5vZGVGaWVsZCk7CiAJCQkJaWYgKG5vZGUgIT0gbnVsbCkgew0KDQogICBD
b21taXQ6IDc1ODE2NDUxYzM3N2RiMjQwM2EwNWZjY2I3Y2M5ODhlMzZmODAzMTMNCiAgIEF1dGhv
cjogVGhlcnpvayA8dGVyb21hcmlvQHlhaG9vLmNvbT4gKFRoZXJ6b2spDQogICAgIERhdGU6IDIw
MTMtMTEtMTggMDE6Mjk6MTEgR01UDQogICAgICBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25v
L21vbm9kZXZlbG9wL2NvbW1pdC83NTgxNjQ1MWMzNzdkYjI0MDNhMDVmY2NiN2NjOTg4ZTM2Zjgw
MzEzDQoNCkZpeHVwIHRvIHByZXZpb3VzIHJldmlzaW9uLgoKRGFtbiB5b3Ugc2F2ZSENCg0KQ2hh
bmdlZCBwYXRoczoKICBNIG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5SZWZhY3RvcmluZy9N
b25vRGV2ZWxvcC5Db2RlSXNzdWVzL0NvZGVJc3N1ZVBhZC5jcwoNCk1vZGlmaWVkOiBtYWluL3Ny
Yy9hZGRpbnMvTW9ub0RldmVsb3AuUmVmYWN0b3JpbmcvTW9ub0RldmVsb3AuQ29kZUlzc3Vlcy9D
b2RlSXNzdWVQYWQuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0yOTksNyArMjk5LDcgQEAgdm9pZCBTZXRO
b2RlIChUcmVlTmF2aWdhdG9yIG5hdmlnYXRvciwgSUlzc3VlVHJlZU5vZGUgbm9kZSkKIAogCQl2
b2lkIENsZWFyU2libGluZ05vZGVzIChUcmVlTmF2aWdhdG9yIG5hdmlnYXRvcikKIAkJewotCQkJ
aWYgKG5hdmlnYXRvciA9PSBudWxsKQorCQkJaWYgKG5hdmlnYXRvci5DdXJyZW50UG9zaXRpb24g
PT0gbnVsbCkKIAkJCQlyZXR1cm47CiAKIAkJCWRvIHsNCg0KICAgQ29tbWl0OiBiMzM1MTgxY2Ex
NTlkYmI3ODA5OGNjNjM0ZDZmOGY0YTU0NmIyM2U0DQogICBBdXRob3I6IE1pa2UgS3LDvGdlciA8
bWtydWVnZXJAeGFtYXJpbi5jb20+IChta3J1ZWdlcikNCiAgICAgRGF0ZTogMjAxMy0xMS0xOCAw
Nzo1ODowNCBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVs
b3AvY29tbWl0L2IzMzUxODFjYTE1OWRiYjc4MDk4Y2M2MzRkNmY4ZjRhNTQ2YjIzZTQNCg0KSW1w
bGVtZW50ZWQgJ0J1ZyAxNjIyOCAtIE5hbWVzcGFjZXMgaW4gdG9vbHRpcHMnLg0KDQpDaGFuZ2Vk
IHBhdGhzOgogIE0gbWFpbi9zcmMvYWRkaW5zL0NTaGFycEJpbmRpbmcvTW9ub0RldmVsb3AuQ1No
YXJwLkNvbXBsZXRpb24vTWVtYmVyQ29tcGxldGlvbkRhdGEuY3MKICBNIG1haW4vc3JjL2FkZGlu
cy9DU2hhcnBCaW5kaW5nL01vbm9EZXZlbG9wLkNTaGFycC5Ub29sdGlwcy9MYW5ndWFnZUl0ZW1U
b29sdGlwUHJvdmlkZXIuY3MKICBNIG1haW4vc3JjL2FkZGlucy9DU2hhcnBCaW5kaW5nL01vbm9E
ZXZlbG9wLkNTaGFycC9TaWduYXR1cmVNYXJrdXBDcmVhdG9yLmNzCg0KTW9kaWZpZWQ6IG1haW4v
c3JjL2FkZGlucy9DU2hhcnBCaW5kaW5nL01vbm9EZXZlbG9wLkNTaGFycC5Db21wbGV0aW9uL01l
bWJlckNvbXBsZXRpb25EYXRhLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtNjgyLDMwICs2ODIsNyBAQCBw
dWJsaWMgc3RhdGljIFRvb2x0aXBJbmZvcm1hdGlvbiBDcmVhdGVUb29sdGlwSW5mb3JtYXRpb24g
KElDb21waWxhdGlvbiBjb21waWxhdAogCQkJCX0KIAkJCX0KIAkJCWlmIChjcmVhdGVGb290ZXIp
IHsKLQkJCQlpZiAoZW50aXR5IGlzIElUeXBlKSB7Ci0JCQkJCXZhciB0eXBlID0gZW50aXR5IGFz
IElUeXBlOwotCQkJCQl2YXIgZGVmID0gdHlwZS5HZXREZWZpbml0aW9uICgpOwotCQkJCQlpZiAo
ZGVmICE9IG51bGwpIHsKLQkJCQkJCWlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkgKGRlZi5QYXJl
bnRBc3NlbWJseS5Bc3NlbWJseU5hbWUpKSB7Ci0JCQkJCQkJdmFyIHByb2plY3QgPSBkZWYuR2V0
U291cmNlUHJvamVjdCAoKTsKLQkJCQkJCQlpZiAocHJvamVjdCAhPSBudWxsKSB7Ci0JCQkJCQkJ
CXZhciByZWxQYXRoID0gRmlsZVNlcnZpY2UuQWJzb2x1dGVUb1JlbGF0aXZlUGF0aCAocHJvamVj
dC5CYXNlRGlyZWN0b3J5LCBkZWYuUmVnaW9uLkZpbGVOYW1lKTsKLQkJCQkJCQkJdG9vbHRpcElu
Zm8uRm9vdGVyTWFya3VwID0gIjxzbWFsbD4iICsgR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgi
UHJvamVjdDpcdHswfSIsIEFtYmllbmNlU2VydmljZS5Fc2NhcGVUZXh0IChkZWYuUGFyZW50QXNz
ZW1ibHkuQXNzZW1ibHlOYW1lKSkgKyAiPC9zbWFsbD4iICsgRW52aXJvbm1lbnQuTmV3TGluZSAr
Ci0JCQkJCQkJCQkiPHNtYWxsPiIgKyBHZXR0ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJGaWxlOlx0
XHR7MH0gKGxpbmUgezF9KSIsIEFtYmllbmNlU2VydmljZS5Fc2NhcGVUZXh0IChyZWxQYXRoKSwg
ZGVmLlJlZ2lvbi5CZWdpbi5MaW5lKSArICI8L3NtYWxsPiI7Ci0JCQkJCQkJfQotCQkJCQkJfQot
CQkJCQl9Ci0KLQkJCQl9IGVsc2UgaWYgKGVudGl0eS5EZWNsYXJpbmdUeXBlRGVmaW5pdGlvbiAh
PSBudWxsKSB7Ci0JCQkJCXZhciBwcm9qZWN0ID0gZW50aXR5LkRlY2xhcmluZ1R5cGVEZWZpbml0
aW9uLkdldFNvdXJjZVByb2plY3QgKCk7Ci0JCQkJCWlmIChwcm9qZWN0ICE9IG51bGwpIHsKLQkJ
CQkJCXZhciByZWxQYXRoID0gRmlsZVNlcnZpY2UuQWJzb2x1dGVUb1JlbGF0aXZlUGF0aCAocHJv
amVjdC5CYXNlRGlyZWN0b3J5LCBlbnRpdHkuUmVnaW9uLkZpbGVOYW1lKTsKLQkJCQkJCXRvb2x0
aXBJbmZvLkZvb3Rlck1hcmt1cCA9IAotCQkJCQkJCSI8c21hbGw+IiArIEdldHRleHRDYXRhbG9n
LkdldFN0cmluZyAoIlByb2plY3Q6XHR7MH0iLCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAo
cHJvamVjdC5OYW1lKSkgKyAiPC9zbWFsbD4iICsgRW52aXJvbm1lbnQuTmV3TGluZSArCi0JCQkJ
CQkJIjxzbWFsbD4iICsgR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiRnJvbTpcdHswfSIsIEFt
YmllbmNlU2VydmljZS5Fc2NhcGVUZXh0IChlbnRpdHkuRGVjbGFyaW5nVHlwZS5GdWxsTmFtZSkp
ICsgIjwvc21hbGw+IiArIEVudmlyb25tZW50Lk5ld0xpbmUgKwotCQkJCQkJCSI8c21hbGw+IiAr
IEdldHRleHRDYXRhbG9nLkdldFN0cmluZyAoIkZpbGU6XHRcdHswfSAobGluZSB7MX0pIiwgQW1i
aWVuY2VTZXJ2aWNlLkVzY2FwZVRleHQgKHJlbFBhdGgpLCBlbnRpdHkuUmVnaW9uLkJlZ2luLkxp
bmUpICsgIjwvc21hbGw+IjsKLQkJCQkJfQotCQkJCX0KKwkJCQl0b29sdGlwSW5mby5Gb290ZXJN
YXJrdXAgPSBzaWcuQ3JlYXRlRm9vdGVyIChlbnRpdHkpOwogCQkJfQogCQkJcmV0dXJuIHRvb2x0
aXBJbmZvOwogCQl9CkBAIC03MzIsOCArNzA5LDggQEAgcHVibGljIHN0YXRpYyBUb29sdGlwSW5m
b3JtYXRpb24gQ3JlYXRlVG9vbHRpcEluZm9ybWF0aW9uIChJQ29tcGlsYXRpb24gY29tcGlsYXQK
IAogCQkJdmFyIGRlZiA9IHR5cGUuR2V0RGVmaW5pdGlvbiAoKTsKIAkJCWlmIChkZWYgIT0gbnVs
bCkgewotCQkJCWlmIChjcmVhdGVGb290ZXIgJiYgIXN0cmluZy5Jc051bGxPckVtcHR5IChkZWYu
UGFyZW50QXNzZW1ibHkuQXNzZW1ibHlOYW1lKSkKLQkJCQkJdG9vbHRpcEluZm8uRm9vdGVyTWFy
a3VwID0gIjxzbWFsbD4gRnJvbSAiICsgQW1iaWVuY2VTZXJ2aWNlLkVzY2FwZVRleHQgKGRlZi5Q
YXJlbnRBc3NlbWJseS5Bc3NlbWJseU5hbWUpICsgIjwvc21hbGw+IjsKKwkJCQlpZiAoY3JlYXRl
Rm9vdGVyKQorCQkJCQl0b29sdGlwSW5mby5Gb290ZXJNYXJrdXAgPSBzaWcuQ3JlYXRlRm9vdGVy
IChkZWYpOwogCQkJCXRvb2x0aXBJbmZvLlN1bW1hcnlNYXJrdXAgPSBBbWJpZW5jZVNlcnZpY2Uu
R2V0U3VtbWFyeU1hcmt1cCAoZGVmKSA/PyAiIjsKIAkJCX0KIAkJCXJldHVybiB0b29sdGlwSW5m
bzsNCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9DU2hhcnBCaW5kaW5nL01vbm9EZXZlbG9w
LkNTaGFycC5Ub29sdGlwcy9MYW5ndWFnZUl0ZW1Ub29sdGlwUHJvdmlkZXIuY3MNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCkBAIC0xNDEsNyArMTQxLDcgQEAgcHJvdGVjdGVkIG92ZXJyaWRlIEd0ay5XaW5kb3cgQ3Jl
YXRlVG9vbHRpcFdpbmRvdyAoTW9uby5UZXh0RWRpdG9yLlRleHRFZGl0b3IgZWQKIAogCQkJdmFy
IHRpdGVtID0gKFRvb2xUaXBEYXRhKWl0ZW0uSXRlbTsKIAotCQkJdmFyIHRvb2x0aXBJbmZvcm1h
dGlvbiA9IENyZWF0ZVRvb2x0aXAgKHRpdGVtLCBvZmZzZXQsIG51bGwpOworCQkJdmFyIHRvb2x0
aXBJbmZvcm1hdGlvbiA9IENyZWF0ZVRvb2x0aXAgKHRpdGVtLCBvZmZzZXQsIG51bGwsIG1vZGlm
aWVyU3RhdGUpOwogCQkJaWYgKHRvb2x0aXBJbmZvcm1hdGlvbiA9PSBudWxsIHx8IHN0cmluZy5J
c051bGxPckVtcHR5ICh0b29sdGlwSW5mb3JtYXRpb24uU2lnbmF0dXJlTWFya3VwKSkKIAkJCQly
ZXR1cm4gbnVsbDsKIApAQCAtMTc5LDEyICsxNzksMTMgQEAgcHVibGljIG92ZXJyaWRlIEd0ay5X
aW5kb3cgU2hvd1Rvb2x0aXBXaW5kb3cgKFRleHRFZGl0b3IgZWRpdG9yLCBpbnQgb2Zmc2V0LCBH
ZGsKIAkJCXJldHVybiB0aXBXaW5kb3c7CiAJCX0KIAotCQlUb29sdGlwSW5mb3JtYXRpb24gQ3Jl
YXRlVG9vbHRpcCAoVG9vbFRpcERhdGEgZGF0YSwgaW50IG9mZnNldCwgQW1iaWVuY2UgYW1iaWVu
Y2UpCisJCVRvb2x0aXBJbmZvcm1hdGlvbiBDcmVhdGVUb29sdGlwIChUb29sVGlwRGF0YSBkYXRh
LCBpbnQgb2Zmc2V0LCBBbWJpZW5jZSBhbWJpZW5jZSwgR2RrLk1vZGlmaWVyVHlwZSBtb2RpZmll
clN0YXRlKQogCQl7CiAJCQlSZXNvbHZlUmVzdWx0IHJlc3VsdCA9IGRhdGEuUmVzdWx0OwogCQkJ
dmFyIGRvYyA9IElkZUFwcC5Xb3JrYmVuY2guQWN0aXZlRG9jdW1lbnQ7CiAJCQlpZiAoZG9jID09
IG51bGwpCiAJCQkJcmV0dXJuIG51bGw7CisJCQlib29sIGNyZWF0ZUZvb3RlciA9IChtb2RpZmll
clN0YXRlICYgR2RrLk1vZGlmaWVyVHlwZS5Nb2QxTWFzaykgIT0gMDsKIAkJCXRyeSB7CiAKIAkJ
CQlpZiAocmVzdWx0IGlzIEFsaWFzTmFtZXNwYWNlUmVzb2x2ZVJlc3VsdCkgewpAQCAtMjc2LDEy
ICsyNzcsMTMgQEAgVG9vbHRpcEluZm9ybWF0aW9uIENyZWF0ZVRvb2x0aXAgKFRvb2xUaXBEYXRh
IGRhdGEsIGludCBvZmZzZXQsIEFtYmllbmNlIGFtYmllbmMKIAkJCQkJdmFyIG1ldGhvZCA9IGFs
bE1ldGhvZHMuRmlyc3RPckRlZmF1bHQgKCk7CiAJCQkJCWlmIChtZXRob2QgIT0gbnVsbCkgewog
CQkJCQkJcmV0dXJuIE1lbWJlckNvbXBsZXRpb25EYXRhLkNyZWF0ZVRvb2x0aXBJbmZvcm1hdGlv
biAoCi0JCQkJCQlkb2MuQ29tcGlsYXRpb24sCi0JCQkJCQlkb2MuUGFyc2VkRG9jdW1lbnQuUGFy
c2VkRmlsZSBhcyBDU2hhcnBVbnJlc29sdmVkRmlsZSwKLQkJCQkJCWRvYy5FZGl0b3IsCi0JCQkJ
CQlkb2MuR2V0Rm9ybWF0dGluZ1BvbGljeSAoKSwKLQkJCQkJCW1ldGhvZCwgCi0JCQkJCQlmYWxz
ZSk7CisJCQkJCQkJZG9jLkNvbXBpbGF0aW9uLAorCQkJCQkJCWRvYy5QYXJzZWREb2N1bWVudC5Q
YXJzZWRGaWxlIGFzIENTaGFycFVucmVzb2x2ZWRGaWxlLAorCQkJCQkJCWRvYy5FZGl0b3IsCisJ
CQkJCQkJZG9jLkdldEZvcm1hdHRpbmdQb2xpY3kgKCksCisJCQkJCQkJbWV0aG9kLAorCQkJCQkJ
CWZhbHNlLAorCQkJCQkJCWNyZWF0ZUZvb3Rlcik7CiAJCQkJCX0KIAkJCQl9IGVsc2UgaWYgKHJl
c3VsdCBpcyBDU2hhcnBJbnZvY2F0aW9uUmVzb2x2ZVJlc3VsdCkgewogCQkJCQl2YXIgaW52b2Nh
dGlvblJlc3VsdCA9IChDU2hhcnBJbnZvY2F0aW9uUmVzb2x2ZVJlc3VsdClyZXN1bHQ7CkBAIC0y
OTIsMTYgKzI5NCwxOCBAQCBUb29sdGlwSW5mb3JtYXRpb24gQ3JlYXRlVG9vbHRpcCAoVG9vbFRp
cERhdGEgZGF0YSwgaW50IG9mZnNldCwgQW1iaWVuY2UgYW1iaWVuYwogCQkJCQkJZG9jLkVkaXRv
ciwKIAkJCQkJCWRvYy5HZXRGb3JtYXR0aW5nUG9saWN5ICgpLAogCQkJCQkJbWVtYmVyLCAKLQkJ
CQkJCWZhbHNlKTsKKwkJCQkJCWZhbHNlLAorCQkJCQkJY3JlYXRlRm9vdGVyKTsKIAkJCQl9IGVs
c2UgaWYgKHJlc3VsdCBpcyBNZW1iZXJSZXNvbHZlUmVzdWx0KSB7CiAJCQkJCXZhciBtZW1iZXIg
PSAoKE1lbWJlclJlc29sdmVSZXN1bHQpcmVzdWx0KS5NZW1iZXI7CiAJCQkJCXJldHVybiBNZW1i
ZXJDb21wbGV0aW9uRGF0YS5DcmVhdGVUb29sdGlwSW5mb3JtYXRpb24gKAotCQkJCQlkb2MuQ29t
cGlsYXRpb24sCi0JCQkJCWRvYy5QYXJzZWREb2N1bWVudC5QYXJzZWRGaWxlIGFzIENTaGFycFVu
cmVzb2x2ZWRGaWxlLAotCQkJCQlkb2MuRWRpdG9yLAotCQkJCQlkb2MuR2V0Rm9ybWF0dGluZ1Bv
bGljeSAoKSwKLQkJCQkJbWVtYmVyLCAKLQkJCQkJZmFsc2UpOworCQkJCQkJZG9jLkNvbXBpbGF0
aW9uLAorCQkJCQkJZG9jLlBhcnNlZERvY3VtZW50LlBhcnNlZEZpbGUgYXMgQ1NoYXJwVW5yZXNv
bHZlZEZpbGUsCisJCQkJCQlkb2MuRWRpdG9yLAorCQkJCQkJZG9jLkdldEZvcm1hdHRpbmdQb2xp
Y3kgKCksCisJCQkJCQltZW1iZXIsIAorCQkJCQkJZmFsc2UsCisJCQkJCQljcmVhdGVGb290ZXIp
OwogCQkJCX0gZWxzZSBpZiAocmVzdWx0IGlzIE5hbWVzcGFjZVJlc29sdmVSZXN1bHQpIHsKIAkJ
CQkJdmFyIHRvb2x0aXBJbmZvID0gbmV3IFRvb2x0aXBJbmZvcm1hdGlvbiAoKTsKIAkJCQkJdmFy
IHJlc29sdmVyID0gKGRvYy5QYXJzZWREb2N1bWVudC5QYXJzZWRGaWxlIGFzIENTaGFycFVucmVz
b2x2ZWRGaWxlKS5HZXRSZXNvbHZlciAoZG9jLkNvbXBpbGF0aW9uLCBkb2MuRWRpdG9yLkNhcmV0
LkxvY2F0aW9uKTsKQEAgLTMyOSwxMiArMzMzLDEzIEBAIFRvb2x0aXBJbmZvcm1hdGlvbiBDcmVh
dGVUb29sdGlwIChUb29sVGlwRGF0YSBkYXRhLCBpbnQgb2Zmc2V0LCBBbWJpZW5jZSBhbWJpZW5j
CiAJCQkJCXJldHVybiB0b29sdGlwSW5mbzsKIAkJCQl9IGVsc2UgewogCQkJCQlyZXR1cm4gTWVt
YmVyQ29tcGxldGlvbkRhdGEuQ3JlYXRlVG9vbHRpcEluZm9ybWF0aW9uICgKLQkJCQkJZG9jLkNv
bXBpbGF0aW9uLAotCQkJCQlkb2MuUGFyc2VkRG9jdW1lbnQuUGFyc2VkRmlsZSBhcyBDU2hhcnBV
bnJlc29sdmVkRmlsZSwKLQkJCQkJZG9jLkVkaXRvciwKLQkJCQkJZG9jLkdldEZvcm1hdHRpbmdQ
b2xpY3kgKCksCi0JCQkJCXJlc3VsdC5UeXBlLCAKLQkJCQkJZmFsc2UpOworCQkJCQkJZG9jLkNv
bXBpbGF0aW9uLAorCQkJCQkJZG9jLlBhcnNlZERvY3VtZW50LlBhcnNlZEZpbGUgYXMgQ1NoYXJw
VW5yZXNvbHZlZEZpbGUsCisJCQkJCQlkb2MuRWRpdG9yLAorCQkJCQkJZG9jLkdldEZvcm1hdHRp
bmdQb2xpY3kgKCksCisJCQkJCQlyZXN1bHQuVHlwZSwgCisJCQkJCQlmYWxzZSwKKwkJCQkJCWNy
ZWF0ZUZvb3Rlcik7CiAJCQkJfQogCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKIAkJCQlMb2dn
aW5nU2VydmljZS5Mb2dFcnJvciAoIkVycm9yIHdoaWxlIGNyZWF0aW5nIHRvb2x0aXAuIiwgZSk7
DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvQ1NoYXJwQmluZGluZy9Nb25vRGV2ZWxvcC5D
U2hhcnAvU2lnbmF0dXJlTWFya3VwQ3JlYXRvci5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTE2MTEsNSAr
MTYxMSw0NiBAQCBzdHJpbmcgSGlnaGxpZ2h0U2VtYW50aWNhbGx5IChzdHJpbmcgc3RyLCBDaHVu
a1N0eWxlIHN0eWxlKQogCQkJCXJldHVybiBzdHI7CiAJCQlyZXR1cm4gSGlnaGxpZ2h0IChzdHIs
IHN0eWxlKTsKIAkJfQorCisJCXB1YmxpYyBzdHJpbmcgQ3JlYXRlRm9vdGVyIChJRW50aXR5IGVu
dGl0eSkKKwkJeworCQkJdmFyIHR5cGUgPSBlbnRpdHkgYXMgSVR5cGU7CisJCQlpZiAodHlwZSAh
PSBudWxsKSB7CisJCQkJdmFyIGRlZiA9IHR5cGUuR2V0RGVmaW5pdGlvbiAoKTsKKwkJCQlpZiAo
ZGVmICE9IG51bGwpIHsKKwkJCQkJaWYgKCFkZWYuUmVnaW9uLklzRW1wdHkpIHsKKwkJCQkJCXZh
ciBwcm9qZWN0ID0gZGVmLkdldFNvdXJjZVByb2plY3QgKCk7CisJCQkJCQlpZiAocHJvamVjdCAh
PSBudWxsKSB7CisJCQkJCQkJdmFyIHJlbFBhdGggPSBGaWxlU2VydmljZS5BYnNvbHV0ZVRvUmVs
YXRpdmVQYXRoIChwcm9qZWN0LkJhc2VEaXJlY3RvcnksIGRlZi5SZWdpb24uRmlsZU5hbWUpOwor
CQkJCQkJCXJldHVybgorCQkJCQkJCQkoc3RyaW5nLklzTnVsbE9yRW1wdHkgKGRlZi5OYW1lc3Bh
Y2UpID8gIiIgOiAiPHNtYWxsPiIgKyBHZXR0ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJOYW1lc3Bh
Y2U6XHR7MH0iLCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAoZGVmLk5hbWVzcGFjZSkpICsg
Ijwvc21hbGw+IiArIEVudmlyb25tZW50Lk5ld0xpbmUpICsKKwkJCQkJCQkJIjxzbWFsbD4iICsg
R2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiUHJvamVjdDpcdHswfSIsIEFtYmllbmNlU2Vydmlj
ZS5Fc2NhcGVUZXh0IChkZWYuUGFyZW50QXNzZW1ibHkuQXNzZW1ibHlOYW1lKSkgKyAiPC9zbWFs
bD4iICsgRW52aXJvbm1lbnQuTmV3TGluZSArCisJCQkJCQkJCSI8c21hbGw+IiArIEdldHRleHRD
YXRhbG9nLkdldFN0cmluZyAoIkZpbGU6XHRcdHswfSAobGluZSB7MX0pIiwgQW1iaWVuY2VTZXJ2
aWNlLkVzY2FwZVRleHQgKHJlbFBhdGgpLCBkZWYuUmVnaW9uLkJlZ2luLkxpbmUpICsgIjwvc21h
bGw+IjsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCQlyZXR1cm4KKwkJCQkJCShzdHJpbmcuSXNOdWxs
T3JFbXB0eSAoZGVmLk5hbWVzcGFjZSkgPyAiIiA6ICI8c21hbGw+IiArIEdldHRleHRDYXRhbG9n
LkdldFN0cmluZyAoIk5hbWVzcGFjZTpcdHswfSIsIEFtYmllbmNlU2VydmljZS5Fc2NhcGVUZXh0
IChkZWYuTmFtZXNwYWNlKSkgKyAiPC9zbWFsbD4iICsgRW52aXJvbm1lbnQuTmV3TGluZSkgKwor
CQkJCQkJIjxzbWFsbD4iICsgR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiQXNzZW1ibHk6XHR7
MH0iLCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAoZGVmLlBhcmVudEFzc2VtYmx5LkFzc2Vt
Ymx5TmFtZSkpICsgIjwvc21hbGw+IjsKKwkJCQl9CisJCQkJcmV0dXJuIG51bGw7CisJCQl9IAor
CisJCQlpZiAoZW50aXR5LkRlY2xhcmluZ1R5cGVEZWZpbml0aW9uICE9IG51bGwpIHsKKwkJCQlp
ZiAoIWVudGl0eS5SZWdpb24uSXNFbXB0eSkgeworCQkJCQl2YXIgcHJvamVjdCA9IGVudGl0eS5E
ZWNsYXJpbmdUeXBlRGVmaW5pdGlvbi5HZXRTb3VyY2VQcm9qZWN0ICgpOworCQkJCQlpZiAocHJv
amVjdCAhPSBudWxsKSB7CisJCQkJCQl2YXIgcmVsUGF0aCA9IEZpbGVTZXJ2aWNlLkFic29sdXRl
VG9SZWxhdGl2ZVBhdGggKHByb2plY3QuQmFzZURpcmVjdG9yeSwgZW50aXR5LlJlZ2lvbi5GaWxl
TmFtZSk7CisJCQkJCQlyZXR1cm4KKwkJCQkJCQkiPHNtYWxsPiIgKyBHZXR0ZXh0Q2F0YWxvZy5H
ZXRTdHJpbmcgKCJQcm9qZWN0Olx0ezB9IiwgQW1iaWVuY2VTZXJ2aWNlLkVzY2FwZVRleHQgKHBy
b2plY3QuTmFtZSkpICsgIjwvc21hbGw+IiArIEVudmlyb25tZW50Lk5ld0xpbmUgKworCQkJCQkJ
CSI8c21hbGw+IiArIEdldHRleHRDYXRhbG9nLkdldFN0cmluZyAoIkZyb20gdHlwZTpcdHswfSIs
IEFtYmllbmNlU2VydmljZS5Fc2NhcGVUZXh0IChlbnRpdHkuRGVjbGFyaW5nVHlwZURlZmluaXRp
b24uRnVsbE5hbWUpKSArICI8L3NtYWxsPiIgKyBFbnZpcm9ubWVudC5OZXdMaW5lICsKKwkJCQkJ
CQkiPHNtYWxsPiIgKyBHZXR0ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJGaWxlOlx0XHR7MH0gKGxp
bmUgezF9KSIsIEFtYmllbmNlU2VydmljZS5Fc2NhcGVUZXh0IChyZWxQYXRoKSwgZW50aXR5LlJl
Z2lvbi5CZWdpbi5MaW5lKSArICI8L3NtYWxsPiI7CisJCQkJCX0KKwkJCQl9CisJCQkJcmV0dXJu
CisJCQkJCSI8c21hbGw+IiArIEdldHRleHRDYXRhbG9nLkdldFN0cmluZyAoIkZyb20gdHlwZTpc
dHswfSIsIEFtYmllbmNlU2VydmljZS5Fc2NhcGVUZXh0IChlbnRpdHkuRGVjbGFyaW5nVHlwZURl
ZmluaXRpb24uRnVsbE5hbWUpKSArICI8L3NtYWxsPiIgKyBFbnZpcm9ubWVudC5OZXdMaW5lICsK
KwkJCQkJIjxzbWFsbD4iICsgR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiQXNzZW1ibHk6XHR7
MH0iLCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAoZW50aXR5LkRlY2xhcmluZ1R5cGVEZWZp
bml0aW9uLlBhcmVudEFzc2VtYmx5LkFzc2VtYmx5TmFtZSkpICsgIjwvc21hbGw+IjsKKwkJCX0K
KwkJCXJldHVybiBudWxsOworCQl9CiAJfQogfQ0KDQogICBDb21taXQ6IDNmZDk1ZmE1NzEzZTNh
Yzk4OWYyY2Y5YjVlMDAxOThhYjQwNjNjYWYNCiAgIEF1dGhvcjogTWlrZSBLcsO8Z2VyIDxta3J1
ZWdlckB4YW1hcmluLmNvbT4gKG1rcnVlZ2VyKQ0KICAgICBEYXRlOiAyMDEzLTExLTE4IDA5OjQ1
OjUzIEdNVA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9j
b21taXQvM2ZkOTVmYTU3MTNlM2FjOTg5ZjJjZjliNWUwMDE5OGFiNDA2M2NhZg0KDQpCdW1wIG5y
ZWZhY3RvcnkuDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL2V4dGVybmFsL25yZWZhY3RvcnkK
DQpNb2RpZmllZDogbWFpbi9leHRlcm5hbC9ucmVmYWN0b3J5DQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMSAr
MSBAQAotU3VicHJvamVjdCBjb21taXQgNDY3ZGQ3NDgwMTllYWYwNDA0ODVkN2JmYjE2M2VhMDM4
M2QyOGEzOAorU3VicHJvamVjdCBjb21taXQgZWE3NWJhYzNmMzc0MDYxYmEzYzI4YWUwMGY3Yjk2
NTE4OWY5M2YzMQ0KDQogICBDb21taXQ6IDNiOTY1OTZmNGJiYjg2OTkzZTA0MGJhZmEzMGVhODFh
NzJlMjdmOTYNCiAgIEF1dGhvcjogVW5ndXJlYW51IE1hcml1cyA8dGVyb21hcmlvQHlhaG9vLmNv
bT4gKFRoZXJ6b2spDQogICAgIERhdGU6IDIwMTMtMTEtMTggMTI6MzY6MjYgR01UDQogICAgICBV
Ukw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC8zYjk2NTk2ZjRi
YmI4Njk5M2UwNDBiYWZhMzBlYTgxYTcyZTI3Zjk2DQoNCk1lcmdlIHB1bGwgcmVxdWVzdCAjNDM2
IGZyb20gbW9uby92Y3NUZXN0cwoKW1ZlcnNpb25Db250cm9sXSBJbXBsZW1lbnRlZCBiYWNrZW5k
IHNwZWNpZmljIHRlc3RzDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL3NyYy9hZGRpbnMvVmVy
c2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuR2l0LlRlc3RzL0Jhc2VHaXRS
ZXBvc2l0b3J5VGVzdHMuY3MKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25v
RGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQuVGVzdHMvQmFzZVJlcG9zaXRvcnlUZXN0cy5jcwog
IE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250
cm9sLkdpdC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQvR2l0UmVwb3NpdG9yeS5jcwog
IE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250
cm9sLlN1YnZlcnNpb24uVGVzdHMvQmFzZVN2blJlcG9zaXRvcnlUZXN0cy5jcwogIE0gbWFpbi9z
cmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLlN1YnZl
cnNpb24uVGVzdHMvUmVwb3NpdG9yeVRlc3RzLmNzCiAgTSBtYWluL3NyYy9hZGRpbnMvVmVyc2lv
bkNvbnRyb2wvU3VidmVyc2lvbi5XaW4zMi5UZXN0cy9SZXBvc2l0b3J5VGVzdHMuY3MKDQpNb2Rp
ZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25D
b250cm9sLkdpdC5UZXN0cy9CYXNlR2l0UmVwb3NpdG9yeVRlc3RzLmNzDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpA
QCAtMzIsMTQgKzMyLDE0IEBACiB1c2luZyBOR2l0LkFwaTsNCiB1c2luZyBOVW5pdC5GcmFtZXdv
cms7DQogdXNpbmcgU3lzdGVtLklPOw0KLXVzaW5nIFN5c3RlbTsNCiB1c2luZyBOR2l0LlN0b3Jh
Z2UuRmlsZTsNCiB1c2luZyBOR2l0LlJldndhbGs7DQordXNpbmcgU3lzdGVtLkxpbnE7DQogDQog
bmFtZXNwYWNlIE1vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdpdC5UZXN0cw0KIHsNCiAJW1Rl
c3RGaXh0dXJlXQ0KLQlwdWJsaWMgY2xhc3MgQmFzZUdpdFV0aWxzVGVzdCA6IEJhc2VSZXBvVXRp
bHNUZXN0DQorCXNlYWxlZCBjbGFzcyBCYXNlR2l0VXRpbHNUZXN0IDogQmFzZVJlcG9VdGlsc1Rl
c3QNCiAJew0KIAkJW1NldFVwXQ0KIAkJcHVibGljIG92ZXJyaWRlIHZvaWQgU2V0dXAgKCkNCkBA
IC0xNjEsNiArMTYxLDE4NCBAQCBwcm90ZWN0ZWQgb3ZlcnJpZGUgdm9pZCBCbGFtZUV4dHJhSW50
ZXJuYWxzIChBbm5vdGF0aW9uIFtdIGFubm90YXRpb25zKQogCQkJQXNzZXJ0LklzVHJ1ZSAoYW5u
b3RhdGlvbnMgWzJdLkhhc0RhdGUpOw0KIAkJfQ0KIA0KKwkJW1Rlc3RdDQorCQlwdWJsaWMgdm9p
ZCBUZXN0R2l0U3Rhc2ggKCkNCisJCXsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlS
ZXBvOw0KKwkJCUFkZEZpbGUgKCJmaWxlMiIsICJub3RoaW5nIiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJ
QWRkRmlsZSAoImZpbGUxIiwgInRleHQiLCB0cnVlLCBmYWxzZSk7DQorCQkJcmVwbzIuR2V0U3Rh
c2hlcyAoKS5DcmVhdGUgKG51bGwpOw0KKwkJCUFzc2VydC5Jc1RydWUgKCFGaWxlLkV4aXN0cyAo
Um9vdENoZWNrb3V0ICsgImZpbGUxIiksICJTdGFzaCBjcmVhdGlvbiBmYWlsdXJlIik7DQorCQkJ
cmVwbzIuR2V0U3Rhc2hlcyAoKS5Qb3AgKG51bGwpOw0KKw0KKwkJCVZlcnNpb25JbmZvIHZpID0g
cmVwbzIuR2V0VmVyc2lvbkluZm8gKFJvb3RDaGVja291dCArICJmaWxlMSIsIFZlcnNpb25JbmZv
UXVlcnlGbGFncy5JZ25vcmVDYWNoZSk7DQorCQkJQXNzZXJ0LkFyZUVxdWFsIChWZXJzaW9uU3Rh
dHVzLlNjaGVkdWxlZEFkZCwgdmkuU3RhdHVzICYgVmVyc2lvblN0YXR1cy5TY2hlZHVsZWRBZGQs
ICJTdGFzaCBwb3AgZmFpbHVyZSIpOw0KKwkJfQ0KKw0KKwkJW1Rlc3RdDQorCQlwdWJsaWMgdm9p
ZCBUZXN0R2l0QnJhbmNoQ3JlYXRpb24gKCkNCisJCXsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVw
b3NpdG9yeSlSZXBvOw0KKw0KKwkJCUFkZEZpbGUgKCJmaWxlMSIsICJ0ZXh0IiwgdHJ1ZSwgdHJ1
ZSk7DQorCQkJcmVwbzIuQ3JlYXRlQnJhbmNoICgiYnJhbmNoMSIsIG51bGwpOw0KKw0KKwkJCXJl
cG8yLlN3aXRjaFRvQnJhbmNoIChuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3Jp
bmcuTnVsbFByb2dyZXNzTW9uaXRvciAoKSwgImJyYW5jaDEiKTsNCisJCQlBc3NlcnQuQXJlRXF1
YWwgKCJicmFuY2gxIiwgcmVwbzIuR2V0Q3VycmVudEJyYW5jaCAoKSk7DQorCQkJQXNzZXJ0Lklz
VHJ1ZSAoRmlsZS5FeGlzdHMgKFJvb3RDaGVja291dCArICJmaWxlMSIpLCAiQnJhbmNoIG5vdCBp
bmhlcml0aW5nIGZyb20gY3VycmVudC4iKTsNCisNCisJCQlBZGRGaWxlICgiZmlsZTIiLCAidGV4
dCIsIHRydWUsIGZhbHNlKTsNCisJCQlyZXBvMi5DcmVhdGVCcmFuY2ggKCJicmFuY2gyIiwgbnVs
bCk7DQorCQkJcmVwbzIuU3dpdGNoVG9CcmFuY2ggKG5ldyBNb25vRGV2ZWxvcC5Db3JlLlByb2dy
ZXNzTW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NNb25pdG9yICgpLCAiYnJhbmNoMiIpOw0KKwkJCUFz
c2VydC5Jc1RydWUgKCFGaWxlLkV4aXN0cyAoUm9vdENoZWNrb3V0ICsgImZpbGUyIiksICJVbmNv
bW1pdHRlZCBjaGFuZ2VzIHdlcmUgbm90IHN0YXNoZWQiKTsNCisJCQlyZXBvMi5HZXRTdGFzaGVz
ICgpLlBvcCAobmV3IE51bGxQcm9ncmVzc01vbml0b3IgKCkpOw0KKw0KKwkJCUFzc2VydC5Jc1Ry
dWUgKEZpbGUuRXhpc3RzIChSb290Q2hlY2tvdXQgKyAiZmlsZTIiKSwgIlVuY29tbWl0dGVkIGNo
YW5nZXMgd2VyZSBub3Qgc3Rhc2hlZCBjb3JyZWN0bHkiKTsNCisNCisJCQlyZXBvMi5Td2l0Y2hU
b0JyYW5jaCAobmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9n
cmVzc01vbml0b3IgKCksICJtYXN0ZXIiKTsNCisJCQlyZXBvMi5SZW1vdmVCcmFuY2ggKCJicmFu
Y2gxIik7DQorCQkJQXNzZXJ0LklzRmFsc2UgKHJlcG8yLkdldEJyYW5jaGVzICgpLkFueSAoYiA9
PiBiLk5hbWUgPT0gImJyYW5jaDEiKSwgIkZhaWxlZCB0byBkZWxldGUgYnJhbmNoIik7DQorDQor
CQkJcmVwbzIuUmVuYW1lQnJhbmNoICgiYnJhbmNoMiIsICJicmFuY2gzIik7DQorCQkJQXNzZXJ0
LklzVHJ1ZSAocmVwbzIuR2V0QnJhbmNoZXMgKCkuQW55IChiID0+IGIuTmFtZSA9PSAiYnJhbmNo
MyIpICYmIHJlcG8yLkdldEJyYW5jaGVzICgpLkFsbCAoYiA9PiBiLk5hbWUgIT0gImJyYW5jaDIi
KSwgIkZhaWxlZCB0byByZW5hbWUgYnJhbmNoIik7DQorCQl9DQorDQorCQlbVGVzdF0NCisJCXB1
YmxpYyB2b2lkIFRlc3RHaXRTeW5jQnJhbmNoZXMgKCkNCisJCXsNCisJCQl2YXIgcmVwbzIgPSAo
R2l0UmVwb3NpdG9yeSlSZXBvOw0KKwkJCUFkZEZpbGUgKCJmaWxlMSIsICJ0ZXh0IiwgdHJ1ZSwg
dHJ1ZSk7DQorCQkJUG9zdENvbW1pdCAocmVwbzIpOw0KKw0KKwkJCXJlcG8yLkNyZWF0ZUJyYW5j
aCAoImJyYW5jaDMiLCBudWxsKTsNCisJCQlyZXBvMi5Td2l0Y2hUb0JyYW5jaCAobmV3IE1vbm9E
ZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVzc01vbml0b3IgKCksICJi
cmFuY2gzIik7DQorCQkJQWRkRmlsZSAoImZpbGUyIiwgImFzZGYiLCB0cnVlLCB0cnVlKTsNCisJ
CQlyZXBvMi5QdXNoIChuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVs
bFByb2dyZXNzTW9uaXRvciAoKSwgIm9yaWdpbiIsICJicmFuY2gzIik7DQorDQorCQkJcmVwbzIu
U3dpdGNoVG9CcmFuY2ggKG5ldyBNb25vRGV2ZWxvcC5Db3JlLlByb2dyZXNzTW9uaXRvcmluZy5O
dWxsUHJvZ3Jlc3NNb25pdG9yICgpLCAibWFzdGVyIik7DQorDQorCQkJcmVwbzIuQ3JlYXRlQnJh
bmNoICgiYnJhbmNoNCIsICJvcmlnaW4vYnJhbmNoMyIpOw0KKwkJCXJlcG8yLlN3aXRjaFRvQnJh
bmNoIChuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVsbFByb2dyZXNz
TW9uaXRvciAoKSwgImJyYW5jaDQiKTsNCisJCQlBc3NlcnQuSXNUcnVlIChGaWxlLkV4aXN0cyAo
Um9vdENoZWNrb3V0ICsgImZpbGUyIiksICJUcmFja2luZyByZW1vdGUgaXMgbm90IGdyYWJiaW5n
IGNvcnJlY3QgY29tbWl0cyIpOw0KKwkJfQ0KKw0KKwkJW1Rlc3RdDQorCQlwdWJsaWMgdm9pZCBU
ZXN0UHVzaENoYW5nZXNldCAoKQ0KKwkJew0KKwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5
KVJlcG87DQorCQkJQWRkRmlsZSAoImZpbGUiLCAibWVoIiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJUG9z
dENvbW1pdCAocmVwbzIpOw0KKw0KKwkJCUFkZEZpbGUgKCJmaWxlMSIsICJ0ZXh0IiwgdHJ1ZSwg
dHJ1ZSk7DQorCQkJQWRkRmlsZSAoImZpbGUyIiwgInRleHQyIiwgdHJ1ZSwgdHJ1ZSk7DQorDQor
CQkJQ2hhbmdlU2V0IGRpZmYgPSByZXBvMi5HZXRQdXNoQ2hhbmdlU2V0ICgib3JpZ2luIiwgIm1h
c3RlciIpOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoMiwgZGlmZi5JdGVtcy5Db3VudCAoKSk7DQor
DQorCQkJQ2hhbmdlU2V0SXRlbSBpdGVtID0gZGlmZi5HZXRGaWxlSXRlbSAoUm9vdENoZWNrb3V0
ICsgImZpbGUxIik7DQorCQkJQXNzZXJ0LklzTm90TnVsbCAoaXRlbSk7DQorCQkJQXNzZXJ0LkFy
ZUVxdWFsIChWZXJzaW9uU3RhdHVzLlNjaGVkdWxlZEFkZCwgaXRlbS5TdGF0dXMgJiBWZXJzaW9u
U3RhdHVzLlNjaGVkdWxlZEFkZCk7DQorDQorCQkJaXRlbSA9IGRpZmYuR2V0RmlsZUl0ZW0gKFJv
b3RDaGVja291dCArICJmaWxlMSIpOw0KKwkJCUFzc2VydC5Jc05vdE51bGwgKGl0ZW0pOw0KKwkJ
CUFzc2VydC5BcmVFcXVhbCAoVmVyc2lvblN0YXR1cy5TY2hlZHVsZWRBZGQsIGl0ZW0uU3RhdHVz
ICYgVmVyc2lvblN0YXR1cy5TY2hlZHVsZWRBZGQpOw0KKwkJfQ0KKw0KKwkJW1Rlc3RdDQorCQlb
SWdub3JlICgiR2V0UHVzaERpZmYgY29udGVudCBpcyBhbHdheXMgZW1wdHkiKV0NCisJCXB1Ymxp
YyB2b2lkIFRlc3RQdXNoRGlmZiAoKQ0KKwkJew0KKwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0
b3J5KVJlcG87DQorCQkJQWRkRmlsZSAoImZpbGUiLCAibWVoIiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJ
UG9zdENvbW1pdCAocmVwbzIpOw0KKw0KKwkJCUFkZEZpbGUgKCJmaWxlMSIsICJ0ZXh0IiwgdHJ1
ZSwgdHJ1ZSk7DQorCQkJQWRkRmlsZSAoImZpbGUyIiwgInRleHQyIiwgdHJ1ZSwgdHJ1ZSk7DQor
DQorCQkJRGlmZkluZm9bXSBkaWZmID0gcmVwbzIuR2V0UHVzaERpZmYgKCJvcmlnaW4iLCAibWFz
dGVyIik7DQorCQkJQXNzZXJ0LkFyZUVxdWFsICgyLCBkaWZmLkxlbmd0aCk7DQorDQorCQkJRGlm
ZkluZm8gaXRlbSA9IGRpZmYgWzBdOw0KKwkJCUFzc2VydC5Jc05vdE51bGwgKGl0ZW0pOw0KKwkJ
CUFzc2VydC5BcmVFcXVhbCAoImZpbGUxIiwgaXRlbS5GaWxlTmFtZS5GaWxlTmFtZSk7DQorCQkJ
Ly9Bc3NlcnQuQXJlRXF1YWwgKCJ0ZXh0IiwgaXRlbS5Db250ZW50KTsNCisNCisJCQlpdGVtID0g
ZGlmZiBbMV07DQorCQkJQXNzZXJ0LklzTm90TnVsbCAoaXRlbSk7DQorCQkJQXNzZXJ0LkFyZUVx
dWFsICgiZmlsZTIiLCBpdGVtLkZpbGVOYW1lLkZpbGVOYW1lKTsNCisJCQkvL0Fzc2VydC5BcmVF
cXVhbCAoInRleHQyIiwgaXRlbS5Db250ZW50KTsNCisJCX0NCisNCisJCVtUZXN0XQ0KKwkJcHVi
bGljIHZvaWQgVGVzdEdpdFVybCAoKQ0KKwkJew0KKwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0
b3J5KVJlcG87DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAoImdpdEBnaXRo
dWIuY29tOm1vbm8vbW9ub2RldmVsb3AiKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNV
cmxWYWxpZCAoImdpdDovL2dpdGh1Yi5jb206ODAvbW9uby9tb25vZGV2ZWxvcC5naXQiKSk7DQor
CQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAoInNzaDovL3VzZXJAaG9zdC5jb206
ODAvbW9uby9tb25vZGV2ZWxvcC5naXQiKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNV
cmxWYWxpZCAoImh0dHA6Ly9naXRodWIuY29tOjgwL21vbm8vbW9ub2RldmVsb3AuZ2l0IikpOw0K
KwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJodHRwczovL2dpdGh1Yi5jb206
ODAvbW9uby9tb25vZGV2ZWxvcC5naXQiKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNV
cmxWYWxpZCAoImZ0cDovL2dpdGh1Yi5jb206ODAvbW9uby9tb25vZGV2ZWxvcC5naXQiKSk7DQor
CQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAoImZ0cHM6Ly9naXRodWIuY29tOjgw
L21vbm8vbW9ub2RldmVsb3AuZ2l0IikpOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJs
VmFsaWQgKCJmaWxlOi8vL21vbm8vbW9ub2RldmVsb3AuZ2l0IikpOw0KKwkJCUFzc2VydC5Jc1Ry
dWUgKHJlcG8yLklzVXJsVmFsaWQgKCJyc3luYzovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxw
by5naXQiKSk7DQorCQl9DQorDQorCQlbVGVzdF0NCisJCXB1YmxpYyB2b2lkIFRlc3RSZW1vdGUg
KCkNCisJCXsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlSZXBvOw0KKw0KKwkJCUFz
c2VydC5BcmVFcXVhbCAoIm9yaWdpbiIsIHJlcG8yLkdldEN1cnJlbnRSZW1vdGUgKCkpOw0KKw0K
KwkJCUFkZEZpbGUgKCJmaWxlMSIsICJ0ZXh0IiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJUG9zdENvbW1p
dCAocmVwbzIpOw0KKwkJCXJlcG8yLkNyZWF0ZUJyYW5jaCAoImJyYW5jaDEiLCBudWxsKTsNCisJ
CQlyZXBvMi5Td2l0Y2hUb0JyYW5jaCAobmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25p
dG9yaW5nLk51bGxQcm9ncmVzc01vbml0b3IgKCksICJicmFuY2gxIik7DQorCQkJQWRkRmlsZSAo
ImZpbGUyIiwgInRleHQiLCB0cnVlLCB0cnVlKTsNCisJCQlQb3N0Q29tbWl0IChyZXBvMik7DQor
CQkJQXNzZXJ0LkFyZUVxdWFsICgyLCByZXBvMi5HZXRCcmFuY2hlcyAoKS5Db3VudCAoKSk7DQor
CQkJQXNzZXJ0LkFyZUVxdWFsICgxLCByZXBvMi5HZXRSZW1vdGVzICgpLkNvdW50ICgpKTsNCisN
CisJCQlyZXBvMi5SZW5hbWVSZW1vdGUgKCJvcmlnaW4iLCAib3RoZXIiKTsNCisJCQlBc3NlcnQu
QXJlRXF1YWwgKCJvdGhlciIsIHJlcG8yLkdldEN1cnJlbnRSZW1vdGUgKCkpOw0KKw0KKwkJCXJl
cG8yLlJlbW92ZVJlbW90ZSAoIm90aGVyIik7DQorCQkJQXNzZXJ0LklzRmFsc2UgKHJlcG8yLkdl
dFJlbW90ZXMgKCkuQW55ICgpKTsNCisJCX0NCisNCisJCVtUZXN0XQ0KKwkJcHVibGljIHZvaWQg
VGVzdElzTWVyZ2VkICgpDQorCQl7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVw
bzsNCisJCQlBZGRGaWxlICgiZmlsZTEiLCAidGV4dCIsIHRydWUsIHRydWUpOw0KKw0KKwkJCUFz
c2VydC5Jc1RydWUgKHJlcG8yLklzQnJhbmNoTWVyZ2VkICgibWFzdGVyIikpOw0KKw0KKwkJCXJl
cG8yLkNyZWF0ZUJyYW5jaCAoImJyYW5jaDEiLCBudWxsKTsNCisJCQlyZXBvMi5Td2l0Y2hUb0Jy
YW5jaCAobmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVz
c01vbml0b3IgKCksICJicmFuY2gxIik7DQorCQkJQWRkRmlsZSAoImZpbGUyIiwgInRleHQiLCB0
cnVlLCB0cnVlKTsNCisNCisJCQlyZXBvMi5Td2l0Y2hUb0JyYW5jaCAobmV3IE1vbm9EZXZlbG9w
LkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVzc01vbml0b3IgKCksICJtYXN0ZXIi
KTsNCisJCQlBc3NlcnQuSXNGYWxzZSAocmVwbzIuSXNCcmFuY2hNZXJnZWQgKCJicmFuY2gxIikp
Ow0KKwkJCXJlcG8yLk1lcmdlICgiYnJhbmNoMSIsIEdpdFVwZGF0ZU9wdGlvbnMuTm9ybWFsVXBk
YXRlLCBuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVsbFByb2dyZXNz
TW9uaXRvciAoKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNCcmFuY2hNZXJnZWQgKCJi
cmFuY2gxIikpOw0KKwkJfQ0KKw0KKwkJW1Rlc3RdDQorCQlwdWJsaWMgdm9pZCBUZXN0VGFncyAo
KQ0KKwkJew0KKwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KVJlcG87DQorCQkJQWRkRmls
ZSAoImZpbGUxIiwgInRleHQiLCB0cnVlLCB0cnVlKTsNCisJCQlyZXBvMi5BZGRUYWcgKCJ0YWcx
IiwgR2V0SGVhZFJldmlzaW9uICgpLCAibXktdGFnIik7DQorCQkJQXNzZXJ0LkFyZUVxdWFsICgx
LCByZXBvMi5HZXRUYWdzICgpLkNvdW50ICgpKTsNCisJCQlBc3NlcnQuQXJlRXF1YWwgKCJ0YWcx
IiwgcmVwbzIuR2V0VGFncyAoKS5GaXJzdCAoKSk7DQorCQkJcmVwbzIuUmVtb3ZlVGFnICgidGFn
MSIpOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoMCwgcmVwbzIuR2V0VGFncyAoKS5Db3VudCAoKSk7
DQorCQl9DQorDQorCQkvLyBUT0RPOiBUZXN0IHJlYmFzZSBhbmQgbWVyZ2UgLSBUaGlzIGlzIGJy
b2tlbiBvbiBXaW5kb3dzDQorDQogCQlwcm90ZWN0ZWQgb3ZlcnJpZGUgUmVwb3NpdG9yeSBHZXRS
ZXBvIChzdHJpbmcgcGF0aCwgc3RyaW5nIHVybCkNCiAJCXsNCiAJCQlyZXR1cm4gbmV3IEdpdFJl
cG9zaXRvcnkgKHBhdGgsIHVybCk7DQ0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNp
b25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdpdC5UZXN0cy9CYXNlUmVwb3Np
dG9yeVRlc3RzLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIE1v
bm9EZXZlbG9wLlZlcnNpb25Db250cm9sLlRlc3RzCiB7CiAJW1Rlc3RGaXh0dXJlXQotCXB1Ymxp
YyBhYnN0cmFjdCBjbGFzcyBCYXNlUmVwb1V0aWxzVGVzdAorCWFic3RyYWN0IGNsYXNzIEJhc2VS
ZXBvVXRpbHNUZXN0CiAJewogCQkvLyBbR2l0XSBTZXQgdXNlciBhbmQgZW1haWwuCiAJCXByb3Rl
Y3RlZCBjb25zdCBzdHJpbmcgQXV0aG9yID0gImF1dGhvciI7DQoNCk1vZGlmaWVkOiBtYWluL3Ny
Yy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuR2l0L01v
bm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdpdC9HaXRSZXBvc2l0b3J5LmNzDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQpAQCAtMTU1Nyw3ICsxNTU3LDcgQEAgcHVibGljIENoYW5nZVNldCBHZXRQdXNoQ2hhbmdlU2V0
IChzdHJpbmcgcmVtb3RlLCBzdHJpbmcgYnJhbmNoKQogCQkJQ2hhbmdlU2V0IGNzZXQgPSBDcmVh
dGVDaGFuZ2VTZXQgKFJvb3RQYXRoKTsKIAkJCU9iamVjdElkIGNpZDEgPSBSb290UmVwb3NpdG9y
eS5SZXNvbHZlIChyZW1vdGUgKyAiLyIgKyBicmFuY2gpOwogCQkJT2JqZWN0SWQgY2lkMiA9IFJv
b3RSZXBvc2l0b3J5LlJlc29sdmUgKFJvb3RSZXBvc2l0b3J5LkdldEJyYW5jaCAoKSk7Ci0JCQlS
ZXZXYWxrIHJ3ID0gbmV3IFJldldhbGsgKFJvb3RSZXBvc2l0b3J5KTsKKwkJCVJldldhbGsJcncg
PSBuZXcgUmV2V2FsayAoUm9vdFJlcG9zaXRvcnkpOwogCQkJUmV2Q29tbWl0IGMxID0gcncuUGFy
c2VDb21taXQgKGNpZDEpOwogCQkJUmV2Q29tbWl0IGMyID0gcncuUGFyc2VDb21taXQgKGNpZDIp
OwogCQkJCkBAIC0xNTg5LDcgKzE1ODksNyBAQCBwdWJsaWMgRGlmZkluZm9bXSBHZXRQdXNoRGlm
ZiAoc3RyaW5nIHJlbW90ZSwgc3RyaW5nIGJyYW5jaCkKIAkJCVJldkNvbW1pdCBjMiA9IHJ3LlBh
cnNlQ29tbWl0IChjaWQyKTsKIAkJCQogCQkJTGlzdDxEaWZmSW5mbz4gZGlmZnMgPSBuZXcgTGlz
dDxEaWZmSW5mbz4gKCk7Ci0JCQlmb3JlYWNoICh2YXIgY2hhbmdlIGluIEdpdFV0aWwuQ29tcGFy
ZUNvbW1pdHMgKFJvb3RSZXBvc2l0b3J5LCBjMSwgYzIpKSB7CisJCQlmb3JlYWNoICh2YXIgY2hh
bmdlIGluIEdpdFV0aWwuQ29tcGFyZUNvbW1pdHMgKFJvb3RSZXBvc2l0b3J5LCBjMiwgYzEpKSB7
CiAJCQkJc3RyaW5nIGRpZmY7CiAJCQkJc3dpdGNoIChjaGFuZ2UuR2V0Q2hhbmdlVHlwZSAoKSkg
ewogCQkJCWNhc2UgRGlmZkVudHJ5LkNoYW5nZVR5cGUuREVMRVRFOg0KDQpNb2RpZmllZDogbWFp
bi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLlN1
YnZlcnNpb24uVGVzdHMvQmFzZVN2blJlcG9zaXRvcnlUZXN0cy5jcw0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAg
LTMzLDkgKzMzLDkgQEAKIG5hbWVzcGFjZSBNb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2
ZXJzaW9uLlRlc3RzDQogew0KIAlbVGVzdEZpeHR1cmVdDQotCXB1YmxpYyBhYnN0cmFjdCBjbGFz
cyBCYXNlU3ZuVXRpbHNUZXN0IDogQmFzZVJlcG9VdGlsc1Rlc3QNCisJYWJzdHJhY3QgY2xhc3Mg
QmFzZVN2blV0aWxzVGVzdCA6IEJhc2VSZXBvVXRpbHNUZXN0DQogCXsNCi0JCXByb3RlY3RlZCBQ
cm9jZXNzIHN2blNlcnZlID0gbnVsbDsNCisJCXByb3RlY3RlZCBQcm9jZXNzIFN2blNlcnZlID0g
bnVsbDsNCiANCiAJCVtTZXRVcF0NCiAJCXB1YmxpYyBvdmVycmlkZSB2b2lkIFNldHVwICgpDQpA
QCAtNTksMTMgKzU5LDEzIEBAIHB1YmxpYyBvdmVycmlkZSB2b2lkIFNldHVwICgpCiAJCQkvLyBD
cmVhdGUgaG9zdCAoV2luMzIpDQogCQkJLy8gVGhpcyBuZWVkcyB0byBiZSBkb25lIGFmdGVyIGRv
aW5nIHRoZSBzdm5BZG1pbiBjcmVhdGlvbi4NCiAJCQkvLyBBbmQgYmVmb3JlIGNoZWNrb3V0Lg0K
LQkJCWlmIChzdm5TZXJ2ZSAhPSBudWxsKSB7DQorCQkJaWYgKFN2blNlcnZlICE9IG51bGwpIHsN
CiAJCQkJaW5mbyA9IG5ldyBQcm9jZXNzU3RhcnRJbmZvICgpOw0KIAkJCQlpbmZvLkZpbGVOYW1l
ID0gInN2bnNlcnZlIjsNCiAJCQkJaW5mby5Bcmd1bWVudHMgPSAiLWRyICIgKyBSb290VXJsOw0K
IAkJCQlpbmZvLldpbmRvd1N0eWxlID0gUHJvY2Vzc1dpbmRvd1N0eWxlLkhpZGRlbjsNCi0JCQkJ
c3ZuU2VydmUuU3RhcnRJbmZvID0gaW5mbzsNCi0JCQkJc3ZuU2VydmUuU3RhcnQgKCk7DQorCQkJ
CVN2blNlcnZlLlN0YXJ0SW5mbyA9IGluZm87DQorCQkJCVN2blNlcnZlLlN0YXJ0ICgpOw0KIA0K
IAkJCQkvLyBDcmVhdGUgdXNlciB0byBhdXRoLg0KIAkJCQl1c2luZyAodmFyIHBlcm0gPSBGaWxl
LiBDcmVhdGVUZXh0IChSb290VXJsICsgUGF0aC5EaXJlY3RvcnlTZXBhcmF0b3JDaGFyICsgInJl
cG8iICsNDQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9ub0Rl
dmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5UZXN0cy9SZXBvc2l0b3J5VGVzdHMuY3MN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2UgVmVyc2lvbkNvbnRyb2wu
U3VidmVyc2lvbi5Vbml4LlRlc3RzCiB7CiAJW1Rlc3RGaXh0dXJlXQotCXB1YmxpYyBjbGFzcyBV
bml4U3ZuVXRpbHNUZXN0IDogTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5U
ZXN0cy5CYXNlU3ZuVXRpbHNUZXN0CisJc2VhbGVkIGNsYXNzIFVuaXhTdm5VdGlsc1Rlc3QgOiBN
b25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLlRlc3RzLkJhc2VTdm5VdGlsc1Rl
c3QKIAl7CiAJCVN1YnZlcnNpb25CYWNrZW5kIFN2bkNsaWVudCB7CiAJCQlnZXQgeyByZXR1cm4g
UmVwby5Tdm47IH0NCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9T
dWJ2ZXJzaW9uLldpbjMyLlRlc3RzL1JlcG9zaXRvcnlUZXN0cy5jcw0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAg
LTM2LDIxICszNiwyMSBAQAogbmFtZXNwYWNlIE1vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLlN1
YnZlcnNpb24uVGVzdHMNCiB7DQogCVtUZXN0Rml4dHVyZV0NCi0JcHVibGljIGNsYXNzIFNoYXJw
U3ZuVXRpbHNUZXN0IDogQmFzZVN2blV0aWxzVGVzdA0KKwlzZWFsZWQgY2xhc3MgU2hhcnBTdm5V
dGlsc1Rlc3QgOiBCYXNlU3ZuVXRpbHNUZXN0DQogCXsNCiAJCVtTZXRVcF0NCiAJCXB1YmxpYyBv
dmVycmlkZSB2b2lkIFNldHVwICgpDQogCQl7DQogCQkJUm9vdFVybCA9IG5ldyBGaWxlUGF0aCAo
RmlsZVNlcnZpY2UuQ3JlYXRlVGVtcERpcmVjdG9yeSAoKSk7DQogCQkJUmVwb0xvY2F0aW9uID0g
InN2bjovL2xvY2FsaG9zdDozNjkwL3JlcG8iOw0KLQkJCXN2blNlcnZlID0gbmV3IFByb2Nlc3Mg
KCk7DQorCQkJU3ZuU2VydmUgPSBuZXcgUHJvY2VzcyAoKTsNCiAJCQliYXNlLlNldHVwICgpOw0K
IAkJfQ0KIA0KIAkJW1RlYXJEb3duXQ0KIAkJcHVibGljIG92ZXJyaWRlIHZvaWQgVGVhckRvd24g
KCkNCiAJCXsNCi0JCQlzdm5TZXJ2ZS5LaWxsICgpOw0KKwkJCVN2blNlcnZlLktpbGwgKCk7DQog
DQogCQkJYmFzZS5UZWFyRG93biAoKTsNCiAJCX0NDQoNCiAgIENvbW1pdDogZmRlNThhNDg3ZTM5
OTViNDViYzk3MGI4NTg4M2RmNzMzMGViMjgwMw0KICAgQXV0aG9yOiBUaGVyem9rIDx0ZXJvbWFy
aW9AeWFob28uY29tPiAoVGhlcnpvaykNCiAgICAgRGF0ZTogMjAxMy0xMS0xOCAxMzoxMzoyMiBH
TVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0
L2ZkZTU4YTQ4N2UzOTk1YjQ1YmM5NzBiODU4ODNkZjczMzBlYjI4MDMNCg0KW0dpdF0gRml4IGEg
dGVzdC4NCg0KQ2hhbmdlZCBwYXRoczoKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJv
bC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQuVGVzdHMvQmFzZUdpdFJlcG9zaXRvcnlU
ZXN0cy5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9ub0Rl
dmVsb3AuVmVyc2lvbkNvbnRyb2wuR2l0LlRlc3RzL0Jhc2VHaXRSZXBvc2l0b3J5VGVzdHMuY3MN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCkBAIC0xNjcsOSArMTY3LDkgQEAgcHVibGljIHZvaWQgVGVzdEdpdFN0YXNo
ICgpCiAJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlSZXBvOw0KIAkJCUFkZEZpbGUgKCJm
aWxlMiIsICJub3RoaW5nIiwgdHJ1ZSwgdHJ1ZSk7DQogCQkJQWRkRmlsZSAoImZpbGUxIiwgInRl
eHQiLCB0cnVlLCBmYWxzZSk7DQotCQkJcmVwbzIuR2V0U3Rhc2hlcyAoKS5DcmVhdGUgKG51bGwp
Ow0KKwkJCXJlcG8yLkdldFN0YXNoZXMgKCkuQ3JlYXRlIChuZXcgTnVsbFByb2dyZXNzTW9uaXRv
ciAoKSk7DQogCQkJQXNzZXJ0LklzVHJ1ZSAoIUZpbGUuRXhpc3RzIChSb290Q2hlY2tvdXQgKyAi
ZmlsZTEiKSwgIlN0YXNoIGNyZWF0aW9uIGZhaWx1cmUiKTsNCi0JCQlyZXBvMi5HZXRTdGFzaGVz
ICgpLlBvcCAobnVsbCk7DQorCQkJcmVwbzIuR2V0U3Rhc2hlcyAoKS5Qb3AgKG5ldyBOdWxsUHJv
Z3Jlc3NNb25pdG9yICgpKTsNCiANCiAJCQlWZXJzaW9uSW5mbyB2aSA9IHJlcG8yLkdldFZlcnNp
b25JbmZvIChSb290Q2hlY2tvdXQgKyAiZmlsZTEiLCBWZXJzaW9uSW5mb1F1ZXJ5RmxhZ3MuSWdu
b3JlQ2FjaGUpOw0KIAkJCUFzc2VydC5BcmVFcXVhbCAoVmVyc2lvblN0YXR1cy5TY2hlZHVsZWRB
ZGQsIHZpLlN0YXR1cyAmIFZlcnNpb25TdGF0dXMuU2NoZWR1bGVkQWRkLCAiU3Rhc2ggcG9wIGZh
aWx1cmUiKTsNDQoNCiAgIENvbW1pdDogYjAzNjMzYzM5MTU3MWYwNDcyMzNmODQ0MTk4ZjFhOTY4
ZDY0MDIyOA0KICAgQXV0aG9yOiBUaGVyem9rIDx0ZXJvbWFyaW9AeWFob28uY29tPiAoVGhlcnpv
aykNCiAgICAgRGF0ZTogMjAxMy0xMS0xOCAxNDo1MDoxMCBHTVQNCiAgICAgIFVSTDogaHR0cHM6
Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0L2IwMzYzM2MzOTE1NzFmMDQ3MjMz
Zjg0NDE5OGYxYTk2OGQ2NDAyMjgNCg0KW0dpdF0gVW5pdCB0ZXN0cyBjbGVhbnVwLg0KDQpDaGFu
Z2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9w
LlZlcnNpb25Db250cm9sLkdpdC5UZXN0cy9CYXNlR2l0UmVwb3NpdG9yeVRlc3RzLmNzCg0KTW9k
aWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9u
Q29udHJvbC5HaXQuVGVzdHMvQmFzZUdpdFJlcG9zaXRvcnlUZXN0cy5jcw0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
QEAgLTUxLDExICs1MSwxMSBAQCBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBTZXR1cCAoKQogCQkJUmVw
b0xvY2F0aW9uID0gImZpbGU6Ly8vIiArIFJvb3RVcmwuRnVsbFBhdGggKyAicmVwby5naXQiOw0K
IA0KIAkJCS8vIEluaXRpYWxpemUgdGhlIGJhcmUgcmVwby4NCi0JCQlJbml0Q29tbWFuZCBjaSA9
IG5ldyBJbml0Q29tbWFuZCAoKTsNCisJCQl2YXIgY2kgPSBuZXcgSW5pdENvbW1hbmQgKCk7DQog
CQkJY2kuU2V0RGlyZWN0b3J5IChuZXcgU2hhcnBlbi5GaWxlUGF0aCAoUm9vdFVybC5GdWxsUGF0
aCArICJyZXBvLmdpdCIpKTsNCiAJCQljaS5TZXRCYXJlICh0cnVlKTsNCiAJCQljaS5DYWxsICgp
Ow0KLQkJCUZpbGVSZXBvc2l0b3J5IGJhcmUgPSBuZXcgRmlsZVJlcG9zaXRvcnkgKG5ldyBTaGFy
cGVuLkZpbGVQYXRoIChSb290VXJsLkZ1bGxQYXRoICsgInJlcG8uZ2l0IikpOw0KKwkJCXZhciBi
YXJlID0gbmV3IEZpbGVSZXBvc2l0b3J5IChuZXcgU2hhcnBlbi5GaWxlUGF0aCAoUm9vdFVybC5G
dWxsUGF0aCArICJyZXBvLmdpdCIpKTsNCiAJCQlzdHJpbmcgYnJhbmNoID0gQ29uc3RhbnRzLlJf
SEVBRFMgKyAibWFzdGVyIjsNCiANCiAJCQlSZWZVcGRhdGUgaGVhZCA9IGJhcmUuVXBkYXRlUmVm
IChDb25zdGFudHMuSEVBRCk7DQpAQCAtMTMyLDIxICsxMzIsMjEgQEAgcHVibGljIG92ZXJyaWRl
IHZvaWQgTW92ZXNEaXJlY3RvcnkgKCkKIA0KIAkJcHJvdGVjdGVkIG92ZXJyaWRlIFJldmlzaW9u
IEdldEhlYWRSZXZpc2lvbiAoKQ0KIAkJew0KLQkJCUdpdFJlcG9zaXRvcnkgcmVwbzIgPSAoR2l0
UmVwb3NpdG9yeSlSZXBvOw0KLQkJCVJldldhbGsgcncgPSBuZXcgUmV2V2FsayAocmVwbzIuUm9v
dFJlcG9zaXRvcnkpOw0KKwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KVJlcG87DQorCQkJ
dmFyIHJ3ID0gbmV3IFJldldhbGsgKHJlcG8yLlJvb3RSZXBvc2l0b3J5KTsNCiAJCQlPYmplY3RJ
ZCBoZWFkSWQgPSByZXBvMi5Sb290UmVwb3NpdG9yeS5SZXNvbHZlIChDb25zdGFudHMuSEVBRCk7
DQogCQkJaWYgKGhlYWRJZCA9PSBudWxsKQ0KIAkJCQlyZXR1cm4gbnVsbDsNCiANCiAJCQlSZXZD
b21taXQgY29tbWl0ID0gcncuUGFyc2VDb21taXQgKGhlYWRJZCk7DQotCQkJR2l0UmV2aXNpb24g
cmV2ID0gbmV3IEdpdFJldmlzaW9uIChSZXBvLCByZXBvMi5Sb290UmVwb3NpdG9yeSwgY29tbWl0
LklkLk5hbWUpOw0KKwkJCXZhciByZXYgPSBuZXcgR2l0UmV2aXNpb24gKFJlcG8sIHJlcG8yLlJv
b3RSZXBvc2l0b3J5LCBjb21taXQuSWQuTmFtZSk7DQogCQkJcmV2LkNvbW1pdCA9IGNvbW1pdDsN
CiAJCQlyZXR1cm4gcmV2Ow0KIAkJfQ0KIA0KIAkJcHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQgUG9z
dENvbW1pdCAoUmVwb3NpdG9yeSByZXBvKQ0KIAkJew0KLQkJCUdpdFJlcG9zaXRvcnkgcmVwbzIg
PSAoR2l0UmVwb3NpdG9yeSlyZXBvOw0KKwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KXJl
cG87DQogCQkJcmVwbzIuUHVzaCAobmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9y
aW5nLk51bGxQcm9ncmVzc01vbml0b3IgKCksIHJlcG8yLkdldEN1cnJlbnRSZW1vdGUgKCksIHJl
cG8yLkdldEN1cnJlbnRCcmFuY2ggKCkpOw0KIAkJfQ0KIA0NCg0KICAgQ29tbWl0OiA2MjcyOTNh
N2U2NGIyMjgyNzdmYzQ2ZDhhMjQwMjFkMTViYjIwZjJhDQogICBBdXRob3I6IFRoZXJ6b2sgPHRl
cm9tYXJpb0B5YWhvby5jb20+IChUaGVyem9rKQ0KICAgICBEYXRlOiAyMDEzLTExLTE4IDE3OjQw
OjI0IEdNVA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9j
b21taXQvNjI3MjkzYTdlNjRiMjI4Mjc3ZmM0NmQ4YTI0MDIxZDE1YmIyMGYyYQ0KDQpbU3VidmVy
c2lvbl0gQWRkZWQgVVJMIHZhbGlkYXRpb24gdGVzdHMuDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBt
YWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wu
R2l0LlRlc3RzL0Jhc2VHaXRSZXBvc2l0b3J5VGVzdHMuY3MKICBNIG1haW4vc3JjL2FkZGlucy9W
ZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQuVGVzdHMvQmFzZVJl
cG9zaXRvcnlUZXN0cy5jcwogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9E
ZXZlbG9wLlZlcnNpb25Db250cm9sLlN1YnZlcnNpb24uVGVzdHMvQmFzZVN2blJlcG9zaXRvcnlU
ZXN0cy5jcwogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZl
cnNpb25Db250cm9sLlN1YnZlcnNpb24uVGVzdHMvUmVwb3NpdG9yeVRlc3RzLmNzCiAgTSBtYWlu
L3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvU3VidmVyc2lvbi5XaW4zMi5UZXN0cy9SZXBvc2l0
b3J5VGVzdHMuY3MKDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01v
bm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdpdC5UZXN0cy9CYXNlR2l0UmVwb3NpdG9yeVRlc3Rz
LmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQpAQCAtMjY5LDggKzI2OSw3IEBAIHB1YmxpYyB2b2lkIFRlc3RQdXNo
RGlmZiAoKQogCQkJLy9Bc3NlcnQuQXJlRXF1YWwgKCJ0ZXh0MiIsIGl0ZW0uQ29udGVudCk7DQog
CQl9DQogDQotCQlbVGVzdF0NCi0JCXB1YmxpYyB2b2lkIFRlc3RHaXRVcmwgKCkNCisJCXByb3Rl
Y3RlZCBvdmVycmlkZSB2b2lkIFRlc3RWYWxpZFVybCAoKQ0KIAkJew0KIAkJCXZhciByZXBvMiA9
IChHaXRSZXBvc2l0b3J5KVJlcG87DQogCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxp
ZCAoImdpdEBnaXRodWIuY29tOm1vbm8vbW9ub2RldmVsb3AiKSk7DQ0KDQpNb2RpZmllZDogbWFp
bi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdp
dC5UZXN0cy9CYXNlUmVwb3NpdG9yeVRlc3RzLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMTI1LDYgKzEy
NSwxNCBAQCBwdWJsaWMgdm9pZCBSaWdodFJlcG9zaXRvcnlEZXRlY3Rpb24gKCkKIAkJcHJvdGVj
dGVkIGFic3RyYWN0IE5Vbml0LkZyYW1ld29yay5Db25zdHJhaW50cy5JUmVzb2x2ZUNvbnN0cmFp
bnQgSXNDb3JyZWN0VHlwZSAoKTsKIAogCQlbVGVzdF0KKwkJcHVibGljIHZvaWQgVXJsSXNWYWxp
ZCAoKQorCQl7CisJCQlUZXN0VmFsaWRVcmwgKCk7CisJCX0KKworCQlwcm90ZWN0ZWQgYWJzdHJh
Y3Qgdm9pZCBUZXN0VmFsaWRVcmwgKCk7CisKKwkJW1Rlc3RdCiAJCS8vIFRlc3RzIFJlcG9zaXRv
cnkuQ2hlY2tvdXQuCiAJCXB1YmxpYyB2b2lkIENoZWNrb3V0RXhpc3RzICgpCiAJCXsNCg0KTW9k
aWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9u
Q29udHJvbC5TdWJ2ZXJzaW9uLlRlc3RzL0Jhc2VTdm5SZXBvc2l0b3J5VGVzdHMuY3MNCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCkBAIC05Myw2ICs5MywxNSBAQCBwcm90ZWN0ZWQgb3ZlcnJpZGUgTlVuaXQuRnJhbWV3
b3JrLkNvbnN0cmFpbnRzLklSZXNvbHZlQ29uc3RyYWludCBJc0NvcnJlY3RUeXBlCiAJCQlyZXR1
cm4gSXMuSW5zdGFuY2VPZjxTdWJ2ZXJzaW9uUmVwb3NpdG9yeT4gKCk7DQogCQl9DQogDQorCQlw
cm90ZWN0ZWQgb3ZlcnJpZGUgdm9pZCBUZXN0VmFsaWRVcmwgKCkNCisJCXsNCisJCQl2YXIgcmVw
bzIgPSAoU3VidmVyc2lvblJlcG9zaXRvcnkpUmVwbzsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBv
Mi5Jc1VybFZhbGlkICgic3ZuOi8vc3ZucmVwby5jb206ODAvcmVwbyIpKTsNCisJCQlBc3NlcnQu
SXNUcnVlIChyZXBvMi5Jc1VybFZhbGlkICgic3ZuK3NzaDovL3VzZXJAaG9zdC5jb206ODAvcmVw
byIpKTsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBvMi5Jc1VybFZhbGlkICgiaHR0cDovL3N2bnJl
cG8uY29tOjgwL3JlcG8iKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAo
Imh0dHBzOi8vc3ZucmVwby5jb206ODAvcmVwbyIpKTsNCisJCX0NCisNCiAJCXByb3RlY3RlZCBv
dmVycmlkZSBSZXZpc2lvbiBHZXRIZWFkUmV2aXNpb24gKCkNCiAJCXsNCiAJCQlyZXR1cm4gU3Zu
UmV2aXNpb24uSGVhZDsNDQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRy
b2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5UZXN0cy9SZXBvc2l0b3J5
VGVzdHMuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xMjcsNiArMTI3LDEyIEBAIHByb3RlY3RlZCBvdmVy
cmlkZSB2b2lkIFBvc3RVbmxvY2sgKCkKIAkJCX0pOwogCQl9CiAKKwkJcHVibGljIG92ZXJyaWRl
IHZvaWQgVGVzdFZhbGlkVXJsICgpCisJCXsKKwkJCWJhc2UuVGVzdFZhbGlkVXJsICgpOworCQkJ
QXNzZXJ0LklzVHJ1ZSAoUmVwby5Jc1VybFZhbGlkICgiZmlsZTovLy9kaXIvcmVwbyIpKTsKKwkJ
fQorCiAJCXByb3RlY3RlZCBvdmVycmlkZSBSZXBvc2l0b3J5IEdldFJlcG8gKHN0cmluZyBwYXRo
LCBzdHJpbmcgdXJsKQogCQl7CiAJCQlyZXR1cm4gbmV3IFN1YnZlcnNpb25SZXBvc2l0b3J5IChu
ZXcgU3ZuQ2xpZW50ICgpLCB1cmwsIHBhdGgpOw0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5z
L1ZlcnNpb25Db250cm9sL1N1YnZlcnNpb24uV2luMzIuVGVzdHMvUmVwb3NpdG9yeVRlc3RzLmNz
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQpAQCAtMTE3LDYgKzExNywxNiBAQCBwcm90ZWN0ZWQgb3ZlcnJpZGUgdm9p
ZCBQb3N0VW5sb2NrICgpCiAJCQl9KTsNCiAJCX0NCiANCisJCVtUZXN0XQ0KKwkJcHJvdGVjdGVk
IG92ZXJyaWRlIHZvaWQgVGVzdFZhbGlkVXJsICgpDQorCQl7DQorCQkJYmFzZS5UZXN0VmFsaWRV
cmwgKCk7DQorDQorCQkJQXNzZXJ0Lklnbm9yZSAoIkZpbGUgc2NoZW1lIGlzIGJyb2tlbiBvbiBX
aW5kb3dzIik7DQorCQkJdmFyIHJlcG8yID0gKFN1YnZlcnNpb25SZXBvc2l0b3J5KVJlcG87DQor
CQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAoImZpbGU6Ly8vYzovZGlyL3JlcG8i
KSk7DQorCQl9DQorDQogCQlwcm90ZWN0ZWQgb3ZlcnJpZGUgUmVwb3NpdG9yeSBHZXRSZXBvIChz
dHJpbmcgcGF0aCwgc3RyaW5nIHVybCkNCiAJCXsNCiAJCQlyZXR1cm4gbmV3IFN1YnZlcnNpb25S
ZXBvc2l0b3J5IChuZXcgU3ZuU2hhcnBDbGllbnQgKCksIHVybCwgcGF0aCk7DQ0KDQogICBDb21t
aXQ6IDE2YTM0ZTdlMDU5OTY3NDk0NDY5MWI0YWQxZjAxMjdlYWZkMDVjYTMNCiAgIEF1dGhvcjog
VGhlcnpvayA8dGVyb21hcmlvQHlhaG9vLmNvbT4gKFRoZXJ6b2spDQogICAgIERhdGU6IDIwMTMt
MTEtMTggMTc6NDg6MTMgR01UDQogICAgICBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21v
bm9kZXZlbG9wL2NvbW1pdC8xNmEzNGU3ZTA1OTk2NzQ5NDQ2OTFiNGFkMWYwMTI3ZWFmZDA1Y2Ez
DQoNCkZpeCBidWlsZC4gPl8+DQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL3NyYy9hZGRpbnMv
VmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5UZXN0
cy9SZXBvc2l0b3J5VGVzdHMuY3MKDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25D
b250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLlN1YnZlcnNpb24uVGVzdHMvUmVwb3Np
dG9yeVRlc3RzLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMTI3LDcgKzEyNyw3IEBAIHByb3RlY3RlZCBv
dmVycmlkZSB2b2lkIFBvc3RVbmxvY2sgKCkKIAkJCX0pOwogCQl9CiAKLQkJcHVibGljIG92ZXJy
aWRlIHZvaWQgVGVzdFZhbGlkVXJsICgpCisJCXByb3RlY3RlZCBvdmVycmlkZSB2b2lkIFRlc3RW
YWxpZFVybCAoKQogCQl7CiAJCQliYXNlLlRlc3RWYWxpZFVybCAoKTsKIAkJCUFzc2VydC5Jc1Ry
dWUgKFJlcG8uSXNVcmxWYWxpZCAoImZpbGU6Ly8vZGlyL3JlcG8iKSk7DQoNCiAgIENvbW1pdDog
NzEwZTA0MDA3YjBhMjY5MTJiMTM5M2RjYWE5ODhiZjlhZDNhZjkwNg0KICAgQXV0aG9yOiBUaGVy
em9rIDx0ZXJvbWFyaW9AeWFob28uY29tPiAoVGhlcnpvaykNCiAgICAgRGF0ZTogMjAxMy0xMS0x
OCAyMjo0NTozMyBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2Rl
dmVsb3AvY29tbWl0LzcxMGUwNDAwN2IwYTI2OTEyYjEzOTNkY2FhOTg4YmY5YWQzYWY5MDYNCg0K
W1dlYlJlZmVyZW5jZXNdIFBvc3NpYmlsaXR5IHRvIGNob29zZSB2aXNpYmlsaXR5CgpFaXRoZXIg
Z2VuZXJhdGUgdGhlIHNlcnZpY2UgYXMgYSBwdWJsaWMgb3IgaW50ZXJuYWwgc2VydmljZS4NCg0K
Q2hhbmdlZCBwYXRoczoKICBNIG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5XZWJSZWZlcmVu
Y2VzL01vbm9EZXZlbG9wLldlYlJlZmVyZW5jZXMuRGlhbG9ncy9XQ0ZDb25maWdXaWRnZXQuY3MK
ICBNIG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5XZWJSZWZlcmVuY2VzL2d0ay1ndWkvTW9u
b0RldmVsb3AuV2ViUmVmZXJlbmNlcy5EaWFsb2dzLldDRkNvbmZpZ1dpZGdldC5jcwogIE0gbWFp
bi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLldlYlJlZmVyZW5jZXMvZ3RrLWd1aS9ndWkuc3RldGlj
Cg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5XZWJSZWZlcmVuY2VzL01v
bm9EZXZlbG9wLldlYlJlZmVyZW5jZXMuRGlhbG9ncy9XQ0ZDb25maWdXaWRnZXQuY3MNCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCkBAIC00NSw2ICs0NSwxMSBAQCBwdWJsaWMgV0NGQ29uZmlnV2lkZ2V0IChDbGllbnRP
cHRpb25zIG9wdGlvbnMpCiAJCQkKIAkJCWRpY3RUeXBlcyA9IG5ldyBMaXN0PFR5cGU+IChEZWZh
dWx0RGljdGlvbmFyeVR5cGVzKTsKIAkJCVBvcHVsYXRlQm94IChkaWN0aW9uYXJ5Q29sbGVjdGlv
biwgIkRpY3Rpb25hcnkiLCBkaWN0VHlwZXMpOworCisJCQlmb3JlYWNoICh2YXIgYWNjZXNzIGlu
IEFjY2Vzc0dlbmVyYXRpb25UeXBlcykKKwkJCQlsaXN0QWNjZXNzLkFwcGVuZFRleHQgKGFjY2Vz
cyk7CisKKwkJCWxpc3RBY2Nlc3MuQWN0aXZlID0gb3B0aW9ucy5HZW5lcmF0ZUludGVybmFsVHlw
ZXMgPyAxIDogMDsKIAkJfQogCQkKIAkJcHVibGljIENsaWVudE9wdGlvbnMgT3B0aW9ucyB7CkBA
IC03MSw2ICs3NiwxMSBAQCBwdWJsaWMgV0NGQ29uZmlnV2lkZ2V0IChDbGllbnRPcHRpb25zIG9w
dGlvbnMpCiAJCQl0eXBlb2YgKFN5c3RlbS5Db2xsZWN0aW9ucy5TcGVjaWFsaXplZC5MaXN0RGlj
dGlvbmFyeSksCiAJCQl0eXBlb2YgKFN5c3RlbS5Db2xsZWN0aW9ucy5TcGVjaWFsaXplZC5PcmRl
cmVkRGljdGlvbmFyeSkKIAkJfTsKKworCQlzdGF0aWMgcmVhZG9ubHkgTGlzdDxzdHJpbmc+IEFj
Y2Vzc0dlbmVyYXRpb25UeXBlcyA9IG5ldyBMaXN0PHN0cmluZz4geworCQkJIlB1YmxpYyIsCisJ
CQkiSW50ZXJuYWwiCisJCX07CiAJCQogCQlwdWJsaWMgYm9vbCBNb2RpZmllZCB7CiAJCQlnZXQ7
CkBAIC0xNjIsNiArMTcyLDExIEBAIGludGVybmFsIHZvaWQgVXBkYXRlICgpCiAJCXsKIAkJCVVw
ZGF0ZUJveCAobGlzdENvbGxlY3Rpb24sICJMaXN0IiwgbGlzdFR5cGVzKTsKIAkJCVVwZGF0ZUJv
eCAoZGljdGlvbmFyeUNvbGxlY3Rpb24sICJEaWN0aW9uYXJ5IiwgZGljdFR5cGVzKTsKKworCQkJ
aWYgKGxpc3RBY2Nlc3MuQWN0aXZlICE9IChPcHRpb25zLkdlbmVyYXRlSW50ZXJuYWxUeXBlcyA/
IDEgOiAwKSkgeworCQkJCU9wdGlvbnMuR2VuZXJhdGVJbnRlcm5hbFR5cGVzID0gIU9wdGlvbnMu
R2VuZXJhdGVJbnRlcm5hbFR5cGVzOworCQkJCU1vZGlmaWVkID0gdHJ1ZTsKKwkJCX0KIAkJfQog
CX0KIH0NCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5XZWJSZWZlcmVu
Y2VzL2d0ay1ndWkvTW9ub0RldmVsb3AuV2ViUmVmZXJlbmNlcy5EaWFsb2dzLldDRkNvbmZpZ1dp
ZGdldC5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KQEAgLTksOCArOSwxMCBAQCBwdWJsaWMgcGFydGlhbCBjbGFz
cyBXQ0ZDb25maWdXaWRnZXQKIAkJcHJpdmF0ZSBnbG9iYWw6Okd0ay5Db21ib0JveCBkaWN0aW9u
YXJ5Q29sbGVjdGlvbjsKIAkJcHJpdmF0ZSBnbG9iYWw6Okd0ay5MYWJlbCBsYWJlbDE7CiAJCXBy
aXZhdGUgZ2xvYmFsOjpHdGsuTGFiZWwgbGFiZWwyOworCQlwcml2YXRlIGdsb2JhbDo6R3RrLkxh
YmVsIGxhYmVsMzsKKwkJcHJpdmF0ZSBnbG9iYWw6Okd0ay5Db21ib0JveCBsaXN0QWNjZXNzOwog
CQlwcml2YXRlIGdsb2JhbDo6R3RrLkNvbWJvQm94IGxpc3RDb2xsZWN0aW9uOwotCQkKKwogCQlw
cm90ZWN0ZWQgdmlydHVhbCB2b2lkIEJ1aWxkICgpCiAJCXsKIAkJCWdsb2JhbDo6U3RldGljLkd1
aS5Jbml0aWFsaXplICh0aGlzKTsKQEAgLTU4LDE3ICs2MCwzOCBAQCBwcm90ZWN0ZWQgdmlydHVh
bCB2b2lkIEJ1aWxkICgpCiAJCQl3My5YT3B0aW9ucyA9ICgoZ2xvYmFsOjpHdGsuQXR0YWNoT3B0
aW9ucykoNCkpOwogCQkJdzMuWU9wdGlvbnMgPSAoKGdsb2JhbDo6R3RrLkF0dGFjaE9wdGlvbnMp
KDQpKTsKIAkJCS8vIENvbnRhaW5lciBjaGlsZCB3Y2ZPcHRpb25zLkd0ay5UYWJsZStUYWJsZUNo
aWxkCisJCQl0aGlzLmxhYmVsMyA9IG5ldyBnbG9iYWw6Okd0ay5MYWJlbCAoKTsKKwkJCXRoaXMu
bGFiZWwzLk5hbWUgPSAibGFiZWwzIjsKKwkJCXRoaXMubGFiZWwzLkxhYmVsUHJvcCA9IGdsb2Jh
bDo6TW9uby5Vbml4LkNhdGFsb2cuR2V0U3RyaW5nICgiQWNjZXNzIGxldmVsOiIpOworCQkJdGhp
cy53Y2ZPcHRpb25zLkFkZCAodGhpcy5sYWJlbDMpOworCQkJZ2xvYmFsOjpHdGsuVGFibGUuVGFi
bGVDaGlsZCB3NCA9ICgoZ2xvYmFsOjpHdGsuVGFibGUuVGFibGVDaGlsZCkodGhpcy53Y2ZPcHRp
b25zIFt0aGlzLmxhYmVsM10pKTsKKwkJCXc0LlRvcEF0dGFjaCA9ICgodWludCkoMikpOworCQkJ
dzQuQm90dG9tQXR0YWNoID0gKCh1aW50KSgzKSk7CisJCQl3NC5YT3B0aW9ucyA9ICgoZ2xvYmFs
OjpHdGsuQXR0YWNoT3B0aW9ucykoNCkpOworCQkJdzQuWU9wdGlvbnMgPSAoKGdsb2JhbDo6R3Rr
LkF0dGFjaE9wdGlvbnMpKDQpKTsKKwkJCS8vIENvbnRhaW5lciBjaGlsZCB3Y2ZPcHRpb25zLkd0
ay5UYWJsZStUYWJsZUNoaWxkCisJCQl0aGlzLmxpc3RBY2Nlc3MgPSBnbG9iYWw6Okd0ay5Db21i
b0JveC5OZXdUZXh0ICgpOworCQkJdGhpcy5saXN0QWNjZXNzLk5hbWUgPSAibGlzdEFjY2VzcyI7
CisJCQl0aGlzLndjZk9wdGlvbnMuQWRkICh0aGlzLmxpc3RBY2Nlc3MpOworCQkJZ2xvYmFsOjpH
dGsuVGFibGUuVGFibGVDaGlsZCB3NSA9ICgoZ2xvYmFsOjpHdGsuVGFibGUuVGFibGVDaGlsZCko
dGhpcy53Y2ZPcHRpb25zIFt0aGlzLmxpc3RBY2Nlc3NdKSk7CisJCQl3NS5Ub3BBdHRhY2ggPSAo
KHVpbnQpKDIpKTsKKwkJCXc1LkJvdHRvbUF0dGFjaCA9ICgodWludCkoMykpOworCQkJdzUuTGVm
dEF0dGFjaCA9ICgodWludCkoMSkpOworCQkJdzUuUmlnaHRBdHRhY2ggPSAoKHVpbnQpKDIpKTsK
KwkJCXc1LlhPcHRpb25zID0gKChnbG9iYWw6Okd0ay5BdHRhY2hPcHRpb25zKSg3KSk7CisJCQl3
NS5ZT3B0aW9ucyA9ICgoZ2xvYmFsOjpHdGsuQXR0YWNoT3B0aW9ucykoNCkpOworCQkJLy8gQ29u
dGFpbmVyIGNoaWxkIHdjZk9wdGlvbnMuR3RrLlRhYmxlK1RhYmxlQ2hpbGQKIAkJCXRoaXMubGlz
dENvbGxlY3Rpb24gPSBnbG9iYWw6Okd0ay5Db21ib0JveC5OZXdUZXh0ICgpOwogCQkJdGhpcy5s
aXN0Q29sbGVjdGlvbi5OYW1lID0gImxpc3RDb2xsZWN0aW9uIjsKIAkJCXRoaXMud2NmT3B0aW9u
cy5BZGQgKHRoaXMubGlzdENvbGxlY3Rpb24pOwotCQkJZ2xvYmFsOjpHdGsuVGFibGUuVGFibGVD
aGlsZCB3NCA9ICgoZ2xvYmFsOjpHdGsuVGFibGUuVGFibGVDaGlsZCkodGhpcy53Y2ZPcHRpb25z
IFt0aGlzLmxpc3RDb2xsZWN0aW9uXSkpOwotCQkJdzQuTGVmdEF0dGFjaCA9ICgodWludCkoMSkp
OwotCQkJdzQuUmlnaHRBdHRhY2ggPSAoKHVpbnQpKDIpKTsKLQkJCXc0LlhPcHRpb25zID0gKChn
bG9iYWw6Okd0ay5BdHRhY2hPcHRpb25zKSg3KSk7Ci0JCQl3NC5ZT3B0aW9ucyA9ICgoZ2xvYmFs
OjpHdGsuQXR0YWNoT3B0aW9ucykoNCkpOworCQkJZ2xvYmFsOjpHdGsuVGFibGUuVGFibGVDaGls
ZCB3NiA9ICgoZ2xvYmFsOjpHdGsuVGFibGUuVGFibGVDaGlsZCkodGhpcy53Y2ZPcHRpb25zIFt0
aGlzLmxpc3RDb2xsZWN0aW9uXSkpOworCQkJdzYuTGVmdEF0dGFjaCA9ICgodWludCkoMSkpOwor
CQkJdzYuUmlnaHRBdHRhY2ggPSAoKHVpbnQpKDIpKTsKKwkJCXc2LlhPcHRpb25zID0gKChnbG9i
YWw6Okd0ay5BdHRhY2hPcHRpb25zKSg3KSk7CisJCQl3Ni5ZT3B0aW9ucyA9ICgoZ2xvYmFsOjpH
dGsuQXR0YWNoT3B0aW9ucykoNCkpOwogCQkJdGhpcy5kaWFsb2cxX1ZCb3guQWRkICh0aGlzLndj
Zk9wdGlvbnMpOwotCQkJZ2xvYmFsOjpHdGsuQm94LkJveENoaWxkIHc1ID0gKChnbG9iYWw6Okd0
ay5Cb3guQm94Q2hpbGQpKHRoaXMuZGlhbG9nMV9WQm94IFt0aGlzLndjZk9wdGlvbnNdKSk7Ci0J
CQl3NS5Qb3NpdGlvbiA9IDA7CisJCQlnbG9iYWw6Okd0ay5Cb3guQm94Q2hpbGQgdzcgPSAoKGds
b2JhbDo6R3RrLkJveC5Cb3hDaGlsZCkodGhpcy5kaWFsb2cxX1ZCb3ggW3RoaXMud2NmT3B0aW9u
c10pKTsKKwkJCXc3LlBvc2l0aW9uID0gMDsKIAkJCXRoaXMuQWRkICh0aGlzLmRpYWxvZzFfVkJv
eCk7CiAJCQlpZiAoKHRoaXMuQ2hpbGQgIT0gbnVsbCkpIHsKIAkJCQl0aGlzLkNoaWxkLlNob3dB
bGwgKCk7DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuV2ViUmVmZXJl
bmNlcy9ndGstZ3VpL2d1aS5zdGV0aWMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC02NDYsMTIgKzY0Niw2IEBA
CiAgICAgICAgICAgICAgIDxwbGFjZWhvbGRlciAvPgogICAgICAgICAgICAgPC9jaGlsZD4KICAg
ICAgICAgICAgIDxjaGlsZD4KLSAgICAgICAgICAgICAgPHBsYWNlaG9sZGVyIC8+Ci0gICAgICAg
ICAgICA8L2NoaWxkPgotICAgICAgICAgICAgPGNoaWxkPgotICAgICAgICAgICAgICA8cGxhY2Vo
b2xkZXIgLz4KLSAgICAgICAgICAgIDwvY2hpbGQ+Ci0gICAgICAgICAgICA8Y2hpbGQ+CiAgICAg
ICAgICAgICAgIDx3aWRnZXQgY2xhc3M9Ikd0ay5Db21ib0JveCIgaWQ9ImRpY3Rpb25hcnlDb2xs
ZWN0aW9uIj4KICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iTWVtYmVyTmFtZSIgLz4K
ICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iSXNUZXh0Q29tYm8iPlRydWU8L3Byb3Bl
cnR5PgpAQCAtNzEyLDYgKzcwNiw0NyBAQAogICAgICAgICAgICAgICA8L3BhY2tpbmc+CiAgICAg
ICAgICAgICA8L2NoaWxkPgogICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICA8d2lk
Z2V0IGNsYXNzPSJHdGsuTGFiZWwiIGlkPSJsYWJlbDMiPgorICAgICAgICAgICAgICAgIDxwcm9w
ZXJ0eSBuYW1lPSJNZW1iZXJOYW1lIiAvPgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1l
PSJMYWJlbFByb3AiIHRyYW5zbGF0YWJsZT0ieWVzIj5BY2Nlc3MgbGV2ZWw6PC9wcm9wZXJ0eT4K
KyAgICAgICAgICAgICAgPC93aWRnZXQ+CisgICAgICAgICAgICAgIDxwYWNraW5nPgorICAgICAg
ICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJUb3BBdHRhY2giPjI8L3Byb3BlcnR5PgorICAgICAg
ICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJCb3R0b21BdHRhY2giPjM8L3Byb3BlcnR5PgorICAg
ICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJBdXRvU2l6ZSI+VHJ1ZTwvcHJvcGVydHk+Cisg
ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IlhPcHRpb25zIj5GaWxsPC9wcm9wZXJ0eT4K
KyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iWU9wdGlvbnMiPkZpbGw8L3Byb3BlcnR5
PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJYRXhwYW5kIj5GYWxzZTwvcHJvcGVy
dHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IlhGaWxsIj5UcnVlPC9wcm9wZXJ0
eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iWFNocmluayI+RmFsc2U8L3Byb3Bl
cnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJZRXhwYW5kIj5GYWxzZTwvcHJv
cGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IllGaWxsIj5UcnVlPC9wcm9w
ZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iWVNocmluayI+RmFsc2U8L3By
b3BlcnR5PgorICAgICAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgICAgICA8L2NoaWxkPgor
ICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICA8d2lkZ2V0IGNsYXNzPSJHdGsuQ29t
Ym9Cb3giIGlkPSJsaXN0QWNjZXNzIj4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0i
TWVtYmVyTmFtZSIgLz4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iSXNUZXh0Q29t
Ym8iPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJJdGVt
cyIgdHJhbnNsYXRhYmxlPSJ5ZXMiIC8+CisgICAgICAgICAgICAgIDwvd2lkZ2V0PgorICAgICAg
ICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iVG9wQXR0
YWNoIj4yPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iQm90dG9t
QXR0YWNoIj4zPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iTGVm
dEF0dGFjaCI+MTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IlJp
Z2h0QXR0YWNoIj4yPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0i
QXV0b1NpemUiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFt
ZT0iWE9wdGlvbnMiPkV4cGFuZCwgU2hyaW5rLCBGaWxsPC9wcm9wZXJ0eT4KKyAgICAgICAgICAg
ICAgICA8cHJvcGVydHkgbmFtZT0iWU9wdGlvbnMiPkZpbGw8L3Byb3BlcnR5PgorICAgICAgICAg
ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJYRXhwYW5kIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAg
ICAgICAgICA8cHJvcGVydHkgbmFtZT0iWEZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAg
ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJYU2hyaW5rIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAg
ICAgICAgICA8cHJvcGVydHkgbmFtZT0iWUV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAg
ICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJZRmlsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAg
ICAgICAgICAgPHByb3BlcnR5IG5hbWU9IllTaHJpbmsiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAg
ICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgIDxj
aGlsZD4KICAgICAgICAgICAgICAgPHdpZGdldCBjbGFzcz0iR3RrLkNvbWJvQm94IiBpZD0ibGlz
dENvbGxlY3Rpb24iPgogICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJNZW1iZXJOYW1l
IiAvPgogICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJJc1RleHRDb21ibyI+VHJ1ZTwv
cHJvcGVydHk+DQoNCiAgIENvbW1pdDogYjZiZTBmMTAzMGRlZTU0YTI2ZmQ2MjY2MDJlM2Y4NjIx
NTlkMTBiYQ0KICAgQXV0aG9yOiBNaWNoYWVsIEh1dGNoaW5zb24gPG0uai5odXRjaGluc29uQGdt
YWlsLmNvbT4gKG1odXRjaCkNCiAgICAgRGF0ZTogMjAxMy0xMS0xOCAyMzozODozMyBHTVQNCiAg
ICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0L2I2YmUw
ZjEwMzBkZWU1NGEyNmZkNjI2NjAyZTNmODYyMTU5ZDEwYmENCg0KW0NvcmVdIE1ha2Ugc3VyZSBX
ZWJTZXJ2aWNlIGlzIGluaXRpYWxpemVkIGZyYW1ld29yayBzZXJ2aWNlCgpUaGUgZnJhbWV3b3Jr
IHNlcnZpY2UgY2FuIGtpY2sgb2ZmIHRoZSBhY3RpdmF0aW9uIHN5c3RlbSwgd2hpY2gKbWFrZXMg
d2ViIHJlcXVlc3RzLgoKQlhDMTYyNDUgLSBbWFNdVXBncmFkZSB3b3JrZmxvdyB0aHJvd3MgYW4g
TlJFIHdoaWxlIHRyeWluZyB0byBhY3RpdmF0ZQphIGxpY2Vuc2UNCg0KQ2hhbmdlZCBwYXRoczoK
ICBNIG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3JlL1J1bnRp
bWUuY3MKDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZl
bG9wLkNvcmUvUnVudGltZS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTExMiw2ICsxMTIsNyBAQCBwdWJs
aWMgc3RhdGljIHZvaWQgSW5pdGlhbGl6ZSAoYm9vbCB1cGRhdGVBZGRpblJlZ2lzdHJ5KQogCQkJ
CUNvdW50ZXJzLlJ1bnRpbWVJbml0aWFsaXphdGlvbi5UcmFjZSAoIkluaXRpYWxpemVkIEFkZGlu
IE1hbmFnZXIiKTsKIAkJCQkKIAkJCQlQcm9wZXJ0eVNlcnZpY2UuSW5pdGlhbGl6ZSAoKTsKKwkJ
CQlXZWJTZXJ2aWNlLkluaXRpYWxpemUgKCk7CiAJCQkJCiAJCQkJLy9oYXZlIHRvIGRvIHRoaXMg
YWZ0ZXIgdGhlIGFkZGluIHNlcnZpY2UgYW5kIHByb3BlcnR5IHNlcnZpY2UgaGF2ZSBpbml0aWFs
aXplZAogCQkJCWlmIChVc2VyRGF0YU1pZ3JhdGlvblNlcnZpY2UuSGFzU291cmNlKSB7CkBAIC0x
MjQsOCArMTI1LDYgQEAgcHVibGljIHN0YXRpYyB2b2lkIEluaXRpYWxpemUgKGJvb2wgdXBkYXRl
QWRkaW5SZWdpc3RyeSkKIAkJCQlDb3VudGVycy5SdW50aW1lSW5pdGlhbGl6YXRpb24uVHJhY2Ug
KCJJbml0aWFsaXppbmcgQXNzZW1ibHkgU2VydmljZSIpOwogCQkJCXN5c3RlbUFzc2VtYmx5U2Vy
dmljZSA9IG5ldyBTeXN0ZW1Bc3NlbWJseVNlcnZpY2UgKCk7CiAJCQkJc3lzdGVtQXNzZW1ibHlT
ZXJ2aWNlLkluaXRpYWxpemUgKCk7Ci0KLQkJCQlXZWJTZXJ2aWNlLkluaXRpYWxpemUgKCk7CiAJ
CQkJCiAJCQkJaW5pdGlhbGl6ZWQgPSB0cnVlOwogCQkJCQ0KDQogICBDb21taXQ6IDY2NDYyYzgx
NmM3Y2IyMDdlM2Y4NGIzYmQ5Y2IzMzRmNmRiNWRiOTQNCiAgIEF1dGhvcjogTWljaGFlbCBIdXRj
aGluc29uIDxtLmouaHV0Y2hpbnNvbkBnbWFpbC5jb20+IChtaHV0Y2gpDQogICAgIERhdGU6IDIw
MTMtMTEtMTggMjM6Mzg6MzMgR01UDQogICAgICBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25v
L21vbm9kZXZlbG9wL2NvbW1pdC82NjQ2MmM4MTZjN2NiMjA3ZTNmODRiM2JkOWNiMzM0ZjZkYjVk
Yjk0DQoNCltDb3JlXSBDbGVhbiB1cCB0aGUgV2ViU2VydmljZQoKSGFkIGxvdHMgb2YgcG9pbnRs
ZXNzIGxhemllcyBhbmQgc2luZ2xldG9ucywgYW5kIGNvdWxkIGV4cGxvZGUgb24KcGxhdGZvcm1z
IHdpdGhvdXQgYSBjcmVkZW50aWFscyBwcm92aWRlci4NCg0KQ2hhbmdlZCBwYXRoczoKICBNIG1h
aW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3JlLldlYi9DcmVkZW50
aWFsU3RvcmUuY3MKICBNIG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxv
cC5Db3JlLldlYi9JQ3JlZGVudGlhbFByb3ZpZGVyLmNzCiAgTSBtYWluL3NyYy9jb3JlL01vbm9E
ZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuQ29yZS5XZWIvUHJveHlDYWNoZS5jcwogIE0gbWFpbi9z
cmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9wLkNvcmUuV2ViL1JlcXVlc3RIZWxw
ZXIuY3MKICBNIG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3Jl
LldlYi9XZWJTZXJ2aWNlLmNzCiAgTSBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUvTW9u
b0RldmVsb3AuQ29yZS9SdW50aW1lLmNzCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0Rl
dmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3JlLldlYi9DcmVkZW50aWFsU3RvcmUuY3MNCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCkBAIC03LDEzICs3LDYgQEAgbmFtZXNwYWNlIE1vbm9EZXZlbG9wLkNvcmUuV2ViCiAJ
Y2xhc3MgQ3JlZGVudGlhbFN0b3JlIDogSUNyZWRlbnRpYWxDYWNoZQogCXsKIAkJcmVhZG9ubHkg
Q29uY3VycmVudERpY3Rpb25hcnk8VXJpLCBJQ3JlZGVudGlhbHM+IGNyZWRlbnRpYWxDYWNoZSA9
IG5ldyBDb25jdXJyZW50RGljdGlvbmFyeTxVcmksIElDcmVkZW50aWFscz4gKCk7Ci0JCXN0YXRp
YyByZWFkb25seSBDcmVkZW50aWFsU3RvcmUgaW5zdGFuY2UgPSBuZXcgQ3JlZGVudGlhbFN0b3Jl
ICgpOw0KLQ0KLQkJcHVibGljIHN0YXRpYyBDcmVkZW50aWFsU3RvcmUgSW5zdGFuY2UgewotCQkJ
Z2V0IHsKLQkJCQlyZXR1cm4gaW5zdGFuY2U7Ci0JCQl9Ci0JCX0KIAogCQlwdWJsaWMgSUNyZWRl
bnRpYWxzIEdldENyZWRlbnRpYWxzIChVcmkgdXJpLCBDcmVkZW50aWFsVHlwZSBjcmVkZW50aWFs
VHlwZSkNCiAJCXsNDQoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUv
TW9ub0RldmVsb3AuQ29yZS5XZWIvSUNyZWRlbnRpYWxQcm92aWRlci5jcw0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
QEAgLTEwLDcgKzEwLDcgQEAgbmFtZXNwYWNlIE1vbm9EZXZlbG9wLkNvcmUuV2ViCiAJcHVibGlj
IGludGVyZmFjZSBJQ3JlZGVudGlhbFByb3ZpZGVyCiAJewogCQkvLy8gPHN1bW1hcnk+Ci0JCS8v
LyBSZXR1cm5zIENyZWRlbnRpYWxTdGF0ZSBzdGF0ZSB0aGF0IGxldCdzIHRoZSBjb25zdW1lciBr
bm93IGlmIElDcmVkZW50aWFscworCQkvLy8gUmV0dXJucyBDcmVkZW50aWFsU3RhdGUgc3RhdGUg
dGhhdCBsZXRzIHRoZSBjb25zdW1lciBrbm93IGlmIElDcmVkZW50aWFscwogCQkvLy8gd2VyZSBk
aXNjb3ZlcmVkIGJ5IHRoZSBJQ3JlZGVudGlhbFByb3ZpZGVyLiBUaGUgY3JlZGVudGlhbHMgYXJn
dW1lbnQgaXMgdGhlbgogCQkvLy8gcG9wdWxhdGVkIHdpdGggdGhlIGRpc2NvdmVyZWQgdmFsaWQg
Y3JlZGVudGlhbHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgdGhlIGdpdmVuIFVyaS4KIAkJLy8vIFRo
ZSBwcm94eSBpbnN0YW5jZSBpZiBwYXNzZWQgd2lsbCBiZSB1c2VkIHRvIGVuc3VyZSB0aGF0IHRo
ZSByZXF1ZXN0IGdvZXMgdGhyb3VnaCB0aGUgcHJveHkNCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2Nv
cmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3JlLldlYi9Qcm94eUNhY2hlLmNzDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQpAQCAtMTQsMTUgKzE0LDYgQEAgY2xhc3MgUHJveHlDYWNoZSA6IElQcm94eUNh
Y2hlCiAJCXN0YXRpYyByZWFkb25seSBJV2ViUHJveHkgb3JpZ2luYWxTeXN0ZW1Qcm94eSA9IFdl
YlJlcXVlc3QuR2V0U3lzdGVtV2ViUHJveHkgKCk7CiAKIAkJcmVhZG9ubHkgQ29uY3VycmVudERp
Y3Rpb25hcnk8VXJpLCBXZWJQcm94eT4gY2FjaGUgPSBuZXcgQ29uY3VycmVudERpY3Rpb25hcnk8
VXJpLCBXZWJQcm94eT4gKCk7Ci0JCXN0YXRpYyByZWFkb25seSBMYXp5PFByb3h5Q2FjaGU+IGlu
c3RhbmNlID0gbmV3IExhenk8UHJveHlDYWNoZT4gKCgpID0+IG5ldyBQcm94eUNhY2hlICgpKTsK
LQotCQlwdWJsaWMgc3RhdGljIFByb3h5Q2FjaGUgSW5zdGFuY2UgewotCQkJZ2V0IHsKLQkJCQly
ZXR1cm4gaW5zdGFuY2UuVmFsdWU7Ci0JCQl9Ci0JCX0KLQotCQlQcm94eUNhY2hlICgpIHt9CiAK
IAkJcHVibGljIElXZWJQcm94eSBHZXRQcm94eSAoVXJpIHVyaSkKIAkJew0KDQpNb2RpZmllZDog
bWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9wLkNvcmUuV2ViL1JlcXVl
c3RIZWxwZXIuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xMyw5ICsxMyw5IEBAIHB1YmxpYyBzdGF0aWMg
Y2xhc3MgUmVxdWVzdEhlbHBlcgogCQkvLy8gPC9zdW1tYXJ5Pg0KIAkJaW50ZXJuYWwgc3RhdGlj
IFdlYlJlc3BvbnNlIEdldFJlc3BvbnNlIChGdW5jPFdlYlJlcXVlc3Q+IGNyZWF0ZVJlcXVlc3Qs
IEFjdGlvbjxXZWJSZXF1ZXN0PiBwcmVwYXJlUmVxdWVzdCkNCiAJCXsNCi0JCQl2YXIgcHJveHlD
YWNoZSA9IFdlYlNlcnZpY2UuSW5zdGFuY2UuUHJveHlDYWNoZTsNCi0JCQl2YXIgY3JlZGVudGlh
bENhY2hlID0gV2ViU2VydmljZS5JbnN0YW5jZS5DcmVkZW50aWFsQ2FjaGU7DQotCQkJdmFyIGNy
ZWRlbnRpYWxQcm92aWRlciA9IFdlYlNlcnZpY2UuSW5zdGFuY2UuQ3JlZGVudGlhbFByb3ZpZGVy
Ow0KKwkJCXZhciBwcm94eUNhY2hlID0gV2ViU2VydmljZS5Qcm94eUNhY2hlOworCQkJdmFyIGNy
ZWRlbnRpYWxDYWNoZSA9IFdlYlNlcnZpY2UuQ3JlZGVudGlhbENhY2hlOworCQkJdmFyIGNyZWRl
bnRpYWxQcm92aWRlciA9IFdlYlNlcnZpY2UuQ3JlZGVudGlhbFByb3ZpZGVyOwogDQogCQkJSHR0
cFdlYlJlcXVlc3QgcHJldmlvdXNSZXF1ZXN0ID0gbnVsbDsNCiAJCQlJSHR0cFdlYlJlc3BvbnNl
IHByZXZpb3VzUmVzcG9uc2UgPSBudWxsOw0NCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9u
b0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3JlLldlYi9XZWJTZXJ2aWNlLmNzDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQpAQCAtMjMsNDAgKzIzLDQyIEBACiAvLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU
SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAogLy8gT1VU
IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF
UiBERUFMSU5HUyBJTgogLy8gVEhFIFNPRlRXQVJFLgorCiB1c2luZyBTeXN0ZW07CiB1c2luZyBT
eXN0ZW0uTGlucTsKIAogdXNpbmcgTW9uby5BZGRpbnM7Cit1c2luZyBTeXN0ZW0uTmV0OwogCiBu
YW1lc3BhY2UgTW9ub0RldmVsb3AuQ29yZS5XZWIKIHsKLQlwdWJsaWMgY2xhc3MgV2ViU2Vydmlj
ZQorCXB1YmxpYyBzdGF0aWMgY2xhc3MgV2ViU2VydmljZQogCXsKIAkJY29uc3Qgc3RyaW5nIFdl
YkNyZWRlbnRpYWxQcm92aWRlcnNQYXRoID0gIi9Nb25vRGV2ZWxvcC9Db3JlL1dlYkNyZWRlbnRp
YWxQcm92aWRlcnMiOwogCi0JCXN0YXRpYyByZWFkb25seSBMYXp5PFdlYlNlcnZpY2U+IGluc3Rh
bmNlID0gbmV3IExhenk8V2ViU2VydmljZT4gKCgpID0+IG5ldyBXZWJTZXJ2aWNlICgpKTsKKwkJ
cHVibGljIHN0YXRpYyBJUHJveHlDYWNoZSBQcm94eUNhY2hlIHsgZ2V0OyBwcml2YXRlIHNldDsg
fQorCQlwdWJsaWMgc3RhdGljIElDcmVkZW50aWFsQ2FjaGUgQ3JlZGVudGlhbENhY2hlIHsgZ2V0
OyBwcml2YXRlIHNldDsgfQorCQlwdWJsaWMgc3RhdGljIElDcmVkZW50aWFsUHJvdmlkZXIgQ3Jl
ZGVudGlhbFByb3ZpZGVyIHsgZ2V0OyBwcml2YXRlIHNldDsgfQogCi0JCXB1YmxpYyBzdGF0aWMg
V2ViU2VydmljZSBJbnN0YW5jZSB7Ci0JCQlnZXQgewotCQkJCXJldHVybiBpbnN0YW5jZS5WYWx1
ZTsKLQkJCX0KLQkJfQorCQlpbnRlcm5hbCBzdGF0aWMgdm9pZCBJbml0aWFsaXplICgpCisJCXsK
KwkJCUNyZWRlbnRpYWxDYWNoZSA9IG5ldyBDcmVkZW50aWFsU3RvcmUgKCk7CisJCQlQcm94eUNh
Y2hlID0gbmV3IFByb3h5Q2FjaGUgKCk7CisJCQlDcmVkZW50aWFsUHJvdmlkZXIgPSBBZGRpbk1h
bmFnZXIuR2V0RXh0ZW5zaW9uT2JqZWN0czxJQ3JlZGVudGlhbFByb3ZpZGVyPiAoV2ViQ3JlZGVu
dGlhbFByb3ZpZGVyc1BhdGgpLkZpcnN0T3JEZWZhdWx0ICgpOwogCi0JCXB1YmxpYyBJUHJveHlD
YWNoZSBQcm94eUNhY2hlIHsgZ2V0OyBzZXQ7IH0KLQkJcHVibGljIElDcmVkZW50aWFsQ2FjaGUg
Q3JlZGVudGlhbENhY2hlIHsgZ2V0OyBzZXQ7IH0KLQkJcHVibGljIElDcmVkZW50aWFsUHJvdmlk
ZXIgQ3JlZGVudGlhbFByb3ZpZGVyIHsgZ2V0OyBzZXQ7IH0KKwkJCWlmIChDcmVkZW50aWFsUHJv
dmlkZXIgPT0gbnVsbCkgeworCQkJCUxvZ2dpbmdTZXJ2aWNlLkxvZ1dhcm5pbmcgKCJObyBwcm94
eSBjcmVkZW50aWFsIHByb3ZpZGVyIHdhcyBmb3VuZCIpOwogCi0JCVdlYlNlcnZpY2UgKCkge30K
KwkJCX0KKwkJfQogCi0JCXB1YmxpYyBzdGF0aWMgdm9pZCBJbml0aWFsaXplICgpCisJCWNsYXNz
IE51bGxDcmVkZW50aWFsc1Byb3ZpZGVyIDogSUNyZWRlbnRpYWxQcm92aWRlcgogCQl7Ci0JCQkv
LyBXZSBjYW4gYWNjZXNzIGV4dGVuc2lvbiBwb2ludHMgbm93LCBzbyB3ZSBuZWVkIHRvIGdldCB0
aGUgY3JlZGVudGlhbCBwcm92aWRlciwgd2hpY2ggaXMgcGxhdGZvcm0tc3BlY2lmaWMuCi0JCQkv
LyBUaGUgY3JlZGVudGlhbCBjYWNoZSBhbmQgcHJveHkgY2FjaGUgYXJlIHB1cmUgbWFuYWdlZCBp
bXBsZW1lbnRhdGlvbi4KLQkJCUluc3RhbmNlLkNyZWRlbnRpYWxDYWNoZSA9IENyZWRlbnRpYWxT
dG9yZS5JbnN0YW5jZTsKLQkJCUluc3RhbmNlLlByb3h5Q2FjaGUgPSBXZWIuUHJveHlDYWNoZS5J
bnN0YW5jZTsKLQotCQkJLy8gR2V0IHRoZSBmaXJzdCByZWdpc3RlcmVkIGNyZWRlbnRpYWwgcHJv
dmlkZXIKLQkJCUluc3RhbmNlLkNyZWRlbnRpYWxQcm92aWRlciA9IEFkZGluTWFuYWdlci5HZXRF
eHRlbnNpb25PYmplY3RzPElDcmVkZW50aWFsUHJvdmlkZXI+IChXZWJDcmVkZW50aWFsUHJvdmlk
ZXJzUGF0aCkuRmlyc3RPckRlZmF1bHQgKCk7CisJCQlwdWJsaWMgSUNyZWRlbnRpYWxzIEdldENy
ZWRlbnRpYWxzICgKKwkJCQlVcmkgdXJpLCBJV2ViUHJveHkgcHJveHksIENyZWRlbnRpYWxUeXBl
IGNyZWRlbnRpYWxUeXBlLCBJQ3JlZGVudGlhbHMgZXhpc3RpbmdDcmVkZW50aWFscywgYm9vbCBy
ZXRyeWluZykKKwkJCXsKKwkJCQlyZXR1cm4gbnVsbDsKKwkJCX0KIAkJfQogCX0KIH0NCg0KTW9k
aWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3JlL1J1
bnRpbWUuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYyBzdGF0aWMgdm9p
ZCBJbml0aWFsaXplIChib29sIHVwZGF0ZUFkZGluUmVnaXN0cnkpCiAJCQkJU3luY2hyb25pemF0
aW9uQ29udGV4dC5TZXRTeW5jaHJvbml6YXRpb25Db250ZXh0IChuZXcgU3luY2hyb25pemF0aW9u
Q29udGV4dCAoKSk7CiAKIAkJCS8vIEhvb2sgdXAgdGhlIFNTTCBjZXJ0aWZpY2F0ZSB2YWxpZGF0
aW9uIGNvZGVwYXRoCi0JCQlTeXN0ZW0uTmV0LlNlcnZpY2VQb2ludE1hbmFnZXIuU2VydmVyQ2Vy
dGlmaWNhdGVWYWxpZGF0aW9uQ2FsbGJhY2sgKz0gZGVsZWdhdGUob2JqZWN0IHNlbmRlciwgWDUw
OUNlcnRpZmljYXRlIGNlcnRpZmljYXRlLCBYNTA5Q2hhaW4gY2hhaW4sIFNzbFBvbGljeUVycm9y
cyBzc2xQb2xpY3lFcnJvcnMpIHsKKwkJCVNlcnZpY2VQb2ludE1hbmFnZXIuU2VydmVyQ2VydGlm
aWNhdGVWYWxpZGF0aW9uQ2FsbGJhY2sgKz0gZGVsZWdhdGUob2JqZWN0IHNlbmRlciwgWDUwOUNl
cnRpZmljYXRlIGNlcnRpZmljYXRlLCBYNTA5Q2hhaW4gY2hhaW4sIFNzbFBvbGljeUVycm9ycyBz
c2xQb2xpY3lFcnJvcnMpIHsKIAkJCQlpZiAoc3NsUG9saWN5RXJyb3JzID09IFNzbFBvbGljeUVy
cm9ycy5Ob25lKQogCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCQkNCg0KICAgQ29tbWl0OiAwNzZmMWI5
ZDBhZjA0MGVhNzQ3YmQzMzQxZjA5YTJkODRlYjJiM2ZhDQogICBBdXRob3I6IE1pY2hhZWwgSHV0
Y2hpbnNvbiA8bS5qLmh1dGNoaW5zb25AZ21haWwuY29tPiAobWh1dGNoKQ0KICAgICBEYXRlOiAy
MDEzLTExLTE4IDIzOjUxOjU2IEdNVA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbW9u
by9tb25vZGV2ZWxvcC9jb21taXQvMDc2ZjFiOWQwYWYwNDBlYTc0N2JkMzM0MWYwOWEyZDg0ZWIy
YjNmYQ0KDQpbbWQtYWRkaW5zXSBCdW1wIHRvIHRyYWNrIFdlYlNlcnZpY2UgQVBJDQoNCkNoYW5n
ZWQgcGF0aHM6CiAgTSB2ZXJzaW9uLWNoZWNrcwoNCk1vZGlmaWVkOiB2ZXJzaW9uLWNoZWNrcw0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KQEAgLTE3LDcgKzE3LDcgQEAgREVQWzBdPW1kLWFkZGlucwogREVQX05BTUVb
MF09TURBRERJTlMKIERFUF9QQVRIWzBdPSR7dG9wX3NyY2Rpcn0vLi4vbWQtYWRkaW5zCiBERVBf
TU9EVUxFWzBdPWdpdEBnaXRodWIuY29tOnhhbWFyaW4vbWQtYWRkaW5zLmdpdAotREVQX05FRURF
RF9WRVJTSU9OWzBdPTRlYTA0ZGE2YjIwN2FkYWVkNTc4YjI2OWQ5ODhmMWFlM2Y2MDIxZmEKK0RF
UF9ORUVERURfVkVSU0lPTlswXT1jNTFlZTNiM2UxY2Q0N2YzZmIyODg2YjczMWVmOThlODNlMTM4
ZTIxCiBERVBfQlJBTkNIX0FORF9SRU1PVEVbMF09Im1hc3RlciBvcmlnaW4vbWFzdGVyIgogCiAj
IGhlYXAtc2hvdA0KDQogICBDb21taXQ6IDYyODZhMTBlYjFmNjNmYzQ5YzQwMjFlMWZjMWEyNmI0
ZmJiYWZkM2QNCiAgIEF1dGhvcjogQWxleCBDb3JyYWRvIDxhbGV4Y0B4YW1hcmluLmNvbT4gKGNo
a24pDQogICAgIERhdGU6IDIwMTMtMTEtMTkgMDI6Mjg6MTMgR01UDQogICAgICBVUkw6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC82Mjg2YTEwZWIxZjYzZmM0OWM0
MDIxZTFmYzFhMjZiNGZiYmFmZDNkDQoNCltidWlsZF0gQnVtcCBtZC1hZGRpbnMgYW5kIHh3dA0K
DQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9leHRlcm5hbC94d3QKICBNIHZlcnNpb24tY2hlY2tz
Cg0KTW9kaWZpZWQ6IG1haW4vZXh0ZXJuYWwveHd0DQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMSArMSBAQAot
U3VicHJvamVjdCBjb21taXQgZWY1NGQwNjVjNzIxY2UwMTNkMmRjOTYyODQ2Mjk0NDFhYmExNjcy
YgorU3VicHJvamVjdCBjb21taXQgMGY2NTQxZjY0ODY2YjZmNDVlZmQxMTFmYTExNmFkZjkzNjk0
ZjQ4ZA0KDQpNb2RpZmllZDogdmVyc2lvbi1jaGVja3MNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xNyw3ICsx
Nyw3IEBAIERFUFswXT1tZC1hZGRpbnMKIERFUF9OQU1FWzBdPU1EQURESU5TCiBERVBfUEFUSFsw
XT0ke3RvcF9zcmNkaXJ9Ly4uL21kLWFkZGlucwogREVQX01PRFVMRVswXT1naXRAZ2l0aHViLmNv
bTp4YW1hcmluL21kLWFkZGlucy5naXQKLURFUF9ORUVERURfVkVSU0lPTlswXT1jNTFlZTNiM2Ux
Y2Q0N2YzZmIyODg2YjczMWVmOThlODNlMTM4ZTIxCitERVBfTkVFREVEX1ZFUlNJT05bMF09ZmYy
NWVhOTA3NmI3YTgwZmJiNTJiY2RhODI3OTQ1NzlmMmFhNTc1YgogREVQX0JSQU5DSF9BTkRfUkVN
T1RFWzBdPSJtYXN0ZXIgb3JpZ2luL21hc3RlciIKIAogIyBoZWFwLXNob3QNCg0KICAgQ29tbWl0
OiA0NGVhYWIyMjM2MjI1NGRmY2VjMzM2MzZiOTRlNWE3MzZiYWQ0Mzk1DQogICBBdXRob3I6IE1p
a2UgS3LDvGdlciA8bWtydWVnZXJAeGFtYXJpbi5jb20+IChta3J1ZWdlcikNCiAgICAgRGF0ZTog
MjAxMy0xMS0xOSAwNToyNjo1MSBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21v
bm8vbW9ub2RldmVsb3AvY29tbWl0LzQ0ZWFhYjIyMzYyMjU0ZGZjZWMzMzYzNmI5NGU1YTczNmJh
ZDQzOTUNCg0KRml4ZWQgJ0J1ZyAxNjMyMyAtIFhTIGxvY2tzIHVwIHdoZW4gZ29pbmcgdG8gZGVj
bGFyYXRpb24gJy4NCg0KQ2hhbmdlZCBwYXRoczoKICBNIG1haW4vc3JjL2NvcmUvTW9ub0RldmVs
b3AuSWRlL01vbm9EZXZlbG9wLklkZS5UeXBlU3lzdGVtL1R5cGVTeXN0ZW1TZXJ2aWNlLmNzCg0K
TW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuSWRlL01vbm9EZXZlbG9wLklkZS5U
eXBlU3lzdGVtL1R5cGVTeXN0ZW1TZXJ2aWNlLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMjE2Miw3ICsy
MTYyLDEwIEBAIGludGVybmFsIHZvaWQgRW5zdXJlQXNzZW1ibHlMb2FkZWQgKCkKIAkJCQlsb2Nr
IChhc21Mb2NrZXIpIHsKIAkJCQkJaWYgKGFzc2VtYmx5ICE9IG51bGwpCiAJCQkJCQlyZXR1cm47
Ci0JCQkJCWFzc2VtYmx5ID0gTG9hZEFzc2VtYmx5ICgpID8/IG5ldyBEZWZhdWx0VW5yZXNvbHZl
ZEFzc2VtYmx5IChmaWxlTmFtZSk7CisJCQkJCWFzc2VtYmx5ID0gbmV3IERlZmF1bHRVbnJlc29s
dmVkQXNzZW1ibHkgKGZpbGVOYW1lKTsKKworCQkJCQlhc3NlbWJseSA9IExvYWRBc3NlbWJseSAo
KSA/PyBhc3NlbWJseTsgCisKIAkJCQkJT25Mb2FkIChFdmVudEFyZ3MuRW1wdHkpOwogCQkJCX0K
IAkJCX0NCg0KICAgQ29tbWl0OiA4NGY3YjQyODUxNmM2MTdhYTYzNzM4ZTMxOWU1MjFlOTg4MDQ5
ZGYwDQogICBBdXRob3I6IEFsYW4gTWNHb3Zlcm4gPGFsYW5AeGFtYXJpbi5jb20+IChhbGFubWNn
b3Zlcm4pDQogICAgIERhdGU6IDIwMTMtMTEtMTkgMTk6NDY6MTkgR01UDQogICAgICBVUkw6IGh0
dHBzOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC84NGY3YjQyODUxNmM2MTdh
YTYzNzM4ZTMxOWU1MjFlOTg4MDQ5ZGYwDQoNCltidWlsZF0gTm9ybWFsIHZlcmJvc2l0eSBieSBk
ZWZhdWx0DQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL3hidWlsZC5pbmNsdWRlCg0KTW9kaWZp
ZWQ6IG1haW4veGJ1aWxkLmluY2x1ZGUNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xNCw3ICsxNCw3IEBAIFBS
T0ZJTEVfTkFNRT1EZWJ1Z1dpbjMyCiBlbmRpZgogCiBYQlVJTEQ9eGJ1aWxkCi1YQlVJTERfVkVS
Qk9TSVRZPXF1aWV0CitYQlVJTERfVkVSQk9TSVRZPW5vcm1hbAogWEJVSUxEX0FSR1M9L3ZlcmJv
c2l0eTokKFhCVUlMRF9WRVJCT1NJVFkpIC9ub2xvZ28gL3Byb3BlcnR5OkNvZGVQYWdlPTY1MDAx
CiBYQlVJTERfUFJPRklMRT0vcHJvcGVydHk6Q29uZmlndXJhdGlvbj0kKFBST0ZJTEVfTkFNRSkK
IA0KDQogICBDb21taXQ6IDg2NjM3MjBhNDdiZGM2NGY1ZTdjYjQ4MjgxZTA3MDU0MmYzMDc2MjYN
CiAgIEF1dGhvcjogSsOpcsOpbWllIExhdmFsIDxqZXJlbWllLmxhdmFsQGdtYWlsLmNvbT4gKGdh
cnVtYSkNCiAgICAgRGF0ZTogMjAxMy0xMS0xOSAyMTowMjoyMCBHTVQNCiAgICAgIFVSTDogaHR0
cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0Lzg2NjM3MjBhNDdiZGM2NGY1
ZTdjYjQ4MjgxZTA3MDU0MmYzMDc2MjYNCg0KW2J1aWxkXSBCdW1wIG1kLWFkZGlucw0KDQpDaGFu
Z2VkIHBhdGhzOgogIE0gdmVyc2lvbi1jaGVja3MKDQpNb2RpZmllZDogdmVyc2lvbi1jaGVja3MN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCkBAIC0xNyw3ICsxNyw3IEBAIERFUFswXT1tZC1hZGRpbnMKIERFUF9OQU1F
WzBdPU1EQURESU5TCiBERVBfUEFUSFswXT0ke3RvcF9zcmNkaXJ9Ly4uL21kLWFkZGlucwogREVQ
X01PRFVMRVswXT1naXRAZ2l0aHViLmNvbTp4YW1hcmluL21kLWFkZGlucy5naXQKLURFUF9ORUVE
RURfVkVSU0lPTlswXT0zZDgxNjQ1NzM3Y2MyMDkwZjgyY2NiOWNjMzMwZGNiY2I1YWM4N2NkCitE
RVBfTkVFREVEX1ZFUlNJT05bMF09ZWQ1OTg2NzZlNWVhZGU1NTFlYmVhYTNhOGM4OGFiZDViYWQ3
NjRmMQogREVQX0JSQU5DSF9BTkRfUkVNT1RFWzBdPSJtb25vZGV2ZWxvcC00LjMuMC1icmFuY2gg
b3JpZ2luL21vbm9kZXZlbG9wLTQuMy4wLWJyYW5jaCIKIAogIyBoZWFwLXNob3QNCg0KICAgQ29t
bWl0OiA4YzQwOTYxZjlhMDhjMTQwMDNjYWQ3MTIxNjRiZjc0ZmQwYzc1YmFiDQogICBBdXRob3I6
IErDqXLDqW1pZSBMYXZhbCA8amVyZW1pZS5sYXZhbEBnbWFpbC5jb20+IChnYXJ1bWEpDQogICAg
IERhdGU6IDIwMTMtMTEtMTkgMjE6MDI6NTggR01UDQogICAgICBVUkw6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC84YzQwOTYxZjlhMDhjMTQwMDNjYWQ3MTIxNjRi
Zjc0ZmQwYzc1YmFiDQoNCk1lcmdlIGJyYW5jaCAnbWFzdGVyJyBpbnRvIG1vbm9kZXZlbG9wLTQu
My4wLWJyYW5jaAoKQ29uZmxpY3RzOgoJdmVyc2lvbi1jaGVja3MNCg0KQ2hhbmdlZCBwYXRoczoK
ICBNIG1haW4vZXh0ZXJuYWwvZGVidWdnZXItbGlicwogIE0gbWFpbi9leHRlcm5hbC9ucmVmYWN0
b3J5CiAgTSBtYWluL2V4dGVybmFsL3h3dAogIE0gbWFpbi9zcmMvYWRkaW5zL0NTaGFycEJpbmRp
bmcvTW9ub0RldmVsb3AuQ1NoYXJwLkNvbXBsZXRpb24vTWVtYmVyQ29tcGxldGlvbkRhdGEuY3MK
ICBNIG1haW4vc3JjL2FkZGlucy9DU2hhcnBCaW5kaW5nL01vbm9EZXZlbG9wLkNTaGFycC5Ub29s
dGlwcy9MYW5ndWFnZUl0ZW1Ub29sdGlwUHJvdmlkZXIuY3MKICBNIG1haW4vc3JjL2FkZGlucy9D
U2hhcnBCaW5kaW5nL01vbm9EZXZlbG9wLkNTaGFycC9TaWduYXR1cmVNYXJrdXBDcmVhdG9yLmNz
CiAgTSBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuRGVidWdnZXIuU29mdC9Nb25vRGV2ZWxv
cC5EZWJ1Z2dlci5Tb2Z0LkFzcE5ldC9Bc3BOZXRTb2Z0RGVidWdnZXJFbmdpbmUuY3MKICBNIG1h
aW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5SZWZhY3RvcmluZy9Nb25vRGV2ZWxvcC5Db2RlSXNz
dWVzL0NvZGVJc3N1ZVBhZC5jcwogIE0gbWFpbi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLldlYlJl
ZmVyZW5jZXMvTW9ub0RldmVsb3AuV2ViUmVmZXJlbmNlcy5EaWFsb2dzL1dDRkNvbmZpZ1dpZGdl
dC5jcwogIE0gbWFpbi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLldlYlJlZmVyZW5jZXMvZ3RrLWd1
aS9Nb25vRGV2ZWxvcC5XZWJSZWZlcmVuY2VzLkRpYWxvZ3MuV0NGQ29uZmlnV2lkZ2V0LmNzCiAg
TSBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuV2ViUmVmZXJlbmNlcy9ndGstZ3VpL2d1aS5z
dGV0aWMKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJz
aW9uQ29udHJvbC5HaXQuVGVzdHMvQmFzZUdpdFJlcG9zaXRvcnlUZXN0cy5jcwogIE0gbWFpbi9z
cmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdpdC5U
ZXN0cy9CYXNlUmVwb3NpdG9yeVRlc3RzLmNzCiAgTSBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNv
bnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuR2l0L01vbm9EZXZlbG9wLlZlcnNpb25D
b250cm9sLkdpdC9HaXRSZXBvc2l0b3J5LmNzCiAgTSBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNv
bnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5UZXN0cy9CYXNlU3Zu
UmVwb3NpdG9yeVRlc3RzLmNzCiAgTSBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9u
b0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5UZXN0cy9SZXBvc2l0b3J5VGVzdHMu
Y3MKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9TdWJ2ZXJzaW9uLldpbjMyLlRl
c3RzL1JlcG9zaXRvcnlUZXN0cy5jcwogIE0gbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3Jl
L01vbm9EZXZlbG9wLkNvcmUuV2ViL0NyZWRlbnRpYWxTdG9yZS5jcwogIE0gbWFpbi9zcmMvY29y
ZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9wLkNvcmUuV2ViL0lDcmVkZW50aWFsUHJvdmlk
ZXIuY3MKICBNIG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3Jl
LldlYi9Qcm94eUNhY2hlLmNzCiAgTSBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUvTW9u
b0RldmVsb3AuQ29yZS5XZWIvUmVxdWVzdEhlbHBlci5jcwogIE0gbWFpbi9zcmMvY29yZS9Nb25v
RGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9wLkNvcmUuV2ViL1dlYlNlcnZpY2UuY3MKICBNIG1haW4v
c3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3JlLmNzcHJvagogIE0gbWFp
bi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9wLkNvcmUvTG9nZ2luZ1NlcnZp
Y2UuY3MKICBNIG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3Jl
L1J1bnRpbWUuY3MKICBNIG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuSWRlL01vbm9EZXZlbG9w
LklkZS5UeXBlU3lzdGVtL1R5cGVTeXN0ZW1TZXJ2aWNlLmNzCiAgTSBtYWluL3Rlc3RzL1VuaXRU
ZXN0cy9Nb25vRGV2ZWxvcC5DU2hhcnBCaW5kaW5nL09uVGhlRmx5Rm9ybWF0dGVyVGVzdHMuY3MK
ICBNIG1haW4veGJ1aWxkLmluY2x1ZGUKDQpNb2RpZmllZDogbWFpbi9leHRlcm5hbC9kZWJ1Z2dl
ci1saWJzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQpAQCAtMSArMSBAQAotU3VicHJvamVjdCBjb21taXQgZjc0OTFl
NTM1NzAzYjgzNTI0MzJmYjc2MGRkYzA0MTc0M2Y5MDBjMworU3VicHJvamVjdCBjb21taXQgMzQ1
OTUwMjRmMDA3MmMxY2ZjNWIxZGRlMWQxOTRkMGRjYzVjMTFmYg0KDQpNb2RpZmllZDogbWFpbi9l
eHRlcm5hbC9ucmVmYWN0b3J5DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMSArMSBAQAotU3VicHJvamVjdCBj
b21taXQgMjA0NGVhMzZkM2NmODMxY2FjMWMwYzliZjZkZjBlZmRjZTAyMzBiMAorU3VicHJvamVj
dCBjb21taXQgZWE3NWJhYzNmMzc0MDYxYmEzYzI4YWUwMGY3Yjk2NTE4OWY5M2YzMQ0KDQpNb2Rp
ZmllZDogbWFpbi9leHRlcm5hbC94d3QNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xICsxIEBACi1TdWJwcm9q
ZWN0IGNvbW1pdCBlZjU0ZDA2NWM3MjFjZTAxM2QyZGM5NjI4NDYyOTQ0MWFiYTE2NzJiCitTdWJw
cm9qZWN0IGNvbW1pdCAwZjY1NDFmNjQ4NjZiNmY0NWVmZDExMWZhMTE2YWRmOTM2OTRmNDhkDQoN
Ck1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvQ1NoYXJwQmluZGluZy9Nb25vRGV2ZWxvcC5DU2hh
cnAuQ29tcGxldGlvbi9NZW1iZXJDb21wbGV0aW9uRGF0YS5jcw0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTY4
MiwzMCArNjgyLDcgQEAgcHVibGljIHN0YXRpYyBUb29sdGlwSW5mb3JtYXRpb24gQ3JlYXRlVG9v
bHRpcEluZm9ybWF0aW9uIChJQ29tcGlsYXRpb24gY29tcGlsYXQKIAkJCQl9CiAJCQl9CiAJCQlp
ZiAoY3JlYXRlRm9vdGVyKSB7Ci0JCQkJaWYgKGVudGl0eSBpcyBJVHlwZSkgewotCQkJCQl2YXIg
dHlwZSA9IGVudGl0eSBhcyBJVHlwZTsKLQkJCQkJdmFyIGRlZiA9IHR5cGUuR2V0RGVmaW5pdGlv
biAoKTsKLQkJCQkJaWYgKGRlZiAhPSBudWxsKSB7Ci0JCQkJCQlpZiAoIXN0cmluZy5Jc051bGxP
ckVtcHR5IChkZWYuUGFyZW50QXNzZW1ibHkuQXNzZW1ibHlOYW1lKSkgewotCQkJCQkJCXZhciBw
cm9qZWN0ID0gZGVmLkdldFNvdXJjZVByb2plY3QgKCk7Ci0JCQkJCQkJaWYgKHByb2plY3QgIT0g
bnVsbCkgewotCQkJCQkJCQl2YXIgcmVsUGF0aCA9IEZpbGVTZXJ2aWNlLkFic29sdXRlVG9SZWxh
dGl2ZVBhdGggKHByb2plY3QuQmFzZURpcmVjdG9yeSwgZGVmLlJlZ2lvbi5GaWxlTmFtZSk7Ci0J
CQkJCQkJCXRvb2x0aXBJbmZvLkZvb3Rlck1hcmt1cCA9ICI8c21hbGw+IiArIEdldHRleHRDYXRh
bG9nLkdldFN0cmluZyAoIlByb2plY3Q6XHR7MH0iLCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBlVGV4
dCAoZGVmLlBhcmVudEFzc2VtYmx5LkFzc2VtYmx5TmFtZSkpICsgIjwvc21hbGw+IiArIEVudmly
b25tZW50Lk5ld0xpbmUgKwotCQkJCQkJCQkJIjxzbWFsbD4iICsgR2V0dGV4dENhdGFsb2cuR2V0
U3RyaW5nICgiRmlsZTpcdFx0ezB9IChsaW5lIHsxfSkiLCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBl
VGV4dCAocmVsUGF0aCksIGRlZi5SZWdpb24uQmVnaW4uTGluZSkgKyAiPC9zbWFsbD4iOwotCQkJ
CQkJCX0KLQkJCQkJCX0KLQkJCQkJfQotCi0JCQkJfSBlbHNlIGlmIChlbnRpdHkuRGVjbGFyaW5n
VHlwZURlZmluaXRpb24gIT0gbnVsbCkgewotCQkJCQl2YXIgcHJvamVjdCA9IGVudGl0eS5EZWNs
YXJpbmdUeXBlRGVmaW5pdGlvbi5HZXRTb3VyY2VQcm9qZWN0ICgpOwotCQkJCQlpZiAocHJvamVj
dCAhPSBudWxsKSB7Ci0JCQkJCQl2YXIgcmVsUGF0aCA9IEZpbGVTZXJ2aWNlLkFic29sdXRlVG9S
ZWxhdGl2ZVBhdGggKHByb2plY3QuQmFzZURpcmVjdG9yeSwgZW50aXR5LlJlZ2lvbi5GaWxlTmFt
ZSk7Ci0JCQkJCQl0b29sdGlwSW5mby5Gb290ZXJNYXJrdXAgPSAKLQkJCQkJCQkiPHNtYWxsPiIg
KyBHZXR0ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJQcm9qZWN0Olx0ezB9IiwgQW1iaWVuY2VTZXJ2
aWNlLkVzY2FwZVRleHQgKHByb2plY3QuTmFtZSkpICsgIjwvc21hbGw+IiArIEVudmlyb25tZW50
Lk5ld0xpbmUgKwotCQkJCQkJCSI8c21hbGw+IiArIEdldHRleHRDYXRhbG9nLkdldFN0cmluZyAo
IkZyb206XHR7MH0iLCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAoZW50aXR5LkRlY2xhcmlu
Z1R5cGUuRnVsbE5hbWUpKSArICI8L3NtYWxsPiIgKyBFbnZpcm9ubWVudC5OZXdMaW5lICsKLQkJ
CQkJCQkiPHNtYWxsPiIgKyBHZXR0ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJGaWxlOlx0XHR7MH0g
KGxpbmUgezF9KSIsIEFtYmllbmNlU2VydmljZS5Fc2NhcGVUZXh0IChyZWxQYXRoKSwgZW50aXR5
LlJlZ2lvbi5CZWdpbi5MaW5lKSArICI8L3NtYWxsPiI7Ci0JCQkJCX0KLQkJCQl9CisJCQkJdG9v
bHRpcEluZm8uRm9vdGVyTWFya3VwID0gc2lnLkNyZWF0ZUZvb3RlciAoZW50aXR5KTsKIAkJCX0K
IAkJCXJldHVybiB0b29sdGlwSW5mbzsKIAkJfQpAQCAtNzMyLDggKzcwOSw4IEBAIHB1YmxpYyBz
dGF0aWMgVG9vbHRpcEluZm9ybWF0aW9uIENyZWF0ZVRvb2x0aXBJbmZvcm1hdGlvbiAoSUNvbXBp
bGF0aW9uIGNvbXBpbGF0CiAKIAkJCXZhciBkZWYgPSB0eXBlLkdldERlZmluaXRpb24gKCk7CiAJ
CQlpZiAoZGVmICE9IG51bGwpIHsKLQkJCQlpZiAoY3JlYXRlRm9vdGVyICYmICFzdHJpbmcuSXNO
dWxsT3JFbXB0eSAoZGVmLlBhcmVudEFzc2VtYmx5LkFzc2VtYmx5TmFtZSkpCi0JCQkJCXRvb2x0
aXBJbmZvLkZvb3Rlck1hcmt1cCA9ICI8c21hbGw+IEZyb20gIiArIEFtYmllbmNlU2VydmljZS5F
c2NhcGVUZXh0IChkZWYuUGFyZW50QXNzZW1ibHkuQXNzZW1ibHlOYW1lKSArICI8L3NtYWxsPiI7
CisJCQkJaWYgKGNyZWF0ZUZvb3RlcikKKwkJCQkJdG9vbHRpcEluZm8uRm9vdGVyTWFya3VwID0g
c2lnLkNyZWF0ZUZvb3RlciAoZGVmKTsKIAkJCQl0b29sdGlwSW5mby5TdW1tYXJ5TWFya3VwID0g
QW1iaWVuY2VTZXJ2aWNlLkdldFN1bW1hcnlNYXJrdXAgKGRlZikgPz8gIiI7CiAJCQl9CiAJCQly
ZXR1cm4gdG9vbHRpcEluZm87DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvQ1NoYXJwQmlu
ZGluZy9Nb25vRGV2ZWxvcC5DU2hhcnAuVG9vbHRpcHMvTGFuZ3VhZ2VJdGVtVG9vbHRpcFByb3Zp
ZGVyLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQpAQCAtMTQxLDcgKzE0MSw3IEBAIHByb3RlY3RlZCBvdmVycmlk
ZSBHdGsuV2luZG93IENyZWF0ZVRvb2x0aXBXaW5kb3cgKE1vbm8uVGV4dEVkaXRvci5UZXh0RWRp
dG9yIGVkCiAKIAkJCXZhciB0aXRlbSA9IChUb29sVGlwRGF0YSlpdGVtLkl0ZW07CiAKLQkJCXZh
ciB0b29sdGlwSW5mb3JtYXRpb24gPSBDcmVhdGVUb29sdGlwICh0aXRlbSwgb2Zmc2V0LCBudWxs
KTsKKwkJCXZhciB0b29sdGlwSW5mb3JtYXRpb24gPSBDcmVhdGVUb29sdGlwICh0aXRlbSwgb2Zm
c2V0LCBudWxsLCBtb2RpZmllclN0YXRlKTsKIAkJCWlmICh0b29sdGlwSW5mb3JtYXRpb24gPT0g
bnVsbCB8fCBzdHJpbmcuSXNOdWxsT3JFbXB0eSAodG9vbHRpcEluZm9ybWF0aW9uLlNpZ25hdHVy
ZU1hcmt1cCkpCiAJCQkJcmV0dXJuIG51bGw7CiAKQEAgLTE3OSwxMiArMTc5LDEzIEBAIHB1Ymxp
YyBvdmVycmlkZSBHdGsuV2luZG93IFNob3dUb29sdGlwV2luZG93IChUZXh0RWRpdG9yIGVkaXRv
ciwgaW50IG9mZnNldCwgR2RrCiAJCQlyZXR1cm4gdGlwV2luZG93OwogCQl9CiAKLQkJVG9vbHRp
cEluZm9ybWF0aW9uIENyZWF0ZVRvb2x0aXAgKFRvb2xUaXBEYXRhIGRhdGEsIGludCBvZmZzZXQs
IEFtYmllbmNlIGFtYmllbmNlKQorCQlUb29sdGlwSW5mb3JtYXRpb24gQ3JlYXRlVG9vbHRpcCAo
VG9vbFRpcERhdGEgZGF0YSwgaW50IG9mZnNldCwgQW1iaWVuY2UgYW1iaWVuY2UsIEdkay5Nb2Rp
ZmllclR5cGUgbW9kaWZpZXJTdGF0ZSkKIAkJewogCQkJUmVzb2x2ZVJlc3VsdCByZXN1bHQgPSBk
YXRhLlJlc3VsdDsKIAkJCXZhciBkb2MgPSBJZGVBcHAuV29ya2JlbmNoLkFjdGl2ZURvY3VtZW50
OwogCQkJaWYgKGRvYyA9PSBudWxsKQogCQkJCXJldHVybiBudWxsOworCQkJYm9vbCBjcmVhdGVG
b290ZXIgPSAobW9kaWZpZXJTdGF0ZSAmIEdkay5Nb2RpZmllclR5cGUuTW9kMU1hc2spICE9IDA7
CiAJCQl0cnkgewogCiAJCQkJaWYgKHJlc3VsdCBpcyBBbGlhc05hbWVzcGFjZVJlc29sdmVSZXN1
bHQpIHsKQEAgLTI3NiwxMiArMjc3LDEzIEBAIFRvb2x0aXBJbmZvcm1hdGlvbiBDcmVhdGVUb29s
dGlwIChUb29sVGlwRGF0YSBkYXRhLCBpbnQgb2Zmc2V0LCBBbWJpZW5jZSBhbWJpZW5jCiAJCQkJ
CXZhciBtZXRob2QgPSBhbGxNZXRob2RzLkZpcnN0T3JEZWZhdWx0ICgpOwogCQkJCQlpZiAobWV0
aG9kICE9IG51bGwpIHsKIAkJCQkJCXJldHVybiBNZW1iZXJDb21wbGV0aW9uRGF0YS5DcmVhdGVU
b29sdGlwSW5mb3JtYXRpb24gKAotCQkJCQkJZG9jLkNvbXBpbGF0aW9uLAotCQkJCQkJZG9jLlBh
cnNlZERvY3VtZW50LlBhcnNlZEZpbGUgYXMgQ1NoYXJwVW5yZXNvbHZlZEZpbGUsCi0JCQkJCQlk
b2MuRWRpdG9yLAotCQkJCQkJZG9jLkdldEZvcm1hdHRpbmdQb2xpY3kgKCksCi0JCQkJCQltZXRo
b2QsIAotCQkJCQkJZmFsc2UpOworCQkJCQkJCWRvYy5Db21waWxhdGlvbiwKKwkJCQkJCQlkb2Mu
UGFyc2VkRG9jdW1lbnQuUGFyc2VkRmlsZSBhcyBDU2hhcnBVbnJlc29sdmVkRmlsZSwKKwkJCQkJ
CQlkb2MuRWRpdG9yLAorCQkJCQkJCWRvYy5HZXRGb3JtYXR0aW5nUG9saWN5ICgpLAorCQkJCQkJ
CW1ldGhvZCwKKwkJCQkJCQlmYWxzZSwKKwkJCQkJCQljcmVhdGVGb290ZXIpOwogCQkJCQl9CiAJ
CQkJfSBlbHNlIGlmIChyZXN1bHQgaXMgQ1NoYXJwSW52b2NhdGlvblJlc29sdmVSZXN1bHQpIHsK
IAkJCQkJdmFyIGludm9jYXRpb25SZXN1bHQgPSAoQ1NoYXJwSW52b2NhdGlvblJlc29sdmVSZXN1
bHQpcmVzdWx0OwpAQCAtMjkyLDE2ICsyOTQsMTggQEAgVG9vbHRpcEluZm9ybWF0aW9uIENyZWF0
ZVRvb2x0aXAgKFRvb2xUaXBEYXRhIGRhdGEsIGludCBvZmZzZXQsIEFtYmllbmNlIGFtYmllbmMK
IAkJCQkJCWRvYy5FZGl0b3IsCiAJCQkJCQlkb2MuR2V0Rm9ybWF0dGluZ1BvbGljeSAoKSwKIAkJ
CQkJCW1lbWJlciwgCi0JCQkJCQlmYWxzZSk7CisJCQkJCQlmYWxzZSwKKwkJCQkJCWNyZWF0ZUZv
b3Rlcik7CiAJCQkJfSBlbHNlIGlmIChyZXN1bHQgaXMgTWVtYmVyUmVzb2x2ZVJlc3VsdCkgewog
CQkJCQl2YXIgbWVtYmVyID0gKChNZW1iZXJSZXNvbHZlUmVzdWx0KXJlc3VsdCkuTWVtYmVyOwog
CQkJCQlyZXR1cm4gTWVtYmVyQ29tcGxldGlvbkRhdGEuQ3JlYXRlVG9vbHRpcEluZm9ybWF0aW9u
ICgKLQkJCQkJZG9jLkNvbXBpbGF0aW9uLAotCQkJCQlkb2MuUGFyc2VkRG9jdW1lbnQuUGFyc2Vk
RmlsZSBhcyBDU2hhcnBVbnJlc29sdmVkRmlsZSwKLQkJCQkJZG9jLkVkaXRvciwKLQkJCQkJZG9j
LkdldEZvcm1hdHRpbmdQb2xpY3kgKCksCi0JCQkJCW1lbWJlciwgCi0JCQkJCWZhbHNlKTsKKwkJ
CQkJCWRvYy5Db21waWxhdGlvbiwKKwkJCQkJCWRvYy5QYXJzZWREb2N1bWVudC5QYXJzZWRGaWxl
IGFzIENTaGFycFVucmVzb2x2ZWRGaWxlLAorCQkJCQkJZG9jLkVkaXRvciwKKwkJCQkJCWRvYy5H
ZXRGb3JtYXR0aW5nUG9saWN5ICgpLAorCQkJCQkJbWVtYmVyLCAKKwkJCQkJCWZhbHNlLAorCQkJ
CQkJY3JlYXRlRm9vdGVyKTsKIAkJCQl9IGVsc2UgaWYgKHJlc3VsdCBpcyBOYW1lc3BhY2VSZXNv
bHZlUmVzdWx0KSB7CiAJCQkJCXZhciB0b29sdGlwSW5mbyA9IG5ldyBUb29sdGlwSW5mb3JtYXRp
b24gKCk7CiAJCQkJCXZhciByZXNvbHZlciA9IChkb2MuUGFyc2VkRG9jdW1lbnQuUGFyc2VkRmls
ZSBhcyBDU2hhcnBVbnJlc29sdmVkRmlsZSkuR2V0UmVzb2x2ZXIgKGRvYy5Db21waWxhdGlvbiwg
ZG9jLkVkaXRvci5DYXJldC5Mb2NhdGlvbik7CkBAIC0zMjksMTIgKzMzMywxMyBAQCBUb29sdGlw
SW5mb3JtYXRpb24gQ3JlYXRlVG9vbHRpcCAoVG9vbFRpcERhdGEgZGF0YSwgaW50IG9mZnNldCwg
QW1iaWVuY2UgYW1iaWVuYwogCQkJCQlyZXR1cm4gdG9vbHRpcEluZm87CiAJCQkJfSBlbHNlIHsK
IAkJCQkJcmV0dXJuIE1lbWJlckNvbXBsZXRpb25EYXRhLkNyZWF0ZVRvb2x0aXBJbmZvcm1hdGlv
biAoCi0JCQkJCWRvYy5Db21waWxhdGlvbiwKLQkJCQkJZG9jLlBhcnNlZERvY3VtZW50LlBhcnNl
ZEZpbGUgYXMgQ1NoYXJwVW5yZXNvbHZlZEZpbGUsCi0JCQkJCWRvYy5FZGl0b3IsCi0JCQkJCWRv
Yy5HZXRGb3JtYXR0aW5nUG9saWN5ICgpLAotCQkJCQlyZXN1bHQuVHlwZSwgCi0JCQkJCWZhbHNl
KTsKKwkJCQkJCWRvYy5Db21waWxhdGlvbiwKKwkJCQkJCWRvYy5QYXJzZWREb2N1bWVudC5QYXJz
ZWRGaWxlIGFzIENTaGFycFVucmVzb2x2ZWRGaWxlLAorCQkJCQkJZG9jLkVkaXRvciwKKwkJCQkJ
CWRvYy5HZXRGb3JtYXR0aW5nUG9saWN5ICgpLAorCQkJCQkJcmVzdWx0LlR5cGUsIAorCQkJCQkJ
ZmFsc2UsCisJCQkJCQljcmVhdGVGb290ZXIpOwogCQkJCX0KIAkJCX0gY2F0Y2ggKEV4Y2VwdGlv
biBlKSB7CiAJCQkJTG9nZ2luZ1NlcnZpY2UuTG9nRXJyb3IgKCJFcnJvciB3aGlsZSBjcmVhdGlu
ZyB0b29sdGlwLiIsIGUpOw0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL0NTaGFycEJpbmRp
bmcvTW9ub0RldmVsb3AuQ1NoYXJwL1NpZ25hdHVyZU1hcmt1cENyZWF0b3IuY3MNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCkBAIC0xNjExLDUgKzE2MTEsNDYgQEAgc3RyaW5nIEhpZ2hsaWdodFNlbWFudGljYWxseSAo
c3RyaW5nIHN0ciwgQ2h1bmtTdHlsZSBzdHlsZSkKIAkJCQlyZXR1cm4gc3RyOwogCQkJcmV0dXJu
IEhpZ2hsaWdodCAoc3RyLCBzdHlsZSk7CiAJCX0KKworCQlwdWJsaWMgc3RyaW5nIENyZWF0ZUZv
b3RlciAoSUVudGl0eSBlbnRpdHkpCisJCXsKKwkJCXZhciB0eXBlID0gZW50aXR5IGFzIElUeXBl
OworCQkJaWYgKHR5cGUgIT0gbnVsbCkgeworCQkJCXZhciBkZWYgPSB0eXBlLkdldERlZmluaXRp
b24gKCk7CisJCQkJaWYgKGRlZiAhPSBudWxsKSB7CisJCQkJCWlmICghZGVmLlJlZ2lvbi5Jc0Vt
cHR5KSB7CisJCQkJCQl2YXIgcHJvamVjdCA9IGRlZi5HZXRTb3VyY2VQcm9qZWN0ICgpOworCQkJ
CQkJaWYgKHByb2plY3QgIT0gbnVsbCkgeworCQkJCQkJCXZhciByZWxQYXRoID0gRmlsZVNlcnZp
Y2UuQWJzb2x1dGVUb1JlbGF0aXZlUGF0aCAocHJvamVjdC5CYXNlRGlyZWN0b3J5LCBkZWYuUmVn
aW9uLkZpbGVOYW1lKTsKKwkJCQkJCQlyZXR1cm4KKwkJCQkJCQkJKHN0cmluZy5Jc051bGxPckVt
cHR5IChkZWYuTmFtZXNwYWNlKSA/ICIiIDogIjxzbWFsbD4iICsgR2V0dGV4dENhdGFsb2cuR2V0
U3RyaW5nICgiTmFtZXNwYWNlOlx0ezB9IiwgQW1iaWVuY2VTZXJ2aWNlLkVzY2FwZVRleHQgKGRl
Zi5OYW1lc3BhY2UpKSArICI8L3NtYWxsPiIgKyBFbnZpcm9ubWVudC5OZXdMaW5lKSArCisJCQkJ
CQkJCSI8c21hbGw+IiArIEdldHRleHRDYXRhbG9nLkdldFN0cmluZyAoIlByb2plY3Q6XHR7MH0i
LCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAoZGVmLlBhcmVudEFzc2VtYmx5LkFzc2VtYmx5
TmFtZSkpICsgIjwvc21hbGw+IiArIEVudmlyb25tZW50Lk5ld0xpbmUgKworCQkJCQkJCQkiPHNt
YWxsPiIgKyBHZXR0ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJGaWxlOlx0XHR7MH0gKGxpbmUgezF9
KSIsIEFtYmllbmNlU2VydmljZS5Fc2NhcGVUZXh0IChyZWxQYXRoKSwgZGVmLlJlZ2lvbi5CZWdp
bi5MaW5lKSArICI8L3NtYWxsPiI7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJcmV0dXJuCisJCQkJ
CQkoc3RyaW5nLklzTnVsbE9yRW1wdHkgKGRlZi5OYW1lc3BhY2UpID8gIiIgOiAiPHNtYWxsPiIg
KyBHZXR0ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJOYW1lc3BhY2U6XHR7MH0iLCBBbWJpZW5jZVNl
cnZpY2UuRXNjYXBlVGV4dCAoZGVmLk5hbWVzcGFjZSkpICsgIjwvc21hbGw+IiArIEVudmlyb25t
ZW50Lk5ld0xpbmUpICsKKwkJCQkJCSI8c21hbGw+IiArIEdldHRleHRDYXRhbG9nLkdldFN0cmlu
ZyAoIkFzc2VtYmx5Olx0ezB9IiwgQW1iaWVuY2VTZXJ2aWNlLkVzY2FwZVRleHQgKGRlZi5QYXJl
bnRBc3NlbWJseS5Bc3NlbWJseU5hbWUpKSArICI8L3NtYWxsPiI7CisJCQkJfQorCQkJCXJldHVy
biBudWxsOworCQkJfSAKKworCQkJaWYgKGVudGl0eS5EZWNsYXJpbmdUeXBlRGVmaW5pdGlvbiAh
PSBudWxsKSB7CisJCQkJaWYgKCFlbnRpdHkuUmVnaW9uLklzRW1wdHkpIHsKKwkJCQkJdmFyIHBy
b2plY3QgPSBlbnRpdHkuRGVjbGFyaW5nVHlwZURlZmluaXRpb24uR2V0U291cmNlUHJvamVjdCAo
KTsKKwkJCQkJaWYgKHByb2plY3QgIT0gbnVsbCkgeworCQkJCQkJdmFyIHJlbFBhdGggPSBGaWxl
U2VydmljZS5BYnNvbHV0ZVRvUmVsYXRpdmVQYXRoIChwcm9qZWN0LkJhc2VEaXJlY3RvcnksIGVu
dGl0eS5SZWdpb24uRmlsZU5hbWUpOworCQkJCQkJcmV0dXJuCisJCQkJCQkJIjxzbWFsbD4iICsg
R2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiUHJvamVjdDpcdHswfSIsIEFtYmllbmNlU2Vydmlj
ZS5Fc2NhcGVUZXh0IChwcm9qZWN0Lk5hbWUpKSArICI8L3NtYWxsPiIgKyBFbnZpcm9ubWVudC5O
ZXdMaW5lICsKKwkJCQkJCQkiPHNtYWxsPiIgKyBHZXR0ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJG
cm9tIHR5cGU6XHR7MH0iLCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAoZW50aXR5LkRlY2xh
cmluZ1R5cGVEZWZpbml0aW9uLkZ1bGxOYW1lKSkgKyAiPC9zbWFsbD4iICsgRW52aXJvbm1lbnQu
TmV3TGluZSArCisJCQkJCQkJIjxzbWFsbD4iICsgR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgi
RmlsZTpcdFx0ezB9IChsaW5lIHsxfSkiLCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAocmVs
UGF0aCksIGVudGl0eS5SZWdpb24uQmVnaW4uTGluZSkgKyAiPC9zbWFsbD4iOworCQkJCQl9CisJ
CQkJfQorCQkJCXJldHVybgorCQkJCQkiPHNtYWxsPiIgKyBHZXR0ZXh0Q2F0YWxvZy5HZXRTdHJp
bmcgKCJGcm9tIHR5cGU6XHR7MH0iLCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAoZW50aXR5
LkRlY2xhcmluZ1R5cGVEZWZpbml0aW9uLkZ1bGxOYW1lKSkgKyAiPC9zbWFsbD4iICsgRW52aXJv
bm1lbnQuTmV3TGluZSArCisJCQkJCSI8c21hbGw+IiArIEdldHRleHRDYXRhbG9nLkdldFN0cmlu
ZyAoIkFzc2VtYmx5Olx0ezB9IiwgQW1iaWVuY2VTZXJ2aWNlLkVzY2FwZVRleHQgKGVudGl0eS5E
ZWNsYXJpbmdUeXBlRGVmaW5pdGlvbi5QYXJlbnRBc3NlbWJseS5Bc3NlbWJseU5hbWUpKSArICI8
L3NtYWxsPiI7CisJCQl9CisJCQlyZXR1cm4gbnVsbDsKKwkJfQogCX0KIH0NCg0KTW9kaWZpZWQ6
IG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5EZWJ1Z2dlci5Tb2Z0L01vbm9EZXZlbG9wLkRl
YnVnZ2VyLlNvZnQuQXNwTmV0L0FzcE5ldFNvZnREZWJ1Z2dlckVuZ2luZS5jcw0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KQEAgLTU3LDcgKzU3LDcgQEAgRmlsZVBhdGggR2V0RnhEaXIgKE1vbm9UYXJnZXRSdW50aW1l
IHJ1bnRpbWUsIENsclZlcnNpb24gdmVyc2lvbikKIAkJCQlyZXR1cm4gcHJlZml4LkNvbWJpbmUg
KCJsaWIiLCAibW9ubyIsICIyLjAiKTsKIAkJCWNhc2UgQ2xyVmVyc2lvbi5OZXRfNF8wOgogCQkJ
CXZhciBuZXQ0NVBhdGggPSBwcmVmaXguQ29tYmluZSAoImxpYiIsICJtb25vIiwgIjQuNSIpOwot
CQkJCWlmIChEaXJlY3RvcnkuRXhpc3RzIChuZXQ0NVBhdGgpKSByZXR1cm4gbmV0NDVQYXRoOwor
CQkJCWlmIChEaXJlY3RvcnkuRXhpc3RzIChuZXQ0NVBhdGgpICYmICFNb25vRGV2ZWxvcC5Db3Jl
LlBsYXRmb3JtLklzV2luZG93cykgcmV0dXJuIG5ldDQ1UGF0aDsKIAkJCQlyZXR1cm4gcHJlZml4
LkNvbWJpbmUgKCJsaWIiLCAibW9ubyIsICI0LjAiKTsKIAkJCWNhc2UgQ2xyVmVyc2lvbi5OZXRf
NF81OgogCQkJCXJldHVybiBwcmVmaXguQ29tYmluZSAoImxpYiIsICJtb25vIiwgIjQuNSIpOw0K
DQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLlJlZmFjdG9yaW5nL01vbm9E
ZXZlbG9wLkNvZGVJc3N1ZXMvQ29kZUlzc3VlUGFkLmNzDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMjk5LDYg
KzI5OSw5IEBAIHZvaWQgU2V0Tm9kZSAoVHJlZU5hdmlnYXRvciBuYXZpZ2F0b3IsIElJc3N1ZVRy
ZWVOb2RlIG5vZGUpCiAKIAkJdm9pZCBDbGVhclNpYmxpbmdOb2RlcyAoVHJlZU5hdmlnYXRvciBu
YXZpZ2F0b3IpCiAJCXsKKwkJCWlmIChuYXZpZ2F0b3IuQ3VycmVudFBvc2l0aW9uID09IG51bGwp
CisJCQkJcmV0dXJuOworCiAJCQlkbyB7CiAJCQkJdmFyIG5vZGUgPSBuYXZpZ2F0b3IuR2V0VmFs
dWUgKG5vZGVGaWVsZCk7CiAJCQkJaWYgKG5vZGUgIT0gbnVsbCkgew0KDQpNb2RpZmllZDogbWFp
bi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLldlYlJlZmVyZW5jZXMvTW9ub0RldmVsb3AuV2ViUmVm
ZXJlbmNlcy5EaWFsb2dzL1dDRkNvbmZpZ1dpZGdldC5jcw0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTQ1LDYg
KzQ1LDExIEBAIHB1YmxpYyBXQ0ZDb25maWdXaWRnZXQgKENsaWVudE9wdGlvbnMgb3B0aW9ucykK
IAkJCQogCQkJZGljdFR5cGVzID0gbmV3IExpc3Q8VHlwZT4gKERlZmF1bHREaWN0aW9uYXJ5VHlw
ZXMpOwogCQkJUG9wdWxhdGVCb3ggKGRpY3Rpb25hcnlDb2xsZWN0aW9uLCAiRGljdGlvbmFyeSIs
IGRpY3RUeXBlcyk7CisKKwkJCWZvcmVhY2ggKHZhciBhY2Nlc3MgaW4gQWNjZXNzR2VuZXJhdGlv
blR5cGVzKQorCQkJCWxpc3RBY2Nlc3MuQXBwZW5kVGV4dCAoYWNjZXNzKTsKKworCQkJbGlzdEFj
Y2Vzcy5BY3RpdmUgPSBvcHRpb25zLkdlbmVyYXRlSW50ZXJuYWxUeXBlcyA/IDEgOiAwOwogCQl9
CiAJCQogCQlwdWJsaWMgQ2xpZW50T3B0aW9ucyBPcHRpb25zIHsKQEAgLTcxLDYgKzc2LDExIEBA
IHB1YmxpYyBXQ0ZDb25maWdXaWRnZXQgKENsaWVudE9wdGlvbnMgb3B0aW9ucykKIAkJCXR5cGVv
ZiAoU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLkxpc3REaWN0aW9uYXJ5KSwKIAkJCXR5
cGVvZiAoU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLk9yZGVyZWREaWN0aW9uYXJ5KQog
CQl9OworCisJCXN0YXRpYyByZWFkb25seSBMaXN0PHN0cmluZz4gQWNjZXNzR2VuZXJhdGlvblR5
cGVzID0gbmV3IExpc3Q8c3RyaW5nPiB7CisJCQkiUHVibGljIiwKKwkJCSJJbnRlcm5hbCIKKwkJ
fTsKIAkJCiAJCXB1YmxpYyBib29sIE1vZGlmaWVkIHsKIAkJCWdldDsKQEAgLTE2Miw2ICsxNzIs
MTEgQEAgaW50ZXJuYWwgdm9pZCBVcGRhdGUgKCkKIAkJewogCQkJVXBkYXRlQm94IChsaXN0Q29s
bGVjdGlvbiwgIkxpc3QiLCBsaXN0VHlwZXMpOwogCQkJVXBkYXRlQm94IChkaWN0aW9uYXJ5Q29s
bGVjdGlvbiwgIkRpY3Rpb25hcnkiLCBkaWN0VHlwZXMpOworCisJCQlpZiAobGlzdEFjY2Vzcy5B
Y3RpdmUgIT0gKE9wdGlvbnMuR2VuZXJhdGVJbnRlcm5hbFR5cGVzID8gMSA6IDApKSB7CisJCQkJ
T3B0aW9ucy5HZW5lcmF0ZUludGVybmFsVHlwZXMgPSAhT3B0aW9ucy5HZW5lcmF0ZUludGVybmFs
VHlwZXM7CisJCQkJTW9kaWZpZWQgPSB0cnVlOworCQkJfQogCQl9CiAJfQogfQ0KDQpNb2RpZmll
ZDogbWFpbi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLldlYlJlZmVyZW5jZXMvZ3RrLWd1aS9Nb25v
RGV2ZWxvcC5XZWJSZWZlcmVuY2VzLkRpYWxvZ3MuV0NGQ29uZmlnV2lkZ2V0LmNzDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQpAQCAtOSw4ICs5LDEwIEBAIHB1YmxpYyBwYXJ0aWFsIGNsYXNzIFdDRkNvbmZpZ1dpZGdl
dAogCQlwcml2YXRlIGdsb2JhbDo6R3RrLkNvbWJvQm94IGRpY3Rpb25hcnlDb2xsZWN0aW9uOwog
CQlwcml2YXRlIGdsb2JhbDo6R3RrLkxhYmVsIGxhYmVsMTsKIAkJcHJpdmF0ZSBnbG9iYWw6Okd0
ay5MYWJlbCBsYWJlbDI7CisJCXByaXZhdGUgZ2xvYmFsOjpHdGsuTGFiZWwgbGFiZWwzOworCQlw
cml2YXRlIGdsb2JhbDo6R3RrLkNvbWJvQm94IGxpc3RBY2Nlc3M7CiAJCXByaXZhdGUgZ2xvYmFs
OjpHdGsuQ29tYm9Cb3ggbGlzdENvbGxlY3Rpb247Ci0JCQorCiAJCXByb3RlY3RlZCB2aXJ0dWFs
IHZvaWQgQnVpbGQgKCkKIAkJewogCQkJZ2xvYmFsOjpTdGV0aWMuR3VpLkluaXRpYWxpemUgKHRo
aXMpOwpAQCAtNTgsMTcgKzYwLDM4IEBAIHByb3RlY3RlZCB2aXJ0dWFsIHZvaWQgQnVpbGQgKCkK
IAkJCXczLlhPcHRpb25zID0gKChnbG9iYWw6Okd0ay5BdHRhY2hPcHRpb25zKSg0KSk7CiAJCQl3
My5ZT3B0aW9ucyA9ICgoZ2xvYmFsOjpHdGsuQXR0YWNoT3B0aW9ucykoNCkpOwogCQkJLy8gQ29u
dGFpbmVyIGNoaWxkIHdjZk9wdGlvbnMuR3RrLlRhYmxlK1RhYmxlQ2hpbGQKKwkJCXRoaXMubGFi
ZWwzID0gbmV3IGdsb2JhbDo6R3RrLkxhYmVsICgpOworCQkJdGhpcy5sYWJlbDMuTmFtZSA9ICJs
YWJlbDMiOworCQkJdGhpcy5sYWJlbDMuTGFiZWxQcm9wID0gZ2xvYmFsOjpNb25vLlVuaXguQ2F0
YWxvZy5HZXRTdHJpbmcgKCJBY2Nlc3MgbGV2ZWw6Iik7CisJCQl0aGlzLndjZk9wdGlvbnMuQWRk
ICh0aGlzLmxhYmVsMyk7CisJCQlnbG9iYWw6Okd0ay5UYWJsZS5UYWJsZUNoaWxkIHc0ID0gKChn
bG9iYWw6Okd0ay5UYWJsZS5UYWJsZUNoaWxkKSh0aGlzLndjZk9wdGlvbnMgW3RoaXMubGFiZWwz
XSkpOworCQkJdzQuVG9wQXR0YWNoID0gKCh1aW50KSgyKSk7CisJCQl3NC5Cb3R0b21BdHRhY2gg
PSAoKHVpbnQpKDMpKTsKKwkJCXc0LlhPcHRpb25zID0gKChnbG9iYWw6Okd0ay5BdHRhY2hPcHRp
b25zKSg0KSk7CisJCQl3NC5ZT3B0aW9ucyA9ICgoZ2xvYmFsOjpHdGsuQXR0YWNoT3B0aW9ucyko
NCkpOworCQkJLy8gQ29udGFpbmVyIGNoaWxkIHdjZk9wdGlvbnMuR3RrLlRhYmxlK1RhYmxlQ2hp
bGQKKwkJCXRoaXMubGlzdEFjY2VzcyA9IGdsb2JhbDo6R3RrLkNvbWJvQm94Lk5ld1RleHQgKCk7
CisJCQl0aGlzLmxpc3RBY2Nlc3MuTmFtZSA9ICJsaXN0QWNjZXNzIjsKKwkJCXRoaXMud2NmT3B0
aW9ucy5BZGQgKHRoaXMubGlzdEFjY2Vzcyk7CisJCQlnbG9iYWw6Okd0ay5UYWJsZS5UYWJsZUNo
aWxkIHc1ID0gKChnbG9iYWw6Okd0ay5UYWJsZS5UYWJsZUNoaWxkKSh0aGlzLndjZk9wdGlvbnMg
W3RoaXMubGlzdEFjY2Vzc10pKTsKKwkJCXc1LlRvcEF0dGFjaCA9ICgodWludCkoMikpOworCQkJ
dzUuQm90dG9tQXR0YWNoID0gKCh1aW50KSgzKSk7CisJCQl3NS5MZWZ0QXR0YWNoID0gKCh1aW50
KSgxKSk7CisJCQl3NS5SaWdodEF0dGFjaCA9ICgodWludCkoMikpOworCQkJdzUuWE9wdGlvbnMg
PSAoKGdsb2JhbDo6R3RrLkF0dGFjaE9wdGlvbnMpKDcpKTsKKwkJCXc1LllPcHRpb25zID0gKChn
bG9iYWw6Okd0ay5BdHRhY2hPcHRpb25zKSg0KSk7CisJCQkvLyBDb250YWluZXIgY2hpbGQgd2Nm
T3B0aW9ucy5HdGsuVGFibGUrVGFibGVDaGlsZAogCQkJdGhpcy5saXN0Q29sbGVjdGlvbiA9IGds
b2JhbDo6R3RrLkNvbWJvQm94Lk5ld1RleHQgKCk7CiAJCQl0aGlzLmxpc3RDb2xsZWN0aW9uLk5h
bWUgPSAibGlzdENvbGxlY3Rpb24iOwogCQkJdGhpcy53Y2ZPcHRpb25zLkFkZCAodGhpcy5saXN0
Q29sbGVjdGlvbik7Ci0JCQlnbG9iYWw6Okd0ay5UYWJsZS5UYWJsZUNoaWxkIHc0ID0gKChnbG9i
YWw6Okd0ay5UYWJsZS5UYWJsZUNoaWxkKSh0aGlzLndjZk9wdGlvbnMgW3RoaXMubGlzdENvbGxl
Y3Rpb25dKSk7Ci0JCQl3NC5MZWZ0QXR0YWNoID0gKCh1aW50KSgxKSk7Ci0JCQl3NC5SaWdodEF0
dGFjaCA9ICgodWludCkoMikpOwotCQkJdzQuWE9wdGlvbnMgPSAoKGdsb2JhbDo6R3RrLkF0dGFj
aE9wdGlvbnMpKDcpKTsKLQkJCXc0LllPcHRpb25zID0gKChnbG9iYWw6Okd0ay5BdHRhY2hPcHRp
b25zKSg0KSk7CisJCQlnbG9iYWw6Okd0ay5UYWJsZS5UYWJsZUNoaWxkIHc2ID0gKChnbG9iYWw6
Okd0ay5UYWJsZS5UYWJsZUNoaWxkKSh0aGlzLndjZk9wdGlvbnMgW3RoaXMubGlzdENvbGxlY3Rp
b25dKSk7CisJCQl3Ni5MZWZ0QXR0YWNoID0gKCh1aW50KSgxKSk7CisJCQl3Ni5SaWdodEF0dGFj
aCA9ICgodWludCkoMikpOworCQkJdzYuWE9wdGlvbnMgPSAoKGdsb2JhbDo6R3RrLkF0dGFjaE9w
dGlvbnMpKDcpKTsKKwkJCXc2LllPcHRpb25zID0gKChnbG9iYWw6Okd0ay5BdHRhY2hPcHRpb25z
KSg0KSk7CiAJCQl0aGlzLmRpYWxvZzFfVkJveC5BZGQgKHRoaXMud2NmT3B0aW9ucyk7Ci0JCQln
bG9iYWw6Okd0ay5Cb3guQm94Q2hpbGQgdzUgPSAoKGdsb2JhbDo6R3RrLkJveC5Cb3hDaGlsZCko
dGhpcy5kaWFsb2cxX1ZCb3ggW3RoaXMud2NmT3B0aW9uc10pKTsKLQkJCXc1LlBvc2l0aW9uID0g
MDsKKwkJCWdsb2JhbDo6R3RrLkJveC5Cb3hDaGlsZCB3NyA9ICgoZ2xvYmFsOjpHdGsuQm94LkJv
eENoaWxkKSh0aGlzLmRpYWxvZzFfVkJveCBbdGhpcy53Y2ZPcHRpb25zXSkpOworCQkJdzcuUG9z
aXRpb24gPSAwOwogCQkJdGhpcy5BZGQgKHRoaXMuZGlhbG9nMV9WQm94KTsKIAkJCWlmICgodGhp
cy5DaGlsZCAhPSBudWxsKSkgewogCQkJCXRoaXMuQ2hpbGQuU2hvd0FsbCAoKTsNCg0KTW9kaWZp
ZWQ6IG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5XZWJSZWZlcmVuY2VzL2d0ay1ndWkvZ3Vp
LnN0ZXRpYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KQEAgLTY0NiwxMiArNjQ2LDYgQEAKICAgICAgICAgICAgICAg
PHBsYWNlaG9sZGVyIC8+CiAgICAgICAgICAgICA8L2NoaWxkPgogICAgICAgICAgICAgPGNoaWxk
PgotICAgICAgICAgICAgICA8cGxhY2Vob2xkZXIgLz4KLSAgICAgICAgICAgIDwvY2hpbGQ+Ci0g
ICAgICAgICAgICA8Y2hpbGQ+Ci0gICAgICAgICAgICAgIDxwbGFjZWhvbGRlciAvPgotICAgICAg
ICAgICAgPC9jaGlsZD4KLSAgICAgICAgICAgIDxjaGlsZD4KICAgICAgICAgICAgICAgPHdpZGdl
dCBjbGFzcz0iR3RrLkNvbWJvQm94IiBpZD0iZGljdGlvbmFyeUNvbGxlY3Rpb24iPgogICAgICAg
ICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJNZW1iZXJOYW1lIiAvPgogICAgICAgICAgICAgICAg
IDxwcm9wZXJ0eSBuYW1lPSJJc1RleHRDb21ibyI+VHJ1ZTwvcHJvcGVydHk+CkBAIC03MTIsNiAr
NzA2LDQ3IEBACiAgICAgICAgICAgICAgIDwvcGFja2luZz4KICAgICAgICAgICAgIDwvY2hpbGQ+
CiAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgIDx3aWRnZXQgY2xhc3M9Ikd0ay5M
YWJlbCIgaWQ9ImxhYmVsMyI+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Ik1lbWJl
ck5hbWUiIC8+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IkxhYmVsUHJvcCIgdHJh
bnNsYXRhYmxlPSJ5ZXMiPkFjY2VzcyBsZXZlbDo8L3Byb3BlcnR5PgorICAgICAgICAgICAgICA8
L3dpZGdldD4KKyAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgPHByb3Bl
cnR5IG5hbWU9IlRvcEF0dGFjaCI+MjwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3Bl
cnR5IG5hbWU9IkJvdHRvbUF0dGFjaCI+MzwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHBy
b3BlcnR5IG5hbWU9IkF1dG9TaXplIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8
cHJvcGVydHkgbmFtZT0iWE9wdGlvbnMiPkZpbGw8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAg
IDxwcm9wZXJ0eSBuYW1lPSJZT3B0aW9ucyI+RmlsbDwvcHJvcGVydHk+CisgICAgICAgICAgICAg
ICAgPHByb3BlcnR5IG5hbWU9IlhFeHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAg
ICAgICA8cHJvcGVydHkgbmFtZT0iWEZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAg
ICAgIDxwcm9wZXJ0eSBuYW1lPSJYU2hyaW5rIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAg
ICAgICAgPHByb3BlcnR5IG5hbWU9IllFeHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAg
ICAgICAgICA8cHJvcGVydHkgbmFtZT0iWUZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAg
ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJZU2hyaW5rIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAg
ICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICA8Y2hp
bGQ+CisgICAgICAgICAgICAgIDx3aWRnZXQgY2xhc3M9Ikd0ay5Db21ib0JveCIgaWQ9Imxpc3RB
Y2Nlc3MiPgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJNZW1iZXJOYW1lIiAvPgor
ICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJJc1RleHRDb21ibyI+VHJ1ZTwvcHJvcGVy
dHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Ikl0ZW1zIiB0cmFuc2xhdGFibGU9
InllcyIgLz4KKyAgICAgICAgICAgICAgPC93aWRnZXQ+CisgICAgICAgICAgICAgIDxwYWNraW5n
PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJUb3BBdHRhY2giPjI8L3Byb3BlcnR5
PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJCb3R0b21BdHRhY2giPjM8L3Byb3Bl
cnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJMZWZ0QXR0YWNoIj4xPC9wcm9w
ZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iUmlnaHRBdHRhY2giPjI8L3By
b3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJBdXRvU2l6ZSI+RmFsc2U8
L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJYT3B0aW9ucyI+RXhw
YW5kLCBTaHJpbmssIEZpbGw8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBu
YW1lPSJZT3B0aW9ucyI+RmlsbDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5
IG5hbWU9IlhFeHBhbmQiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0
eSBuYW1lPSJYRmlsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5
IG5hbWU9IlhTaHJpbmsiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0
eSBuYW1lPSJZRXhwYW5kIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3Bl
cnR5IG5hbWU9IllGaWxsIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVy
dHkgbmFtZT0iWVNocmluayI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICA8L3BhY2tp
bmc+CisgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgPGNoaWxkPgogICAgICAgICAg
ICAgICA8d2lkZ2V0IGNsYXNzPSJHdGsuQ29tYm9Cb3giIGlkPSJsaXN0Q29sbGVjdGlvbiI+CiAg
ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Ik1lbWJlck5hbWUiIC8+CiAgICAgICAgICAg
ICAgICAgPHByb3BlcnR5IG5hbWU9IklzVGV4dENvbWJvIj5UcnVlPC9wcm9wZXJ0eT4NCg0KTW9k
aWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9u
Q29udHJvbC5HaXQuVGVzdHMvQmFzZUdpdFJlcG9zaXRvcnlUZXN0cy5jcw0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
QEAgLTMyLDE0ICszMiwxNCBAQAogdXNpbmcgTkdpdC5BcGk7DQogdXNpbmcgTlVuaXQuRnJhbWV3
b3JrOw0KIHVzaW5nIFN5c3RlbS5JTzsNCi11c2luZyBTeXN0ZW07DQogdXNpbmcgTkdpdC5TdG9y
YWdlLkZpbGU7DQogdXNpbmcgTkdpdC5SZXZ3YWxrOw0KK3VzaW5nIFN5c3RlbS5MaW5xOw0KIA0K
IG5hbWVzcGFjZSBNb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQuVGVzdHMNCiB7DQogCVtU
ZXN0Rml4dHVyZV0NCi0JcHVibGljIGNsYXNzIEJhc2VHaXRVdGlsc1Rlc3QgOiBCYXNlUmVwb1V0
aWxzVGVzdA0KKwlzZWFsZWQgY2xhc3MgQmFzZUdpdFV0aWxzVGVzdCA6IEJhc2VSZXBvVXRpbHNU
ZXN0DQogCXsNCiAJCVtTZXRVcF0NCiAJCXB1YmxpYyBvdmVycmlkZSB2b2lkIFNldHVwICgpDQpA
QCAtNTEsMTEgKzUxLDExIEBAIHB1YmxpYyBvdmVycmlkZSB2b2lkIFNldHVwICgpCiAJCQlSZXBv
TG9jYXRpb24gPSAiZmlsZTovLy8iICsgUm9vdFVybC5GdWxsUGF0aCArICJyZXBvLmdpdCI7DQog
DQogCQkJLy8gSW5pdGlhbGl6ZSB0aGUgYmFyZSByZXBvLg0KLQkJCUluaXRDb21tYW5kIGNpID0g
bmV3IEluaXRDb21tYW5kICgpOw0KKwkJCXZhciBjaSA9IG5ldyBJbml0Q29tbWFuZCAoKTsNCiAJ
CQljaS5TZXREaXJlY3RvcnkgKG5ldyBTaGFycGVuLkZpbGVQYXRoIChSb290VXJsLkZ1bGxQYXRo
ICsgInJlcG8uZ2l0IikpOw0KIAkJCWNpLlNldEJhcmUgKHRydWUpOw0KIAkJCWNpLkNhbGwgKCk7
DQotCQkJRmlsZVJlcG9zaXRvcnkgYmFyZSA9IG5ldyBGaWxlUmVwb3NpdG9yeSAobmV3IFNoYXJw
ZW4uRmlsZVBhdGggKFJvb3RVcmwuRnVsbFBhdGggKyAicmVwby5naXQiKSk7DQorCQkJdmFyIGJh
cmUgPSBuZXcgRmlsZVJlcG9zaXRvcnkgKG5ldyBTaGFycGVuLkZpbGVQYXRoIChSb290VXJsLkZ1
bGxQYXRoICsgInJlcG8uZ2l0IikpOw0KIAkJCXN0cmluZyBicmFuY2ggPSBDb25zdGFudHMuUl9I
RUFEUyArICJtYXN0ZXIiOw0KIA0KIAkJCVJlZlVwZGF0ZSBoZWFkID0gYmFyZS5VcGRhdGVSZWYg
KENvbnN0YW50cy5IRUFEKTsNCkBAIC0xMzIsMjEgKzEzMiwyMSBAQCBwdWJsaWMgb3ZlcnJpZGUg
dm9pZCBNb3Zlc0RpcmVjdG9yeSAoKQogDQogCQlwcm90ZWN0ZWQgb3ZlcnJpZGUgUmV2aXNpb24g
R2V0SGVhZFJldmlzaW9uICgpDQogCQl7DQotCQkJR2l0UmVwb3NpdG9yeSByZXBvMiA9IChHaXRS
ZXBvc2l0b3J5KVJlcG87DQotCQkJUmV2V2FsayBydyA9IG5ldyBSZXZXYWxrIChyZXBvMi5Sb290
UmVwb3NpdG9yeSk7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsNCisJCQl2
YXIgcncgPSBuZXcgUmV2V2FsayAocmVwbzIuUm9vdFJlcG9zaXRvcnkpOw0KIAkJCU9iamVjdElk
IGhlYWRJZCA9IHJlcG8yLlJvb3RSZXBvc2l0b3J5LlJlc29sdmUgKENvbnN0YW50cy5IRUFEKTsN
CiAJCQlpZiAoaGVhZElkID09IG51bGwpDQogCQkJCXJldHVybiBudWxsOw0KIA0KIAkJCVJldkNv
bW1pdCBjb21taXQgPSBydy5QYXJzZUNvbW1pdCAoaGVhZElkKTsNCi0JCQlHaXRSZXZpc2lvbiBy
ZXYgPSBuZXcgR2l0UmV2aXNpb24gKFJlcG8sIHJlcG8yLlJvb3RSZXBvc2l0b3J5LCBjb21taXQu
SWQuTmFtZSk7DQorCQkJdmFyIHJldiA9IG5ldyBHaXRSZXZpc2lvbiAoUmVwbywgcmVwbzIuUm9v
dFJlcG9zaXRvcnksIGNvbW1pdC5JZC5OYW1lKTsNCiAJCQlyZXYuQ29tbWl0ID0gY29tbWl0Ow0K
IAkJCXJldHVybiByZXY7DQogCQl9DQogDQogCQlwcm90ZWN0ZWQgb3ZlcnJpZGUgdm9pZCBQb3N0
Q29tbWl0IChSZXBvc2l0b3J5IHJlcG8pDQogCQl7DQotCQkJR2l0UmVwb3NpdG9yeSByZXBvMiA9
IChHaXRSZXBvc2l0b3J5KXJlcG87DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpcmVw
bzsNCiAJCQlyZXBvMi5QdXNoIChuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3Jp
bmcuTnVsbFByb2dyZXNzTW9uaXRvciAoKSwgcmVwbzIuR2V0Q3VycmVudFJlbW90ZSAoKSwgcmVw
bzIuR2V0Q3VycmVudEJyYW5jaCAoKSk7DQogCQl9DQogDQpAQCAtMTYxLDYgKzE2MSwxODMgQEAg
cHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQgQmxhbWVFeHRyYUludGVybmFscyAoQW5ub3RhdGlvbiBb
XSBhbm5vdGF0aW9ucykKIAkJCUFzc2VydC5Jc1RydWUgKGFubm90YXRpb25zIFsyXS5IYXNEYXRl
KTsNCiAJCX0NCiANCisJCVtUZXN0XQ0KKwkJcHVibGljIHZvaWQgVGVzdEdpdFN0YXNoICgpDQor
CQl7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsNCisJCQlBZGRGaWxlICgi
ZmlsZTIiLCAibm90aGluZyIsIHRydWUsIHRydWUpOw0KKwkJCUFkZEZpbGUgKCJmaWxlMSIsICJ0
ZXh0IiwgdHJ1ZSwgZmFsc2UpOw0KKwkJCXJlcG8yLkdldFN0YXNoZXMgKCkuQ3JlYXRlIChuZXcg
TnVsbFByb2dyZXNzTW9uaXRvciAoKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAoIUZpbGUuRXhpc3Rz
IChSb290Q2hlY2tvdXQgKyAiZmlsZTEiKSwgIlN0YXNoIGNyZWF0aW9uIGZhaWx1cmUiKTsNCisJ
CQlyZXBvMi5HZXRTdGFzaGVzICgpLlBvcCAobmV3IE51bGxQcm9ncmVzc01vbml0b3IgKCkpOw0K
Kw0KKwkJCVZlcnNpb25JbmZvIHZpID0gcmVwbzIuR2V0VmVyc2lvbkluZm8gKFJvb3RDaGVja291
dCArICJmaWxlMSIsIFZlcnNpb25JbmZvUXVlcnlGbGFncy5JZ25vcmVDYWNoZSk7DQorCQkJQXNz
ZXJ0LkFyZUVxdWFsIChWZXJzaW9uU3RhdHVzLlNjaGVkdWxlZEFkZCwgdmkuU3RhdHVzICYgVmVy
c2lvblN0YXR1cy5TY2hlZHVsZWRBZGQsICJTdGFzaCBwb3AgZmFpbHVyZSIpOw0KKwkJfQ0KKw0K
KwkJW1Rlc3RdDQorCQlwdWJsaWMgdm9pZCBUZXN0R2l0QnJhbmNoQ3JlYXRpb24gKCkNCisJCXsN
CisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlSZXBvOw0KKw0KKwkJCUFkZEZpbGUgKCJm
aWxlMSIsICJ0ZXh0IiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJcmVwbzIuQ3JlYXRlQnJhbmNoICgiYnJh
bmNoMSIsIG51bGwpOw0KKw0KKwkJCXJlcG8yLlN3aXRjaFRvQnJhbmNoIChuZXcgTW9ub0RldmVs
b3AuQ29yZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVsbFByb2dyZXNzTW9uaXRvciAoKSwgImJyYW5j
aDEiKTsNCisJCQlBc3NlcnQuQXJlRXF1YWwgKCJicmFuY2gxIiwgcmVwbzIuR2V0Q3VycmVudEJy
YW5jaCAoKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAoRmlsZS5FeGlzdHMgKFJvb3RDaGVja291dCAr
ICJmaWxlMSIpLCAiQnJhbmNoIG5vdCBpbmhlcml0aW5nIGZyb20gY3VycmVudC4iKTsNCisNCisJ
CQlBZGRGaWxlICgiZmlsZTIiLCAidGV4dCIsIHRydWUsIGZhbHNlKTsNCisJCQlyZXBvMi5DcmVh
dGVCcmFuY2ggKCJicmFuY2gyIiwgbnVsbCk7DQorCQkJcmVwbzIuU3dpdGNoVG9CcmFuY2ggKG5l
dyBNb25vRGV2ZWxvcC5Db3JlLlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NNb25pdG9y
ICgpLCAiYnJhbmNoMiIpOw0KKwkJCUFzc2VydC5Jc1RydWUgKCFGaWxlLkV4aXN0cyAoUm9vdENo
ZWNrb3V0ICsgImZpbGUyIiksICJVbmNvbW1pdHRlZCBjaGFuZ2VzIHdlcmUgbm90IHN0YXNoZWQi
KTsNCisJCQlyZXBvMi5HZXRTdGFzaGVzICgpLlBvcCAobmV3IE51bGxQcm9ncmVzc01vbml0b3Ig
KCkpOw0KKw0KKwkJCUFzc2VydC5Jc1RydWUgKEZpbGUuRXhpc3RzIChSb290Q2hlY2tvdXQgKyAi
ZmlsZTIiKSwgIlVuY29tbWl0dGVkIGNoYW5nZXMgd2VyZSBub3Qgc3Rhc2hlZCBjb3JyZWN0bHki
KTsNCisNCisJCQlyZXBvMi5Td2l0Y2hUb0JyYW5jaCAobmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJv
Z3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVzc01vbml0b3IgKCksICJtYXN0ZXIiKTsNCisJCQly
ZXBvMi5SZW1vdmVCcmFuY2ggKCJicmFuY2gxIik7DQorCQkJQXNzZXJ0LklzRmFsc2UgKHJlcG8y
LkdldEJyYW5jaGVzICgpLkFueSAoYiA9PiBiLk5hbWUgPT0gImJyYW5jaDEiKSwgIkZhaWxlZCB0
byBkZWxldGUgYnJhbmNoIik7DQorDQorCQkJcmVwbzIuUmVuYW1lQnJhbmNoICgiYnJhbmNoMiIs
ICJicmFuY2gzIik7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuR2V0QnJhbmNoZXMgKCkuQW55
IChiID0+IGIuTmFtZSA9PSAiYnJhbmNoMyIpICYmIHJlcG8yLkdldEJyYW5jaGVzICgpLkFsbCAo
YiA9PiBiLk5hbWUgIT0gImJyYW5jaDIiKSwgIkZhaWxlZCB0byByZW5hbWUgYnJhbmNoIik7DQor
CQl9DQorDQorCQlbVGVzdF0NCisJCXB1YmxpYyB2b2lkIFRlc3RHaXRTeW5jQnJhbmNoZXMgKCkN
CisJCXsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlSZXBvOw0KKwkJCUFkZEZpbGUg
KCJmaWxlMSIsICJ0ZXh0IiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJUG9zdENvbW1pdCAocmVwbzIpOw0K
Kw0KKwkJCXJlcG8yLkNyZWF0ZUJyYW5jaCAoImJyYW5jaDMiLCBudWxsKTsNCisJCQlyZXBvMi5T
d2l0Y2hUb0JyYW5jaCAobmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51
bGxQcm9ncmVzc01vbml0b3IgKCksICJicmFuY2gzIik7DQorCQkJQWRkRmlsZSAoImZpbGUyIiwg
ImFzZGYiLCB0cnVlLCB0cnVlKTsNCisJCQlyZXBvMi5QdXNoIChuZXcgTW9ub0RldmVsb3AuQ29y
ZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVsbFByb2dyZXNzTW9uaXRvciAoKSwgIm9yaWdpbiIsICJi
cmFuY2gzIik7DQorDQorCQkJcmVwbzIuU3dpdGNoVG9CcmFuY2ggKG5ldyBNb25vRGV2ZWxvcC5D
b3JlLlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NNb25pdG9yICgpLCAibWFzdGVyIik7
DQorDQorCQkJcmVwbzIuQ3JlYXRlQnJhbmNoICgiYnJhbmNoNCIsICJvcmlnaW4vYnJhbmNoMyIp
Ow0KKwkJCXJlcG8yLlN3aXRjaFRvQnJhbmNoIChuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVz
c01vbml0b3JpbmcuTnVsbFByb2dyZXNzTW9uaXRvciAoKSwgImJyYW5jaDQiKTsNCisJCQlBc3Nl
cnQuSXNUcnVlIChGaWxlLkV4aXN0cyAoUm9vdENoZWNrb3V0ICsgImZpbGUyIiksICJUcmFja2lu
ZyByZW1vdGUgaXMgbm90IGdyYWJiaW5nIGNvcnJlY3QgY29tbWl0cyIpOw0KKwkJfQ0KKw0KKwkJ
W1Rlc3RdDQorCQlwdWJsaWMgdm9pZCBUZXN0UHVzaENoYW5nZXNldCAoKQ0KKwkJew0KKwkJCXZh
ciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KVJlcG87DQorCQkJQWRkRmlsZSAoImZpbGUiLCAibWVo
IiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJUG9zdENvbW1pdCAocmVwbzIpOw0KKw0KKwkJCUFkZEZpbGUg
KCJmaWxlMSIsICJ0ZXh0IiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJQWRkRmlsZSAoImZpbGUyIiwgInRl
eHQyIiwgdHJ1ZSwgdHJ1ZSk7DQorDQorCQkJQ2hhbmdlU2V0IGRpZmYgPSByZXBvMi5HZXRQdXNo
Q2hhbmdlU2V0ICgib3JpZ2luIiwgIm1hc3RlciIpOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoMiwg
ZGlmZi5JdGVtcy5Db3VudCAoKSk7DQorDQorCQkJQ2hhbmdlU2V0SXRlbSBpdGVtID0gZGlmZi5H
ZXRGaWxlSXRlbSAoUm9vdENoZWNrb3V0ICsgImZpbGUxIik7DQorCQkJQXNzZXJ0LklzTm90TnVs
bCAoaXRlbSk7DQorCQkJQXNzZXJ0LkFyZUVxdWFsIChWZXJzaW9uU3RhdHVzLlNjaGVkdWxlZEFk
ZCwgaXRlbS5TdGF0dXMgJiBWZXJzaW9uU3RhdHVzLlNjaGVkdWxlZEFkZCk7DQorDQorCQkJaXRl
bSA9IGRpZmYuR2V0RmlsZUl0ZW0gKFJvb3RDaGVja291dCArICJmaWxlMSIpOw0KKwkJCUFzc2Vy
dC5Jc05vdE51bGwgKGl0ZW0pOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoVmVyc2lvblN0YXR1cy5T
Y2hlZHVsZWRBZGQsIGl0ZW0uU3RhdHVzICYgVmVyc2lvblN0YXR1cy5TY2hlZHVsZWRBZGQpOw0K
KwkJfQ0KKw0KKwkJW1Rlc3RdDQorCQlbSWdub3JlICgiR2V0UHVzaERpZmYgY29udGVudCBpcyBh
bHdheXMgZW1wdHkiKV0NCisJCXB1YmxpYyB2b2lkIFRlc3RQdXNoRGlmZiAoKQ0KKwkJew0KKwkJ
CXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KVJlcG87DQorCQkJQWRkRmlsZSAoImZpbGUiLCAi
bWVoIiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJUG9zdENvbW1pdCAocmVwbzIpOw0KKw0KKwkJCUFkZEZp
bGUgKCJmaWxlMSIsICJ0ZXh0IiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJQWRkRmlsZSAoImZpbGUyIiwg
InRleHQyIiwgdHJ1ZSwgdHJ1ZSk7DQorDQorCQkJRGlmZkluZm9bXSBkaWZmID0gcmVwbzIuR2V0
UHVzaERpZmYgKCJvcmlnaW4iLCAibWFzdGVyIik7DQorCQkJQXNzZXJ0LkFyZUVxdWFsICgyLCBk
aWZmLkxlbmd0aCk7DQorDQorCQkJRGlmZkluZm8gaXRlbSA9IGRpZmYgWzBdOw0KKwkJCUFzc2Vy
dC5Jc05vdE51bGwgKGl0ZW0pOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoImZpbGUxIiwgaXRlbS5G
aWxlTmFtZS5GaWxlTmFtZSk7DQorCQkJLy9Bc3NlcnQuQXJlRXF1YWwgKCJ0ZXh0IiwgaXRlbS5D
b250ZW50KTsNCisNCisJCQlpdGVtID0gZGlmZiBbMV07DQorCQkJQXNzZXJ0LklzTm90TnVsbCAo
aXRlbSk7DQorCQkJQXNzZXJ0LkFyZUVxdWFsICgiZmlsZTIiLCBpdGVtLkZpbGVOYW1lLkZpbGVO
YW1lKTsNCisJCQkvL0Fzc2VydC5BcmVFcXVhbCAoInRleHQyIiwgaXRlbS5Db250ZW50KTsNCisJ
CX0NCisNCisJCXByb3RlY3RlZCBvdmVycmlkZSB2b2lkIFRlc3RWYWxpZFVybCAoKQ0KKwkJew0K
KwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KVJlcG87DQorCQkJQXNzZXJ0LklzVHJ1ZSAo
cmVwbzIuSXNVcmxWYWxpZCAoImdpdEBnaXRodWIuY29tOm1vbm8vbW9ub2RldmVsb3AiKSk7DQor
CQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAoImdpdDovL2dpdGh1Yi5jb206ODAv
bW9uby9tb25vZGV2ZWxvcC5naXQiKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxW
YWxpZCAoInNzaDovL3VzZXJAaG9zdC5jb206ODAvbW9uby9tb25vZGV2ZWxvcC5naXQiKSk7DQor
CQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAoImh0dHA6Ly9naXRodWIuY29tOjgw
L21vbm8vbW9ub2RldmVsb3AuZ2l0IikpOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJs
VmFsaWQgKCJodHRwczovL2dpdGh1Yi5jb206ODAvbW9uby9tb25vZGV2ZWxvcC5naXQiKSk7DQor
CQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAoImZ0cDovL2dpdGh1Yi5jb206ODAv
bW9uby9tb25vZGV2ZWxvcC5naXQiKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxW
YWxpZCAoImZ0cHM6Ly9naXRodWIuY29tOjgwL21vbm8vbW9ub2RldmVsb3AuZ2l0IikpOw0KKwkJ
CUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJmaWxlOi8vL21vbm8vbW9ub2RldmVs
b3AuZ2l0IikpOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJyc3luYzov
L2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxwby5naXQiKSk7DQorCQl9DQorDQorCQlbVGVzdF0N
CisJCXB1YmxpYyB2b2lkIFRlc3RSZW1vdGUgKCkNCisJCXsNCisJCQl2YXIgcmVwbzIgPSAoR2l0
UmVwb3NpdG9yeSlSZXBvOw0KKw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoIm9yaWdpbiIsIHJlcG8y
LkdldEN1cnJlbnRSZW1vdGUgKCkpOw0KKw0KKwkJCUFkZEZpbGUgKCJmaWxlMSIsICJ0ZXh0Iiwg
dHJ1ZSwgdHJ1ZSk7DQorCQkJUG9zdENvbW1pdCAocmVwbzIpOw0KKwkJCXJlcG8yLkNyZWF0ZUJy
YW5jaCAoImJyYW5jaDEiLCBudWxsKTsNCisJCQlyZXBvMi5Td2l0Y2hUb0JyYW5jaCAobmV3IE1v
bm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVzc01vbml0b3IgKCks
ICJicmFuY2gxIik7DQorCQkJQWRkRmlsZSAoImZpbGUyIiwgInRleHQiLCB0cnVlLCB0cnVlKTsN
CisJCQlQb3N0Q29tbWl0IChyZXBvMik7DQorCQkJQXNzZXJ0LkFyZUVxdWFsICgyLCByZXBvMi5H
ZXRCcmFuY2hlcyAoKS5Db3VudCAoKSk7DQorCQkJQXNzZXJ0LkFyZUVxdWFsICgxLCByZXBvMi5H
ZXRSZW1vdGVzICgpLkNvdW50ICgpKTsNCisNCisJCQlyZXBvMi5SZW5hbWVSZW1vdGUgKCJvcmln
aW4iLCAib3RoZXIiKTsNCisJCQlBc3NlcnQuQXJlRXF1YWwgKCJvdGhlciIsIHJlcG8yLkdldEN1
cnJlbnRSZW1vdGUgKCkpOw0KKw0KKwkJCXJlcG8yLlJlbW92ZVJlbW90ZSAoIm90aGVyIik7DQor
CQkJQXNzZXJ0LklzRmFsc2UgKHJlcG8yLkdldFJlbW90ZXMgKCkuQW55ICgpKTsNCisJCX0NCisN
CisJCVtUZXN0XQ0KKwkJcHVibGljIHZvaWQgVGVzdElzTWVyZ2VkICgpDQorCQl7DQorCQkJdmFy
IHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsNCisJCQlBZGRGaWxlICgiZmlsZTEiLCAidGV4
dCIsIHRydWUsIHRydWUpOw0KKw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzQnJhbmNoTWVy
Z2VkICgibWFzdGVyIikpOw0KKw0KKwkJCXJlcG8yLkNyZWF0ZUJyYW5jaCAoImJyYW5jaDEiLCBu
dWxsKTsNCisJCQlyZXBvMi5Td2l0Y2hUb0JyYW5jaCAobmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJv
Z3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVzc01vbml0b3IgKCksICJicmFuY2gxIik7DQorCQkJ
QWRkRmlsZSAoImZpbGUyIiwgInRleHQiLCB0cnVlLCB0cnVlKTsNCisNCisJCQlyZXBvMi5Td2l0
Y2hUb0JyYW5jaCAobmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQ
cm9ncmVzc01vbml0b3IgKCksICJtYXN0ZXIiKTsNCisJCQlBc3NlcnQuSXNGYWxzZSAocmVwbzIu
SXNCcmFuY2hNZXJnZWQgKCJicmFuY2gxIikpOw0KKwkJCXJlcG8yLk1lcmdlICgiYnJhbmNoMSIs
IEdpdFVwZGF0ZU9wdGlvbnMuTm9ybWFsVXBkYXRlLCBuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9n
cmVzc01vbml0b3JpbmcuTnVsbFByb2dyZXNzTW9uaXRvciAoKSk7DQorCQkJQXNzZXJ0LklzVHJ1
ZSAocmVwbzIuSXNCcmFuY2hNZXJnZWQgKCJicmFuY2gxIikpOw0KKwkJfQ0KKw0KKwkJW1Rlc3Rd
DQorCQlwdWJsaWMgdm9pZCBUZXN0VGFncyAoKQ0KKwkJew0KKwkJCXZhciByZXBvMiA9IChHaXRS
ZXBvc2l0b3J5KVJlcG87DQorCQkJQWRkRmlsZSAoImZpbGUxIiwgInRleHQiLCB0cnVlLCB0cnVl
KTsNCisJCQlyZXBvMi5BZGRUYWcgKCJ0YWcxIiwgR2V0SGVhZFJldmlzaW9uICgpLCAibXktdGFn
Iik7DQorCQkJQXNzZXJ0LkFyZUVxdWFsICgxLCByZXBvMi5HZXRUYWdzICgpLkNvdW50ICgpKTsN
CisJCQlBc3NlcnQuQXJlRXF1YWwgKCJ0YWcxIiwgcmVwbzIuR2V0VGFncyAoKS5GaXJzdCAoKSk7
DQorCQkJcmVwbzIuUmVtb3ZlVGFnICgidGFnMSIpOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoMCwg
cmVwbzIuR2V0VGFncyAoKS5Db3VudCAoKSk7DQorCQl9DQorDQorCQkvLyBUT0RPOiBUZXN0IHJl
YmFzZSBhbmQgbWVyZ2UgLSBUaGlzIGlzIGJyb2tlbiBvbiBXaW5kb3dzDQorDQogCQlwcm90ZWN0
ZWQgb3ZlcnJpZGUgUmVwb3NpdG9yeSBHZXRSZXBvIChzdHJpbmcgcGF0aCwgc3RyaW5nIHVybCkN
CiAJCXsNCiAJCQlyZXR1cm4gbmV3IEdpdFJlcG9zaXRvcnkgKHBhdGgsIHVybCk7DQ0KDQpNb2Rp
ZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25D
b250cm9sLkdpdC5UZXN0cy9CYXNlUmVwb3NpdG9yeVRlc3RzLmNzDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAt
MzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIE1vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLlRlc3Rz
CiB7CiAJW1Rlc3RGaXh0dXJlXQotCXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBCYXNlUmVwb1V0aWxz
VGVzdAorCWFic3RyYWN0IGNsYXNzIEJhc2VSZXBvVXRpbHNUZXN0CiAJewogCQkvLyBbR2l0XSBT
ZXQgdXNlciBhbmQgZW1haWwuCiAJCXByb3RlY3RlZCBjb25zdCBzdHJpbmcgQXV0aG9yID0gImF1
dGhvciI7CkBAIC0xMjUsNiArMTI1LDE0IEBAIHB1YmxpYyB2b2lkIFJpZ2h0UmVwb3NpdG9yeURl
dGVjdGlvbiAoKQogCQlwcm90ZWN0ZWQgYWJzdHJhY3QgTlVuaXQuRnJhbWV3b3JrLkNvbnN0cmFp
bnRzLklSZXNvbHZlQ29uc3RyYWludCBJc0NvcnJlY3RUeXBlICgpOwogCiAJCVtUZXN0XQorCQlw
dWJsaWMgdm9pZCBVcmxJc1ZhbGlkICgpCisJCXsKKwkJCVRlc3RWYWxpZFVybCAoKTsKKwkJfQor
CisJCXByb3RlY3RlZCBhYnN0cmFjdCB2b2lkIFRlc3RWYWxpZFVybCAoKTsKKworCQlbVGVzdF0K
IAkJLy8gVGVzdHMgUmVwb3NpdG9yeS5DaGVja291dC4KIAkJcHVibGljIHZvaWQgQ2hlY2tvdXRF
eGlzdHMgKCkKIAkJew0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9s
L01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdpdC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJv
bC5HaXQvR2l0UmVwb3NpdG9yeS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTE1NTcsNyArMTU1Nyw3IEBA
IHB1YmxpYyBDaGFuZ2VTZXQgR2V0UHVzaENoYW5nZVNldCAoc3RyaW5nIHJlbW90ZSwgc3RyaW5n
IGJyYW5jaCkKIAkJCUNoYW5nZVNldCBjc2V0ID0gQ3JlYXRlQ2hhbmdlU2V0IChSb290UGF0aCk7
CiAJCQlPYmplY3RJZCBjaWQxID0gUm9vdFJlcG9zaXRvcnkuUmVzb2x2ZSAocmVtb3RlICsgIi8i
ICsgYnJhbmNoKTsKIAkJCU9iamVjdElkIGNpZDIgPSBSb290UmVwb3NpdG9yeS5SZXNvbHZlIChS
b290UmVwb3NpdG9yeS5HZXRCcmFuY2ggKCkpOwotCQkJUmV2V2FsayBydyA9IG5ldyBSZXZXYWxr
IChSb290UmVwb3NpdG9yeSk7CisJCQlSZXZXYWxrCXJ3ID0gbmV3IFJldldhbGsgKFJvb3RSZXBv
c2l0b3J5KTsKIAkJCVJldkNvbW1pdCBjMSA9IHJ3LlBhcnNlQ29tbWl0IChjaWQxKTsKIAkJCVJl
dkNvbW1pdCBjMiA9IHJ3LlBhcnNlQ29tbWl0IChjaWQyKTsKIAkJCQpAQCAtMTU4OSw3ICsxNTg5
LDcgQEAgcHVibGljIERpZmZJbmZvW10gR2V0UHVzaERpZmYgKHN0cmluZyByZW1vdGUsIHN0cmlu
ZyBicmFuY2gpCiAJCQlSZXZDb21taXQgYzIgPSBydy5QYXJzZUNvbW1pdCAoY2lkMik7CiAJCQkK
IAkJCUxpc3Q8RGlmZkluZm8+IGRpZmZzID0gbmV3IExpc3Q8RGlmZkluZm8+ICgpOwotCQkJZm9y
ZWFjaCAodmFyIGNoYW5nZSBpbiBHaXRVdGlsLkNvbXBhcmVDb21taXRzIChSb290UmVwb3NpdG9y
eSwgYzEsIGMyKSkgeworCQkJZm9yZWFjaCAodmFyIGNoYW5nZSBpbiBHaXRVdGlsLkNvbXBhcmVD
b21taXRzIChSb290UmVwb3NpdG9yeSwgYzIsIGMxKSkgewogCQkJCXN0cmluZyBkaWZmOwogCQkJ
CXN3aXRjaCAoY2hhbmdlLkdldENoYW5nZVR5cGUgKCkpIHsKIAkJCQljYXNlIERpZmZFbnRyeS5D
aGFuZ2VUeXBlLkRFTEVURToNCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29u
dHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLlRlc3RzL0Jhc2VTdm5S
ZXBvc2l0b3J5VGVzdHMuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0zMyw5ICszMyw5IEBACiBuYW1lc3Bh
Y2UgTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5UZXN0cw0KIHsNCiAJW1Rl
c3RGaXh0dXJlXQ0KLQlwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFzZVN2blV0aWxzVGVzdCA6IEJh
c2VSZXBvVXRpbHNUZXN0DQorCWFic3RyYWN0IGNsYXNzIEJhc2VTdm5VdGlsc1Rlc3QgOiBCYXNl
UmVwb1V0aWxzVGVzdA0KIAl7DQotCQlwcm90ZWN0ZWQgUHJvY2VzcyBzdm5TZXJ2ZSA9IG51bGw7
DQorCQlwcm90ZWN0ZWQgUHJvY2VzcyBTdm5TZXJ2ZSA9IG51bGw7DQogDQogCQlbU2V0VXBdDQog
CQlwdWJsaWMgb3ZlcnJpZGUgdm9pZCBTZXR1cCAoKQ0KQEAgLTU5LDEzICs1OSwxMyBAQCBwdWJs
aWMgb3ZlcnJpZGUgdm9pZCBTZXR1cCAoKQogCQkJLy8gQ3JlYXRlIGhvc3QgKFdpbjMyKQ0KIAkJ
CS8vIFRoaXMgbmVlZHMgdG8gYmUgZG9uZSBhZnRlciBkb2luZyB0aGUgc3ZuQWRtaW4gY3JlYXRp
b24uDQogCQkJLy8gQW5kIGJlZm9yZSBjaGVja291dC4NCi0JCQlpZiAoc3ZuU2VydmUgIT0gbnVs
bCkgew0KKwkJCWlmIChTdm5TZXJ2ZSAhPSBudWxsKSB7DQogCQkJCWluZm8gPSBuZXcgUHJvY2Vz
c1N0YXJ0SW5mbyAoKTsNCiAJCQkJaW5mby5GaWxlTmFtZSA9ICJzdm5zZXJ2ZSI7DQogCQkJCWlu
Zm8uQXJndW1lbnRzID0gIi1kciAiICsgUm9vdFVybDsNCiAJCQkJaW5mby5XaW5kb3dTdHlsZSA9
IFByb2Nlc3NXaW5kb3dTdHlsZS5IaWRkZW47DQotCQkJCXN2blNlcnZlLlN0YXJ0SW5mbyA9IGlu
Zm87DQotCQkJCXN2blNlcnZlLlN0YXJ0ICgpOw0KKwkJCQlTdm5TZXJ2ZS5TdGFydEluZm8gPSBp
bmZvOw0KKwkJCQlTdm5TZXJ2ZS5TdGFydCAoKTsNCiANCiAJCQkJLy8gQ3JlYXRlIHVzZXIgdG8g
YXV0aC4NCiAJCQkJdXNpbmcgKHZhciBwZXJtID0gRmlsZS4gQ3JlYXRlVGV4dCAoUm9vdFVybCAr
IFBhdGguRGlyZWN0b3J5U2VwYXJhdG9yQ2hhciArICJyZXBvIiArDQpAQCAtOTMsNiArOTMsMTUg
QEAgcHJvdGVjdGVkIG92ZXJyaWRlIE5Vbml0LkZyYW1ld29yay5Db25zdHJhaW50cy5JUmVzb2x2
ZUNvbnN0cmFpbnQgSXNDb3JyZWN0VHlwZQogCQkJcmV0dXJuIElzLkluc3RhbmNlT2Y8U3VidmVy
c2lvblJlcG9zaXRvcnk+ICgpOw0KIAkJfQ0KIA0KKwkJcHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQg
VGVzdFZhbGlkVXJsICgpDQorCQl7DQorCQkJdmFyIHJlcG8yID0gKFN1YnZlcnNpb25SZXBvc2l0
b3J5KVJlcG87DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAoInN2bjovL3N2
bnJlcG8uY29tOjgwL3JlcG8iKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxp
ZCAoInN2bitzc2g6Ly91c2VyQGhvc3QuY29tOjgwL3JlcG8iKSk7DQorCQkJQXNzZXJ0LklzVHJ1
ZSAocmVwbzIuSXNVcmxWYWxpZCAoImh0dHA6Ly9zdm5yZXBvLmNvbTo4MC9yZXBvIikpOw0KKwkJ
CUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJodHRwczovL3N2bnJlcG8uY29tOjgw
L3JlcG8iKSk7DQorCQl9DQorDQogCQlwcm90ZWN0ZWQgb3ZlcnJpZGUgUmV2aXNpb24gR2V0SGVh
ZFJldmlzaW9uICgpDQogCQl7DQogCQkJcmV0dXJuIFN2blJldmlzaW9uLkhlYWQ7DQ0KDQpNb2Rp
ZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25D
b250cm9sLlN1YnZlcnNpb24uVGVzdHMvUmVwb3NpdG9yeVRlc3RzLmNzDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpA
QCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFZlcnNpb25Db250cm9sLlN1YnZlcnNpb24uVW5p
eC5UZXN0cwogewogCVtUZXN0Rml4dHVyZV0KLQlwdWJsaWMgY2xhc3MgVW5peFN2blV0aWxzVGVz
dCA6IE1vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLlN1YnZlcnNpb24uVGVzdHMuQmFzZVN2blV0
aWxzVGVzdAorCXNlYWxlZCBjbGFzcyBVbml4U3ZuVXRpbHNUZXN0IDogTW9ub0RldmVsb3AuVmVy
c2lvbkNvbnRyb2wuU3VidmVyc2lvbi5UZXN0cy5CYXNlU3ZuVXRpbHNUZXN0CiAJewogCQlTdWJ2
ZXJzaW9uQmFja2VuZCBTdm5DbGllbnQgewogCQkJZ2V0IHsgcmV0dXJuIFJlcG8uU3ZuOyB9CkBA
IC0xMjcsNiArMTI3LDEyIEBAIHByb3RlY3RlZCBvdmVycmlkZSB2b2lkIFBvc3RVbmxvY2sgKCkK
IAkJCX0pOwogCQl9CiAKKwkJcHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQgVGVzdFZhbGlkVXJsICgp
CisJCXsKKwkJCWJhc2UuVGVzdFZhbGlkVXJsICgpOworCQkJQXNzZXJ0LklzVHJ1ZSAoUmVwby5J
c1VybFZhbGlkICgiZmlsZTovLy9kaXIvcmVwbyIpKTsKKwkJfQorCiAJCXByb3RlY3RlZCBvdmVy
cmlkZSBSZXBvc2l0b3J5IEdldFJlcG8gKHN0cmluZyBwYXRoLCBzdHJpbmcgdXJsKQogCQl7CiAJ
CQlyZXR1cm4gbmV3IFN1YnZlcnNpb25SZXBvc2l0b3J5IChuZXcgU3ZuQ2xpZW50ICgpLCB1cmws
IHBhdGgpOw0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL1N1YnZl
cnNpb24uV2luMzIuVGVzdHMvUmVwb3NpdG9yeVRlc3RzLmNzDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMzYs
MjEgKzM2LDIxIEBACiBuYW1lc3BhY2UgTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVy
c2lvbi5UZXN0cw0KIHsNCiAJW1Rlc3RGaXh0dXJlXQ0KLQlwdWJsaWMgY2xhc3MgU2hhcnBTdm5V
dGlsc1Rlc3QgOiBCYXNlU3ZuVXRpbHNUZXN0DQorCXNlYWxlZCBjbGFzcyBTaGFycFN2blV0aWxz
VGVzdCA6IEJhc2VTdm5VdGlsc1Rlc3QNCiAJew0KIAkJW1NldFVwXQ0KIAkJcHVibGljIG92ZXJy
aWRlIHZvaWQgU2V0dXAgKCkNCiAJCXsNCiAJCQlSb290VXJsID0gbmV3IEZpbGVQYXRoIChGaWxl
U2VydmljZS5DcmVhdGVUZW1wRGlyZWN0b3J5ICgpKTsNCiAJCQlSZXBvTG9jYXRpb24gPSAic3Zu
Oi8vbG9jYWxob3N0OjM2OTAvcmVwbyI7DQotCQkJc3ZuU2VydmUgPSBuZXcgUHJvY2VzcyAoKTsN
CisJCQlTdm5TZXJ2ZSA9IG5ldyBQcm9jZXNzICgpOw0KIAkJCWJhc2UuU2V0dXAgKCk7DQogCQl9
DQogDQogCQlbVGVhckRvd25dDQogCQlwdWJsaWMgb3ZlcnJpZGUgdm9pZCBUZWFyRG93biAoKQ0K
IAkJew0KLQkJCXN2blNlcnZlLktpbGwgKCk7DQorCQkJU3ZuU2VydmUuS2lsbCAoKTsNCiANCiAJ
CQliYXNlLlRlYXJEb3duICgpOw0KIAkJfQ0KQEAgLTExNyw2ICsxMTcsMTYgQEAgcHJvdGVjdGVk
IG92ZXJyaWRlIHZvaWQgUG9zdFVubG9jayAoKQogCQkJfSk7DQogCQl9DQogDQorCQlbVGVzdF0N
CisJCXByb3RlY3RlZCBvdmVycmlkZSB2b2lkIFRlc3RWYWxpZFVybCAoKQ0KKwkJew0KKwkJCWJh
c2UuVGVzdFZhbGlkVXJsICgpOw0KKw0KKwkJCUFzc2VydC5JZ25vcmUgKCJGaWxlIHNjaGVtZSBp
cyBicm9rZW4gb24gV2luZG93cyIpOw0KKwkJCXZhciByZXBvMiA9IChTdWJ2ZXJzaW9uUmVwb3Np
dG9yeSlSZXBvOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJmaWxlOi8v
L2M6L2Rpci9yZXBvIikpOw0KKwkJfQ0KKw0KIAkJcHJvdGVjdGVkIG92ZXJyaWRlIFJlcG9zaXRv
cnkgR2V0UmVwbyAoc3RyaW5nIHBhdGgsIHN0cmluZyB1cmwpDQogCQl7DQogCQkJcmV0dXJuIG5l
dyBTdWJ2ZXJzaW9uUmVwb3NpdG9yeSAobmV3IFN2blNoYXJwQ2xpZW50ICgpLCB1cmwsIHBhdGgp
Ow0NCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxv
cC5Db3JlLldlYi9DcmVkZW50aWFsU3RvcmUuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC03LDEzICs3LDYg
QEAgbmFtZXNwYWNlIE1vbm9EZXZlbG9wLkNvcmUuV2ViCiAJY2xhc3MgQ3JlZGVudGlhbFN0b3Jl
IDogSUNyZWRlbnRpYWxDYWNoZQogCXsKIAkJcmVhZG9ubHkgQ29uY3VycmVudERpY3Rpb25hcnk8
VXJpLCBJQ3JlZGVudGlhbHM+IGNyZWRlbnRpYWxDYWNoZSA9IG5ldyBDb25jdXJyZW50RGljdGlv
bmFyeTxVcmksIElDcmVkZW50aWFscz4gKCk7Ci0JCXN0YXRpYyByZWFkb25seSBDcmVkZW50aWFs
U3RvcmUgaW5zdGFuY2UgPSBuZXcgQ3JlZGVudGlhbFN0b3JlICgpOw0KLQ0KLQkJcHVibGljIHN0
YXRpYyBDcmVkZW50aWFsU3RvcmUgSW5zdGFuY2UgewotCQkJZ2V0IHsKLQkJCQlyZXR1cm4gaW5z
dGFuY2U7Ci0JCQl9Ci0JCX0KIAogCQlwdWJsaWMgSUNyZWRlbnRpYWxzIEdldENyZWRlbnRpYWxz
IChVcmkgdXJpLCBDcmVkZW50aWFsVHlwZSBjcmVkZW50aWFsVHlwZSkNCiAJCXsNDQoNCk1vZGlm
aWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuQ29yZS5XZWIv
SUNyZWRlbnRpYWxQcm92aWRlci5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTEwLDcgKzEwLDcgQEAgbmFt
ZXNwYWNlIE1vbm9EZXZlbG9wLkNvcmUuV2ViCiAJcHVibGljIGludGVyZmFjZSBJQ3JlZGVudGlh
bFByb3ZpZGVyCiAJewogCQkvLy8gPHN1bW1hcnk+Ci0JCS8vLyBSZXR1cm5zIENyZWRlbnRpYWxT
dGF0ZSBzdGF0ZSB0aGF0IGxldCdzIHRoZSBjb25zdW1lciBrbm93IGlmIElDcmVkZW50aWFscwor
CQkvLy8gUmV0dXJucyBDcmVkZW50aWFsU3RhdGUgc3RhdGUgdGhhdCBsZXRzIHRoZSBjb25zdW1l
ciBrbm93IGlmIElDcmVkZW50aWFscwogCQkvLy8gd2VyZSBkaXNjb3ZlcmVkIGJ5IHRoZSBJQ3Jl
ZGVudGlhbFByb3ZpZGVyLiBUaGUgY3JlZGVudGlhbHMgYXJndW1lbnQgaXMgdGhlbgogCQkvLy8g
cG9wdWxhdGVkIHdpdGggdGhlIGRpc2NvdmVyZWQgdmFsaWQgY3JlZGVudGlhbHMgdGhhdCBjYW4g
YmUgdXNlZCBmb3IgdGhlIGdpdmVuIFVyaS4KIAkJLy8vIFRoZSBwcm94eSBpbnN0YW5jZSBpZiBw
YXNzZWQgd2lsbCBiZSB1c2VkIHRvIGVuc3VyZSB0aGF0IHRoZSByZXF1ZXN0IGdvZXMgdGhyb3Vn
aCB0aGUgcHJveHkNCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9N
b25vRGV2ZWxvcC5Db3JlLldlYi9Qcm94eUNhY2hlLmNzDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMTQsMTUg
KzE0LDYgQEAgY2xhc3MgUHJveHlDYWNoZSA6IElQcm94eUNhY2hlCiAJCXN0YXRpYyByZWFkb25s
eSBJV2ViUHJveHkgb3JpZ2luYWxTeXN0ZW1Qcm94eSA9IFdlYlJlcXVlc3QuR2V0U3lzdGVtV2Vi
UHJveHkgKCk7CiAKIAkJcmVhZG9ubHkgQ29uY3VycmVudERpY3Rpb25hcnk8VXJpLCBXZWJQcm94
eT4gY2FjaGUgPSBuZXcgQ29uY3VycmVudERpY3Rpb25hcnk8VXJpLCBXZWJQcm94eT4gKCk7Ci0J
CXN0YXRpYyByZWFkb25seSBMYXp5PFByb3h5Q2FjaGU+IGluc3RhbmNlID0gbmV3IExhenk8UHJv
eHlDYWNoZT4gKCgpID0+IG5ldyBQcm94eUNhY2hlICgpKTsKLQotCQlwdWJsaWMgc3RhdGljIFBy
b3h5Q2FjaGUgSW5zdGFuY2UgewotCQkJZ2V0IHsKLQkJCQlyZXR1cm4gaW5zdGFuY2UuVmFsdWU7
Ci0JCQl9Ci0JCX0KLQotCQlQcm94eUNhY2hlICgpIHt9CiAKIAkJcHVibGljIElXZWJQcm94eSBH
ZXRQcm94eSAoVXJpIHVyaSkKIAkJew0KDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2
ZWxvcC5Db3JlL01vbm9EZXZlbG9wLkNvcmUuV2ViL1JlcXVlc3RIZWxwZXIuY3MNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCkBAIC0xMyw5ICsxMyw5IEBAIHB1YmxpYyBzdGF0aWMgY2xhc3MgUmVxdWVzdEhlbHBlcgog
CQkvLy8gPC9zdW1tYXJ5Pg0KIAkJaW50ZXJuYWwgc3RhdGljIFdlYlJlc3BvbnNlIEdldFJlc3Bv
bnNlIChGdW5jPFdlYlJlcXVlc3Q+IGNyZWF0ZVJlcXVlc3QsIEFjdGlvbjxXZWJSZXF1ZXN0PiBw
cmVwYXJlUmVxdWVzdCkNCiAJCXsNCi0JCQl2YXIgcHJveHlDYWNoZSA9IFdlYlNlcnZpY2UuSW5z
dGFuY2UuUHJveHlDYWNoZTsNCi0JCQl2YXIgY3JlZGVudGlhbENhY2hlID0gV2ViU2VydmljZS5J
bnN0YW5jZS5DcmVkZW50aWFsQ2FjaGU7DQotCQkJdmFyIGNyZWRlbnRpYWxQcm92aWRlciA9IFdl
YlNlcnZpY2UuSW5zdGFuY2UuQ3JlZGVudGlhbFByb3ZpZGVyOw0KKwkJCXZhciBwcm94eUNhY2hl
ID0gV2ViU2VydmljZS5Qcm94eUNhY2hlOworCQkJdmFyIGNyZWRlbnRpYWxDYWNoZSA9IFdlYlNl
cnZpY2UuQ3JlZGVudGlhbENhY2hlOworCQkJdmFyIGNyZWRlbnRpYWxQcm92aWRlciA9IFdlYlNl
cnZpY2UuQ3JlZGVudGlhbFByb3ZpZGVyOwogDQogCQkJSHR0cFdlYlJlcXVlc3QgcHJldmlvdXNS
ZXF1ZXN0ID0gbnVsbDsNCiAJCQlJSHR0cFdlYlJlc3BvbnNlIHByZXZpb3VzUmVzcG9uc2UgPSBu
dWxsOw0NCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2
ZWxvcC5Db3JlLldlYi9XZWJTZXJ2aWNlLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMjMsNDAgKzIzLDQy
IEBACiAvLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU
IE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAogLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04g
V0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgogLy8gVEhF
IFNPRlRXQVJFLgorCiB1c2luZyBTeXN0ZW07CiB1c2luZyBTeXN0ZW0uTGlucTsKIAogdXNpbmcg
TW9uby5BZGRpbnM7Cit1c2luZyBTeXN0ZW0uTmV0OwogCiBuYW1lc3BhY2UgTW9ub0RldmVsb3Au
Q29yZS5XZWIKIHsKLQlwdWJsaWMgY2xhc3MgV2ViU2VydmljZQorCXB1YmxpYyBzdGF0aWMgY2xh
c3MgV2ViU2VydmljZQogCXsKIAkJY29uc3Qgc3RyaW5nIFdlYkNyZWRlbnRpYWxQcm92aWRlcnNQ
YXRoID0gIi9Nb25vRGV2ZWxvcC9Db3JlL1dlYkNyZWRlbnRpYWxQcm92aWRlcnMiOwogCi0JCXN0
YXRpYyByZWFkb25seSBMYXp5PFdlYlNlcnZpY2U+IGluc3RhbmNlID0gbmV3IExhenk8V2ViU2Vy
dmljZT4gKCgpID0+IG5ldyBXZWJTZXJ2aWNlICgpKTsKKwkJcHVibGljIHN0YXRpYyBJUHJveHlD
YWNoZSBQcm94eUNhY2hlIHsgZ2V0OyBwcml2YXRlIHNldDsgfQorCQlwdWJsaWMgc3RhdGljIElD
cmVkZW50aWFsQ2FjaGUgQ3JlZGVudGlhbENhY2hlIHsgZ2V0OyBwcml2YXRlIHNldDsgfQorCQlw
dWJsaWMgc3RhdGljIElDcmVkZW50aWFsUHJvdmlkZXIgQ3JlZGVudGlhbFByb3ZpZGVyIHsgZ2V0
OyBwcml2YXRlIHNldDsgfQogCi0JCXB1YmxpYyBzdGF0aWMgV2ViU2VydmljZSBJbnN0YW5jZSB7
Ci0JCQlnZXQgewotCQkJCXJldHVybiBpbnN0YW5jZS5WYWx1ZTsKLQkJCX0KLQkJfQorCQlpbnRl
cm5hbCBzdGF0aWMgdm9pZCBJbml0aWFsaXplICgpCisJCXsKKwkJCUNyZWRlbnRpYWxDYWNoZSA9
IG5ldyBDcmVkZW50aWFsU3RvcmUgKCk7CisJCQlQcm94eUNhY2hlID0gbmV3IFByb3h5Q2FjaGUg
KCk7CisJCQlDcmVkZW50aWFsUHJvdmlkZXIgPSBBZGRpbk1hbmFnZXIuR2V0RXh0ZW5zaW9uT2Jq
ZWN0czxJQ3JlZGVudGlhbFByb3ZpZGVyPiAoV2ViQ3JlZGVudGlhbFByb3ZpZGVyc1BhdGgpLkZp
cnN0T3JEZWZhdWx0ICgpOwogCi0JCXB1YmxpYyBJUHJveHlDYWNoZSBQcm94eUNhY2hlIHsgZ2V0
OyBzZXQ7IH0KLQkJcHVibGljIElDcmVkZW50aWFsQ2FjaGUgQ3JlZGVudGlhbENhY2hlIHsgZ2V0
OyBzZXQ7IH0KLQkJcHVibGljIElDcmVkZW50aWFsUHJvdmlkZXIgQ3JlZGVudGlhbFByb3ZpZGVy
IHsgZ2V0OyBzZXQ7IH0KKwkJCWlmIChDcmVkZW50aWFsUHJvdmlkZXIgPT0gbnVsbCkgeworCQkJ
CUxvZ2dpbmdTZXJ2aWNlLkxvZ1dhcm5pbmcgKCJObyBwcm94eSBjcmVkZW50aWFsIHByb3ZpZGVy
IHdhcyBmb3VuZCIpOwogCi0JCVdlYlNlcnZpY2UgKCkge30KKwkJCX0KKwkJfQogCi0JCXB1Ymxp
YyBzdGF0aWMgdm9pZCBJbml0aWFsaXplICgpCisJCWNsYXNzIE51bGxDcmVkZW50aWFsc1Byb3Zp
ZGVyIDogSUNyZWRlbnRpYWxQcm92aWRlcgogCQl7Ci0JCQkvLyBXZSBjYW4gYWNjZXNzIGV4dGVu
c2lvbiBwb2ludHMgbm93LCBzbyB3ZSBuZWVkIHRvIGdldCB0aGUgY3JlZGVudGlhbCBwcm92aWRl
ciwgd2hpY2ggaXMgcGxhdGZvcm0tc3BlY2lmaWMuCi0JCQkvLyBUaGUgY3JlZGVudGlhbCBjYWNo
ZSBhbmQgcHJveHkgY2FjaGUgYXJlIHB1cmUgbWFuYWdlZCBpbXBsZW1lbnRhdGlvbi4KLQkJCUlu
c3RhbmNlLkNyZWRlbnRpYWxDYWNoZSA9IENyZWRlbnRpYWxTdG9yZS5JbnN0YW5jZTsKLQkJCUlu
c3RhbmNlLlByb3h5Q2FjaGUgPSBXZWIuUHJveHlDYWNoZS5JbnN0YW5jZTsKLQotCQkJLy8gR2V0
IHRoZSBmaXJzdCByZWdpc3RlcmVkIGNyZWRlbnRpYWwgcHJvdmlkZXIKLQkJCUluc3RhbmNlLkNy
ZWRlbnRpYWxQcm92aWRlciA9IEFkZGluTWFuYWdlci5HZXRFeHRlbnNpb25PYmplY3RzPElDcmVk
ZW50aWFsUHJvdmlkZXI+IChXZWJDcmVkZW50aWFsUHJvdmlkZXJzUGF0aCkuRmlyc3RPckRlZmF1
bHQgKCk7CisJCQlwdWJsaWMgSUNyZWRlbnRpYWxzIEdldENyZWRlbnRpYWxzICgKKwkJCQlVcmkg
dXJpLCBJV2ViUHJveHkgcHJveHksIENyZWRlbnRpYWxUeXBlIGNyZWRlbnRpYWxUeXBlLCBJQ3Jl
ZGVudGlhbHMgZXhpc3RpbmdDcmVkZW50aWFscywgYm9vbCByZXRyeWluZykKKwkJCXsKKwkJCQly
ZXR1cm4gbnVsbDsKKwkJCX0KIAkJfQogCX0KIH0NCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUv
TW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3JlLmNzcHJvag0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAg
LTEyLDkgKzEyLDYgQEAKICAgICA8QnVpbGRJbmZvPi4uXC4uXC4uXGJ1aWxkXGJpblxidWlsZGlu
Zm88L0J1aWxkSW5mbz4KICAgICA8VmNSZXZpc2lvbj4uLlwuLlwuLlx2Y3JldmlzaW9uPC9WY1Jl
dmlzaW9uPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0i
JyQoQlVJTERfUkVWSVNJT04pJyAhPSAnJyI+Ci0gICAgICA8RGVmaW5lQ29uc3RhbnRzPiQoRGVm
aW5lQ29uc3RhbnRzKTtFTkFCTEVfUkFZR1VOPC9EZWZpbmVDb25zdGFudHM+Ci0gIDwvUHJvcGVy
dHlHcm91cD4KICAgPENob29zZT4KICAgICA8V2hlbiBDb25kaXRpb249IiBFeGlzdHMoJ2M6XFBy
b2dyYW0gRmlsZXNcR2l0XGJpblxnaXQuZXhlJykgIj4KICAgICAgIDxQcm9wZXJ0eUdyb3VwPgpA
QCAtNzEsNiArNjgsOSBAQAogICAgIDxHZW5lcmF0ZURvY3VtZW50YXRpb24+dHJ1ZTwvR2VuZXJh
dGVEb2N1bWVudGF0aW9uPgogICAgIDxOb1dhcm4+MTU5MTsxNTczPC9Ob1dhcm4+CiAgIDwvUHJv
cGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChCVUlMRF9SRVZJU0lP
TiknICE9ICcnIj4KKyAgICA8RGVmaW5lQ29uc3RhbnRzPiQoRGVmaW5lQ29uc3RhbnRzKTtFTkFC
TEVfUkFZR1VOPC9EZWZpbmVDb25zdGFudHM+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1H
cm91cD4KICAgICA8UmVmZXJlbmNlIEluY2x1ZGU9IlN5c3RlbSIgLz4KICAgICA8UmVmZXJlbmNl
IEluY2x1ZGU9Ik1vbm8uUG9zaXgiIC8+DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9E
ZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuQ29yZS9Mb2dnaW5nU2VydmljZS5jcw0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KQEAgLTE4MSwyMCArMTgxLDYgQEAgaW50ZXJuYWwgc3RhdGljIHZvaWQgUmVwb3J0VW5oYW5k
bGVkRXhjZXB0aW9uIChFeGNlcHRpb24gZXgsIGJvb2wgd2lsbFNodXREb3duLAogCQkJCWlmIChS
ZXBvcnRDcmFzaGVzLkhhc1ZhbHVlICYmICFSZXBvcnRDcmFzaGVzLlZhbHVlKQogCQkJCQlyZXR1
cm47CiAKLQkJCQlieXRlW10gZGF0YTsKLQkJCQl1c2luZyAodmFyIHN0cmVhbSA9IG5ldyBNZW1v
cnlTdHJlYW0gKCkpIHsKLQkJCQkJdXNpbmcgKHZhciB3cml0ZXIgPSBTeXN0ZW0uWG1sLlhtbFdy
aXRlci5DcmVhdGUgKHN0cmVhbSkpIHsKLQkJCQkJCXdyaXRlci5Xcml0ZVN0YXJ0RWxlbWVudCAo
IkNyYXNoTG9nIik7Ci0JCQkJCQl3cml0ZXIuV3JpdGVBdHRyaWJ1dGVTdHJpbmcgKCJ2ZXJzaW9u
IiwgU2VydmljZVZlcnNpb24pOwotCi0JCQkJCQl3cml0ZXIuV3JpdGVFbGVtZW50U3RyaW5nICgi
U3lzdGVtSW5mb3JtYXRpb24iLCBTeXN0ZW1JbmZvcm1hdGlvbi5HZXRUZXh0RGVzY3JpcHRpb24g
KCkpOwotCQkJCQkJd3JpdGVyLldyaXRlRWxlbWVudFN0cmluZyAoIkV4Y2VwdGlvbiIsIGV4LlRv
U3RyaW5nICgpKTsKLQotCQkJCQkJd3JpdGVyLldyaXRlRW5kRWxlbWVudCAoKTsKLQkJCQkJfQot
CQkJCQlkYXRhID0gc3RyZWFtLlRvQXJyYXkgKCk7Ci0JCQkJfQotCiAJCQkJdmFyIGN1c3RvbURh
dGEgPSBuZXcgSGFzaHRhYmxlICgpOwogCQkJCWN1c3RvbURhdGFbIlN5c3RlbUluZm9ybWF0aW9u
Il0gPSBTeXN0ZW1JbmZvcm1hdGlvbi5HZXRUZXh0RGVzY3JpcHRpb24gKCk7CiAKQEAgLTIwNCwx
NyArMTkwLDYgQEAgaW50ZXJuYWwgc3RhdGljIHZvaWQgUmVwb3J0VW5oYW5kbGVkRXhjZXB0aW9u
IChFeGNlcHRpb24gZXgsIGJvb2wgd2lsbFNodXREb3duLAogCQkJCQl9KTsKIAkJCQl9CiAKLQkJ
CQkvLyBMb2cgdG8gZGlzayBvbmx5IGlmIHVwbG9hZGluZyBmYWlscy4KLQkJCQl2YXIgZmlsZW5h
bWUgPSBzdHJpbmcuRm9ybWF0ICgiezB9LnsxfS57Mn0uY3Jhc2hsb2ciLCBEYXRlVGltZS5VdGNO
b3cuVG9TdHJpbmcgKCJ5eXl5LU1NLWRkX19ISC1tbS1zcyIpLCBTeXN0ZW1JbmZvcm1hdGlvbi5T
ZXNzaW9uVXVpZCwgSW50ZXJsb2NrZWQuSW5jcmVtZW50IChyZWYgQ3Jhc2hJZCkpOwotCQkJCVRo
cmVhZFBvb2wuUXVldWVVc2VyV29ya0l0ZW0gKGRlbGVnYXRlIHsKLQkJCQkJaWYgKCFUcnlVcGxv
YWRSZXBvcnQgKGZpbGVuYW1lLCBkYXRhKSkgewotCQkJCQkJaWYgKCFEaXJlY3RvcnkuRXhpc3Rz
IChDcmFzaExvZ0RpcmVjdG9yeSkpCi0JCQkJCQkJRGlyZWN0b3J5LkNyZWF0ZURpcmVjdG9yeSAo
Q3Jhc2hMb2dEaXJlY3RvcnkpOwotCi0JCQkJCQlGaWxlLldyaXRlQWxsQnl0ZXMgKENyYXNoTG9n
RGlyZWN0b3J5LkNvbWJpbmUgKGZpbGVuYW1lKSwgZGF0YSk7Ci0JCQkJCX0KLQkJCQl9KTsKLQog
CQkJCS8vZW5zdXJlIHdlIGRvbid0IGxvc2UgdGhlIHNldHRpbmcKIAkJCQlpZiAoUmVwb3J0Q3Jh
c2hlcyAhPSBvbGRSZXBvcnRDcmFzaGVzKSB7CiAJCQkJCVByb3BlcnR5U2VydmljZS5TYXZlUHJv
cGVydGllcyAoKTsNCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9N
b25vRGV2ZWxvcC5Db3JlL1J1bnRpbWUuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC04NSw3ICs4NSw3IEBA
IHB1YmxpYyBzdGF0aWMgdm9pZCBJbml0aWFsaXplIChib29sIHVwZGF0ZUFkZGluUmVnaXN0cnkp
CiAJCQkJU3luY2hyb25pemF0aW9uQ29udGV4dC5TZXRTeW5jaHJvbml6YXRpb25Db250ZXh0IChu
ZXcgU3luY2hyb25pemF0aW9uQ29udGV4dCAoKSk7CiAKIAkJCS8vIEhvb2sgdXAgdGhlIFNTTCBj
ZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uIGNvZGVwYXRoCi0JCQlTeXN0ZW0uTmV0LlNlcnZpY2VQb2lu
dE1hbmFnZXIuU2VydmVyQ2VydGlmaWNhdGVWYWxpZGF0aW9uQ2FsbGJhY2sgKz0gZGVsZWdhdGUo
b2JqZWN0IHNlbmRlciwgWDUwOUNlcnRpZmljYXRlIGNlcnRpZmljYXRlLCBYNTA5Q2hhaW4gY2hh
aW4sIFNzbFBvbGljeUVycm9ycyBzc2xQb2xpY3lFcnJvcnMpIHsKKwkJCVNlcnZpY2VQb2ludE1h
bmFnZXIuU2VydmVyQ2VydGlmaWNhdGVWYWxpZGF0aW9uQ2FsbGJhY2sgKz0gZGVsZWdhdGUob2Jq
ZWN0IHNlbmRlciwgWDUwOUNlcnRpZmljYXRlIGNlcnRpZmljYXRlLCBYNTA5Q2hhaW4gY2hhaW4s
IFNzbFBvbGljeUVycm9ycyBzc2xQb2xpY3lFcnJvcnMpIHsKIAkJCQlpZiAoc3NsUG9saWN5RXJy
b3JzID09IFNzbFBvbGljeUVycm9ycy5Ob25lKQogCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCQkKQEAg
LTExMiw2ICsxMTIsNyBAQCBwdWJsaWMgc3RhdGljIHZvaWQgSW5pdGlhbGl6ZSAoYm9vbCB1cGRh
dGVBZGRpblJlZ2lzdHJ5KQogCQkJCUNvdW50ZXJzLlJ1bnRpbWVJbml0aWFsaXphdGlvbi5UcmFj
ZSAoIkluaXRpYWxpemVkIEFkZGluIE1hbmFnZXIiKTsKIAkJCQkKIAkJCQlQcm9wZXJ0eVNlcnZp
Y2UuSW5pdGlhbGl6ZSAoKTsKKwkJCQlXZWJTZXJ2aWNlLkluaXRpYWxpemUgKCk7CiAJCQkJCiAJ
CQkJLy9oYXZlIHRvIGRvIHRoaXMgYWZ0ZXIgdGhlIGFkZGluIHNlcnZpY2UgYW5kIHByb3BlcnR5
IHNlcnZpY2UgaGF2ZSBpbml0aWFsaXplZAogCQkJCWlmIChVc2VyRGF0YU1pZ3JhdGlvblNlcnZp
Y2UuSGFzU291cmNlKSB7CkBAIC0xMjQsOCArMTI1LDYgQEAgcHVibGljIHN0YXRpYyB2b2lkIElu
aXRpYWxpemUgKGJvb2wgdXBkYXRlQWRkaW5SZWdpc3RyeSkKIAkJCQlDb3VudGVycy5SdW50aW1l
SW5pdGlhbGl6YXRpb24uVHJhY2UgKCJJbml0aWFsaXppbmcgQXNzZW1ibHkgU2VydmljZSIpOwog
CQkJCXN5c3RlbUFzc2VtYmx5U2VydmljZSA9IG5ldyBTeXN0ZW1Bc3NlbWJseVNlcnZpY2UgKCk7
CiAJCQkJc3lzdGVtQXNzZW1ibHlTZXJ2aWNlLkluaXRpYWxpemUgKCk7Ci0KLQkJCQlXZWJTZXJ2
aWNlLkluaXRpYWxpemUgKCk7CiAJCQkJCiAJCQkJaW5pdGlhbGl6ZWQgPSB0cnVlOwogCQkJCQ0K
DQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5JZGUvTW9ub0RldmVsb3AuSWRl
LlR5cGVTeXN0ZW0vVHlwZVN5c3RlbVNlcnZpY2UuY3MNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xMTI4LDE5
ICsxMTI4LDI1IEBAIHB1YmxpYyB2b2lkIEluZm9ybUZpbGVBZGRlZCAoUGFyc2VkRmlsZUV2ZW50
QXJncyBlKQogCiAJCQlbTm9uU2VyaWFsaXplZF0KIAkJCWludCBsb2FkT3BlcmF0aW9uRGVwdGgg
PSAwOworCQkJW05vblNlcmlhbGl6ZWRdCisJCQlyZWFkb25seSBvYmplY3QgbG9hZE9wZXJhdGlv
bkxvY2tlciA9IG5ldyBvYmplY3QgKCk7CiAKLQkJCWludGVybmFsIGludCBMb2FkT3BlcmF0aW9u
RGVwdGggewotCQkJCWdldCB7Ci0JCQkJCXJldHVybiBsb2FkT3BlcmF0aW9uRGVwdGg7Ci0JCQkJ
fQotCQkJCXNldCB7Ci0JCQkJCWxvYWRPcGVyYXRpb25EZXB0aCA9IHZhbHVlOwotCQkJCQlpZiAo
bG9hZE9wZXJhdGlvbkRlcHRoIDwgMCkKLQkJCQkJCXRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9u
RXhjZXB0aW9uICgpOwotCQkJCQlPbkxvYWQgKEV2ZW50QXJncy5FbXB0eSk7CisJCQlpbnRlcm5h
bCB2b2lkIEJlZ2luTG9hZE9wZXJhdGlvbiAoKQorCQkJeworCQkJCWxvY2sgKGxvYWRPcGVyYXRp
b25Mb2NrZXIpIHsKKwkJCQkJbG9hZE9wZXJhdGlvbkRlcHRoKys7CiAJCQkJfQogCQkJfQogCisJ
CQlpbnRlcm5hbCB2b2lkIEVuZExvYWRPcGVyYXRpb24gKCkKKwkJCXsKKwkJCQlsb2NrIChsb2Fk
T3BlcmF0aW9uTG9ja2VyKSB7CisJCQkJCWlmIChsb2FkT3BlcmF0aW9uRGVwdGggPiAwKSB7CisJ
CQkJCQlsb2FkT3BlcmF0aW9uRGVwdGgtLTsKKwkJCQkJfQorCQkJCX0KKwkJCQlPbkxvYWQgKEV2
ZW50QXJncy5FbXB0eSk7CisJCQl9CiAJCQlib29sIGluTG9hZDsKIAkJCXB1YmxpYyBib29sIElu
TG9hZCB7CiAJCQkJZ2V0IHsKQEAgLTEyNjksNyArMTI3NSw3IEBAIHB1YmxpYyBMYXp5UHJvamVj
dExvYWRlciAoUHJvamVjdENvbnRlbnRXcmFwcGVyIHdyYXBwZXIpCiAJCQkJCXRoaXMud3JhcHBl
ciA9IHdyYXBwZXI7CiAJCQkJCWNvbnRleHRUYXNrID0gVGFzay5GYWN0b3J5LlN0YXJ0TmV3IChk
ZWxlZ2F0ZSB7CiAJCQkJCQl0cnkgewotCQkJCQkJCXRoaXMud3JhcHBlci5Mb2FkT3BlcmF0aW9u
RGVwdGgrKzsKKwkJCQkJCQl0aGlzLndyYXBwZXIuQmVnaW5Mb2FkT3BlcmF0aW9uICgpOwogCQkJ
CQkJCXZhciBwID0gdGhpcy53cmFwcGVyLlByb2plY3Q7CiAJCQkJCQkJdmFyIGNvbnRleHQgPSBM
b2FkUHJvamVjdENhY2hlIChwKTsKIApAQCAtMTI4OCw3ICsxMjk0LDcgQEAgcHVibGljIExhenlQ
cm9qZWN0TG9hZGVyIChQcm9qZWN0Q29udGVudFdyYXBwZXIgd3JhcHBlcikKIAkJCQkJCQlRdWV1
ZVBhcnNlSm9iICh0aGlzLndyYXBwZXIpOwogCQkJCQkJCXJldHVybiBjb250ZXh0OwogCQkJCQkJ
fSBmaW5hbGx5IHsKLQkJCQkJCQl0aGlzLndyYXBwZXIuTG9hZE9wZXJhdGlvbkRlcHRoLS07CisJ
CQkJCQkJdGhpcy53cmFwcGVyLkVuZExvYWRPcGVyYXRpb24gKCk7CiAJCQkJCQl9CiAJCQkJCX0p
OwogCQkJCX0KQEAgLTE3MzAsNyArMTczNiw4IEBAIGludGVybmFsIHN0YXRpYyB2b2lkIFVubG9h
ZFByb2plY3QgKFByb2plY3QgcHJvamVjdCkKIAkJCQkKIAkJCVByb2plY3RDb250ZW50V3JhcHBl
ciB3cmFwcGVyOwogCQkJbG9jayAocHJvamVjdFdyYXBwZXJVcGRhdGVMb2NrKSB7Ci0JCQkJd3Jh
cHBlciA9IHByb2plY3RDb250ZW50cyBbcHJvamVjdF07CisJCQkJaWYgKCFwcm9qZWN0Q29udGVu
dHMuVHJ5R2V0VmFsdWUgKHByb2plY3QsIG91dCB3cmFwcGVyKSkKKwkJCQkJcmV0dXJuOwogCQkJ
CXByb2plY3RDb250ZW50cy5SZW1vdmUgKHByb2plY3QpOwogCQkJfQogCQkJU3RvcmVQcm9qZWN0
Q2FjaGUgKHByb2plY3QsIHdyYXBwZXIpOwpAQCAtMjE1NSw3ICsyMTYyLDEwIEBAIGludGVybmFs
IHZvaWQgRW5zdXJlQXNzZW1ibHlMb2FkZWQgKCkKIAkJCQlsb2NrIChhc21Mb2NrZXIpIHsKIAkJ
CQkJaWYgKGFzc2VtYmx5ICE9IG51bGwpCiAJCQkJCQlyZXR1cm47Ci0JCQkJCWFzc2VtYmx5ID0g
TG9hZEFzc2VtYmx5ICgpID8/IG5ldyBEZWZhdWx0VW5yZXNvbHZlZEFzc2VtYmx5IChmaWxlTmFt
ZSk7CisJCQkJCWFzc2VtYmx5ID0gbmV3IERlZmF1bHRVbnJlc29sdmVkQXNzZW1ibHkgKGZpbGVO
YW1lKTsKKworCQkJCQlhc3NlbWJseSA9IExvYWRBc3NlbWJseSAoKSA/PyBhc3NlbWJseTsgCisK
IAkJCQkJT25Mb2FkIChFdmVudEFyZ3MuRW1wdHkpOwogCQkJCX0KIAkJCX0KQEAgLTI1MzcsNyAr
MjU0Nyw3IEBAIHB1YmxpYyB2b2lkIFJ1biAoSVByb2dyZXNzTW9uaXRvciBtb25pdG9yKQogCQkJ
CVR5cGVTeXN0ZW1QYXJzZXIgcGFyc2VyID0gbnVsbDsKIAkJCQl2YXIgdGFncyA9IENvbnRleHQu
R2V0RXh0ZW5zaW9uT2JqZWN0IDxQcm9qZWN0Q29tbWVudFRhZ3M+ICgpOwogCQkJCXRyeSB7Ci0J
CQkJCUNvbnRleHQuTG9hZE9wZXJhdGlvbkRlcHRoKys7CisJCQkJCUNvbnRleHQuQmVnaW5Mb2Fk
T3BlcmF0aW9uICgpOwogCQkJCQlmb3JlYWNoICh2YXIgZmlsZSBpbiAoRmlsZUxpc3QgPz8gQ29u
dGV4dC5Qcm9qZWN0LkZpbGVzKSkgewogCQkJCQkJdmFyIGZpbGVOYW1lID0gZmlsZS5GaWxlUGF0
aDsKIAkJCQkJCWlmIChmaWxlc1NraXBwZWRJblBhcnNlVGhyZWFkLkFueSAoZiA9PiBmID09IGZp
bGVOYW1lKSkKQEAgLTI1NTgsNyArMjU2OCw3IEBAIHB1YmxpYyB2b2lkIFJ1biAoSVByb2dyZXNz
TW9uaXRvciBtb25pdG9yKQogCQkJCQkJQ29udGV4dC5JbmZvcm1GaWxlQWRkZWQgKG5ldyBQYXJz
ZWRGaWxlRXZlbnRBcmdzIChwYXJzZWREb2N1bWVudC5QYXJzZWRGaWxlKSk7CiAJCQkJCX0KIAkJ
CQl9IGZpbmFsbHkgewotCQkJCQlDb250ZXh0LkxvYWRPcGVyYXRpb25EZXB0aC0tOworCQkJCQlD
b250ZXh0LkVuZExvYWRPcGVyYXRpb24gKCk7CiAJCQkJfQogCQkJfQogCQl9CkBAIC0yNjE0LDcg
KzI2MjQsNyBAQCBzdGF0aWMgdm9pZCBRdWV1ZVBhcnNlSm9iIChQcm9qZWN0Q29udGVudFdyYXBw
ZXIgY29udGV4dCwgSUVudW1lcmFibGU8UHJvamVjdEZpbAogCQkJfTsKIAkJCWxvY2sgKHBhcnNl
UXVldWVMb2NrKSB7CiAJCQkJUmVtb3ZlUGFyc2VKb2IgKGNvbnRleHQpOwotCQkJCWNvbnRleHQu
TG9hZE9wZXJhdGlvbkRlcHRoKys7CisJCQkJY29udGV4dC5CZWdpbkxvYWRPcGVyYXRpb24gKCk7
CiAJCQkJcGFyc2VRdWV1ZUluZGV4IFtjb250ZXh0XSA9IGpvYjsKIAkJCQlwYXJzZVF1ZXVlLkVu
cXVldWUgKGpvYik7CiAJCQkJcGFyc2VFdmVudC5TZXQgKCk7CkBAIC0yNjUyLDcgKzI2NjIsNyBA
QCBzdGF0aWMgdm9pZCBSZW1vdmVQYXJzZUpvYiAoUHJvamVjdENvbnRlbnRXcmFwcGVyIHByb2pl
Y3QpCiAJCQkJUGFyc2luZ0pvYiBqb2I7CiAJCQkJaWYgKHBhcnNlUXVldWVJbmRleC5UcnlHZXRW
YWx1ZSAocHJvamVjdCwgb3V0IGpvYikpIHsKIAkJCQkJcGFyc2VRdWV1ZUluZGV4LlJlbW92ZSAo
cHJvamVjdCk7Ci0JCQkJCXByb2plY3QuTG9hZE9wZXJhdGlvbkRlcHRoLS07CisJCQkJCXByb2pl
Y3QuRW5kTG9hZE9wZXJhdGlvbiAoKTsKIAkJCQl9CiAJCQl9CiAJCX0KQEAgLTI3MDUsNyArMjcx
NSw3IEBAIHN0YXRpYyB2b2lkIENoZWNrTW9kaWZpZWRGaWxlcyAoUHJvamVjdCBwcm9qZWN0LCBQ
cm9qZWN0RmlsZVtdIHByb2plY3RGaWxlcywgUHJvCiAJCXsKIAkJCWNvbnRlbnQuUnVuV2hlbkxv
YWRlZCAoZGVsZWdhdGUoSVByb2plY3RDb250ZW50IGNudCkgewogCQkJCXRyeSB7Ci0JCQkJCWNv
bnRlbnQuTG9hZE9wZXJhdGlvbkRlcHRoKys7CisJCQkJCWNvbnRlbnQuQmVnaW5Mb2FkT3BlcmF0
aW9uICgpOwogCQkJCQl2YXIgbW9kaWZpZWRGaWxlcyA9IG5ldyBMaXN0PFByb2plY3RGaWxlPiAo
KTsKIAkJCQkJdmFyIG9sZEZpbGVOZXdGaWxlID0gbmV3IExpc3Q8VHVwbGU8UHJvamVjdEZpbGUs
IElVbnJlc29sdmVkRmlsZT4+ICgpOwogCkBAIC0yNzQ3LDcgKzI3NTcsNyBAQCBzdGF0aWMgdm9p
ZCBDaGVja01vZGlmaWVkRmlsZXMgKFByb2plY3QgcHJvamVjdCwgUHJvamVjdEZpbGVbXSBwcm9q
ZWN0RmlsZXMsIFBybwogCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CiAJCQkJCUxvZ2dpbmdT
ZXJ2aWNlLkxvZ0Vycm9yICgiRXhjZXB0aW9uIGluIGNoZWNrIG1vZGlmaWVkIGZpbGVzLiIsIGUp
OwogCQkJCX0gZmluYWxseSB7Ci0JCQkJCWNvbnRlbnQuTG9hZE9wZXJhdGlvbkRlcHRoLS07CisJ
CQkJCWNvbnRlbnQuRW5kTG9hZE9wZXJhdGlvbiAoKTsKIAkJCQl9CiAKIAkJCX0pOwpAQCAtMjgy
MCw3ICsyODMwLDcgQEAgc3RhdGljIHZvaWQgQ29uc3VtZVBhcnNpbmdRdWV1ZSAoKQogCQkJCQkJ
CQltb25pdG9yID0gR2V0UGFyc2VQcm9ncmVzc01vbml0b3IgKCk7CiAJCQkJCQkJbW9uaXRvci5S
ZXBvcnRFcnJvciAobnVsbCwgZXgpOwogCQkJCQkJfSBmaW5hbGx5IHsKLQkJCQkJCQlqb2IuQ29u
dGV4dC5Mb2FkT3BlcmF0aW9uRGVwdGgtLTsKKwkJCQkJCQlqb2IuQ29udGV4dC5FbmRMb2FkT3Bl
cmF0aW9uICgpOwogCQkJCQkJfQogCQkJCQl9CiAJCQkJCQ0KDQpNb2RpZmllZDogbWFpbi90ZXN0
cy9Vbml0VGVzdHMvTW9ub0RldmVsb3AuQ1NoYXJwQmluZGluZy9PblRoZUZseUZvcm1hdHRlclRl
c3RzLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQpAQCAtMjczLDYgKzI3MywyMSBAQCBwdWJsaWMgdm9pZCBUZXN0
QnVnMTYxNzRfVmlydHVhbEluZGVudCAoKQogCQkJCUNvbnNvbGUuV3JpdGVMaW5lIChuZXdUZXh0
KTsKIAkJCUFzc2VydC5BcmVFcXVhbCAoZXhwZWN0ZWQsIG5ld1RleHQpOwogCQl9CisKKworCQkv
Ly8gPHN1bW1hcnk+CisJCS8vLyBCdWcgMTYyODMgLSBXcm9uZyBsaXRlcmFsIHN0cmluZyBhZGRp
dGlvbgorCQkvLy8gPC9zdW1tYXJ5PgorCQlbVGVzdF0KKwkJcHVibGljIHZvaWQgVGVzdEJ1ZzE2
MjgzICgpCisJCXsKKwkJCVRlc3RWaWV3Q29udGVudCBjb250ZW50OworCQkJdmFyIGV4dCA9IFNl
dHVwICgiJFwiXFxkZXZcXG51bGwgezB9XCIiLCBvdXQgY29udGVudCk7CisJCQljb250ZW50Lkdl
dFRleHRFZGl0b3JEYXRhICgpLkluc2VydCAoMCwgIkAiKTsKKwkJCWV4dC5LZXlQcmVzcyAoKEdk
ay5LZXkpJ0AnLCAnQCcsIEdkay5Nb2RpZmllclR5cGUuTm9uZSk7CisJCQl2YXIgbmV3VGV4dCA9
IGNvbnRlbnQuVGV4dDsKKwkJCUFzc2VydC5BcmVFcXVhbCAoIkBcIlxcZGV2XG51bGwgezB9XCIi
LCBuZXdUZXh0KTsKKwkJfQogCX0KIH0KIA0KDQpNb2RpZmllZDogbWFpbi94YnVpbGQuaW5jbHVk
ZQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KQEAgLTE0LDcgKzE0LDcgQEAgUFJPRklMRV9OQU1FPURlYnVnV2luMzIK
IGVuZGlmCiAKIFhCVUlMRD14YnVpbGQKLVhCVUlMRF9WRVJCT1NJVFk9cXVpZXQKK1hCVUlMRF9W
RVJCT1NJVFk9bm9ybWFsCiBYQlVJTERfQVJHUz0vdmVyYm9zaXR5OiQoWEJVSUxEX1ZFUkJPU0lU
WSkgL25vbG9nbyAvcHJvcGVydHk6Q29kZVBhZ2U9NjUwMDEKIFhCVUlMRF9QUk9GSUxFPS9wcm9w
ZXJ0eTpDb25maWd1cmF0aW9uPSQoUFJPRklMRV9OQU1FKQogDQpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNb25vLXBhdGNoZXMgbWFpbGxpc3QgIC0gIE1v
bm8tcGF0Y2hlc0BsaXN0cy54aW1pYW4uY29tCmh0dHA6Ly9saXN0cy54aW1pYW4uY29tL21haWxt
YW4vbGlzdGluZm8vbW9uby1wYXRjaGVzCg==