[Dive4elements-commits] [PATCH 1 of 4] river backend: Moved SedDB hibernate model to org/dive4elements/river/seddb

Wald Commits scm-commit at wald.intevation.org
Mon Apr 29 11:42:25 CEST 2013


IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIFNhc2NoYSBMLiBUZWljaG1hbm4gPHRlaWNobWFu
bkBpbnRldmF0aW9uLmRlPgojIERhdGUgMTM2NzIyNzk4MSAtNzIwMAojIE5vZGUgSUQgMWU2OGVj
YTI2YjhhNWUwZTAzNTgzOTNjZWM2Y2Q5ZDNjMzQ1ZThmMQojIFBhcmVudCAgYmM0ZTFiZjI2MjI3
MmE1ZmVlNmQ5YTQyOTZlNDFlNWQ2Zjg0ZTJjZQpyaXZlciBiYWNrZW5kOiBNb3ZlZCBTZWREQiBo
aWJlcm5hdGUgbW9kZWwgdG8gb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIuCgpkaWZmIC1y
IGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9wb20ueG1sCi0tLSBhL2JhY2tl
bmQvcG9tLnhtbAlNb24gQXByIDI5IDExOjE0OjI1IDIwMTMgKzAyMDAKKysrIGIvYmFja2VuZC9w
b20ueG1sCU1vbiBBcHIgMjkgMTE6MzM6MDEgMjAxMyArMDIwMApAQCAtMTIyLDcgKzEyMiw3IEBA
Cj0yMAogICA8cmVwb3NpdG9yaWVzPgogICAgIDxyZXBvc2l0b3J5PgotICAgICAgPGlkPnJlcG9z
aXRvcnkuamJvc3Mub3JnL25leHVzPC9pZD4KKyAgICAgIDxpZD5yZXBvc2l0b3J5Lmpib3NzLm9y
ZyBuZXh1czwvaWQ+CiAgICAgICA8bmFtZT5KQm9zcyBSZXBvc2l0b3J5IC0gTmV4dXM8L25hbWU+
CiAgICAgICA8dXJsPmh0dHA6Ly9yZXBvc2l0b3J5Lmpib3NzLm9yZy9uZXh1cy9jb250ZW50L2dy
b3Vwcy9wdWJsaWMvPC91cmw+CiAgICAgPC9yZXBvc2l0b3J5PgpkaWZmIC1yIGJjNGUxYmYyNjIy
NyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2U9
CmRkYi9tb2RlbC9CZXp1Z3NwZWdlbC5qYXZhCi0tLSBhL2JhY2tlbmQvc3JjL21haW4vamF2YS9k
ZS9pbnRldmF0aW9uL3NlZGRiL21vZGVsL0JlenVnc3BlZ2VsLmphdmEJTW9uID0KQXByIDI5IDEx
OjE0OjI1IDIwMTMgKzAyMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAg
KzAwMDAKQEAgLTEsMjk0ICswLDAgQEAKLS8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAx
MyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCi0gKiBTb2Z0
d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgKLSAqCi0gKiBUaGlzIGZpbGUgaXMg
RnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49M0R2Myk9MjAKLSAqIGFuZCBjb21l
cyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUKLSAqIGRvY3VtZW50
YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy49MjAKLSAq
LwotCi1wYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnNlZGRiLm1vZGVsOwotLy8gR2VuZXJhdGVk
IDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQotCi0KLWlt
cG9ydCBqYXZhLm1hdGguQmlnRGVjaW1hbDsKLWltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKLWltcG9y
dCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotaW1wb3J0IGphdmF4
LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7Ci1p
bXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRmV0Y2hUeXBlOwotaW1wb3J0IGphdmF4LnBlcnNpc3Rl
bmNlLklkOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkpvaW5Db2x1bW47Ci1pbXBvcnQgamF2
YXgucGVyc2lzdGVuY2UuTWFueVRvT25lOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk9uZVRv
TWFueTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKLWltcG9ydCBqYXZheC5wZXJz
aXN0ZW5jZS5UZW1wb3JhbDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UZW1wb3JhbFR5cGU7
Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVW5pcXVlQ29uc3RyYWludDsKLQotLyoqCi0gKiBC
ZXp1Z3NwZWdlbCBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVudGl0eQotQFRhYmxlKG5h
bWU9M0QiQkVaVUdTUEVHRUwiCi0gICAgLHNjaGVtYT0zRCJTRUREQiIKLSAgICAsIHVuaXF1ZUNv
bnN0cmFpbnRzID0zRCBAVW5pcXVlQ29uc3RyYWludChjb2x1bW5OYW1lcz0zRHsiR0VXQUVTU0VS
SUQiPQosICJOQU1FIn0pCi0pCi1wdWJsaWMgY2xhc3MgQmV6dWdzcGVnZWwgIGltcGxlbWVudHMg
amF2YS5pby5TZXJpYWxpemFibGUgewotCi0KLSAgICAgcHJpdmF0ZSBsb25nIGJlenVnc3BlZ2Vs
aWQ7Ci0gICAgIHByaXZhdGUgR2V3YWVzc2VyIGdld2Flc3NlcjsKLSAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIGttOwotICAgICBwcml2YXRlIFN0cmluZyBuYW1lOwotICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgbnVsbHB1bmt0OwotICAgICBwcml2YXRlIFN0cmluZyBrZW5udW5nOwotICAgICBwcml2
YXRlIEJpZ0RlY2ltYWwgZWluenVnc2dlYmlldDsKLSAgICAgcHJpdmF0ZSBEYXRlIGluYmV0cmll
YjsKLSAgICAgcHJpdmF0ZSBTdHJpbmcgZmxpZXNzY2hhcmFrdGVyOwotICAgICBwcml2YXRlIEJp
Z0RlY2ltYWwgbGF1ZmVudHdpY2tsdW5nOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgbW5xOwot
ICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgbXE7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtaHE7
Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBubnE7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBo
aHE7Ci0gICAgIHByaXZhdGUgRGF0ZSBubnFkYXR1bTsKLSAgICAgcHJpdmF0ZSBEYXRlIGhocWRh
dHVtOwotICAgICBwcml2YXRlIFN0cmluZyBqYWhyZXNyZWloZTsKLSAgICAgcHJpdmF0ZSBTdHJp
bmcgYmVtZXJrdW5nOwotICAgICBwcml2YXRlIFNldDxTdGF0aW9uPiBzdGF0aW9ucyA9M0QgbmV3
IEhhc2hTZXQ8U3RhdGlvbj4oMCk7Ci0KLSAgICBwdWJsaWMgQmV6dWdzcGVnZWwoKSB7Ci0gICAg
fQotCi0gICAgcHVibGljIEJlenVnc3BlZ2VsKGxvbmcgYmV6dWdzcGVnZWxpZCwgR2V3YWVzc2Vy
IGdld2Flc3NlciwgQmlnRGVjaW1hbD0KIGttLCBTdHJpbmcgbmFtZSwgQmlnRGVjaW1hbCBudWxs
cHVua3QpIHsKLSAgICAgICAgdGhpcy5iZXp1Z3NwZWdlbGlkID0zRCBiZXp1Z3NwZWdlbGlkOwot
ICAgICAgICB0aGlzLmdld2Flc3NlciA9M0QgZ2V3YWVzc2VyOwotICAgICAgICB0aGlzLmttID0z
RCBrbTsKLSAgICAgICAgdGhpcy5uYW1lID0zRCBuYW1lOwotICAgICAgICB0aGlzLm51bGxwdW5r
dCA9M0QgbnVsbHB1bmt0OwotICAgIH0KLSAgICBwdWJsaWMgQmV6dWdzcGVnZWwobG9uZyBiZXp1
Z3NwZWdlbGlkLCBHZXdhZXNzZXIgZ2V3YWVzc2VyLCBCaWdEZWNpbWFsPQoga20sIFN0cmluZyBu
YW1lLCBCaWdEZWNpbWFsIG51bGxwdW5rdCwgU3RyaW5nIGtlbm51bmcsIEJpZ0RlY2ltYWwgZWlu
enVnc2c9CmViaWV0LCBEYXRlIGluYmV0cmllYiwgU3RyaW5nIGZsaWVzc2NoYXJha3RlciwgQmln
RGVjaW1hbCBsYXVmZW50d2lja2x1bmcsID0KQmlnRGVjaW1hbCBtbnEsIEJpZ0RlY2ltYWwgbXEs
IEJpZ0RlY2ltYWwgbWhxLCBCaWdEZWNpbWFsIG5ucSwgQmlnRGVjaW1hbCBoPQpocSwgRGF0ZSBu
bnFkYXR1bSwgRGF0ZSBoaHFkYXR1bSwgU3RyaW5nIGphaHJlc3JlaWhlLCBTdHJpbmcgYmVtZXJr
dW5nLCBTZXQ9CjxTdGF0aW9uPiBzdGF0aW9ucykgewotICAgICAgIHRoaXMuYmV6dWdzcGVnZWxp
ZCA9M0QgYmV6dWdzcGVnZWxpZDsKLSAgICAgICB0aGlzLmdld2Flc3NlciA9M0QgZ2V3YWVzc2Vy
OwotICAgICAgIHRoaXMua20gPTNEIGttOwotICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKLSAg
ICAgICB0aGlzLm51bGxwdW5rdCA9M0QgbnVsbHB1bmt0OwotICAgICAgIHRoaXMua2VubnVuZyA9
M0Qga2VubnVuZzsKLSAgICAgICB0aGlzLmVpbnp1Z3NnZWJpZXQgPTNEIGVpbnp1Z3NnZWJpZXQ7
Ci0gICAgICAgdGhpcy5pbmJldHJpZWIgPTNEIGluYmV0cmllYjsKLSAgICAgICB0aGlzLmZsaWVz
c2NoYXJha3RlciA9M0QgZmxpZXNzY2hhcmFrdGVyOwotICAgICAgIHRoaXMubGF1ZmVudHdpY2ts
dW5nID0zRCBsYXVmZW50d2lja2x1bmc7Ci0gICAgICAgdGhpcy5tbnEgPTNEIG1ucTsKLSAgICAg
ICB0aGlzLm1xID0zRCBtcTsKLSAgICAgICB0aGlzLm1ocSA9M0QgbWhxOwotICAgICAgIHRoaXMu
bm5xID0zRCBubnE7Ci0gICAgICAgdGhpcy5oaHEgPTNEIGhocTsKLSAgICAgICB0aGlzLm5ucWRh
dHVtID0zRCBubnFkYXR1bTsKLSAgICAgICB0aGlzLmhocWRhdHVtID0zRCBoaHFkYXR1bTsKLSAg
ICAgICB0aGlzLmphaHJlc3JlaWhlID0zRCBqYWhyZXNyZWloZTsKLSAgICAgICB0aGlzLmJlbWVy
a3VuZyA9M0QgYmVtZXJrdW5nOwotICAgICAgIHRoaXMuc3RhdGlvbnMgPTNEIHN0YXRpb25zOwot
ICAgIH0KLQotICAgICBASWQKLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkJFWlVHU1BFR0VMSUQi
LCB1bmlxdWU9M0R0cnVlLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaT0Kc2lvbj0zRDExLCBzY2Fs
ZT0zRDApCi0gICAgcHVibGljIGxvbmcgZ2V0QmV6dWdzcGVnZWxpZCgpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuYmV6dWdzcGVnZWxpZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRCZXp1
Z3NwZWdlbGlkKGxvbmcgYmV6dWdzcGVnZWxpZCkgewotICAgICAgICB0aGlzLmJlenVnc3BlZ2Vs
aWQgPTNEIGJlenVnc3BlZ2VsaWQ7Ci0gICAgfQotCi1ATWFueVRvT25lKGZldGNoPTNERmV0Y2hU
eXBlLkxBWlkpCi0gICAgQEpvaW5Db2x1bW4obmFtZT0zRCJHRVdBRVNTRVJJRCIsIG51bGxhYmxl
PTNEZmFsc2UpCi0gICAgcHVibGljIEdld2Flc3NlciBnZXRHZXdhZXNzZXIoKSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLmdld2Flc3NlcjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRHZXdh
ZXNzZXIoR2V3YWVzc2VyIGdld2Flc3NlcikgewotICAgICAgICB0aGlzLmdld2Flc3NlciA9M0Qg
Z2V3YWVzc2VyOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIktNIiwgbnVsbGFibGU9
M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFs
IGdldEttKCkgewotICAgICAgICByZXR1cm4gdGhpcy5rbTsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRLbShCaWdEZWNpbWFsIGttKSB7Ci0gICAgICAgIHRoaXMua20gPTNEIGttOwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk5BTUUiLCBudWxsYWJsZT0zRGZhbHNlLCBsZW5n
dGg9M0Q1MCkKLSAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLm5hbWU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkg
ewotICAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiTlVMTFBVTktUIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9
M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE51bGxwdW5rdCgpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMubnVsbHB1bmt0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE51bGxwdW5r
dChCaWdEZWNpbWFsIG51bGxwdW5rdCkgewotICAgICAgICB0aGlzLm51bGxwdW5rdCA9M0QgbnVs
bHB1bmt0OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIktFTk5VTkciLCBsZW5ndGg9
M0QxNikKLSAgICBwdWJsaWMgU3RyaW5nIGdldEtlbm51bmcoKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLmtlbm51bmc7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0S2VubnVuZyhTdHJpbmcg
a2VubnVuZykgewotICAgICAgICB0aGlzLmtlbm51bmcgPTNEIGtlbm51bmc7Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiRUlOWlVHU0dFQklFVCIsIHByZWNpc2lvbj0zRDEwKQotICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldEVpbnp1Z3NnZWJpZXQoKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLmVpbnp1Z3NnZWJpZXQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RWluenVnc2dl
YmlldChCaWdEZWNpbWFsIGVpbnp1Z3NnZWJpZXQpIHsKLSAgICAgICAgdGhpcy5laW56dWdzZ2Vi
aWV0ID0zRCBlaW56dWdzZ2ViaWV0OwotICAgIH0KLQotICAgIEBUZW1wb3JhbChUZW1wb3JhbFR5
cGUuREFURSkKLSAgICBAQ29sdW1uKG5hbWU9M0QiSU5CRVRSSUVCIiwgbGVuZ3RoPTNENykKLSAg
ICBwdWJsaWMgRGF0ZSBnZXRJbmJldHJpZWIoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmluYmV0
cmllYjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRJbmJldHJpZWIoRGF0ZSBpbmJldHJp
ZWIpIHsKLSAgICAgICAgdGhpcy5pbmJldHJpZWIgPTNEIGluYmV0cmllYjsKLSAgICB9Ci0KLQot
ICAgIEBDb2x1bW4obmFtZT0zRCJGTElFU1NDSEFSQUtURVIiLCBsZW5ndGg9M0QzKQotICAgIHB1
YmxpYyBTdHJpbmcgZ2V0RmxpZXNzY2hhcmFrdGVyKCkgewotICAgICAgICByZXR1cm4gdGhpcy5m
bGllc3NjaGFyYWt0ZXI7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RmxpZXNzY2hhcmFr
dGVyKFN0cmluZyBmbGllc3NjaGFyYWt0ZXIpIHsKLSAgICAgICAgdGhpcy5mbGllc3NjaGFyYWt0
ZXIgPTNEIGZsaWVzc2NoYXJha3RlcjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJM
QVVGRU5UV0lDS0xVTkciLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0TGF1ZmVudHdpY2tsdW5nKCkgewotICAgICAgICByZXR1cm4gdGhpcy5sYXVm
ZW50d2lja2x1bmc7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TGF1ZmVudHdpY2tsdW5n
KEJpZ0RlY2ltYWwgbGF1ZmVudHdpY2tsdW5nKSB7Ci0gICAgICAgIHRoaXMubGF1ZmVudHdpY2ts
dW5nID0zRCBsYXVmZW50d2lja2x1bmc7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0Qi
TU5RIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdl
dE1ucSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubW5xOwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldE1ucShCaWdEZWNpbWFsIG1ucSkgewotICAgICAgICB0aGlzLm1ucSA9M0QgbW5xOwot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1RIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9
M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1xKCkgewotICAgICAgICByZXR1cm4gdGhp
cy5tcTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNcShCaWdEZWNpbWFsIG1xKSB7Ci0g
ICAgICAgIHRoaXMubXEgPTNEIG1xOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1I
USIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRN
aHEoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1ocTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXRNaHEoQmlnRGVjaW1hbCBtaHEpIHsKLSAgICAgICAgdGhpcy5taHEgPTNEIG1ocTsKLSAg
ICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJOTlEiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0z
RDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0Tm5xKCkgewotICAgICAgICByZXR1cm4gdGhp
cy5ubnE7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0Tm5xKEJpZ0RlY2ltYWwgbm5xKSB7
Ci0gICAgICAgIHRoaXMubm5xID0zRCBubnE7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiSEhRIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFs
IGdldEhocSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaGhxOwotICAgIH0KLQotICAgIHB1Ymxp
YyB2b2lkIHNldEhocShCaWdEZWNpbWFsIGhocSkgewotICAgICAgICB0aGlzLmhocSA9M0QgaGhx
OwotICAgIH0KLQotICAgIEBUZW1wb3JhbChUZW1wb3JhbFR5cGUuREFURSkKLSAgICBAQ29sdW1u
KG5hbWU9M0QiTk5RREFUVU0iLCBsZW5ndGg9M0Q3KQotICAgIHB1YmxpYyBEYXRlIGdldE5ucWRh
dHVtKCkgewotICAgICAgICByZXR1cm4gdGhpcy5ubnFkYXR1bTsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRObnFkYXR1bShEYXRlIG5ucWRhdHVtKSB7Ci0gICAgICAgIHRoaXMubm5xZGF0
dW0gPTNEIG5ucWRhdHVtOwotICAgIH0KLQotICAgIEBUZW1wb3JhbChUZW1wb3JhbFR5cGUuREFU
RSkKLSAgICBAQ29sdW1uKG5hbWU9M0QiSEhRREFUVU0iLCBsZW5ndGg9M0Q3KQotICAgIHB1Ymxp
YyBEYXRlIGdldEhocWRhdHVtKCkgewotICAgICAgICByZXR1cm4gdGhpcy5oaHFkYXR1bTsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRIaHFkYXR1bShEYXRlIGhocWRhdHVtKSB7Ci0gICAg
ICAgIHRoaXMuaGhxZGF0dW0gPTNEIGhocWRhdHVtOwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIkpBSFJFU1JFSUhFIiwgbGVuZ3RoPTNEMTIpCi0gICAgcHVibGljIFN0cmluZyBnZXRK
YWhyZXNyZWloZSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuamFocmVzcmVpaGU7Ci0gICAgfQot
Ci0gICAgcHVibGljIHZvaWQgc2V0SmFocmVzcmVpaGUoU3RyaW5nIGphaHJlc3JlaWhlKSB7Ci0g
ICAgICAgIHRoaXMuamFocmVzcmVpaGUgPTNEIGphaHJlc3JlaWhlOwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIkJFTUVSS1VORyIsIGxlbmd0aD0zRDI0MCkKLSAgICBwdWJsaWMgU3Ry
aW5nIGdldEJlbWVya3VuZygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYmVtZXJrdW5nOwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEJlbWVya3VuZyhTdHJpbmcgYmVtZXJrdW5nKSB7Ci0g
ICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7Ci0gICAgfQotCi1AT25lVG9NYW55
KGZldGNoPTNERmV0Y2hUeXBlLkxBWlksIG1hcHBlZEJ5PTNEImJlenVnc3BlZ2VsIikKLSAgICBw
dWJsaWMgU2V0PFN0YXRpb24+IGdldFN0YXRpb25zKCkgewotICAgICAgICByZXR1cm4gdGhpcy5z
dGF0aW9uczsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTdGF0aW9ucyhTZXQ8U3RhdGlv
bj4gc3RhdGlvbnMpIHsKLSAgICAgICAgdGhpcy5zdGF0aW9ucyA9M0Qgc3RhdGlvbnM7Ci0gICAg
fQotfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFp
bi9qYXZhL2RlL2ludGV2YXRpb24vc2U9CmRkYi9tb2RlbC9CZXp1Z3NwZWdlbGdldy5qYXZhCi0t
LSBhL2JhY2tlbmQvc3JjL21haW4vamF2YS9kZS9pbnRldmF0aW9uL3NlZGRiL21vZGVsL0JlenVn
c3BlZ2VsZ2V3LmphdmEJTT0Kb24gQXByIDI5IDExOjE0OjI1IDIwMTMgKzAyMDAKKysrIC9kZXYv
bnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsNjkgKzAsMCBAQAotLyog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3Ig
R2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRp
b24gR21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUg
QUdQTCAoPj0zRHYzKT0yMAotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5U
WSEgQ2hlY2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1l
bnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVu
dHMuc2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJl
cm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJp
YnV0ZU92ZXJyaWRlOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0ZU92ZXJyaWRl
czsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuRW1iZWRkZWRJZDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7Ci1pbXBv
cnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7Ci0KLS8qKgotICogQmV6dWdzcGVnZWxnZXcgZ2Vu
ZXJhdGVkIGJ5IGhibTJqYXZhCi0gKi8KLUBFbnRpdHkKLUBUYWJsZShuYW1lPTNEIkJFWlVHU1BF
R0VMR0VXIgotICAgICxzY2hlbWE9M0QiU0VEREIiCi0pCi1wdWJsaWMgY2xhc3MgQmV6dWdzcGVn
ZWxnZXcgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgewotCi0KLSAgICAgcHJpdmF0
ZSBCZXp1Z3NwZWdlbGdld0lkIGlkOwotCi0gICAgcHVibGljIEJlenVnc3BlZ2VsZ2V3KCkgewot
ICAgIH0KLQotICAgIHB1YmxpYyBCZXp1Z3NwZWdlbGdldyhCZXp1Z3NwZWdlbGdld0lkIGlkKSB7
Ci0gICAgICAgdGhpcy5pZCA9M0QgaWQ7Ci0gICAgfQotCi0gICAgIEBFbWJlZGRlZElkCi0KLSAg
ICBAQXR0cmlidXRlT3ZlcnJpZGVzKCB7Ci0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1l
PTNEImJlenVnc3BlZ2VsaWQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9Cj0zRCJCRVpVR1NQRUdF
TElEIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEMCkgKSwKLSAg
ICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZ2V3YWVzc2VyaWQiLCBjb2x1bW49M0RA
Q29sdW1uKG5hbWU9M0QiPQpHRVdBRVNTRVJJRCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lv
bj0zRDExLCBzY2FsZT0zRDApICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNE
ImttIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIktNIiwgbnVsbD0KYWJsZT0zRGZhbHNlLCBw
cmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShu
YW1lPTNEIm5hbWUiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTkFNRSIsID0KbnVsbGFibGU9
M0RmYWxzZSwgbGVuZ3RoPTNENTApICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1l
PTNEIm51bGxwdW5rdCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJOVT0KTExQVU5LVCIsIG51
bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0
dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qia2VubnVuZyIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0z
RCJLRU5OPQpVTkciLCBsZW5ndGg9M0QxNikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRl
KG5hbWU9M0QiZWluenVnc2dlYmlldCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0KPTNEIkVJTlpV
R1NHRUJJRVQiLCBwcmVjaXNpb249M0QxMCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRl
KG5hbWU9M0QiaW5iZXRyaWViIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIklOPQpCRVRSSUVC
IiwgbGVuZ3RoPTNENykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZmxp
ZXNzY2hhcmFrdGVyIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPQo9M0QiRkxJRVNTQ0hBUkFLVEVS
IiwgbGVuZ3RoPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibGF1
ZmVudHdpY2tsdW5nIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPQo9M0QiTEFVRkVOVFdJQ0tMVU5H
IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJp
ZGUobmFtZT0zRCJtbnEiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTU5RIiwgcHI9CmVjaXNp
b249M0Q4LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNE
Im1xIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1RIiwgcHJlYz0KaXNpb249M0Q4LCBzY2Fs
ZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1ocSIsIGNvbHVt
bj0zREBDb2x1bW4obmFtZT0zRCJNSFEiLCBwcj0KZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykgKSwK
LSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qibm5xIiwgY29sdW1uPTNEQENvbHVt
bihuYW1lPTNEIk5OUSIsIHByPQplY2lzaW9uPTNEOCwgc2NhbGU9M0QzKSApLAotICAgICAgICBA
QXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJoaHEiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0Qi
SEhRIiwgcHI9CmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVP
dmVycmlkZShuYW1lPTNEIm5ucWRhdHVtIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk5OUT0K
REFUVU0iLCBsZW5ndGg9M0Q3KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0z
RCJoaHFkYXR1bSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJISFE9CkRBVFVNIiwgbGVuZ3Ro
PTNENykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiamFocmVzcmVpaGUi
LCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiPQpKQUhSRVNSRUlIRSIsIGxlbmd0aD0zRDEyKSAp
LAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJiZW1lcmt1bmciLCBjb2x1bW49
M0RAQ29sdW1uKG5hbWU9M0QiQkU9Ck1FUktVTkciLCBsZW5ndGg9M0QyNDApICksCi0gICAgICAg
IEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImdld25hbWUiLCBjb2x1bW49M0RAQ29sdW1uKG5h
bWU9M0QiR0VXTj0KQU1FIiwgbnVsbGFibGU9M0RmYWxzZSwgbGVuZ3RoPTNEMjApICkgfSApCi0g
ICAgcHVibGljIEJlenVnc3BlZ2VsZ2V3SWQgZ2V0SWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LmlkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldElkKEJlenVnc3BlZ2VsZ2V3SWQgaWQp
IHsKLSAgICAgICAgdGhpcy5pZCA9M0QgaWQ7Ci0gICAgfQotfQpkaWZmIC1yIGJjNGUxYmYyNjIy
NyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2U9
CmRkYi9tb2RlbC9CZXp1Z3NwZWdlbGdld0lkLmphdmEKLS0tIGEvYmFja2VuZC9zcmMvbWFpbi9q
YXZhL2RlL2ludGV2YXRpb24vc2VkZGIvbW9kZWwvQmV6dWdzcGVnZWxnZXdJZC5qYXZhPQoJTW9u
IEFwciAyOSAxMToxNDoyNSAyMDEzICswMjAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDow
MDowMCAxOTcwICswMDAwCkBAIC0xLDMzNSArMCwwIEBACi0vKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5k
ZQotICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0gKgotICogVGhp
cyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMpPTIwCi0g
KiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCi0g
KiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFp
bHMuPTIwCi0gKi8KLQotcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5zZWRkYi5tb2RlbDsKLS8v
IEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQuMC5D
UjEKLQotCi1pbXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7Ci1pbXBvcnQgamF2YS51dGlsLkRh
dGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNp
c3RlbmNlLkVtYmVkZGFibGU7Ci0KLS8qKgotICogQmV6dWdzcGVnZWxnZXdJZCBnZW5lcmF0ZWQg
YnkgaGJtMmphdmEKLSAqLwotQEVtYmVkZGFibGUKLXB1YmxpYyBjbGFzcyBCZXp1Z3NwZWdlbGdl
d0lkICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAgIHByaXZhdGUg
bG9uZyBiZXp1Z3NwZWdlbGlkOwotICAgICBwcml2YXRlIGxvbmcgZ2V3YWVzc2VyaWQ7Ci0gICAg
IHByaXZhdGUgQmlnRGVjaW1hbCBrbTsKLSAgICAgcHJpdmF0ZSBTdHJpbmcgbmFtZTsKLSAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIG51bGxwdW5rdDsKLSAgICAgcHJpdmF0ZSBTdHJpbmcga2VubnVu
ZzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGVpbnp1Z3NnZWJpZXQ7Ci0gICAgIHByaXZhdGUg
RGF0ZSBpbmJldHJpZWI7Ci0gICAgIHByaXZhdGUgU3RyaW5nIGZsaWVzc2NoYXJha3RlcjsKLSAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGxhdWZlbnR3aWNrbHVuZzsKLSAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIG1ucTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1xOwotICAgICBwcml2YXRlIEJp
Z0RlY2ltYWwgbWhxOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgbm5xOwotICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgaGhxOwotICAgICBwcml2YXRlIERhdGUgbm5xZGF0dW07Ci0gICAgIHByaXZh
dGUgRGF0ZSBoaHFkYXR1bTsKLSAgICAgcHJpdmF0ZSBTdHJpbmcgamFocmVzcmVpaGU7Ci0gICAg
IHByaXZhdGUgU3RyaW5nIGJlbWVya3VuZzsKLSAgICAgcHJpdmF0ZSBTdHJpbmcgZ2V3bmFtZTsK
LQotICAgIHB1YmxpYyBCZXp1Z3NwZWdlbGdld0lkKCkgewotICAgIH0KLQotICAgIHB1YmxpYyBC
ZXp1Z3NwZWdlbGdld0lkKGxvbmcgYmV6dWdzcGVnZWxpZCwgbG9uZyBnZXdhZXNzZXJpZCwgQmln
RGVjaW09CmFsIGttLCBTdHJpbmcgbmFtZSwgQmlnRGVjaW1hbCBudWxscHVua3QsIFN0cmluZyBn
ZXduYW1lKSB7Ci0gICAgICAgIHRoaXMuYmV6dWdzcGVnZWxpZCA9M0QgYmV6dWdzcGVnZWxpZDsK
LSAgICAgICAgdGhpcy5nZXdhZXNzZXJpZCA9M0QgZ2V3YWVzc2VyaWQ7Ci0gICAgICAgIHRoaXMu
a20gPTNEIGttOwotICAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7Ci0gICAgICAgIHRoaXMubnVs
bHB1bmt0ID0zRCBudWxscHVua3Q7Ci0gICAgICAgIHRoaXMuZ2V3bmFtZSA9M0QgZ2V3bmFtZTsK
LSAgICB9Ci0gICAgcHVibGljIEJlenVnc3BlZ2VsZ2V3SWQobG9uZyBiZXp1Z3NwZWdlbGlkLCBs
b25nIGdld2Flc3NlcmlkLCBCaWdEZWNpbT0KYWwga20sIFN0cmluZyBuYW1lLCBCaWdEZWNpbWFs
IG51bGxwdW5rdCwgU3RyaW5nIGtlbm51bmcsIEJpZ0RlY2ltYWwgZWluenVnPQpzZ2ViaWV0LCBE
YXRlIGluYmV0cmllYiwgU3RyaW5nIGZsaWVzc2NoYXJha3RlciwgQmlnRGVjaW1hbCBsYXVmZW50
d2lja2x1bmc9CiwgQmlnRGVjaW1hbCBtbnEsIEJpZ0RlY2ltYWwgbXEsIEJpZ0RlY2ltYWwgbWhx
LCBCaWdEZWNpbWFsIG5ucSwgQmlnRGVjaW1hbD0KIGhocSwgRGF0ZSBubnFkYXR1bSwgRGF0ZSBo
aHFkYXR1bSwgU3RyaW5nIGphaHJlc3JlaWhlLCBTdHJpbmcgYmVtZXJrdW5nLCBTPQp0cmluZyBn
ZXduYW1lKSB7Ci0gICAgICAgdGhpcy5iZXp1Z3NwZWdlbGlkID0zRCBiZXp1Z3NwZWdlbGlkOwot
ICAgICAgIHRoaXMuZ2V3YWVzc2VyaWQgPTNEIGdld2Flc3NlcmlkOwotICAgICAgIHRoaXMua20g
PTNEIGttOwotICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKLSAgICAgICB0aGlzLm51bGxwdW5r
dCA9M0QgbnVsbHB1bmt0OwotICAgICAgIHRoaXMua2VubnVuZyA9M0Qga2VubnVuZzsKLSAgICAg
ICB0aGlzLmVpbnp1Z3NnZWJpZXQgPTNEIGVpbnp1Z3NnZWJpZXQ7Ci0gICAgICAgdGhpcy5pbmJl
dHJpZWIgPTNEIGluYmV0cmllYjsKLSAgICAgICB0aGlzLmZsaWVzc2NoYXJha3RlciA9M0QgZmxp
ZXNzY2hhcmFrdGVyOwotICAgICAgIHRoaXMubGF1ZmVudHdpY2tsdW5nID0zRCBsYXVmZW50d2lj
a2x1bmc7Ci0gICAgICAgdGhpcy5tbnEgPTNEIG1ucTsKLSAgICAgICB0aGlzLm1xID0zRCBtcTsK
LSAgICAgICB0aGlzLm1ocSA9M0QgbWhxOwotICAgICAgIHRoaXMubm5xID0zRCBubnE7Ci0gICAg
ICAgdGhpcy5oaHEgPTNEIGhocTsKLSAgICAgICB0aGlzLm5ucWRhdHVtID0zRCBubnFkYXR1bTsK
LSAgICAgICB0aGlzLmhocWRhdHVtID0zRCBoaHFkYXR1bTsKLSAgICAgICB0aGlzLmphaHJlc3Jl
aWhlID0zRCBqYWhyZXNyZWloZTsKLSAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5n
OwotICAgICAgIHRoaXMuZ2V3bmFtZSA9M0QgZ2V3bmFtZTsKLSAgICB9Ci0KLQotCi0gICAgQENv
bHVtbihuYW1lPTNEIkJFWlVHU1BFR0VMSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249
M0QxMSwgc2NhbD0KZT0zRDApCi0gICAgcHVibGljIGxvbmcgZ2V0QmV6dWdzcGVnZWxpZCgpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuYmV6dWdzcGVnZWxpZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRCZXp1Z3NwZWdlbGlkKGxvbmcgYmV6dWdzcGVnZWxpZCkgewotICAgICAgICB0aGlz
LmJlenVnc3BlZ2VsaWQgPTNEIGJlenVnc3BlZ2VsaWQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiR0VXQUVTU0VSSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxMSwg
c2NhbGU9Cj0zRDApCi0gICAgcHVibGljIGxvbmcgZ2V0R2V3YWVzc2VyaWQoKSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLmdld2Flc3NlcmlkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEdl
d2Flc3NlcmlkKGxvbmcgZ2V3YWVzc2VyaWQpIHsKLSAgICAgICAgdGhpcy5nZXdhZXNzZXJpZCA9
M0QgZ2V3YWVzc2VyaWQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiS00iLCBudWxs
YWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0S20oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmttOwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldEttKEJpZ0RlY2ltYWwga20pIHsKLSAgICAgICAgdGhpcy5rbSA9M0Qga207
Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTkFNRSIsIG51bGxhYmxlPTNEZmFsc2Us
IGxlbmd0aD0zRDUwKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMubmFtZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBu
YW1lKSB7Ci0gICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKLSAgICB9Ci0KLQotICAgIEBDb2x1
bW4obmFtZT0zRCJOVUxMUFVOS1QiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q4LCBz
Y2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TnVsbHB1bmt0KCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5udWxscHVua3Q7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TnVs
bHB1bmt0KEJpZ0RlY2ltYWwgbnVsbHB1bmt0KSB7Ci0gICAgICAgIHRoaXMubnVsbHB1bmt0ID0z
RCBudWxscHVua3Q7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiS0VOTlVORyIsIGxl
bmd0aD0zRDE2KQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0S2VubnVuZygpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMua2VubnVuZzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRLZW5udW5nKFN0
cmluZyBrZW5udW5nKSB7Ci0gICAgICAgIHRoaXMua2VubnVuZyA9M0Qga2VubnVuZzsKLSAgICB9
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJFSU5aVUdTR0VCSUVUIiwgcHJlY2lzaW9uPTNEMTAp
Ci0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RWluenVnc2dlYmlldCgpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuZWluenVnc2dlYmlldDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRFaW56
dWdzZ2ViaWV0KEJpZ0RlY2ltYWwgZWluenVnc2dlYmlldCkgewotICAgICAgICB0aGlzLmVpbnp1
Z3NnZWJpZXQgPTNEIGVpbnp1Z3NnZWJpZXQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiSU5CRVRSSUVCIiwgbGVuZ3RoPTNENykKLSAgICBwdWJsaWMgRGF0ZSBnZXRJbmJldHJpZWIo
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmluYmV0cmllYjsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRJbmJldHJpZWIoRGF0ZSBpbmJldHJpZWIpIHsKLSAgICAgICAgdGhpcy5pbmJldHJp
ZWIgPTNEIGluYmV0cmllYjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJGTElFU1ND
SEFSQUtURVIiLCBsZW5ndGg9M0QzKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0RmxpZXNzY2hhcmFr
dGVyKCkgewotICAgICAgICByZXR1cm4gdGhpcy5mbGllc3NjaGFyYWt0ZXI7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0RmxpZXNzY2hhcmFrdGVyKFN0cmluZyBmbGllc3NjaGFyYWt0ZXIp
IHsKLSAgICAgICAgdGhpcy5mbGllc3NjaGFyYWt0ZXIgPTNEIGZsaWVzc2NoYXJha3RlcjsKLSAg
ICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJMQVVGRU5UV0lDS0xVTkciLCBwcmVjaXNpb249
M0Q3LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TGF1ZmVudHdpY2tsdW5n
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5sYXVmZW50d2lja2x1bmc7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0TGF1ZmVudHdpY2tsdW5nKEJpZ0RlY2ltYWwgbGF1ZmVudHdpY2tsdW5n
KSB7Ci0gICAgICAgIHRoaXMubGF1ZmVudHdpY2tsdW5nID0zRCBsYXVmZW50d2lja2x1bmc7Ci0g
ICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTU5RIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9
M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1ucSgpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMubW5xOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1ucShCaWdEZWNpbWFsIG1ucSkg
ewotICAgICAgICB0aGlzLm1ucSA9M0QgbW5xOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIk1RIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFs
IGdldE1xKCkgewotICAgICAgICByZXR1cm4gdGhpcy5tcTsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRNcShCaWdEZWNpbWFsIG1xKSB7Ci0gICAgICAgIHRoaXMubXEgPTNEIG1xOwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1IUSIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNE
MykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNaHEoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
Lm1ocTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNaHEoQmlnRGVjaW1hbCBtaHEpIHsK
LSAgICAgICAgdGhpcy5taHEgPTNEIG1ocTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJOTlEiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0Tm5xKCkgewotICAgICAgICByZXR1cm4gdGhpcy5ubnE7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0Tm5xKEJpZ0RlY2ltYWwgbm5xKSB7Ci0gICAgICAgIHRoaXMubm5xID0zRCBubnE7
Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiSEhRIiwgcHJlY2lzaW9uPTNEOCwgc2Nh
bGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEhocSgpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuaGhxOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEhocShCaWdEZWNpbWFsIGho
cSkgewotICAgICAgICB0aGlzLmhocSA9M0QgaGhxOwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIk5OUURBVFVNIiwgbGVuZ3RoPTNENykKLSAgICBwdWJsaWMgRGF0ZSBnZXRObnFkYXR1
bSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubm5xZGF0dW07Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0Tm5xZGF0dW0oRGF0ZSBubnFkYXR1bSkgewotICAgICAgICB0aGlzLm5ucWRhdHVt
ID0zRCBubnFkYXR1bTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJISFFEQVRVTSIs
IGxlbmd0aD0zRDcpCi0gICAgcHVibGljIERhdGUgZ2V0SGhxZGF0dW0oKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLmhocWRhdHVtOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEhocWRhdHVt
KERhdGUgaGhxZGF0dW0pIHsKLSAgICAgICAgdGhpcy5oaHFkYXR1bSA9M0QgaGhxZGF0dW07Ci0g
ICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiSkFIUkVTUkVJSEUiLCBsZW5ndGg9M0QxMikK
LSAgICBwdWJsaWMgU3RyaW5nIGdldEphaHJlc3JlaWhlKCkgewotICAgICAgICByZXR1cm4gdGhp
cy5qYWhyZXNyZWloZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRKYWhyZXNyZWloZShT
dHJpbmcgamFocmVzcmVpaGUpIHsKLSAgICAgICAgdGhpcy5qYWhyZXNyZWloZSA9M0QgamFocmVz
cmVpaGU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQkVNRVJLVU5HIiwgbGVuZ3Ro
PTNEMjQwKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0QmVtZXJrdW5nKCkgewotICAgICAgICByZXR1
cm4gdGhpcy5iZW1lcmt1bmc7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QmVtZXJrdW5n
KFN0cmluZyBiZW1lcmt1bmcpIHsKLSAgICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3Vu
ZzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJHRVdOQU1FIiwgbnVsbGFibGU9M0Rm
YWxzZSwgbGVuZ3RoPTNEMjApCi0gICAgcHVibGljIFN0cmluZyBnZXRHZXduYW1lKCkgewotICAg
ICAgICByZXR1cm4gdGhpcy5nZXduYW1lOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEdl
d25hbWUoU3RyaW5nIGdld25hbWUpIHsKLSAgICAgICAgdGhpcy5nZXduYW1lID0zRCBnZXduYW1l
OwotICAgIH0KLQotCi0gICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG90aGVyKSB7Ci0g
ICAgICAgICBpZiAoICh0aGlzID0zRD0zRCBvdGhlciApICkgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICBpZiAoIChvdGhlciA9M0Q9M0QgbnVsbCApICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgaWYg
KCAhKG90aGVyIGluc3RhbmNlb2YgQmV6dWdzcGVnZWxnZXdJZCkgKSByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICBCZXp1Z3NwZWdlbGdld0lkIGNhc3RPdGhlciA9M0QgKCBCZXp1Z3NwZWdlbGdld0lk
ICkgb3RoZXI7Ci0KLSAgICAgICAgIHJldHVybiAodGhpcy5nZXRCZXp1Z3NwZWdlbGlkKCk9M0Q9
M0RjYXN0T3RoZXIuZ2V0QmV6dWdzcGVnZWxpZCgpKQotICYmICh0aGlzLmdldEdld2Flc3Nlcmlk
KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0R2V3YWVzc2VyaWQoKSkKLSAmJiAoICh0aGlzLmdldEttKCk9
M0Q9M0RjYXN0T3RoZXIuZ2V0S20oKSkgfHwgKCB0aGlzLmdldEttKCkhPTNEbnVsbCAmJiBjPQph
c3RPdGhlci5nZXRLbSgpIT0zRG51bGwgJiYgdGhpcy5nZXRLbSgpLmVxdWFscyhjYXN0T3RoZXIu
Z2V0S20oKSkgKSApCi0gJiYgKCAodGhpcy5nZXROYW1lKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TmFt
ZSgpKSB8fCAoIHRoaXMuZ2V0TmFtZSgpIT0zRG51bD0KbCAmJiBjYXN0T3RoZXIuZ2V0TmFtZSgp
IT0zRG51bGwgJiYgdGhpcy5nZXROYW1lKCkuZXF1YWxzKGNhc3RPdGhlci5nZXROYW1lPQooKSkg
KSApCi0gJiYgKCAodGhpcy5nZXROdWxscHVua3QoKT0zRD0zRGNhc3RPdGhlci5nZXROdWxscHVu
a3QoKSkgfHwgKCB0aGlzLmdldE51bD0KbHB1bmt0KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0
TnVsbHB1bmt0KCkhPTNEbnVsbCAmJiB0aGlzLmdldE51bGxwdW5rdCgpPQouZXF1YWxzKGNhc3RP
dGhlci5nZXROdWxscHVua3QoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRLZW5udW5nKCk9M0Q9M0Rj
YXN0T3RoZXIuZ2V0S2VubnVuZygpKSB8fCAoIHRoaXMuZ2V0S2VubnVuZz0KKCkhPTNEbnVsbCAm
JiBjYXN0T3RoZXIuZ2V0S2VubnVuZygpIT0zRG51bGwgJiYgdGhpcy5nZXRLZW5udW5nKCkuZXF1
YWxzKGNhPQpzdE90aGVyLmdldEtlbm51bmcoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRFaW56dWdz
Z2ViaWV0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RWluenVnc2dlYmlldCgpKSB8fCAoIHRoaT0Kcy5n
ZXRFaW56dWdzZ2ViaWV0KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0RWluenVnc2dlYmlldCgp
IT0zRG51bGwgJiYgdGhpPQpzLmdldEVpbnp1Z3NnZWJpZXQoKS5lcXVhbHMoY2FzdE90aGVyLmdl
dEVpbnp1Z3NnZWJpZXQoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRJbmJldHJpZWIoKT0zRD0zRGNh
c3RPdGhlci5nZXRJbmJldHJpZWIoKSkgfHwgKCB0aGlzLmdldEluYj0KZXRyaWViKCkhPTNEbnVs
bCAmJiBjYXN0T3RoZXIuZ2V0SW5iZXRyaWViKCkhPTNEbnVsbCAmJiB0aGlzLmdldEluYmV0cmll
YigpPQouZXF1YWxzKGNhc3RPdGhlci5nZXRJbmJldHJpZWIoKSkgKSApCi0gJiYgKCAodGhpcy5n
ZXRGbGllc3NjaGFyYWt0ZXIoKT0zRD0zRGNhc3RPdGhlci5nZXRGbGllc3NjaGFyYWt0ZXIoKSkg
fHwgKD0KIHRoaXMuZ2V0RmxpZXNzY2hhcmFrdGVyKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0
RmxpZXNzY2hhcmFrdGVyKCkhPTNEbnVsPQpsICYmIHRoaXMuZ2V0RmxpZXNzY2hhcmFrdGVyKCku
ZXF1YWxzKGNhc3RPdGhlci5nZXRGbGllc3NjaGFyYWt0ZXIoKSkgKSApCi0gJiYgKCAodGhpcy5n
ZXRMYXVmZW50d2lja2x1bmcoKT0zRD0zRGNhc3RPdGhlci5nZXRMYXVmZW50d2lja2x1bmcoKSkg
fHwgKD0KIHRoaXMuZ2V0TGF1ZmVudHdpY2tsdW5nKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0
TGF1ZmVudHdpY2tsdW5nKCkhPTNEbnVsPQpsICYmIHRoaXMuZ2V0TGF1ZmVudHdpY2tsdW5nKCku
ZXF1YWxzKGNhc3RPdGhlci5nZXRMYXVmZW50d2lja2x1bmcoKSkgKSApCi0gJiYgKCAodGhpcy5n
ZXRNbnEoKT0zRD0zRGNhc3RPdGhlci5nZXRNbnEoKSkgfHwgKCB0aGlzLmdldE1ucSgpIT0zRG51
bGwgJj0KJiBjYXN0T3RoZXIuZ2V0TW5xKCkhPTNEbnVsbCAmJiB0aGlzLmdldE1ucSgpLmVxdWFs
cyhjYXN0T3RoZXIuZ2V0TW5xKCkpICkgKQotICYmICggKHRoaXMuZ2V0TXEoKT0zRD0zRGNhc3RP
dGhlci5nZXRNcSgpKSB8fCAoIHRoaXMuZ2V0TXEoKSE9M0RudWxsICYmIGM9CmFzdE90aGVyLmdl
dE1xKCkhPTNEbnVsbCAmJiB0aGlzLmdldE1xKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRNcSgpKSAp
ICkKLSAmJiAoICh0aGlzLmdldE1ocSgpPTNEPTNEY2FzdE90aGVyLmdldE1ocSgpKSB8fCAoIHRo
aXMuZ2V0TWhxKCkhPTNEbnVsbCAmPQomIGNhc3RPdGhlci5nZXRNaHEoKSE9M0RudWxsICYmIHRo
aXMuZ2V0TWhxKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRNaHEoKSkgKSApCi0gJiYgKCAodGhpcy5n
ZXRObnEoKT0zRD0zRGNhc3RPdGhlci5nZXRObnEoKSkgfHwgKCB0aGlzLmdldE5ucSgpIT0zRG51
bGwgJj0KJiBjYXN0T3RoZXIuZ2V0Tm5xKCkhPTNEbnVsbCAmJiB0aGlzLmdldE5ucSgpLmVxdWFs
cyhjYXN0T3RoZXIuZ2V0Tm5xKCkpICkgKQotICYmICggKHRoaXMuZ2V0SGhxKCk9M0Q9M0RjYXN0
T3RoZXIuZ2V0SGhxKCkpIHx8ICggdGhpcy5nZXRIaHEoKSE9M0RudWxsICY9CiYgY2FzdE90aGVy
LmdldEhocSgpIT0zRG51bGwgJiYgdGhpcy5nZXRIaHEoKS5lcXVhbHMoY2FzdE90aGVyLmdldEho
cSgpKSApICkKLSAmJiAoICh0aGlzLmdldE5ucWRhdHVtKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0Tm5x
ZGF0dW0oKSkgfHwgKCB0aGlzLmdldE5ucWRhPQp0dW0oKSE9M0RudWxsICYmIGNhc3RPdGhlci5n
ZXRObnFkYXR1bSgpIT0zRG51bGwgJiYgdGhpcy5nZXRObnFkYXR1bSgpLmVxdWE9CmxzKGNhc3RP
dGhlci5nZXRObnFkYXR1bSgpKSApICkKLSAmJiAoICh0aGlzLmdldEhocWRhdHVtKCk9M0Q9M0Rj
YXN0T3RoZXIuZ2V0SGhxZGF0dW0oKSkgfHwgKCB0aGlzLmdldEhocWRhPQp0dW0oKSE9M0RudWxs
ICYmIGNhc3RPdGhlci5nZXRIaHFkYXR1bSgpIT0zRG51bGwgJiYgdGhpcy5nZXRIaHFkYXR1bSgp
LmVxdWE9CmxzKGNhc3RPdGhlci5nZXRIaHFkYXR1bSgpKSApICkKLSAmJiAoICh0aGlzLmdldEph
aHJlc3JlaWhlKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0SmFocmVzcmVpaGUoKSkgfHwgKCB0aGlzLmdl
PQp0SmFocmVzcmVpaGUoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRKYWhyZXNyZWloZSgpIT0z
RG51bGwgJiYgdGhpcy5nZXRKYWg9CnJlc3JlaWhlKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRKYWhy
ZXNyZWloZSgpKSApICkKLSAmJiAoICh0aGlzLmdldEJlbWVya3VuZygpPTNEPTNEY2FzdE90aGVy
LmdldEJlbWVya3VuZygpKSB8fCAoIHRoaXMuZ2V0QmVtPQplcmt1bmcoKSE9M0RudWxsICYmIGNh
c3RPdGhlci5nZXRCZW1lcmt1bmcoKSE9M0RudWxsICYmIHRoaXMuZ2V0QmVtZXJrdW5nKCk9Ci5l
cXVhbHMoY2FzdE90aGVyLmdldEJlbWVya3VuZygpKSApICkKLSAmJiAoICh0aGlzLmdldEdld25h
bWUoKT0zRD0zRGNhc3RPdGhlci5nZXRHZXduYW1lKCkpIHx8ICggdGhpcy5nZXRHZXduYW1lPQoo
KSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRHZXduYW1lKCkhPTNEbnVsbCAmJiB0aGlzLmdldEdl
d25hbWUoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0R2V3bmFtZSgpKSApICk7Ci0gICB9Ci0KLSAg
IHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7Ci0gICAgICAgICBpbnQgcmVzdWx0ID0zRCAxNzsKLQot
ICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArIChpbnQpIHRoaXMuZ2V0QmV6dWdzcGVn
ZWxpZCgpOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArIChpbnQpIHRoaXMuZ2V0
R2V3YWVzc2VyaWQoKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEtt
KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRLbSgpPQouaGFzaENvZGUoKSApOwotICAgICAg
ICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TmFtZSgpID0zRD0zRCBudWxsID8gMCA6
IHRoaXMuZ2V0TmE9Cm1lKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAq
IHJlc3VsdCArICggZ2V0TnVsbHB1bmt0KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy49CmdldE51
bGxwdW5rdCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQg
KyAoIGdldEtlbm51bmcoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0S2VubnVuZygpLmhh
c2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEVpbnp1
Z3NnZWJpZXQoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0PQpoaXMuZ2V0RWluenVnc2dlYmlldCgpLmhh
c2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEluYmV0
cmllYigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuPQpnZXRJbmJldHJpZWIoKS5oYXNoQ29kZSgp
ICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRGbGllc3NjaGFyYWt0
ZXIoKSA9M0Q9M0QgbnVsbCA/IDAgOj0KIHRoaXMuZ2V0RmxpZXNzY2hhcmFrdGVyKCkuaGFzaENv
ZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TGF1ZmVudHdp
Y2tsdW5nKCkgPTNEPTNEIG51bGwgPyAwIDo9CiB0aGlzLmdldExhdWZlbnR3aWNrbHVuZygpLmhh
c2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1ucSgp
ID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0TW5xPQooKS5oYXNoQ29kZSgpICk7Ci0gICAgICAg
ICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNcSgpID0zRD0zRCBudWxsID8gMCA6IHRo
aXMuZ2V0TXEoKT0KLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1
bHQgKyAoIGdldE1ocSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0TWhxPQooKS5oYXNoQ29k
ZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRObnEoKSA9M0Q9
M0QgbnVsbCA/IDAgOiB0aGlzLmdldE5ucT0KKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVz
dWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0SGhxKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5n
ZXRIaHE9CigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQg
KyAoIGdldE5ucWRhdHVtKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE5ucWRhdHVtKCku
aGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0SGhx
ZGF0dW0oKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0SGhxZGF0dW0oKS5oYXNoQ29kZSgp
ICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRKYWhyZXNyZWloZSgp
ID0zRD0zRCBudWxsID8gMCA6IHRoaT0Kcy5nZXRKYWhyZXNyZWloZSgpLmhhc2hDb2RlKCkgKTsK
LSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEJlbWVya3VuZygpID0zRD0z
RCBudWxsID8gMCA6IHRoaXMuPQpnZXRCZW1lcmt1bmcoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAg
ICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRHZXduYW1lKCkgPTNEPTNEIG51bGwgPyAw
IDogdGhpcy5nZT0KdEdld25hbWUoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgfQotfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2Vu
ZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2U9CmRkYi9tb2RlbC9CaWxkLmphdmEKLS0t
IGEvYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2VkZGIvbW9kZWwvQmlsZC5q
YXZhCU1vbiBBcHIgMjkgPQoxMToxNDoyNSAyMDEzICswMjAwCisrKyAvZGV2L251bGwJVGh1IEph
biAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDIwMiArMCwwIEBACi0vKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRz
c2Vyaz0KdW5kZQotICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0g
KgotICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNE
djMpPTIwCi0gKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBv
dXQgdGhlCi0gKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIg
Zm9yIGRldGFpbHMuPTIwCi0gKi8KLQotcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5zZWRkYi5t
b2RlbDsKLS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29s
cyAzLjQuMC5DUjEKLQotCi1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOwotaW1wb3J0
IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRj
aFR5cGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7Ci1pbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuSm9pbkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5NYW55VG9PbmU7Ci1p
bXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7Ci0KLS8qKgotICogQmlsZCBnZW5lcmF0ZWQg
YnkgaGJtMmphdmEKLSAqLwotQEVudGl0eQotQFRhYmxlKG5hbWU9M0QiQklMRCIKLSAgICAsc2No
ZW1hPTNEIlNFRERCIgotKQotcHVibGljIGNsYXNzIEJpbGQgIGltcGxlbWVudHMgamF2YS5pby5T
ZXJpYWxpemFibGUgewotCi0KLSAgICAgcHJpdmF0ZSBsb25nIGJpbGRpZDsKLSAgICAgcHJpdmF0
ZSBaenRoZW1hIHp6dGhlbWE7Ci0gICAgIHByaXZhdGUgU29obHRlc3Qgc29obHRlc3Q7Ci0gICAg
IHByaXZhdGUgaW50IGxmZG5yOwotICAgICBwcml2YXRlIGJvb2xlYW4gaXN0ZGlnaXRhbDsKLSAg
ICAgcHJpdmF0ZSBTdHJpbmcgcGZhZDsKLSAgICAgcHJpdmF0ZSBTdHJpbmcgc3RhbmRvcnQ7Ci0g
ICAgIHByaXZhdGUgU3RyaW5nIG1lZGl1bTsKLSAgICAgcHJpdmF0ZSBTdHJpbmcgbWVkcGZhZDsK
LSAgICAgcHJpdmF0ZSBTdHJpbmcgYmVtZXJrdW5nOwotICAgICBwcml2YXRlIFN0cmluZyB0eXBr
bGVpbjsKLSAgICAgcHJpdmF0ZSBTdHJpbmcgdHlwbWl0dGVsOwotICAgICBwcml2YXRlIFN0cmlu
ZyB0eXBncm9zczsKLQotICAgIHB1YmxpYyBCaWxkKCkgewotICAgIH0KLQotICAgIHB1YmxpYyBC
aWxkKGxvbmcgYmlsZGlkLCBaenRoZW1hIHp6dGhlbWEsIFNvaGx0ZXN0IHNvaGx0ZXN0LCBpbnQg
bGZkbnI9CiwgYm9vbGVhbiBpc3RkaWdpdGFsKSB7Ci0gICAgICAgIHRoaXMuYmlsZGlkID0zRCBi
aWxkaWQ7Ci0gICAgICAgIHRoaXMuenp0aGVtYSA9M0Qgenp0aGVtYTsKLSAgICAgICAgdGhpcy5z
b2hsdGVzdCA9M0Qgc29obHRlc3Q7Ci0gICAgICAgIHRoaXMubGZkbnIgPTNEIGxmZG5yOwotICAg
ICAgICB0aGlzLmlzdGRpZ2l0YWwgPTNEIGlzdGRpZ2l0YWw7Ci0gICAgfQotICAgIHB1YmxpYyBC
aWxkKGxvbmcgYmlsZGlkLCBaenRoZW1hIHp6dGhlbWEsIFNvaGx0ZXN0IHNvaGx0ZXN0LCBpbnQg
bGZkbnI9CiwgYm9vbGVhbiBpc3RkaWdpdGFsLCBTdHJpbmcgcGZhZCwgU3RyaW5nIHN0YW5kb3J0
LCBTdHJpbmcgbWVkaXVtLCBTdHJpbmcgbT0KZWRwZmFkLCBTdHJpbmcgYmVtZXJrdW5nLCBTdHJp
bmcgdHlwa2xlaW4sIFN0cmluZyB0eXBtaXR0ZWwsIFN0cmluZyB0eXBncm9zPQpzKSB7Ci0gICAg
ICAgdGhpcy5iaWxkaWQgPTNEIGJpbGRpZDsKLSAgICAgICB0aGlzLnp6dGhlbWEgPTNEIHp6dGhl
bWE7Ci0gICAgICAgdGhpcy5zb2hsdGVzdCA9M0Qgc29obHRlc3Q7Ci0gICAgICAgdGhpcy5sZmRu
ciA9M0QgbGZkbnI7Ci0gICAgICAgdGhpcy5pc3RkaWdpdGFsID0zRCBpc3RkaWdpdGFsOwotICAg
ICAgIHRoaXMucGZhZCA9M0QgcGZhZDsKLSAgICAgICB0aGlzLnN0YW5kb3J0ID0zRCBzdGFuZG9y
dDsKLSAgICAgICB0aGlzLm1lZGl1bSA9M0QgbWVkaXVtOwotICAgICAgIHRoaXMubWVkcGZhZCA9
M0QgbWVkcGZhZDsKLSAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwotICAgICAg
IHRoaXMudHlwa2xlaW4gPTNEIHR5cGtsZWluOwotICAgICAgIHRoaXMudHlwbWl0dGVsID0zRCB0
eXBtaXR0ZWw7Ci0gICAgICAgdGhpcy50eXBncm9zcyA9M0QgdHlwZ3Jvc3M7Ci0gICAgfQotCi0g
ICAgIEBJZAotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQklMRElEIiwgdW5pcXVlPTNEdHJ1ZSwg
bnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEPQoxMSwgc2NhbGU9M0QwKQotICAgIHB1Ymxp
YyBsb25nIGdldEJpbGRpZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYmlsZGlkOwotICAgIH0K
LQotICAgIHB1YmxpYyB2b2lkIHNldEJpbGRpZChsb25nIGJpbGRpZCkgewotICAgICAgICB0aGlz
LmJpbGRpZCA9M0QgYmlsZGlkOwotICAgIH0KLQotQE1hbnlUb09uZShmZXRjaD0zREZldGNoVHlw
ZS5MQVpZKQotICAgIEBKb2luQ29sdW1uKG5hbWU9M0QiVEhFTUFJRCIsIG51bGxhYmxlPTNEZmFs
c2UpCi0gICAgcHVibGljIFp6dGhlbWEgZ2V0Wnp0aGVtYSgpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuenp0aGVtYTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRaenRoZW1hKFp6dGhlbWEg
enp0aGVtYSkgewotICAgICAgICB0aGlzLnp6dGhlbWEgPTNEIHp6dGhlbWE7Ci0gICAgfQotCi1A
TWFueVRvT25lKGZldGNoPTNERmV0Y2hUeXBlLkxBWlkpCi0gICAgQEpvaW5Db2x1bW4obmFtZT0z
RCJTT0hMVEVTVElEIiwgbnVsbGFibGU9M0RmYWxzZSkKLSAgICBwdWJsaWMgU29obHRlc3QgZ2V0
U29obHRlc3QoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnNvaGx0ZXN0OwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldFNvaGx0ZXN0KFNvaGx0ZXN0IHNvaGx0ZXN0KSB7Ci0gICAgICAgIHRo
aXMuc29obHRlc3QgPTNEIHNvaGx0ZXN0OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNE
IkxGRE5SIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNENSwgc2NhbGU9M0QwKQotICAg
IHB1YmxpYyBpbnQgZ2V0TGZkbnIoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmxmZG5yOwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldExmZG5yKGludCBsZmRucikgewotICAgICAgICB0aGlz
LmxmZG5yID0zRCBsZmRucjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJJU1RESUdJ
VEFMIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMSwgc2NhbGU9M0Q9CjApCi0gICAg
cHVibGljIGJvb2xlYW4gaXNJc3RkaWdpdGFsKCkgewotICAgICAgICByZXR1cm4gdGhpcy5pc3Rk
aWdpdGFsOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldElzdGRpZ2l0YWwoYm9vbGVhbiBp
c3RkaWdpdGFsKSB7Ci0gICAgICAgIHRoaXMuaXN0ZGlnaXRhbCA9M0QgaXN0ZGlnaXRhbDsKLSAg
ICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJQRkFEIiwgbGVuZ3RoPTNENTEyKQotICAgIHB1
YmxpYyBTdHJpbmcgZ2V0UGZhZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucGZhZDsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRQZmFkKFN0cmluZyBwZmFkKSB7Ci0gICAgICAgIHRoaXMu
cGZhZCA9M0QgcGZhZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJTVEFORE9SVCIs
IGxlbmd0aD0zRDUwKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U3RhbmRvcnQoKSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLnN0YW5kb3J0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFN0YW5k
b3J0KFN0cmluZyBzdGFuZG9ydCkgewotICAgICAgICB0aGlzLnN0YW5kb3J0ID0zRCBzdGFuZG9y
dDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNRURJVU0iLCBsZW5ndGg9M0Q1MCkK
LSAgICBwdWJsaWMgU3RyaW5nIGdldE1lZGl1bSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWVk
aXVtOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1lZGl1bShTdHJpbmcgbWVkaXVtKSB7
Ci0gICAgICAgIHRoaXMubWVkaXVtID0zRCBtZWRpdW07Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiTUVEUEZBRCIsIGxlbmd0aD0zRDUwKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0TWVk
cGZhZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWVkcGZhZDsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRNZWRwZmFkKFN0cmluZyBtZWRwZmFkKSB7Ci0gICAgICAgIHRoaXMubWVkcGZh
ZCA9M0QgbWVkcGZhZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJCRU1FUktVTkci
LCBsZW5ndGg9M0QyNDApCi0gICAgcHVibGljIFN0cmluZyBnZXRCZW1lcmt1bmcoKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLmJlbWVya3VuZzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRC
ZW1lcmt1bmcoU3RyaW5nIGJlbWVya3VuZykgewotICAgICAgICB0aGlzLmJlbWVya3VuZyA9M0Qg
YmVtZXJrdW5nOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlRZUEtMRUlOIiwgbGVu
Z3RoPTNEOCkKLSAgICBwdWJsaWMgU3RyaW5nIGdldFR5cGtsZWluKCkgewotICAgICAgICByZXR1
cm4gdGhpcy50eXBrbGVpbjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUeXBrbGVpbihT
dHJpbmcgdHlwa2xlaW4pIHsKLSAgICAgICAgdGhpcy50eXBrbGVpbiA9M0QgdHlwa2xlaW47Ci0g
ICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVFlQTUlUVEVMIiwgbGVuZ3RoPTNEOCkKLSAg
ICBwdWJsaWMgU3RyaW5nIGdldFR5cG1pdHRlbCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudHlw
bWl0dGVsOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFR5cG1pdHRlbChTdHJpbmcgdHlw
bWl0dGVsKSB7Ci0gICAgICAgIHRoaXMudHlwbWl0dGVsID0zRCB0eXBtaXR0ZWw7Ci0gICAgfQot
Ci0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVFlQR1JPU1MiLCBsZW5ndGg9M0Q4KQotICAgIHB1Ymxp
YyBTdHJpbmcgZ2V0VHlwZ3Jvc3MoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnR5cGdyb3NzOwot
ICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFR5cGdyb3NzKFN0cmluZyB0eXBncm9zcykgewot
ICAgICAgICB0aGlzLnR5cGdyb3NzID0zRCB0eXBncm9zczsKLSAgICB9Ci19CmRpZmYgLXIgYmM0
ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9tYWluL2phdmEvZGUvaW50ZXZh
dGlvbi9zZT0KZGRiL21vZGVsL0dld2Flc3Nlci5qYXZhCi0tLSBhL2JhY2tlbmQvc3JjL21haW4v
amF2YS9kZS9pbnRldmF0aW9uL3NlZGRiL21vZGVsL0dld2Flc3Nlci5qYXZhCU1vbiBBcD0KciAy
OSAxMToxNDoyNSAyMDEzICswMjAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAx
OTcwICswMDAwCkBAIC0xLDE0NyArMCwwIEBACi0vKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIs
IDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQotICog
U29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0gKgotICogVGhpcyBmaWxl
IGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMpPTIwCi0gKiBhbmQg
Y29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCi0gKiBkb2N1
bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFpbHMuPTIw
Ci0gKi8KLQotcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5zZWRkYi5tb2RlbDsKLS8vIEdlbmVy
YXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQuMC5DUjEKLQot
Ci1pbXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7
Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47
Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OwotaW1wb3J0IGphdmF4LnBlcnNpc3Rl
bmNlLkZldGNoVHlwZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKLWltcG9ydCBqYXZh
eC5wZXJzaXN0ZW5jZS5PbmVUb01hbnk7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7
Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVW5pcXVlQ29uc3RyYWludDsKLQotLyoqCi0gKiBH
ZXdhZXNzZXIgZ2VuZXJhdGVkIGJ5IGhibTJqYXZhCi0gKi8KLUBFbnRpdHkKLUBUYWJsZShuYW1l
PTNEIkdFV0FFU1NFUiIKLSAgICAsc2NoZW1hPTNEIlNFRERCIgotICAgICwgdW5pcXVlQ29uc3Ry
YWludHMgPTNEIEBVbmlxdWVDb25zdHJhaW50KGNvbHVtbk5hbWVzPTNEIk5BTUUiKQotKQotcHVi
bGljIGNsYXNzIEdld2Flc3NlciAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7Ci0K
LQotICAgICBwcml2YXRlIGxvbmcgZ2V3YWVzc2VyaWQ7Ci0gICAgIHByaXZhdGUgU3RyaW5nIG5h
bWU7Ci0gICAgIHByaXZhdGUgU3RyaW5nIGtlbm51bmc7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1h
bCBsYWVuZ2U7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBlaW56dWdzZ2ViaWV0OwotICAgICBw
cml2YXRlIFN0cmluZyBiZW1lcmt1bmc7Ci0gICAgIHByaXZhdGUgU2V0PEJlenVnc3BlZ2VsPiBi
ZXp1Z3NwZWdlbHMgPTNEIG5ldyBIYXNoU2V0PEJlenVnc3BlZ2VsPigwKTsKLSAgICAgcHJpdmF0
ZSBTZXQ8U3RhdGlvbj4gc3RhdGlvbnMgPTNEIG5ldyBIYXNoU2V0PFN0YXRpb24+KDApOwotCi0g
ICAgcHVibGljIEdld2Flc3NlcigpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgR2V3YWVzc2VyKGxv
bmcgZ2V3YWVzc2VyaWQsIFN0cmluZyBuYW1lKSB7Ci0gICAgICAgIHRoaXMuZ2V3YWVzc2VyaWQg
PTNEIGdld2Flc3NlcmlkOwotICAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7Ci0gICAgfQotICAg
IHB1YmxpYyBHZXdhZXNzZXIobG9uZyBnZXdhZXNzZXJpZCwgU3RyaW5nIG5hbWUsIFN0cmluZyBr
ZW5udW5nLCBCaWdEZWM9CmltYWwgbGFlbmdlLCBCaWdEZWNpbWFsIGVpbnp1Z3NnZWJpZXQsIFN0
cmluZyBiZW1lcmt1bmcsIFNldDxCZXp1Z3NwZWdlbD4gYj0KZXp1Z3NwZWdlbHMsIFNldDxTdGF0
aW9uPiBzdGF0aW9ucykgewotICAgICAgIHRoaXMuZ2V3YWVzc2VyaWQgPTNEIGdld2Flc3Nlcmlk
OwotICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKLSAgICAgICB0aGlzLmtlbm51bmcgPTNEIGtl
bm51bmc7Ci0gICAgICAgdGhpcy5sYWVuZ2UgPTNEIGxhZW5nZTsKLSAgICAgICB0aGlzLmVpbnp1
Z3NnZWJpZXQgPTNEIGVpbnp1Z3NnZWJpZXQ7Ci0gICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJl
bWVya3VuZzsKLSAgICAgICB0aGlzLmJlenVnc3BlZ2VscyA9M0QgYmV6dWdzcGVnZWxzOwotICAg
ICAgIHRoaXMuc3RhdGlvbnMgPTNEIHN0YXRpb25zOwotICAgIH0KLQotICAgICBASWQKLQotCi0g
ICAgQENvbHVtbihuYW1lPTNEIkdFV0FFU1NFUklEIiwgdW5pcXVlPTNEdHJ1ZSwgbnVsbGFibGU9
M0RmYWxzZSwgcHJlY2lzaT0Kb249M0QxMSwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBsb25nIGdl
dEdld2Flc3NlcmlkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5nZXdhZXNzZXJpZDsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRHZXdhZXNzZXJpZChsb25nIGdld2Flc3NlcmlkKSB7Ci0g
ICAgICAgIHRoaXMuZ2V3YWVzc2VyaWQgPTNEIGdld2Flc3NlcmlkOwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIk5BTUUiLCB1bmlxdWU9M0R0cnVlLCBudWxsYWJsZT0zRGZhbHNlLCBs
ZW5ndGg9M0QyMCkKLSAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLm5hbWU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFt
ZSkgewotICAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiS0VOTlVORyIsIGxlbmd0aD0zRDExKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0S2Vu
bnVuZygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMua2VubnVuZzsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRLZW5udW5nKFN0cmluZyBrZW5udW5nKSB7Ci0gICAgICAgIHRoaXMua2VubnVu
ZyA9M0Qga2VubnVuZzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJMQUVOR0UiLCBw
cmVjaXNpb249M0Q3LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TGFlbmdl
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5sYWVuZ2U7Ci0gICAgfQotCi0gICAgcHVibGljIHZv
aWQgc2V0TGFlbmdlKEJpZ0RlY2ltYWwgbGFlbmdlKSB7Ci0gICAgICAgIHRoaXMubGFlbmdlID0z
RCBsYWVuZ2U7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRUlOWlVHU0dFQklFVCIs
IHByZWNpc2lvbj0zRDEwKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEVpbnp1Z3NnZWJpZXQo
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmVpbnp1Z3NnZWJpZXQ7Ci0gICAgfQotCi0gICAgcHVi
bGljIHZvaWQgc2V0RWluenVnc2dlYmlldChCaWdEZWNpbWFsIGVpbnp1Z3NnZWJpZXQpIHsKLSAg
ICAgICAgdGhpcy5laW56dWdzZ2ViaWV0ID0zRCBlaW56dWdzZ2ViaWV0OwotICAgIH0KLQotCi0g
ICAgQENvbHVtbihuYW1lPTNEIkJFTUVSS1VORyIsIGxlbmd0aD0zRDI0MCkKLSAgICBwdWJsaWMg
U3RyaW5nIGdldEJlbWVya3VuZygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYmVtZXJrdW5nOwot
ICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEJlbWVya3VuZyhTdHJpbmcgYmVtZXJrdW5nKSB7
Ci0gICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7Ci0gICAgfQotCi1AT25lVG9N
YW55KGZldGNoPTNERmV0Y2hUeXBlLkxBWlksIG1hcHBlZEJ5PTNEImdld2Flc3NlciIpCi0gICAg
cHVibGljIFNldDxCZXp1Z3NwZWdlbD4gZ2V0QmV6dWdzcGVnZWxzKCkgewotICAgICAgICByZXR1
cm4gdGhpcy5iZXp1Z3NwZWdlbHM7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QmV6dWdz
cGVnZWxzKFNldDxCZXp1Z3NwZWdlbD4gYmV6dWdzcGVnZWxzKSB7Ci0gICAgICAgIHRoaXMuYmV6
dWdzcGVnZWxzID0zRCBiZXp1Z3NwZWdlbHM7Ci0gICAgfQotCi1AT25lVG9NYW55KGZldGNoPTNE
RmV0Y2hUeXBlLkxBWlksIG1hcHBlZEJ5PTNEImdld2Flc3NlciIpCi0gICAgcHVibGljIFNldDxT
dGF0aW9uPiBnZXRTdGF0aW9ucygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGlvbnM7Ci0g
ICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U3RhdGlvbnMoU2V0PFN0YXRpb24+IHN0YXRpb25z
KSB7Ci0gICAgICAgIHRoaXMuc3RhdGlvbnMgPTNEIHN0YXRpb25zOwotICAgIH0KLQotCi0KLQot
fQotCi0KZGlmZiAtciBiYzRlMWJmMjYyMjcgLXIgMWU2OGVjYTI2YjhhIGJhY2tlbmQvc3JjL21h
aW4vamF2YS9kZS9pbnRldmF0aW9uL3NlPQpkZGIvbW9kZWwvR2ZhZW5nZXIuamF2YQotLS0gYS9i
YWNrZW5kL3NyYy9tYWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZWRkYi9tb2RlbC9HZmFlbmdlci5q
YXZhCU1vbiBBcHI9CiAyOSAxMToxNDoyNSAyMDEzICswMjAwCisrKyAvZGV2L251bGwJVGh1IEph
biAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDEzMyArMCwwIEBACi0vKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRz
c2Vyaz0KdW5kZQotICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0g
KgotICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNE
djMpPTIwCi0gKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBv
dXQgdGhlCi0gKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIg
Zm9yIGRldGFpbHMuPTIwCi0gKi8KLQotcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5zZWRkYi5t
b2RlbDsKLS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29s
cyAzLjQuMC5DUjEKLQotCi1pbXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7Ci1pbXBvcnQgamF2
YS51dGlsLkhhc2hTZXQ7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLWltcG9ydCBqYXZheC5wZXJz
aXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OwotaW1wb3J0
IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5J
ZDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5PbmVUb01hbnk7Ci1pbXBvcnQgamF2YXgucGVy
c2lzdGVuY2UuVGFibGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVW5pcXVlQ29uc3RyYWlu
dDsKLQotLyoqCi0gKiBHZmFlbmdlciBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVudGl0
eQotQFRhYmxlKG5hbWU9M0QiR0ZBRU5HRVIiCi0gICAgLHNjaGVtYT0zRCJTRUREQiIKLSAgICAs
IHVuaXF1ZUNvbnN0cmFpbnRzID0zRCBAVW5pcXVlQ29uc3RyYWludChjb2x1bW5OYW1lcz0zRCJO
QU1FIikKLSkKLXB1YmxpYyBjbGFzcyBHZmFlbmdlciAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlh
bGl6YWJsZSB7Ci0KLQotICAgICBwcml2YXRlIGxvbmcgZ2ZhZW5nZXJpZDsKLSAgICAgcHJpdmF0
ZSBib29sZWFuIGlzdGFrdGl2OwotICAgICBwcml2YXRlIFN0cmluZyBuYW1lOwotICAgICBwcml2
YXRlIEJpZ0RlY2ltYWwgYnJlaXRlOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgbWFzY2hlbndl
aXRlOwotICAgICBwcml2YXRlIFN0cmluZyBiZW1lcmt1bmc7Ci0gICAgIHByaXZhdGUgU2V0PE1l
c3N1bmc+IG1lc3N1bmdzID0zRCBuZXcgSGFzaFNldDxNZXNzdW5nPigwKTsKLQotICAgIHB1Ymxp
YyBHZmFlbmdlcigpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgR2ZhZW5nZXIobG9uZyBnZmFlbmdl
cmlkLCBib29sZWFuIGlzdGFrdGl2LCBTdHJpbmcgbmFtZSwgQmlnRGVjPQppbWFsIGJyZWl0ZSwg
QmlnRGVjaW1hbCBtYXNjaGVud2VpdGUpIHsKLSAgICAgICAgdGhpcy5nZmFlbmdlcmlkID0zRCBn
ZmFlbmdlcmlkOwotICAgICAgICB0aGlzLmlzdGFrdGl2ID0zRCBpc3Rha3RpdjsKLSAgICAgICAg
dGhpcy5uYW1lID0zRCBuYW1lOwotICAgICAgICB0aGlzLmJyZWl0ZSA9M0QgYnJlaXRlOwotICAg
ICAgICB0aGlzLm1hc2NoZW53ZWl0ZSA9M0QgbWFzY2hlbndlaXRlOwotICAgIH0KLSAgICBwdWJs
aWMgR2ZhZW5nZXIobG9uZyBnZmFlbmdlcmlkLCBib29sZWFuIGlzdGFrdGl2LCBTdHJpbmcgbmFt
ZSwgQmlnRGVjPQppbWFsIGJyZWl0ZSwgQmlnRGVjaW1hbCBtYXNjaGVud2VpdGUsIFN0cmluZyBi
ZW1lcmt1bmcsIFNldDxNZXNzdW5nPiBtZXNzdW49CmdzKSB7Ci0gICAgICAgdGhpcy5nZmFlbmdl
cmlkID0zRCBnZmFlbmdlcmlkOwotICAgICAgIHRoaXMuaXN0YWt0aXYgPTNEIGlzdGFrdGl2Owot
ICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKLSAgICAgICB0aGlzLmJyZWl0ZSA9M0QgYnJlaXRl
OwotICAgICAgIHRoaXMubWFzY2hlbndlaXRlID0zRCBtYXNjaGVud2VpdGU7Ci0gICAgICAgdGhp
cy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICAgICB0aGlzLm1lc3N1bmdzID0zRCBtZXNz
dW5nczsKLSAgICB9Ci0KLSAgICAgQElkCi0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJHRkFFTkdF
UklEIiwgdW5pcXVlPTNEdHJ1ZSwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW89Cm49M0QxMSwg
c2NhbGU9M0QwKQotICAgIHB1YmxpYyBsb25nIGdldEdmYWVuZ2VyaWQoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLmdmYWVuZ2VyaWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0R2ZhZW5n
ZXJpZChsb25nIGdmYWVuZ2VyaWQpIHsKLSAgICAgICAgdGhpcy5nZmFlbmdlcmlkID0zRCBnZmFl
bmdlcmlkOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIklTVEFLVElWIiwgbnVsbGFi
bGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMSwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBib29sZWFu
IGlzSXN0YWt0aXYoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmlzdGFrdGl2OwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldElzdGFrdGl2KGJvb2xlYW4gaXN0YWt0aXYpIHsKLSAgICAgICAg
dGhpcy5pc3Rha3RpdiA9M0QgaXN0YWt0aXY7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiTkFNRSIsIHVuaXF1ZT0zRHRydWUsIG51bGxhYmxlPTNEZmFsc2UsIGxlbmd0aD0zRDMwKQot
ICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubmFtZTsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBuYW1lKSB7Ci0gICAgICAg
IHRoaXMubmFtZSA9M0QgbmFtZTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJCUkVJ
VEUiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q2LCBzY2FsZT0zRDMpCi0gICAgcHVi
bGljIEJpZ0RlY2ltYWwgZ2V0QnJlaXRlKCkgewotICAgICAgICByZXR1cm4gdGhpcy5icmVpdGU7
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QnJlaXRlKEJpZ0RlY2ltYWwgYnJlaXRlKSB7
Ci0gICAgICAgIHRoaXMuYnJlaXRlID0zRCBicmVpdGU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiTUFTQ0hFTldFSVRFIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNENywg
c2NhbGU9Cj0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlbndlaXRlKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGVud2VpdGU7Ci0gICAgfQotCi0gICAgcHVibGljIHZv
aWQgc2V0TWFzY2hlbndlaXRlKEJpZ0RlY2ltYWwgbWFzY2hlbndlaXRlKSB7Ci0gICAgICAgIHRo
aXMubWFzY2hlbndlaXRlID0zRCBtYXNjaGVud2VpdGU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiQkVNRVJLVU5HIiwgbGVuZ3RoPTNEMjQwKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0
QmVtZXJrdW5nKCkgewotICAgICAgICByZXR1cm4gdGhpcy5iZW1lcmt1bmc7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0QmVtZXJrdW5nKFN0cmluZyBiZW1lcmt1bmcpIHsKLSAgICAgICAg
dGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICB9Ci0KLUBPbmVUb01hbnkoZmV0Y2g9
M0RGZXRjaFR5cGUuTEFaWSwgbWFwcGVkQnk9M0QiZ2ZhZW5nZXIiKQotICAgIHB1YmxpYyBTZXQ8
TWVzc3VuZz4gZ2V0TWVzc3VuZ3MoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1lc3N1bmdzOwot
ICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1lc3N1bmdzKFNldDxNZXNzdW5nPiBtZXNzdW5n
cykgewotICAgICAgICB0aGlzLm1lc3N1bmdzID0zRCBtZXNzdW5nczsKLSAgICB9Ci19CmRpZmYg
LXIgYmM0ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9tYWluL2phdmEvZGUv
aW50ZXZhdGlvbi9zZT0KZGRiL21vZGVsL0dsb3RsaW5rcy5qYXZhCi0tLSBhL2JhY2tlbmQvc3Jj
L21haW4vamF2YS9kZS9pbnRldmF0aW9uL3NlZGRiL21vZGVsL0dsb3RsaW5rcy5qYXZhCU1vbiBB
cD0KciAyOSAxMToxNDoyNSAyMDEzICswMjAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDow
MDowMCAxOTcwICswMDAwCkBAIC0xLDgwICswLDAgQEAKLS8qIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRl
Ci0gKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgKLSAqCi0gKiBUaGlz
IGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49M0R2Myk9MjAKLSAq
IGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUKLSAq
IGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWls
cy49MjAKLSAqLwotCi1wYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnNlZGRiLm1vZGVsOwotLy8g
R2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNS
MQotCi0KLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5BdHRyaWJ1dGVPdmVycmlkZTsKLWltcG9y
dCBqYXZheC5wZXJzaXN0ZW5jZS5BdHRyaWJ1dGVPdmVycmlkZXM7Ci1pbXBvcnQgamF2YXgucGVy
c2lzdGVuY2UuQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVtYmVkZGVkSWQ7Ci1p
bXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNl
LlRhYmxlOwotCi0vKioKLSAqIEdsb3RsaW5rcyBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAqLwot
QEVudGl0eQotQFRhYmxlKG5hbWU9M0QiR0xPVExJTktTIgotICAgICxzY2hlbWE9M0QiU0VEREIi
Ci0pCi1wdWJsaWMgY2xhc3MgR2xvdGxpbmtzICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXph
YmxlIHsKLQotCi0gICAgIHByaXZhdGUgR2xvdGxpbmtzSWQgaWQ7Ci0KLSAgICBwdWJsaWMgR2xv
dGxpbmtzKCkgewotICAgIH0KLQotICAgIHB1YmxpYyBHbG90bGlua3MoR2xvdGxpbmtzSWQgaWQp
IHsKLSAgICAgICB0aGlzLmlkID0zRCBpZDsKLSAgICB9Ci0KLSAgICAgQEVtYmVkZGVkSWQKLQot
Ci0gICAgQEF0dHJpYnV0ZU92ZXJyaWRlcyggewotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUo
bmFtZT0zRCJnbG90cmVjaHRlaWQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0Q9CiJHTE9UUkVD
SFRFSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QwKSApLAot
ICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtZXNzdW5naWQiLCBjb2x1bW49M0RA
Q29sdW1uKG5hbWU9M0QiTUU9ClNTVU5HSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249
M0QxMSwgc2NhbGU9M0QwKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ1
ZmVyYWJzdCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJVRkU9ClJBQlNUIiwgbnVsbGFibGU9
M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRl
T3ZlcnJpZGUobmFtZT0zRCJ0Z2VzY2hpZWJlIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlQ9
CkdFU0NISUVCRSIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJp
YnV0ZU92ZXJyaWRlKG5hbWU9M0QiZG0iLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiRE0iLCBw
cmVjPQppc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRl
KG5hbWU9M0Qic2siLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiU0siLCBwcmVjPQppc2lvbj0z
RDgsIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qic28i
LCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiU08iLCBwcmVjPQppc2lvbj0zRDgsIHNjYWxlPTNE
MykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QidSIsIGNvbHVtbj0zREBD
b2x1bW4obmFtZT0zRCJVIiwgcHJlY2lzPQppb249M0Q4LCBzY2FsZT0zRDMpICksCi0gICAgICAg
IEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImQ5MCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0z
RCJEOTAiLCBwcj0KZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0
ZU92ZXJyaWRlKG5hbWU9M0QiZDg0IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkQ4NCIsIHBy
PQplY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUo
bmFtZT0zRCJkODAiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiRDgwIiwgcHI9CmVjaXNpb249
M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImQ3
NSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJENzUiLCBwcj0KZWNpc2lvbj0zRDcsIHNjYWxl
PTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZDcwIiwgY29sdW1u
PTNEQENvbHVtbihuYW1lPTNEIkQ3MCIsIHByPQplY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAot
ICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkNjAiLCBjb2x1bW49M0RAQ29sdW1u
KG5hbWU9M0QiRDYwIiwgcHI9CmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBB
dHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImQ1MCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJE
NTAiLCBwcj0KZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92
ZXJyaWRlKG5hbWU9M0QiZDQwIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkQ0MCIsIHByPQpl
Y2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFt
ZT0zRCJkMzAiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiRDMwIiwgcHI9CmVjaXNpb249M0Q3
LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImQyNSIs
IGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJEMjUiLCBwcj0KZWNpc2lvbj0zRDcsIHNjYWxlPTNE
NCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZDIwIiwgY29sdW1uPTNE
QENvbHVtbihuYW1lPTNEIkQyMCIsIHByPQplY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAg
ICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkMTYiLCBjb2x1bW49M0RAQ29sdW1uKG5h
bWU9M0QiRDE2IiwgcHI9CmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRy
aWJ1dGVPdmVycmlkZShuYW1lPTNEImQxMCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJEMTAi
LCBwcj0KZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJy
aWRlKG5hbWU9M0QiZG1pbiIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJETUlOIiwgPQpwcmVj
aXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1l
PTNEImR1cmNoZG1pbiIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJEVT0KUkNIRE1JTiIsIHBy
ZWNpc2lvbj0zRDYsIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5h
bWU9M0QiZG1heCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJETUFYIiwgPQpwcmVjaXNpb249
M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImR1
cmNoZG1heCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJEVT0KUkNIRE1BWCIsIHByZWNpc2lv
bj0zRDYsIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qi
c3RkYWJ3IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlNUREFCPQpXIiwgcHJlY2lzaW9uPTNE
OCwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJzdGRm
ZWhsZXIiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiU1Q9CkRGRUhMRVIiLCBwcmVjaXNpb249
M0Q4LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImJl
bWVya3VuZyIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJCRT0KTUVSS1VORyIsIGxlbmd0aD0z
RDI0MCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QidWZlcmFibGlua3Mi
LCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiPQpVRkVSQUJMSU5LUyIsIHByZWNpc2lvbj0zRDgs
IHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibGlua3Nh
YnN0IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkxJPQpOS1NBQlNUIiwgcHJlY2lzaW9uPTNE
MjIsIHNjYWxlPTNEMCkgKSB9ICkKLSAgICBwdWJsaWMgR2xvdGxpbmtzSWQgZ2V0SWQoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLmlkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldElkKEds
b3RsaW5rc0lkIGlkKSB7Ci0gICAgICAgIHRoaXMuaWQgPTNEIGlkOwotICAgIH0KLX0KZGlmZiAt
ciBiYzRlMWJmMjYyMjcgLXIgMWU2OGVjYTI2YjhhIGJhY2tlbmQvc3JjL21haW4vamF2YS9kZS9p
bnRldmF0aW9uL3NlPQpkZGIvbW9kZWwvR2xvdGxpbmtzSWQuamF2YQotLS0gYS9iYWNrZW5kL3Ny
Yy9tYWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZWRkYi9tb2RlbC9HbG90bGlua3NJZC5qYXZhCU1v
biA9CkFwciAyOSAxMToxNDoyNSAyMDEzICswMjAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAw
MDowMDowMCAxOTcwICswMDAwCkBAIC0xLDQ3MiArMCwwIEBACi0vKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0K
dW5kZQotICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0gKgotICog
VGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMpPTIw
Ci0gKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQgdGhl
Ci0gKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9yIGRl
dGFpbHMuPTIwCi0gKi8KLQotcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5zZWRkYi5tb2RlbDsK
LS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQu
MC5DUjEKLQotCi1pbXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7Ci1pbXBvcnQgamF2YXgucGVy
c2lzdGVuY2UuQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVtYmVkZGFibGU7Ci0K
LS8qKgotICogR2xvdGxpbmtzSWQgZ2VuZXJhdGVkIGJ5IGhibTJqYXZhCi0gKi8KLUBFbWJlZGRh
YmxlCi1wdWJsaWMgY2xhc3MgR2xvdGxpbmtzSWQgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxp
emFibGUgewotCi0KLSAgICAgcHJpdmF0ZSBsb25nIGdsb3RyZWNodGVpZDsKLSAgICAgcHJpdmF0
ZSBsb25nIG1lc3N1bmdpZDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHVmZXJhYnN0OwotICAg
ICBwcml2YXRlIEJpZ0RlY2ltYWwgdGdlc2NoaWViZTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IGRtOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgc2s7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1h
bCBzbzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHU7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1h
bCBkOTA7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkODQ7Ci0gICAgIHByaXZhdGUgQmlnRGVj
aW1hbCBkODA7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkNzU7Ci0gICAgIHByaXZhdGUgQmln
RGVjaW1hbCBkNzA7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkNjA7Ci0gICAgIHByaXZhdGUg
QmlnRGVjaW1hbCBkNTA7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkNDA7Ci0gICAgIHByaXZh
dGUgQmlnRGVjaW1hbCBkMzA7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkMjU7Ci0gICAgIHBy
aXZhdGUgQmlnRGVjaW1hbCBkMjA7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkMTY7Ci0gICAg
IHByaXZhdGUgQmlnRGVjaW1hbCBkMTA7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkbWluOwot
ICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZHVyY2hkbWluOwotICAgICBwcml2YXRlIEJpZ0RlY2lt
YWwgZG1heDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGR1cmNoZG1heDsKLSAgICAgcHJpdmF0
ZSBCaWdEZWNpbWFsIHN0ZGFidzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHN0ZGZlaGxlcjsK
LSAgICAgcHJpdmF0ZSBTdHJpbmcgYmVtZXJrdW5nOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
dWZlcmFibGlua3M7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBsaW5rc2Fic3Q7Ci0KLSAgICBw
dWJsaWMgR2xvdGxpbmtzSWQoKSB7Ci0gICAgfQotCi0KLSAgICBwdWJsaWMgR2xvdGxpbmtzSWQo
bG9uZyBnbG90cmVjaHRlaWQsIGxvbmcgbWVzc3VuZ2lkLCBCaWdEZWNpbWFsIHVmZXJhPQpic3Qp
IHsKLSAgICAgICAgdGhpcy5nbG90cmVjaHRlaWQgPTNEIGdsb3RyZWNodGVpZDsKLSAgICAgICAg
dGhpcy5tZXNzdW5naWQgPTNEIG1lc3N1bmdpZDsKLSAgICAgICAgdGhpcy51ZmVyYWJzdCA9M0Qg
dWZlcmFic3Q7Ci0gICAgfQotICAgIHB1YmxpYyBHbG90bGlua3NJZChsb25nIGdsb3RyZWNodGVp
ZCwgbG9uZyBtZXNzdW5naWQsIEJpZ0RlY2ltYWwgdWZlcmE9CmJzdCwgQmlnRGVjaW1hbCB0Z2Vz
Y2hpZWJlLCBCaWdEZWNpbWFsIGRtLCBCaWdEZWNpbWFsIHNrLCBCaWdEZWNpbWFsIHNvLCBCaT0K
Z0RlY2ltYWwgdSwgQmlnRGVjaW1hbCBkOTAsIEJpZ0RlY2ltYWwgZDg0LCBCaWdEZWNpbWFsIGQ4
MCwgQmlnRGVjaW1hbCBkNzUsPQogQmlnRGVjaW1hbCBkNzAsIEJpZ0RlY2ltYWwgZDYwLCBCaWdE
ZWNpbWFsIGQ1MCwgQmlnRGVjaW1hbCBkNDAsIEJpZ0RlY2ltYWw9CiBkMzAsIEJpZ0RlY2ltYWwg
ZDI1LCBCaWdEZWNpbWFsIGQyMCwgQmlnRGVjaW1hbCBkMTYsIEJpZ0RlY2ltYWwgZDEwLCBCaWdE
ZT0KY2ltYWwgZG1pbiwgQmlnRGVjaW1hbCBkdXJjaGRtaW4sIEJpZ0RlY2ltYWwgZG1heCwgQmln
RGVjaW1hbCBkdXJjaGRtYXgsIEJpPQpnRGVjaW1hbCBzdGRhYncsIEJpZ0RlY2ltYWwgc3RkZmVo
bGVyLCBTdHJpbmcgYmVtZXJrdW5nLCBCaWdEZWNpbWFsIHVmZXJhYmw9Cmlua3MsIEJpZ0RlY2lt
YWwgbGlua3NhYnN0KSB7Ci0gICAgICAgdGhpcy5nbG90cmVjaHRlaWQgPTNEIGdsb3RyZWNodGVp
ZDsKLSAgICAgICB0aGlzLm1lc3N1bmdpZCA9M0QgbWVzc3VuZ2lkOwotICAgICAgIHRoaXMudWZl
cmFic3QgPTNEIHVmZXJhYnN0OwotICAgICAgIHRoaXMudGdlc2NoaWViZSA9M0QgdGdlc2NoaWVi
ZTsKLSAgICAgICB0aGlzLmRtID0zRCBkbTsKLSAgICAgICB0aGlzLnNrID0zRCBzazsKLSAgICAg
ICB0aGlzLnNvID0zRCBzbzsKLSAgICAgICB0aGlzLnUgPTNEIHU7Ci0gICAgICAgdGhpcy5kOTAg
PTNEIGQ5MDsKLSAgICAgICB0aGlzLmQ4NCA9M0QgZDg0OwotICAgICAgIHRoaXMuZDgwID0zRCBk
ODA7Ci0gICAgICAgdGhpcy5kNzUgPTNEIGQ3NTsKLSAgICAgICB0aGlzLmQ3MCA9M0QgZDcwOwot
ICAgICAgIHRoaXMuZDYwID0zRCBkNjA7Ci0gICAgICAgdGhpcy5kNTAgPTNEIGQ1MDsKLSAgICAg
ICB0aGlzLmQ0MCA9M0QgZDQwOwotICAgICAgIHRoaXMuZDMwID0zRCBkMzA7Ci0gICAgICAgdGhp
cy5kMjUgPTNEIGQyNTsKLSAgICAgICB0aGlzLmQyMCA9M0QgZDIwOwotICAgICAgIHRoaXMuZDE2
ID0zRCBkMTY7Ci0gICAgICAgdGhpcy5kMTAgPTNEIGQxMDsKLSAgICAgICB0aGlzLmRtaW4gPTNE
IGRtaW47Ci0gICAgICAgdGhpcy5kdXJjaGRtaW4gPTNEIGR1cmNoZG1pbjsKLSAgICAgICB0aGlz
LmRtYXggPTNEIGRtYXg7Ci0gICAgICAgdGhpcy5kdXJjaGRtYXggPTNEIGR1cmNoZG1heDsKLSAg
ICAgICB0aGlzLnN0ZGFidyA9M0Qgc3RkYWJ3OwotICAgICAgIHRoaXMuc3RkZmVobGVyID0zRCBz
dGRmZWhsZXI7Ci0gICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICAgICB0
aGlzLnVmZXJhYmxpbmtzID0zRCB1ZmVyYWJsaW5rczsKLSAgICAgICB0aGlzLmxpbmtzYWJzdCA9
M0QgbGlua3NhYnN0OwotICAgIH0KLQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiR0xPVFJFQ0hU
RUlEIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPQo9M0QwKQotICAg
IHB1YmxpYyBsb25nIGdldEdsb3RyZWNodGVpZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ2xv
dHJlY2h0ZWlkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEdsb3RyZWNodGVpZChsb25n
IGdsb3RyZWNodGVpZCkgewotICAgICAgICB0aGlzLmdsb3RyZWNodGVpZCA9M0QgZ2xvdHJlY2h0
ZWlkOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1FU1NVTkdJRCIsIG51bGxhYmxl
PTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRD0KMCkKLSAgICBwdWJsaWMgbG9uZyBn
ZXRNZXNzdW5naWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1lc3N1bmdpZDsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRNZXNzdW5naWQobG9uZyBtZXNzdW5naWQpIHsKLSAgICAgICAg
dGhpcy5tZXNzdW5naWQgPTNEIG1lc3N1bmdpZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFt
ZT0zRCJVRkVSQUJTVCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNE
MykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRVZmVyYWJzdCgpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMudWZlcmFic3Q7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VWZlcmFic3QoQmln
RGVjaW1hbCB1ZmVyYWJzdCkgewotICAgICAgICB0aGlzLnVmZXJhYnN0ID0zRCB1ZmVyYWJzdDsK
LSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJUR0VTQ0hJRUJFIiwgcHJlY2lzaW9uPTNE
OCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFRnZXNjaGllYmUoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLnRnZXNjaGllYmU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0VGdlc2NoaWViZShCaWdEZWNpbWFsIHRnZXNjaGllYmUpIHsKLSAgICAgICAgdGhpcy50Z2Vz
Y2hpZWJlID0zRCB0Z2VzY2hpZWJlOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkRN
IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldERt
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5kbTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXREbShCaWdEZWNpbWFsIGRtKSB7Ci0gICAgICAgIHRoaXMuZG0gPTNEIGRtOwotICAgIH0KLQot
Ci0gICAgQENvbHVtbihuYW1lPTNEIlNLIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldFNrKCkgewotICAgICAgICByZXR1cm4gdGhpcy5zazsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTayhCaWdEZWNpbWFsIHNrKSB7Ci0gICAgICAgIHRo
aXMuc2sgPTNEIHNrOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNPIiwgcHJlY2lz
aW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFNvKCkgewotICAg
ICAgICByZXR1cm4gdGhpcy5zbzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTbyhCaWdE
ZWNpbWFsIHNvKSB7Ci0gICAgICAgIHRoaXMuc28gPTNEIHNvOwotICAgIH0KLQotCi0gICAgQENv
bHVtbihuYW1lPTNEIlUiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0VSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudTsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRVKEJpZ0RlY2ltYWwgdSkgewotICAgICAgICB0aGlzLnUgPTNEIHU7Ci0g
ICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDkwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9
M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQ5MCgpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuZDkwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQ5MChCaWdEZWNpbWFsIGQ5MCkg
ewotICAgICAgICB0aGlzLmQ5MCA9M0QgZDkwOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIkQ4NCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1h
bCBnZXREODQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQ4NDsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXREODQoQmlnRGVjaW1hbCBkODQpIHsKLSAgICAgICAgdGhpcy5kODQgPTNEIGQ4
NDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJEODAiLCBwcmVjaXNpb249M0Q3LCBz
Y2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDgwKCkgewotICAgICAgICByZXR1
cm4gdGhpcy5kODA7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RDgwKEJpZ0RlY2ltYWwg
ZDgwKSB7Ci0gICAgICAgIHRoaXMuZDgwID0zRCBkODA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiRDc1IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdE
ZWNpbWFsIGdldEQ3NSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDc1OwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldEQ3NShCaWdEZWNpbWFsIGQ3NSkgewotICAgICAgICB0aGlzLmQ3NSA9
M0QgZDc1OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQ3MCIsIHByZWNpc2lvbj0z
RDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRENzAoKSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLmQ3MDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRENzAoQmlnRGVj
aW1hbCBkNzApIHsKLSAgICAgICAgdGhpcy5kNzAgPTNEIGQ3MDsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJENjAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGlj
IEJpZ0RlY2ltYWwgZ2V0RDYwKCkgewotICAgICAgICByZXR1cm4gdGhpcy5kNjA7Ci0gICAgfQot
Ci0gICAgcHVibGljIHZvaWQgc2V0RDYwKEJpZ0RlY2ltYWwgZDYwKSB7Ci0gICAgICAgIHRoaXMu
ZDYwID0zRCBkNjA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDUwIiwgcHJlY2lz
aW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQ1MCgpIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuZDUwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQ1MChC
aWdEZWNpbWFsIGQ1MCkgewotICAgICAgICB0aGlzLmQ1MCA9M0QgZDUwOwotICAgIH0KLQotCi0g
ICAgQENvbHVtbihuYW1lPTNEIkQ0MCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBw
dWJsaWMgQmlnRGVjaW1hbCBnZXRENDAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQ0MDsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRENDAoQmlnRGVjaW1hbCBkNDApIHsKLSAgICAgICAg
dGhpcy5kNDAgPTNEIGQ0MDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJEMzAiLCBw
cmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDMwKCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5kMzA7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0
RDMwKEJpZ0RlY2ltYWwgZDMwKSB7Ci0gICAgICAgIHRoaXMuZDMwID0zRCBkMzA7Ci0gICAgfQot
Ci0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDI1IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQot
ICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQyNSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDI1
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQyNShCaWdEZWNpbWFsIGQyNSkgewotICAg
ICAgICB0aGlzLmQyNSA9M0QgZDI1OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQy
MCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRE
MjAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQyMDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXREMjAoQmlnRGVjaW1hbCBkMjApIHsKLSAgICAgICAgdGhpcy5kMjAgPTNEIGQyMDsKLSAg
ICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJEMTYiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0z
RDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDE2KCkgewotICAgICAgICByZXR1cm4gdGhp
cy5kMTY7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RDE2KEJpZ0RlY2ltYWwgZDE2KSB7
Ci0gICAgICAgIHRoaXMuZDE2ID0zRCBkMTY7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiRDEwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFs
IGdldEQxMCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDEwOwotICAgIH0KLQotICAgIHB1Ymxp
YyB2b2lkIHNldEQxMChCaWdEZWNpbWFsIGQxMCkgewotICAgICAgICB0aGlzLmQxMCA9M0QgZDEw
OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkRNSU4iLCBwcmVjaXNpb249M0Q3LCBz
Y2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RG1pbigpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuZG1pbjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREbWluKEJpZ0RlY2lt
YWwgZG1pbikgewotICAgICAgICB0aGlzLmRtaW4gPTNEIGRtaW47Ci0gICAgfQotCi0KLSAgICBA
Q29sdW1uKG5hbWU9M0QiRFVSQ0hETUlOIiwgcHJlY2lzaW9uPTNENiwgc2NhbGU9M0QzKQotICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldER1cmNoZG1pbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
ZHVyY2hkbWluOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldER1cmNoZG1pbihCaWdEZWNp
bWFsIGR1cmNoZG1pbikgewotICAgICAgICB0aGlzLmR1cmNoZG1pbiA9M0QgZHVyY2hkbWluOwot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkRNQVgiLCBwcmVjaXNpb249M0Q3LCBzY2Fs
ZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RG1heCgpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuZG1heDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREbWF4KEJpZ0RlY2ltYWwg
ZG1heCkgewotICAgICAgICB0aGlzLmRtYXggPTNEIGRtYXg7Ci0gICAgfQotCi0KLSAgICBAQ29s
dW1uKG5hbWU9M0QiRFVSQ0hETUFYIiwgcHJlY2lzaW9uPTNENiwgc2NhbGU9M0QzKQotICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldER1cmNoZG1heCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZHVy
Y2hkbWF4OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldER1cmNoZG1heChCaWdEZWNpbWFs
IGR1cmNoZG1heCkgewotICAgICAgICB0aGlzLmR1cmNoZG1heCA9M0QgZHVyY2hkbWF4OwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNUREFCVyIsIHByZWNpc2lvbj0zRDgsIHNjYWxl
PTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRTdGRhYncoKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLnN0ZGFidzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTdGRhYncoQmlnRGVj
aW1hbCBzdGRhYncpIHsKLSAgICAgICAgdGhpcy5zdGRhYncgPTNEIHN0ZGFidzsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJTVERGRUhMRVIiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0z
RDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0U3RkZmVobGVyKCkgewotICAgICAgICByZXR1
cm4gdGhpcy5zdGRmZWhsZXI7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U3RkZmVobGVy
KEJpZ0RlY2ltYWwgc3RkZmVobGVyKSB7Ci0gICAgICAgIHRoaXMuc3RkZmVobGVyID0zRCBzdGRm
ZWhsZXI7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQkVNRVJLVU5HIiwgbGVuZ3Ro
PTNEMjQwKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0QmVtZXJrdW5nKCkgewotICAgICAgICByZXR1
cm4gdGhpcy5iZW1lcmt1bmc7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QmVtZXJrdW5n
KFN0cmluZyBiZW1lcmt1bmcpIHsKLSAgICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3Vu
ZzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJVRkVSQUJMSU5LUyIsIHByZWNpc2lv
bj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRVZmVyYWJsaW5rcygp
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMudWZlcmFibGlua3M7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0VWZlcmFibGlua3MoQmlnRGVjaW1hbCB1ZmVyYWJsaW5rcykgewotICAgICAgICB0
aGlzLnVmZXJhYmxpbmtzID0zRCB1ZmVyYWJsaW5rczsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4o
bmFtZT0zRCJMSU5LU0FCU1QiLCBwcmVjaXNpb249M0QyMiwgc2NhbGU9M0QwKQotICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldExpbmtzYWJzdCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubGlua3Nh
YnN0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldExpbmtzYWJzdChCaWdEZWNpbWFsIGxp
bmtzYWJzdCkgewotICAgICAgICB0aGlzLmxpbmtzYWJzdCA9M0QgbGlua3NhYnN0OwotICAgIH0K
LQotCi0gICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG90aGVyKSB7Ci0gICAgICAgICBp
ZiAoICh0aGlzID0zRD0zRCBvdGhlciApICkgcmV0dXJuIHRydWU7Ci0gICAgICAgICBpZiAoIChv
dGhlciA9M0Q9M0QgbnVsbCApICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgaWYgKCAhKG90aGVy
IGluc3RhbmNlb2YgR2xvdGxpbmtzSWQpICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgR2xvdGxp
bmtzSWQgY2FzdE90aGVyID0zRCAoIEdsb3RsaW5rc0lkICkgb3RoZXI7Ci0KLSAgICAgICAgIHJl
dHVybiAodGhpcy5nZXRHbG90cmVjaHRlaWQoKT0zRD0zRGNhc3RPdGhlci5nZXRHbG90cmVjaHRl
aWQoKSkKLSAmJiAodGhpcy5nZXRNZXNzdW5naWQoKT0zRD0zRGNhc3RPdGhlci5nZXRNZXNzdW5n
aWQoKSkKLSAmJiAoICh0aGlzLmdldFVmZXJhYnN0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0VWZlcmFi
c3QoKSkgfHwgKCB0aGlzLmdldFVmZXJhPQpic3QoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRV
ZmVyYWJzdCgpIT0zRG51bGwgJiYgdGhpcy5nZXRVZmVyYWJzdCgpLmVxdWE9CmxzKGNhc3RPdGhl
ci5nZXRVZmVyYWJzdCgpKSApICkKLSAmJiAoICh0aGlzLmdldFRnZXNjaGllYmUoKT0zRD0zRGNh
c3RPdGhlci5nZXRUZ2VzY2hpZWJlKCkpIHx8ICggdGhpcy5nZXRUPQpnZXNjaGllYmUoKSE9M0Ru
dWxsICYmIGNhc3RPdGhlci5nZXRUZ2VzY2hpZWJlKCkhPTNEbnVsbCAmJiB0aGlzLmdldFRnZXNj
aGk9CmViZSgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0VGdlc2NoaWViZSgpKSApICkKLSAmJiAoICh0
aGlzLmdldERtKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RG0oKSkgfHwgKCB0aGlzLmdldERtKCkhPTNE
bnVsbCAmJiBjPQphc3RPdGhlci5nZXREbSgpIT0zRG51bGwgJiYgdGhpcy5nZXREbSgpLmVxdWFs
cyhjYXN0T3RoZXIuZ2V0RG0oKSkgKSApCi0gJiYgKCAodGhpcy5nZXRTaygpPTNEPTNEY2FzdE90
aGVyLmdldFNrKCkpIHx8ICggdGhpcy5nZXRTaygpIT0zRG51bGwgJiYgYz0KYXN0T3RoZXIuZ2V0
U2soKSE9M0RudWxsICYmIHRoaXMuZ2V0U2soKS5lcXVhbHMoY2FzdE90aGVyLmdldFNrKCkpICkg
KQotICYmICggKHRoaXMuZ2V0U28oKT0zRD0zRGNhc3RPdGhlci5nZXRTbygpKSB8fCAoIHRoaXMu
Z2V0U28oKSE9M0RudWxsICYmIGM9CmFzdE90aGVyLmdldFNvKCkhPTNEbnVsbCAmJiB0aGlzLmdl
dFNvKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRTbygpKSApICkKLSAmJiAoICh0aGlzLmdldFUoKT0z
RD0zRGNhc3RPdGhlci5nZXRVKCkpIHx8ICggdGhpcy5nZXRVKCkhPTNEbnVsbCAmJiBjYXN0PQpP
dGhlci5nZXRVKCkhPTNEbnVsbCAmJiB0aGlzLmdldFUoKS5lcXVhbHMoY2FzdE90aGVyLmdldFUo
KSkgKSApCi0gJiYgKCAodGhpcy5nZXREOTAoKT0zRD0zRGNhc3RPdGhlci5nZXREOTAoKSkgfHwg
KCB0aGlzLmdldEQ5MCgpIT0zRG51bGwgJj0KJiBjYXN0T3RoZXIuZ2V0RDkwKCkhPTNEbnVsbCAm
JiB0aGlzLmdldEQ5MCgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0RDkwKCkpICkgKQotICYmICggKHRo
aXMuZ2V0RDg0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RDg0KCkpIHx8ICggdGhpcy5nZXREODQoKSE9
M0RudWxsICY9CiYgY2FzdE90aGVyLmdldEQ4NCgpIT0zRG51bGwgJiYgdGhpcy5nZXREODQoKS5l
cXVhbHMoY2FzdE90aGVyLmdldEQ4NCgpKSApICkKLSAmJiAoICh0aGlzLmdldEQ4MCgpPTNEPTNE
Y2FzdE90aGVyLmdldEQ4MCgpKSB8fCAoIHRoaXMuZ2V0RDgwKCkhPTNEbnVsbCAmPQomIGNhc3RP
dGhlci5nZXREODAoKSE9M0RudWxsICYmIHRoaXMuZ2V0RDgwKCkuZXF1YWxzKGNhc3RPdGhlci5n
ZXREODAoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRENzUoKT0zRD0zRGNhc3RPdGhlci5nZXRENzUo
KSkgfHwgKCB0aGlzLmdldEQ3NSgpIT0zRG51bGwgJj0KJiBjYXN0T3RoZXIuZ2V0RDc1KCkhPTNE
bnVsbCAmJiB0aGlzLmdldEQ3NSgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0RDc1KCkpICkgKQotICYm
ICggKHRoaXMuZ2V0RDcwKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RDcwKCkpIHx8ICggdGhpcy5nZXRE
NzAoKSE9M0RudWxsICY9CiYgY2FzdE90aGVyLmdldEQ3MCgpIT0zRG51bGwgJiYgdGhpcy5nZXRE
NzAoKS5lcXVhbHMoY2FzdE90aGVyLmdldEQ3MCgpKSApICkKLSAmJiAoICh0aGlzLmdldEQ2MCgp
PTNEPTNEY2FzdE90aGVyLmdldEQ2MCgpKSB8fCAoIHRoaXMuZ2V0RDYwKCkhPTNEbnVsbCAmPQom
IGNhc3RPdGhlci5nZXRENjAoKSE9M0RudWxsICYmIHRoaXMuZ2V0RDYwKCkuZXF1YWxzKGNhc3RP
dGhlci5nZXRENjAoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRENTAoKT0zRD0zRGNhc3RPdGhlci5n
ZXRENTAoKSkgfHwgKCB0aGlzLmdldEQ1MCgpIT0zRG51bGwgJj0KJiBjYXN0T3RoZXIuZ2V0RDUw
KCkhPTNEbnVsbCAmJiB0aGlzLmdldEQ1MCgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0RDUwKCkpICkg
KQotICYmICggKHRoaXMuZ2V0RDQwKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RDQwKCkpIHx8ICggdGhp
cy5nZXRENDAoKSE9M0RudWxsICY9CiYgY2FzdE90aGVyLmdldEQ0MCgpIT0zRG51bGwgJiYgdGhp
cy5nZXRENDAoKS5lcXVhbHMoY2FzdE90aGVyLmdldEQ0MCgpKSApICkKLSAmJiAoICh0aGlzLmdl
dEQzMCgpPTNEPTNEY2FzdE90aGVyLmdldEQzMCgpKSB8fCAoIHRoaXMuZ2V0RDMwKCkhPTNEbnVs
bCAmPQomIGNhc3RPdGhlci5nZXREMzAoKSE9M0RudWxsICYmIHRoaXMuZ2V0RDMwKCkuZXF1YWxz
KGNhc3RPdGhlci5nZXREMzAoKSkgKSApCi0gJiYgKCAodGhpcy5nZXREMjUoKT0zRD0zRGNhc3RP
dGhlci5nZXREMjUoKSkgfHwgKCB0aGlzLmdldEQyNSgpIT0zRG51bGwgJj0KJiBjYXN0T3RoZXIu
Z2V0RDI1KCkhPTNEbnVsbCAmJiB0aGlzLmdldEQyNSgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0RDI1
KCkpICkgKQotICYmICggKHRoaXMuZ2V0RDIwKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RDIwKCkpIHx8
ICggdGhpcy5nZXREMjAoKSE9M0RudWxsICY9CiYgY2FzdE90aGVyLmdldEQyMCgpIT0zRG51bGwg
JiYgdGhpcy5nZXREMjAoKS5lcXVhbHMoY2FzdE90aGVyLmdldEQyMCgpKSApICkKLSAmJiAoICh0
aGlzLmdldEQxNigpPTNEPTNEY2FzdE90aGVyLmdldEQxNigpKSB8fCAoIHRoaXMuZ2V0RDE2KCkh
PTNEbnVsbCAmPQomIGNhc3RPdGhlci5nZXREMTYoKSE9M0RudWxsICYmIHRoaXMuZ2V0RDE2KCku
ZXF1YWxzKGNhc3RPdGhlci5nZXREMTYoKSkgKSApCi0gJiYgKCAodGhpcy5nZXREMTAoKT0zRD0z
RGNhc3RPdGhlci5nZXREMTAoKSkgfHwgKCB0aGlzLmdldEQxMCgpIT0zRG51bGwgJj0KJiBjYXN0
T3RoZXIuZ2V0RDEwKCkhPTNEbnVsbCAmJiB0aGlzLmdldEQxMCgpLmVxdWFscyhjYXN0T3RoZXIu
Z2V0RDEwKCkpICkgKQotICYmICggKHRoaXMuZ2V0RG1pbigpPTNEPTNEY2FzdE90aGVyLmdldERt
aW4oKSkgfHwgKCB0aGlzLmdldERtaW4oKSE9M0RudWw9CmwgJiYgY2FzdE90aGVyLmdldERtaW4o
KSE9M0RudWxsICYmIHRoaXMuZ2V0RG1pbigpLmVxdWFscyhjYXN0T3RoZXIuZ2V0RG1pbj0KKCkp
ICkgKQotICYmICggKHRoaXMuZ2V0RHVyY2hkbWluKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RHVyY2hk
bWluKCkpIHx8ICggdGhpcy5nZXREdXI9CmNoZG1pbigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdl
dER1cmNoZG1pbigpIT0zRG51bGwgJiYgdGhpcy5nZXREdXJjaGRtaW4oKT0KLmVxdWFscyhjYXN0
T3RoZXIuZ2V0RHVyY2hkbWluKCkpICkgKQotICYmICggKHRoaXMuZ2V0RG1heCgpPTNEPTNEY2Fz
dE90aGVyLmdldERtYXgoKSkgfHwgKCB0aGlzLmdldERtYXgoKSE9M0RudWw9CmwgJiYgY2FzdE90
aGVyLmdldERtYXgoKSE9M0RudWxsICYmIHRoaXMuZ2V0RG1heCgpLmVxdWFscyhjYXN0T3RoZXIu
Z2V0RG1heD0KKCkpICkgKQotICYmICggKHRoaXMuZ2V0RHVyY2hkbWF4KCk9M0Q9M0RjYXN0T3Ro
ZXIuZ2V0RHVyY2hkbWF4KCkpIHx8ICggdGhpcy5nZXREdXI9CmNoZG1heCgpIT0zRG51bGwgJiYg
Y2FzdE90aGVyLmdldER1cmNoZG1heCgpIT0zRG51bGwgJiYgdGhpcy5nZXREdXJjaGRtYXgoKT0K
LmVxdWFscyhjYXN0T3RoZXIuZ2V0RHVyY2hkbWF4KCkpICkgKQotICYmICggKHRoaXMuZ2V0U3Rk
YWJ3KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0U3RkYWJ3KCkpIHx8ICggdGhpcy5nZXRTdGRhYncoKSE9
Cj0zRG51bGwgJiYgY2FzdE90aGVyLmdldFN0ZGFidygpIT0zRG51bGwgJiYgdGhpcy5nZXRTdGRh
YncoKS5lcXVhbHMoY2FzdE90aD0KZXIuZ2V0U3RkYWJ3KCkpICkgKQotICYmICggKHRoaXMuZ2V0
U3RkZmVobGVyKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0U3RkZmVobGVyKCkpIHx8ICggdGhpcy5nZXRT
dGQ9CmZlaGxlcigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFN0ZGZlaGxlcigpIT0zRG51bGwg
JiYgdGhpcy5nZXRTdGRmZWhsZXIoKT0KLmVxdWFscyhjYXN0T3RoZXIuZ2V0U3RkZmVobGVyKCkp
ICkgKQotICYmICggKHRoaXMuZ2V0QmVtZXJrdW5nKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0QmVtZXJr
dW5nKCkpIHx8ICggdGhpcy5nZXRCZW09CmVya3VuZygpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdl
dEJlbWVya3VuZygpIT0zRG51bGwgJiYgdGhpcy5nZXRCZW1lcmt1bmcoKT0KLmVxdWFscyhjYXN0
T3RoZXIuZ2V0QmVtZXJrdW5nKCkpICkgKQotICYmICggKHRoaXMuZ2V0VWZlcmFibGlua3MoKT0z
RD0zRGNhc3RPdGhlci5nZXRVZmVyYWJsaW5rcygpKSB8fCAoIHRoaXMuZ2U9CnRVZmVyYWJsaW5r
cygpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFVmZXJhYmxpbmtzKCkhPTNEbnVsbCAmJiB0aGlz
LmdldFVmZT0KcmFibGlua3MoKS5lcXVhbHMoY2FzdE90aGVyLmdldFVmZXJhYmxpbmtzKCkpICkg
KQotICYmICggKHRoaXMuZ2V0TGlua3NhYnN0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TGlua3NhYnN0
KCkpIHx8ICggdGhpcy5nZXRMaW49CmtzYWJzdCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldExp
bmtzYWJzdCgpIT0zRG51bGwgJiYgdGhpcy5nZXRMaW5rc2Fic3QoKT0KLmVxdWFscyhjYXN0T3Ro
ZXIuZ2V0TGlua3NhYnN0KCkpICkgKTsKLSAgIH0KLQotICAgcHVibGljIGludCBoYXNoQ29kZSgp
IHsKLSAgICAgICAgIGludCByZXN1bHQgPTNEIDE3OwotCi0gICAgICAgICByZXN1bHQgPTNEIDM3
ICogcmVzdWx0ICsgKGludCkgdGhpcy5nZXRHbG90cmVjaHRlaWQoKTsKLSAgICAgICAgIHJlc3Vs
dCA9M0QgMzcgKiByZXN1bHQgKyAoaW50KSB0aGlzLmdldE1lc3N1bmdpZCgpOwotICAgICAgICAg
cmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0VWZlcmFic3QoKSA9M0Q9M0QgbnVsbCA/IDAg
OiB0aGlzLmc9CmV0VWZlcmFic3QoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNE
IDM3ICogcmVzdWx0ICsgKCBnZXRUZ2VzY2hpZWJlKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcz0K
LmdldFRnZXNjaGllYmUoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICog
cmVzdWx0ICsgKCBnZXREbSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0RG0oKT0KLmhhc2hD
b2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFNrKCkgPTNE
PTNEIG51bGwgPyAwIDogdGhpcy5nZXRTaygpPQouaGFzaENvZGUoKSApOwotICAgICAgICAgcmVz
dWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0U28oKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdl
dFNvKCk9Ci5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsg
KCBnZXRVKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRVKCkuaD0KYXNoQ29kZSgpICk7Ci0g
ICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXREOTAoKSA9M0Q9M0QgbnVsbCA/
IDAgOiB0aGlzLmdldEQ5MD0KKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAz
NyAqIHJlc3VsdCArICggZ2V0RDg0KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXREODQ9Cigp
Lmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEQ4
MCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0RDgwPQooKS5oYXNoQ29kZSgpICk7Ci0gICAg
ICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRENzUoKSA9M0Q9M0QgbnVsbCA/IDAg
OiB0aGlzLmdldEQ3NT0KKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAq
IHJlc3VsdCArICggZ2V0RDcwKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRENzA9CigpLmhh
c2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEQ2MCgp
ID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0RDYwPQooKS5oYXNoQ29kZSgpICk7Ci0gICAgICAg
ICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRENTAoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0
aGlzLmdldEQ1MD0KKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJl
c3VsdCArICggZ2V0RDQwKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRENDA9CigpLmhhc2hD
b2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEQzMCgpID0z
RD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0RDMwPQooKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICBy
ZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXREMjUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlz
LmdldEQyNT0KKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3Vs
dCArICggZ2V0RDIwKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXREMjA9CigpLmhhc2hDb2Rl
KCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEQxNigpID0zRD0z
RCBudWxsID8gMCA6IHRoaXMuZ2V0RDE2PQooKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1
bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXREMTAoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdl
dEQxMD0KKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCAr
ICggZ2V0RG1pbigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0RG09CmluKCkuaGFzaENvZGUo
KSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0RHVyY2hkbWluKCkg
PTNEPTNEIG51bGwgPyAwIDogdGhpcy49CmdldER1cmNoZG1pbigpLmhhc2hDb2RlKCkgKTsKLSAg
ICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldERtYXgoKSA9M0Q9M0QgbnVsbCA/
IDAgOiB0aGlzLmdldERtPQpheCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0Qg
MzcgKiByZXN1bHQgKyAoIGdldER1cmNoZG1heCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuPQpn
ZXREdXJjaGRtYXgoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVz
dWx0ICsgKCBnZXRTdGRhYncoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldD0KU3RkYWJ3KCku
aGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0U3Rk
ZmVobGVyKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy49CmdldFN0ZGZlaGxlcigpLmhhc2hDb2Rl
KCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEJlbWVya3VuZygp
ID0zRD0zRCBudWxsID8gMCA6IHRoaXMuPQpnZXRCZW1lcmt1bmcoKS5oYXNoQ29kZSgpICk7Ci0g
ICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRVZmVyYWJsaW5rcygpID0zRD0z
RCBudWxsID8gMCA6IHRoaT0Kcy5nZXRVZmVyYWJsaW5rcygpLmhhc2hDb2RlKCkgKTsKLSAgICAg
ICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldExpbmtzYWJzdCgpID0zRD0zRCBudWxs
ID8gMCA6IHRoaXMuPQpnZXRMaW5rc2Fic3QoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgfQotfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEg
YmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2U9CmRkYi9tb2RlbC9HbG90cmVj
aHRlLmphdmEKLS0tIGEvYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2VkZGIv
bW9kZWwvR2xvdHJlY2h0ZS5qYXZhCU1vbiBBPQpwciAyOSAxMToxNDoyNSAyMDEzICswMjAwCisr
KyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDQyMCArMCww
IEBACi0vKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBm
PUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQotICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkg
SW50ZXZhdGlvbiBHbWJICi0gKgotICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIg
dGhlIEdOVSBBR1BMICg+PTNEdjMpPTIwCi0gKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5P
IFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCi0gKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERp
dmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFpbHMuPTIwCi0gKi8KLQotcGFja2FnZSBvcmcuZGl2
ZTRlbGVtZW50cy5zZWRkYi5tb2RlbDsKLS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3
IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQuMC5DUjEKLQotCi1pbXBvcnQgamF2YS5tYXRoLkJpZ0Rl
Y2ltYWw7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsK
LWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVu
Y2UuRW50aXR5OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsKLWltcG9ydCBq
YXZheC5wZXJzaXN0ZW5jZS5JZDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1u
OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk1hbnlUb09uZTsKLWltcG9ydCBqYXZheC5wZXJz
aXN0ZW5jZS5PbmVUb01hbnk7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuT25lVG9PbmU7Ci1p
bXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7Ci0KLS8qKgotICogR2xvdHJlY2h0ZSBnZW5l
cmF0ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVudGl0eQotQFRhYmxlKG5hbWU9M0QiR0xPVFJFQ0hU
RSIKLSAgICAsc2NoZW1hPTNEIlNFRERCIgotKQotcHVibGljIGNsYXNzIEdsb3RyZWNodGUgIGlt
cGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgewotCi0KLSAgICAgcHJpdmF0ZSBsb25nIGds
b3RyZWNodGVpZDsKLSAgICAgcHJpdmF0ZSBNZXNzdW5nIG1lc3N1bmc7Ci0gICAgIHByaXZhdGUg
QmlnRGVjaW1hbCB1ZmVyYWJzdDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHRnZXNjaGllYmU7
Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkbTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHNr
OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgc287Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB1
OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDkwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
ZDg0OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDgwOwotICAgICBwcml2YXRlIEJpZ0RlY2lt
YWwgZDc1OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDcwOwotICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgZDYwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDUwOwotICAgICBwcml2YXRlIEJp
Z0RlY2ltYWwgZDQwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDMwOwotICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgZDI1OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDIwOwotICAgICBwcml2
YXRlIEJpZ0RlY2ltYWwgZDE2OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDEwOwotICAgICBw
cml2YXRlIEJpZ0RlY2ltYWwgZG1pbjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGR1cmNoZG1p
bjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGRtYXg7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1h
bCBkdXJjaGRtYXg7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzdGRhYnc7Ci0gICAgIHByaXZh
dGUgQmlnRGVjaW1hbCBzdGRmZWhsZXI7Ci0gICAgIHByaXZhdGUgU3RyaW5nIGJlbWVya3VuZzsK
LSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHVmZXJhYmxpbmtzOwotICAgICBwcml2YXRlIEdzaWVi
dW5nIGdzaWVidW5nOwotICAgICBwcml2YXRlIFNldDxHcHJvYmU+IGdwcm9iZXMgPTNEIG5ldyBI
YXNoU2V0PEdwcm9iZT4oMCk7Ci0KLSAgICBwdWJsaWMgR2xvdHJlY2h0ZSgpIHsKLSAgICB9Ci0K
LQotICAgIHB1YmxpYyBHbG90cmVjaHRlKGxvbmcgZ2xvdHJlY2h0ZWlkLCBNZXNzdW5nIG1lc3N1
bmcsIEJpZ0RlY2ltYWwgdWZlcmE9CmJzdCkgewotICAgICAgICB0aGlzLmdsb3RyZWNodGVpZCA9
M0QgZ2xvdHJlY2h0ZWlkOwotICAgICAgICB0aGlzLm1lc3N1bmcgPTNEIG1lc3N1bmc7Ci0gICAg
ICAgIHRoaXMudWZlcmFic3QgPTNEIHVmZXJhYnN0OwotICAgIH0KLSAgICBwdWJsaWMgR2xvdHJl
Y2h0ZShsb25nIGdsb3RyZWNodGVpZCwgTWVzc3VuZyBtZXNzdW5nLCBCaWdEZWNpbWFsIHVmZXJh
PQpic3QsIEJpZ0RlY2ltYWwgdGdlc2NoaWViZSwgQmlnRGVjaW1hbCBkbSwgQmlnRGVjaW1hbCBz
aywgQmlnRGVjaW1hbCBzbywgQmk9CmdEZWNpbWFsIHUsIEJpZ0RlY2ltYWwgZDkwLCBCaWdEZWNp
bWFsIGQ4NCwgQmlnRGVjaW1hbCBkODAsIEJpZ0RlY2ltYWwgZDc1LD0KIEJpZ0RlY2ltYWwgZDcw
LCBCaWdEZWNpbWFsIGQ2MCwgQmlnRGVjaW1hbCBkNTAsIEJpZ0RlY2ltYWwgZDQwLCBCaWdEZWNp
bWFsPQogZDMwLCBCaWdEZWNpbWFsIGQyNSwgQmlnRGVjaW1hbCBkMjAsIEJpZ0RlY2ltYWwgZDE2
LCBCaWdEZWNpbWFsIGQxMCwgQmlnRGU9CmNpbWFsIGRtaW4sIEJpZ0RlY2ltYWwgZHVyY2hkbWlu
LCBCaWdEZWNpbWFsIGRtYXgsIEJpZ0RlY2ltYWwgZHVyY2hkbWF4LCBCaT0KZ0RlY2ltYWwgc3Rk
YWJ3LCBCaWdEZWNpbWFsIHN0ZGZlaGxlciwgU3RyaW5nIGJlbWVya3VuZywgQmlnRGVjaW1hbCB1
ZmVyYWJsPQppbmtzLCBHc2llYnVuZyBnc2llYnVuZywgU2V0PEdwcm9iZT4gZ3Byb2Jlcykgewot
ICAgICAgIHRoaXMuZ2xvdHJlY2h0ZWlkID0zRCBnbG90cmVjaHRlaWQ7Ci0gICAgICAgdGhpcy5t
ZXNzdW5nID0zRCBtZXNzdW5nOwotICAgICAgIHRoaXMudWZlcmFic3QgPTNEIHVmZXJhYnN0Owot
ICAgICAgIHRoaXMudGdlc2NoaWViZSA9M0QgdGdlc2NoaWViZTsKLSAgICAgICB0aGlzLmRtID0z
RCBkbTsKLSAgICAgICB0aGlzLnNrID0zRCBzazsKLSAgICAgICB0aGlzLnNvID0zRCBzbzsKLSAg
ICAgICB0aGlzLnUgPTNEIHU7Ci0gICAgICAgdGhpcy5kOTAgPTNEIGQ5MDsKLSAgICAgICB0aGlz
LmQ4NCA9M0QgZDg0OwotICAgICAgIHRoaXMuZDgwID0zRCBkODA7Ci0gICAgICAgdGhpcy5kNzUg
PTNEIGQ3NTsKLSAgICAgICB0aGlzLmQ3MCA9M0QgZDcwOwotICAgICAgIHRoaXMuZDYwID0zRCBk
NjA7Ci0gICAgICAgdGhpcy5kNTAgPTNEIGQ1MDsKLSAgICAgICB0aGlzLmQ0MCA9M0QgZDQwOwot
ICAgICAgIHRoaXMuZDMwID0zRCBkMzA7Ci0gICAgICAgdGhpcy5kMjUgPTNEIGQyNTsKLSAgICAg
ICB0aGlzLmQyMCA9M0QgZDIwOwotICAgICAgIHRoaXMuZDE2ID0zRCBkMTY7Ci0gICAgICAgdGhp
cy5kMTAgPTNEIGQxMDsKLSAgICAgICB0aGlzLmRtaW4gPTNEIGRtaW47Ci0gICAgICAgdGhpcy5k
dXJjaGRtaW4gPTNEIGR1cmNoZG1pbjsKLSAgICAgICB0aGlzLmRtYXggPTNEIGRtYXg7Ci0gICAg
ICAgdGhpcy5kdXJjaGRtYXggPTNEIGR1cmNoZG1heDsKLSAgICAgICB0aGlzLnN0ZGFidyA9M0Qg
c3RkYWJ3OwotICAgICAgIHRoaXMuc3RkZmVobGVyID0zRCBzdGRmZWhsZXI7Ci0gICAgICAgdGhp
cy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICAgICB0aGlzLnVmZXJhYmxpbmtzID0zRCB1
ZmVyYWJsaW5rczsKLSAgICAgICB0aGlzLmdzaWVidW5nID0zRCBnc2llYnVuZzsKLSAgICAgICB0
aGlzLmdwcm9iZXMgPTNEIGdwcm9iZXM7Ci0gICAgfQotCi0gICAgIEBJZAotCi0KLSAgICBAQ29s
dW1uKG5hbWU9M0QiR0xPVFJFQ0hURUlEIiwgdW5pcXVlPTNEdHJ1ZSwgbnVsbGFibGU9M0RmYWxz
ZSwgcHJlY2lzPQppb249M0QxMSwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBsb25nIGdldEdsb3Ry
ZWNodGVpZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ2xvdHJlY2h0ZWlkOwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldEdsb3RyZWNodGVpZChsb25nIGdsb3RyZWNodGVpZCkgewotICAg
ICAgICB0aGlzLmdsb3RyZWNodGVpZCA9M0QgZ2xvdHJlY2h0ZWlkOwotICAgIH0KLQotQE1hbnlU
b09uZShmZXRjaD0zREZldGNoVHlwZS5MQVpZKQotICAgIEBKb2luQ29sdW1uKG5hbWU9M0QiTUVT
U1VOR0lEIiwgbnVsbGFibGU9M0RmYWxzZSkKLSAgICBwdWJsaWMgTWVzc3VuZyBnZXRNZXNzdW5n
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5tZXNzdW5nOwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldE1lc3N1bmcoTWVzc3VuZyBtZXNzdW5nKSB7Ci0gICAgICAgIHRoaXMubWVzc3VuZyA9
M0QgbWVzc3VuZzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJVRkVSQUJTVCIsIG51
bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmln
RGVjaW1hbCBnZXRVZmVyYWJzdCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudWZlcmFic3Q7Ci0g
ICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VWZlcmFic3QoQmlnRGVjaW1hbCB1ZmVyYWJzdCkg
ewotICAgICAgICB0aGlzLnVmZXJhYnN0ID0zRCB1ZmVyYWJzdDsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJUR0VTQ0hJRUJFIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldFRnZXNjaGllYmUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LnRnZXNjaGllYmU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VGdlc2NoaWViZShCaWdE
ZWNpbWFsIHRnZXNjaGllYmUpIHsKLSAgICAgICAgdGhpcy50Z2VzY2hpZWJlID0zRCB0Z2VzY2hp
ZWJlOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkRNIiwgcHJlY2lzaW9uPTNENywg
c2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldERtKCkgewotICAgICAgICByZXR1
cm4gdGhpcy5kbTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREbShCaWdEZWNpbWFsIGRt
KSB7Ci0gICAgICAgIHRoaXMuZG0gPTNEIGRtOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIlNLIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFs
IGdldFNrKCkgewotICAgICAgICByZXR1cm4gdGhpcy5zazsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRTayhCaWdEZWNpbWFsIHNrKSB7Ci0gICAgICAgIHRoaXMuc2sgPTNEIHNrOwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNPIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0Qz
KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFNvKCkgewotICAgICAgICByZXR1cm4gdGhpcy5z
bzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTbyhCaWdEZWNpbWFsIHNvKSB7Ci0gICAg
ICAgIHRoaXMuc28gPTNEIHNvOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlUiLCBw
cmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VSgpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMudTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRVKEJp
Z0RlY2ltYWwgdSkgewotICAgICAgICB0aGlzLnUgPTNEIHU7Ci0gICAgfQotCi0KLSAgICBAQ29s
dW1uKG5hbWU9M0QiRDkwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBC
aWdEZWNpbWFsIGdldEQ5MCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDkwOwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldEQ5MChCaWdEZWNpbWFsIGQ5MCkgewotICAgICAgICB0aGlzLmQ5
MCA9M0QgZDkwOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQ4NCIsIHByZWNpc2lv
bj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREODQoKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLmQ4NDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREODQoQmln
RGVjaW1hbCBkODQpIHsKLSAgICAgICAgdGhpcy5kODQgPTNEIGQ4NDsKLSAgICB9Ci0KLQotICAg
IEBDb2x1bW4obmFtZT0zRCJEODAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVi
bGljIEJpZ0RlY2ltYWwgZ2V0RDgwKCkgewotICAgICAgICByZXR1cm4gdGhpcy5kODA7Ci0gICAg
fQotCi0gICAgcHVibGljIHZvaWQgc2V0RDgwKEJpZ0RlY2ltYWwgZDgwKSB7Ci0gICAgICAgIHRo
aXMuZDgwID0zRCBkODA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDc1IiwgcHJl
Y2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQ3NSgpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuZDc1OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQ3
NShCaWdEZWNpbWFsIGQ3NSkgewotICAgICAgICB0aGlzLmQ3NSA9M0QgZDc1OwotICAgIH0KLQot
Ci0gICAgQENvbHVtbihuYW1lPTNEIkQ3MCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAg
ICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRENzAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQ3MDsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRENzAoQmlnRGVjaW1hbCBkNzApIHsKLSAgICAg
ICAgdGhpcy5kNzAgPTNEIGQ3MDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJENjAi
LCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDYw
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5kNjA7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0RDYwKEJpZ0RlY2ltYWwgZDYwKSB7Ci0gICAgICAgIHRoaXMuZDYwID0zRCBkNjA7Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDUwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0
KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQ1MCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
ZDUwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQ1MChCaWdEZWNpbWFsIGQ1MCkgewot
ICAgICAgICB0aGlzLmQ1MCA9M0QgZDUwOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNE
IkQ0MCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXRENDAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQ0MDsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRENDAoQmlnRGVjaW1hbCBkNDApIHsKLSAgICAgICAgdGhpcy5kNDAgPTNEIGQ0MDsK
LSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJEMzAiLCBwcmVjaXNpb249M0Q3LCBzY2Fs
ZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDMwKCkgewotICAgICAgICByZXR1cm4g
dGhpcy5kMzA7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RDMwKEJpZ0RlY2ltYWwgZDMw
KSB7Ci0gICAgICAgIHRoaXMuZDMwID0zRCBkMzA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiRDI1IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNp
bWFsIGdldEQyNSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDI1OwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldEQyNShCaWdEZWNpbWFsIGQyNSkgewotICAgICAgICB0aGlzLmQyNSA9M0Qg
ZDI1OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQyMCIsIHByZWNpc2lvbj0zRDcs
IHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREMjAoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLmQyMDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREMjAoQmlnRGVjaW1h
bCBkMjApIHsKLSAgICAgICAgdGhpcy5kMjAgPTNEIGQyMDsKLSAgICB9Ci0KLQotICAgIEBDb2x1
bW4obmFtZT0zRCJEMTYiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0RDE2KCkgewotICAgICAgICByZXR1cm4gdGhpcy5kMTY7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0RDE2KEJpZ0RlY2ltYWwgZDE2KSB7Ci0gICAgICAgIHRoaXMuZDE2
ID0zRCBkMTY7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDEwIiwgcHJlY2lzaW9u
PTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQxMCgpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuZDEwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQxMChCaWdE
ZWNpbWFsIGQxMCkgewotICAgICAgICB0aGlzLmQxMCA9M0QgZDEwOwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIkRNSU4iLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVi
bGljIEJpZ0RlY2ltYWwgZ2V0RG1pbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZG1pbjsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREbWluKEJpZ0RlY2ltYWwgZG1pbikgewotICAgICAg
ICB0aGlzLmRtaW4gPTNEIGRtaW47Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRFVS
Q0hETUlOIiwgcHJlY2lzaW9uPTNENiwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFs
IGdldER1cmNoZG1pbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZHVyY2hkbWluOwotICAgIH0K
LQotICAgIHB1YmxpYyB2b2lkIHNldER1cmNoZG1pbihCaWdEZWNpbWFsIGR1cmNoZG1pbikgewot
ICAgICAgICB0aGlzLmR1cmNoZG1pbiA9M0QgZHVyY2hkbWluOwotICAgIH0KLQotCi0gICAgQENv
bHVtbihuYW1lPTNEIkRNQVgiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGlj
IEJpZ0RlY2ltYWwgZ2V0RG1heCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZG1heDsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREbWF4KEJpZ0RlY2ltYWwgZG1heCkgewotICAgICAgICB0
aGlzLmRtYXggPTNEIGRtYXg7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRFVSQ0hE
TUFYIiwgcHJlY2lzaW9uPTNENiwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdl
dER1cmNoZG1heCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZHVyY2hkbWF4OwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldER1cmNoZG1heChCaWdEZWNpbWFsIGR1cmNoZG1heCkgewotICAg
ICAgICB0aGlzLmR1cmNoZG1heCA9M0QgZHVyY2hkbWF4OwotICAgIH0KLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIlNUREFCVyIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMg
QmlnRGVjaW1hbCBnZXRTdGRhYncoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnN0ZGFidzsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTdGRhYncoQmlnRGVjaW1hbCBzdGRhYncpIHsKLSAg
ICAgICAgdGhpcy5zdGRhYncgPTNEIHN0ZGFidzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFt
ZT0zRCJTVERGRUhMRVIiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0U3RkZmVobGVyKCkgewotICAgICAgICByZXR1cm4gdGhpcy5zdGRmZWhsZXI7
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U3RkZmVobGVyKEJpZ0RlY2ltYWwgc3RkZmVo
bGVyKSB7Ci0gICAgICAgIHRoaXMuc3RkZmVobGVyID0zRCBzdGRmZWhsZXI7Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiQkVNRVJLVU5HIiwgbGVuZ3RoPTNEMjQwKQotICAgIHB1Ymxp
YyBTdHJpbmcgZ2V0QmVtZXJrdW5nKCkgewotICAgICAgICByZXR1cm4gdGhpcy5iZW1lcmt1bmc7
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QmVtZXJrdW5nKFN0cmluZyBiZW1lcmt1bmcp
IHsKLSAgICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICB9Ci0KLQotICAg
IEBDb2x1bW4obmFtZT0zRCJVRkVSQUJMSU5LUyIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykK
LSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRVZmVyYWJsaW5rcygpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMudWZlcmFibGlua3M7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VWZlcmFibGlu
a3MoQmlnRGVjaW1hbCB1ZmVyYWJsaW5rcykgewotICAgICAgICB0aGlzLnVmZXJhYmxpbmtzID0z
RCB1ZmVyYWJsaW5rczsKLSAgICB9Ci0KLUBPbmVUb09uZShmZXRjaD0zREZldGNoVHlwZS5MQVpZ
LCBtYXBwZWRCeT0zRCJnbG90cmVjaHRlIikKLSAgICBwdWJsaWMgR3NpZWJ1bmcgZ2V0R3NpZWJ1
bmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmdzaWVidW5nOwotICAgIH0KLQotICAgIHB1Ymxp
YyB2b2lkIHNldEdzaWVidW5nKEdzaWVidW5nIGdzaWVidW5nKSB7Ci0gICAgICAgIHRoaXMuZ3Np
ZWJ1bmcgPTNEIGdzaWVidW5nOwotICAgIH0KLQotQE9uZVRvTWFueShmZXRjaD0zREZldGNoVHlw
ZS5MQVpZLCBtYXBwZWRCeT0zRCJnbG90cmVjaHRlIikKLSAgICBwdWJsaWMgU2V0PEdwcm9iZT4g
Z2V0R3Byb2JlcygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ3Byb2JlczsKLSAgICB9Ci0KLSAg
ICBwdWJsaWMgdm9pZCBzZXRHcHJvYmVzKFNldDxHcHJvYmU+IGdwcm9iZXMpIHsKLSAgICAgICAg
dGhpcy5ncHJvYmVzID0zRCBncHJvYmVzOwotICAgIH0KLX0KZGlmZiAtciBiYzRlMWJmMjYyMjcg
LXIgMWU2OGVjYTI2YjhhIGJhY2tlbmQvc3JjL21haW4vamF2YS9kZS9pbnRldmF0aW9uL3NlPQpk
ZGIvbW9kZWwvR3Byb2JlLmphdmEKLS0tIGEvYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2
YXRpb24vc2VkZGIvbW9kZWwvR3Byb2JlLmphdmEJTW9uIEFwciAyPQo5IDExOjE0OjI1IDIwMTMg
KzAyMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEs
MTQ2ICswLDAgQEAKLS8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNh
bnN0YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCi0gKiBTb2Z0d2FyZSBlbmdpbmVl
cmluZyBieSBJbnRldmF0aW9uIEdtYkgKLSAqCi0gKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2Fy
ZSB1bmRlciB0aGUgR05VIEFHUEwgKD49M0R2Myk9MjAKLSAqIGFuZCBjb21lcyB3aXRoIEFCU09M
VVRFTFkgTk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUKLSAqIGRvY3VtZW50YXRpb24gY29taW5n
IHdpdGggRGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy49MjAKLSAqLwotCi1wYWNrYWdl
IG9yZy5kaXZlNGVsZW1lbnRzLnNlZGRiLm1vZGVsOwotLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIg
MTE6MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQotCi0KLWltcG9ydCBqYXZhLm1h
dGguQmlnRGVjaW1hbDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5BdHRyaWJ1dGVPdmVycmlk
ZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5BdHRyaWJ1dGVPdmVycmlkZXM7Ci1pbXBvcnQg
amF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVtYmVk
ZGVkSWQ7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OwotaW1wb3J0IGphdmF4LnBl
cnNpc3RlbmNlLkZldGNoVHlwZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1u
OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk1hbnlUb09uZTsKLWltcG9ydCBqYXZheC5wZXJz
aXN0ZW5jZS5UYWJsZTsKLQotLyoqCi0gKiBHcHJvYmUgZ2VuZXJhdGVkIGJ5IGhibTJqYXZhCi0g
Ki8KLUBFbnRpdHkKLUBUYWJsZShuYW1lPTNEIkdQUk9CRSIKLSAgICAsc2NoZW1hPTNEIlNFRERC
IgotKQotcHVibGljIGNsYXNzIEdwcm9iZSAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJs
ZSB7Ci0KLQotICAgICBwcml2YXRlIEdwcm9iZUlkIGlkOwotICAgICBwcml2YXRlIEdsb3RyZWNo
dGUgZ2xvdHJlY2h0ZTsKLSAgICAgcHJpdmF0ZSBpbnQgbWVzc2RhdWVyOwotICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgbWVuZ2U7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBndHJpZWI7Ci0gICAg
IHByaXZhdGUgQmlnRGVjaW1hbCBmYWt0b3I7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtZW5n
ZUY7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBndHJpZWJGOwotCi0gICAgcHVibGljIEdwcm9i
ZSgpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgR3Byb2JlKEdwcm9iZUlkIGlkLCBHbG90cmVjaHRl
IGdsb3RyZWNodGUsIGludCBtZXNzZGF1ZXIsIEJpZ0RlPQpjaW1hbCBtZW5nZSkgewotICAgICAg
ICB0aGlzLmlkID0zRCBpZDsKLSAgICAgICAgdGhpcy5nbG90cmVjaHRlID0zRCBnbG90cmVjaHRl
OwotICAgICAgICB0aGlzLm1lc3NkYXVlciA9M0QgbWVzc2RhdWVyOwotICAgICAgICB0aGlzLm1l
bmdlID0zRCBtZW5nZTsKLSAgICB9Ci0gICAgcHVibGljIEdwcm9iZShHcHJvYmVJZCBpZCwgR2xv
dHJlY2h0ZSBnbG90cmVjaHRlLCBpbnQgbWVzc2RhdWVyLCBCaWdEZT0KY2ltYWwgbWVuZ2UsIEJp
Z0RlY2ltYWwgZ3RyaWViLCBCaWdEZWNpbWFsIGZha3RvciwgQmlnRGVjaW1hbCBtZW5nZUYsIEJp
Z0RlPQpjaW1hbCBndHJpZWJGKSB7Ci0gICAgICAgdGhpcy5pZCA9M0QgaWQ7Ci0gICAgICAgdGhp
cy5nbG90cmVjaHRlID0zRCBnbG90cmVjaHRlOwotICAgICAgIHRoaXMubWVzc2RhdWVyID0zRCBt
ZXNzZGF1ZXI7Ci0gICAgICAgdGhpcy5tZW5nZSA9M0QgbWVuZ2U7Ci0gICAgICAgdGhpcy5ndHJp
ZWIgPTNEIGd0cmllYjsKLSAgICAgICB0aGlzLmZha3RvciA9M0QgZmFrdG9yOwotICAgICAgIHRo
aXMubWVuZ2VGID0zRCBtZW5nZUY7Ci0gICAgICAgdGhpcy5ndHJpZWJGID0zRCBndHJpZWJGOwot
ICAgIH0KLQotICAgICBARW1iZWRkZWRJZAotCi0KLSAgICBAQXR0cmlidXRlT3ZlcnJpZGVzKCB7
Ci0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImdsb3RyZWNodGVpZCIsIGNvbHVt
bj0zREBDb2x1bW4obmFtZT0zRD0KIkdMT1RSRUNIVEVJRCIsIG51bGxhYmxlPTNEZmFsc2UsIHBy
ZWNpc2lvbj0zRDExLCBzY2FsZT0zRDApICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShu
YW1lPTNEImxmZG5yIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkxGRE5SIj0KLCBudWxsYWJs
ZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q1LCBzY2FsZT0zRDApICkgfSApCi0gICAgcHVibGljIEdw
cm9iZUlkIGdldElkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5pZDsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRJZChHcHJvYmVJZCBpZCkgewotICAgICAgICB0aGlzLmlkID0zRCBpZDsK
LSAgICB9Ci0KLUBNYW55VG9PbmUoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSkKLSAgICBASm9pbkNv
bHVtbihuYW1lPTNEIkdMT1RSRUNIVEVJRCIsIG51bGxhYmxlPTNEZmFsc2UsIGluc2VydGFibGU9
M0RmYWxzPQplLCB1cGRhdGFibGU9M0RmYWxzZSkKLSAgICBwdWJsaWMgR2xvdHJlY2h0ZSBnZXRH
bG90cmVjaHRlKCkgewotICAgICAgICByZXR1cm4gdGhpcy5nbG90cmVjaHRlOwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldEdsb3RyZWNodGUoR2xvdHJlY2h0ZSBnbG90cmVjaHRlKSB7Ci0g
ICAgICAgIHRoaXMuZ2xvdHJlY2h0ZSA9M0QgZ2xvdHJlY2h0ZTsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJNRVNTREFVRVIiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q1
LCBzY2FsZT0zRDApCi0gICAgcHVibGljIGludCBnZXRNZXNzZGF1ZXIoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLm1lc3NkYXVlcjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNZXNzZGF1
ZXIoaW50IG1lc3NkYXVlcikgewotICAgICAgICB0aGlzLm1lc3NkYXVlciA9M0QgbWVzc2RhdWVy
OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1FTkdFIiwgbnVsbGFibGU9M0RmYWxz
ZSwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1l
bmdlKCkgewotICAgICAgICByZXR1cm4gdGhpcy5tZW5nZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRNZW5nZShCaWdEZWNpbWFsIG1lbmdlKSB7Ci0gICAgICAgIHRoaXMubWVuZ2UgPTNE
IG1lbmdlOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkdUUklFQiIsIHByZWNpc2lv
bj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRHdHJpZWIoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLmd0cmllYjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRH
dHJpZWIoQmlnRGVjaW1hbCBndHJpZWIpIHsKLSAgICAgICAgdGhpcy5ndHJpZWIgPTNEIGd0cmll
YjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJGQUtUT1IiLCBwcmVjaXNpb249M0Q0
LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RmFrdG9yKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5mYWt0b3I7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RmFrdG9y
KEJpZ0RlY2ltYWwgZmFrdG9yKSB7Ci0gICAgICAgIHRoaXMuZmFrdG9yID0zRCBmYWt0b3I7Ci0g
ICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUVOR0VfRiIsIHByZWNpc2lvbj0zRDksIHNj
YWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNZW5nZUYoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLm1lbmdlRjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNZW5nZUYoQmln
RGVjaW1hbCBtZW5nZUYpIHsKLSAgICAgICAgdGhpcy5tZW5nZUYgPTNEIG1lbmdlRjsKLSAgICB9
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJHVFJJRUJfRiIsIHByZWNpc2lvbj0zRDgsIHNjYWxl
PTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRHdHJpZWJGKCkgewotICAgICAgICByZXR1
cm4gdGhpcy5ndHJpZWJGOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEd0cmllYkYoQmln
RGVjaW1hbCBndHJpZWJGKSB7Ci0gICAgICAgIHRoaXMuZ3RyaWViRiA9M0QgZ3RyaWViRjsKLSAg
ICB9Ci19CmRpZmYgLXIgYmM0ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9t
YWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZT0KZGRiL21vZGVsL0dwcm9iZUlkLmphdmEKLS0tIGEv
YmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2VkZGIvbW9kZWwvR3Byb2JlSWQu
amF2YQlNb24gQXByPQogMjkgMTE6MTQ6MjUgMjAxMyArMDIwMAorKysgL2Rldi9udWxsCVRodSBK
YW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSw3MyArMCwwIEBACi0vKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRz
c2Vyaz0KdW5kZQotICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0g
KgotICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNE
djMpPTIwCi0gKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBv
dXQgdGhlCi0gKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIg
Zm9yIGRldGFpbHMuPTIwCi0gKi8KLQotcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5zZWRkYi5t
b2RlbDsKLS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29s
cyAzLjQuMC5DUjEKLQotCi1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOwotaW1wb3J0
IGphdmF4LnBlcnNpc3RlbmNlLkVtYmVkZGFibGU7Ci0KLS8qKgotICogR3Byb2JlSWQgZ2VuZXJh
dGVkIGJ5IGhibTJqYXZhCi0gKi8KLUBFbWJlZGRhYmxlCi1wdWJsaWMgY2xhc3MgR3Byb2JlSWQg
IGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgewotCi0KLSAgICAgcHJpdmF0ZSBsb25n
IGdsb3RyZWNodGVpZDsKLSAgICAgcHJpdmF0ZSBpbnQgbGZkbnI7Ci0KLSAgICBwdWJsaWMgR3By
b2JlSWQoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIEdwcm9iZUlkKGxvbmcgZ2xvdHJlY2h0ZWlk
LCBpbnQgbGZkbnIpIHsKLSAgICAgICB0aGlzLmdsb3RyZWNodGVpZCA9M0QgZ2xvdHJlY2h0ZWlk
OwotICAgICAgIHRoaXMubGZkbnIgPTNEIGxmZG5yOwotICAgIH0KLQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiR0xPVFJFQ0hURUlEIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMTEs
IHNjYWxlPQo9M0QwKQotICAgIHB1YmxpYyBsb25nIGdldEdsb3RyZWNodGVpZCgpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuZ2xvdHJlY2h0ZWlkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dEdsb3RyZWNodGVpZChsb25nIGdsb3RyZWNodGVpZCkgewotICAgICAgICB0aGlzLmdsb3RyZWNo
dGVpZCA9M0QgZ2xvdHJlY2h0ZWlkOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkxG
RE5SIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNENSwgc2NhbGU9M0QwKQotICAgIHB1
YmxpYyBpbnQgZ2V0TGZkbnIoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmxmZG5yOwotICAgIH0K
LQotICAgIHB1YmxpYyB2b2lkIHNldExmZG5yKGludCBsZmRucikgewotICAgICAgICB0aGlzLmxm
ZG5yID0zRCBsZmRucjsKLSAgICB9Ci0KLQotICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVj
dCBvdGhlcikgewotICAgICAgICAgaWYgKCAodGhpcyA9M0Q9M0Qgb3RoZXIgKSApIHJldHVybiB0
cnVlOwotICAgICAgICAgaWYgKCAob3RoZXIgPTNEPTNEIG51bGwgKSApIHJldHVybiBmYWxzZTsK
LSAgICAgICAgIGlmICggIShvdGhlciBpbnN0YW5jZW9mIEdwcm9iZUlkKSApIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgIEdwcm9iZUlkIGNhc3RPdGhlciA9M0QgKCBHcHJvYmVJZCApIG90aGVyOwot
Ci0gICAgICAgICByZXR1cm4gKHRoaXMuZ2V0R2xvdHJlY2h0ZWlkKCk9M0Q9M0RjYXN0T3RoZXIu
Z2V0R2xvdHJlY2h0ZWlkKCkpCi0gJiYgKHRoaXMuZ2V0TGZkbnIoKT0zRD0zRGNhc3RPdGhlci5n
ZXRMZmRucigpKTsKLSAgIH0KLQotICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKLSAgICAgICAg
IGludCByZXN1bHQgPTNEIDE3OwotCi0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsg
KGludCkgdGhpcy5nZXRHbG90cmVjaHRlaWQoKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiBy
ZXN1bHQgKyB0aGlzLmdldExmZG5yKCk7Ci0gICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgfQot
fQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9q
YXZhL2RlL2ludGV2YXRpb24vc2U9CmRkYi9tb2RlbC9Hc2llYnNhdHouamF2YQotLS0gYS9iYWNr
ZW5kL3NyYy9tYWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZWRkYi9tb2RlbC9Hc2llYnNhdHouamF2
YQlNb24gQXA9CnIgMjkgMTE6MTQ6MjUgMjAxMyArMDIwMAorKysgL2Rldi9udWxsCVRodSBKYW4g
MDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwzNzEgKzAsMCBAQAotLyogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nl
cms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoK
LSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYz
KT0yMAotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0
IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZv
ciBkZXRhaWxzLj0yMAotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9k
ZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMg
My40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmEubWF0aC5CaWdEZWNpbWFsOwotaW1wb3J0IGphdmEu
dXRpbC5IYXNoU2V0OwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci1pbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKLWltcG9ydCBq
YXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7
Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuT25lVG9NYW55OwotaW1wb3J0IGphdmF4LnBlcnNp
c3RlbmNlLlRhYmxlOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlVuaXF1ZUNvbnN0cmFpbnQ7
Ci0KLS8qKgotICogR3NpZWJzYXR6IGdlbmVyYXRlZCBieSBoYm0yamF2YQotICovCi1ARW50aXR5
Ci1AVGFibGUobmFtZT0zRCJHU0lFQlNBVFoiCi0gICAgLHNjaGVtYT0zRCJTRUREQiIKLSAgICAs
IHVuaXF1ZUNvbnN0cmFpbnRzID0zRCBAVW5pcXVlQ29uc3RyYWludChjb2x1bW5OYW1lcz0zRCJO
QU1FIikKLSkKLXB1YmxpYyBjbGFzcyBHc2llYnNhdHogIGltcGxlbWVudHMgamF2YS5pby5TZXJp
YWxpemFibGUgewotCi0KLSAgICAgcHJpdmF0ZSBsb25nIGdzaWVic2F0emlkOwotICAgICBwcml2
YXRlIFN0cmluZyBuYW1lOwotICAgICBwcml2YXRlIGJvb2xlYW4gaXN0YWt0aXY7Ci0gICAgIHBy
aXZhdGUgQmlnRGVjaW1hbCBzaWViMDE7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMDI7
Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMDM7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1h
bCBzaWViMDQ7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMDU7Ci0gICAgIHByaXZhdGUg
QmlnRGVjaW1hbCBzaWViMDY7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMDc7Ci0gICAg
IHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMDg7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWVi
MDk7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMTA7Ci0gICAgIHByaXZhdGUgQmlnRGVj
aW1hbCBzaWViMTE7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMTI7Ci0gICAgIHByaXZh
dGUgQmlnRGVjaW1hbCBzaWViMTM7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMTQ7Ci0g
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMTU7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBz
aWViMTY7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMTc7Ci0gICAgIHByaXZhdGUgQmln
RGVjaW1hbCBzaWViMTg7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMTk7Ci0gICAgIHBy
aXZhdGUgQmlnRGVjaW1hbCBzaWViMjA7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzaWViMjE7
Ci0gICAgIHByaXZhdGUgU3RyaW5nIGJlbWVya3VuZzsKLSAgICAgcHJpdmF0ZSBTZXQ8U3NpZWJ1
bmc+IHNzaWVidW5ncyA9M0QgbmV3IEhhc2hTZXQ8U3NpZWJ1bmc+KDApOwotICAgICBwcml2YXRl
IFNldDxNZXNzdW5nPiBtZXNzdW5ncyA9M0QgbmV3IEhhc2hTZXQ8TWVzc3VuZz4oMCk7Ci0KLSAg
ICBwdWJsaWMgR3NpZWJzYXR6KCkgewotICAgIH0KLQotCi0gICAgcHVibGljIEdzaWVic2F0eihs
b25nIGdzaWVic2F0emlkLCBTdHJpbmcgbmFtZSwgYm9vbGVhbiBpc3Rha3RpdikgewotICAgICAg
ICB0aGlzLmdzaWVic2F0emlkID0zRCBnc2llYnNhdHppZDsKLSAgICAgICAgdGhpcy5uYW1lID0z
RCBuYW1lOwotICAgICAgICB0aGlzLmlzdGFrdGl2ID0zRCBpc3Rha3RpdjsKLSAgICB9Ci0gICAg
cHVibGljIEdzaWVic2F0eihsb25nIGdzaWVic2F0emlkLCBTdHJpbmcgbmFtZSwgYm9vbGVhbiBp
c3Rha3RpdiwgQmlnRD0KZWNpbWFsIHNpZWIwMSwgQmlnRGVjaW1hbCBzaWViMDIsIEJpZ0RlY2lt
YWwgc2llYjAzLCBCaWdEZWNpbWFsIHNpZWIwNCwgQmlnPQpEZWNpbWFsIHNpZWIwNSwgQmlnRGVj
aW1hbCBzaWViMDYsIEJpZ0RlY2ltYWwgc2llYjA3LCBCaWdEZWNpbWFsIHNpZWIwOCwgQmk9CmdE
ZWNpbWFsIHNpZWIwOSwgQmlnRGVjaW1hbCBzaWViMTAsIEJpZ0RlY2ltYWwgc2llYjExLCBCaWdE
ZWNpbWFsIHNpZWIxMiwgQj0KaWdEZWNpbWFsIHNpZWIxMywgQmlnRGVjaW1hbCBzaWViMTQsIEJp
Z0RlY2ltYWwgc2llYjE1LCBCaWdEZWNpbWFsIHNpZWIxNiwgPQpCaWdEZWNpbWFsIHNpZWIxNywg
QmlnRGVjaW1hbCBzaWViMTgsIEJpZ0RlY2ltYWwgc2llYjE5LCBCaWdEZWNpbWFsIHNpZWIyMCw9
CiBCaWdEZWNpbWFsIHNpZWIyMSwgU3RyaW5nIGJlbWVya3VuZywgU2V0PFNzaWVidW5nPiBzc2ll
YnVuZ3MsIFNldDxNZXNzdW5nPj0KIG1lc3N1bmdzKSB7Ci0gICAgICAgdGhpcy5nc2llYnNhdHpp
ZCA9M0QgZ3NpZWJzYXR6aWQ7Ci0gICAgICAgdGhpcy5uYW1lID0zRCBuYW1lOwotICAgICAgIHRo
aXMuaXN0YWt0aXYgPTNEIGlzdGFrdGl2OwotICAgICAgIHRoaXMuc2llYjAxID0zRCBzaWViMDE7
Ci0gICAgICAgdGhpcy5zaWViMDIgPTNEIHNpZWIwMjsKLSAgICAgICB0aGlzLnNpZWIwMyA9M0Qg
c2llYjAzOwotICAgICAgIHRoaXMuc2llYjA0ID0zRCBzaWViMDQ7Ci0gICAgICAgdGhpcy5zaWVi
MDUgPTNEIHNpZWIwNTsKLSAgICAgICB0aGlzLnNpZWIwNiA9M0Qgc2llYjA2OwotICAgICAgIHRo
aXMuc2llYjA3ID0zRCBzaWViMDc7Ci0gICAgICAgdGhpcy5zaWViMDggPTNEIHNpZWIwODsKLSAg
ICAgICB0aGlzLnNpZWIwOSA9M0Qgc2llYjA5OwotICAgICAgIHRoaXMuc2llYjEwID0zRCBzaWVi
MTA7Ci0gICAgICAgdGhpcy5zaWViMTEgPTNEIHNpZWIxMTsKLSAgICAgICB0aGlzLnNpZWIxMiA9
M0Qgc2llYjEyOwotICAgICAgIHRoaXMuc2llYjEzID0zRCBzaWViMTM7Ci0gICAgICAgdGhpcy5z
aWViMTQgPTNEIHNpZWIxNDsKLSAgICAgICB0aGlzLnNpZWIxNSA9M0Qgc2llYjE1OwotICAgICAg
IHRoaXMuc2llYjE2ID0zRCBzaWViMTY7Ci0gICAgICAgdGhpcy5zaWViMTcgPTNEIHNpZWIxNzsK
LSAgICAgICB0aGlzLnNpZWIxOCA9M0Qgc2llYjE4OwotICAgICAgIHRoaXMuc2llYjE5ID0zRCBz
aWViMTk7Ci0gICAgICAgdGhpcy5zaWViMjAgPTNEIHNpZWIyMDsKLSAgICAgICB0aGlzLnNpZWIy
MSA9M0Qgc2llYjIxOwotICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7Ci0gICAg
ICAgdGhpcy5zc2llYnVuZ3MgPTNEIHNzaWVidW5nczsKLSAgICAgICB0aGlzLm1lc3N1bmdzID0z
RCBtZXNzdW5nczsKLSAgICB9Ci0KLSAgICAgQElkCi0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJH
U0lFQlNBVFpJRCIsIHVuaXF1ZT0zRHRydWUsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2k9Cm9u
PTNEMTEsIHNjYWxlPTNEMCkKLSAgICBwdWJsaWMgbG9uZyBnZXRHc2llYnNhdHppZCgpIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuZ3NpZWJzYXR6aWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0R3NpZWJzYXR6aWQobG9uZyBnc2llYnNhdHppZCkgewotICAgICAgICB0aGlzLmdzaWVic2F0
emlkID0zRCBnc2llYnNhdHppZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJOQU1F
IiwgdW5pcXVlPTNEdHJ1ZSwgbnVsbGFibGU9M0RmYWxzZSwgbGVuZ3RoPTNEMjApCi0gICAgcHVi
bGljIFN0cmluZyBnZXROYW1lKCkgewotICAgICAgICByZXR1cm4gdGhpcy5uYW1lOwotICAgIH0K
LQotICAgIHB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpIHsKLSAgICAgICAgdGhpcy5u
YW1lID0zRCBuYW1lOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIklTVEFLVElWIiwg
bnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMSwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBi
b29sZWFuIGlzSXN0YWt0aXYoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmlzdGFrdGl2OwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldElzdGFrdGl2KGJvb2xlYW4gaXN0YWt0aXYpIHsKLSAg
ICAgICAgdGhpcy5pc3Rha3RpdiA9M0QgaXN0YWt0aXY7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiU0lFQjAxIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBC
aWdEZWNpbWFsIGdldFNpZWIwMSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc2llYjAxOwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNpZWIwMShCaWdEZWNpbWFsIHNpZWIwMSkgewotICAg
ICAgICB0aGlzLnNpZWIwMSA9M0Qgc2llYjAxOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIlNJRUIwMiIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVj
aW1hbCBnZXRTaWViMDIoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnNpZWIwMjsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRTaWViMDIoQmlnRGVjaW1hbCBzaWViMDIpIHsKLSAgICAgICAg
dGhpcy5zaWViMDIgPTNEIHNpZWIwMjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJT
SUVCMDMiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0U2llYjAzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5zaWViMDM7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0U2llYjAzKEJpZ0RlY2ltYWwgc2llYjAzKSB7Ci0gICAgICAgIHRoaXMu
c2llYjAzID0zRCBzaWViMDM7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiU0lFQjA0
IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFNp
ZWIwNCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc2llYjA0OwotICAgIH0KLQotICAgIHB1Ymxp
YyB2b2lkIHNldFNpZWIwNChCaWdEZWNpbWFsIHNpZWIwNCkgewotICAgICAgICB0aGlzLnNpZWIw
NCA9M0Qgc2llYjA0OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNJRUIwNSIsIHBy
ZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRTaWViMDUo
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnNpZWIwNTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXRTaWViMDUoQmlnRGVjaW1hbCBzaWViMDUpIHsKLSAgICAgICAgdGhpcy5zaWViMDUgPTNE
IHNpZWIwNTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJTSUVCMDYiLCBwcmVjaXNp
b249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0U2llYjA2KCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5zaWViMDY7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0
U2llYjA2KEJpZ0RlY2ltYWwgc2llYjA2KSB7Ci0gICAgICAgIHRoaXMuc2llYjA2ID0zRCBzaWVi
MDY7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiU0lFQjA3IiwgcHJlY2lzaW9uPTNE
Nywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFNpZWIwNygpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuc2llYjA3OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNpZWIw
NyhCaWdEZWNpbWFsIHNpZWIwNykgewotICAgICAgICB0aGlzLnNpZWIwNyA9M0Qgc2llYjA3Owot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNJRUIwOCIsIHByZWNpc2lvbj0zRDcsIHNj
YWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRTaWViMDgoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLnNpZWIwODsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTaWViMDgoQmln
RGVjaW1hbCBzaWViMDgpIHsKLSAgICAgICAgdGhpcy5zaWViMDggPTNEIHNpZWIwODsKLSAgICB9
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJTSUVCMDkiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0z
RDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0U2llYjA5KCkgewotICAgICAgICByZXR1cm4g
dGhpcy5zaWViMDk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U2llYjA5KEJpZ0RlY2lt
YWwgc2llYjA5KSB7Ci0gICAgICAgIHRoaXMuc2llYjA5ID0zRCBzaWViMDk7Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiU0lFQjEwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQot
ICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFNpZWIxMCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
c2llYjEwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNpZWIxMChCaWdEZWNpbWFsIHNp
ZWIxMCkgewotICAgICAgICB0aGlzLnNpZWIxMCA9M0Qgc2llYjEwOwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIlNJRUIxMSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBw
dWJsaWMgQmlnRGVjaW1hbCBnZXRTaWViMTEoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnNpZWIx
MTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTaWViMTEoQmlnRGVjaW1hbCBzaWViMTEp
IHsKLSAgICAgICAgdGhpcy5zaWViMTEgPTNEIHNpZWIxMTsKLSAgICB9Ci0KLQotICAgIEBDb2x1
bW4obmFtZT0zRCJTSUVCMTIiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGlj
IEJpZ0RlY2ltYWwgZ2V0U2llYjEyKCkgewotICAgICAgICByZXR1cm4gdGhpcy5zaWViMTI7Ci0g
ICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U2llYjEyKEJpZ0RlY2ltYWwgc2llYjEyKSB7Ci0g
ICAgICAgIHRoaXMuc2llYjEyID0zRCBzaWViMTI7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiU0lFQjEzIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdE
ZWNpbWFsIGdldFNpZWIxMygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc2llYjEzOwotICAgIH0K
LQotICAgIHB1YmxpYyB2b2lkIHNldFNpZWIxMyhCaWdEZWNpbWFsIHNpZWIxMykgewotICAgICAg
ICB0aGlzLnNpZWIxMyA9M0Qgc2llYjEzOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNE
IlNJRUIxNCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1h
bCBnZXRTaWViMTQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnNpZWIxNDsKLSAgICB9Ci0KLSAg
ICBwdWJsaWMgdm9pZCBzZXRTaWViMTQoQmlnRGVjaW1hbCBzaWViMTQpIHsKLSAgICAgICAgdGhp
cy5zaWViMTQgPTNEIHNpZWIxNDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJTSUVC
MTUiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0
U2llYjE1KCkgewotICAgICAgICByZXR1cm4gdGhpcy5zaWViMTU7Ci0gICAgfQotCi0gICAgcHVi
bGljIHZvaWQgc2V0U2llYjE1KEJpZ0RlY2ltYWwgc2llYjE1KSB7Ci0gICAgICAgIHRoaXMuc2ll
YjE1ID0zRCBzaWViMTU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiU0lFQjE2Iiwg
cHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFNpZWIx
NigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc2llYjE2OwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldFNpZWIxNihCaWdEZWNpbWFsIHNpZWIxNikgewotICAgICAgICB0aGlzLnNpZWIxNiA9
M0Qgc2llYjE2OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNJRUIxNyIsIHByZWNp
c2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRTaWViMTcoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLnNpZWIxNzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXRTaWViMTcoQmlnRGVjaW1hbCBzaWViMTcpIHsKLSAgICAgICAgdGhpcy5zaWViMTcgPTNEIHNp
ZWIxNzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJTSUVCMTgiLCBwcmVjaXNpb249
M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0U2llYjE4KCkgewotICAg
ICAgICByZXR1cm4gdGhpcy5zaWViMTg7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U2ll
YjE4KEJpZ0RlY2ltYWwgc2llYjE4KSB7Ci0gICAgICAgIHRoaXMuc2llYjE4ID0zRCBzaWViMTg7
Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiU0lFQjE5IiwgcHJlY2lzaW9uPTNENywg
c2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFNpZWIxOSgpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuc2llYjE5OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNpZWIxOShC
aWdEZWNpbWFsIHNpZWIxOSkgewotICAgICAgICB0aGlzLnNpZWIxOSA9M0Qgc2llYjE5OwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNJRUIyMCIsIHByZWNpc2lvbj0zRDcsIHNjYWxl
PTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRTaWViMjAoKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLnNpZWIyMDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTaWViMjAoQmlnRGVj
aW1hbCBzaWViMjApIHsKLSAgICAgICAgdGhpcy5zaWViMjAgPTNEIHNpZWIyMDsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJTSUVCMjEiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQp
Ci0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0U2llYjIxKCkgewotICAgICAgICByZXR1cm4gdGhp
cy5zaWViMjE7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U2llYjIxKEJpZ0RlY2ltYWwg
c2llYjIxKSB7Ci0gICAgICAgIHRoaXMuc2llYjIxID0zRCBzaWViMjE7Ci0gICAgfQotCi0KLSAg
ICBAQ29sdW1uKG5hbWU9M0QiQkVNRVJLVU5HIiwgbGVuZ3RoPTNEMjQwKQotICAgIHB1YmxpYyBT
dHJpbmcgZ2V0QmVtZXJrdW5nKCkgewotICAgICAgICByZXR1cm4gdGhpcy5iZW1lcmt1bmc7Ci0g
ICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QmVtZXJrdW5nKFN0cmluZyBiZW1lcmt1bmcpIHsK
LSAgICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICB9Ci0KLUBPbmVUb01h
bnkoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSwgbWFwcGVkQnk9M0QiZ3NpZWJzYXR6IikKLSAgICBw
dWJsaWMgU2V0PFNzaWVidW5nPiBnZXRTc2llYnVuZ3MoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LnNzaWVidW5nczsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTc2llYnVuZ3MoU2V0PFNz
aWVidW5nPiBzc2llYnVuZ3MpIHsKLSAgICAgICAgdGhpcy5zc2llYnVuZ3MgPTNEIHNzaWVidW5n
czsKLSAgICB9Ci0KLUBPbmVUb01hbnkoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSwgbWFwcGVkQnk9
M0QiZ3NpZWJzYXR6IikKLSAgICBwdWJsaWMgU2V0PE1lc3N1bmc+IGdldE1lc3N1bmdzKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5tZXNzdW5nczsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXRNZXNzdW5ncyhTZXQ8TWVzc3VuZz4gbWVzc3VuZ3MpIHsKLSAgICAgICAgdGhpcy5tZXNzdW5n
cyA9M0QgbWVzc3VuZ3M7Ci0gICAgfQotfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNh
MjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2U9CmRkYi9tb2RlbC9H
c2llYnVuZy5qYXZhCi0tLSBhL2JhY2tlbmQvc3JjL21haW4vamF2YS9kZS9pbnRldmF0aW9uL3Nl
ZGRiL21vZGVsL0dzaWVidW5nLmphdmEJTW9uIEFwcj0KIDI5IDExOjE0OjI1IDIwMTMgKzAyMDAK
KysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMzU2ICsw
LDAgQEAKLS8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0
IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCi0gKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBi
eSBJbnRldmF0aW9uIEdtYkgKLSAqCi0gKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRl
ciB0aGUgR05VIEFHUEwgKD49M0R2Myk9MjAKLSAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkg
Tk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUKLSAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGgg
RGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy49MjAKLSAqLwotCi1wYWNrYWdlIG9yZy5k
aXZlNGVsZW1lbnRzLnNlZGRiLm1vZGVsOwotLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6
NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQotCi0KLWltcG9ydCBqYXZhLm1hdGguQmln
RGVjaW1hbDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgu
cGVyc2lzdGVuY2UuRW50aXR5OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsK
LWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0ZWRWYWx1ZTsKLWltcG9ydCBqYXZheC5w
ZXJzaXN0ZW5jZS5JZDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5PbmVUb09uZTsKLWltcG9y
dCBqYXZheC5wZXJzaXN0ZW5jZS5QcmltYXJ5S2V5Sm9pbkNvbHVtbjsKLWltcG9ydCBqYXZheC5w
ZXJzaXN0ZW5jZS5UYWJsZTsKLWltcG9ydCBvcmcuaGliZXJuYXRlLmFubm90YXRpb25zLkdlbmVy
aWNHZW5lcmF0b3I7Ci1pbXBvcnQgb3JnLmhpYmVybmF0ZS5hbm5vdGF0aW9ucy5QYXJhbWV0ZXI7
Ci0KLS8qKgotICogR3NpZWJ1bmcgZ2VuZXJhdGVkIGJ5IGhibTJqYXZhCi0gKi8KLUBFbnRpdHkK
LUBUYWJsZShuYW1lPTNEIkdTSUVCVU5HIgotICAgICxzY2hlbWE9M0QiU0VEREIiCi0pCi1wdWJs
aWMgY2xhc3MgR3NpZWJ1bmcgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgewotCi0K
LSAgICAgcHJpdmF0ZSBsb25nIGdsb3RyZWNodGVpZDsKLSAgICAgcHJpdmF0ZSBHbG90cmVjaHRl
IGdsb3RyZWNodGU7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBnbWFzc2U7Ci0gICAgIHByaXZh
dGUgQmlnRGVjaW1hbCByc2llYjAxOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIwMjsK
LSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMDM7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1h
bCByc2llYjA0OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIwNTsKLSAgICAgcHJpdmF0
ZSBCaWdEZWNpbWFsIHJzaWViMDY7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjA3Owot
ICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIwODsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IHJzaWViMDk7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjEwOwotICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgcnNpZWIxMTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMTI7Ci0g
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjEzOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
cnNpZWIxNDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMTU7Ci0gICAgIHByaXZhdGUg
QmlnRGVjaW1hbCByc2llYjE2OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIxNzsKLSAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMTg7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBy
c2llYjE5OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIyMDsKLSAgICAgcHJpdmF0ZSBC
aWdEZWNpbWFsIHJzaWViMjE7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCByZXN0OwotICAgICBw
cml2YXRlIFN0cmluZyBiZW1lcmt1bmc7Ci0KLSAgICBwdWJsaWMgR3NpZWJ1bmcoKSB7Ci0gICAg
fQotCi0gICAgcHVibGljIEdzaWVidW5nKEdsb3RyZWNodGUgZ2xvdHJlY2h0ZSkgewotICAgICAg
ICB0aGlzLmdsb3RyZWNodGUgPTNEIGdsb3RyZWNodGU7Ci0gICAgfQotICAgIHB1YmxpYyBHc2ll
YnVuZyhHbG90cmVjaHRlIGdsb3RyZWNodGUsIEJpZ0RlY2ltYWwgZ21hc3NlLCBCaWdEZWNpbWFs
IHI9CnNpZWIwMSwgQmlnRGVjaW1hbCByc2llYjAyLCBCaWdEZWNpbWFsIHJzaWViMDMsIEJpZ0Rl
Y2ltYWwgcnNpZWIwNCwgQmlnRGVjaT0KbWFsIHJzaWViMDUsIEJpZ0RlY2ltYWwgcnNpZWIwNiwg
QmlnRGVjaW1hbCByc2llYjA3LCBCaWdEZWNpbWFsIHJzaWViMDgsIEJpPQpnRGVjaW1hbCByc2ll
YjA5LCBCaWdEZWNpbWFsIHJzaWViMTAsIEJpZ0RlY2ltYWwgcnNpZWIxMSwgQmlnRGVjaW1hbCBy
c2llYjE9CjIsIEJpZ0RlY2ltYWwgcnNpZWIxMywgQmlnRGVjaW1hbCByc2llYjE0LCBCaWdEZWNp
bWFsIHJzaWViMTUsIEJpZ0RlY2ltYWwgcj0Kc2llYjE2LCBCaWdEZWNpbWFsIHJzaWViMTcsIEJp
Z0RlY2ltYWwgcnNpZWIxOCwgQmlnRGVjaW1hbCByc2llYjE5LCBCaWdEZWNpPQptYWwgcnNpZWIy
MCwgQmlnRGVjaW1hbCByc2llYjIxLCBCaWdEZWNpbWFsIHJlc3QsIFN0cmluZyBiZW1lcmt1bmcp
IHsKLSAgICAgICB0aGlzLmdsb3RyZWNodGUgPTNEIGdsb3RyZWNodGU7Ci0gICAgICAgdGhpcy5n
bWFzc2UgPTNEIGdtYXNzZTsKLSAgICAgICB0aGlzLnJzaWViMDEgPTNEIHJzaWViMDE7Ci0gICAg
ICAgdGhpcy5yc2llYjAyID0zRCByc2llYjAyOwotICAgICAgIHRoaXMucnNpZWIwMyA9M0QgcnNp
ZWIwMzsKLSAgICAgICB0aGlzLnJzaWViMDQgPTNEIHJzaWViMDQ7Ci0gICAgICAgdGhpcy5yc2ll
YjA1ID0zRCByc2llYjA1OwotICAgICAgIHRoaXMucnNpZWIwNiA9M0QgcnNpZWIwNjsKLSAgICAg
ICB0aGlzLnJzaWViMDcgPTNEIHJzaWViMDc7Ci0gICAgICAgdGhpcy5yc2llYjA4ID0zRCByc2ll
YjA4OwotICAgICAgIHRoaXMucnNpZWIwOSA9M0QgcnNpZWIwOTsKLSAgICAgICB0aGlzLnJzaWVi
MTAgPTNEIHJzaWViMTA7Ci0gICAgICAgdGhpcy5yc2llYjExID0zRCByc2llYjExOwotICAgICAg
IHRoaXMucnNpZWIxMiA9M0QgcnNpZWIxMjsKLSAgICAgICB0aGlzLnJzaWViMTMgPTNEIHJzaWVi
MTM7Ci0gICAgICAgdGhpcy5yc2llYjE0ID0zRCByc2llYjE0OwotICAgICAgIHRoaXMucnNpZWIx
NSA9M0QgcnNpZWIxNTsKLSAgICAgICB0aGlzLnJzaWViMTYgPTNEIHJzaWViMTY7Ci0gICAgICAg
dGhpcy5yc2llYjE3ID0zRCByc2llYjE3OwotICAgICAgIHRoaXMucnNpZWIxOCA9M0QgcnNpZWIx
ODsKLSAgICAgICB0aGlzLnJzaWViMTkgPTNEIHJzaWViMTk7Ci0gICAgICAgdGhpcy5yc2llYjIw
ID0zRCByc2llYjIwOwotICAgICAgIHRoaXMucnNpZWIyMSA9M0QgcnNpZWIyMTsKLSAgICAgICB0
aGlzLnJlc3QgPTNEIHJlc3Q7Ci0gICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsK
LSAgICB9Ci0KLSAgICAgQEdlbmVyaWNHZW5lcmF0b3IobmFtZT0zRCJnZW5lcmF0b3IiLCBzdHJh
dGVneT0zRCJmb3JlaWduIiwgcGFyYW1ldGVyPQpzPTNEQFBhcmFtZXRlcihuYW1lPTNEInByb3Bl
cnR5IiwgdmFsdWU9M0QiZ2xvdHJlY2h0ZSIpKUBJZCBAR2VuZXJhdGVkVmFsdWU9CihnZW5lcmF0
b3I9M0QiZ2VuZXJhdG9yIikKLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkdMT1RSRUNIVEVJRCIs
IHVuaXF1ZT0zRHRydWUsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpcz0KaW9uPTNEMTEsIHNjYWxl
PTNEMCkKLSAgICBwdWJsaWMgbG9uZyBnZXRHbG90cmVjaHRlaWQoKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLmdsb3RyZWNodGVpZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRHbG90cmVj
aHRlaWQobG9uZyBnbG90cmVjaHRlaWQpIHsKLSAgICAgICAgdGhpcy5nbG90cmVjaHRlaWQgPTNE
IGdsb3RyZWNodGVpZDsKLSAgICB9Ci0KLUBPbmVUb09uZShmZXRjaD0zREZldGNoVHlwZS5MQVpZ
KUBQcmltYXJ5S2V5Sm9pbkNvbHVtbgotICAgIHB1YmxpYyBHbG90cmVjaHRlIGdldEdsb3RyZWNo
dGUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmdsb3RyZWNodGU7Ci0gICAgfQotCi0gICAgcHVi
bGljIHZvaWQgc2V0R2xvdHJlY2h0ZShHbG90cmVjaHRlIGdsb3RyZWNodGUpIHsKLSAgICAgICAg
dGhpcy5nbG90cmVjaHRlID0zRCBnbG90cmVjaHRlOwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIkdNQVNTRSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmln
RGVjaW1hbCBnZXRHbWFzc2UoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmdtYXNzZTsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRHbWFzc2UoQmlnRGVjaW1hbCBnbWFzc2UpIHsKLSAgICAg
ICAgdGhpcy5nbWFzc2UgPTNEIGdtYXNzZTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJSU0lFQjAxIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNp
bWFsIGdldFJzaWViMDEoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJzaWViMDE7Ci0gICAgfQot
Ci0gICAgcHVibGljIHZvaWQgc2V0UnNpZWIwMShCaWdEZWNpbWFsIHJzaWViMDEpIHsKLSAgICAg
ICAgdGhpcy5yc2llYjAxID0zRCByc2llYjAxOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIlJTSUVCMDIiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0UnNpZWIwMigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIwMjsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjAyKEJpZ0RlY2ltYWwgcnNpZWIwMikgewotICAg
ICAgICB0aGlzLnJzaWViMDIgPTNEIHJzaWViMDI7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiUlNJRUIwMyIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmln
RGVjaW1hbCBnZXRSc2llYjAzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5yc2llYjAzOwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMDMoQmlnRGVjaW1hbCByc2llYjAzKSB7Ci0g
ICAgICAgIHRoaXMucnNpZWIwMyA9M0QgcnNpZWIwMzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4o
bmFtZT0zRCJSU0lFQjA0IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBC
aWdEZWNpbWFsIGdldFJzaWViMDQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJzaWViMDQ7Ci0g
ICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnNpZWIwNChCaWdEZWNpbWFsIHJzaWViMDQpIHsK
LSAgICAgICAgdGhpcy5yc2llYjA0ID0zRCByc2llYjA0OwotICAgIH0KLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIlJTSUVCMDUiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGlj
IEJpZ0RlY2ltYWwgZ2V0UnNpZWIwNSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIwNTsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjA1KEJpZ0RlY2ltYWwgcnNpZWIwNSkg
ewotICAgICAgICB0aGlzLnJzaWViMDUgPTNEIHJzaWViMDU7Ci0gICAgfQotCi0KLSAgICBAQ29s
dW1uKG5hbWU9M0QiUlNJRUIwNiIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXRSc2llYjA2KCkgewotICAgICAgICByZXR1cm4gdGhpcy5yc2llYjA2
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMDYoQmlnRGVjaW1hbCByc2llYjA2
KSB7Ci0gICAgICAgIHRoaXMucnNpZWIwNiA9M0QgcnNpZWIwNjsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJSU0lFQjA3IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMDcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJzaWVi
MDc7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnNpZWIwNyhCaWdEZWNpbWFsIHJzaWVi
MDcpIHsKLSAgICAgICAgdGhpcy5yc2llYjA3ID0zRCByc2llYjA3OwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIlJTSUVCMDgiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAg
cHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIwOCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnNp
ZWIwODsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjA4KEJpZ0RlY2ltYWwgcnNp
ZWIwOCkgewotICAgICAgICB0aGlzLnJzaWViMDggPTNEIHJzaWViMDg7Ci0gICAgfQotCi0KLSAg
ICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIwOSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAg
ICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSc2llYjA5KCkgewotICAgICAgICByZXR1cm4gdGhpcy5y
c2llYjA5OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMDkoQmlnRGVjaW1hbCBy
c2llYjA5KSB7Ci0gICAgICAgIHRoaXMucnNpZWIwOSA9M0QgcnNpZWIwOTsKLSAgICB9Ci0KLQot
ICAgIEBDb2x1bW4obmFtZT0zRCJSU0lFQjEwIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQot
ICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMTAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LnJzaWViMTA7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnNpZWIxMChCaWdEZWNpbWFs
IHJzaWViMTApIHsKLSAgICAgICAgdGhpcy5yc2llYjEwID0zRCByc2llYjEwOwotICAgIH0KLQot
Ci0gICAgQENvbHVtbihuYW1lPTNEIlJTSUVCMTEiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMp
Ci0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIxMSgpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMucnNpZWIxMTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjExKEJpZ0RlY2lt
YWwgcnNpZWIxMSkgewotICAgICAgICB0aGlzLnJzaWViMTEgPTNEIHJzaWViMTE7Ci0gICAgfQot
Ci0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIxMiIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNE
MykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSc2llYjEyKCkgewotICAgICAgICByZXR1cm4g
dGhpcy5yc2llYjEyOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMTIoQmlnRGVj
aW1hbCByc2llYjEyKSB7Ci0gICAgICAgIHRoaXMucnNpZWIxMiA9M0QgcnNpZWIxMjsKLSAgICB9
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSU0lFQjEzIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9
M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMTMoKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLnJzaWViMTM7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnNpZWIxMyhCaWdE
ZWNpbWFsIHJzaWViMTMpIHsKLSAgICAgICAgdGhpcy5yc2llYjEzID0zRCByc2llYjEzOwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJTSUVCMTQiLCBwcmVjaXNpb249M0Q5LCBzY2Fs
ZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIxNCgpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMucnNpZWIxNDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjE0KEJp
Z0RlY2ltYWwgcnNpZWIxNCkgewotICAgICAgICB0aGlzLnJzaWViMTQgPTNEIHJzaWViMTQ7Ci0g
ICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIxNSIsIHByZWNpc2lvbj0zRDksIHNj
YWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSc2llYjE1KCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5yc2llYjE1OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMTUo
QmlnRGVjaW1hbCByc2llYjE1KSB7Ci0gICAgICAgIHRoaXMucnNpZWIxNSA9M0QgcnNpZWIxNTsK
LSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSU0lFQjE2IiwgcHJlY2lzaW9uPTNEOSwg
c2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMTYoKSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLnJzaWViMTY7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnNpZWIx
NihCaWdEZWNpbWFsIHJzaWViMTYpIHsKLSAgICAgICAgdGhpcy5yc2llYjE2ID0zRCByc2llYjE2
OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJTSUVCMTciLCBwcmVjaXNpb249M0Q5
LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIxNygpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMucnNpZWIxNzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSc2ll
YjE3KEJpZ0RlY2ltYWwgcnNpZWIxNykgewotICAgICAgICB0aGlzLnJzaWViMTcgPTNEIHJzaWVi
MTc7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIxOCIsIHByZWNpc2lvbj0z
RDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSc2llYjE4KCkgewotICAg
ICAgICByZXR1cm4gdGhpcy5yc2llYjE4OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJz
aWViMTgoQmlnRGVjaW1hbCByc2llYjE4KSB7Ci0gICAgICAgIHRoaXMucnNpZWIxOCA9M0QgcnNp
ZWIxODsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSU0lFQjE5IiwgcHJlY2lzaW9u
PTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMTkoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLnJzaWViMTk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0
UnNpZWIxOShCaWdEZWNpbWFsIHJzaWViMTkpIHsKLSAgICAgICAgdGhpcy5yc2llYjE5ID0zRCBy
c2llYjE5OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJTSUVCMjAiLCBwcmVjaXNp
b249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIyMCgpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIyMDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXRSc2llYjIwKEJpZ0RlY2ltYWwgcnNpZWIyMCkgewotICAgICAgICB0aGlzLnJzaWViMjAgPTNE
IHJzaWViMjA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIyMSIsIHByZWNp
c2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSc2llYjIxKCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5yc2llYjIxOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lk
IHNldFJzaWViMjEoQmlnRGVjaW1hbCByc2llYjIxKSB7Ci0gICAgICAgIHRoaXMucnNpZWIyMSA9
M0QgcnNpZWIyMTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSRVNUIiwgcHJlY2lz
aW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJlc3QoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLnJlc3Q7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UmVz
dChCaWdEZWNpbWFsIHJlc3QpIHsKLSAgICAgICAgdGhpcy5yZXN0ID0zRCByZXN0OwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIkJFTUVSS1VORyIsIGxlbmd0aD0zRDI0MCkKLSAgICBw
dWJsaWMgU3RyaW5nIGdldEJlbWVya3VuZygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYmVtZXJr
dW5nOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEJlbWVya3VuZyhTdHJpbmcgYmVtZXJr
dW5nKSB7Ci0gICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7Ci0gICAgfQotfQpk
aWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZh
L2RlL2ludGV2YXRpb24vc2U9CmRkYi9tb2RlbC9Hc2llYnVuZ3NpZWIuamF2YQotLS0gYS9iYWNr
ZW5kL3NyYy9tYWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZWRkYi9tb2RlbC9Hc2llYnVuZ3NpZWIu
amF2YQlNb249CiBBcHIgMjkgMTE6MTQ6MjUgMjAxMyArMDIwMAorKysgL2Rldi9udWxsCVRodSBK
YW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSw5NiArMCwwIEBACi0vKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRz
c2Vyaz0KdW5kZQotICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0g
KgotICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNE
djMpPTIwCi0gKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBv
dXQgdGhlCi0gKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIg
Zm9yIGRldGFpbHMuPTIwCi0gKi8KLQotcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5zZWRkYi5t
b2RlbDsKLS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29s
cyAzLjQuMC5DUjEKLQotCi1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQXR0cmlidXRlT3ZlcnJp
ZGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQXR0cmlidXRlT3ZlcnJpZGVzOwotaW1wb3J0
IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbWJl
ZGRlZElkOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKLWltcG9ydCBqYXZheC5w
ZXJzaXN0ZW5jZS5UYWJsZTsKLQotLyoqCi0gKiBHc2llYnVuZ3NpZWIgZ2VuZXJhdGVkIGJ5IGhi
bTJqYXZhCi0gKi8KLUBFbnRpdHkKLUBUYWJsZShuYW1lPTNEIkdTSUVCVU5HU0lFQiIKLSAgICAs
c2NoZW1hPTNEIlNFRERCIgotKQotcHVibGljIGNsYXNzIEdzaWVidW5nc2llYiAgaW1wbGVtZW50
cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7Ci0KLQotICAgICBwcml2YXRlIEdzaWVidW5nc2llYklk
IGlkOwotCi0gICAgcHVibGljIEdzaWVidW5nc2llYigpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
R3NpZWJ1bmdzaWViKEdzaWVidW5nc2llYklkIGlkKSB7Ci0gICAgICAgdGhpcy5pZCA9M0QgaWQ7
Ci0gICAgfQotCi0gICAgIEBFbWJlZGRlZElkCi0KLQotICAgIEBBdHRyaWJ1dGVPdmVycmlkZXMo
IHsKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZ2xvdHJlY2h0ZWlkIiwgY29s
dW1uPTNEQENvbHVtbihuYW1lPTNEPQoiR0xPVFJFQ0hURUlEIiwgbnVsbGFibGU9M0RmYWxzZSwg
cHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEMCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRl
KG5hbWU9M0QiZ3NpZWJzYXR6aWQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiPQpHU0lFQlNB
VFpJRCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDApICksCi0g
ICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImdtYXNzZSIsIGNvbHVtbj0zREBDb2x1
bW4obmFtZT0zRCJHTUFTUz0KRSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKLSAgICAg
ICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hlMDEiLCBjb2x1bW49M0RAQ29sdW1u
KG5hbWU9M0QiTUFTPQpDSEUwMSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAg
ICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2swMSIsIGNvbHVtbj0zREBDb2x1bW4o
bmFtZT0zRCJSVUVDPQpLMDEiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCi0gICAgICAg
IEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTAyIiwgY29sdW1uPTNEQENvbHVtbihu
YW1lPTNEIk1BUz0KQ0hFMDIiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAg
IEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMDIiLCBjb2x1bW49M0RAQ29sdW1uKG5h
bWU9M0QiUlVFQz0KSzAyIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAotICAgICAgICBA
QXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUwMyIsIGNvbHVtbj0zREBDb2x1bW4obmFt
ZT0zRCJNQVM9CkNIRTAzIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAgICAgICBA
QXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazAzIiwgY29sdW1uPTNEQENvbHVtbihuYW1l
PTNEIlJVRUM9CkswMyIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0
dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hlMDQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9
M0QiTUFTPQpDSEUwNCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0
dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2swNCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0z
RCJSVUVDPQpLMDQiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRy
aWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTA1IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNE
Ik1BUz0KQ0hFMDUiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRy
aWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMDUiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0Qi
UlVFQz0KSzA1IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmli
dXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUwNiIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJN
QVM9CkNIRTA2IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmli
dXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazA2IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJV
RUM9CkswNiIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0
ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hlMDciLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFT
PQpDSEUwNyIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0
ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2swNyIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVD
PQpLMDciLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVP
dmVycmlkZShuYW1lPTNEIm1hc2NoZTA4IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0K
Q0hFMDgiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVP
dmVycmlkZShuYW1lPTNEInJ1ZWNrMDgiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0K
SzA4IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3Zl
cnJpZGUobmFtZT0zRCJtYXNjaGUwOSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNI
RTA5IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3Zl
cnJpZGUobmFtZT0zRCJydWVjazA5IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9Cksw
OSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJy
aWRlKG5hbWU9M0QibWFzY2hlMTAiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpDSEUx
MCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJy
aWRlKG5hbWU9M0QicnVlY2sxMCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpLMTAi
LCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlk
ZShuYW1lPTNEIm1hc2NoZTExIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMTEi
LCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlk
ZShuYW1lPTNEInJ1ZWNrMTEiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzExIiwg
cHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUo
bmFtZT0zRCJtYXNjaGUxMiIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNIRTEyIiwg
cHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUo
bmFtZT0zRCJydWVjazEyIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9CksxMiIsIHBy
ZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5h
bWU9M0QibWFzY2hlMTMiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpDSEUxMyIsIHBy
ZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5h
bWU9M0QicnVlY2sxMyIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpLMTMiLCBwcmVj
aXNpb249M0Q5LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1l
PTNEIm1hc2NoZTE0IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMTQiLCBwcmVj
aXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1l
PTNEInJ1ZWNrMTQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzE0IiwgcHJlY2lz
aW9uPTNEOSwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0z
RCJtYXNjaGUxNSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNIRTE1IiwgcHJlY2lz
aW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0z
RCJydWVjazE1IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9CksxNSIsIHByZWNpc2lv
bj0zRDksIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qi
bWFzY2hlMTYiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpDSEUxNiIsIHByZWNpc2lv
bj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qi
cnVlY2sxNiIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpLMTYiLCBwcmVjaXNpb249
M0Q5LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1h
c2NoZTE3IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMTciLCBwcmVjaXNpb249
M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1
ZWNrMTciLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzE3IiwgcHJlY2lzaW9uPTNE
OSwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNj
aGUxOCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNIRTE4IiwgcHJlY2lzaW9uPTNE
Nywgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVj
azE4IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9CksxOCIsIHByZWNpc2lvbj0zRDks
IHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hl
MTkiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpDSEUxOSIsIHByZWNpc2lvbj0zRDcs
IHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2sx
OSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpLMTkiLCBwcmVjaXNpb249M0Q5LCBz
Y2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTIw
IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMjAiLCBwcmVjaXNpb249M0Q3LCBz
Y2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMjAi
LCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzIwIiwgcHJlY2lzaW9uPTNEOSwgc2Nh
bGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUyMSIs
IGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNIRTIxIiwgcHJlY2lzaW9uPTNENywgc2Nh
bGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazIxIiwg
Y29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9CksyMSIsIHByZWNpc2lvbj0zRDksIHNjYWxl
PTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicmVzdCIsIGNvbHVt
bj0zREBDb2x1bW4obmFtZT0zRCJSRVNUIiwgPQpwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICkg
fSApCi0gICAgcHVibGljIEdzaWVidW5nc2llYklkIGdldElkKCkgewotICAgICAgICByZXR1cm4g
dGhpcy5pZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRJZChHc2llYnVuZ3NpZWJJZCBp
ZCkgewotICAgICAgICB0aGlzLmlkID0zRCBpZDsKLSAgICB9Ci19CmRpZmYgLXIgYmM0ZTFiZjI2
MjI3IC1yIDFlNjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9tYWluL2phdmEvZGUvaW50ZXZhdGlvbi9z
ZT0KZGRiL21vZGVsL0dzaWVidW5nc2llYklkLmphdmEKLS0tIGEvYmFja2VuZC9zcmMvbWFpbi9q
YXZhL2RlL2ludGV2YXRpb24vc2VkZGIvbW9kZWwvR3NpZWJ1bmdzaWViSWQuamF2YQlNPQpvbiBB
cHIgMjkgMTE6MTQ6MjUgMjAxMyArMDIwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6
MDAgMTk3MCArMDAwMApAQCAtMSw2OTUgKzAsMCBAQAotLyogQ29weXJpZ2h0IChDKSAyMDExLCAy
MDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUK
LSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoKLSAqIFRoaXMg
ZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAotICog
YW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQotICog
ZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxz
Lj0yMAotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7Ci0vLyBH
ZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1Ix
Ci0KLQotaW1wb3J0IGphdmEubWF0aC5CaWdEZWNpbWFsOwotaW1wb3J0IGphdmF4LnBlcnNpc3Rl
bmNlLkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbWJlZGRhYmxlOwotCi0vKioK
LSAqIEdzaWVidW5nc2llYklkIGdlbmVyYXRlZCBieSBoYm0yamF2YQotICovCi1ARW1iZWRkYWJs
ZQotcHVibGljIGNsYXNzIEdzaWVidW5nc2llYklkICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFs
aXphYmxlIHsKLQotCi0gICAgIHByaXZhdGUgbG9uZyBnbG90cmVjaHRlaWQ7Ci0gICAgIHByaXZh
dGUgbG9uZyBnc2llYnNhdHppZDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGdtYXNzZTsKLSAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTAxOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
cnVlY2swMTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTAyOwotICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgcnVlY2swMjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTAzOwot
ICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2swMzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IG1hc2NoZTA0OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2swNDsKLSAgICAgcHJpdmF0
ZSBCaWdEZWNpbWFsIG1hc2NoZTA1OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2swNTsK
LSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTA2OwotICAgICBwcml2YXRlIEJpZ0RlY2lt
YWwgcnVlY2swNjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTA3OwotICAgICBwcml2
YXRlIEJpZ0RlY2ltYWwgcnVlY2swNzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTA4
OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2swODsKLSAgICAgcHJpdmF0ZSBCaWdEZWNp
bWFsIG1hc2NoZTA5OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2swOTsKLSAgICAgcHJp
dmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTEwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2sx
MDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTExOwotICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgcnVlY2sxMTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTEyOwotICAgICBw
cml2YXRlIEJpZ0RlY2ltYWwgcnVlY2sxMjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2No
ZTEzOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2sxMzsKLSAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIG1hc2NoZTE0OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2sxNDsKLSAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTE1OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVl
Y2sxNTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTE2OwotICAgICBwcml2YXRlIEJp
Z0RlY2ltYWwgcnVlY2sxNjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTE3OwotICAg
ICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2sxNzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1h
c2NoZTE4OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2sxODsKLSAgICAgcHJpdmF0ZSBC
aWdEZWNpbWFsIG1hc2NoZTE5OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnVlY2sxOTsKLSAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTIwOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
cnVlY2syMDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1hc2NoZTIxOwotICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgcnVlY2syMTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJlc3Q7Ci0KLSAg
ICBwdWJsaWMgR3NpZWJ1bmdzaWViSWQoKSB7Ci0gICAgfQotCi0KLSAgICBwdWJsaWMgR3NpZWJ1
bmdzaWViSWQobG9uZyBnbG90cmVjaHRlaWQsIGxvbmcgZ3NpZWJzYXR6aWQpIHsKLSAgICAgICAg
dGhpcy5nbG90cmVjaHRlaWQgPTNEIGdsb3RyZWNodGVpZDsKLSAgICAgICAgdGhpcy5nc2llYnNh
dHppZCA9M0QgZ3NpZWJzYXR6aWQ7Ci0gICAgfQotICAgIHB1YmxpYyBHc2llYnVuZ3NpZWJJZChs
b25nIGdsb3RyZWNodGVpZCwgbG9uZyBnc2llYnNhdHppZCwgQmlnRGVjaW1hbCA9CmdtYXNzZSwg
QmlnRGVjaW1hbCBtYXNjaGUwMSwgQmlnRGVjaW1hbCBydWVjazAxLCBCaWdEZWNpbWFsIG1hc2No
ZTAyLCBCaWdEZT0KY2ltYWwgcnVlY2swMiwgQmlnRGVjaW1hbCBtYXNjaGUwMywgQmlnRGVjaW1h
bCBydWVjazAzLCBCaWdEZWNpbWFsIG1hc2NoZTA0PQosIEJpZ0RlY2ltYWwgcnVlY2swNCwgQmln
RGVjaW1hbCBtYXNjaGUwNSwgQmlnRGVjaW1hbCBydWVjazA1LCBCaWdEZWNpbWFsIG09CmFzY2hl
MDYsIEJpZ0RlY2ltYWwgcnVlY2swNiwgQmlnRGVjaW1hbCBtYXNjaGUwNywgQmlnRGVjaW1hbCBy
dWVjazA3LCBCaWdEZT0KY2ltYWwgbWFzY2hlMDgsIEJpZ0RlY2ltYWwgcnVlY2swOCwgQmlnRGVj
aW1hbCBtYXNjaGUwOSwgQmlnRGVjaW1hbCBydWVjazA5PQosIEJpZ0RlY2ltYWwgbWFzY2hlMTAs
IEJpZ0RlY2ltYWwgcnVlY2sxMCwgQmlnRGVjaW1hbCBtYXNjaGUxMSwgQmlnRGVjaW1hbCA9CnJ1
ZWNrMTEsIEJpZ0RlY2ltYWwgbWFzY2hlMTIsIEJpZ0RlY2ltYWwgcnVlY2sxMiwgQmlnRGVjaW1h
bCBtYXNjaGUxMywgQmlnRD0KZWNpbWFsIHJ1ZWNrMTMsIEJpZ0RlY2ltYWwgbWFzY2hlMTQsIEJp
Z0RlY2ltYWwgcnVlY2sxNCwgQmlnRGVjaW1hbCBtYXNjaGUxPQo1LCBCaWdEZWNpbWFsIHJ1ZWNr
MTUsIEJpZ0RlY2ltYWwgbWFzY2hlMTYsIEJpZ0RlY2ltYWwgcnVlY2sxNiwgQmlnRGVjaW1hbCA9
Cm1hc2NoZTE3LCBCaWdEZWNpbWFsIHJ1ZWNrMTcsIEJpZ0RlY2ltYWwgbWFzY2hlMTgsIEJpZ0Rl
Y2ltYWwgcnVlY2sxOCwgQmlnRD0KZWNpbWFsIG1hc2NoZTE5LCBCaWdEZWNpbWFsIHJ1ZWNrMTks
IEJpZ0RlY2ltYWwgbWFzY2hlMjAsIEJpZ0RlY2ltYWwgcnVlY2syPQowLCBCaWdEZWNpbWFsIG1h
c2NoZTIxLCBCaWdEZWNpbWFsIHJ1ZWNrMjEsIEJpZ0RlY2ltYWwgcmVzdCkgewotICAgICAgIHRo
aXMuZ2xvdHJlY2h0ZWlkID0zRCBnbG90cmVjaHRlaWQ7Ci0gICAgICAgdGhpcy5nc2llYnNhdHpp
ZCA9M0QgZ3NpZWJzYXR6aWQ7Ci0gICAgICAgdGhpcy5nbWFzc2UgPTNEIGdtYXNzZTsKLSAgICAg
ICB0aGlzLm1hc2NoZTAxID0zRCBtYXNjaGUwMTsKLSAgICAgICB0aGlzLnJ1ZWNrMDEgPTNEIHJ1
ZWNrMDE7Ci0gICAgICAgdGhpcy5tYXNjaGUwMiA9M0QgbWFzY2hlMDI7Ci0gICAgICAgdGhpcy5y
dWVjazAyID0zRCBydWVjazAyOwotICAgICAgIHRoaXMubWFzY2hlMDMgPTNEIG1hc2NoZTAzOwot
ICAgICAgIHRoaXMucnVlY2swMyA9M0QgcnVlY2swMzsKLSAgICAgICB0aGlzLm1hc2NoZTA0ID0z
RCBtYXNjaGUwNDsKLSAgICAgICB0aGlzLnJ1ZWNrMDQgPTNEIHJ1ZWNrMDQ7Ci0gICAgICAgdGhp
cy5tYXNjaGUwNSA9M0QgbWFzY2hlMDU7Ci0gICAgICAgdGhpcy5ydWVjazA1ID0zRCBydWVjazA1
OwotICAgICAgIHRoaXMubWFzY2hlMDYgPTNEIG1hc2NoZTA2OwotICAgICAgIHRoaXMucnVlY2sw
NiA9M0QgcnVlY2swNjsKLSAgICAgICB0aGlzLm1hc2NoZTA3ID0zRCBtYXNjaGUwNzsKLSAgICAg
ICB0aGlzLnJ1ZWNrMDcgPTNEIHJ1ZWNrMDc7Ci0gICAgICAgdGhpcy5tYXNjaGUwOCA9M0QgbWFz
Y2hlMDg7Ci0gICAgICAgdGhpcy5ydWVjazA4ID0zRCBydWVjazA4OwotICAgICAgIHRoaXMubWFz
Y2hlMDkgPTNEIG1hc2NoZTA5OwotICAgICAgIHRoaXMucnVlY2swOSA9M0QgcnVlY2swOTsKLSAg
ICAgICB0aGlzLm1hc2NoZTEwID0zRCBtYXNjaGUxMDsKLSAgICAgICB0aGlzLnJ1ZWNrMTAgPTNE
IHJ1ZWNrMTA7Ci0gICAgICAgdGhpcy5tYXNjaGUxMSA9M0QgbWFzY2hlMTE7Ci0gICAgICAgdGhp
cy5ydWVjazExID0zRCBydWVjazExOwotICAgICAgIHRoaXMubWFzY2hlMTIgPTNEIG1hc2NoZTEy
OwotICAgICAgIHRoaXMucnVlY2sxMiA9M0QgcnVlY2sxMjsKLSAgICAgICB0aGlzLm1hc2NoZTEz
ID0zRCBtYXNjaGUxMzsKLSAgICAgICB0aGlzLnJ1ZWNrMTMgPTNEIHJ1ZWNrMTM7Ci0gICAgICAg
dGhpcy5tYXNjaGUxNCA9M0QgbWFzY2hlMTQ7Ci0gICAgICAgdGhpcy5ydWVjazE0ID0zRCBydWVj
azE0OwotICAgICAgIHRoaXMubWFzY2hlMTUgPTNEIG1hc2NoZTE1OwotICAgICAgIHRoaXMucnVl
Y2sxNSA9M0QgcnVlY2sxNTsKLSAgICAgICB0aGlzLm1hc2NoZTE2ID0zRCBtYXNjaGUxNjsKLSAg
ICAgICB0aGlzLnJ1ZWNrMTYgPTNEIHJ1ZWNrMTY7Ci0gICAgICAgdGhpcy5tYXNjaGUxNyA9M0Qg
bWFzY2hlMTc7Ci0gICAgICAgdGhpcy5ydWVjazE3ID0zRCBydWVjazE3OwotICAgICAgIHRoaXMu
bWFzY2hlMTggPTNEIG1hc2NoZTE4OwotICAgICAgIHRoaXMucnVlY2sxOCA9M0QgcnVlY2sxODsK
LSAgICAgICB0aGlzLm1hc2NoZTE5ID0zRCBtYXNjaGUxOTsKLSAgICAgICB0aGlzLnJ1ZWNrMTkg
PTNEIHJ1ZWNrMTk7Ci0gICAgICAgdGhpcy5tYXNjaGUyMCA9M0QgbWFzY2hlMjA7Ci0gICAgICAg
dGhpcy5ydWVjazIwID0zRCBydWVjazIwOwotICAgICAgIHRoaXMubWFzY2hlMjEgPTNEIG1hc2No
ZTIxOwotICAgICAgIHRoaXMucnVlY2syMSA9M0QgcnVlY2syMTsKLSAgICAgICB0aGlzLnJlc3Qg
PTNEIHJlc3Q7Ci0gICAgfQotCi0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJHTE9UUkVDSFRFSUQi
LCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9Cj0zRDApCi0gICAgcHVi
bGljIGxvbmcgZ2V0R2xvdHJlY2h0ZWlkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5nbG90cmVj
aHRlaWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0R2xvdHJlY2h0ZWlkKGxvbmcgZ2xv
dHJlY2h0ZWlkKSB7Ci0gICAgICAgIHRoaXMuZ2xvdHJlY2h0ZWlkID0zRCBnbG90cmVjaHRlaWQ7
Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiR1NJRUJTQVRaSUQiLCBudWxsYWJsZT0z
RGZhbHNlLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9Cj0zRDApCi0gICAgcHVibGljIGxvbmcgZ2V0
R3NpZWJzYXR6aWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmdzaWVic2F0emlkOwotICAgIH0K
LQotICAgIHB1YmxpYyB2b2lkIHNldEdzaWVic2F0emlkKGxvbmcgZ3NpZWJzYXR6aWQpIHsKLSAg
ICAgICAgdGhpcy5nc2llYnNhdHppZCA9M0QgZ3NpZWJzYXR6aWQ7Ci0gICAgfQotCi0KLSAgICBA
Q29sdW1uKG5hbWU9M0QiR01BU1NFIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldEdtYXNzZSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ21hc3Nl
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEdtYXNzZShCaWdEZWNpbWFsIGdtYXNzZSkg
ewotICAgICAgICB0aGlzLmdtYXNzZSA9M0QgZ21hc3NlOwotICAgIH0KLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIk1BU0NIRTAxIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldE1hc2NoZTAxKCkgewotICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUw
MTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUwMShCaWdEZWNpbWFsIG1hc2No
ZTAxKSB7Ci0gICAgICAgIHRoaXMubWFzY2hlMDEgPTNEIG1hc2NoZTAxOwotICAgIH0KLQotCi0g
ICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMDEiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0g
ICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2swMSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
cnVlY2swMTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazAxKEJpZ0RlY2ltYWwg
cnVlY2swMSkgewotICAgICAgICB0aGlzLnJ1ZWNrMDEgPTNEIHJ1ZWNrMDE7Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMDIiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQp
Ci0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMDIoKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLm1hc2NoZTAyOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTAyKEJpZ0Rl
Y2ltYWwgbWFzY2hlMDIpIHsKLSAgICAgICAgdGhpcy5tYXNjaGUwMiA9M0QgbWFzY2hlMDI7Ci0g
ICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0swMiIsIHByZWNpc2lvbj0zRDksIHNj
YWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazAyKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5ydWVjazAyOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMDIo
QmlnRGVjaW1hbCBydWVjazAyKSB7Ci0gICAgICAgIHRoaXMucnVlY2swMiA9M0QgcnVlY2swMjsK
LSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUwMyIsIHByZWNpc2lvbj0zRDcs
IHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUwMygpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMubWFzY2hlMDM7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWFz
Y2hlMDMoQmlnRGVjaW1hbCBtYXNjaGUwMykgewotICAgICAgICB0aGlzLm1hc2NoZTAzID0zRCBt
YXNjaGUwMzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzAzIiwgcHJlY2lz
aW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMDMoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMDM7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0UnVlY2swMyhCaWdEZWNpbWFsIHJ1ZWNrMDMpIHsKLSAgICAgICAgdGhpcy5ydWVjazAzID0z
RCBydWVjazAzOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTA0IiwgcHJl
Y2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTA0
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUwNDsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRNYXNjaGUwNChCaWdEZWNpbWFsIG1hc2NoZTA0KSB7Ci0gICAgICAgIHRoaXMubWFz
Y2hlMDQgPTNEIG1hc2NoZTA0OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJVRUNL
MDQiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0
UnVlY2swNCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnVlY2swNDsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRSdWVjazA0KEJpZ0RlY2ltYWwgcnVlY2swNCkgewotICAgICAgICB0aGlz
LnJ1ZWNrMDQgPTNEIHJ1ZWNrMDQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUFT
Q0hFMDUiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0TWFzY2hlMDUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTA1OwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTA1KEJpZ0RlY2ltYWwgbWFzY2hlMDUpIHsKLSAgICAg
ICAgdGhpcy5tYXNjaGUwNSA9M0QgbWFzY2hlMDU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiUlVFQ0swNSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmln
RGVjaW1hbCBnZXRSdWVjazA1KCkgewotICAgICAgICByZXR1cm4gdGhpcy5ydWVjazA1OwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMDUoQmlnRGVjaW1hbCBydWVjazA1KSB7Ci0g
ICAgICAgIHRoaXMucnVlY2swNSA9M0QgcnVlY2swNTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4o
bmFtZT0zRCJNQVNDSEUwNiIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMg
QmlnRGVjaW1hbCBnZXRNYXNjaGUwNigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMDY7
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMDYoQmlnRGVjaW1hbCBtYXNjaGUw
NikgewotICAgICAgICB0aGlzLm1hc2NoZTA2ID0zRCBtYXNjaGUwNjsKLSAgICB9Ci0KLQotICAg
IEBDb2x1bW4obmFtZT0zRCJSVUVDSzA2IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMDYoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJ1
ZWNrMDY7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnVlY2swNihCaWdEZWNpbWFsIHJ1
ZWNrMDYpIHsKLSAgICAgICAgdGhpcy5ydWVjazA2ID0zRCBydWVjazA2OwotICAgIH0KLQotCi0g
ICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTA3IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQot
ICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTA3KCkgewotICAgICAgICByZXR1cm4gdGhp
cy5tYXNjaGUwNzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUwNyhCaWdEZWNp
bWFsIG1hc2NoZTA3KSB7Ci0gICAgICAgIHRoaXMubWFzY2hlMDcgPTNEIG1hc2NoZTA3OwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMDciLCBwcmVjaXNpb249M0Q5LCBzY2Fs
ZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2swNygpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMucnVlY2swNzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazA3KEJp
Z0RlY2ltYWwgcnVlY2swNykgewotICAgICAgICB0aGlzLnJ1ZWNrMDcgPTNEIHJ1ZWNrMDc7Ci0g
ICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMDgiLCBwcmVjaXNpb249M0Q3LCBz
Y2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMDgoKSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLm1hc2NoZTA4OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1hc2No
ZTA4KEJpZ0RlY2ltYWwgbWFzY2hlMDgpIHsKLSAgICAgICAgdGhpcy5tYXNjaGUwOCA9M0QgbWFz
Y2hlMDg7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0swOCIsIHByZWNpc2lv
bj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazA4KCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5ydWVjazA4OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dFJ1ZWNrMDgoQmlnRGVjaW1hbCBydWVjazA4KSB7Ci0gICAgICAgIHRoaXMucnVlY2swOCA9M0Qg
cnVlY2swODsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUwOSIsIHByZWNp
c2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUwOSgp
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMDk7Ci0gICAgfQotCi0gICAgcHVibGljIHZv
aWQgc2V0TWFzY2hlMDkoQmlnRGVjaW1hbCBtYXNjaGUwOSkgewotICAgICAgICB0aGlzLm1hc2No
ZTA5ID0zRCBtYXNjaGUwOTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzA5
IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1
ZWNrMDkoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMDk7Ci0gICAgfQotCi0gICAgcHVi
bGljIHZvaWQgc2V0UnVlY2swOShCaWdEZWNpbWFsIHJ1ZWNrMDkpIHsKLSAgICAgICAgdGhpcy5y
dWVjazA5ID0zRCBydWVjazA5OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1BU0NI
RTEwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdl
dE1hc2NoZTEwKCkgewotICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUxMDsKLSAgICB9Ci0KLSAg
ICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUxMChCaWdEZWNpbWFsIG1hc2NoZTEwKSB7Ci0gICAgICAg
IHRoaXMubWFzY2hlMTAgPTNEIG1hc2NoZTEwOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIlJVRUNLMTAiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0UnVlY2sxMCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnVlY2sxMDsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazEwKEJpZ0RlY2ltYWwgcnVlY2sxMCkgewotICAg
ICAgICB0aGlzLnJ1ZWNrMTAgPTNEIHJ1ZWNrMTA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiTUFTQ0hFMTEiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0TWFzY2hlMTEoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTExOwot
ICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTExKEJpZ0RlY2ltYWwgbWFzY2hlMTEp
IHsKLSAgICAgICAgdGhpcy5tYXNjaGUxMSA9M0QgbWFzY2hlMTE7Ci0gICAgfQotCi0KLSAgICBA
Q29sdW1uKG5hbWU9M0QiUlVFQ0sxMSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBw
dWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazExKCkgewotICAgICAgICByZXR1cm4gdGhpcy5ydWVj
azExOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMTEoQmlnRGVjaW1hbCBydWVj
azExKSB7Ci0gICAgICAgIHRoaXMucnVlY2sxMSA9M0QgcnVlY2sxMTsKLSAgICB9Ci0KLQotICAg
IEBDb2x1bW4obmFtZT0zRCJNQVNDSEUxMiIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAg
ICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUxMigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
bWFzY2hlMTI7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMTIoQmlnRGVjaW1h
bCBtYXNjaGUxMikgewotICAgICAgICB0aGlzLm1hc2NoZTEyID0zRCBtYXNjaGUxMjsKLSAgICB9
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzEyIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9
M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMTIoKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLnJ1ZWNrMTI7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnVlY2sxMihCaWdE
ZWNpbWFsIHJ1ZWNrMTIpIHsKLSAgICAgICAgdGhpcy5ydWVjazEyID0zRCBydWVjazEyOwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTEzIiwgcHJlY2lzaW9uPTNENywgc2Nh
bGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTEzKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5tYXNjaGUxMzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUx
MyhCaWdEZWNpbWFsIG1hc2NoZTEzKSB7Ci0gICAgICAgIHRoaXMubWFzY2hlMTMgPTNEIG1hc2No
ZTEzOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMTMiLCBwcmVjaXNpb249
M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2sxMygpIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMucnVlY2sxMzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRS
dWVjazEzKEJpZ0RlY2ltYWwgcnVlY2sxMykgewotICAgICAgICB0aGlzLnJ1ZWNrMTMgPTNEIHJ1
ZWNrMTM7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMTQiLCBwcmVjaXNp
b249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMTQoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTE0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lk
IHNldE1hc2NoZTE0KEJpZ0RlY2ltYWwgbWFzY2hlMTQpIHsKLSAgICAgICAgdGhpcy5tYXNjaGUx
NCA9M0QgbWFzY2hlMTQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0sxNCIs
IHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVj
azE0KCkgewotICAgICAgICByZXR1cm4gdGhpcy5ydWVjazE0OwotICAgIH0KLQotICAgIHB1Ymxp
YyB2b2lkIHNldFJ1ZWNrMTQoQmlnRGVjaW1hbCBydWVjazE0KSB7Ci0gICAgICAgIHRoaXMucnVl
Y2sxNCA9M0QgcnVlY2sxNDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUx
NSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRN
YXNjaGUxNSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMTU7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0TWFzY2hlMTUoQmlnRGVjaW1hbCBtYXNjaGUxNSkgewotICAgICAgICB0
aGlzLm1hc2NoZTE1ID0zRCBtYXNjaGUxNTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJSVUVDSzE1IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNp
bWFsIGdldFJ1ZWNrMTUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMTU7Ci0gICAgfQot
Ci0gICAgcHVibGljIHZvaWQgc2V0UnVlY2sxNShCaWdEZWNpbWFsIHJ1ZWNrMTUpIHsKLSAgICAg
ICAgdGhpcy5ydWVjazE1ID0zRCBydWVjazE1OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIk1BU0NIRTE2IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdE
ZWNpbWFsIGdldE1hc2NoZTE2KCkgewotICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUxNjsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUxNihCaWdEZWNpbWFsIG1hc2NoZTE2KSB7
Ci0gICAgICAgIHRoaXMubWFzY2hlMTYgPTNEIG1hc2NoZTE2OwotICAgIH0KLQotCi0gICAgQENv
bHVtbihuYW1lPTNEIlJVRUNLMTYiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVi
bGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2sxNigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnVlY2sx
NjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazE2KEJpZ0RlY2ltYWwgcnVlY2sx
NikgewotICAgICAgICB0aGlzLnJ1ZWNrMTYgPTNEIHJ1ZWNrMTY7Ci0gICAgfQotCi0KLSAgICBA
Q29sdW1uKG5hbWU9M0QiTUFTQ0hFMTciLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAg
cHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMTcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1h
c2NoZTE3OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTE3KEJpZ0RlY2ltYWwg
bWFzY2hlMTcpIHsKLSAgICAgICAgdGhpcy5tYXNjaGUxNyA9M0QgbWFzY2hlMTc7Ci0gICAgfQot
Ci0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0sxNyIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNE
MykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazE3KCkgewotICAgICAgICByZXR1cm4g
dGhpcy5ydWVjazE3OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMTcoQmlnRGVj
aW1hbCBydWVjazE3KSB7Ci0gICAgICAgIHRoaXMucnVlY2sxNyA9M0QgcnVlY2sxNzsKLSAgICB9
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUxOCIsIHByZWNpc2lvbj0zRDcsIHNjYWxl
PTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUxOCgpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMubWFzY2hlMTg7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMTgo
QmlnRGVjaW1hbCBtYXNjaGUxOCkgewotICAgICAgICB0aGlzLm1hc2NoZTE4ID0zRCBtYXNjaGUx
ODsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzE4IiwgcHJlY2lzaW9uPTNE
OSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMTgoKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLnJ1ZWNrMTg7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnVl
Y2sxOChCaWdEZWNpbWFsIHJ1ZWNrMTgpIHsKLSAgICAgICAgdGhpcy5ydWVjazE4ID0zRCBydWVj
azE4OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTE5IiwgcHJlY2lzaW9u
PTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTE5KCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUxOTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXRNYXNjaGUxOShCaWdEZWNpbWFsIG1hc2NoZTE5KSB7Ci0gICAgICAgIHRoaXMubWFzY2hlMTkg
PTNEIG1hc2NoZTE5OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMTkiLCBw
cmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2sx
OSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnVlY2sxOTsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRSdWVjazE5KEJpZ0RlY2ltYWwgcnVlY2sxOSkgewotICAgICAgICB0aGlzLnJ1ZWNr
MTkgPTNEIHJ1ZWNrMTk7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMjAi
LCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFz
Y2hlMjAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTIwOwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldE1hc2NoZTIwKEJpZ0RlY2ltYWwgbWFzY2hlMjApIHsKLSAgICAgICAgdGhp
cy5tYXNjaGUyMCA9M0QgbWFzY2hlMjA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0Qi
UlVFQ0syMCIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1h
bCBnZXRSdWVjazIwKCkgewotICAgICAgICByZXR1cm4gdGhpcy5ydWVjazIwOwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMjAoQmlnRGVjaW1hbCBydWVjazIwKSB7Ci0gICAgICAg
IHRoaXMucnVlY2syMCA9M0QgcnVlY2syMDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJNQVNDSEUyMSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVj
aW1hbCBnZXRNYXNjaGUyMSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMjE7Ci0gICAg
fQotCi0gICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMjEoQmlnRGVjaW1hbCBtYXNjaGUyMSkgewot
ICAgICAgICB0aGlzLm1hc2NoZTIxID0zRCBtYXNjaGUyMTsKLSAgICB9Ci0KLQotICAgIEBDb2x1
bW4obmFtZT0zRCJSVUVDSzIxIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldFJ1ZWNrMjEoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMjE7
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnVlY2syMShCaWdEZWNpbWFsIHJ1ZWNrMjEp
IHsKLSAgICAgICAgdGhpcy5ydWVjazIxID0zRCBydWVjazIxOwotICAgIH0KLQotCi0gICAgQENv
bHVtbihuYW1lPTNEIlJFU1QiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGlj
IEJpZ0RlY2ltYWwgZ2V0UmVzdCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucmVzdDsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSZXN0KEJpZ0RlY2ltYWwgcmVzdCkgewotICAgICAgICB0
aGlzLnJlc3QgPTNEIHJlc3Q7Ci0gICAgfQotCi0KLSAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhP
YmplY3Qgb3RoZXIpIHsKLSAgICAgICAgIGlmICggKHRoaXMgPTNEPTNEIG90aGVyICkgKSByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgIGlmICggKG90aGVyID0zRD0zRCBudWxsICkgKSByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICBpZiAoICEob3RoZXIgaW5zdGFuY2VvZiBHc2llYnVuZ3NpZWJJZCkgKSBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICBHc2llYnVuZ3NpZWJJZCBjYXN0T3RoZXIgPTNEICggR3Np
ZWJ1bmdzaWViSWQgKSBvdGhlcjsKLQotICAgICAgICAgcmV0dXJuICh0aGlzLmdldEdsb3RyZWNo
dGVpZCgpPTNEPTNEY2FzdE90aGVyLmdldEdsb3RyZWNodGVpZCgpKQotICYmICh0aGlzLmdldEdz
aWVic2F0emlkKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0R3NpZWJzYXR6aWQoKSkKLSAmJiAoICh0aGlz
LmdldEdtYXNzZSgpPTNEPTNEY2FzdE90aGVyLmdldEdtYXNzZSgpKSB8fCAoIHRoaXMuZ2V0R21h
c3NlKCkhPQo9M0RudWxsICYmIGNhc3RPdGhlci5nZXRHbWFzc2UoKSE9M0RudWxsICYmIHRoaXMu
Z2V0R21hc3NlKCkuZXF1YWxzKGNhc3RPdGg9CmVyLmdldEdtYXNzZSgpKSApICkKLSAmJiAoICh0
aGlzLmdldE1hc2NoZTAxKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMDEoKSkgfHwgKCB0aGlz
LmdldE1hc2NoPQplMDEoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUwMSgpIT0zRG51
bGwgJiYgdGhpcy5nZXRNYXNjaGUwMSgpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUwMSgp
KSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMDEoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazAx
KCkpIHx8ICggdGhpcy5nZXRSdWVjazAxPQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVj
azAxKCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMDEoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0
UnVlY2swMSgpKSApICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTAyKCk9M0Q9M0RjYXN0T3RoZXIu
Z2V0TWFzY2hlMDIoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMDIoKSE9M0RudWxsICYmIGNhc3RP
dGhlci5nZXRNYXNjaGUwMigpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUwMigpLmVxdWE9Cmxz
KGNhc3RPdGhlci5nZXRNYXNjaGUwMigpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMDIoKT0z
RD0zRGNhc3RPdGhlci5nZXRSdWVjazAyKCkpIHx8ICggdGhpcy5nZXRSdWVjazAyPQooKSE9M0Ru
dWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazAyKCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMDIo
KS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2swMigpKSApICkKLSAmJiAoICh0aGlzLmdldE1h
c2NoZTAzKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMDMoKSkgfHwgKCB0aGlzLmdldE1hc2No
PQplMDMoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUwMygpIT0zRG51bGwgJiYgdGhp
cy5nZXRNYXNjaGUwMygpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUwMygpKSApICkKLSAm
JiAoICh0aGlzLmdldFJ1ZWNrMDMoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazAzKCkpIHx8ICgg
dGhpcy5nZXRSdWVjazAzPQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazAzKCkhPTNE
bnVsbCAmJiB0aGlzLmdldFJ1ZWNrMDMoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2swMygp
KSApICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTA0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hl
MDQoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMDQoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRN
YXNjaGUwNCgpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUwNCgpLmVxdWE9CmxzKGNhc3RPdGhl
ci5nZXRNYXNjaGUwNCgpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMDQoKT0zRD0zRGNhc3RP
dGhlci5nZXRSdWVjazA0KCkpIHx8ICggdGhpcy5nZXRSdWVjazA0PQooKSE9M0RudWxsICYmIGNh
c3RPdGhlci5nZXRSdWVjazA0KCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMDQoKS5lcXVhbHMo
Y2E9CnN0T3RoZXIuZ2V0UnVlY2swNCgpKSApICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTA1KCk9
M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMDUoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMDUoKSE9
M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUwNSgpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNj
aGUwNSgpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUwNSgpKSApICkKLSAmJiAoICh0aGlz
LmdldFJ1ZWNrMDUoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazA1KCkpIHx8ICggdGhpcy5nZXRS
dWVjazA1PQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazA1KCkhPTNEbnVsbCAmJiB0
aGlzLmdldFJ1ZWNrMDUoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2swNSgpKSApICkKLSAm
JiAoICh0aGlzLmdldE1hc2NoZTA2KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMDYoKSkgfHwg
KCB0aGlzLmdldE1hc2NoPQplMDYoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUwNigp
IT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUwNigpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNj
aGUwNigpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMDYoKT0zRD0zRGNhc3RPdGhlci5nZXRS
dWVjazA2KCkpIHx8ICggdGhpcy5nZXRSdWVjazA2PQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5n
ZXRSdWVjazA2KCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMDYoKS5lcXVhbHMoY2E9CnN0T3Ro
ZXIuZ2V0UnVlY2swNigpKSApICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTA3KCk9M0Q9M0RjYXN0
T3RoZXIuZ2V0TWFzY2hlMDcoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMDcoKSE9M0RudWxsICYm
IGNhc3RPdGhlci5nZXRNYXNjaGUwNygpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUwNygpLmVx
dWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUwNygpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNr
MDcoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazA3KCkpIHx8ICggdGhpcy5nZXRSdWVjazA3PQoo
KSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazA3KCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1
ZWNrMDcoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2swNygpKSApICkKLSAmJiAoICh0aGlz
LmdldE1hc2NoZTA4KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMDgoKSkgfHwgKCB0aGlzLmdl
dE1hc2NoPQplMDgoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUwOCgpIT0zRG51bGwg
JiYgdGhpcy5nZXRNYXNjaGUwOCgpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUwOCgpKSAp
ICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMDgoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazA4KCkp
IHx8ICggdGhpcy5nZXRSdWVjazA4PQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazA4
KCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMDgoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVl
Y2swOCgpKSApICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTA5KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0
TWFzY2hlMDkoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMDkoKSE9M0RudWxsICYmIGNhc3RPdGhl
ci5nZXRNYXNjaGUwOSgpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUwOSgpLmVxdWE9CmxzKGNh
c3RPdGhlci5nZXRNYXNjaGUwOSgpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMDkoKT0zRD0z
RGNhc3RPdGhlci5nZXRSdWVjazA5KCkpIHx8ICggdGhpcy5nZXRSdWVjazA5PQooKSE9M0RudWxs
ICYmIGNhc3RPdGhlci5nZXRSdWVjazA5KCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMDkoKS5l
cXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2swOSgpKSApICkKLSAmJiAoICh0aGlzLmdldE1hc2No
ZTEwKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMTAoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQpl
MTAoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUxMCgpIT0zRG51bGwgJiYgdGhpcy5n
ZXRNYXNjaGUxMCgpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUxMCgpKSApICkKLSAmJiAo
ICh0aGlzLmdldFJ1ZWNrMTAoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazEwKCkpIHx8ICggdGhp
cy5nZXRSdWVjazEwPQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazEwKCkhPTNEbnVs
bCAmJiB0aGlzLmdldFJ1ZWNrMTAoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2sxMCgpKSAp
ICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTExKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMTEo
KSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMTEoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNj
aGUxMSgpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUxMSgpLmVxdWE9CmxzKGNhc3RPdGhlci5n
ZXRNYXNjaGUxMSgpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMTEoKT0zRD0zRGNhc3RPdGhl
ci5nZXRSdWVjazExKCkpIHx8ICggdGhpcy5nZXRSdWVjazExPQooKSE9M0RudWxsICYmIGNhc3RP
dGhlci5nZXRSdWVjazExKCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMTEoKS5lcXVhbHMoY2E9
CnN0T3RoZXIuZ2V0UnVlY2sxMSgpKSApICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTEyKCk9M0Q9
M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMTIoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMTIoKSE9M0Ru
dWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUxMigpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUx
MigpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUxMigpKSApICkKLSAmJiAoICh0aGlzLmdl
dFJ1ZWNrMTIoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazEyKCkpIHx8ICggdGhpcy5nZXRSdWVj
azEyPQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazEyKCkhPTNEbnVsbCAmJiB0aGlz
LmdldFJ1ZWNrMTIoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2sxMigpKSApICkKLSAmJiAo
ICh0aGlzLmdldE1hc2NoZTEzKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMTMoKSkgfHwgKCB0
aGlzLmdldE1hc2NoPQplMTMoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUxMygpIT0z
RG51bGwgJiYgdGhpcy5nZXRNYXNjaGUxMygpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUx
MygpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMTMoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVj
azEzKCkpIHx8ICggdGhpcy5nZXRSdWVjazEzPQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRS
dWVjazEzKCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMTMoKS5lcXVhbHMoY2E9CnN0T3RoZXIu
Z2V0UnVlY2sxMygpKSApICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTE0KCk9M0Q9M0RjYXN0T3Ro
ZXIuZ2V0TWFzY2hlMTQoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMTQoKSE9M0RudWxsICYmIGNh
c3RPdGhlci5nZXRNYXNjaGUxNCgpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUxNCgpLmVxdWE9
CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUxNCgpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMTQo
KT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazE0KCkpIHx8ICggdGhpcy5nZXRSdWVjazE0PQooKSE9
M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazE0KCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNr
MTQoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2sxNCgpKSApICkKLSAmJiAoICh0aGlzLmdl
dE1hc2NoZTE1KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMTUoKSkgfHwgKCB0aGlzLmdldE1h
c2NoPQplMTUoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUxNSgpIT0zRG51bGwgJiYg
dGhpcy5nZXRNYXNjaGUxNSgpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUxNSgpKSApICkK
LSAmJiAoICh0aGlzLmdldFJ1ZWNrMTUoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazE1KCkpIHx8
ICggdGhpcy5nZXRSdWVjazE1PQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazE1KCkh
PTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMTUoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2sx
NSgpKSApICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTE2KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFz
Y2hlMTYoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMTYoKSE9M0RudWxsICYmIGNhc3RPdGhlci5n
ZXRNYXNjaGUxNigpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUxNigpLmVxdWE9CmxzKGNhc3RP
dGhlci5nZXRNYXNjaGUxNigpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMTYoKT0zRD0zRGNh
c3RPdGhlci5nZXRSdWVjazE2KCkpIHx8ICggdGhpcy5nZXRSdWVjazE2PQooKSE9M0RudWxsICYm
IGNhc3RPdGhlci5nZXRSdWVjazE2KCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMTYoKS5lcXVh
bHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2sxNigpKSApICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTE3
KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMTcoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMTco
KSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUxNygpIT0zRG51bGwgJiYgdGhpcy5nZXRN
YXNjaGUxNygpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUxNygpKSApICkKLSAmJiAoICh0
aGlzLmdldFJ1ZWNrMTcoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazE3KCkpIHx8ICggdGhpcy5n
ZXRSdWVjazE3PQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazE3KCkhPTNEbnVsbCAm
JiB0aGlzLmdldFJ1ZWNrMTcoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2sxNygpKSApICkK
LSAmJiAoICh0aGlzLmdldE1hc2NoZTE4KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMTgoKSkg
fHwgKCB0aGlzLmdldE1hc2NoPQplMTgoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUx
OCgpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUxOCgpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRN
YXNjaGUxOCgpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMTgoKT0zRD0zRGNhc3RPdGhlci5n
ZXRSdWVjazE4KCkpIHx8ICggdGhpcy5nZXRSdWVjazE4PQooKSE9M0RudWxsICYmIGNhc3RPdGhl
ci5nZXRSdWVjazE4KCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMTgoKS5lcXVhbHMoY2E9CnN0
T3RoZXIuZ2V0UnVlY2sxOCgpKSApICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTE5KCk9M0Q9M0Rj
YXN0T3RoZXIuZ2V0TWFzY2hlMTkoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMTkoKSE9M0RudWxs
ICYmIGNhc3RPdGhlci5nZXRNYXNjaGUxOSgpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUxOSgp
LmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUxOSgpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1
ZWNrMTkoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazE5KCkpIHx8ICggdGhpcy5nZXRSdWVjazE5
PQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazE5KCkhPTNEbnVsbCAmJiB0aGlzLmdl
dFJ1ZWNrMTkoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2sxOSgpKSApICkKLSAmJiAoICh0
aGlzLmdldE1hc2NoZTIwKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWFzY2hlMjAoKSkgfHwgKCB0aGlz
LmdldE1hc2NoPQplMjAoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNYXNjaGUyMCgpIT0zRG51
bGwgJiYgdGhpcy5nZXRNYXNjaGUyMCgpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXRNYXNjaGUyMCgp
KSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMjAoKT0zRD0zRGNhc3RPdGhlci5nZXRSdWVjazIw
KCkpIHx8ICggdGhpcy5nZXRSdWVjazIwPQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSdWVj
azIwKCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMjAoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0
UnVlY2syMCgpKSApICkKLSAmJiAoICh0aGlzLmdldE1hc2NoZTIxKCk9M0Q9M0RjYXN0T3RoZXIu
Z2V0TWFzY2hlMjEoKSkgfHwgKCB0aGlzLmdldE1hc2NoPQplMjEoKSE9M0RudWxsICYmIGNhc3RP
dGhlci5nZXRNYXNjaGUyMSgpIT0zRG51bGwgJiYgdGhpcy5nZXRNYXNjaGUyMSgpLmVxdWE9Cmxz
KGNhc3RPdGhlci5nZXRNYXNjaGUyMSgpKSApICkKLSAmJiAoICh0aGlzLmdldFJ1ZWNrMjEoKT0z
RD0zRGNhc3RPdGhlci5nZXRSdWVjazIxKCkpIHx8ICggdGhpcy5nZXRSdWVjazIxPQooKSE9M0Ru
dWxsICYmIGNhc3RPdGhlci5nZXRSdWVjazIxKCkhPTNEbnVsbCAmJiB0aGlzLmdldFJ1ZWNrMjEo
KS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0UnVlY2syMSgpKSApICkKLSAmJiAoICh0aGlzLmdldFJl
c3QoKT0zRD0zRGNhc3RPdGhlci5nZXRSZXN0KCkpIHx8ICggdGhpcy5nZXRSZXN0KCkhPTNEbnVs
PQpsICYmIGNhc3RPdGhlci5nZXRSZXN0KCkhPTNEbnVsbCAmJiB0aGlzLmdldFJlc3QoKS5lcXVh
bHMoY2FzdE90aGVyLmdldFJlc3Q9CigpKSApICk7Ci0gICB9Ci0KLSAgIHB1YmxpYyBpbnQgaGFz
aENvZGUoKSB7Ci0gICAgICAgICBpbnQgcmVzdWx0ID0zRCAxNzsKLQotICAgICAgICAgcmVzdWx0
ID0zRCAzNyAqIHJlc3VsdCArIChpbnQpIHRoaXMuZ2V0R2xvdHJlY2h0ZWlkKCk7Ci0gICAgICAg
ICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKGludCkgdGhpcy5nZXRHc2llYnNhdHppZCgpOwot
ICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0R21hc3NlKCkgPTNEPTNEIG51
bGwgPyAwIDogdGhpcy5nZXQ9CkdtYXNzZSgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3Vs
dCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTAxKCkgPTNEPTNEIG51bGwgPyAwIDogdGhp
cy5nPQpldE1hc2NoZTAxKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAq
IHJlc3VsdCArICggZ2V0UnVlY2swMSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVj
azAxKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICgg
Z2V0TWFzY2hlMDIoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMDIoKS5oYXNo
Q29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazAy
KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMDIoKS5oYXNoQ29kZSgpICk7Ci0g
ICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUwMygpID0zRD0zRCBu
dWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUwMygpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJl
c3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMDMoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0
aGlzLmdlPQp0UnVlY2swMygpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcg
KiByZXN1bHQgKyAoIGdldE1hc2NoZTA0KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1h
c2NoZTA0KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCAr
ICggZ2V0UnVlY2swNCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazA0KCkuaGFz
aENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hl
MDUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMDUoKS5oYXNoQ29kZSgpICk7
Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazA1KCkgPTNEPTNE
IG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMDUoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICBy
ZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUwNigpID0zRD0zRCBudWxsID8gMCA6
IHRoaXMuZz0KZXRNYXNjaGUwNigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0Qg
MzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMDYoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0
UnVlY2swNigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQg
KyAoIGdldE1hc2NoZTA3KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTA3KCku
aGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVl
Y2swNygpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazA3KCkuaGFzaENvZGUoKSAp
OwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMDgoKSA9M0Q9
M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMDgoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAg
ICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazA4KCkgPTNEPTNEIG51bGwgPyAw
IDogdGhpcy5nZT0KdFJ1ZWNrMDgoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNE
IDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUwOSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0K
ZXRNYXNjaGUwOSgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1
bHQgKyAoIGdldFJ1ZWNrMDkoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2swOSgp
Lmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1h
c2NoZTEwKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTEwKCkuaGFzaENvZGUo
KSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2sxMCgpID0z
RD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazEwKCkuaGFzaENvZGUoKSApOwotICAgICAg
ICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMTEoKSA9M0Q9M0QgbnVsbCA/
IDAgOiB0aGlzLmc9CmV0TWFzY2hlMTEoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQg
PTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazExKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5n
ZT0KdFJ1ZWNrMTEoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVz
dWx0ICsgKCBnZXRNYXNjaGUxMigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUx
MigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdl
dFJ1ZWNrMTIoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2sxMigpLmhhc2hDb2Rl
KCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTEzKCkg
PTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTEzKCkuaGFzaENvZGUoKSApOwotICAg
ICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2sxMygpID0zRD0zRCBudWxs
ID8gMCA6IHRoaXMuZ2U9CnRSdWVjazEzKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0
ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMTQoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlz
Lmc9CmV0TWFzY2hlMTQoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICog
cmVzdWx0ICsgKCBnZXRSdWVjazE0KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNr
MTQoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBn
ZXRNYXNjaGUxNSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUxNSgpLmhhc2hD
b2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMTUo
KSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2sxNSgpLmhhc2hDb2RlKCkgKTsKLSAg
ICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTE2KCkgPTNEPTNEIG51
bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTE2KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVz
dWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2sxNigpID0zRD0zRCBudWxsID8gMCA6IHRo
aXMuZ2U9CnRSdWVjazE2KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAq
IHJlc3VsdCArICggZ2V0TWFzY2hlMTcoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFz
Y2hlMTcoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsg
KCBnZXRSdWVjazE3KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMTcoKS5oYXNo
Q29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUx
OCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUxOCgpLmhhc2hDb2RlKCkgKTsK
LSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMTgoKSA9M0Q9M0Qg
bnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2sxOCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJl
c3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTE5KCkgPTNEPTNEIG51bGwgPyAwIDog
dGhpcy5nPQpldE1hc2NoZTE5KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAz
NyAqIHJlc3VsdCArICggZ2V0UnVlY2sxOSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRS
dWVjazE5KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCAr
ICggZ2V0TWFzY2hlMjAoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMjAoKS5o
YXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVj
azIwKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMjAoKS5oYXNoQ29kZSgpICk7
Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUyMSgpID0zRD0z
RCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUyMSgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAg
IHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMjEoKSA9M0Q9M0QgbnVsbCA/IDAg
OiB0aGlzLmdlPQp0UnVlY2syMSgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0Qg
MzcgKiByZXN1bHQgKyAoIGdldFJlc3QoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldFJlPQpz
dCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci19CmRpZmYg
LXIgYmM0ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9tYWluL2phdmEvZGUv
aW50ZXZhdGlvbi9zZT0KZGRiL21vZGVsL0hwZWlscHVua3QuamF2YQotLS0gYS9iYWNrZW5kL3Ny
Yy9tYWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZWRkYi9tb2RlbC9IcGVpbHB1bmt0LmphdmEJTW9u
IEE9CnByIDI5IDExOjE0OjI1IDIwMTMgKzAyMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAw
OjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsOTIgKzAsMCBAQAotLyogQ29weXJpZ2h0IChDKSAyMDEx
LCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVu
ZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoKLSAqIFRo
aXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAot
ICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQot
ICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRh
aWxzLj0yMAotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7Ci0v
LyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAu
Q1IxCi0KLQotaW1wb3J0IGphdmEubWF0aC5CaWdEZWNpbWFsOwotaW1wb3J0IGphdmF4LnBlcnNp
c3RlbmNlLkF0dHJpYnV0ZU92ZXJyaWRlOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJp
YnV0ZU92ZXJyaWRlczsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQg
amF2YXgucGVyc2lzdGVuY2UuRW1iZWRkZWRJZDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5F
bnRpdHk7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRmV0Y2hUeXBlOwotaW1wb3J0IGphdmF4
LnBlcnNpc3RlbmNlLkpvaW5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTWFueVRv
T25lOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOwotCi0vKioKLSAqIEhwZWlscHVu
a3QgZ2VuZXJhdGVkIGJ5IGhibTJqYXZhCi0gKi8KLUBFbnRpdHkKLUBUYWJsZShuYW1lPTNEIkhQ
RUlMUFVOS1QiCi0gICAgLHNjaGVtYT0zRCJTRUREQiIKLSkKLXB1YmxpYyBjbGFzcyBIcGVpbHB1
bmt0ICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAgIHByaXZhdGUg
SHBlaWxwdW5rdElkIGlkOwotICAgICBwcml2YXRlIEhwZWlsdW5nIGhwZWlsdW5nOwotICAgICBw
cml2YXRlIEJpZ0RlY2ltYWwgeTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHo7Ci0KLSAgICBw
dWJsaWMgSHBlaWxwdW5rdCgpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgSHBlaWxwdW5rdChIcGVp
bHB1bmt0SWQgaWQsIEhwZWlsdW5nIGhwZWlsdW5nLCBCaWdEZWNpbWFsIHksIEJpPQpnRGVjaW1h
bCB6KSB7Ci0gICAgICAgdGhpcy5pZCA9M0QgaWQ7Ci0gICAgICAgdGhpcy5ocGVpbHVuZyA9M0Qg
aHBlaWx1bmc7Ci0gICAgICAgdGhpcy55ID0zRCB5OwotICAgICAgIHRoaXMueiA9M0QgejsKLSAg
ICB9Ci0KLSAgICAgQEVtYmVkZGVkSWQKLQotCi0gICAgQEF0dHJpYnV0ZU92ZXJyaWRlcyggewot
ICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJocGVpbHVuZ2lkIiwgY29sdW1uPTNE
QENvbHVtbihuYW1lPTNEIkg9ClBFSUxVTkdJRCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lv
bj0zRDExLCBzY2FsZT0zRDApICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNE
InB1bmt0bnIiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUFVOSz0KVE5SIiwgbnVsbGFibGU9
M0RmYWxzZSwgcHJlY2lzaW9uPTNENSwgc2NhbGU9M0QwKSApIH0gKQotICAgIHB1YmxpYyBIcGVp
bHB1bmt0SWQgZ2V0SWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmlkOwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldElkKEhwZWlscHVua3RJZCBpZCkgewotICAgICAgICB0aGlzLmlkID0z
RCBpZDsKLSAgICB9Ci0KLUBNYW55VG9PbmUoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSkKLSAgICBA
Sm9pbkNvbHVtbihuYW1lPTNEIkhQRUlMVU5HSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBpbnNlcnRh
YmxlPTNEZmFsc2UsPQogdXBkYXRhYmxlPTNEZmFsc2UpCi0gICAgcHVibGljIEhwZWlsdW5nIGdl
dEhwZWlsdW5nKCkgewotICAgICAgICByZXR1cm4gdGhpcy5ocGVpbHVuZzsKLSAgICB9Ci0KLSAg
ICBwdWJsaWMgdm9pZCBzZXRIcGVpbHVuZyhIcGVpbHVuZyBocGVpbHVuZykgewotICAgICAgICB0
aGlzLmhwZWlsdW5nID0zRCBocGVpbHVuZzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJZIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldFkoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnk7Ci0gICAgfQot
Ci0gICAgcHVibGljIHZvaWQgc2V0WShCaWdEZWNpbWFsIHkpIHsKLSAgICAgICAgdGhpcy55ID0z
RCB5OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIloiLCBudWxsYWJsZT0zRGZhbHNl
LCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0Wigp
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuejsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRa
KEJpZ0RlY2ltYWwgeikgewotICAgICAgICB0aGlzLnogPTNEIHo7Ci0gICAgfQotfQpkaWZmIC1y
IGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2lu
dGV2YXRpb24vc2U9CmRkYi9tb2RlbC9IcGVpbHB1bmt0SWQuamF2YQotLS0gYS9iYWNrZW5kL3Ny
Yy9tYWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZWRkYi9tb2RlbC9IcGVpbHB1bmt0SWQuamF2YQlN
b249CiBBcHIgMjkgMTE6MTQ6MjUgMjAxMyArMDIwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEg
MDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSw3MyArMCwwIEBACi0vKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0K
dW5kZQotICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0gKgotICog
VGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMpPTIw
Ci0gKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQgdGhl
Ci0gKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9yIGRl
dGFpbHMuPTIwCi0gKi8KLQotcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5zZWRkYi5tb2RlbDsK
LS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQu
MC5DUjEKLQotCi1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOwotaW1wb3J0IGphdmF4
LnBlcnNpc3RlbmNlLkVtYmVkZGFibGU7Ci0KLS8qKgotICogSHBlaWxwdW5rdElkIGdlbmVyYXRl
ZCBieSBoYm0yamF2YQotICovCi1ARW1iZWRkYWJsZQotcHVibGljIGNsYXNzIEhwZWlscHVua3RJ
ZCAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7Ci0KLQotICAgICBwcml2YXRlIGxv
bmcgaHBlaWx1bmdpZDsKLSAgICAgcHJpdmF0ZSBpbnQgcHVua3RucjsKLQotICAgIHB1YmxpYyBI
cGVpbHB1bmt0SWQoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIEhwZWlscHVua3RJZChsb25nIGhw
ZWlsdW5naWQsIGludCBwdW5rdG5yKSB7Ci0gICAgICAgdGhpcy5ocGVpbHVuZ2lkID0zRCBocGVp
bHVuZ2lkOwotICAgICAgIHRoaXMucHVua3RuciA9M0QgcHVua3RucjsKLSAgICB9Ci0KLQotCi0g
ICAgQENvbHVtbihuYW1lPTNEIkhQRUlMVU5HSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNp
b249M0QxMSwgc2NhbGU9Cj0zRDApCi0gICAgcHVibGljIGxvbmcgZ2V0SHBlaWx1bmdpZCgpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuaHBlaWx1bmdpZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXRIcGVpbHVuZ2lkKGxvbmcgaHBlaWx1bmdpZCkgewotICAgICAgICB0aGlzLmhwZWlsdW5n
aWQgPTNEIGhwZWlsdW5naWQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUFVOS1RO
UiIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDUsIHNjYWxlPTNEMCkKLSAgICBwdWJs
aWMgaW50IGdldFB1bmt0bnIoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnB1bmt0bnI7Ci0gICAg
fQotCi0gICAgcHVibGljIHZvaWQgc2V0UHVua3RucihpbnQgcHVua3RucikgewotICAgICAgICB0
aGlzLnB1bmt0bnIgPTNEIHB1bmt0bnI7Ci0gICAgfQotCi0KLSAgIHB1YmxpYyBib29sZWFuIGVx
dWFscyhPYmplY3Qgb3RoZXIpIHsKLSAgICAgICAgIGlmICggKHRoaXMgPTNEPTNEIG90aGVyICkg
KSByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIGlmICggKG90aGVyID0zRD0zRCBudWxsICkgKSByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICBpZiAoICEob3RoZXIgaW5zdGFuY2VvZiBIcGVpbHB1bmt0SWQp
ICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgSHBlaWxwdW5rdElkIGNhc3RPdGhlciA9M0QgKCBI
cGVpbHB1bmt0SWQgKSBvdGhlcjsKLQotICAgICAgICAgcmV0dXJuICh0aGlzLmdldEhwZWlsdW5n
aWQoKT0zRD0zRGNhc3RPdGhlci5nZXRIcGVpbHVuZ2lkKCkpCi0gJiYgKHRoaXMuZ2V0UHVua3Ru
cigpPTNEPTNEY2FzdE90aGVyLmdldFB1bmt0bnIoKSk7Ci0gICB9Ci0KLSAgIHB1YmxpYyBpbnQg
aGFzaENvZGUoKSB7Ci0gICAgICAgICBpbnQgcmVzdWx0ID0zRCAxNzsKLQotICAgICAgICAgcmVz
dWx0ID0zRCAzNyAqIHJlc3VsdCArIChpbnQpIHRoaXMuZ2V0SHBlaWx1bmdpZCgpOwotICAgICAg
ICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArIHRoaXMuZ2V0UHVua3RucigpOwotICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgIH0KLX0KZGlmZiAtciBiYzRlMWJmMjYyMjcgLXIgMWU2OGVjYTI2
YjhhIGJhY2tlbmQvc3JjL21haW4vamF2YS9kZS9pbnRldmF0aW9uL3NlPQpkZGIvbW9kZWwvSHBl
aWx1bmcuamF2YQotLS0gYS9iYWNrZW5kL3NyYy9tYWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZWRk
Yi9tb2RlbC9IcGVpbHVuZy5qYXZhCU1vbiBBcHI9CiAyOSAxMToxNDoyNSAyMDEzICswMjAwCisr
KyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDQ3MSArMCww
IEBACi0vKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBm
PUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQotICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkg
SW50ZXZhdGlvbiBHbWJICi0gKgotICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIg
dGhlIEdOVSBBR1BMICg+PTNEdjMpPTIwCi0gKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5P
IFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCi0gKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERp
dmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFpbHMuPTIwCi0gKi8KLQotcGFja2FnZSBvcmcuZGl2
ZTRlbGVtZW50cy5zZWRkYi5tb2RlbDsKLS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3
IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQuMC5DUjEKLQotCi1pbXBvcnQgamF2YS5tYXRoLkJpZ0Rl
Y2ltYWw7Ci1pbXBvcnQgamF2YS51dGlsLkRhdGU7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7
Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47
Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OwotaW1wb3J0IGphdmF4LnBlcnNpc3Rl
bmNlLkZldGNoVHlwZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKLWltcG9ydCBqYXZh
eC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk1hbnlU
b09uZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5PbmVUb01hbnk7Ci1pbXBvcnQgamF2YXgu
cGVyc2lzdGVuY2UuVGFibGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGVtcG9yYWw7Ci1p
bXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGVtcG9yYWxUeXBlOwotCi0vKioKLSAqIEhwZWlsdW5n
IGdlbmVyYXRlZCBieSBoYm0yamF2YQotICovCi1ARW50aXR5Ci1AVGFibGUobmFtZT0zRCJIUEVJ
TFVORyIKLSAgICAsc2NoZW1hPTNEIlNFRERCIgotKQotcHVibGljIGNsYXNzIEhwZWlsdW5nICBp
bXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAgIHByaXZhdGUgbG9uZyBo
cGVpbHVuZ2lkOwotICAgICBwcml2YXRlIFN0YXRpb24gc3RhdGlvbjsKLSAgICAgcHJpdmF0ZSBC
aWdEZWNpbWFsIGttOwotICAgICBwcml2YXRlIERhdGUgZGF0dW07Ci0gICAgIHByaXZhdGUgU3Ry
aW5nIGdsd25hbWU7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBnbHdob2VoZTsKLSAgICAgcHJp
dmF0ZSBCaWdEZWNpbWFsIGJ1bGlhYnN0OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgYnVsaWhv
ZWhlOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgYnVsaWZ1c3M7Ci0gICAgIHByaXZhdGUgQmln
RGVjaW1hbCBidWxpcnVlY2tlbjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGJ1cmVhYnN0Owot
ICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgYnVyZWhvZWhlOwotICAgICBwcml2YXRlIEJpZ0RlY2lt
YWwgYnVyZWZ1c3M7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBidXJlcnVlY2tlbjsKLSAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIGZhaHJsaWFic3Q7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBm
YWhycmVhYnN0OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZmFocnRpZWY7Ci0gICAgIHByaXZh
dGUgQmlnRGVjaW1hbCBhdXNibGlhYnN0OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgYXVzYnJl
YWJzdDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGFjaHNlYWJzdDsKLSAgICAgcHJpdmF0ZSBC
aWdEZWNpbWFsIHRlaWx2b25hYnN0OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdGVpbGJpc2Fi
c3Q7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBobWFic3Q7Ci0gICAgIHByaXZhdGUgQmlnRGVj
aW1hbCBsZ2tyZWNodHM7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBsZ2tob2NoOwotICAgICBw
cml2YXRlIEJpZ0RlY2ltYWwgbGdraG9laGU7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCByZ2ty
ZWNodHM7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCByZ2tob2NoOwotICAgICBwcml2YXRlIEJp
Z0RlY2ltYWwgcmdraG9laGU7Ci0gICAgIHByaXZhdGUgU3RyaW5nIGJlbWVya3VuZzsKLSAgICAg
cHJpdmF0ZSBEYXRlIGxhc3R1cGRhdGVkOwotICAgICBwcml2YXRlIExvbmcgb2xkcHJmaWQ7Ci0g
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtaXR0ZWFic3Q7Ci0gICAgIHByaXZhdGUgU2V0PEhwZWls
cHVua3Q+IGhwZWlscHVua3RzID0zRCBuZXcgSGFzaFNldDxIcGVpbHB1bmt0PigwKTsKLSAgICAg
cHJpdmF0ZSBTZXQ8TWVzc3VuZz4gbWVzc3VuZ3MgPTNEIG5ldyBIYXNoU2V0PE1lc3N1bmc+KDAp
OwotCi0gICAgcHVibGljIEhwZWlsdW5nKCkgewotICAgIH0KLQotICAgIHB1YmxpYyBIcGVpbHVu
Zyhsb25nIGhwZWlsdW5naWQsIFN0YXRpb24gc3RhdGlvbiwgQmlnRGVjaW1hbCBrbSwgRGF0ZSA9
CmRhdHVtLCBEYXRlIGxhc3R1cGRhdGVkKSB7Ci0gICAgICAgIHRoaXMuaHBlaWx1bmdpZCA9M0Qg
aHBlaWx1bmdpZDsKLSAgICAgICAgdGhpcy5zdGF0aW9uID0zRCBzdGF0aW9uOwotICAgICAgICB0
aGlzLmttID0zRCBrbTsKLSAgICAgICAgdGhpcy5kYXR1bSA9M0QgZGF0dW07Ci0gICAgICAgIHRo
aXMubGFzdHVwZGF0ZWQgPTNEIGxhc3R1cGRhdGVkOwotICAgIH0KLSAgICBwdWJsaWMgSHBlaWx1
bmcobG9uZyBocGVpbHVuZ2lkLCBTdGF0aW9uIHN0YXRpb24sIEJpZ0RlY2ltYWwga20sIERhdGUg
PQpkYXR1bSwgU3RyaW5nIGdsd25hbWUsIEJpZ0RlY2ltYWwgZ2x3aG9laGUsIEJpZ0RlY2ltYWwg
YnVsaWFic3QsIEJpZ0RlY2ltYWw9CiBidWxpaG9laGUsIEJpZ0RlY2ltYWwgYnVsaWZ1c3MsIEJp
Z0RlY2ltYWwgYnVsaXJ1ZWNrZW4sIEJpZ0RlY2ltYWwgYnVyZWFicz0KdCwgQmlnRGVjaW1hbCBi
dXJlaG9laGUsIEJpZ0RlY2ltYWwgYnVyZWZ1c3MsIEJpZ0RlY2ltYWwgYnVyZXJ1ZWNrZW4sIEJp
Z0RlPQpjaW1hbCBmYWhybGlhYnN0LCBCaWdEZWNpbWFsIGZhaHJyZWFic3QsIEJpZ0RlY2ltYWwg
ZmFocnRpZWYsIEJpZ0RlY2ltYWwgYXU9CnNibGlhYnN0LCBCaWdEZWNpbWFsIGF1c2JyZWFic3Qs
IEJpZ0RlY2ltYWwgYWNoc2VhYnN0LCBCaWdEZWNpbWFsIHRlaWx2b25hYj0Kc3QsIEJpZ0RlY2lt
YWwgdGVpbGJpc2Fic3QsIEJpZ0RlY2ltYWwgaG1hYnN0LCBCaWdEZWNpbWFsIGxna3JlY2h0cywg
QmlnRGVjPQppbWFsIGxna2hvY2gsIEJpZ0RlY2ltYWwgbGdraG9laGUsIEJpZ0RlY2ltYWwgcmdr
cmVjaHRzLCBCaWdEZWNpbWFsIHJna2hvY2g9CiwgQmlnRGVjaW1hbCByZ2tob2VoZSwgU3RyaW5n
IGJlbWVya3VuZywgRGF0ZSBsYXN0dXBkYXRlZCwgTG9uZyBvbGRwcmZpZCwgQj0KaWdEZWNpbWFs
IG1pdHRlYWJzdCwgU2V0PEhwZWlscHVua3Q+IGhwZWlscHVua3RzLCBTZXQ8TWVzc3VuZz4gbWVz
c3VuZ3MpIHsKLSAgICAgICB0aGlzLmhwZWlsdW5naWQgPTNEIGhwZWlsdW5naWQ7Ci0gICAgICAg
dGhpcy5zdGF0aW9uID0zRCBzdGF0aW9uOwotICAgICAgIHRoaXMua20gPTNEIGttOwotICAgICAg
IHRoaXMuZGF0dW0gPTNEIGRhdHVtOwotICAgICAgIHRoaXMuZ2x3bmFtZSA9M0QgZ2x3bmFtZTsK
LSAgICAgICB0aGlzLmdsd2hvZWhlID0zRCBnbHdob2VoZTsKLSAgICAgICB0aGlzLmJ1bGlhYnN0
ID0zRCBidWxpYWJzdDsKLSAgICAgICB0aGlzLmJ1bGlob2VoZSA9M0QgYnVsaWhvZWhlOwotICAg
ICAgIHRoaXMuYnVsaWZ1c3MgPTNEIGJ1bGlmdXNzOwotICAgICAgIHRoaXMuYnVsaXJ1ZWNrZW4g
PTNEIGJ1bGlydWVja2VuOwotICAgICAgIHRoaXMuYnVyZWFic3QgPTNEIGJ1cmVhYnN0OwotICAg
ICAgIHRoaXMuYnVyZWhvZWhlID0zRCBidXJlaG9laGU7Ci0gICAgICAgdGhpcy5idXJlZnVzcyA9
M0QgYnVyZWZ1c3M7Ci0gICAgICAgdGhpcy5idXJlcnVlY2tlbiA9M0QgYnVyZXJ1ZWNrZW47Ci0g
ICAgICAgdGhpcy5mYWhybGlhYnN0ID0zRCBmYWhybGlhYnN0OwotICAgICAgIHRoaXMuZmFocnJl
YWJzdCA9M0QgZmFocnJlYWJzdDsKLSAgICAgICB0aGlzLmZhaHJ0aWVmID0zRCBmYWhydGllZjsK
LSAgICAgICB0aGlzLmF1c2JsaWFic3QgPTNEIGF1c2JsaWFic3Q7Ci0gICAgICAgdGhpcy5hdXNi
cmVhYnN0ID0zRCBhdXNicmVhYnN0OwotICAgICAgIHRoaXMuYWNoc2VhYnN0ID0zRCBhY2hzZWFi
c3Q7Ci0gICAgICAgdGhpcy50ZWlsdm9uYWJzdCA9M0QgdGVpbHZvbmFic3Q7Ci0gICAgICAgdGhp
cy50ZWlsYmlzYWJzdCA9M0QgdGVpbGJpc2Fic3Q7Ci0gICAgICAgdGhpcy5obWFic3QgPTNEIGht
YWJzdDsKLSAgICAgICB0aGlzLmxna3JlY2h0cyA9M0QgbGdrcmVjaHRzOwotICAgICAgIHRoaXMu
bGdraG9jaCA9M0QgbGdraG9jaDsKLSAgICAgICB0aGlzLmxna2hvZWhlID0zRCBsZ2tob2VoZTsK
LSAgICAgICB0aGlzLnJna3JlY2h0cyA9M0QgcmdrcmVjaHRzOwotICAgICAgIHRoaXMucmdraG9j
aCA9M0QgcmdraG9jaDsKLSAgICAgICB0aGlzLnJna2hvZWhlID0zRCByZ2tob2VoZTsKLSAgICAg
ICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwotICAgICAgIHRoaXMubGFzdHVwZGF0ZWQg
PTNEIGxhc3R1cGRhdGVkOwotICAgICAgIHRoaXMub2xkcHJmaWQgPTNEIG9sZHByZmlkOwotICAg
ICAgIHRoaXMubWl0dGVhYnN0ID0zRCBtaXR0ZWFic3Q7Ci0gICAgICAgdGhpcy5ocGVpbHB1bmt0
cyA9M0QgaHBlaWxwdW5rdHM7Ci0gICAgICAgdGhpcy5tZXNzdW5ncyA9M0QgbWVzc3VuZ3M7Ci0g
ICAgfQotCi0gICAgIEBJZAotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiSFBFSUxVTkdJRCIsIHVu
aXF1ZT0zRHRydWUsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvPQpuPTNEMTEsIHNjYWxlPTNE
MCkKLSAgICBwdWJsaWMgbG9uZyBnZXRIcGVpbHVuZ2lkKCkgewotICAgICAgICByZXR1cm4gdGhp
cy5ocGVpbHVuZ2lkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEhwZWlsdW5naWQobG9u
ZyBocGVpbHVuZ2lkKSB7Ci0gICAgICAgIHRoaXMuaHBlaWx1bmdpZCA9M0QgaHBlaWx1bmdpZDsK
LSAgICB9Ci0KLUBNYW55VG9PbmUoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSkKLSAgICBASm9pbkNv
bHVtbihuYW1lPTNEIlNUQVRJT05JRCIsIG51bGxhYmxlPTNEZmFsc2UpCi0gICAgcHVibGljIFN0
YXRpb24gZ2V0U3RhdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGlvbjsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTdGF0aW9uKFN0YXRpb24gc3RhdGlvbikgewotICAgICAg
ICB0aGlzLnN0YXRpb24gPTNEIHN0YXRpb247Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiS00iLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAg
cHVibGljIEJpZ0RlY2ltYWwgZ2V0S20oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmttOwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEttKEJpZ0RlY2ltYWwga20pIHsKLSAgICAgICAgdGhp
cy5rbSA9M0Qga207Ci0gICAgfQotCi0gICAgQFRlbXBvcmFsKFRlbXBvcmFsVHlwZS5EQVRFKQot
ICAgIEBDb2x1bW4obmFtZT0zRCJEQVRVTSIsIG51bGxhYmxlPTNEZmFsc2UsIGxlbmd0aD0zRDcp
Ci0gICAgcHVibGljIERhdGUgZ2V0RGF0dW0oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmRhdHVt
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldERhdHVtKERhdGUgZGF0dW0pIHsKLSAgICAg
ICAgdGhpcy5kYXR1bSA9M0QgZGF0dW07Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0Qi
R0xXTkFNRSIsIGxlbmd0aD0zRDgpCi0gICAgcHVibGljIFN0cmluZyBnZXRHbHduYW1lKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5nbHduYW1lOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dEdsd25hbWUoU3RyaW5nIGdsd25hbWUpIHsKLSAgICAgICAgdGhpcy5nbHduYW1lID0zRCBnbHdu
YW1lOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkdMV0hPRUhFIiwgcHJlY2lzaW9u
PTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEdsd2hvZWhlKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5nbHdob2VoZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXRHbHdob2VoZShCaWdEZWNpbWFsIGdsd2hvZWhlKSB7Ci0gICAgICAgIHRoaXMuZ2x3aG9laGUg
PTNEIGdsd2hvZWhlOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkJVTElBQlNUIiwg
cHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEJ1bGlh
YnN0KCkgewotICAgICAgICByZXR1cm4gdGhpcy5idWxpYWJzdDsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRCdWxpYWJzdChCaWdEZWNpbWFsIGJ1bGlhYnN0KSB7Ci0gICAgICAgIHRoaXMu
YnVsaWFic3QgPTNEIGJ1bGlhYnN0OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkJV
TElIT0VIRSIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1h
bCBnZXRCdWxpaG9laGUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJ1bGlob2VoZTsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRCdWxpaG9laGUoQmlnRGVjaW1hbCBidWxpaG9laGUpIHsK
LSAgICAgICAgdGhpcy5idWxpaG9laGUgPTNEIGJ1bGlob2VoZTsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJCVUxJRlVTUyIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBw
dWJsaWMgQmlnRGVjaW1hbCBnZXRCdWxpZnVzcygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYnVs
aWZ1c3M7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QnVsaWZ1c3MoQmlnRGVjaW1hbCBi
dWxpZnVzcykgewotICAgICAgICB0aGlzLmJ1bGlmdXNzID0zRCBidWxpZnVzczsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJCVUxJUlVFQ0tFTiIsIHByZWNpc2lvbj0zRDgsIHNjYWxl
PTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRCdWxpcnVlY2tlbigpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuYnVsaXJ1ZWNrZW47Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QnVs
aXJ1ZWNrZW4oQmlnRGVjaW1hbCBidWxpcnVlY2tlbikgewotICAgICAgICB0aGlzLmJ1bGlydWVj
a2VuID0zRCBidWxpcnVlY2tlbjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJCVVJF
QUJTVCIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXRCdXJlYWJzdCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYnVyZWFic3Q7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0QnVyZWFic3QoQmlnRGVjaW1hbCBidXJlYWJzdCkgewotICAgICAg
ICB0aGlzLmJ1cmVhYnN0ID0zRCBidXJlYWJzdDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFt
ZT0zRCJCVVJFSE9FSEUiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0QnVyZWhvZWhlKCkgewotICAgICAgICByZXR1cm4gdGhpcy5idXJlaG9laGU7
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QnVyZWhvZWhlKEJpZ0RlY2ltYWwgYnVyZWhv
ZWhlKSB7Ci0gICAgICAgIHRoaXMuYnVyZWhvZWhlID0zRCBidXJlaG9laGU7Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiQlVSRUZVU1MiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMp
Ci0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0QnVyZWZ1c3MoKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLmJ1cmVmdXNzOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEJ1cmVmdXNzKEJpZ0Rl
Y2ltYWwgYnVyZWZ1c3MpIHsKLSAgICAgICAgdGhpcy5idXJlZnVzcyA9M0QgYnVyZWZ1c3M7Ci0g
ICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQlVSRVJVRUNLRU4iLCBwcmVjaXNpb249M0Q4
LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0QnVyZXJ1ZWNrZW4oKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLmJ1cmVydWVja2VuOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lk
IHNldEJ1cmVydWVja2VuKEJpZ0RlY2ltYWwgYnVyZXJ1ZWNrZW4pIHsKLSAgICAgICAgdGhpcy5i
dXJlcnVlY2tlbiA9M0QgYnVyZXJ1ZWNrZW47Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiRkFIUkxJQUJTVCIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmln
RGVjaW1hbCBnZXRGYWhybGlhYnN0KCkgewotICAgICAgICByZXR1cm4gdGhpcy5mYWhybGlhYnN0
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEZhaHJsaWFic3QoQmlnRGVjaW1hbCBmYWhy
bGlhYnN0KSB7Ci0gICAgICAgIHRoaXMuZmFocmxpYWJzdCA9M0QgZmFocmxpYWJzdDsKLSAgICB9
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJGQUhSUkVBQlNUIiwgcHJlY2lzaW9uPTNEOCwgc2Nh
bGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEZhaHJyZWFic3QoKSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLmZhaHJyZWFic3Q7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RmFo
cnJlYWJzdChCaWdEZWNpbWFsIGZhaHJyZWFic3QpIHsKLSAgICAgICAgdGhpcy5mYWhycmVhYnN0
ID0zRCBmYWhycmVhYnN0OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkZBSFJUSUVG
IiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEZh
aHJ0aWVmKCkgewotICAgICAgICByZXR1cm4gdGhpcy5mYWhydGllZjsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRGYWhydGllZihCaWdEZWNpbWFsIGZhaHJ0aWVmKSB7Ci0gICAgICAgIHRo
aXMuZmFocnRpZWYgPTNEIGZhaHJ0aWVmOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNE
IkFVU0JMSUFCU1QiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0QXVzYmxpYWJzdCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYXVzYmxpYWJzdDsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRBdXNibGlhYnN0KEJpZ0RlY2ltYWwgYXVzYmxp
YWJzdCkgewotICAgICAgICB0aGlzLmF1c2JsaWFic3QgPTNEIGF1c2JsaWFic3Q7Ci0gICAgfQot
Ci0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQVVTQlJFQUJTVCIsIHByZWNpc2lvbj0zRDgsIHNjYWxl
PTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRBdXNicmVhYnN0KCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5hdXNicmVhYnN0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEF1c2Jy
ZWFic3QoQmlnRGVjaW1hbCBhdXNicmVhYnN0KSB7Ci0gICAgICAgIHRoaXMuYXVzYnJlYWJzdCA9
M0QgYXVzYnJlYWJzdDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJBQ0hTRUFCU1Qi
LCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0QWNo
c2VhYnN0KCkgewotICAgICAgICByZXR1cm4gdGhpcy5hY2hzZWFic3Q7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0QWNoc2VhYnN0KEJpZ0RlY2ltYWwgYWNoc2VhYnN0KSB7Ci0gICAgICAg
IHRoaXMuYWNoc2VhYnN0ID0zRCBhY2hzZWFic3Q7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiVEVJTFZPTkFCU1QiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGlj
IEJpZ0RlY2ltYWwgZ2V0VGVpbHZvbmFic3QoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRlaWx2
b25hYnN0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFRlaWx2b25hYnN0KEJpZ0RlY2lt
YWwgdGVpbHZvbmFic3QpIHsKLSAgICAgICAgdGhpcy50ZWlsdm9uYWJzdCA9M0QgdGVpbHZvbmFi
c3Q7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVEVJTEJJU0FCU1QiLCBwcmVjaXNp
b249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VGVpbGJpc2Fic3Qo
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRlaWxiaXNhYnN0OwotICAgIH0KLQotICAgIHB1Ymxp
YyB2b2lkIHNldFRlaWxiaXNhYnN0KEJpZ0RlY2ltYWwgdGVpbGJpc2Fic3QpIHsKLSAgICAgICAg
dGhpcy50ZWlsYmlzYWJzdCA9M0QgdGVpbGJpc2Fic3Q7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiSE1BQlNUIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBC
aWdEZWNpbWFsIGdldEhtYWJzdCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaG1hYnN0OwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEhtYWJzdChCaWdEZWNpbWFsIGhtYWJzdCkgewotICAg
ICAgICB0aGlzLmhtYWJzdCA9M0QgaG1hYnN0OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIkxHS1JFQ0hUUyIsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0TGdrcmVjaHRzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5sZ2tyZWNodHM7
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TGdrcmVjaHRzKEJpZ0RlY2ltYWwgbGdrcmVj
aHRzKSB7Ci0gICAgICAgIHRoaXMubGdrcmVjaHRzID0zRCBsZ2tyZWNodHM7Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiTEdLSE9DSCIsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDMp
Ci0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TGdraG9jaCgpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMubGdraG9jaDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRMZ2tob2NoKEJpZ0RlY2lt
YWwgbGdraG9jaCkgewotICAgICAgICB0aGlzLmxna2hvY2ggPTNEIGxna2hvY2g7Ci0gICAgfQot
Ci0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTEdLSE9FSEUiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0z
RDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TGdraG9laGUoKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLmxna2hvZWhlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldExna2hvZWhlKEJp
Z0RlY2ltYWwgbGdraG9laGUpIHsKLSAgICAgICAgdGhpcy5sZ2tob2VoZSA9M0QgbGdraG9laGU7
Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUkdLUkVDSFRTIiwgcHJlY2lzaW9uPTNE
MTEsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSZ2tyZWNodHMoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLnJna3JlY2h0czsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXRSZ2tyZWNodHMoQmlnRGVjaW1hbCByZ2tyZWNodHMpIHsKLSAgICAgICAgdGhpcy5yZ2tyZWNo
dHMgPTNEIHJna3JlY2h0czsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSR0tIT0NI
IiwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRS
Z2tob2NoKCkgewotICAgICAgICByZXR1cm4gdGhpcy5yZ2tob2NoOwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldFJna2hvY2goQmlnRGVjaW1hbCByZ2tob2NoKSB7Ci0gICAgICAgIHRoaXMu
cmdraG9jaCA9M0QgcmdraG9jaDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSR0tI
T0VIRSIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXRSZ2tob2VoZSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucmdraG9laGU7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0UmdraG9laGUoQmlnRGVjaW1hbCByZ2tob2VoZSkgewotICAgICAg
ICB0aGlzLnJna2hvZWhlID0zRCByZ2tob2VoZTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFt
ZT0zRCJCRU1FUktVTkciLCBsZW5ndGg9M0QyNDApCi0gICAgcHVibGljIFN0cmluZyBnZXRCZW1l
cmt1bmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJlbWVya3VuZzsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRCZW1lcmt1bmcoU3RyaW5nIGJlbWVya3VuZykgewotICAgICAgICB0aGlz
LmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwotICAgIH0KLQotICAgIEBUZW1wb3JhbChUZW1wb3Jh
bFR5cGUuREFURSkKLSAgICBAQ29sdW1uKG5hbWU9M0QiTEFTVFVQREFURUQiLCBudWxsYWJsZT0z
RGZhbHNlLCBsZW5ndGg9M0Q3KQotICAgIHB1YmxpYyBEYXRlIGdldExhc3R1cGRhdGVkKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5sYXN0dXBkYXRlZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXRMYXN0dXBkYXRlZChEYXRlIGxhc3R1cGRhdGVkKSB7Ci0gICAgICAgIHRoaXMubGFzdHVw
ZGF0ZWQgPTNEIGxhc3R1cGRhdGVkOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk9M
RFBSRklEIiwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEMCkKLSAgICBwdWJsaWMgTG9uZyBnZXRP
bGRwcmZpZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMub2xkcHJmaWQ7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0T2xkcHJmaWQoTG9uZyBvbGRwcmZpZCkgewotICAgICAgICB0aGlzLm9s
ZHByZmlkID0zRCBvbGRwcmZpZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNSVRU
RUFCU1QiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0TWl0dGVhYnN0KCkgewotICAgICAgICByZXR1cm4gdGhpcy5taXR0ZWFic3Q7Ci0gICAgfQot
Ci0gICAgcHVibGljIHZvaWQgc2V0TWl0dGVhYnN0KEJpZ0RlY2ltYWwgbWl0dGVhYnN0KSB7Ci0g
ICAgICAgIHRoaXMubWl0dGVhYnN0ID0zRCBtaXR0ZWFic3Q7Ci0gICAgfQotCi1AT25lVG9NYW55
KGZldGNoPTNERmV0Y2hUeXBlLkxBWlksIG1hcHBlZEJ5PTNEImhwZWlsdW5nIikKLSAgICBwdWJs
aWMgU2V0PEhwZWlscHVua3Q+IGdldEhwZWlscHVua3RzKCkgewotICAgICAgICByZXR1cm4gdGhp
cy5ocGVpbHB1bmt0czsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRIcGVpbHB1bmt0cyhT
ZXQ8SHBlaWxwdW5rdD4gaHBlaWxwdW5rdHMpIHsKLSAgICAgICAgdGhpcy5ocGVpbHB1bmt0cyA9
M0QgaHBlaWxwdW5rdHM7Ci0gICAgfQotCi1AT25lVG9NYW55KGZldGNoPTNERmV0Y2hUeXBlLkxB
WlksIG1hcHBlZEJ5PTNEImhwZWlsdW5nIikKLSAgICBwdWJsaWMgU2V0PE1lc3N1bmc+IGdldE1l
c3N1bmdzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5tZXNzdW5nczsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRNZXNzdW5ncyhTZXQ8TWVzc3VuZz4gbWVzc3VuZ3MpIHsKLSAgICAgICAg
dGhpcy5tZXNzdW5ncyA9M0QgbWVzc3VuZ3M7Ci0gICAgfQotfQpkaWZmIC1yIGJjNGUxYmYyNjIy
NyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2U9
CmRkYi9tb2RlbC9NZXNzdW5nLmphdmEKLS0tIGEvYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2lu
dGV2YXRpb24vc2VkZGIvbW9kZWwvTWVzc3VuZy5qYXZhCU1vbiBBcHIgPQoyOSAxMToxNDoyNSAy
MDEzICswMjAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBA
IC0xLDEwMDMgKzAsMCBAQAotLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1
bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVu
Z2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNv
ZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAotICogYW5kIGNvbWVzIHdpdGgg
QUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBj
b21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAotICovCi0KLXBh
Y2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYu
MjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGph
dmEubWF0aC5CaWdEZWNpbWFsOwotaW1wb3J0IGphdmEudXRpbC5EYXRlOwotaW1wb3J0IGphdmEu
dXRpbC5IYXNoU2V0OwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci1pbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKLWltcG9ydCBq
YXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7
Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJz
aXN0ZW5jZS5NYW55VG9PbmU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuT25lVG9NYW55Owot
aW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNl
LlRlbXBvcmFsOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRlbXBvcmFsVHlwZTsKLQotLyoq
Ci0gKiBNZXNzdW5nIGdlbmVyYXRlZCBieSBoYm0yamF2YQotICovCi1ARW50aXR5Ci1AVGFibGUo
bmFtZT0zRCJNRVNTVU5HIgotICAgICxzY2hlbWE9M0QiU0VEREIiCi0pCi1wdWJsaWMgY2xhc3Mg
TWVzc3VuZyAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7Ci0KLSAgICAgcHJpdmF0
ZSBsb25nIG1lc3N1bmdpZDsKLSAgICAgcHJpdmF0ZSBTdGF0aW9uIHN0YXRpb247Ci0gICAgIHBy
aXZhdGUgR3NpZWJzYXR6IGdzaWVic2F0ejsKLSAgICAgcHJpdmF0ZSBHZmFlbmdlciBnZmFlbmdl
cjsKLSAgICAgcHJpdmF0ZSBIcGVpbHVuZyBocGVpbHVuZzsKLSAgICAgcHJpdmF0ZSBEYXRlIGRh
dHVtOwotICAgICBwcml2YXRlIExvbmcgbXBlaWx1bmdpZDsKLSAgICAgcHJpdmF0ZSBpbnQgbWVz
c25yOwotICAgICBwcml2YXRlIFN0cmluZyBmZ3VlOwotICAgICBwcml2YXRlIERhdGUgdWhydm9u
OwotICAgICBwcml2YXRlIERhdGUgdWhyYmlzOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgd3Nw
Y207Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBRQnBlZ2VsOwotICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgd3Nwbm47Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBpZTsKLSAgICAgcHJpdmF0ZSBC
aWdEZWNpbWFsIHd0ZW1wOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZ2JyZWl0ZTsKLSAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIGdicmVpdGV2b247Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBn
YnJlaXRlYmlzOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdGdlc2NoaWViZTsKLSAgICAgcHJp
dmF0ZSBCaWdEZWNpbWFsIHRzYW5kOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdHNjaHdlYjsK
LSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGNzY2h3ZWI7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1h
bCB1ZmVybGlhYnN0OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdWZlcnJlYWJzdDsKLSAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIHE7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBBSHBlaWw7Ci0g
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCBBTXBlaWw7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBi
OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgaG07Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB2
bTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHZzb2hsZTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNp
bWFsIHRhdTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHRhdXY7Ci0gICAgIHByaXZhdGUgQmln
RGVjaW1hbCB0ZWlsUTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHRlaWxBSHBlaWw7Ci0gICAg
IHByaXZhdGUgQmlnRGVjaW1hbCB0ZWlsQU1wZWlsOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
dGVpbEI7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB0ZWlsSG07Ci0gICAgIHByaXZhdGUgQmln
RGVjaW1hbCB0ZWlsVm07Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB0ZWlsVnNvaGxlOwotICAg
ICBwcml2YXRlIEJpZ0RlY2ltYWwgdGVpbFRhdTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHRl
aWxUYXV2OwotICAgICBwcml2YXRlIEJvb2xlYW4gbWl0dGVsdHlwOwotICAgICBwcml2YXRlIEJp
Z0RlY2ltYWwgZG07Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzazsKLSAgICAgcHJpdmF0ZSBC
aWdEZWNpbWFsIHNvOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdTsKLSAgICAgcHJpdmF0ZSBC
aWdEZWNpbWFsIGQ5MDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQ4NDsKLSAgICAgcHJpdmF0
ZSBCaWdEZWNpbWFsIGQ4MDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQ3NTsKLSAgICAgcHJp
dmF0ZSBCaWdEZWNpbWFsIGQ3MDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQ2MDsKLSAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIGQ1MDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQ0MDsKLSAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQzMDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQyNTsK
LSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQyMDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQx
NjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQxMDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IGRtaW47Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkdXJjaGRtaW47Ci0gICAgIHByaXZhdGUg
QmlnRGVjaW1hbCBkbWF4OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZHVyY2hkbWF4OwotICAg
ICBwcml2YXRlIGludCBOR2VzY2hpZWI7Ci0gICAgIHByaXZhdGUgaW50IE5WaWVscGt0OwotICAg
ICBwcml2YXRlIERhdGUgc3lzRGF0ZTsKLSAgICAgcHJpdmF0ZSBTdHJpbmcgYmVtZXJrdW5nOwot
ICAgICBwcml2YXRlIERhdGUgbGFzdHVwZGF0ZWQ7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBr
bTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGdsb3RhYnN0b2Zmc2V0OwotICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgc2xvdGFic3RvZmZzZXQ7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBnYnJl
aXRldm9ubGlua3M7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBnYnJlaXRlYmlzbGlua3M7Ci0g
ICAgIHByaXZhdGUgQm9vbGVhbiBnbG90dWZlcmFic3Rpc3R2b25saW5rczsKLSAgICAgcHJpdmF0
ZSBCb29sZWFuIHNsb3R1ZmVyYWJzdGlzdHZvbmxpbmtzOwotICAgICBwcml2YXRlIFNldDxHbG90
cmVjaHRlPiBnbG90cmVjaHRlcyA9M0QgbmV3IEhhc2hTZXQ8R2xvdHJlY2h0ZT4oMCk7Ci0gICAg
IHByaXZhdGUgU2V0PFNsb3RyZWNodGU+IHNsb3RyZWNodGVzID0zRCBuZXcgSGFzaFNldDxTbG90
cmVjaHRlPigwKTsKLQotICAgIHB1YmxpYyBNZXNzdW5nKCkgewotICAgIH0KLQotCi0gICAgcHVi
bGljIE1lc3N1bmcobG9uZyBtZXNzdW5naWQsIFN0YXRpb24gc3RhdGlvbiwgRGF0ZSBkYXR1bSwg
aW50IG1lc3Nucj0KLCBpbnQgTkdlc2NoaWViLCBpbnQgTlZpZWxwa3QsIERhdGUgbGFzdHVwZGF0
ZWQsIEJpZ0RlY2ltYWwgZ2xvdGFic3RvZmZzZXQsPQogQmlnRGVjaW1hbCBzbG90YWJzdG9mZnNl
dCkgewotICAgICAgICB0aGlzLm1lc3N1bmdpZCA9M0QgbWVzc3VuZ2lkOwotICAgICAgICB0aGlz
LnN0YXRpb24gPTNEIHN0YXRpb247Ci0gICAgICAgIHRoaXMuZGF0dW0gPTNEIGRhdHVtOwotICAg
ICAgICB0aGlzLm1lc3NuciA9M0QgbWVzc25yOwotICAgICAgICB0aGlzLk5HZXNjaGllYiA9M0Qg
Tkdlc2NoaWViOwotICAgICAgICB0aGlzLk5WaWVscGt0ID0zRCBOVmllbHBrdDsKLSAgICAgICAg
dGhpcy5sYXN0dXBkYXRlZCA9M0QgbGFzdHVwZGF0ZWQ7Ci0gICAgICAgIHRoaXMuZ2xvdGFic3Rv
ZmZzZXQgPTNEIGdsb3RhYnN0b2Zmc2V0OwotICAgICAgICB0aGlzLnNsb3RhYnN0b2Zmc2V0ID0z
RCBzbG90YWJzdG9mZnNldDsKLSAgICB9Ci0gICAgcHVibGljIE1lc3N1bmcobG9uZyBtZXNzdW5n
aWQsIFN0YXRpb24gc3RhdGlvbiwgR3NpZWJzYXR6IGdzaWVic2F0eiwgRz0KZmFlbmdlciBnZmFl
bmdlciwgSHBlaWx1bmcgaHBlaWx1bmcsIERhdGUgZGF0dW0sIExvbmcgbXBlaWx1bmdpZCwgaW50
IG1lc3NuPQpyLCBTdHJpbmcgZmd1ZSwgRGF0ZSB1aHJ2b24sIERhdGUgdWhyYmlzLCBCaWdEZWNp
bWFsIHdzcGNtLCBCaWdEZWNpbWFsIFFCcGU9CmdlbCwgQmlnRGVjaW1hbCB3c3BubiwgQmlnRGVj
aW1hbCBpZSwgQmlnRGVjaW1hbCB3dGVtcCwgQmlnRGVjaW1hbCBnYnJlaXRlLD0KIEJpZ0RlY2lt
YWwgZ2JyZWl0ZXZvbiwgQmlnRGVjaW1hbCBnYnJlaXRlYmlzLCBCaWdEZWNpbWFsIHRnZXNjaGll
YmUsIEJpZ0RlPQpjaW1hbCB0c2FuZCwgQmlnRGVjaW1hbCB0c2Nod2ViLCBCaWdEZWNpbWFsIGNz
Y2h3ZWIsIEJpZ0RlY2ltYWwgdWZlcmxpYWJzdCw9CiBCaWdEZWNpbWFsIHVmZXJyZWFic3QsIEJp
Z0RlY2ltYWwgcSwgQmlnRGVjaW1hbCBBSHBlaWwsIEJpZ0RlY2ltYWwgQU1wZWlsLD0KIEJpZ0Rl
Y2ltYWwgYiwgQmlnRGVjaW1hbCBobSwgQmlnRGVjaW1hbCB2bSwgQmlnRGVjaW1hbCB2c29obGUs
IEJpZ0RlY2ltYWwgPQp0YXUsIEJpZ0RlY2ltYWwgdGF1diwgQmlnRGVjaW1hbCB0ZWlsUSwgQmln
RGVjaW1hbCB0ZWlsQUhwZWlsLCBCaWdEZWNpbWFsIHQ9CmVpbEFNcGVpbCwgQmlnRGVjaW1hbCB0
ZWlsQiwgQmlnRGVjaW1hbCB0ZWlsSG0sIEJpZ0RlY2ltYWwgdGVpbFZtLCBCaWdEZWNpbT0KYWwg
dGVpbFZzb2hsZSwgQmlnRGVjaW1hbCB0ZWlsVGF1LCBCaWdEZWNpbWFsIHRlaWxUYXV2LCBCb29s
ZWFuIG1pdHRlbHR5cCwgPQpCaWdEZWNpbWFsIGRtLCBCaWdEZWNpbWFsIHNrLCBCaWdEZWNpbWFs
IHNvLCBCaWdEZWNpbWFsIHUsIEJpZ0RlY2ltYWwgZDkwLCA9CkJpZ0RlY2ltYWwgZDg0LCBCaWdE
ZWNpbWFsIGQ4MCwgQmlnRGVjaW1hbCBkNzUsIEJpZ0RlY2ltYWwgZDcwLCBCaWdEZWNpbWFsID0K
ZDYwLCBCaWdEZWNpbWFsIGQ1MCwgQmlnRGVjaW1hbCBkNDAsIEJpZ0RlY2ltYWwgZDMwLCBCaWdE
ZWNpbWFsIGQyNSwgQmlnRGVjPQppbWFsIGQyMCwgQmlnRGVjaW1hbCBkMTYsIEJpZ0RlY2ltYWwg
ZDEwLCBCaWdEZWNpbWFsIGRtaW4sIEJpZ0RlY2ltYWwgZHVyY2g9CmRtaW4sIEJpZ0RlY2ltYWwg
ZG1heCwgQmlnRGVjaW1hbCBkdXJjaGRtYXgsIGludCBOR2VzY2hpZWIsIGludCBOVmllbHBrdCwg
RD0KYXRlIHN5c0RhdGUsIFN0cmluZyBiZW1lcmt1bmcsIERhdGUgbGFzdHVwZGF0ZWQsIEJpZ0Rl
Y2ltYWwga20sIEJpZ0RlY2ltYWwgPQpnbG90YWJzdG9mZnNldCwgQmlnRGVjaW1hbCBzbG90YWJz
dG9mZnNldCwgQmlnRGVjaW1hbCBnYnJlaXRldm9ubGlua3MsIEJpZ0Q9CmVjaW1hbCBnYnJlaXRl
YmlzbGlua3MsIEJvb2xlYW4gZ2xvdHVmZXJhYnN0aXN0dm9ubGlua3MsIEJvb2xlYW4gc2xvdHVm
ZXJhYj0Kc3Rpc3R2b25saW5rcywgU2V0PEdsb3RyZWNodGU+IGdsb3RyZWNodGVzLCBTZXQ8U2xv
dHJlY2h0ZT4gc2xvdHJlY2h0ZXMpIHsKLSAgICAgICB0aGlzLm1lc3N1bmdpZCA9M0QgbWVzc3Vu
Z2lkOwotICAgICAgIHRoaXMuc3RhdGlvbiA9M0Qgc3RhdGlvbjsKLSAgICAgICB0aGlzLmdzaWVi
c2F0eiA9M0QgZ3NpZWJzYXR6OwotICAgICAgIHRoaXMuZ2ZhZW5nZXIgPTNEIGdmYWVuZ2VyOwot
ICAgICAgIHRoaXMuaHBlaWx1bmcgPTNEIGhwZWlsdW5nOwotICAgICAgIHRoaXMuZGF0dW0gPTNE
IGRhdHVtOwotICAgICAgIHRoaXMubXBlaWx1bmdpZCA9M0QgbXBlaWx1bmdpZDsKLSAgICAgICB0
aGlzLm1lc3NuciA9M0QgbWVzc25yOwotICAgICAgIHRoaXMuZmd1ZSA9M0QgZmd1ZTsKLSAgICAg
ICB0aGlzLnVocnZvbiA9M0QgdWhydm9uOwotICAgICAgIHRoaXMudWhyYmlzID0zRCB1aHJiaXM7
Ci0gICAgICAgdGhpcy53c3BjbSA9M0Qgd3NwY207Ci0gICAgICAgdGhpcy5RQnBlZ2VsID0zRCBR
QnBlZ2VsOwotICAgICAgIHRoaXMud3Nwbm4gPTNEIHdzcG5uOwotICAgICAgIHRoaXMuaWUgPTNE
IGllOwotICAgICAgIHRoaXMud3RlbXAgPTNEIHd0ZW1wOwotICAgICAgIHRoaXMuZ2JyZWl0ZSA9
M0QgZ2JyZWl0ZTsKLSAgICAgICB0aGlzLmdicmVpdGV2b24gPTNEIGdicmVpdGV2b247Ci0gICAg
ICAgdGhpcy5nYnJlaXRlYmlzID0zRCBnYnJlaXRlYmlzOwotICAgICAgIHRoaXMudGdlc2NoaWVi
ZSA9M0QgdGdlc2NoaWViZTsKLSAgICAgICB0aGlzLnRzYW5kID0zRCB0c2FuZDsKLSAgICAgICB0
aGlzLnRzY2h3ZWIgPTNEIHRzY2h3ZWI7Ci0gICAgICAgdGhpcy5jc2Nod2ViID0zRCBjc2Nod2Vi
OwotICAgICAgIHRoaXMudWZlcmxpYWJzdCA9M0QgdWZlcmxpYWJzdDsKLSAgICAgICB0aGlzLnVm
ZXJyZWFic3QgPTNEIHVmZXJyZWFic3Q7Ci0gICAgICAgdGhpcy5xID0zRCBxOwotICAgICAgIHRo
aXMuQUhwZWlsID0zRCBBSHBlaWw7Ci0gICAgICAgdGhpcy5BTXBlaWwgPTNEIEFNcGVpbDsKLSAg
ICAgICB0aGlzLmIgPTNEIGI7Ci0gICAgICAgdGhpcy5obSA9M0QgaG07Ci0gICAgICAgdGhpcy52
bSA9M0Qgdm07Ci0gICAgICAgdGhpcy52c29obGUgPTNEIHZzb2hsZTsKLSAgICAgICB0aGlzLnRh
dSA9M0QgdGF1OwotICAgICAgIHRoaXMudGF1diA9M0QgdGF1djsKLSAgICAgICB0aGlzLnRlaWxR
ID0zRCB0ZWlsUTsKLSAgICAgICB0aGlzLnRlaWxBSHBlaWwgPTNEIHRlaWxBSHBlaWw7Ci0gICAg
ICAgdGhpcy50ZWlsQU1wZWlsID0zRCB0ZWlsQU1wZWlsOwotICAgICAgIHRoaXMudGVpbEIgPTNE
IHRlaWxCOwotICAgICAgIHRoaXMudGVpbEhtID0zRCB0ZWlsSG07Ci0gICAgICAgdGhpcy50ZWls
Vm0gPTNEIHRlaWxWbTsKLSAgICAgICB0aGlzLnRlaWxWc29obGUgPTNEIHRlaWxWc29obGU7Ci0g
ICAgICAgdGhpcy50ZWlsVGF1ID0zRCB0ZWlsVGF1OwotICAgICAgIHRoaXMudGVpbFRhdXYgPTNE
IHRlaWxUYXV2OwotICAgICAgIHRoaXMubWl0dGVsdHlwID0zRCBtaXR0ZWx0eXA7Ci0gICAgICAg
dGhpcy5kbSA9M0QgZG07Ci0gICAgICAgdGhpcy5zayA9M0Qgc2s7Ci0gICAgICAgdGhpcy5zbyA9
M0Qgc287Ci0gICAgICAgdGhpcy51ID0zRCB1OwotICAgICAgIHRoaXMuZDkwID0zRCBkOTA7Ci0g
ICAgICAgdGhpcy5kODQgPTNEIGQ4NDsKLSAgICAgICB0aGlzLmQ4MCA9M0QgZDgwOwotICAgICAg
IHRoaXMuZDc1ID0zRCBkNzU7Ci0gICAgICAgdGhpcy5kNzAgPTNEIGQ3MDsKLSAgICAgICB0aGlz
LmQ2MCA9M0QgZDYwOwotICAgICAgIHRoaXMuZDUwID0zRCBkNTA7Ci0gICAgICAgdGhpcy5kNDAg
PTNEIGQ0MDsKLSAgICAgICB0aGlzLmQzMCA9M0QgZDMwOwotICAgICAgIHRoaXMuZDI1ID0zRCBk
MjU7Ci0gICAgICAgdGhpcy5kMjAgPTNEIGQyMDsKLSAgICAgICB0aGlzLmQxNiA9M0QgZDE2Owot
ICAgICAgIHRoaXMuZDEwID0zRCBkMTA7Ci0gICAgICAgdGhpcy5kbWluID0zRCBkbWluOwotICAg
ICAgIHRoaXMuZHVyY2hkbWluID0zRCBkdXJjaGRtaW47Ci0gICAgICAgdGhpcy5kbWF4ID0zRCBk
bWF4OwotICAgICAgIHRoaXMuZHVyY2hkbWF4ID0zRCBkdXJjaGRtYXg7Ci0gICAgICAgdGhpcy5O
R2VzY2hpZWIgPTNEIE5HZXNjaGllYjsKLSAgICAgICB0aGlzLk5WaWVscGt0ID0zRCBOVmllbHBr
dDsKLSAgICAgICB0aGlzLnN5c0RhdGUgPTNEIHN5c0RhdGU7Ci0gICAgICAgdGhpcy5iZW1lcmt1
bmcgPTNEIGJlbWVya3VuZzsKLSAgICAgICB0aGlzLmxhc3R1cGRhdGVkID0zRCBsYXN0dXBkYXRl
ZDsKLSAgICAgICB0aGlzLmttID0zRCBrbTsKLSAgICAgICB0aGlzLmdsb3RhYnN0b2Zmc2V0ID0z
RCBnbG90YWJzdG9mZnNldDsKLSAgICAgICB0aGlzLnNsb3RhYnN0b2Zmc2V0ID0zRCBzbG90YWJz
dG9mZnNldDsKLSAgICAgICB0aGlzLmdicmVpdGV2b25saW5rcyA9M0QgZ2JyZWl0ZXZvbmxpbmtz
OwotICAgICAgIHRoaXMuZ2JyZWl0ZWJpc2xpbmtzID0zRCBnYnJlaXRlYmlzbGlua3M7Ci0gICAg
ICAgdGhpcy5nbG90dWZlcmFic3Rpc3R2b25saW5rcyA9M0QgZ2xvdHVmZXJhYnN0aXN0dm9ubGlu
a3M7Ci0gICAgICAgdGhpcy5zbG90dWZlcmFic3Rpc3R2b25saW5rcyA9M0Qgc2xvdHVmZXJhYnN0
aXN0dm9ubGlua3M7Ci0gICAgICAgdGhpcy5nbG90cmVjaHRlcyA9M0QgZ2xvdHJlY2h0ZXM7Ci0g
ICAgICAgdGhpcy5zbG90cmVjaHRlcyA9M0Qgc2xvdHJlY2h0ZXM7Ci0gICAgfQotCi0gICAgIEBJ
ZAotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUVTU1VOR0lEIiwgdW5pcXVlPTNEdHJ1ZSwgbnVs
bGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPQo9M0QxMSwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBs
b25nIGdldE1lc3N1bmdpZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWVzc3VuZ2lkOwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1lc3N1bmdpZChsb25nIG1lc3N1bmdpZCkgewotICAg
ICAgICB0aGlzLm1lc3N1bmdpZCA9M0QgbWVzc3VuZ2lkOwotICAgIH0KLQotQE1hbnlUb09uZShm
ZXRjaD0zREZldGNoVHlwZS5MQVpZKQotICAgIEBKb2luQ29sdW1uKG5hbWU9M0QiU1RBVElPTklE
IiwgbnVsbGFibGU9M0RmYWxzZSkKLSAgICBwdWJsaWMgU3RhdGlvbiBnZXRTdGF0aW9uKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5zdGF0aW9uOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dFN0YXRpb24oU3RhdGlvbiBzdGF0aW9uKSB7Ci0gICAgICAgIHRoaXMuc3RhdGlvbiA9M0Qgc3Rh
dGlvbjsKLSAgICB9Ci0KLUBNYW55VG9PbmUoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSkKLSAgICBA
Sm9pbkNvbHVtbihuYW1lPTNEIkdTSUVCU0FUWklEIikKLSAgICBwdWJsaWMgR3NpZWJzYXR6IGdl
dEdzaWVic2F0eigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ3NpZWJzYXR6OwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldEdzaWVic2F0eihHc2llYnNhdHogZ3NpZWJzYXR6KSB7Ci0gICAg
ICAgIHRoaXMuZ3NpZWJzYXR6ID0zRCBnc2llYnNhdHo7Ci0gICAgfQotCi1ATWFueVRvT25lKGZl
dGNoPTNERmV0Y2hUeXBlLkxBWlkpCi0gICAgQEpvaW5Db2x1bW4obmFtZT0zRCJHRkFFTkdFUklE
IikKLSAgICBwdWJsaWMgR2ZhZW5nZXIgZ2V0R2ZhZW5nZXIoKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLmdmYWVuZ2VyOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEdmYWVuZ2VyKEdmYWVu
Z2VyIGdmYWVuZ2VyKSB7Ci0gICAgICAgIHRoaXMuZ2ZhZW5nZXIgPTNEIGdmYWVuZ2VyOwotICAg
IH0KLQotQE1hbnlUb09uZShmZXRjaD0zREZldGNoVHlwZS5MQVpZKQotICAgIEBKb2luQ29sdW1u
KG5hbWU9M0QiSFBFSUxVTkdJRCIpCi0gICAgcHVibGljIEhwZWlsdW5nIGdldEhwZWlsdW5nKCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5ocGVpbHVuZzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXRIcGVpbHVuZyhIcGVpbHVuZyBocGVpbHVuZykgewotICAgICAgICB0aGlzLmhwZWlsdW5n
ID0zRCBocGVpbHVuZzsKLSAgICB9Ci0KLSAgICBAVGVtcG9yYWwoVGVtcG9yYWxUeXBlLkRBVEUp
Ci0gICAgQENvbHVtbihuYW1lPTNEIkRBVFVNIiwgbnVsbGFibGU9M0RmYWxzZSwgbGVuZ3RoPTNE
NykKLSAgICBwdWJsaWMgRGF0ZSBnZXREYXR1bSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZGF0
dW07Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RGF0dW0oRGF0ZSBkYXR1bSkgewotICAg
ICAgICB0aGlzLmRhdHVtID0zRCBkYXR1bTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJNUEVJTFVOR0lEIiwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEMCkKLSAgICBwdWJsaWMgTG9u
ZyBnZXRNcGVpbHVuZ2lkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5tcGVpbHVuZ2lkOwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1wZWlsdW5naWQoTG9uZyBtcGVpbHVuZ2lkKSB7Ci0g
ICAgICAgIHRoaXMubXBlaWx1bmdpZCA9M0QgbXBlaWx1bmdpZDsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJNRVNTTlIiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q1LCBz
Y2FsZT0zRDApCi0gICAgcHVibGljIGludCBnZXRNZXNzbnIoKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLm1lc3NucjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNZXNzbnIoaW50IG1lc3Nu
cikgewotICAgICAgICB0aGlzLm1lc3NuciA9M0QgbWVzc25yOwotICAgIH0KLQotCi0gICAgQENv
bHVtbihuYW1lPTNEIkZHVUUiLCBsZW5ndGg9M0QxMCkKLSAgICBwdWJsaWMgU3RyaW5nIGdldEZn
dWUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmZndWU7Ci0gICAgfQotCi0gICAgcHVibGljIHZv
aWQgc2V0Rmd1ZShTdHJpbmcgZmd1ZSkgewotICAgICAgICB0aGlzLmZndWUgPTNEIGZndWU7Ci0g
ICAgfQotCi0gICAgQFRlbXBvcmFsKFRlbXBvcmFsVHlwZS5EQVRFKQotICAgIEBDb2x1bW4obmFt
ZT0zRCJVSFJWT04iLCBsZW5ndGg9M0Q3KQotICAgIHB1YmxpYyBEYXRlIGdldFVocnZvbigpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMudWhydm9uOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dFVocnZvbihEYXRlIHVocnZvbikgewotICAgICAgICB0aGlzLnVocnZvbiA9M0QgdWhydm9uOwot
ICAgIH0KLQotICAgIEBUZW1wb3JhbChUZW1wb3JhbFR5cGUuREFURSkKLSAgICBAQ29sdW1uKG5h
bWU9M0QiVUhSQklTIiwgbGVuZ3RoPTNENykKLSAgICBwdWJsaWMgRGF0ZSBnZXRVaHJiaXMoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLnVocmJpczsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXRVaHJiaXMoRGF0ZSB1aHJiaXMpIHsKLSAgICAgICAgdGhpcy51aHJiaXMgPTNEIHVocmJpczsK
LSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJXU1BDTSIsIHByZWNpc2lvbj0zRDgsIHNj
YWxlPTNEMSkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRXc3BjbSgpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMud3NwY207Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0V3NwY20oQmlnRGVj
aW1hbCB3c3BjbSkgewotICAgICAgICB0aGlzLndzcGNtID0zRCB3c3BjbTsKLSAgICB9Ci0KLQot
ICAgIEBDb2x1bW4obmFtZT0zRCJRX0JQRUdFTCIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykK
LSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRRQnBlZ2VsKCkgewotICAgICAgICByZXR1cm4gdGhp
cy5RQnBlZ2VsOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFFCcGVnZWwoQmlnRGVjaW1h
bCBRQnBlZ2VsKSB7Ci0gICAgICAgIHRoaXMuUUJwZWdlbCA9M0QgUUJwZWdlbDsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJXU1BOTiIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykK
LSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRXc3BubigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
d3Nwbm47Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0V3Nwbm4oQmlnRGVjaW1hbCB3c3Bu
bikgewotICAgICAgICB0aGlzLndzcG5uID0zRCB3c3BubjsKLSAgICB9Ci0KLQotICAgIEBDb2x1
bW4obmFtZT0zRCJJRSIsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmln
RGVjaW1hbCBnZXRJZSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaWU7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0SWUoQmlnRGVjaW1hbCBpZSkgewotICAgICAgICB0aGlzLmllID0zRCBp
ZTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJXVEVNUCIsIHByZWNpc2lvbj0zRDQs
IHNjYWxlPTNEMSkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRXdGVtcCgpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMud3RlbXA7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0V3RlbXAoQmln
RGVjaW1hbCB3dGVtcCkgewotICAgICAgICB0aGlzLnd0ZW1wID0zRCB3dGVtcDsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJHQlJFSVRFIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0Qz
KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEdicmVpdGUoKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLmdicmVpdGU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0R2JyZWl0ZShCaWdEZWNp
bWFsIGdicmVpdGUpIHsKLSAgICAgICAgdGhpcy5nYnJlaXRlID0zRCBnYnJlaXRlOwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIkdCUkVJVEVWT04iLCBwcmVjaXNpb249M0Q4LCBzY2Fs
ZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0R2JyZWl0ZXZvbigpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuZ2JyZWl0ZXZvbjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRHYnJl
aXRldm9uKEJpZ0RlY2ltYWwgZ2JyZWl0ZXZvbikgewotICAgICAgICB0aGlzLmdicmVpdGV2b24g
PTNEIGdicmVpdGV2b247Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiR0JSRUlURUJJ
UyIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRH
YnJlaXRlYmlzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5nYnJlaXRlYmlzOwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldEdicmVpdGViaXMoQmlnRGVjaW1hbCBnYnJlaXRlYmlzKSB7Ci0g
ICAgICAgIHRoaXMuZ2JyZWl0ZWJpcyA9M0QgZ2JyZWl0ZWJpczsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJUR0VTQ0hJRUJFIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldFRnZXNjaGllYmUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LnRnZXNjaGllYmU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VGdlc2NoaWViZShCaWdE
ZWNpbWFsIHRnZXNjaGllYmUpIHsKLSAgICAgICAgdGhpcy50Z2VzY2hpZWJlID0zRCB0Z2VzY2hp
ZWJlOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlRTQU5EIiwgcHJlY2lzaW9uPTNE
OSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFRzYW5kKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy50c2FuZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUc2FuZChC
aWdEZWNpbWFsIHRzYW5kKSB7Ci0gICAgICAgIHRoaXMudHNhbmQgPTNEIHRzYW5kOwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIlRTQ0hXRUIiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0z
RDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VHNjaHdlYigpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMudHNjaHdlYjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUc2Nod2ViKEJpZ0Rl
Y2ltYWwgdHNjaHdlYikgewotICAgICAgICB0aGlzLnRzY2h3ZWIgPTNEIHRzY2h3ZWI7Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQ1NDSFdFQiIsIHByZWNpc2lvbj0zRDgsIHNjYWxl
PTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRDc2Nod2ViKCkgewotICAgICAgICByZXR1
cm4gdGhpcy5jc2Nod2ViOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldENzY2h3ZWIoQmln
RGVjaW1hbCBjc2Nod2ViKSB7Ci0gICAgICAgIHRoaXMuY3NjaHdlYiA9M0QgY3NjaHdlYjsKLSAg
ICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJVRkVSTElBQlNUIiwgcHJlY2lzaW9uPTNEOCwg
c2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFVmZXJsaWFic3QoKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLnVmZXJsaWFic3Q7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0
VWZlcmxpYWJzdChCaWdEZWNpbWFsIHVmZXJsaWFic3QpIHsKLSAgICAgICAgdGhpcy51ZmVybGlh
YnN0ID0zRCB1ZmVybGlhYnN0OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlVGRVJS
RUFCU1QiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0VWZlcnJlYWJzdCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudWZlcnJlYWJzdDsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRVZmVycmVhYnN0KEJpZ0RlY2ltYWwgdWZlcnJlYWJzdCkg
ewotICAgICAgICB0aGlzLnVmZXJyZWFic3QgPTNEIHVmZXJyZWFic3Q7Ci0gICAgfQotCi0KLSAg
ICBAQ29sdW1uKG5hbWU9M0QiUSIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXRRKCkgewotICAgICAgICByZXR1cm4gdGhpcy5xOwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldFEoQmlnRGVjaW1hbCBxKSB7Ci0gICAgICAgIHRoaXMucSA9M0Qg
cTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJBX0hQRUlMIiwgcHJlY2lzaW9uPTNE
Niwgc2NhbGU9M0QxKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEFIcGVpbCgpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuQUhwZWlsOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEFIcGVp
bChCaWdEZWNpbWFsIEFIcGVpbCkgewotICAgICAgICB0aGlzLkFIcGVpbCA9M0QgQUhwZWlsOwot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkFfTVBFSUwiLCBwcmVjaXNpb249M0Q2LCBz
Y2FsZT0zRDEpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0QU1wZWlsKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5BTXBlaWw7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QU1wZWlsKEJp
Z0RlY2ltYWwgQU1wZWlsKSB7Ci0gICAgICAgIHRoaXMuQU1wZWlsID0zRCBBTXBlaWw7Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQiIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykK
LSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRCKCkgewotICAgICAgICByZXR1cm4gdGhpcy5iOwot
ICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEIoQmlnRGVjaW1hbCBiKSB7Ci0gICAgICAgIHRo
aXMuYiA9M0QgYjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJITSIsIHByZWNpc2lv
bj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRIbSgpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuaG07Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0SG0oQmlnRGVj
aW1hbCBobSkgewotICAgICAgICB0aGlzLmhtID0zRCBobTsKLSAgICB9Ci0KLQotICAgIEBDb2x1
bW4obmFtZT0zRCJWTSIsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmln
RGVjaW1hbCBnZXRWbSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudm07Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0Vm0oQmlnRGVjaW1hbCB2bSkgewotICAgICAgICB0aGlzLnZtID0zRCB2
bTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJWU09ITEUiLCBwcmVjaXNpb249M0Q2
LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VnNvaGxlKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy52c29obGU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VnNvaGxl
KEJpZ0RlY2ltYWwgdnNvaGxlKSB7Ci0gICAgICAgIHRoaXMudnNvaGxlID0zRCB2c29obGU7Ci0g
ICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVEFVIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9
M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFRhdSgpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMudGF1OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFRhdShCaWdEZWNpbWFsIHRhdSkg
ewotICAgICAgICB0aGlzLnRhdSA9M0QgdGF1OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIlRBVVYiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDYpCi0gICAgcHVibGljIEJpZ0RlY2lt
YWwgZ2V0VGF1digpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudGF1djsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRUYXV2KEJpZ0RlY2ltYWwgdGF1dikgewotICAgICAgICB0aGlzLnRhdXYg
PTNEIHRhdXY7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVEVJTF9RIiwgcHJlY2lz
aW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFRlaWxRKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy50ZWlsUTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRU
ZWlsUShCaWdEZWNpbWFsIHRlaWxRKSB7Ci0gICAgICAgIHRoaXMudGVpbFEgPTNEIHRlaWxROwot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlRFSUxfQV9IUEVJTCIsIHByZWNpc2lvbj0z
RDYsIHNjYWxlPTNEMSkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRUZWlsQUhwZWlsKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy50ZWlsQUhwZWlsOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lk
IHNldFRlaWxBSHBlaWwoQmlnRGVjaW1hbCB0ZWlsQUhwZWlsKSB7Ci0gICAgICAgIHRoaXMudGVp
bEFIcGVpbCA9M0QgdGVpbEFIcGVpbDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJU
RUlMX0FfTVBFSUwiLCBwcmVjaXNpb249M0Q2LCBzY2FsZT0zRDEpCi0gICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0VGVpbEFNcGVpbCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudGVpbEFNcGVpbDsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUZWlsQU1wZWlsKEJpZ0RlY2ltYWwgdGVpbEFN
cGVpbCkgewotICAgICAgICB0aGlzLnRlaWxBTXBlaWwgPTNEIHRlaWxBTXBlaWw7Ci0gICAgfQot
Ci0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVEVJTF9CIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0Qz
KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFRlaWxCKCkgewotICAgICAgICByZXR1cm4gdGhp
cy50ZWlsQjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUZWlsQihCaWdEZWNpbWFsIHRl
aWxCKSB7Ci0gICAgICAgIHRoaXMudGVpbEIgPTNEIHRlaWxCOwotICAgIH0KLQotCi0gICAgQENv
bHVtbihuYW1lPTNEIlRFSUxfSE0iLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVi
bGljIEJpZ0RlY2ltYWwgZ2V0VGVpbEhtKCkgewotICAgICAgICByZXR1cm4gdGhpcy50ZWlsSG07
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VGVpbEhtKEJpZ0RlY2ltYWwgdGVpbEhtKSB7
Ci0gICAgICAgIHRoaXMudGVpbEhtID0zRCB0ZWlsSG07Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiVEVJTF9WTSIsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMg
QmlnRGVjaW1hbCBnZXRUZWlsVm0oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRlaWxWbTsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUZWlsVm0oQmlnRGVjaW1hbCB0ZWlsVm0pIHsKLSAg
ICAgICAgdGhpcy50ZWlsVm0gPTNEIHRlaWxWbTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFt
ZT0zRCJURUlMX1ZTT0hMRSIsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMg
QmlnRGVjaW1hbCBnZXRUZWlsVnNvaGxlKCkgewotICAgICAgICByZXR1cm4gdGhpcy50ZWlsVnNv
aGxlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFRlaWxWc29obGUoQmlnRGVjaW1hbCB0
ZWlsVnNvaGxlKSB7Ci0gICAgICAgIHRoaXMudGVpbFZzb2hsZSA9M0QgdGVpbFZzb2hsZTsKLSAg
ICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJURUlMX1RBVSIsIHByZWNpc2lvbj0zRDksIHNj
YWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRUZWlsVGF1KCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy50ZWlsVGF1OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFRlaWxUYXUo
QmlnRGVjaW1hbCB0ZWlsVGF1KSB7Ci0gICAgICAgIHRoaXMudGVpbFRhdSA9M0QgdGVpbFRhdTsK
LSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJURUlMX1RBVVYiLCBwcmVjaXNpb249M0Q5
LCBzY2FsZT0zRDYpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VGVpbFRhdXYoKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLnRlaWxUYXV2OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFRl
aWxUYXV2KEJpZ0RlY2ltYWwgdGVpbFRhdXYpIHsKLSAgICAgICAgdGhpcy50ZWlsVGF1diA9M0Qg
dGVpbFRhdXY7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUlUVEVMVFlQIiwgcHJl
Y2lzaW9uPTNEMSwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBCb29sZWFuIGdldE1pdHRlbHR5cCgp
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWl0dGVsdHlwOwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldE1pdHRlbHR5cChCb29sZWFuIG1pdHRlbHR5cCkgewotICAgICAgICB0aGlzLm1pdHRl
bHR5cCA9M0QgbWl0dGVsdHlwOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkRNIiwg
cHJlY2lzaW9uPTNENywgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldERtKCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5kbTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRE
bShCaWdEZWNpbWFsIGRtKSB7Ci0gICAgICAgIHRoaXMuZG0gPTNEIGRtOwotICAgIH0KLQotCi0g
ICAgQENvbHVtbihuYW1lPTNEIlNLIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldFNrKCkgewotICAgICAgICByZXR1cm4gdGhpcy5zazsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTayhCaWdEZWNpbWFsIHNrKSB7Ci0gICAgICAgIHRoaXMu
c2sgPTNEIHNrOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNPIiwgcHJlY2lzaW9u
PTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFNvKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5zbzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTbyhCaWdEZWNp
bWFsIHNvKSB7Ci0gICAgICAgIHRoaXMuc28gPTNEIHNvOwotICAgIH0KLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIlUiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0VSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudTsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRVKEJpZ0RlY2ltYWwgdSkgewotICAgICAgICB0aGlzLnUgPTNEIHU7Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDkwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0
KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQ5MCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
ZDkwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQ5MChCaWdEZWNpbWFsIGQ5MCkgewot
ICAgICAgICB0aGlzLmQ5MCA9M0QgZDkwOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNE
IkQ4NCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXREODQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQ4NDsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXREODQoQmlnRGVjaW1hbCBkODQpIHsKLSAgICAgICAgdGhpcy5kODQgPTNEIGQ4NDsK
LSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJEODAiLCBwcmVjaXNpb249M0Q3LCBzY2Fs
ZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDgwKCkgewotICAgICAgICByZXR1cm4g
dGhpcy5kODA7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RDgwKEJpZ0RlY2ltYWwgZDgw
KSB7Ci0gICAgICAgIHRoaXMuZDgwID0zRCBkODA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiRDc1IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNp
bWFsIGdldEQ3NSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDc1OwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldEQ3NShCaWdEZWNpbWFsIGQ3NSkgewotICAgICAgICB0aGlzLmQ3NSA9M0Qg
ZDc1OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQ3MCIsIHByZWNpc2lvbj0zRDcs
IHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRENzAoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLmQ3MDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRENzAoQmlnRGVjaW1h
bCBkNzApIHsKLSAgICAgICAgdGhpcy5kNzAgPTNEIGQ3MDsKLSAgICB9Ci0KLQotICAgIEBDb2x1
bW4obmFtZT0zRCJENjAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0RDYwKCkgewotICAgICAgICByZXR1cm4gdGhpcy5kNjA7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0RDYwKEJpZ0RlY2ltYWwgZDYwKSB7Ci0gICAgICAgIHRoaXMuZDYw
ID0zRCBkNjA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDUwIiwgcHJlY2lzaW9u
PTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQ1MCgpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuZDUwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQ1MChCaWdE
ZWNpbWFsIGQ1MCkgewotICAgICAgICB0aGlzLmQ1MCA9M0QgZDUwOwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIkQ0MCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXRENDAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQ0MDsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRENDAoQmlnRGVjaW1hbCBkNDApIHsKLSAgICAgICAgdGhp
cy5kNDAgPTNEIGQ0MDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJEMzAiLCBwcmVj
aXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDMwKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5kMzA7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RDMw
KEJpZ0RlY2ltYWwgZDMwKSB7Ci0gICAgICAgIHRoaXMuZDMwID0zRCBkMzA7Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiRDI1IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldEQyNSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDI1Owot
ICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQyNShCaWdEZWNpbWFsIGQyNSkgewotICAgICAg
ICB0aGlzLmQyNSA9M0QgZDI1OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQyMCIs
IHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREMjAo
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQyMDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXREMjAoQmlnRGVjaW1hbCBkMjApIHsKLSAgICAgICAgdGhpcy5kMjAgPTNEIGQyMDsKLSAgICB9
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJEMTYiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQp
Ci0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDE2KCkgewotICAgICAgICByZXR1cm4gdGhpcy5k
MTY7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RDE2KEJpZ0RlY2ltYWwgZDE2KSB7Ci0g
ICAgICAgIHRoaXMuZDE2ID0zRCBkMTY7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0Qi
RDEwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdl
dEQxMCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDEwOwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldEQxMChCaWdEZWNpbWFsIGQxMCkgewotICAgICAgICB0aGlzLmQxMCA9M0QgZDEwOwot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkRNSU4iLCBwcmVjaXNpb249M0Q3LCBzY2Fs
ZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RG1pbigpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuZG1pbjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREbWluKEJpZ0RlY2ltYWwg
ZG1pbikgewotICAgICAgICB0aGlzLmRtaW4gPTNEIGRtaW47Ci0gICAgfQotCi0KLSAgICBAQ29s
dW1uKG5hbWU9M0QiRFVSQ0hETUlOIiwgcHJlY2lzaW9uPTNENiwgc2NhbGU9M0QzKQotICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldER1cmNoZG1pbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZHVy
Y2hkbWluOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldER1cmNoZG1pbihCaWdEZWNpbWFs
IGR1cmNoZG1pbikgewotICAgICAgICB0aGlzLmR1cmNoZG1pbiA9M0QgZHVyY2hkbWluOwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkRNQVgiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0z
RDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RG1heCgpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuZG1heDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREbWF4KEJpZ0RlY2ltYWwgZG1h
eCkgewotICAgICAgICB0aGlzLmRtYXggPTNEIGRtYXg7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiRFVSQ0hETUFYIiwgcHJlY2lzaW9uPTNENiwgc2NhbGU9M0QzKQotICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldER1cmNoZG1heCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZHVyY2hk
bWF4OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldER1cmNoZG1heChCaWdEZWNpbWFsIGR1
cmNoZG1heCkgewotICAgICAgICB0aGlzLmR1cmNoZG1heCA9M0QgZHVyY2hkbWF4OwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIk5fR0VTQ0hJRUIiLCBudWxsYWJsZT0zRGZhbHNlLCBw
cmVjaXNpb249M0Q1LCBzY2FsZT0zRD0KMCkKLSAgICBwdWJsaWMgaW50IGdldE5HZXNjaGllYigp
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuTkdlc2NoaWViOwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldE5HZXNjaGllYihpbnQgTkdlc2NoaWViKSB7Ci0gICAgICAgIHRoaXMuTkdlc2NoaWVi
ID0zRCBOR2VzY2hpZWI7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTl9WSUVMUEtU
IiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNENSwgc2NhbGU9M0QwKQotICAgIHB1Ymxp
YyBpbnQgZ2V0TlZpZWxwa3QoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLk5WaWVscGt0OwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE5WaWVscGt0KGludCBOVmllbHBrdCkgewotICAgICAg
ICB0aGlzLk5WaWVscGt0ID0zRCBOVmllbHBrdDsKLSAgICB9Ci0KLSAgICBAVGVtcG9yYWwoVGVt
cG9yYWxUeXBlLkRBVEUpCi0gICAgQENvbHVtbihuYW1lPTNEIlNZU19EQVRFIiwgbGVuZ3RoPTNE
NykKLSAgICBwdWJsaWMgRGF0ZSBnZXRTeXNEYXRlKCkgewotICAgICAgICByZXR1cm4gdGhpcy5z
eXNEYXRlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFN5c0RhdGUoRGF0ZSBzeXNEYXRl
KSB7Ci0gICAgICAgIHRoaXMuc3lzRGF0ZSA9M0Qgc3lzRGF0ZTsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJCRU1FUktVTkciLCBsZW5ndGg9M0QyNDApCi0gICAgcHVibGljIFN0cmlu
ZyBnZXRCZW1lcmt1bmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJlbWVya3VuZzsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRCZW1lcmt1bmcoU3RyaW5nIGJlbWVya3VuZykgewotICAg
ICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwotICAgIH0KLQotICAgIEBUZW1wb3Jh
bChUZW1wb3JhbFR5cGUuREFURSkKLSAgICBAQ29sdW1uKG5hbWU9M0QiTEFTVFVQREFURUQiLCBu
dWxsYWJsZT0zRGZhbHNlLCBsZW5ndGg9M0Q3KQotICAgIHB1YmxpYyBEYXRlIGdldExhc3R1cGRh
dGVkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5sYXN0dXBkYXRlZDsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRMYXN0dXBkYXRlZChEYXRlIGxhc3R1cGRhdGVkKSB7Ci0gICAgICAgIHRo
aXMubGFzdHVwZGF0ZWQgPTNEIGxhc3R1cGRhdGVkOwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIktNIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNp
bWFsIGdldEttKCkgewotICAgICAgICByZXR1cm4gdGhpcy5rbTsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRLbShCaWdEZWNpbWFsIGttKSB7Ci0gICAgICAgIHRoaXMua20gPTNEIGttOwot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkdMT1RBQlNUT0ZGU0VUIiwgbnVsbGFibGU9
M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbD0KZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2lt
YWwgZ2V0R2xvdGFic3RvZmZzZXQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmdsb3RhYnN0b2Zm
c2V0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEdsb3RhYnN0b2Zmc2V0KEJpZ0RlY2lt
YWwgZ2xvdGFic3RvZmZzZXQpIHsKLSAgICAgICAgdGhpcy5nbG90YWJzdG9mZnNldCA9M0QgZ2xv
dGFic3RvZmZzZXQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiU0xPVEFCU1RPRkZT
RVQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q4LCBzY2FsPQplPTNEMykKLSAgICBw
dWJsaWMgQmlnRGVjaW1hbCBnZXRTbG90YWJzdG9mZnNldCgpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuc2xvdGFic3RvZmZzZXQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U2xvdGFic3Rv
ZmZzZXQoQmlnRGVjaW1hbCBzbG90YWJzdG9mZnNldCkgewotICAgICAgICB0aGlzLnNsb3RhYnN0
b2Zmc2V0ID0zRCBzbG90YWJzdG9mZnNldDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJHQlJFSVRFVk9OTElOS1MiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGlj
IEJpZ0RlY2ltYWwgZ2V0R2JyZWl0ZXZvbmxpbmtzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5n
YnJlaXRldm9ubGlua3M7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0R2JyZWl0ZXZvbmxp
bmtzKEJpZ0RlY2ltYWwgZ2JyZWl0ZXZvbmxpbmtzKSB7Ci0gICAgICAgIHRoaXMuZ2JyZWl0ZXZv
bmxpbmtzID0zRCBnYnJlaXRldm9ubGlua3M7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiR0JSRUlURUJJU0xJTktTIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldEdicmVpdGViaXNsaW5rcygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
Z2JyZWl0ZWJpc2xpbmtzOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEdicmVpdGViaXNs
aW5rcyhCaWdEZWNpbWFsIGdicmVpdGViaXNsaW5rcykgewotICAgICAgICB0aGlzLmdicmVpdGVi
aXNsaW5rcyA9M0QgZ2JyZWl0ZWJpc2xpbmtzOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIkdMT1RVRkVSQUJTVElTVFZPTkxJTktTIiwgcHJlY2lzaW9uPTNEMSwgc2NhbGU9M0QwKQot
ICAgIHB1YmxpYyBCb29sZWFuIGdldEdsb3R1ZmVyYWJzdGlzdHZvbmxpbmtzKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5nbG90dWZlcmFic3Rpc3R2b25saW5rczsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRHbG90dWZlcmFic3Rpc3R2b25saW5rcyhCb29sZWFuIGdsb3R1ZmVyYWJzdGlz
dHZvbmxpbmtzPQopIHsKLSAgICAgICAgdGhpcy5nbG90dWZlcmFic3Rpc3R2b25saW5rcyA9M0Qg
Z2xvdHVmZXJhYnN0aXN0dm9ubGlua3M7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0Qi
U0xPVFVGRVJBQlNUSVNUVk9OTElOS1MiLCBwcmVjaXNpb249M0QxLCBzY2FsZT0zRDApCi0gICAg
cHVibGljIEJvb2xlYW4gZ2V0U2xvdHVmZXJhYnN0aXN0dm9ubGlua3MoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLnNsb3R1ZmVyYWJzdGlzdHZvbmxpbmtzOwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldFNsb3R1ZmVyYWJzdGlzdHZvbmxpbmtzKEJvb2xlYW4gc2xvdHVmZXJhYnN0aXN0dm9u
bGlua3M9CikgewotICAgICAgICB0aGlzLnNsb3R1ZmVyYWJzdGlzdHZvbmxpbmtzID0zRCBzbG90
dWZlcmFic3Rpc3R2b25saW5rczsKLSAgICB9Ci0KLUBPbmVUb01hbnkoZmV0Y2g9M0RGZXRjaFR5
cGUuTEFaWSwgbWFwcGVkQnk9M0QibWVzc3VuZyIpCi0gICAgcHVibGljIFNldDxHbG90cmVjaHRl
PiBnZXRHbG90cmVjaHRlcygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ2xvdHJlY2h0ZXM7Ci0g
ICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0R2xvdHJlY2h0ZXMoU2V0PEdsb3RyZWNodGU+IGds
b3RyZWNodGVzKSB7Ci0gICAgICAgIHRoaXMuZ2xvdHJlY2h0ZXMgPTNEIGdsb3RyZWNodGVzOwot
ICAgIH0KLQotQE9uZVRvTWFueShmZXRjaD0zREZldGNoVHlwZS5MQVpZLCBtYXBwZWRCeT0zRCJt
ZXNzdW5nIikKLSAgICBwdWJsaWMgU2V0PFNsb3RyZWNodGU+IGdldFNsb3RyZWNodGVzKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5zbG90cmVjaHRlczsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXRTbG90cmVjaHRlcyhTZXQ8U2xvdHJlY2h0ZT4gc2xvdHJlY2h0ZXMpIHsKLSAgICAgICAg
dGhpcy5zbG90cmVjaHRlcyA9M0Qgc2xvdHJlY2h0ZXM7Ci0gICAgfQotfQpkaWZmIC1yIGJjNGUx
YmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRp
b24vc2U9CmRkYi9tb2RlbC9NZXNzdW5nbG90Y291bnQuamF2YQotLS0gYS9iYWNrZW5kL3NyYy9t
YWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZWRkYi9tb2RlbC9NZXNzdW5nbG90Y291bnQuamF2YQk9
Ck1vbiBBcHIgMjkgMTE6MTQ6MjUgMjAxMyArMDIwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEg
MDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSw1MyArMCwwIEBACi0vKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0K
dW5kZQotICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0gKgotICog
VGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMpPTIw
Ci0gKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQgdGhl
Ci0gKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9yIGRl
dGFpbHMuPTIwCi0gKi8KLQotcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5zZWRkYi5tb2RlbDsK
LS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQu
MC5DUjEKLQotCi1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQXR0cmlidXRlT3ZlcnJpZGU7Ci1p
bXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQXR0cmlidXRlT3ZlcnJpZGVzOwotaW1wb3J0IGphdmF4
LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbWJlZGRlZElk
OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKLWltcG9ydCBqYXZheC5wZXJzaXN0
ZW5jZS5UYWJsZTsKLQotLyoqCi0gKiBNZXNzdW5nbG90Y291bnQgZ2VuZXJhdGVkIGJ5IGhibTJq
YXZhCi0gKi8KLUBFbnRpdHkKLUBUYWJsZShuYW1lPTNEIk1FU1NVTkdMT1RDT1VOVCIKLSAgICAs
c2NoZW1hPTNEIlNFRERCIgotKQotcHVibGljIGNsYXNzIE1lc3N1bmdsb3Rjb3VudCAgaW1wbGVt
ZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7Ci0KLQotICAgICBwcml2YXRlIE1lc3N1bmdsb3Rj
b3VudElkIGlkOwotCi0gICAgcHVibGljIE1lc3N1bmdsb3Rjb3VudCgpIHsKLSAgICB9Ci0KLSAg
ICBwdWJsaWMgTWVzc3VuZ2xvdGNvdW50KE1lc3N1bmdsb3Rjb3VudElkIGlkKSB7Ci0gICAgICAg
dGhpcy5pZCA9M0QgaWQ7Ci0gICAgfQotCi0gICAgIEBFbWJlZGRlZElkCi0KLQotICAgIEBBdHRy
aWJ1dGVPdmVycmlkZXMoIHsKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWVz
c3VuZ2lkIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1FPQpTU1VOR0lEIiwgbnVsbGFibGU9
M0RmYWxzZSwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEMCkgKSwKLSAgICAgICAgQEF0dHJpYnV0
ZU92ZXJyaWRlKG5hbWU9M0QiZ2xvdGNvdW50IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkdM
PQpPVENPVU5UIiwgcHJlY2lzaW9uPTNEMjIsIHNjYWxlPTNEMCkgKSwKLSAgICAgICAgQEF0dHJp
YnV0ZU92ZXJyaWRlKG5hbWU9M0Qic2xvdGNvdW50IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNE
IlNMPQpPVENPVU5UIiwgcHJlY2lzaW9uPTNEMjIsIHNjYWxlPTNEMCkgKSB9ICkKLSAgICBwdWJs
aWMgTWVzc3VuZ2xvdGNvdW50SWQgZ2V0SWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmlkOwot
ICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldElkKE1lc3N1bmdsb3Rjb3VudElkIGlkKSB7Ci0g
ICAgICAgIHRoaXMuaWQgPTNEIGlkOwotICAgIH0KLX0KZGlmZiAtciBiYzRlMWJmMjYyMjcgLXIg
MWU2OGVjYTI2YjhhIGJhY2tlbmQvc3JjL21haW4vamF2YS9kZS9pbnRldmF0aW9uL3NlPQpkZGIv
bW9kZWwvTWVzc3VuZ2xvdGNvdW50SWQuamF2YQotLS0gYS9iYWNrZW5kL3NyYy9tYWluL2phdmEv
ZGUvaW50ZXZhdGlvbi9zZWRkYi9tb2RlbC9NZXNzdW5nbG90Y291bnRJZC5qYXY9CmEJTW9uIEFw
ciAyOSAxMToxNDoyNSAyMDEzICswMjAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
MCAxOTcwICswMDAwCkBAIC0xLDkyICswLDAgQEAKLS8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAx
MiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCi0g
KiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgKLSAqCi0gKiBUaGlzIGZp
bGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49M0R2Myk9MjAKLSAqIGFu
ZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUKLSAqIGRv
Y3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy49
MjAKLSAqLwotCi1wYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnNlZGRiLm1vZGVsOwotLy8gR2Vu
ZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQot
Ci0KLWltcG9ydCBqYXZhLm1hdGguQmlnRGVjaW1hbDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5j
ZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW1iZWRkYWJsZTsKLQotLyoqCi0g
KiBNZXNzdW5nbG90Y291bnRJZCBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVtYmVkZGFi
bGUKLXB1YmxpYyBjbGFzcyBNZXNzdW5nbG90Y291bnRJZCAgaW1wbGVtZW50cyBqYXZhLmlvLlNl
cmlhbGl6YWJsZSB7Ci0KLQotICAgICBwcml2YXRlIGxvbmcgbWVzc3VuZ2lkOwotICAgICBwcml2
YXRlIEJpZ0RlY2ltYWwgZ2xvdGNvdW50OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgc2xvdGNv
dW50OwotCi0gICAgcHVibGljIE1lc3N1bmdsb3Rjb3VudElkKCkgewotICAgIH0KLQotCi0gICAg
cHVibGljIE1lc3N1bmdsb3Rjb3VudElkKGxvbmcgbWVzc3VuZ2lkKSB7Ci0gICAgICAgIHRoaXMu
bWVzc3VuZ2lkID0zRCBtZXNzdW5naWQ7Ci0gICAgfQotICAgIHB1YmxpYyBNZXNzdW5nbG90Y291
bnRJZChsb25nIG1lc3N1bmdpZCwgQmlnRGVjaW1hbCBnbG90Y291bnQsIEJpZ0RlY2k9Cm1hbCBz
bG90Y291bnQpIHsKLSAgICAgICB0aGlzLm1lc3N1bmdpZCA9M0QgbWVzc3VuZ2lkOwotICAgICAg
IHRoaXMuZ2xvdGNvdW50ID0zRCBnbG90Y291bnQ7Ci0gICAgICAgdGhpcy5zbG90Y291bnQgPTNE
IHNsb3Rjb3VudDsKLSAgICB9Ci0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1FU1NVTkdJRCIs
IG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRD0KMCkKLSAgICBwdWJs
aWMgbG9uZyBnZXRNZXNzdW5naWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1lc3N1bmdpZDsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNZXNzdW5naWQobG9uZyBtZXNzdW5naWQpIHsK
LSAgICAgICAgdGhpcy5tZXNzdW5naWQgPTNEIG1lc3N1bmdpZDsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJHTE9UQ09VTlQiLCBwcmVjaXNpb249M0QyMiwgc2NhbGU9M0QwKQotICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldEdsb3Rjb3VudCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
Z2xvdGNvdW50OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEdsb3Rjb3VudChCaWdEZWNp
bWFsIGdsb3Rjb3VudCkgewotICAgICAgICB0aGlzLmdsb3Rjb3VudCA9M0QgZ2xvdGNvdW50Owot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNMT1RDT1VOVCIsIHByZWNpc2lvbj0zRDIy
LCBzY2FsZT0zRDApCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0U2xvdGNvdW50KCkgewotICAg
ICAgICByZXR1cm4gdGhpcy5zbG90Y291bnQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0
U2xvdGNvdW50KEJpZ0RlY2ltYWwgc2xvdGNvdW50KSB7Ci0gICAgICAgIHRoaXMuc2xvdGNvdW50
ID0zRCBzbG90Y291bnQ7Ci0gICAgfQotCi0KLSAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmpl
Y3Qgb3RoZXIpIHsKLSAgICAgICAgIGlmICggKHRoaXMgPTNEPTNEIG90aGVyICkgKSByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgIGlmICggKG90aGVyID0zRD0zRCBudWxsICkgKSByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICBpZiAoICEob3RoZXIgaW5zdGFuY2VvZiBNZXNzdW5nbG90Y291bnRJZCkgKSBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICBNZXNzdW5nbG90Y291bnRJZCBjYXN0T3RoZXIgPTNEICgg
TWVzc3VuZ2xvdGNvdW50SWQgKSBvdGhlcjsKLQotICAgICAgICAgcmV0dXJuICh0aGlzLmdldE1l
c3N1bmdpZCgpPTNEPTNEY2FzdE90aGVyLmdldE1lc3N1bmdpZCgpKQotICYmICggKHRoaXMuZ2V0
R2xvdGNvdW50KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0R2xvdGNvdW50KCkpIHx8ICggdGhpcy5nZXRH
bG89CnRjb3VudCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldEdsb3Rjb3VudCgpIT0zRG51bGwg
JiYgdGhpcy5nZXRHbG90Y291bnQoKT0KLmVxdWFscyhjYXN0T3RoZXIuZ2V0R2xvdGNvdW50KCkp
ICkgKQotICYmICggKHRoaXMuZ2V0U2xvdGNvdW50KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0U2xvdGNv
dW50KCkpIHx8ICggdGhpcy5nZXRTbG89CnRjb3VudCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdl
dFNsb3Rjb3VudCgpIT0zRG51bGwgJiYgdGhpcy5nZXRTbG90Y291bnQoKT0KLmVxdWFscyhjYXN0
T3RoZXIuZ2V0U2xvdGNvdW50KCkpICkgKTsKLSAgIH0KLQotICAgcHVibGljIGludCBoYXNoQ29k
ZSgpIHsKLSAgICAgICAgIGludCByZXN1bHQgPTNEIDE3OwotCi0gICAgICAgICByZXN1bHQgPTNE
IDM3ICogcmVzdWx0ICsgKGludCkgdGhpcy5nZXRNZXNzdW5naWQoKTsKLSAgICAgICAgIHJlc3Vs
dCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEdsb3Rjb3VudCgpID0zRD0zRCBudWxsID8gMCA6IHRo
aXMuPQpnZXRHbG90Y291bnQoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3
ICogcmVzdWx0ICsgKCBnZXRTbG90Y291bnQoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLj0KZ2V0
U2xvdGNvdW50KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0K
LX0KZGlmZiAtciBiYzRlMWJmMjYyMjcgLXIgMWU2OGVjYTI2YjhhIGJhY2tlbmQvc3JjL21haW4v
amF2YS9kZS9pbnRldmF0aW9uL3NlPQpkZGIvbW9kZWwvTWVzc3VuZ3N0YS5qYXZhCi0tLSBhL2Jh
Y2tlbmQvc3JjL21haW4vamF2YS9kZS9pbnRldmF0aW9uL3NlZGRiL21vZGVsL01lc3N1bmdzdGEu
amF2YQlNb24gQT0KcHIgMjkgMTE6MTQ6MjUgMjAxMyArMDIwMAorKysgL2Rldi9udWxsCVRodSBK
YW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMzAgKzAsMCBAQAotLyogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0
c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAot
ICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0z
RHYzKT0yMAotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sg
b3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVy
IGZvciBkZXRhaWxzLj0yMAotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIu
bW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9v
bHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0ZU92ZXJy
aWRlOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0ZU92ZXJyaWRlczsKLWltcG9y
dCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW1i
ZWRkZWRJZDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7Ci1pbXBvcnQgamF2YXgu
cGVyc2lzdGVuY2UuVGFibGU7Ci0KLS8qKgotICogTWVzc3VuZ3N0YSBnZW5lcmF0ZWQgYnkgaGJt
MmphdmEKLSAqLwotQEVudGl0eQotQFRhYmxlKG5hbWU9M0QiTUVTU1VOR1NUQSIKLSAgICAsc2No
ZW1hPTNEIlNFRERCIgotKQotcHVibGljIGNsYXNzIE1lc3N1bmdzdGEgIGltcGxlbWVudHMgamF2
YS5pby5TZXJpYWxpemFibGUgewotCi0KLSAgICAgcHJpdmF0ZSBNZXNzdW5nc3RhSWQgaWQ7Ci0K
LSAgICBwdWJsaWMgTWVzc3VuZ3N0YSgpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgTWVzc3VuZ3N0
YShNZXNzdW5nc3RhSWQgaWQpIHsKLSAgICAgICB0aGlzLmlkID0zRCBpZDsKLSAgICB9Ci0KLSAg
ICAgQEVtYmVkZGVkSWQKLQotCi0gICAgQEF0dHJpYnV0ZU92ZXJyaWRlcyggewotICAgICAgICBA
QXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtZXNzdW5naWQiLCBjb2x1bW49M0RAQ29sdW1uKG5h
bWU9M0QiTUU9ClNTVU5HSUQiKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0z
RCJzdGF0aW9uaWQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiU1Q9CkFUSU9OSUQiKSApLAot
ICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkYXR1bSIsIGNvbHVtbj0zREBDb2x1
bW4obmFtZT0zRCJEQVRVTSI9CikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9
M0QiaHBlaWx1bmdpZCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJIPQpQRUlMVU5HSUQiKSAp
LAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtcGVpbHVuZ2lkIiwgY29sdW1u
PTNEQENvbHVtbihuYW1lPTNEIk09ClBFSUxVTkdJRCIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVP
dmVycmlkZShuYW1lPTNEImdmYWVuZ2VyaWQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiRz0K
RkFFTkdFUklEIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZ3NpZWJz
YXR6aWQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiPQpHU0lFQlNBVFpJRCIpICksCi0gICAg
ICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1lc3NuciIsIGNvbHVtbj0zREBDb2x1bW4o
bmFtZT0zRCJNRVNTTj0KUiIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNE
ImZndWUiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiRkdVRSIpID0KKSwKLSAgICAgICAgQEF0
dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QidWhydm9uIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNE
IlVIUlZPPQpOIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QidWhyYmlz
IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlVIUkJJPQpTIikgKSwKLSAgICAgICAgQEF0dHJp
YnV0ZU92ZXJyaWRlKG5hbWU9M0Qid3NwY20iLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiV1NQ
Q00iPQopICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIlFCcGVnZWwiLCBj
b2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUV9CUD0KRUdFTCIpICksCi0gICAgICAgIEBBdHRyaWJ1
dGVPdmVycmlkZShuYW1lPTNEIndzcG5uIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIldTUE5O
Ij0KKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJpZSIsIGNvbHVtbj0z
REBDb2x1bW4obmFtZT0zRCJJRSIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1l
PTNEInd0ZW1wIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIldURU1QIj0KKSApLAotICAgICAg
ICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJnYnJlaXRlIiwgY29sdW1uPTNEQENvbHVtbihu
YW1lPTNEIkdCUkU9CklURSIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNE
ImdicmVpdGV2b24iLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiRz0KQlJFSVRFVk9OIikgKSwK
LSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZ2JyZWl0ZWJpcyIsIGNvbHVtbj0z
REBDb2x1bW4obmFtZT0zRCJHPQpCUkVJVEVCSVMiKSApLAotICAgICAgICBAQXR0cmlidXRlT3Zl
cnJpZGUobmFtZT0zRCJ0Z2VzY2hpZWJlIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlQ9CkdF
U0NISUVCRSIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInRzYW5kIiwg
Y29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlRTQU5EIj0KKSApLAotICAgICAgICBAQXR0cmlidXRl
T3ZlcnJpZGUobmFtZT0zRCJ0c2Nod2ViIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlRTQ0g9
CldFQiIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImNzY2h3ZWIiLCBj
b2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiQ1NDSD0KV0VCIikgKSwKLSAgICAgICAgQEF0dHJpYnV0
ZU92ZXJyaWRlKG5hbWU9M0QidWZlcmxpYWJzdCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJV
PQpGRVJMSUFCU1QiKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ1ZmVy
cmVhYnN0IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlU9CkZFUlJFQUJTVCIpICksCi0gICAg
ICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInEiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9
M0QiUSIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIkFIcGVpbCIsIGNv
bHVtbj0zREBDb2x1bW4obmFtZT0zRCJBX0hQRT0KSUwiKSApLAotICAgICAgICBAQXR0cmlidXRl
T3ZlcnJpZGUobmFtZT0zRCJBTXBlaWwiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiQV9NUEU9
CklMIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiYiIsIGNvbHVtbj0z
REBDb2x1bW4obmFtZT0zRCJCIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9
M0QiaG0iLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiSE0iKSApLAotICAgICAgICBAQXR0cmli
dXRlT3ZlcnJpZGUobmFtZT0zRCJ2bSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJWTSIpICks
Ci0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInZzb2hsZSIsIGNvbHVtbj0zREBD
b2x1bW4obmFtZT0zRCJWU09ITD0KRSIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShu
YW1lPTNEInRhdSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJUQVUiKSApLAotICAgICAgICBA
QXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ0YXV2IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNE
IlRBVVYiKSA9CiksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInRlaWxRIiwg
Y29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlRFSUxfUT0KIikgKSwKLSAgICAgICAgQEF0dHJpYnV0
ZU92ZXJyaWRlKG5hbWU9M0QidGVpbEFIcGVpbCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJU
PQpFSUxfQV9IUEVJTCIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInRl
aWxBTXBlaWwiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiVD0KRUlMX0FfTVBFSUwiKSApLAot
ICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ0ZWlsQiIsIGNvbHVtbj0zREBDb2x1
bW4obmFtZT0zRCJURUlMX0I9CiIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1l
PTNEInRlaWxIbSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJURUlMXz0KSE0iKSApLAotICAg
ICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ0ZWlsVm0iLCBjb2x1bW49M0RAQ29sdW1u
KG5hbWU9M0QiVEVJTF89ClZNIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9
M0QidGVpbFZzb2hsZSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJUPQpFSUxfVlNPSExFIikg
KSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QidGVpbFRhdSIsIGNvbHVtbj0z
REBDb2x1bW4obmFtZT0zRCJURUlMPQpfVEFVIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJy
aWRlKG5hbWU9M0QidGVpbFRhdXYiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiVEVJPQpMX1RB
VVYiKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtaXR0ZWx0eXAiLCBj
b2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUk9ClRURUxUWVAiKSApLAotICAgICAgICBAQXR0cmli
dXRlT3ZlcnJpZGUobmFtZT0zRCJkbSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJETSIpICks
Ci0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInNrIiwgY29sdW1uPTNEQENvbHVt
bihuYW1lPTNEIlNLIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qic28i
LCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiU08iKSApLAotICAgICAgICBAQXR0cmlidXRlT3Zl
cnJpZGUobmFtZT0zRCJ1IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlUiKSApLAotICAgICAg
ICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkOTAiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9
M0QiRDkwIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZDg0IiwgY29s
dW1uPTNEQENvbHVtbihuYW1lPTNEIkQ4NCIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlk
ZShuYW1lPTNEImQ4MCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJEODAiKSApLAotICAgICAg
ICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkNzUiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9
M0QiRDc1IikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZDcwIiwgY29s
dW1uPTNEQENvbHVtbihuYW1lPTNEIkQ3MCIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlk
ZShuYW1lPTNEImQ2MCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJENjAiKSApLAotICAgICAg
ICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkNTAiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9
M0QiRDUwIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZDQwIiwgY29s
dW1uPTNEQENvbHVtbihuYW1lPTNEIkQ0MCIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlk
ZShuYW1lPTNEImQzMCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJEMzAiKSApLAotICAgICAg
ICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkMjUiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9
M0QiRDI1IikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZDIwIiwgY29s
dW1uPTNEQENvbHVtbihuYW1lPTNEIkQyMCIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlk
ZShuYW1lPTNEImQxNiIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJEMTYiKSApLAotICAgICAg
ICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkMTAiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9
M0QiRDEwIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZG1pbiIsIGNv
bHVtbj0zREBDb2x1bW4obmFtZT0zRCJETUlOIikgPQopLAotICAgICAgICBAQXR0cmlidXRlT3Zl
cnJpZGUobmFtZT0zRCJkdXJjaGRtaW4iLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiRFU9ClJD
SERNSU4iKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkbWF4IiwgY29s
dW1uPTNEQENvbHVtbihuYW1lPTNEIkRNQVgiKSA9CiksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVy
cmlkZShuYW1lPTNEImR1cmNoZG1heCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJEVT0KUkNI
RE1BWCIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIk5HZXNjaGllYiIs
IGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJOXz0KR0VTQ0hJRUIiKSApLAotICAgICAgICBAQXR0
cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJOVmllbHBrdCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0z
RCJOX1Y9CklFTFBLVCIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInN5
c0RhdGUiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiU1lTXz0KREFURSIpICksCi0gICAgICAg
IEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImJlbWVya3VuZyIsIGNvbHVtbj0zREBDb2x1bW4o
bmFtZT0zRCJCRT0KTUVSS1VORyIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1l
PTNEImxhc3R1cGRhdGVkIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIj0KTEFTVFVQREFURUQi
KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJrbSIsIGNvbHVtbj0zREBD
b2x1bW4obmFtZT0zRCJLTSIpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNE
Imdsb3RhYnN0b2Zmc2V0IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPQo9M0QiR0xPVEFCU1RPRkZT
RVQiKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJzbG90YWJzdG9mZnNl
dCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0KPTNEIlNMT1RBQlNUT0ZGU0VUIikgKSwKLSAgICAg
ICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZ2JyZWl0ZXZvbmxpbmtzIiwgY29sdW1uPTNE
QENvbHVtbihuYW1lPQo9M0QiR0JSRUlURVZPTkxJTktTIikgKSwKLSAgICAgICAgQEF0dHJpYnV0
ZU92ZXJyaWRlKG5hbWU9M0QiZ2JyZWl0ZWJpc2xpbmtzIiwgY29sdW1uPTNEQENvbHVtbihuYW1l
PQo9M0QiR0JSRUlURUJJU0xJTktTIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5h
bWU9M0Qic3RhbmFtZSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJTVEFOPQpBTUUiKSApLAot
ICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJzdGFrbSIsIGNvbHVtbj0zREBDb2x1
bW4obmFtZT0zRCJTVEFLTSI9CikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9
M0QiZ2V3YWVzc2VyaWQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiPQpHRVdBRVNTRVJJRCIp
ICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImdld25hbWUiLCBjb2x1bW49
M0RAQ29sdW1uKG5hbWU9M0QiR0VXTj0KQU1FIikgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJy
aWRlKG5hbWU9M0QiYmV6dWdzcGVnZWxpZCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0KPTNEIkJF
WlVHU1BFR0VMSUQiKSApIH0gKQotICAgIHB1YmxpYyBNZXNzdW5nc3RhSWQgZ2V0SWQoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLmlkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldElkKE1l
c3N1bmdzdGFJZCBpZCkgewotICAgICAgICB0aGlzLmlkID0zRCBpZDsKLSAgICB9Ci19CmRpZmYg
LXIgYmM0ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9tYWluL2phdmEvZGUv
aW50ZXZhdGlvbi9zZT0KZGRiL21vZGVsL01lc3N1bmdzdGFJZC5qYXZhCi0tLSBhL2JhY2tlbmQv
c3JjL21haW4vamF2YS9kZS9pbnRldmF0aW9uL3NlZGRiL21vZGVsL01lc3N1bmdzdGFJZC5qYXZh
CU1vbj0KIEFwciAyOSAxMToxNDoyNSAyMDEzICswMjAwCisrKyAvZGV2L251bGwJVGh1IEphbiAw
MSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDExNjYgKzAsMCBAQAotLyogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nl
cms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoK
LSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYz
KT0yMAotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0
IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZv
ciBkZXRhaWxzLj0yMAotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9k
ZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMg
My40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOwotaW1wb3J0IGphdmF4
LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbWJlZGRhYmxl
OwotCi0vKioKLSAqIE1lc3N1bmdzdGFJZCBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVt
YmVkZGFibGUKLXB1YmxpYyBjbGFzcyBNZXNzdW5nc3RhSWQgIGltcGxlbWVudHMgamF2YS5pby5T
ZXJpYWxpemFibGUgewotCi0KLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgbWVzc3VuZ2lkOwot
ICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBzdGF0aW9uaWQ7Ci0gICAgIHByaXZhdGUgU2VyaWFs
aXphYmxlIGRhdHVtOwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBocGVpbHVuZ2lkOwotICAg
ICBwcml2YXRlIFNlcmlhbGl6YWJsZSBtcGVpbHVuZ2lkOwotICAgICBwcml2YXRlIFNlcmlhbGl6
YWJsZSBnZmFlbmdlcmlkOwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBnc2llYnNhdHppZDsK
LSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgbWVzc25yOwotICAgICBwcml2YXRlIFNlcmlhbGl6
YWJsZSBmZ3VlOwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSB1aHJ2b247Ci0gICAgIHByaXZh
dGUgU2VyaWFsaXphYmxlIHVocmJpczsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgd3NwY207
Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIFFCcGVnZWw7Ci0gICAgIHByaXZhdGUgU2VyaWFs
aXphYmxlIHdzcG5uOwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBpZTsKLSAgICAgcHJpdmF0
ZSBTZXJpYWxpemFibGUgd3RlbXA7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGdicmVpdGU7
Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGdicmVpdGV2b247Ci0gICAgIHByaXZhdGUgU2Vy
aWFsaXphYmxlIGdicmVpdGViaXM7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIHRnZXNjaGll
YmU7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIHRzYW5kOwotICAgICBwcml2YXRlIFNlcmlh
bGl6YWJsZSB0c2Nod2ViOwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBjc2Nod2ViOwotICAg
ICBwcml2YXRlIFNlcmlhbGl6YWJsZSB1ZmVybGlhYnN0OwotICAgICBwcml2YXRlIFNlcmlhbGl6
YWJsZSB1ZmVycmVhYnN0OwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBxOwotICAgICBwcml2
YXRlIFNlcmlhbGl6YWJsZSBBSHBlaWw7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIEFNcGVp
bDsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgYjsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFi
bGUgaG07Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIHZtOwotICAgICBwcml2YXRlIFNlcmlh
bGl6YWJsZSB2c29obGU7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIHRhdTsKLSAgICAgcHJp
dmF0ZSBTZXJpYWxpemFibGUgdGF1djsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgdGVpbFE7
Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIHRlaWxBSHBlaWw7Ci0gICAgIHByaXZhdGUgU2Vy
aWFsaXphYmxlIHRlaWxBTXBlaWw7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIHRlaWxCOwot
ICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSB0ZWlsSG07Ci0gICAgIHByaXZhdGUgU2VyaWFsaXph
YmxlIHRlaWxWbTsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgdGVpbFZzb2hsZTsKLSAgICAg
cHJpdmF0ZSBTZXJpYWxpemFibGUgdGVpbFRhdTsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUg
dGVpbFRhdXY7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIG1pdHRlbHR5cDsKLSAgICAgcHJp
dmF0ZSBTZXJpYWxpemFibGUgZG07Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIHNrOwotICAg
ICBwcml2YXRlIFNlcmlhbGl6YWJsZSBzbzsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgdTsK
LSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgZDkwOwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJs
ZSBkODQ7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGQ4MDsKLSAgICAgcHJpdmF0ZSBTZXJp
YWxpemFibGUgZDc1OwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBkNzA7Ci0gICAgIHByaXZh
dGUgU2VyaWFsaXphYmxlIGQ2MDsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgZDUwOwotICAg
ICBwcml2YXRlIFNlcmlhbGl6YWJsZSBkNDA7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGQz
MDsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgZDI1OwotICAgICBwcml2YXRlIFNlcmlhbGl6
YWJsZSBkMjA7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGQxNjsKLSAgICAgcHJpdmF0ZSBT
ZXJpYWxpemFibGUgZDEwOwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBkbWluOwotICAgICBw
cml2YXRlIFNlcmlhbGl6YWJsZSBkdXJjaGRtaW47Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxl
IGRtYXg7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGR1cmNoZG1heDsKLSAgICAgcHJpdmF0
ZSBTZXJpYWxpemFibGUgTkdlc2NoaWViOwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBOVmll
bHBrdDsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgc3lzRGF0ZTsKLSAgICAgcHJpdmF0ZSBT
ZXJpYWxpemFibGUgYmVtZXJrdW5nOwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBsYXN0dXBk
YXRlZDsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUga207Ci0gICAgIHByaXZhdGUgU2VyaWFs
aXphYmxlIGdsb3RhYnN0b2Zmc2V0OwotICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBzbG90YWJz
dG9mZnNldDsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgZ2JyZWl0ZXZvbmxpbmtzOwotICAg
ICBwcml2YXRlIFNlcmlhbGl6YWJsZSBnYnJlaXRlYmlzbGlua3M7Ci0gICAgIHByaXZhdGUgU2Vy
aWFsaXphYmxlIHN0YW5hbWU7Ci0gICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIHN0YWttOwotICAg
ICBwcml2YXRlIFNlcmlhbGl6YWJsZSBnZXdhZXNzZXJpZDsKLSAgICAgcHJpdmF0ZSBTZXJpYWxp
emFibGUgZ2V3bmFtZTsKLSAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgYmV6dWdzcGVnZWxpZDsK
LQotICAgIHB1YmxpYyBNZXNzdW5nc3RhSWQoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIE1lc3N1
bmdzdGFJZChTZXJpYWxpemFibGUgbWVzc3VuZ2lkLCBTZXJpYWxpemFibGUgc3RhdGlvbmlkLCBT
ZT0KcmlhbGl6YWJsZSBkYXR1bSwgU2VyaWFsaXphYmxlIGhwZWlsdW5naWQsIFNlcmlhbGl6YWJs
ZSBtcGVpbHVuZ2lkLCBTZXJpYWxpPQp6YWJsZSBnZmFlbmdlcmlkLCBTZXJpYWxpemFibGUgZ3Np
ZWJzYXR6aWQsIFNlcmlhbGl6YWJsZSBtZXNzbnIsIFNlcmlhbGl6YWI9CmxlIGZndWUsIFNlcmlh
bGl6YWJsZSB1aHJ2b24sIFNlcmlhbGl6YWJsZSB1aHJiaXMsIFNlcmlhbGl6YWJsZSB3c3BjbSwg
U2VyaT0KYWxpemFibGUgUUJwZWdlbCwgU2VyaWFsaXphYmxlIHdzcG5uLCBTZXJpYWxpemFibGUg
aWUsIFNlcmlhbGl6YWJsZSB3dGVtcCwgPQpTZXJpYWxpemFibGUgZ2JyZWl0ZSwgU2VyaWFsaXph
YmxlIGdicmVpdGV2b24sIFNlcmlhbGl6YWJsZSBnYnJlaXRlYmlzLCBTZXI9CmlhbGl6YWJsZSB0
Z2VzY2hpZWJlLCBTZXJpYWxpemFibGUgdHNhbmQsIFNlcmlhbGl6YWJsZSB0c2Nod2ViLCBTZXJp
YWxpemFibD0KZSBjc2Nod2ViLCBTZXJpYWxpemFibGUgdWZlcmxpYWJzdCwgU2VyaWFsaXphYmxl
IHVmZXJyZWFic3QsIFNlcmlhbGl6YWJsZSBxPQosIFNlcmlhbGl6YWJsZSBBSHBlaWwsIFNlcmlh
bGl6YWJsZSBBTXBlaWwsIFNlcmlhbGl6YWJsZSBiLCBTZXJpYWxpemFibGUgaG09CiwgU2VyaWFs
aXphYmxlIHZtLCBTZXJpYWxpemFibGUgdnNvaGxlLCBTZXJpYWxpemFibGUgdGF1LCBTZXJpYWxp
emFibGUgdGF1dj0KLCBTZXJpYWxpemFibGUgdGVpbFEsIFNlcmlhbGl6YWJsZSB0ZWlsQUhwZWls
LCBTZXJpYWxpemFibGUgdGVpbEFNcGVpbCwgU2VyPQppYWxpemFibGUgdGVpbEIsIFNlcmlhbGl6
YWJsZSB0ZWlsSG0sIFNlcmlhbGl6YWJsZSB0ZWlsVm0sIFNlcmlhbGl6YWJsZSB0ZWk9CmxWc29o
bGUsIFNlcmlhbGl6YWJsZSB0ZWlsVGF1LCBTZXJpYWxpemFibGUgdGVpbFRhdXYsIFNlcmlhbGl6
YWJsZSBtaXR0ZWx0eT0KcCwgU2VyaWFsaXphYmxlIGRtLCBTZXJpYWxpemFibGUgc2ssIFNlcmlh
bGl6YWJsZSBzbywgU2VyaWFsaXphYmxlIHUsIFNlcmlhPQpsaXphYmxlIGQ5MCwgU2VyaWFsaXph
YmxlIGQ4NCwgU2VyaWFsaXphYmxlIGQ4MCwgU2VyaWFsaXphYmxlIGQ3NSwgU2VyaWFsaXo9CmFi
bGUgZDcwLCBTZXJpYWxpemFibGUgZDYwLCBTZXJpYWxpemFibGUgZDUwLCBTZXJpYWxpemFibGUg
ZDQwLCBTZXJpYWxpemFibD0KZSBkMzAsIFNlcmlhbGl6YWJsZSBkMjUsIFNlcmlhbGl6YWJsZSBk
MjAsIFNlcmlhbGl6YWJsZSBkMTYsIFNlcmlhbGl6YWJsZSBkPQoxMCwgU2VyaWFsaXphYmxlIGRt
aW4sIFNlcmlhbGl6YWJsZSBkdXJjaGRtaW4sIFNlcmlhbGl6YWJsZSBkbWF4LCBTZXJpYWxpemE9
CmJsZSBkdXJjaGRtYXgsIFNlcmlhbGl6YWJsZSBOR2VzY2hpZWIsIFNlcmlhbGl6YWJsZSBOVmll
bHBrdCwgU2VyaWFsaXphYmxlID0Kc3lzRGF0ZSwgU2VyaWFsaXphYmxlIGJlbWVya3VuZywgU2Vy
aWFsaXphYmxlIGxhc3R1cGRhdGVkLCBTZXJpYWxpemFibGUga20sPQogU2VyaWFsaXphYmxlIGds
b3RhYnN0b2Zmc2V0LCBTZXJpYWxpemFibGUgc2xvdGFic3RvZmZzZXQsIFNlcmlhbGl6YWJsZSBn
YnI9CmVpdGV2b25saW5rcywgU2VyaWFsaXphYmxlIGdicmVpdGViaXNsaW5rcywgU2VyaWFsaXph
YmxlIHN0YW5hbWUsIFNlcmlhbGl6YT0KYmxlIHN0YWttLCBTZXJpYWxpemFibGUgZ2V3YWVzc2Vy
aWQsIFNlcmlhbGl6YWJsZSBnZXduYW1lLCBTZXJpYWxpemFibGUgYmV6PQp1Z3NwZWdlbGlkKSB7
Ci0gICAgICAgdGhpcy5tZXNzdW5naWQgPTNEIG1lc3N1bmdpZDsKLSAgICAgICB0aGlzLnN0YXRp
b25pZCA9M0Qgc3RhdGlvbmlkOwotICAgICAgIHRoaXMuZGF0dW0gPTNEIGRhdHVtOwotICAgICAg
IHRoaXMuaHBlaWx1bmdpZCA9M0QgaHBlaWx1bmdpZDsKLSAgICAgICB0aGlzLm1wZWlsdW5naWQg
PTNEIG1wZWlsdW5naWQ7Ci0gICAgICAgdGhpcy5nZmFlbmdlcmlkID0zRCBnZmFlbmdlcmlkOwot
ICAgICAgIHRoaXMuZ3NpZWJzYXR6aWQgPTNEIGdzaWVic2F0emlkOwotICAgICAgIHRoaXMubWVz
c25yID0zRCBtZXNzbnI7Ci0gICAgICAgdGhpcy5mZ3VlID0zRCBmZ3VlOwotICAgICAgIHRoaXMu
dWhydm9uID0zRCB1aHJ2b247Ci0gICAgICAgdGhpcy51aHJiaXMgPTNEIHVocmJpczsKLSAgICAg
ICB0aGlzLndzcGNtID0zRCB3c3BjbTsKLSAgICAgICB0aGlzLlFCcGVnZWwgPTNEIFFCcGVnZWw7
Ci0gICAgICAgdGhpcy53c3BubiA9M0Qgd3Nwbm47Ci0gICAgICAgdGhpcy5pZSA9M0QgaWU7Ci0g
ICAgICAgdGhpcy53dGVtcCA9M0Qgd3RlbXA7Ci0gICAgICAgdGhpcy5nYnJlaXRlID0zRCBnYnJl
aXRlOwotICAgICAgIHRoaXMuZ2JyZWl0ZXZvbiA9M0QgZ2JyZWl0ZXZvbjsKLSAgICAgICB0aGlz
LmdicmVpdGViaXMgPTNEIGdicmVpdGViaXM7Ci0gICAgICAgdGhpcy50Z2VzY2hpZWJlID0zRCB0
Z2VzY2hpZWJlOwotICAgICAgIHRoaXMudHNhbmQgPTNEIHRzYW5kOwotICAgICAgIHRoaXMudHNj
aHdlYiA9M0QgdHNjaHdlYjsKLSAgICAgICB0aGlzLmNzY2h3ZWIgPTNEIGNzY2h3ZWI7Ci0gICAg
ICAgdGhpcy51ZmVybGlhYnN0ID0zRCB1ZmVybGlhYnN0OwotICAgICAgIHRoaXMudWZlcnJlYWJz
dCA9M0QgdWZlcnJlYWJzdDsKLSAgICAgICB0aGlzLnEgPTNEIHE7Ci0gICAgICAgdGhpcy5BSHBl
aWwgPTNEIEFIcGVpbDsKLSAgICAgICB0aGlzLkFNcGVpbCA9M0QgQU1wZWlsOwotICAgICAgIHRo
aXMuYiA9M0QgYjsKLSAgICAgICB0aGlzLmhtID0zRCBobTsKLSAgICAgICB0aGlzLnZtID0zRCB2
bTsKLSAgICAgICB0aGlzLnZzb2hsZSA9M0QgdnNvaGxlOwotICAgICAgIHRoaXMudGF1ID0zRCB0
YXU7Ci0gICAgICAgdGhpcy50YXV2ID0zRCB0YXV2OwotICAgICAgIHRoaXMudGVpbFEgPTNEIHRl
aWxROwotICAgICAgIHRoaXMudGVpbEFIcGVpbCA9M0QgdGVpbEFIcGVpbDsKLSAgICAgICB0aGlz
LnRlaWxBTXBlaWwgPTNEIHRlaWxBTXBlaWw7Ci0gICAgICAgdGhpcy50ZWlsQiA9M0QgdGVpbEI7
Ci0gICAgICAgdGhpcy50ZWlsSG0gPTNEIHRlaWxIbTsKLSAgICAgICB0aGlzLnRlaWxWbSA9M0Qg
dGVpbFZtOwotICAgICAgIHRoaXMudGVpbFZzb2hsZSA9M0QgdGVpbFZzb2hsZTsKLSAgICAgICB0
aGlzLnRlaWxUYXUgPTNEIHRlaWxUYXU7Ci0gICAgICAgdGhpcy50ZWlsVGF1diA9M0QgdGVpbFRh
dXY7Ci0gICAgICAgdGhpcy5taXR0ZWx0eXAgPTNEIG1pdHRlbHR5cDsKLSAgICAgICB0aGlzLmRt
ID0zRCBkbTsKLSAgICAgICB0aGlzLnNrID0zRCBzazsKLSAgICAgICB0aGlzLnNvID0zRCBzbzsK
LSAgICAgICB0aGlzLnUgPTNEIHU7Ci0gICAgICAgdGhpcy5kOTAgPTNEIGQ5MDsKLSAgICAgICB0
aGlzLmQ4NCA9M0QgZDg0OwotICAgICAgIHRoaXMuZDgwID0zRCBkODA7Ci0gICAgICAgdGhpcy5k
NzUgPTNEIGQ3NTsKLSAgICAgICB0aGlzLmQ3MCA9M0QgZDcwOwotICAgICAgIHRoaXMuZDYwID0z
RCBkNjA7Ci0gICAgICAgdGhpcy5kNTAgPTNEIGQ1MDsKLSAgICAgICB0aGlzLmQ0MCA9M0QgZDQw
OwotICAgICAgIHRoaXMuZDMwID0zRCBkMzA7Ci0gICAgICAgdGhpcy5kMjUgPTNEIGQyNTsKLSAg
ICAgICB0aGlzLmQyMCA9M0QgZDIwOwotICAgICAgIHRoaXMuZDE2ID0zRCBkMTY7Ci0gICAgICAg
dGhpcy5kMTAgPTNEIGQxMDsKLSAgICAgICB0aGlzLmRtaW4gPTNEIGRtaW47Ci0gICAgICAgdGhp
cy5kdXJjaGRtaW4gPTNEIGR1cmNoZG1pbjsKLSAgICAgICB0aGlzLmRtYXggPTNEIGRtYXg7Ci0g
ICAgICAgdGhpcy5kdXJjaGRtYXggPTNEIGR1cmNoZG1heDsKLSAgICAgICB0aGlzLk5HZXNjaGll
YiA9M0QgTkdlc2NoaWViOwotICAgICAgIHRoaXMuTlZpZWxwa3QgPTNEIE5WaWVscGt0OwotICAg
ICAgIHRoaXMuc3lzRGF0ZSA9M0Qgc3lzRGF0ZTsKLSAgICAgICB0aGlzLmJlbWVya3VuZyA9M0Qg
YmVtZXJrdW5nOwotICAgICAgIHRoaXMubGFzdHVwZGF0ZWQgPTNEIGxhc3R1cGRhdGVkOwotICAg
ICAgIHRoaXMua20gPTNEIGttOwotICAgICAgIHRoaXMuZ2xvdGFic3RvZmZzZXQgPTNEIGdsb3Rh
YnN0b2Zmc2V0OwotICAgICAgIHRoaXMuc2xvdGFic3RvZmZzZXQgPTNEIHNsb3RhYnN0b2Zmc2V0
OwotICAgICAgIHRoaXMuZ2JyZWl0ZXZvbmxpbmtzID0zRCBnYnJlaXRldm9ubGlua3M7Ci0gICAg
ICAgdGhpcy5nYnJlaXRlYmlzbGlua3MgPTNEIGdicmVpdGViaXNsaW5rczsKLSAgICAgICB0aGlz
LnN0YW5hbWUgPTNEIHN0YW5hbWU7Ci0gICAgICAgdGhpcy5zdGFrbSA9M0Qgc3Rha207Ci0gICAg
ICAgdGhpcy5nZXdhZXNzZXJpZCA9M0QgZ2V3YWVzc2VyaWQ7Ci0gICAgICAgdGhpcy5nZXduYW1l
ID0zRCBnZXduYW1lOwotICAgICAgIHRoaXMuYmV6dWdzcGVnZWxpZCA9M0QgYmV6dWdzcGVnZWxp
ZDsKLSAgICB9Ci0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1FU1NVTkdJRCIpCi0gICAgcHVi
bGljIFNlcmlhbGl6YWJsZSBnZXRNZXNzdW5naWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1l
c3N1bmdpZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNZXNzdW5naWQoU2VyaWFsaXph
YmxlIG1lc3N1bmdpZCkgewotICAgICAgICB0aGlzLm1lc3N1bmdpZCA9M0QgbWVzc3VuZ2lkOwot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNUQVRJT05JRCIpCi0gICAgcHVibGljIFNl
cmlhbGl6YWJsZSBnZXRTdGF0aW9uaWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnN0YXRpb25p
ZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTdGF0aW9uaWQoU2VyaWFsaXphYmxlIHN0
YXRpb25pZCkgewotICAgICAgICB0aGlzLnN0YXRpb25pZCA9M0Qgc3RhdGlvbmlkOwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIkRBVFVNIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxl
IGdldERhdHVtKCkgewotICAgICAgICByZXR1cm4gdGhpcy5kYXR1bTsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXREYXR1bShTZXJpYWxpemFibGUgZGF0dW0pIHsKLSAgICAgICAgdGhpcy5k
YXR1bSA9M0QgZGF0dW07Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiSFBFSUxVTkdJ
RCIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRIcGVpbHVuZ2lkKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5ocGVpbHVuZ2lkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEhwZWls
dW5naWQoU2VyaWFsaXphYmxlIGhwZWlsdW5naWQpIHsKLSAgICAgICAgdGhpcy5ocGVpbHVuZ2lk
ID0zRCBocGVpbHVuZ2lkOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1QRUlMVU5H
SUQiKQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0TXBlaWx1bmdpZCgpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMubXBlaWx1bmdpZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNcGVp
bHVuZ2lkKFNlcmlhbGl6YWJsZSBtcGVpbHVuZ2lkKSB7Ci0gICAgICAgIHRoaXMubXBlaWx1bmdp
ZCA9M0QgbXBlaWx1bmdpZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJHRkFFTkdF
UklEIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldEdmYWVuZ2VyaWQoKSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLmdmYWVuZ2VyaWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0R2Zh
ZW5nZXJpZChTZXJpYWxpemFibGUgZ2ZhZW5nZXJpZCkgewotICAgICAgICB0aGlzLmdmYWVuZ2Vy
aWQgPTNEIGdmYWVuZ2VyaWQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiR1NJRUJT
QVRaSUQiKQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0R3NpZWJzYXR6aWQoKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLmdzaWVic2F0emlkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dEdzaWVic2F0emlkKFNlcmlhbGl6YWJsZSBnc2llYnNhdHppZCkgewotICAgICAgICB0aGlzLmdz
aWVic2F0emlkID0zRCBnc2llYnNhdHppZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJNRVNTTlIiKQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0TWVzc25yKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5tZXNzbnI7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWVzc25y
KFNlcmlhbGl6YWJsZSBtZXNzbnIpIHsKLSAgICAgICAgdGhpcy5tZXNzbnIgPTNEIG1lc3NucjsK
LSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJGR1VFIikKLSAgICBwdWJsaWMgU2VyaWFs
aXphYmxlIGdldEZndWUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmZndWU7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0Rmd1ZShTZXJpYWxpemFibGUgZmd1ZSkgewotICAgICAgICB0aGlz
LmZndWUgPTNEIGZndWU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVUhSVk9OIikK
LSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldFVocnZvbigpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMudWhydm9uOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFVocnZvbihTZXJpYWxpemFi
bGUgdWhydm9uKSB7Ci0gICAgICAgIHRoaXMudWhydm9uID0zRCB1aHJ2b247Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiVUhSQklTIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdl
dFVocmJpcygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudWhyYmlzOwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldFVocmJpcyhTZXJpYWxpemFibGUgdWhyYmlzKSB7Ci0gICAgICAgIHRoaXMu
dWhyYmlzID0zRCB1aHJiaXM7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiV1NQQ00i
KQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0V3NwY20oKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLndzcGNtOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFdzcGNtKFNlcmlhbGl6YWJs
ZSB3c3BjbSkgewotICAgICAgICB0aGlzLndzcGNtID0zRCB3c3BjbTsKLSAgICB9Ci0KLQotICAg
IEBDb2x1bW4obmFtZT0zRCJRX0JQRUdFTCIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRR
QnBlZ2VsKCkgewotICAgICAgICByZXR1cm4gdGhpcy5RQnBlZ2VsOwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldFFCcGVnZWwoU2VyaWFsaXphYmxlIFFCcGVnZWwpIHsKLSAgICAgICAgdGhp
cy5RQnBlZ2VsID0zRCBRQnBlZ2VsOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIldT
UE5OIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldFdzcG5uKCkgewotICAgICAgICByZXR1
cm4gdGhpcy53c3BubjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRXc3BubihTZXJpYWxp
emFibGUgd3Nwbm4pIHsKLSAgICAgICAgdGhpcy53c3BubiA9M0Qgd3Nwbm47Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiSUUiKQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0SWUo
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmllOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dEllKFNlcmlhbGl6YWJsZSBpZSkgewotICAgICAgICB0aGlzLmllID0zRCBpZTsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJXVEVNUCIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBn
ZXRXdGVtcCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMud3RlbXA7Ci0gICAgfQotCi0gICAgcHVi
bGljIHZvaWQgc2V0V3RlbXAoU2VyaWFsaXphYmxlIHd0ZW1wKSB7Ci0gICAgICAgIHRoaXMud3Rl
bXAgPTNEIHd0ZW1wOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkdCUkVJVEUiKQot
ICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0R2JyZWl0ZSgpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuZ2JyZWl0ZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRHYnJlaXRlKFNlcmlhbGl6
YWJsZSBnYnJlaXRlKSB7Ci0gICAgICAgIHRoaXMuZ2JyZWl0ZSA9M0QgZ2JyZWl0ZTsKLSAgICB9
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJHQlJFSVRFVk9OIikKLSAgICBwdWJsaWMgU2VyaWFs
aXphYmxlIGdldEdicmVpdGV2b24oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmdicmVpdGV2b247
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0R2JyZWl0ZXZvbihTZXJpYWxpemFibGUgZ2Jy
ZWl0ZXZvbikgewotICAgICAgICB0aGlzLmdicmVpdGV2b24gPTNEIGdicmVpdGV2b247Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiR0JSRUlURUJJUyIpCi0gICAgcHVibGljIFNlcmlh
bGl6YWJsZSBnZXRHYnJlaXRlYmlzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5nYnJlaXRlYmlz
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEdicmVpdGViaXMoU2VyaWFsaXphYmxlIGdi
cmVpdGViaXMpIHsKLSAgICAgICAgdGhpcy5nYnJlaXRlYmlzID0zRCBnYnJlaXRlYmlzOwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlRHRVNDSElFQkUiKQotICAgIHB1YmxpYyBTZXJp
YWxpemFibGUgZ2V0VGdlc2NoaWViZSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudGdlc2NoaWVi
ZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUZ2VzY2hpZWJlKFNlcmlhbGl6YWJsZSB0
Z2VzY2hpZWJlKSB7Ci0gICAgICAgIHRoaXMudGdlc2NoaWViZSA9M0QgdGdlc2NoaWViZTsKLSAg
ICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJUU0FORCIpCi0gICAgcHVibGljIFNlcmlhbGl6
YWJsZSBnZXRUc2FuZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudHNhbmQ7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0VHNhbmQoU2VyaWFsaXphYmxlIHRzYW5kKSB7Ci0gICAgICAgIHRo
aXMudHNhbmQgPTNEIHRzYW5kOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlRTQ0hX
RUIiKQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0VHNjaHdlYigpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMudHNjaHdlYjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUc2Nod2ViKFNl
cmlhbGl6YWJsZSB0c2Nod2ViKSB7Ci0gICAgICAgIHRoaXMudHNjaHdlYiA9M0QgdHNjaHdlYjsK
LSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJDU0NIV0VCIikKLSAgICBwdWJsaWMgU2Vy
aWFsaXphYmxlIGdldENzY2h3ZWIoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmNzY2h3ZWI7Ci0g
ICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0Q3NjaHdlYihTZXJpYWxpemFibGUgY3NjaHdlYikg
ewotICAgICAgICB0aGlzLmNzY2h3ZWIgPTNEIGNzY2h3ZWI7Ci0gICAgfQotCi0KLSAgICBAQ29s
dW1uKG5hbWU9M0QiVUZFUkxJQUJTVCIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRVZmVy
bGlhYnN0KCkgewotICAgICAgICByZXR1cm4gdGhpcy51ZmVybGlhYnN0OwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldFVmZXJsaWFic3QoU2VyaWFsaXphYmxlIHVmZXJsaWFic3QpIHsKLSAg
ICAgICAgdGhpcy51ZmVybGlhYnN0ID0zRCB1ZmVybGlhYnN0OwotICAgIH0KLQotCi0gICAgQENv
bHVtbihuYW1lPTNEIlVGRVJSRUFCU1QiKQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0VWZl
cnJlYWJzdCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudWZlcnJlYWJzdDsKLSAgICB9Ci0KLSAg
ICBwdWJsaWMgdm9pZCBzZXRVZmVycmVhYnN0KFNlcmlhbGl6YWJsZSB1ZmVycmVhYnN0KSB7Ci0g
ICAgICAgIHRoaXMudWZlcnJlYWJzdCA9M0QgdWZlcnJlYWJzdDsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJRIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldFEoKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLnE7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UShTZXJpYWxp
emFibGUgcSkgewotICAgICAgICB0aGlzLnEgPTNEIHE7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiQV9IUEVJTCIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRBSHBlaWwoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLkFIcGVpbDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXRBSHBlaWwoU2VyaWFsaXphYmxlIEFIcGVpbCkgewotICAgICAgICB0aGlzLkFIcGVpbCA9M0Qg
QUhwZWlsOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkFfTVBFSUwiKQotICAgIHB1
YmxpYyBTZXJpYWxpemFibGUgZ2V0QU1wZWlsKCkgewotICAgICAgICByZXR1cm4gdGhpcy5BTXBl
aWw7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QU1wZWlsKFNlcmlhbGl6YWJsZSBBTXBl
aWwpIHsKLSAgICAgICAgdGhpcy5BTXBlaWwgPTNEIEFNcGVpbDsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJCIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldEIoKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLmI7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QihTZXJpYWxp
emFibGUgYikgewotICAgICAgICB0aGlzLmIgPTNEIGI7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiSE0iKQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0SG0oKSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLmhtOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEhtKFNlcmlhbGl6
YWJsZSBobSkgewotICAgICAgICB0aGlzLmhtID0zRCBobTsKLSAgICB9Ci0KLQotICAgIEBDb2x1
bW4obmFtZT0zRCJWTSIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRWbSgpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMudm07Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0Vm0oU2VyaWFs
aXphYmxlIHZtKSB7Ci0gICAgICAgIHRoaXMudm0gPTNEIHZtOwotICAgIH0KLQotCi0gICAgQENv
bHVtbihuYW1lPTNEIlZTT0hMRSIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRWc29obGUo
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnZzb2hsZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXRWc29obGUoU2VyaWFsaXphYmxlIHZzb2hsZSkgewotICAgICAgICB0aGlzLnZzb2hsZSA9
M0QgdnNvaGxlOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlRBVSIpCi0gICAgcHVi
bGljIFNlcmlhbGl6YWJsZSBnZXRUYXUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRhdTsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUYXUoU2VyaWFsaXphYmxlIHRhdSkgewotICAgICAg
ICB0aGlzLnRhdSA9M0QgdGF1OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlRBVVYi
KQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0VGF1digpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMudGF1djsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUYXV2KFNlcmlhbGl6YWJsZSB0
YXV2KSB7Ci0gICAgICAgIHRoaXMudGF1diA9M0QgdGF1djsKLSAgICB9Ci0KLQotICAgIEBDb2x1
bW4obmFtZT0zRCJURUlMX1EiKQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0VGVpbFEoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLnRlaWxROwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dFRlaWxRKFNlcmlhbGl6YWJsZSB0ZWlsUSkgewotICAgICAgICB0aGlzLnRlaWxRID0zRCB0ZWls
UTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJURUlMX0FfSFBFSUwiKQotICAgIHB1
YmxpYyBTZXJpYWxpemFibGUgZ2V0VGVpbEFIcGVpbCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
dGVpbEFIcGVpbDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUZWlsQUhwZWlsKFNlcmlh
bGl6YWJsZSB0ZWlsQUhwZWlsKSB7Ci0gICAgICAgIHRoaXMudGVpbEFIcGVpbCA9M0QgdGVpbEFI
cGVpbDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJURUlMX0FfTVBFSUwiKQotICAg
IHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0VGVpbEFNcGVpbCgpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMudGVpbEFNcGVpbDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUZWlsQU1wZWlsKFNl
cmlhbGl6YWJsZSB0ZWlsQU1wZWlsKSB7Ci0gICAgICAgIHRoaXMudGVpbEFNcGVpbCA9M0QgdGVp
bEFNcGVpbDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJURUlMX0IiKQotICAgIHB1
YmxpYyBTZXJpYWxpemFibGUgZ2V0VGVpbEIoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRlaWxC
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFRlaWxCKFNlcmlhbGl6YWJsZSB0ZWlsQikg
ewotICAgICAgICB0aGlzLnRlaWxCID0zRCB0ZWlsQjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4o
bmFtZT0zRCJURUlMX0hNIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldFRlaWxIbSgpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMudGVpbEhtOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dFRlaWxIbShTZXJpYWxpemFibGUgdGVpbEhtKSB7Ci0gICAgICAgIHRoaXMudGVpbEhtID0zRCB0
ZWlsSG07Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVEVJTF9WTSIpCi0gICAgcHVi
bGljIFNlcmlhbGl6YWJsZSBnZXRUZWlsVm0oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRlaWxW
bTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUZWlsVm0oU2VyaWFsaXphYmxlIHRlaWxW
bSkgewotICAgICAgICB0aGlzLnRlaWxWbSA9M0QgdGVpbFZtOwotICAgIH0KLQotCi0gICAgQENv
bHVtbihuYW1lPTNEIlRFSUxfVlNPSExFIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldFRl
aWxWc29obGUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRlaWxWc29obGU7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0VGVpbFZzb2hsZShTZXJpYWxpemFibGUgdGVpbFZzb2hsZSkgewot
ICAgICAgICB0aGlzLnRlaWxWc29obGUgPTNEIHRlaWxWc29obGU7Ci0gICAgfQotCi0KLSAgICBA
Q29sdW1uKG5hbWU9M0QiVEVJTF9UQVUiKQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0VGVp
bFRhdSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudGVpbFRhdTsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRUZWlsVGF1KFNlcmlhbGl6YWJsZSB0ZWlsVGF1KSB7Ci0gICAgICAgIHRoaXMu
dGVpbFRhdSA9M0QgdGVpbFRhdTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJURUlM
X1RBVVYiKQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0VGVpbFRhdXYoKSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLnRlaWxUYXV2OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFRlaWxU
YXV2KFNlcmlhbGl6YWJsZSB0ZWlsVGF1dikgewotICAgICAgICB0aGlzLnRlaWxUYXV2ID0zRCB0
ZWlsVGF1djsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNSVRURUxUWVAiKQotICAg
IHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0TWl0dGVsdHlwKCkgewotICAgICAgICByZXR1cm4gdGhp
cy5taXR0ZWx0eXA7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWl0dGVsdHlwKFNlcmlh
bGl6YWJsZSBtaXR0ZWx0eXApIHsKLSAgICAgICAgdGhpcy5taXR0ZWx0eXAgPTNEIG1pdHRlbHR5
cDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJETSIpCi0gICAgcHVibGljIFNlcmlh
bGl6YWJsZSBnZXREbSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZG07Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0RG0oU2VyaWFsaXphYmxlIGRtKSB7Ci0gICAgICAgIHRoaXMuZG0gPTNE
IGRtOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNLIikKLSAgICBwdWJsaWMgU2Vy
aWFsaXphYmxlIGdldFNrKCkgewotICAgICAgICByZXR1cm4gdGhpcy5zazsKLSAgICB9Ci0KLSAg
ICBwdWJsaWMgdm9pZCBzZXRTayhTZXJpYWxpemFibGUgc2spIHsKLSAgICAgICAgdGhpcy5zayA9
M0Qgc2s7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiU08iKQotICAgIHB1YmxpYyBT
ZXJpYWxpemFibGUgZ2V0U28oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnNvOwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldFNvKFNlcmlhbGl6YWJsZSBzbykgewotICAgICAgICB0aGlzLnNv
ID0zRCBzbzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJVIikKLSAgICBwdWJsaWMg
U2VyaWFsaXphYmxlIGdldFUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnU7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0VShTZXJpYWxpemFibGUgdSkgewotICAgICAgICB0aGlzLnUgPTNE
IHU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDkwIikKLSAgICBwdWJsaWMgU2Vy
aWFsaXphYmxlIGdldEQ5MCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDkwOwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldEQ5MChTZXJpYWxpemFibGUgZDkwKSB7Ci0gICAgICAgIHRoaXMu
ZDkwID0zRCBkOTA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDg0IikKLSAgICBw
dWJsaWMgU2VyaWFsaXphYmxlIGdldEQ4NCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDg0Owot
ICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQ4NChTZXJpYWxpemFibGUgZDg0KSB7Ci0gICAg
ICAgIHRoaXMuZDg0ID0zRCBkODQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDgw
IikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldEQ4MCgpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuZDgwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQ4MChTZXJpYWxpemFibGUgZDgw
KSB7Ci0gICAgICAgIHRoaXMuZDgwID0zRCBkODA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiRDc1IikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldEQ3NSgpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuZDc1OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQ3NShTZXJpYWxp
emFibGUgZDc1KSB7Ci0gICAgICAgIHRoaXMuZDc1ID0zRCBkNzU7Ci0gICAgfQotCi0KLSAgICBA
Q29sdW1uKG5hbWU9M0QiRDcwIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldEQ3MCgpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuZDcwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQ3
MChTZXJpYWxpemFibGUgZDcwKSB7Ci0gICAgICAgIHRoaXMuZDcwID0zRCBkNzA7Ci0gICAgfQot
Ci0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDYwIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdl
dEQ2MCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDYwOwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldEQ2MChTZXJpYWxpemFibGUgZDYwKSB7Ci0gICAgICAgIHRoaXMuZDYwID0zRCBkNjA7
Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDUwIikKLSAgICBwdWJsaWMgU2VyaWFs
aXphYmxlIGdldEQ1MCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDUwOwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldEQ1MChTZXJpYWxpemFibGUgZDUwKSB7Ci0gICAgICAgIHRoaXMuZDUw
ID0zRCBkNTA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDQwIikKLSAgICBwdWJs
aWMgU2VyaWFsaXphYmxlIGdldEQ0MCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDQwOwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQ0MChTZXJpYWxpemFibGUgZDQwKSB7Ci0gICAgICAg
IHRoaXMuZDQwID0zRCBkNDA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDMwIikK
LSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldEQzMCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
ZDMwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQzMChTZXJpYWxpemFibGUgZDMwKSB7
Ci0gICAgICAgIHRoaXMuZDMwID0zRCBkMzA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiRDI1IikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldEQyNSgpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuZDI1OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQyNShTZXJpYWxpemFi
bGUgZDI1KSB7Ci0gICAgICAgIHRoaXMuZDI1ID0zRCBkMjU7Ci0gICAgfQotCi0KLSAgICBAQ29s
dW1uKG5hbWU9M0QiRDIwIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldEQyMCgpIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuZDIwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQyMChT
ZXJpYWxpemFibGUgZDIwKSB7Ci0gICAgICAgIHRoaXMuZDIwID0zRCBkMjA7Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiRDE2IikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldEQx
NigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDE2OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lk
IHNldEQxNihTZXJpYWxpemFibGUgZDE2KSB7Ci0gICAgICAgIHRoaXMuZDE2ID0zRCBkMTY7Ci0g
ICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDEwIikKLSAgICBwdWJsaWMgU2VyaWFsaXph
YmxlIGdldEQxMCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDEwOwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldEQxMChTZXJpYWxpemFibGUgZDEwKSB7Ci0gICAgICAgIHRoaXMuZDEwID0z
RCBkMTA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRE1JTiIpCi0gICAgcHVibGlj
IFNlcmlhbGl6YWJsZSBnZXREbWluKCkgewotICAgICAgICByZXR1cm4gdGhpcy5kbWluOwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldERtaW4oU2VyaWFsaXphYmxlIGRtaW4pIHsKLSAgICAg
ICAgdGhpcy5kbWluID0zRCBkbWluOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkRV
UkNIRE1JTiIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXREdXJjaGRtaW4oKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLmR1cmNoZG1pbjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRE
dXJjaGRtaW4oU2VyaWFsaXphYmxlIGR1cmNoZG1pbikgewotICAgICAgICB0aGlzLmR1cmNoZG1p
biA9M0QgZHVyY2hkbWluOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkRNQVgiKQot
ICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0RG1heCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
ZG1heDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREbWF4KFNlcmlhbGl6YWJsZSBkbWF4
KSB7Ci0gICAgICAgIHRoaXMuZG1heCA9M0QgZG1heDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4o
bmFtZT0zRCJEVVJDSERNQVgiKQotICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0RHVyY2hkbWF4
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5kdXJjaGRtYXg7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0RHVyY2hkbWF4KFNlcmlhbGl6YWJsZSBkdXJjaGRtYXgpIHsKLSAgICAgICAgdGhp
cy5kdXJjaGRtYXggPTNEIGR1cmNoZG1heDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJOX0dFU0NISUVCIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldE5HZXNjaGllYigpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuTkdlc2NoaWViOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lk
IHNldE5HZXNjaGllYihTZXJpYWxpemFibGUgTkdlc2NoaWViKSB7Ci0gICAgICAgIHRoaXMuTkdl
c2NoaWViID0zRCBOR2VzY2hpZWI7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTl9W
SUVMUEtUIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldE5WaWVscGt0KCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5OVmllbHBrdDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXROVmll
bHBrdChTZXJpYWxpemFibGUgTlZpZWxwa3QpIHsKLSAgICAgICAgdGhpcy5OVmllbHBrdCA9M0Qg
TlZpZWxwa3Q7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiU1lTX0RBVEUiKQotICAg
IHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0U3lzRGF0ZSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
c3lzRGF0ZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTeXNEYXRlKFNlcmlhbGl6YWJs
ZSBzeXNEYXRlKSB7Ci0gICAgICAgIHRoaXMuc3lzRGF0ZSA9M0Qgc3lzRGF0ZTsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJCRU1FUktVTkciKQotICAgIHB1YmxpYyBTZXJpYWxpemFi
bGUgZ2V0QmVtZXJrdW5nKCkgewotICAgICAgICByZXR1cm4gdGhpcy5iZW1lcmt1bmc7Ci0gICAg
fQotCi0gICAgcHVibGljIHZvaWQgc2V0QmVtZXJrdW5nKFNlcmlhbGl6YWJsZSBiZW1lcmt1bmcp
IHsKLSAgICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICB9Ci0KLQotICAg
IEBDb2x1bW4obmFtZT0zRCJMQVNUVVBEQVRFRCIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBn
ZXRMYXN0dXBkYXRlZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubGFzdHVwZGF0ZWQ7Ci0gICAg
fQotCi0gICAgcHVibGljIHZvaWQgc2V0TGFzdHVwZGF0ZWQoU2VyaWFsaXphYmxlIGxhc3R1cGRh
dGVkKSB7Ci0gICAgICAgIHRoaXMubGFzdHVwZGF0ZWQgPTNEIGxhc3R1cGRhdGVkOwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIktNIikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdl
dEttKCkgewotICAgICAgICByZXR1cm4gdGhpcy5rbTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXRLbShTZXJpYWxpemFibGUga20pIHsKLSAgICAgICAgdGhpcy5rbSA9M0Qga207Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiR0xPVEFCU1RPRkZTRVQiKQotICAgIHB1YmxpYyBT
ZXJpYWxpemFibGUgZ2V0R2xvdGFic3RvZmZzZXQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmds
b3RhYnN0b2Zmc2V0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEdsb3RhYnN0b2Zmc2V0
KFNlcmlhbGl6YWJsZSBnbG90YWJzdG9mZnNldCkgewotICAgICAgICB0aGlzLmdsb3RhYnN0b2Zm
c2V0ID0zRCBnbG90YWJzdG9mZnNldDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJT
TE9UQUJTVE9GRlNFVCIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRTbG90YWJzdG9mZnNl
dCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc2xvdGFic3RvZmZzZXQ7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0U2xvdGFic3RvZmZzZXQoU2VyaWFsaXphYmxlIHNsb3RhYnN0b2Zmc2V0
KSB7Ci0gICAgICAgIHRoaXMuc2xvdGFic3RvZmZzZXQgPTNEIHNsb3RhYnN0b2Zmc2V0OwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkdCUkVJVEVWT05MSU5LUyIpCi0gICAgcHVibGlj
IFNlcmlhbGl6YWJsZSBnZXRHYnJlaXRldm9ubGlua3MoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LmdicmVpdGV2b25saW5rczsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRHYnJlaXRldm9u
bGlua3MoU2VyaWFsaXphYmxlIGdicmVpdGV2b25saW5rcykgewotICAgICAgICB0aGlzLmdicmVp
dGV2b25saW5rcyA9M0QgZ2JyZWl0ZXZvbmxpbmtzOwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIkdCUkVJVEVCSVNMSU5LUyIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRHYnJl
aXRlYmlzbGlua3MoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmdicmVpdGViaXNsaW5rczsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRHYnJlaXRlYmlzbGlua3MoU2VyaWFsaXphYmxlIGdi
cmVpdGViaXNsaW5rcykgewotICAgICAgICB0aGlzLmdicmVpdGViaXNsaW5rcyA9M0QgZ2JyZWl0
ZWJpc2xpbmtzOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNUQU5BTUUiKQotICAg
IHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0U3RhbmFtZSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
c3RhbmFtZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTdGFuYW1lKFNlcmlhbGl6YWJs
ZSBzdGFuYW1lKSB7Ci0gICAgICAgIHRoaXMuc3RhbmFtZSA9M0Qgc3RhbmFtZTsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJTVEFLTSIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBn
ZXRTdGFrbSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc3Rha207Ci0gICAgfQotCi0gICAgcHVi
bGljIHZvaWQgc2V0U3Rha20oU2VyaWFsaXphYmxlIHN0YWttKSB7Ci0gICAgICAgIHRoaXMuc3Rh
a20gPTNEIHN0YWttOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkdFV0FFU1NFUklE
IikKLSAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldEdld2Flc3NlcmlkKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5nZXdhZXNzZXJpZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRHZXdh
ZXNzZXJpZChTZXJpYWxpemFibGUgZ2V3YWVzc2VyaWQpIHsKLSAgICAgICAgdGhpcy5nZXdhZXNz
ZXJpZCA9M0QgZ2V3YWVzc2VyaWQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiR0VX
TkFNRSIpCi0gICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRHZXduYW1lKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5nZXduYW1lOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEdld25hbWUo
U2VyaWFsaXphYmxlIGdld25hbWUpIHsKLSAgICAgICAgdGhpcy5nZXduYW1lID0zRCBnZXduYW1l
OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkJFWlVHU1BFR0VMSUQiKQotICAgIHB1
YmxpYyBTZXJpYWxpemFibGUgZ2V0QmV6dWdzcGVnZWxpZCgpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuYmV6dWdzcGVnZWxpZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRCZXp1Z3NwZWdl
bGlkKFNlcmlhbGl6YWJsZSBiZXp1Z3NwZWdlbGlkKSB7Ci0gICAgICAgIHRoaXMuYmV6dWdzcGVn
ZWxpZCA9M0QgYmV6dWdzcGVnZWxpZDsKLSAgICB9Ci0KLQotICAgcHVibGljIGJvb2xlYW4gZXF1
YWxzKE9iamVjdCBvdGhlcikgewotICAgICAgICAgaWYgKCAodGhpcyA9M0Q9M0Qgb3RoZXIgKSAp
IHJldHVybiB0cnVlOwotICAgICAgICAgaWYgKCAob3RoZXIgPTNEPTNEIG51bGwgKSApIHJldHVy
biBmYWxzZTsKLSAgICAgICAgIGlmICggIShvdGhlciBpbnN0YW5jZW9mIE1lc3N1bmdzdGFJZCkg
KSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICBNZXNzdW5nc3RhSWQgY2FzdE90aGVyID0zRCAoIE1l
c3N1bmdzdGFJZCApIG90aGVyOwotCi0gICAgICAgICByZXR1cm4gKCAodGhpcy5nZXRNZXNzdW5n
aWQoKT0zRD0zRGNhc3RPdGhlci5nZXRNZXNzdW5naWQoKSkgfHwgKD0KIHRoaXMuZ2V0TWVzc3Vu
Z2lkKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWVzc3VuZ2lkKCkhPTNEbnVsbCAmJiB0aGlz
LmdlPQp0TWVzc3VuZ2lkKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRNZXNzdW5naWQoKSkgKSApCi0g
JiYgKCAodGhpcy5nZXRTdGF0aW9uaWQoKT0zRD0zRGNhc3RPdGhlci5nZXRTdGF0aW9uaWQoKSkg
fHwgKCB0aGlzLmdldFN0YT0KdGlvbmlkKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0U3RhdGlv
bmlkKCkhPTNEbnVsbCAmJiB0aGlzLmdldFN0YXRpb25pZCgpPQouZXF1YWxzKGNhc3RPdGhlci5n
ZXRTdGF0aW9uaWQoKSkgKSApCi0gJiYgKCAodGhpcy5nZXREYXR1bSgpPTNEPTNEY2FzdE90aGVy
LmdldERhdHVtKCkpIHx8ICggdGhpcy5nZXREYXR1bSgpIT0zRD0KbnVsbCAmJiBjYXN0T3RoZXIu
Z2V0RGF0dW0oKSE9M0RudWxsICYmIHRoaXMuZ2V0RGF0dW0oKS5lcXVhbHMoY2FzdE90aGVyLmdl
PQp0RGF0dW0oKSkgKSApCi0gJiYgKCAodGhpcy5nZXRIcGVpbHVuZ2lkKCk9M0Q9M0RjYXN0T3Ro
ZXIuZ2V0SHBlaWx1bmdpZCgpKSB8fCAoIHRoaXMuZ2V0SD0KcGVpbHVuZ2lkKCkhPTNEbnVsbCAm
JiBjYXN0T3RoZXIuZ2V0SHBlaWx1bmdpZCgpIT0zRG51bGwgJiYgdGhpcy5nZXRIcGVpbHVuPQpn
aWQoKS5lcXVhbHMoY2FzdE90aGVyLmdldEhwZWlsdW5naWQoKSkgKSApCi0gJiYgKCAodGhpcy5n
ZXRNcGVpbHVuZ2lkKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TXBlaWx1bmdpZCgpKSB8fCAoIHRoaXMu
Z2V0TT0KcGVpbHVuZ2lkKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TXBlaWx1bmdpZCgpIT0z
RG51bGwgJiYgdGhpcy5nZXRNcGVpbHVuPQpnaWQoKS5lcXVhbHMoY2FzdE90aGVyLmdldE1wZWls
dW5naWQoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRHZmFlbmdlcmlkKCk9M0Q9M0RjYXN0T3RoZXIu
Z2V0R2ZhZW5nZXJpZCgpKSB8fCAoIHRoaXMuZ2V0Rz0KZmFlbmdlcmlkKCkhPTNEbnVsbCAmJiBj
YXN0T3RoZXIuZ2V0R2ZhZW5nZXJpZCgpIT0zRG51bGwgJiYgdGhpcy5nZXRHZmFlbmdlPQpyaWQo
KS5lcXVhbHMoY2FzdE90aGVyLmdldEdmYWVuZ2VyaWQoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRH
c2llYnNhdHppZCgpPTNEPTNEY2FzdE90aGVyLmdldEdzaWVic2F0emlkKCkpIHx8ICggdGhpcy5n
ZT0KdEdzaWVic2F0emlkKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0R3NpZWJzYXR6aWQoKSE9
M0RudWxsICYmIHRoaXMuZ2V0R3NpPQplYnNhdHppZCgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0R3Np
ZWJzYXR6aWQoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRNZXNzbnIoKT0zRD0zRGNhc3RPdGhlci5n
ZXRNZXNzbnIoKSkgfHwgKCB0aGlzLmdldE1lc3NucigpIT0KPTNEbnVsbCAmJiBjYXN0T3RoZXIu
Z2V0TWVzc25yKCkhPTNEbnVsbCAmJiB0aGlzLmdldE1lc3NucigpLmVxdWFscyhjYXN0T3RoPQpl
ci5nZXRNZXNzbnIoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRGZ3VlKCk9M0Q9M0RjYXN0T3RoZXIu
Z2V0Rmd1ZSgpKSB8fCAoIHRoaXMuZ2V0Rmd1ZSgpIT0zRG51bD0KbCAmJiBjYXN0T3RoZXIuZ2V0
Rmd1ZSgpIT0zRG51bGwgJiYgdGhpcy5nZXRGZ3VlKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRGZ3Vl
PQooKSkgKSApCi0gJiYgKCAodGhpcy5nZXRVaHJ2b24oKT0zRD0zRGNhc3RPdGhlci5nZXRVaHJ2
b24oKSkgfHwgKCB0aGlzLmdldFVocnZvbigpIT0KPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0VWhy
dm9uKCkhPTNEbnVsbCAmJiB0aGlzLmdldFVocnZvbigpLmVxdWFscyhjYXN0T3RoPQplci5nZXRV
aHJ2b24oKSkgKSApCi0gJiYgKCAodGhpcy5nZXRVaHJiaXMoKT0zRD0zRGNhc3RPdGhlci5nZXRV
aHJiaXMoKSkgfHwgKCB0aGlzLmdldFVocmJpcygpIT0KPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0
VWhyYmlzKCkhPTNEbnVsbCAmJiB0aGlzLmdldFVocmJpcygpLmVxdWFscyhjYXN0T3RoPQplci5n
ZXRVaHJiaXMoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRXc3BjbSgpPTNEPTNEY2FzdE90aGVyLmdl
dFdzcGNtKCkpIHx8ICggdGhpcy5nZXRXc3BjbSgpIT0zRD0KbnVsbCAmJiBjYXN0T3RoZXIuZ2V0
V3NwY20oKSE9M0RudWxsICYmIHRoaXMuZ2V0V3NwY20oKS5lcXVhbHMoY2FzdE90aGVyLmdlPQp0
V3NwY20oKSkgKSApCi0gJiYgKCAodGhpcy5nZXRRQnBlZ2VsKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0
UUJwZWdlbCgpKSB8fCAoIHRoaXMuZ2V0UUJwZWdlbD0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIu
Z2V0UUJwZWdlbCgpIT0zRG51bGwgJiYgdGhpcy5nZXRRQnBlZ2VsKCkuZXF1YWxzKGNhPQpzdE90
aGVyLmdldFFCcGVnZWwoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRXc3BubigpPTNEPTNEY2FzdE90
aGVyLmdldFdzcG5uKCkpIHx8ICggdGhpcy5nZXRXc3BubigpIT0zRD0KbnVsbCAmJiBjYXN0T3Ro
ZXIuZ2V0V3Nwbm4oKSE9M0RudWxsICYmIHRoaXMuZ2V0V3Nwbm4oKS5lcXVhbHMoY2FzdE90aGVy
LmdlPQp0V3Nwbm4oKSkgKSApCi0gJiYgKCAodGhpcy5nZXRJZSgpPTNEPTNEY2FzdE90aGVyLmdl
dEllKCkpIHx8ICggdGhpcy5nZXRJZSgpIT0zRG51bGwgJiYgYz0KYXN0T3RoZXIuZ2V0SWUoKSE9
M0RudWxsICYmIHRoaXMuZ2V0SWUoKS5lcXVhbHMoY2FzdE90aGVyLmdldEllKCkpICkgKQotICYm
ICggKHRoaXMuZ2V0V3RlbXAoKT0zRD0zRGNhc3RPdGhlci5nZXRXdGVtcCgpKSB8fCAoIHRoaXMu
Z2V0V3RlbXAoKSE9M0Q9Cm51bGwgJiYgY2FzdE90aGVyLmdldFd0ZW1wKCkhPTNEbnVsbCAmJiB0
aGlzLmdldFd0ZW1wKCkuZXF1YWxzKGNhc3RPdGhlci5nZT0KdFd0ZW1wKCkpICkgKQotICYmICgg
KHRoaXMuZ2V0R2JyZWl0ZSgpPTNEPTNEY2FzdE90aGVyLmdldEdicmVpdGUoKSkgfHwgKCB0aGlz
LmdldEdicmVpdGU9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldEdicmVpdGUoKSE9M0RudWxs
ICYmIHRoaXMuZ2V0R2JyZWl0ZSgpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRHYnJlaXRlKCkpICkg
KQotICYmICggKHRoaXMuZ2V0R2JyZWl0ZXZvbigpPTNEPTNEY2FzdE90aGVyLmdldEdicmVpdGV2
b24oKSkgfHwgKCB0aGlzLmdldEc9CmJyZWl0ZXZvbigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdl
dEdicmVpdGV2b24oKSE9M0RudWxsICYmIHRoaXMuZ2V0R2JyZWl0ZT0Kdm9uKCkuZXF1YWxzKGNh
c3RPdGhlci5nZXRHYnJlaXRldm9uKCkpICkgKQotICYmICggKHRoaXMuZ2V0R2JyZWl0ZWJpcygp
PTNEPTNEY2FzdE90aGVyLmdldEdicmVpdGViaXMoKSkgfHwgKCB0aGlzLmdldEc9CmJyZWl0ZWJp
cygpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldEdicmVpdGViaXMoKSE9M0RudWxsICYmIHRoaXMu
Z2V0R2JyZWl0ZT0KYmlzKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRHYnJlaXRlYmlzKCkpICkgKQot
ICYmICggKHRoaXMuZ2V0VGdlc2NoaWViZSgpPTNEPTNEY2FzdE90aGVyLmdldFRnZXNjaGllYmUo
KSkgfHwgKCB0aGlzLmdldFQ9Cmdlc2NoaWViZSgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFRn
ZXNjaGllYmUoKSE9M0RudWxsICYmIHRoaXMuZ2V0VGdlc2NoaT0KZWJlKCkuZXF1YWxzKGNhc3RP
dGhlci5nZXRUZ2VzY2hpZWJlKCkpICkgKQotICYmICggKHRoaXMuZ2V0VHNhbmQoKT0zRD0zRGNh
c3RPdGhlci5nZXRUc2FuZCgpKSB8fCAoIHRoaXMuZ2V0VHNhbmQoKSE9M0Q9Cm51bGwgJiYgY2Fz
dE90aGVyLmdldFRzYW5kKCkhPTNEbnVsbCAmJiB0aGlzLmdldFRzYW5kKCkuZXF1YWxzKGNhc3RP
dGhlci5nZT0KdFRzYW5kKCkpICkgKQotICYmICggKHRoaXMuZ2V0VHNjaHdlYigpPTNEPTNEY2Fz
dE90aGVyLmdldFRzY2h3ZWIoKSkgfHwgKCB0aGlzLmdldFRzY2h3ZWI9CigpIT0zRG51bGwgJiYg
Y2FzdE90aGVyLmdldFRzY2h3ZWIoKSE9M0RudWxsICYmIHRoaXMuZ2V0VHNjaHdlYigpLmVxdWFs
cyhjYT0Kc3RPdGhlci5nZXRUc2Nod2ViKCkpICkgKQotICYmICggKHRoaXMuZ2V0Q3NjaHdlYigp
PTNEPTNEY2FzdE90aGVyLmdldENzY2h3ZWIoKSkgfHwgKCB0aGlzLmdldENzY2h3ZWI9CigpIT0z
RG51bGwgJiYgY2FzdE90aGVyLmdldENzY2h3ZWIoKSE9M0RudWxsICYmIHRoaXMuZ2V0Q3NjaHdl
YigpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRDc2Nod2ViKCkpICkgKQotICYmICggKHRoaXMuZ2V0
VWZlcmxpYWJzdCgpPTNEPTNEY2FzdE90aGVyLmdldFVmZXJsaWFic3QoKSkgfHwgKCB0aGlzLmdl
dFU9CmZlcmxpYWJzdCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFVmZXJsaWFic3QoKSE9M0Ru
dWxsICYmIHRoaXMuZ2V0VWZlcmxpYT0KYnN0KCkuZXF1YWxzKGNhc3RPdGhlci5nZXRVZmVybGlh
YnN0KCkpICkgKQotICYmICggKHRoaXMuZ2V0VWZlcnJlYWJzdCgpPTNEPTNEY2FzdE90aGVyLmdl
dFVmZXJyZWFic3QoKSkgfHwgKCB0aGlzLmdldFU9CmZlcnJlYWJzdCgpIT0zRG51bGwgJiYgY2Fz
dE90aGVyLmdldFVmZXJyZWFic3QoKSE9M0RudWxsICYmIHRoaXMuZ2V0VWZlcnJlYT0KYnN0KCku
ZXF1YWxzKGNhc3RPdGhlci5nZXRVZmVycmVhYnN0KCkpICkgKQotICYmICggKHRoaXMuZ2V0USgp
PTNEPTNEY2FzdE90aGVyLmdldFEoKSkgfHwgKCB0aGlzLmdldFEoKSE9M0RudWxsICYmIGNhc3Q9
Ck90aGVyLmdldFEoKSE9M0RudWxsICYmIHRoaXMuZ2V0USgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0
USgpKSApICkKLSAmJiAoICh0aGlzLmdldEFIcGVpbCgpPTNEPTNEY2FzdE90aGVyLmdldEFIcGVp
bCgpKSB8fCAoIHRoaXMuZ2V0QUhwZWlsKCkhPQo9M0RudWxsICYmIGNhc3RPdGhlci5nZXRBSHBl
aWwoKSE9M0RudWxsICYmIHRoaXMuZ2V0QUhwZWlsKCkuZXF1YWxzKGNhc3RPdGg9CmVyLmdldEFI
cGVpbCgpKSApICkKLSAmJiAoICh0aGlzLmdldEFNcGVpbCgpPTNEPTNEY2FzdE90aGVyLmdldEFN
cGVpbCgpKSB8fCAoIHRoaXMuZ2V0QU1wZWlsKCkhPQo9M0RudWxsICYmIGNhc3RPdGhlci5nZXRB
TXBlaWwoKSE9M0RudWxsICYmIHRoaXMuZ2V0QU1wZWlsKCkuZXF1YWxzKGNhc3RPdGg9CmVyLmdl
dEFNcGVpbCgpKSApICkKLSAmJiAoICh0aGlzLmdldEIoKT0zRD0zRGNhc3RPdGhlci5nZXRCKCkp
IHx8ICggdGhpcy5nZXRCKCkhPTNEbnVsbCAmJiBjYXN0PQpPdGhlci5nZXRCKCkhPTNEbnVsbCAm
JiB0aGlzLmdldEIoKS5lcXVhbHMoY2FzdE90aGVyLmdldEIoKSkgKSApCi0gJiYgKCAodGhpcy5n
ZXRIbSgpPTNEPTNEY2FzdE90aGVyLmdldEhtKCkpIHx8ICggdGhpcy5nZXRIbSgpIT0zRG51bGwg
JiYgYz0KYXN0T3RoZXIuZ2V0SG0oKSE9M0RudWxsICYmIHRoaXMuZ2V0SG0oKS5lcXVhbHMoY2Fz
dE90aGVyLmdldEhtKCkpICkgKQotICYmICggKHRoaXMuZ2V0Vm0oKT0zRD0zRGNhc3RPdGhlci5n
ZXRWbSgpKSB8fCAoIHRoaXMuZ2V0Vm0oKSE9M0RudWxsICYmIGM9CmFzdE90aGVyLmdldFZtKCkh
PTNEbnVsbCAmJiB0aGlzLmdldFZtKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRWbSgpKSApICkKLSAm
JiAoICh0aGlzLmdldFZzb2hsZSgpPTNEPTNEY2FzdE90aGVyLmdldFZzb2hsZSgpKSB8fCAoIHRo
aXMuZ2V0VnNvaGxlKCkhPQo9M0RudWxsICYmIGNhc3RPdGhlci5nZXRWc29obGUoKSE9M0RudWxs
ICYmIHRoaXMuZ2V0VnNvaGxlKCkuZXF1YWxzKGNhc3RPdGg9CmVyLmdldFZzb2hsZSgpKSApICkK
LSAmJiAoICh0aGlzLmdldFRhdSgpPTNEPTNEY2FzdE90aGVyLmdldFRhdSgpKSB8fCAoIHRoaXMu
Z2V0VGF1KCkhPTNEbnVsbCAmPQomIGNhc3RPdGhlci5nZXRUYXUoKSE9M0RudWxsICYmIHRoaXMu
Z2V0VGF1KCkuZXF1YWxzKGNhc3RPdGhlci5nZXRUYXUoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRU
YXV2KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0VGF1digpKSB8fCAoIHRoaXMuZ2V0VGF1digpIT0zRG51
bD0KbCAmJiBjYXN0T3RoZXIuZ2V0VGF1digpIT0zRG51bGwgJiYgdGhpcy5nZXRUYXV2KCkuZXF1
YWxzKGNhc3RPdGhlci5nZXRUYXV2PQooKSkgKSApCi0gJiYgKCAodGhpcy5nZXRUZWlsUSgpPTNE
PTNEY2FzdE90aGVyLmdldFRlaWxRKCkpIHx8ICggdGhpcy5nZXRUZWlsUSgpIT0zRD0KbnVsbCAm
JiBjYXN0T3RoZXIuZ2V0VGVpbFEoKSE9M0RudWxsICYmIHRoaXMuZ2V0VGVpbFEoKS5lcXVhbHMo
Y2FzdE90aGVyLmdlPQp0VGVpbFEoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRUZWlsQUhwZWlsKCk9
M0Q9M0RjYXN0T3RoZXIuZ2V0VGVpbEFIcGVpbCgpKSB8fCAoIHRoaXMuZ2V0VD0KZWlsQUhwZWls
KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0VGVpbEFIcGVpbCgpIT0zRG51bGwgJiYgdGhpcy5n
ZXRUZWlsQUhwPQplaWwoKS5lcXVhbHMoY2FzdE90aGVyLmdldFRlaWxBSHBlaWwoKSkgKSApCi0g
JiYgKCAodGhpcy5nZXRUZWlsQU1wZWlsKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0VGVpbEFNcGVpbCgp
KSB8fCAoIHRoaXMuZ2V0VD0KZWlsQU1wZWlsKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0VGVp
bEFNcGVpbCgpIT0zRG51bGwgJiYgdGhpcy5nZXRUZWlsQU1wPQplaWwoKS5lcXVhbHMoY2FzdE90
aGVyLmdldFRlaWxBTXBlaWwoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRUZWlsQigpPTNEPTNEY2Fz
dE90aGVyLmdldFRlaWxCKCkpIHx8ICggdGhpcy5nZXRUZWlsQigpIT0zRD0KbnVsbCAmJiBjYXN0
T3RoZXIuZ2V0VGVpbEIoKSE9M0RudWxsICYmIHRoaXMuZ2V0VGVpbEIoKS5lcXVhbHMoY2FzdE90
aGVyLmdlPQp0VGVpbEIoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRUZWlsSG0oKT0zRD0zRGNhc3RP
dGhlci5nZXRUZWlsSG0oKSkgfHwgKCB0aGlzLmdldFRlaWxIbSgpIT0KPTNEbnVsbCAmJiBjYXN0
T3RoZXIuZ2V0VGVpbEhtKCkhPTNEbnVsbCAmJiB0aGlzLmdldFRlaWxIbSgpLmVxdWFscyhjYXN0
T3RoPQplci5nZXRUZWlsSG0oKSkgKSApCi0gJiYgKCAodGhpcy5nZXRUZWlsVm0oKT0zRD0zRGNh
c3RPdGhlci5nZXRUZWlsVm0oKSkgfHwgKCB0aGlzLmdldFRlaWxWbSgpIT0KPTNEbnVsbCAmJiBj
YXN0T3RoZXIuZ2V0VGVpbFZtKCkhPTNEbnVsbCAmJiB0aGlzLmdldFRlaWxWbSgpLmVxdWFscyhj
YXN0T3RoPQplci5nZXRUZWlsVm0oKSkgKSApCi0gJiYgKCAodGhpcy5nZXRUZWlsVnNvaGxlKCk9
M0Q9M0RjYXN0T3RoZXIuZ2V0VGVpbFZzb2hsZSgpKSB8fCAoIHRoaXMuZ2V0VD0KZWlsVnNvaGxl
KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0VGVpbFZzb2hsZSgpIT0zRG51bGwgJiYgdGhpcy5n
ZXRUZWlsVnNvPQpobGUoKS5lcXVhbHMoY2FzdE90aGVyLmdldFRlaWxWc29obGUoKSkgKSApCi0g
JiYgKCAodGhpcy5nZXRUZWlsVGF1KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0VGVpbFRhdSgpKSB8fCAo
IHRoaXMuZ2V0VGVpbFRhdT0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0VGVpbFRhdSgpIT0z
RG51bGwgJiYgdGhpcy5nZXRUZWlsVGF1KCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFRlaWxUYXUo
KSkgKSApCi0gJiYgKCAodGhpcy5nZXRUZWlsVGF1digpPTNEPTNEY2FzdE90aGVyLmdldFRlaWxU
YXV2KCkpIHx8ICggdGhpcy5nZXRUZWlsVD0KYXV2KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0
VGVpbFRhdXYoKSE9M0RudWxsICYmIHRoaXMuZ2V0VGVpbFRhdXYoKS5lcXVhPQpscyhjYXN0T3Ro
ZXIuZ2V0VGVpbFRhdXYoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRNaXR0ZWx0eXAoKT0zRD0zRGNh
c3RPdGhlci5nZXRNaXR0ZWx0eXAoKSkgfHwgKCB0aGlzLmdldE1pdD0KdGVsdHlwKCkhPTNEbnVs
bCAmJiBjYXN0T3RoZXIuZ2V0TWl0dGVsdHlwKCkhPTNEbnVsbCAmJiB0aGlzLmdldE1pdHRlbHR5
cCgpPQouZXF1YWxzKGNhc3RPdGhlci5nZXRNaXR0ZWx0eXAoKSkgKSApCi0gJiYgKCAodGhpcy5n
ZXREbSgpPTNEPTNEY2FzdE90aGVyLmdldERtKCkpIHx8ICggdGhpcy5nZXREbSgpIT0zRG51bGwg
JiYgYz0KYXN0T3RoZXIuZ2V0RG0oKSE9M0RudWxsICYmIHRoaXMuZ2V0RG0oKS5lcXVhbHMoY2Fz
dE90aGVyLmdldERtKCkpICkgKQotICYmICggKHRoaXMuZ2V0U2soKT0zRD0zRGNhc3RPdGhlci5n
ZXRTaygpKSB8fCAoIHRoaXMuZ2V0U2soKSE9M0RudWxsICYmIGM9CmFzdE90aGVyLmdldFNrKCkh
PTNEbnVsbCAmJiB0aGlzLmdldFNrKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRTaygpKSApICkKLSAm
JiAoICh0aGlzLmdldFNvKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0U28oKSkgfHwgKCB0aGlzLmdldFNv
KCkhPTNEbnVsbCAmJiBjPQphc3RPdGhlci5nZXRTbygpIT0zRG51bGwgJiYgdGhpcy5nZXRTbygp
LmVxdWFscyhjYXN0T3RoZXIuZ2V0U28oKSkgKSApCi0gJiYgKCAodGhpcy5nZXRVKCk9M0Q9M0Rj
YXN0T3RoZXIuZ2V0VSgpKSB8fCAoIHRoaXMuZ2V0VSgpIT0zRG51bGwgJiYgY2FzdD0KT3RoZXIu
Z2V0VSgpIT0zRG51bGwgJiYgdGhpcy5nZXRVKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRVKCkpICkg
KQotICYmICggKHRoaXMuZ2V0RDkwKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RDkwKCkpIHx8ICggdGhp
cy5nZXREOTAoKSE9M0RudWxsICY9CiYgY2FzdE90aGVyLmdldEQ5MCgpIT0zRG51bGwgJiYgdGhp
cy5nZXREOTAoKS5lcXVhbHMoY2FzdE90aGVyLmdldEQ5MCgpKSApICkKLSAmJiAoICh0aGlzLmdl
dEQ4NCgpPTNEPTNEY2FzdE90aGVyLmdldEQ4NCgpKSB8fCAoIHRoaXMuZ2V0RDg0KCkhPTNEbnVs
bCAmPQomIGNhc3RPdGhlci5nZXREODQoKSE9M0RudWxsICYmIHRoaXMuZ2V0RDg0KCkuZXF1YWxz
KGNhc3RPdGhlci5nZXREODQoKSkgKSApCi0gJiYgKCAodGhpcy5nZXREODAoKT0zRD0zRGNhc3RP
dGhlci5nZXREODAoKSkgfHwgKCB0aGlzLmdldEQ4MCgpIT0zRG51bGwgJj0KJiBjYXN0T3RoZXIu
Z2V0RDgwKCkhPTNEbnVsbCAmJiB0aGlzLmdldEQ4MCgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0RDgw
KCkpICkgKQotICYmICggKHRoaXMuZ2V0RDc1KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RDc1KCkpIHx8
ICggdGhpcy5nZXRENzUoKSE9M0RudWxsICY9CiYgY2FzdE90aGVyLmdldEQ3NSgpIT0zRG51bGwg
JiYgdGhpcy5nZXRENzUoKS5lcXVhbHMoY2FzdE90aGVyLmdldEQ3NSgpKSApICkKLSAmJiAoICh0
aGlzLmdldEQ3MCgpPTNEPTNEY2FzdE90aGVyLmdldEQ3MCgpKSB8fCAoIHRoaXMuZ2V0RDcwKCkh
PTNEbnVsbCAmPQomIGNhc3RPdGhlci5nZXRENzAoKSE9M0RudWxsICYmIHRoaXMuZ2V0RDcwKCku
ZXF1YWxzKGNhc3RPdGhlci5nZXRENzAoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRENjAoKT0zRD0z
RGNhc3RPdGhlci5nZXRENjAoKSkgfHwgKCB0aGlzLmdldEQ2MCgpIT0zRG51bGwgJj0KJiBjYXN0
T3RoZXIuZ2V0RDYwKCkhPTNEbnVsbCAmJiB0aGlzLmdldEQ2MCgpLmVxdWFscyhjYXN0T3RoZXIu
Z2V0RDYwKCkpICkgKQotICYmICggKHRoaXMuZ2V0RDUwKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RDUw
KCkpIHx8ICggdGhpcy5nZXRENTAoKSE9M0RudWxsICY9CiYgY2FzdE90aGVyLmdldEQ1MCgpIT0z
RG51bGwgJiYgdGhpcy5nZXRENTAoKS5lcXVhbHMoY2FzdE90aGVyLmdldEQ1MCgpKSApICkKLSAm
JiAoICh0aGlzLmdldEQ0MCgpPTNEPTNEY2FzdE90aGVyLmdldEQ0MCgpKSB8fCAoIHRoaXMuZ2V0
RDQwKCkhPTNEbnVsbCAmPQomIGNhc3RPdGhlci5nZXRENDAoKSE9M0RudWxsICYmIHRoaXMuZ2V0
RDQwKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRENDAoKSkgKSApCi0gJiYgKCAodGhpcy5nZXREMzAo
KT0zRD0zRGNhc3RPdGhlci5nZXREMzAoKSkgfHwgKCB0aGlzLmdldEQzMCgpIT0zRG51bGwgJj0K
JiBjYXN0T3RoZXIuZ2V0RDMwKCkhPTNEbnVsbCAmJiB0aGlzLmdldEQzMCgpLmVxdWFscyhjYXN0
T3RoZXIuZ2V0RDMwKCkpICkgKQotICYmICggKHRoaXMuZ2V0RDI1KCk9M0Q9M0RjYXN0T3RoZXIu
Z2V0RDI1KCkpIHx8ICggdGhpcy5nZXREMjUoKSE9M0RudWxsICY9CiYgY2FzdE90aGVyLmdldEQy
NSgpIT0zRG51bGwgJiYgdGhpcy5nZXREMjUoKS5lcXVhbHMoY2FzdE90aGVyLmdldEQyNSgpKSAp
ICkKLSAmJiAoICh0aGlzLmdldEQyMCgpPTNEPTNEY2FzdE90aGVyLmdldEQyMCgpKSB8fCAoIHRo
aXMuZ2V0RDIwKCkhPTNEbnVsbCAmPQomIGNhc3RPdGhlci5nZXREMjAoKSE9M0RudWxsICYmIHRo
aXMuZ2V0RDIwKCkuZXF1YWxzKGNhc3RPdGhlci5nZXREMjAoKSkgKSApCi0gJiYgKCAodGhpcy5n
ZXREMTYoKT0zRD0zRGNhc3RPdGhlci5nZXREMTYoKSkgfHwgKCB0aGlzLmdldEQxNigpIT0zRG51
bGwgJj0KJiBjYXN0T3RoZXIuZ2V0RDE2KCkhPTNEbnVsbCAmJiB0aGlzLmdldEQxNigpLmVxdWFs
cyhjYXN0T3RoZXIuZ2V0RDE2KCkpICkgKQotICYmICggKHRoaXMuZ2V0RDEwKCk9M0Q9M0RjYXN0
T3RoZXIuZ2V0RDEwKCkpIHx8ICggdGhpcy5nZXREMTAoKSE9M0RudWxsICY9CiYgY2FzdE90aGVy
LmdldEQxMCgpIT0zRG51bGwgJiYgdGhpcy5nZXREMTAoKS5lcXVhbHMoY2FzdE90aGVyLmdldEQx
MCgpKSApICkKLSAmJiAoICh0aGlzLmdldERtaW4oKT0zRD0zRGNhc3RPdGhlci5nZXREbWluKCkp
IHx8ICggdGhpcy5nZXREbWluKCkhPTNEbnVsPQpsICYmIGNhc3RPdGhlci5nZXREbWluKCkhPTNE
bnVsbCAmJiB0aGlzLmdldERtaW4oKS5lcXVhbHMoY2FzdE90aGVyLmdldERtaW49CigpKSApICkK
LSAmJiAoICh0aGlzLmdldER1cmNoZG1pbigpPTNEPTNEY2FzdE90aGVyLmdldER1cmNoZG1pbigp
KSB8fCAoIHRoaXMuZ2V0RHVyPQpjaGRtaW4oKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXREdXJj
aGRtaW4oKSE9M0RudWxsICYmIHRoaXMuZ2V0RHVyY2hkbWluKCk9Ci5lcXVhbHMoY2FzdE90aGVy
LmdldER1cmNoZG1pbigpKSApICkKLSAmJiAoICh0aGlzLmdldERtYXgoKT0zRD0zRGNhc3RPdGhl
ci5nZXREbWF4KCkpIHx8ICggdGhpcy5nZXREbWF4KCkhPTNEbnVsPQpsICYmIGNhc3RPdGhlci5n
ZXREbWF4KCkhPTNEbnVsbCAmJiB0aGlzLmdldERtYXgoKS5lcXVhbHMoY2FzdE90aGVyLmdldERt
YXg9CigpKSApICkKLSAmJiAoICh0aGlzLmdldER1cmNoZG1heCgpPTNEPTNEY2FzdE90aGVyLmdl
dER1cmNoZG1heCgpKSB8fCAoIHRoaXMuZ2V0RHVyPQpjaGRtYXgoKSE9M0RudWxsICYmIGNhc3RP
dGhlci5nZXREdXJjaGRtYXgoKSE9M0RudWxsICYmIHRoaXMuZ2V0RHVyY2hkbWF4KCk9Ci5lcXVh
bHMoY2FzdE90aGVyLmdldER1cmNoZG1heCgpKSApICkKLSAmJiAoICh0aGlzLmdldE5HZXNjaGll
YigpPTNEPTNEY2FzdE90aGVyLmdldE5HZXNjaGllYigpKSB8fCAoIHRoaXMuZ2V0TkdlPQpzY2hp
ZWIoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXROR2VzY2hpZWIoKSE9M0RudWxsICYmIHRoaXMu
Z2V0Tkdlc2NoaWViKCk9Ci5lcXVhbHMoY2FzdE90aGVyLmdldE5HZXNjaGllYigpKSApICkKLSAm
JiAoICh0aGlzLmdldE5WaWVscGt0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TlZpZWxwa3QoKSkgfHwg
KCB0aGlzLmdldE5WaWVsPQpwa3QoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXROVmllbHBrdCgp
IT0zRG51bGwgJiYgdGhpcy5nZXROVmllbHBrdCgpLmVxdWE9CmxzKGNhc3RPdGhlci5nZXROVmll
bHBrdCgpKSApICkKLSAmJiAoICh0aGlzLmdldFN5c0RhdGUoKT0zRD0zRGNhc3RPdGhlci5nZXRT
eXNEYXRlKCkpIHx8ICggdGhpcy5nZXRTeXNEYXRlPQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5n
ZXRTeXNEYXRlKCkhPTNEbnVsbCAmJiB0aGlzLmdldFN5c0RhdGUoKS5lcXVhbHMoY2E9CnN0T3Ro
ZXIuZ2V0U3lzRGF0ZSgpKSApICkKLSAmJiAoICh0aGlzLmdldEJlbWVya3VuZygpPTNEPTNEY2Fz
dE90aGVyLmdldEJlbWVya3VuZygpKSB8fCAoIHRoaXMuZ2V0QmVtPQplcmt1bmcoKSE9M0RudWxs
ICYmIGNhc3RPdGhlci5nZXRCZW1lcmt1bmcoKSE9M0RudWxsICYmIHRoaXMuZ2V0QmVtZXJrdW5n
KCk9Ci5lcXVhbHMoY2FzdE90aGVyLmdldEJlbWVya3VuZygpKSApICkKLSAmJiAoICh0aGlzLmdl
dExhc3R1cGRhdGVkKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TGFzdHVwZGF0ZWQoKSkgfHwgKCB0aGlz
LmdlPQp0TGFzdHVwZGF0ZWQoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRMYXN0dXBkYXRlZCgp
IT0zRG51bGwgJiYgdGhpcy5nZXRMYXM9CnR1cGRhdGVkKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRM
YXN0dXBkYXRlZCgpKSApICkKLSAmJiAoICh0aGlzLmdldEttKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0
S20oKSkgfHwgKCB0aGlzLmdldEttKCkhPTNEbnVsbCAmJiBjPQphc3RPdGhlci5nZXRLbSgpIT0z
RG51bGwgJiYgdGhpcy5nZXRLbSgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0S20oKSkgKSApCi0gJiYg
KCAodGhpcy5nZXRHbG90YWJzdG9mZnNldCgpPTNEPTNEY2FzdE90aGVyLmdldEdsb3RhYnN0b2Zm
c2V0KCkpIHx8ICggdD0KaGlzLmdldEdsb3RhYnN0b2Zmc2V0KCkhPTNEbnVsbCAmJiBjYXN0T3Ro
ZXIuZ2V0R2xvdGFic3RvZmZzZXQoKSE9M0RudWxsICYmPQogdGhpcy5nZXRHbG90YWJzdG9mZnNl
dCgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0R2xvdGFic3RvZmZzZXQoKSkgKSApCi0gJiYgKCAodGhp
cy5nZXRTbG90YWJzdG9mZnNldCgpPTNEPTNEY2FzdE90aGVyLmdldFNsb3RhYnN0b2Zmc2V0KCkp
IHx8ICggdD0KaGlzLmdldFNsb3RhYnN0b2Zmc2V0KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0
U2xvdGFic3RvZmZzZXQoKSE9M0RudWxsICYmPQogdGhpcy5nZXRTbG90YWJzdG9mZnNldCgpLmVx
dWFscyhjYXN0T3RoZXIuZ2V0U2xvdGFic3RvZmZzZXQoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRH
YnJlaXRldm9ubGlua3MoKT0zRD0zRGNhc3RPdGhlci5nZXRHYnJlaXRldm9ubGlua3MoKSkgfHwg
KD0KIHRoaXMuZ2V0R2JyZWl0ZXZvbmxpbmtzKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0R2Jy
ZWl0ZXZvbmxpbmtzKCkhPTNEbnVsPQpsICYmIHRoaXMuZ2V0R2JyZWl0ZXZvbmxpbmtzKCkuZXF1
YWxzKGNhc3RPdGhlci5nZXRHYnJlaXRldm9ubGlua3MoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRH
YnJlaXRlYmlzbGlua3MoKT0zRD0zRGNhc3RPdGhlci5nZXRHYnJlaXRlYmlzbGlua3MoKSkgfHwg
KD0KIHRoaXMuZ2V0R2JyZWl0ZWJpc2xpbmtzKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0R2Jy
ZWl0ZWJpc2xpbmtzKCkhPTNEbnVsPQpsICYmIHRoaXMuZ2V0R2JyZWl0ZWJpc2xpbmtzKCkuZXF1
YWxzKGNhc3RPdGhlci5nZXRHYnJlaXRlYmlzbGlua3MoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRT
dGFuYW1lKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0U3RhbmFtZSgpKSB8fCAoIHRoaXMuZ2V0U3RhbmFt
ZT0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0U3RhbmFtZSgpIT0zRG51bGwgJiYgdGhpcy5n
ZXRTdGFuYW1lKCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFN0YW5hbWUoKSkgKSApCi0gJiYgKCAo
dGhpcy5nZXRTdGFrbSgpPTNEPTNEY2FzdE90aGVyLmdldFN0YWttKCkpIHx8ICggdGhpcy5nZXRT
dGFrbSgpIT0zRD0KbnVsbCAmJiBjYXN0T3RoZXIuZ2V0U3Rha20oKSE9M0RudWxsICYmIHRoaXMu
Z2V0U3Rha20oKS5lcXVhbHMoY2FzdE90aGVyLmdlPQp0U3Rha20oKSkgKSApCi0gJiYgKCAodGhp
cy5nZXRHZXdhZXNzZXJpZCgpPTNEPTNEY2FzdE90aGVyLmdldEdld2Flc3NlcmlkKCkpIHx8ICgg
dGhpcy5nZT0KdEdld2Flc3NlcmlkKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0R2V3YWVzc2Vy
aWQoKSE9M0RudWxsICYmIHRoaXMuZ2V0R2V3PQphZXNzZXJpZCgpLmVxdWFscyhjYXN0T3RoZXIu
Z2V0R2V3YWVzc2VyaWQoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRHZXduYW1lKCk9M0Q9M0RjYXN0
T3RoZXIuZ2V0R2V3bmFtZSgpKSB8fCAoIHRoaXMuZ2V0R2V3bmFtZT0KKCkhPTNEbnVsbCAmJiBj
YXN0T3RoZXIuZ2V0R2V3bmFtZSgpIT0zRG51bGwgJiYgdGhpcy5nZXRHZXduYW1lKCkuZXF1YWxz
KGNhPQpzdE90aGVyLmdldEdld25hbWUoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRCZXp1Z3NwZWdl
bGlkKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0QmV6dWdzcGVnZWxpZCgpKSB8fCAoIHRoaT0Kcy5nZXRC
ZXp1Z3NwZWdlbGlkKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0QmV6dWdzcGVnZWxpZCgpIT0z
RG51bGwgJiYgdGhpPQpzLmdldEJlenVnc3BlZ2VsaWQoKS5lcXVhbHMoY2FzdE90aGVyLmdldEJl
enVnc3BlZ2VsaWQoKSkgKSApOwotICAgfQotCi0gICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgewot
ICAgICAgICAgaW50IHJlc3VsdCA9M0QgMTc7Ci0KLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiBy
ZXN1bHQgKyAoIGdldE1lc3N1bmdpZCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuPQpnZXRNZXNz
dW5naWQoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsg
KCBnZXRTdGF0aW9uaWQoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLj0KZ2V0U3RhdGlvbmlkKCku
aGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0RGF0
dW0oKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEQ9CmF0dW0oKS5oYXNoQ29kZSgpICk7Ci0g
ICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRIcGVpbHVuZ2lkKCkgPTNEPTNE
IG51bGwgPyAwIDogdGhpcz0KLmdldEhwZWlsdW5naWQoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAg
ICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNcGVpbHVuZ2lkKCkgPTNEPTNEIG51bGwg
PyAwIDogdGhpcz0KLmdldE1wZWlsdW5naWQoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1
bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRHZmFlbmdlcmlkKCkgPTNEPTNEIG51bGwgPyAwIDog
dGhpcz0KLmdldEdmYWVuZ2VyaWQoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNE
IDM3ICogcmVzdWx0ICsgKCBnZXRHc2llYnNhdHppZCgpID0zRD0zRCBudWxsID8gMCA6IHRoaT0K
cy5nZXRHc2llYnNhdHppZCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcg
KiByZXN1bHQgKyAoIGdldE1lc3NucigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0PQpNZXNz
bnIoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBn
ZXRGZ3VlKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRGZz0KdWUoKS5oYXNoQ29kZSgpICk7
Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRVaHJ2b24oKSA9M0Q9M0Qg
bnVsbCA/IDAgOiB0aGlzLmdldD0KVWhydm9uKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVz
dWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0VWhyYmlzKCkgPTNEPTNEIG51bGwgPyAwIDogdGhp
cy5nZXQ9ClVocmJpcygpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiBy
ZXN1bHQgKyAoIGdldFdzcGNtKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRXPQpzcGNtKCku
aGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UUJw
ZWdlbCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRRQnBlZ2VsKCkuaGFzaENvZGUoKSAp
OwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0V3Nwbm4oKSA9M0Q9M0Qg
bnVsbCA/IDAgOiB0aGlzLmdldFc9CnNwbm4oKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1
bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRJZSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0
SWUoKT0KLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAo
IGdldFd0ZW1wKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRXPQp0ZW1wKCkuaGFzaENvZGUo
KSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0R2JyZWl0ZSgpID0z
RD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRHYnJlaXRlKCkuaGFzaENvZGUoKSApOwotICAgICAg
ICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0R2JyZWl0ZXZvbigpID0zRD0zRCBudWxs
ID8gMCA6IHRoaXM9Ci5nZXRHYnJlaXRldm9uKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVz
dWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0R2JyZWl0ZWJpcygpID0zRD0zRCBudWxsID8gMCA6
IHRoaXM9Ci5nZXRHYnJlaXRlYmlzKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0z
RCAzNyAqIHJlc3VsdCArICggZ2V0VGdlc2NoaWViZSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXM9
Ci5nZXRUZ2VzY2hpZWJlKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAq
IHJlc3VsdCArICggZ2V0VHNhbmQoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldFQ9CnNhbmQo
KS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRU
c2Nod2ViKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFRzY2h3ZWIoKS5oYXNoQ29kZSgp
ICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRDc2Nod2ViKCkgPTNE
PTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdENzY2h3ZWIoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAg
ICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRVZmVybGlhYnN0KCkgPTNEPTNEIG51bGwg
PyAwIDogdGhpcz0KLmdldFVmZXJsaWFic3QoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1
bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRVZmVycmVhYnN0KCkgPTNEPTNEIG51bGwgPyAwIDog
dGhpcz0KLmdldFVmZXJyZWFic3QoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNE
IDM3ICogcmVzdWx0ICsgKCBnZXRRKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRRKCkuaD0K
YXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRBSHBl
aWwoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldD0KQUhwZWlsKCkuaGFzaENvZGUoKSApOwot
ICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0QU1wZWlsKCkgPTNEPTNEIG51
bGwgPyAwIDogdGhpcy5nZXQ9CkFNcGVpbCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3Vs
dCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEIoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEIo
KS5oPQphc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdl
dEhtKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRIbSgpPQouaGFzaENvZGUoKSApOwotICAg
ICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0Vm0oKSA9M0Q9M0QgbnVsbCA/IDAg
OiB0aGlzLmdldFZtKCk9Ci5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICog
cmVzdWx0ICsgKCBnZXRWc29obGUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldD0KVnNvaGxl
KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0
VGF1KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRUYXU9CigpLmhhc2hDb2RlKCkgKTsKLSAg
ICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFRhdXYoKSA9M0Q9M0QgbnVsbCA/
IDAgOiB0aGlzLmdldFRhPQp1digpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0Qg
MzcgKiByZXN1bHQgKyAoIGdldFRlaWxRKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRUPQpl
aWxRKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICgg
Z2V0VGVpbEFIcGVpbCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXM9Ci5nZXRUZWlsQUhwZWlsKCku
aGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0VGVp
bEFNcGVpbCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXM9Ci5nZXRUZWlsQU1wZWlsKCkuaGFzaENv
ZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0VGVpbEIoKSA9
M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldFQ9CmVpbEIoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAg
ICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRUZWlsSG0oKSA9M0Q9M0QgbnVsbCA/IDAg
OiB0aGlzLmdldD0KVGVpbEhtKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAz
NyAqIHJlc3VsdCArICggZ2V0VGVpbFZtKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXQ9ClRl
aWxWbSgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAo
IGdldFRlaWxWc29obGUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzPQouZ2V0VGVpbFZzb2hsZSgp
Lmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFRl
aWxUYXUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0VGVpbFRhdSgpLmhhc2hDb2RlKCkg
KTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFRlaWxUYXV2KCkgPTNE
PTNEIG51bGwgPyAwIDogdGhpcy5nPQpldFRlaWxUYXV2KCkuaGFzaENvZGUoKSApOwotICAgICAg
ICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWl0dGVsdHlwKCkgPTNEPTNEIG51bGwg
PyAwIDogdGhpcy49CmdldE1pdHRlbHR5cCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3Vs
dCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldERtKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRE
bSgpPQouaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICgg
Z2V0U2soKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldFNrKCk9Ci5oYXNoQ29kZSgpICk7Ci0g
ICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRTbygpID0zRD0zRCBudWxsID8g
MCA6IHRoaXMuZ2V0U28oKT0KLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcg
KiByZXN1bHQgKyAoIGdldFUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldFUoKS5oPQphc2hD
b2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEQ5MCgpID0z
RD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0RDkwPQooKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICBy
ZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXREODQoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlz
LmdldEQ4ND0KKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3Vs
dCArICggZ2V0RDgwKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXREODA9CigpLmhhc2hDb2Rl
KCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEQ3NSgpID0zRD0z
RCBudWxsID8gMCA6IHRoaXMuZ2V0RDc1PQooKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1
bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRENzAoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdl
dEQ3MD0KKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCAr
ICggZ2V0RDYwKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRENjA9CigpLmhhc2hDb2RlKCkg
KTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEQ1MCgpID0zRD0zRCBu
dWxsID8gMCA6IHRoaXMuZ2V0RDUwPQooKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQg
PTNEIDM3ICogcmVzdWx0ICsgKCBnZXRENDAoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEQ0
MD0KKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICgg
Z2V0RDMwKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXREMzA9CigpLmhhc2hDb2RlKCkgKTsK
LSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEQyNSgpID0zRD0zRCBudWxs
ID8gMCA6IHRoaXMuZ2V0RDI1PQooKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNE
IDM3ICogcmVzdWx0ICsgKCBnZXREMjAoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEQyMD0K
KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0
RDE2KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXREMTY9CigpLmhhc2hDb2RlKCkgKTsKLSAg
ICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEQxMCgpID0zRD0zRCBudWxsID8g
MCA6IHRoaXMuZ2V0RDEwPQooKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3
ICogcmVzdWx0ICsgKCBnZXREbWluKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXREbT0KaW4o
KS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRE
dXJjaGRtaW4oKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLj0KZ2V0RHVyY2hkbWluKCkuaGFzaENv
ZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0RG1heCgpID0z
RD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0RG09CmF4KCkuaGFzaENvZGUoKSApOwotICAgICAgICAg
cmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0RHVyY2hkbWF4KCkgPTNEPTNEIG51bGwgPyAw
IDogdGhpcy49CmdldER1cmNoZG1heCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9
M0QgMzcgKiByZXN1bHQgKyAoIGdldE5HZXNjaGllYigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMu
PQpnZXROR2VzY2hpZWIoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICog
cmVzdWx0ICsgKCBnZXROVmllbHBrdCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXROVmll
bHBrdCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAo
IGdldFN5c0RhdGUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0U3lzRGF0ZSgpLmhhc2hD
b2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEJlbWVya3Vu
ZygpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuPQpnZXRCZW1lcmt1bmcoKS5oYXNoQ29kZSgpICk7
Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRMYXN0dXBkYXRlZCgpID0z
RD0zRCBudWxsID8gMCA6IHRoaT0Kcy5nZXRMYXN0dXBkYXRlZCgpLmhhc2hDb2RlKCkgKTsKLSAg
ICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEttKCkgPTNEPTNEIG51bGwgPyAw
IDogdGhpcy5nZXRLbSgpPQouaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAq
IHJlc3VsdCArICggZ2V0R2xvdGFic3RvZmZzZXQoKSA9M0Q9M0QgbnVsbCA/IDAgOiA9CnRoaXMu
Z2V0R2xvdGFic3RvZmZzZXQoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3
ICogcmVzdWx0ICsgKCBnZXRTbG90YWJzdG9mZnNldCgpID0zRD0zRCBudWxsID8gMCA6ID0KdGhp
cy5nZXRTbG90YWJzdG9mZnNldCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0Qg
MzcgKiByZXN1bHQgKyAoIGdldEdicmVpdGV2b25saW5rcygpID0zRD0zRCBudWxsID8gMCA6PQog
dGhpcy5nZXRHYnJlaXRldm9ubGlua3MoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQg
PTNEIDM3ICogcmVzdWx0ICsgKCBnZXRHYnJlaXRlYmlzbGlua3MoKSA9M0Q9M0QgbnVsbCA/IDAg
Oj0KIHRoaXMuZ2V0R2JyZWl0ZWJpc2xpbmtzKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVz
dWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0U3RhbmFtZSgpID0zRD0zRCBudWxsID8gMCA6IHRo
aXMuZ2U9CnRTdGFuYW1lKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAq
IHJlc3VsdCArICggZ2V0U3Rha20oKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldFM9CnRha20o
KS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRH
ZXdhZXNzZXJpZCgpID0zRD0zRCBudWxsID8gMCA6IHRoaT0Kcy5nZXRHZXdhZXNzZXJpZCgpLmhh
c2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEdld25h
bWUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0R2V3bmFtZSgpLmhhc2hDb2RlKCkgKTsK
LSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEJlenVnc3BlZ2VsaWQoKSA9
M0Q9M0QgbnVsbCA/IDAgOiB0PQpoaXMuZ2V0QmV6dWdzcGVnZWxpZCgpLmhhc2hDb2RlKCkgKTsK
LSAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci19CmRpZmYgLXIgYmM0ZTFiZjI2MjI3IC1y
IDFlNjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9tYWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZT0KZGRi
L21vZGVsL01lc3N1bmd1ZmVyYmV6dWcuamF2YQotLS0gYS9iYWNrZW5kL3NyYy9tYWluL2phdmEv
ZGUvaW50ZXZhdGlvbi9zZWRkYi9tb2RlbC9NZXNzdW5ndWZlcmJlenVnLmphdmE9CglNb24gQXBy
IDI5IDExOjE0OjI1IDIwMTMgKzAyMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAw
IDE5NzAgKzAwMDAKQEAgLTEsNTMgKzAsMCBAQAotLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEy
LCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAq
IFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoKLSAqIFRoaXMgZmls
ZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAotICogYW5k
IGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQotICogZG9j
dW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0y
MAotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7Ci0vLyBHZW5l
cmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0K
LQotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0ZU92ZXJyaWRlOwotaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0ZU92ZXJyaWRlczsKLWltcG9ydCBqYXZheC5wZXJzaXN0
ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW1iZWRkZWRJZDsKLWltcG9y
dCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFi
bGU7Ci0KLS8qKgotICogTWVzc3VuZ3VmZXJiZXp1ZyBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAq
LwotQEVudGl0eQotQFRhYmxlKG5hbWU9M0QiTUVTU1VOR1VGRVJCRVpVRyIKLSAgICAsc2NoZW1h
PTNEIlNFRERCIgotKQotcHVibGljIGNsYXNzIE1lc3N1bmd1ZmVyYmV6dWcgIGltcGxlbWVudHMg
amF2YS5pby5TZXJpYWxpemFibGUgewotCi0KLSAgICAgcHJpdmF0ZSBNZXNzdW5ndWZlcmJlenVn
SWQgaWQ7Ci0KLSAgICBwdWJsaWMgTWVzc3VuZ3VmZXJiZXp1ZygpIHsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgTWVzc3VuZ3VmZXJiZXp1ZyhNZXNzdW5ndWZlcmJlenVnSWQgaWQpIHsKLSAgICAgICB0
aGlzLmlkID0zRCBpZDsKLSAgICB9Ci0KLSAgICAgQEVtYmVkZGVkSWQKLQotCi0gICAgQEF0dHJp
YnV0ZU92ZXJyaWRlcyggewotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtZXNz
dW5naWQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUU9ClNTVU5HSUQiLCBudWxsYWJsZT0z
RGZhbHNlLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QwKSApLAotICAgICAgICBAQXR0cmlidXRl
T3ZlcnJpZGUobmFtZT0zRCJ1ZmVyaXN0bGlua3MiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0Q9
CiJVRkVSSVNUTElOS1MiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxLCBzY2FsZT0z
RDApICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImhtYWJzdCIsIGNvbHVt
bj0zREBDb2x1bW4obmFtZT0zRCJITUFCUz0KVCIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykg
KSB9ICkKLSAgICBwdWJsaWMgTWVzc3VuZ3VmZXJiZXp1Z0lkIGdldElkKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5pZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRJZChNZXNzdW5ndWZl
cmJlenVnSWQgaWQpIHsKLSAgICAgICAgdGhpcy5pZCA9M0QgaWQ7Ci0gICAgfQotfQpkaWZmIC1y
IGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2lu
dGV2YXRpb24vc2U9CmRkYi9tb2RlbC9NZXNzdW5ndWZlcmJlenVnSWQuamF2YQotLS0gYS9iYWNr
ZW5kL3NyYy9tYWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZWRkYi9tb2RlbC9NZXNzdW5ndWZlcmJl
enVnSWQuamE9CnZhCU1vbiBBcHIgMjkgMTE6MTQ6MjUgMjAxMyArMDIwMAorKysgL2Rldi9udWxs
CVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSw5MiArMCwwIEBACi0vKiBDb3B5
cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9
QzM9QTRzc2Vyaz0KdW5kZQotICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBH
bWJICi0gKgotICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BM
ICg+PTNEdjMpPTIwCi0gKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBD
aGVjayBvdXQgdGhlCi0gKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMg
Uml2ZXIgZm9yIGRldGFpbHMuPTIwCi0gKi8KLQotcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5z
ZWRkYi5tb2RlbDsKLS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0
ZSBUb29scyAzLjQuMC5DUjEKLQotCi1pbXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7Ci1pbXBv
cnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVt
YmVkZGFibGU7Ci0KLS8qKgotICogTWVzc3VuZ3VmZXJiZXp1Z0lkIGdlbmVyYXRlZCBieSBoYm0y
amF2YQotICovCi1ARW1iZWRkYWJsZQotcHVibGljIGNsYXNzIE1lc3N1bmd1ZmVyYmV6dWdJZCAg
aW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7Ci0KLQotICAgICBwcml2YXRlIGxvbmcg
bWVzc3VuZ2lkOwotICAgICBwcml2YXRlIGJvb2xlYW4gdWZlcmlzdGxpbmtzOwotICAgICBwcml2
YXRlIEJpZ0RlY2ltYWwgaG1hYnN0OwotCi0gICAgcHVibGljIE1lc3N1bmd1ZmVyYmV6dWdJZCgp
IHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgTWVzc3VuZ3VmZXJiZXp1Z0lkKGxvbmcgbWVzc3VuZ2lk
LCBib29sZWFuIHVmZXJpc3RsaW5rcykgewotICAgICAgICB0aGlzLm1lc3N1bmdpZCA9M0QgbWVz
c3VuZ2lkOwotICAgICAgICB0aGlzLnVmZXJpc3RsaW5rcyA9M0QgdWZlcmlzdGxpbmtzOwotICAg
IH0KLSAgICBwdWJsaWMgTWVzc3VuZ3VmZXJiZXp1Z0lkKGxvbmcgbWVzc3VuZ2lkLCBib29sZWFu
IHVmZXJpc3RsaW5rcywgQmlnRGVjPQppbWFsIGhtYWJzdCkgewotICAgICAgIHRoaXMubWVzc3Vu
Z2lkID0zRCBtZXNzdW5naWQ7Ci0gICAgICAgdGhpcy51ZmVyaXN0bGlua3MgPTNEIHVmZXJpc3Rs
aW5rczsKLSAgICAgICB0aGlzLmhtYWJzdCA9M0QgaG1hYnN0OwotICAgIH0KLQotCi0KLSAgICBA
Q29sdW1uKG5hbWU9M0QiTUVTU1VOR0lEIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNE
MTEsIHNjYWxlPTNEPQowKQotICAgIHB1YmxpYyBsb25nIGdldE1lc3N1bmdpZCgpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMubWVzc3VuZ2lkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1l
c3N1bmdpZChsb25nIG1lc3N1bmdpZCkgewotICAgICAgICB0aGlzLm1lc3N1bmdpZCA9M0QgbWVz
c3VuZ2lkOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlVGRVJJU1RMSU5LUyIsIG51
bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDEsIHNjYWxlPQo9M0QwKQotICAgIHB1YmxpYyBi
b29sZWFuIGlzVWZlcmlzdGxpbmtzKCkgewotICAgICAgICByZXR1cm4gdGhpcy51ZmVyaXN0bGlu
a3M7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VWZlcmlzdGxpbmtzKGJvb2xlYW4gdWZl
cmlzdGxpbmtzKSB7Ci0gICAgICAgIHRoaXMudWZlcmlzdGxpbmtzID0zRCB1ZmVyaXN0bGlua3M7
Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiSE1BQlNUIiwgcHJlY2lzaW9uPTNEOCwg
c2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEhtYWJzdCgpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuaG1hYnN0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEhtYWJzdChC
aWdEZWNpbWFsIGhtYWJzdCkgewotICAgICAgICB0aGlzLmhtYWJzdCA9M0QgaG1hYnN0OwotICAg
IH0KLQotCi0gICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG90aGVyKSB7Ci0gICAgICAg
ICBpZiAoICh0aGlzID0zRD0zRCBvdGhlciApICkgcmV0dXJuIHRydWU7Ci0gICAgICAgICBpZiAo
IChvdGhlciA9M0Q9M0QgbnVsbCApICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgaWYgKCAhKG90
aGVyIGluc3RhbmNlb2YgTWVzc3VuZ3VmZXJiZXp1Z0lkKSApIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgIE1lc3N1bmd1ZmVyYmV6dWdJZCBjYXN0T3RoZXIgPTNEICggTWVzc3VuZ3VmZXJiZXp1Z0lk
ICkgb3RoZXI7Ci0KLSAgICAgICAgIHJldHVybiAodGhpcy5nZXRNZXNzdW5naWQoKT0zRD0zRGNh
c3RPdGhlci5nZXRNZXNzdW5naWQoKSkKLSAmJiAodGhpcy5pc1VmZXJpc3RsaW5rcygpPTNEPTNE
Y2FzdE90aGVyLmlzVWZlcmlzdGxpbmtzKCkpCi0gJiYgKCAodGhpcy5nZXRIbWFic3QoKT0zRD0z
RGNhc3RPdGhlci5nZXRIbWFic3QoKSkgfHwgKCB0aGlzLmdldEhtYWJzdCgpIT0KPTNEbnVsbCAm
JiBjYXN0T3RoZXIuZ2V0SG1hYnN0KCkhPTNEbnVsbCAmJiB0aGlzLmdldEhtYWJzdCgpLmVxdWFs
cyhjYXN0T3RoPQplci5nZXRIbWFic3QoKSkgKSApOwotICAgfQotCi0gICBwdWJsaWMgaW50IGhh
c2hDb2RlKCkgewotICAgICAgICAgaW50IHJlc3VsdCA9M0QgMTc7Ci0KLSAgICAgICAgIHJlc3Vs
dCA9M0QgMzcgKiByZXN1bHQgKyAoaW50KSB0aGlzLmdldE1lc3N1bmdpZCgpOwotICAgICAgICAg
cmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICh0aGlzLmlzVWZlcmlzdGxpbmtzKCk/MTowKTsKLSAg
ICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEhtYWJzdCgpID0zRD0zRCBudWxs
ID8gMCA6IHRoaXMuZ2V0PQpIbWFic3QoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgfQotfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFj
a2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2U9CmRkYi9tb2RlbC9NcGVpbHB1bmt0
LmphdmEKLS0tIGEvYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2VkZGIvbW9k
ZWwvTXBlaWxwdW5rdC5qYXZhCU1vbiBBPQpwciAyOSAxMToxNDoyNSAyMDEzICswMjAwCisrKyAv
ZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDkyICswLDAgQEAK
LS8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9
QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCi0gKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRl
dmF0aW9uIEdtYkgKLSAqCi0gKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUg
R05VIEFHUEwgKD49M0R2Myk9MjAKLSAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FS
UkFOVFkhIENoZWNrIG91dCB0aGUKLSAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRF
bGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy49MjAKLSAqLwotCi1wYWNrYWdlIG9yZy5kaXZlNGVs
ZW1lbnRzLnNlZGRiLm1vZGVsOwotLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkg
SGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQotCi0KLWltcG9ydCBqYXZhLm1hdGguQmlnRGVjaW1h
bDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5BdHRyaWJ1dGVPdmVycmlkZTsKLWltcG9ydCBq
YXZheC5wZXJzaXN0ZW5jZS5BdHRyaWJ1dGVPdmVycmlkZXM7Ci1pbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVtYmVkZGVkSWQ7Ci1pbXBv
cnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkZl
dGNoVHlwZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1uOwotaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLk1hbnlUb09uZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJs
ZTsKLQotLyoqCi0gKiBNcGVpbHB1bmt0IGdlbmVyYXRlZCBieSBoYm0yamF2YQotICovCi1ARW50
aXR5Ci1AVGFibGUobmFtZT0zRCJNUEVJTFBVTktUIgotICAgICxzY2hlbWE9M0QiU0VEREIiCi0p
Ci1wdWJsaWMgY2xhc3MgTXBlaWxwdW5rdCAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJs
ZSB7Ci0KLQotICAgICBwcml2YXRlIE1wZWlscHVua3RJZCBpZDsKLSAgICAgcHJpdmF0ZSBNcGVp
bHVuZyBtcGVpbHVuZzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHk7Ci0gICAgIHByaXZhdGUg
QmlnRGVjaW1hbCB6OwotCi0gICAgcHVibGljIE1wZWlscHVua3QoKSB7Ci0gICAgfQotCi0gICAg
cHVibGljIE1wZWlscHVua3QoTXBlaWxwdW5rdElkIGlkLCBNcGVpbHVuZyBtcGVpbHVuZywgQmln
RGVjaW1hbCB5LCBCaT0KZ0RlY2ltYWwgeikgewotICAgICAgIHRoaXMuaWQgPTNEIGlkOwotICAg
ICAgIHRoaXMubXBlaWx1bmcgPTNEIG1wZWlsdW5nOwotICAgICAgIHRoaXMueSA9M0QgeTsKLSAg
ICAgICB0aGlzLnogPTNEIHo7Ci0gICAgfQotCi0gICAgIEBFbWJlZGRlZElkCi0KLQotICAgIEBB
dHRyaWJ1dGVPdmVycmlkZXMoIHsKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qi
bXBlaWx1bmdpZCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNPQpQRUlMVU5HSUQiLCBudWxs
YWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QwKSApLAotICAgICAgICBAQXR0
cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJwdW5rdG5yIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNE
IlBVTks9ClROUiIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDUsIHNjYWxlPTNEMCkg
KSB9ICkKLSAgICBwdWJsaWMgTXBlaWxwdW5rdElkIGdldElkKCkgewotICAgICAgICByZXR1cm4g
dGhpcy5pZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRJZChNcGVpbHB1bmt0SWQgaWQp
IHsKLSAgICAgICAgdGhpcy5pZCA9M0QgaWQ7Ci0gICAgfQotCi1ATWFueVRvT25lKGZldGNoPTNE
RmV0Y2hUeXBlLkxBWlkpCi0gICAgQEpvaW5Db2x1bW4obmFtZT0zRCJNUEVJTFVOR0lEIiwgbnVs
bGFibGU9M0RmYWxzZSwgaW5zZXJ0YWJsZT0zRGZhbHNlLD0KIHVwZGF0YWJsZT0zRGZhbHNlKQot
ICAgIHB1YmxpYyBNcGVpbHVuZyBnZXRNcGVpbHVuZygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
bXBlaWx1bmc7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TXBlaWx1bmcoTXBlaWx1bmcg
bXBlaWx1bmcpIHsKLSAgICAgICAgdGhpcy5tcGVpbHVuZyA9M0QgbXBlaWx1bmc7Ci0gICAgfQot
Ci0KLSAgICBAQ29sdW1uKG5hbWU9M0QiWSIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0z
RDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRZKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy55OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFkoQmlnRGVjaW1hbCB5
KSB7Ci0gICAgICAgIHRoaXMueSA9M0QgeTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJaIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldFooKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLno7Ci0gICAgfQot
Ci0gICAgcHVibGljIHZvaWQgc2V0WihCaWdEZWNpbWFsIHopIHsKLSAgICAgICAgdGhpcy56ID0z
RCB6OwotICAgIH0KLX0KZGlmZiAtciBiYzRlMWJmMjYyMjcgLXIgMWU2OGVjYTI2YjhhIGJhY2tl
bmQvc3JjL21haW4vamF2YS9kZS9pbnRldmF0aW9uL3NlPQpkZGIvbW9kZWwvTXBlaWxwdW5rdElk
LmphdmEKLS0tIGEvYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2VkZGIvbW9k
ZWwvTXBlaWxwdW5rdElkLmphdmEJTW9uPQogQXByIDI5IDExOjE0OjI1IDIwMTMgKzAyMDAKKysr
IC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsNzMgKzAsMCBA
QAotLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1D
Mz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IElu
dGV2YXRpb24gR21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRo
ZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBX
QVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZl
NEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0
ZWxlbWVudHMuc2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBi
eSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNl
LkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbWJlZGRhYmxlOwotCi0vKioKLSAq
IE1wZWlscHVua3RJZCBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVtYmVkZGFibGUKLXB1
YmxpYyBjbGFzcyBNcGVpbHB1bmt0SWQgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUg
ewotCi0KLSAgICAgcHJpdmF0ZSBsb25nIG1wZWlsdW5naWQ7Ci0gICAgIHByaXZhdGUgaW50IHB1
bmt0bnI7Ci0KLSAgICBwdWJsaWMgTXBlaWxwdW5rdElkKCkgewotICAgIH0KLQotICAgIHB1Ymxp
YyBNcGVpbHB1bmt0SWQobG9uZyBtcGVpbHVuZ2lkLCBpbnQgcHVua3RucikgewotICAgICAgIHRo
aXMubXBlaWx1bmdpZCA9M0QgbXBlaWx1bmdpZDsKLSAgICAgICB0aGlzLnB1bmt0bnIgPTNEIHB1
bmt0bnI7Ci0gICAgfQotCi0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNUEVJTFVOR0lEIiwgbnVs
bGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPQo9M0QwKQotICAgIHB1YmxpYyBs
b25nIGdldE1wZWlsdW5naWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1wZWlsdW5naWQ7Ci0g
ICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TXBlaWx1bmdpZChsb25nIG1wZWlsdW5naWQpIHsK
LSAgICAgICAgdGhpcy5tcGVpbHVuZ2lkID0zRCBtcGVpbHVuZ2lkOwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIlBVTktUTlIiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q1
LCBzY2FsZT0zRDApCi0gICAgcHVibGljIGludCBnZXRQdW5rdG5yKCkgewotICAgICAgICByZXR1
cm4gdGhpcy5wdW5rdG5yOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFB1bmt0bnIoaW50
IHB1bmt0bnIpIHsKLSAgICAgICAgdGhpcy5wdW5rdG5yID0zRCBwdW5rdG5yOwotICAgIH0KLQot
Ci0gICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG90aGVyKSB7Ci0gICAgICAgICBpZiAo
ICh0aGlzID0zRD0zRCBvdGhlciApICkgcmV0dXJuIHRydWU7Ci0gICAgICAgICBpZiAoIChvdGhl
ciA9M0Q9M0QgbnVsbCApICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgaWYgKCAhKG90aGVyIGlu
c3RhbmNlb2YgTXBlaWxwdW5rdElkKSApIHJldHVybiBmYWxzZTsKLSAgICAgICAgIE1wZWlscHVu
a3RJZCBjYXN0T3RoZXIgPTNEICggTXBlaWxwdW5rdElkICkgb3RoZXI7Ci0KLSAgICAgICAgIHJl
dHVybiAodGhpcy5nZXRNcGVpbHVuZ2lkKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TXBlaWx1bmdpZCgp
KQotICYmICh0aGlzLmdldFB1bmt0bnIoKT0zRD0zRGNhc3RPdGhlci5nZXRQdW5rdG5yKCkpOwot
ICAgfQotCi0gICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgewotICAgICAgICAgaW50IHJlc3VsdCA9
M0QgMTc7Ci0KLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoaW50KSB0aGlzLmdl
dE1wZWlsdW5naWQoKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyB0aGlzLmdl
dFB1bmt0bnIoKTsKLSAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci19CmRpZmYgLXIgYmM0
ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9tYWluL2phdmEvZGUvaW50ZXZh
dGlvbi9zZT0KZGRiL21vZGVsL01wZWlsdW5nLmphdmEKLS0tIGEvYmFja2VuZC9zcmMvbWFpbi9q
YXZhL2RlL2ludGV2YXRpb24vc2VkZGIvbW9kZWwvTXBlaWx1bmcuamF2YQlNb24gQXByPQogMjkg
MTE6MTQ6MjUgMjAxMyArMDIwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3
MCArMDAwMApAQCAtMSwxNDggKzAsMCBAQAotLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAy
MDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNv
ZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoKLSAqIFRoaXMgZmlsZSBp
cyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAotICogYW5kIGNv
bWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQotICogZG9jdW1l
bnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAot
ICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0
ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0KLQot
aW1wb3J0IGphdmEubWF0aC5CaWdEZWNpbWFsOwotaW1wb3J0IGphdmEudXRpbC5EYXRlOwotaW1w
b3J0IGphdmEudXRpbC5IYXNoU2V0OwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci1pbXBvcnQgamF2
YXgucGVyc2lzdGVuY2UuQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsK
LWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7Ci1pbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuSWQ7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKLWltcG9ydCBq
YXZheC5wZXJzaXN0ZW5jZS5NYW55VG9PbmU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuT25l
VG9NYW55OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOwotaW1wb3J0IGphdmF4LnBl
cnNpc3RlbmNlLlRlbXBvcmFsOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRlbXBvcmFsVHlw
ZTsKLQotLyoqCi0gKiBNcGVpbHVuZyBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVudGl0
eQotQFRhYmxlKG5hbWU9M0QiTVBFSUxVTkciCi0gICAgLHNjaGVtYT0zRCJTRUREQiIKLSkKLXB1
YmxpYyBjbGFzcyBNcGVpbHVuZyAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7Ci0K
LQotICAgICBwcml2YXRlIGxvbmcgbXBlaWx1bmdpZDsKLSAgICAgcHJpdmF0ZSBTdGF0aW9uIHN0
YXRpb247Ci0gICAgIHByaXZhdGUgRGF0ZSBkYXR1bTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IGttOwotICAgICBwcml2YXRlIFN0cmluZyBiZW1lcmt1bmc7Ci0gICAgIHByaXZhdGUgRGF0ZSBs
YXN0dXBkYXRlZDsKLSAgICAgcHJpdmF0ZSBMb25nIG9sZGFwZWlsaWQ7Ci0gICAgIHByaXZhdGUg
U2V0PE1wZWlscHVua3Q+IG1wZWlscHVua3RzID0zRCBuZXcgSGFzaFNldDxNcGVpbHB1bmt0Pigw
KTsKLQotICAgIHB1YmxpYyBNcGVpbHVuZygpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgTXBlaWx1
bmcobG9uZyBtcGVpbHVuZ2lkLCBTdGF0aW9uIHN0YXRpb24sIERhdGUgZGF0dW0sIEJpZ0RlY2lt
PQphbCBrbSwgRGF0ZSBsYXN0dXBkYXRlZCkgewotICAgICAgICB0aGlzLm1wZWlsdW5naWQgPTNE
IG1wZWlsdW5naWQ7Ci0gICAgICAgIHRoaXMuc3RhdGlvbiA9M0Qgc3RhdGlvbjsKLSAgICAgICAg
dGhpcy5kYXR1bSA9M0QgZGF0dW07Ci0gICAgICAgIHRoaXMua20gPTNEIGttOwotICAgICAgICB0
aGlzLmxhc3R1cGRhdGVkID0zRCBsYXN0dXBkYXRlZDsKLSAgICB9Ci0gICAgcHVibGljIE1wZWls
dW5nKGxvbmcgbXBlaWx1bmdpZCwgU3RhdGlvbiBzdGF0aW9uLCBEYXRlIGRhdHVtLCBCaWdEZWNp
bT0KYWwga20sIFN0cmluZyBiZW1lcmt1bmcsIERhdGUgbGFzdHVwZGF0ZWQsIExvbmcgb2xkYXBl
aWxpZCwgU2V0PE1wZWlscHVua3Q+PQogbXBlaWxwdW5rdHMpIHsKLSAgICAgICB0aGlzLm1wZWls
dW5naWQgPTNEIG1wZWlsdW5naWQ7Ci0gICAgICAgdGhpcy5zdGF0aW9uID0zRCBzdGF0aW9uOwot
ICAgICAgIHRoaXMuZGF0dW0gPTNEIGRhdHVtOwotICAgICAgIHRoaXMua20gPTNEIGttOwotICAg
ICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7Ci0gICAgICAgdGhpcy5sYXN0dXBkYXRl
ZCA9M0QgbGFzdHVwZGF0ZWQ7Ci0gICAgICAgdGhpcy5vbGRhcGVpbGlkID0zRCBvbGRhcGVpbGlk
OwotICAgICAgIHRoaXMubXBlaWxwdW5rdHMgPTNEIG1wZWlscHVua3RzOwotICAgIH0KLQotICAg
ICBASWQKLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1QRUlMVU5HSUQiLCB1bmlxdWU9M0R0cnVl
LCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpbz0Kbj0zRDExLCBzY2FsZT0zRDApCi0gICAgcHVi
bGljIGxvbmcgZ2V0TXBlaWx1bmdpZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubXBlaWx1bmdp
ZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNcGVpbHVuZ2lkKGxvbmcgbXBlaWx1bmdp
ZCkgewotICAgICAgICB0aGlzLm1wZWlsdW5naWQgPTNEIG1wZWlsdW5naWQ7Ci0gICAgfQotCi1A
TWFueVRvT25lKGZldGNoPTNERmV0Y2hUeXBlLkxBWlkpCi0gICAgQEpvaW5Db2x1bW4obmFtZT0z
RCJTVEFUSU9OSUQiLCBudWxsYWJsZT0zRGZhbHNlKQotICAgIHB1YmxpYyBTdGF0aW9uIGdldFN0
YXRpb24oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnN0YXRpb247Ci0gICAgfQotCi0gICAgcHVi
bGljIHZvaWQgc2V0U3RhdGlvbihTdGF0aW9uIHN0YXRpb24pIHsKLSAgICAgICAgdGhpcy5zdGF0
aW9uID0zRCBzdGF0aW9uOwotICAgIH0KLQotICAgIEBUZW1wb3JhbChUZW1wb3JhbFR5cGUuREFU
RSkKLSAgICBAQ29sdW1uKG5hbWU9M0QiREFUVU0iLCBudWxsYWJsZT0zRGZhbHNlLCBsZW5ndGg9
M0Q3KQotICAgIHB1YmxpYyBEYXRlIGdldERhdHVtKCkgewotICAgICAgICByZXR1cm4gdGhpcy5k
YXR1bTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREYXR1bShEYXRlIGRhdHVtKSB7Ci0g
ICAgICAgIHRoaXMuZGF0dW0gPTNEIGRhdHVtOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIktNIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldEttKCkgewotICAgICAgICByZXR1cm4gdGhpcy5rbTsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRLbShCaWdEZWNpbWFsIGttKSB7Ci0gICAgICAgIHRo
aXMua20gPTNEIGttOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkJFTUVSS1VORyIs
IGxlbmd0aD0zRDI0MCkKLSAgICBwdWJsaWMgU3RyaW5nIGdldEJlbWVya3VuZygpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuYmVtZXJrdW5nOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEJl
bWVya3VuZyhTdHJpbmcgYmVtZXJrdW5nKSB7Ci0gICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBi
ZW1lcmt1bmc7Ci0gICAgfQotCi0gICAgQFRlbXBvcmFsKFRlbXBvcmFsVHlwZS5EQVRFKQotICAg
IEBDb2x1bW4obmFtZT0zRCJMQVNUVVBEQVRFRCIsIG51bGxhYmxlPTNEZmFsc2UsIGxlbmd0aD0z
RDcpCi0gICAgcHVibGljIERhdGUgZ2V0TGFzdHVwZGF0ZWQoKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLmxhc3R1cGRhdGVkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldExhc3R1cGRhdGVk
KERhdGUgbGFzdHVwZGF0ZWQpIHsKLSAgICAgICAgdGhpcy5sYXN0dXBkYXRlZCA9M0QgbGFzdHVw
ZGF0ZWQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiT0xEQVBFSUxJRCIsIHByZWNp
c2lvbj0zRDExLCBzY2FsZT0zRDApCi0gICAgcHVibGljIExvbmcgZ2V0T2xkYXBlaWxpZCgpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMub2xkYXBlaWxpZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXRPbGRhcGVpbGlkKExvbmcgb2xkYXBlaWxpZCkgewotICAgICAgICB0aGlzLm9sZGFwZWls
aWQgPTNEIG9sZGFwZWlsaWQ7Ci0gICAgfQotCi1AT25lVG9NYW55KGZldGNoPTNERmV0Y2hUeXBl
LkxBWlksIG1hcHBlZEJ5PTNEIm1wZWlsdW5nIikKLSAgICBwdWJsaWMgU2V0PE1wZWlscHVua3Q+
IGdldE1wZWlscHVua3RzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5tcGVpbHB1bmt0czsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNcGVpbHB1bmt0cyhTZXQ8TXBlaWxwdW5rdD4gbXBl
aWxwdW5rdHMpIHsKLSAgICAgICAgdGhpcy5tcGVpbHB1bmt0cyA9M0QgbXBlaWxwdW5rdHM7Ci0g
ICAgfQotfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMv
bWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2U9CmRkYi9tb2RlbC9Qcm9iZWJpbGQuamF2YQotLS0g
YS9iYWNrZW5kL3NyYy9tYWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZWRkYi9tb2RlbC9Qcm9iZWJp
bGQuamF2YQlNb24gQXA9CnIgMjkgMTE6MTQ6MjUgMjAxMyArMDIwMAorKysgL2Rldi9udWxsCVRo
dSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwyMDIgKzAsMCBAQAotLyogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMz
PUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21i
SAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAo
Pj0zRHYzKT0yMAotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hl
Y2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJp
dmVyIGZvciBkZXRhaWxzLj0yMAotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2Vk
ZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUg
VG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWlt
cG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2Uu
RmV0Y2hUeXBlOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOwotaW1wb3J0IGphdmF4LnBl
cnNpc3RlbmNlLkpvaW5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTWFueVRvT25l
OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOwotCi0vKioKLSAqIFByb2JlYmlsZCBn
ZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVudGl0eQotQFRhYmxlKG5hbWU9M0QiUFJPQkVC
SUxEIgotICAgICxzY2hlbWE9M0QiU0VEREIiCi0pCi1wdWJsaWMgY2xhc3MgUHJvYmViaWxkICBp
bXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAgIHByaXZhdGUgbG9uZyBw
cm9iZWJpbGRpZDsKLSAgICAgcHJpdmF0ZSBaenRoZW1hIHp6dGhlbWE7Ci0gICAgIHByaXZhdGUg
U29obHByb2JlIHNvaGxwcm9iZTsKLSAgICAgcHJpdmF0ZSBpbnQgbGZkbnI7Ci0gICAgIHByaXZh
dGUgYm9vbGVhbiBpc3RkaWdpdGFsOwotICAgICBwcml2YXRlIFN0cmluZyBwZmFkOwotICAgICBw
cml2YXRlIFN0cmluZyBzdGFuZG9ydDsKLSAgICAgcHJpdmF0ZSBTdHJpbmcgbWVkaXVtOwotICAg
ICBwcml2YXRlIFN0cmluZyBtZWRwZmFkOwotICAgICBwcml2YXRlIFN0cmluZyBiZW1lcmt1bmc7
Ci0gICAgIHByaXZhdGUgU3RyaW5nIHR5cGtsZWluOwotICAgICBwcml2YXRlIFN0cmluZyB0eXBt
aXR0ZWw7Ci0gICAgIHByaXZhdGUgU3RyaW5nIHR5cGdyb3NzOwotCi0gICAgcHVibGljIFByb2Jl
YmlsZCgpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgUHJvYmViaWxkKGxvbmcgcHJvYmViaWxkaWQs
IFp6dGhlbWEgenp0aGVtYSwgU29obHByb2JlIHNvaGxwcm9iPQplLCBpbnQgbGZkbnIsIGJvb2xl
YW4gaXN0ZGlnaXRhbCkgewotICAgICAgICB0aGlzLnByb2JlYmlsZGlkID0zRCBwcm9iZWJpbGRp
ZDsKLSAgICAgICAgdGhpcy56enRoZW1hID0zRCB6enRoZW1hOwotICAgICAgICB0aGlzLnNvaGxw
cm9iZSA9M0Qgc29obHByb2JlOwotICAgICAgICB0aGlzLmxmZG5yID0zRCBsZmRucjsKLSAgICAg
ICAgdGhpcy5pc3RkaWdpdGFsID0zRCBpc3RkaWdpdGFsOwotICAgIH0KLSAgICBwdWJsaWMgUHJv
YmViaWxkKGxvbmcgcHJvYmViaWxkaWQsIFp6dGhlbWEgenp0aGVtYSwgU29obHByb2JlIHNvaGxw
cm9iPQplLCBpbnQgbGZkbnIsIGJvb2xlYW4gaXN0ZGlnaXRhbCwgU3RyaW5nIHBmYWQsIFN0cmlu
ZyBzdGFuZG9ydCwgU3RyaW5nIG1lZGk9CnVtLCBTdHJpbmcgbWVkcGZhZCwgU3RyaW5nIGJlbWVy
a3VuZywgU3RyaW5nIHR5cGtsZWluLCBTdHJpbmcgdHlwbWl0dGVsLCBTdD0KcmluZyB0eXBncm9z
cykgewotICAgICAgIHRoaXMucHJvYmViaWxkaWQgPTNEIHByb2JlYmlsZGlkOwotICAgICAgIHRo
aXMuenp0aGVtYSA9M0Qgenp0aGVtYTsKLSAgICAgICB0aGlzLnNvaGxwcm9iZSA9M0Qgc29obHBy
b2JlOwotICAgICAgIHRoaXMubGZkbnIgPTNEIGxmZG5yOwotICAgICAgIHRoaXMuaXN0ZGlnaXRh
bCA9M0QgaXN0ZGlnaXRhbDsKLSAgICAgICB0aGlzLnBmYWQgPTNEIHBmYWQ7Ci0gICAgICAgdGhp
cy5zdGFuZG9ydCA9M0Qgc3RhbmRvcnQ7Ci0gICAgICAgdGhpcy5tZWRpdW0gPTNEIG1lZGl1bTsK
LSAgICAgICB0aGlzLm1lZHBmYWQgPTNEIG1lZHBmYWQ7Ci0gICAgICAgdGhpcy5iZW1lcmt1bmcg
PTNEIGJlbWVya3VuZzsKLSAgICAgICB0aGlzLnR5cGtsZWluID0zRCB0eXBrbGVpbjsKLSAgICAg
ICB0aGlzLnR5cG1pdHRlbCA9M0QgdHlwbWl0dGVsOwotICAgICAgIHRoaXMudHlwZ3Jvc3MgPTNE
IHR5cGdyb3NzOwotICAgIH0KLQotICAgICBASWQKLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlBS
T0JFQklMRElEIiwgdW5pcXVlPTNEdHJ1ZSwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaT0Kb249
M0QxMSwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBsb25nIGdldFByb2JlYmlsZGlkKCkgewotICAg
ICAgICByZXR1cm4gdGhpcy5wcm9iZWJpbGRpZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXRQcm9iZWJpbGRpZChsb25nIHByb2JlYmlsZGlkKSB7Ci0gICAgICAgIHRoaXMucHJvYmViaWxk
aWQgPTNEIHByb2JlYmlsZGlkOwotICAgIH0KLQotQE1hbnlUb09uZShmZXRjaD0zREZldGNoVHlw
ZS5MQVpZKQotICAgIEBKb2luQ29sdW1uKG5hbWU9M0QiVEhFTUFJRCIsIG51bGxhYmxlPTNEZmFs
c2UpCi0gICAgcHVibGljIFp6dGhlbWEgZ2V0Wnp0aGVtYSgpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuenp0aGVtYTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRaenRoZW1hKFp6dGhlbWEg
enp0aGVtYSkgewotICAgICAgICB0aGlzLnp6dGhlbWEgPTNEIHp6dGhlbWE7Ci0gICAgfQotCi1A
TWFueVRvT25lKGZldGNoPTNERmV0Y2hUeXBlLkxBWlkpCi0gICAgQEpvaW5Db2x1bW4obmFtZT0z
RCJTT0hMUFJPQkVJRCIsIG51bGxhYmxlPTNEZmFsc2UpCi0gICAgcHVibGljIFNvaGxwcm9iZSBn
ZXRTb2hscHJvYmUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnNvaGxwcm9iZTsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRTb2hscHJvYmUoU29obHByb2JlIHNvaGxwcm9iZSkgewotICAg
ICAgICB0aGlzLnNvaGxwcm9iZSA9M0Qgc29obHByb2JlOwotICAgIH0KLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIkxGRE5SIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNENSwgc2NhbGU9
M0QwKQotICAgIHB1YmxpYyBpbnQgZ2V0TGZkbnIoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmxm
ZG5yOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldExmZG5yKGludCBsZmRucikgewotICAg
ICAgICB0aGlzLmxmZG5yID0zRCBsZmRucjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJJU1RESUdJVEFMIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMSwgc2NhbGU9M0Q9
CjApCi0gICAgcHVibGljIGJvb2xlYW4gaXNJc3RkaWdpdGFsKCkgewotICAgICAgICByZXR1cm4g
dGhpcy5pc3RkaWdpdGFsOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldElzdGRpZ2l0YWwo
Ym9vbGVhbiBpc3RkaWdpdGFsKSB7Ci0gICAgICAgIHRoaXMuaXN0ZGlnaXRhbCA9M0QgaXN0ZGln
aXRhbDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJQRkFEIiwgbGVuZ3RoPTNENTEy
KQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0UGZhZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucGZh
ZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRQZmFkKFN0cmluZyBwZmFkKSB7Ci0gICAg
ICAgIHRoaXMucGZhZCA9M0QgcGZhZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJT
VEFORE9SVCIsIGxlbmd0aD0zRDUwKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0U3RhbmRvcnQoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLnN0YW5kb3J0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lk
IHNldFN0YW5kb3J0KFN0cmluZyBzdGFuZG9ydCkgewotICAgICAgICB0aGlzLnN0YW5kb3J0ID0z
RCBzdGFuZG9ydDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNRURJVU0iLCBsZW5n
dGg9M0Q1MCkKLSAgICBwdWJsaWMgU3RyaW5nIGdldE1lZGl1bSgpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMubWVkaXVtOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1lZGl1bShTdHJpbmcg
bWVkaXVtKSB7Ci0gICAgICAgIHRoaXMubWVkaXVtID0zRCBtZWRpdW07Ci0gICAgfQotCi0KLSAg
ICBAQ29sdW1uKG5hbWU9M0QiTUVEUEZBRCIsIGxlbmd0aD0zRDUwKQotICAgIHB1YmxpYyBTdHJp
bmcgZ2V0TWVkcGZhZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWVkcGZhZDsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRNZWRwZmFkKFN0cmluZyBtZWRwZmFkKSB7Ci0gICAgICAgIHRo
aXMubWVkcGZhZCA9M0QgbWVkcGZhZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJC
RU1FUktVTkciLCBsZW5ndGg9M0QyNDApCi0gICAgcHVibGljIFN0cmluZyBnZXRCZW1lcmt1bmco
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJlbWVya3VuZzsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRCZW1lcmt1bmcoU3RyaW5nIGJlbWVya3VuZykgewotICAgICAgICB0aGlzLmJlbWVy
a3VuZyA9M0QgYmVtZXJrdW5nOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlRZUEtM
RUlOIiwgbGVuZ3RoPTNEOCkKLSAgICBwdWJsaWMgU3RyaW5nIGdldFR5cGtsZWluKCkgewotICAg
ICAgICByZXR1cm4gdGhpcy50eXBrbGVpbjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRU
eXBrbGVpbihTdHJpbmcgdHlwa2xlaW4pIHsKLSAgICAgICAgdGhpcy50eXBrbGVpbiA9M0QgdHlw
a2xlaW47Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVFlQTUlUVEVMIiwgbGVuZ3Ro
PTNEOCkKLSAgICBwdWJsaWMgU3RyaW5nIGdldFR5cG1pdHRlbCgpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMudHlwbWl0dGVsOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFR5cG1pdHRlbChT
dHJpbmcgdHlwbWl0dGVsKSB7Ci0gICAgICAgIHRoaXMudHlwbWl0dGVsID0zRCB0eXBtaXR0ZWw7
Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVFlQR1JPU1MiLCBsZW5ndGg9M0Q4KQot
ICAgIHB1YmxpYyBTdHJpbmcgZ2V0VHlwZ3Jvc3MoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnR5
cGdyb3NzOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFR5cGdyb3NzKFN0cmluZyB0eXBn
cm9zcykgewotICAgICAgICB0aGlzLnR5cGdyb3NzID0zRCB0eXBncm9zczsKLSAgICB9Ci19CmRp
ZmYgLXIgYmM0ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9tYWluL2phdmEv
ZGUvaW50ZXZhdGlvbi9zZT0KZGRiL21vZGVsL1NpZWJhbmFseXNlLmphdmEKLS0tIGEvYmFja2Vu
ZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2VkZGIvbW9kZWwvU2llYmFuYWx5c2UuamF2
YQlNb24gPQpBcHIgMjkgMTE6MTQ6MjUgMjAxMyArMDIwMAorKysgL2Rldi9udWxsCVRodSBKYW4g
MDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwzNjkgKzAsMCBAQAotLyogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nl
cms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoK
LSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYz
KT0yMAotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0
IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZv
ciBkZXRhaWxzLj0yMAotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9k
ZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMg
My40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmEubWF0aC5CaWdEZWNpbWFsOwotaW1wb3J0IGphdmF4
LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7Ci1p
bXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRmV0Y2hUeXBlOwotaW1wb3J0IGphdmF4LnBlcnNpc3Rl
bmNlLklkOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkpvaW5Db2x1bW47Ci1pbXBvcnQgamF2
YXgucGVyc2lzdGVuY2UuTWFueVRvT25lOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk9uZVRv
T25lOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOwotCi0vKioKLSAqIFNpZWJhbmFs
eXNlIGdlbmVyYXRlZCBieSBoYm0yamF2YQotICovCi1ARW50aXR5Ci1AVGFibGUobmFtZT0zRCJT
SUVCQU5BTFlTRSIKLSAgICAsc2NoZW1hPTNEIlNFRERCIgotKQotcHVibGljIGNsYXNzIFNpZWJh
bmFseXNlICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAgIHByaXZh
dGUgbG9uZyBzaWViYW5hbHlzZWlkOwotICAgICBwcml2YXRlIFNvaGxwcm9iZSBzb2hscHJvYmU7
Ci0gICAgIHByaXZhdGUgYm9vbGVhbiBpc3RkaWdpdGFsOwotICAgICBwcml2YXRlIFN0cmluZyBz
dGFuZG9ydDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGRtOwotICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgc287Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzazsKLSAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIHU7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkOTA7Ci0gICAgIHByaXZhdGUgQmln
RGVjaW1hbCBkODQ7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkODA7Ci0gICAgIHByaXZhdGUg
QmlnRGVjaW1hbCBkNzU7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkNzA7Ci0gICAgIHByaXZh
dGUgQmlnRGVjaW1hbCBkNjA7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkNTA7Ci0gICAgIHBy
aXZhdGUgQmlnRGVjaW1hbCBkNDA7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkMzA7Ci0gICAg
IHByaXZhdGUgQmlnRGVjaW1hbCBkMjU7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkMjA7Ci0g
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkMTY7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkMTA7
Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkbWluOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
ZHVyY2hkbWluOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZG1heDsKLSAgICAgcHJpdmF0ZSBC
aWdEZWNpbWFsIGR1cmNoZG1heDsKLSAgICAgcHJpdmF0ZSBTdHJpbmcgYmVtZXJrdW5nOwotICAg
ICBwcml2YXRlIFNzaWVidW5nIHNzaWVidW5nOwotCi0gICAgcHVibGljIFNpZWJhbmFseXNlKCkg
ewotICAgIH0KLQotICAgIHB1YmxpYyBTaWViYW5hbHlzZShsb25nIHNpZWJhbmFseXNlaWQsIFNv
aGxwcm9iZSBzb2hscHJvYmUsIGJvb2xlYW4gaXM9CnRkaWdpdGFsKSB7Ci0gICAgICAgIHRoaXMu
c2llYmFuYWx5c2VpZCA9M0Qgc2llYmFuYWx5c2VpZDsKLSAgICAgICAgdGhpcy5zb2hscHJvYmUg
PTNEIHNvaGxwcm9iZTsKLSAgICAgICAgdGhpcy5pc3RkaWdpdGFsID0zRCBpc3RkaWdpdGFsOwot
ICAgIH0KLSAgICBwdWJsaWMgU2llYmFuYWx5c2UobG9uZyBzaWViYW5hbHlzZWlkLCBTb2hscHJv
YmUgc29obHByb2JlLCBib29sZWFuIGlzPQp0ZGlnaXRhbCwgU3RyaW5nIHN0YW5kb3J0LCBCaWdE
ZWNpbWFsIGRtLCBCaWdEZWNpbWFsIHNvLCBCaWdEZWNpbWFsIHNrLCBCaWc9CkRlY2ltYWwgdSwg
QmlnRGVjaW1hbCBkOTAsIEJpZ0RlY2ltYWwgZDg0LCBCaWdEZWNpbWFsIGQ4MCwgQmlnRGVjaW1h
bCBkNzUsID0KQmlnRGVjaW1hbCBkNzAsIEJpZ0RlY2ltYWwgZDYwLCBCaWdEZWNpbWFsIGQ1MCwg
QmlnRGVjaW1hbCBkNDAsIEJpZ0RlY2ltYWwgPQpkMzAsIEJpZ0RlY2ltYWwgZDI1LCBCaWdEZWNp
bWFsIGQyMCwgQmlnRGVjaW1hbCBkMTYsIEJpZ0RlY2ltYWwgZDEwLCBCaWdEZWM9CmltYWwgZG1p
biwgQmlnRGVjaW1hbCBkdXJjaGRtaW4sIEJpZ0RlY2ltYWwgZG1heCwgQmlnRGVjaW1hbCBkdXJj
aGRtYXgsIFN0cj0KaW5nIGJlbWVya3VuZywgU3NpZWJ1bmcgc3NpZWJ1bmcpIHsKLSAgICAgICB0
aGlzLnNpZWJhbmFseXNlaWQgPTNEIHNpZWJhbmFseXNlaWQ7Ci0gICAgICAgdGhpcy5zb2hscHJv
YmUgPTNEIHNvaGxwcm9iZTsKLSAgICAgICB0aGlzLmlzdGRpZ2l0YWwgPTNEIGlzdGRpZ2l0YWw7
Ci0gICAgICAgdGhpcy5zdGFuZG9ydCA9M0Qgc3RhbmRvcnQ7Ci0gICAgICAgdGhpcy5kbSA9M0Qg
ZG07Ci0gICAgICAgdGhpcy5zbyA9M0Qgc287Ci0gICAgICAgdGhpcy5zayA9M0Qgc2s7Ci0gICAg
ICAgdGhpcy51ID0zRCB1OwotICAgICAgIHRoaXMuZDkwID0zRCBkOTA7Ci0gICAgICAgdGhpcy5k
ODQgPTNEIGQ4NDsKLSAgICAgICB0aGlzLmQ4MCA9M0QgZDgwOwotICAgICAgIHRoaXMuZDc1ID0z
RCBkNzU7Ci0gICAgICAgdGhpcy5kNzAgPTNEIGQ3MDsKLSAgICAgICB0aGlzLmQ2MCA9M0QgZDYw
OwotICAgICAgIHRoaXMuZDUwID0zRCBkNTA7Ci0gICAgICAgdGhpcy5kNDAgPTNEIGQ0MDsKLSAg
ICAgICB0aGlzLmQzMCA9M0QgZDMwOwotICAgICAgIHRoaXMuZDI1ID0zRCBkMjU7Ci0gICAgICAg
dGhpcy5kMjAgPTNEIGQyMDsKLSAgICAgICB0aGlzLmQxNiA9M0QgZDE2OwotICAgICAgIHRoaXMu
ZDEwID0zRCBkMTA7Ci0gICAgICAgdGhpcy5kbWluID0zRCBkbWluOwotICAgICAgIHRoaXMuZHVy
Y2hkbWluID0zRCBkdXJjaGRtaW47Ci0gICAgICAgdGhpcy5kbWF4ID0zRCBkbWF4OwotICAgICAg
IHRoaXMuZHVyY2hkbWF4ID0zRCBkdXJjaGRtYXg7Ci0gICAgICAgdGhpcy5iZW1lcmt1bmcgPTNE
IGJlbWVya3VuZzsKLSAgICAgICB0aGlzLnNzaWVidW5nID0zRCBzc2llYnVuZzsKLSAgICB9Ci0K
LSAgICAgQElkCi0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJTSUVCQU5BTFlTRUlEIiwgdW5pcXVl
PTNEdHJ1ZSwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2k9CnNpb249M0QxMSwgc2NhbGU9M0QwKQot
ICAgIHB1YmxpYyBsb25nIGdldFNpZWJhbmFseXNlaWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LnNpZWJhbmFseXNlaWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U2llYmFuYWx5c2Vp
ZChsb25nIHNpZWJhbmFseXNlaWQpIHsKLSAgICAgICAgdGhpcy5zaWViYW5hbHlzZWlkID0zRCBz
aWViYW5hbHlzZWlkOwotICAgIH0KLQotQE1hbnlUb09uZShmZXRjaD0zREZldGNoVHlwZS5MQVpZ
KQotICAgIEBKb2luQ29sdW1uKG5hbWU9M0QiU09ITFBST0JFSUQiLCBudWxsYWJsZT0zRGZhbHNl
KQotICAgIHB1YmxpYyBTb2hscHJvYmUgZ2V0U29obHByb2JlKCkgewotICAgICAgICByZXR1cm4g
dGhpcy5zb2hscHJvYmU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U29obHByb2JlKFNv
aGxwcm9iZSBzb2hscHJvYmUpIHsKLSAgICAgICAgdGhpcy5zb2hscHJvYmUgPTNEIHNvaGxwcm9i
ZTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJJU1RESUdJVEFMIiwgbnVsbGFibGU9
M0RmYWxzZSwgcHJlY2lzaW9uPTNEMSwgc2NhbGU9M0Q9CjApCi0gICAgcHVibGljIGJvb2xlYW4g
aXNJc3RkaWdpdGFsKCkgewotICAgICAgICByZXR1cm4gdGhpcy5pc3RkaWdpdGFsOwotICAgIH0K
LQotICAgIHB1YmxpYyB2b2lkIHNldElzdGRpZ2l0YWwoYm9vbGVhbiBpc3RkaWdpdGFsKSB7Ci0g
ICAgICAgIHRoaXMuaXN0ZGlnaXRhbCA9M0QgaXN0ZGlnaXRhbDsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJTVEFORE9SVCIsIGxlbmd0aD0zRDUwKQotICAgIHB1YmxpYyBTdHJpbmcg
Z2V0U3RhbmRvcnQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnN0YW5kb3J0OwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldFN0YW5kb3J0KFN0cmluZyBzdGFuZG9ydCkgewotICAgICAgICB0
aGlzLnN0YW5kb3J0ID0zRCBzdGFuZG9ydDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJETSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXREbSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZG07Ci0gICAgfQotCi0gICAgcHVibGljIHZv
aWQgc2V0RG0oQmlnRGVjaW1hbCBkbSkgewotICAgICAgICB0aGlzLmRtID0zRCBkbTsKLSAgICB9
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJTTyIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykK
LSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRTbygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc287
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U28oQmlnRGVjaW1hbCBzbykgewotICAgICAg
ICB0aGlzLnNvID0zRCBzbzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJTSyIsIHBy
ZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRTaygpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuc2s7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U2so
QmlnRGVjaW1hbCBzaykgewotICAgICAgICB0aGlzLnNrID0zRCBzazsKLSAgICB9Ci0KLQotICAg
IEBDb2x1bW4obmFtZT0zRCJVIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldFUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnU7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0VShCaWdEZWNpbWFsIHUpIHsKLSAgICAgICAgdGhpcy51ID0zRCB1
OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQ5MCIsIHByZWNpc2lvbj0zRDcsIHNj
YWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREOTAoKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLmQ5MDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREOTAoQmlnRGVjaW1hbCBk
OTApIHsKLSAgICAgICAgdGhpcy5kOTAgPTNEIGQ5MDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4o
bmFtZT0zRCJEODQiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0RDg0KCkgewotICAgICAgICByZXR1cm4gdGhpcy5kODQ7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0RDg0KEJpZ0RlY2ltYWwgZDg0KSB7Ci0gICAgICAgIHRoaXMuZDg0ID0z
RCBkODQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDgwIiwgcHJlY2lzaW9uPTNE
Nywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQ4MCgpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuZDgwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQ4MChCaWdEZWNp
bWFsIGQ4MCkgewotICAgICAgICB0aGlzLmQ4MCA9M0QgZDgwOwotICAgIH0KLQotCi0gICAgQENv
bHVtbihuYW1lPTNEIkQ3NSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMg
QmlnRGVjaW1hbCBnZXRENzUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQ3NTsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRENzUoQmlnRGVjaW1hbCBkNzUpIHsKLSAgICAgICAgdGhpcy5k
NzUgPTNEIGQ3NTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJENzAiLCBwcmVjaXNp
b249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDcwKCkgewotICAg
ICAgICByZXR1cm4gdGhpcy5kNzA7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RDcwKEJp
Z0RlY2ltYWwgZDcwKSB7Ci0gICAgICAgIHRoaXMuZDcwID0zRCBkNzA7Ci0gICAgfQotCi0KLSAg
ICBAQ29sdW1uKG5hbWU9M0QiRDYwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldEQ2MCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDYwOwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQ2MChCaWdEZWNpbWFsIGQ2MCkgewotICAgICAgICB0
aGlzLmQ2MCA9M0QgZDYwOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQ1MCIsIHBy
ZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRENTAoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLmQ1MDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRE
NTAoQmlnRGVjaW1hbCBkNTApIHsKLSAgICAgICAgdGhpcy5kNTAgPTNEIGQ1MDsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJENDAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0g
ICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDQwKCkgewotICAgICAgICByZXR1cm4gdGhpcy5kNDA7
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RDQwKEJpZ0RlY2ltYWwgZDQwKSB7Ci0gICAg
ICAgIHRoaXMuZDQwID0zRCBkNDA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDMw
IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQz
MCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZDMwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lk
IHNldEQzMChCaWdEZWNpbWFsIGQzMCkgewotICAgICAgICB0aGlzLmQzMCA9M0QgZDMwOwotICAg
IH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkQyNSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNE
NCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREMjUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LmQyNTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREMjUoQmlnRGVjaW1hbCBkMjUpIHsK
LSAgICAgICAgdGhpcy5kMjUgPTNEIGQyNTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJEMjAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0RDIwKCkgewotICAgICAgICByZXR1cm4gdGhpcy5kMjA7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0RDIwKEJpZ0RlY2ltYWwgZDIwKSB7Ci0gICAgICAgIHRoaXMuZDIwID0zRCBkMjA7
Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRDE2IiwgcHJlY2lzaW9uPTNENywgc2Nh
bGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQxNigpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuZDE2OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEQxNihCaWdEZWNpbWFsIGQx
NikgewotICAgICAgICB0aGlzLmQxNiA9M0QgZDE2OwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIkQxMCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVj
aW1hbCBnZXREMTAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmQxMDsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXREMTAoQmlnRGVjaW1hbCBkMTApIHsKLSAgICAgICAgdGhpcy5kMTAgPTNE
IGQxMDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJETUlOIiwgcHJlY2lzaW9uPTNE
Nywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldERtaW4oKSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLmRtaW47Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RG1pbihCaWdE
ZWNpbWFsIGRtaW4pIHsKLSAgICAgICAgdGhpcy5kbWluID0zRCBkbWluOwotICAgIH0KLQotCi0g
ICAgQENvbHVtbihuYW1lPTNEIkRVUkNIRE1JTiIsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNEMykK
LSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREdXJjaGRtaW4oKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLmR1cmNoZG1pbjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREdXJjaGRtaW4oQmln
RGVjaW1hbCBkdXJjaGRtaW4pIHsKLSAgICAgICAgdGhpcy5kdXJjaGRtaW4gPTNEIGR1cmNoZG1p
bjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJETUFYIiwgcHJlY2lzaW9uPTNENywg
c2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldERtYXgoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLmRtYXg7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RG1heChCaWdEZWNp
bWFsIGRtYXgpIHsKLSAgICAgICAgdGhpcy5kbWF4ID0zRCBkbWF4OwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIkRVUkNIRE1BWCIsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNEMykKLSAg
ICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREdXJjaGRtYXgoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LmR1cmNoZG1heDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXREdXJjaGRtYXgoQmlnRGVj
aW1hbCBkdXJjaGRtYXgpIHsKLSAgICAgICAgdGhpcy5kdXJjaGRtYXggPTNEIGR1cmNoZG1heDsK
LSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJCRU1FUktVTkciLCBsZW5ndGg9M0QyNDAp
Ci0gICAgcHVibGljIFN0cmluZyBnZXRCZW1lcmt1bmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LmJlbWVya3VuZzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRCZW1lcmt1bmcoU3RyaW5n
IGJlbWVya3VuZykgewotICAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwotICAg
IH0KLQotQE9uZVRvT25lKGZldGNoPTNERmV0Y2hUeXBlLkxBWlksIG1hcHBlZEJ5PTNEInNpZWJh
bmFseXNlIikKLSAgICBwdWJsaWMgU3NpZWJ1bmcgZ2V0U3NpZWJ1bmcoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLnNzaWVidW5nOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNzaWVidW5n
KFNzaWVidW5nIHNzaWVidW5nKSB7Ci0gICAgICAgIHRoaXMuc3NpZWJ1bmcgPTNEIHNzaWVidW5n
OwotICAgIH0KLX0KZGlmZiAtciBiYzRlMWJmMjYyMjcgLXIgMWU2OGVjYTI2YjhhIGJhY2tlbmQv
c3JjL21haW4vamF2YS9kZS9pbnRldmF0aW9uL3NlPQpkZGIvbW9kZWwvU2xvdGxpbmtzLmphdmEK
LS0tIGEvYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2VkZGIvbW9kZWwvU2xv
dGxpbmtzLmphdmEJTW9uIEFwPQpyIDI5IDExOjE0OjI1IDIwMTMgKzAyMDAKKysrIC9kZXYvbnVs
bAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsNjEgKzAsMCBAQAotLyogQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3
PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24g
R21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQ
TCAoPj0zRHYzKT0yMAotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEg
Q2hlY2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRz
IFJpdmVyIGZvciBkZXRhaWxzLj0yMAotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMu
c2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5h
dGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0
ZU92ZXJyaWRlOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0ZU92ZXJyaWRlczsK
LWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVu
Y2UuRW1iZWRkZWRJZDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7Ci1pbXBvcnQg
amF2YXgucGVyc2lzdGVuY2UuVGFibGU7Ci0KLS8qKgotICogU2xvdGxpbmtzIGdlbmVyYXRlZCBi
eSBoYm0yamF2YQotICovCi1ARW50aXR5Ci1AVGFibGUobmFtZT0zRCJTTE9UTElOS1MiCi0gICAg
LHNjaGVtYT0zRCJTRUREQiIKLSkKLXB1YmxpYyBjbGFzcyBTbG90bGlua3MgIGltcGxlbWVudHMg
amF2YS5pby5TZXJpYWxpemFibGUgewotCi0KLSAgICAgcHJpdmF0ZSBTbG90bGlua3NJZCBpZDsK
LQotICAgIHB1YmxpYyBTbG90bGlua3MoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIFNsb3RsaW5r
cyhTbG90bGlua3NJZCBpZCkgewotICAgICAgIHRoaXMuaWQgPTNEIGlkOwotICAgIH0KLQotICAg
ICBARW1iZWRkZWRJZAotCi0gICAgQEF0dHJpYnV0ZU92ZXJyaWRlcyggewotICAgICAgICBAQXR0
cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJzbG90cmVjaHRlaWQiLCBjb2x1bW49M0RAQ29sdW1uKG5h
bWU9M0Q9CiJTTE9UUkVDSFRFSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxMSwg
c2NhbGU9M0QwKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtZXNzdW5n
aWQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUU9ClNTVU5HSUQiLCBudWxsYWJsZT0zRGZh
bHNlLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QwKSApLAotICAgICAgICBAQXR0cmlidXRlT3Zl
cnJpZGUobmFtZT0zRCJ1ZmVyYWJzdCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJVRkU9ClJB
QlNUIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKSApLAotICAg
ICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ0c2FuZCIsIGNvbHVtbj0zREBDb2x1bW4o
bmFtZT0zRCJUU0FORCI9CiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKSApLAotICAgICAgICBA
QXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ0c2Nod2ViIiwgY29sdW1uPTNEQENvbHVtbihuYW1l
PTNEIlRTQ0g9CldFQiIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0
dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZnYiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiRlYi
LCBwcmVjPQppc2lvbj0zRDYsIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJy
aWRlKG5hbWU9M0Qidm0iLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiVk0iLCBwcmVjPQppc2lv
bj0zRDYsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qi
dGllZmUiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiVElFRkUiPQosIHByZWNpc2lvbj0zRDgs
IHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QidnNvaGxl
IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlZTT0hMPQpFIiwgcHJlY2lzaW9uPTNENiwgc2Nh
bGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJiZW1lcmt1bmci
LCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiQkU9Ck1FUktVTkciLCBsZW5ndGg9M0QyNDApICks
Ci0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInVmZXJhYmxpbmtzIiwgY29sdW1u
PTNEQENvbHVtbihuYW1lPTNEIj0KVUZFUkFCTElOS1MiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0z
RDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImxpbmtzYWJzdCIsIGNv
bHVtbj0zREBDb2x1bW4obmFtZT0zRCJMST0KTktTQUJTVCIsIHByZWNpc2lvbj0zRDIyLCBzY2Fs
ZT0zRDApICkgfSApCi0gICAgcHVibGljIFNsb3RsaW5rc0lkIGdldElkKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5pZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRJZChTbG90bGlua3NJ
ZCBpZCkgewotICAgICAgICB0aGlzLmlkID0zRCBpZDsKLSAgICB9Ci19CmRpZmYgLXIgYmM0ZTFi
ZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9tYWluL2phdmEvZGUvaW50ZXZhdGlv
bi9zZT0KZGRiL21vZGVsL1Nsb3RsaW5rc0lkLmphdmEKLS0tIGEvYmFja2VuZC9zcmMvbWFpbi9q
YXZhL2RlL2ludGV2YXRpb24vc2VkZGIvbW9kZWwvU2xvdGxpbmtzSWQuamF2YQlNb24gPQpBcHIg
MjkgMTE6MTQ6MjUgMjAxMyArMDIwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMApAQCAtMSwyMTkgKzAsMCBAQAotLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEy
LCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAq
IFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoKLSAqIFRoaXMgZmls
ZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAotICogYW5k
IGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQotICogZG9j
dW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0y
MAotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7Ci0vLyBHZW5l
cmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0K
LQotaW1wb3J0IGphdmEubWF0aC5CaWdEZWNpbWFsOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNl
LkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbWJlZGRhYmxlOwotCi0vKioKLSAq
IFNsb3RsaW5rc0lkIGdlbmVyYXRlZCBieSBoYm0yamF2YQotICovCi1ARW1iZWRkYWJsZQotcHVi
bGljIGNsYXNzIFNsb3RsaW5rc0lkICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsK
LQotCi0gICAgIHByaXZhdGUgbG9uZyBzbG90cmVjaHRlaWQ7Ci0gICAgIHByaXZhdGUgbG9uZyBt
ZXNzdW5naWQ7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB1ZmVyYWJzdDsKLSAgICAgcHJpdmF0
ZSBCaWdEZWNpbWFsIHRzYW5kOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdHNjaHdlYjsKLSAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGZ2OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdm07Ci0g
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCB0aWVmZTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHZz
b2hsZTsKLSAgICAgcHJpdmF0ZSBTdHJpbmcgYmVtZXJrdW5nOwotICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgdWZlcmFibGlua3M7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBsaW5rc2Fic3Q7Ci0K
LSAgICBwdWJsaWMgU2xvdGxpbmtzSWQoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIFNsb3RsaW5r
c0lkKGxvbmcgc2xvdHJlY2h0ZWlkLCBsb25nIG1lc3N1bmdpZCwgQmlnRGVjaW1hbCB1ZmVyYT0K
YnN0KSB7Ci0gICAgICAgIHRoaXMuc2xvdHJlY2h0ZWlkID0zRCBzbG90cmVjaHRlaWQ7Ci0gICAg
ICAgIHRoaXMubWVzc3VuZ2lkID0zRCBtZXNzdW5naWQ7Ci0gICAgICAgIHRoaXMudWZlcmFic3Qg
PTNEIHVmZXJhYnN0OwotICAgIH0KLSAgICBwdWJsaWMgU2xvdGxpbmtzSWQobG9uZyBzbG90cmVj
aHRlaWQsIGxvbmcgbWVzc3VuZ2lkLCBCaWdEZWNpbWFsIHVmZXJhPQpic3QsIEJpZ0RlY2ltYWwg
dHNhbmQsIEJpZ0RlY2ltYWwgdHNjaHdlYiwgQmlnRGVjaW1hbCBmdiwgQmlnRGVjaW1hbCB2bSwg
Qmk9CmdEZWNpbWFsIHRpZWZlLCBCaWdEZWNpbWFsIHZzb2hsZSwgU3RyaW5nIGJlbWVya3VuZywg
QmlnRGVjaW1hbCB1ZmVyYWJsaW5rcz0KLCBCaWdEZWNpbWFsIGxpbmtzYWJzdCkgewotICAgICAg
IHRoaXMuc2xvdHJlY2h0ZWlkID0zRCBzbG90cmVjaHRlaWQ7Ci0gICAgICAgdGhpcy5tZXNzdW5n
aWQgPTNEIG1lc3N1bmdpZDsKLSAgICAgICB0aGlzLnVmZXJhYnN0ID0zRCB1ZmVyYWJzdDsKLSAg
ICAgICB0aGlzLnRzYW5kID0zRCB0c2FuZDsKLSAgICAgICB0aGlzLnRzY2h3ZWIgPTNEIHRzY2h3
ZWI7Ci0gICAgICAgdGhpcy5mdiA9M0QgZnY7Ci0gICAgICAgdGhpcy52bSA9M0Qgdm07Ci0gICAg
ICAgdGhpcy50aWVmZSA9M0QgdGllZmU7Ci0gICAgICAgdGhpcy52c29obGUgPTNEIHZzb2hsZTsK
LSAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwotICAgICAgIHRoaXMudWZlcmFi
bGlua3MgPTNEIHVmZXJhYmxpbmtzOwotICAgICAgIHRoaXMubGlua3NhYnN0ID0zRCBsaW5rc2Fi
c3Q7Ci0gICAgfQotCi0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJTTE9UUkVDSFRFSUQiLCBudWxs
YWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9Cj0zRDApCi0gICAgcHVibGljIGxv
bmcgZ2V0U2xvdHJlY2h0ZWlkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5zbG90cmVjaHRlaWQ7
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U2xvdHJlY2h0ZWlkKGxvbmcgc2xvdHJlY2h0
ZWlkKSB7Ci0gICAgICAgIHRoaXMuc2xvdHJlY2h0ZWlkID0zRCBzbG90cmVjaHRlaWQ7Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUVTU1VOR0lEIiwgbnVsbGFibGU9M0RmYWxzZSwg
cHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEPQowKQotICAgIHB1YmxpYyBsb25nIGdldE1lc3N1bmdp
ZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWVzc3VuZ2lkOwotICAgIH0KLQotICAgIHB1Ymxp
YyB2b2lkIHNldE1lc3N1bmdpZChsb25nIG1lc3N1bmdpZCkgewotICAgICAgICB0aGlzLm1lc3N1
bmdpZCA9M0QgbWVzc3VuZ2lkOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlVGRVJB
QlNUIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldFVmZXJhYnN0KCkgewotICAgICAgICByZXR1cm4gdGhpcy51ZmVy
YWJzdDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRVZmVyYWJzdChCaWdEZWNpbWFsIHVm
ZXJhYnN0KSB7Ci0gICAgICAgIHRoaXMudWZlcmFic3QgPTNEIHVmZXJhYnN0OwotICAgIH0KLQot
Ci0gICAgQENvbHVtbihuYW1lPTNEIlRTQU5EIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQot
ICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFRzYW5kKCkgewotICAgICAgICByZXR1cm4gdGhpcy50
c2FuZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUc2FuZChCaWdEZWNpbWFsIHRzYW5k
KSB7Ci0gICAgICAgIHRoaXMudHNhbmQgPTNEIHRzYW5kOwotICAgIH0KLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIlRTQ0hXRUIiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGlj
IEJpZ0RlY2ltYWwgZ2V0VHNjaHdlYigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudHNjaHdlYjsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUc2Nod2ViKEJpZ0RlY2ltYWwgdHNjaHdlYikg
ewotICAgICAgICB0aGlzLnRzY2h3ZWIgPTNEIHRzY2h3ZWI7Ci0gICAgfQotCi0KLSAgICBAQ29s
dW1uKG5hbWU9M0QiRlYiLCBwcmVjaXNpb249M0Q2LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0RnYoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmZ2OwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldEZ2KEJpZ0RlY2ltYWwgZnYpIHsKLSAgICAgICAgdGhpcy5mdiA9M0Qg
ZnY7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVk0iLCBwcmVjaXNpb249M0Q2LCBz
Y2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0Vm0oKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLnZtOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFZtKEJpZ0RlY2ltYWwgdm0p
IHsKLSAgICAgICAgdGhpcy52bSA9M0Qgdm07Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiVElFRkUiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2lt
YWwgZ2V0VGllZmUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnRpZWZlOwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldFRpZWZlKEJpZ0RlY2ltYWwgdGllZmUpIHsKLSAgICAgICAgdGhpcy50
aWVmZSA9M0QgdGllZmU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVlNPSExFIiwg
cHJlY2lzaW9uPTNENiwgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFZzb2hs
ZSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudnNvaGxlOwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldFZzb2hsZShCaWdEZWNpbWFsIHZzb2hsZSkgewotICAgICAgICB0aGlzLnZzb2hsZSA9
M0QgdnNvaGxlOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkJFTUVSS1VORyIsIGxl
bmd0aD0zRDI0MCkKLSAgICBwdWJsaWMgU3RyaW5nIGdldEJlbWVya3VuZygpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuYmVtZXJrdW5nOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEJlbWVy
a3VuZyhTdHJpbmcgYmVtZXJrdW5nKSB7Ci0gICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1l
cmt1bmc7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVUZFUkFCTElOS1MiLCBwcmVj
aXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VWZlcmFibGlu
a3MoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnVmZXJhYmxpbmtzOwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldFVmZXJhYmxpbmtzKEJpZ0RlY2ltYWwgdWZlcmFibGlua3MpIHsKLSAgICAg
ICAgdGhpcy51ZmVyYWJsaW5rcyA9M0QgdWZlcmFibGlua3M7Ci0gICAgfQotCi0KLSAgICBAQ29s
dW1uKG5hbWU9M0QiTElOS1NBQlNUIiwgcHJlY2lzaW9uPTNEMjIsIHNjYWxlPTNEMCkKLSAgICBw
dWJsaWMgQmlnRGVjaW1hbCBnZXRMaW5rc2Fic3QoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmxp
bmtzYWJzdDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRMaW5rc2Fic3QoQmlnRGVjaW1h
bCBsaW5rc2Fic3QpIHsKLSAgICAgICAgdGhpcy5saW5rc2Fic3QgPTNEIGxpbmtzYWJzdDsKLSAg
ICB9Ci0KLQotICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvdGhlcikgewotICAgICAg
ICAgaWYgKCAodGhpcyA9M0Q9M0Qgb3RoZXIgKSApIHJldHVybiB0cnVlOwotCQkgaWYgKCAob3Ro
ZXIgPTNEPTNEIG51bGwgKSApIHJldHVybiBmYWxzZTsKLQkJIGlmICggIShvdGhlciBpbnN0YW5j
ZW9mIFNsb3RsaW5rc0lkKSApIHJldHVybiBmYWxzZTsKLQkJIFNsb3RsaW5rc0lkIGNhc3RPdGhl
ciA9M0QgKCBTbG90bGlua3NJZCApIG90aGVyOwotCi0JCSByZXR1cm4gKHRoaXMuZ2V0U2xvdHJl
Y2h0ZWlkKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0U2xvdHJlY2h0ZWlkKCkpCi0gJiYgKHRoaXMuZ2V0
TWVzc3VuZ2lkKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TWVzc3VuZ2lkKCkpCi0gJiYgKCAodGhpcy5n
ZXRVZmVyYWJzdCgpPTNEPTNEY2FzdE90aGVyLmdldFVmZXJhYnN0KCkpIHx8ICggdGhpcy5nZXRV
ZmVyYT0KYnN0KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0VWZlcmFic3QoKSE9M0RudWxsICYm
IHRoaXMuZ2V0VWZlcmFic3QoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0VWZlcmFic3QoKSkgKSAp
Ci0gJiYgKCAodGhpcy5nZXRUc2FuZCgpPTNEPTNEY2FzdE90aGVyLmdldFRzYW5kKCkpIHx8ICgg
dGhpcy5nZXRUc2FuZCgpIT0zRD0KbnVsbCAmJiBjYXN0T3RoZXIuZ2V0VHNhbmQoKSE9M0RudWxs
ICYmIHRoaXMuZ2V0VHNhbmQoKS5lcXVhbHMoY2FzdE90aGVyLmdlPQp0VHNhbmQoKSkgKSApCi0g
JiYgKCAodGhpcy5nZXRUc2Nod2ViKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0VHNjaHdlYigpKSB8fCAo
IHRoaXMuZ2V0VHNjaHdlYj0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0VHNjaHdlYigpIT0z
RG51bGwgJiYgdGhpcy5nZXRUc2Nod2ViKCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFRzY2h3ZWIo
KSkgKSApCi0gJiYgKCAodGhpcy5nZXRGdigpPTNEPTNEY2FzdE90aGVyLmdldEZ2KCkpIHx8ICgg
dGhpcy5nZXRGdigpIT0zRG51bGwgJiYgYz0KYXN0T3RoZXIuZ2V0RnYoKSE9M0RudWxsICYmIHRo
aXMuZ2V0RnYoKS5lcXVhbHMoY2FzdE90aGVyLmdldEZ2KCkpICkgKQotICYmICggKHRoaXMuZ2V0
Vm0oKT0zRD0zRGNhc3RPdGhlci5nZXRWbSgpKSB8fCAoIHRoaXMuZ2V0Vm0oKSE9M0RudWxsICYm
IGM9CmFzdE90aGVyLmdldFZtKCkhPTNEbnVsbCAmJiB0aGlzLmdldFZtKCkuZXF1YWxzKGNhc3RP
dGhlci5nZXRWbSgpKSApICkKLSAmJiAoICh0aGlzLmdldFRpZWZlKCk9M0Q9M0RjYXN0T3RoZXIu
Z2V0VGllZmUoKSkgfHwgKCB0aGlzLmdldFRpZWZlKCkhPTNEPQpudWxsICYmIGNhc3RPdGhlci5n
ZXRUaWVmZSgpIT0zRG51bGwgJiYgdGhpcy5nZXRUaWVmZSgpLmVxdWFscyhjYXN0T3RoZXIuZ2U9
CnRUaWVmZSgpKSApICkKLSAmJiAoICh0aGlzLmdldFZzb2hsZSgpPTNEPTNEY2FzdE90aGVyLmdl
dFZzb2hsZSgpKSB8fCAoIHRoaXMuZ2V0VnNvaGxlKCkhPQo9M0RudWxsICYmIGNhc3RPdGhlci5n
ZXRWc29obGUoKSE9M0RudWxsICYmIHRoaXMuZ2V0VnNvaGxlKCkuZXF1YWxzKGNhc3RPdGg9CmVy
LmdldFZzb2hsZSgpKSApICkKLSAmJiAoICh0aGlzLmdldEJlbWVya3VuZygpPTNEPTNEY2FzdE90
aGVyLmdldEJlbWVya3VuZygpKSB8fCAoIHRoaXMuZ2V0QmVtPQplcmt1bmcoKSE9M0RudWxsICYm
IGNhc3RPdGhlci5nZXRCZW1lcmt1bmcoKSE9M0RudWxsICYmIHRoaXMuZ2V0QmVtZXJrdW5nKCk9
Ci5lcXVhbHMoY2FzdE90aGVyLmdldEJlbWVya3VuZygpKSApICkKLSAmJiAoICh0aGlzLmdldFVm
ZXJhYmxpbmtzKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0VWZlcmFibGlua3MoKSkgfHwgKCB0aGlzLmdl
PQp0VWZlcmFibGlua3MoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRVZmVyYWJsaW5rcygpIT0z
RG51bGwgJiYgdGhpcy5nZXRVZmU9CnJhYmxpbmtzKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRVZmVy
YWJsaW5rcygpKSApICkKLSAmJiAoICh0aGlzLmdldExpbmtzYWJzdCgpPTNEPTNEY2FzdE90aGVy
LmdldExpbmtzYWJzdCgpKSB8fCAoIHRoaXMuZ2V0TGluPQprc2Fic3QoKSE9M0RudWxsICYmIGNh
c3RPdGhlci5nZXRMaW5rc2Fic3QoKSE9M0RudWxsICYmIHRoaXMuZ2V0TGlua3NhYnN0KCk9Ci5l
cXVhbHMoY2FzdE90aGVyLmdldExpbmtzYWJzdCgpKSApICk7Ci0gICB9Ci0KLSAgIHB1YmxpYyBp
bnQgaGFzaENvZGUoKSB7Ci0gICAgICAgICBpbnQgcmVzdWx0ID0zRCAxNzsKLQotICAgICAgICAg
cmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArIChpbnQpIHRoaXMuZ2V0U2xvdHJlY2h0ZWlkKCk7Ci0g
ICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKGludCkgdGhpcy5nZXRNZXNzdW5naWQo
KTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFVmZXJhYnN0KCkgPTNE
PTNEIG51bGwgPyAwIDogdGhpcy5nPQpldFVmZXJhYnN0KCkuaGFzaENvZGUoKSApOwotICAgICAg
ICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0VHNhbmQoKSA9M0Q9M0QgbnVsbCA/IDAg
OiB0aGlzLmdldFQ9CnNhbmQoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3
ICogcmVzdWx0ICsgKCBnZXRUc2Nod2ViKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFRz
Y2h3ZWIoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsg
KCBnZXRGdigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0RnYoKT0KLmhhc2hDb2RlKCkgKTsK
LSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFZtKCkgPTNEPTNEIG51bGwg
PyAwIDogdGhpcy5nZXRWbSgpPQouaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAz
NyAqIHJlc3VsdCArICggZ2V0VGllZmUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldFQ9Cmll
ZmUoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBn
ZXRWc29obGUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldD0KVnNvaGxlKCkuaGFzaENvZGUo
KSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0QmVtZXJrdW5nKCkg
PTNEPTNEIG51bGwgPyAwIDogdGhpcy49CmdldEJlbWVya3VuZygpLmhhc2hDb2RlKCkgKTsKLSAg
ICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFVmZXJhYmxpbmtzKCkgPTNEPTNE
IG51bGwgPyAwIDogdGhpPQpzLmdldFVmZXJhYmxpbmtzKCkuaGFzaENvZGUoKSApOwotICAgICAg
ICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TGlua3NhYnN0KCkgPTNEPTNEIG51bGwg
PyAwIDogdGhpcy49CmdldExpbmtzYWJzdCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICB9Ci19CmRpZmYgLXIgYmM0ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBi
YWNrZW5kL3NyYy9tYWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZT0KZGRiL21vZGVsL1Nsb3RyZWNo
dGUuamF2YQotLS0gYS9iYWNrZW5kL3NyYy9tYWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZWRkYi9t
b2RlbC9TbG90cmVjaHRlLmphdmEJTW9uIEE9CnByIDI5IDExOjE0OjI1IDIwMTMgKzAyMDAKKysr
IC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMTkxICswLDAg
QEAKLS8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9
QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCi0gKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJ
bnRldmF0aW9uIEdtYkgKLSAqCi0gKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0
aGUgR05VIEFHUEwgKD49M0R2Myk9MjAKLSAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8g
V0FSUkFOVFkhIENoZWNrIG91dCB0aGUKLSAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2
ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy49MjAKLSAqLwotCi1wYWNrYWdlIG9yZy5kaXZl
NGVsZW1lbnRzLnNlZGRiLm1vZGVsOwotLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcg
YnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQotCi0KLWltcG9ydCBqYXZhLm1hdGguQmlnRGVj
aW1hbDsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuU2V0Owot
aW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5j
ZS5FbnRpdHk7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRmV0Y2hUeXBlOwotaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLklkOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkpvaW5Db2x1bW47
Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTWFueVRvT25lOwotaW1wb3J0IGphdmF4LnBlcnNp
c3RlbmNlLk9uZVRvTWFueTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKLQotLyoq
Ci0gKiBTbG90cmVjaHRlIGdlbmVyYXRlZCBieSBoYm0yamF2YQotICovCi1ARW50aXR5Ci1AVGFi
bGUobmFtZT0zRCJTTE9UUkVDSFRFIgotICAgICxzY2hlbWE9M0QiU0VEREIiCi0pCi1wdWJsaWMg
Y2xhc3MgU2xvdHJlY2h0ZSAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7Ci0KLQot
ICAgICBwcml2YXRlIGxvbmcgc2xvdHJlY2h0ZWlkOwotICAgICBwcml2YXRlIE1lc3N1bmcgbWVz
c3VuZzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHVmZXJhYnN0OwotICAgICBwcml2YXRlIEJp
Z0RlY2ltYWwgdHNhbmQ7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB0c2Nod2ViOwotICAgICBw
cml2YXRlIEJpZ0RlY2ltYWwgZnY7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB2bTsKLSAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIHRpZWZlOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdnNvaGxl
OwotICAgICBwcml2YXRlIFN0cmluZyBiZW1lcmt1bmc7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1h
bCB1ZmVyYWJsaW5rczsKLSAgICAgcHJpdmF0ZSBTZXQ8U3Byb2JlPiBzcHJvYmVzID0zRCBuZXcg
SGFzaFNldDxTcHJvYmU+KDApOwotCi0gICAgcHVibGljIFNsb3RyZWNodGUoKSB7Ci0gICAgfQot
Ci0gICAgcHVibGljIFNsb3RyZWNodGUobG9uZyBzbG90cmVjaHRlaWQsIE1lc3N1bmcgbWVzc3Vu
ZywgQmlnRGVjaW1hbCB1ZmVyYT0KYnN0KSB7Ci0gICAgICAgIHRoaXMuc2xvdHJlY2h0ZWlkID0z
RCBzbG90cmVjaHRlaWQ7Ci0gICAgICAgIHRoaXMubWVzc3VuZyA9M0QgbWVzc3VuZzsKLSAgICAg
ICAgdGhpcy51ZmVyYWJzdCA9M0QgdWZlcmFic3Q7Ci0gICAgfQotICAgIHB1YmxpYyBTbG90cmVj
aHRlKGxvbmcgc2xvdHJlY2h0ZWlkLCBNZXNzdW5nIG1lc3N1bmcsIEJpZ0RlY2ltYWwgdWZlcmE9
CmJzdCwgQmlnRGVjaW1hbCB0c2FuZCwgQmlnRGVjaW1hbCB0c2Nod2ViLCBCaWdEZWNpbWFsIGZ2
LCBCaWdEZWNpbWFsIHZtLCBCaT0KZ0RlY2ltYWwgdGllZmUsIEJpZ0RlY2ltYWwgdnNvaGxlLCBT
dHJpbmcgYmVtZXJrdW5nLCBCaWdEZWNpbWFsIHVmZXJhYmxpbmtzPQosIFNldDxTcHJvYmU+IHNw
cm9iZXMpIHsKLSAgICAgICB0aGlzLnNsb3RyZWNodGVpZCA9M0Qgc2xvdHJlY2h0ZWlkOwotICAg
ICAgIHRoaXMubWVzc3VuZyA9M0QgbWVzc3VuZzsKLSAgICAgICB0aGlzLnVmZXJhYnN0ID0zRCB1
ZmVyYWJzdDsKLSAgICAgICB0aGlzLnRzYW5kID0zRCB0c2FuZDsKLSAgICAgICB0aGlzLnRzY2h3
ZWIgPTNEIHRzY2h3ZWI7Ci0gICAgICAgdGhpcy5mdiA9M0QgZnY7Ci0gICAgICAgdGhpcy52bSA9
M0Qgdm07Ci0gICAgICAgdGhpcy50aWVmZSA9M0QgdGllZmU7Ci0gICAgICAgdGhpcy52c29obGUg
PTNEIHZzb2hsZTsKLSAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwotICAgICAg
IHRoaXMudWZlcmFibGlua3MgPTNEIHVmZXJhYmxpbmtzOwotICAgICAgIHRoaXMuc3Byb2JlcyA9
M0Qgc3Byb2JlczsKLSAgICB9Ci0KLSAgICAgQElkCi0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJT
TE9UUkVDSFRFSUQiLCB1bmlxdWU9M0R0cnVlLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXM9Cmlv
bj0zRDExLCBzY2FsZT0zRDApCi0gICAgcHVibGljIGxvbmcgZ2V0U2xvdHJlY2h0ZWlkKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5zbG90cmVjaHRlaWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZv
aWQgc2V0U2xvdHJlY2h0ZWlkKGxvbmcgc2xvdHJlY2h0ZWlkKSB7Ci0gICAgICAgIHRoaXMuc2xv
dHJlY2h0ZWlkID0zRCBzbG90cmVjaHRlaWQ7Ci0gICAgfQotCi1ATWFueVRvT25lKGZldGNoPTNE
RmV0Y2hUeXBlLkxBWlkpCi0gICAgQEpvaW5Db2x1bW4obmFtZT0zRCJNRVNTVU5HSUQiLCBudWxs
YWJsZT0zRGZhbHNlKQotICAgIHB1YmxpYyBNZXNzdW5nIGdldE1lc3N1bmcoKSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLm1lc3N1bmc7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWVzc3Vu
ZyhNZXNzdW5nIG1lc3N1bmcpIHsKLSAgICAgICAgdGhpcy5tZXNzdW5nID0zRCBtZXNzdW5nOwot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlVGRVJBQlNUIiwgbnVsbGFibGU9M0RmYWxz
ZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFVm
ZXJhYnN0KCkgewotICAgICAgICByZXR1cm4gdGhpcy51ZmVyYWJzdDsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRVZmVyYWJzdChCaWdEZWNpbWFsIHVmZXJhYnN0KSB7Ci0gICAgICAgIHRo
aXMudWZlcmFic3QgPTNEIHVmZXJhYnN0OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNE
IlRTQU5EIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFs
IGdldFRzYW5kKCkgewotICAgICAgICByZXR1cm4gdGhpcy50c2FuZDsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRUc2FuZChCaWdEZWNpbWFsIHRzYW5kKSB7Ci0gICAgICAgIHRoaXMudHNh
bmQgPTNEIHRzYW5kOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlRTQ0hXRUIiLCBw
cmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VHNjaHdl
YigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudHNjaHdlYjsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRUc2Nod2ViKEJpZ0RlY2ltYWwgdHNjaHdlYikgewotICAgICAgICB0aGlzLnRzY2h3
ZWIgPTNEIHRzY2h3ZWI7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiRlYiLCBwcmVj
aXNpb249M0Q2LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RnYoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLmZ2OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEZ2KEJp
Z0RlY2ltYWwgZnYpIHsKLSAgICAgICAgdGhpcy5mdiA9M0QgZnY7Ci0gICAgfQotCi0KLSAgICBA
Q29sdW1uKG5hbWU9M0QiVk0iLCBwcmVjaXNpb249M0Q2LCBzY2FsZT0zRDQpCi0gICAgcHVibGlj
IEJpZ0RlY2ltYWwgZ2V0Vm0oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnZtOwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldFZtKEJpZ0RlY2ltYWwgdm0pIHsKLSAgICAgICAgdGhpcy52bSA9
M0Qgdm07Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVElFRkUiLCBwcmVjaXNpb249
M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VGllZmUoKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLnRpZWZlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFRpZWZl
KEJpZ0RlY2ltYWwgdGllZmUpIHsKLSAgICAgICAgdGhpcy50aWVmZSA9M0QgdGllZmU7Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVlNPSExFIiwgcHJlY2lzaW9uPTNENiwgc2NhbGU9
M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFZzb2hsZSgpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMudnNvaGxlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFZzb2hsZShCaWdEZWNp
bWFsIHZzb2hsZSkgewotICAgICAgICB0aGlzLnZzb2hsZSA9M0QgdnNvaGxlOwotICAgIH0KLQot
Ci0gICAgQENvbHVtbihuYW1lPTNEIkJFTUVSS1VORyIsIGxlbmd0aD0zRDI0MCkKLSAgICBwdWJs
aWMgU3RyaW5nIGdldEJlbWVya3VuZygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYmVtZXJrdW5n
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEJlbWVya3VuZyhTdHJpbmcgYmVtZXJrdW5n
KSB7Ci0gICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7Ci0gICAgfQotCi0KLSAg
ICBAQ29sdW1uKG5hbWU9M0QiVUZFUkFCTElOS1MiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMp
Ci0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VWZlcmFibGlua3MoKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLnVmZXJhYmxpbmtzOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFVmZXJhYmxp
bmtzKEJpZ0RlY2ltYWwgdWZlcmFibGlua3MpIHsKLSAgICAgICAgdGhpcy51ZmVyYWJsaW5rcyA9
M0QgdWZlcmFibGlua3M7Ci0gICAgfQotCi1AT25lVG9NYW55KGZldGNoPTNERmV0Y2hUeXBlLkxB
WlksIG1hcHBlZEJ5PTNEInNsb3RyZWNodGUiKQotICAgIHB1YmxpYyBTZXQ8U3Byb2JlPiBnZXRT
cHJvYmVzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5zcHJvYmVzOwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldFNwcm9iZXMoU2V0PFNwcm9iZT4gc3Byb2JlcykgewotICAgICAgICB0aGlz
LnNwcm9iZXMgPTNEIHNwcm9iZXM7Ci0gICAgfQotfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAx
ZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2U9CmRkYi9t
b2RlbC9Tb2hscHJvYmUuamF2YQotLS0gYS9iYWNrZW5kL3NyYy9tYWluL2phdmEvZGUvaW50ZXZh
dGlvbi9zZWRkYi9tb2RlbC9Tb2hscHJvYmUuamF2YQlNb24gQXA9CnIgMjkgMTE6MTQ6MjUgMjAx
MyArMDIwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAt
MSwxNjQgKzAsMCBAQAotLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRl
c2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2lu
ZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3
YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAotICogYW5kIGNvbWVzIHdpdGggQUJT
T0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21p
bmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAotICovCi0KLXBhY2th
Z2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAx
MiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmEu
bWF0aC5CaWdEZWNpbWFsOwotaW1wb3J0IGphdmEudXRpbC5EYXRlOwotaW1wb3J0IGphdmEudXRp
bC5IYXNoU2V0OwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVu
Y2UuQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKLWltcG9ydCBqYXZh
eC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7Ci1p
bXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0
ZW5jZS5NYW55VG9PbmU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuT25lVG9NYW55OwotaW1w
b3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRl
bXBvcmFsOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRlbXBvcmFsVHlwZTsKLQotLyoqCi0g
KiBTb2hscHJvYmUgZ2VuZXJhdGVkIGJ5IGhibTJqYXZhCi0gKi8KLUBFbnRpdHkKLUBUYWJsZShu
YW1lPTNEIlNPSExQUk9CRSIKLSAgICAsc2NoZW1hPTNEIlNFRERCIgotKQotcHVibGljIGNsYXNz
IFNvaGxwcm9iZSAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7Ci0KLQotICAgICBw
cml2YXRlIGxvbmcgc29obHByb2JlaWQ7Ci0gICAgIHByaXZhdGUgWnpwcm9iZW5haG1lYXJ0IHp6
cHJvYmVuYWhtZWFydDsKLSAgICAgcHJpdmF0ZSBTb2hsdGVzdCBzb2hsdGVzdDsKLSAgICAgcHJp
dmF0ZSBCaWdEZWNpbWFsIHRpZWZldm9uOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdGllZmVi
aXM7Ci0gICAgIHByaXZhdGUgU3RyaW5nIGJlc2NocmVpYnVuZzsKLSAgICAgcHJpdmF0ZSBEYXRl
IGxhc3R1cGRhdGVkOwotICAgICBwcml2YXRlIFNldDxQcm9iZWJpbGQ+IHByb2JlYmlsZHMgPTNE
IG5ldyBIYXNoU2V0PFByb2JlYmlsZD4oMCk7Ci0gICAgIHByaXZhdGUgU2V0PFNpZWJhbmFseXNl
PiBzaWViYW5hbHlzZXMgPTNEIG5ldyBIYXNoU2V0PFNpZWJhbmFseXNlPigwKTsKLQotICAgIHB1
YmxpYyBTb2hscHJvYmUoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIFNvaGxwcm9iZShsb25nIHNv
aGxwcm9iZWlkLCBaenByb2JlbmFobWVhcnQgenpwcm9iZW5haG1lYXJ0LCBTbz0KaGx0ZXN0IHNv
aGx0ZXN0LCBEYXRlIGxhc3R1cGRhdGVkKSB7Ci0gICAgICAgIHRoaXMuc29obHByb2JlaWQgPTNE
IHNvaGxwcm9iZWlkOwotICAgICAgICB0aGlzLnp6cHJvYmVuYWhtZWFydCA9M0Qgenpwcm9iZW5h
aG1lYXJ0OwotICAgICAgICB0aGlzLnNvaGx0ZXN0ID0zRCBzb2hsdGVzdDsKLSAgICAgICAgdGhp
cy5sYXN0dXBkYXRlZCA9M0QgbGFzdHVwZGF0ZWQ7Ci0gICAgfQotICAgIHB1YmxpYyBTb2hscHJv
YmUobG9uZyBzb2hscHJvYmVpZCwgWnpwcm9iZW5haG1lYXJ0IHp6cHJvYmVuYWhtZWFydCwgU289
CmhsdGVzdCBzb2hsdGVzdCwgQmlnRGVjaW1hbCB0aWVmZXZvbiwgQmlnRGVjaW1hbCB0aWVmZWJp
cywgU3RyaW5nIGJlc2NocmVpYj0KdW5nLCBEYXRlIGxhc3R1cGRhdGVkLCBTZXQ8UHJvYmViaWxk
PiBwcm9iZWJpbGRzLCBTZXQ8U2llYmFuYWx5c2U+IHNpZWJhbmFsPQp5c2VzKSB7Ci0gICAgICAg
dGhpcy5zb2hscHJvYmVpZCA9M0Qgc29obHByb2JlaWQ7Ci0gICAgICAgdGhpcy56enByb2JlbmFo
bWVhcnQgPTNEIHp6cHJvYmVuYWhtZWFydDsKLSAgICAgICB0aGlzLnNvaGx0ZXN0ID0zRCBzb2hs
dGVzdDsKLSAgICAgICB0aGlzLnRpZWZldm9uID0zRCB0aWVmZXZvbjsKLSAgICAgICB0aGlzLnRp
ZWZlYmlzID0zRCB0aWVmZWJpczsKLSAgICAgICB0aGlzLmJlc2NocmVpYnVuZyA9M0QgYmVzY2hy
ZWlidW5nOwotICAgICAgIHRoaXMubGFzdHVwZGF0ZWQgPTNEIGxhc3R1cGRhdGVkOwotICAgICAg
IHRoaXMucHJvYmViaWxkcyA9M0QgcHJvYmViaWxkczsKLSAgICAgICB0aGlzLnNpZWJhbmFseXNl
cyA9M0Qgc2llYmFuYWx5c2VzOwotICAgIH0KLQotICAgICBASWQKLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIlNPSExQUk9CRUlEIiwgdW5pcXVlPTNEdHJ1ZSwgbnVsbGFibGU9M0RmYWxzZSwgcHJl
Y2lzaT0Kb249M0QxMSwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBsb25nIGdldFNvaGxwcm9iZWlk
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5zb2hscHJvYmVpZDsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRTb2hscHJvYmVpZChsb25nIHNvaGxwcm9iZWlkKSB7Ci0gICAgICAgIHRoaXMu
c29obHByb2JlaWQgPTNEIHNvaGxwcm9iZWlkOwotICAgIH0KLQotQE1hbnlUb09uZShmZXRjaD0z
REZldGNoVHlwZS5MQVpZKQotICAgIEBKb2luQ29sdW1uKG5hbWU9M0QiUFJPQkVOQUhNRUFSVElE
IiwgbnVsbGFibGU9M0RmYWxzZSkKLSAgICBwdWJsaWMgWnpwcm9iZW5haG1lYXJ0IGdldFp6cHJv
YmVuYWhtZWFydCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuenpwcm9iZW5haG1lYXJ0OwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFp6cHJvYmVuYWhtZWFydChaenByb2JlbmFobWVhcnQg
enpwcm9iZW5haG1lYXJ0KSB7Ci0gICAgICAgIHRoaXMuenpwcm9iZW5haG1lYXJ0ID0zRCB6enBy
b2JlbmFobWVhcnQ7Ci0gICAgfQotCi1ATWFueVRvT25lKGZldGNoPTNERmV0Y2hUeXBlLkxBWlkp
Ci0gICAgQEpvaW5Db2x1bW4obmFtZT0zRCJTT0hMVEVTVElEIiwgbnVsbGFibGU9M0RmYWxzZSkK
LSAgICBwdWJsaWMgU29obHRlc3QgZ2V0U29obHRlc3QoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LnNvaGx0ZXN0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNvaGx0ZXN0KFNvaGx0ZXN0
IHNvaGx0ZXN0KSB7Ci0gICAgICAgIHRoaXMuc29obHRlc3QgPTNEIHNvaGx0ZXN0OwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIlRJRUZFVk9OIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9
M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFRpZWZldm9uKCkgewotICAgICAgICByZXR1
cm4gdGhpcy50aWVmZXZvbjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUaWVmZXZvbihC
aWdEZWNpbWFsIHRpZWZldm9uKSB7Ci0gICAgICAgIHRoaXMudGllZmV2b24gPTNEIHRpZWZldm9u
OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlRJRUZFQklTIiwgcHJlY2lzaW9uPTNE
OCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFRpZWZlYmlzKCkgewotICAg
ICAgICByZXR1cm4gdGhpcy50aWVmZWJpczsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRU
aWVmZWJpcyhCaWdEZWNpbWFsIHRpZWZlYmlzKSB7Ci0gICAgICAgIHRoaXMudGllZmViaXMgPTNE
IHRpZWZlYmlzOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkJFU0NIUkVJQlVORyIs
IGxlbmd0aD0zRDEwMjQpCi0gICAgcHVibGljIFN0cmluZyBnZXRCZXNjaHJlaWJ1bmcoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLmJlc2NocmVpYnVuZzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXRCZXNjaHJlaWJ1bmcoU3RyaW5nIGJlc2NocmVpYnVuZykgewotICAgICAgICB0aGlzLmJl
c2NocmVpYnVuZyA9M0QgYmVzY2hyZWlidW5nOwotICAgIH0KLQotICAgIEBUZW1wb3JhbChUZW1w
b3JhbFR5cGUuREFURSkKLSAgICBAQ29sdW1uKG5hbWU9M0QiTEFTVFVQREFURUQiLCBudWxsYWJs
ZT0zRGZhbHNlLCBsZW5ndGg9M0Q3KQotICAgIHB1YmxpYyBEYXRlIGdldExhc3R1cGRhdGVkKCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5sYXN0dXBkYXRlZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRMYXN0dXBkYXRlZChEYXRlIGxhc3R1cGRhdGVkKSB7Ci0gICAgICAgIHRoaXMubGFz
dHVwZGF0ZWQgPTNEIGxhc3R1cGRhdGVkOwotICAgIH0KLQotQE9uZVRvTWFueShmZXRjaD0zREZl
dGNoVHlwZS5MQVpZLCBtYXBwZWRCeT0zRCJzb2hscHJvYmUiKQotICAgIHB1YmxpYyBTZXQ8UHJv
YmViaWxkPiBnZXRQcm9iZWJpbGRzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5wcm9iZWJpbGRz
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFByb2JlYmlsZHMoU2V0PFByb2JlYmlsZD4g
cHJvYmViaWxkcykgewotICAgICAgICB0aGlzLnByb2JlYmlsZHMgPTNEIHByb2JlYmlsZHM7Ci0g
ICAgfQotCi1AT25lVG9NYW55KGZldGNoPTNERmV0Y2hUeXBlLkxBWlksIG1hcHBlZEJ5PTNEInNv
aGxwcm9iZSIpCi0gICAgcHVibGljIFNldDxTaWViYW5hbHlzZT4gZ2V0U2llYmFuYWx5c2VzKCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5zaWViYW5hbHlzZXM7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0U2llYmFuYWx5c2VzKFNldDxTaWViYW5hbHlzZT4gc2llYmFuYWx5c2VzKSB7Ci0g
ICAgICAgIHRoaXMuc2llYmFuYWx5c2VzID0zRCBzaWViYW5hbHlzZXM7Ci0gICAgfQotCi0KLQot
Ci19Ci0KLQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMv
bWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2U9CmRkYi9tb2RlbC9Tb2hsdGVzdC5qYXZhCi0tLSBh
L2JhY2tlbmQvc3JjL21haW4vamF2YS9kZS9pbnRldmF0aW9uL3NlZGRiL21vZGVsL1NvaGx0ZXN0
LmphdmEJTW9uIEFwcj0KIDI5IDExOjE0OjI1IDIwMTMgKzAyMDAKKysrIC9kZXYvbnVsbAlUaHUg
SmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMzA3ICswLDAgQEAKLS8qIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1B
NHNzZXJrPQp1bmRlCi0gKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgK
LSAqCi0gKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49
M0R2Myk9MjAKLSAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNr
IG91dCB0aGUKLSAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZl
ciBmb3IgZGV0YWlscy49MjAKLSAqLwotCi1wYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnNlZGRi
Lm1vZGVsOwotLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRv
b2xzIDMuNC4wLkNSMQotCi0KLWltcG9ydCBqYXZhLm1hdGguQmlnRGVjaW1hbDsKLWltcG9ydCBq
YXZhLnV0aWwuRGF0ZTsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0
aWwuU2V0OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZheC5w
ZXJzaXN0ZW5jZS5FbnRpdHk7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRmV0Y2hUeXBlOwot
aW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkpv
aW5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTWFueVRvT25lOwotaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLk9uZVRvTWFueTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJs
ZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UZW1wb3JhbDsKLWltcG9ydCBqYXZheC5wZXJz
aXN0ZW5jZS5UZW1wb3JhbFR5cGU7Ci0KLS8qKgotICogU29obHRlc3QgZ2VuZXJhdGVkIGJ5IGhi
bTJqYXZhCi0gKi8KLUBFbnRpdHkKLUBUYWJsZShuYW1lPTNEIlNPSExURVNUIgotICAgICxzY2hl
bWE9M0QiU0VEREIiCi0pCi1wdWJsaWMgY2xhc3MgU29obHRlc3QgIGltcGxlbWVudHMgamF2YS5p
by5TZXJpYWxpemFibGUgewotCi0gICAgIHByaXZhdGUgbG9uZyBzb2hsdGVzdGlkOwotICAgICBw
cml2YXRlIFN0YXRpb24gc3RhdGlvbjsKLSAgICAgcHJpdmF0ZSBaenNvbmRpZXJ1bmdhcnQgenpz
b25kaWVydW5nYXJ0OwotICAgICBwcml2YXRlIFp6YXJjaGl2IHp6YXJjaGl2OwotICAgICBwcml2
YXRlIERhdGUgZGF0dW07Ci0gICAgIHByaXZhdGUgYm9vbGVhbiBpc3RudXJqYWhyOwotICAgICBw
cml2YXRlIEJpZ0RlY2ltYWwga207Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBhYnN0YW5kOwot
ICAgICBwcml2YXRlIGJvb2xlYW4gYWJzdGlzdHZvbmxpbmtzOwotICAgICBwcml2YXRlIGJvb2xl
YW4gYWJzdGJlenVnOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgYWJzdG9mZnNldDsKLSAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIGFic3RsaW5rczsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJl
Y2h0czsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGhvY2g7Ci0gICAgIHByaXZhdGUgQmlnRGVj
aW1hbCBob2VoZTsKLSAgICAgcHJpdmF0ZSBTdHJpbmcgYmVtZXJrdW5nOwotICAgICBwcml2YXRl
IFN0cmluZyBzb2hsZWJlc2NocmVpYjsKLSAgICAgcHJpdmF0ZSBTdHJpbmcgc29uZGllcnVuZ2Jl
c2NocmVpYjsKLSAgICAgcHJpdmF0ZSBEYXRlIGxhc3R1cGRhdGVkOwotICAgICBwcml2YXRlIFNl
dDxCaWxkPiBiaWxkcyA9M0QgbmV3IEhhc2hTZXQ8QmlsZD4oMCk7Ci0gICAgIHByaXZhdGUgU2V0
PFNvaGxwcm9iZT4gc29obHByb2JlcyA9M0QgbmV3IEhhc2hTZXQ8U29obHByb2JlPigwKTsKLQot
ICAgIHB1YmxpYyBTb2hsdGVzdCgpIHsKLSAgICB9Ci0KLQotICAgIHB1YmxpYyBTb2hsdGVzdChs
b25nIHNvaGx0ZXN0aWQsIFN0YXRpb24gc3RhdGlvbiwgRGF0ZSBkYXR1bSwgYm9vbGVhbiA9Cmlz
dG51cmphaHIsIEJpZ0RlY2ltYWwgYWJzdGFuZCwgYm9vbGVhbiBhYnN0aXN0dm9ubGlua3MsIGJv
b2xlYW4gYWJzdGJlenVnLD0KIEJpZ0RlY2ltYWwgYWJzdG9mZnNldCwgRGF0ZSBsYXN0dXBkYXRl
ZCkgewotICAgICAgICB0aGlzLnNvaGx0ZXN0aWQgPTNEIHNvaGx0ZXN0aWQ7Ci0gICAgICAgIHRo
aXMuc3RhdGlvbiA9M0Qgc3RhdGlvbjsKLSAgICAgICAgdGhpcy5kYXR1bSA9M0QgZGF0dW07Ci0g
ICAgICAgIHRoaXMuaXN0bnVyamFociA9M0QgaXN0bnVyamFocjsKLSAgICAgICAgdGhpcy5hYnN0
YW5kID0zRCBhYnN0YW5kOwotICAgICAgICB0aGlzLmFic3Rpc3R2b25saW5rcyA9M0QgYWJzdGlz
dHZvbmxpbmtzOwotICAgICAgICB0aGlzLmFic3RiZXp1ZyA9M0QgYWJzdGJlenVnOwotICAgICAg
ICB0aGlzLmFic3RvZmZzZXQgPTNEIGFic3RvZmZzZXQ7Ci0gICAgICAgIHRoaXMubGFzdHVwZGF0
ZWQgPTNEIGxhc3R1cGRhdGVkOwotICAgIH0KLSAgICBwdWJsaWMgU29obHRlc3QobG9uZyBzb2hs
dGVzdGlkLCBTdGF0aW9uIHN0YXRpb24sIFp6c29uZGllcnVuZ2FydCB6enNvPQpuZGllcnVuZ2Fy
dCwgWnphcmNoaXYgenphcmNoaXYsIERhdGUgZGF0dW0sIGJvb2xlYW4gaXN0bnVyamFociwgQmln
RGVjaW1hbCA9CmttLCBCaWdEZWNpbWFsIGFic3RhbmQsIGJvb2xlYW4gYWJzdGlzdHZvbmxpbmtz
LCBib29sZWFuIGFic3RiZXp1ZywgQmlnRGVjaT0KbWFsIGFic3RvZmZzZXQsIEJpZ0RlY2ltYWwg
YWJzdGxpbmtzLCBCaWdEZWNpbWFsIHJlY2h0cywgQmlnRGVjaW1hbCBob2NoLCBCPQppZ0RlY2lt
YWwgaG9laGUsIFN0cmluZyBiZW1lcmt1bmcsIFN0cmluZyBzb2hsZWJlc2NocmVpYiwgU3RyaW5n
IHNvbmRpZXJ1bmc9CmJlc2NocmVpYiwgRGF0ZSBsYXN0dXBkYXRlZCwgU2V0PEJpbGQ+IGJpbGRz
LCBTZXQ8U29obHByb2JlPiBzb2hscHJvYmVzKSB7Ci0gICAgICAgdGhpcy5zb2hsdGVzdGlkID0z
RCBzb2hsdGVzdGlkOwotICAgICAgIHRoaXMuc3RhdGlvbiA9M0Qgc3RhdGlvbjsKLSAgICAgICB0
aGlzLnp6c29uZGllcnVuZ2FydCA9M0Qgenpzb25kaWVydW5nYXJ0OwotICAgICAgIHRoaXMuenph
cmNoaXYgPTNEIHp6YXJjaGl2OwotICAgICAgIHRoaXMuZGF0dW0gPTNEIGRhdHVtOwotICAgICAg
IHRoaXMuaXN0bnVyamFociA9M0QgaXN0bnVyamFocjsKLSAgICAgICB0aGlzLmttID0zRCBrbTsK
LSAgICAgICB0aGlzLmFic3RhbmQgPTNEIGFic3RhbmQ7Ci0gICAgICAgdGhpcy5hYnN0aXN0dm9u
bGlua3MgPTNEIGFic3Rpc3R2b25saW5rczsKLSAgICAgICB0aGlzLmFic3RiZXp1ZyA9M0QgYWJz
dGJlenVnOwotICAgICAgIHRoaXMuYWJzdG9mZnNldCA9M0QgYWJzdG9mZnNldDsKLSAgICAgICB0
aGlzLmFic3RsaW5rcyA9M0QgYWJzdGxpbmtzOwotICAgICAgIHRoaXMucmVjaHRzID0zRCByZWNo
dHM7Ci0gICAgICAgdGhpcy5ob2NoID0zRCBob2NoOwotICAgICAgIHRoaXMuaG9laGUgPTNEIGhv
ZWhlOwotICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7Ci0gICAgICAgdGhpcy5z
b2hsZWJlc2NocmVpYiA9M0Qgc29obGViZXNjaHJlaWI7Ci0gICAgICAgdGhpcy5zb25kaWVydW5n
YmVzY2hyZWliID0zRCBzb25kaWVydW5nYmVzY2hyZWliOwotICAgICAgIHRoaXMubGFzdHVwZGF0
ZWQgPTNEIGxhc3R1cGRhdGVkOwotICAgICAgIHRoaXMuYmlsZHMgPTNEIGJpbGRzOwotICAgICAg
IHRoaXMuc29obHByb2JlcyA9M0Qgc29obHByb2JlczsKLSAgICB9Ci0KLSAgICAgQElkCi0KLQot
ICAgIEBDb2x1bW4obmFtZT0zRCJTT0hMVEVTVElEIiwgdW5pcXVlPTNEdHJ1ZSwgbnVsbGFibGU9
M0RmYWxzZSwgcHJlY2lzaW89Cm49M0QxMSwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBsb25nIGdl
dFNvaGx0ZXN0aWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnNvaGx0ZXN0aWQ7Ci0gICAgfQot
Ci0gICAgcHVibGljIHZvaWQgc2V0U29obHRlc3RpZChsb25nIHNvaGx0ZXN0aWQpIHsKLSAgICAg
ICAgdGhpcy5zb2hsdGVzdGlkID0zRCBzb2hsdGVzdGlkOwotICAgIH0KLQotQE1hbnlUb09uZShm
ZXRjaD0zREZldGNoVHlwZS5MQVpZKQotICAgIEBKb2luQ29sdW1uKG5hbWU9M0QiU1RBVElPTklE
IiwgbnVsbGFibGU9M0RmYWxzZSkKLSAgICBwdWJsaWMgU3RhdGlvbiBnZXRTdGF0aW9uKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5zdGF0aW9uOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dFN0YXRpb24oU3RhdGlvbiBzdGF0aW9uKSB7Ci0gICAgICAgIHRoaXMuc3RhdGlvbiA9M0Qgc3Rh
dGlvbjsKLSAgICB9Ci0KLUBNYW55VG9PbmUoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSkKLSAgICBA
Sm9pbkNvbHVtbihuYW1lPTNEIlNPTkRJRVJVTkdBUlRJRCIpCi0gICAgcHVibGljIFp6c29uZGll
cnVuZ2FydCBnZXRaenNvbmRpZXJ1bmdhcnQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnp6c29u
ZGllcnVuZ2FydDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRaenNvbmRpZXJ1bmdhcnQo
Wnpzb25kaWVydW5nYXJ0IHp6c29uZGllcnVuZ2FydCkgewotICAgICAgICB0aGlzLnp6c29uZGll
cnVuZ2FydCA9M0Qgenpzb25kaWVydW5nYXJ0OwotICAgIH0KLQotQE1hbnlUb09uZShmZXRjaD0z
REZldGNoVHlwZS5MQVpZKQotICAgIEBKb2luQ29sdW1uKG5hbWU9M0QiQVJDSElWSUQiKQotICAg
IHB1YmxpYyBaemFyY2hpdiBnZXRaemFyY2hpdigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuenph
cmNoaXY7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0WnphcmNoaXYoWnphcmNoaXYgenph
cmNoaXYpIHsKLSAgICAgICAgdGhpcy56emFyY2hpdiA9M0QgenphcmNoaXY7Ci0gICAgfQotCi0g
ICAgQFRlbXBvcmFsKFRlbXBvcmFsVHlwZS5EQVRFKQotICAgIEBDb2x1bW4obmFtZT0zRCJEQVRV
TSIsIG51bGxhYmxlPTNEZmFsc2UsIGxlbmd0aD0zRDcpCi0gICAgcHVibGljIERhdGUgZ2V0RGF0
dW0oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmRhdHVtOwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldERhdHVtKERhdGUgZGF0dW0pIHsKLSAgICAgICAgdGhpcy5kYXR1bSA9M0QgZGF0dW07
Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiSVNUTlVSSkFIUiIsIG51bGxhYmxlPTNE
ZmFsc2UsIHByZWNpc2lvbj0zRDEsIHNjYWxlPTNEPQowKQotICAgIHB1YmxpYyBib29sZWFuIGlz
SXN0bnVyamFocigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaXN0bnVyamFocjsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRJc3RudXJqYWhyKGJvb2xlYW4gaXN0bnVyamFocikgewotICAg
ICAgICB0aGlzLmlzdG51cmphaHIgPTNEIGlzdG51cmphaHI7Ci0gICAgfQotCi0KLSAgICBAQ29s
dW1uKG5hbWU9M0QiS00iLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0S20oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmttOwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldEttKEJpZ0RlY2ltYWwga20pIHsKLSAgICAgICAgdGhpcy5rbSA9M0Qg
a207Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQUJTVEFORCIsIG51bGxhYmxlPTNE
ZmFsc2UsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXRBYnN0YW5kKCkgewotICAgICAgICByZXR1cm4gdGhpcy5hYnN0YW5kOwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldEFic3RhbmQoQmlnRGVjaW1hbCBhYnN0YW5kKSB7Ci0gICAgICAgIHRo
aXMuYWJzdGFuZCA9M0QgYWJzdGFuZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJB
QlNUSVNUVk9OTElOS1MiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxLCBzY2E9Cmxl
PTNEMCkKLSAgICBwdWJsaWMgYm9vbGVhbiBpc0Fic3Rpc3R2b25saW5rcygpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuYWJzdGlzdHZvbmxpbmtzOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dEFic3Rpc3R2b25saW5rcyhib29sZWFuIGFic3Rpc3R2b25saW5rcykgewotICAgICAgICB0aGlz
LmFic3Rpc3R2b25saW5rcyA9M0QgYWJzdGlzdHZvbmxpbmtzOwotICAgIH0KLQotCi0gICAgQENv
bHVtbihuYW1lPTNEIkFCU1RCRVpVRyIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDEs
IHNjYWxlPTNEMCkKLSAgICBwdWJsaWMgYm9vbGVhbiBpc0Fic3RiZXp1ZygpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuYWJzdGJlenVnOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEFic3Ri
ZXp1Zyhib29sZWFuIGFic3RiZXp1ZykgewotICAgICAgICB0aGlzLmFic3RiZXp1ZyA9M0QgYWJz
dGJlenVnOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkFCU1RPRkZTRVQiLCBudWxs
YWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRD0KMykKLSAgICBwdWJsaWMgQmln
RGVjaW1hbCBnZXRBYnN0b2Zmc2V0KCkgewotICAgICAgICByZXR1cm4gdGhpcy5hYnN0b2Zmc2V0
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEFic3RvZmZzZXQoQmlnRGVjaW1hbCBhYnN0
b2Zmc2V0KSB7Ci0gICAgICAgIHRoaXMuYWJzdG9mZnNldCA9M0QgYWJzdG9mZnNldDsKLSAgICB9
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJBQlNUTElOS1MiLCBwcmVjaXNpb249M0Q4LCBzY2Fs
ZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0QWJzdGxpbmtzKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5hYnN0bGlua3M7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QWJzdGxp
bmtzKEJpZ0RlY2ltYWwgYWJzdGxpbmtzKSB7Ci0gICAgICAgIHRoaXMuYWJzdGxpbmtzID0zRCBh
YnN0bGlua3M7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUkVDSFRTIiwgcHJlY2lz
aW9uPTNEMTEsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSZWNodHMoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLnJlY2h0czsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXRSZWNodHMoQmlnRGVjaW1hbCByZWNodHMpIHsKLSAgICAgICAgdGhpcy5yZWNodHMgPTNEIHJl
Y2h0czsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJIT0NIIiwgcHJlY2lzaW9uPTNE
MTEsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRIb2NoKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5ob2NoOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEhvY2goQmln
RGVjaW1hbCBob2NoKSB7Ci0gICAgICAgIHRoaXMuaG9jaCA9M0QgaG9jaDsKLSAgICB9Ci0KLQot
ICAgIEBDb2x1bW4obmFtZT0zRCJIT0VIRSIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAg
ICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRIb2VoZSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaG9l
aGU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0SG9laGUoQmlnRGVjaW1hbCBob2VoZSkg
ewotICAgICAgICB0aGlzLmhvZWhlID0zRCBob2VoZTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4o
bmFtZT0zRCJCRU1FUktVTkciLCBsZW5ndGg9M0QyNDApCi0gICAgcHVibGljIFN0cmluZyBnZXRC
ZW1lcmt1bmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJlbWVya3VuZzsKLSAgICB9Ci0KLSAg
ICBwdWJsaWMgdm9pZCBzZXRCZW1lcmt1bmcoU3RyaW5nIGJlbWVya3VuZykgewotICAgICAgICB0
aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIlNPSExFQkVTQ0hSRUlCIiwgbGVuZ3RoPTNEMTAyNCkKLSAgICBwdWJsaWMgU3RyaW5nIGdl
dFNvaGxlYmVzY2hyZWliKCkgewotICAgICAgICByZXR1cm4gdGhpcy5zb2hsZWJlc2NocmVpYjsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTb2hsZWJlc2NocmVpYihTdHJpbmcgc29obGVi
ZXNjaHJlaWIpIHsKLSAgICAgICAgdGhpcy5zb2hsZWJlc2NocmVpYiA9M0Qgc29obGViZXNjaHJl
aWI7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiU09ORElFUlVOR0JFU0NIUkVJQiIs
IGxlbmd0aD0zRDEwMjQpCi0gICAgcHVibGljIFN0cmluZyBnZXRTb25kaWVydW5nYmVzY2hyZWli
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5zb25kaWVydW5nYmVzY2hyZWliOwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldFNvbmRpZXJ1bmdiZXNjaHJlaWIoU3RyaW5nIHNvbmRpZXJ1bmdi
ZXNjaHJlaWIpIHsKLSAgICAgICAgdGhpcy5zb25kaWVydW5nYmVzY2hyZWliID0zRCBzb25kaWVy
dW5nYmVzY2hyZWliOwotICAgIH0KLQotICAgIEBUZW1wb3JhbChUZW1wb3JhbFR5cGUuREFURSkK
LSAgICBAQ29sdW1uKG5hbWU9M0QiTEFTVFVQREFURUQiLCBudWxsYWJsZT0zRGZhbHNlLCBsZW5n
dGg9M0Q3KQotICAgIHB1YmxpYyBEYXRlIGdldExhc3R1cGRhdGVkKCkgewotICAgICAgICByZXR1
cm4gdGhpcy5sYXN0dXBkYXRlZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRMYXN0dXBk
YXRlZChEYXRlIGxhc3R1cGRhdGVkKSB7Ci0gICAgICAgIHRoaXMubGFzdHVwZGF0ZWQgPTNEIGxh
c3R1cGRhdGVkOwotICAgIH0KLQotQE9uZVRvTWFueShmZXRjaD0zREZldGNoVHlwZS5MQVpZLCBt
YXBwZWRCeT0zRCJzb2hsdGVzdCIpCi0gICAgcHVibGljIFNldDxCaWxkPiBnZXRCaWxkcygpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuYmlsZHM7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0
QmlsZHMoU2V0PEJpbGQ+IGJpbGRzKSB7Ci0gICAgICAgIHRoaXMuYmlsZHMgPTNEIGJpbGRzOwot
ICAgIH0KLQotQE9uZVRvTWFueShmZXRjaD0zREZldGNoVHlwZS5MQVpZLCBtYXBwZWRCeT0zRCJz
b2hsdGVzdCIpCi0gICAgcHVibGljIFNldDxTb2hscHJvYmU+IGdldFNvaGxwcm9iZXMoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLnNvaGxwcm9iZXM7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0U29obHByb2JlcyhTZXQ8U29obHByb2JlPiBzb2hscHJvYmVzKSB7Ci0gICAgICAgIHRoaXMu
c29obHByb2JlcyA9M0Qgc29obHByb2JlczsKLSAgICB9Ci19CmRpZmYgLXIgYmM0ZTFiZjI2MjI3
IC1yIDFlNjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9tYWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZT0K
ZGRiL21vZGVsL1Nwcm9iZS5qYXZhCi0tLSBhL2JhY2tlbmQvc3JjL21haW4vamF2YS9kZS9pbnRl
dmF0aW9uL3NlZGRiL21vZGVsL1Nwcm9iZS5qYXZhCU1vbiBBcHIgMj0KOSAxMToxNDoyNSAyMDEz
ICswMjAwCisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0x
LDE2MiArMCwwIEBACi0vKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVz
YW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQotICogU29mdHdhcmUgZW5naW5l
ZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICi0gKgotICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdh
cmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMpPTIwCi0gKiBhbmQgY29tZXMgd2l0aCBBQlNP
TFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCi0gKiBkb2N1bWVudGF0aW9uIGNvbWlu
ZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFpbHMuPTIwCi0gKi8KLQotcGFja2Fn
ZSBvcmcuZGl2ZTRlbGVtZW50cy5zZWRkYi5tb2RlbDsKLS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEy
IDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQuMC5DUjEKLQotCi1pbXBvcnQgamF2YS5t
YXRoLkJpZ0RlY2ltYWw7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQXR0cmlidXRlT3ZlcnJp
ZGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQXR0cmlidXRlT3ZlcnJpZGVzOwotaW1wb3J0
IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbWJl
ZGRlZElkOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKLWltcG9ydCBqYXZheC5w
ZXJzaXN0ZW5jZS5GZXRjaFR5cGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVt
bjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5NYW55VG9PbmU7Ci1pbXBvcnQgamF2YXgucGVy
c2lzdGVuY2UuVGFibGU7Ci0KLS8qKgotICogU3Byb2JlIGdlbmVyYXRlZCBieSBoYm0yamF2YQot
ICovCi1ARW50aXR5Ci1AVGFibGUobmFtZT0zRCJTUFJPQkUiCi0gICAgLHNjaGVtYT0zRCJTRURE
QiIKLSkKLXB1YmxpYyBjbGFzcyBTcHJvYmUgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFi
bGUgewotCi0KLSAgICAgcHJpdmF0ZSBTcHJvYmVJZCBpZDsKLSAgICAgcHJpdmF0ZSBTbG90cmVj
aHRlIHNsb3RyZWNodGU7Ci0gICAgIHByaXZhdGUgc2hvcnQgd3Byb3pwa3Q7Ci0gICAgIHByaXZh
dGUgQmlnRGVjaW1hbCB3cGt0OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdnBrdDsKLSAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIGNzYW5kcGt0OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgY3Nj
aHdlYnBrdDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHNhbmR0cmllYjsKLSAgICAgcHJpdmF0
ZSBCaWdEZWNpbWFsIHNjaHdlYnRyaWViOwotCi0gICAgcHVibGljIFNwcm9iZSgpIHsKLSAgICB9
Ci0KLQotICAgIHB1YmxpYyBTcHJvYmUoU3Byb2JlSWQgaWQsIFNsb3RyZWNodGUgc2xvdHJlY2h0
ZSwgc2hvcnQgd3Byb3pwa3QsIEJpZ0Q9CmVjaW1hbCB3cGt0LCBCaWdEZWNpbWFsIHZwa3QsIEJp
Z0RlY2ltYWwgY3NhbmRwa3QsIEJpZ0RlY2ltYWwgY3NjaHdlYnBrdCkgewotICAgICAgICB0aGlz
LmlkID0zRCBpZDsKLSAgICAgICAgdGhpcy5zbG90cmVjaHRlID0zRCBzbG90cmVjaHRlOwotICAg
ICAgICB0aGlzLndwcm96cGt0ID0zRCB3cHJvenBrdDsKLSAgICAgICAgdGhpcy53cGt0ID0zRCB3
cGt0OwotICAgICAgICB0aGlzLnZwa3QgPTNEIHZwa3Q7Ci0gICAgICAgIHRoaXMuY3NhbmRwa3Qg
PTNEIGNzYW5kcGt0OwotICAgICAgICB0aGlzLmNzY2h3ZWJwa3QgPTNEIGNzY2h3ZWJwa3Q7Ci0g
ICAgfQotICAgIHB1YmxpYyBTcHJvYmUoU3Byb2JlSWQgaWQsIFNsb3RyZWNodGUgc2xvdHJlY2h0
ZSwgc2hvcnQgd3Byb3pwa3QsIEJpZ0Q9CmVjaW1hbCB3cGt0LCBCaWdEZWNpbWFsIHZwa3QsIEJp
Z0RlY2ltYWwgY3NhbmRwa3QsIEJpZ0RlY2ltYWwgY3NjaHdlYnBrdCwgQj0KaWdEZWNpbWFsIHNh
bmR0cmllYiwgQmlnRGVjaW1hbCBzY2h3ZWJ0cmllYikgewotICAgICAgIHRoaXMuaWQgPTNEIGlk
OwotICAgICAgIHRoaXMuc2xvdHJlY2h0ZSA9M0Qgc2xvdHJlY2h0ZTsKLSAgICAgICB0aGlzLndw
cm96cGt0ID0zRCB3cHJvenBrdDsKLSAgICAgICB0aGlzLndwa3QgPTNEIHdwa3Q7Ci0gICAgICAg
dGhpcy52cGt0ID0zRCB2cGt0OwotICAgICAgIHRoaXMuY3NhbmRwa3QgPTNEIGNzYW5kcGt0Owot
ICAgICAgIHRoaXMuY3NjaHdlYnBrdCA9M0QgY3NjaHdlYnBrdDsKLSAgICAgICB0aGlzLnNhbmR0
cmllYiA9M0Qgc2FuZHRyaWViOwotICAgICAgIHRoaXMuc2Nod2VidHJpZWIgPTNEIHNjaHdlYnRy
aWViOwotICAgIH0KLQotICAgICBARW1iZWRkZWRJZAotCi0KLSAgICBAQXR0cmlidXRlT3ZlcnJp
ZGVzKCB7Ci0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInNsb3RyZWNodGVpZCIs
IGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRD0KIlNMT1RSRUNIVEVJRCIsIG51bGxhYmxlPTNEZmFs
c2UsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDApICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVy
cmlkZShuYW1lPTNEImxmZG5yIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkxGRE5SIj0KLCBu
dWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q1LCBzY2FsZT0zRDApICkgfSApCi0gICAgcHVi
bGljIFNwcm9iZUlkIGdldElkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5pZDsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRJZChTcHJvYmVJZCBpZCkgewotICAgICAgICB0aGlzLmlkID0z
RCBpZDsKLSAgICB9Ci0KLUBNYW55VG9PbmUoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSkKLSAgICBA
Sm9pbkNvbHVtbihuYW1lPTNEIlNMT1RSRUNIVEVJRCIsIG51bGxhYmxlPTNEZmFsc2UsIGluc2Vy
dGFibGU9M0RmYWxzPQplLCB1cGRhdGFibGU9M0RmYWxzZSkKLSAgICBwdWJsaWMgU2xvdHJlY2h0
ZSBnZXRTbG90cmVjaHRlKCkgewotICAgICAgICByZXR1cm4gdGhpcy5zbG90cmVjaHRlOwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNsb3RyZWNodGUoU2xvdHJlY2h0ZSBzbG90cmVjaHRl
KSB7Ci0gICAgICAgIHRoaXMuc2xvdHJlY2h0ZSA9M0Qgc2xvdHJlY2h0ZTsKLSAgICB9Ci0KLQot
ICAgIEBDb2x1bW4obmFtZT0zRCJXUFJPWlBLVCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lv
bj0zRDMsIHNjYWxlPTNEMCkKLSAgICBwdWJsaWMgc2hvcnQgZ2V0V3Byb3pwa3QoKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLndwcm96cGt0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFdw
cm96cGt0KHNob3J0IHdwcm96cGt0KSB7Ci0gICAgICAgIHRoaXMud3Byb3pwa3QgPTNEIHdwcm96
cGt0OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIldQS1QiLCBudWxsYWJsZT0zRGZh
bHNlLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0
V3BrdCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMud3BrdDsKLSAgICB9Ci0KLSAgICBwdWJsaWMg
dm9pZCBzZXRXcGt0KEJpZ0RlY2ltYWwgd3BrdCkgewotICAgICAgICB0aGlzLndwa3QgPTNEIHdw
a3Q7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVlBLVCIsIG51bGxhYmxlPTNEZmFs
c2UsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRW
cGt0KCkgewotICAgICAgICByZXR1cm4gdGhpcy52cGt0OwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldFZwa3QoQmlnRGVjaW1hbCB2cGt0KSB7Ci0gICAgICAgIHRoaXMudnBrdCA9M0QgdnBr
dDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJDU0FORFBLVCIsIG51bGxhYmxlPTNE
ZmFsc2UsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXRDc2FuZHBrdCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuY3NhbmRwa3Q7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0Q3NhbmRwa3QoQmlnRGVjaW1hbCBjc2FuZHBrdCkgewotICAgICAg
ICB0aGlzLmNzYW5kcGt0ID0zRCBjc2FuZHBrdDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFt
ZT0zRCJDU0NIV0VCUEtUIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9
M0Q9CjMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0Q3NjaHdlYnBrdCgpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuY3NjaHdlYnBrdDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRDc2No
d2VicGt0KEJpZ0RlY2ltYWwgY3NjaHdlYnBrdCkgewotICAgICAgICB0aGlzLmNzY2h3ZWJwa3Qg
PTNEIGNzY2h3ZWJwa3Q7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiU0FORFRSSUVC
IiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFNh
bmR0cmllYigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc2FuZHRyaWViOwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldFNhbmR0cmllYihCaWdEZWNpbWFsIHNhbmR0cmllYikgewotICAgICAg
ICB0aGlzLnNhbmR0cmllYiA9M0Qgc2FuZHRyaWViOwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIlNDSFdFQlRSSUVCIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldFNjaHdlYnRyaWViKCkgewotICAgICAgICByZXR1cm4gdGhpcy5zY2h3
ZWJ0cmllYjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTY2h3ZWJ0cmllYihCaWdEZWNp
bWFsIHNjaHdlYnRyaWViKSB7Ci0gICAgICAgIHRoaXMuc2Nod2VidHJpZWIgPTNEIHNjaHdlYnRy
aWViOwotICAgIH0KLX0KZGlmZiAtciBiYzRlMWJmMjYyMjcgLXIgMWU2OGVjYTI2YjhhIGJhY2tl
bmQvc3JjL21haW4vamF2YS9kZS9pbnRldmF0aW9uL3NlPQpkZGIvbW9kZWwvU3Byb2JlSWQuamF2
YQotLS0gYS9iYWNrZW5kL3NyYy9tYWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZWRkYi9tb2RlbC9T
cHJvYmVJZC5qYXZhCU1vbiBBcHI9CiAyOSAxMToxNDoyNSAyMDEzICswMjAwCisrKyAvZGV2L251
bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDczICswLDAgQEAKLS8qIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdl
dz1DMz1BNHNzZXJrPQp1bmRlCi0gKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9u
IEdtYkgKLSAqCi0gKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFH
UEwgKD49M0R2Myk9MjAKLSAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkh
IENoZWNrIG91dCB0aGUKLSAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50
cyBSaXZlciBmb3IgZGV0YWlscy49MjAKLSAqLwotCi1wYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRz
LnNlZGRiLm1vZGVsOwotLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJu
YXRlIFRvb2xzIDMuNC4wLkNSMQotCi0KLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47
Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW1iZWRkYWJsZTsKLQotLyoqCi0gKiBTcHJvYmVJ
ZCBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVtYmVkZGFibGUKLXB1YmxpYyBjbGFzcyBT
cHJvYmVJZCAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7Ci0KLQotICAgICBwcml2
YXRlIGxvbmcgc2xvdHJlY2h0ZWlkOwotICAgICBwcml2YXRlIGludCBsZmRucjsKLQotICAgIHB1
YmxpYyBTcHJvYmVJZCgpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3Byb2JlSWQobG9uZyBzbG90
cmVjaHRlaWQsIGludCBsZmRucikgewotICAgICAgIHRoaXMuc2xvdHJlY2h0ZWlkID0zRCBzbG90
cmVjaHRlaWQ7Ci0gICAgICAgdGhpcy5sZmRuciA9M0QgbGZkbnI7Ci0gICAgfQotCi0KLQotICAg
IEBDb2x1bW4obmFtZT0zRCJTTE9UUkVDSFRFSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNp
b249M0QxMSwgc2NhbGU9Cj0zRDApCi0gICAgcHVibGljIGxvbmcgZ2V0U2xvdHJlY2h0ZWlkKCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5zbG90cmVjaHRlaWQ7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0U2xvdHJlY2h0ZWlkKGxvbmcgc2xvdHJlY2h0ZWlkKSB7Ci0gICAgICAgIHRoaXMu
c2xvdHJlY2h0ZWlkID0zRCBzbG90cmVjaHRlaWQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiTEZETlIiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q1LCBzY2FsZT0zRDAp
Ci0gICAgcHVibGljIGludCBnZXRMZmRucigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubGZkbnI7
Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TGZkbnIoaW50IGxmZG5yKSB7Ci0gICAgICAg
IHRoaXMubGZkbnIgPTNEIGxmZG5yOwotICAgIH0KLQotCi0gICBwdWJsaWMgYm9vbGVhbiBlcXVh
bHMoT2JqZWN0IG90aGVyKSB7Ci0gICAgICAgICBpZiAoICh0aGlzID0zRD0zRCBvdGhlciApICkg
cmV0dXJuIHRydWU7Ci0gICAgICAgICBpZiAoIChvdGhlciA9M0Q9M0QgbnVsbCApICkgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgaWYgKCAhKG90aGVyIGluc3RhbmNlb2YgU3Byb2JlSWQpICkgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgU3Byb2JlSWQgY2FzdE90aGVyID0zRCAoIFNwcm9iZUlkICkg
b3RoZXI7Ci0KLSAgICAgICAgIHJldHVybiAodGhpcy5nZXRTbG90cmVjaHRlaWQoKT0zRD0zRGNh
c3RPdGhlci5nZXRTbG90cmVjaHRlaWQoKSkKLSAmJiAodGhpcy5nZXRMZmRucigpPTNEPTNEY2Fz
dE90aGVyLmdldExmZG5yKCkpOwotICAgfQotCi0gICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgewot
ICAgICAgICAgaW50IHJlc3VsdCA9M0QgMTc7Ci0KLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiBy
ZXN1bHQgKyAoaW50KSB0aGlzLmdldFNsb3RyZWNodGVpZCgpOwotICAgICAgICAgcmVzdWx0ID0z
RCAzNyAqIHJlc3VsdCArIHRoaXMuZ2V0TGZkbnIoKTsKLSAgICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICB9Ci19CmRpZmYgLXIgYmM0ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBiYWNrZW5kL3Ny
Yy9tYWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZT0KZGRiL21vZGVsL1NzaWVidW5nLmphdmEKLS0t
IGEvYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2VkZGIvbW9kZWwvU3NpZWJ1
bmcuamF2YQlNb24gQXByPQogMjkgMTE6MTQ6MjUgMjAxMyArMDIwMAorKysgL2Rldi9udWxsCVRo
dSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwzNTkgKzAsMCBAQAotLyogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMz
PUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21i
SAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAo
Pj0zRHYzKT0yMAotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hl
Y2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJp
dmVyIGZvciBkZXRhaWxzLj0yMAotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2Vk
ZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUg
VG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmEubWF0aC5CaWdEZWNpbWFsOwotaW1wb3J0
IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRp
dHk7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRmV0Y2hUeXBlOwotaW1wb3J0IGphdmF4LnBl
cnNpc3RlbmNlLkdlbmVyYXRlZFZhbHVlOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOwot
aW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkpvaW5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuTWFueVRvT25lOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk9uZVRvT25lOwotaW1w
b3J0IGphdmF4LnBlcnNpc3RlbmNlLlByaW1hcnlLZXlKb2luQ29sdW1uOwotaW1wb3J0IGphdmF4
LnBlcnNpc3RlbmNlLlRhYmxlOwotaW1wb3J0IG9yZy5oaWJlcm5hdGUuYW5ub3RhdGlvbnMuR2Vu
ZXJpY0dlbmVyYXRvcjsKLWltcG9ydCBvcmcuaGliZXJuYXRlLmFubm90YXRpb25zLlBhcmFtZXRl
cjsKLQotLyoqCi0gKiBTc2llYnVuZyBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVudGl0
eQotQFRhYmxlKG5hbWU9M0QiU1NJRUJVTkciCi0gICAgLHNjaGVtYT0zRCJTRUREQiIKLSkKLXB1
YmxpYyBjbGFzcyBTc2llYnVuZyAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7Ci0K
LQotICAgICBwcml2YXRlIGxvbmcgc2llYmFuYWx5c2VpZDsKLSAgICAgcHJpdmF0ZSBTaWViYW5h
bHlzZSBzaWViYW5hbHlzZTsKLSAgICAgcHJpdmF0ZSBHc2llYnNhdHogZ3NpZWJzYXR6OwotICAg
ICBwcml2YXRlIEJpZ0RlY2ltYWwgZ21hc3NlOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNp
ZWIwMTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMDI7Ci0gICAgIHByaXZhdGUgQmln
RGVjaW1hbCByc2llYjAzOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIwNDsKLSAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMDU7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2ll
YjA2OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIwNzsKLSAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIHJzaWViMDg7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjA5OwotICAgICBw
cml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIxMDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWVi
MTE7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjEyOwotICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgcnNpZWIxMzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMTQ7Ci0gICAgIHBy
aXZhdGUgQmlnRGVjaW1hbCByc2llYjE1OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIx
NjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMTc7Ci0gICAgIHByaXZhdGUgQmlnRGVj
aW1hbCByc2llYjE4OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIxOTsKLSAgICAgcHJp
dmF0ZSBCaWdEZWNpbWFsIHJzaWViMjA7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjIx
OwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcmVzdDsKLQotICAgIHB1YmxpYyBTc2llYnVuZygp
IHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3NpZWJ1bmcoU2llYmFuYWx5c2Ugc2llYmFuYWx5c2Us
IEdzaWVic2F0eiBnc2llYnNhdHopIHsKLSAgICAgICAgdGhpcy5zaWViYW5hbHlzZSA9M0Qgc2ll
YmFuYWx5c2U7Ci0gICAgICAgIHRoaXMuZ3NpZWJzYXR6ID0zRCBnc2llYnNhdHo7Ci0gICAgfQot
ICAgIHB1YmxpYyBTc2llYnVuZyhTaWViYW5hbHlzZSBzaWViYW5hbHlzZSwgR3NpZWJzYXR6IGdz
aWVic2F0eiwgQmlnRGVjaW09CmFsIGdtYXNzZSwgQmlnRGVjaW1hbCByc2llYjAxLCBCaWdEZWNp
bWFsIHJzaWViMDIsIEJpZ0RlY2ltYWwgcnNpZWIwMywgQmlnRD0KZWNpbWFsIHJzaWViMDQsIEJp
Z0RlY2ltYWwgcnNpZWIwNSwgQmlnRGVjaW1hbCByc2llYjA2LCBCaWdEZWNpbWFsIHJzaWViMDcs
PQogQmlnRGVjaW1hbCByc2llYjA4LCBCaWdEZWNpbWFsIHJzaWViMDksIEJpZ0RlY2ltYWwgcnNp
ZWIxMCwgQmlnRGVjaW1hbCByc2k9CmViMTEsIEJpZ0RlY2ltYWwgcnNpZWIxMiwgQmlnRGVjaW1h
bCByc2llYjEzLCBCaWdEZWNpbWFsIHJzaWViMTQsIEJpZ0RlY2ltYT0KbCByc2llYjE1LCBCaWdE
ZWNpbWFsIHJzaWViMTYsIEJpZ0RlY2ltYWwgcnNpZWIxNywgQmlnRGVjaW1hbCByc2llYjE4LCBC
aWdEPQplY2ltYWwgcnNpZWIxOSwgQmlnRGVjaW1hbCByc2llYjIwLCBCaWdEZWNpbWFsIHJzaWVi
MjEsIEJpZ0RlY2ltYWwgcmVzdCkgewotICAgICAgIHRoaXMuc2llYmFuYWx5c2UgPTNEIHNpZWJh
bmFseXNlOwotICAgICAgIHRoaXMuZ3NpZWJzYXR6ID0zRCBnc2llYnNhdHo7Ci0gICAgICAgdGhp
cy5nbWFzc2UgPTNEIGdtYXNzZTsKLSAgICAgICB0aGlzLnJzaWViMDEgPTNEIHJzaWViMDE7Ci0g
ICAgICAgdGhpcy5yc2llYjAyID0zRCByc2llYjAyOwotICAgICAgIHRoaXMucnNpZWIwMyA9M0Qg
cnNpZWIwMzsKLSAgICAgICB0aGlzLnJzaWViMDQgPTNEIHJzaWViMDQ7Ci0gICAgICAgdGhpcy5y
c2llYjA1ID0zRCByc2llYjA1OwotICAgICAgIHRoaXMucnNpZWIwNiA9M0QgcnNpZWIwNjsKLSAg
ICAgICB0aGlzLnJzaWViMDcgPTNEIHJzaWViMDc7Ci0gICAgICAgdGhpcy5yc2llYjA4ID0zRCBy
c2llYjA4OwotICAgICAgIHRoaXMucnNpZWIwOSA9M0QgcnNpZWIwOTsKLSAgICAgICB0aGlzLnJz
aWViMTAgPTNEIHJzaWViMTA7Ci0gICAgICAgdGhpcy5yc2llYjExID0zRCByc2llYjExOwotICAg
ICAgIHRoaXMucnNpZWIxMiA9M0QgcnNpZWIxMjsKLSAgICAgICB0aGlzLnJzaWViMTMgPTNEIHJz
aWViMTM7Ci0gICAgICAgdGhpcy5yc2llYjE0ID0zRCByc2llYjE0OwotICAgICAgIHRoaXMucnNp
ZWIxNSA9M0QgcnNpZWIxNTsKLSAgICAgICB0aGlzLnJzaWViMTYgPTNEIHJzaWViMTY7Ci0gICAg
ICAgdGhpcy5yc2llYjE3ID0zRCByc2llYjE3OwotICAgICAgIHRoaXMucnNpZWIxOCA9M0QgcnNp
ZWIxODsKLSAgICAgICB0aGlzLnJzaWViMTkgPTNEIHJzaWViMTk7Ci0gICAgICAgdGhpcy5yc2ll
YjIwID0zRCByc2llYjIwOwotICAgICAgIHRoaXMucnNpZWIyMSA9M0QgcnNpZWIyMTsKLSAgICAg
ICB0aGlzLnJlc3QgPTNEIHJlc3Q7Ci0gICAgfQotCi0gICAgIEBHZW5lcmljR2VuZXJhdG9yKG5h
bWU9M0QiZ2VuZXJhdG9yIiwgc3RyYXRlZ3k9M0QiZm9yZWlnbiIsIHBhcmFtZXRlcj0Kcz0zREBQ
YXJhbWV0ZXIobmFtZT0zRCJwcm9wZXJ0eSIsIHZhbHVlPTNEInNpZWJhbmFseXNlIikpQElkIEBH
ZW5lcmF0ZWRWYWx1PQplKGdlbmVyYXRvcj0zRCJnZW5lcmF0b3IiKQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiU0lFQkFOQUxZU0VJRCIsIHVuaXF1ZT0zRHRydWUsIG51bGxhYmxlPTNEZmFsc2Us
IHByZWNpPQpzaW9uPTNEMTEsIHNjYWxlPTNEMCkKLSAgICBwdWJsaWMgbG9uZyBnZXRTaWViYW5h
bHlzZWlkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5zaWViYW5hbHlzZWlkOwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldFNpZWJhbmFseXNlaWQobG9uZyBzaWViYW5hbHlzZWlkKSB7Ci0g
ICAgICAgIHRoaXMuc2llYmFuYWx5c2VpZCA9M0Qgc2llYmFuYWx5c2VpZDsKLSAgICB9Ci0KLUBP
bmVUb09uZShmZXRjaD0zREZldGNoVHlwZS5MQVpZKUBQcmltYXJ5S2V5Sm9pbkNvbHVtbgotICAg
IHB1YmxpYyBTaWViYW5hbHlzZSBnZXRTaWViYW5hbHlzZSgpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuc2llYmFuYWx5c2U7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U2llYmFuYWx5c2Uo
U2llYmFuYWx5c2Ugc2llYmFuYWx5c2UpIHsKLSAgICAgICAgdGhpcy5zaWViYW5hbHlzZSA9M0Qg
c2llYmFuYWx5c2U7Ci0gICAgfQotCi1ATWFueVRvT25lKGZldGNoPTNERmV0Y2hUeXBlLkxBWlkp
Ci0gICAgQEpvaW5Db2x1bW4obmFtZT0zRCJHU0lFQlNBVFpJRCIsIG51bGxhYmxlPTNEZmFsc2Up
Ci0gICAgcHVibGljIEdzaWVic2F0eiBnZXRHc2llYnNhdHooKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLmdzaWVic2F0ejsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRHc2llYnNhdHooR3Np
ZWJzYXR6IGdzaWVic2F0eikgewotICAgICAgICB0aGlzLmdzaWVic2F0eiA9M0QgZ3NpZWJzYXR6
OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkdNQVNTRSIsIHByZWNpc2lvbj0zRDks
IHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRHbWFzc2UoKSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLmdtYXNzZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRHbWFzc2Uo
QmlnRGVjaW1hbCBnbWFzc2UpIHsKLSAgICAgICAgdGhpcy5nbWFzc2UgPTNEIGdtYXNzZTsKLSAg
ICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSU0lFQjAxIiwgcHJlY2lzaW9uPTNEOSwgc2Nh
bGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMDEoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLnJzaWViMDE7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnNpZWIwMShC
aWdEZWNpbWFsIHJzaWViMDEpIHsKLSAgICAgICAgdGhpcy5yc2llYjAxID0zRCByc2llYjAxOwot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJTSUVCMDIiLCBwcmVjaXNpb249M0Q5LCBz
Y2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIwMigpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMucnNpZWIwMjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjAy
KEJpZ0RlY2ltYWwgcnNpZWIwMikgewotICAgICAgICB0aGlzLnJzaWViMDIgPTNEIHJzaWViMDI7
Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIwMyIsIHByZWNpc2lvbj0zRDks
IHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSc2llYjAzKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5yc2llYjAzOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJzaWVi
MDMoQmlnRGVjaW1hbCByc2llYjAzKSB7Ci0gICAgICAgIHRoaXMucnNpZWIwMyA9M0QgcnNpZWIw
MzsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSU0lFQjA0IiwgcHJlY2lzaW9uPTNE
OSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMDQoKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLnJzaWViMDQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnNp
ZWIwNChCaWdEZWNpbWFsIHJzaWViMDQpIHsKLSAgICAgICAgdGhpcy5yc2llYjA0ID0zRCByc2ll
YjA0OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJTSUVCMDUiLCBwcmVjaXNpb249
M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIwNSgpIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMucnNpZWIwNTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRS
c2llYjA1KEJpZ0RlY2ltYWwgcnNpZWIwNSkgewotICAgICAgICB0aGlzLnJzaWViMDUgPTNEIHJz
aWViMDU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIwNiIsIHByZWNpc2lv
bj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSc2llYjA2KCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5yc2llYjA2OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dFJzaWViMDYoQmlnRGVjaW1hbCByc2llYjA2KSB7Ci0gICAgICAgIHRoaXMucnNpZWIwNiA9M0Qg
cnNpZWIwNjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSU0lFQjA3IiwgcHJlY2lz
aW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMDcoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLnJzaWViMDc7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0UnNpZWIwNyhCaWdEZWNpbWFsIHJzaWViMDcpIHsKLSAgICAgICAgdGhpcy5yc2llYjA3ID0z
RCByc2llYjA3OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJTSUVCMDgiLCBwcmVj
aXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIwOCgp
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIwODsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXRSc2llYjA4KEJpZ0RlY2ltYWwgcnNpZWIwOCkgewotICAgICAgICB0aGlzLnJzaWViMDgg
PTNEIHJzaWViMDg7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIwOSIsIHBy
ZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSc2llYjA5
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5yc2llYjA5OwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldFJzaWViMDkoQmlnRGVjaW1hbCByc2llYjA5KSB7Ci0gICAgICAgIHRoaXMucnNpZWIw
OSA9M0QgcnNpZWIwOTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSU0lFQjEwIiwg
cHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJzaWVi
MTAoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJzaWViMTA7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0UnNpZWIxMChCaWdEZWNpbWFsIHJzaWViMTApIHsKLSAgICAgICAgdGhpcy5yc2ll
YjEwID0zRCByc2llYjEwOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJTSUVCMTEi
LCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNp
ZWIxMSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIxMTsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRSc2llYjExKEJpZ0RlY2ltYWwgcnNpZWIxMSkgewotICAgICAgICB0aGlzLnJz
aWViMTEgPTNEIHJzaWViMTE7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIx
MiIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRS
c2llYjEyKCkgewotICAgICAgICByZXR1cm4gdGhpcy5yc2llYjEyOwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldFJzaWViMTIoQmlnRGVjaW1hbCByc2llYjEyKSB7Ci0gICAgICAgIHRoaXMu
cnNpZWIxMiA9M0QgcnNpZWIxMjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSU0lF
QjEzIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdl
dFJzaWViMTMoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJzaWViMTM7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0UnNpZWIxMyhCaWdEZWNpbWFsIHJzaWViMTMpIHsKLSAgICAgICAgdGhp
cy5yc2llYjEzID0zRCByc2llYjEzOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJT
SUVCMTQiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0UnNpZWIxNCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIxNDsKLSAgICB9Ci0KLSAg
ICBwdWJsaWMgdm9pZCBzZXRSc2llYjE0KEJpZ0RlY2ltYWwgcnNpZWIxNCkgewotICAgICAgICB0
aGlzLnJzaWViMTQgPTNEIHJzaWViMTQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0Qi
UlNJRUIxNSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1h
bCBnZXRSc2llYjE1KCkgewotICAgICAgICByZXR1cm4gdGhpcy5yc2llYjE1OwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMTUoQmlnRGVjaW1hbCByc2llYjE1KSB7Ci0gICAgICAg
IHRoaXMucnNpZWIxNSA9M0QgcnNpZWIxNTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0z
RCJSU0lFQjE2IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNp
bWFsIGdldFJzaWViMTYoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJzaWViMTY7Ci0gICAgfQot
Ci0gICAgcHVibGljIHZvaWQgc2V0UnNpZWIxNihCaWdEZWNpbWFsIHJzaWViMTYpIHsKLSAgICAg
ICAgdGhpcy5yc2llYjE2ID0zRCByc2llYjE2OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIlJTSUVCMTciLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0UnNpZWIxNygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIxNzsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjE3KEJpZ0RlY2ltYWwgcnNpZWIxNykgewotICAg
ICAgICB0aGlzLnJzaWViMTcgPTNEIHJzaWViMTc7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiUlNJRUIxOCIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmln
RGVjaW1hbCBnZXRSc2llYjE4KCkgewotICAgICAgICByZXR1cm4gdGhpcy5yc2llYjE4OwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMTgoQmlnRGVjaW1hbCByc2llYjE4KSB7Ci0g
ICAgICAgIHRoaXMucnNpZWIxOCA9M0QgcnNpZWIxODsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4o
bmFtZT0zRCJSU0lFQjE5IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBC
aWdEZWNpbWFsIGdldFJzaWViMTkoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJzaWViMTk7Ci0g
ICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnNpZWIxOShCaWdEZWNpbWFsIHJzaWViMTkpIHsK
LSAgICAgICAgdGhpcy5yc2llYjE5ID0zRCByc2llYjE5OwotICAgIH0KLQotCi0gICAgQENvbHVt
bihuYW1lPTNEIlJTSUVCMjAiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGlj
IEJpZ0RlY2ltYWwgZ2V0UnNpZWIyMCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIyMDsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjIwKEJpZ0RlY2ltYWwgcnNpZWIyMCkg
ewotICAgICAgICB0aGlzLnJzaWViMjAgPTNEIHJzaWViMjA7Ci0gICAgfQotCi0KLSAgICBAQ29s
dW1uKG5hbWU9M0QiUlNJRUIyMSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXRSc2llYjIxKCkgewotICAgICAgICByZXR1cm4gdGhpcy5yc2llYjIx
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMjEoQmlnRGVjaW1hbCByc2llYjIx
KSB7Ci0gICAgICAgIHRoaXMucnNpZWIyMSA9M0QgcnNpZWIyMTsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJSRVNUIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldFJlc3QoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJlc3Q7Ci0gICAg
fQotCi0gICAgcHVibGljIHZvaWQgc2V0UmVzdChCaWdEZWNpbWFsIHJlc3QpIHsKLSAgICAgICAg
dGhpcy5yZXN0ID0zRCByZXN0OwotICAgIH0KLX0KZGlmZiAtciBiYzRlMWJmMjYyMjcgLXIgMWU2
OGVjYTI2YjhhIGJhY2tlbmQvc3JjL21haW4vamF2YS9kZS9pbnRldmF0aW9uL3NlPQpkZGIvbW9k
ZWwvU3NpZWJ1bmdzaWViLmphdmEKLS0tIGEvYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2
YXRpb24vc2VkZGIvbW9kZWwvU3NpZWJ1bmdzaWViLmphdmEJTW9uPQogQXByIDI5IDExOjE0OjI1
IDIwMTMgKzAyMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAK
QEAgLTEsOTYgKzAsMCBAQAotLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1
bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVu
Z2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNv
ZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAotICogYW5kIGNvbWVzIHdpdGgg
QUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBj
b21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAotICovCi0KLXBh
Y2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYu
MjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0ZU92ZXJyaWRlOwotaW1wb3J0IGphdmF4LnBlcnNpc3Rl
bmNlLkF0dHJpYnV0ZU92ZXJyaWRlczsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47
Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW1iZWRkZWRJZDsKLWltcG9ydCBqYXZheC5wZXJz
aXN0ZW5jZS5FbnRpdHk7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7Ci0KLS8qKgot
ICogU3NpZWJ1bmdzaWViIGdlbmVyYXRlZCBieSBoYm0yamF2YQotICovCi1ARW50aXR5Ci1AVGFi
bGUobmFtZT0zRCJTU0lFQlVOR1NJRUIiCi0gICAgLHNjaGVtYT0zRCJTRUREQiIKLSkKLXB1Ymxp
YyBjbGFzcyBTc2llYnVuZ3NpZWIgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgewot
Ci0KLSAgICAgcHJpdmF0ZSBTc2llYnVuZ3NpZWJJZCBpZDsKLQotICAgIHB1YmxpYyBTc2llYnVu
Z3NpZWIoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIFNzaWVidW5nc2llYihTc2llYnVuZ3NpZWJJ
ZCBpZCkgewotICAgICAgIHRoaXMuaWQgPTNEIGlkOwotICAgIH0KLQotICAgICBARW1iZWRkZWRJ
ZAotCi0KLSAgICBAQXR0cmlidXRlT3ZlcnJpZGVzKCB7Ci0gICAgICAgIEBBdHRyaWJ1dGVPdmVy
cmlkZShuYW1lPTNEInNpZWJhbmFseXNlaWQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9Cj0zRCJT
SUVCQU5BTFlTRUlEIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNE
MCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZ3NpZWJzYXR6aWQiLCBj
b2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiPQpHU0lFQlNBVFpJRCIsIG51bGxhYmxlPTNEZmFsc2Us
IHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDApICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlk
ZShuYW1lPTNEImdtYXNzZSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJHTUFTUz0KRSIsIHBy
ZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5h
bWU9M0QibWFzY2hlMDEiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpDSEUwMSIsIHBy
ZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5h
bWU9M0QicnVlY2swMSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpLMDEiLCBwcmVj
aXNpb249M0Q5LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1l
PTNEIm1hc2NoZTAyIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMDIiLCBwcmVj
aXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1l
PTNEInJ1ZWNrMDIiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzAyIiwgcHJlY2lz
aW9uPTNEOSwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0z
RCJtYXNjaGUwMyIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNIRTAzIiwgcHJlY2lz
aW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0z
RCJydWVjazAzIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9CkswMyIsIHByZWNpc2lv
bj0zRDksIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qi
bWFzY2hlMDQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpDSEUwNCIsIHByZWNpc2lv
bj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qi
cnVlY2swNCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpLMDQiLCBwcmVjaXNpb249
M0Q5LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1h
c2NoZTA1IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMDUiLCBwcmVjaXNpb249
M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1
ZWNrMDUiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzA1IiwgcHJlY2lzaW9uPTNE
OSwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNj
aGUwNiIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNIRTA2IiwgcHJlY2lzaW9uPTNE
Nywgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVj
azA2IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9CkswNiIsIHByZWNpc2lvbj0zRDks
IHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hl
MDciLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpDSEUwNyIsIHByZWNpc2lvbj0zRDcs
IHNjYWxlPTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2sw
NyIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpLMDciLCBwcmVjaXNpb249M0Q5LCBz
Y2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTA4
IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMDgiLCBwcmVjaXNpb249M0Q3LCBz
Y2FsZT0zRDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMDgi
LCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzA4IiwgcHJlY2lzaW9uPTNEOSwgc2Nh
bGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUwOSIs
IGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNIRTA5IiwgcHJlY2lzaW9uPTNENywgc2Nh
bGU9M0Q0KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazA5Iiwg
Y29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9CkswOSIsIHByZWNpc2lvbj0zRDksIHNjYWxl
PTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hlMTAiLCBj
b2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpDSEUxMCIsIHByZWNpc2lvbj0zRDcsIHNjYWxl
PTNENCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2sxMCIsIGNv
bHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpLMTAiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0z
RDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTExIiwgY29s
dW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMTEiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0z
RDQpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMTEiLCBjb2x1
bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzExIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0Qz
KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUxMiIsIGNvbHVt
bj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNIRTEyIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0
KSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazEyIiwgY29sdW1u
PTNEQENvbHVtbihuYW1lPTNEIlJVRUM9CksxMiIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykg
KSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hlMTMiLCBjb2x1bW49
M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpDSEUxMyIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkg
KSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2sxMyIsIGNvbHVtbj0z
REBDb2x1bW4obmFtZT0zRCJSVUVDPQpLMTMiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICks
Ci0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTE0IiwgY29sdW1uPTNE
QENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMTQiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICks
Ci0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMTQiLCBjb2x1bW49M0RA
Q29sdW1uKG5hbWU9M0QiUlVFQz0KSzE0IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAot
ICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUxNSIsIGNvbHVtbj0zREBD
b2x1bW4obmFtZT0zRCJNQVM9CkNIRTE1IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAot
ICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazE1IiwgY29sdW1uPTNEQENv
bHVtbihuYW1lPTNEIlJVRUM9CksxNSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKLSAg
ICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hlMTYiLCBjb2x1bW49M0RAQ29s
dW1uKG5hbWU9M0QiTUFTPQpDSEUxNiIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAg
ICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2sxNiIsIGNvbHVtbj0zREBDb2x1
bW4obmFtZT0zRCJSVUVDPQpLMTYiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCi0gICAg
ICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTE3IiwgY29sdW1uPTNEQENvbHVt
bihuYW1lPTNEIk1BUz0KQ0hFMTciLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAg
ICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMTciLCBjb2x1bW49M0RAQ29sdW1u
KG5hbWU9M0QiUlVFQz0KSzE3IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAotICAgICAg
ICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUxOCIsIGNvbHVtbj0zREBDb2x1bW4o
bmFtZT0zRCJNQVM9CkNIRTE4IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAgICAg
ICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazE4IiwgY29sdW1uPTNEQENvbHVtbihu
YW1lPTNEIlJVRUM9CksxOCIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKLSAgICAgICAg
QEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hlMTkiLCBjb2x1bW49M0RAQ29sdW1uKG5h
bWU9M0QiTUFTPQpDSEUxOSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKLSAgICAgICAg
QEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2sxOSIsIGNvbHVtbj0zREBDb2x1bW4obmFt
ZT0zRCJSVUVDPQpLMTkiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBB
dHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTIwIiwgY29sdW1uPTNEQENvbHVtbihuYW1l
PTNEIk1BUz0KQ0hFMjAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCi0gICAgICAgIEBB
dHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMjAiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9
M0QiUlVFQz0KSzIwIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0
cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUyMSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0z
RCJNQVM9CkNIRTIxIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAotICAgICAgICBAQXR0
cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazIxIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNE
IlJVRUM9CksyMSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJp
YnV0ZU92ZXJyaWRlKG5hbWU9M0QicmVzdCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSRVNU
IiwgPQpwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICkgfSApCi0gICAgcHVibGljIFNzaWVidW5n
c2llYklkIGdldElkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5pZDsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRJZChTc2llYnVuZ3NpZWJJZCBpZCkgewotICAgICAgICB0aGlzLmlkID0z
RCBpZDsKLSAgICB9Ci19CmRpZmYgLXIgYmM0ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBiYWNr
ZW5kL3NyYy9tYWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZT0KZGRiL21vZGVsL1NzaWVidW5nc2ll
YklkLmphdmEKLS0tIGEvYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2VkZGIv
bW9kZWwvU3NpZWJ1bmdzaWViSWQuamF2YQlNPQpvbiBBcHIgMjkgMTE6MTQ6MjUgMjAxMyArMDIw
MAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSw2OTQg
KzAsMCBAQAotLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3Rh
bHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5n
IGJ5IEludGV2YXRpb24gR21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVu
ZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVM
WSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0
aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAotICovCi0KLXBhY2thZ2Ugb3Jn
LmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMToz
MDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmEubWF0aC5C
aWdEZWNpbWFsOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZh
eC5wZXJzaXN0ZW5jZS5FbWJlZGRhYmxlOwotCi0vKioKLSAqIFNzaWVidW5nc2llYklkIGdlbmVy
YXRlZCBieSBoYm0yamF2YQotICovCi1ARW1iZWRkYWJsZQotcHVibGljIGNsYXNzIFNzaWVidW5n
c2llYklkICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAgIHByaXZh
dGUgbG9uZyBzaWViYW5hbHlzZWlkOwotICAgICBwcml2YXRlIGxvbmcgZ3NpZWJzYXR6aWQ7Ci0g
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCBnbWFzc2U7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBt
YXNjaGUwMTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMDE7Ci0gICAgIHByaXZhdGUg
QmlnRGVjaW1hbCBtYXNjaGUwMjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMDI7Ci0g
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUwMzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IHJ1ZWNrMDM7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUwNDsKLSAgICAgcHJpdmF0
ZSBCaWdEZWNpbWFsIHJ1ZWNrMDQ7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUwNTsK
LSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMDU7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1h
bCBtYXNjaGUwNjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMDY7Ci0gICAgIHByaXZh
dGUgQmlnRGVjaW1hbCBtYXNjaGUwNzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMDc7
Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUwODsKLSAgICAgcHJpdmF0ZSBCaWdEZWNp
bWFsIHJ1ZWNrMDg7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUwOTsKLSAgICAgcHJp
dmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMDk7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUx
MDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMTA7Ci0gICAgIHByaXZhdGUgQmlnRGVj
aW1hbCBtYXNjaGUxMTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMTE7Ci0gICAgIHBy
aXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUxMjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNr
MTI7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUxMzsKLSAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIHJ1ZWNrMTM7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUxNDsKLSAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMTQ7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNj
aGUxNTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMTU7Ci0gICAgIHByaXZhdGUgQmln
RGVjaW1hbCBtYXNjaGUxNjsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMTY7Ci0gICAg
IHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUxNzsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1
ZWNrMTc7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUxODsKLSAgICAgcHJpdmF0ZSBC
aWdEZWNpbWFsIHJ1ZWNrMTg7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUxOTsKLSAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMTk7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBt
YXNjaGUyMDsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMjA7Ci0gICAgIHByaXZhdGUg
QmlnRGVjaW1hbCBtYXNjaGUyMTsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMjE7Ci0g
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCByZXN0OwotCi0gICAgcHVibGljIFNzaWVidW5nc2llYklk
KCkgewotICAgIH0KLQotICAgIHB1YmxpYyBTc2llYnVuZ3NpZWJJZChsb25nIHNpZWJhbmFseXNl
aWQsIGxvbmcgZ3NpZWJzYXR6aWQpIHsKLSAgICAgICAgdGhpcy5zaWViYW5hbHlzZWlkID0zRCBz
aWViYW5hbHlzZWlkOwotICAgICAgICB0aGlzLmdzaWVic2F0emlkID0zRCBnc2llYnNhdHppZDsK
LSAgICB9Ci0gICAgcHVibGljIFNzaWVidW5nc2llYklkKGxvbmcgc2llYmFuYWx5c2VpZCwgbG9u
ZyBnc2llYnNhdHppZCwgQmlnRGVjaW1hbD0KIGdtYXNzZSwgQmlnRGVjaW1hbCBtYXNjaGUwMSwg
QmlnRGVjaW1hbCBydWVjazAxLCBCaWdEZWNpbWFsIG1hc2NoZTAyLCBCaWdEPQplY2ltYWwgcnVl
Y2swMiwgQmlnRGVjaW1hbCBtYXNjaGUwMywgQmlnRGVjaW1hbCBydWVjazAzLCBCaWdEZWNpbWFs
IG1hc2NoZTA9CjQsIEJpZ0RlY2ltYWwgcnVlY2swNCwgQmlnRGVjaW1hbCBtYXNjaGUwNSwgQmln
RGVjaW1hbCBydWVjazA1LCBCaWdEZWNpbWFsID0KbWFzY2hlMDYsIEJpZ0RlY2ltYWwgcnVlY2sw
NiwgQmlnRGVjaW1hbCBtYXNjaGUwNywgQmlnRGVjaW1hbCBydWVjazA3LCBCaWdEPQplY2ltYWwg
bWFzY2hlMDgsIEJpZ0RlY2ltYWwgcnVlY2swOCwgQmlnRGVjaW1hbCBtYXNjaGUwOSwgQmlnRGVj
aW1hbCBydWVjazA9CjksIEJpZ0RlY2ltYWwgbWFzY2hlMTAsIEJpZ0RlY2ltYWwgcnVlY2sxMCwg
QmlnRGVjaW1hbCBtYXNjaGUxMSwgQmlnRGVjaW1hbD0KIHJ1ZWNrMTEsIEJpZ0RlY2ltYWwgbWFz
Y2hlMTIsIEJpZ0RlY2ltYWwgcnVlY2sxMiwgQmlnRGVjaW1hbCBtYXNjaGUxMywgQmlnPQpEZWNp
bWFsIHJ1ZWNrMTMsIEJpZ0RlY2ltYWwgbWFzY2hlMTQsIEJpZ0RlY2ltYWwgcnVlY2sxNCwgQmln
RGVjaW1hbCBtYXNjaGU9CjE1LCBCaWdEZWNpbWFsIHJ1ZWNrMTUsIEJpZ0RlY2ltYWwgbWFzY2hl
MTYsIEJpZ0RlY2ltYWwgcnVlY2sxNiwgQmlnRGVjaW1hbD0KIG1hc2NoZTE3LCBCaWdEZWNpbWFs
IHJ1ZWNrMTcsIEJpZ0RlY2ltYWwgbWFzY2hlMTgsIEJpZ0RlY2ltYWwgcnVlY2sxOCwgQmlnPQpE
ZWNpbWFsIG1hc2NoZTE5LCBCaWdEZWNpbWFsIHJ1ZWNrMTksIEJpZ0RlY2ltYWwgbWFzY2hlMjAs
IEJpZ0RlY2ltYWwgcnVlY2s9CjIwLCBCaWdEZWNpbWFsIG1hc2NoZTIxLCBCaWdEZWNpbWFsIHJ1
ZWNrMjEsIEJpZ0RlY2ltYWwgcmVzdCkgewotICAgICAgIHRoaXMuc2llYmFuYWx5c2VpZCA9M0Qg
c2llYmFuYWx5c2VpZDsKLSAgICAgICB0aGlzLmdzaWVic2F0emlkID0zRCBnc2llYnNhdHppZDsK
LSAgICAgICB0aGlzLmdtYXNzZSA9M0QgZ21hc3NlOwotICAgICAgIHRoaXMubWFzY2hlMDEgPTNE
IG1hc2NoZTAxOwotICAgICAgIHRoaXMucnVlY2swMSA9M0QgcnVlY2swMTsKLSAgICAgICB0aGlz
Lm1hc2NoZTAyID0zRCBtYXNjaGUwMjsKLSAgICAgICB0aGlzLnJ1ZWNrMDIgPTNEIHJ1ZWNrMDI7
Ci0gICAgICAgdGhpcy5tYXNjaGUwMyA9M0QgbWFzY2hlMDM7Ci0gICAgICAgdGhpcy5ydWVjazAz
ID0zRCBydWVjazAzOwotICAgICAgIHRoaXMubWFzY2hlMDQgPTNEIG1hc2NoZTA0OwotICAgICAg
IHRoaXMucnVlY2swNCA9M0QgcnVlY2swNDsKLSAgICAgICB0aGlzLm1hc2NoZTA1ID0zRCBtYXNj
aGUwNTsKLSAgICAgICB0aGlzLnJ1ZWNrMDUgPTNEIHJ1ZWNrMDU7Ci0gICAgICAgdGhpcy5tYXNj
aGUwNiA9M0QgbWFzY2hlMDY7Ci0gICAgICAgdGhpcy5ydWVjazA2ID0zRCBydWVjazA2OwotICAg
ICAgIHRoaXMubWFzY2hlMDcgPTNEIG1hc2NoZTA3OwotICAgICAgIHRoaXMucnVlY2swNyA9M0Qg
cnVlY2swNzsKLSAgICAgICB0aGlzLm1hc2NoZTA4ID0zRCBtYXNjaGUwODsKLSAgICAgICB0aGlz
LnJ1ZWNrMDggPTNEIHJ1ZWNrMDg7Ci0gICAgICAgdGhpcy5tYXNjaGUwOSA9M0QgbWFzY2hlMDk7
Ci0gICAgICAgdGhpcy5ydWVjazA5ID0zRCBydWVjazA5OwotICAgICAgIHRoaXMubWFzY2hlMTAg
PTNEIG1hc2NoZTEwOwotICAgICAgIHRoaXMucnVlY2sxMCA9M0QgcnVlY2sxMDsKLSAgICAgICB0
aGlzLm1hc2NoZTExID0zRCBtYXNjaGUxMTsKLSAgICAgICB0aGlzLnJ1ZWNrMTEgPTNEIHJ1ZWNr
MTE7Ci0gICAgICAgdGhpcy5tYXNjaGUxMiA9M0QgbWFzY2hlMTI7Ci0gICAgICAgdGhpcy5ydWVj
azEyID0zRCBydWVjazEyOwotICAgICAgIHRoaXMubWFzY2hlMTMgPTNEIG1hc2NoZTEzOwotICAg
ICAgIHRoaXMucnVlY2sxMyA9M0QgcnVlY2sxMzsKLSAgICAgICB0aGlzLm1hc2NoZTE0ID0zRCBt
YXNjaGUxNDsKLSAgICAgICB0aGlzLnJ1ZWNrMTQgPTNEIHJ1ZWNrMTQ7Ci0gICAgICAgdGhpcy5t
YXNjaGUxNSA9M0QgbWFzY2hlMTU7Ci0gICAgICAgdGhpcy5ydWVjazE1ID0zRCBydWVjazE1Owot
ICAgICAgIHRoaXMubWFzY2hlMTYgPTNEIG1hc2NoZTE2OwotICAgICAgIHRoaXMucnVlY2sxNiA9
M0QgcnVlY2sxNjsKLSAgICAgICB0aGlzLm1hc2NoZTE3ID0zRCBtYXNjaGUxNzsKLSAgICAgICB0
aGlzLnJ1ZWNrMTcgPTNEIHJ1ZWNrMTc7Ci0gICAgICAgdGhpcy5tYXNjaGUxOCA9M0QgbWFzY2hl
MTg7Ci0gICAgICAgdGhpcy5ydWVjazE4ID0zRCBydWVjazE4OwotICAgICAgIHRoaXMubWFzY2hl
MTkgPTNEIG1hc2NoZTE5OwotICAgICAgIHRoaXMucnVlY2sxOSA9M0QgcnVlY2sxOTsKLSAgICAg
ICB0aGlzLm1hc2NoZTIwID0zRCBtYXNjaGUyMDsKLSAgICAgICB0aGlzLnJ1ZWNrMjAgPTNEIHJ1
ZWNrMjA7Ci0gICAgICAgdGhpcy5tYXNjaGUyMSA9M0QgbWFzY2hlMjE7Ci0gICAgICAgdGhpcy5y
dWVjazIxID0zRCBydWVjazIxOwotICAgICAgIHRoaXMucmVzdCA9M0QgcmVzdDsKLSAgICB9Ci0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIlNJRUJBTkFMWVNFSUQiLCBudWxsYWJsZT0zRGZhbHNl
LCBwcmVjaXNpb249M0QxMSwgc2NhbD0KZT0zRDApCi0gICAgcHVibGljIGxvbmcgZ2V0U2llYmFu
YWx5c2VpZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc2llYmFuYWx5c2VpZDsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRTaWViYW5hbHlzZWlkKGxvbmcgc2llYmFuYWx5c2VpZCkgewot
ICAgICAgICB0aGlzLnNpZWJhbmFseXNlaWQgPTNEIHNpZWJhbmFseXNlaWQ7Ci0gICAgfQotCi0K
LSAgICBAQ29sdW1uKG5hbWU9M0QiR1NJRUJTQVRaSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVj
aXNpb249M0QxMSwgc2NhbGU9Cj0zRDApCi0gICAgcHVibGljIGxvbmcgZ2V0R3NpZWJzYXR6aWQo
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmdzaWVic2F0emlkOwotICAgIH0KLQotICAgIHB1Ymxp
YyB2b2lkIHNldEdzaWVic2F0emlkKGxvbmcgZ3NpZWJzYXR6aWQpIHsKLSAgICAgICAgdGhpcy5n
c2llYnNhdHppZCA9M0QgZ3NpZWJzYXR6aWQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiR01BU1NFIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNp
bWFsIGdldEdtYXNzZSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ21hc3NlOwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldEdtYXNzZShCaWdEZWNpbWFsIGdtYXNzZSkgewotICAgICAgICB0
aGlzLmdtYXNzZSA9M0QgZ21hc3NlOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1B
U0NIRTAxIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFs
IGdldE1hc2NoZTAxKCkgewotICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUwMTsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUwMShCaWdEZWNpbWFsIG1hc2NoZTAxKSB7Ci0gICAg
ICAgIHRoaXMubWFzY2hlMDEgPTNEIG1hc2NoZTAxOwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIlJVRUNLMDEiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0UnVlY2swMSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnVlY2swMTsKLSAg
ICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazAxKEJpZ0RlY2ltYWwgcnVlY2swMSkgewot
ICAgICAgICB0aGlzLnJ1ZWNrMDEgPTNEIHJ1ZWNrMDE7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiTUFTQ0hFMDIiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGlj
IEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMDIoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTAy
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTAyKEJpZ0RlY2ltYWwgbWFzY2hl
MDIpIHsKLSAgICAgICAgdGhpcy5tYXNjaGUwMiA9M0QgbWFzY2hlMDI7Ci0gICAgfQotCi0KLSAg
ICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0swMiIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAg
ICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazAyKCkgewotICAgICAgICByZXR1cm4gdGhpcy5y
dWVjazAyOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMDIoQmlnRGVjaW1hbCBy
dWVjazAyKSB7Ci0gICAgICAgIHRoaXMucnVlY2swMiA9M0QgcnVlY2swMjsKLSAgICB9Ci0KLQot
ICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUwMyIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkK
LSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUwMygpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMubWFzY2hlMDM7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMDMoQmlnRGVj
aW1hbCBtYXNjaGUwMykgewotICAgICAgICB0aGlzLm1hc2NoZTAzID0zRCBtYXNjaGUwMzsKLSAg
ICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzAzIiwgcHJlY2lzaW9uPTNEOSwgc2Nh
bGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMDMoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLnJ1ZWNrMDM7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnVlY2swMyhC
aWdEZWNpbWFsIHJ1ZWNrMDMpIHsKLSAgICAgICAgdGhpcy5ydWVjazAzID0zRCBydWVjazAzOwot
ICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTA0IiwgcHJlY2lzaW9uPTNENywg
c2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTA0KCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5tYXNjaGUwNDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNYXNj
aGUwNChCaWdEZWNpbWFsIG1hc2NoZTA0KSB7Ci0gICAgICAgIHRoaXMubWFzY2hlMDQgPTNEIG1h
c2NoZTA0OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMDQiLCBwcmVjaXNp
b249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2swNCgpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMucnVlY2swNDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXRSdWVjazA0KEJpZ0RlY2ltYWwgcnVlY2swNCkgewotICAgICAgICB0aGlzLnJ1ZWNrMDQgPTNE
IHJ1ZWNrMDQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMDUiLCBwcmVj
aXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMDUo
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTA1OwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldE1hc2NoZTA1KEJpZ0RlY2ltYWwgbWFzY2hlMDUpIHsKLSAgICAgICAgdGhpcy5tYXNj
aGUwNSA9M0QgbWFzY2hlMDU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0sw
NSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRS
dWVjazA1KCkgewotICAgICAgICByZXR1cm4gdGhpcy5ydWVjazA1OwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldFJ1ZWNrMDUoQmlnRGVjaW1hbCBydWVjazA1KSB7Ci0gICAgICAgIHRoaXMu
cnVlY2swNSA9M0QgcnVlY2swNTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNQVND
SEUwNiIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXRNYXNjaGUwNigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMDY7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMDYoQmlnRGVjaW1hbCBtYXNjaGUwNikgewotICAgICAg
ICB0aGlzLm1hc2NoZTA2ID0zRCBtYXNjaGUwNjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFt
ZT0zRCJSVUVDSzA2IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdE
ZWNpbWFsIGdldFJ1ZWNrMDYoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMDY7Ci0gICAg
fQotCi0gICAgcHVibGljIHZvaWQgc2V0UnVlY2swNihCaWdEZWNpbWFsIHJ1ZWNrMDYpIHsKLSAg
ICAgICAgdGhpcy5ydWVjazA2ID0zRCBydWVjazA2OwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIk1BU0NIRTA3IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBC
aWdEZWNpbWFsIGdldE1hc2NoZTA3KCkgewotICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUwNzsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUwNyhCaWdEZWNpbWFsIG1hc2NoZTA3
KSB7Ci0gICAgICAgIHRoaXMubWFzY2hlMDcgPTNEIG1hc2NoZTA3OwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIlJVRUNLMDciLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAg
cHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2swNygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnVl
Y2swNzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazA3KEJpZ0RlY2ltYWwgcnVl
Y2swNykgewotICAgICAgICB0aGlzLnJ1ZWNrMDcgPTNEIHJ1ZWNrMDc7Ci0gICAgfQotCi0KLSAg
ICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMDgiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0g
ICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMDgoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
Lm1hc2NoZTA4OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTA4KEJpZ0RlY2lt
YWwgbWFzY2hlMDgpIHsKLSAgICAgICAgdGhpcy5tYXNjaGUwOCA9M0QgbWFzY2hlMDg7Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0swOCIsIHByZWNpc2lvbj0zRDksIHNjYWxl
PTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazA4KCkgewotICAgICAgICByZXR1
cm4gdGhpcy5ydWVjazA4OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMDgoQmln
RGVjaW1hbCBydWVjazA4KSB7Ci0gICAgICAgIHRoaXMucnVlY2swOCA9M0QgcnVlY2swODsKLSAg
ICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUwOSIsIHByZWNpc2lvbj0zRDcsIHNj
YWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUwOSgpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMubWFzY2hlMDk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWFzY2hl
MDkoQmlnRGVjaW1hbCBtYXNjaGUwOSkgewotICAgICAgICB0aGlzLm1hc2NoZTA5ID0zRCBtYXNj
aGUwOTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzA5IiwgcHJlY2lzaW9u
PTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMDkoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMDk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0
UnVlY2swOShCaWdEZWNpbWFsIHJ1ZWNrMDkpIHsKLSAgICAgICAgdGhpcy5ydWVjazA5ID0zRCBy
dWVjazA5OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTEwIiwgcHJlY2lz
aW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTEwKCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUxMDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXRNYXNjaGUxMChCaWdEZWNpbWFsIG1hc2NoZTEwKSB7Ci0gICAgICAgIHRoaXMubWFzY2hl
MTAgPTNEIG1hc2NoZTEwOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMTAi
LCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVl
Y2sxMCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnVlY2sxMDsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRSdWVjazEwKEJpZ0RlY2ltYWwgcnVlY2sxMCkgewotICAgICAgICB0aGlzLnJ1
ZWNrMTAgPTNEIHJ1ZWNrMTA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hF
MTEiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0
TWFzY2hlMTEoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTExOwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldE1hc2NoZTExKEJpZ0RlY2ltYWwgbWFzY2hlMTEpIHsKLSAgICAgICAg
dGhpcy5tYXNjaGUxMSA9M0QgbWFzY2hlMTE7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiUlVFQ0sxMSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVj
aW1hbCBnZXRSdWVjazExKCkgewotICAgICAgICByZXR1cm4gdGhpcy5ydWVjazExOwotICAgIH0K
LQotICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMTEoQmlnRGVjaW1hbCBydWVjazExKSB7Ci0gICAg
ICAgIHRoaXMucnVlY2sxMSA9M0QgcnVlY2sxMTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFt
ZT0zRCJNQVNDSEUxMiIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmln
RGVjaW1hbCBnZXRNYXNjaGUxMigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMTI7Ci0g
ICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMTIoQmlnRGVjaW1hbCBtYXNjaGUxMikg
ewotICAgICAgICB0aGlzLm1hc2NoZTEyID0zRCBtYXNjaGUxMjsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJSVUVDSzEyIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMTIoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJ1ZWNr
MTI7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnVlY2sxMihCaWdEZWNpbWFsIHJ1ZWNr
MTIpIHsKLSAgICAgICAgdGhpcy5ydWVjazEyID0zRCBydWVjazEyOwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIk1BU0NIRTEzIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTEzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5t
YXNjaGUxMzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUxMyhCaWdEZWNpbWFs
IG1hc2NoZTEzKSB7Ci0gICAgICAgIHRoaXMubWFzY2hlMTMgPTNEIG1hc2NoZTEzOwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMTMiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0z
RDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2sxMygpIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMucnVlY2sxMzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazEzKEJpZ0Rl
Y2ltYWwgcnVlY2sxMykgewotICAgICAgICB0aGlzLnJ1ZWNrMTMgPTNEIHJ1ZWNrMTM7Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMTQiLCBwcmVjaXNpb249M0Q3LCBzY2Fs
ZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMTQoKSB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLm1hc2NoZTE0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTE0
KEJpZ0RlY2ltYWwgbWFzY2hlMTQpIHsKLSAgICAgICAgdGhpcy5tYXNjaGUxNCA9M0QgbWFzY2hl
MTQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0sxNCIsIHByZWNpc2lvbj0z
RDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazE0KCkgewotICAg
ICAgICByZXR1cm4gdGhpcy5ydWVjazE0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJ1
ZWNrMTQoQmlnRGVjaW1hbCBydWVjazE0KSB7Ci0gICAgICAgIHRoaXMucnVlY2sxNCA9M0QgcnVl
Y2sxNDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUxNSIsIHByZWNpc2lv
bj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUxNSgpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMTU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0TWFzY2hlMTUoQmlnRGVjaW1hbCBtYXNjaGUxNSkgewotICAgICAgICB0aGlzLm1hc2NoZTE1
ID0zRCBtYXNjaGUxNTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzE1Iiwg
cHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNr
MTUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMTU7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0UnVlY2sxNShCaWdEZWNpbWFsIHJ1ZWNrMTUpIHsKLSAgICAgICAgdGhpcy5ydWVj
azE1ID0zRCBydWVjazE1OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTE2
IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1h
c2NoZTE2KCkgewotICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUxNjsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRNYXNjaGUxNihCaWdEZWNpbWFsIG1hc2NoZTE2KSB7Ci0gICAgICAgIHRo
aXMubWFzY2hlMTYgPTNEIG1hc2NoZTE2OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNE
IlJVRUNLMTYiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2lt
YWwgZ2V0UnVlY2sxNigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucnVlY2sxNjsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazE2KEJpZ0RlY2ltYWwgcnVlY2sxNikgewotICAgICAg
ICB0aGlzLnJ1ZWNrMTYgPTNEIHJ1ZWNrMTY7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiTUFTQ0hFMTciLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0TWFzY2hlMTcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTE3OwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTE3KEJpZ0RlY2ltYWwgbWFzY2hlMTcpIHsK
LSAgICAgICAgdGhpcy5tYXNjaGUxNyA9M0QgbWFzY2hlMTc7Ci0gICAgfQotCi0KLSAgICBAQ29s
dW1uKG5hbWU9M0QiUlVFQ0sxNyIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXRSdWVjazE3KCkgewotICAgICAgICByZXR1cm4gdGhpcy5ydWVjazE3
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMTcoQmlnRGVjaW1hbCBydWVjazE3
KSB7Ci0gICAgICAgIHRoaXMucnVlY2sxNyA9M0QgcnVlY2sxNzsKLSAgICB9Ci0KLQotICAgIEBD
b2x1bW4obmFtZT0zRCJNQVNDSEUxOCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBw
dWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUxOCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWFz
Y2hlMTg7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMTgoQmlnRGVjaW1hbCBt
YXNjaGUxOCkgewotICAgICAgICB0aGlzLm1hc2NoZTE4ID0zRCBtYXNjaGUxODsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzE4IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0Qz
KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMTgoKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLnJ1ZWNrMTg7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UnVlY2sxOChCaWdEZWNp
bWFsIHJ1ZWNrMTgpIHsKLSAgICAgICAgdGhpcy5ydWVjazE4ID0zRCBydWVjazE4OwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTE5IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9
M0Q0KQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTE5KCkgewotICAgICAgICByZXR1
cm4gdGhpcy5tYXNjaGUxOTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUxOShC
aWdEZWNpbWFsIG1hc2NoZTE5KSB7Ci0gICAgICAgIHRoaXMubWFzY2hlMTkgPTNEIG1hc2NoZTE5
OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMTkiLCBwcmVjaXNpb249M0Q5
LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2sxOSgpIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMucnVlY2sxOTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRSdWVj
azE5KEJpZ0RlY2ltYWwgcnVlY2sxOSkgewotICAgICAgICB0aGlzLnJ1ZWNrMTkgPTNEIHJ1ZWNr
MTk7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMjAiLCBwcmVjaXNpb249
M0Q3LCBzY2FsZT0zRDQpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMjAoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTIwOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNl
dE1hc2NoZTIwKEJpZ0RlY2ltYWwgbWFzY2hlMjApIHsKLSAgICAgICAgdGhpcy5tYXNjaGUyMCA9
M0QgbWFzY2hlMjA7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0syMCIsIHBy
ZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazIw
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5ydWVjazIwOwotICAgIH0KLQotICAgIHB1YmxpYyB2
b2lkIHNldFJ1ZWNrMjAoQmlnRGVjaW1hbCBydWVjazIwKSB7Ci0gICAgICAgIHRoaXMucnVlY2sy
MCA9M0QgcnVlY2syMDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUyMSIs
IHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNj
aGUyMSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMjE7Ci0gICAgfQotCi0gICAgcHVi
bGljIHZvaWQgc2V0TWFzY2hlMjEoQmlnRGVjaW1hbCBtYXNjaGUyMSkgewotICAgICAgICB0aGlz
Lm1hc2NoZTIxID0zRCBtYXNjaGUyMTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJS
VUVDSzIxIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFs
IGdldFJ1ZWNrMjEoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMjE7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0UnVlY2syMShCaWdEZWNpbWFsIHJ1ZWNrMjEpIHsKLSAgICAgICAg
dGhpcy5ydWVjazIxID0zRCBydWVjazIxOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNE
IlJFU1QiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0UmVzdCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucmVzdDsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRSZXN0KEJpZ0RlY2ltYWwgcmVzdCkgewotICAgICAgICB0aGlzLnJlc3QgPTNE
IHJlc3Q7Ci0gICAgfQotCi0KLSAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb3RoZXIp
IHsKLSAgICAgICAgIGlmICggKHRoaXMgPTNEPTNEIG90aGVyICkgKSByZXR1cm4gdHJ1ZTsKLQkJ
IGlmICggKG90aGVyID0zRD0zRCBudWxsICkgKSByZXR1cm4gZmFsc2U7Ci0JCSBpZiAoICEob3Ro
ZXIgaW5zdGFuY2VvZiBTc2llYnVuZ3NpZWJJZCkgKSByZXR1cm4gZmFsc2U7Ci0JCSBTc2llYnVu
Z3NpZWJJZCBjYXN0T3RoZXIgPTNEICggU3NpZWJ1bmdzaWViSWQgKSBvdGhlcjsKLQotCQkgcmV0
dXJuICh0aGlzLmdldFNpZWJhbmFseXNlaWQoKT0zRD0zRGNhc3RPdGhlci5nZXRTaWViYW5hbHlz
ZWlkKCkpCi0gJiYgKHRoaXMuZ2V0R3NpZWJzYXR6aWQoKT0zRD0zRGNhc3RPdGhlci5nZXRHc2ll
YnNhdHppZCgpKQotICYmICggKHRoaXMuZ2V0R21hc3NlKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0R21h
c3NlKCkpIHx8ICggdGhpcy5nZXRHbWFzc2UoKSE9Cj0zRG51bGwgJiYgY2FzdE90aGVyLmdldEdt
YXNzZSgpIT0zRG51bGwgJiYgdGhpcy5nZXRHbWFzc2UoKS5lcXVhbHMoY2FzdE90aD0KZXIuZ2V0
R21hc3NlKCkpICkgKQotICYmICggKHRoaXMuZ2V0TWFzY2hlMDEoKT0zRD0zRGNhc3RPdGhlci5n
ZXRNYXNjaGUwMSgpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUwMSgpIT0zRG51bGwgJiYgY2FzdE90
aGVyLmdldE1hc2NoZTAxKCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTAxKCkuZXF1YT0KbHMo
Y2FzdE90aGVyLmdldE1hc2NoZTAxKCkpICkgKQotICYmICggKHRoaXMuZ2V0UnVlY2swMSgpPTNE
PTNEY2FzdE90aGVyLmdldFJ1ZWNrMDEoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMDE9CigpIT0zRG51
bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMDEoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2swMSgp
LmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazAxKCkpICkgKQotICYmICggKHRoaXMuZ2V0TWFz
Y2hlMDIoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUwMigpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9
CmUwMigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTAyKCkhPTNEbnVsbCAmJiB0aGlz
LmdldE1hc2NoZTAyKCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTAyKCkpICkgKQotICYm
ICggKHRoaXMuZ2V0UnVlY2swMigpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMDIoKSkgfHwgKCB0
aGlzLmdldFJ1ZWNrMDI9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMDIoKSE9M0Ru
dWxsICYmIHRoaXMuZ2V0UnVlY2swMigpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazAyKCkp
ICkgKQotICYmICggKHRoaXMuZ2V0TWFzY2hlMDMoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUw
MygpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUwMygpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1h
c2NoZTAzKCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTAzKCkuZXF1YT0KbHMoY2FzdE90aGVy
LmdldE1hc2NoZTAzKCkpICkgKQotICYmICggKHRoaXMuZ2V0UnVlY2swMygpPTNEPTNEY2FzdE90
aGVyLmdldFJ1ZWNrMDMoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMDM9CigpIT0zRG51bGwgJiYgY2Fz
dE90aGVyLmdldFJ1ZWNrMDMoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2swMygpLmVxdWFscyhj
YT0Kc3RPdGhlci5nZXRSdWVjazAzKCkpICkgKQotICYmICggKHRoaXMuZ2V0TWFzY2hlMDQoKT0z
RD0zRGNhc3RPdGhlci5nZXRNYXNjaGUwNCgpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUwNCgpIT0z
RG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTA0KCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2No
ZTA0KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTA0KCkpICkgKQotICYmICggKHRoaXMu
Z2V0UnVlY2swNCgpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMDQoKSkgfHwgKCB0aGlzLmdldFJ1
ZWNrMDQ9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMDQoKSE9M0RudWxsICYmIHRo
aXMuZ2V0UnVlY2swNCgpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazA0KCkpICkgKQotICYm
ICggKHRoaXMuZ2V0TWFzY2hlMDUoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUwNSgpKSB8fCAo
IHRoaXMuZ2V0TWFzY2g9CmUwNSgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTA1KCkh
PTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTA1KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2No
ZTA1KCkpICkgKQotICYmICggKHRoaXMuZ2V0UnVlY2swNSgpPTNEPTNEY2FzdE90aGVyLmdldFJ1
ZWNrMDUoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMDU9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdl
dFJ1ZWNrMDUoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2swNSgpLmVxdWFscyhjYT0Kc3RPdGhl
ci5nZXRSdWVjazA1KCkpICkgKQotICYmICggKHRoaXMuZ2V0TWFzY2hlMDYoKT0zRD0zRGNhc3RP
dGhlci5nZXRNYXNjaGUwNigpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUwNigpIT0zRG51bGwgJiYg
Y2FzdE90aGVyLmdldE1hc2NoZTA2KCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTA2KCkuZXF1
YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTA2KCkpICkgKQotICYmICggKHRoaXMuZ2V0UnVlY2sw
NigpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMDYoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMDY9Cigp
IT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMDYoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVl
Y2swNigpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazA2KCkpICkgKQotICYmICggKHRoaXMu
Z2V0TWFzY2hlMDcoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUwNygpKSB8fCAoIHRoaXMuZ2V0
TWFzY2g9CmUwNygpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTA3KCkhPTNEbnVsbCAm
JiB0aGlzLmdldE1hc2NoZTA3KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTA3KCkpICkg
KQotICYmICggKHRoaXMuZ2V0UnVlY2swNygpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMDcoKSkg
fHwgKCB0aGlzLmdldFJ1ZWNrMDc9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMDco
KSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2swNygpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVj
azA3KCkpICkgKQotICYmICggKHRoaXMuZ2V0TWFzY2hlMDgoKT0zRD0zRGNhc3RPdGhlci5nZXRN
YXNjaGUwOCgpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUwOCgpIT0zRG51bGwgJiYgY2FzdE90aGVy
LmdldE1hc2NoZTA4KCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTA4KCkuZXF1YT0KbHMoY2Fz
dE90aGVyLmdldE1hc2NoZTA4KCkpICkgKQotICYmICggKHRoaXMuZ2V0UnVlY2swOCgpPTNEPTNE
Y2FzdE90aGVyLmdldFJ1ZWNrMDgoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMDg9CigpIT0zRG51bGwg
JiYgY2FzdE90aGVyLmdldFJ1ZWNrMDgoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2swOCgpLmVx
dWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazA4KCkpICkgKQotICYmICggKHRoaXMuZ2V0TWFzY2hl
MDkoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUwOSgpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUw
OSgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTA5KCkhPTNEbnVsbCAmJiB0aGlzLmdl
dE1hc2NoZTA5KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTA5KCkpICkgKQotICYmICgg
KHRoaXMuZ2V0UnVlY2swOSgpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMDkoKSkgfHwgKCB0aGlz
LmdldFJ1ZWNrMDk9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMDkoKSE9M0RudWxs
ICYmIHRoaXMuZ2V0UnVlY2swOSgpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazA5KCkpICkg
KQotICYmICggKHRoaXMuZ2V0TWFzY2hlMTAoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUxMCgp
KSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUxMCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2No
ZTEwKCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTEwKCkuZXF1YT0KbHMoY2FzdE90aGVyLmdl
dE1hc2NoZTEwKCkpICkgKQotICYmICggKHRoaXMuZ2V0UnVlY2sxMCgpPTNEPTNEY2FzdE90aGVy
LmdldFJ1ZWNrMTAoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMTA9CigpIT0zRG51bGwgJiYgY2FzdE90
aGVyLmdldFJ1ZWNrMTAoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2sxMCgpLmVxdWFscyhjYT0K
c3RPdGhlci5nZXRSdWVjazEwKCkpICkgKQotICYmICggKHRoaXMuZ2V0TWFzY2hlMTEoKT0zRD0z
RGNhc3RPdGhlci5nZXRNYXNjaGUxMSgpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUxMSgpIT0zRG51
bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTExKCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTEx
KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTExKCkpICkgKQotICYmICggKHRoaXMuZ2V0
UnVlY2sxMSgpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMTEoKSkgfHwgKCB0aGlzLmdldFJ1ZWNr
MTE9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMTEoKSE9M0RudWxsICYmIHRoaXMu
Z2V0UnVlY2sxMSgpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazExKCkpICkgKQotICYmICgg
KHRoaXMuZ2V0TWFzY2hlMTIoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUxMigpKSB8fCAoIHRo
aXMuZ2V0TWFzY2g9CmUxMigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTEyKCkhPTNE
bnVsbCAmJiB0aGlzLmdldE1hc2NoZTEyKCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTEy
KCkpICkgKQotICYmICggKHRoaXMuZ2V0UnVlY2sxMigpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNr
MTIoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMTI9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1
ZWNrMTIoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2sxMigpLmVxdWFscyhjYT0Kc3RPdGhlci5n
ZXRSdWVjazEyKCkpICkgKQotICYmICggKHRoaXMuZ2V0TWFzY2hlMTMoKT0zRD0zRGNhc3RPdGhl
ci5nZXRNYXNjaGUxMygpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUxMygpIT0zRG51bGwgJiYgY2Fz
dE90aGVyLmdldE1hc2NoZTEzKCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTEzKCkuZXF1YT0K
bHMoY2FzdE90aGVyLmdldE1hc2NoZTEzKCkpICkgKQotICYmICggKHRoaXMuZ2V0UnVlY2sxMygp
PTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMTMoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMTM9CigpIT0z
RG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMTMoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2sx
MygpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazEzKCkpICkgKQotICYmICggKHRoaXMuZ2V0
TWFzY2hlMTQoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUxNCgpKSB8fCAoIHRoaXMuZ2V0TWFz
Y2g9CmUxNCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTE0KCkhPTNEbnVsbCAmJiB0
aGlzLmdldE1hc2NoZTE0KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTE0KCkpICkgKQot
ICYmICggKHRoaXMuZ2V0UnVlY2sxNCgpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMTQoKSkgfHwg
KCB0aGlzLmdldFJ1ZWNrMTQ9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMTQoKSE9
M0RudWxsICYmIHRoaXMuZ2V0UnVlY2sxNCgpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazE0
KCkpICkgKQotICYmICggKHRoaXMuZ2V0TWFzY2hlMTUoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNj
aGUxNSgpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUxNSgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdl
dE1hc2NoZTE1KCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTE1KCkuZXF1YT0KbHMoY2FzdE90
aGVyLmdldE1hc2NoZTE1KCkpICkgKQotICYmICggKHRoaXMuZ2V0UnVlY2sxNSgpPTNEPTNEY2Fz
dE90aGVyLmdldFJ1ZWNrMTUoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMTU9CigpIT0zRG51bGwgJiYg
Y2FzdE90aGVyLmdldFJ1ZWNrMTUoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2sxNSgpLmVxdWFs
cyhjYT0Kc3RPdGhlci5nZXRSdWVjazE1KCkpICkgKQotICYmICggKHRoaXMuZ2V0TWFzY2hlMTYo
KT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUxNigpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUxNigp
IT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTE2KCkhPTNEbnVsbCAmJiB0aGlzLmdldE1h
c2NoZTE2KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTE2KCkpICkgKQotICYmICggKHRo
aXMuZ2V0UnVlY2sxNigpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMTYoKSkgfHwgKCB0aGlzLmdl
dFJ1ZWNrMTY9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMTYoKSE9M0RudWxsICYm
IHRoaXMuZ2V0UnVlY2sxNigpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazE2KCkpICkgKQot
ICYmICggKHRoaXMuZ2V0TWFzY2hlMTcoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUxNygpKSB8
fCAoIHRoaXMuZ2V0TWFzY2g9CmUxNygpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTE3
KCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTE3KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1h
c2NoZTE3KCkpICkgKQotICYmICggKHRoaXMuZ2V0UnVlY2sxNygpPTNEPTNEY2FzdE90aGVyLmdl
dFJ1ZWNrMTcoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMTc9CigpIT0zRG51bGwgJiYgY2FzdE90aGVy
LmdldFJ1ZWNrMTcoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2sxNygpLmVxdWFscyhjYT0Kc3RP
dGhlci5nZXRSdWVjazE3KCkpICkgKQotICYmICggKHRoaXMuZ2V0TWFzY2hlMTgoKT0zRD0zRGNh
c3RPdGhlci5nZXRNYXNjaGUxOCgpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUxOCgpIT0zRG51bGwg
JiYgY2FzdE90aGVyLmdldE1hc2NoZTE4KCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTE4KCku
ZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTE4KCkpICkgKQotICYmICggKHRoaXMuZ2V0UnVl
Y2sxOCgpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMTgoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMTg9
CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMTgoKSE9M0RudWxsICYmIHRoaXMuZ2V0
UnVlY2sxOCgpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazE4KCkpICkgKQotICYmICggKHRo
aXMuZ2V0TWFzY2hlMTkoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUxOSgpKSB8fCAoIHRoaXMu
Z2V0TWFzY2g9CmUxOSgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTE5KCkhPTNEbnVs
bCAmJiB0aGlzLmdldE1hc2NoZTE5KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTE5KCkp
ICkgKQotICYmICggKHRoaXMuZ2V0UnVlY2sxOSgpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMTko
KSkgfHwgKCB0aGlzLmdldFJ1ZWNrMTk9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNr
MTkoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2sxOSgpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRS
dWVjazE5KCkpICkgKQotICYmICggKHRoaXMuZ2V0TWFzY2hlMjAoKT0zRD0zRGNhc3RPdGhlci5n
ZXRNYXNjaGUyMCgpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUyMCgpIT0zRG51bGwgJiYgY2FzdE90
aGVyLmdldE1hc2NoZTIwKCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTIwKCkuZXF1YT0KbHMo
Y2FzdE90aGVyLmdldE1hc2NoZTIwKCkpICkgKQotICYmICggKHRoaXMuZ2V0UnVlY2syMCgpPTNE
PTNEY2FzdE90aGVyLmdldFJ1ZWNrMjAoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMjA9CigpIT0zRG51
bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMjAoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2syMCgp
LmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazIwKCkpICkgKQotICYmICggKHRoaXMuZ2V0TWFz
Y2hlMjEoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUyMSgpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9
CmUyMSgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTIxKCkhPTNEbnVsbCAmJiB0aGlz
LmdldE1hc2NoZTIxKCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTIxKCkpICkgKQotICYm
ICggKHRoaXMuZ2V0UnVlY2syMSgpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMjEoKSkgfHwgKCB0
aGlzLmdldFJ1ZWNrMjE9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMjEoKSE9M0Ru
dWxsICYmIHRoaXMuZ2V0UnVlY2syMSgpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazIxKCkp
ICkgKQotICYmICggKHRoaXMuZ2V0UmVzdCgpPTNEPTNEY2FzdE90aGVyLmdldFJlc3QoKSkgfHwg
KCB0aGlzLmdldFJlc3QoKSE9M0RudWw9CmwgJiYgY2FzdE90aGVyLmdldFJlc3QoKSE9M0RudWxs
ICYmIHRoaXMuZ2V0UmVzdCgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0UmVzdD0KKCkpICkgKTsKLSAg
IH0KLQotICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKLSAgICAgICAgIGludCByZXN1bHQgPTNE
IDE3OwotCi0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKGludCkgdGhpcy5nZXRT
aWViYW5hbHlzZWlkKCk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKGludCkg
dGhpcy5nZXRHc2llYnNhdHppZCgpOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCAr
ICggZ2V0R21hc3NlKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXQ9CkdtYXNzZSgpLmhhc2hD
b2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTAx
KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTAxKCkuaGFzaENvZGUoKSApOwot
ICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2swMSgpID0zRD0zRCBu
dWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazAxKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVz
dWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMDIoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0
aGlzLmc9CmV0TWFzY2hlMDIoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3
ICogcmVzdWx0ICsgKCBnZXRSdWVjazAyKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1
ZWNrMDIoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsg
KCBnZXRNYXNjaGUwMygpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUwMygpLmhh
c2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNr
MDMoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2swMygpLmhhc2hDb2RlKCkgKTsK
LSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTA0KCkgPTNEPTNE
IG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTA0KCkuaGFzaENvZGUoKSApOwotICAgICAgICAg
cmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2swNCgpID0zRD0zRCBudWxsID8gMCA6
IHRoaXMuZ2U9CnRSdWVjazA0KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAz
NyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMDUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0
TWFzY2hlMDUoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0
ICsgKCBnZXRSdWVjazA1KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMDUoKS5o
YXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNj
aGUwNigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUwNigpLmhhc2hDb2RlKCkg
KTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMDYoKSA9M0Q9
M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2swNigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAg
IHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTA3KCkgPTNEPTNEIG51bGwgPyAw
IDogdGhpcy5nPQpldE1hc2NoZTA3KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0z
RCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2swNygpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9
CnRSdWVjazA3KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3Vs
dCArICggZ2V0TWFzY2hlMDgoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMDgo
KS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRS
dWVjazA4KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMDgoKS5oYXNoQ29kZSgp
ICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUwOSgpID0z
RD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUwOSgpLmhhc2hDb2RlKCkgKTsKLSAgICAg
ICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMDkoKSA9M0Q9M0QgbnVsbCA/
IDAgOiB0aGlzLmdlPQp0UnVlY2swOSgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9
M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTEwKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5n
PQpldE1hc2NoZTEwKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJl
c3VsdCArICggZ2V0UnVlY2sxMCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazEw
KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0
TWFzY2hlMTEoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMTEoKS5oYXNoQ29k
ZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazExKCkg
PTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMTEoKS5oYXNoQ29kZSgpICk7Ci0gICAg
ICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUxMigpID0zRD0zRCBudWxs
ID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUxMigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3Vs
dCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMTIoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlz
LmdlPQp0UnVlY2sxMigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiBy
ZXN1bHQgKyAoIGdldE1hc2NoZTEzKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2No
ZTEzKCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICgg
Z2V0UnVlY2sxMygpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazEzKCkuaGFzaENv
ZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMTQo
KSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMTQoKS5oYXNoQ29kZSgpICk7Ci0g
ICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazE0KCkgPTNEPTNEIG51
bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMTQoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1
bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUxNSgpID0zRD0zRCBudWxsID8gMCA6IHRo
aXMuZz0KZXRNYXNjaGUxNSgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcg
KiByZXN1bHQgKyAoIGdldFJ1ZWNrMTUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVl
Y2sxNSgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAo
IGdldE1hc2NoZTE2KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTE2KCkuaGFz
aENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2sx
NigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazE2KCkuaGFzaENvZGUoKSApOwot
ICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMTcoKSA9M0Q9M0Qg
bnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMTcoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICBy
ZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazE3KCkgPTNEPTNEIG51bGwgPyAwIDog
dGhpcy5nZT0KdFJ1ZWNrMTcoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3
ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUxOCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRN
YXNjaGUxOCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQg
KyAoIGdldFJ1ZWNrMTgoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2sxOCgpLmhh
c2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2No
ZTE5KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTE5KCkuaGFzaENvZGUoKSAp
OwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2sxOSgpID0zRD0z
RCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazE5KCkuaGFzaENvZGUoKSApOwotICAgICAgICAg
cmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMjAoKSA9M0Q9M0QgbnVsbCA/IDAg
OiB0aGlzLmc9CmV0TWFzY2hlMjAoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNE
IDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazIwKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0K
dFJ1ZWNrMjAoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0
ICsgKCBnZXRNYXNjaGUyMSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUyMSgp
Lmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1
ZWNrMjEoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2syMSgpLmhhc2hDb2RlKCkg
KTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJlc3QoKSA9M0Q9M0Qg
bnVsbCA/IDAgOiB0aGlzLmdldFJlPQpzdCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICB9Ci19CmRpZmYgLXIgYmM0ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBi
YWNrZW5kL3NyYy9tYWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZT0KZGRiL21vZGVsL1N0YXRpb24u
amF2YQotLS0gYS9iYWNrZW5kL3NyYy9tYWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZWRkYi9tb2Rl
bC9TdGF0aW9uLmphdmEJTW9uIEFwciA9CjI5IDExOjE0OjI1IDIwMTMgKzAyMDAKKysrIC9kZXYv
bnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMzEzICswLDAgQEAKLS8q
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNy
IEdldz1DMz1BNHNzZXJrPQp1bmRlCi0gKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0
aW9uIEdtYkgKLSAqCi0gKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05V
IEFHUEwgKD49M0R2Myk9MjAKLSAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFO
VFkhIENoZWNrIG91dCB0aGUKLSAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVt
ZW50cyBSaXZlciBmb3IgZGV0YWlscy49MjAKLSAqLwotCi1wYWNrYWdlIG9yZy5kaXZlNGVsZW1l
bnRzLnNlZGRiLm1vZGVsOwotLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGli
ZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQotCi0KLWltcG9ydCBqYXZhLm1hdGguQmlnRGVjaW1hbDsK
LWltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotaW1wb3J0
IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRp
dHk7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRmV0Y2hUeXBlOwotaW1wb3J0IGphdmF4LnBl
cnNpc3RlbmNlLklkOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkpvaW5Db2x1bW47Ci1pbXBv
cnQgamF2YXgucGVyc2lzdGVuY2UuTWFueVRvT25lOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNl
Lk9uZVRvTWFueTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKLWltcG9ydCBqYXZh
eC5wZXJzaXN0ZW5jZS5VbmlxdWVDb25zdHJhaW50OwotCi0vKioKLSAqIFN0YXRpb24gZ2VuZXJh
dGVkIGJ5IGhibTJqYXZhCi0gKi8KLUBFbnRpdHkKLUBUYWJsZShuYW1lPTNEIlNUQVRJT04iCi0g
ICAgLHNjaGVtYT0zRCJTRUREQiIKLSAgICAsIHVuaXF1ZUNvbnN0cmFpbnRzID0zRCBAVW5pcXVl
Q29uc3RyYWludChjb2x1bW5OYW1lcz0zRHsiR0VXQUVTU0VSSUQiPQosICJOQU1FIn0pCi0pCi1w
dWJsaWMgY2xhc3MgU3RhdGlvbiAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7Ci0K
LQotICAgICBwcml2YXRlIGxvbmcgc3RhdGlvbmlkOwotICAgICBwcml2YXRlIEJlenVnc3BlZ2Vs
IGJlenVnc3BlZ2VsOwotICAgICBwcml2YXRlIEdld2Flc3NlciBnZXdhZXNzZXI7Ci0gICAgIHBy
aXZhdGUgQmlnRGVjaW1hbCBrbTsKLSAgICAgcHJpdmF0ZSBTdHJpbmcgbmFtZTsKLSAgICAgcHJp
dmF0ZSBib29sZWFuIHVmZXJpc3RsaW5rczsKLSAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHRlaWxW
b247Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB0ZWlsQmlzOwotICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgYWJzdEhtc3Q7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBMSG9jaHdlcnQ7Ci0gICAg
IHByaXZhdGUgQmlnRGVjaW1hbCBMUmVjaHdlcnQ7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBM
Tm47Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBSSG9jaHdlcnQ7Ci0gICAgIHByaXZhdGUgQmln
RGVjaW1hbCBSUmVjaHdlcnQ7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBSTm47Ci0gICAgIHBy
aXZhdGUgU3RyaW5nIGJlbWVya3VuZzsKLSAgICAgcHJpdmF0ZSBMb25nIG9sZG1zdGlkOwotICAg
ICBwcml2YXRlIGJvb2xlYW4gaXN0ZmVzdHN0b2ZmOwotICAgICBwcml2YXRlIFNldDxTb2hsdGVz
dD4gc29obHRlc3RzID0zRCBuZXcgSGFzaFNldDxTb2hsdGVzdD4oMCk7Ci0gICAgIHByaXZhdGUg
U2V0PEhwZWlsdW5nPiBocGVpbHVuZ3MgPTNEIG5ldyBIYXNoU2V0PEhwZWlsdW5nPigwKTsKLSAg
ICAgcHJpdmF0ZSBTZXQ8TXBlaWx1bmc+IG1wZWlsdW5ncyA9M0QgbmV3IEhhc2hTZXQ8TXBlaWx1
bmc+KDApOwotICAgICBwcml2YXRlIFNldDxNZXNzdW5nPiBtZXNzdW5ncyA9M0QgbmV3IEhhc2hT
ZXQ8TWVzc3VuZz4oMCk7Ci0KLSAgICBwdWJsaWMgU3RhdGlvbigpIHsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgU3RhdGlvbihsb25nIHN0YXRpb25pZCwgR2V3YWVzc2VyIGdld2Flc3NlciwgQmlnRGVj
aW1hbCBrbSwgU3RyPQppbmcgbmFtZSwgYm9vbGVhbiB1ZmVyaXN0bGlua3MsIGJvb2xlYW4gaXN0
ZmVzdHN0b2ZmKSB7Ci0gICAgICAgIHRoaXMuc3RhdGlvbmlkID0zRCBzdGF0aW9uaWQ7Ci0gICAg
ICAgIHRoaXMuZ2V3YWVzc2VyID0zRCBnZXdhZXNzZXI7Ci0gICAgICAgIHRoaXMua20gPTNEIGtt
OwotICAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7Ci0gICAgICAgIHRoaXMudWZlcmlzdGxpbmtz
ID0zRCB1ZmVyaXN0bGlua3M7Ci0gICAgICAgIHRoaXMuaXN0ZmVzdHN0b2ZmID0zRCBpc3RmZXN0
c3RvZmY7Ci0gICAgfQotICAgIHB1YmxpYyBTdGF0aW9uKGxvbmcgc3RhdGlvbmlkLCBCZXp1Z3Nw
ZWdlbCBiZXp1Z3NwZWdlbCwgR2V3YWVzc2VyIGdld2E9CmVzc2VyLCBCaWdEZWNpbWFsIGttLCBT
dHJpbmcgbmFtZSwgYm9vbGVhbiB1ZmVyaXN0bGlua3MsIEJpZ0RlY2ltYWwgdGVpbFZvbj0KLCBC
aWdEZWNpbWFsIHRlaWxCaXMsIEJpZ0RlY2ltYWwgYWJzdEhtc3QsIEJpZ0RlY2ltYWwgTEhvY2h3
ZXJ0LCBCaWdEZWNpbWFsPQogTFJlY2h3ZXJ0LCBCaWdEZWNpbWFsIExObiwgQmlnRGVjaW1hbCBS
SG9jaHdlcnQsIEJpZ0RlY2ltYWwgUlJlY2h3ZXJ0LCBCaWc9CkRlY2ltYWwgUk5uLCBTdHJpbmcg
YmVtZXJrdW5nLCBMb25nIG9sZG1zdGlkLCBib29sZWFuIGlzdGZlc3RzdG9mZiwgU2V0PFNvaD0K
bHRlc3Q+IHNvaGx0ZXN0cywgU2V0PEhwZWlsdW5nPiBocGVpbHVuZ3MsIFNldDxNcGVpbHVuZz4g
bXBlaWx1bmdzLCBTZXQ8TWVzPQpzdW5nPiBtZXNzdW5ncykgewotICAgICAgIHRoaXMuc3RhdGlv
bmlkID0zRCBzdGF0aW9uaWQ7Ci0gICAgICAgdGhpcy5iZXp1Z3NwZWdlbCA9M0QgYmV6dWdzcGVn
ZWw7Ci0gICAgICAgdGhpcy5nZXdhZXNzZXIgPTNEIGdld2Flc3NlcjsKLSAgICAgICB0aGlzLmtt
ID0zRCBrbTsKLSAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7Ci0gICAgICAgdGhpcy51ZmVyaXN0
bGlua3MgPTNEIHVmZXJpc3RsaW5rczsKLSAgICAgICB0aGlzLnRlaWxWb24gPTNEIHRlaWxWb247
Ci0gICAgICAgdGhpcy50ZWlsQmlzID0zRCB0ZWlsQmlzOwotICAgICAgIHRoaXMuYWJzdEhtc3Qg
PTNEIGFic3RIbXN0OwotICAgICAgIHRoaXMuTEhvY2h3ZXJ0ID0zRCBMSG9jaHdlcnQ7Ci0gICAg
ICAgdGhpcy5MUmVjaHdlcnQgPTNEIExSZWNod2VydDsKLSAgICAgICB0aGlzLkxObiA9M0QgTE5u
OwotICAgICAgIHRoaXMuUkhvY2h3ZXJ0ID0zRCBSSG9jaHdlcnQ7Ci0gICAgICAgdGhpcy5SUmVj
aHdlcnQgPTNEIFJSZWNod2VydDsKLSAgICAgICB0aGlzLlJObiA9M0QgUk5uOwotICAgICAgIHRo
aXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7Ci0gICAgICAgdGhpcy5vbGRtc3RpZCA9M0Qgb2xk
bXN0aWQ7Ci0gICAgICAgdGhpcy5pc3RmZXN0c3RvZmYgPTNEIGlzdGZlc3RzdG9mZjsKLSAgICAg
ICB0aGlzLnNvaGx0ZXN0cyA9M0Qgc29obHRlc3RzOwotICAgICAgIHRoaXMuaHBlaWx1bmdzID0z
RCBocGVpbHVuZ3M7Ci0gICAgICAgdGhpcy5tcGVpbHVuZ3MgPTNEIG1wZWlsdW5nczsKLSAgICAg
ICB0aGlzLm1lc3N1bmdzID0zRCBtZXNzdW5nczsKLSAgICB9Ci0KLSAgICAgQElkCi0KLQotICAg
IEBDb2x1bW4obmFtZT0zRCJTVEFUSU9OSUQiLCB1bmlxdWU9M0R0cnVlLCBudWxsYWJsZT0zRGZh
bHNlLCBwcmVjaXNpb249Cj0zRDExLCBzY2FsZT0zRDApCi0gICAgcHVibGljIGxvbmcgZ2V0U3Rh
dGlvbmlkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5zdGF0aW9uaWQ7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0U3RhdGlvbmlkKGxvbmcgc3RhdGlvbmlkKSB7Ci0gICAgICAgIHRoaXMu
c3RhdGlvbmlkID0zRCBzdGF0aW9uaWQ7Ci0gICAgfQotCi1ATWFueVRvT25lKGZldGNoPTNERmV0
Y2hUeXBlLkxBWlkpCi0gICAgQEpvaW5Db2x1bW4obmFtZT0zRCJCRVpVR1NQRUdFTElEIikKLSAg
ICBwdWJsaWMgQmV6dWdzcGVnZWwgZ2V0QmV6dWdzcGVnZWwoKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLmJlenVnc3BlZ2VsOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEJlenVnc3BlZ2Vs
KEJlenVnc3BlZ2VsIGJlenVnc3BlZ2VsKSB7Ci0gICAgICAgIHRoaXMuYmV6dWdzcGVnZWwgPTNE
IGJlenVnc3BlZ2VsOwotICAgIH0KLQotQE1hbnlUb09uZShmZXRjaD0zREZldGNoVHlwZS5MQVpZ
KQotICAgIEBKb2luQ29sdW1uKG5hbWU9M0QiR0VXQUVTU0VSSUQiLCBudWxsYWJsZT0zRGZhbHNl
KQotICAgIHB1YmxpYyBHZXdhZXNzZXIgZ2V0R2V3YWVzc2VyKCkgewotICAgICAgICByZXR1cm4g
dGhpcy5nZXdhZXNzZXI7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0R2V3YWVzc2VyKEdl
d2Flc3NlciBnZXdhZXNzZXIpIHsKLSAgICAgICAgdGhpcy5nZXdhZXNzZXIgPTNEIGdld2Flc3Nl
cjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJLTSIsIG51bGxhYmxlPTNEZmFsc2Us
IHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRLbSgp
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMua207Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0
S20oQmlnRGVjaW1hbCBrbSkgewotICAgICAgICB0aGlzLmttID0zRCBrbTsKLSAgICB9Ci0KLQot
ICAgIEBDb2x1bW4obmFtZT0zRCJOQU1FIiwgbnVsbGFibGU9M0RmYWxzZSwgbGVuZ3RoPTNENTAp
Ci0gICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgewotICAgICAgICByZXR1cm4gdGhpcy5uYW1l
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpIHsKLSAgICAg
ICAgdGhpcy5uYW1lID0zRCBuYW1lOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIlVG
RVJJU1RMSU5LUyIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDEsIHNjYWxlPQo9M0Qw
KQotICAgIHB1YmxpYyBib29sZWFuIGlzVWZlcmlzdGxpbmtzKCkgewotICAgICAgICByZXR1cm4g
dGhpcy51ZmVyaXN0bGlua3M7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0VWZlcmlzdGxp
bmtzKGJvb2xlYW4gdWZlcmlzdGxpbmtzKSB7Ci0gICAgICAgIHRoaXMudWZlcmlzdGxpbmtzID0z
RCB1ZmVyaXN0bGlua3M7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVEVJTF9WT04i
LCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VGVp
bFZvbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudGVpbFZvbjsKLSAgICB9Ci0KLSAgICBwdWJs
aWMgdm9pZCBzZXRUZWlsVm9uKEJpZ0RlY2ltYWwgdGVpbFZvbikgewotICAgICAgICB0aGlzLnRl
aWxWb24gPTNEIHRlaWxWb247Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVEVJTF9C
SVMiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0
VGVpbEJpcygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudGVpbEJpczsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRUZWlsQmlzKEJpZ0RlY2ltYWwgdGVpbEJpcykgewotICAgICAgICB0aGlz
LnRlaWxCaXMgPTNEIHRlaWxCaXM7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiQUJT
VF9ITVNUIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFs
IGdldEFic3RIbXN0KCkgewotICAgICAgICByZXR1cm4gdGhpcy5hYnN0SG1zdDsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRBYnN0SG1zdChCaWdEZWNpbWFsIGFic3RIbXN0KSB7Ci0gICAg
ICAgIHRoaXMuYWJzdEhtc3QgPTNEIGFic3RIbXN0OwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIkxfSE9DSFdFUlQiLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QzKQotICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldExIb2Nod2VydCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuTEhvY2h3
ZXJ0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldExIb2Nod2VydChCaWdEZWNpbWFsIExI
b2Nod2VydCkgewotICAgICAgICB0aGlzLkxIb2Nod2VydCA9M0QgTEhvY2h3ZXJ0OwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIkxfUkVDSFdFUlQiLCBwcmVjaXNpb249M0QxMSwgc2Nh
bGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldExSZWNod2VydCgpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuTFJlY2h3ZXJ0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldExSZWNo
d2VydChCaWdEZWNpbWFsIExSZWNod2VydCkgewotICAgICAgICB0aGlzLkxSZWNod2VydCA9M0Qg
TFJlY2h3ZXJ0OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkxfTk4iLCBwcmVjaXNp
b249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TE5uKCkgewotICAg
ICAgICByZXR1cm4gdGhpcy5MTm47Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TE5uKEJp
Z0RlY2ltYWwgTE5uKSB7Ci0gICAgICAgIHRoaXMuTE5uID0zRCBMTm47Ci0gICAgfQotCi0KLSAg
ICBAQ29sdW1uKG5hbWU9M0QiUl9IT0NIV0VSVCIsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDMp
Ci0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UkhvY2h3ZXJ0KCkgewotICAgICAgICByZXR1cm4g
dGhpcy5SSG9jaHdlcnQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0UkhvY2h3ZXJ0KEJp
Z0RlY2ltYWwgUkhvY2h3ZXJ0KSB7Ci0gICAgICAgIHRoaXMuUkhvY2h3ZXJ0ID0zRCBSSG9jaHdl
cnQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUl9SRUNIV0VSVCIsIHByZWNpc2lv
bj0zRDExLCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UlJlY2h3ZXJ0KCkg
ewotICAgICAgICByZXR1cm4gdGhpcy5SUmVjaHdlcnQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZv
aWQgc2V0UlJlY2h3ZXJ0KEJpZ0RlY2ltYWwgUlJlY2h3ZXJ0KSB7Ci0gICAgICAgIHRoaXMuUlJl
Y2h3ZXJ0ID0zRCBSUmVjaHdlcnQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUl9O
TiIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRS
Tm4oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLlJObjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9p
ZCBzZXRSTm4oQmlnRGVjaW1hbCBSTm4pIHsKLSAgICAgICAgdGhpcy5STm4gPTNEIFJObjsKLSAg
ICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJCRU1FUktVTkciLCBsZW5ndGg9M0QyNDApCi0g
ICAgcHVibGljIFN0cmluZyBnZXRCZW1lcmt1bmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJl
bWVya3VuZzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRCZW1lcmt1bmcoU3RyaW5nIGJl
bWVya3VuZykgewotICAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIk9MRE1TVElEIiwgcHJlY2lzaW9uPTNEMTEsIHNjYWxl
PTNEMCkKLSAgICBwdWJsaWMgTG9uZyBnZXRPbGRtc3RpZCgpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMub2xkbXN0aWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0T2xkbXN0aWQoTG9uZyBv
bGRtc3RpZCkgewotICAgICAgICB0aGlzLm9sZG1zdGlkID0zRCBvbGRtc3RpZDsKLSAgICB9Ci0K
LQotICAgIEBDb2x1bW4obmFtZT0zRCJJU1RGRVNUU1RPRkYiLCBudWxsYWJsZT0zRGZhbHNlLCBw
cmVjaXNpb249M0QxLCBzY2FsZT0KPTNEMCkKLSAgICBwdWJsaWMgYm9vbGVhbiBpc0lzdGZlc3Rz
dG9mZigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaXN0ZmVzdHN0b2ZmOwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldElzdGZlc3RzdG9mZihib29sZWFuIGlzdGZlc3RzdG9mZikgewotICAg
ICAgICB0aGlzLmlzdGZlc3RzdG9mZiA9M0QgaXN0ZmVzdHN0b2ZmOwotICAgIH0KLQotQE9uZVRv
TWFueShmZXRjaD0zREZldGNoVHlwZS5MQVpZLCBtYXBwZWRCeT0zRCJzdGF0aW9uIikKLSAgICBw
dWJsaWMgU2V0PFNvaGx0ZXN0PiBnZXRTb2hsdGVzdHMoKSB7Ci0gICAgICAgIHJldHVybiB0aGlz
LnNvaGx0ZXN0czsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTb2hsdGVzdHMoU2V0PFNv
aGx0ZXN0PiBzb2hsdGVzdHMpIHsKLSAgICAgICAgdGhpcy5zb2hsdGVzdHMgPTNEIHNvaGx0ZXN0
czsKLSAgICB9Ci0KLUBPbmVUb01hbnkoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSwgbWFwcGVkQnk9
M0Qic3RhdGlvbiIpCi0gICAgcHVibGljIFNldDxIcGVpbHVuZz4gZ2V0SHBlaWx1bmdzKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy5ocGVpbHVuZ3M7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0SHBlaWx1bmdzKFNldDxIcGVpbHVuZz4gaHBlaWx1bmdzKSB7Ci0gICAgICAgIHRoaXMuaHBl
aWx1bmdzID0zRCBocGVpbHVuZ3M7Ci0gICAgfQotCi1AT25lVG9NYW55KGZldGNoPTNERmV0Y2hU
eXBlLkxBWlksIG1hcHBlZEJ5PTNEInN0YXRpb24iKQotICAgIHB1YmxpYyBTZXQ8TXBlaWx1bmc+
IGdldE1wZWlsdW5ncygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubXBlaWx1bmdzOwotICAgIH0K
LQotICAgIHB1YmxpYyB2b2lkIHNldE1wZWlsdW5ncyhTZXQ8TXBlaWx1bmc+IG1wZWlsdW5ncykg
ewotICAgICAgICB0aGlzLm1wZWlsdW5ncyA9M0QgbXBlaWx1bmdzOwotICAgIH0KLQotQE9uZVRv
TWFueShmZXRjaD0zREZldGNoVHlwZS5MQVpZLCBtYXBwZWRCeT0zRCJzdGF0aW9uIikKLSAgICBw
dWJsaWMgU2V0PE1lc3N1bmc+IGdldE1lc3N1bmdzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5t
ZXNzdW5nczsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNZXNzdW5ncyhTZXQ8TWVzc3Vu
Zz4gbWVzc3VuZ3MpIHsKLSAgICAgICAgdGhpcy5tZXNzdW5ncyA9M0QgbWVzc3VuZ3M7Ci0gICAg
fQotfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFp
bi9qYXZhL2RlL2ludGV2YXRpb24vc2U9CmRkYi9tb2RlbC9TdGF0aW9uZ2V3LmphdmEKLS0tIGEv
YmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2VkZGIvbW9kZWwvU3RhdGlvbmdl
dy5qYXZhCU1vbiBBPQpwciAyOSAxMToxNDoyNSAyMDEzICswMjAwCisrKyAvZGV2L251bGwJVGh1
IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDY5ICswLDAgQEAKLS8qIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1B
NHNzZXJrPQp1bmRlCi0gKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgK
LSAqCi0gKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49
M0R2Myk9MjAKLSAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNr
IG91dCB0aGUKLSAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZl
ciBmb3IgZGV0YWlscy49MjAKLSAqLwotCi1wYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnNlZGRi
Lm1vZGVsOwotLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRv
b2xzIDMuNC4wLkNSMQotCi0KLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5BdHRyaWJ1dGVPdmVy
cmlkZTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5BdHRyaWJ1dGVPdmVycmlkZXM7Ci1pbXBv
cnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVt
YmVkZGVkSWQ7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OwotaW1wb3J0IGphdmF4
LnBlcnNpc3RlbmNlLlRhYmxlOwotCi0vKioKLSAqIFN0YXRpb25nZXcgZ2VuZXJhdGVkIGJ5IGhi
bTJqYXZhCi0gKi8KLUBFbnRpdHkKLUBUYWJsZShuYW1lPTNEIlNUQVRJT05HRVciCi0gICAgLHNj
aGVtYT0zRCJTRUREQiIKLSkKLXB1YmxpYyBjbGFzcyBTdGF0aW9uZ2V3ICBpbXBsZW1lbnRzIGph
dmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAgIHByaXZhdGUgU3RhdGlvbmdld0lkIGlkOwot
Ci0gICAgcHVibGljIFN0YXRpb25nZXcoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIFN0YXRpb25n
ZXcoU3RhdGlvbmdld0lkIGlkKSB7Ci0gICAgICAgdGhpcy5pZCA9M0QgaWQ7Ci0gICAgfQotCi0g
ICAgIEBFbWJlZGRlZElkCi0KLQotICAgIEBBdHRyaWJ1dGVPdmVycmlkZXMoIHsKLSAgICAgICAg
QEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qic3RhdGlvbmlkIiwgY29sdW1uPTNEQENvbHVtbihu
YW1lPTNEIlNUPQpBVElPTklEIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMTEsIHNj
YWxlPTNEMCkgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZ2V3YWVzc2Vy
aWQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiPQpHRVdBRVNTRVJJRCIsIG51bGxhYmxlPTNE
ZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDApICksCi0gICAgICAgIEBBdHRyaWJ1dGVP
dmVycmlkZShuYW1lPTNEImttIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIktNIiwgbnVsbD0K
YWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRy
aWJ1dGVPdmVycmlkZShuYW1lPTNEImJlenVnc3BlZ2VsaWQiLCBjb2x1bW49M0RAQ29sdW1uKG5h
bWU9Cj0zRCJCRVpVR1NQRUdFTElEIiwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEMCkgKSwKLSAg
ICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibmFtZSIsIGNvbHVtbj0zREBDb2x1bW4o
bmFtZT0zRCJOQU1FIiwgPQpudWxsYWJsZT0zRGZhbHNlLCBsZW5ndGg9M0Q1MCkgKSwKLSAgICAg
ICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QidWZlcmlzdGxpbmtzIiwgY29sdW1uPTNEQENv
bHVtbihuYW1lPTNEPQoiVUZFUklTVExJTktTIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9u
PTNEMSwgc2NhbGU9M0QwKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ0
ZWlsVm9uIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlRFSUw9Cl9WT04iLCBwcmVjaXNpb249
M0Q4LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInRl
aWxCaXMiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiVEVJTD0KX0JJUyIsIHByZWNpc2lvbj0z
RDgsIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiYWJz
dEhtc3QiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiQUJTPQpUX0hNU1QiLCBwcmVjaXNpb249
M0Q4LCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIkxI
b2Nod2VydCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJMXz0KSE9DSFdFUlQiLCBwcmVjaXNp
b249M0QxMSwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0z
RCJMUmVjaHdlcnQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTF89ClJFQ0hXRVJUIiwgcHJl
Y2lzaW9uPTNEMTEsIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5h
bWU9M0QiTE5uIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkxfTk4iLCBwPQpyZWNpc2lvbj0z
RDgsIHNjYWxlPTNEMykgKSwKLSAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiUkhv
Y2h3ZXJ0IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJfPQpIT0NIV0VSVCIsIHByZWNpc2lv
bj0zRDExLCBzY2FsZT0zRDMpICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNE
IlJSZWNod2VydCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSXz0KUkVDSFdFUlQiLCBwcmVj
aXNpb249M0QxMSwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFt
ZT0zRCJSTm4iLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUl9OTiIsIHA9CnJlY2lzaW9uPTNE
OCwgc2NhbGU9M0QzKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJiZW1l
cmt1bmciLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiQkU9Ck1FUktVTkciLCBsZW5ndGg9M0Qy
NDApICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm9sZG1zdGlkIiwgY29s
dW1uPTNEQENvbHVtbihuYW1lPTNEIk9MRD0KTVNUSUQiLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9
M0QwKSApLAotICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJpc3RmZXN0c3RvZmYi
LCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0Q9CiJJU1RGRVNUU1RPRkYiLCBudWxsYWJsZT0zRGZh
bHNlLCBwcmVjaXNpb249M0QxLCBzY2FsZT0zRDApICksCi0gICAgICAgIEBBdHRyaWJ1dGVPdmVy
cmlkZShuYW1lPTNEImdld25hbWUiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiR0VXTj0KQU1F
IiwgbnVsbGFibGU9M0RmYWxzZSwgbGVuZ3RoPTNEMjApICkgfSApCi0gICAgcHVibGljIFN0YXRp
b25nZXdJZCBnZXRJZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaWQ7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0SWQoU3RhdGlvbmdld0lkIGlkKSB7Ci0gICAgICAgIHRoaXMuaWQgPTNE
IGlkOwotICAgIH0KLX0KZGlmZiAtciBiYzRlMWJmMjYyMjcgLXIgMWU2OGVjYTI2YjhhIGJhY2tl
bmQvc3JjL21haW4vamF2YS9kZS9pbnRldmF0aW9uL3NlPQpkZGIvbW9kZWwvU3RhdGlvbmdld0lk
LmphdmEKLS0tIGEvYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2VkZGIvbW9k
ZWwvU3RhdGlvbmdld0lkLmphdmEJTW9uPQogQXByIDI5IDExOjE0OjI1IDIwMTMgKzAyMDAKKysr
IC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsMzIxICswLDAg
QEAKLS8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9
QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCi0gKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJ
bnRldmF0aW9uIEdtYkgKLSAqCi0gKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0
aGUgR05VIEFHUEwgKD49M0R2Myk9MjAKLSAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8g
V0FSUkFOVFkhIENoZWNrIG91dCB0aGUKLSAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2
ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy49MjAKLSAqLwotCi1wYWNrYWdlIG9yZy5kaXZl
NGVsZW1lbnRzLnNlZGRiLm1vZGVsOwotLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcg
YnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQotCi0KLWltcG9ydCBqYXZhLm1hdGguQmlnRGVj
aW1hbDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVy
c2lzdGVuY2UuRW1iZWRkYWJsZTsKLQotLyoqCi0gKiBTdGF0aW9uZ2V3SWQgZ2VuZXJhdGVkIGJ5
IGhibTJqYXZhCi0gKi8KLUBFbWJlZGRhYmxlCi1wdWJsaWMgY2xhc3MgU3RhdGlvbmdld0lkICBp
bXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAgIHByaXZhdGUgbG9uZyBz
dGF0aW9uaWQ7Ci0gICAgIHByaXZhdGUgbG9uZyBnZXdhZXNzZXJpZDsKLSAgICAgcHJpdmF0ZSBC
aWdEZWNpbWFsIGttOwotICAgICBwcml2YXRlIExvbmcgYmV6dWdzcGVnZWxpZDsKLSAgICAgcHJp
dmF0ZSBTdHJpbmcgbmFtZTsKLSAgICAgcHJpdmF0ZSBib29sZWFuIHVmZXJpc3RsaW5rczsKLSAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHRlaWxWb247Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCB0
ZWlsQmlzOwotICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgYWJzdEhtc3Q7Ci0gICAgIHByaXZhdGUg
QmlnRGVjaW1hbCBMSG9jaHdlcnQ7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBMUmVjaHdlcnQ7
Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBMTm47Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBS
SG9jaHdlcnQ7Ci0gICAgIHByaXZhdGUgQmlnRGVjaW1hbCBSUmVjaHdlcnQ7Ci0gICAgIHByaXZh
dGUgQmlnRGVjaW1hbCBSTm47Ci0gICAgIHByaXZhdGUgU3RyaW5nIGJlbWVya3VuZzsKLSAgICAg
cHJpdmF0ZSBMb25nIG9sZG1zdGlkOwotICAgICBwcml2YXRlIGJvb2xlYW4gaXN0ZmVzdHN0b2Zm
OwotICAgICBwcml2YXRlIFN0cmluZyBnZXduYW1lOwotCi0gICAgcHVibGljIFN0YXRpb25nZXdJ
ZCgpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RhdGlvbmdld0lkKGxvbmcgc3RhdGlvbmlkLCBs
b25nIGdld2Flc3NlcmlkLCBCaWdEZWNpbWFsIGttLCBTPQp0cmluZyBuYW1lLCBib29sZWFuIHVm
ZXJpc3RsaW5rcywgYm9vbGVhbiBpc3RmZXN0c3RvZmYsIFN0cmluZyBnZXduYW1lKSB7Ci0gICAg
ICAgIHRoaXMuc3RhdGlvbmlkID0zRCBzdGF0aW9uaWQ7Ci0gICAgICAgIHRoaXMuZ2V3YWVzc2Vy
aWQgPTNEIGdld2Flc3NlcmlkOwotICAgICAgICB0aGlzLmttID0zRCBrbTsKLSAgICAgICAgdGhp
cy5uYW1lID0zRCBuYW1lOwotICAgICAgICB0aGlzLnVmZXJpc3RsaW5rcyA9M0QgdWZlcmlzdGxp
bmtzOwotICAgICAgICB0aGlzLmlzdGZlc3RzdG9mZiA9M0QgaXN0ZmVzdHN0b2ZmOwotICAgICAg
ICB0aGlzLmdld25hbWUgPTNEIGdld25hbWU7Ci0gICAgfQotICAgIHB1YmxpYyBTdGF0aW9uZ2V3
SWQobG9uZyBzdGF0aW9uaWQsIGxvbmcgZ2V3YWVzc2VyaWQsIEJpZ0RlY2ltYWwga20sIEw9Cm9u
ZyBiZXp1Z3NwZWdlbGlkLCBTdHJpbmcgbmFtZSwgYm9vbGVhbiB1ZmVyaXN0bGlua3MsIEJpZ0Rl
Y2ltYWwgdGVpbFZvbiwgQj0KaWdEZWNpbWFsIHRlaWxCaXMsIEJpZ0RlY2ltYWwgYWJzdEhtc3Qs
IEJpZ0RlY2ltYWwgTEhvY2h3ZXJ0LCBCaWdEZWNpbWFsIExSPQplY2h3ZXJ0LCBCaWdEZWNpbWFs
IExObiwgQmlnRGVjaW1hbCBSSG9jaHdlcnQsIEJpZ0RlY2ltYWwgUlJlY2h3ZXJ0LCBCaWdEZWM9
CmltYWwgUk5uLCBTdHJpbmcgYmVtZXJrdW5nLCBMb25nIG9sZG1zdGlkLCBib29sZWFuIGlzdGZl
c3RzdG9mZiwgU3RyaW5nIGdldz0KbmFtZSkgewotICAgICAgIHRoaXMuc3RhdGlvbmlkID0zRCBz
dGF0aW9uaWQ7Ci0gICAgICAgdGhpcy5nZXdhZXNzZXJpZCA9M0QgZ2V3YWVzc2VyaWQ7Ci0gICAg
ICAgdGhpcy5rbSA9M0Qga207Ci0gICAgICAgdGhpcy5iZXp1Z3NwZWdlbGlkID0zRCBiZXp1Z3Nw
ZWdlbGlkOwotICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKLSAgICAgICB0aGlzLnVmZXJpc3Rs
aW5rcyA9M0QgdWZlcmlzdGxpbmtzOwotICAgICAgIHRoaXMudGVpbFZvbiA9M0QgdGVpbFZvbjsK
LSAgICAgICB0aGlzLnRlaWxCaXMgPTNEIHRlaWxCaXM7Ci0gICAgICAgdGhpcy5hYnN0SG1zdCA9
M0QgYWJzdEhtc3Q7Ci0gICAgICAgdGhpcy5MSG9jaHdlcnQgPTNEIExIb2Nod2VydDsKLSAgICAg
ICB0aGlzLkxSZWNod2VydCA9M0QgTFJlY2h3ZXJ0OwotICAgICAgIHRoaXMuTE5uID0zRCBMTm47
Ci0gICAgICAgdGhpcy5SSG9jaHdlcnQgPTNEIFJIb2Nod2VydDsKLSAgICAgICB0aGlzLlJSZWNo
d2VydCA9M0QgUlJlY2h3ZXJ0OwotICAgICAgIHRoaXMuUk5uID0zRCBSTm47Ci0gICAgICAgdGhp
cy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICAgICB0aGlzLm9sZG1zdGlkID0zRCBvbGRt
c3RpZDsKLSAgICAgICB0aGlzLmlzdGZlc3RzdG9mZiA9M0QgaXN0ZmVzdHN0b2ZmOwotICAgICAg
IHRoaXMuZ2V3bmFtZSA9M0QgZ2V3bmFtZTsKLSAgICB9Ci0KLQotCi0gICAgQENvbHVtbihuYW1l
PTNEIlNUQVRJT05JRCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0z
RD0KMCkKLSAgICBwdWJsaWMgbG9uZyBnZXRTdGF0aW9uaWQoKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLnN0YXRpb25pZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRTdGF0aW9uaWQobG9u
ZyBzdGF0aW9uaWQpIHsKLSAgICAgICAgdGhpcy5zdGF0aW9uaWQgPTNEIHN0YXRpb25pZDsKLSAg
ICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJHRVdBRVNTRVJJRCIsIG51bGxhYmxlPTNEZmFs
c2UsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0KPTNEMCkKLSAgICBwdWJsaWMgbG9uZyBnZXRHZXdh
ZXNzZXJpZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ2V3YWVzc2VyaWQ7Ci0gICAgfQotCi0g
ICAgcHVibGljIHZvaWQgc2V0R2V3YWVzc2VyaWQobG9uZyBnZXdhZXNzZXJpZCkgewotICAgICAg
ICB0aGlzLmdld2Flc3NlcmlkID0zRCBnZXdhZXNzZXJpZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1
bW4obmFtZT0zRCJLTSIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNE
MykKLSAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRLbSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
a207Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0S20oQmlnRGVjaW1hbCBrbSkgewotICAg
ICAgICB0aGlzLmttID0zRCBrbTsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJCRVpV
R1NQRUdFTElEIiwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEMCkKLSAgICBwdWJsaWMgTG9uZyBn
ZXRCZXp1Z3NwZWdlbGlkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5iZXp1Z3NwZWdlbGlkOwot
ICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEJlenVnc3BlZ2VsaWQoTG9uZyBiZXp1Z3NwZWdl
bGlkKSB7Ci0gICAgICAgIHRoaXMuYmV6dWdzcGVnZWxpZCA9M0QgYmV6dWdzcGVnZWxpZDsKLSAg
ICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJOQU1FIiwgbnVsbGFibGU9M0RmYWxzZSwgbGVu
Z3RoPTNENTApCi0gICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgewotICAgICAgICByZXR1cm4g
dGhpcy5uYW1lOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUp
IHsKLSAgICAgICAgdGhpcy5uYW1lID0zRCBuYW1lOwotICAgIH0KLQotCi0gICAgQENvbHVtbihu
YW1lPTNEIlVGRVJJU1RMSU5LUyIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDEsIHNj
YWxlPQo9M0QwKQotICAgIHB1YmxpYyBib29sZWFuIGlzVWZlcmlzdGxpbmtzKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy51ZmVyaXN0bGlua3M7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0
VWZlcmlzdGxpbmtzKGJvb2xlYW4gdWZlcmlzdGxpbmtzKSB7Ci0gICAgICAgIHRoaXMudWZlcmlz
dGxpbmtzID0zRCB1ZmVyaXN0bGlua3M7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0Qi
VEVJTF9WT04iLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2lt
YWwgZ2V0VGVpbFZvbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudGVpbFZvbjsKLSAgICB9Ci0K
LSAgICBwdWJsaWMgdm9pZCBzZXRUZWlsVm9uKEJpZ0RlY2ltYWwgdGVpbFZvbikgewotICAgICAg
ICB0aGlzLnRlaWxWb24gPTNEIHRlaWxWb247Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiVEVJTF9CSVMiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0VGVpbEJpcygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudGVpbEJpczsKLSAgICB9
Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRUZWlsQmlzKEJpZ0RlY2ltYWwgdGVpbEJpcykgewotICAg
ICAgICB0aGlzLnRlaWxCaXMgPTNEIHRlaWxCaXM7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiQUJTVF9ITVNUIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBC
aWdEZWNpbWFsIGdldEFic3RIbXN0KCkgewotICAgICAgICByZXR1cm4gdGhpcy5hYnN0SG1zdDsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRBYnN0SG1zdChCaWdEZWNpbWFsIGFic3RIbXN0
KSB7Ci0gICAgICAgIHRoaXMuYWJzdEhtc3QgPTNEIGFic3RIbXN0OwotICAgIH0KLQotCi0gICAg
QENvbHVtbihuYW1lPTNEIkxfSE9DSFdFUlQiLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QzKQot
ICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldExIb2Nod2VydCgpIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuTEhvY2h3ZXJ0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldExIb2Nod2VydChCaWdE
ZWNpbWFsIExIb2Nod2VydCkgewotICAgICAgICB0aGlzLkxIb2Nod2VydCA9M0QgTEhvY2h3ZXJ0
OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkxfUkVDSFdFUlQiLCBwcmVjaXNpb249
M0QxMSwgc2NhbGU9M0QzKQotICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldExSZWNod2VydCgpIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuTFJlY2h3ZXJ0OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lk
IHNldExSZWNod2VydChCaWdEZWNpbWFsIExSZWNod2VydCkgewotICAgICAgICB0aGlzLkxSZWNo
d2VydCA9M0QgTFJlY2h3ZXJ0OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIkxfTk4i
LCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TE5u
KCkgewotICAgICAgICByZXR1cm4gdGhpcy5MTm47Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQg
c2V0TE5uKEJpZ0RlY2ltYWwgTE5uKSB7Ci0gICAgICAgIHRoaXMuTE5uID0zRCBMTm47Ci0gICAg
fQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUl9IT0NIV0VSVCIsIHByZWNpc2lvbj0zRDExLCBz
Y2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UkhvY2h3ZXJ0KCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5SSG9jaHdlcnQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0Ukhv
Y2h3ZXJ0KEJpZ0RlY2ltYWwgUkhvY2h3ZXJ0KSB7Ci0gICAgICAgIHRoaXMuUkhvY2h3ZXJ0ID0z
RCBSSG9jaHdlcnQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiUl9SRUNIV0VSVCIs
IHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDMpCi0gICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UlJl
Y2h3ZXJ0KCkgewotICAgICAgICByZXR1cm4gdGhpcy5SUmVjaHdlcnQ7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0UlJlY2h3ZXJ0KEJpZ0RlY2ltYWwgUlJlY2h3ZXJ0KSB7Ci0gICAgICAg
IHRoaXMuUlJlY2h3ZXJ0ID0zRCBSUmVjaHdlcnQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5h
bWU9M0QiUl9OTiIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKLSAgICBwdWJsaWMgQmlnRGVj
aW1hbCBnZXRSTm4oKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLlJObjsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRSTm4oQmlnRGVjaW1hbCBSTm4pIHsKLSAgICAgICAgdGhpcy5STm4gPTNE
IFJObjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJCRU1FUktVTkciLCBsZW5ndGg9
M0QyNDApCi0gICAgcHVibGljIFN0cmluZyBnZXRCZW1lcmt1bmcoKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLmJlbWVya3VuZzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRCZW1lcmt1bmco
U3RyaW5nIGJlbWVya3VuZykgewotICAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5n
OwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk9MRE1TVElEIiwgcHJlY2lzaW9uPTNE
MTEsIHNjYWxlPTNEMCkKLSAgICBwdWJsaWMgTG9uZyBnZXRPbGRtc3RpZCgpIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMub2xkbXN0aWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0T2xkbXN0
aWQoTG9uZyBvbGRtc3RpZCkgewotICAgICAgICB0aGlzLm9sZG1zdGlkID0zRCBvbGRtc3RpZDsK
LSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJJU1RGRVNUU1RPRkYiLCBudWxsYWJsZT0z
RGZhbHNlLCBwcmVjaXNpb249M0QxLCBzY2FsZT0KPTNEMCkKLSAgICBwdWJsaWMgYm9vbGVhbiBp
c0lzdGZlc3RzdG9mZigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaXN0ZmVzdHN0b2ZmOwotICAg
IH0KLQotICAgIHB1YmxpYyB2b2lkIHNldElzdGZlc3RzdG9mZihib29sZWFuIGlzdGZlc3RzdG9m
ZikgewotICAgICAgICB0aGlzLmlzdGZlc3RzdG9mZiA9M0QgaXN0ZmVzdHN0b2ZmOwotICAgIH0K
LQotCi0gICAgQENvbHVtbihuYW1lPTNEIkdFV05BTUUiLCBudWxsYWJsZT0zRGZhbHNlLCBsZW5n
dGg9M0QyMCkKLSAgICBwdWJsaWMgU3RyaW5nIGdldEdld25hbWUoKSB7Ci0gICAgICAgIHJldHVy
biB0aGlzLmdld25hbWU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0R2V3bmFtZShTdHJp
bmcgZ2V3bmFtZSkgewotICAgICAgICB0aGlzLmdld25hbWUgPTNEIGdld25hbWU7Ci0gICAgfQot
Ci0KLSAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb3RoZXIpIHsKLSAgICAgICAgIGlm
ICggKHRoaXMgPTNEPTNEIG90aGVyICkgKSByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIGlmICggKG90
aGVyID0zRD0zRCBudWxsICkgKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICBpZiAoICEob3RoZXIg
aW5zdGFuY2VvZiBTdGF0aW9uZ2V3SWQpICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgU3RhdGlv
bmdld0lkIGNhc3RPdGhlciA9M0QgKCBTdGF0aW9uZ2V3SWQgKSBvdGhlcjsKLQotICAgICAgICAg
cmV0dXJuICh0aGlzLmdldFN0YXRpb25pZCgpPTNEPTNEY2FzdE90aGVyLmdldFN0YXRpb25pZCgp
KQotICYmICh0aGlzLmdldEdld2Flc3NlcmlkKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0R2V3YWVzc2Vy
aWQoKSkKLSAmJiAoICh0aGlzLmdldEttKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0S20oKSkgfHwgKCB0
aGlzLmdldEttKCkhPTNEbnVsbCAmJiBjPQphc3RPdGhlci5nZXRLbSgpIT0zRG51bGwgJiYgdGhp
cy5nZXRLbSgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0S20oKSkgKSApCi0gJiYgKCAodGhpcy5nZXRC
ZXp1Z3NwZWdlbGlkKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0QmV6dWdzcGVnZWxpZCgpKSB8fCAoIHRo
aT0Kcy5nZXRCZXp1Z3NwZWdlbGlkKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0QmV6dWdzcGVn
ZWxpZCgpIT0zRG51bGwgJiYgdGhpPQpzLmdldEJlenVnc3BlZ2VsaWQoKS5lcXVhbHMoY2FzdE90
aGVyLmdldEJlenVnc3BlZ2VsaWQoKSkgKSApCi0gJiYgKCAodGhpcy5nZXROYW1lKCk9M0Q9M0Rj
YXN0T3RoZXIuZ2V0TmFtZSgpKSB8fCAoIHRoaXMuZ2V0TmFtZSgpIT0zRG51bD0KbCAmJiBjYXN0
T3RoZXIuZ2V0TmFtZSgpIT0zRG51bGwgJiYgdGhpcy5nZXROYW1lKCkuZXF1YWxzKGNhc3RPdGhl
ci5nZXROYW1lPQooKSkgKSApCi0gJiYgKHRoaXMuaXNVZmVyaXN0bGlua3MoKT0zRD0zRGNhc3RP
dGhlci5pc1VmZXJpc3RsaW5rcygpKQotICYmICggKHRoaXMuZ2V0VGVpbFZvbigpPTNEPTNEY2Fz
dE90aGVyLmdldFRlaWxWb24oKSkgfHwgKCB0aGlzLmdldFRlaWxWb249CigpIT0zRG51bGwgJiYg
Y2FzdE90aGVyLmdldFRlaWxWb24oKSE9M0RudWxsICYmIHRoaXMuZ2V0VGVpbFZvbigpLmVxdWFs
cyhjYT0Kc3RPdGhlci5nZXRUZWlsVm9uKCkpICkgKQotICYmICggKHRoaXMuZ2V0VGVpbEJpcygp
PTNEPTNEY2FzdE90aGVyLmdldFRlaWxCaXMoKSkgfHwgKCB0aGlzLmdldFRlaWxCaXM9CigpIT0z
RG51bGwgJiYgY2FzdE90aGVyLmdldFRlaWxCaXMoKSE9M0RudWxsICYmIHRoaXMuZ2V0VGVpbEJp
cygpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRUZWlsQmlzKCkpICkgKQotICYmICggKHRoaXMuZ2V0
QWJzdEhtc3QoKT0zRD0zRGNhc3RPdGhlci5nZXRBYnN0SG1zdCgpKSB8fCAoIHRoaXMuZ2V0QWJz
dEg9Cm1zdCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldEFic3RIbXN0KCkhPTNEbnVsbCAmJiB0
aGlzLmdldEFic3RIbXN0KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldEFic3RIbXN0KCkpICkgKQot
ICYmICggKHRoaXMuZ2V0TEhvY2h3ZXJ0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TEhvY2h3ZXJ0KCkp
IHx8ICggdGhpcy5nZXRMSG89CmNod2VydCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldExIb2No
d2VydCgpIT0zRG51bGwgJiYgdGhpcy5nZXRMSG9jaHdlcnQoKT0KLmVxdWFscyhjYXN0T3RoZXIu
Z2V0TEhvY2h3ZXJ0KCkpICkgKQotICYmICggKHRoaXMuZ2V0TFJlY2h3ZXJ0KCk9M0Q9M0RjYXN0
T3RoZXIuZ2V0TFJlY2h3ZXJ0KCkpIHx8ICggdGhpcy5nZXRMUmU9CmNod2VydCgpIT0zRG51bGwg
JiYgY2FzdE90aGVyLmdldExSZWNod2VydCgpIT0zRG51bGwgJiYgdGhpcy5nZXRMUmVjaHdlcnQo
KT0KLmVxdWFscyhjYXN0T3RoZXIuZ2V0TFJlY2h3ZXJ0KCkpICkgKQotICYmICggKHRoaXMuZ2V0
TE5uKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TE5uKCkpIHx8ICggdGhpcy5nZXRMTm4oKSE9M0RudWxs
ICY9CiYgY2FzdE90aGVyLmdldExObigpIT0zRG51bGwgJiYgdGhpcy5nZXRMTm4oKS5lcXVhbHMo
Y2FzdE90aGVyLmdldExObigpKSApICkKLSAmJiAoICh0aGlzLmdldFJIb2Nod2VydCgpPTNEPTNE
Y2FzdE90aGVyLmdldFJIb2Nod2VydCgpKSB8fCAoIHRoaXMuZ2V0UkhvPQpjaHdlcnQoKSE9M0Ru
dWxsICYmIGNhc3RPdGhlci5nZXRSSG9jaHdlcnQoKSE9M0RudWxsICYmIHRoaXMuZ2V0UkhvY2h3
ZXJ0KCk9Ci5lcXVhbHMoY2FzdE90aGVyLmdldFJIb2Nod2VydCgpKSApICkKLSAmJiAoICh0aGlz
LmdldFJSZWNod2VydCgpPTNEPTNEY2FzdE90aGVyLmdldFJSZWNod2VydCgpKSB8fCAoIHRoaXMu
Z2V0UlJlPQpjaHdlcnQoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSUmVjaHdlcnQoKSE9M0Ru
dWxsICYmIHRoaXMuZ2V0UlJlY2h3ZXJ0KCk9Ci5lcXVhbHMoY2FzdE90aGVyLmdldFJSZWNod2Vy
dCgpKSApICkKLSAmJiAoICh0aGlzLmdldFJObigpPTNEPTNEY2FzdE90aGVyLmdldFJObigpKSB8
fCAoIHRoaXMuZ2V0Uk5uKCkhPTNEbnVsbCAmPQomIGNhc3RPdGhlci5nZXRSTm4oKSE9M0RudWxs
ICYmIHRoaXMuZ2V0Uk5uKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRSTm4oKSkgKSApCi0gJiYgKCAo
dGhpcy5nZXRCZW1lcmt1bmcoKT0zRD0zRGNhc3RPdGhlci5nZXRCZW1lcmt1bmcoKSkgfHwgKCB0
aGlzLmdldEJlbT0KZXJrdW5nKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0QmVtZXJrdW5nKCkh
PTNEbnVsbCAmJiB0aGlzLmdldEJlbWVya3VuZygpPQouZXF1YWxzKGNhc3RPdGhlci5nZXRCZW1l
cmt1bmcoKSkgKSApCi0gJiYgKCAodGhpcy5nZXRPbGRtc3RpZCgpPTNEPTNEY2FzdE90aGVyLmdl
dE9sZG1zdGlkKCkpIHx8ICggdGhpcy5nZXRPbGRtcz0KdGlkKCkhPTNEbnVsbCAmJiBjYXN0T3Ro
ZXIuZ2V0T2xkbXN0aWQoKSE9M0RudWxsICYmIHRoaXMuZ2V0T2xkbXN0aWQoKS5lcXVhPQpscyhj
YXN0T3RoZXIuZ2V0T2xkbXN0aWQoKSkgKSApCi0gJiYgKHRoaXMuaXNJc3RmZXN0c3RvZmYoKT0z
RD0zRGNhc3RPdGhlci5pc0lzdGZlc3RzdG9mZigpKQotICYmICggKHRoaXMuZ2V0R2V3bmFtZSgp
PTNEPTNEY2FzdE90aGVyLmdldEdld25hbWUoKSkgfHwgKCB0aGlzLmdldEdld25hbWU9CigpIT0z
RG51bGwgJiYgY2FzdE90aGVyLmdldEdld25hbWUoKSE9M0RudWxsICYmIHRoaXMuZ2V0R2V3bmFt
ZSgpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRHZXduYW1lKCkpICkgKTsKLSAgIH0KLQotICAgcHVi
bGljIGludCBoYXNoQ29kZSgpIHsKLSAgICAgICAgIGludCByZXN1bHQgPTNEIDE3OwotCi0gICAg
ICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKGludCkgdGhpcy5nZXRTdGF0aW9uaWQoKTsK
LSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoaW50KSB0aGlzLmdldEdld2Flc3Nl
cmlkKCk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRLbSgpID0zRD0z
RCBudWxsID8gMCA6IHRoaXMuZ2V0S20oKT0KLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3Vs
dCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEJlenVnc3BlZ2VsaWQoKSA9M0Q9M0QgbnVsbCA/IDAg
OiB0PQpoaXMuZ2V0QmV6dWdzcGVnZWxpZCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3Vs
dCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE5hbWUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdl
dE5hPQptZSgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQg
KyAodGhpcy5pc1VmZXJpc3RsaW5rcygpPzE6MCk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICog
cmVzdWx0ICsgKCBnZXRUZWlsVm9uKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFRlaWxW
b24oKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBn
ZXRUZWlsQmlzKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFRlaWxCaXMoKS5oYXNoQ29k
ZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRBYnN0SG1zdCgp
ID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRBYnN0SG1zdCgpLmhhc2hDb2RlKCkgKTsKLSAg
ICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldExIb2Nod2VydCgpID0zRD0zRCBu
dWxsID8gMCA6IHRoaXMuPQpnZXRMSG9jaHdlcnQoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICBy
ZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRMUmVjaHdlcnQoKSA9M0Q9M0QgbnVsbCA/IDAg
OiB0aGlzLj0KZ2V0TFJlY2h3ZXJ0KCkuaGFzaENvZGUoKSApOwotICAgICAgICAgcmVzdWx0ID0z
RCAzNyAqIHJlc3VsdCArICggZ2V0TE5uKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRMTm49
CigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdl
dFJIb2Nod2VydCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuPQpnZXRSSG9jaHdlcnQoKS5oYXNo
Q29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSUmVjaHdl
cnQoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLj0KZ2V0UlJlY2h3ZXJ0KCkuaGFzaENvZGUoKSAp
OwotICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0Uk5uKCkgPTNEPTNEIG51
bGwgPyAwIDogdGhpcy5nZXRSTm49CigpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9
M0QgMzcgKiByZXN1bHQgKyAoIGdldEJlbWVya3VuZygpID0zRD0zRCBudWxsID8gMCA6IHRoaXMu
PQpnZXRCZW1lcmt1bmcoKS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICog
cmVzdWx0ICsgKCBnZXRPbGRtc3RpZCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRPbGRt
c3RpZCgpLmhhc2hDb2RlKCkgKTsKLSAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAo
dGhpcy5pc0lzdGZlc3RzdG9mZigpPzE6MCk7Ci0gICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVz
dWx0ICsgKCBnZXRHZXduYW1lKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdEdld25hbWUo
KS5oYXNoQ29kZSgpICk7Ci0gICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotfQpkaWZmIC1y
IGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2lu
dGV2YXRpb24vc2U9CmRkYi9tb2RlbC9UbXBHbG9DaGFuZ2VkLmphdmEKLS0tIGEvYmFja2VuZC9z
cmMvbWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2VkZGIvbW9kZWwvVG1wR2xvQ2hhbmdlZC5qYXZh
CU1vPQpuIEFwciAyOSAxMToxNDoyNSAyMDEzICswMjAwCisrKyAvZGV2L251bGwJVGh1IEphbiAw
MSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDUwICswLDAgQEAKLS8qIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJr
PQp1bmRlCi0gKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgKLSAqCi0g
KiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49M0R2Myk9
MjAKLSAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNrIG91dCB0
aGUKLSAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZlciBmb3Ig
ZGV0YWlscy49MjAKLSAqLwotCi1wYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnNlZGRiLm1vZGVs
OwotLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMu
NC4wLkNSMQotCi0KLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2
YXgucGVyc2lzdGVuY2UuRW50aXR5OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOwotaW1w
b3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlVu
aXF1ZUNvbnN0cmFpbnQ7Ci0KLS8qKgotICogVG1wR2xvQ2hhbmdlZCBnZW5lcmF0ZWQgYnkgaGJt
MmphdmEKLSAqLwotQEVudGl0eQotQFRhYmxlKG5hbWU9M0QiVE1QX0dMT19DSEFOR0VEIgotICAg
ICxzY2hlbWE9M0QiU0VEREIiCi0gICAgLCB1bmlxdWVDb25zdHJhaW50cyA9M0QgQFVuaXF1ZUNv
bnN0cmFpbnQoY29sdW1uTmFtZXM9M0QiR0xPVFJFQ0hURUlEIikKLSkKLXB1YmxpYyBjbGFzcyBU
bXBHbG9DaGFuZ2VkICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAg
IHByaXZhdGUgbG9uZyBnbG90cmVjaHRlaWQ7Ci0KLSAgICBwdWJsaWMgVG1wR2xvQ2hhbmdlZCgp
IHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgVG1wR2xvQ2hhbmdlZChsb25nIGdsb3RyZWNodGVpZCkg
ewotICAgICAgIHRoaXMuZ2xvdHJlY2h0ZWlkID0zRCBnbG90cmVjaHRlaWQ7Ci0gICAgfQotCi0g
ICAgIEBJZAotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiR0xPVFJFQ0hURUlEIiwgdW5pcXVlPTNE
dHJ1ZSwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzPQppb249M0QxMSwgc2NhbGU9M0QwKQotICAg
IHB1YmxpYyBsb25nIGdldEdsb3RyZWNodGVpZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ2xv
dHJlY2h0ZWlkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldEdsb3RyZWNodGVpZChsb25n
IGdsb3RyZWNodGVpZCkgewotICAgICAgICB0aGlzLmdsb3RyZWNodGVpZCA9M0QgZ2xvdHJlY2h0
ZWlkOwotICAgIH0KLX0KZGlmZiAtciBiYzRlMWJmMjYyMjcgLXIgMWU2OGVjYTI2YjhhIGJhY2tl
bmQvc3JjL21haW4vamF2YS9kZS9pbnRldmF0aW9uL3NlPQpkZGIvbW9kZWwvVG1wTWVzQWNoYW5n
ZWQuamF2YQotLS0gYS9iYWNrZW5kL3NyYy9tYWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZWRkYi9t
b2RlbC9UbXBNZXNBY2hhbmdlZC5qYXZhCU09Cm9uIEFwciAyOSAxMToxNDoyNSAyMDEzICswMjAw
CisrKyAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDUwICsw
LDAgQEAKLS8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0
IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCi0gKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBi
eSBJbnRldmF0aW9uIEdtYkgKLSAqCi0gKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRl
ciB0aGUgR05VIEFHUEwgKD49M0R2Myk9MjAKLSAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkg
Tk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUKLSAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGgg
RGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy49MjAKLSAqLwotCi1wYWNrYWdlIG9yZy5k
aXZlNGVsZW1lbnRzLnNlZGRiLm1vZGVsOwotLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6
NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQotCi0KLWltcG9ydCBqYXZheC5wZXJzaXN0
ZW5jZS5Db2x1bW47Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OwotaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLklkOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOwotaW1w
b3J0IGphdmF4LnBlcnNpc3RlbmNlLlVuaXF1ZUNvbnN0cmFpbnQ7Ci0KLS8qKgotICogVG1wTWVz
QWNoYW5nZWQgZ2VuZXJhdGVkIGJ5IGhibTJqYXZhCi0gKi8KLUBFbnRpdHkKLUBUYWJsZShuYW1l
PTNEIlRNUF9NRVNfQUNIQU5HRUQiCi0gICAgLHNjaGVtYT0zRCJTRUREQiIKLSAgICAsIHVuaXF1
ZUNvbnN0cmFpbnRzID0zRCBAVW5pcXVlQ29uc3RyYWludChjb2x1bW5OYW1lcz0zRCJNRVNTVU5H
SUQiKQotKQotcHVibGljIGNsYXNzIFRtcE1lc0FjaGFuZ2VkICBpbXBsZW1lbnRzIGphdmEuaW8u
U2VyaWFsaXphYmxlIHsKLQotCi0gICAgIHByaXZhdGUgbG9uZyBtZXNzdW5naWQ7Ci0KLSAgICBw
dWJsaWMgVG1wTWVzQWNoYW5nZWQoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIFRtcE1lc0FjaGFu
Z2VkKGxvbmcgbWVzc3VuZ2lkKSB7Ci0gICAgICAgdGhpcy5tZXNzdW5naWQgPTNEIG1lc3N1bmdp
ZDsKLSAgICB9Ci0KLSAgICAgQElkCi0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNRVNTVU5HSUQi
LCB1bmlxdWU9M0R0cnVlLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249Cj0zRDExLCBzY2Fs
ZT0zRDApCi0gICAgcHVibGljIGxvbmcgZ2V0TWVzc3VuZ2lkKCkgewotICAgICAgICByZXR1cm4g
dGhpcy5tZXNzdW5naWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TWVzc3VuZ2lkKGxv
bmcgbWVzc3VuZ2lkKSB7Ci0gICAgICAgIHRoaXMubWVzc3VuZ2lkID0zRCBtZXNzdW5naWQ7Ci0g
ICAgfQotfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMv
bWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2U9CmRkYi9tb2RlbC9UbXBNZXNHY2hhbmdlZC5qYXZh
Ci0tLSBhL2JhY2tlbmQvc3JjL21haW4vamF2YS9kZS9pbnRldmF0aW9uL3NlZGRiL21vZGVsL1Rt
cE1lc0djaGFuZ2VkLmphdmEJTT0Kb24gQXByIDI5IDExOjE0OjI1IDIwMTMgKzAyMDAKKysrIC9k
ZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKQEAgLTEsNTAgKzAsMCBAQAot
LyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1C
Q3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2
YXRpb24gR21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBH
TlUgQUdQTCAoPj0zRHYzKT0yMAotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJS
QU5UWSEgQ2hlY2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVs
ZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxl
bWVudHMuc2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBI
aWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNv
bHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7Ci1pbXBvcnQgamF2YXgucGVy
c2lzdGVuY2UuSWQ7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7Ci1pbXBvcnQgamF2
YXgucGVyc2lzdGVuY2UuVW5pcXVlQ29uc3RyYWludDsKLQotLyoqCi0gKiBUbXBNZXNHY2hhbmdl
ZCBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVudGl0eQotQFRhYmxlKG5hbWU9M0QiVE1Q
X01FU19HQ0hBTkdFRCIKLSAgICAsc2NoZW1hPTNEIlNFRERCIgotICAgICwgdW5pcXVlQ29uc3Ry
YWludHMgPTNEIEBVbmlxdWVDb25zdHJhaW50KGNvbHVtbk5hbWVzPTNEIk1FU1NVTkdJRCIpCi0p
Ci1wdWJsaWMgY2xhc3MgVG1wTWVzR2NoYW5nZWQgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxp
emFibGUgewotCi0KLSAgICAgcHJpdmF0ZSBsb25nIG1lc3N1bmdpZDsKLQotICAgIHB1YmxpYyBU
bXBNZXNHY2hhbmdlZCgpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgVG1wTWVzR2NoYW5nZWQobG9u
ZyBtZXNzdW5naWQpIHsKLSAgICAgICB0aGlzLm1lc3N1bmdpZCA9M0QgbWVzc3VuZ2lkOwotICAg
IH0KLQotICAgICBASWQKLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk1FU1NVTkdJRCIsIHVuaXF1
ZT0zRHRydWUsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0KPTNEMTEsIHNjYWxlPTNEMCkK
LSAgICBwdWJsaWMgbG9uZyBnZXRNZXNzdW5naWQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1l
c3N1bmdpZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNZXNzdW5naWQobG9uZyBtZXNz
dW5naWQpIHsKLSAgICAgICAgdGhpcy5tZXNzdW5naWQgPTNEIG1lc3N1bmdpZDsKLSAgICB9Ci19
CmRpZmYgLXIgYmM0ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9tYWluL2ph
dmEvZGUvaW50ZXZhdGlvbi9zZT0KZGRiL21vZGVsL1RtcE1lc1FjaGFuZ2VkLmphdmEKLS0tIGEv
YmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2VkZGIvbW9kZWwvVG1wTWVzUWNo
YW5nZWQuamF2YQlNPQpvbiBBcHIgMjkgMTE6MTQ6MjUgMjAxMyArMDIwMAorKysgL2Rldi9udWxs
CVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSw1MCArMCwwIEBACi0vKiBDb3B5
cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9
QzM9QTRzc2Vyaz0KdW5kZQotICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBH
bWJICi0gKgotICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BM
ICg+PTNEdjMpPTIwCi0gKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBD
aGVjayBvdXQgdGhlCi0gKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMg
Uml2ZXIgZm9yIGRldGFpbHMuPTIwCi0gKi8KLQotcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5z
ZWRkYi5tb2RlbDsKLS8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0
ZSBUb29scyAzLjQuMC5DUjEKLQotCi1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOwot
aW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5j
ZS5JZDsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKLWltcG9ydCBqYXZheC5wZXJz
aXN0ZW5jZS5VbmlxdWVDb25zdHJhaW50OwotCi0vKioKLSAqIFRtcE1lc1FjaGFuZ2VkIGdlbmVy
YXRlZCBieSBoYm0yamF2YQotICovCi1ARW50aXR5Ci1AVGFibGUobmFtZT0zRCJUTVBfTUVTX1FD
SEFOR0VEIgotICAgICxzY2hlbWE9M0QiU0VEREIiCi0gICAgLCB1bmlxdWVDb25zdHJhaW50cyA9
M0QgQFVuaXF1ZUNvbnN0cmFpbnQoY29sdW1uTmFtZXM9M0QiTUVTU1VOR0lEIikKLSkKLXB1Ymxp
YyBjbGFzcyBUbXBNZXNRY2hhbmdlZCAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7
Ci0KLQotICAgICBwcml2YXRlIGxvbmcgbWVzc3VuZ2lkOwotCi0gICAgcHVibGljIFRtcE1lc1Fj
aGFuZ2VkKCkgewotICAgIH0KLQotICAgIHB1YmxpYyBUbXBNZXNRY2hhbmdlZChsb25nIG1lc3N1
bmdpZCkgewotICAgICAgIHRoaXMubWVzc3VuZ2lkID0zRCBtZXNzdW5naWQ7Ci0gICAgfQotCi0g
ICAgIEBJZAotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiTUVTU1VOR0lEIiwgdW5pcXVlPTNEdHJ1
ZSwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPQo9M0QxMSwgc2NhbGU9M0QwKQotICAgIHB1
YmxpYyBsb25nIGdldE1lc3N1bmdpZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubWVzc3VuZ2lk
OwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1lc3N1bmdpZChsb25nIG1lc3N1bmdpZCkg
ewotICAgICAgICB0aGlzLm1lc3N1bmdpZCA9M0QgbWVzc3VuZ2lkOwotICAgIH0KLX0KZGlmZiAt
ciBiYzRlMWJmMjYyMjcgLXIgMWU2OGVjYTI2YjhhIGJhY2tlbmQvc3JjL21haW4vamF2YS9kZS9p
bnRldmF0aW9uL3NlPQpkZGIvbW9kZWwvVG1wTWVzU2NoYW5nZWQuamF2YQotLS0gYS9iYWNrZW5k
L3NyYy9tYWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZWRkYi9tb2RlbC9UbXBNZXNTY2hhbmdlZC5q
YXZhCU09Cm9uIEFwciAyOSAxMToxNDoyNSAyMDEzICswMjAwCisrKyAvZGV2L251bGwJVGh1IEph
biAwMSAwMDowMDowMCAxOTcwICswMDAwCkBAIC0xLDUwICswLDAgQEAKLS8qIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNz
ZXJrPQp1bmRlCi0gKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgKLSAq
Ci0gKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49M0R2
Myk9MjAKLSAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNrIG91
dCB0aGUKLSAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZlciBm
b3IgZGV0YWlscy49MjAKLSAqLwotCi1wYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnNlZGRiLm1v
ZGVsOwotLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xz
IDMuNC4wLkNSMQotCi0KLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Ci1pbXBvcnQg
amF2YXgucGVyc2lzdGVuY2UuRW50aXR5OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOwot
aW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNl
LlVuaXF1ZUNvbnN0cmFpbnQ7Ci0KLS8qKgotICogVG1wTWVzU2NoYW5nZWQgZ2VuZXJhdGVkIGJ5
IGhibTJqYXZhCi0gKi8KLUBFbnRpdHkKLUBUYWJsZShuYW1lPTNEIlRNUF9NRVNfU0NIQU5HRUQi
Ci0gICAgLHNjaGVtYT0zRCJTRUREQiIKLSAgICAsIHVuaXF1ZUNvbnN0cmFpbnRzID0zRCBAVW5p
cXVlQ29uc3RyYWludChjb2x1bW5OYW1lcz0zRCJNRVNTVU5HSUQiKQotKQotcHVibGljIGNsYXNz
IFRtcE1lc1NjaGFuZ2VkICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0g
ICAgIHByaXZhdGUgbG9uZyBtZXNzdW5naWQ7Ci0KLSAgICBwdWJsaWMgVG1wTWVzU2NoYW5nZWQo
KSB7Ci0gICAgfQotCi0gICAgcHVibGljIFRtcE1lc1NjaGFuZ2VkKGxvbmcgbWVzc3VuZ2lkKSB7
Ci0gICAgICAgdGhpcy5tZXNzdW5naWQgPTNEIG1lc3N1bmdpZDsKLSAgICB9Ci0KLSAgICAgQElk
Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJNRVNTVU5HSUQiLCB1bmlxdWU9M0R0cnVlLCBudWxs
YWJsZT0zRGZhbHNlLCBwcmVjaXNpb249Cj0zRDExLCBzY2FsZT0zRDApCi0gICAgcHVibGljIGxv
bmcgZ2V0TWVzc3VuZ2lkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5tZXNzdW5naWQ7Ci0gICAg
fQotCi0gICAgcHVibGljIHZvaWQgc2V0TWVzc3VuZ2lkKGxvbmcgbWVzc3VuZ2lkKSB7Ci0gICAg
ICAgIHRoaXMubWVzc3VuZ2lkID0zRCBtZXNzdW5naWQ7Ci0gICAgfQotfQpkaWZmIC1yIGJjNGUx
YmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRp
b24vc2U9CmRkYi9tb2RlbC9aemFyY2hpdi5qYXZhCi0tLSBhL2JhY2tlbmQvc3JjL21haW4vamF2
YS9kZS9pbnRldmF0aW9uL3NlZGRiL21vZGVsL1p6YXJjaGl2LmphdmEJTW9uIEFwcj0KIDI5IDEx
OjE0OjI1IDIwMTMgKzAyMDAKKysrIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAg
KzAwMDAKQEAgLTEsMTA0ICswLDAgQEAKLS8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAx
MyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCi0gKiBTb2Z0
d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgKLSAqCi0gKiBUaGlzIGZpbGUgaXMg
RnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49M0R2Myk9MjAKLSAqIGFuZCBjb21l
cyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUKLSAqIGRvY3VtZW50
YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy49MjAKLSAq
LwotCi1wYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnNlZGRiLm1vZGVsOwotLy8gR2VuZXJhdGVk
IDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQotCi0KLWlt
cG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7
Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRmV0Y2hUeXBlOwotaW1wb3J0IGphdmF4LnBlcnNp
c3RlbmNlLklkOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk9uZVRvTWFueTsKLWltcG9ydCBq
YXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKLQotLyoqCi0gKiBaemFyY2hpdiBnZW5lcmF0ZWQgYnkg
aGJtMmphdmEKLSAqLwotQEVudGl0eQotQFRhYmxlKG5hbWU9M0QiWlpBUkNISVYiCi0gICAgLHNj
aGVtYT0zRCJTRUREQiIKLSkKLXB1YmxpYyBjbGFzcyBaemFyY2hpdiAgaW1wbGVtZW50cyBqYXZh
LmlvLlNlcmlhbGl6YWJsZSB7Ci0KLQotICAgICBwcml2YXRlIGxvbmcgYXJjaGl2aWQ7Ci0gICAg
IHByaXZhdGUgU3RyaW5nIG5hbWU7Ci0gICAgIHByaXZhdGUgYm9vbGVhbiBpc3Rha3RpdjsKLSAg
ICAgcHJpdmF0ZSBTdHJpbmcgYmVtZXJrdW5nOwotICAgICBwcml2YXRlIFNldDxTb2hsdGVzdD4g
c29obHRlc3RzID0zRCBuZXcgSGFzaFNldDxTb2hsdGVzdD4oMCk7Ci0KLSAgICBwdWJsaWMgWnph
cmNoaXYoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIFp6YXJjaGl2KGxvbmcgYXJjaGl2aWQsIFN0
cmluZyBuYW1lLCBib29sZWFuIGlzdGFrdGl2KSB7Ci0gICAgICAgIHRoaXMuYXJjaGl2aWQgPTNE
IGFyY2hpdmlkOwotICAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7Ci0gICAgICAgIHRoaXMuaXN0
YWt0aXYgPTNEIGlzdGFrdGl2OwotICAgIH0KLSAgICBwdWJsaWMgWnphcmNoaXYobG9uZyBhcmNo
aXZpZCwgU3RyaW5nIG5hbWUsIGJvb2xlYW4gaXN0YWt0aXYsIFN0cmluZyBiPQplbWVya3VuZywg
U2V0PFNvaGx0ZXN0PiBzb2hsdGVzdHMpIHsKLSAgICAgICB0aGlzLmFyY2hpdmlkID0zRCBhcmNo
aXZpZDsKLSAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7Ci0gICAgICAgdGhpcy5pc3Rha3RpdiA9
M0QgaXN0YWt0aXY7Ci0gICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICAg
ICB0aGlzLnNvaGx0ZXN0cyA9M0Qgc29obHRlc3RzOwotICAgIH0KLQotICAgICBASWQKLQotCi0g
ICAgQENvbHVtbihuYW1lPTNEIkFSQ0hJVklEIiwgdW5pcXVlPTNEdHJ1ZSwgbnVsbGFibGU9M0Rm
YWxzZSwgcHJlY2lzaW9uPQo9M0QxMSwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBsb25nIGdldEFy
Y2hpdmlkKCkgewotICAgICAgICByZXR1cm4gdGhpcy5hcmNoaXZpZDsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRBcmNoaXZpZChsb25nIGFyY2hpdmlkKSB7Ci0gICAgICAgIHRoaXMuYXJj
aGl2aWQgPTNEIGFyY2hpdmlkOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIk5BTUUi
LCBudWxsYWJsZT0zRGZhbHNlLCBsZW5ndGg9M0Q1MCkKLSAgICBwdWJsaWMgU3RyaW5nIGdldE5h
bWUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm5hbWU7Ci0gICAgfQotCi0gICAgcHVibGljIHZv
aWQgc2V0TmFtZShTdHJpbmcgbmFtZSkgewotICAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7Ci0g
ICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiSVNUQUtUSVYiLCBudWxsYWJsZT0zRGZhbHNl
LCBwcmVjaXNpb249M0QxLCBzY2FsZT0zRDApCi0gICAgcHVibGljIGJvb2xlYW4gaXNJc3Rha3Rp
digpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaXN0YWt0aXY7Ci0gICAgfQotCi0gICAgcHVibGlj
IHZvaWQgc2V0SXN0YWt0aXYoYm9vbGVhbiBpc3Rha3RpdikgewotICAgICAgICB0aGlzLmlzdGFr
dGl2ID0zRCBpc3Rha3RpdjsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJCRU1FUktV
TkciLCBsZW5ndGg9M0QyNDApCi0gICAgcHVibGljIFN0cmluZyBnZXRCZW1lcmt1bmcoKSB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLmJlbWVya3VuZzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBz
ZXRCZW1lcmt1bmcoU3RyaW5nIGJlbWVya3VuZykgewotICAgICAgICB0aGlzLmJlbWVya3VuZyA9
M0QgYmVtZXJrdW5nOwotICAgIH0KLQotQE9uZVRvTWFueShmZXRjaD0zREZldGNoVHlwZS5MQVpZ
LCBtYXBwZWRCeT0zRCJ6emFyY2hpdiIpCi0gICAgcHVibGljIFNldDxTb2hsdGVzdD4gZ2V0U29o
bHRlc3RzKCkgewotICAgICAgICByZXR1cm4gdGhpcy5zb2hsdGVzdHM7Ci0gICAgfQotCi0gICAg
cHVibGljIHZvaWQgc2V0U29obHRlc3RzKFNldDxTb2hsdGVzdD4gc29obHRlc3RzKSB7Ci0gICAg
ICAgIHRoaXMuc29obHRlc3RzID0zRCBzb2hsdGVzdHM7Ci0gICAgfQotfQpkaWZmIC1yIGJjNGUx
YmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRp
b24vc2U9CmRkYi9tb2RlbC9aenByb2JlbmFobWVhcnQuamF2YQotLS0gYS9iYWNrZW5kL3NyYy9t
YWluL2phdmEvZGUvaW50ZXZhdGlvbi9zZWRkYi9tb2RlbC9aenByb2JlbmFobWVhcnQuamF2YQk9
Ck1vbiBBcHIgMjkgMTE6MTQ6MjUgMjAxMyArMDIwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEg
MDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMTggKzAsMCBAQAotLyogQ29weXJpZ2h0IChDKSAy
MDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9
CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoKLSAq
IFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0y
MAotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRo
ZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBk
ZXRhaWxzLj0yMAotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7
Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40
LjAuQ1IxCi0KLQotaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwotaW1wb3J0IGphdmEudXRpbC5T
ZXQ7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNp
c3RlbmNlLkVudGl0eTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7Ci1pbXBv
cnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuT25lVG9N
YW55OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOwotCi0vKioKLSAqIFp6cHJvYmVu
YWhtZWFydCBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVudGl0eQotQFRhYmxlKG5hbWU9
M0QiWlpQUk9CRU5BSE1FQVJUIgotICAgICxzY2hlbWE9M0QiU0VEREIiCi0pCi1wdWJsaWMgY2xh
c3MgWnpwcm9iZW5haG1lYXJ0ICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQot
Ci0gICAgIHByaXZhdGUgbG9uZyBwcm9iZW5haG1lYXJ0aWQ7Ci0gICAgIHByaXZhdGUgYm9vbGVh
biBpc3RrZXJuOwotICAgICBwcml2YXRlIFN0cmluZyBuYW1lOwotICAgICBwcml2YXRlIGJvb2xl
YW4gaXN0YWt0aXY7Ci0gICAgIHByaXZhdGUgU3RyaW5nIGJlbWVya3VuZzsKLSAgICAgcHJpdmF0
ZSBTZXQ8U29obHByb2JlPiBzb2hscHJvYmVzID0zRCBuZXcgSGFzaFNldDxTb2hscHJvYmU+KDAp
OwotCi0gICAgcHVibGljIFp6cHJvYmVuYWhtZWFydCgpIHsKLSAgICB9Ci0KLQotICAgIHB1Ymxp
YyBaenByb2JlbmFobWVhcnQobG9uZyBwcm9iZW5haG1lYXJ0aWQsIGJvb2xlYW4gaXN0a2Vybiwg
U3RyaW5nIG49CmFtZSwgYm9vbGVhbiBpc3Rha3RpdikgewotICAgICAgICB0aGlzLnByb2JlbmFo
bWVhcnRpZCA9M0QgcHJvYmVuYWhtZWFydGlkOwotICAgICAgICB0aGlzLmlzdGtlcm4gPTNEIGlz
dGtlcm47Ci0gICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKLSAgICAgICAgdGhpcy5pc3Rha3Rp
diA9M0QgaXN0YWt0aXY7Ci0gICAgfQotICAgIHB1YmxpYyBaenByb2JlbmFobWVhcnQobG9uZyBw
cm9iZW5haG1lYXJ0aWQsIGJvb2xlYW4gaXN0a2VybiwgU3RyaW5nIG49CmFtZSwgYm9vbGVhbiBp
c3Rha3RpdiwgU3RyaW5nIGJlbWVya3VuZywgU2V0PFNvaGxwcm9iZT4gc29obHByb2Jlcykgewot
ICAgICAgIHRoaXMucHJvYmVuYWhtZWFydGlkID0zRCBwcm9iZW5haG1lYXJ0aWQ7Ci0gICAgICAg
dGhpcy5pc3RrZXJuID0zRCBpc3RrZXJuOwotICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKLSAg
ICAgICB0aGlzLmlzdGFrdGl2ID0zRCBpc3Rha3RpdjsKLSAgICAgICB0aGlzLmJlbWVya3VuZyA9
M0QgYmVtZXJrdW5nOwotICAgICAgIHRoaXMuc29obHByb2JlcyA9M0Qgc29obHByb2JlczsKLSAg
ICB9Ci0KLSAgICAgQElkCi0KLQotICAgIEBDb2x1bW4obmFtZT0zRCJQUk9CRU5BSE1FQVJUSUQi
LCB1bmlxdWU9M0R0cnVlLCBudWxsYWJsZT0zRGZhbHNlLCBwcmU9CmNpc2lvbj0zRDExLCBzY2Fs
ZT0zRDApCi0gICAgcHVibGljIGxvbmcgZ2V0UHJvYmVuYWhtZWFydGlkKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5wcm9iZW5haG1lYXJ0aWQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0
UHJvYmVuYWhtZWFydGlkKGxvbmcgcHJvYmVuYWhtZWFydGlkKSB7Ci0gICAgICAgIHRoaXMucHJv
YmVuYWhtZWFydGlkID0zRCBwcm9iZW5haG1lYXJ0aWQ7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1u
KG5hbWU9M0QiSVNUS0VSTiIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDEsIHNjYWxl
PTNEMCkKLSAgICBwdWJsaWMgYm9vbGVhbiBpc0lzdGtlcm4oKSB7Ci0gICAgICAgIHJldHVybiB0
aGlzLmlzdGtlcm47Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0SXN0a2Vybihib29sZWFu
IGlzdGtlcm4pIHsKLSAgICAgICAgdGhpcy5pc3RrZXJuID0zRCBpc3RrZXJuOwotICAgIH0KLQot
Ci0gICAgQENvbHVtbihuYW1lPTNEIk5BTUUiLCBudWxsYWJsZT0zRGZhbHNlLCBsZW5ndGg9M0Q1
MCkKLSAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm5h
bWU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkgewotICAg
ICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0Qi
SVNUQUtUSVYiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxLCBzY2FsZT0zRDApCi0g
ICAgcHVibGljIGJvb2xlYW4gaXNJc3Rha3RpdigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaXN0
YWt0aXY7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0SXN0YWt0aXYoYm9vbGVhbiBpc3Rh
a3RpdikgewotICAgICAgICB0aGlzLmlzdGFrdGl2ID0zRCBpc3Rha3RpdjsKLSAgICB9Ci0KLQot
ICAgIEBDb2x1bW4obmFtZT0zRCJCRU1FUktVTkciLCBsZW5ndGg9M0QyNDApCi0gICAgcHVibGlj
IFN0cmluZyBnZXRCZW1lcmt1bmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJlbWVya3VuZzsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRCZW1lcmt1bmcoU3RyaW5nIGJlbWVya3VuZykg
ewotICAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwotICAgIH0KLQotQE9uZVRv
TWFueShmZXRjaD0zREZldGNoVHlwZS5MQVpZLCBtYXBwZWRCeT0zRCJ6enByb2JlbmFobWVhcnQi
KQotICAgIHB1YmxpYyBTZXQ8U29obHByb2JlPiBnZXRTb2hscHJvYmVzKCkgewotICAgICAgICBy
ZXR1cm4gdGhpcy5zb2hscHJvYmVzOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNvaGxw
cm9iZXMoU2V0PFNvaGxwcm9iZT4gc29obHByb2JlcykgewotICAgICAgICB0aGlzLnNvaGxwcm9i
ZXMgPTNEIHNvaGxwcm9iZXM7Ci0gICAgfQotfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4
ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZhL2RlL2ludGV2YXRpb24vc2U9CmRkYi9tb2Rl
bC9aenNvbmRpZXJ1bmdhcnQuamF2YQotLS0gYS9iYWNrZW5kL3NyYy9tYWluL2phdmEvZGUvaW50
ZXZhdGlvbi9zZWRkYi9tb2RlbC9aenNvbmRpZXJ1bmdhcnQuamF2YQk9Ck1vbiBBcHIgMjkgMTE6
MTQ6MjUgMjAxMyArMDIwMAorKysgL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
MDAwMApAQCAtMSwxMDQgKzAsMCBAQAotLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEz
IGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3
YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBG
cmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAotICogYW5kIGNvbWVz
IHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQotICogZG9jdW1lbnRh
dGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAotICov
Ci0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQg
MTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1w
b3J0IGphdmEudXRpbC5IYXNoU2V0OwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci1pbXBvcnQgamF2
YXgucGVyc2lzdGVuY2UuQ29sdW1uOwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsK
LWltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7Ci1pbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuSWQ7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuT25lVG9NYW55OwotaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLlRhYmxlOwotCi0vKioKLSAqIFp6c29uZGllcnVuZ2FydCBnZW5lcmF0
ZWQgYnkgaGJtMmphdmEKLSAqLwotQEVudGl0eQotQFRhYmxlKG5hbWU9M0QiWlpTT05ESUVSVU5H
QVJUIgotICAgICxzY2hlbWE9M0QiU0VEREIiCi0pCi1wdWJsaWMgY2xhc3MgWnpzb25kaWVydW5n
YXJ0ICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAgIHByaXZhdGUg
bG9uZyBzb25kaWVydW5nYXJ0aWQ7Ci0gICAgIHByaXZhdGUgU3RyaW5nIG5hbWU7Ci0gICAgIHBy
aXZhdGUgYm9vbGVhbiBpc3Rha3RpdjsKLSAgICAgcHJpdmF0ZSBTdHJpbmcgYmVtZXJrdW5nOwot
ICAgICBwcml2YXRlIFNldDxTb2hsdGVzdD4gc29obHRlc3RzID0zRCBuZXcgSGFzaFNldDxTb2hs
dGVzdD4oMCk7Ci0KLSAgICBwdWJsaWMgWnpzb25kaWVydW5nYXJ0KCkgewotICAgIH0KLQotICAg
IHB1YmxpYyBaenNvbmRpZXJ1bmdhcnQobG9uZyBzb25kaWVydW5nYXJ0aWQsIFN0cmluZyBuYW1l
LCBib29sZWFuIGlzdGE9Cmt0aXYpIHsKLSAgICAgICAgdGhpcy5zb25kaWVydW5nYXJ0aWQgPTNE
IHNvbmRpZXJ1bmdhcnRpZDsKLSAgICAgICAgdGhpcy5uYW1lID0zRCBuYW1lOwotICAgICAgICB0
aGlzLmlzdGFrdGl2ID0zRCBpc3Rha3RpdjsKLSAgICB9Ci0gICAgcHVibGljIFp6c29uZGllcnVu
Z2FydChsb25nIHNvbmRpZXJ1bmdhcnRpZCwgU3RyaW5nIG5hbWUsIGJvb2xlYW4gaXN0YT0Ka3Rp
diwgU3RyaW5nIGJlbWVya3VuZywgU2V0PFNvaGx0ZXN0PiBzb2hsdGVzdHMpIHsKLSAgICAgICB0
aGlzLnNvbmRpZXJ1bmdhcnRpZCA9M0Qgc29uZGllcnVuZ2FydGlkOwotICAgICAgIHRoaXMubmFt
ZSA9M0QgbmFtZTsKLSAgICAgICB0aGlzLmlzdGFrdGl2ID0zRCBpc3Rha3RpdjsKLSAgICAgICB0
aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwotICAgICAgIHRoaXMuc29obHRlc3RzID0zRCBz
b2hsdGVzdHM7Ci0gICAgfQotCi0gICAgIEBJZAotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiU09O
RElFUlVOR0FSVElEIiwgdW5pcXVlPTNEdHJ1ZSwgbnVsbGFibGU9M0RmYWxzZSwgcHJlPQpjaXNp
b249M0QxMSwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBsb25nIGdldFNvbmRpZXJ1bmdhcnRpZCgp
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc29uZGllcnVuZ2FydGlkOwotICAgIH0KLQotICAgIHB1
YmxpYyB2b2lkIHNldFNvbmRpZXJ1bmdhcnRpZChsb25nIHNvbmRpZXJ1bmdhcnRpZCkgewotICAg
ICAgICB0aGlzLnNvbmRpZXJ1bmdhcnRpZCA9M0Qgc29uZGllcnVuZ2FydGlkOwotICAgIH0KLQot
Ci0gICAgQENvbHVtbihuYW1lPTNEIk5BTUUiLCBudWxsYWJsZT0zRGZhbHNlLCBsZW5ndGg9M0Q1
MCkKLSAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm5h
bWU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkgewotICAg
ICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0Qi
SVNUQUtUSVYiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxLCBzY2FsZT0zRDApCi0g
ICAgcHVibGljIGJvb2xlYW4gaXNJc3Rha3RpdigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaXN0
YWt0aXY7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0SXN0YWt0aXYoYm9vbGVhbiBpc3Rh
a3RpdikgewotICAgICAgICB0aGlzLmlzdGFrdGl2ID0zRCBpc3Rha3RpdjsKLSAgICB9Ci0KLQot
ICAgIEBDb2x1bW4obmFtZT0zRCJCRU1FUktVTkciLCBsZW5ndGg9M0QyNDApCi0gICAgcHVibGlj
IFN0cmluZyBnZXRCZW1lcmt1bmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJlbWVya3VuZzsK
LSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRCZW1lcmt1bmcoU3RyaW5nIGJlbWVya3VuZykg
ewotICAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwotICAgIH0KLQotQE9uZVRv
TWFueShmZXRjaD0zREZldGNoVHlwZS5MQVpZLCBtYXBwZWRCeT0zRCJ6enNvbmRpZXJ1bmdhcnQi
KQotICAgIHB1YmxpYyBTZXQ8U29obHRlc3Q+IGdldFNvaGx0ZXN0cygpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuc29obHRlc3RzOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFNvaGx0ZXN0
cyhTZXQ8U29obHRlc3Q+IHNvaGx0ZXN0cykgewotICAgICAgICB0aGlzLnNvaGx0ZXN0cyA9M0Qg
c29obHRlc3RzOwotICAgIH0KLX0KZGlmZiAtciBiYzRlMWJmMjYyMjcgLXIgMWU2OGVjYTI2Yjhh
IGJhY2tlbmQvc3JjL21haW4vamF2YS9kZS9pbnRldmF0aW9uL3NlPQpkZGIvbW9kZWwvWnp0aGVt
YS5qYXZhCi0tLSBhL2JhY2tlbmQvc3JjL21haW4vamF2YS9kZS9pbnRldmF0aW9uL3NlZGRiL21v
ZGVsL1p6dGhlbWEuamF2YQlNb24gQXByID0KMjkgMTE6MTQ6MjUgMjAxMyArMDIwMAorKysgL2Rl
di9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMApAQCAtMSwxMTYgKzAsMCBAQAot
LyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1C
Q3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKLSAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2
YXRpb24gR21iSAotICoKLSAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBH
TlUgQUdQTCAoPj0zRHYzKT0yMAotICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJS
QU5UWSEgQ2hlY2sgb3V0IHRoZQotICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVs
ZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAotICovCi0KLXBhY2thZ2Ugb3JnLmRpdmU0ZWxl
bWVudHMuc2VkZGIubW9kZWw7Ci0vLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBI
aWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCi0KLQotaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0Owot
aW1wb3J0IGphdmEudXRpbC5TZXQ7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOwot
aW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKLWltcG9ydCBqYXZheC5wZXJzaXN0ZW5j
ZS5GZXRjaFR5cGU7Ci1pbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7Ci1pbXBvcnQgamF2YXgu
cGVyc2lzdGVuY2UuT25lVG9NYW55OwotaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOwot
Ci0vKioKLSAqIFp6dGhlbWEgZ2VuZXJhdGVkIGJ5IGhibTJqYXZhCi0gKi8KLUBFbnRpdHkKLUBU
YWJsZShuYW1lPTNEIlpaVEhFTUEiCi0gICAgLHNjaGVtYT0zRCJTRUREQiIKLSkKLXB1YmxpYyBj
bGFzcyBaenRoZW1hICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKLQotCi0gICAg
IHByaXZhdGUgbG9uZyB0aGVtYWlkOwotICAgICBwcml2YXRlIFN0cmluZyBuYW1lOwotICAgICBw
cml2YXRlIGJvb2xlYW4gaXN0YWt0aXY7Ci0gICAgIHByaXZhdGUgU3RyaW5nIGJlbWVya3VuZzsK
LSAgICAgcHJpdmF0ZSBTZXQ8QmlsZD4gYmlsZHMgPTNEIG5ldyBIYXNoU2V0PEJpbGQ+KDApOwot
ICAgICBwcml2YXRlIFNldDxQcm9iZWJpbGQ+IHByb2JlYmlsZHMgPTNEIG5ldyBIYXNoU2V0PFBy
b2JlYmlsZD4oMCk7Ci0KLSAgICBwdWJsaWMgWnp0aGVtYSgpIHsKLSAgICB9Ci0KLQotICAgIHB1
YmxpYyBaenRoZW1hKGxvbmcgdGhlbWFpZCwgU3RyaW5nIG5hbWUsIGJvb2xlYW4gaXN0YWt0aXYp
IHsKLSAgICAgICAgdGhpcy50aGVtYWlkID0zRCB0aGVtYWlkOwotICAgICAgICB0aGlzLm5hbWUg
PTNEIG5hbWU7Ci0gICAgICAgIHRoaXMuaXN0YWt0aXYgPTNEIGlzdGFrdGl2OwotICAgIH0KLSAg
ICBwdWJsaWMgWnp0aGVtYShsb25nIHRoZW1haWQsIFN0cmluZyBuYW1lLCBib29sZWFuIGlzdGFr
dGl2LCBTdHJpbmcgYmVtPQplcmt1bmcsIFNldDxCaWxkPiBiaWxkcywgU2V0PFByb2JlYmlsZD4g
cHJvYmViaWxkcykgewotICAgICAgIHRoaXMudGhlbWFpZCA9M0QgdGhlbWFpZDsKLSAgICAgICB0
aGlzLm5hbWUgPTNEIG5hbWU7Ci0gICAgICAgdGhpcy5pc3Rha3RpdiA9M0QgaXN0YWt0aXY7Ci0g
ICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICAgICB0aGlzLmJpbGRzID0z
RCBiaWxkczsKLSAgICAgICB0aGlzLnByb2JlYmlsZHMgPTNEIHByb2JlYmlsZHM7Ci0gICAgfQot
Ci0gICAgIEBJZAotCi0KLSAgICBAQ29sdW1uKG5hbWU9M0QiVEhFTUFJRCIsIHVuaXF1ZT0zRHRy
dWUsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0KPTNEMTEsIHNjYWxlPTNEMCkKLSAgICBw
dWJsaWMgbG9uZyBnZXRUaGVtYWlkKCkgewotICAgICAgICByZXR1cm4gdGhpcy50aGVtYWlkOwot
ICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldFRoZW1haWQobG9uZyB0aGVtYWlkKSB7Ci0gICAg
ICAgIHRoaXMudGhlbWFpZCA9M0QgdGhlbWFpZDsKLSAgICB9Ci0KLQotICAgIEBDb2x1bW4obmFt
ZT0zRCJOQU1FIiwgbnVsbGFibGU9M0RmYWxzZSwgbGVuZ3RoPTNENTApCi0gICAgcHVibGljIFN0
cmluZyBnZXROYW1lKCkgewotICAgICAgICByZXR1cm4gdGhpcy5uYW1lOwotICAgIH0KLQotICAg
IHB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpIHsKLSAgICAgICAgdGhpcy5uYW1lID0z
RCBuYW1lOwotICAgIH0KLQotCi0gICAgQENvbHVtbihuYW1lPTNEIklTVEFLVElWIiwgbnVsbGFi
bGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMSwgc2NhbGU9M0QwKQotICAgIHB1YmxpYyBib29sZWFu
IGlzSXN0YWt0aXYoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmlzdGFrdGl2OwotICAgIH0KLQot
ICAgIHB1YmxpYyB2b2lkIHNldElzdGFrdGl2KGJvb2xlYW4gaXN0YWt0aXYpIHsKLSAgICAgICAg
dGhpcy5pc3Rha3RpdiA9M0QgaXN0YWt0aXY7Ci0gICAgfQotCi0KLSAgICBAQ29sdW1uKG5hbWU9
M0QiQkVNRVJLVU5HIiwgbGVuZ3RoPTNEMjQwKQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0QmVtZXJr
dW5nKCkgewotICAgICAgICByZXR1cm4gdGhpcy5iZW1lcmt1bmc7Ci0gICAgfQotCi0gICAgcHVi
bGljIHZvaWQgc2V0QmVtZXJrdW5nKFN0cmluZyBiZW1lcmt1bmcpIHsKLSAgICAgICAgdGhpcy5i
ZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKLSAgICB9Ci0KLUBPbmVUb01hbnkoZmV0Y2g9M0RGZXRj
aFR5cGUuTEFaWSwgbWFwcGVkQnk9M0Qienp0aGVtYSIpCi0gICAgcHVibGljIFNldDxCaWxkPiBn
ZXRCaWxkcygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYmlsZHM7Ci0gICAgfQotCi0gICAgcHVi
bGljIHZvaWQgc2V0QmlsZHMoU2V0PEJpbGQ+IGJpbGRzKSB7Ci0gICAgICAgIHRoaXMuYmlsZHMg
PTNEIGJpbGRzOwotICAgIH0KLQotQE9uZVRvTWFueShmZXRjaD0zREZldGNoVHlwZS5MQVpZLCBt
YXBwZWRCeT0zRCJ6enRoZW1hIikKLSAgICBwdWJsaWMgU2V0PFByb2JlYmlsZD4gZ2V0UHJvYmVi
aWxkcygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucHJvYmViaWxkczsKLSAgICB9Ci0KLSAgICBw
dWJsaWMgdm9pZCBzZXRQcm9iZWJpbGRzKFNldDxQcm9iZWJpbGQ+IHByb2JlYmlsZHMpIHsKLSAg
ICAgICAgdGhpcy5wcm9iZWJpbGRzID0zRCBwcm9iZWJpbGRzOwotICAgIH0KLX0KZGlmZiAtciBi
YzRlMWJmMjYyMjcgLXIgMWU2OGVjYTI2YjhhIGJhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2
ZTRlbGVtZW50PQpzL3JpdmVyL3NlZGRiL21vZGVsL0JlenVnc3BlZ2VsLmphdmEKLS0tIC9kZXYv
bnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvYmFja2VuZC9zcmMvbWFp
bi9qYXZhL29yZy9kaXZlNGVsZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVsL0JlenVnc3BlZ2VsPQou
amF2YQlNb24gQXByIDI5IDExOjMzOjAxIDIwMTMgKzAyMDAKQEAgLTAsMCArMSwyOTQgQEAKKy8q
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNy
IEdldz1DMz1BNHNzZXJrPQp1bmRlCisgKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0
aW9uIEdtYkgKKyAqCisgKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05V
IEFHUEwgKD49M0R2Myk9MjAKKyAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFO
VFkhIENoZWNrIG91dCB0aGUKKyAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVt
ZW50cyBSaXZlciBmb3IgZGV0YWlscy49MjAKKyAqLworCitwYWNrYWdlIG9yZy5kaXZlNGVsZW1l
bnRzLnNlZGRiLm1vZGVsOworLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGli
ZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQorCisKK2ltcG9ydCBqYXZhLm1hdGguQmlnRGVjaW1hbDsK
K2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKK2ltcG9y
dCBqYXZhLnV0aWwuU2V0OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9y
dCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRmV0
Y2hUeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOworaW1wb3J0IGphdmF4LnBlcnNp
c3RlbmNlLkpvaW5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTWFueVRvT25lOwor
aW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk9uZVRvTWFueTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0
ZW5jZS5UYWJsZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UZW1wb3JhbDsKK2ltcG9ydCBq
YXZheC5wZXJzaXN0ZW5jZS5UZW1wb3JhbFR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2Uu
VW5pcXVlQ29uc3RyYWludDsKKworLyoqCisgKiBCZXp1Z3NwZWdlbCBnZW5lcmF0ZWQgYnkgaGJt
MmphdmEKKyAqLworQEVudGl0eQorQFRhYmxlKG5hbWU9M0QiQkVaVUdTUEVHRUwiCisgICAgLHNj
aGVtYT0zRCJTRUREQiIKKyAgICAsIHVuaXF1ZUNvbnN0cmFpbnRzID0zRCBAVW5pcXVlQ29uc3Ry
YWludChjb2x1bW5OYW1lcz0zRHsiR0VXQUVTU0VSSUQiPQosICJOQU1FIn0pCispCitwdWJsaWMg
Y2xhc3MgQmV6dWdzcGVnZWwgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgeworCisK
KyAgICAgcHJpdmF0ZSBsb25nIGJlenVnc3BlZ2VsaWQ7CisgICAgIHByaXZhdGUgR2V3YWVzc2Vy
IGdld2Flc3NlcjsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGttOworICAgICBwcml2YXRlIFN0
cmluZyBuYW1lOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgbnVsbHB1bmt0OworICAgICBwcml2
YXRlIFN0cmluZyBrZW5udW5nOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZWluenVnc2dlYmll
dDsKKyAgICAgcHJpdmF0ZSBEYXRlIGluYmV0cmllYjsKKyAgICAgcHJpdmF0ZSBTdHJpbmcgZmxp
ZXNzY2hhcmFrdGVyOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgbGF1ZmVudHdpY2tsdW5nOwor
ICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgbW5xOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgbXE7
CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtaHE7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBu
bnE7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBoaHE7CisgICAgIHByaXZhdGUgRGF0ZSBubnFk
YXR1bTsKKyAgICAgcHJpdmF0ZSBEYXRlIGhocWRhdHVtOworICAgICBwcml2YXRlIFN0cmluZyBq
YWhyZXNyZWloZTsKKyAgICAgcHJpdmF0ZSBTdHJpbmcgYmVtZXJrdW5nOworICAgICBwcml2YXRl
IFNldDxTdGF0aW9uPiBzdGF0aW9ucyA9M0QgbmV3IEhhc2hTZXQ8U3RhdGlvbj4oMCk7CisKKyAg
ICBwdWJsaWMgQmV6dWdzcGVnZWwoKSB7CisgICAgfQorCisgICAgcHVibGljIEJlenVnc3BlZ2Vs
KGxvbmcgYmV6dWdzcGVnZWxpZCwgR2V3YWVzc2VyIGdld2Flc3NlciwgQmlnRGVjaW1hbD0KIGtt
LCBTdHJpbmcgbmFtZSwgQmlnRGVjaW1hbCBudWxscHVua3QpIHsKKyAgICAgICAgdGhpcy5iZXp1
Z3NwZWdlbGlkID0zRCBiZXp1Z3NwZWdlbGlkOworICAgICAgICB0aGlzLmdld2Flc3NlciA9M0Qg
Z2V3YWVzc2VyOworICAgICAgICB0aGlzLmttID0zRCBrbTsKKyAgICAgICAgdGhpcy5uYW1lID0z
RCBuYW1lOworICAgICAgICB0aGlzLm51bGxwdW5rdCA9M0QgbnVsbHB1bmt0OworICAgIH0KKyAg
ICBwdWJsaWMgQmV6dWdzcGVnZWwobG9uZyBiZXp1Z3NwZWdlbGlkLCBHZXdhZXNzZXIgZ2V3YWVz
c2VyLCBCaWdEZWNpbWFsPQoga20sIFN0cmluZyBuYW1lLCBCaWdEZWNpbWFsIG51bGxwdW5rdCwg
U3RyaW5nIGtlbm51bmcsIEJpZ0RlY2ltYWwgZWluenVnc2c9CmViaWV0LCBEYXRlIGluYmV0cmll
YiwgU3RyaW5nIGZsaWVzc2NoYXJha3RlciwgQmlnRGVjaW1hbCBsYXVmZW50d2lja2x1bmcsID0K
QmlnRGVjaW1hbCBtbnEsIEJpZ0RlY2ltYWwgbXEsIEJpZ0RlY2ltYWwgbWhxLCBCaWdEZWNpbWFs
IG5ucSwgQmlnRGVjaW1hbCBoPQpocSwgRGF0ZSBubnFkYXR1bSwgRGF0ZSBoaHFkYXR1bSwgU3Ry
aW5nIGphaHJlc3JlaWhlLCBTdHJpbmcgYmVtZXJrdW5nLCBTZXQ9CjxTdGF0aW9uPiBzdGF0aW9u
cykgeworICAgICAgIHRoaXMuYmV6dWdzcGVnZWxpZCA9M0QgYmV6dWdzcGVnZWxpZDsKKyAgICAg
ICB0aGlzLmdld2Flc3NlciA9M0QgZ2V3YWVzc2VyOworICAgICAgIHRoaXMua20gPTNEIGttOwor
ICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKKyAgICAgICB0aGlzLm51bGxwdW5rdCA9M0QgbnVs
bHB1bmt0OworICAgICAgIHRoaXMua2VubnVuZyA9M0Qga2VubnVuZzsKKyAgICAgICB0aGlzLmVp
bnp1Z3NnZWJpZXQgPTNEIGVpbnp1Z3NnZWJpZXQ7CisgICAgICAgdGhpcy5pbmJldHJpZWIgPTNE
IGluYmV0cmllYjsKKyAgICAgICB0aGlzLmZsaWVzc2NoYXJha3RlciA9M0QgZmxpZXNzY2hhcmFr
dGVyOworICAgICAgIHRoaXMubGF1ZmVudHdpY2tsdW5nID0zRCBsYXVmZW50d2lja2x1bmc7Cisg
ICAgICAgdGhpcy5tbnEgPTNEIG1ucTsKKyAgICAgICB0aGlzLm1xID0zRCBtcTsKKyAgICAgICB0
aGlzLm1ocSA9M0QgbWhxOworICAgICAgIHRoaXMubm5xID0zRCBubnE7CisgICAgICAgdGhpcy5o
aHEgPTNEIGhocTsKKyAgICAgICB0aGlzLm5ucWRhdHVtID0zRCBubnFkYXR1bTsKKyAgICAgICB0
aGlzLmhocWRhdHVtID0zRCBoaHFkYXR1bTsKKyAgICAgICB0aGlzLmphaHJlc3JlaWhlID0zRCBq
YWhyZXNyZWloZTsKKyAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOworICAgICAg
IHRoaXMuc3RhdGlvbnMgPTNEIHN0YXRpb25zOworICAgIH0KKworICAgICBASWQKKworCisgICAg
QENvbHVtbihuYW1lPTNEIkJFWlVHU1BFR0VMSUQiLCB1bmlxdWU9M0R0cnVlLCBudWxsYWJsZT0z
RGZhbHNlLCBwcmVjaT0Kc2lvbj0zRDExLCBzY2FsZT0zRDApCisgICAgcHVibGljIGxvbmcgZ2V0
QmV6dWdzcGVnZWxpZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYmV6dWdzcGVnZWxpZDsKKyAg
ICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRCZXp1Z3NwZWdlbGlkKGxvbmcgYmV6dWdzcGVnZWxp
ZCkgeworICAgICAgICB0aGlzLmJlenVnc3BlZ2VsaWQgPTNEIGJlenVnc3BlZ2VsaWQ7CisgICAg
fQorCitATWFueVRvT25lKGZldGNoPTNERmV0Y2hUeXBlLkxBWlkpCisgICAgQEpvaW5Db2x1bW4o
bmFtZT0zRCJHRVdBRVNTRVJJRCIsIG51bGxhYmxlPTNEZmFsc2UpCisgICAgcHVibGljIEdld2Fl
c3NlciBnZXRHZXdhZXNzZXIoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmdld2Flc3NlcjsKKyAg
ICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRHZXdhZXNzZXIoR2V3YWVzc2VyIGdld2Flc3Nlcikg
eworICAgICAgICB0aGlzLmdld2Flc3NlciA9M0QgZ2V3YWVzc2VyOworICAgIH0KKworCisgICAg
QENvbHVtbihuYW1lPTNEIktNIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2Nh
bGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEttKCkgeworICAgICAgICByZXR1cm4g
dGhpcy5rbTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRLbShCaWdEZWNpbWFsIGttKSB7
CisgICAgICAgIHRoaXMua20gPTNEIGttOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNE
Ik5BTUUiLCBudWxsYWJsZT0zRGZhbHNlLCBsZW5ndGg9M0Q1MCkKKyAgICBwdWJsaWMgU3RyaW5n
IGdldE5hbWUoKSB7CisgICAgICAgIHJldHVybiB0aGlzLm5hbWU7CisgICAgfQorCisgICAgcHVi
bGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkgeworICAgICAgICB0aGlzLm5hbWUgPTNEIG5h
bWU7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiTlVMTFBVTktUIiwgbnVsbGFibGU9
M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFs
IGdldE51bGxwdW5rdCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubnVsbHB1bmt0OworICAgIH0K
KworICAgIHB1YmxpYyB2b2lkIHNldE51bGxwdW5rdChCaWdEZWNpbWFsIG51bGxwdW5rdCkgewor
ICAgICAgICB0aGlzLm51bGxwdW5rdCA9M0QgbnVsbHB1bmt0OworICAgIH0KKworCisgICAgQENv
bHVtbihuYW1lPTNEIktFTk5VTkciLCBsZW5ndGg9M0QxNikKKyAgICBwdWJsaWMgU3RyaW5nIGdl
dEtlbm51bmcoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmtlbm51bmc7CisgICAgfQorCisgICAg
cHVibGljIHZvaWQgc2V0S2VubnVuZyhTdHJpbmcga2VubnVuZykgeworICAgICAgICB0aGlzLmtl
bm51bmcgPTNEIGtlbm51bmc7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiRUlOWlVH
U0dFQklFVCIsIHByZWNpc2lvbj0zRDEwKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEVpbnp1
Z3NnZWJpZXQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmVpbnp1Z3NnZWJpZXQ7CisgICAgfQor
CisgICAgcHVibGljIHZvaWQgc2V0RWluenVnc2dlYmlldChCaWdEZWNpbWFsIGVpbnp1Z3NnZWJp
ZXQpIHsKKyAgICAgICAgdGhpcy5laW56dWdzZ2ViaWV0ID0zRCBlaW56dWdzZ2ViaWV0OworICAg
IH0KKworICAgIEBUZW1wb3JhbChUZW1wb3JhbFR5cGUuREFURSkKKyAgICBAQ29sdW1uKG5hbWU9
M0QiSU5CRVRSSUVCIiwgbGVuZ3RoPTNENykKKyAgICBwdWJsaWMgRGF0ZSBnZXRJbmJldHJpZWIo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLmluYmV0cmllYjsKKyAgICB9CisKKyAgICBwdWJsaWMg
dm9pZCBzZXRJbmJldHJpZWIoRGF0ZSBpbmJldHJpZWIpIHsKKyAgICAgICAgdGhpcy5pbmJldHJp
ZWIgPTNEIGluYmV0cmllYjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJGTElFU1ND
SEFSQUtURVIiLCBsZW5ndGg9M0QzKQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0RmxpZXNzY2hhcmFr
dGVyKCkgeworICAgICAgICByZXR1cm4gdGhpcy5mbGllc3NjaGFyYWt0ZXI7CisgICAgfQorCisg
ICAgcHVibGljIHZvaWQgc2V0RmxpZXNzY2hhcmFrdGVyKFN0cmluZyBmbGllc3NjaGFyYWt0ZXIp
IHsKKyAgICAgICAgdGhpcy5mbGllc3NjaGFyYWt0ZXIgPTNEIGZsaWVzc2NoYXJha3RlcjsKKyAg
ICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJMQVVGRU5UV0lDS0xVTkciLCBwcmVjaXNpb249
M0Q3LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TGF1ZmVudHdpY2tsdW5n
KCkgeworICAgICAgICByZXR1cm4gdGhpcy5sYXVmZW50d2lja2x1bmc7CisgICAgfQorCisgICAg
cHVibGljIHZvaWQgc2V0TGF1ZmVudHdpY2tsdW5nKEJpZ0RlY2ltYWwgbGF1ZmVudHdpY2tsdW5n
KSB7CisgICAgICAgIHRoaXMubGF1ZmVudHdpY2tsdW5nID0zRCBsYXVmZW50d2lja2x1bmc7Cisg
ICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiTU5RIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9
M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1ucSgpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMubW5xOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1ucShCaWdEZWNpbWFsIG1ucSkg
eworICAgICAgICB0aGlzLm1ucSA9M0QgbW5xOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1l
PTNEIk1RIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFs
IGdldE1xKCkgeworICAgICAgICByZXR1cm4gdGhpcy5tcTsKKyAgICB9CisKKyAgICBwdWJsaWMg
dm9pZCBzZXRNcShCaWdEZWNpbWFsIG1xKSB7CisgICAgICAgIHRoaXMubXEgPTNEIG1xOworICAg
IH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIk1IUSIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNE
MykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNaHEoKSB7CisgICAgICAgIHJldHVybiB0aGlz
Lm1ocTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNaHEoQmlnRGVjaW1hbCBtaHEpIHsK
KyAgICAgICAgdGhpcy5taHEgPTNEIG1ocTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0z
RCJOTlEiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0Tm5xKCkgeworICAgICAgICByZXR1cm4gdGhpcy5ubnE7CisgICAgfQorCisgICAgcHVibGlj
IHZvaWQgc2V0Tm5xKEJpZ0RlY2ltYWwgbm5xKSB7CisgICAgICAgIHRoaXMubm5xID0zRCBubnE7
CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiSEhRIiwgcHJlY2lzaW9uPTNEOCwgc2Nh
bGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEhocSgpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuaGhxOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEhocShCaWdEZWNpbWFsIGho
cSkgeworICAgICAgICB0aGlzLmhocSA9M0QgaGhxOworICAgIH0KKworICAgIEBUZW1wb3JhbChU
ZW1wb3JhbFR5cGUuREFURSkKKyAgICBAQ29sdW1uKG5hbWU9M0QiTk5RREFUVU0iLCBsZW5ndGg9
M0Q3KQorICAgIHB1YmxpYyBEYXRlIGdldE5ucWRhdHVtKCkgeworICAgICAgICByZXR1cm4gdGhp
cy5ubnFkYXR1bTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRObnFkYXR1bShEYXRlIG5u
cWRhdHVtKSB7CisgICAgICAgIHRoaXMubm5xZGF0dW0gPTNEIG5ucWRhdHVtOworICAgIH0KKwor
ICAgIEBUZW1wb3JhbChUZW1wb3JhbFR5cGUuREFURSkKKyAgICBAQ29sdW1uKG5hbWU9M0QiSEhR
REFUVU0iLCBsZW5ndGg9M0Q3KQorICAgIHB1YmxpYyBEYXRlIGdldEhocWRhdHVtKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy5oaHFkYXR1bTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRI
aHFkYXR1bShEYXRlIGhocWRhdHVtKSB7CisgICAgICAgIHRoaXMuaGhxZGF0dW0gPTNEIGhocWRh
dHVtOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkpBSFJFU1JFSUhFIiwgbGVuZ3Ro
PTNEMTIpCisgICAgcHVibGljIFN0cmluZyBnZXRKYWhyZXNyZWloZSgpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuamFocmVzcmVpaGU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0SmFocmVz
cmVpaGUoU3RyaW5nIGphaHJlc3JlaWhlKSB7CisgICAgICAgIHRoaXMuamFocmVzcmVpaGUgPTNE
IGphaHJlc3JlaWhlOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkJFTUVSS1VORyIs
IGxlbmd0aD0zRDI0MCkKKyAgICBwdWJsaWMgU3RyaW5nIGdldEJlbWVya3VuZygpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuYmVtZXJrdW5nOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEJl
bWVya3VuZyhTdHJpbmcgYmVtZXJrdW5nKSB7CisgICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBi
ZW1lcmt1bmc7CisgICAgfQorCitAT25lVG9NYW55KGZldGNoPTNERmV0Y2hUeXBlLkxBWlksIG1h
cHBlZEJ5PTNEImJlenVnc3BlZ2VsIikKKyAgICBwdWJsaWMgU2V0PFN0YXRpb24+IGdldFN0YXRp
b25zKCkgeworICAgICAgICByZXR1cm4gdGhpcy5zdGF0aW9uczsKKyAgICB9CisKKyAgICBwdWJs
aWMgdm9pZCBzZXRTdGF0aW9ucyhTZXQ8U3RhdGlvbj4gc3RhdGlvbnMpIHsKKyAgICAgICAgdGhp
cy5zdGF0aW9ucyA9M0Qgc3RhdGlvbnM7CisgICAgfQorfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAt
ciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMv
cml2ZXIvc2VkZGIvbW9kZWwvQmV6dWdzcGVnZWxnZXcuamF2YQotLS0gL2Rldi9udWxsCVRodSBK
YW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9iYWNrZW5kL3NyYy9tYWluL2phdmEvb3Jn
L2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvQmV6dWdzcGVnZWw9Cmdldy5qYXZhCU1v
biBBcHIgMjkgMTE6MzM6MDEgMjAxMyArMDIwMApAQCAtMCwwICsxLDY5IEBACisvKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9
QTRzc2Vyaz0KdW5kZQorICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJI
CisgKgorICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+
PTNEdjMpPTIwCisgKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVj
ayBvdXQgdGhlCisgKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2
ZXIgZm9yIGRldGFpbHMuPTIwCisgKi8KKworcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5zZWRk
Yi5tb2RlbDsKKy8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBU
b29scyAzLjQuMC5DUjEKKworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQXR0cmlidXRlT3Zl
cnJpZGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQXR0cmlidXRlT3ZlcnJpZGVzOworaW1w
b3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5F
bWJlZGRlZElkOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZh
eC5wZXJzaXN0ZW5jZS5UYWJsZTsKKworLyoqCisgKiBCZXp1Z3NwZWdlbGdldyBnZW5lcmF0ZWQg
YnkgaGJtMmphdmEKKyAqLworQEVudGl0eQorQFRhYmxlKG5hbWU9M0QiQkVaVUdTUEVHRUxHRVci
CisgICAgLHNjaGVtYT0zRCJTRUREQiIKKykKK3B1YmxpYyBjbGFzcyBCZXp1Z3NwZWdlbGdldyAg
aW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7CisKKworICAgICBwcml2YXRlIEJlenVn
c3BlZ2VsZ2V3SWQgaWQ7CisKKyAgICBwdWJsaWMgQmV6dWdzcGVnZWxnZXcoKSB7CisgICAgfQor
CisgICAgcHVibGljIEJlenVnc3BlZ2VsZ2V3KEJlenVnc3BlZ2VsZ2V3SWQgaWQpIHsKKyAgICAg
ICB0aGlzLmlkID0zRCBpZDsKKyAgICB9CisKKyAgICAgQEVtYmVkZGVkSWQKKworICAgIEBBdHRy
aWJ1dGVPdmVycmlkZXMoIHsKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiYmV6
dWdzcGVnZWxpZCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0KPTNEIkJFWlVHU1BFR0VMSUQiLCBu
dWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QwKSApLAorICAgICAgICBA
QXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJnZXdhZXNzZXJpZCIsIGNvbHVtbj0zREBDb2x1bW4o
bmFtZT0zRCI9CkdFV0FFU1NFUklEIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMTEs
IHNjYWxlPTNEMCkgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qia20iLCBj
b2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiS00iLCBudWxsPQphYmxlPTNEZmFsc2UsIHByZWNpc2lv
bj0zRDgsIHNjYWxlPTNEMykgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qi
bmFtZSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJOQU1FIiwgPQpudWxsYWJsZT0zRGZhbHNl
LCBsZW5ndGg9M0Q1MCkgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibnVs
bHB1bmt0IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk5VPQpMTFBVTktUIiwgbnVsbGFibGU9
M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKSApLAorICAgICAgICBAQXR0cmlidXRl
T3ZlcnJpZGUobmFtZT0zRCJrZW5udW5nIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIktFTk49
ClVORyIsIGxlbmd0aD0zRDE2KSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0z
RCJlaW56dWdzZ2ViaWV0IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPQo9M0QiRUlOWlVHU0dFQklF
VCIsIHByZWNpc2lvbj0zRDEwKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0z
RCJpbmJldHJpZWIiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiSU49CkJFVFJJRUIiLCBsZW5n
dGg9M0Q3KSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJmbGllc3NjaGFy
YWt0ZXIiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9Cj0zRCJGTElFU1NDSEFSQUtURVIiLCBsZW5n
dGg9M0QzKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJsYXVmZW50d2lj
a2x1bmciLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9Cj0zRCJMQVVGRU5UV0lDS0xVTkciLCBwcmVj
aXNpb249M0Q3LCBzY2FsZT0zRDMpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1l
PTNEIm1ucSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNTlEiLCBwcj0KZWNpc2lvbj0zRDgs
IHNjYWxlPTNEMykgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibXEiLCBj
b2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTVEiLCBwcmVjPQppc2lvbj0zRDgsIHNjYWxlPTNEMykg
KSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWhxIiwgY29sdW1uPTNEQENv
bHVtbihuYW1lPTNEIk1IUSIsIHByPQplY2lzaW9uPTNEOCwgc2NhbGU9M0QzKSApLAorICAgICAg
ICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJubnEiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9
M0QiTk5RIiwgcHI9CmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpICksCisgICAgICAgIEBBdHRyaWJ1
dGVPdmVycmlkZShuYW1lPTNEImhocSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJISFEiLCBw
cj0KZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRl
KG5hbWU9M0Qibm5xZGF0dW0iLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTk5RPQpEQVRVTSIs
IGxlbmd0aD0zRDcpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImhocWRh
dHVtIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkhIUT0KREFUVU0iLCBsZW5ndGg9M0Q3KSAp
LAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJqYWhyZXNyZWloZSIsIGNvbHVt
bj0zREBDb2x1bW4obmFtZT0zRCI9CkpBSFJFU1JFSUhFIiwgbGVuZ3RoPTNEMTIpICksCisgICAg
ICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImJlbWVya3VuZyIsIGNvbHVtbj0zREBDb2x1
bW4obmFtZT0zRCJCRT0KTUVSS1VORyIsIGxlbmd0aD0zRDI0MCkgKSwKKyAgICAgICAgQEF0dHJp
YnV0ZU92ZXJyaWRlKG5hbWU9M0QiZ2V3bmFtZSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJH
RVdOPQpBTUUiLCBudWxsYWJsZT0zRGZhbHNlLCBsZW5ndGg9M0QyMCkgKSB9ICkKKyAgICBwdWJs
aWMgQmV6dWdzcGVnZWxnZXdJZCBnZXRJZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaWQ7Cisg
ICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0SWQoQmV6dWdzcGVnZWxnZXdJZCBpZCkgeworICAg
ICAgICB0aGlzLmlkID0zRCBpZDsKKyAgICB9Cit9CmRpZmYgLXIgYmM0ZTFiZjI2MjI3IC1yIDFl
NjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZl
ci9zZWRkYi9tb2RlbC9CZXp1Z3NwZWdlbGdld0lkLmphdmEKLS0tIC9kZXYvbnVsbAlUaHUgSmFu
IDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9k
aXZlNGVsZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVsL0JlenVnc3BlZ2VsPQpnZXdJZC5qYXZhCU1v
biBBcHIgMjkgMTE6MzM6MDEgMjAxMyArMDIwMApAQCAtMCwwICsxLDMzNSBAQAorLyogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMz
PUE0c3Nlcms9CnVuZGUKKyAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21i
SAorICoKKyAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAo
Pj0zRHYzKT0yMAorICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hl
Y2sgb3V0IHRoZQorICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJp
dmVyIGZvciBkZXRhaWxzLj0yMAorICovCisKK3BhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2Vk
ZGIubW9kZWw7CisvLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUg
VG9vbHMgMy40LjAuQ1IxCisKKworaW1wb3J0IGphdmEubWF0aC5CaWdEZWNpbWFsOworaW1wb3J0
IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9y
dCBqYXZheC5wZXJzaXN0ZW5jZS5FbWJlZGRhYmxlOworCisvKioKKyAqIEJlenVnc3BlZ2VsZ2V3
SWQgZ2VuZXJhdGVkIGJ5IGhibTJqYXZhCisgKi8KK0BFbWJlZGRhYmxlCitwdWJsaWMgY2xhc3Mg
QmV6dWdzcGVnZWxnZXdJZCAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7CisKKwor
ICAgICBwcml2YXRlIGxvbmcgYmV6dWdzcGVnZWxpZDsKKyAgICAgcHJpdmF0ZSBsb25nIGdld2Fl
c3NlcmlkOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwga207CisgICAgIHByaXZhdGUgU3RyaW5n
IG5hbWU7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBudWxscHVua3Q7CisgICAgIHByaXZhdGUg
U3RyaW5nIGtlbm51bmc7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBlaW56dWdzZ2ViaWV0Owor
ICAgICBwcml2YXRlIERhdGUgaW5iZXRyaWViOworICAgICBwcml2YXRlIFN0cmluZyBmbGllc3Nj
aGFyYWt0ZXI7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBsYXVmZW50d2lja2x1bmc7CisgICAg
IHByaXZhdGUgQmlnRGVjaW1hbCBtbnE7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtcTsKKyAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG1ocTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIG5ucTsK
KyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGhocTsKKyAgICAgcHJpdmF0ZSBEYXRlIG5ucWRhdHVt
OworICAgICBwcml2YXRlIERhdGUgaGhxZGF0dW07CisgICAgIHByaXZhdGUgU3RyaW5nIGphaHJl
c3JlaWhlOworICAgICBwcml2YXRlIFN0cmluZyBiZW1lcmt1bmc7CisgICAgIHByaXZhdGUgU3Ry
aW5nIGdld25hbWU7CisKKyAgICBwdWJsaWMgQmV6dWdzcGVnZWxnZXdJZCgpIHsKKyAgICB9CisK
KyAgICBwdWJsaWMgQmV6dWdzcGVnZWxnZXdJZChsb25nIGJlenVnc3BlZ2VsaWQsIGxvbmcgZ2V3
YWVzc2VyaWQsIEJpZ0RlY2ltPQphbCBrbSwgU3RyaW5nIG5hbWUsIEJpZ0RlY2ltYWwgbnVsbHB1
bmt0LCBTdHJpbmcgZ2V3bmFtZSkgeworICAgICAgICB0aGlzLmJlenVnc3BlZ2VsaWQgPTNEIGJl
enVnc3BlZ2VsaWQ7CisgICAgICAgIHRoaXMuZ2V3YWVzc2VyaWQgPTNEIGdld2Flc3NlcmlkOwor
ICAgICAgICB0aGlzLmttID0zRCBrbTsKKyAgICAgICAgdGhpcy5uYW1lID0zRCBuYW1lOworICAg
ICAgICB0aGlzLm51bGxwdW5rdCA9M0QgbnVsbHB1bmt0OworICAgICAgICB0aGlzLmdld25hbWUg
PTNEIGdld25hbWU7CisgICAgfQorICAgIHB1YmxpYyBCZXp1Z3NwZWdlbGdld0lkKGxvbmcgYmV6
dWdzcGVnZWxpZCwgbG9uZyBnZXdhZXNzZXJpZCwgQmlnRGVjaW09CmFsIGttLCBTdHJpbmcgbmFt
ZSwgQmlnRGVjaW1hbCBudWxscHVua3QsIFN0cmluZyBrZW5udW5nLCBCaWdEZWNpbWFsIGVpbnp1
Zz0Kc2dlYmlldCwgRGF0ZSBpbmJldHJpZWIsIFN0cmluZyBmbGllc3NjaGFyYWt0ZXIsIEJpZ0Rl
Y2ltYWwgbGF1ZmVudHdpY2tsdW5nPQosIEJpZ0RlY2ltYWwgbW5xLCBCaWdEZWNpbWFsIG1xLCBC
aWdEZWNpbWFsIG1ocSwgQmlnRGVjaW1hbCBubnEsIEJpZ0RlY2ltYWw9CiBoaHEsIERhdGUgbm5x
ZGF0dW0sIERhdGUgaGhxZGF0dW0sIFN0cmluZyBqYWhyZXNyZWloZSwgU3RyaW5nIGJlbWVya3Vu
ZywgUz0KdHJpbmcgZ2V3bmFtZSkgeworICAgICAgIHRoaXMuYmV6dWdzcGVnZWxpZCA9M0QgYmV6
dWdzcGVnZWxpZDsKKyAgICAgICB0aGlzLmdld2Flc3NlcmlkID0zRCBnZXdhZXNzZXJpZDsKKyAg
ICAgICB0aGlzLmttID0zRCBrbTsKKyAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7CisgICAgICAg
dGhpcy5udWxscHVua3QgPTNEIG51bGxwdW5rdDsKKyAgICAgICB0aGlzLmtlbm51bmcgPTNEIGtl
bm51bmc7CisgICAgICAgdGhpcy5laW56dWdzZ2ViaWV0ID0zRCBlaW56dWdzZ2ViaWV0OworICAg
ICAgIHRoaXMuaW5iZXRyaWViID0zRCBpbmJldHJpZWI7CisgICAgICAgdGhpcy5mbGllc3NjaGFy
YWt0ZXIgPTNEIGZsaWVzc2NoYXJha3RlcjsKKyAgICAgICB0aGlzLmxhdWZlbnR3aWNrbHVuZyA9
M0QgbGF1ZmVudHdpY2tsdW5nOworICAgICAgIHRoaXMubW5xID0zRCBtbnE7CisgICAgICAgdGhp
cy5tcSA9M0QgbXE7CisgICAgICAgdGhpcy5taHEgPTNEIG1ocTsKKyAgICAgICB0aGlzLm5ucSA9
M0Qgbm5xOworICAgICAgIHRoaXMuaGhxID0zRCBoaHE7CisgICAgICAgdGhpcy5ubnFkYXR1bSA9
M0Qgbm5xZGF0dW07CisgICAgICAgdGhpcy5oaHFkYXR1bSA9M0QgaGhxZGF0dW07CisgICAgICAg
dGhpcy5qYWhyZXNyZWloZSA9M0QgamFocmVzcmVpaGU7CisgICAgICAgdGhpcy5iZW1lcmt1bmcg
PTNEIGJlbWVya3VuZzsKKyAgICAgICB0aGlzLmdld25hbWUgPTNEIGdld25hbWU7CisgICAgfQor
CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJCRVpVR1NQRUdFTElEIiwgbnVsbGFibGU9M0RmYWxz
ZSwgcHJlY2lzaW9uPTNEMTEsIHNjYWw9CmU9M0QwKQorICAgIHB1YmxpYyBsb25nIGdldEJlenVn
c3BlZ2VsaWQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJlenVnc3BlZ2VsaWQ7CisgICAgfQor
CisgICAgcHVibGljIHZvaWQgc2V0QmV6dWdzcGVnZWxpZChsb25nIGJlenVnc3BlZ2VsaWQpIHsK
KyAgICAgICAgdGhpcy5iZXp1Z3NwZWdlbGlkID0zRCBiZXp1Z3NwZWdlbGlkOworICAgIH0KKwor
CisgICAgQENvbHVtbihuYW1lPTNEIkdFV0FFU1NFUklEIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJl
Y2lzaW9uPTNEMTEsIHNjYWxlPQo9M0QwKQorICAgIHB1YmxpYyBsb25nIGdldEdld2Flc3Nlcmlk
KCkgeworICAgICAgICByZXR1cm4gdGhpcy5nZXdhZXNzZXJpZDsKKyAgICB9CisKKyAgICBwdWJs
aWMgdm9pZCBzZXRHZXdhZXNzZXJpZChsb25nIGdld2Flc3NlcmlkKSB7CisgICAgICAgIHRoaXMu
Z2V3YWVzc2VyaWQgPTNEIGdld2Flc3NlcmlkOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1l
PTNEIktNIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQorICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldEttKCkgeworICAgICAgICByZXR1cm4gdGhpcy5rbTsKKyAg
ICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRLbShCaWdEZWNpbWFsIGttKSB7CisgICAgICAgIHRo
aXMua20gPTNEIGttOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIk5BTUUiLCBudWxs
YWJsZT0zRGZhbHNlLCBsZW5ndGg9M0Q1MCkKKyAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLm5hbWU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0
TmFtZShTdHJpbmcgbmFtZSkgeworICAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7CisgICAgfQor
CisKKyAgICBAQ29sdW1uKG5hbWU9M0QiTlVMTFBVTktUIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJl
Y2lzaW9uPTNEOCwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE51bGxwdW5r
dCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubnVsbHB1bmt0OworICAgIH0KKworICAgIHB1Ymxp
YyB2b2lkIHNldE51bGxwdW5rdChCaWdEZWNpbWFsIG51bGxwdW5rdCkgeworICAgICAgICB0aGlz
Lm51bGxwdW5rdCA9M0QgbnVsbHB1bmt0OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNE
IktFTk5VTkciLCBsZW5ndGg9M0QxNikKKyAgICBwdWJsaWMgU3RyaW5nIGdldEtlbm51bmcoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLmtlbm51bmc7CisgICAgfQorCisgICAgcHVibGljIHZvaWQg
c2V0S2VubnVuZyhTdHJpbmcga2VubnVuZykgeworICAgICAgICB0aGlzLmtlbm51bmcgPTNEIGtl
bm51bmc7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiRUlOWlVHU0dFQklFVCIsIHBy
ZWNpc2lvbj0zRDEwKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEVpbnp1Z3NnZWJpZXQoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLmVpbnp1Z3NnZWJpZXQ7CisgICAgfQorCisgICAgcHVibGlj
IHZvaWQgc2V0RWluenVnc2dlYmlldChCaWdEZWNpbWFsIGVpbnp1Z3NnZWJpZXQpIHsKKyAgICAg
ICAgdGhpcy5laW56dWdzZ2ViaWV0ID0zRCBlaW56dWdzZ2ViaWV0OworICAgIH0KKworCisgICAg
QENvbHVtbihuYW1lPTNEIklOQkVUUklFQiIsIGxlbmd0aD0zRDcpCisgICAgcHVibGljIERhdGUg
Z2V0SW5iZXRyaWViKCkgeworICAgICAgICByZXR1cm4gdGhpcy5pbmJldHJpZWI7CisgICAgfQor
CisgICAgcHVibGljIHZvaWQgc2V0SW5iZXRyaWViKERhdGUgaW5iZXRyaWViKSB7CisgICAgICAg
IHRoaXMuaW5iZXRyaWViID0zRCBpbmJldHJpZWI7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5h
bWU9M0QiRkxJRVNTQ0hBUkFLVEVSIiwgbGVuZ3RoPTNEMykKKyAgICBwdWJsaWMgU3RyaW5nIGdl
dEZsaWVzc2NoYXJha3RlcigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZmxpZXNzY2hhcmFrdGVy
OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEZsaWVzc2NoYXJha3RlcihTdHJpbmcgZmxp
ZXNzY2hhcmFrdGVyKSB7CisgICAgICAgIHRoaXMuZmxpZXNzY2hhcmFrdGVyID0zRCBmbGllc3Nj
aGFyYWt0ZXI7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiTEFVRkVOVFdJQ0tMVU5H
IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldExh
dWZlbnR3aWNrbHVuZygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubGF1ZmVudHdpY2tsdW5nOwor
ICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldExhdWZlbnR3aWNrbHVuZyhCaWdEZWNpbWFsIGxh
dWZlbnR3aWNrbHVuZykgeworICAgICAgICB0aGlzLmxhdWZlbnR3aWNrbHVuZyA9M0QgbGF1ZmVu
dHdpY2tsdW5nOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIk1OUSIsIHByZWNpc2lv
bj0zRDgsIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNbnEoKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLm1ucTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNbnEoQmln
RGVjaW1hbCBtbnEpIHsKKyAgICAgICAgdGhpcy5tbnEgPTNEIG1ucTsKKyAgICB9CisKKworICAg
IEBDb2x1bW4obmFtZT0zRCJNUSIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKKyAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXRNcSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubXE7CisgICAgfQor
CisgICAgcHVibGljIHZvaWQgc2V0TXEoQmlnRGVjaW1hbCBtcSkgeworICAgICAgICB0aGlzLm1x
ID0zRCBtcTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJNSFEiLCBwcmVjaXNpb249
M0Q4LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWhxKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy5taHE7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TWhxKEJpZ0Rl
Y2ltYWwgbWhxKSB7CisgICAgICAgIHRoaXMubWhxID0zRCBtaHE7CisgICAgfQorCisKKyAgICBA
Q29sdW1uKG5hbWU9M0QiTk5RIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQorICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldE5ucSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubm5xOworICAgIH0K
KworICAgIHB1YmxpYyB2b2lkIHNldE5ucShCaWdEZWNpbWFsIG5ucSkgeworICAgICAgICB0aGlz
Lm5ucSA9M0Qgbm5xOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkhIUSIsIHByZWNp
c2lvbj0zRDgsIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRIaHEoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLmhocTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRIaHEo
QmlnRGVjaW1hbCBoaHEpIHsKKyAgICAgICAgdGhpcy5oaHEgPTNEIGhocTsKKyAgICB9CisKKwor
ICAgIEBDb2x1bW4obmFtZT0zRCJOTlFEQVRVTSIsIGxlbmd0aD0zRDcpCisgICAgcHVibGljIERh
dGUgZ2V0Tm5xZGF0dW0oKSB7CisgICAgICAgIHJldHVybiB0aGlzLm5ucWRhdHVtOworICAgIH0K
KworICAgIHB1YmxpYyB2b2lkIHNldE5ucWRhdHVtKERhdGUgbm5xZGF0dW0pIHsKKyAgICAgICAg
dGhpcy5ubnFkYXR1bSA9M0Qgbm5xZGF0dW07CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9
M0QiSEhRREFUVU0iLCBsZW5ndGg9M0Q3KQorICAgIHB1YmxpYyBEYXRlIGdldEhocWRhdHVtKCkg
eworICAgICAgICByZXR1cm4gdGhpcy5oaHFkYXR1bTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9p
ZCBzZXRIaHFkYXR1bShEYXRlIGhocWRhdHVtKSB7CisgICAgICAgIHRoaXMuaGhxZGF0dW0gPTNE
IGhocWRhdHVtOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkpBSFJFU1JFSUhFIiwg
bGVuZ3RoPTNEMTIpCisgICAgcHVibGljIFN0cmluZyBnZXRKYWhyZXNyZWloZSgpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuamFocmVzcmVpaGU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0
SmFocmVzcmVpaGUoU3RyaW5nIGphaHJlc3JlaWhlKSB7CisgICAgICAgIHRoaXMuamFocmVzcmVp
aGUgPTNEIGphaHJlc3JlaWhlOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkJFTUVS
S1VORyIsIGxlbmd0aD0zRDI0MCkKKyAgICBwdWJsaWMgU3RyaW5nIGdldEJlbWVya3VuZygpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuYmVtZXJrdW5nOworICAgIH0KKworICAgIHB1YmxpYyB2b2lk
IHNldEJlbWVya3VuZyhTdHJpbmcgYmVtZXJrdW5nKSB7CisgICAgICAgIHRoaXMuYmVtZXJrdW5n
ID0zRCBiZW1lcmt1bmc7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiR0VXTkFNRSIs
IG51bGxhYmxlPTNEZmFsc2UsIGxlbmd0aD0zRDIwKQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0R2V3
bmFtZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZ2V3bmFtZTsKKyAgICB9CisKKyAgICBwdWJs
aWMgdm9pZCBzZXRHZXduYW1lKFN0cmluZyBnZXduYW1lKSB7CisgICAgICAgIHRoaXMuZ2V3bmFt
ZSA9M0QgZ2V3bmFtZTsKKyAgICB9CisKKworICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVj
dCBvdGhlcikgeworICAgICAgICAgaWYgKCAodGhpcyA9M0Q9M0Qgb3RoZXIgKSApIHJldHVybiB0
cnVlOworICAgICAgICAgaWYgKCAob3RoZXIgPTNEPTNEIG51bGwgKSApIHJldHVybiBmYWxzZTsK
KyAgICAgICAgIGlmICggIShvdGhlciBpbnN0YW5jZW9mIEJlenVnc3BlZ2VsZ2V3SWQpICkgcmV0
dXJuIGZhbHNlOworICAgICAgICAgQmV6dWdzcGVnZWxnZXdJZCBjYXN0T3RoZXIgPTNEICggQmV6
dWdzcGVnZWxnZXdJZCApIG90aGVyOworCisgICAgICAgICByZXR1cm4gKHRoaXMuZ2V0QmV6dWdz
cGVnZWxpZCgpPTNEPTNEY2FzdE90aGVyLmdldEJlenVnc3BlZ2VsaWQoKSkKKyAmJiAodGhpcy5n
ZXRHZXdhZXNzZXJpZCgpPTNEPTNEY2FzdE90aGVyLmdldEdld2Flc3NlcmlkKCkpCisgJiYgKCAo
dGhpcy5nZXRLbSgpPTNEPTNEY2FzdE90aGVyLmdldEttKCkpIHx8ICggdGhpcy5nZXRLbSgpIT0z
RG51bGwgJiYgYz0KYXN0T3RoZXIuZ2V0S20oKSE9M0RudWxsICYmIHRoaXMuZ2V0S20oKS5lcXVh
bHMoY2FzdE90aGVyLmdldEttKCkpICkgKQorICYmICggKHRoaXMuZ2V0TmFtZSgpPTNEPTNEY2Fz
dE90aGVyLmdldE5hbWUoKSkgfHwgKCB0aGlzLmdldE5hbWUoKSE9M0RudWw9CmwgJiYgY2FzdE90
aGVyLmdldE5hbWUoKSE9M0RudWxsICYmIHRoaXMuZ2V0TmFtZSgpLmVxdWFscyhjYXN0T3RoZXIu
Z2V0TmFtZT0KKCkpICkgKQorICYmICggKHRoaXMuZ2V0TnVsbHB1bmt0KCk9M0Q9M0RjYXN0T3Ro
ZXIuZ2V0TnVsbHB1bmt0KCkpIHx8ICggdGhpcy5nZXROdWw9CmxwdW5rdCgpIT0zRG51bGwgJiYg
Y2FzdE90aGVyLmdldE51bGxwdW5rdCgpIT0zRG51bGwgJiYgdGhpcy5nZXROdWxscHVua3QoKT0K
LmVxdWFscyhjYXN0T3RoZXIuZ2V0TnVsbHB1bmt0KCkpICkgKQorICYmICggKHRoaXMuZ2V0S2Vu
bnVuZygpPTNEPTNEY2FzdE90aGVyLmdldEtlbm51bmcoKSkgfHwgKCB0aGlzLmdldEtlbm51bmc9
CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldEtlbm51bmcoKSE9M0RudWxsICYmIHRoaXMuZ2V0
S2VubnVuZygpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRLZW5udW5nKCkpICkgKQorICYmICggKHRo
aXMuZ2V0RWluenVnc2dlYmlldCgpPTNEPTNEY2FzdE90aGVyLmdldEVpbnp1Z3NnZWJpZXQoKSkg
fHwgKCB0aGk9CnMuZ2V0RWluenVnc2dlYmlldCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldEVp
bnp1Z3NnZWJpZXQoKSE9M0RudWxsICYmIHRoaT0Kcy5nZXRFaW56dWdzZ2ViaWV0KCkuZXF1YWxz
KGNhc3RPdGhlci5nZXRFaW56dWdzZ2ViaWV0KCkpICkgKQorICYmICggKHRoaXMuZ2V0SW5iZXRy
aWViKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0SW5iZXRyaWViKCkpIHx8ICggdGhpcy5nZXRJbmI9CmV0
cmllYigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldEluYmV0cmllYigpIT0zRG51bGwgJiYgdGhp
cy5nZXRJbmJldHJpZWIoKT0KLmVxdWFscyhjYXN0T3RoZXIuZ2V0SW5iZXRyaWViKCkpICkgKQor
ICYmICggKHRoaXMuZ2V0RmxpZXNzY2hhcmFrdGVyKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RmxpZXNz
Y2hhcmFrdGVyKCkpIHx8ICg9CiB0aGlzLmdldEZsaWVzc2NoYXJha3RlcigpIT0zRG51bGwgJiYg
Y2FzdE90aGVyLmdldEZsaWVzc2NoYXJha3RlcigpIT0zRG51bD0KbCAmJiB0aGlzLmdldEZsaWVz
c2NoYXJha3RlcigpLmVxdWFscyhjYXN0T3RoZXIuZ2V0RmxpZXNzY2hhcmFrdGVyKCkpICkgKQor
ICYmICggKHRoaXMuZ2V0TGF1ZmVudHdpY2tsdW5nKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TGF1ZmVu
dHdpY2tsdW5nKCkpIHx8ICg9CiB0aGlzLmdldExhdWZlbnR3aWNrbHVuZygpIT0zRG51bGwgJiYg
Y2FzdE90aGVyLmdldExhdWZlbnR3aWNrbHVuZygpIT0zRG51bD0KbCAmJiB0aGlzLmdldExhdWZl
bnR3aWNrbHVuZygpLmVxdWFscyhjYXN0T3RoZXIuZ2V0TGF1ZmVudHdpY2tsdW5nKCkpICkgKQor
ICYmICggKHRoaXMuZ2V0TW5xKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TW5xKCkpIHx8ICggdGhpcy5n
ZXRNbnEoKSE9M0RudWxsICY9CiYgY2FzdE90aGVyLmdldE1ucSgpIT0zRG51bGwgJiYgdGhpcy5n
ZXRNbnEoKS5lcXVhbHMoY2FzdE90aGVyLmdldE1ucSgpKSApICkKKyAmJiAoICh0aGlzLmdldE1x
KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TXEoKSkgfHwgKCB0aGlzLmdldE1xKCkhPTNEbnVsbCAmJiBj
PQphc3RPdGhlci5nZXRNcSgpIT0zRG51bGwgJiYgdGhpcy5nZXRNcSgpLmVxdWFscyhjYXN0T3Ro
ZXIuZ2V0TXEoKSkgKSApCisgJiYgKCAodGhpcy5nZXRNaHEoKT0zRD0zRGNhc3RPdGhlci5nZXRN
aHEoKSkgfHwgKCB0aGlzLmdldE1ocSgpIT0zRG51bGwgJj0KJiBjYXN0T3RoZXIuZ2V0TWhxKCkh
PTNEbnVsbCAmJiB0aGlzLmdldE1ocSgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0TWhxKCkpICkgKQor
ICYmICggKHRoaXMuZ2V0Tm5xKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0Tm5xKCkpIHx8ICggdGhpcy5n
ZXRObnEoKSE9M0RudWxsICY9CiYgY2FzdE90aGVyLmdldE5ucSgpIT0zRG51bGwgJiYgdGhpcy5n
ZXRObnEoKS5lcXVhbHMoY2FzdE90aGVyLmdldE5ucSgpKSApICkKKyAmJiAoICh0aGlzLmdldEho
cSgpPTNEPTNEY2FzdE90aGVyLmdldEhocSgpKSB8fCAoIHRoaXMuZ2V0SGhxKCkhPTNEbnVsbCAm
PQomIGNhc3RPdGhlci5nZXRIaHEoKSE9M0RudWxsICYmIHRoaXMuZ2V0SGhxKCkuZXF1YWxzKGNh
c3RPdGhlci5nZXRIaHEoKSkgKSApCisgJiYgKCAodGhpcy5nZXRObnFkYXR1bSgpPTNEPTNEY2Fz
dE90aGVyLmdldE5ucWRhdHVtKCkpIHx8ICggdGhpcy5nZXRObnFkYT0KdHVtKCkhPTNEbnVsbCAm
JiBjYXN0T3RoZXIuZ2V0Tm5xZGF0dW0oKSE9M0RudWxsICYmIHRoaXMuZ2V0Tm5xZGF0dW0oKS5l
cXVhPQpscyhjYXN0T3RoZXIuZ2V0Tm5xZGF0dW0oKSkgKSApCisgJiYgKCAodGhpcy5nZXRIaHFk
YXR1bSgpPTNEPTNEY2FzdE90aGVyLmdldEhocWRhdHVtKCkpIHx8ICggdGhpcy5nZXRIaHFkYT0K
dHVtKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0SGhxZGF0dW0oKSE9M0RudWxsICYmIHRoaXMu
Z2V0SGhxZGF0dW0oKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0SGhxZGF0dW0oKSkgKSApCisgJiYg
KCAodGhpcy5nZXRKYWhyZXNyZWloZSgpPTNEPTNEY2FzdE90aGVyLmdldEphaHJlc3JlaWhlKCkp
IHx8ICggdGhpcy5nZT0KdEphaHJlc3JlaWhlKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0SmFo
cmVzcmVpaGUoKSE9M0RudWxsICYmIHRoaXMuZ2V0SmFoPQpyZXNyZWloZSgpLmVxdWFscyhjYXN0
T3RoZXIuZ2V0SmFocmVzcmVpaGUoKSkgKSApCisgJiYgKCAodGhpcy5nZXRCZW1lcmt1bmcoKT0z
RD0zRGNhc3RPdGhlci5nZXRCZW1lcmt1bmcoKSkgfHwgKCB0aGlzLmdldEJlbT0KZXJrdW5nKCkh
PTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0QmVtZXJrdW5nKCkhPTNEbnVsbCAmJiB0aGlzLmdldEJl
bWVya3VuZygpPQouZXF1YWxzKGNhc3RPdGhlci5nZXRCZW1lcmt1bmcoKSkgKSApCisgJiYgKCAo
dGhpcy5nZXRHZXduYW1lKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0R2V3bmFtZSgpKSB8fCAoIHRoaXMu
Z2V0R2V3bmFtZT0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0R2V3bmFtZSgpIT0zRG51bGwg
JiYgdGhpcy5nZXRHZXduYW1lKCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldEdld25hbWUoKSkgKSAp
OworICAgfQorCisgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICAgaW50IHJlc3Vs
dCA9M0QgMTc7CisKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoaW50KSB0aGlz
LmdldEJlenVnc3BlZ2VsaWQoKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAo
aW50KSB0aGlzLmdldEdld2Flc3NlcmlkKCk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVz
dWx0ICsgKCBnZXRLbSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0S20oKT0KLmhhc2hDb2Rl
KCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE5hbWUoKSA9M0Q9
M0QgbnVsbCA/IDAgOiB0aGlzLmdldE5hPQptZSgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJl
c3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE51bGxwdW5rdCgpID0zRD0zRCBudWxsID8gMCA6
IHRoaXMuPQpnZXROdWxscHVua3QoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNE
IDM3ICogcmVzdWx0ICsgKCBnZXRLZW5udW5nKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0K
dEtlbm51bmcoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0
ICsgKCBnZXRFaW56dWdzZ2ViaWV0KCkgPTNEPTNEIG51bGwgPyAwIDogdD0KaGlzLmdldEVpbnp1
Z3NnZWJpZXQoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0
ICsgKCBnZXRJbmJldHJpZWIoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLj0KZ2V0SW5iZXRyaWVi
KCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0
RmxpZXNzY2hhcmFrdGVyKCkgPTNEPTNEIG51bGwgPyAwIDo9CiB0aGlzLmdldEZsaWVzc2NoYXJh
a3RlcigpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAo
IGdldExhdWZlbnR3aWNrbHVuZygpID0zRD0zRCBudWxsID8gMCA6PQogdGhpcy5nZXRMYXVmZW50
d2lja2x1bmcoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0
ICsgKCBnZXRNbnEoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldE1ucT0KKCkuaGFzaENvZGUo
KSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TXEoKSA9M0Q9M0Qg
bnVsbCA/IDAgOiB0aGlzLmdldE1xKCk9Ci5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQg
PTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNaHEoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldE1o
cT0KKCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICgg
Z2V0Tm5xKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRObnE9CigpLmhhc2hDb2RlKCkgKTsK
KyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEhocSgpID0zRD0zRCBudWxs
ID8gMCA6IHRoaXMuZ2V0SGhxPQooKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNE
IDM3ICogcmVzdWx0ICsgKCBnZXRObnFkYXR1bSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0K
ZXRObnFkYXR1bSgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1
bHQgKyAoIGdldEhocWRhdHVtKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldEhocWRhdHVt
KCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0
SmFocmVzcmVpaGUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGk9CnMuZ2V0SmFocmVzcmVpaGUoKS5o
YXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRCZW1l
cmt1bmcoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLj0KZ2V0QmVtZXJrdW5nKCkuaGFzaENvZGUo
KSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0R2V3bmFtZSgpID0z
RD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRHZXduYW1lKCkuaGFzaENvZGUoKSApOworICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgIH0KK30KZGlmZiAtciBiYzRlMWJmMjYyMjcgLXIgMWU2OGVj
YTI2YjhhIGJhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50PQpzL3JpdmVyL3Nl
ZGRiL21vZGVsL0JpbGQuamF2YQotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3
MCArMDAwMAorKysgYi9iYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2
ZXIvc2VkZGIvbW9kZWwvQmlsZC5qYXZhCU09Cm9uIEFwciAyOSAxMTozMzowMSAyMDEzICswMjAw
CkBAIC0wLDAgKzEsMjAyIEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkg
QnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQorICogU29mdHdhcmUg
ZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICisgKgorICogVGhpcyBmaWxlIGlzIEZyZWUg
U29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMpPTIwCisgKiBhbmQgY29tZXMgd2l0
aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCisgKiBkb2N1bWVudGF0aW9u
IGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFpbHMuPTIwCisgKi8KKwor
cGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5zZWRkYi5tb2RlbDsKKy8vIEdlbmVyYXRlZCAxNC4w
Ni4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQuMC5DUjEKKworCitpbXBvcnQg
amF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0
eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2YXgucGVy
c2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKK2ltcG9y
dCBqYXZheC5wZXJzaXN0ZW5jZS5NYW55VG9PbmU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2Uu
VGFibGU7CisKKy8qKgorICogQmlsZCBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKKyAqLworQEVudGl0
eQorQFRhYmxlKG5hbWU9M0QiQklMRCIKKyAgICAsc2NoZW1hPTNEIlNFRERCIgorKQorcHVibGlj
IGNsYXNzIEJpbGQgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgeworCisKKyAgICAg
cHJpdmF0ZSBsb25nIGJpbGRpZDsKKyAgICAgcHJpdmF0ZSBaenRoZW1hIHp6dGhlbWE7CisgICAg
IHByaXZhdGUgU29obHRlc3Qgc29obHRlc3Q7CisgICAgIHByaXZhdGUgaW50IGxmZG5yOworICAg
ICBwcml2YXRlIGJvb2xlYW4gaXN0ZGlnaXRhbDsKKyAgICAgcHJpdmF0ZSBTdHJpbmcgcGZhZDsK
KyAgICAgcHJpdmF0ZSBTdHJpbmcgc3RhbmRvcnQ7CisgICAgIHByaXZhdGUgU3RyaW5nIG1lZGl1
bTsKKyAgICAgcHJpdmF0ZSBTdHJpbmcgbWVkcGZhZDsKKyAgICAgcHJpdmF0ZSBTdHJpbmcgYmVt
ZXJrdW5nOworICAgICBwcml2YXRlIFN0cmluZyB0eXBrbGVpbjsKKyAgICAgcHJpdmF0ZSBTdHJp
bmcgdHlwbWl0dGVsOworICAgICBwcml2YXRlIFN0cmluZyB0eXBncm9zczsKKworICAgIHB1Ymxp
YyBCaWxkKCkgeworICAgIH0KKworICAgIHB1YmxpYyBCaWxkKGxvbmcgYmlsZGlkLCBaenRoZW1h
IHp6dGhlbWEsIFNvaGx0ZXN0IHNvaGx0ZXN0LCBpbnQgbGZkbnI9CiwgYm9vbGVhbiBpc3RkaWdp
dGFsKSB7CisgICAgICAgIHRoaXMuYmlsZGlkID0zRCBiaWxkaWQ7CisgICAgICAgIHRoaXMuenp0
aGVtYSA9M0Qgenp0aGVtYTsKKyAgICAgICAgdGhpcy5zb2hsdGVzdCA9M0Qgc29obHRlc3Q7Cisg
ICAgICAgIHRoaXMubGZkbnIgPTNEIGxmZG5yOworICAgICAgICB0aGlzLmlzdGRpZ2l0YWwgPTNE
IGlzdGRpZ2l0YWw7CisgICAgfQorICAgIHB1YmxpYyBCaWxkKGxvbmcgYmlsZGlkLCBaenRoZW1h
IHp6dGhlbWEsIFNvaGx0ZXN0IHNvaGx0ZXN0LCBpbnQgbGZkbnI9CiwgYm9vbGVhbiBpc3RkaWdp
dGFsLCBTdHJpbmcgcGZhZCwgU3RyaW5nIHN0YW5kb3J0LCBTdHJpbmcgbWVkaXVtLCBTdHJpbmcg
bT0KZWRwZmFkLCBTdHJpbmcgYmVtZXJrdW5nLCBTdHJpbmcgdHlwa2xlaW4sIFN0cmluZyB0eXBt
aXR0ZWwsIFN0cmluZyB0eXBncm9zPQpzKSB7CisgICAgICAgdGhpcy5iaWxkaWQgPTNEIGJpbGRp
ZDsKKyAgICAgICB0aGlzLnp6dGhlbWEgPTNEIHp6dGhlbWE7CisgICAgICAgdGhpcy5zb2hsdGVz
dCA9M0Qgc29obHRlc3Q7CisgICAgICAgdGhpcy5sZmRuciA9M0QgbGZkbnI7CisgICAgICAgdGhp
cy5pc3RkaWdpdGFsID0zRCBpc3RkaWdpdGFsOworICAgICAgIHRoaXMucGZhZCA9M0QgcGZhZDsK
KyAgICAgICB0aGlzLnN0YW5kb3J0ID0zRCBzdGFuZG9ydDsKKyAgICAgICB0aGlzLm1lZGl1bSA9
M0QgbWVkaXVtOworICAgICAgIHRoaXMubWVkcGZhZCA9M0QgbWVkcGZhZDsKKyAgICAgICB0aGlz
LmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOworICAgICAgIHRoaXMudHlwa2xlaW4gPTNEIHR5cGts
ZWluOworICAgICAgIHRoaXMudHlwbWl0dGVsID0zRCB0eXBtaXR0ZWw7CisgICAgICAgdGhpcy50
eXBncm9zcyA9M0QgdHlwZ3Jvc3M7CisgICAgfQorCisgICAgIEBJZAorCisKKyAgICBAQ29sdW1u
KG5hbWU9M0QiQklMRElEIiwgdW5pcXVlPTNEdHJ1ZSwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lz
aW9uPTNEPQoxMSwgc2NhbGU9M0QwKQorICAgIHB1YmxpYyBsb25nIGdldEJpbGRpZCgpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuYmlsZGlkOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEJp
bGRpZChsb25nIGJpbGRpZCkgeworICAgICAgICB0aGlzLmJpbGRpZCA9M0QgYmlsZGlkOworICAg
IH0KKworQE1hbnlUb09uZShmZXRjaD0zREZldGNoVHlwZS5MQVpZKQorICAgIEBKb2luQ29sdW1u
KG5hbWU9M0QiVEhFTUFJRCIsIG51bGxhYmxlPTNEZmFsc2UpCisgICAgcHVibGljIFp6dGhlbWEg
Z2V0Wnp0aGVtYSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuenp0aGVtYTsKKyAgICB9CisKKyAg
ICBwdWJsaWMgdm9pZCBzZXRaenRoZW1hKFp6dGhlbWEgenp0aGVtYSkgeworICAgICAgICB0aGlz
Lnp6dGhlbWEgPTNEIHp6dGhlbWE7CisgICAgfQorCitATWFueVRvT25lKGZldGNoPTNERmV0Y2hU
eXBlLkxBWlkpCisgICAgQEpvaW5Db2x1bW4obmFtZT0zRCJTT0hMVEVTVElEIiwgbnVsbGFibGU9
M0RmYWxzZSkKKyAgICBwdWJsaWMgU29obHRlc3QgZ2V0U29obHRlc3QoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLnNvaGx0ZXN0OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFNvaGx0ZXN0
KFNvaGx0ZXN0IHNvaGx0ZXN0KSB7CisgICAgICAgIHRoaXMuc29obHRlc3QgPTNEIHNvaGx0ZXN0
OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkxGRE5SIiwgbnVsbGFibGU9M0RmYWxz
ZSwgcHJlY2lzaW9uPTNENSwgc2NhbGU9M0QwKQorICAgIHB1YmxpYyBpbnQgZ2V0TGZkbnIoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLmxmZG5yOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNl
dExmZG5yKGludCBsZmRucikgeworICAgICAgICB0aGlzLmxmZG5yID0zRCBsZmRucjsKKyAgICB9
CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJJU1RESUdJVEFMIiwgbnVsbGFibGU9M0RmYWxzZSwg
cHJlY2lzaW9uPTNEMSwgc2NhbGU9M0Q9CjApCisgICAgcHVibGljIGJvb2xlYW4gaXNJc3RkaWdp
dGFsKCkgeworICAgICAgICByZXR1cm4gdGhpcy5pc3RkaWdpdGFsOworICAgIH0KKworICAgIHB1
YmxpYyB2b2lkIHNldElzdGRpZ2l0YWwoYm9vbGVhbiBpc3RkaWdpdGFsKSB7CisgICAgICAgIHRo
aXMuaXN0ZGlnaXRhbCA9M0QgaXN0ZGlnaXRhbDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFt
ZT0zRCJQRkFEIiwgbGVuZ3RoPTNENTEyKQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0UGZhZCgpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMucGZhZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRQ
ZmFkKFN0cmluZyBwZmFkKSB7CisgICAgICAgIHRoaXMucGZhZCA9M0QgcGZhZDsKKyAgICB9CisK
KworICAgIEBDb2x1bW4obmFtZT0zRCJTVEFORE9SVCIsIGxlbmd0aD0zRDUwKQorICAgIHB1Ymxp
YyBTdHJpbmcgZ2V0U3RhbmRvcnQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnN0YW5kb3J0Owor
ICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFN0YW5kb3J0KFN0cmluZyBzdGFuZG9ydCkgewor
ICAgICAgICB0aGlzLnN0YW5kb3J0ID0zRCBzdGFuZG9ydDsKKyAgICB9CisKKworICAgIEBDb2x1
bW4obmFtZT0zRCJNRURJVU0iLCBsZW5ndGg9M0Q1MCkKKyAgICBwdWJsaWMgU3RyaW5nIGdldE1l
ZGl1bSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubWVkaXVtOworICAgIH0KKworICAgIHB1Ymxp
YyB2b2lkIHNldE1lZGl1bShTdHJpbmcgbWVkaXVtKSB7CisgICAgICAgIHRoaXMubWVkaXVtID0z
RCBtZWRpdW07CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiTUVEUEZBRCIsIGxlbmd0
aD0zRDUwKQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0TWVkcGZhZCgpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMubWVkcGZhZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNZWRwZmFkKFN0cmlu
ZyBtZWRwZmFkKSB7CisgICAgICAgIHRoaXMubWVkcGZhZCA9M0QgbWVkcGZhZDsKKyAgICB9CisK
KworICAgIEBDb2x1bW4obmFtZT0zRCJCRU1FUktVTkciLCBsZW5ndGg9M0QyNDApCisgICAgcHVi
bGljIFN0cmluZyBnZXRCZW1lcmt1bmcoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJlbWVya3Vu
ZzsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRCZW1lcmt1bmcoU3RyaW5nIGJlbWVya3Vu
ZykgeworICAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOworICAgIH0KKworCisg
ICAgQENvbHVtbihuYW1lPTNEIlRZUEtMRUlOIiwgbGVuZ3RoPTNEOCkKKyAgICBwdWJsaWMgU3Ry
aW5nIGdldFR5cGtsZWluKCkgeworICAgICAgICByZXR1cm4gdGhpcy50eXBrbGVpbjsKKyAgICB9
CisKKyAgICBwdWJsaWMgdm9pZCBzZXRUeXBrbGVpbihTdHJpbmcgdHlwa2xlaW4pIHsKKyAgICAg
ICAgdGhpcy50eXBrbGVpbiA9M0QgdHlwa2xlaW47CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5h
bWU9M0QiVFlQTUlUVEVMIiwgbGVuZ3RoPTNEOCkKKyAgICBwdWJsaWMgU3RyaW5nIGdldFR5cG1p
dHRlbCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudHlwbWl0dGVsOworICAgIH0KKworICAgIHB1
YmxpYyB2b2lkIHNldFR5cG1pdHRlbChTdHJpbmcgdHlwbWl0dGVsKSB7CisgICAgICAgIHRoaXMu
dHlwbWl0dGVsID0zRCB0eXBtaXR0ZWw7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0Qi
VFlQR1JPU1MiLCBsZW5ndGg9M0Q4KQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0VHlwZ3Jvc3MoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLnR5cGdyb3NzOworICAgIH0KKworICAgIHB1YmxpYyB2b2lk
IHNldFR5cGdyb3NzKFN0cmluZyB0eXBncm9zcykgeworICAgICAgICB0aGlzLnR5cGdyb3NzID0z
RCB0eXBncm9zczsKKyAgICB9Cit9CmRpZmYgLXIgYmM0ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4
YSBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZlci9zZWRkYi9t
b2RlbC9HZXdhZXNzZXIuamF2YQotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3
MCArMDAwMAorKysgYi9iYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2
ZXIvc2VkZGIvbW9kZWwvR2V3YWVzc2VyLmo9CmF2YQlNb24gQXByIDI5IDExOjMzOjAxIDIwMTMg
KzAyMDAKQEAgLTAsMCArMSwxNDcgQEAKKy8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAx
MyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCisgKiBTb2Z0
d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgKKyAqCisgKiBUaGlzIGZpbGUgaXMg
RnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49M0R2Myk9MjAKKyAqIGFuZCBjb21l
cyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUKKyAqIGRvY3VtZW50
YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy49MjAKKyAq
LworCitwYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnNlZGRiLm1vZGVsOworLy8gR2VuZXJhdGVk
IDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQorCisKK2lt
cG9ydCBqYXZhLm1hdGguQmlnRGVjaW1hbDsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKK2lt
cG9ydCBqYXZhLnV0aWwuU2V0OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2lt
cG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2Uu
RmV0Y2hUeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOworaW1wb3J0IGphdmF4LnBl
cnNpc3RlbmNlLk9uZVRvTWFueTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKK2lt
cG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5VbmlxdWVDb25zdHJhaW50OworCisvKioKKyAqIEdld2Fl
c3NlciBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKKyAqLworQEVudGl0eQorQFRhYmxlKG5hbWU9M0Qi
R0VXQUVTU0VSIgorICAgICxzY2hlbWE9M0QiU0VEREIiCisgICAgLCB1bmlxdWVDb25zdHJhaW50
cyA9M0QgQFVuaXF1ZUNvbnN0cmFpbnQoY29sdW1uTmFtZXM9M0QiTkFNRSIpCispCitwdWJsaWMg
Y2xhc3MgR2V3YWVzc2VyICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKKworCisg
ICAgIHByaXZhdGUgbG9uZyBnZXdhZXNzZXJpZDsKKyAgICAgcHJpdmF0ZSBTdHJpbmcgbmFtZTsK
KyAgICAgcHJpdmF0ZSBTdHJpbmcga2VubnVuZzsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGxh
ZW5nZTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGVpbnp1Z3NnZWJpZXQ7CisgICAgIHByaXZh
dGUgU3RyaW5nIGJlbWVya3VuZzsKKyAgICAgcHJpdmF0ZSBTZXQ8QmV6dWdzcGVnZWw+IGJlenVn
c3BlZ2VscyA9M0QgbmV3IEhhc2hTZXQ8QmV6dWdzcGVnZWw+KDApOworICAgICBwcml2YXRlIFNl
dDxTdGF0aW9uPiBzdGF0aW9ucyA9M0QgbmV3IEhhc2hTZXQ8U3RhdGlvbj4oMCk7CisKKyAgICBw
dWJsaWMgR2V3YWVzc2VyKCkgeworICAgIH0KKworICAgIHB1YmxpYyBHZXdhZXNzZXIobG9uZyBn
ZXdhZXNzZXJpZCwgU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgdGhpcy5nZXdhZXNzZXJpZCA9M0Qg
Z2V3YWVzc2VyaWQ7CisgICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKKyAgICB9CisgICAgcHVi
bGljIEdld2Flc3Nlcihsb25nIGdld2Flc3NlcmlkLCBTdHJpbmcgbmFtZSwgU3RyaW5nIGtlbm51
bmcsIEJpZ0RlYz0KaW1hbCBsYWVuZ2UsIEJpZ0RlY2ltYWwgZWluenVnc2dlYmlldCwgU3RyaW5n
IGJlbWVya3VuZywgU2V0PEJlenVnc3BlZ2VsPiBiPQplenVnc3BlZ2VscywgU2V0PFN0YXRpb24+
IHN0YXRpb25zKSB7CisgICAgICAgdGhpcy5nZXdhZXNzZXJpZCA9M0QgZ2V3YWVzc2VyaWQ7Cisg
ICAgICAgdGhpcy5uYW1lID0zRCBuYW1lOworICAgICAgIHRoaXMua2VubnVuZyA9M0Qga2VubnVu
ZzsKKyAgICAgICB0aGlzLmxhZW5nZSA9M0QgbGFlbmdlOworICAgICAgIHRoaXMuZWluenVnc2dl
YmlldCA9M0QgZWluenVnc2dlYmlldDsKKyAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJr
dW5nOworICAgICAgIHRoaXMuYmV6dWdzcGVnZWxzID0zRCBiZXp1Z3NwZWdlbHM7CisgICAgICAg
dGhpcy5zdGF0aW9ucyA9M0Qgc3RhdGlvbnM7CisgICAgfQorCisgICAgIEBJZAorCisKKyAgICBA
Q29sdW1uKG5hbWU9M0QiR0VXQUVTU0VSSUQiLCB1bmlxdWU9M0R0cnVlLCBudWxsYWJsZT0zRGZh
bHNlLCBwcmVjaXNpPQpvbj0zRDExLCBzY2FsZT0zRDApCisgICAgcHVibGljIGxvbmcgZ2V0R2V3
YWVzc2VyaWQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmdld2Flc3NlcmlkOworICAgIH0KKwor
ICAgIHB1YmxpYyB2b2lkIHNldEdld2Flc3NlcmlkKGxvbmcgZ2V3YWVzc2VyaWQpIHsKKyAgICAg
ICAgdGhpcy5nZXdhZXNzZXJpZCA9M0QgZ2V3YWVzc2VyaWQ7CisgICAgfQorCisKKyAgICBAQ29s
dW1uKG5hbWU9M0QiTkFNRSIsIHVuaXF1ZT0zRHRydWUsIG51bGxhYmxlPTNEZmFsc2UsIGxlbmd0
aD0zRDIwKQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMubmFtZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBuYW1lKSB7
CisgICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFt
ZT0zRCJLRU5OVU5HIiwgbGVuZ3RoPTNEMTEpCisgICAgcHVibGljIFN0cmluZyBnZXRLZW5udW5n
KCkgeworICAgICAgICByZXR1cm4gdGhpcy5rZW5udW5nOworICAgIH0KKworICAgIHB1YmxpYyB2
b2lkIHNldEtlbm51bmcoU3RyaW5nIGtlbm51bmcpIHsKKyAgICAgICAgdGhpcy5rZW5udW5nID0z
RCBrZW5udW5nOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkxBRU5HRSIsIHByZWNp
c2lvbj0zRDcsIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRMYWVuZ2UoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLmxhZW5nZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBz
ZXRMYWVuZ2UoQmlnRGVjaW1hbCBsYWVuZ2UpIHsKKyAgICAgICAgdGhpcy5sYWVuZ2UgPTNEIGxh
ZW5nZTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJFSU5aVUdTR0VCSUVUIiwgcHJl
Y2lzaW9uPTNEMTApCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RWluenVnc2dlYmlldCgpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuZWluenVnc2dlYmlldDsKKyAgICB9CisKKyAgICBwdWJsaWMg
dm9pZCBzZXRFaW56dWdzZ2ViaWV0KEJpZ0RlY2ltYWwgZWluenVnc2dlYmlldCkgeworICAgICAg
ICB0aGlzLmVpbnp1Z3NnZWJpZXQgPTNEIGVpbnp1Z3NnZWJpZXQ7CisgICAgfQorCisKKyAgICBA
Q29sdW1uKG5hbWU9M0QiQkVNRVJLVU5HIiwgbGVuZ3RoPTNEMjQwKQorICAgIHB1YmxpYyBTdHJp
bmcgZ2V0QmVtZXJrdW5nKCkgeworICAgICAgICByZXR1cm4gdGhpcy5iZW1lcmt1bmc7CisgICAg
fQorCisgICAgcHVibGljIHZvaWQgc2V0QmVtZXJrdW5nKFN0cmluZyBiZW1lcmt1bmcpIHsKKyAg
ICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKKyAgICB9CisKK0BPbmVUb01hbnko
ZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSwgbWFwcGVkQnk9M0QiZ2V3YWVzc2VyIikKKyAgICBwdWJs
aWMgU2V0PEJlenVnc3BlZ2VsPiBnZXRCZXp1Z3NwZWdlbHMoKSB7CisgICAgICAgIHJldHVybiB0
aGlzLmJlenVnc3BlZ2VsczsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRCZXp1Z3NwZWdl
bHMoU2V0PEJlenVnc3BlZ2VsPiBiZXp1Z3NwZWdlbHMpIHsKKyAgICAgICAgdGhpcy5iZXp1Z3Nw
ZWdlbHMgPTNEIGJlenVnc3BlZ2VsczsKKyAgICB9CisKK0BPbmVUb01hbnkoZmV0Y2g9M0RGZXRj
aFR5cGUuTEFaWSwgbWFwcGVkQnk9M0QiZ2V3YWVzc2VyIikKKyAgICBwdWJsaWMgU2V0PFN0YXRp
b24+IGdldFN0YXRpb25zKCkgeworICAgICAgICByZXR1cm4gdGhpcy5zdGF0aW9uczsKKyAgICB9
CisKKyAgICBwdWJsaWMgdm9pZCBzZXRTdGF0aW9ucyhTZXQ8U3RhdGlvbj4gc3RhdGlvbnMpIHsK
KyAgICAgICAgdGhpcy5zdGF0aW9ucyA9M0Qgc3RhdGlvbnM7CisgICAgfQorCisKKworCit9CisK
KwpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9q
YXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMvcml2ZXIvc2VkZGIvbW9kZWwvR2ZhZW5nZXIuamF2YQot
LS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9iYWNrZW5k
L3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvR2ZhZW5n
ZXIuamE9CnZhCU1vbiBBcHIgMjkgMTE6MzM6MDEgMjAxMyArMDIwMApAQCAtMCwwICsxLDEzMyBA
QAorLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1D
Mz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKKyAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IElu
dGV2YXRpb24gR21iSAorICoKKyAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRo
ZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAorICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBX
QVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQorICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZl
NEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAorICovCisKK3BhY2thZ2Ugb3JnLmRpdmU0
ZWxlbWVudHMuc2VkZGIubW9kZWw7CisvLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBi
eSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCisKKworaW1wb3J0IGphdmEubWF0aC5CaWdEZWNp
bWFsOworaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OworaW1wb3J0IGphdmEudXRpbC5TZXQ7Citp
bXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNl
LkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2
YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuT25lVG9NYW55Owor
aW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNl
LlVuaXF1ZUNvbnN0cmFpbnQ7CisKKy8qKgorICogR2ZhZW5nZXIgZ2VuZXJhdGVkIGJ5IGhibTJq
YXZhCisgKi8KK0BFbnRpdHkKK0BUYWJsZShuYW1lPTNEIkdGQUVOR0VSIgorICAgICxzY2hlbWE9
M0QiU0VEREIiCisgICAgLCB1bmlxdWVDb25zdHJhaW50cyA9M0QgQFVuaXF1ZUNvbnN0cmFpbnQo
Y29sdW1uTmFtZXM9M0QiTkFNRSIpCispCitwdWJsaWMgY2xhc3MgR2ZhZW5nZXIgIGltcGxlbWVu
dHMgamF2YS5pby5TZXJpYWxpemFibGUgeworCisKKyAgICAgcHJpdmF0ZSBsb25nIGdmYWVuZ2Vy
aWQ7CisgICAgIHByaXZhdGUgYm9vbGVhbiBpc3Rha3RpdjsKKyAgICAgcHJpdmF0ZSBTdHJpbmcg
bmFtZTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGJyZWl0ZTsKKyAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIG1hc2NoZW53ZWl0ZTsKKyAgICAgcHJpdmF0ZSBTdHJpbmcgYmVtZXJrdW5nOworICAg
ICBwcml2YXRlIFNldDxNZXNzdW5nPiBtZXNzdW5ncyA9M0QgbmV3IEhhc2hTZXQ8TWVzc3VuZz4o
MCk7CisKKyAgICBwdWJsaWMgR2ZhZW5nZXIoKSB7CisgICAgfQorCisgICAgcHVibGljIEdmYWVu
Z2VyKGxvbmcgZ2ZhZW5nZXJpZCwgYm9vbGVhbiBpc3Rha3RpdiwgU3RyaW5nIG5hbWUsIEJpZ0Rl
Yz0KaW1hbCBicmVpdGUsIEJpZ0RlY2ltYWwgbWFzY2hlbndlaXRlKSB7CisgICAgICAgIHRoaXMu
Z2ZhZW5nZXJpZCA9M0QgZ2ZhZW5nZXJpZDsKKyAgICAgICAgdGhpcy5pc3Rha3RpdiA9M0QgaXN0
YWt0aXY7CisgICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKKyAgICAgICAgdGhpcy5icmVpdGUg
PTNEIGJyZWl0ZTsKKyAgICAgICAgdGhpcy5tYXNjaGVud2VpdGUgPTNEIG1hc2NoZW53ZWl0ZTsK
KyAgICB9CisgICAgcHVibGljIEdmYWVuZ2VyKGxvbmcgZ2ZhZW5nZXJpZCwgYm9vbGVhbiBpc3Rh
a3RpdiwgU3RyaW5nIG5hbWUsIEJpZ0RlYz0KaW1hbCBicmVpdGUsIEJpZ0RlY2ltYWwgbWFzY2hl
bndlaXRlLCBTdHJpbmcgYmVtZXJrdW5nLCBTZXQ8TWVzc3VuZz4gbWVzc3VuPQpncykgeworICAg
ICAgIHRoaXMuZ2ZhZW5nZXJpZCA9M0QgZ2ZhZW5nZXJpZDsKKyAgICAgICB0aGlzLmlzdGFrdGl2
ID0zRCBpc3Rha3RpdjsKKyAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7CisgICAgICAgdGhpcy5i
cmVpdGUgPTNEIGJyZWl0ZTsKKyAgICAgICB0aGlzLm1hc2NoZW53ZWl0ZSA9M0QgbWFzY2hlbndl
aXRlOworICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7CisgICAgICAgdGhpcy5t
ZXNzdW5ncyA9M0QgbWVzc3VuZ3M7CisgICAgfQorCisgICAgIEBJZAorCisKKyAgICBAQ29sdW1u
KG5hbWU9M0QiR0ZBRU5HRVJJRCIsIHVuaXF1ZT0zRHRydWUsIG51bGxhYmxlPTNEZmFsc2UsIHBy
ZWNpc2lvPQpuPTNEMTEsIHNjYWxlPTNEMCkKKyAgICBwdWJsaWMgbG9uZyBnZXRHZmFlbmdlcmlk
KCkgeworICAgICAgICByZXR1cm4gdGhpcy5nZmFlbmdlcmlkOworICAgIH0KKworICAgIHB1Ymxp
YyB2b2lkIHNldEdmYWVuZ2VyaWQobG9uZyBnZmFlbmdlcmlkKSB7CisgICAgICAgIHRoaXMuZ2Zh
ZW5nZXJpZCA9M0QgZ2ZhZW5nZXJpZDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJJ
U1RBS1RJViIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDEsIHNjYWxlPTNEMCkKKyAg
ICBwdWJsaWMgYm9vbGVhbiBpc0lzdGFrdGl2KCkgeworICAgICAgICByZXR1cm4gdGhpcy5pc3Rh
a3RpdjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRJc3Rha3Rpdihib29sZWFuIGlzdGFr
dGl2KSB7CisgICAgICAgIHRoaXMuaXN0YWt0aXYgPTNEIGlzdGFrdGl2OworICAgIH0KKworCisg
ICAgQENvbHVtbihuYW1lPTNEIk5BTUUiLCB1bmlxdWU9M0R0cnVlLCBudWxsYWJsZT0zRGZhbHNl
LCBsZW5ndGg9M0QzMCkKKyAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLm5hbWU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcg
bmFtZSkgeworICAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7CisgICAgfQorCisKKyAgICBAQ29s
dW1uKG5hbWU9M0QiQlJFSVRFIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNENiwgc2Nh
bGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEJyZWl0ZSgpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuYnJlaXRlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEJyZWl0ZShCaWdE
ZWNpbWFsIGJyZWl0ZSkgeworICAgICAgICB0aGlzLmJyZWl0ZSA9M0QgYnJlaXRlOworICAgIH0K
KworCisgICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRU5XRUlURSIsIG51bGxhYmxlPTNEZmFsc2Us
IHByZWNpc2lvbj0zRDcsIHNjYWxlPQo9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1h
c2NoZW53ZWl0ZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlbndlaXRlOworICAgIH0K
KworICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZW53ZWl0ZShCaWdEZWNpbWFsIG1hc2NoZW53ZWl0
ZSkgeworICAgICAgICB0aGlzLm1hc2NoZW53ZWl0ZSA9M0QgbWFzY2hlbndlaXRlOworICAgIH0K
KworCisgICAgQENvbHVtbihuYW1lPTNEIkJFTUVSS1VORyIsIGxlbmd0aD0zRDI0MCkKKyAgICBw
dWJsaWMgU3RyaW5nIGdldEJlbWVya3VuZygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYmVtZXJr
dW5nOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEJlbWVya3VuZyhTdHJpbmcgYmVtZXJr
dW5nKSB7CisgICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7CisgICAgfQorCitA
T25lVG9NYW55KGZldGNoPTNERmV0Y2hUeXBlLkxBWlksIG1hcHBlZEJ5PTNEImdmYWVuZ2VyIikK
KyAgICBwdWJsaWMgU2V0PE1lc3N1bmc+IGdldE1lc3N1bmdzKCkgeworICAgICAgICByZXR1cm4g
dGhpcy5tZXNzdW5nczsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNZXNzdW5ncyhTZXQ8
TWVzc3VuZz4gbWVzc3VuZ3MpIHsKKyAgICAgICAgdGhpcy5tZXNzdW5ncyA9M0QgbWVzc3VuZ3M7
CisgICAgfQorfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9z
cmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMvcml2ZXIvc2VkZGIvbW9kZWwvR2xvdGxp
bmtzLmphdmEKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysr
IGIvYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnRzL3JpdmVyL3NlZGRiL21v
ZGVsL0dsb3RsaW5rcy5qPQphdmEJTW9uIEFwciAyOSAxMTozMzowMSAyMDEzICswMjAwCkBAIC0w
LDAgKzEsODAgQEAKKy8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNh
bnN0YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCisgKiBTb2Z0d2FyZSBlbmdpbmVl
cmluZyBieSBJbnRldmF0aW9uIEdtYkgKKyAqCisgKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2Fy
ZSB1bmRlciB0aGUgR05VIEFHUEwgKD49M0R2Myk9MjAKKyAqIGFuZCBjb21lcyB3aXRoIEFCU09M
VVRFTFkgTk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUKKyAqIGRvY3VtZW50YXRpb24gY29taW5n
IHdpdGggRGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy49MjAKKyAqLworCitwYWNrYWdl
IG9yZy5kaXZlNGVsZW1lbnRzLnNlZGRiLm1vZGVsOworLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIg
MTE6MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQorCisKK2ltcG9ydCBqYXZheC5w
ZXJzaXN0ZW5jZS5BdHRyaWJ1dGVPdmVycmlkZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5B
dHRyaWJ1dGVPdmVycmlkZXM7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1w
b3J0IGphdmF4LnBlcnNpc3RlbmNlLkVtYmVkZGVkSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVu
Y2UuRW50aXR5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOworCisvKioKKyAqIEds
b3RsaW5rcyBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKKyAqLworQEVudGl0eQorQFRhYmxlKG5hbWU9
M0QiR0xPVExJTktTIgorICAgICxzY2hlbWE9M0QiU0VEREIiCispCitwdWJsaWMgY2xhc3MgR2xv
dGxpbmtzICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKKworCisgICAgIHByaXZh
dGUgR2xvdGxpbmtzSWQgaWQ7CisKKyAgICBwdWJsaWMgR2xvdGxpbmtzKCkgeworICAgIH0KKwor
ICAgIHB1YmxpYyBHbG90bGlua3MoR2xvdGxpbmtzSWQgaWQpIHsKKyAgICAgICB0aGlzLmlkID0z
RCBpZDsKKyAgICB9CisKKyAgICAgQEVtYmVkZGVkSWQKKworCisgICAgQEF0dHJpYnV0ZU92ZXJy
aWRlcyggeworICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJnbG90cmVjaHRlaWQi
LCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0Q9CiJHTE9UUkVDSFRFSUQiLCBudWxsYWJsZT0zRGZh
bHNlLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QwKSApLAorICAgICAgICBAQXR0cmlidXRlT3Zl
cnJpZGUobmFtZT0zRCJtZXNzdW5naWQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUU9ClNT
VU5HSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QwKSApLAor
ICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ1ZmVyYWJzdCIsIGNvbHVtbj0zREBD
b2x1bW4obmFtZT0zRCJVRkU9ClJBQlNUIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNE
OCwgc2NhbGU9M0QzKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ0Z2Vz
Y2hpZWJlIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlQ9CkdFU0NISUVCRSIsIHByZWNpc2lv
bj0zRDgsIHNjYWxlPTNEMykgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qi
ZG0iLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiRE0iLCBwcmVjPQppc2lvbj0zRDcsIHNjYWxl
PTNENCkgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qic2siLCBjb2x1bW49
M0RAQ29sdW1uKG5hbWU9M0QiU0siLCBwcmVjPQppc2lvbj0zRDgsIHNjYWxlPTNEMykgKSwKKyAg
ICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qic28iLCBjb2x1bW49M0RAQ29sdW1uKG5h
bWU9M0QiU08iLCBwcmVjPQppc2lvbj0zRDgsIHNjYWxlPTNEMykgKSwKKyAgICAgICAgQEF0dHJp
YnV0ZU92ZXJyaWRlKG5hbWU9M0QidSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJVIiwgcHJl
Y2lzPQppb249M0Q4LCBzY2FsZT0zRDMpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShu
YW1lPTNEImQ5MCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJEOTAiLCBwcj0KZWNpc2lvbj0z
RDcsIHNjYWxlPTNENCkgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZDg0
IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkQ4NCIsIHByPQplY2lzaW9uPTNENywgc2NhbGU9
M0Q0KSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkODAiLCBjb2x1bW49
M0RAQ29sdW1uKG5hbWU9M0QiRDgwIiwgcHI9CmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCisg
ICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImQ3NSIsIGNvbHVtbj0zREBDb2x1bW4o
bmFtZT0zRCJENzUiLCBwcj0KZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKKyAgICAgICAgQEF0
dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZDcwIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkQ3
MCIsIHByPQplY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAorICAgICAgICBAQXR0cmlidXRlT3Zl
cnJpZGUobmFtZT0zRCJkNjAiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiRDYwIiwgcHI9CmVj
aXNpb249M0Q3LCBzY2FsZT0zRDQpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1l
PTNEImQ1MCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJENTAiLCBwcj0KZWNpc2lvbj0zRDcs
IHNjYWxlPTNENCkgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZDQwIiwg
Y29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkQ0MCIsIHByPQplY2lzaW9uPTNENywgc2NhbGU9M0Q0
KSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkMzAiLCBjb2x1bW49M0RA
Q29sdW1uKG5hbWU9M0QiRDMwIiwgcHI9CmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCisgICAg
ICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImQyNSIsIGNvbHVtbj0zREBDb2x1bW4obmFt
ZT0zRCJEMjUiLCBwcj0KZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKKyAgICAgICAgQEF0dHJp
YnV0ZU92ZXJyaWRlKG5hbWU9M0QiZDIwIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkQyMCIs
IHByPQplY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJp
ZGUobmFtZT0zRCJkMTYiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiRDE2IiwgcHI9CmVjaXNp
b249M0Q3LCBzY2FsZT0zRDQpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNE
ImQxMCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJEMTAiLCBwcj0KZWNpc2lvbj0zRDcsIHNj
YWxlPTNENCkgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZG1pbiIsIGNv
bHVtbj0zREBDb2x1bW4obmFtZT0zRCJETUlOIiwgPQpwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQp
ICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImR1cmNoZG1pbiIsIGNvbHVt
bj0zREBDb2x1bW4obmFtZT0zRCJEVT0KUkNIRE1JTiIsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNE
MykgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZG1heCIsIGNvbHVtbj0z
REBDb2x1bW4obmFtZT0zRCJETUFYIiwgPQpwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCisg
ICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImR1cmNoZG1heCIsIGNvbHVtbj0zREBD
b2x1bW4obmFtZT0zRCJEVT0KUkNIRE1BWCIsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNEMykgKSwK
KyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qic3RkYWJ3IiwgY29sdW1uPTNEQENv
bHVtbihuYW1lPTNEIlNUREFCPQpXIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKSApLAorICAg
ICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJzdGRmZWhsZXIiLCBjb2x1bW49M0RAQ29s
dW1uKG5hbWU9M0QiU1Q9CkRGRUhMRVIiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpICksCisg
ICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImJlbWVya3VuZyIsIGNvbHVtbj0zREBD
b2x1bW4obmFtZT0zRCJCRT0KTUVSS1VORyIsIGxlbmd0aD0zRDI0MCkgKSwKKyAgICAgICAgQEF0
dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QidWZlcmFibGlua3MiLCBjb2x1bW49M0RAQ29sdW1uKG5h
bWU9M0QiPQpVRkVSQUJMSU5LUyIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykgKSwKKyAgICAg
ICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibGlua3NhYnN0IiwgY29sdW1uPTNEQENvbHVt
bihuYW1lPTNEIkxJPQpOS1NBQlNUIiwgcHJlY2lzaW9uPTNEMjIsIHNjYWxlPTNEMCkgKSB9ICkK
KyAgICBwdWJsaWMgR2xvdGxpbmtzSWQgZ2V0SWQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmlk
OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldElkKEdsb3RsaW5rc0lkIGlkKSB7CisgICAg
ICAgIHRoaXMuaWQgPTNEIGlkOworICAgIH0KK30KZGlmZiAtciBiYzRlMWJmMjYyMjcgLXIgMWU2
OGVjYTI2YjhhIGJhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50PQpzL3JpdmVy
L3NlZGRiL21vZGVsL0dsb3RsaW5rc0lkLmphdmEKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAw
OjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVs
ZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVsL0dsb3RsaW5rc0lkPQouamF2YQlNb24gQXByIDI5IDEx
OjMzOjAxIDIwMTMgKzAyMDAKQEAgLTAsMCArMSw0NzIgQEAKKy8qIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1
bmRlCisgKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgKKyAqCisgKiBU
aGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49M0R2Myk9MjAK
KyAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUK
KyAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0
YWlscy49MjAKKyAqLworCitwYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnNlZGRiLm1vZGVsOwor
Ly8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4w
LkNSMQorCisKK2ltcG9ydCBqYXZhLm1hdGguQmlnRGVjaW1hbDsKK2ltcG9ydCBqYXZheC5wZXJz
aXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW1iZWRkYWJsZTsKKwor
LyoqCisgKiBHbG90bGlua3NJZCBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKKyAqLworQEVtYmVkZGFi
bGUKK3B1YmxpYyBjbGFzcyBHbG90bGlua3NJZCAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6
YWJsZSB7CisKKworICAgICBwcml2YXRlIGxvbmcgZ2xvdHJlY2h0ZWlkOworICAgICBwcml2YXRl
IGxvbmcgbWVzc3VuZ2lkOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdWZlcmFic3Q7CisgICAg
IHByaXZhdGUgQmlnRGVjaW1hbCB0Z2VzY2hpZWJlOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
ZG07CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzazsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IHNvOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IGQ5MDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQ4NDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNp
bWFsIGQ4MDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQ3NTsKKyAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIGQ3MDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQ2MDsKKyAgICAgcHJpdmF0ZSBC
aWdEZWNpbWFsIGQ1MDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQ0MDsKKyAgICAgcHJpdmF0
ZSBCaWdEZWNpbWFsIGQzMDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQyNTsKKyAgICAgcHJp
dmF0ZSBCaWdEZWNpbWFsIGQyMDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQxNjsKKyAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIGQxMDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGRtaW47Cisg
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkdXJjaGRtaW47CisgICAgIHByaXZhdGUgQmlnRGVjaW1h
bCBkbWF4OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZHVyY2hkbWF4OworICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgc3RkYWJ3OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgc3RkZmVobGVyOwor
ICAgICBwcml2YXRlIFN0cmluZyBiZW1lcmt1bmc7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCB1
ZmVyYWJsaW5rczsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGxpbmtzYWJzdDsKKworICAgIHB1
YmxpYyBHbG90bGlua3NJZCgpIHsKKyAgICB9CisKKworICAgIHB1YmxpYyBHbG90bGlua3NJZChs
b25nIGdsb3RyZWNodGVpZCwgbG9uZyBtZXNzdW5naWQsIEJpZ0RlY2ltYWwgdWZlcmE9CmJzdCkg
eworICAgICAgICB0aGlzLmdsb3RyZWNodGVpZCA9M0QgZ2xvdHJlY2h0ZWlkOworICAgICAgICB0
aGlzLm1lc3N1bmdpZCA9M0QgbWVzc3VuZ2lkOworICAgICAgICB0aGlzLnVmZXJhYnN0ID0zRCB1
ZmVyYWJzdDsKKyAgICB9CisgICAgcHVibGljIEdsb3RsaW5rc0lkKGxvbmcgZ2xvdHJlY2h0ZWlk
LCBsb25nIG1lc3N1bmdpZCwgQmlnRGVjaW1hbCB1ZmVyYT0KYnN0LCBCaWdEZWNpbWFsIHRnZXNj
aGllYmUsIEJpZ0RlY2ltYWwgZG0sIEJpZ0RlY2ltYWwgc2ssIEJpZ0RlY2ltYWwgc28sIEJpPQpn
RGVjaW1hbCB1LCBCaWdEZWNpbWFsIGQ5MCwgQmlnRGVjaW1hbCBkODQsIEJpZ0RlY2ltYWwgZDgw
LCBCaWdEZWNpbWFsIGQ3NSw9CiBCaWdEZWNpbWFsIGQ3MCwgQmlnRGVjaW1hbCBkNjAsIEJpZ0Rl
Y2ltYWwgZDUwLCBCaWdEZWNpbWFsIGQ0MCwgQmlnRGVjaW1hbD0KIGQzMCwgQmlnRGVjaW1hbCBk
MjUsIEJpZ0RlY2ltYWwgZDIwLCBCaWdEZWNpbWFsIGQxNiwgQmlnRGVjaW1hbCBkMTAsIEJpZ0Rl
PQpjaW1hbCBkbWluLCBCaWdEZWNpbWFsIGR1cmNoZG1pbiwgQmlnRGVjaW1hbCBkbWF4LCBCaWdE
ZWNpbWFsIGR1cmNoZG1heCwgQmk9CmdEZWNpbWFsIHN0ZGFidywgQmlnRGVjaW1hbCBzdGRmZWhs
ZXIsIFN0cmluZyBiZW1lcmt1bmcsIEJpZ0RlY2ltYWwgdWZlcmFibD0KaW5rcywgQmlnRGVjaW1h
bCBsaW5rc2Fic3QpIHsKKyAgICAgICB0aGlzLmdsb3RyZWNodGVpZCA9M0QgZ2xvdHJlY2h0ZWlk
OworICAgICAgIHRoaXMubWVzc3VuZ2lkID0zRCBtZXNzdW5naWQ7CisgICAgICAgdGhpcy51ZmVy
YWJzdCA9M0QgdWZlcmFic3Q7CisgICAgICAgdGhpcy50Z2VzY2hpZWJlID0zRCB0Z2VzY2hpZWJl
OworICAgICAgIHRoaXMuZG0gPTNEIGRtOworICAgICAgIHRoaXMuc2sgPTNEIHNrOworICAgICAg
IHRoaXMuc28gPTNEIHNvOworICAgICAgIHRoaXMudSA9M0QgdTsKKyAgICAgICB0aGlzLmQ5MCA9
M0QgZDkwOworICAgICAgIHRoaXMuZDg0ID0zRCBkODQ7CisgICAgICAgdGhpcy5kODAgPTNEIGQ4
MDsKKyAgICAgICB0aGlzLmQ3NSA9M0QgZDc1OworICAgICAgIHRoaXMuZDcwID0zRCBkNzA7Cisg
ICAgICAgdGhpcy5kNjAgPTNEIGQ2MDsKKyAgICAgICB0aGlzLmQ1MCA9M0QgZDUwOworICAgICAg
IHRoaXMuZDQwID0zRCBkNDA7CisgICAgICAgdGhpcy5kMzAgPTNEIGQzMDsKKyAgICAgICB0aGlz
LmQyNSA9M0QgZDI1OworICAgICAgIHRoaXMuZDIwID0zRCBkMjA7CisgICAgICAgdGhpcy5kMTYg
PTNEIGQxNjsKKyAgICAgICB0aGlzLmQxMCA9M0QgZDEwOworICAgICAgIHRoaXMuZG1pbiA9M0Qg
ZG1pbjsKKyAgICAgICB0aGlzLmR1cmNoZG1pbiA9M0QgZHVyY2hkbWluOworICAgICAgIHRoaXMu
ZG1heCA9M0QgZG1heDsKKyAgICAgICB0aGlzLmR1cmNoZG1heCA9M0QgZHVyY2hkbWF4OworICAg
ICAgIHRoaXMuc3RkYWJ3ID0zRCBzdGRhYnc7CisgICAgICAgdGhpcy5zdGRmZWhsZXIgPTNEIHN0
ZGZlaGxlcjsKKyAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOworICAgICAgIHRo
aXMudWZlcmFibGlua3MgPTNEIHVmZXJhYmxpbmtzOworICAgICAgIHRoaXMubGlua3NhYnN0ID0z
RCBsaW5rc2Fic3Q7CisgICAgfQorCisKKworICAgIEBDb2x1bW4obmFtZT0zRCJHTE9UUkVDSFRF
SUQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9Cj0zRDApCisgICAg
cHVibGljIGxvbmcgZ2V0R2xvdHJlY2h0ZWlkKCkgeworICAgICAgICByZXR1cm4gdGhpcy5nbG90
cmVjaHRlaWQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0R2xvdHJlY2h0ZWlkKGxvbmcg
Z2xvdHJlY2h0ZWlkKSB7CisgICAgICAgIHRoaXMuZ2xvdHJlY2h0ZWlkID0zRCBnbG90cmVjaHRl
aWQ7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiTUVTU1VOR0lEIiwgbnVsbGFibGU9
M0RmYWxzZSwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEPQowKQorICAgIHB1YmxpYyBsb25nIGdl
dE1lc3N1bmdpZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubWVzc3VuZ2lkOworICAgIH0KKwor
ICAgIHB1YmxpYyB2b2lkIHNldE1lc3N1bmdpZChsb25nIG1lc3N1bmdpZCkgeworICAgICAgICB0
aGlzLm1lc3N1bmdpZCA9M0QgbWVzc3VuZ2lkOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1l
PTNEIlVGRVJBQlNUIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0Qz
KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFVmZXJhYnN0KCkgeworICAgICAgICByZXR1cm4g
dGhpcy51ZmVyYWJzdDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVZmVyYWJzdChCaWdE
ZWNpbWFsIHVmZXJhYnN0KSB7CisgICAgICAgIHRoaXMudWZlcmFic3QgPTNEIHVmZXJhYnN0Owor
ICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlRHRVNDSElFQkUiLCBwcmVjaXNpb249M0Q4
LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VGdlc2NoaWViZSgpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMudGdlc2NoaWViZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBz
ZXRUZ2VzY2hpZWJlKEJpZ0RlY2ltYWwgdGdlc2NoaWViZSkgeworICAgICAgICB0aGlzLnRnZXNj
aGllYmUgPTNEIHRnZXNjaGllYmU7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiRE0i
LCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RG0o
KSB7CisgICAgICAgIHJldHVybiB0aGlzLmRtOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNl
dERtKEJpZ0RlY2ltYWwgZG0pIHsKKyAgICAgICAgdGhpcy5kbSA9M0QgZG07CisgICAgfQorCisK
KyAgICBAQ29sdW1uKG5hbWU9M0QiU0siLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCisgICAg
cHVibGljIEJpZ0RlY2ltYWwgZ2V0U2soKSB7CisgICAgICAgIHJldHVybiB0aGlzLnNrOworICAg
IH0KKworICAgIHB1YmxpYyB2b2lkIHNldFNrKEJpZ0RlY2ltYWwgc2spIHsKKyAgICAgICAgdGhp
cy5zayA9M0Qgc2s7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiU08iLCBwcmVjaXNp
b249M0Q4LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0U28oKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLnNvOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFNvKEJpZ0Rl
Y2ltYWwgc28pIHsKKyAgICAgICAgdGhpcy5zbyA9M0Qgc287CisgICAgfQorCisKKyAgICBAQ29s
dW1uKG5hbWU9M0QiVSIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmln
RGVjaW1hbCBnZXRVKCkgeworICAgICAgICByZXR1cm4gdGhpcy51OworICAgIH0KKworICAgIHB1
YmxpYyB2b2lkIHNldFUoQmlnRGVjaW1hbCB1KSB7CisgICAgICAgIHRoaXMudSA9M0QgdTsKKyAg
ICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJEOTAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0z
RDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDkwKCkgeworICAgICAgICByZXR1cm4gdGhp
cy5kOTA7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RDkwKEJpZ0RlY2ltYWwgZDkwKSB7
CisgICAgICAgIHRoaXMuZDkwID0zRCBkOTA7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9
M0QiRDg0IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFs
IGdldEQ4NCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZDg0OworICAgIH0KKworICAgIHB1Ymxp
YyB2b2lkIHNldEQ4NChCaWdEZWNpbWFsIGQ4NCkgeworICAgICAgICB0aGlzLmQ4NCA9M0QgZDg0
OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkQ4MCIsIHByZWNpc2lvbj0zRDcsIHNj
YWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREODAoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLmQ4MDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXREODAoQmlnRGVjaW1hbCBk
ODApIHsKKyAgICAgICAgdGhpcy5kODAgPTNEIGQ4MDsKKyAgICB9CisKKworICAgIEBDb2x1bW4o
bmFtZT0zRCJENzUiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0RDc1KCkgeworICAgICAgICByZXR1cm4gdGhpcy5kNzU7CisgICAgfQorCisgICAg
cHVibGljIHZvaWQgc2V0RDc1KEJpZ0RlY2ltYWwgZDc1KSB7CisgICAgICAgIHRoaXMuZDc1ID0z
RCBkNzU7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiRDcwIiwgcHJlY2lzaW9uPTNE
Nywgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQ3MCgpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuZDcwOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEQ3MChCaWdEZWNp
bWFsIGQ3MCkgeworICAgICAgICB0aGlzLmQ3MCA9M0QgZDcwOworICAgIH0KKworCisgICAgQENv
bHVtbihuYW1lPTNEIkQ2MCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMg
QmlnRGVjaW1hbCBnZXRENjAoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmQ2MDsKKyAgICB9CisK
KyAgICBwdWJsaWMgdm9pZCBzZXRENjAoQmlnRGVjaW1hbCBkNjApIHsKKyAgICAgICAgdGhpcy5k
NjAgPTNEIGQ2MDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJENTAiLCBwcmVjaXNp
b249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDUwKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy5kNTA7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RDUwKEJp
Z0RlY2ltYWwgZDUwKSB7CisgICAgICAgIHRoaXMuZDUwID0zRCBkNTA7CisgICAgfQorCisKKyAg
ICBAQ29sdW1uKG5hbWU9M0QiRDQwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldEQ0MCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZDQwOworICAg
IH0KKworICAgIHB1YmxpYyB2b2lkIHNldEQ0MChCaWdEZWNpbWFsIGQ0MCkgeworICAgICAgICB0
aGlzLmQ0MCA9M0QgZDQwOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkQzMCIsIHBy
ZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREMzAoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLmQzMDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRE
MzAoQmlnRGVjaW1hbCBkMzApIHsKKyAgICAgICAgdGhpcy5kMzAgPTNEIGQzMDsKKyAgICB9CisK
KworICAgIEBDb2x1bW4obmFtZT0zRCJEMjUiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisg
ICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDI1KCkgeworICAgICAgICByZXR1cm4gdGhpcy5kMjU7
CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RDI1KEJpZ0RlY2ltYWwgZDI1KSB7CisgICAg
ICAgIHRoaXMuZDI1ID0zRCBkMjU7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiRDIw
IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQy
MCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZDIwOworICAgIH0KKworICAgIHB1YmxpYyB2b2lk
IHNldEQyMChCaWdEZWNpbWFsIGQyMCkgeworICAgICAgICB0aGlzLmQyMCA9M0QgZDIwOworICAg
IH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkQxNiIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNE
NCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREMTYoKSB7CisgICAgICAgIHJldHVybiB0aGlz
LmQxNjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXREMTYoQmlnRGVjaW1hbCBkMTYpIHsK
KyAgICAgICAgdGhpcy5kMTYgPTNEIGQxNjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0z
RCJEMTAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0RDEwKCkgeworICAgICAgICByZXR1cm4gdGhpcy5kMTA7CisgICAgfQorCisgICAgcHVibGlj
IHZvaWQgc2V0RDEwKEJpZ0RlY2ltYWwgZDEwKSB7CisgICAgICAgIHRoaXMuZDEwID0zRCBkMTA7
CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiRE1JTiIsIHByZWNpc2lvbj0zRDcsIHNj
YWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREbWluKCkgeworICAgICAgICByZXR1
cm4gdGhpcy5kbWluOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldERtaW4oQmlnRGVjaW1h
bCBkbWluKSB7CisgICAgICAgIHRoaXMuZG1pbiA9M0QgZG1pbjsKKyAgICB9CisKKworICAgIEBD
b2x1bW4obmFtZT0zRCJEVVJDSERNSU4iLCBwcmVjaXNpb249M0Q2LCBzY2FsZT0zRDMpCisgICAg
cHVibGljIEJpZ0RlY2ltYWwgZ2V0RHVyY2hkbWluKCkgeworICAgICAgICByZXR1cm4gdGhpcy5k
dXJjaGRtaW47CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RHVyY2hkbWluKEJpZ0RlY2lt
YWwgZHVyY2hkbWluKSB7CisgICAgICAgIHRoaXMuZHVyY2hkbWluID0zRCBkdXJjaGRtaW47Cisg
ICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiRE1BWCIsIHByZWNpc2lvbj0zRDcsIHNjYWxl
PTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREbWF4KCkgeworICAgICAgICByZXR1cm4g
dGhpcy5kbWF4OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldERtYXgoQmlnRGVjaW1hbCBk
bWF4KSB7CisgICAgICAgIHRoaXMuZG1heCA9M0QgZG1heDsKKyAgICB9CisKKworICAgIEBDb2x1
bW4obmFtZT0zRCJEVVJDSERNQVgiLCBwcmVjaXNpb249M0Q2LCBzY2FsZT0zRDMpCisgICAgcHVi
bGljIEJpZ0RlY2ltYWwgZ2V0RHVyY2hkbWF4KCkgeworICAgICAgICByZXR1cm4gdGhpcy5kdXJj
aGRtYXg7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RHVyY2hkbWF4KEJpZ0RlY2ltYWwg
ZHVyY2hkbWF4KSB7CisgICAgICAgIHRoaXMuZHVyY2hkbWF4ID0zRCBkdXJjaGRtYXg7CisgICAg
fQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiU1REQUJXIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9
M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFN0ZGFidygpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuc3RkYWJ3OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFN0ZGFidyhCaWdEZWNp
bWFsIHN0ZGFidykgeworICAgICAgICB0aGlzLnN0ZGFidyA9M0Qgc3RkYWJ3OworICAgIH0KKwor
CisgICAgQENvbHVtbihuYW1lPTNEIlNUREZFSExFUiIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNE
MykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRTdGRmZWhsZXIoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLnN0ZGZlaGxlcjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRTdGRmZWhsZXIo
QmlnRGVjaW1hbCBzdGRmZWhsZXIpIHsKKyAgICAgICAgdGhpcy5zdGRmZWhsZXIgPTNEIHN0ZGZl
aGxlcjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJCRU1FUktVTkciLCBsZW5ndGg9
M0QyNDApCisgICAgcHVibGljIFN0cmluZyBnZXRCZW1lcmt1bmcoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLmJlbWVya3VuZzsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRCZW1lcmt1bmco
U3RyaW5nIGJlbWVya3VuZykgeworICAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5n
OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlVGRVJBQkxJTktTIiwgcHJlY2lzaW9u
PTNEOCwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFVmZXJhYmxpbmtzKCkg
eworICAgICAgICByZXR1cm4gdGhpcy51ZmVyYWJsaW5rczsKKyAgICB9CisKKyAgICBwdWJsaWMg
dm9pZCBzZXRVZmVyYWJsaW5rcyhCaWdEZWNpbWFsIHVmZXJhYmxpbmtzKSB7CisgICAgICAgIHRo
aXMudWZlcmFibGlua3MgPTNEIHVmZXJhYmxpbmtzOworICAgIH0KKworCisgICAgQENvbHVtbihu
YW1lPTNEIkxJTktTQUJTVCIsIHByZWNpc2lvbj0zRDIyLCBzY2FsZT0zRDApCisgICAgcHVibGlj
IEJpZ0RlY2ltYWwgZ2V0TGlua3NhYnN0KCkgeworICAgICAgICByZXR1cm4gdGhpcy5saW5rc2Fi
c3Q7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TGlua3NhYnN0KEJpZ0RlY2ltYWwgbGlu
a3NhYnN0KSB7CisgICAgICAgIHRoaXMubGlua3NhYnN0ID0zRCBsaW5rc2Fic3Q7CisgICAgfQor
CisKKyAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb3RoZXIpIHsKKyAgICAgICAgIGlm
ICggKHRoaXMgPTNEPTNEIG90aGVyICkgKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgIGlmICggKG90
aGVyID0zRD0zRCBudWxsICkgKSByZXR1cm4gZmFsc2U7CisgICAgICAgICBpZiAoICEob3RoZXIg
aW5zdGFuY2VvZiBHbG90bGlua3NJZCkgKSByZXR1cm4gZmFsc2U7CisgICAgICAgICBHbG90bGlu
a3NJZCBjYXN0T3RoZXIgPTNEICggR2xvdGxpbmtzSWQgKSBvdGhlcjsKKworICAgICAgICAgcmV0
dXJuICh0aGlzLmdldEdsb3RyZWNodGVpZCgpPTNEPTNEY2FzdE90aGVyLmdldEdsb3RyZWNodGVp
ZCgpKQorICYmICh0aGlzLmdldE1lc3N1bmdpZCgpPTNEPTNEY2FzdE90aGVyLmdldE1lc3N1bmdp
ZCgpKQorICYmICggKHRoaXMuZ2V0VWZlcmFic3QoKT0zRD0zRGNhc3RPdGhlci5nZXRVZmVyYWJz
dCgpKSB8fCAoIHRoaXMuZ2V0VWZlcmE9CmJzdCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFVm
ZXJhYnN0KCkhPTNEbnVsbCAmJiB0aGlzLmdldFVmZXJhYnN0KCkuZXF1YT0KbHMoY2FzdE90aGVy
LmdldFVmZXJhYnN0KCkpICkgKQorICYmICggKHRoaXMuZ2V0VGdlc2NoaWViZSgpPTNEPTNEY2Fz
dE90aGVyLmdldFRnZXNjaGllYmUoKSkgfHwgKCB0aGlzLmdldFQ9Cmdlc2NoaWViZSgpIT0zRG51
bGwgJiYgY2FzdE90aGVyLmdldFRnZXNjaGllYmUoKSE9M0RudWxsICYmIHRoaXMuZ2V0VGdlc2No
aT0KZWJlKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRUZ2VzY2hpZWJlKCkpICkgKQorICYmICggKHRo
aXMuZ2V0RG0oKT0zRD0zRGNhc3RPdGhlci5nZXREbSgpKSB8fCAoIHRoaXMuZ2V0RG0oKSE9M0Ru
dWxsICYmIGM9CmFzdE90aGVyLmdldERtKCkhPTNEbnVsbCAmJiB0aGlzLmdldERtKCkuZXF1YWxz
KGNhc3RPdGhlci5nZXREbSgpKSApICkKKyAmJiAoICh0aGlzLmdldFNrKCk9M0Q9M0RjYXN0T3Ro
ZXIuZ2V0U2soKSkgfHwgKCB0aGlzLmdldFNrKCkhPTNEbnVsbCAmJiBjPQphc3RPdGhlci5nZXRT
aygpIT0zRG51bGwgJiYgdGhpcy5nZXRTaygpLmVxdWFscyhjYXN0T3RoZXIuZ2V0U2soKSkgKSAp
CisgJiYgKCAodGhpcy5nZXRTbygpPTNEPTNEY2FzdE90aGVyLmdldFNvKCkpIHx8ICggdGhpcy5n
ZXRTbygpIT0zRG51bGwgJiYgYz0KYXN0T3RoZXIuZ2V0U28oKSE9M0RudWxsICYmIHRoaXMuZ2V0
U28oKS5lcXVhbHMoY2FzdE90aGVyLmdldFNvKCkpICkgKQorICYmICggKHRoaXMuZ2V0VSgpPTNE
PTNEY2FzdE90aGVyLmdldFUoKSkgfHwgKCB0aGlzLmdldFUoKSE9M0RudWxsICYmIGNhc3Q9Ck90
aGVyLmdldFUoKSE9M0RudWxsICYmIHRoaXMuZ2V0VSgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0VSgp
KSApICkKKyAmJiAoICh0aGlzLmdldEQ5MCgpPTNEPTNEY2FzdE90aGVyLmdldEQ5MCgpKSB8fCAo
IHRoaXMuZ2V0RDkwKCkhPTNEbnVsbCAmPQomIGNhc3RPdGhlci5nZXREOTAoKSE9M0RudWxsICYm
IHRoaXMuZ2V0RDkwKCkuZXF1YWxzKGNhc3RPdGhlci5nZXREOTAoKSkgKSApCisgJiYgKCAodGhp
cy5nZXREODQoKT0zRD0zRGNhc3RPdGhlci5nZXREODQoKSkgfHwgKCB0aGlzLmdldEQ4NCgpIT0z
RG51bGwgJj0KJiBjYXN0T3RoZXIuZ2V0RDg0KCkhPTNEbnVsbCAmJiB0aGlzLmdldEQ4NCgpLmVx
dWFscyhjYXN0T3RoZXIuZ2V0RDg0KCkpICkgKQorICYmICggKHRoaXMuZ2V0RDgwKCk9M0Q9M0Rj
YXN0T3RoZXIuZ2V0RDgwKCkpIHx8ICggdGhpcy5nZXREODAoKSE9M0RudWxsICY9CiYgY2FzdE90
aGVyLmdldEQ4MCgpIT0zRG51bGwgJiYgdGhpcy5nZXREODAoKS5lcXVhbHMoY2FzdE90aGVyLmdl
dEQ4MCgpKSApICkKKyAmJiAoICh0aGlzLmdldEQ3NSgpPTNEPTNEY2FzdE90aGVyLmdldEQ3NSgp
KSB8fCAoIHRoaXMuZ2V0RDc1KCkhPTNEbnVsbCAmPQomIGNhc3RPdGhlci5nZXRENzUoKSE9M0Ru
dWxsICYmIHRoaXMuZ2V0RDc1KCkuZXF1YWxzKGNhc3RPdGhlci5nZXRENzUoKSkgKSApCisgJiYg
KCAodGhpcy5nZXRENzAoKT0zRD0zRGNhc3RPdGhlci5nZXRENzAoKSkgfHwgKCB0aGlzLmdldEQ3
MCgpIT0zRG51bGwgJj0KJiBjYXN0T3RoZXIuZ2V0RDcwKCkhPTNEbnVsbCAmJiB0aGlzLmdldEQ3
MCgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0RDcwKCkpICkgKQorICYmICggKHRoaXMuZ2V0RDYwKCk9
M0Q9M0RjYXN0T3RoZXIuZ2V0RDYwKCkpIHx8ICggdGhpcy5nZXRENjAoKSE9M0RudWxsICY9CiYg
Y2FzdE90aGVyLmdldEQ2MCgpIT0zRG51bGwgJiYgdGhpcy5nZXRENjAoKS5lcXVhbHMoY2FzdE90
aGVyLmdldEQ2MCgpKSApICkKKyAmJiAoICh0aGlzLmdldEQ1MCgpPTNEPTNEY2FzdE90aGVyLmdl
dEQ1MCgpKSB8fCAoIHRoaXMuZ2V0RDUwKCkhPTNEbnVsbCAmPQomIGNhc3RPdGhlci5nZXRENTAo
KSE9M0RudWxsICYmIHRoaXMuZ2V0RDUwKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRENTAoKSkgKSAp
CisgJiYgKCAodGhpcy5nZXRENDAoKT0zRD0zRGNhc3RPdGhlci5nZXRENDAoKSkgfHwgKCB0aGlz
LmdldEQ0MCgpIT0zRG51bGwgJj0KJiBjYXN0T3RoZXIuZ2V0RDQwKCkhPTNEbnVsbCAmJiB0aGlz
LmdldEQ0MCgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0RDQwKCkpICkgKQorICYmICggKHRoaXMuZ2V0
RDMwKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RDMwKCkpIHx8ICggdGhpcy5nZXREMzAoKSE9M0RudWxs
ICY9CiYgY2FzdE90aGVyLmdldEQzMCgpIT0zRG51bGwgJiYgdGhpcy5nZXREMzAoKS5lcXVhbHMo
Y2FzdE90aGVyLmdldEQzMCgpKSApICkKKyAmJiAoICh0aGlzLmdldEQyNSgpPTNEPTNEY2FzdE90
aGVyLmdldEQyNSgpKSB8fCAoIHRoaXMuZ2V0RDI1KCkhPTNEbnVsbCAmPQomIGNhc3RPdGhlci5n
ZXREMjUoKSE9M0RudWxsICYmIHRoaXMuZ2V0RDI1KCkuZXF1YWxzKGNhc3RPdGhlci5nZXREMjUo
KSkgKSApCisgJiYgKCAodGhpcy5nZXREMjAoKT0zRD0zRGNhc3RPdGhlci5nZXREMjAoKSkgfHwg
KCB0aGlzLmdldEQyMCgpIT0zRG51bGwgJj0KJiBjYXN0T3RoZXIuZ2V0RDIwKCkhPTNEbnVsbCAm
JiB0aGlzLmdldEQyMCgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0RDIwKCkpICkgKQorICYmICggKHRo
aXMuZ2V0RDE2KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RDE2KCkpIHx8ICggdGhpcy5nZXREMTYoKSE9
M0RudWxsICY9CiYgY2FzdE90aGVyLmdldEQxNigpIT0zRG51bGwgJiYgdGhpcy5nZXREMTYoKS5l
cXVhbHMoY2FzdE90aGVyLmdldEQxNigpKSApICkKKyAmJiAoICh0aGlzLmdldEQxMCgpPTNEPTNE
Y2FzdE90aGVyLmdldEQxMCgpKSB8fCAoIHRoaXMuZ2V0RDEwKCkhPTNEbnVsbCAmPQomIGNhc3RP
dGhlci5nZXREMTAoKSE9M0RudWxsICYmIHRoaXMuZ2V0RDEwKCkuZXF1YWxzKGNhc3RPdGhlci5n
ZXREMTAoKSkgKSApCisgJiYgKCAodGhpcy5nZXREbWluKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RG1p
bigpKSB8fCAoIHRoaXMuZ2V0RG1pbigpIT0zRG51bD0KbCAmJiBjYXN0T3RoZXIuZ2V0RG1pbigp
IT0zRG51bGwgJiYgdGhpcy5nZXREbWluKCkuZXF1YWxzKGNhc3RPdGhlci5nZXREbWluPQooKSkg
KSApCisgJiYgKCAodGhpcy5nZXREdXJjaGRtaW4oKT0zRD0zRGNhc3RPdGhlci5nZXREdXJjaGRt
aW4oKSkgfHwgKCB0aGlzLmdldER1cj0KY2hkbWluKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0
RHVyY2hkbWluKCkhPTNEbnVsbCAmJiB0aGlzLmdldER1cmNoZG1pbigpPQouZXF1YWxzKGNhc3RP
dGhlci5nZXREdXJjaGRtaW4oKSkgKSApCisgJiYgKCAodGhpcy5nZXREbWF4KCk9M0Q9M0RjYXN0
T3RoZXIuZ2V0RG1heCgpKSB8fCAoIHRoaXMuZ2V0RG1heCgpIT0zRG51bD0KbCAmJiBjYXN0T3Ro
ZXIuZ2V0RG1heCgpIT0zRG51bGwgJiYgdGhpcy5nZXREbWF4KCkuZXF1YWxzKGNhc3RPdGhlci5n
ZXREbWF4PQooKSkgKSApCisgJiYgKCAodGhpcy5nZXREdXJjaGRtYXgoKT0zRD0zRGNhc3RPdGhl
ci5nZXREdXJjaGRtYXgoKSkgfHwgKCB0aGlzLmdldER1cj0KY2hkbWF4KCkhPTNEbnVsbCAmJiBj
YXN0T3RoZXIuZ2V0RHVyY2hkbWF4KCkhPTNEbnVsbCAmJiB0aGlzLmdldER1cmNoZG1heCgpPQou
ZXF1YWxzKGNhc3RPdGhlci5nZXREdXJjaGRtYXgoKSkgKSApCisgJiYgKCAodGhpcy5nZXRTdGRh
YncoKT0zRD0zRGNhc3RPdGhlci5nZXRTdGRhYncoKSkgfHwgKCB0aGlzLmdldFN0ZGFidygpIT0K
PTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0U3RkYWJ3KCkhPTNEbnVsbCAmJiB0aGlzLmdldFN0ZGFi
dygpLmVxdWFscyhjYXN0T3RoPQplci5nZXRTdGRhYncoKSkgKSApCisgJiYgKCAodGhpcy5nZXRT
dGRmZWhsZXIoKT0zRD0zRGNhc3RPdGhlci5nZXRTdGRmZWhsZXIoKSkgfHwgKCB0aGlzLmdldFN0
ZD0KZmVobGVyKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0U3RkZmVobGVyKCkhPTNEbnVsbCAm
JiB0aGlzLmdldFN0ZGZlaGxlcigpPQouZXF1YWxzKGNhc3RPdGhlci5nZXRTdGRmZWhsZXIoKSkg
KSApCisgJiYgKCAodGhpcy5nZXRCZW1lcmt1bmcoKT0zRD0zRGNhc3RPdGhlci5nZXRCZW1lcmt1
bmcoKSkgfHwgKCB0aGlzLmdldEJlbT0KZXJrdW5nKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0
QmVtZXJrdW5nKCkhPTNEbnVsbCAmJiB0aGlzLmdldEJlbWVya3VuZygpPQouZXF1YWxzKGNhc3RP
dGhlci5nZXRCZW1lcmt1bmcoKSkgKSApCisgJiYgKCAodGhpcy5nZXRVZmVyYWJsaW5rcygpPTNE
PTNEY2FzdE90aGVyLmdldFVmZXJhYmxpbmtzKCkpIHx8ICggdGhpcy5nZT0KdFVmZXJhYmxpbmtz
KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0VWZlcmFibGlua3MoKSE9M0RudWxsICYmIHRoaXMu
Z2V0VWZlPQpyYWJsaW5rcygpLmVxdWFscyhjYXN0T3RoZXIuZ2V0VWZlcmFibGlua3MoKSkgKSAp
CisgJiYgKCAodGhpcy5nZXRMaW5rc2Fic3QoKT0zRD0zRGNhc3RPdGhlci5nZXRMaW5rc2Fic3Qo
KSkgfHwgKCB0aGlzLmdldExpbj0Ka3NhYnN0KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TGlu
a3NhYnN0KCkhPTNEbnVsbCAmJiB0aGlzLmdldExpbmtzYWJzdCgpPQouZXF1YWxzKGNhc3RPdGhl
ci5nZXRMaW5rc2Fic3QoKSkgKSApOworICAgfQorCisgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkg
eworICAgICAgICAgaW50IHJlc3VsdCA9M0QgMTc7CisKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcg
KiByZXN1bHQgKyAoaW50KSB0aGlzLmdldEdsb3RyZWNodGVpZCgpOworICAgICAgICAgcmVzdWx0
ID0zRCAzNyAqIHJlc3VsdCArIChpbnQpIHRoaXMuZ2V0TWVzc3VuZ2lkKCk7CisgICAgICAgICBy
ZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRVZmVyYWJzdCgpID0zRD0zRCBudWxsID8gMCA6
IHRoaXMuZz0KZXRVZmVyYWJzdCgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0Qg
MzcgKiByZXN1bHQgKyAoIGdldFRnZXNjaGllYmUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzPQou
Z2V0VGdlc2NoaWViZSgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiBy
ZXN1bHQgKyAoIGdldERtKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXREbSgpPQouaGFzaENv
ZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0U2soKSA9M0Q9
M0QgbnVsbCA/IDAgOiB0aGlzLmdldFNrKCk9Ci5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1
bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRTbygpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0
U28oKT0KLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAo
IGdldFUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldFUoKS5oPQphc2hDb2RlKCkgKTsKKyAg
ICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEQ5MCgpID0zRD0zRCBudWxsID8g
MCA6IHRoaXMuZ2V0RDkwPQooKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3
ICogcmVzdWx0ICsgKCBnZXREODQoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEQ4ND0KKCku
aGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0RDgw
KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXREODA9CigpLmhhc2hDb2RlKCkgKTsKKyAgICAg
ICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEQ3NSgpID0zRD0zRCBudWxsID8gMCA6
IHRoaXMuZ2V0RDc1PQooKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICog
cmVzdWx0ICsgKCBnZXRENzAoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEQ3MD0KKCkuaGFz
aENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0RDYwKCkg
PTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRENjA9CigpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAg
IHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEQ1MCgpID0zRD0zRCBudWxsID8gMCA6IHRo
aXMuZ2V0RDUwPQooKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVz
dWx0ICsgKCBnZXRENDAoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEQ0MD0KKCkuaGFzaENv
ZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0RDMwKCkgPTNE
PTNEIG51bGwgPyAwIDogdGhpcy5nZXREMzA9CigpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJl
c3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEQyNSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMu
Z2V0RDI1PQooKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0
ICsgKCBnZXREMjAoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEQyMD0KKCkuaGFzaENvZGUo
KSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0RDE2KCkgPTNEPTNE
IG51bGwgPyAwIDogdGhpcy5nZXREMTY9CigpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3Vs
dCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEQxMCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0
RDEwPQooKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsg
KCBnZXREbWluKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXREbT0KaW4oKS5oYXNoQ29kZSgp
ICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXREdXJjaGRtaW4oKSA9
M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLj0KZ2V0RHVyY2hkbWluKCkuaGFzaENvZGUoKSApOworICAg
ICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0RG1heCgpID0zRD0zRCBudWxsID8g
MCA6IHRoaXMuZ2V0RG09CmF4KCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAz
NyAqIHJlc3VsdCArICggZ2V0RHVyY2hkbWF4KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy49Cmdl
dER1cmNoZG1heCgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1
bHQgKyAoIGdldFN0ZGFidygpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0PQpTdGRhYncoKS5o
YXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRTdGRm
ZWhsZXIoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLj0KZ2V0U3RkZmVobGVyKCkuaGFzaENvZGUo
KSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0QmVtZXJrdW5nKCkg
PTNEPTNEIG51bGwgPyAwIDogdGhpcy49CmdldEJlbWVya3VuZygpLmhhc2hDb2RlKCkgKTsKKyAg
ICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFVmZXJhYmxpbmtzKCkgPTNEPTNE
IG51bGwgPyAwIDogdGhpPQpzLmdldFVmZXJhYmxpbmtzKCkuaGFzaENvZGUoKSApOworICAgICAg
ICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TGlua3NhYnN0KCkgPTNEPTNEIG51bGwg
PyAwIDogdGhpcy49CmdldExpbmtzYWJzdCgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICB9Cit9CmRpZmYgLXIgYmM0ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBi
YWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZlci9zZWRkYi9tb2Rl
bC9HbG90cmVjaHRlLmphdmEKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAg
KzAwMDAKKysrIGIvYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnRzL3JpdmVy
L3NlZGRiL21vZGVsL0dsb3RyZWNodGUuPQpqYXZhCU1vbiBBcHIgMjkgMTE6MzM6MDEgMjAxMyAr
MDIwMApAQCAtMCwwICsxLDQyMCBAQAorLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEz
IGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKKyAqIFNvZnR3
YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAorICoKKyAqIFRoaXMgZmlsZSBpcyBG
cmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAorICogYW5kIGNvbWVz
IHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQorICogZG9jdW1lbnRh
dGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAorICov
CisKK3BhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7CisvLyBHZW5lcmF0ZWQg
MTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCisKKworaW1w
b3J0IGphdmEubWF0aC5CaWdEZWNpbWFsOworaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OworaW1w
b3J0IGphdmEudXRpbC5TZXQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1w
b3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5G
ZXRjaFR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVy
c2lzdGVuY2UuSm9pbkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5NYW55VG9PbmU7
CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuT25lVG9NYW55OworaW1wb3J0IGphdmF4LnBlcnNp
c3RlbmNlLk9uZVRvT25lOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOworCisvKioK
KyAqIEdsb3RyZWNodGUgZ2VuZXJhdGVkIGJ5IGhibTJqYXZhCisgKi8KK0BFbnRpdHkKK0BUYWJs
ZShuYW1lPTNEIkdMT1RSRUNIVEUiCisgICAgLHNjaGVtYT0zRCJTRUREQiIKKykKK3B1YmxpYyBj
bGFzcyBHbG90cmVjaHRlICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKKworCisg
ICAgIHByaXZhdGUgbG9uZyBnbG90cmVjaHRlaWQ7CisgICAgIHByaXZhdGUgTWVzc3VuZyBtZXNz
dW5nOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdWZlcmFic3Q7CisgICAgIHByaXZhdGUgQmln
RGVjaW1hbCB0Z2VzY2hpZWJlOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZG07CisgICAgIHBy
aXZhdGUgQmlnRGVjaW1hbCBzazsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHNvOworICAgICBw
cml2YXRlIEJpZ0RlY2ltYWwgdTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQ5MDsKKyAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIGQ4NDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQ4MDsKKyAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQ3NTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQ3MDsK
KyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQ2MDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQ1
MDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQ0MDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IGQzMDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQyNTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNp
bWFsIGQyMDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQxNjsKKyAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIGQxMDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGRtaW47CisgICAgIHByaXZhdGUg
QmlnRGVjaW1hbCBkdXJjaGRtaW47CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkbWF4OworICAg
ICBwcml2YXRlIEJpZ0RlY2ltYWwgZHVyY2hkbWF4OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
c3RkYWJ3OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgc3RkZmVobGVyOworICAgICBwcml2YXRl
IFN0cmluZyBiZW1lcmt1bmc7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCB1ZmVyYWJsaW5rczsK
KyAgICAgcHJpdmF0ZSBHc2llYnVuZyBnc2llYnVuZzsKKyAgICAgcHJpdmF0ZSBTZXQ8R3Byb2Jl
PiBncHJvYmVzID0zRCBuZXcgSGFzaFNldDxHcHJvYmU+KDApOworCisgICAgcHVibGljIEdsb3Ry
ZWNodGUoKSB7CisgICAgfQorCisKKyAgICBwdWJsaWMgR2xvdHJlY2h0ZShsb25nIGdsb3RyZWNo
dGVpZCwgTWVzc3VuZyBtZXNzdW5nLCBCaWdEZWNpbWFsIHVmZXJhPQpic3QpIHsKKyAgICAgICAg
dGhpcy5nbG90cmVjaHRlaWQgPTNEIGdsb3RyZWNodGVpZDsKKyAgICAgICAgdGhpcy5tZXNzdW5n
ID0zRCBtZXNzdW5nOworICAgICAgICB0aGlzLnVmZXJhYnN0ID0zRCB1ZmVyYWJzdDsKKyAgICB9
CisgICAgcHVibGljIEdsb3RyZWNodGUobG9uZyBnbG90cmVjaHRlaWQsIE1lc3N1bmcgbWVzc3Vu
ZywgQmlnRGVjaW1hbCB1ZmVyYT0KYnN0LCBCaWdEZWNpbWFsIHRnZXNjaGllYmUsIEJpZ0RlY2lt
YWwgZG0sIEJpZ0RlY2ltYWwgc2ssIEJpZ0RlY2ltYWwgc28sIEJpPQpnRGVjaW1hbCB1LCBCaWdE
ZWNpbWFsIGQ5MCwgQmlnRGVjaW1hbCBkODQsIEJpZ0RlY2ltYWwgZDgwLCBCaWdEZWNpbWFsIGQ3
NSw9CiBCaWdEZWNpbWFsIGQ3MCwgQmlnRGVjaW1hbCBkNjAsIEJpZ0RlY2ltYWwgZDUwLCBCaWdE
ZWNpbWFsIGQ0MCwgQmlnRGVjaW1hbD0KIGQzMCwgQmlnRGVjaW1hbCBkMjUsIEJpZ0RlY2ltYWwg
ZDIwLCBCaWdEZWNpbWFsIGQxNiwgQmlnRGVjaW1hbCBkMTAsIEJpZ0RlPQpjaW1hbCBkbWluLCBC
aWdEZWNpbWFsIGR1cmNoZG1pbiwgQmlnRGVjaW1hbCBkbWF4LCBCaWdEZWNpbWFsIGR1cmNoZG1h
eCwgQmk9CmdEZWNpbWFsIHN0ZGFidywgQmlnRGVjaW1hbCBzdGRmZWhsZXIsIFN0cmluZyBiZW1l
cmt1bmcsIEJpZ0RlY2ltYWwgdWZlcmFibD0KaW5rcywgR3NpZWJ1bmcgZ3NpZWJ1bmcsIFNldDxH
cHJvYmU+IGdwcm9iZXMpIHsKKyAgICAgICB0aGlzLmdsb3RyZWNodGVpZCA9M0QgZ2xvdHJlY2h0
ZWlkOworICAgICAgIHRoaXMubWVzc3VuZyA9M0QgbWVzc3VuZzsKKyAgICAgICB0aGlzLnVmZXJh
YnN0ID0zRCB1ZmVyYWJzdDsKKyAgICAgICB0aGlzLnRnZXNjaGllYmUgPTNEIHRnZXNjaGllYmU7
CisgICAgICAgdGhpcy5kbSA9M0QgZG07CisgICAgICAgdGhpcy5zayA9M0Qgc2s7CisgICAgICAg
dGhpcy5zbyA9M0Qgc287CisgICAgICAgdGhpcy51ID0zRCB1OworICAgICAgIHRoaXMuZDkwID0z
RCBkOTA7CisgICAgICAgdGhpcy5kODQgPTNEIGQ4NDsKKyAgICAgICB0aGlzLmQ4MCA9M0QgZDgw
OworICAgICAgIHRoaXMuZDc1ID0zRCBkNzU7CisgICAgICAgdGhpcy5kNzAgPTNEIGQ3MDsKKyAg
ICAgICB0aGlzLmQ2MCA9M0QgZDYwOworICAgICAgIHRoaXMuZDUwID0zRCBkNTA7CisgICAgICAg
dGhpcy5kNDAgPTNEIGQ0MDsKKyAgICAgICB0aGlzLmQzMCA9M0QgZDMwOworICAgICAgIHRoaXMu
ZDI1ID0zRCBkMjU7CisgICAgICAgdGhpcy5kMjAgPTNEIGQyMDsKKyAgICAgICB0aGlzLmQxNiA9
M0QgZDE2OworICAgICAgIHRoaXMuZDEwID0zRCBkMTA7CisgICAgICAgdGhpcy5kbWluID0zRCBk
bWluOworICAgICAgIHRoaXMuZHVyY2hkbWluID0zRCBkdXJjaGRtaW47CisgICAgICAgdGhpcy5k
bWF4ID0zRCBkbWF4OworICAgICAgIHRoaXMuZHVyY2hkbWF4ID0zRCBkdXJjaGRtYXg7CisgICAg
ICAgdGhpcy5zdGRhYncgPTNEIHN0ZGFidzsKKyAgICAgICB0aGlzLnN0ZGZlaGxlciA9M0Qgc3Rk
ZmVobGVyOworICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7CisgICAgICAgdGhp
cy51ZmVyYWJsaW5rcyA9M0QgdWZlcmFibGlua3M7CisgICAgICAgdGhpcy5nc2llYnVuZyA9M0Qg
Z3NpZWJ1bmc7CisgICAgICAgdGhpcy5ncHJvYmVzID0zRCBncHJvYmVzOworICAgIH0KKworICAg
ICBASWQKKworCisgICAgQENvbHVtbihuYW1lPTNEIkdMT1RSRUNIVEVJRCIsIHVuaXF1ZT0zRHRy
dWUsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpcz0KaW9uPTNEMTEsIHNjYWxlPTNEMCkKKyAgICBw
dWJsaWMgbG9uZyBnZXRHbG90cmVjaHRlaWQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmdsb3Ry
ZWNodGVpZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRHbG90cmVjaHRlaWQobG9uZyBn
bG90cmVjaHRlaWQpIHsKKyAgICAgICAgdGhpcy5nbG90cmVjaHRlaWQgPTNEIGdsb3RyZWNodGVp
ZDsKKyAgICB9CisKK0BNYW55VG9PbmUoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSkKKyAgICBASm9p
bkNvbHVtbihuYW1lPTNEIk1FU1NVTkdJRCIsIG51bGxhYmxlPTNEZmFsc2UpCisgICAgcHVibGlj
IE1lc3N1bmcgZ2V0TWVzc3VuZygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubWVzc3VuZzsKKyAg
ICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNZXNzdW5nKE1lc3N1bmcgbWVzc3VuZykgeworICAg
ICAgICB0aGlzLm1lc3N1bmcgPTNEIG1lc3N1bmc7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5h
bWU9M0QiVUZFUkFCU1QiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0z
RDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VWZlcmFic3QoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLnVmZXJhYnN0OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFVmZXJhYnN0KEJp
Z0RlY2ltYWwgdWZlcmFic3QpIHsKKyAgICAgICAgdGhpcy51ZmVyYWJzdCA9M0QgdWZlcmFic3Q7
CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiVEdFU0NISUVCRSIsIHByZWNpc2lvbj0z
RDgsIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRUZ2VzY2hpZWJlKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy50Z2VzY2hpZWJlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lk
IHNldFRnZXNjaGllYmUoQmlnRGVjaW1hbCB0Z2VzY2hpZWJlKSB7CisgICAgICAgIHRoaXMudGdl
c2NoaWViZSA9M0QgdGdlc2NoaWViZTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJE
TSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRE
bSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZG07CisgICAgfQorCisgICAgcHVibGljIHZvaWQg
c2V0RG0oQmlnRGVjaW1hbCBkbSkgeworICAgICAgICB0aGlzLmRtID0zRCBkbTsKKyAgICB9CisK
KworICAgIEBDb2x1bW4obmFtZT0zRCJTSyIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKKyAg
ICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRTaygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc2s7Cisg
ICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0U2soQmlnRGVjaW1hbCBzaykgeworICAgICAgICB0
aGlzLnNrID0zRCBzazsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJTTyIsIHByZWNp
c2lvbj0zRDgsIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRTbygpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuc287CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0U28oQmln
RGVjaW1hbCBzbykgeworICAgICAgICB0aGlzLnNvID0zRCBzbzsKKyAgICB9CisKKworICAgIEBD
b2x1bW4obmFtZT0zRCJVIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBC
aWdEZWNpbWFsIGdldFUoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnU7CisgICAgfQorCisgICAg
cHVibGljIHZvaWQgc2V0VShCaWdEZWNpbWFsIHUpIHsKKyAgICAgICAgdGhpcy51ID0zRCB1Owor
ICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkQ5MCIsIHByZWNpc2lvbj0zRDcsIHNjYWxl
PTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREOTAoKSB7CisgICAgICAgIHJldHVybiB0
aGlzLmQ5MDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXREOTAoQmlnRGVjaW1hbCBkOTAp
IHsKKyAgICAgICAgdGhpcy5kOTAgPTNEIGQ5MDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFt
ZT0zRCJEODQiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2lt
YWwgZ2V0RDg0KCkgeworICAgICAgICByZXR1cm4gdGhpcy5kODQ7CisgICAgfQorCisgICAgcHVi
bGljIHZvaWQgc2V0RDg0KEJpZ0RlY2ltYWwgZDg0KSB7CisgICAgICAgIHRoaXMuZDg0ID0zRCBk
ODQ7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiRDgwIiwgcHJlY2lzaW9uPTNENywg
c2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQ4MCgpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuZDgwOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEQ4MChCaWdEZWNpbWFs
IGQ4MCkgeworICAgICAgICB0aGlzLmQ4MCA9M0QgZDgwOworICAgIH0KKworCisgICAgQENvbHVt
bihuYW1lPTNEIkQ3NSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmln
RGVjaW1hbCBnZXRENzUoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmQ3NTsKKyAgICB9CisKKyAg
ICBwdWJsaWMgdm9pZCBzZXRENzUoQmlnRGVjaW1hbCBkNzUpIHsKKyAgICAgICAgdGhpcy5kNzUg
PTNEIGQ3NTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJENzAiLCBwcmVjaXNpb249
M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDcwKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy5kNzA7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RDcwKEJpZ0Rl
Y2ltYWwgZDcwKSB7CisgICAgICAgIHRoaXMuZDcwID0zRCBkNzA7CisgICAgfQorCisKKyAgICBA
Q29sdW1uKG5hbWU9M0QiRDYwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldEQ2MCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZDYwOworICAgIH0K
KworICAgIHB1YmxpYyB2b2lkIHNldEQ2MChCaWdEZWNpbWFsIGQ2MCkgeworICAgICAgICB0aGlz
LmQ2MCA9M0QgZDYwOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkQ1MCIsIHByZWNp
c2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRENTAoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLmQ1MDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRENTAo
QmlnRGVjaW1hbCBkNTApIHsKKyAgICAgICAgdGhpcy5kNTAgPTNEIGQ1MDsKKyAgICB9CisKKwor
ICAgIEBDb2x1bW4obmFtZT0zRCJENDAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAg
cHVibGljIEJpZ0RlY2ltYWwgZ2V0RDQwKCkgeworICAgICAgICByZXR1cm4gdGhpcy5kNDA7Cisg
ICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RDQwKEJpZ0RlY2ltYWwgZDQwKSB7CisgICAgICAg
IHRoaXMuZDQwID0zRCBkNDA7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiRDMwIiwg
cHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQzMCgp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZDMwOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNl
dEQzMChCaWdEZWNpbWFsIGQzMCkgeworICAgICAgICB0aGlzLmQzMCA9M0QgZDMwOworICAgIH0K
KworCisgICAgQENvbHVtbihuYW1lPTNEIkQyNSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkK
KyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREMjUoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmQy
NTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXREMjUoQmlnRGVjaW1hbCBkMjUpIHsKKyAg
ICAgICAgdGhpcy5kMjUgPTNEIGQyNTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJE
MjAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0
RDIwKCkgeworICAgICAgICByZXR1cm4gdGhpcy5kMjA7CisgICAgfQorCisgICAgcHVibGljIHZv
aWQgc2V0RDIwKEJpZ0RlY2ltYWwgZDIwKSB7CisgICAgICAgIHRoaXMuZDIwID0zRCBkMjA7Cisg
ICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiRDE2IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9
M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQxNigpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuZDE2OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEQxNihCaWdEZWNpbWFsIGQxNikg
eworICAgICAgICB0aGlzLmQxNiA9M0QgZDE2OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1l
PTNEIkQxMCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1h
bCBnZXREMTAoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmQxMDsKKyAgICB9CisKKyAgICBwdWJs
aWMgdm9pZCBzZXREMTAoQmlnRGVjaW1hbCBkMTApIHsKKyAgICAgICAgdGhpcy5kMTAgPTNEIGQx
MDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJETUlOIiwgcHJlY2lzaW9uPTNENywg
c2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldERtaW4oKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLmRtaW47CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RG1pbihCaWdEZWNp
bWFsIGRtaW4pIHsKKyAgICAgICAgdGhpcy5kbWluID0zRCBkbWluOworICAgIH0KKworCisgICAg
QENvbHVtbihuYW1lPTNEIkRVUkNIRE1JTiIsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNEMykKKyAg
ICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREdXJjaGRtaW4oKSB7CisgICAgICAgIHJldHVybiB0aGlz
LmR1cmNoZG1pbjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXREdXJjaGRtaW4oQmlnRGVj
aW1hbCBkdXJjaGRtaW4pIHsKKyAgICAgICAgdGhpcy5kdXJjaGRtaW4gPTNEIGR1cmNoZG1pbjsK
KyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJETUFYIiwgcHJlY2lzaW9uPTNENywgc2Nh
bGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldERtYXgoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLmRtYXg7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RG1heChCaWdEZWNpbWFs
IGRtYXgpIHsKKyAgICAgICAgdGhpcy5kbWF4ID0zRCBkbWF4OworICAgIH0KKworCisgICAgQENv
bHVtbihuYW1lPTNEIkRVUkNIRE1BWCIsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNEMykKKyAgICBw
dWJsaWMgQmlnRGVjaW1hbCBnZXREdXJjaGRtYXgoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmR1
cmNoZG1heDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXREdXJjaGRtYXgoQmlnRGVjaW1h
bCBkdXJjaGRtYXgpIHsKKyAgICAgICAgdGhpcy5kdXJjaGRtYXggPTNEIGR1cmNoZG1heDsKKyAg
ICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJTVERBQlciLCBwcmVjaXNpb249M0Q4LCBzY2Fs
ZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0U3RkYWJ3KCkgeworICAgICAgICByZXR1
cm4gdGhpcy5zdGRhYnc7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0U3RkYWJ3KEJpZ0Rl
Y2ltYWwgc3RkYWJ3KSB7CisgICAgICAgIHRoaXMuc3RkYWJ3ID0zRCBzdGRhYnc7CisgICAgfQor
CisKKyAgICBAQ29sdW1uKG5hbWU9M0QiU1RERkVITEVSIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9
M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFN0ZGZlaGxlcigpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuc3RkZmVobGVyOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFN0ZGZlaGxl
cihCaWdEZWNpbWFsIHN0ZGZlaGxlcikgeworICAgICAgICB0aGlzLnN0ZGZlaGxlciA9M0Qgc3Rk
ZmVobGVyOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkJFTUVSS1VORyIsIGxlbmd0
aD0zRDI0MCkKKyAgICBwdWJsaWMgU3RyaW5nIGdldEJlbWVya3VuZygpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuYmVtZXJrdW5nOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEJlbWVya3Vu
ZyhTdHJpbmcgYmVtZXJrdW5nKSB7CisgICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1
bmc7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiVUZFUkFCTElOS1MiLCBwcmVjaXNp
b249M0Q4LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VWZlcmFibGlua3Mo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLnVmZXJhYmxpbmtzOworICAgIH0KKworICAgIHB1Ymxp
YyB2b2lkIHNldFVmZXJhYmxpbmtzKEJpZ0RlY2ltYWwgdWZlcmFibGlua3MpIHsKKyAgICAgICAg
dGhpcy51ZmVyYWJsaW5rcyA9M0QgdWZlcmFibGlua3M7CisgICAgfQorCitAT25lVG9PbmUoZmV0
Y2g9M0RGZXRjaFR5cGUuTEFaWSwgbWFwcGVkQnk9M0QiZ2xvdHJlY2h0ZSIpCisgICAgcHVibGlj
IEdzaWVidW5nIGdldEdzaWVidW5nKCkgeworICAgICAgICByZXR1cm4gdGhpcy5nc2llYnVuZzsK
KyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRHc2llYnVuZyhHc2llYnVuZyBnc2llYnVuZykg
eworICAgICAgICB0aGlzLmdzaWVidW5nID0zRCBnc2llYnVuZzsKKyAgICB9CisKK0BPbmVUb01h
bnkoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSwgbWFwcGVkQnk9M0QiZ2xvdHJlY2h0ZSIpCisgICAg
cHVibGljIFNldDxHcHJvYmU+IGdldEdwcm9iZXMoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmdw
cm9iZXM7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0R3Byb2JlcyhTZXQ8R3Byb2JlPiBn
cHJvYmVzKSB7CisgICAgICAgIHRoaXMuZ3Byb2JlcyA9M0QgZ3Byb2JlczsKKyAgICB9Cit9CmRp
ZmYgLXIgYmM0ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9tYWluL2phdmEv
b3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZlci9zZWRkYi9tb2RlbC9HcHJvYmUuamF2YQotLS0gL2Rl
di9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9iYWNrZW5kL3NyYy9t
YWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvR3Byb2JlLmphdmE9
CglNb24gQXByIDI5IDExOjMzOjAxIDIwMTMgKzAyMDAKQEAgLTAsMCArMSwxNDYgQEAKKy8qIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdl
dz1DMz1BNHNzZXJrPQp1bmRlCisgKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9u
IEdtYkgKKyAqCisgKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFH
UEwgKD49M0R2Myk9MjAKKyAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkh
IENoZWNrIG91dCB0aGUKKyAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50
cyBSaXZlciBmb3IgZGV0YWlscy49MjAKKyAqLworCitwYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRz
LnNlZGRiLm1vZGVsOworLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJu
YXRlIFRvb2xzIDMuNC4wLkNSMQorCisKK2ltcG9ydCBqYXZhLm1hdGguQmlnRGVjaW1hbDsKK2lt
cG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5BdHRyaWJ1dGVPdmVycmlkZTsKK2ltcG9ydCBqYXZheC5w
ZXJzaXN0ZW5jZS5BdHRyaWJ1dGVPdmVycmlkZXM7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2Uu
Q29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVtYmVkZGVkSWQ7CitpbXBvcnQgamF2
YXgucGVyc2lzdGVuY2UuRW50aXR5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlw
ZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1uOworaW1wb3J0IGphdmF4LnBl
cnNpc3RlbmNlLk1hbnlUb09uZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKKwor
LyoqCisgKiBHcHJvYmUgZ2VuZXJhdGVkIGJ5IGhibTJqYXZhCisgKi8KK0BFbnRpdHkKK0BUYWJs
ZShuYW1lPTNEIkdQUk9CRSIKKyAgICAsc2NoZW1hPTNEIlNFRERCIgorKQorcHVibGljIGNsYXNz
IEdwcm9iZSAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7CisKKworICAgICBwcml2
YXRlIEdwcm9iZUlkIGlkOworICAgICBwcml2YXRlIEdsb3RyZWNodGUgZ2xvdHJlY2h0ZTsKKyAg
ICAgcHJpdmF0ZSBpbnQgbWVzc2RhdWVyOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgbWVuZ2U7
CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBndHJpZWI7CisgICAgIHByaXZhdGUgQmlnRGVjaW1h
bCBmYWt0b3I7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtZW5nZUY7CisgICAgIHByaXZhdGUg
QmlnRGVjaW1hbCBndHJpZWJGOworCisgICAgcHVibGljIEdwcm9iZSgpIHsKKyAgICB9CisKKyAg
ICBwdWJsaWMgR3Byb2JlKEdwcm9iZUlkIGlkLCBHbG90cmVjaHRlIGdsb3RyZWNodGUsIGludCBt
ZXNzZGF1ZXIsIEJpZ0RlPQpjaW1hbCBtZW5nZSkgeworICAgICAgICB0aGlzLmlkID0zRCBpZDsK
KyAgICAgICAgdGhpcy5nbG90cmVjaHRlID0zRCBnbG90cmVjaHRlOworICAgICAgICB0aGlzLm1l
c3NkYXVlciA9M0QgbWVzc2RhdWVyOworICAgICAgICB0aGlzLm1lbmdlID0zRCBtZW5nZTsKKyAg
ICB9CisgICAgcHVibGljIEdwcm9iZShHcHJvYmVJZCBpZCwgR2xvdHJlY2h0ZSBnbG90cmVjaHRl
LCBpbnQgbWVzc2RhdWVyLCBCaWdEZT0KY2ltYWwgbWVuZ2UsIEJpZ0RlY2ltYWwgZ3RyaWViLCBC
aWdEZWNpbWFsIGZha3RvciwgQmlnRGVjaW1hbCBtZW5nZUYsIEJpZ0RlPQpjaW1hbCBndHJpZWJG
KSB7CisgICAgICAgdGhpcy5pZCA9M0QgaWQ7CisgICAgICAgdGhpcy5nbG90cmVjaHRlID0zRCBn
bG90cmVjaHRlOworICAgICAgIHRoaXMubWVzc2RhdWVyID0zRCBtZXNzZGF1ZXI7CisgICAgICAg
dGhpcy5tZW5nZSA9M0QgbWVuZ2U7CisgICAgICAgdGhpcy5ndHJpZWIgPTNEIGd0cmllYjsKKyAg
ICAgICB0aGlzLmZha3RvciA9M0QgZmFrdG9yOworICAgICAgIHRoaXMubWVuZ2VGID0zRCBtZW5n
ZUY7CisgICAgICAgdGhpcy5ndHJpZWJGID0zRCBndHJpZWJGOworICAgIH0KKworICAgICBARW1i
ZWRkZWRJZAorCisKKyAgICBAQXR0cmlidXRlT3ZlcnJpZGVzKCB7CisgICAgICAgIEBBdHRyaWJ1
dGVPdmVycmlkZShuYW1lPTNEImdsb3RyZWNodGVpZCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0z
RD0KIkdMT1RSRUNIVEVJRCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2Fs
ZT0zRDApICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImxmZG5yIiwgY29s
dW1uPTNEQENvbHVtbihuYW1lPTNEIkxGRE5SIj0KLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNp
b249M0Q1LCBzY2FsZT0zRDApICkgfSApCisgICAgcHVibGljIEdwcm9iZUlkIGdldElkKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy5pZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRJZChH
cHJvYmVJZCBpZCkgeworICAgICAgICB0aGlzLmlkID0zRCBpZDsKKyAgICB9CisKK0BNYW55VG9P
bmUoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSkKKyAgICBASm9pbkNvbHVtbihuYW1lPTNEIkdMT1RS
RUNIVEVJRCIsIG51bGxhYmxlPTNEZmFsc2UsIGluc2VydGFibGU9M0RmYWxzPQplLCB1cGRhdGFi
bGU9M0RmYWxzZSkKKyAgICBwdWJsaWMgR2xvdHJlY2h0ZSBnZXRHbG90cmVjaHRlKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy5nbG90cmVjaHRlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNl
dEdsb3RyZWNodGUoR2xvdHJlY2h0ZSBnbG90cmVjaHRlKSB7CisgICAgICAgIHRoaXMuZ2xvdHJl
Y2h0ZSA9M0QgZ2xvdHJlY2h0ZTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJNRVNT
REFVRVIiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q1LCBzY2FsZT0zRDApCisgICAg
cHVibGljIGludCBnZXRNZXNzZGF1ZXIoKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1lc3NkYXVl
cjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNZXNzZGF1ZXIoaW50IG1lc3NkYXVlcikg
eworICAgICAgICB0aGlzLm1lc3NkYXVlciA9M0QgbWVzc2RhdWVyOworICAgIH0KKworCisgICAg
QENvbHVtbihuYW1lPTNEIk1FTkdFIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEOSwg
c2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1lbmdlKCkgeworICAgICAgICBy
ZXR1cm4gdGhpcy5tZW5nZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNZW5nZShCaWdE
ZWNpbWFsIG1lbmdlKSB7CisgICAgICAgIHRoaXMubWVuZ2UgPTNEIG1lbmdlOworICAgIH0KKwor
CisgICAgQENvbHVtbihuYW1lPTNEIkdUUklFQiIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykK
KyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRHdHJpZWIoKSB7CisgICAgICAgIHJldHVybiB0aGlz
Lmd0cmllYjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRHdHJpZWIoQmlnRGVjaW1hbCBn
dHJpZWIpIHsKKyAgICAgICAgdGhpcy5ndHJpZWIgPTNEIGd0cmllYjsKKyAgICB9CisKKworICAg
IEBDb2x1bW4obmFtZT0zRCJGQUtUT1IiLCBwcmVjaXNpb249M0Q0LCBzY2FsZT0zRDMpCisgICAg
cHVibGljIEJpZ0RlY2ltYWwgZ2V0RmFrdG9yKCkgeworICAgICAgICByZXR1cm4gdGhpcy5mYWt0
b3I7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RmFrdG9yKEJpZ0RlY2ltYWwgZmFrdG9y
KSB7CisgICAgICAgIHRoaXMuZmFrdG9yID0zRCBmYWt0b3I7CisgICAgfQorCisKKyAgICBAQ29s
dW1uKG5hbWU9M0QiTUVOR0VfRiIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKKyAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXRNZW5nZUYoKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1lbmdlRjsK
KyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNZW5nZUYoQmlnRGVjaW1hbCBtZW5nZUYpIHsK
KyAgICAgICAgdGhpcy5tZW5nZUYgPTNEIG1lbmdlRjsKKyAgICB9CisKKworICAgIEBDb2x1bW4o
bmFtZT0zRCJHVFJJRUJfRiIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKKyAgICBwdWJsaWMg
QmlnRGVjaW1hbCBnZXRHdHJpZWJGKCkgeworICAgICAgICByZXR1cm4gdGhpcy5ndHJpZWJGOwor
ICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEd0cmllYkYoQmlnRGVjaW1hbCBndHJpZWJGKSB7
CisgICAgICAgIHRoaXMuZ3RyaWViRiA9M0QgZ3RyaWViRjsKKyAgICB9Cit9CmRpZmYgLXIgYmM0
ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0
ZWxlbWVudD0Kcy9yaXZlci9zZWRkYi9tb2RlbC9HcHJvYmVJZC5qYXZhCi0tLSAvZGV2L251bGwJ
VGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL2JhY2tlbmQvc3JjL21haW4vamF2
YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZlci9zZWRkYi9tb2RlbC9HcHJvYmVJZC5qYT0KdmEJTW9u
IEFwciAyOSAxMTozMzowMSAyMDEzICswMjAwCkBAIC0wLDAgKzEsNzMgQEAKKy8qIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1B
NHNzZXJrPQp1bmRlCisgKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgK
KyAqCisgKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49
M0R2Myk9MjAKKyAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNr
IG91dCB0aGUKKyAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZl
ciBmb3IgZGV0YWlscy49MjAKKyAqLworCitwYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnNlZGRi
Lm1vZGVsOworLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRv
b2xzIDMuNC4wLkNSMQorCisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBv
cnQgamF2YXgucGVyc2lzdGVuY2UuRW1iZWRkYWJsZTsKKworLyoqCisgKiBHcHJvYmVJZCBnZW5l
cmF0ZWQgYnkgaGJtMmphdmEKKyAqLworQEVtYmVkZGFibGUKK3B1YmxpYyBjbGFzcyBHcHJvYmVJ
ZCAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7CisKKworICAgICBwcml2YXRlIGxv
bmcgZ2xvdHJlY2h0ZWlkOworICAgICBwcml2YXRlIGludCBsZmRucjsKKworICAgIHB1YmxpYyBH
cHJvYmVJZCgpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgR3Byb2JlSWQobG9uZyBnbG90cmVjaHRl
aWQsIGludCBsZmRucikgeworICAgICAgIHRoaXMuZ2xvdHJlY2h0ZWlkID0zRCBnbG90cmVjaHRl
aWQ7CisgICAgICAgdGhpcy5sZmRuciA9M0QgbGZkbnI7CisgICAgfQorCisKKworICAgIEBDb2x1
bW4obmFtZT0zRCJHTE9UUkVDSFRFSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Qx
MSwgc2NhbGU9Cj0zRDApCisgICAgcHVibGljIGxvbmcgZ2V0R2xvdHJlY2h0ZWlkKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy5nbG90cmVjaHRlaWQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQg
c2V0R2xvdHJlY2h0ZWlkKGxvbmcgZ2xvdHJlY2h0ZWlkKSB7CisgICAgICAgIHRoaXMuZ2xvdHJl
Y2h0ZWlkID0zRCBnbG90cmVjaHRlaWQ7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0Qi
TEZETlIiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q1LCBzY2FsZT0zRDApCisgICAg
cHVibGljIGludCBnZXRMZmRucigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubGZkbnI7CisgICAg
fQorCisgICAgcHVibGljIHZvaWQgc2V0TGZkbnIoaW50IGxmZG5yKSB7CisgICAgICAgIHRoaXMu
bGZkbnIgPTNEIGxmZG5yOworICAgIH0KKworCisgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2Jq
ZWN0IG90aGVyKSB7CisgICAgICAgICBpZiAoICh0aGlzID0zRD0zRCBvdGhlciApICkgcmV0dXJu
IHRydWU7CisgICAgICAgICBpZiAoIChvdGhlciA9M0Q9M0QgbnVsbCApICkgcmV0dXJuIGZhbHNl
OworICAgICAgICAgaWYgKCAhKG90aGVyIGluc3RhbmNlb2YgR3Byb2JlSWQpICkgcmV0dXJuIGZh
bHNlOworICAgICAgICAgR3Byb2JlSWQgY2FzdE90aGVyID0zRCAoIEdwcm9iZUlkICkgb3RoZXI7
CisKKyAgICAgICAgIHJldHVybiAodGhpcy5nZXRHbG90cmVjaHRlaWQoKT0zRD0zRGNhc3RPdGhl
ci5nZXRHbG90cmVjaHRlaWQoKSkKKyAmJiAodGhpcy5nZXRMZmRucigpPTNEPTNEY2FzdE90aGVy
LmdldExmZG5yKCkpOworICAgfQorCisgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAg
ICAgaW50IHJlc3VsdCA9M0QgMTc7CisKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQg
KyAoaW50KSB0aGlzLmdldEdsb3RyZWNodGVpZCgpOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAq
IHJlc3VsdCArIHRoaXMuZ2V0TGZkbnIoKTsKKyAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICB9
Cit9CmRpZmYgLXIgYmM0ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9tYWlu
L2phdmEvb3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZlci9zZWRkYi9tb2RlbC9Hc2llYnNhdHouamF2
YQotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9iYWNr
ZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvR3Np
ZWJzYXR6Lmo9CmF2YQlNb24gQXByIDI5IDExOjMzOjAxIDIwMTMgKzAyMDAKQEAgLTAsMCArMSwz
NzEgQEAKKy8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0
IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCisgKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBi
eSBJbnRldmF0aW9uIEdtYkgKKyAqCisgKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRl
ciB0aGUgR05VIEFHUEwgKD49M0R2Myk9MjAKKyAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkg
Tk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUKKyAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGgg
RGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy49MjAKKyAqLworCitwYWNrYWdlIG9yZy5k
aXZlNGVsZW1lbnRzLnNlZGRiLm1vZGVsOworLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6
NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQorCisKK2ltcG9ydCBqYXZhLm1hdGguQmln
RGVjaW1hbDsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0
OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0
ZW5jZS5FbnRpdHk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRmV0Y2hUeXBlOworaW1wb3J0
IGphdmF4LnBlcnNpc3RlbmNlLklkOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk9uZVRvTWFu
eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0
ZW5jZS5VbmlxdWVDb25zdHJhaW50OworCisvKioKKyAqIEdzaWVic2F0eiBnZW5lcmF0ZWQgYnkg
aGJtMmphdmEKKyAqLworQEVudGl0eQorQFRhYmxlKG5hbWU9M0QiR1NJRUJTQVRaIgorICAgICxz
Y2hlbWE9M0QiU0VEREIiCisgICAgLCB1bmlxdWVDb25zdHJhaW50cyA9M0QgQFVuaXF1ZUNvbnN0
cmFpbnQoY29sdW1uTmFtZXM9M0QiTkFNRSIpCispCitwdWJsaWMgY2xhc3MgR3NpZWJzYXR6ICBp
bXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKKworCisgICAgIHByaXZhdGUgbG9uZyBn
c2llYnNhdHppZDsKKyAgICAgcHJpdmF0ZSBTdHJpbmcgbmFtZTsKKyAgICAgcHJpdmF0ZSBib29s
ZWFuIGlzdGFrdGl2OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgc2llYjAxOworICAgICBwcml2
YXRlIEJpZ0RlY2ltYWwgc2llYjAyOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgc2llYjAzOwor
ICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgc2llYjA0OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
c2llYjA1OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgc2llYjA2OworICAgICBwcml2YXRlIEJp
Z0RlY2ltYWwgc2llYjA3OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgc2llYjA4OworICAgICBw
cml2YXRlIEJpZ0RlY2ltYWwgc2llYjA5OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgc2llYjEw
OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgc2llYjExOworICAgICBwcml2YXRlIEJpZ0RlY2lt
YWwgc2llYjEyOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgc2llYjEzOworICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgc2llYjE0OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgc2llYjE1OworICAg
ICBwcml2YXRlIEJpZ0RlY2ltYWwgc2llYjE2OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgc2ll
YjE3OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgc2llYjE4OworICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgc2llYjE5OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgc2llYjIwOworICAgICBwcml2
YXRlIEJpZ0RlY2ltYWwgc2llYjIxOworICAgICBwcml2YXRlIFN0cmluZyBiZW1lcmt1bmc7Cisg
ICAgIHByaXZhdGUgU2V0PFNzaWVidW5nPiBzc2llYnVuZ3MgPTNEIG5ldyBIYXNoU2V0PFNzaWVi
dW5nPigwKTsKKyAgICAgcHJpdmF0ZSBTZXQ8TWVzc3VuZz4gbWVzc3VuZ3MgPTNEIG5ldyBIYXNo
U2V0PE1lc3N1bmc+KDApOworCisgICAgcHVibGljIEdzaWVic2F0eigpIHsKKyAgICB9CisKKwor
ICAgIHB1YmxpYyBHc2llYnNhdHoobG9uZyBnc2llYnNhdHppZCwgU3RyaW5nIG5hbWUsIGJvb2xl
YW4gaXN0YWt0aXYpIHsKKyAgICAgICAgdGhpcy5nc2llYnNhdHppZCA9M0QgZ3NpZWJzYXR6aWQ7
CisgICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKKyAgICAgICAgdGhpcy5pc3Rha3RpdiA9M0Qg
aXN0YWt0aXY7CisgICAgfQorICAgIHB1YmxpYyBHc2llYnNhdHoobG9uZyBnc2llYnNhdHppZCwg
U3RyaW5nIG5hbWUsIGJvb2xlYW4gaXN0YWt0aXYsIEJpZ0Q9CmVjaW1hbCBzaWViMDEsIEJpZ0Rl
Y2ltYWwgc2llYjAyLCBCaWdEZWNpbWFsIHNpZWIwMywgQmlnRGVjaW1hbCBzaWViMDQsIEJpZz0K
RGVjaW1hbCBzaWViMDUsIEJpZ0RlY2ltYWwgc2llYjA2LCBCaWdEZWNpbWFsIHNpZWIwNywgQmln
RGVjaW1hbCBzaWViMDgsIEJpPQpnRGVjaW1hbCBzaWViMDksIEJpZ0RlY2ltYWwgc2llYjEwLCBC
aWdEZWNpbWFsIHNpZWIxMSwgQmlnRGVjaW1hbCBzaWViMTIsIEI9CmlnRGVjaW1hbCBzaWViMTMs
IEJpZ0RlY2ltYWwgc2llYjE0LCBCaWdEZWNpbWFsIHNpZWIxNSwgQmlnRGVjaW1hbCBzaWViMTYs
ID0KQmlnRGVjaW1hbCBzaWViMTcsIEJpZ0RlY2ltYWwgc2llYjE4LCBCaWdEZWNpbWFsIHNpZWIx
OSwgQmlnRGVjaW1hbCBzaWViMjAsPQogQmlnRGVjaW1hbCBzaWViMjEsIFN0cmluZyBiZW1lcmt1
bmcsIFNldDxTc2llYnVuZz4gc3NpZWJ1bmdzLCBTZXQ8TWVzc3VuZz49CiBtZXNzdW5ncykgewor
ICAgICAgIHRoaXMuZ3NpZWJzYXR6aWQgPTNEIGdzaWVic2F0emlkOworICAgICAgIHRoaXMubmFt
ZSA9M0QgbmFtZTsKKyAgICAgICB0aGlzLmlzdGFrdGl2ID0zRCBpc3Rha3RpdjsKKyAgICAgICB0
aGlzLnNpZWIwMSA9M0Qgc2llYjAxOworICAgICAgIHRoaXMuc2llYjAyID0zRCBzaWViMDI7Cisg
ICAgICAgdGhpcy5zaWViMDMgPTNEIHNpZWIwMzsKKyAgICAgICB0aGlzLnNpZWIwNCA9M0Qgc2ll
YjA0OworICAgICAgIHRoaXMuc2llYjA1ID0zRCBzaWViMDU7CisgICAgICAgdGhpcy5zaWViMDYg
PTNEIHNpZWIwNjsKKyAgICAgICB0aGlzLnNpZWIwNyA9M0Qgc2llYjA3OworICAgICAgIHRoaXMu
c2llYjA4ID0zRCBzaWViMDg7CisgICAgICAgdGhpcy5zaWViMDkgPTNEIHNpZWIwOTsKKyAgICAg
ICB0aGlzLnNpZWIxMCA9M0Qgc2llYjEwOworICAgICAgIHRoaXMuc2llYjExID0zRCBzaWViMTE7
CisgICAgICAgdGhpcy5zaWViMTIgPTNEIHNpZWIxMjsKKyAgICAgICB0aGlzLnNpZWIxMyA9M0Qg
c2llYjEzOworICAgICAgIHRoaXMuc2llYjE0ID0zRCBzaWViMTQ7CisgICAgICAgdGhpcy5zaWVi
MTUgPTNEIHNpZWIxNTsKKyAgICAgICB0aGlzLnNpZWIxNiA9M0Qgc2llYjE2OworICAgICAgIHRo
aXMuc2llYjE3ID0zRCBzaWViMTc7CisgICAgICAgdGhpcy5zaWViMTggPTNEIHNpZWIxODsKKyAg
ICAgICB0aGlzLnNpZWIxOSA9M0Qgc2llYjE5OworICAgICAgIHRoaXMuc2llYjIwID0zRCBzaWVi
MjA7CisgICAgICAgdGhpcy5zaWViMjEgPTNEIHNpZWIyMTsKKyAgICAgICB0aGlzLmJlbWVya3Vu
ZyA9M0QgYmVtZXJrdW5nOworICAgICAgIHRoaXMuc3NpZWJ1bmdzID0zRCBzc2llYnVuZ3M7Cisg
ICAgICAgdGhpcy5tZXNzdW5ncyA9M0QgbWVzc3VuZ3M7CisgICAgfQorCisgICAgIEBJZAorCisK
KyAgICBAQ29sdW1uKG5hbWU9M0QiR1NJRUJTQVRaSUQiLCB1bmlxdWU9M0R0cnVlLCBudWxsYWJs
ZT0zRGZhbHNlLCBwcmVjaXNpPQpvbj0zRDExLCBzY2FsZT0zRDApCisgICAgcHVibGljIGxvbmcg
Z2V0R3NpZWJzYXR6aWQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmdzaWVic2F0emlkOworICAg
IH0KKworICAgIHB1YmxpYyB2b2lkIHNldEdzaWVic2F0emlkKGxvbmcgZ3NpZWJzYXR6aWQpIHsK
KyAgICAgICAgdGhpcy5nc2llYnNhdHppZCA9M0QgZ3NpZWJzYXR6aWQ7CisgICAgfQorCisKKyAg
ICBAQ29sdW1uKG5hbWU9M0QiTkFNRSIsIHVuaXF1ZT0zRHRydWUsIG51bGxhYmxlPTNEZmFsc2Us
IGxlbmd0aD0zRDIwKQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMubmFtZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBu
YW1lKSB7CisgICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKKyAgICB9CisKKworICAgIEBDb2x1
bW4obmFtZT0zRCJJU1RBS1RJViIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDEsIHNj
YWxlPTNEMCkKKyAgICBwdWJsaWMgYm9vbGVhbiBpc0lzdGFrdGl2KCkgeworICAgICAgICByZXR1
cm4gdGhpcy5pc3Rha3RpdjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRJc3Rha3Rpdihi
b29sZWFuIGlzdGFrdGl2KSB7CisgICAgICAgIHRoaXMuaXN0YWt0aXYgPTNEIGlzdGFrdGl2Owor
ICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlNJRUIwMSIsIHByZWNpc2lvbj0zRDcsIHNj
YWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRTaWViMDEoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLnNpZWIwMTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRTaWViMDEoQmln
RGVjaW1hbCBzaWViMDEpIHsKKyAgICAgICAgdGhpcy5zaWViMDEgPTNEIHNpZWIwMTsKKyAgICB9
CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJTSUVCMDIiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0z
RDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0U2llYjAyKCkgeworICAgICAgICByZXR1cm4g
dGhpcy5zaWViMDI7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0U2llYjAyKEJpZ0RlY2lt
YWwgc2llYjAyKSB7CisgICAgICAgIHRoaXMuc2llYjAyID0zRCBzaWViMDI7CisgICAgfQorCisK
KyAgICBAQ29sdW1uKG5hbWU9M0QiU0lFQjAzIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQor
ICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFNpZWIwMygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
c2llYjAzOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFNpZWIwMyhCaWdEZWNpbWFsIHNp
ZWIwMykgeworICAgICAgICB0aGlzLnNpZWIwMyA9M0Qgc2llYjAzOworICAgIH0KKworCisgICAg
QENvbHVtbihuYW1lPTNEIlNJRUIwNCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBw
dWJsaWMgQmlnRGVjaW1hbCBnZXRTaWViMDQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnNpZWIw
NDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRTaWViMDQoQmlnRGVjaW1hbCBzaWViMDQp
IHsKKyAgICAgICAgdGhpcy5zaWViMDQgPTNEIHNpZWIwNDsKKyAgICB9CisKKworICAgIEBDb2x1
bW4obmFtZT0zRCJTSUVCMDUiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGlj
IEJpZ0RlY2ltYWwgZ2V0U2llYjA1KCkgeworICAgICAgICByZXR1cm4gdGhpcy5zaWViMDU7Cisg
ICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0U2llYjA1KEJpZ0RlY2ltYWwgc2llYjA1KSB7Cisg
ICAgICAgIHRoaXMuc2llYjA1ID0zRCBzaWViMDU7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5h
bWU9M0QiU0lFQjA2IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdE
ZWNpbWFsIGdldFNpZWIwNigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc2llYjA2OworICAgIH0K
KworICAgIHB1YmxpYyB2b2lkIHNldFNpZWIwNihCaWdEZWNpbWFsIHNpZWIwNikgeworICAgICAg
ICB0aGlzLnNpZWIwNiA9M0Qgc2llYjA2OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNE
IlNJRUIwNyIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1h
bCBnZXRTaWViMDcoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnNpZWIwNzsKKyAgICB9CisKKyAg
ICBwdWJsaWMgdm9pZCBzZXRTaWViMDcoQmlnRGVjaW1hbCBzaWViMDcpIHsKKyAgICAgICAgdGhp
cy5zaWViMDcgPTNEIHNpZWIwNzsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJTSUVC
MDgiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0
U2llYjA4KCkgeworICAgICAgICByZXR1cm4gdGhpcy5zaWViMDg7CisgICAgfQorCisgICAgcHVi
bGljIHZvaWQgc2V0U2llYjA4KEJpZ0RlY2ltYWwgc2llYjA4KSB7CisgICAgICAgIHRoaXMuc2ll
YjA4ID0zRCBzaWViMDg7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiU0lFQjA5Iiwg
cHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFNpZWIw
OSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc2llYjA5OworICAgIH0KKworICAgIHB1YmxpYyB2
b2lkIHNldFNpZWIwOShCaWdEZWNpbWFsIHNpZWIwOSkgeworICAgICAgICB0aGlzLnNpZWIwOSA9
M0Qgc2llYjA5OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlNJRUIxMCIsIHByZWNp
c2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRTaWViMTAoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLnNpZWIxMDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBz
ZXRTaWViMTAoQmlnRGVjaW1hbCBzaWViMTApIHsKKyAgICAgICAgdGhpcy5zaWViMTAgPTNEIHNp
ZWIxMDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJTSUVCMTEiLCBwcmVjaXNpb249
M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0U2llYjExKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy5zaWViMTE7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0U2ll
YjExKEJpZ0RlY2ltYWwgc2llYjExKSB7CisgICAgICAgIHRoaXMuc2llYjExID0zRCBzaWViMTE7
CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiU0lFQjEyIiwgcHJlY2lzaW9uPTNENywg
c2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFNpZWIxMigpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuc2llYjEyOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFNpZWIxMihC
aWdEZWNpbWFsIHNpZWIxMikgeworICAgICAgICB0aGlzLnNpZWIxMiA9M0Qgc2llYjEyOworICAg
IH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlNJRUIxMyIsIHByZWNpc2lvbj0zRDcsIHNjYWxl
PTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRTaWViMTMoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLnNpZWIxMzsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRTaWViMTMoQmlnRGVj
aW1hbCBzaWViMTMpIHsKKyAgICAgICAgdGhpcy5zaWViMTMgPTNEIHNpZWIxMzsKKyAgICB9CisK
KworICAgIEBDb2x1bW4obmFtZT0zRCJTSUVCMTQiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQp
CisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0U2llYjE0KCkgeworICAgICAgICByZXR1cm4gdGhp
cy5zaWViMTQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0U2llYjE0KEJpZ0RlY2ltYWwg
c2llYjE0KSB7CisgICAgICAgIHRoaXMuc2llYjE0ID0zRCBzaWViMTQ7CisgICAgfQorCisKKyAg
ICBAQ29sdW1uKG5hbWU9M0QiU0lFQjE1IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldFNpZWIxNSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc2ll
YjE1OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFNpZWIxNShCaWdEZWNpbWFsIHNpZWIx
NSkgeworICAgICAgICB0aGlzLnNpZWIxNSA9M0Qgc2llYjE1OworICAgIH0KKworCisgICAgQENv
bHVtbihuYW1lPTNEIlNJRUIxNiIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXRTaWViMTYoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnNpZWIxNjsK
KyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRTaWViMTYoQmlnRGVjaW1hbCBzaWViMTYpIHsK
KyAgICAgICAgdGhpcy5zaWViMTYgPTNEIHNpZWIxNjsKKyAgICB9CisKKworICAgIEBDb2x1bW4o
bmFtZT0zRCJTSUVCMTciLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0U2llYjE3KCkgeworICAgICAgICByZXR1cm4gdGhpcy5zaWViMTc7CisgICAg
fQorCisgICAgcHVibGljIHZvaWQgc2V0U2llYjE3KEJpZ0RlY2ltYWwgc2llYjE3KSB7CisgICAg
ICAgIHRoaXMuc2llYjE3ID0zRCBzaWViMTc7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9
M0QiU0lFQjE4IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNp
bWFsIGdldFNpZWIxOCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc2llYjE4OworICAgIH0KKwor
ICAgIHB1YmxpYyB2b2lkIHNldFNpZWIxOChCaWdEZWNpbWFsIHNpZWIxOCkgeworICAgICAgICB0
aGlzLnNpZWIxOCA9M0Qgc2llYjE4OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlNJ
RUIxOSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXRTaWViMTkoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnNpZWIxOTsKKyAgICB9CisKKyAgICBw
dWJsaWMgdm9pZCBzZXRTaWViMTkoQmlnRGVjaW1hbCBzaWViMTkpIHsKKyAgICAgICAgdGhpcy5z
aWViMTkgPTNEIHNpZWIxOTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJTSUVCMjAi
LCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0U2ll
YjIwKCkgeworICAgICAgICByZXR1cm4gdGhpcy5zaWViMjA7CisgICAgfQorCisgICAgcHVibGlj
IHZvaWQgc2V0U2llYjIwKEJpZ0RlY2ltYWwgc2llYjIwKSB7CisgICAgICAgIHRoaXMuc2llYjIw
ID0zRCBzaWViMjA7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiU0lFQjIxIiwgcHJl
Y2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFNpZWIyMSgp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc2llYjIxOworICAgIH0KKworICAgIHB1YmxpYyB2b2lk
IHNldFNpZWIyMShCaWdEZWNpbWFsIHNpZWIyMSkgeworICAgICAgICB0aGlzLnNpZWIyMSA9M0Qg
c2llYjIxOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkJFTUVSS1VORyIsIGxlbmd0
aD0zRDI0MCkKKyAgICBwdWJsaWMgU3RyaW5nIGdldEJlbWVya3VuZygpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuYmVtZXJrdW5nOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEJlbWVya3Vu
ZyhTdHJpbmcgYmVtZXJrdW5nKSB7CisgICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1
bmc7CisgICAgfQorCitAT25lVG9NYW55KGZldGNoPTNERmV0Y2hUeXBlLkxBWlksIG1hcHBlZEJ5
PTNEImdzaWVic2F0eiIpCisgICAgcHVibGljIFNldDxTc2llYnVuZz4gZ2V0U3NpZWJ1bmdzKCkg
eworICAgICAgICByZXR1cm4gdGhpcy5zc2llYnVuZ3M7CisgICAgfQorCisgICAgcHVibGljIHZv
aWQgc2V0U3NpZWJ1bmdzKFNldDxTc2llYnVuZz4gc3NpZWJ1bmdzKSB7CisgICAgICAgIHRoaXMu
c3NpZWJ1bmdzID0zRCBzc2llYnVuZ3M7CisgICAgfQorCitAT25lVG9NYW55KGZldGNoPTNERmV0
Y2hUeXBlLkxBWlksIG1hcHBlZEJ5PTNEImdzaWVic2F0eiIpCisgICAgcHVibGljIFNldDxNZXNz
dW5nPiBnZXRNZXNzdW5ncygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubWVzc3VuZ3M7CisgICAg
fQorCisgICAgcHVibGljIHZvaWQgc2V0TWVzc3VuZ3MoU2V0PE1lc3N1bmc+IG1lc3N1bmdzKSB7
CisgICAgICAgIHRoaXMubWVzc3VuZ3MgPTNEIG1lc3N1bmdzOworICAgIH0KK30KZGlmZiAtciBi
YzRlMWJmMjYyMjcgLXIgMWU2OGVjYTI2YjhhIGJhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2
ZTRlbGVtZW50PQpzL3JpdmVyL3NlZGRiL21vZGVsL0dzaWVidW5nLmphdmEKLS0tIC9kZXYvbnVs
bAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvYmFja2VuZC9zcmMvbWFpbi9q
YXZhL29yZy9kaXZlNGVsZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVsL0dzaWVidW5nLmphPQp2YQlN
b24gQXByIDI5IDExOjMzOjAxIDIwMTMgKzAyMDAKQEAgLTAsMCArMSwzNTYgQEAKKy8qIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1D
Mz1BNHNzZXJrPQp1bmRlCisgKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdt
YkgKKyAqCisgKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwg
KD49M0R2Myk9MjAKKyAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENo
ZWNrIG91dCB0aGUKKyAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBS
aXZlciBmb3IgZGV0YWlscy49MjAKKyAqLworCitwYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnNl
ZGRiLm1vZGVsOworLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRl
IFRvb2xzIDMuNC4wLkNSMQorCisKK2ltcG9ydCBqYXZhLm1hdGguQmlnRGVjaW1hbDsKK2ltcG9y
dCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50
aXR5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsKK2ltcG9ydCBqYXZheC5w
ZXJzaXN0ZW5jZS5HZW5lcmF0ZWRWYWx1ZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsK
K2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5PbmVUb09uZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0
ZW5jZS5QcmltYXJ5S2V5Sm9pbkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJs
ZTsKK2ltcG9ydCBvcmcuaGliZXJuYXRlLmFubm90YXRpb25zLkdlbmVyaWNHZW5lcmF0b3I7Citp
bXBvcnQgb3JnLmhpYmVybmF0ZS5hbm5vdGF0aW9ucy5QYXJhbWV0ZXI7CisKKy8qKgorICogR3Np
ZWJ1bmcgZ2VuZXJhdGVkIGJ5IGhibTJqYXZhCisgKi8KK0BFbnRpdHkKK0BUYWJsZShuYW1lPTNE
IkdTSUVCVU5HIgorICAgICxzY2hlbWE9M0QiU0VEREIiCispCitwdWJsaWMgY2xhc3MgR3NpZWJ1
bmcgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgeworCisKKyAgICAgcHJpdmF0ZSBs
b25nIGdsb3RyZWNodGVpZDsKKyAgICAgcHJpdmF0ZSBHbG90cmVjaHRlIGdsb3RyZWNodGU7Cisg
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCBnbWFzc2U7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBy
c2llYjAxOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIwMjsKKyAgICAgcHJpdmF0ZSBC
aWdEZWNpbWFsIHJzaWViMDM7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjA0OworICAg
ICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIwNTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJz
aWViMDY7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjA3OworICAgICBwcml2YXRlIEJp
Z0RlY2ltYWwgcnNpZWIwODsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMDk7CisgICAg
IHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjEwOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNp
ZWIxMTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMTI7CisgICAgIHByaXZhdGUgQmln
RGVjaW1hbCByc2llYjEzOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIxNDsKKyAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMTU7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2ll
YjE2OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIxNzsKKyAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIHJzaWViMTg7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjE5OworICAgICBw
cml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIyMDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWVi
MjE7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCByZXN0OworICAgICBwcml2YXRlIFN0cmluZyBi
ZW1lcmt1bmc7CisKKyAgICBwdWJsaWMgR3NpZWJ1bmcoKSB7CisgICAgfQorCisgICAgcHVibGlj
IEdzaWVidW5nKEdsb3RyZWNodGUgZ2xvdHJlY2h0ZSkgeworICAgICAgICB0aGlzLmdsb3RyZWNo
dGUgPTNEIGdsb3RyZWNodGU7CisgICAgfQorICAgIHB1YmxpYyBHc2llYnVuZyhHbG90cmVjaHRl
IGdsb3RyZWNodGUsIEJpZ0RlY2ltYWwgZ21hc3NlLCBCaWdEZWNpbWFsIHI9CnNpZWIwMSwgQmln
RGVjaW1hbCByc2llYjAyLCBCaWdEZWNpbWFsIHJzaWViMDMsIEJpZ0RlY2ltYWwgcnNpZWIwNCwg
QmlnRGVjaT0KbWFsIHJzaWViMDUsIEJpZ0RlY2ltYWwgcnNpZWIwNiwgQmlnRGVjaW1hbCByc2ll
YjA3LCBCaWdEZWNpbWFsIHJzaWViMDgsIEJpPQpnRGVjaW1hbCByc2llYjA5LCBCaWdEZWNpbWFs
IHJzaWViMTAsIEJpZ0RlY2ltYWwgcnNpZWIxMSwgQmlnRGVjaW1hbCByc2llYjE9CjIsIEJpZ0Rl
Y2ltYWwgcnNpZWIxMywgQmlnRGVjaW1hbCByc2llYjE0LCBCaWdEZWNpbWFsIHJzaWViMTUsIEJp
Z0RlY2ltYWwgcj0Kc2llYjE2LCBCaWdEZWNpbWFsIHJzaWViMTcsIEJpZ0RlY2ltYWwgcnNpZWIx
OCwgQmlnRGVjaW1hbCByc2llYjE5LCBCaWdEZWNpPQptYWwgcnNpZWIyMCwgQmlnRGVjaW1hbCBy
c2llYjIxLCBCaWdEZWNpbWFsIHJlc3QsIFN0cmluZyBiZW1lcmt1bmcpIHsKKyAgICAgICB0aGlz
Lmdsb3RyZWNodGUgPTNEIGdsb3RyZWNodGU7CisgICAgICAgdGhpcy5nbWFzc2UgPTNEIGdtYXNz
ZTsKKyAgICAgICB0aGlzLnJzaWViMDEgPTNEIHJzaWViMDE7CisgICAgICAgdGhpcy5yc2llYjAy
ID0zRCByc2llYjAyOworICAgICAgIHRoaXMucnNpZWIwMyA9M0QgcnNpZWIwMzsKKyAgICAgICB0
aGlzLnJzaWViMDQgPTNEIHJzaWViMDQ7CisgICAgICAgdGhpcy5yc2llYjA1ID0zRCByc2llYjA1
OworICAgICAgIHRoaXMucnNpZWIwNiA9M0QgcnNpZWIwNjsKKyAgICAgICB0aGlzLnJzaWViMDcg
PTNEIHJzaWViMDc7CisgICAgICAgdGhpcy5yc2llYjA4ID0zRCByc2llYjA4OworICAgICAgIHRo
aXMucnNpZWIwOSA9M0QgcnNpZWIwOTsKKyAgICAgICB0aGlzLnJzaWViMTAgPTNEIHJzaWViMTA7
CisgICAgICAgdGhpcy5yc2llYjExID0zRCByc2llYjExOworICAgICAgIHRoaXMucnNpZWIxMiA9
M0QgcnNpZWIxMjsKKyAgICAgICB0aGlzLnJzaWViMTMgPTNEIHJzaWViMTM7CisgICAgICAgdGhp
cy5yc2llYjE0ID0zRCByc2llYjE0OworICAgICAgIHRoaXMucnNpZWIxNSA9M0QgcnNpZWIxNTsK
KyAgICAgICB0aGlzLnJzaWViMTYgPTNEIHJzaWViMTY7CisgICAgICAgdGhpcy5yc2llYjE3ID0z
RCByc2llYjE3OworICAgICAgIHRoaXMucnNpZWIxOCA9M0QgcnNpZWIxODsKKyAgICAgICB0aGlz
LnJzaWViMTkgPTNEIHJzaWViMTk7CisgICAgICAgdGhpcy5yc2llYjIwID0zRCByc2llYjIwOwor
ICAgICAgIHRoaXMucnNpZWIyMSA9M0QgcnNpZWIyMTsKKyAgICAgICB0aGlzLnJlc3QgPTNEIHJl
c3Q7CisgICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKKyAgICB9CisKKyAgICAg
QEdlbmVyaWNHZW5lcmF0b3IobmFtZT0zRCJnZW5lcmF0b3IiLCBzdHJhdGVneT0zRCJmb3JlaWdu
IiwgcGFyYW1ldGVyPQpzPTNEQFBhcmFtZXRlcihuYW1lPTNEInByb3BlcnR5IiwgdmFsdWU9M0Qi
Z2xvdHJlY2h0ZSIpKUBJZCBAR2VuZXJhdGVkVmFsdWU9CihnZW5lcmF0b3I9M0QiZ2VuZXJhdG9y
IikKKworCisgICAgQENvbHVtbihuYW1lPTNEIkdMT1RSRUNIVEVJRCIsIHVuaXF1ZT0zRHRydWUs
IG51bGxhYmxlPTNEZmFsc2UsIHByZWNpcz0KaW9uPTNEMTEsIHNjYWxlPTNEMCkKKyAgICBwdWJs
aWMgbG9uZyBnZXRHbG90cmVjaHRlaWQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmdsb3RyZWNo
dGVpZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRHbG90cmVjaHRlaWQobG9uZyBnbG90
cmVjaHRlaWQpIHsKKyAgICAgICAgdGhpcy5nbG90cmVjaHRlaWQgPTNEIGdsb3RyZWNodGVpZDsK
KyAgICB9CisKK0BPbmVUb09uZShmZXRjaD0zREZldGNoVHlwZS5MQVpZKUBQcmltYXJ5S2V5Sm9p
bkNvbHVtbgorICAgIHB1YmxpYyBHbG90cmVjaHRlIGdldEdsb3RyZWNodGUoKSB7CisgICAgICAg
IHJldHVybiB0aGlzLmdsb3RyZWNodGU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0R2xv
dHJlY2h0ZShHbG90cmVjaHRlIGdsb3RyZWNodGUpIHsKKyAgICAgICAgdGhpcy5nbG90cmVjaHRl
ID0zRCBnbG90cmVjaHRlOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkdNQVNTRSIs
IHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRHbWFz
c2UoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmdtYXNzZTsKKyAgICB9CisKKyAgICBwdWJsaWMg
dm9pZCBzZXRHbWFzc2UoQmlnRGVjaW1hbCBnbWFzc2UpIHsKKyAgICAgICAgdGhpcy5nbWFzc2Ug
PTNEIGdtYXNzZTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJSU0lFQjAxIiwgcHJl
Y2lzaW9uPTNEOSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMDEo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLnJzaWViMDE7CisgICAgfQorCisgICAgcHVibGljIHZv
aWQgc2V0UnNpZWIwMShCaWdEZWNpbWFsIHJzaWViMDEpIHsKKyAgICAgICAgdGhpcy5yc2llYjAx
ID0zRCByc2llYjAxOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlJTSUVCMDIiLCBw
cmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIw
MigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIwMjsKKyAgICB9CisKKyAgICBwdWJsaWMg
dm9pZCBzZXRSc2llYjAyKEJpZ0RlY2ltYWwgcnNpZWIwMikgeworICAgICAgICB0aGlzLnJzaWVi
MDIgPTNEIHJzaWViMDI7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIwMyIs
IHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSc2ll
YjAzKCkgeworICAgICAgICByZXR1cm4gdGhpcy5yc2llYjAzOworICAgIH0KKworICAgIHB1Ymxp
YyB2b2lkIHNldFJzaWViMDMoQmlnRGVjaW1hbCByc2llYjAzKSB7CisgICAgICAgIHRoaXMucnNp
ZWIwMyA9M0QgcnNpZWIwMzsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJSU0lFQjA0
IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJz
aWViMDQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnJzaWViMDQ7CisgICAgfQorCisgICAgcHVi
bGljIHZvaWQgc2V0UnNpZWIwNChCaWdEZWNpbWFsIHJzaWViMDQpIHsKKyAgICAgICAgdGhpcy5y
c2llYjA0ID0zRCByc2llYjA0OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlJTSUVC
MDUiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0
UnNpZWIwNSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIwNTsKKyAgICB9CisKKyAgICBw
dWJsaWMgdm9pZCBzZXRSc2llYjA1KEJpZ0RlY2ltYWwgcnNpZWIwNSkgeworICAgICAgICB0aGlz
LnJzaWViMDUgPTNEIHJzaWViMDU7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiUlNJ
RUIwNiIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXRSc2llYjA2KCkgeworICAgICAgICByZXR1cm4gdGhpcy5yc2llYjA2OworICAgIH0KKworICAg
IHB1YmxpYyB2b2lkIHNldFJzaWViMDYoQmlnRGVjaW1hbCByc2llYjA2KSB7CisgICAgICAgIHRo
aXMucnNpZWIwNiA9M0QgcnNpZWIwNjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJS
U0lFQjA3IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFs
IGdldFJzaWViMDcoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnJzaWViMDc7CisgICAgfQorCisg
ICAgcHVibGljIHZvaWQgc2V0UnNpZWIwNyhCaWdEZWNpbWFsIHJzaWViMDcpIHsKKyAgICAgICAg
dGhpcy5yc2llYjA3ID0zRCByc2llYjA3OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNE
IlJTSUVCMDgiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2lt
YWwgZ2V0UnNpZWIwOCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIwODsKKyAgICB9CisK
KyAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjA4KEJpZ0RlY2ltYWwgcnNpZWIwOCkgeworICAgICAg
ICB0aGlzLnJzaWViMDggPTNEIHJzaWViMDg7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9
M0QiUlNJRUIwOSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVj
aW1hbCBnZXRSc2llYjA5KCkgeworICAgICAgICByZXR1cm4gdGhpcy5yc2llYjA5OworICAgIH0K
KworICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMDkoQmlnRGVjaW1hbCByc2llYjA5KSB7CisgICAg
ICAgIHRoaXMucnNpZWIwOSA9M0QgcnNpZWIwOTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFt
ZT0zRCJSU0lFQjEwIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdE
ZWNpbWFsIGdldFJzaWViMTAoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnJzaWViMTA7CisgICAg
fQorCisgICAgcHVibGljIHZvaWQgc2V0UnNpZWIxMChCaWdEZWNpbWFsIHJzaWViMTApIHsKKyAg
ICAgICAgdGhpcy5yc2llYjEwID0zRCByc2llYjEwOworICAgIH0KKworCisgICAgQENvbHVtbihu
YW1lPTNEIlJTSUVCMTEiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0UnNpZWIxMSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIxMTsKKyAg
ICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjExKEJpZ0RlY2ltYWwgcnNpZWIxMSkgewor
ICAgICAgICB0aGlzLnJzaWViMTEgPTNEIHJzaWViMTE7CisgICAgfQorCisKKyAgICBAQ29sdW1u
KG5hbWU9M0QiUlNJRUIxMiIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKKyAgICBwdWJsaWMg
QmlnRGVjaW1hbCBnZXRSc2llYjEyKCkgeworICAgICAgICByZXR1cm4gdGhpcy5yc2llYjEyOwor
ICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMTIoQmlnRGVjaW1hbCByc2llYjEyKSB7
CisgICAgICAgIHRoaXMucnNpZWIxMiA9M0QgcnNpZWIxMjsKKyAgICB9CisKKworICAgIEBDb2x1
bW4obmFtZT0zRCJSU0lFQjEzIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQorICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldFJzaWViMTMoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnJzaWViMTM7
CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0UnNpZWIxMyhCaWdEZWNpbWFsIHJzaWViMTMp
IHsKKyAgICAgICAgdGhpcy5yc2llYjEzID0zRCByc2llYjEzOworICAgIH0KKworCisgICAgQENv
bHVtbihuYW1lPTNEIlJTSUVCMTQiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCisgICAgcHVi
bGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIxNCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIx
NDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjE0KEJpZ0RlY2ltYWwgcnNpZWIx
NCkgeworICAgICAgICB0aGlzLnJzaWViMTQgPTNEIHJzaWViMTQ7CisgICAgfQorCisKKyAgICBA
Q29sdW1uKG5hbWU9M0QiUlNJRUIxNSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKKyAgICBw
dWJsaWMgQmlnRGVjaW1hbCBnZXRSc2llYjE1KCkgeworICAgICAgICByZXR1cm4gdGhpcy5yc2ll
YjE1OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMTUoQmlnRGVjaW1hbCByc2ll
YjE1KSB7CisgICAgICAgIHRoaXMucnNpZWIxNSA9M0QgcnNpZWIxNTsKKyAgICB9CisKKworICAg
IEBDb2x1bW4obmFtZT0zRCJSU0lFQjE2IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQorICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMTYoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnJz
aWViMTY7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0UnNpZWIxNihCaWdEZWNpbWFsIHJz
aWViMTYpIHsKKyAgICAgICAgdGhpcy5yc2llYjE2ID0zRCByc2llYjE2OworICAgIH0KKworCisg
ICAgQENvbHVtbihuYW1lPTNEIlJTSUVCMTciLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCisg
ICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIxNygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
cnNpZWIxNzsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjE3KEJpZ0RlY2ltYWwg
cnNpZWIxNykgeworICAgICAgICB0aGlzLnJzaWViMTcgPTNEIHJzaWViMTc7CisgICAgfQorCisK
KyAgICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIxOCIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykK
KyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSc2llYjE4KCkgeworICAgICAgICByZXR1cm4gdGhp
cy5yc2llYjE4OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMTgoQmlnRGVjaW1h
bCByc2llYjE4KSB7CisgICAgICAgIHRoaXMucnNpZWIxOCA9M0QgcnNpZWIxODsKKyAgICB9CisK
KworICAgIEBDb2x1bW4obmFtZT0zRCJSU0lFQjE5IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0Qz
KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMTkoKSB7CisgICAgICAgIHJldHVybiB0
aGlzLnJzaWViMTk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0UnNpZWIxOShCaWdEZWNp
bWFsIHJzaWViMTkpIHsKKyAgICAgICAgdGhpcy5yc2llYjE5ID0zRCByc2llYjE5OworICAgIH0K
KworCisgICAgQENvbHVtbihuYW1lPTNEIlJTSUVCMjAiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0z
RDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIyMCgpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMucnNpZWIyMDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjIwKEJpZ0Rl
Y2ltYWwgcnNpZWIyMCkgeworICAgICAgICB0aGlzLnJzaWViMjAgPTNEIHJzaWViMjA7CisgICAg
fQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIyMSIsIHByZWNpc2lvbj0zRDksIHNjYWxl
PTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSc2llYjIxKCkgeworICAgICAgICByZXR1
cm4gdGhpcy5yc2llYjIxOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMjEoQmln
RGVjaW1hbCByc2llYjIxKSB7CisgICAgICAgIHRoaXMucnNpZWIyMSA9M0QgcnNpZWIyMTsKKyAg
ICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJSRVNUIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9
M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJlc3QoKSB7CisgICAgICAgIHJldHVybiB0
aGlzLnJlc3Q7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0UmVzdChCaWdEZWNpbWFsIHJl
c3QpIHsKKyAgICAgICAgdGhpcy5yZXN0ID0zRCByZXN0OworICAgIH0KKworCisgICAgQENvbHVt
bihuYW1lPTNEIkJFTUVSS1VORyIsIGxlbmd0aD0zRDI0MCkKKyAgICBwdWJsaWMgU3RyaW5nIGdl
dEJlbWVya3VuZygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYmVtZXJrdW5nOworICAgIH0KKwor
ICAgIHB1YmxpYyB2b2lkIHNldEJlbWVya3VuZyhTdHJpbmcgYmVtZXJrdW5nKSB7CisgICAgICAg
IHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7CisgICAgfQorfQpkaWZmIC1yIGJjNGUxYmYy
NjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1l
bnQ9CnMvcml2ZXIvc2VkZGIvbW9kZWwvR3NpZWJ1bmdzaWViLmphdmEKLS0tIC9kZXYvbnVsbAlU
aHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvYmFja2VuZC9zcmMvbWFpbi9qYXZh
L29yZy9kaXZlNGVsZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVsL0dzaWVidW5nc2llPQpiLmphdmEJ
TW9uIEFwciAyOSAxMTozMzowMSAyMDEzICswMjAwCkBAIC0wLDAgKzEsOTYgQEAKKy8qIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1D
Mz1BNHNzZXJrPQp1bmRlCisgKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdt
YkgKKyAqCisgKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwg
KD49M0R2Myk9MjAKKyAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENo
ZWNrIG91dCB0aGUKKyAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBS
aXZlciBmb3IgZGV0YWlscy49MjAKKyAqLworCitwYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnNl
ZGRiLm1vZGVsOworLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRl
IFRvb2xzIDMuNC4wLkNSMQorCisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5BdHRyaWJ1dGVP
dmVycmlkZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5BdHRyaWJ1dGVPdmVycmlkZXM7Citp
bXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNl
LkVtYmVkZGVkSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OworaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLlRhYmxlOworCisvKioKKyAqIEdzaWVidW5nc2llYiBnZW5lcmF0ZWQg
YnkgaGJtMmphdmEKKyAqLworQEVudGl0eQorQFRhYmxlKG5hbWU9M0QiR1NJRUJVTkdTSUVCIgor
ICAgICxzY2hlbWE9M0QiU0VEREIiCispCitwdWJsaWMgY2xhc3MgR3NpZWJ1bmdzaWViICBpbXBs
ZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKKworCisgICAgIHByaXZhdGUgR3NpZWJ1bmdz
aWViSWQgaWQ7CisKKyAgICBwdWJsaWMgR3NpZWJ1bmdzaWViKCkgeworICAgIH0KKworICAgIHB1
YmxpYyBHc2llYnVuZ3NpZWIoR3NpZWJ1bmdzaWViSWQgaWQpIHsKKyAgICAgICB0aGlzLmlkID0z
RCBpZDsKKyAgICB9CisKKyAgICAgQEVtYmVkZGVkSWQKKworCisgICAgQEF0dHJpYnV0ZU92ZXJy
aWRlcyggeworICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJnbG90cmVjaHRlaWQi
LCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0Q9CiJHTE9UUkVDSFRFSUQiLCBudWxsYWJsZT0zRGZh
bHNlLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QwKSApLAorICAgICAgICBAQXR0cmlidXRlT3Zl
cnJpZGUobmFtZT0zRCJnc2llYnNhdHppZCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCI9CkdT
SUVCU0FUWklEIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEMCkg
KSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZ21hc3NlIiwgY29sdW1uPTNE
QENvbHVtbihuYW1lPTNEIkdNQVNTPQpFIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAor
ICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUwMSIsIGNvbHVtbj0zREBD
b2x1bW4obmFtZT0zRCJNQVM9CkNIRTAxIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAor
ICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazAxIiwgY29sdW1uPTNEQENv
bHVtbihuYW1lPTNEIlJVRUM9CkswMSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKKyAg
ICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hlMDIiLCBjb2x1bW49M0RAQ29s
dW1uKG5hbWU9M0QiTUFTPQpDSEUwMiIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKKyAg
ICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2swMiIsIGNvbHVtbj0zREBDb2x1
bW4obmFtZT0zRCJSVUVDPQpLMDIiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCisgICAg
ICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTAzIiwgY29sdW1uPTNEQENvbHVt
bihuYW1lPTNEIk1BUz0KQ0hFMDMiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCisgICAg
ICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMDMiLCBjb2x1bW49M0RAQ29sdW1u
KG5hbWU9M0QiUlVFQz0KSzAzIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAorICAgICAg
ICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUwNCIsIGNvbHVtbj0zREBDb2x1bW4o
bmFtZT0zRCJNQVM9CkNIRTA0IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAorICAgICAg
ICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazA0IiwgY29sdW1uPTNEQENvbHVtbihu
YW1lPTNEIlJVRUM9CkswNCIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKKyAgICAgICAg
QEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hlMDUiLCBjb2x1bW49M0RAQ29sdW1uKG5h
bWU9M0QiTUFTPQpDSEUwNSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKKyAgICAgICAg
QEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2swNSIsIGNvbHVtbj0zREBDb2x1bW4obmFt
ZT0zRCJSVUVDPQpLMDUiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCisgICAgICAgIEBB
dHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTA2IiwgY29sdW1uPTNEQENvbHVtbihuYW1l
PTNEIk1BUz0KQ0hFMDYiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCisgICAgICAgIEBB
dHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMDYiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9
M0QiUlVFQz0KSzA2IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAorICAgICAgICBAQXR0
cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUwNyIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0z
RCJNQVM9CkNIRTA3IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAorICAgICAgICBAQXR0
cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazA3IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNE
IlJVRUM9CkswNyIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKKyAgICAgICAgQEF0dHJp
YnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hlMDgiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0Qi
TUFTPQpDSEUwOCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKKyAgICAgICAgQEF0dHJp
YnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2swOCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJS
VUVDPQpLMDgiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCisgICAgICAgIEBBdHRyaWJ1
dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTA5IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1B
Uz0KQ0hFMDkiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCisgICAgICAgIEBBdHRyaWJ1
dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMDkiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVF
Qz0KSzA5IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAorICAgICAgICBAQXR0cmlidXRl
T3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUxMCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9
CkNIRTEwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAorICAgICAgICBAQXR0cmlidXRl
T3ZlcnJpZGUobmFtZT0zRCJydWVjazEwIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9
CksxMCIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92
ZXJyaWRlKG5hbWU9M0QibWFzY2hlMTEiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpD
SEUxMSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92
ZXJyaWRlKG5hbWU9M0QicnVlY2sxMSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpL
MTEiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVy
cmlkZShuYW1lPTNEIm1hc2NoZTEyIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hF
MTIiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVy
cmlkZShuYW1lPTNEInJ1ZWNrMTIiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzEy
IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJp
ZGUobmFtZT0zRCJtYXNjaGUxMyIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNIRTEz
IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJp
ZGUobmFtZT0zRCJydWVjazEzIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9CksxMyIs
IHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRl
KG5hbWU9M0QibWFzY2hlMTQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpDSEUxNCIs
IHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRl
KG5hbWU9M0QicnVlY2sxNCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpLMTQiLCBw
cmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShu
YW1lPTNEIm1hc2NoZTE1IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMTUiLCBw
cmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShu
YW1lPTNEInJ1ZWNrMTUiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzE1IiwgcHJl
Y2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFt
ZT0zRCJtYXNjaGUxNiIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNIRTE2IiwgcHJl
Y2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFt
ZT0zRCJydWVjazE2IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9CksxNiIsIHByZWNp
c2lvbj0zRDksIHNjYWxlPTNEMykgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9
M0QibWFzY2hlMTciLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpDSEUxNyIsIHByZWNp
c2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9
M0QicnVlY2sxNyIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpLMTciLCBwcmVjaXNp
b249M0Q5LCBzY2FsZT0zRDMpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNE
Im1hc2NoZTE4IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMTgiLCBwcmVjaXNp
b249M0Q3LCBzY2FsZT0zRDQpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNE
InJ1ZWNrMTgiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzE4IiwgcHJlY2lzaW9u
PTNEOSwgc2NhbGU9M0QzKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJt
YXNjaGUxOSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNIRTE5IiwgcHJlY2lzaW9u
PTNENywgc2NhbGU9M0Q0KSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJy
dWVjazE5IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9CksxOSIsIHByZWNpc2lvbj0z
RDksIHNjYWxlPTNEMykgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFz
Y2hlMjAiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpDSEUyMCIsIHByZWNpc2lvbj0z
RDcsIHNjYWxlPTNENCkgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVl
Y2syMCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpLMjAiLCBwcmVjaXNpb249M0Q5
LCBzY2FsZT0zRDMpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2No
ZTIxIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMjEiLCBwcmVjaXNpb249M0Q3
LCBzY2FsZT0zRDQpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNr
MjEiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzIxIiwgcHJlY2lzaW9uPTNEOSwg
c2NhbGU9M0QzKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJyZXN0Iiwg
Y29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJFU1QiLCA9CnByZWNpc2lvbj0zRDksIHNjYWxlPTNE
MykgKSB9ICkKKyAgICBwdWJsaWMgR3NpZWJ1bmdzaWViSWQgZ2V0SWQoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLmlkOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldElkKEdzaWVidW5nc2ll
YklkIGlkKSB7CisgICAgICAgIHRoaXMuaWQgPTNEIGlkOworICAgIH0KK30KZGlmZiAtciBiYzRl
MWJmMjYyMjcgLXIgMWU2OGVjYTI2YjhhIGJhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRl
bGVtZW50PQpzL3JpdmVyL3NlZGRiL21vZGVsL0dzaWVidW5nc2llYklkLmphdmEKLS0tIC9kZXYv
bnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvYmFja2VuZC9zcmMvbWFp
bi9qYXZhL29yZy9kaXZlNGVsZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVsL0dzaWVidW5nc2llPQpi
SWQuamF2YQlNb24gQXByIDI5IDExOjMzOjAxIDIwMTMgKzAyMDAKQEAgLTAsMCArMSw2OTUgQEAK
Ky8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9
QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCisgKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRl
dmF0aW9uIEdtYkgKKyAqCisgKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUg
R05VIEFHUEwgKD49M0R2Myk9MjAKKyAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FS
UkFOVFkhIENoZWNrIG91dCB0aGUKKyAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRF
bGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy49MjAKKyAqLworCitwYWNrYWdlIG9yZy5kaXZlNGVs
ZW1lbnRzLnNlZGRiLm1vZGVsOworLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkg
SGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQorCisKK2ltcG9ydCBqYXZhLm1hdGguQmlnRGVjaW1h
bDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuRW1iZWRkYWJsZTsKKworLyoqCisgKiBHc2llYnVuZ3NpZWJJZCBnZW5lcmF0ZWQgYnkg
aGJtMmphdmEKKyAqLworQEVtYmVkZGFibGUKK3B1YmxpYyBjbGFzcyBHc2llYnVuZ3NpZWJJZCAg
aW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7CisKKworICAgICBwcml2YXRlIGxvbmcg
Z2xvdHJlY2h0ZWlkOworICAgICBwcml2YXRlIGxvbmcgZ3NpZWJzYXR6aWQ7CisgICAgIHByaXZh
dGUgQmlnRGVjaW1hbCBnbWFzc2U7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUwMTsK
KyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMDE7CisgICAgIHByaXZhdGUgQmlnRGVjaW1h
bCBtYXNjaGUwMjsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMDI7CisgICAgIHByaXZh
dGUgQmlnRGVjaW1hbCBtYXNjaGUwMzsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMDM7
CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUwNDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNp
bWFsIHJ1ZWNrMDQ7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUwNTsKKyAgICAgcHJp
dmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMDU7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUw
NjsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMDY7CisgICAgIHByaXZhdGUgQmlnRGVj
aW1hbCBtYXNjaGUwNzsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMDc7CisgICAgIHBy
aXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUwODsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNr
MDg7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUwOTsKKyAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIHJ1ZWNrMDk7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUxMDsKKyAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMTA7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNj
aGUxMTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMTE7CisgICAgIHByaXZhdGUgQmln
RGVjaW1hbCBtYXNjaGUxMjsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMTI7CisgICAg
IHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUxMzsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1
ZWNrMTM7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUxNDsKKyAgICAgcHJpdmF0ZSBC
aWdEZWNpbWFsIHJ1ZWNrMTQ7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUxNTsKKyAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMTU7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBt
YXNjaGUxNjsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMTY7CisgICAgIHByaXZhdGUg
QmlnRGVjaW1hbCBtYXNjaGUxNzsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMTc7Cisg
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUxODsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IHJ1ZWNrMTg7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUxOTsKKyAgICAgcHJpdmF0
ZSBCaWdEZWNpbWFsIHJ1ZWNrMTk7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUyMDsK
KyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMjA7CisgICAgIHByaXZhdGUgQmlnRGVjaW1h
bCBtYXNjaGUyMTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMjE7CisgICAgIHByaXZh
dGUgQmlnRGVjaW1hbCByZXN0OworCisgICAgcHVibGljIEdzaWVidW5nc2llYklkKCkgeworICAg
IH0KKworCisgICAgcHVibGljIEdzaWVidW5nc2llYklkKGxvbmcgZ2xvdHJlY2h0ZWlkLCBsb25n
IGdzaWVic2F0emlkKSB7CisgICAgICAgIHRoaXMuZ2xvdHJlY2h0ZWlkID0zRCBnbG90cmVjaHRl
aWQ7CisgICAgICAgIHRoaXMuZ3NpZWJzYXR6aWQgPTNEIGdzaWVic2F0emlkOworICAgIH0KKyAg
ICBwdWJsaWMgR3NpZWJ1bmdzaWViSWQobG9uZyBnbG90cmVjaHRlaWQsIGxvbmcgZ3NpZWJzYXR6
aWQsIEJpZ0RlY2ltYWwgPQpnbWFzc2UsIEJpZ0RlY2ltYWwgbWFzY2hlMDEsIEJpZ0RlY2ltYWwg
cnVlY2swMSwgQmlnRGVjaW1hbCBtYXNjaGUwMiwgQmlnRGU9CmNpbWFsIHJ1ZWNrMDIsIEJpZ0Rl
Y2ltYWwgbWFzY2hlMDMsIEJpZ0RlY2ltYWwgcnVlY2swMywgQmlnRGVjaW1hbCBtYXNjaGUwND0K
LCBCaWdEZWNpbWFsIHJ1ZWNrMDQsIEJpZ0RlY2ltYWwgbWFzY2hlMDUsIEJpZ0RlY2ltYWwgcnVl
Y2swNSwgQmlnRGVjaW1hbCBtPQphc2NoZTA2LCBCaWdEZWNpbWFsIHJ1ZWNrMDYsIEJpZ0RlY2lt
YWwgbWFzY2hlMDcsIEJpZ0RlY2ltYWwgcnVlY2swNywgQmlnRGU9CmNpbWFsIG1hc2NoZTA4LCBC
aWdEZWNpbWFsIHJ1ZWNrMDgsIEJpZ0RlY2ltYWwgbWFzY2hlMDksIEJpZ0RlY2ltYWwgcnVlY2sw
OT0KLCBCaWdEZWNpbWFsIG1hc2NoZTEwLCBCaWdEZWNpbWFsIHJ1ZWNrMTAsIEJpZ0RlY2ltYWwg
bWFzY2hlMTEsIEJpZ0RlY2ltYWwgPQpydWVjazExLCBCaWdEZWNpbWFsIG1hc2NoZTEyLCBCaWdE
ZWNpbWFsIHJ1ZWNrMTIsIEJpZ0RlY2ltYWwgbWFzY2hlMTMsIEJpZ0Q9CmVjaW1hbCBydWVjazEz
LCBCaWdEZWNpbWFsIG1hc2NoZTE0LCBCaWdEZWNpbWFsIHJ1ZWNrMTQsIEJpZ0RlY2ltYWwgbWFz
Y2hlMT0KNSwgQmlnRGVjaW1hbCBydWVjazE1LCBCaWdEZWNpbWFsIG1hc2NoZTE2LCBCaWdEZWNp
bWFsIHJ1ZWNrMTYsIEJpZ0RlY2ltYWwgPQptYXNjaGUxNywgQmlnRGVjaW1hbCBydWVjazE3LCBC
aWdEZWNpbWFsIG1hc2NoZTE4LCBCaWdEZWNpbWFsIHJ1ZWNrMTgsIEJpZ0Q9CmVjaW1hbCBtYXNj
aGUxOSwgQmlnRGVjaW1hbCBydWVjazE5LCBCaWdEZWNpbWFsIG1hc2NoZTIwLCBCaWdEZWNpbWFs
IHJ1ZWNrMj0KMCwgQmlnRGVjaW1hbCBtYXNjaGUyMSwgQmlnRGVjaW1hbCBydWVjazIxLCBCaWdE
ZWNpbWFsIHJlc3QpIHsKKyAgICAgICB0aGlzLmdsb3RyZWNodGVpZCA9M0QgZ2xvdHJlY2h0ZWlk
OworICAgICAgIHRoaXMuZ3NpZWJzYXR6aWQgPTNEIGdzaWVic2F0emlkOworICAgICAgIHRoaXMu
Z21hc3NlID0zRCBnbWFzc2U7CisgICAgICAgdGhpcy5tYXNjaGUwMSA9M0QgbWFzY2hlMDE7Cisg
ICAgICAgdGhpcy5ydWVjazAxID0zRCBydWVjazAxOworICAgICAgIHRoaXMubWFzY2hlMDIgPTNE
IG1hc2NoZTAyOworICAgICAgIHRoaXMucnVlY2swMiA9M0QgcnVlY2swMjsKKyAgICAgICB0aGlz
Lm1hc2NoZTAzID0zRCBtYXNjaGUwMzsKKyAgICAgICB0aGlzLnJ1ZWNrMDMgPTNEIHJ1ZWNrMDM7
CisgICAgICAgdGhpcy5tYXNjaGUwNCA9M0QgbWFzY2hlMDQ7CisgICAgICAgdGhpcy5ydWVjazA0
ID0zRCBydWVjazA0OworICAgICAgIHRoaXMubWFzY2hlMDUgPTNEIG1hc2NoZTA1OworICAgICAg
IHRoaXMucnVlY2swNSA9M0QgcnVlY2swNTsKKyAgICAgICB0aGlzLm1hc2NoZTA2ID0zRCBtYXNj
aGUwNjsKKyAgICAgICB0aGlzLnJ1ZWNrMDYgPTNEIHJ1ZWNrMDY7CisgICAgICAgdGhpcy5tYXNj
aGUwNyA9M0QgbWFzY2hlMDc7CisgICAgICAgdGhpcy5ydWVjazA3ID0zRCBydWVjazA3OworICAg
ICAgIHRoaXMubWFzY2hlMDggPTNEIG1hc2NoZTA4OworICAgICAgIHRoaXMucnVlY2swOCA9M0Qg
cnVlY2swODsKKyAgICAgICB0aGlzLm1hc2NoZTA5ID0zRCBtYXNjaGUwOTsKKyAgICAgICB0aGlz
LnJ1ZWNrMDkgPTNEIHJ1ZWNrMDk7CisgICAgICAgdGhpcy5tYXNjaGUxMCA9M0QgbWFzY2hlMTA7
CisgICAgICAgdGhpcy5ydWVjazEwID0zRCBydWVjazEwOworICAgICAgIHRoaXMubWFzY2hlMTEg
PTNEIG1hc2NoZTExOworICAgICAgIHRoaXMucnVlY2sxMSA9M0QgcnVlY2sxMTsKKyAgICAgICB0
aGlzLm1hc2NoZTEyID0zRCBtYXNjaGUxMjsKKyAgICAgICB0aGlzLnJ1ZWNrMTIgPTNEIHJ1ZWNr
MTI7CisgICAgICAgdGhpcy5tYXNjaGUxMyA9M0QgbWFzY2hlMTM7CisgICAgICAgdGhpcy5ydWVj
azEzID0zRCBydWVjazEzOworICAgICAgIHRoaXMubWFzY2hlMTQgPTNEIG1hc2NoZTE0OworICAg
ICAgIHRoaXMucnVlY2sxNCA9M0QgcnVlY2sxNDsKKyAgICAgICB0aGlzLm1hc2NoZTE1ID0zRCBt
YXNjaGUxNTsKKyAgICAgICB0aGlzLnJ1ZWNrMTUgPTNEIHJ1ZWNrMTU7CisgICAgICAgdGhpcy5t
YXNjaGUxNiA9M0QgbWFzY2hlMTY7CisgICAgICAgdGhpcy5ydWVjazE2ID0zRCBydWVjazE2Owor
ICAgICAgIHRoaXMubWFzY2hlMTcgPTNEIG1hc2NoZTE3OworICAgICAgIHRoaXMucnVlY2sxNyA9
M0QgcnVlY2sxNzsKKyAgICAgICB0aGlzLm1hc2NoZTE4ID0zRCBtYXNjaGUxODsKKyAgICAgICB0
aGlzLnJ1ZWNrMTggPTNEIHJ1ZWNrMTg7CisgICAgICAgdGhpcy5tYXNjaGUxOSA9M0QgbWFzY2hl
MTk7CisgICAgICAgdGhpcy5ydWVjazE5ID0zRCBydWVjazE5OworICAgICAgIHRoaXMubWFzY2hl
MjAgPTNEIG1hc2NoZTIwOworICAgICAgIHRoaXMucnVlY2syMCA9M0QgcnVlY2syMDsKKyAgICAg
ICB0aGlzLm1hc2NoZTIxID0zRCBtYXNjaGUyMTsKKyAgICAgICB0aGlzLnJ1ZWNrMjEgPTNEIHJ1
ZWNrMjE7CisgICAgICAgdGhpcy5yZXN0ID0zRCByZXN0OworICAgIH0KKworCisKKyAgICBAQ29s
dW1uKG5hbWU9M0QiR0xPVFJFQ0hURUlEIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNE
MTEsIHNjYWxlPQo9M0QwKQorICAgIHB1YmxpYyBsb25nIGdldEdsb3RyZWNodGVpZCgpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuZ2xvdHJlY2h0ZWlkOworICAgIH0KKworICAgIHB1YmxpYyB2b2lk
IHNldEdsb3RyZWNodGVpZChsb25nIGdsb3RyZWNodGVpZCkgeworICAgICAgICB0aGlzLmdsb3Ry
ZWNodGVpZCA9M0QgZ2xvdHJlY2h0ZWlkOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNE
IkdTSUVCU0FUWklEIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPQo9
M0QwKQorICAgIHB1YmxpYyBsb25nIGdldEdzaWVic2F0emlkKCkgeworICAgICAgICByZXR1cm4g
dGhpcy5nc2llYnNhdHppZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRHc2llYnNhdHpp
ZChsb25nIGdzaWVic2F0emlkKSB7CisgICAgICAgIHRoaXMuZ3NpZWJzYXR6aWQgPTNEIGdzaWVi
c2F0emlkOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkdNQVNTRSIsIHByZWNpc2lv
bj0zRDksIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRHbWFzc2UoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLmdtYXNzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRH
bWFzc2UoQmlnRGVjaW1hbCBnbWFzc2UpIHsKKyAgICAgICAgdGhpcy5nbWFzc2UgPTNEIGdtYXNz
ZTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUwMSIsIHByZWNpc2lvbj0z
RDcsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUwMSgpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMDE7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0
TWFzY2hlMDEoQmlnRGVjaW1hbCBtYXNjaGUwMSkgeworICAgICAgICB0aGlzLm1hc2NoZTAxID0z
RCBtYXNjaGUwMTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzAxIiwgcHJl
Y2lzaW9uPTNEOSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMDEo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMDE7CisgICAgfQorCisgICAgcHVibGljIHZv
aWQgc2V0UnVlY2swMShCaWdEZWNpbWFsIHJ1ZWNrMDEpIHsKKyAgICAgICAgdGhpcy5ydWVjazAx
ID0zRCBydWVjazAxOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTAyIiwg
cHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2No
ZTAyKCkgeworICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUwMjsKKyAgICB9CisKKyAgICBwdWJs
aWMgdm9pZCBzZXRNYXNjaGUwMihCaWdEZWNpbWFsIG1hc2NoZTAyKSB7CisgICAgICAgIHRoaXMu
bWFzY2hlMDIgPTNEIG1hc2NoZTAyOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlJV
RUNLMDIiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0UnVlY2swMigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucnVlY2swMjsKKyAgICB9CisKKyAg
ICBwdWJsaWMgdm9pZCBzZXRSdWVjazAyKEJpZ0RlY2ltYWwgcnVlY2swMikgeworICAgICAgICB0
aGlzLnJ1ZWNrMDIgPTNEIHJ1ZWNrMDI7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0Qi
TUFTQ0hFMDMiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2lt
YWwgZ2V0TWFzY2hlMDMoKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTAzOworICAgIH0K
KworICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTAzKEJpZ0RlY2ltYWwgbWFzY2hlMDMpIHsKKyAg
ICAgICAgdGhpcy5tYXNjaGUwMyA9M0QgbWFzY2hlMDM7CisgICAgfQorCisKKyAgICBAQ29sdW1u
KG5hbWU9M0QiUlVFQ0swMyIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKKyAgICBwdWJsaWMg
QmlnRGVjaW1hbCBnZXRSdWVjazAzKCkgeworICAgICAgICByZXR1cm4gdGhpcy5ydWVjazAzOwor
ICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMDMoQmlnRGVjaW1hbCBydWVjazAzKSB7
CisgICAgICAgIHRoaXMucnVlY2swMyA9M0QgcnVlY2swMzsKKyAgICB9CisKKworICAgIEBDb2x1
bW4obmFtZT0zRCJNQVNDSEUwNCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUwNCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hl
MDQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMDQoQmlnRGVjaW1hbCBtYXNj
aGUwNCkgeworICAgICAgICB0aGlzLm1hc2NoZTA0ID0zRCBtYXNjaGUwNDsKKyAgICB9CisKKwor
ICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzA0IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQor
ICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMDQoKSB7CisgICAgICAgIHJldHVybiB0aGlz
LnJ1ZWNrMDQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0UnVlY2swNChCaWdEZWNpbWFs
IHJ1ZWNrMDQpIHsKKyAgICAgICAgdGhpcy5ydWVjazA0ID0zRCBydWVjazA0OworICAgIH0KKwor
CisgICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTA1IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0
KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTA1KCkgeworICAgICAgICByZXR1cm4g
dGhpcy5tYXNjaGUwNTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUwNShCaWdE
ZWNpbWFsIG1hc2NoZTA1KSB7CisgICAgICAgIHRoaXMubWFzY2hlMDUgPTNEIG1hc2NoZTA1Owor
ICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMDUiLCBwcmVjaXNpb249M0Q5LCBz
Y2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2swNSgpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMucnVlY2swNTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazA1
KEJpZ0RlY2ltYWwgcnVlY2swNSkgeworICAgICAgICB0aGlzLnJ1ZWNrMDUgPTNEIHJ1ZWNrMDU7
CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMDYiLCBwcmVjaXNpb249M0Q3
LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMDYoKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLm1hc2NoZTA2OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1h
c2NoZTA2KEJpZ0RlY2ltYWwgbWFzY2hlMDYpIHsKKyAgICAgICAgdGhpcy5tYXNjaGUwNiA9M0Qg
bWFzY2hlMDY7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0swNiIsIHByZWNp
c2lvbj0zRDksIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazA2KCkg
eworICAgICAgICByZXR1cm4gdGhpcy5ydWVjazA2OworICAgIH0KKworICAgIHB1YmxpYyB2b2lk
IHNldFJ1ZWNrMDYoQmlnRGVjaW1hbCBydWVjazA2KSB7CisgICAgICAgIHRoaXMucnVlY2swNiA9
M0QgcnVlY2swNjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUwNyIsIHBy
ZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUw
NygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMDc7CisgICAgfQorCisgICAgcHVibGlj
IHZvaWQgc2V0TWFzY2hlMDcoQmlnRGVjaW1hbCBtYXNjaGUwNykgeworICAgICAgICB0aGlzLm1h
c2NoZTA3ID0zRCBtYXNjaGUwNzsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJSVUVD
SzA3IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdl
dFJ1ZWNrMDcoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMDc7CisgICAgfQorCisgICAg
cHVibGljIHZvaWQgc2V0UnVlY2swNyhCaWdEZWNpbWFsIHJ1ZWNrMDcpIHsKKyAgICAgICAgdGhp
cy5ydWVjazA3ID0zRCBydWVjazA3OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIk1B
U0NIRTA4IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFs
IGdldE1hc2NoZTA4KCkgeworICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUwODsKKyAgICB9CisK
KyAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUwOChCaWdEZWNpbWFsIG1hc2NoZTA4KSB7CisgICAg
ICAgIHRoaXMubWFzY2hlMDggPTNEIG1hc2NoZTA4OworICAgIH0KKworCisgICAgQENvbHVtbihu
YW1lPTNEIlJVRUNLMDgiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0UnVlY2swOCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucnVlY2swODsKKyAg
ICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazA4KEJpZ0RlY2ltYWwgcnVlY2swOCkgewor
ICAgICAgICB0aGlzLnJ1ZWNrMDggPTNEIHJ1ZWNrMDg7CisgICAgfQorCisKKyAgICBAQ29sdW1u
KG5hbWU9M0QiTUFTQ0hFMDkiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGlj
IEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMDkoKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTA5
OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTA5KEJpZ0RlY2ltYWwgbWFzY2hl
MDkpIHsKKyAgICAgICAgdGhpcy5tYXNjaGUwOSA9M0QgbWFzY2hlMDk7CisgICAgfQorCisKKyAg
ICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0swOSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKKyAg
ICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazA5KCkgeworICAgICAgICByZXR1cm4gdGhpcy5y
dWVjazA5OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMDkoQmlnRGVjaW1hbCBy
dWVjazA5KSB7CisgICAgICAgIHRoaXMucnVlY2swOSA9M0QgcnVlY2swOTsKKyAgICB9CisKKwor
ICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUxMCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkK
KyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUxMCgpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMubWFzY2hlMTA7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMTAoQmlnRGVj
aW1hbCBtYXNjaGUxMCkgeworICAgICAgICB0aGlzLm1hc2NoZTEwID0zRCBtYXNjaGUxMDsKKyAg
ICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzEwIiwgcHJlY2lzaW9uPTNEOSwgc2Nh
bGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMTAoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLnJ1ZWNrMTA7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0UnVlY2sxMChC
aWdEZWNpbWFsIHJ1ZWNrMTApIHsKKyAgICAgICAgdGhpcy5ydWVjazEwID0zRCBydWVjazEwOwor
ICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTExIiwgcHJlY2lzaW9uPTNENywg
c2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTExKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy5tYXNjaGUxMTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNYXNj
aGUxMShCaWdEZWNpbWFsIG1hc2NoZTExKSB7CisgICAgICAgIHRoaXMubWFzY2hlMTEgPTNEIG1h
c2NoZTExOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMTEiLCBwcmVjaXNp
b249M0Q5LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2sxMSgpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMucnVlY2sxMTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBz
ZXRSdWVjazExKEJpZ0RlY2ltYWwgcnVlY2sxMSkgeworICAgICAgICB0aGlzLnJ1ZWNrMTEgPTNE
IHJ1ZWNrMTE7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMTIiLCBwcmVj
aXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMTIo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTEyOworICAgIH0KKworICAgIHB1YmxpYyB2
b2lkIHNldE1hc2NoZTEyKEJpZ0RlY2ltYWwgbWFzY2hlMTIpIHsKKyAgICAgICAgdGhpcy5tYXNj
aGUxMiA9M0QgbWFzY2hlMTI7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0sx
MiIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRS
dWVjazEyKCkgeworICAgICAgICByZXR1cm4gdGhpcy5ydWVjazEyOworICAgIH0KKworICAgIHB1
YmxpYyB2b2lkIHNldFJ1ZWNrMTIoQmlnRGVjaW1hbCBydWVjazEyKSB7CisgICAgICAgIHRoaXMu
cnVlY2sxMiA9M0QgcnVlY2sxMjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJNQVND
SEUxMyIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXRNYXNjaGUxMygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMTM7CisgICAgfQorCisg
ICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMTMoQmlnRGVjaW1hbCBtYXNjaGUxMykgeworICAgICAg
ICB0aGlzLm1hc2NoZTEzID0zRCBtYXNjaGUxMzsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFt
ZT0zRCJSVUVDSzEzIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdE
ZWNpbWFsIGdldFJ1ZWNrMTMoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMTM7CisgICAg
fQorCisgICAgcHVibGljIHZvaWQgc2V0UnVlY2sxMyhCaWdEZWNpbWFsIHJ1ZWNrMTMpIHsKKyAg
ICAgICAgdGhpcy5ydWVjazEzID0zRCBydWVjazEzOworICAgIH0KKworCisgICAgQENvbHVtbihu
YW1lPTNEIk1BU0NIRTE0IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBC
aWdEZWNpbWFsIGdldE1hc2NoZTE0KCkgeworICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUxNDsK
KyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUxNChCaWdEZWNpbWFsIG1hc2NoZTE0
KSB7CisgICAgICAgIHRoaXMubWFzY2hlMTQgPTNEIG1hc2NoZTE0OworICAgIH0KKworCisgICAg
QENvbHVtbihuYW1lPTNEIlJVRUNLMTQiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCisgICAg
cHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2sxNCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucnVl
Y2sxNDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazE0KEJpZ0RlY2ltYWwgcnVl
Y2sxNCkgeworICAgICAgICB0aGlzLnJ1ZWNrMTQgPTNEIHJ1ZWNrMTQ7CisgICAgfQorCisKKyAg
ICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMTUiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisg
ICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMTUoKSB7CisgICAgICAgIHJldHVybiB0aGlz
Lm1hc2NoZTE1OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTE1KEJpZ0RlY2lt
YWwgbWFzY2hlMTUpIHsKKyAgICAgICAgdGhpcy5tYXNjaGUxNSA9M0QgbWFzY2hlMTU7CisgICAg
fQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0sxNSIsIHByZWNpc2lvbj0zRDksIHNjYWxl
PTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazE1KCkgeworICAgICAgICByZXR1
cm4gdGhpcy5ydWVjazE1OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMTUoQmln
RGVjaW1hbCBydWVjazE1KSB7CisgICAgICAgIHRoaXMucnVlY2sxNSA9M0QgcnVlY2sxNTsKKyAg
ICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUxNiIsIHByZWNpc2lvbj0zRDcsIHNj
YWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUxNigpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMubWFzY2hlMTY7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TWFzY2hl
MTYoQmlnRGVjaW1hbCBtYXNjaGUxNikgeworICAgICAgICB0aGlzLm1hc2NoZTE2ID0zRCBtYXNj
aGUxNjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzE2IiwgcHJlY2lzaW9u
PTNEOSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMTYoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMTY7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0
UnVlY2sxNihCaWdEZWNpbWFsIHJ1ZWNrMTYpIHsKKyAgICAgICAgdGhpcy5ydWVjazE2ID0zRCBy
dWVjazE2OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTE3IiwgcHJlY2lz
aW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTE3KCkg
eworICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUxNzsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9p
ZCBzZXRNYXNjaGUxNyhCaWdEZWNpbWFsIG1hc2NoZTE3KSB7CisgICAgICAgIHRoaXMubWFzY2hl
MTcgPTNEIG1hc2NoZTE3OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMTci
LCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVl
Y2sxNygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucnVlY2sxNzsKKyAgICB9CisKKyAgICBwdWJs
aWMgdm9pZCBzZXRSdWVjazE3KEJpZ0RlY2ltYWwgcnVlY2sxNykgeworICAgICAgICB0aGlzLnJ1
ZWNrMTcgPTNEIHJ1ZWNrMTc7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hF
MTgiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0
TWFzY2hlMTgoKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTE4OworICAgIH0KKworICAg
IHB1YmxpYyB2b2lkIHNldE1hc2NoZTE4KEJpZ0RlY2ltYWwgbWFzY2hlMTgpIHsKKyAgICAgICAg
dGhpcy5tYXNjaGUxOCA9M0QgbWFzY2hlMTg7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9
M0QiUlVFQ0sxOCIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVj
aW1hbCBnZXRSdWVjazE4KCkgeworICAgICAgICByZXR1cm4gdGhpcy5ydWVjazE4OworICAgIH0K
KworICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMTgoQmlnRGVjaW1hbCBydWVjazE4KSB7CisgICAg
ICAgIHRoaXMucnVlY2sxOCA9M0QgcnVlY2sxODsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFt
ZT0zRCJNQVNDSEUxOSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmln
RGVjaW1hbCBnZXRNYXNjaGUxOSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMTk7Cisg
ICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMTkoQmlnRGVjaW1hbCBtYXNjaGUxOSkg
eworICAgICAgICB0aGlzLm1hc2NoZTE5ID0zRCBtYXNjaGUxOTsKKyAgICB9CisKKworICAgIEBD
b2x1bW4obmFtZT0zRCJSVUVDSzE5IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQorICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMTkoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnJ1ZWNr
MTk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0UnVlY2sxOShCaWdEZWNpbWFsIHJ1ZWNr
MTkpIHsKKyAgICAgICAgdGhpcy5ydWVjazE5ID0zRCBydWVjazE5OworICAgIH0KKworCisgICAg
QENvbHVtbihuYW1lPTNEIk1BU0NIRTIwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTIwKCkgeworICAgICAgICByZXR1cm4gdGhpcy5t
YXNjaGUyMDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUyMChCaWdEZWNpbWFs
IG1hc2NoZTIwKSB7CisgICAgICAgIHRoaXMubWFzY2hlMjAgPTNEIG1hc2NoZTIwOworICAgIH0K
KworCisgICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMjAiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0z
RDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2syMCgpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMucnVlY2syMDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazIwKEJpZ0Rl
Y2ltYWwgcnVlY2syMCkgeworICAgICAgICB0aGlzLnJ1ZWNrMjAgPTNEIHJ1ZWNrMjA7CisgICAg
fQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMjEiLCBwcmVjaXNpb249M0Q3LCBzY2Fs
ZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMjEoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLm1hc2NoZTIxOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTIx
KEJpZ0RlY2ltYWwgbWFzY2hlMjEpIHsKKyAgICAgICAgdGhpcy5tYXNjaGUyMSA9M0QgbWFzY2hl
MjE7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0syMSIsIHByZWNpc2lvbj0z
RDksIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazIxKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy5ydWVjazIxOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFJ1
ZWNrMjEoQmlnRGVjaW1hbCBydWVjazIxKSB7CisgICAgICAgIHRoaXMucnVlY2syMSA9M0QgcnVl
Y2syMTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJSRVNUIiwgcHJlY2lzaW9uPTNE
OSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJlc3QoKSB7CisgICAgICAg
IHJldHVybiB0aGlzLnJlc3Q7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0UmVzdChCaWdE
ZWNpbWFsIHJlc3QpIHsKKyAgICAgICAgdGhpcy5yZXN0ID0zRCByZXN0OworICAgIH0KKworCisg
ICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG90aGVyKSB7CisgICAgICAgICBpZiAoICh0
aGlzID0zRD0zRCBvdGhlciApICkgcmV0dXJuIHRydWU7CisgICAgICAgICBpZiAoIChvdGhlciA9
M0Q9M0QgbnVsbCApICkgcmV0dXJuIGZhbHNlOworICAgICAgICAgaWYgKCAhKG90aGVyIGluc3Rh
bmNlb2YgR3NpZWJ1bmdzaWViSWQpICkgcmV0dXJuIGZhbHNlOworICAgICAgICAgR3NpZWJ1bmdz
aWViSWQgY2FzdE90aGVyID0zRCAoIEdzaWVidW5nc2llYklkICkgb3RoZXI7CisKKyAgICAgICAg
IHJldHVybiAodGhpcy5nZXRHbG90cmVjaHRlaWQoKT0zRD0zRGNhc3RPdGhlci5nZXRHbG90cmVj
aHRlaWQoKSkKKyAmJiAodGhpcy5nZXRHc2llYnNhdHppZCgpPTNEPTNEY2FzdE90aGVyLmdldEdz
aWVic2F0emlkKCkpCisgJiYgKCAodGhpcy5nZXRHbWFzc2UoKT0zRD0zRGNhc3RPdGhlci5nZXRH
bWFzc2UoKSkgfHwgKCB0aGlzLmdldEdtYXNzZSgpIT0KPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0
R21hc3NlKCkhPTNEbnVsbCAmJiB0aGlzLmdldEdtYXNzZSgpLmVxdWFscyhjYXN0T3RoPQplci5n
ZXRHbWFzc2UoKSkgKSApCisgJiYgKCAodGhpcy5nZXRNYXNjaGUwMSgpPTNEPTNEY2FzdE90aGVy
LmdldE1hc2NoZTAxKCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTAxKCkhPTNEbnVsbCAmJiBjYXN0
T3RoZXIuZ2V0TWFzY2hlMDEoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMDEoKS5lcXVhPQps
cyhjYXN0T3RoZXIuZ2V0TWFzY2hlMDEoKSkgKSApCisgJiYgKCAodGhpcy5nZXRSdWVjazAxKCk9
M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2swMSgpKSB8fCAoIHRoaXMuZ2V0UnVlY2swMT0KKCkhPTNE
bnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2swMSgpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazAx
KCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMDEoKSkgKSApCisgJiYgKCAodGhpcy5nZXRN
YXNjaGUwMigpPTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTAyKCkpIHx8ICggdGhpcy5nZXRNYXNj
aD0KZTAyKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMDIoKSE9M0RudWxsICYmIHRo
aXMuZ2V0TWFzY2hlMDIoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMDIoKSkgKSApCisg
JiYgKCAodGhpcy5nZXRSdWVjazAyKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2swMigpKSB8fCAo
IHRoaXMuZ2V0UnVlY2swMj0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2swMigpIT0z
RG51bGwgJiYgdGhpcy5nZXRSdWVjazAyKCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMDIo
KSkgKSApCisgJiYgKCAodGhpcy5nZXRNYXNjaGUwMygpPTNEPTNEY2FzdE90aGVyLmdldE1hc2No
ZTAzKCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTAzKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0
TWFzY2hlMDMoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMDMoKS5lcXVhPQpscyhjYXN0T3Ro
ZXIuZ2V0TWFzY2hlMDMoKSkgKSApCisgJiYgKCAodGhpcy5nZXRSdWVjazAzKCk9M0Q9M0RjYXN0
T3RoZXIuZ2V0UnVlY2swMygpKSB8fCAoIHRoaXMuZ2V0UnVlY2swMz0KKCkhPTNEbnVsbCAmJiBj
YXN0T3RoZXIuZ2V0UnVlY2swMygpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazAzKCkuZXF1YWxz
KGNhPQpzdE90aGVyLmdldFJ1ZWNrMDMoKSkgKSApCisgJiYgKCAodGhpcy5nZXRNYXNjaGUwNCgp
PTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTA0KCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTA0KCkh
PTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMDQoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFz
Y2hlMDQoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMDQoKSkgKSApCisgJiYgKCAodGhp
cy5nZXRSdWVjazA0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2swNCgpKSB8fCAoIHRoaXMuZ2V0
UnVlY2swND0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2swNCgpIT0zRG51bGwgJiYg
dGhpcy5nZXRSdWVjazA0KCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMDQoKSkgKSApCisg
JiYgKCAodGhpcy5nZXRNYXNjaGUwNSgpPTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTA1KCkpIHx8
ICggdGhpcy5nZXRNYXNjaD0KZTA1KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMDUo
KSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMDUoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFz
Y2hlMDUoKSkgKSApCisgJiYgKCAodGhpcy5nZXRSdWVjazA1KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0
UnVlY2swNSgpKSB8fCAoIHRoaXMuZ2V0UnVlY2swNT0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIu
Z2V0UnVlY2swNSgpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazA1KCkuZXF1YWxzKGNhPQpzdE90
aGVyLmdldFJ1ZWNrMDUoKSkgKSApCisgJiYgKCAodGhpcy5nZXRNYXNjaGUwNigpPTNEPTNEY2Fz
dE90aGVyLmdldE1hc2NoZTA2KCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTA2KCkhPTNEbnVsbCAm
JiBjYXN0T3RoZXIuZ2V0TWFzY2hlMDYoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMDYoKS5l
cXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMDYoKSkgKSApCisgJiYgKCAodGhpcy5nZXRSdWVj
azA2KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2swNigpKSB8fCAoIHRoaXMuZ2V0UnVlY2swNj0K
KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2swNigpIT0zRG51bGwgJiYgdGhpcy5nZXRS
dWVjazA2KCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMDYoKSkgKSApCisgJiYgKCAodGhp
cy5nZXRNYXNjaGUwNygpPTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTA3KCkpIHx8ICggdGhpcy5n
ZXRNYXNjaD0KZTA3KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMDcoKSE9M0RudWxs
ICYmIHRoaXMuZ2V0TWFzY2hlMDcoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMDcoKSkg
KSApCisgJiYgKCAodGhpcy5nZXRSdWVjazA3KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2swNygp
KSB8fCAoIHRoaXMuZ2V0UnVlY2swNz0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2sw
NygpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazA3KCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1
ZWNrMDcoKSkgKSApCisgJiYgKCAodGhpcy5nZXRNYXNjaGUwOCgpPTNEPTNEY2FzdE90aGVyLmdl
dE1hc2NoZTA4KCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTA4KCkhPTNEbnVsbCAmJiBjYXN0T3Ro
ZXIuZ2V0TWFzY2hlMDgoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMDgoKS5lcXVhPQpscyhj
YXN0T3RoZXIuZ2V0TWFzY2hlMDgoKSkgKSApCisgJiYgKCAodGhpcy5nZXRSdWVjazA4KCk9M0Q9
M0RjYXN0T3RoZXIuZ2V0UnVlY2swOCgpKSB8fCAoIHRoaXMuZ2V0UnVlY2swOD0KKCkhPTNEbnVs
bCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2swOCgpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazA4KCku
ZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMDgoKSkgKSApCisgJiYgKCAodGhpcy5nZXRNYXNj
aGUwOSgpPTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTA5KCkpIHx8ICggdGhpcy5nZXRNYXNjaD0K
ZTA5KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMDkoKSE9M0RudWxsICYmIHRoaXMu
Z2V0TWFzY2hlMDkoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMDkoKSkgKSApCisgJiYg
KCAodGhpcy5nZXRSdWVjazA5KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2swOSgpKSB8fCAoIHRo
aXMuZ2V0UnVlY2swOT0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2swOSgpIT0zRG51
bGwgJiYgdGhpcy5nZXRSdWVjazA5KCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMDkoKSkg
KSApCisgJiYgKCAodGhpcy5nZXRNYXNjaGUxMCgpPTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTEw
KCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTEwKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFz
Y2hlMTAoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMTAoKS5lcXVhPQpscyhjYXN0T3RoZXIu
Z2V0TWFzY2hlMTAoKSkgKSApCisgJiYgKCAodGhpcy5nZXRSdWVjazEwKCk9M0Q9M0RjYXN0T3Ro
ZXIuZ2V0UnVlY2sxMCgpKSB8fCAoIHRoaXMuZ2V0UnVlY2sxMD0KKCkhPTNEbnVsbCAmJiBjYXN0
T3RoZXIuZ2V0UnVlY2sxMCgpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazEwKCkuZXF1YWxzKGNh
PQpzdE90aGVyLmdldFJ1ZWNrMTAoKSkgKSApCisgJiYgKCAodGhpcy5nZXRNYXNjaGUxMSgpPTNE
PTNEY2FzdE90aGVyLmdldE1hc2NoZTExKCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTExKCkhPTNE
bnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMTEoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hl
MTEoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMTEoKSkgKSApCisgJiYgKCAodGhpcy5n
ZXRSdWVjazExKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2sxMSgpKSB8fCAoIHRoaXMuZ2V0UnVl
Y2sxMT0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2sxMSgpIT0zRG51bGwgJiYgdGhp
cy5nZXRSdWVjazExKCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMTEoKSkgKSApCisgJiYg
KCAodGhpcy5nZXRNYXNjaGUxMigpPTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTEyKCkpIHx8ICgg
dGhpcy5nZXRNYXNjaD0KZTEyKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMTIoKSE9
M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMTIoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hl
MTIoKSkgKSApCisgJiYgKCAodGhpcy5nZXRSdWVjazEyKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVl
Y2sxMigpKSB8fCAoIHRoaXMuZ2V0UnVlY2sxMj0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0
UnVlY2sxMigpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazEyKCkuZXF1YWxzKGNhPQpzdE90aGVy
LmdldFJ1ZWNrMTIoKSkgKSApCisgJiYgKCAodGhpcy5nZXRNYXNjaGUxMygpPTNEPTNEY2FzdE90
aGVyLmdldE1hc2NoZTEzKCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTEzKCkhPTNEbnVsbCAmJiBj
YXN0T3RoZXIuZ2V0TWFzY2hlMTMoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMTMoKS5lcXVh
PQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMTMoKSkgKSApCisgJiYgKCAodGhpcy5nZXRSdWVjazEz
KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2sxMygpKSB8fCAoIHRoaXMuZ2V0UnVlY2sxMz0KKCkh
PTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2sxMygpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVj
azEzKCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMTMoKSkgKSApCisgJiYgKCAodGhpcy5n
ZXRNYXNjaGUxNCgpPTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTE0KCkpIHx8ICggdGhpcy5nZXRN
YXNjaD0KZTE0KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMTQoKSE9M0RudWxsICYm
IHRoaXMuZ2V0TWFzY2hlMTQoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMTQoKSkgKSAp
CisgJiYgKCAodGhpcy5nZXRSdWVjazE0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2sxNCgpKSB8
fCAoIHRoaXMuZ2V0UnVlY2sxND0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2sxNCgp
IT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazE0KCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNr
MTQoKSkgKSApCisgJiYgKCAodGhpcy5nZXRNYXNjaGUxNSgpPTNEPTNEY2FzdE90aGVyLmdldE1h
c2NoZTE1KCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTE1KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIu
Z2V0TWFzY2hlMTUoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMTUoKS5lcXVhPQpscyhjYXN0
T3RoZXIuZ2V0TWFzY2hlMTUoKSkgKSApCisgJiYgKCAodGhpcy5nZXRSdWVjazE1KCk9M0Q9M0Rj
YXN0T3RoZXIuZ2V0UnVlY2sxNSgpKSB8fCAoIHRoaXMuZ2V0UnVlY2sxNT0KKCkhPTNEbnVsbCAm
JiBjYXN0T3RoZXIuZ2V0UnVlY2sxNSgpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazE1KCkuZXF1
YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMTUoKSkgKSApCisgJiYgKCAodGhpcy5nZXRNYXNjaGUx
NigpPTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTE2KCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTE2
KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMTYoKSE9M0RudWxsICYmIHRoaXMuZ2V0
TWFzY2hlMTYoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMTYoKSkgKSApCisgJiYgKCAo
dGhpcy5nZXRSdWVjazE2KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2sxNigpKSB8fCAoIHRoaXMu
Z2V0UnVlY2sxNj0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2sxNigpIT0zRG51bGwg
JiYgdGhpcy5nZXRSdWVjazE2KCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMTYoKSkgKSAp
CisgJiYgKCAodGhpcy5nZXRNYXNjaGUxNygpPTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTE3KCkp
IHx8ICggdGhpcy5nZXRNYXNjaD0KZTE3KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hl
MTcoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMTcoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0
TWFzY2hlMTcoKSkgKSApCisgJiYgKCAodGhpcy5nZXRSdWVjazE3KCk9M0Q9M0RjYXN0T3RoZXIu
Z2V0UnVlY2sxNygpKSB8fCAoIHRoaXMuZ2V0UnVlY2sxNz0KKCkhPTNEbnVsbCAmJiBjYXN0T3Ro
ZXIuZ2V0UnVlY2sxNygpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazE3KCkuZXF1YWxzKGNhPQpz
dE90aGVyLmdldFJ1ZWNrMTcoKSkgKSApCisgJiYgKCAodGhpcy5nZXRNYXNjaGUxOCgpPTNEPTNE
Y2FzdE90aGVyLmdldE1hc2NoZTE4KCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTE4KCkhPTNEbnVs
bCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMTgoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMTgo
KS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMTgoKSkgKSApCisgJiYgKCAodGhpcy5nZXRS
dWVjazE4KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2sxOCgpKSB8fCAoIHRoaXMuZ2V0UnVlY2sx
OD0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2sxOCgpIT0zRG51bGwgJiYgdGhpcy5n
ZXRSdWVjazE4KCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMTgoKSkgKSApCisgJiYgKCAo
dGhpcy5nZXRNYXNjaGUxOSgpPTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTE5KCkpIHx8ICggdGhp
cy5nZXRNYXNjaD0KZTE5KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMTkoKSE9M0Ru
dWxsICYmIHRoaXMuZ2V0TWFzY2hlMTkoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMTko
KSkgKSApCisgJiYgKCAodGhpcy5nZXRSdWVjazE5KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2sx
OSgpKSB8fCAoIHRoaXMuZ2V0UnVlY2sxOT0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVl
Y2sxOSgpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazE5KCkuZXF1YWxzKGNhPQpzdE90aGVyLmdl
dFJ1ZWNrMTkoKSkgKSApCisgJiYgKCAodGhpcy5nZXRNYXNjaGUyMCgpPTNEPTNEY2FzdE90aGVy
LmdldE1hc2NoZTIwKCkpIHx8ICggdGhpcy5nZXRNYXNjaD0KZTIwKCkhPTNEbnVsbCAmJiBjYXN0
T3RoZXIuZ2V0TWFzY2hlMjAoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWFzY2hlMjAoKS5lcXVhPQps
cyhjYXN0T3RoZXIuZ2V0TWFzY2hlMjAoKSkgKSApCisgJiYgKCAodGhpcy5nZXRSdWVjazIwKCk9
M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2syMCgpKSB8fCAoIHRoaXMuZ2V0UnVlY2syMD0KKCkhPTNE
bnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2syMCgpIT0zRG51bGwgJiYgdGhpcy5nZXRSdWVjazIw
KCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMjAoKSkgKSApCisgJiYgKCAodGhpcy5nZXRN
YXNjaGUyMSgpPTNEPTNEY2FzdE90aGVyLmdldE1hc2NoZTIxKCkpIHx8ICggdGhpcy5nZXRNYXNj
aD0KZTIxKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0TWFzY2hlMjEoKSE9M0RudWxsICYmIHRo
aXMuZ2V0TWFzY2hlMjEoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0TWFzY2hlMjEoKSkgKSApCisg
JiYgKCAodGhpcy5nZXRSdWVjazIxKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UnVlY2syMSgpKSB8fCAo
IHRoaXMuZ2V0UnVlY2syMT0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0UnVlY2syMSgpIT0z
RG51bGwgJiYgdGhpcy5nZXRSdWVjazIxKCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFJ1ZWNrMjEo
KSkgKSApCisgJiYgKCAodGhpcy5nZXRSZXN0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UmVzdCgpKSB8
fCAoIHRoaXMuZ2V0UmVzdCgpIT0zRG51bD0KbCAmJiBjYXN0T3RoZXIuZ2V0UmVzdCgpIT0zRG51
bGwgJiYgdGhpcy5nZXRSZXN0KCkuZXF1YWxzKGNhc3RPdGhlci5nZXRSZXN0PQooKSkgKSApOwor
ICAgfQorCisgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICAgaW50IHJlc3VsdCA9
M0QgMTc7CisKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoaW50KSB0aGlzLmdl
dEdsb3RyZWNodGVpZCgpOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArIChpbnQp
IHRoaXMuZ2V0R3NpZWJzYXR6aWQoKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQg
KyAoIGdldEdtYXNzZSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0PQpHbWFzc2UoKS5oYXNo
Q29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUw
MSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUwMSgpLmhhc2hDb2RlKCkgKTsK
KyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMDEoKSA9M0Q9M0Qg
bnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2swMSgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJl
c3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTAyKCkgPTNEPTNEIG51bGwgPyAwIDog
dGhpcy5nPQpldE1hc2NoZTAyKCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAz
NyAqIHJlc3VsdCArICggZ2V0UnVlY2swMigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRS
dWVjazAyKCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCAr
ICggZ2V0TWFzY2hlMDMoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMDMoKS5o
YXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVj
azAzKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMDMoKS5oYXNoQ29kZSgpICk7
CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUwNCgpID0zRD0z
RCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUwNCgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAg
IHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMDQoKSA9M0Q9M0QgbnVsbCA/IDAg
OiB0aGlzLmdlPQp0UnVlY2swNCgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0Qg
MzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTA1KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpl
dE1hc2NoZTA1KCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3Vs
dCArICggZ2V0UnVlY2swNSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazA1KCku
aGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFz
Y2hlMDYoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMDYoKS5oYXNoQ29kZSgp
ICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazA2KCkgPTNE
PTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMDYoKS5oYXNoQ29kZSgpICk7CisgICAgICAg
ICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUwNygpID0zRD0zRCBudWxsID8g
MCA6IHRoaXMuZz0KZXRNYXNjaGUwNygpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9
M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMDcoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdl
PQp0UnVlY2swNygpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1
bHQgKyAoIGdldE1hc2NoZTA4KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTA4
KCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0
UnVlY2swOCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazA4KCkuaGFzaENvZGUo
KSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMDkoKSA9
M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMDkoKS5oYXNoQ29kZSgpICk7CisgICAg
ICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazA5KCkgPTNEPTNEIG51bGwg
PyAwIDogdGhpcy5nZT0KdFJ1ZWNrMDkoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQg
PTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUxMCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMu
Zz0KZXRNYXNjaGUxMCgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiBy
ZXN1bHQgKyAoIGdldFJ1ZWNrMTAoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2sx
MCgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdl
dE1hc2NoZTExKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTExKCkuaGFzaENv
ZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2sxMSgp
ID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazExKCkuaGFzaENvZGUoKSApOworICAg
ICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMTIoKSA9M0Q9M0QgbnVs
bCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMTIoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1
bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazEyKCkgPTNEPTNEIG51bGwgPyAwIDogdGhp
cy5nZT0KdFJ1ZWNrMTIoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICog
cmVzdWx0ICsgKCBnZXRNYXNjaGUxMygpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNj
aGUxMygpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAo
IGdldFJ1ZWNrMTMoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2sxMygpLmhhc2hD
b2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTE0
KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTE0KCkuaGFzaENvZGUoKSApOwor
ICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2sxNCgpID0zRD0zRCBu
dWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazE0KCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVz
dWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMTUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0
aGlzLmc9CmV0TWFzY2hlMTUoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3
ICogcmVzdWx0ICsgKCBnZXRSdWVjazE1KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1
ZWNrMTUoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsg
KCBnZXRNYXNjaGUxNigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUxNigpLmhh
c2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNr
MTYoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2sxNigpLmhhc2hDb2RlKCkgKTsK
KyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTE3KCkgPTNEPTNE
IG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTE3KCkuaGFzaENvZGUoKSApOworICAgICAgICAg
cmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2sxNygpID0zRD0zRCBudWxsID8gMCA6
IHRoaXMuZ2U9CnRSdWVjazE3KCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAz
NyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMTgoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0
TWFzY2hlMTgoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0
ICsgKCBnZXRSdWVjazE4KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMTgoKS5o
YXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNj
aGUxOSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUxOSgpLmhhc2hDb2RlKCkg
KTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMTkoKSA9M0Q9
M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2sxOSgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAg
IHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTIwKCkgPTNEPTNEIG51bGwgPyAw
IDogdGhpcy5nPQpldE1hc2NoZTIwKCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0z
RCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2syMCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9
CnRSdWVjazIwKCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3Vs
dCArICggZ2V0TWFzY2hlMjEoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMjEo
KS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRS
dWVjazIxKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMjEoKS5oYXNoQ29kZSgp
ICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSZXN0KCkgPTNEPTNE
IG51bGwgPyAwIDogdGhpcy5nZXRSZT0Kc3QoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgfQorfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEg
YmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMvcml2ZXIvc2VkZGIvbW9k
ZWwvSHBlaWxwdW5rdC5qYXZhCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcw
ICswMDAwCisrKyBiL2JhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZl
ci9zZWRkYi9tb2RlbC9IcGVpbHB1bmt0Lj0KamF2YQlNb24gQXByIDI5IDExOjMzOjAxIDIwMTMg
KzAyMDAKQEAgLTAsMCArMSw5MiBAQAorLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEz
IGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKKyAqIFNvZnR3
YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAorICoKKyAqIFRoaXMgZmlsZSBpcyBG
cmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAorICogYW5kIGNvbWVz
IHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQorICogZG9jdW1lbnRh
dGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAorICov
CisKK3BhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7CisvLyBHZW5lcmF0ZWQg
MTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCisKKworaW1w
b3J0IGphdmEubWF0aC5CaWdEZWNpbWFsOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJp
YnV0ZU92ZXJyaWRlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0ZU92ZXJyaWRl
czsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuRW1iZWRkZWRJZDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7CitpbXBv
cnQgamF2YXgucGVyc2lzdGVuY2UuRmV0Y2hUeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNl
LkpvaW5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTWFueVRvT25lOworaW1wb3J0
IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOworCisvKioKKyAqIEhwZWlscHVua3QgZ2VuZXJhdGVk
IGJ5IGhibTJqYXZhCisgKi8KK0BFbnRpdHkKK0BUYWJsZShuYW1lPTNEIkhQRUlMUFVOS1QiCisg
ICAgLHNjaGVtYT0zRCJTRUREQiIKKykKK3B1YmxpYyBjbGFzcyBIcGVpbHB1bmt0ICBpbXBsZW1l
bnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKKworCisgICAgIHByaXZhdGUgSHBlaWxwdW5rdElk
IGlkOworICAgICBwcml2YXRlIEhwZWlsdW5nIGhwZWlsdW5nOworICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgeTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHo7CisKKyAgICBwdWJsaWMgSHBlaWxw
dW5rdCgpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgSHBlaWxwdW5rdChIcGVpbHB1bmt0SWQgaWQs
IEhwZWlsdW5nIGhwZWlsdW5nLCBCaWdEZWNpbWFsIHksIEJpPQpnRGVjaW1hbCB6KSB7CisgICAg
ICAgdGhpcy5pZCA9M0QgaWQ7CisgICAgICAgdGhpcy5ocGVpbHVuZyA9M0QgaHBlaWx1bmc7Cisg
ICAgICAgdGhpcy55ID0zRCB5OworICAgICAgIHRoaXMueiA9M0QgejsKKyAgICB9CisKKyAgICAg
QEVtYmVkZGVkSWQKKworCisgICAgQEF0dHJpYnV0ZU92ZXJyaWRlcyggeworICAgICAgICBAQXR0
cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJocGVpbHVuZ2lkIiwgY29sdW1uPTNEQENvbHVtbihuYW1l
PTNEIkg9ClBFSUxVTkdJRCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2Fs
ZT0zRDApICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInB1bmt0bnIiLCBj
b2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUFVOSz0KVE5SIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJl
Y2lzaW9uPTNENSwgc2NhbGU9M0QwKSApIH0gKQorICAgIHB1YmxpYyBIcGVpbHB1bmt0SWQgZ2V0
SWQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmlkOworICAgIH0KKworICAgIHB1YmxpYyB2b2lk
IHNldElkKEhwZWlscHVua3RJZCBpZCkgeworICAgICAgICB0aGlzLmlkID0zRCBpZDsKKyAgICB9
CisKK0BNYW55VG9PbmUoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSkKKyAgICBASm9pbkNvbHVtbihu
YW1lPTNEIkhQRUlMVU5HSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBpbnNlcnRhYmxlPTNEZmFsc2Us
PQogdXBkYXRhYmxlPTNEZmFsc2UpCisgICAgcHVibGljIEhwZWlsdW5nIGdldEhwZWlsdW5nKCkg
eworICAgICAgICByZXR1cm4gdGhpcy5ocGVpbHVuZzsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9p
ZCBzZXRIcGVpbHVuZyhIcGVpbHVuZyBocGVpbHVuZykgeworICAgICAgICB0aGlzLmhwZWlsdW5n
ID0zRCBocGVpbHVuZzsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJZIiwgbnVsbGFi
bGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNp
bWFsIGdldFkoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnk7CisgICAgfQorCisgICAgcHVibGlj
IHZvaWQgc2V0WShCaWdEZWNpbWFsIHkpIHsKKyAgICAgICAgdGhpcy55ID0zRCB5OworICAgIH0K
KworCisgICAgQENvbHVtbihuYW1lPTNEIloiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249
M0Q4LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0WigpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuejsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRaKEJpZ0RlY2ltYWwg
eikgeworICAgICAgICB0aGlzLnogPTNEIHo7CisgICAgfQorfQpkaWZmIC1yIGJjNGUxYmYyNjIy
NyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnQ9
CnMvcml2ZXIvc2VkZGIvbW9kZWwvSHBlaWxwdW5rdElkLmphdmEKLS0tIC9kZXYvbnVsbAlUaHUg
SmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvYmFja2VuZC9zcmMvbWFpbi9qYXZhL29y
Zy9kaXZlNGVsZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVsL0hwZWlscHVua3RJPQpkLmphdmEJTW9u
IEFwciAyOSAxMTozMzowMSAyMDEzICswMjAwCkBAIC0wLDAgKzEsNzMgQEAKKy8qIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1B
NHNzZXJrPQp1bmRlCisgKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgK
KyAqCisgKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49
M0R2Myk9MjAKKyAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNr
IG91dCB0aGUKKyAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZl
ciBmb3IgZGV0YWlscy49MjAKKyAqLworCitwYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnNlZGRi
Lm1vZGVsOworLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRv
b2xzIDMuNC4wLkNSMQorCisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBv
cnQgamF2YXgucGVyc2lzdGVuY2UuRW1iZWRkYWJsZTsKKworLyoqCisgKiBIcGVpbHB1bmt0SWQg
Z2VuZXJhdGVkIGJ5IGhibTJqYXZhCisgKi8KK0BFbWJlZGRhYmxlCitwdWJsaWMgY2xhc3MgSHBl
aWxwdW5rdElkICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKKworCisgICAgIHBy
aXZhdGUgbG9uZyBocGVpbHVuZ2lkOworICAgICBwcml2YXRlIGludCBwdW5rdG5yOworCisgICAg
cHVibGljIEhwZWlscHVua3RJZCgpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgSHBlaWxwdW5rdElk
KGxvbmcgaHBlaWx1bmdpZCwgaW50IHB1bmt0bnIpIHsKKyAgICAgICB0aGlzLmhwZWlsdW5naWQg
PTNEIGhwZWlsdW5naWQ7CisgICAgICAgdGhpcy5wdW5rdG5yID0zRCBwdW5rdG5yOworICAgIH0K
KworCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiSFBFSUxVTkdJRCIsIG51bGxhYmxlPTNEZmFsc2Us
IHByZWNpc2lvbj0zRDExLCBzY2FsZT0KPTNEMCkKKyAgICBwdWJsaWMgbG9uZyBnZXRIcGVpbHVu
Z2lkKCkgeworICAgICAgICByZXR1cm4gdGhpcy5ocGVpbHVuZ2lkOworICAgIH0KKworICAgIHB1
YmxpYyB2b2lkIHNldEhwZWlsdW5naWQobG9uZyBocGVpbHVuZ2lkKSB7CisgICAgICAgIHRoaXMu
aHBlaWx1bmdpZCA9M0QgaHBlaWx1bmdpZDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0z
RCJQVU5LVE5SIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNENSwgc2NhbGU9M0QwKQor
ICAgIHB1YmxpYyBpbnQgZ2V0UHVua3RucigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucHVua3Ru
cjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRQdW5rdG5yKGludCBwdW5rdG5yKSB7Cisg
ICAgICAgIHRoaXMucHVua3RuciA9M0QgcHVua3RucjsKKyAgICB9CisKKworICAgcHVibGljIGJv
b2xlYW4gZXF1YWxzKE9iamVjdCBvdGhlcikgeworICAgICAgICAgaWYgKCAodGhpcyA9M0Q9M0Qg
b3RoZXIgKSApIHJldHVybiB0cnVlOworICAgICAgICAgaWYgKCAob3RoZXIgPTNEPTNEIG51bGwg
KSApIHJldHVybiBmYWxzZTsKKyAgICAgICAgIGlmICggIShvdGhlciBpbnN0YW5jZW9mIEhwZWls
cHVua3RJZCkgKSByZXR1cm4gZmFsc2U7CisgICAgICAgICBIcGVpbHB1bmt0SWQgY2FzdE90aGVy
ID0zRCAoIEhwZWlscHVua3RJZCApIG90aGVyOworCisgICAgICAgICByZXR1cm4gKHRoaXMuZ2V0
SHBlaWx1bmdpZCgpPTNEPTNEY2FzdE90aGVyLmdldEhwZWlsdW5naWQoKSkKKyAmJiAodGhpcy5n
ZXRQdW5rdG5yKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UHVua3RucigpKTsKKyAgIH0KKworICAgcHVi
bGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgIGludCByZXN1bHQgPTNEIDE3OworCisgICAg
ICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKGludCkgdGhpcy5nZXRIcGVpbHVuZ2lkKCk7
CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgdGhpcy5nZXRQdW5rdG5yKCk7Cisg
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgfQorfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAx
ZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMvcml2
ZXIvc2VkZGIvbW9kZWwvSHBlaWx1bmcuamF2YQotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6
MDA6MDAgMTk3MCArMDAwMAorKysgYi9iYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxl
bWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvSHBlaWx1bmcuamE9CnZhCU1vbiBBcHIgMjkgMTE6MzM6
MDEgMjAxMyArMDIwMApAQCAtMCwwICsxLDQ3MSBAQAorLyogQ29weXJpZ2h0IChDKSAyMDExLCAy
MDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUK
KyAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAorICoKKyAqIFRoaXMg
ZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAorICog
YW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQorICog
ZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxz
Lj0yMAorICovCisKK3BhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7CisvLyBH
ZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1Ix
CisKKworaW1wb3J0IGphdmEubWF0aC5CaWdEZWNpbWFsOworaW1wb3J0IGphdmEudXRpbC5EYXRl
OworaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OworaW1wb3J0IGphdmEudXRpbC5TZXQ7CitpbXBv
cnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVu
dGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2YXgu
cGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKK2lt
cG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5NYW55VG9PbmU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVu
Y2UuT25lVG9NYW55OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOworaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLlRlbXBvcmFsOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRlbXBv
cmFsVHlwZTsKKworLyoqCisgKiBIcGVpbHVuZyBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKKyAqLwor
QEVudGl0eQorQFRhYmxlKG5hbWU9M0QiSFBFSUxVTkciCisgICAgLHNjaGVtYT0zRCJTRUREQiIK
KykKK3B1YmxpYyBjbGFzcyBIcGVpbHVuZyAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJs
ZSB7CisKKworICAgICBwcml2YXRlIGxvbmcgaHBlaWx1bmdpZDsKKyAgICAgcHJpdmF0ZSBTdGF0
aW9uIHN0YXRpb247CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBrbTsKKyAgICAgcHJpdmF0ZSBE
YXRlIGRhdHVtOworICAgICBwcml2YXRlIFN0cmluZyBnbHduYW1lOworICAgICBwcml2YXRlIEJp
Z0RlY2ltYWwgZ2x3aG9laGU7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBidWxpYWJzdDsKKyAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGJ1bGlob2VoZTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IGJ1bGlmdXNzOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgYnVsaXJ1ZWNrZW47CisgICAgIHBy
aXZhdGUgQmlnRGVjaW1hbCBidXJlYWJzdDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGJ1cmVo
b2VoZTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGJ1cmVmdXNzOworICAgICBwcml2YXRlIEJp
Z0RlY2ltYWwgYnVyZXJ1ZWNrZW47CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBmYWhybGlhYnN0
OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZmFocnJlYWJzdDsKKyAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIGZhaHJ0aWVmOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgYXVzYmxpYWJzdDsKKyAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGF1c2JyZWFic3Q7CisgICAgIHByaXZhdGUgQmlnRGVjaW1h
bCBhY2hzZWFic3Q7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCB0ZWlsdm9uYWJzdDsKKyAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIHRlaWxiaXNhYnN0OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
aG1hYnN0OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgbGdrcmVjaHRzOworICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgbGdraG9jaDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGxna2hvZWhlOwor
ICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcmdrcmVjaHRzOworICAgICBwcml2YXRlIEJpZ0RlY2lt
YWwgcmdraG9jaDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJna2hvZWhlOworICAgICBwcml2
YXRlIFN0cmluZyBiZW1lcmt1bmc7CisgICAgIHByaXZhdGUgRGF0ZSBsYXN0dXBkYXRlZDsKKyAg
ICAgcHJpdmF0ZSBMb25nIG9sZHByZmlkOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgbWl0dGVh
YnN0OworICAgICBwcml2YXRlIFNldDxIcGVpbHB1bmt0PiBocGVpbHB1bmt0cyA9M0QgbmV3IEhh
c2hTZXQ8SHBlaWxwdW5rdD4oMCk7CisgICAgIHByaXZhdGUgU2V0PE1lc3N1bmc+IG1lc3N1bmdz
ID0zRCBuZXcgSGFzaFNldDxNZXNzdW5nPigwKTsKKworICAgIHB1YmxpYyBIcGVpbHVuZygpIHsK
KyAgICB9CisKKyAgICBwdWJsaWMgSHBlaWx1bmcobG9uZyBocGVpbHVuZ2lkLCBTdGF0aW9uIHN0
YXRpb24sIEJpZ0RlY2ltYWwga20sIERhdGUgPQpkYXR1bSwgRGF0ZSBsYXN0dXBkYXRlZCkgewor
ICAgICAgICB0aGlzLmhwZWlsdW5naWQgPTNEIGhwZWlsdW5naWQ7CisgICAgICAgIHRoaXMuc3Rh
dGlvbiA9M0Qgc3RhdGlvbjsKKyAgICAgICAgdGhpcy5rbSA9M0Qga207CisgICAgICAgIHRoaXMu
ZGF0dW0gPTNEIGRhdHVtOworICAgICAgICB0aGlzLmxhc3R1cGRhdGVkID0zRCBsYXN0dXBkYXRl
ZDsKKyAgICB9CisgICAgcHVibGljIEhwZWlsdW5nKGxvbmcgaHBlaWx1bmdpZCwgU3RhdGlvbiBz
dGF0aW9uLCBCaWdEZWNpbWFsIGttLCBEYXRlID0KZGF0dW0sIFN0cmluZyBnbHduYW1lLCBCaWdE
ZWNpbWFsIGdsd2hvZWhlLCBCaWdEZWNpbWFsIGJ1bGlhYnN0LCBCaWdEZWNpbWFsPQogYnVsaWhv
ZWhlLCBCaWdEZWNpbWFsIGJ1bGlmdXNzLCBCaWdEZWNpbWFsIGJ1bGlydWVja2VuLCBCaWdEZWNp
bWFsIGJ1cmVhYnM9CnQsIEJpZ0RlY2ltYWwgYnVyZWhvZWhlLCBCaWdEZWNpbWFsIGJ1cmVmdXNz
LCBCaWdEZWNpbWFsIGJ1cmVydWVja2VuLCBCaWdEZT0KY2ltYWwgZmFocmxpYWJzdCwgQmlnRGVj
aW1hbCBmYWhycmVhYnN0LCBCaWdEZWNpbWFsIGZhaHJ0aWVmLCBCaWdEZWNpbWFsIGF1PQpzYmxp
YWJzdCwgQmlnRGVjaW1hbCBhdXNicmVhYnN0LCBCaWdEZWNpbWFsIGFjaHNlYWJzdCwgQmlnRGVj
aW1hbCB0ZWlsdm9uYWI9CnN0LCBCaWdEZWNpbWFsIHRlaWxiaXNhYnN0LCBCaWdEZWNpbWFsIGht
YWJzdCwgQmlnRGVjaW1hbCBsZ2tyZWNodHMsIEJpZ0RlYz0KaW1hbCBsZ2tob2NoLCBCaWdEZWNp
bWFsIGxna2hvZWhlLCBCaWdEZWNpbWFsIHJna3JlY2h0cywgQmlnRGVjaW1hbCByZ2tob2NoPQos
IEJpZ0RlY2ltYWwgcmdraG9laGUsIFN0cmluZyBiZW1lcmt1bmcsIERhdGUgbGFzdHVwZGF0ZWQs
IExvbmcgb2xkcHJmaWQsIEI9CmlnRGVjaW1hbCBtaXR0ZWFic3QsIFNldDxIcGVpbHB1bmt0PiBo
cGVpbHB1bmt0cywgU2V0PE1lc3N1bmc+IG1lc3N1bmdzKSB7CisgICAgICAgdGhpcy5ocGVpbHVu
Z2lkID0zRCBocGVpbHVuZ2lkOworICAgICAgIHRoaXMuc3RhdGlvbiA9M0Qgc3RhdGlvbjsKKyAg
ICAgICB0aGlzLmttID0zRCBrbTsKKyAgICAgICB0aGlzLmRhdHVtID0zRCBkYXR1bTsKKyAgICAg
ICB0aGlzLmdsd25hbWUgPTNEIGdsd25hbWU7CisgICAgICAgdGhpcy5nbHdob2VoZSA9M0QgZ2x3
aG9laGU7CisgICAgICAgdGhpcy5idWxpYWJzdCA9M0QgYnVsaWFic3Q7CisgICAgICAgdGhpcy5i
dWxpaG9laGUgPTNEIGJ1bGlob2VoZTsKKyAgICAgICB0aGlzLmJ1bGlmdXNzID0zRCBidWxpZnVz
czsKKyAgICAgICB0aGlzLmJ1bGlydWVja2VuID0zRCBidWxpcnVlY2tlbjsKKyAgICAgICB0aGlz
LmJ1cmVhYnN0ID0zRCBidXJlYWJzdDsKKyAgICAgICB0aGlzLmJ1cmVob2VoZSA9M0QgYnVyZWhv
ZWhlOworICAgICAgIHRoaXMuYnVyZWZ1c3MgPTNEIGJ1cmVmdXNzOworICAgICAgIHRoaXMuYnVy
ZXJ1ZWNrZW4gPTNEIGJ1cmVydWVja2VuOworICAgICAgIHRoaXMuZmFocmxpYWJzdCA9M0QgZmFo
cmxpYWJzdDsKKyAgICAgICB0aGlzLmZhaHJyZWFic3QgPTNEIGZhaHJyZWFic3Q7CisgICAgICAg
dGhpcy5mYWhydGllZiA9M0QgZmFocnRpZWY7CisgICAgICAgdGhpcy5hdXNibGlhYnN0ID0zRCBh
dXNibGlhYnN0OworICAgICAgIHRoaXMuYXVzYnJlYWJzdCA9M0QgYXVzYnJlYWJzdDsKKyAgICAg
ICB0aGlzLmFjaHNlYWJzdCA9M0QgYWNoc2VhYnN0OworICAgICAgIHRoaXMudGVpbHZvbmFic3Qg
PTNEIHRlaWx2b25hYnN0OworICAgICAgIHRoaXMudGVpbGJpc2Fic3QgPTNEIHRlaWxiaXNhYnN0
OworICAgICAgIHRoaXMuaG1hYnN0ID0zRCBobWFic3Q7CisgICAgICAgdGhpcy5sZ2tyZWNodHMg
PTNEIGxna3JlY2h0czsKKyAgICAgICB0aGlzLmxna2hvY2ggPTNEIGxna2hvY2g7CisgICAgICAg
dGhpcy5sZ2tob2VoZSA9M0QgbGdraG9laGU7CisgICAgICAgdGhpcy5yZ2tyZWNodHMgPTNEIHJn
a3JlY2h0czsKKyAgICAgICB0aGlzLnJna2hvY2ggPTNEIHJna2hvY2g7CisgICAgICAgdGhpcy5y
Z2tob2VoZSA9M0QgcmdraG9laGU7CisgICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3Vu
ZzsKKyAgICAgICB0aGlzLmxhc3R1cGRhdGVkID0zRCBsYXN0dXBkYXRlZDsKKyAgICAgICB0aGlz
Lm9sZHByZmlkID0zRCBvbGRwcmZpZDsKKyAgICAgICB0aGlzLm1pdHRlYWJzdCA9M0QgbWl0dGVh
YnN0OworICAgICAgIHRoaXMuaHBlaWxwdW5rdHMgPTNEIGhwZWlscHVua3RzOworICAgICAgIHRo
aXMubWVzc3VuZ3MgPTNEIG1lc3N1bmdzOworICAgIH0KKworICAgICBASWQKKworCisgICAgQENv
bHVtbihuYW1lPTNEIkhQRUlMVU5HSUQiLCB1bmlxdWU9M0R0cnVlLCBudWxsYWJsZT0zRGZhbHNl
LCBwcmVjaXNpbz0Kbj0zRDExLCBzY2FsZT0zRDApCisgICAgcHVibGljIGxvbmcgZ2V0SHBlaWx1
bmdpZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaHBlaWx1bmdpZDsKKyAgICB9CisKKyAgICBw
dWJsaWMgdm9pZCBzZXRIcGVpbHVuZ2lkKGxvbmcgaHBlaWx1bmdpZCkgeworICAgICAgICB0aGlz
LmhwZWlsdW5naWQgPTNEIGhwZWlsdW5naWQ7CisgICAgfQorCitATWFueVRvT25lKGZldGNoPTNE
RmV0Y2hUeXBlLkxBWlkpCisgICAgQEpvaW5Db2x1bW4obmFtZT0zRCJTVEFUSU9OSUQiLCBudWxs
YWJsZT0zRGZhbHNlKQorICAgIHB1YmxpYyBTdGF0aW9uIGdldFN0YXRpb24oKSB7CisgICAgICAg
IHJldHVybiB0aGlzLnN0YXRpb247CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0U3RhdGlv
bihTdGF0aW9uIHN0YXRpb24pIHsKKyAgICAgICAgdGhpcy5zdGF0aW9uID0zRCBzdGF0aW9uOwor
ICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIktNIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJl
Y2lzaW9uPTNEOCwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEttKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy5rbTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRLbShC
aWdEZWNpbWFsIGttKSB7CisgICAgICAgIHRoaXMua20gPTNEIGttOworICAgIH0KKworICAgIEBU
ZW1wb3JhbChUZW1wb3JhbFR5cGUuREFURSkKKyAgICBAQ29sdW1uKG5hbWU9M0QiREFUVU0iLCBu
dWxsYWJsZT0zRGZhbHNlLCBsZW5ndGg9M0Q3KQorICAgIHB1YmxpYyBEYXRlIGdldERhdHVtKCkg
eworICAgICAgICByZXR1cm4gdGhpcy5kYXR1bTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBz
ZXREYXR1bShEYXRlIGRhdHVtKSB7CisgICAgICAgIHRoaXMuZGF0dW0gPTNEIGRhdHVtOworICAg
IH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkdMV05BTUUiLCBsZW5ndGg9M0Q4KQorICAgIHB1
YmxpYyBTdHJpbmcgZ2V0R2x3bmFtZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZ2x3bmFtZTsK
KyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRHbHduYW1lKFN0cmluZyBnbHduYW1lKSB7Cisg
ICAgICAgIHRoaXMuZ2x3bmFtZSA9M0QgZ2x3bmFtZTsKKyAgICB9CisKKworICAgIEBDb2x1bW4o
bmFtZT0zRCJHTFdIT0VIRSIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKKyAgICBwdWJsaWMg
QmlnRGVjaW1hbCBnZXRHbHdob2VoZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZ2x3aG9laGU7
CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0R2x3aG9laGUoQmlnRGVjaW1hbCBnbHdob2Vo
ZSkgeworICAgICAgICB0aGlzLmdsd2hvZWhlID0zRCBnbHdob2VoZTsKKyAgICB9CisKKworICAg
IEBDb2x1bW4obmFtZT0zRCJCVUxJQUJTVCIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKKyAg
ICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRCdWxpYWJzdCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
YnVsaWFic3Q7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0QnVsaWFic3QoQmlnRGVjaW1h
bCBidWxpYWJzdCkgeworICAgICAgICB0aGlzLmJ1bGlhYnN0ID0zRCBidWxpYWJzdDsKKyAgICB9
CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJCVUxJSE9FSEUiLCBwcmVjaXNpb249M0Q4LCBzY2Fs
ZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0QnVsaWhvZWhlKCkgeworICAgICAgICBy
ZXR1cm4gdGhpcy5idWxpaG9laGU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0QnVsaWhv
ZWhlKEJpZ0RlY2ltYWwgYnVsaWhvZWhlKSB7CisgICAgICAgIHRoaXMuYnVsaWhvZWhlID0zRCBi
dWxpaG9laGU7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiQlVMSUZVU1MiLCBwcmVj
aXNpb249M0Q4LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0QnVsaWZ1c3Mo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLmJ1bGlmdXNzOworICAgIH0KKworICAgIHB1YmxpYyB2
b2lkIHNldEJ1bGlmdXNzKEJpZ0RlY2ltYWwgYnVsaWZ1c3MpIHsKKyAgICAgICAgdGhpcy5idWxp
ZnVzcyA9M0QgYnVsaWZ1c3M7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiQlVMSVJV
RUNLRU4iLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0QnVsaXJ1ZWNrZW4oKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJ1bGlydWVja2VuOworICAg
IH0KKworICAgIHB1YmxpYyB2b2lkIHNldEJ1bGlydWVja2VuKEJpZ0RlY2ltYWwgYnVsaXJ1ZWNr
ZW4pIHsKKyAgICAgICAgdGhpcy5idWxpcnVlY2tlbiA9M0QgYnVsaXJ1ZWNrZW47CisgICAgfQor
CisKKyAgICBAQ29sdW1uKG5hbWU9M0QiQlVSRUFCU1QiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0z
RDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0QnVyZWFic3QoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLmJ1cmVhYnN0OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEJ1cmVhYnN0KEJp
Z0RlY2ltYWwgYnVyZWFic3QpIHsKKyAgICAgICAgdGhpcy5idXJlYWJzdCA9M0QgYnVyZWFic3Q7
CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiQlVSRUhPRUhFIiwgcHJlY2lzaW9uPTNE
OCwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEJ1cmVob2VoZSgpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuYnVyZWhvZWhlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNl
dEJ1cmVob2VoZShCaWdEZWNpbWFsIGJ1cmVob2VoZSkgeworICAgICAgICB0aGlzLmJ1cmVob2Vo
ZSA9M0QgYnVyZWhvZWhlOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkJVUkVGVVNT
IiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEJ1
cmVmdXNzKCkgeworICAgICAgICByZXR1cm4gdGhpcy5idXJlZnVzczsKKyAgICB9CisKKyAgICBw
dWJsaWMgdm9pZCBzZXRCdXJlZnVzcyhCaWdEZWNpbWFsIGJ1cmVmdXNzKSB7CisgICAgICAgIHRo
aXMuYnVyZWZ1c3MgPTNEIGJ1cmVmdXNzOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNE
IkJVUkVSVUVDS0VOIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdE
ZWNpbWFsIGdldEJ1cmVydWVja2VuKCkgeworICAgICAgICByZXR1cm4gdGhpcy5idXJlcnVlY2tl
bjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRCdXJlcnVlY2tlbihCaWdEZWNpbWFsIGJ1
cmVydWVja2VuKSB7CisgICAgICAgIHRoaXMuYnVyZXJ1ZWNrZW4gPTNEIGJ1cmVydWVja2VuOwor
ICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkZBSFJMSUFCU1QiLCBwcmVjaXNpb249M0Q4
LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RmFocmxpYWJzdCgpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuZmFocmxpYWJzdDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBz
ZXRGYWhybGlhYnN0KEJpZ0RlY2ltYWwgZmFocmxpYWJzdCkgeworICAgICAgICB0aGlzLmZhaHJs
aWFic3QgPTNEIGZhaHJsaWFic3Q7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiRkFI
UlJFQUJTVCIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1h
bCBnZXRGYWhycmVhYnN0KCkgeworICAgICAgICByZXR1cm4gdGhpcy5mYWhycmVhYnN0OworICAg
IH0KKworICAgIHB1YmxpYyB2b2lkIHNldEZhaHJyZWFic3QoQmlnRGVjaW1hbCBmYWhycmVhYnN0
KSB7CisgICAgICAgIHRoaXMuZmFocnJlYWJzdCA9M0QgZmFocnJlYWJzdDsKKyAgICB9CisKKwor
ICAgIEBDb2x1bW4obmFtZT0zRCJGQUhSVElFRiIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykK
KyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRGYWhydGllZigpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuZmFocnRpZWY7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RmFocnRpZWYoQmlnRGVj
aW1hbCBmYWhydGllZikgeworICAgICAgICB0aGlzLmZhaHJ0aWVmID0zRCBmYWhydGllZjsKKyAg
ICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJBVVNCTElBQlNUIiwgcHJlY2lzaW9uPTNEOCwg
c2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEF1c2JsaWFic3QoKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLmF1c2JsaWFic3Q7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0
QXVzYmxpYWJzdChCaWdEZWNpbWFsIGF1c2JsaWFic3QpIHsKKyAgICAgICAgdGhpcy5hdXNibGlh
YnN0ID0zRCBhdXNibGlhYnN0OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkFVU0JS
RUFCU1QiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0QXVzYnJlYWJzdCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYXVzYnJlYWJzdDsKKyAgICB9
CisKKyAgICBwdWJsaWMgdm9pZCBzZXRBdXNicmVhYnN0KEJpZ0RlY2ltYWwgYXVzYnJlYWJzdCkg
eworICAgICAgICB0aGlzLmF1c2JyZWFic3QgPTNEIGF1c2JyZWFic3Q7CisgICAgfQorCisKKyAg
ICBAQ29sdW1uKG5hbWU9M0QiQUNIU0VBQlNUIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQor
ICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEFjaHNlYWJzdCgpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuYWNoc2VhYnN0OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEFjaHNlYWJzdChCaWdE
ZWNpbWFsIGFjaHNlYWJzdCkgeworICAgICAgICB0aGlzLmFjaHNlYWJzdCA9M0QgYWNoc2VhYnN0
OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlRFSUxWT05BQlNUIiwgcHJlY2lzaW9u
PTNEOCwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFRlaWx2b25hYnN0KCkg
eworICAgICAgICByZXR1cm4gdGhpcy50ZWlsdm9uYWJzdDsKKyAgICB9CisKKyAgICBwdWJsaWMg
dm9pZCBzZXRUZWlsdm9uYWJzdChCaWdEZWNpbWFsIHRlaWx2b25hYnN0KSB7CisgICAgICAgIHRo
aXMudGVpbHZvbmFic3QgPTNEIHRlaWx2b25hYnN0OworICAgIH0KKworCisgICAgQENvbHVtbihu
YW1lPTNEIlRFSUxCSVNBQlNUIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQorICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldFRlaWxiaXNhYnN0KCkgeworICAgICAgICByZXR1cm4gdGhpcy50ZWls
YmlzYWJzdDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRUZWlsYmlzYWJzdChCaWdEZWNp
bWFsIHRlaWxiaXNhYnN0KSB7CisgICAgICAgIHRoaXMudGVpbGJpc2Fic3QgPTNEIHRlaWxiaXNh
YnN0OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkhNQUJTVCIsIHByZWNpc2lvbj0z
RDgsIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRIbWFic3QoKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLmhtYWJzdDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRIbWFi
c3QoQmlnRGVjaW1hbCBobWFic3QpIHsKKyAgICAgICAgdGhpcy5obWFic3QgPTNEIGhtYWJzdDsK
KyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJMR0tSRUNIVFMiLCBwcmVjaXNpb249M0Qx
MSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldExna3JlY2h0cygpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMubGdrcmVjaHRzOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNl
dExna3JlY2h0cyhCaWdEZWNpbWFsIGxna3JlY2h0cykgeworICAgICAgICB0aGlzLmxna3JlY2h0
cyA9M0QgbGdrcmVjaHRzOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkxHS0hPQ0gi
LCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldExn
a2hvY2goKSB7CisgICAgICAgIHJldHVybiB0aGlzLmxna2hvY2g7CisgICAgfQorCisgICAgcHVi
bGljIHZvaWQgc2V0TGdraG9jaChCaWdEZWNpbWFsIGxna2hvY2gpIHsKKyAgICAgICAgdGhpcy5s
Z2tob2NoID0zRCBsZ2tob2NoOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkxHS0hP
RUhFIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdl
dExna2hvZWhlKCkgeworICAgICAgICByZXR1cm4gdGhpcy5sZ2tob2VoZTsKKyAgICB9CisKKyAg
ICBwdWJsaWMgdm9pZCBzZXRMZ2tob2VoZShCaWdEZWNpbWFsIGxna2hvZWhlKSB7CisgICAgICAg
IHRoaXMubGdraG9laGUgPTNEIGxna2hvZWhlOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1l
PTNEIlJHS1JFQ0hUUyIsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0UmdrcmVjaHRzKCkgeworICAgICAgICByZXR1cm4gdGhpcy5yZ2tyZWNodHM7
CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0UmdrcmVjaHRzKEJpZ0RlY2ltYWwgcmdrcmVj
aHRzKSB7CisgICAgICAgIHRoaXMucmdrcmVjaHRzID0zRCByZ2tyZWNodHM7CisgICAgfQorCisK
KyAgICBAQ29sdW1uKG5hbWU9M0QiUkdLSE9DSCIsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDMp
CisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UmdraG9jaCgpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMucmdraG9jaDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRSZ2tob2NoKEJpZ0RlY2lt
YWwgcmdraG9jaCkgeworICAgICAgICB0aGlzLnJna2hvY2ggPTNEIHJna2hvY2g7CisgICAgfQor
CisKKyAgICBAQ29sdW1uKG5hbWU9M0QiUkdLSE9FSEUiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0z
RDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UmdraG9laGUoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLnJna2hvZWhlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFJna2hvZWhlKEJp
Z0RlY2ltYWwgcmdraG9laGUpIHsKKyAgICAgICAgdGhpcy5yZ2tob2VoZSA9M0QgcmdraG9laGU7
CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiQkVNRVJLVU5HIiwgbGVuZ3RoPTNEMjQw
KQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0QmVtZXJrdW5nKCkgeworICAgICAgICByZXR1cm4gdGhp
cy5iZW1lcmt1bmc7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0QmVtZXJrdW5nKFN0cmlu
ZyBiZW1lcmt1bmcpIHsKKyAgICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKKyAg
ICB9CisKKyAgICBAVGVtcG9yYWwoVGVtcG9yYWxUeXBlLkRBVEUpCisgICAgQENvbHVtbihuYW1l
PTNEIkxBU1RVUERBVEVEIiwgbnVsbGFibGU9M0RmYWxzZSwgbGVuZ3RoPTNENykKKyAgICBwdWJs
aWMgRGF0ZSBnZXRMYXN0dXBkYXRlZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubGFzdHVwZGF0
ZWQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TGFzdHVwZGF0ZWQoRGF0ZSBsYXN0dXBk
YXRlZCkgeworICAgICAgICB0aGlzLmxhc3R1cGRhdGVkID0zRCBsYXN0dXBkYXRlZDsKKyAgICB9
CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJPTERQUkZJRCIsIHByZWNpc2lvbj0zRDExLCBzY2Fs
ZT0zRDApCisgICAgcHVibGljIExvbmcgZ2V0T2xkcHJmaWQoKSB7CisgICAgICAgIHJldHVybiB0
aGlzLm9sZHByZmlkOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE9sZHByZmlkKExvbmcg
b2xkcHJmaWQpIHsKKyAgICAgICAgdGhpcy5vbGRwcmZpZCA9M0Qgb2xkcHJmaWQ7CisgICAgfQor
CisKKyAgICBAQ29sdW1uKG5hbWU9M0QiTUlUVEVBQlNUIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9
M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1pdHRlYWJzdCgpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMubWl0dGVhYnN0OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1pdHRlYWJz
dChCaWdEZWNpbWFsIG1pdHRlYWJzdCkgeworICAgICAgICB0aGlzLm1pdHRlYWJzdCA9M0QgbWl0
dGVhYnN0OworICAgIH0KKworQE9uZVRvTWFueShmZXRjaD0zREZldGNoVHlwZS5MQVpZLCBtYXBw
ZWRCeT0zRCJocGVpbHVuZyIpCisgICAgcHVibGljIFNldDxIcGVpbHB1bmt0PiBnZXRIcGVpbHB1
bmt0cygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaHBlaWxwdW5rdHM7CisgICAgfQorCisgICAg
cHVibGljIHZvaWQgc2V0SHBlaWxwdW5rdHMoU2V0PEhwZWlscHVua3Q+IGhwZWlscHVua3RzKSB7
CisgICAgICAgIHRoaXMuaHBlaWxwdW5rdHMgPTNEIGhwZWlscHVua3RzOworICAgIH0KKworQE9u
ZVRvTWFueShmZXRjaD0zREZldGNoVHlwZS5MQVpZLCBtYXBwZWRCeT0zRCJocGVpbHVuZyIpCisg
ICAgcHVibGljIFNldDxNZXNzdW5nPiBnZXRNZXNzdW5ncygpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMubWVzc3VuZ3M7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TWVzc3VuZ3MoU2V0PE1l
c3N1bmc+IG1lc3N1bmdzKSB7CisgICAgICAgIHRoaXMubWVzc3VuZ3MgPTNEIG1lc3N1bmdzOwor
ICAgIH0KK30KZGlmZiAtciBiYzRlMWJmMjYyMjcgLXIgMWU2OGVjYTI2YjhhIGJhY2tlbmQvc3Jj
L21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50PQpzL3JpdmVyL3NlZGRiL21vZGVsL01lc3N1bmcu
amF2YQotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9i
YWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwv
TWVzc3VuZy5qYXY9CmEJTW9uIEFwciAyOSAxMTozMzowMSAyMDEzICswMjAwCkBAIC0wLDAgKzEs
MTAwMyBAQAorLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3Rh
bHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKKyAqIFNvZnR3YXJlIGVuZ2luZWVyaW5n
IGJ5IEludGV2YXRpb24gR21iSAorICoKKyAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVu
ZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAorICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVM
WSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQorICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0
aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAorICovCisKK3BhY2thZ2Ugb3Jn
LmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7CisvLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMToz
MDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCisKKworaW1wb3J0IGphdmEubWF0aC5C
aWdEZWNpbWFsOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5IYXNo
U2V0OworaW1wb3J0IGphdmEudXRpbC5TZXQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29s
dW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJz
aXN0ZW5jZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQg
amF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5N
YW55VG9PbmU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuT25lVG9NYW55OworaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLlRhYmxlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRlbXBvcmFs
OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRlbXBvcmFsVHlwZTsKKworLyoqCisgKiBNZXNz
dW5nIGdlbmVyYXRlZCBieSBoYm0yamF2YQorICovCitARW50aXR5CitAVGFibGUobmFtZT0zRCJN
RVNTVU5HIgorICAgICxzY2hlbWE9M0QiU0VEREIiCispCitwdWJsaWMgY2xhc3MgTWVzc3VuZyAg
aW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7CisKKyAgICAgcHJpdmF0ZSBsb25nIG1l
c3N1bmdpZDsKKyAgICAgcHJpdmF0ZSBTdGF0aW9uIHN0YXRpb247CisgICAgIHByaXZhdGUgR3Np
ZWJzYXR6IGdzaWVic2F0ejsKKyAgICAgcHJpdmF0ZSBHZmFlbmdlciBnZmFlbmdlcjsKKyAgICAg
cHJpdmF0ZSBIcGVpbHVuZyBocGVpbHVuZzsKKyAgICAgcHJpdmF0ZSBEYXRlIGRhdHVtOworICAg
ICBwcml2YXRlIExvbmcgbXBlaWx1bmdpZDsKKyAgICAgcHJpdmF0ZSBpbnQgbWVzc25yOworICAg
ICBwcml2YXRlIFN0cmluZyBmZ3VlOworICAgICBwcml2YXRlIERhdGUgdWhydm9uOworICAgICBw
cml2YXRlIERhdGUgdWhyYmlzOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgd3NwY207CisgICAg
IHByaXZhdGUgQmlnRGVjaW1hbCBRQnBlZ2VsOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgd3Nw
bm47CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBpZTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IHd0ZW1wOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZ2JyZWl0ZTsKKyAgICAgcHJpdmF0ZSBC
aWdEZWNpbWFsIGdicmVpdGV2b247CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBnYnJlaXRlYmlz
OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdGdlc2NoaWViZTsKKyAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIHRzYW5kOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdHNjaHdlYjsKKyAgICAgcHJp
dmF0ZSBCaWdEZWNpbWFsIGNzY2h3ZWI7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCB1ZmVybGlh
YnN0OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdWZlcnJlYWJzdDsKKyAgICAgcHJpdmF0ZSBC
aWdEZWNpbWFsIHE7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBBSHBlaWw7CisgICAgIHByaXZh
dGUgQmlnRGVjaW1hbCBBTXBlaWw7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBiOworICAgICBw
cml2YXRlIEJpZ0RlY2ltYWwgaG07CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCB2bTsKKyAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIHZzb2hsZTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHRhdTsK
KyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHRhdXY7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCB0
ZWlsUTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHRlaWxBSHBlaWw7CisgICAgIHByaXZhdGUg
QmlnRGVjaW1hbCB0ZWlsQU1wZWlsOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdGVpbEI7Cisg
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCB0ZWlsSG07CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCB0
ZWlsVm07CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCB0ZWlsVnNvaGxlOworICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgdGVpbFRhdTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHRlaWxUYXV2Owor
ICAgICBwcml2YXRlIEJvb2xlYW4gbWl0dGVsdHlwOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
ZG07CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzazsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IHNvOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IGQ5MDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQ4NDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNp
bWFsIGQ4MDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQ3NTsKKyAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIGQ3MDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQ2MDsKKyAgICAgcHJpdmF0ZSBC
aWdEZWNpbWFsIGQ1MDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQ0MDsKKyAgICAgcHJpdmF0
ZSBCaWdEZWNpbWFsIGQzMDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQyNTsKKyAgICAgcHJp
dmF0ZSBCaWdEZWNpbWFsIGQyMDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGQxNjsKKyAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIGQxMDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGRtaW47Cisg
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkdXJjaGRtaW47CisgICAgIHByaXZhdGUgQmlnRGVjaW1h
bCBkbWF4OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZHVyY2hkbWF4OworICAgICBwcml2YXRl
IGludCBOR2VzY2hpZWI7CisgICAgIHByaXZhdGUgaW50IE5WaWVscGt0OworICAgICBwcml2YXRl
IERhdGUgc3lzRGF0ZTsKKyAgICAgcHJpdmF0ZSBTdHJpbmcgYmVtZXJrdW5nOworICAgICBwcml2
YXRlIERhdGUgbGFzdHVwZGF0ZWQ7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBrbTsKKyAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIGdsb3RhYnN0b2Zmc2V0OworICAgICBwcml2YXRlIEJpZ0RlY2lt
YWwgc2xvdGFic3RvZmZzZXQ7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBnYnJlaXRldm9ubGlu
a3M7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBnYnJlaXRlYmlzbGlua3M7CisgICAgIHByaXZh
dGUgQm9vbGVhbiBnbG90dWZlcmFic3Rpc3R2b25saW5rczsKKyAgICAgcHJpdmF0ZSBCb29sZWFu
IHNsb3R1ZmVyYWJzdGlzdHZvbmxpbmtzOworICAgICBwcml2YXRlIFNldDxHbG90cmVjaHRlPiBn
bG90cmVjaHRlcyA9M0QgbmV3IEhhc2hTZXQ8R2xvdHJlY2h0ZT4oMCk7CisgICAgIHByaXZhdGUg
U2V0PFNsb3RyZWNodGU+IHNsb3RyZWNodGVzID0zRCBuZXcgSGFzaFNldDxTbG90cmVjaHRlPigw
KTsKKworICAgIHB1YmxpYyBNZXNzdW5nKCkgeworICAgIH0KKworCisgICAgcHVibGljIE1lc3N1
bmcobG9uZyBtZXNzdW5naWQsIFN0YXRpb24gc3RhdGlvbiwgRGF0ZSBkYXR1bSwgaW50IG1lc3Nu
cj0KLCBpbnQgTkdlc2NoaWViLCBpbnQgTlZpZWxwa3QsIERhdGUgbGFzdHVwZGF0ZWQsIEJpZ0Rl
Y2ltYWwgZ2xvdGFic3RvZmZzZXQsPQogQmlnRGVjaW1hbCBzbG90YWJzdG9mZnNldCkgeworICAg
ICAgICB0aGlzLm1lc3N1bmdpZCA9M0QgbWVzc3VuZ2lkOworICAgICAgICB0aGlzLnN0YXRpb24g
PTNEIHN0YXRpb247CisgICAgICAgIHRoaXMuZGF0dW0gPTNEIGRhdHVtOworICAgICAgICB0aGlz
Lm1lc3NuciA9M0QgbWVzc25yOworICAgICAgICB0aGlzLk5HZXNjaGllYiA9M0QgTkdlc2NoaWVi
OworICAgICAgICB0aGlzLk5WaWVscGt0ID0zRCBOVmllbHBrdDsKKyAgICAgICAgdGhpcy5sYXN0
dXBkYXRlZCA9M0QgbGFzdHVwZGF0ZWQ7CisgICAgICAgIHRoaXMuZ2xvdGFic3RvZmZzZXQgPTNE
IGdsb3RhYnN0b2Zmc2V0OworICAgICAgICB0aGlzLnNsb3RhYnN0b2Zmc2V0ID0zRCBzbG90YWJz
dG9mZnNldDsKKyAgICB9CisgICAgcHVibGljIE1lc3N1bmcobG9uZyBtZXNzdW5naWQsIFN0YXRp
b24gc3RhdGlvbiwgR3NpZWJzYXR6IGdzaWVic2F0eiwgRz0KZmFlbmdlciBnZmFlbmdlciwgSHBl
aWx1bmcgaHBlaWx1bmcsIERhdGUgZGF0dW0sIExvbmcgbXBlaWx1bmdpZCwgaW50IG1lc3NuPQpy
LCBTdHJpbmcgZmd1ZSwgRGF0ZSB1aHJ2b24sIERhdGUgdWhyYmlzLCBCaWdEZWNpbWFsIHdzcGNt
LCBCaWdEZWNpbWFsIFFCcGU9CmdlbCwgQmlnRGVjaW1hbCB3c3BubiwgQmlnRGVjaW1hbCBpZSwg
QmlnRGVjaW1hbCB3dGVtcCwgQmlnRGVjaW1hbCBnYnJlaXRlLD0KIEJpZ0RlY2ltYWwgZ2JyZWl0
ZXZvbiwgQmlnRGVjaW1hbCBnYnJlaXRlYmlzLCBCaWdEZWNpbWFsIHRnZXNjaGllYmUsIEJpZ0Rl
PQpjaW1hbCB0c2FuZCwgQmlnRGVjaW1hbCB0c2Nod2ViLCBCaWdEZWNpbWFsIGNzY2h3ZWIsIEJp
Z0RlY2ltYWwgdWZlcmxpYWJzdCw9CiBCaWdEZWNpbWFsIHVmZXJyZWFic3QsIEJpZ0RlY2ltYWwg
cSwgQmlnRGVjaW1hbCBBSHBlaWwsIEJpZ0RlY2ltYWwgQU1wZWlsLD0KIEJpZ0RlY2ltYWwgYiwg
QmlnRGVjaW1hbCBobSwgQmlnRGVjaW1hbCB2bSwgQmlnRGVjaW1hbCB2c29obGUsIEJpZ0RlY2lt
YWwgPQp0YXUsIEJpZ0RlY2ltYWwgdGF1diwgQmlnRGVjaW1hbCB0ZWlsUSwgQmlnRGVjaW1hbCB0
ZWlsQUhwZWlsLCBCaWdEZWNpbWFsIHQ9CmVpbEFNcGVpbCwgQmlnRGVjaW1hbCB0ZWlsQiwgQmln
RGVjaW1hbCB0ZWlsSG0sIEJpZ0RlY2ltYWwgdGVpbFZtLCBCaWdEZWNpbT0KYWwgdGVpbFZzb2hs
ZSwgQmlnRGVjaW1hbCB0ZWlsVGF1LCBCaWdEZWNpbWFsIHRlaWxUYXV2LCBCb29sZWFuIG1pdHRl
bHR5cCwgPQpCaWdEZWNpbWFsIGRtLCBCaWdEZWNpbWFsIHNrLCBCaWdEZWNpbWFsIHNvLCBCaWdE
ZWNpbWFsIHUsIEJpZ0RlY2ltYWwgZDkwLCA9CkJpZ0RlY2ltYWwgZDg0LCBCaWdEZWNpbWFsIGQ4
MCwgQmlnRGVjaW1hbCBkNzUsIEJpZ0RlY2ltYWwgZDcwLCBCaWdEZWNpbWFsID0KZDYwLCBCaWdE
ZWNpbWFsIGQ1MCwgQmlnRGVjaW1hbCBkNDAsIEJpZ0RlY2ltYWwgZDMwLCBCaWdEZWNpbWFsIGQy
NSwgQmlnRGVjPQppbWFsIGQyMCwgQmlnRGVjaW1hbCBkMTYsIEJpZ0RlY2ltYWwgZDEwLCBCaWdE
ZWNpbWFsIGRtaW4sIEJpZ0RlY2ltYWwgZHVyY2g9CmRtaW4sIEJpZ0RlY2ltYWwgZG1heCwgQmln
RGVjaW1hbCBkdXJjaGRtYXgsIGludCBOR2VzY2hpZWIsIGludCBOVmllbHBrdCwgRD0KYXRlIHN5
c0RhdGUsIFN0cmluZyBiZW1lcmt1bmcsIERhdGUgbGFzdHVwZGF0ZWQsIEJpZ0RlY2ltYWwga20s
IEJpZ0RlY2ltYWwgPQpnbG90YWJzdG9mZnNldCwgQmlnRGVjaW1hbCBzbG90YWJzdG9mZnNldCwg
QmlnRGVjaW1hbCBnYnJlaXRldm9ubGlua3MsIEJpZ0Q9CmVjaW1hbCBnYnJlaXRlYmlzbGlua3Ms
IEJvb2xlYW4gZ2xvdHVmZXJhYnN0aXN0dm9ubGlua3MsIEJvb2xlYW4gc2xvdHVmZXJhYj0Kc3Rp
c3R2b25saW5rcywgU2V0PEdsb3RyZWNodGU+IGdsb3RyZWNodGVzLCBTZXQ8U2xvdHJlY2h0ZT4g
c2xvdHJlY2h0ZXMpIHsKKyAgICAgICB0aGlzLm1lc3N1bmdpZCA9M0QgbWVzc3VuZ2lkOworICAg
ICAgIHRoaXMuc3RhdGlvbiA9M0Qgc3RhdGlvbjsKKyAgICAgICB0aGlzLmdzaWVic2F0eiA9M0Qg
Z3NpZWJzYXR6OworICAgICAgIHRoaXMuZ2ZhZW5nZXIgPTNEIGdmYWVuZ2VyOworICAgICAgIHRo
aXMuaHBlaWx1bmcgPTNEIGhwZWlsdW5nOworICAgICAgIHRoaXMuZGF0dW0gPTNEIGRhdHVtOwor
ICAgICAgIHRoaXMubXBlaWx1bmdpZCA9M0QgbXBlaWx1bmdpZDsKKyAgICAgICB0aGlzLm1lc3Nu
ciA9M0QgbWVzc25yOworICAgICAgIHRoaXMuZmd1ZSA9M0QgZmd1ZTsKKyAgICAgICB0aGlzLnVo
cnZvbiA9M0QgdWhydm9uOworICAgICAgIHRoaXMudWhyYmlzID0zRCB1aHJiaXM7CisgICAgICAg
dGhpcy53c3BjbSA9M0Qgd3NwY207CisgICAgICAgdGhpcy5RQnBlZ2VsID0zRCBRQnBlZ2VsOwor
ICAgICAgIHRoaXMud3Nwbm4gPTNEIHdzcG5uOworICAgICAgIHRoaXMuaWUgPTNEIGllOworICAg
ICAgIHRoaXMud3RlbXAgPTNEIHd0ZW1wOworICAgICAgIHRoaXMuZ2JyZWl0ZSA9M0QgZ2JyZWl0
ZTsKKyAgICAgICB0aGlzLmdicmVpdGV2b24gPTNEIGdicmVpdGV2b247CisgICAgICAgdGhpcy5n
YnJlaXRlYmlzID0zRCBnYnJlaXRlYmlzOworICAgICAgIHRoaXMudGdlc2NoaWViZSA9M0QgdGdl
c2NoaWViZTsKKyAgICAgICB0aGlzLnRzYW5kID0zRCB0c2FuZDsKKyAgICAgICB0aGlzLnRzY2h3
ZWIgPTNEIHRzY2h3ZWI7CisgICAgICAgdGhpcy5jc2Nod2ViID0zRCBjc2Nod2ViOworICAgICAg
IHRoaXMudWZlcmxpYWJzdCA9M0QgdWZlcmxpYWJzdDsKKyAgICAgICB0aGlzLnVmZXJyZWFic3Qg
PTNEIHVmZXJyZWFic3Q7CisgICAgICAgdGhpcy5xID0zRCBxOworICAgICAgIHRoaXMuQUhwZWls
ID0zRCBBSHBlaWw7CisgICAgICAgdGhpcy5BTXBlaWwgPTNEIEFNcGVpbDsKKyAgICAgICB0aGlz
LmIgPTNEIGI7CisgICAgICAgdGhpcy5obSA9M0QgaG07CisgICAgICAgdGhpcy52bSA9M0Qgdm07
CisgICAgICAgdGhpcy52c29obGUgPTNEIHZzb2hsZTsKKyAgICAgICB0aGlzLnRhdSA9M0QgdGF1
OworICAgICAgIHRoaXMudGF1diA9M0QgdGF1djsKKyAgICAgICB0aGlzLnRlaWxRID0zRCB0ZWls
UTsKKyAgICAgICB0aGlzLnRlaWxBSHBlaWwgPTNEIHRlaWxBSHBlaWw7CisgICAgICAgdGhpcy50
ZWlsQU1wZWlsID0zRCB0ZWlsQU1wZWlsOworICAgICAgIHRoaXMudGVpbEIgPTNEIHRlaWxCOwor
ICAgICAgIHRoaXMudGVpbEhtID0zRCB0ZWlsSG07CisgICAgICAgdGhpcy50ZWlsVm0gPTNEIHRl
aWxWbTsKKyAgICAgICB0aGlzLnRlaWxWc29obGUgPTNEIHRlaWxWc29obGU7CisgICAgICAgdGhp
cy50ZWlsVGF1ID0zRCB0ZWlsVGF1OworICAgICAgIHRoaXMudGVpbFRhdXYgPTNEIHRlaWxUYXV2
OworICAgICAgIHRoaXMubWl0dGVsdHlwID0zRCBtaXR0ZWx0eXA7CisgICAgICAgdGhpcy5kbSA9
M0QgZG07CisgICAgICAgdGhpcy5zayA9M0Qgc2s7CisgICAgICAgdGhpcy5zbyA9M0Qgc287Cisg
ICAgICAgdGhpcy51ID0zRCB1OworICAgICAgIHRoaXMuZDkwID0zRCBkOTA7CisgICAgICAgdGhp
cy5kODQgPTNEIGQ4NDsKKyAgICAgICB0aGlzLmQ4MCA9M0QgZDgwOworICAgICAgIHRoaXMuZDc1
ID0zRCBkNzU7CisgICAgICAgdGhpcy5kNzAgPTNEIGQ3MDsKKyAgICAgICB0aGlzLmQ2MCA9M0Qg
ZDYwOworICAgICAgIHRoaXMuZDUwID0zRCBkNTA7CisgICAgICAgdGhpcy5kNDAgPTNEIGQ0MDsK
KyAgICAgICB0aGlzLmQzMCA9M0QgZDMwOworICAgICAgIHRoaXMuZDI1ID0zRCBkMjU7CisgICAg
ICAgdGhpcy5kMjAgPTNEIGQyMDsKKyAgICAgICB0aGlzLmQxNiA9M0QgZDE2OworICAgICAgIHRo
aXMuZDEwID0zRCBkMTA7CisgICAgICAgdGhpcy5kbWluID0zRCBkbWluOworICAgICAgIHRoaXMu
ZHVyY2hkbWluID0zRCBkdXJjaGRtaW47CisgICAgICAgdGhpcy5kbWF4ID0zRCBkbWF4OworICAg
ICAgIHRoaXMuZHVyY2hkbWF4ID0zRCBkdXJjaGRtYXg7CisgICAgICAgdGhpcy5OR2VzY2hpZWIg
PTNEIE5HZXNjaGllYjsKKyAgICAgICB0aGlzLk5WaWVscGt0ID0zRCBOVmllbHBrdDsKKyAgICAg
ICB0aGlzLnN5c0RhdGUgPTNEIHN5c0RhdGU7CisgICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJl
bWVya3VuZzsKKyAgICAgICB0aGlzLmxhc3R1cGRhdGVkID0zRCBsYXN0dXBkYXRlZDsKKyAgICAg
ICB0aGlzLmttID0zRCBrbTsKKyAgICAgICB0aGlzLmdsb3RhYnN0b2Zmc2V0ID0zRCBnbG90YWJz
dG9mZnNldDsKKyAgICAgICB0aGlzLnNsb3RhYnN0b2Zmc2V0ID0zRCBzbG90YWJzdG9mZnNldDsK
KyAgICAgICB0aGlzLmdicmVpdGV2b25saW5rcyA9M0QgZ2JyZWl0ZXZvbmxpbmtzOworICAgICAg
IHRoaXMuZ2JyZWl0ZWJpc2xpbmtzID0zRCBnYnJlaXRlYmlzbGlua3M7CisgICAgICAgdGhpcy5n
bG90dWZlcmFic3Rpc3R2b25saW5rcyA9M0QgZ2xvdHVmZXJhYnN0aXN0dm9ubGlua3M7CisgICAg
ICAgdGhpcy5zbG90dWZlcmFic3Rpc3R2b25saW5rcyA9M0Qgc2xvdHVmZXJhYnN0aXN0dm9ubGlu
a3M7CisgICAgICAgdGhpcy5nbG90cmVjaHRlcyA9M0QgZ2xvdHJlY2h0ZXM7CisgICAgICAgdGhp
cy5zbG90cmVjaHRlcyA9M0Qgc2xvdHJlY2h0ZXM7CisgICAgfQorCisgICAgIEBJZAorCisKKyAg
ICBAQ29sdW1uKG5hbWU9M0QiTUVTU1VOR0lEIiwgdW5pcXVlPTNEdHJ1ZSwgbnVsbGFibGU9M0Rm
YWxzZSwgcHJlY2lzaW9uPQo9M0QxMSwgc2NhbGU9M0QwKQorICAgIHB1YmxpYyBsb25nIGdldE1l
c3N1bmdpZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubWVzc3VuZ2lkOworICAgIH0KKworICAg
IHB1YmxpYyB2b2lkIHNldE1lc3N1bmdpZChsb25nIG1lc3N1bmdpZCkgeworICAgICAgICB0aGlz
Lm1lc3N1bmdpZCA9M0QgbWVzc3VuZ2lkOworICAgIH0KKworQE1hbnlUb09uZShmZXRjaD0zREZl
dGNoVHlwZS5MQVpZKQorICAgIEBKb2luQ29sdW1uKG5hbWU9M0QiU1RBVElPTklEIiwgbnVsbGFi
bGU9M0RmYWxzZSkKKyAgICBwdWJsaWMgU3RhdGlvbiBnZXRTdGF0aW9uKCkgeworICAgICAgICBy
ZXR1cm4gdGhpcy5zdGF0aW9uOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFN0YXRpb24o
U3RhdGlvbiBzdGF0aW9uKSB7CisgICAgICAgIHRoaXMuc3RhdGlvbiA9M0Qgc3RhdGlvbjsKKyAg
ICB9CisKK0BNYW55VG9PbmUoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSkKKyAgICBASm9pbkNvbHVt
bihuYW1lPTNEIkdTSUVCU0FUWklEIikKKyAgICBwdWJsaWMgR3NpZWJzYXR6IGdldEdzaWVic2F0
eigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZ3NpZWJzYXR6OworICAgIH0KKworICAgIHB1Ymxp
YyB2b2lkIHNldEdzaWVic2F0eihHc2llYnNhdHogZ3NpZWJzYXR6KSB7CisgICAgICAgIHRoaXMu
Z3NpZWJzYXR6ID0zRCBnc2llYnNhdHo7CisgICAgfQorCitATWFueVRvT25lKGZldGNoPTNERmV0
Y2hUeXBlLkxBWlkpCisgICAgQEpvaW5Db2x1bW4obmFtZT0zRCJHRkFFTkdFUklEIikKKyAgICBw
dWJsaWMgR2ZhZW5nZXIgZ2V0R2ZhZW5nZXIoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmdmYWVu
Z2VyOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEdmYWVuZ2VyKEdmYWVuZ2VyIGdmYWVu
Z2VyKSB7CisgICAgICAgIHRoaXMuZ2ZhZW5nZXIgPTNEIGdmYWVuZ2VyOworICAgIH0KKworQE1h
bnlUb09uZShmZXRjaD0zREZldGNoVHlwZS5MQVpZKQorICAgIEBKb2luQ29sdW1uKG5hbWU9M0Qi
SFBFSUxVTkdJRCIpCisgICAgcHVibGljIEhwZWlsdW5nIGdldEhwZWlsdW5nKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy5ocGVpbHVuZzsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRIcGVp
bHVuZyhIcGVpbHVuZyBocGVpbHVuZykgeworICAgICAgICB0aGlzLmhwZWlsdW5nID0zRCBocGVp
bHVuZzsKKyAgICB9CisKKyAgICBAVGVtcG9yYWwoVGVtcG9yYWxUeXBlLkRBVEUpCisgICAgQENv
bHVtbihuYW1lPTNEIkRBVFVNIiwgbnVsbGFibGU9M0RmYWxzZSwgbGVuZ3RoPTNENykKKyAgICBw
dWJsaWMgRGF0ZSBnZXREYXR1bSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZGF0dW07CisgICAg
fQorCisgICAgcHVibGljIHZvaWQgc2V0RGF0dW0oRGF0ZSBkYXR1bSkgeworICAgICAgICB0aGlz
LmRhdHVtID0zRCBkYXR1bTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJNUEVJTFVO
R0lEIiwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEMCkKKyAgICBwdWJsaWMgTG9uZyBnZXRNcGVp
bHVuZ2lkKCkgeworICAgICAgICByZXR1cm4gdGhpcy5tcGVpbHVuZ2lkOworICAgIH0KKworICAg
IHB1YmxpYyB2b2lkIHNldE1wZWlsdW5naWQoTG9uZyBtcGVpbHVuZ2lkKSB7CisgICAgICAgIHRo
aXMubXBlaWx1bmdpZCA9M0QgbXBlaWx1bmdpZDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFt
ZT0zRCJNRVNTTlIiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q1LCBzY2FsZT0zRDAp
CisgICAgcHVibGljIGludCBnZXRNZXNzbnIoKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1lc3Nu
cjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNZXNzbnIoaW50IG1lc3NucikgeworICAg
ICAgICB0aGlzLm1lc3NuciA9M0QgbWVzc25yOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1l
PTNEIkZHVUUiLCBsZW5ndGg9M0QxMCkKKyAgICBwdWJsaWMgU3RyaW5nIGdldEZndWUoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLmZndWU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0Rmd1
ZShTdHJpbmcgZmd1ZSkgeworICAgICAgICB0aGlzLmZndWUgPTNEIGZndWU7CisgICAgfQorCisg
ICAgQFRlbXBvcmFsKFRlbXBvcmFsVHlwZS5EQVRFKQorICAgIEBDb2x1bW4obmFtZT0zRCJVSFJW
T04iLCBsZW5ndGg9M0Q3KQorICAgIHB1YmxpYyBEYXRlIGdldFVocnZvbigpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMudWhydm9uOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFVocnZvbihE
YXRlIHVocnZvbikgeworICAgICAgICB0aGlzLnVocnZvbiA9M0QgdWhydm9uOworICAgIH0KKwor
ICAgIEBUZW1wb3JhbChUZW1wb3JhbFR5cGUuREFURSkKKyAgICBAQ29sdW1uKG5hbWU9M0QiVUhS
QklTIiwgbGVuZ3RoPTNENykKKyAgICBwdWJsaWMgRGF0ZSBnZXRVaHJiaXMoKSB7CisgICAgICAg
IHJldHVybiB0aGlzLnVocmJpczsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVaHJiaXMo
RGF0ZSB1aHJiaXMpIHsKKyAgICAgICAgdGhpcy51aHJiaXMgPTNEIHVocmJpczsKKyAgICB9CisK
KworICAgIEBDb2x1bW4obmFtZT0zRCJXU1BDTSIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMSkK
KyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRXc3BjbSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
d3NwY207CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0V3NwY20oQmlnRGVjaW1hbCB3c3Bj
bSkgeworICAgICAgICB0aGlzLndzcGNtID0zRCB3c3BjbTsKKyAgICB9CisKKworICAgIEBDb2x1
bW4obmFtZT0zRCJRX0JQRUdFTCIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKKyAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXRRQnBlZ2VsKCkgeworICAgICAgICByZXR1cm4gdGhpcy5RQnBlZ2Vs
OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFFCcGVnZWwoQmlnRGVjaW1hbCBRQnBlZ2Vs
KSB7CisgICAgICAgIHRoaXMuUUJwZWdlbCA9M0QgUUJwZWdlbDsKKyAgICB9CisKKworICAgIEBD
b2x1bW4obmFtZT0zRCJXU1BOTiIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKKyAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXRXc3BubigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMud3Nwbm47Cisg
ICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0V3Nwbm4oQmlnRGVjaW1hbCB3c3BubikgeworICAg
ICAgICB0aGlzLndzcG5uID0zRCB3c3BubjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0z
RCJJRSIsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXRJZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaWU7CisgICAgfQorCisgICAgcHVibGljIHZv
aWQgc2V0SWUoQmlnRGVjaW1hbCBpZSkgeworICAgICAgICB0aGlzLmllID0zRCBpZTsKKyAgICB9
CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJXVEVNUCIsIHByZWNpc2lvbj0zRDQsIHNjYWxlPTNE
MSkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRXdGVtcCgpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMud3RlbXA7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0V3RlbXAoQmlnRGVjaW1hbCB3
dGVtcCkgeworICAgICAgICB0aGlzLnd0ZW1wID0zRCB3dGVtcDsKKyAgICB9CisKKworICAgIEBD
b2x1bW4obmFtZT0zRCJHQlJFSVRFIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQorICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldEdicmVpdGUoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmdicmVp
dGU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0R2JyZWl0ZShCaWdEZWNpbWFsIGdicmVp
dGUpIHsKKyAgICAgICAgdGhpcy5nYnJlaXRlID0zRCBnYnJlaXRlOworICAgIH0KKworCisgICAg
QENvbHVtbihuYW1lPTNEIkdCUkVJVEVWT04iLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCisg
ICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0R2JyZWl0ZXZvbigpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuZ2JyZWl0ZXZvbjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRHYnJlaXRldm9uKEJp
Z0RlY2ltYWwgZ2JyZWl0ZXZvbikgeworICAgICAgICB0aGlzLmdicmVpdGV2b24gPTNEIGdicmVp
dGV2b247CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiR0JSRUlURUJJUyIsIHByZWNp
c2lvbj0zRDgsIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRHYnJlaXRlYmlz
KCkgeworICAgICAgICByZXR1cm4gdGhpcy5nYnJlaXRlYmlzOworICAgIH0KKworICAgIHB1Ymxp
YyB2b2lkIHNldEdicmVpdGViaXMoQmlnRGVjaW1hbCBnYnJlaXRlYmlzKSB7CisgICAgICAgIHRo
aXMuZ2JyZWl0ZWJpcyA9M0QgZ2JyZWl0ZWJpczsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFt
ZT0zRCJUR0VTQ0hJRUJFIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBC
aWdEZWNpbWFsIGdldFRnZXNjaGllYmUoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnRnZXNjaGll
YmU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VGdlc2NoaWViZShCaWdEZWNpbWFsIHRn
ZXNjaGllYmUpIHsKKyAgICAgICAgdGhpcy50Z2VzY2hpZWJlID0zRCB0Z2VzY2hpZWJlOworICAg
IH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlRTQU5EIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9
M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFRzYW5kKCkgeworICAgICAgICByZXR1cm4g
dGhpcy50c2FuZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRUc2FuZChCaWdEZWNpbWFs
IHRzYW5kKSB7CisgICAgICAgIHRoaXMudHNhbmQgPTNEIHRzYW5kOworICAgIH0KKworCisgICAg
QENvbHVtbihuYW1lPTNEIlRTQ0hXRUIiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCisgICAg
cHVibGljIEJpZ0RlY2ltYWwgZ2V0VHNjaHdlYigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudHNj
aHdlYjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRUc2Nod2ViKEJpZ0RlY2ltYWwgdHNj
aHdlYikgeworICAgICAgICB0aGlzLnRzY2h3ZWIgPTNEIHRzY2h3ZWI7CisgICAgfQorCisKKyAg
ICBAQ29sdW1uKG5hbWU9M0QiQ1NDSFdFQiIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKKyAg
ICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRDc2Nod2ViKCkgeworICAgICAgICByZXR1cm4gdGhpcy5j
c2Nod2ViOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldENzY2h3ZWIoQmlnRGVjaW1hbCBj
c2Nod2ViKSB7CisgICAgICAgIHRoaXMuY3NjaHdlYiA9M0QgY3NjaHdlYjsKKyAgICB9CisKKwor
ICAgIEBDb2x1bW4obmFtZT0zRCJVRkVSTElBQlNUIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0Qz
KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFVmZXJsaWFic3QoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLnVmZXJsaWFic3Q7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VWZlcmxpYWJz
dChCaWdEZWNpbWFsIHVmZXJsaWFic3QpIHsKKyAgICAgICAgdGhpcy51ZmVybGlhYnN0ID0zRCB1
ZmVybGlhYnN0OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlVGRVJSRUFCU1QiLCBw
cmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VWZlcnJl
YWJzdCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudWZlcnJlYWJzdDsKKyAgICB9CisKKyAgICBw
dWJsaWMgdm9pZCBzZXRVZmVycmVhYnN0KEJpZ0RlY2ltYWwgdWZlcnJlYWJzdCkgeworICAgICAg
ICB0aGlzLnVmZXJyZWFic3QgPTNEIHVmZXJyZWFic3Q7CisgICAgfQorCisKKyAgICBAQ29sdW1u
KG5hbWU9M0QiUSIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVj
aW1hbCBnZXRRKCkgeworICAgICAgICByZXR1cm4gdGhpcy5xOworICAgIH0KKworICAgIHB1Ymxp
YyB2b2lkIHNldFEoQmlnRGVjaW1hbCBxKSB7CisgICAgICAgIHRoaXMucSA9M0QgcTsKKyAgICB9
CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJBX0hQRUlMIiwgcHJlY2lzaW9uPTNENiwgc2NhbGU9
M0QxKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEFIcGVpbCgpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuQUhwZWlsOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEFIcGVpbChCaWdEZWNp
bWFsIEFIcGVpbCkgeworICAgICAgICB0aGlzLkFIcGVpbCA9M0QgQUhwZWlsOworICAgIH0KKwor
CisgICAgQENvbHVtbihuYW1lPTNEIkFfTVBFSUwiLCBwcmVjaXNpb249M0Q2LCBzY2FsZT0zRDEp
CisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0QU1wZWlsKCkgeworICAgICAgICByZXR1cm4gdGhp
cy5BTXBlaWw7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0QU1wZWlsKEJpZ0RlY2ltYWwg
QU1wZWlsKSB7CisgICAgICAgIHRoaXMuQU1wZWlsID0zRCBBTXBlaWw7CisgICAgfQorCisKKyAg
ICBAQ29sdW1uKG5hbWU9M0QiQiIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKKyAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXRCKCkgeworICAgICAgICByZXR1cm4gdGhpcy5iOworICAgIH0KKwor
ICAgIHB1YmxpYyB2b2lkIHNldEIoQmlnRGVjaW1hbCBiKSB7CisgICAgICAgIHRoaXMuYiA9M0Qg
YjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJITSIsIHByZWNpc2lvbj0zRDgsIHNj
YWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRIbSgpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuaG07CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0SG0oQmlnRGVjaW1hbCBobSkg
eworICAgICAgICB0aGlzLmhtID0zRCBobTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0z
RCJWTSIsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXRWbSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudm07CisgICAgfQorCisgICAgcHVibGljIHZv
aWQgc2V0Vm0oQmlnRGVjaW1hbCB2bSkgeworICAgICAgICB0aGlzLnZtID0zRCB2bTsKKyAgICB9
CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJWU09ITEUiLCBwcmVjaXNpb249M0Q2LCBzY2FsZT0z
RDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VnNvaGxlKCkgeworICAgICAgICByZXR1cm4g
dGhpcy52c29obGU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VnNvaGxlKEJpZ0RlY2lt
YWwgdnNvaGxlKSB7CisgICAgICAgIHRoaXMudnNvaGxlID0zRCB2c29obGU7CisgICAgfQorCisK
KyAgICBAQ29sdW1uKG5hbWU9M0QiVEFVIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0Q0KQorICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldFRhdSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudGF1Owor
ICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFRhdShCaWdEZWNpbWFsIHRhdSkgeworICAgICAg
ICB0aGlzLnRhdSA9M0QgdGF1OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlRBVVYi
LCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDYpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VGF1
digpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudGF1djsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9p
ZCBzZXRUYXV2KEJpZ0RlY2ltYWwgdGF1dikgeworICAgICAgICB0aGlzLnRhdXYgPTNEIHRhdXY7
CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiVEVJTF9RIiwgcHJlY2lzaW9uPTNEOCwg
c2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFRlaWxRKCkgeworICAgICAgICBy
ZXR1cm4gdGhpcy50ZWlsUTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRUZWlsUShCaWdE
ZWNpbWFsIHRlaWxRKSB7CisgICAgICAgIHRoaXMudGVpbFEgPTNEIHRlaWxROworICAgIH0KKwor
CisgICAgQENvbHVtbihuYW1lPTNEIlRFSUxfQV9IUEVJTCIsIHByZWNpc2lvbj0zRDYsIHNjYWxl
PTNEMSkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRUZWlsQUhwZWlsKCkgeworICAgICAgICBy
ZXR1cm4gdGhpcy50ZWlsQUhwZWlsOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFRlaWxB
SHBlaWwoQmlnRGVjaW1hbCB0ZWlsQUhwZWlsKSB7CisgICAgICAgIHRoaXMudGVpbEFIcGVpbCA9
M0QgdGVpbEFIcGVpbDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJURUlMX0FfTVBF
SUwiLCBwcmVjaXNpb249M0Q2LCBzY2FsZT0zRDEpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0
VGVpbEFNcGVpbCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudGVpbEFNcGVpbDsKKyAgICB9CisK
KyAgICBwdWJsaWMgdm9pZCBzZXRUZWlsQU1wZWlsKEJpZ0RlY2ltYWwgdGVpbEFNcGVpbCkgewor
ICAgICAgICB0aGlzLnRlaWxBTXBlaWwgPTNEIHRlaWxBTXBlaWw7CisgICAgfQorCisKKyAgICBA
Q29sdW1uKG5hbWU9M0QiVEVJTF9CIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQorICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldFRlaWxCKCkgeworICAgICAgICByZXR1cm4gdGhpcy50ZWlsQjsK
KyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRUZWlsQihCaWdEZWNpbWFsIHRlaWxCKSB7Cisg
ICAgICAgIHRoaXMudGVpbEIgPTNEIHRlaWxCOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1l
PTNEIlRFSUxfSE0iLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0VGVpbEhtKCkgeworICAgICAgICByZXR1cm4gdGhpcy50ZWlsSG07CisgICAgfQor
CisgICAgcHVibGljIHZvaWQgc2V0VGVpbEhtKEJpZ0RlY2ltYWwgdGVpbEhtKSB7CisgICAgICAg
IHRoaXMudGVpbEhtID0zRCB0ZWlsSG07CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0Qi
VEVJTF9WTSIsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1h
bCBnZXRUZWlsVm0oKSB7CisgICAgICAgIHJldHVybiB0aGlzLnRlaWxWbTsKKyAgICB9CisKKyAg
ICBwdWJsaWMgdm9pZCBzZXRUZWlsVm0oQmlnRGVjaW1hbCB0ZWlsVm0pIHsKKyAgICAgICAgdGhp
cy50ZWlsVm0gPTNEIHRlaWxWbTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJURUlM
X1ZTT0hMRSIsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1h
bCBnZXRUZWlsVnNvaGxlKCkgeworICAgICAgICByZXR1cm4gdGhpcy50ZWlsVnNvaGxlOworICAg
IH0KKworICAgIHB1YmxpYyB2b2lkIHNldFRlaWxWc29obGUoQmlnRGVjaW1hbCB0ZWlsVnNvaGxl
KSB7CisgICAgICAgIHRoaXMudGVpbFZzb2hsZSA9M0QgdGVpbFZzb2hsZTsKKyAgICB9CisKKwor
ICAgIEBDb2x1bW4obmFtZT0zRCJURUlMX1RBVSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNENCkK
KyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRUZWlsVGF1KCkgeworICAgICAgICByZXR1cm4gdGhp
cy50ZWlsVGF1OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFRlaWxUYXUoQmlnRGVjaW1h
bCB0ZWlsVGF1KSB7CisgICAgICAgIHRoaXMudGVpbFRhdSA9M0QgdGVpbFRhdTsKKyAgICB9CisK
KworICAgIEBDb2x1bW4obmFtZT0zRCJURUlMX1RBVVYiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0z
RDYpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VGVpbFRhdXYoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLnRlaWxUYXV2OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFRlaWxUYXV2KEJp
Z0RlY2ltYWwgdGVpbFRhdXYpIHsKKyAgICAgICAgdGhpcy50ZWlsVGF1diA9M0QgdGVpbFRhdXY7
CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiTUlUVEVMVFlQIiwgcHJlY2lzaW9uPTNE
MSwgc2NhbGU9M0QwKQorICAgIHB1YmxpYyBCb29sZWFuIGdldE1pdHRlbHR5cCgpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMubWl0dGVsdHlwOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1p
dHRlbHR5cChCb29sZWFuIG1pdHRlbHR5cCkgeworICAgICAgICB0aGlzLm1pdHRlbHR5cCA9M0Qg
bWl0dGVsdHlwOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkRNIiwgcHJlY2lzaW9u
PTNENywgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldERtKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy5kbTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXREbShCaWdEZWNp
bWFsIGRtKSB7CisgICAgICAgIHRoaXMuZG0gPTNEIGRtOworICAgIH0KKworCisgICAgQENvbHVt
bihuYW1lPTNEIlNLIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdE
ZWNpbWFsIGdldFNrKCkgeworICAgICAgICByZXR1cm4gdGhpcy5zazsKKyAgICB9CisKKyAgICBw
dWJsaWMgdm9pZCBzZXRTayhCaWdEZWNpbWFsIHNrKSB7CisgICAgICAgIHRoaXMuc2sgPTNEIHNr
OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlNPIiwgcHJlY2lzaW9uPTNEOCwgc2Nh
bGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFNvKCkgeworICAgICAgICByZXR1cm4g
dGhpcy5zbzsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRTbyhCaWdEZWNpbWFsIHNvKSB7
CisgICAgICAgIHRoaXMuc28gPTNEIHNvOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNE
IlUiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0
VSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBz
ZXRVKEJpZ0RlY2ltYWwgdSkgeworICAgICAgICB0aGlzLnUgPTNEIHU7CisgICAgfQorCisKKyAg
ICBAQ29sdW1uKG5hbWU9M0QiRDkwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldEQ5MCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZDkwOworICAg
IH0KKworICAgIHB1YmxpYyB2b2lkIHNldEQ5MChCaWdEZWNpbWFsIGQ5MCkgeworICAgICAgICB0
aGlzLmQ5MCA9M0QgZDkwOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkQ4NCIsIHBy
ZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREODQoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLmQ4NDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRE
ODQoQmlnRGVjaW1hbCBkODQpIHsKKyAgICAgICAgdGhpcy5kODQgPTNEIGQ4NDsKKyAgICB9CisK
KworICAgIEBDb2x1bW4obmFtZT0zRCJEODAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisg
ICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDgwKCkgeworICAgICAgICByZXR1cm4gdGhpcy5kODA7
CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RDgwKEJpZ0RlY2ltYWwgZDgwKSB7CisgICAg
ICAgIHRoaXMuZDgwID0zRCBkODA7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiRDc1
IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQ3
NSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZDc1OworICAgIH0KKworICAgIHB1YmxpYyB2b2lk
IHNldEQ3NShCaWdEZWNpbWFsIGQ3NSkgeworICAgICAgICB0aGlzLmQ3NSA9M0QgZDc1OworICAg
IH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkQ3MCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNE
NCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRENzAoKSB7CisgICAgICAgIHJldHVybiB0aGlz
LmQ3MDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRENzAoQmlnRGVjaW1hbCBkNzApIHsK
KyAgICAgICAgdGhpcy5kNzAgPTNEIGQ3MDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0z
RCJENjAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0RDYwKCkgeworICAgICAgICByZXR1cm4gdGhpcy5kNjA7CisgICAgfQorCisgICAgcHVibGlj
IHZvaWQgc2V0RDYwKEJpZ0RlY2ltYWwgZDYwKSB7CisgICAgICAgIHRoaXMuZDYwID0zRCBkNjA7
CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiRDUwIiwgcHJlY2lzaW9uPTNENywgc2Nh
bGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQ1MCgpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuZDUwOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEQ1MChCaWdEZWNpbWFsIGQ1
MCkgeworICAgICAgICB0aGlzLmQ1MCA9M0QgZDUwOworICAgIH0KKworCisgICAgQENvbHVtbihu
YW1lPTNEIkQ0MCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVj
aW1hbCBnZXRENDAoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmQ0MDsKKyAgICB9CisKKyAgICBw
dWJsaWMgdm9pZCBzZXRENDAoQmlnRGVjaW1hbCBkNDApIHsKKyAgICAgICAgdGhpcy5kNDAgPTNE
IGQ0MDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJEMzAiLCBwcmVjaXNpb249M0Q3
LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDMwKCkgeworICAgICAgICBy
ZXR1cm4gdGhpcy5kMzA7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RDMwKEJpZ0RlY2lt
YWwgZDMwKSB7CisgICAgICAgIHRoaXMuZDMwID0zRCBkMzA7CisgICAgfQorCisKKyAgICBAQ29s
dW1uKG5hbWU9M0QiRDI1IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBC
aWdEZWNpbWFsIGdldEQyNSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZDI1OworICAgIH0KKwor
ICAgIHB1YmxpYyB2b2lkIHNldEQyNShCaWdEZWNpbWFsIGQyNSkgeworICAgICAgICB0aGlzLmQy
NSA9M0QgZDI1OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkQyMCIsIHByZWNpc2lv
bj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREMjAoKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLmQyMDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXREMjAoQmln
RGVjaW1hbCBkMjApIHsKKyAgICAgICAgdGhpcy5kMjAgPTNEIGQyMDsKKyAgICB9CisKKworICAg
IEBDb2x1bW4obmFtZT0zRCJEMTYiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVi
bGljIEJpZ0RlY2ltYWwgZ2V0RDE2KCkgeworICAgICAgICByZXR1cm4gdGhpcy5kMTY7CisgICAg
fQorCisgICAgcHVibGljIHZvaWQgc2V0RDE2KEJpZ0RlY2ltYWwgZDE2KSB7CisgICAgICAgIHRo
aXMuZDE2ID0zRCBkMTY7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiRDEwIiwgcHJl
Y2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQxMCgpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuZDEwOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEQx
MChCaWdEZWNpbWFsIGQxMCkgeworICAgICAgICB0aGlzLmQxMCA9M0QgZDEwOworICAgIH0KKwor
CisgICAgQENvbHVtbihuYW1lPTNEIkRNSU4iLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisg
ICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RG1pbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZG1p
bjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXREbWluKEJpZ0RlY2ltYWwgZG1pbikgewor
ICAgICAgICB0aGlzLmRtaW4gPTNEIGRtaW47CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9
M0QiRFVSQ0hETUlOIiwgcHJlY2lzaW9uPTNENiwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdE
ZWNpbWFsIGdldER1cmNoZG1pbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZHVyY2hkbWluOwor
ICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldER1cmNoZG1pbihCaWdEZWNpbWFsIGR1cmNoZG1p
bikgeworICAgICAgICB0aGlzLmR1cmNoZG1pbiA9M0QgZHVyY2hkbWluOworICAgIH0KKworCisg
ICAgQENvbHVtbihuYW1lPTNEIkRNQVgiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDMpCisgICAg
cHVibGljIEJpZ0RlY2ltYWwgZ2V0RG1heCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZG1heDsK
KyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXREbWF4KEJpZ0RlY2ltYWwgZG1heCkgeworICAg
ICAgICB0aGlzLmRtYXggPTNEIGRtYXg7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0Qi
RFVSQ0hETUFYIiwgcHJlY2lzaW9uPTNENiwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNp
bWFsIGdldER1cmNoZG1heCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZHVyY2hkbWF4OworICAg
IH0KKworICAgIHB1YmxpYyB2b2lkIHNldER1cmNoZG1heChCaWdEZWNpbWFsIGR1cmNoZG1heCkg
eworICAgICAgICB0aGlzLmR1cmNoZG1heCA9M0QgZHVyY2hkbWF4OworICAgIH0KKworCisgICAg
QENvbHVtbihuYW1lPTNEIk5fR0VTQ0hJRUIiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249
M0Q1LCBzY2FsZT0zRD0KMCkKKyAgICBwdWJsaWMgaW50IGdldE5HZXNjaGllYigpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuTkdlc2NoaWViOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE5H
ZXNjaGllYihpbnQgTkdlc2NoaWViKSB7CisgICAgICAgIHRoaXMuTkdlc2NoaWViID0zRCBOR2Vz
Y2hpZWI7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiTl9WSUVMUEtUIiwgbnVsbGFi
bGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNENSwgc2NhbGU9M0QwKQorICAgIHB1YmxpYyBpbnQgZ2V0
TlZpZWxwa3QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLk5WaWVscGt0OworICAgIH0KKworICAg
IHB1YmxpYyB2b2lkIHNldE5WaWVscGt0KGludCBOVmllbHBrdCkgeworICAgICAgICB0aGlzLk5W
aWVscGt0ID0zRCBOVmllbHBrdDsKKyAgICB9CisKKyAgICBAVGVtcG9yYWwoVGVtcG9yYWxUeXBl
LkRBVEUpCisgICAgQENvbHVtbihuYW1lPTNEIlNZU19EQVRFIiwgbGVuZ3RoPTNENykKKyAgICBw
dWJsaWMgRGF0ZSBnZXRTeXNEYXRlKCkgeworICAgICAgICByZXR1cm4gdGhpcy5zeXNEYXRlOwor
ICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFN5c0RhdGUoRGF0ZSBzeXNEYXRlKSB7CisgICAg
ICAgIHRoaXMuc3lzRGF0ZSA9M0Qgc3lzRGF0ZTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFt
ZT0zRCJCRU1FUktVTkciLCBsZW5ndGg9M0QyNDApCisgICAgcHVibGljIFN0cmluZyBnZXRCZW1l
cmt1bmcoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJlbWVya3VuZzsKKyAgICB9CisKKyAgICBw
dWJsaWMgdm9pZCBzZXRCZW1lcmt1bmcoU3RyaW5nIGJlbWVya3VuZykgeworICAgICAgICB0aGlz
LmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOworICAgIH0KKworICAgIEBUZW1wb3JhbChUZW1wb3Jh
bFR5cGUuREFURSkKKyAgICBAQ29sdW1uKG5hbWU9M0QiTEFTVFVQREFURUQiLCBudWxsYWJsZT0z
RGZhbHNlLCBsZW5ndGg9M0Q3KQorICAgIHB1YmxpYyBEYXRlIGdldExhc3R1cGRhdGVkKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy5sYXN0dXBkYXRlZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9p
ZCBzZXRMYXN0dXBkYXRlZChEYXRlIGxhc3R1cGRhdGVkKSB7CisgICAgICAgIHRoaXMubGFzdHVw
ZGF0ZWQgPTNEIGxhc3R1cGRhdGVkOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIktN
IiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEtt
KCkgeworICAgICAgICByZXR1cm4gdGhpcy5rbTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBz
ZXRLbShCaWdEZWNpbWFsIGttKSB7CisgICAgICAgIHRoaXMua20gPTNEIGttOworICAgIH0KKwor
CisgICAgQENvbHVtbihuYW1lPTNEIkdMT1RBQlNUT0ZGU0VUIiwgbnVsbGFibGU9M0RmYWxzZSwg
cHJlY2lzaW9uPTNEOCwgc2NhbD0KZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0R2xv
dGFic3RvZmZzZXQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmdsb3RhYnN0b2Zmc2V0OworICAg
IH0KKworICAgIHB1YmxpYyB2b2lkIHNldEdsb3RhYnN0b2Zmc2V0KEJpZ0RlY2ltYWwgZ2xvdGFi
c3RvZmZzZXQpIHsKKyAgICAgICAgdGhpcy5nbG90YWJzdG9mZnNldCA9M0QgZ2xvdGFic3RvZmZz
ZXQ7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiU0xPVEFCU1RPRkZTRVQiLCBudWxs
YWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q4LCBzY2FsPQplPTNEMykKKyAgICBwdWJsaWMgQmln
RGVjaW1hbCBnZXRTbG90YWJzdG9mZnNldCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc2xvdGFi
c3RvZmZzZXQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0U2xvdGFic3RvZmZzZXQoQmln
RGVjaW1hbCBzbG90YWJzdG9mZnNldCkgeworICAgICAgICB0aGlzLnNsb3RhYnN0b2Zmc2V0ID0z
RCBzbG90YWJzdG9mZnNldDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJHQlJFSVRF
Vk9OTElOS1MiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2lt
YWwgZ2V0R2JyZWl0ZXZvbmxpbmtzKCkgeworICAgICAgICByZXR1cm4gdGhpcy5nYnJlaXRldm9u
bGlua3M7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0R2JyZWl0ZXZvbmxpbmtzKEJpZ0Rl
Y2ltYWwgZ2JyZWl0ZXZvbmxpbmtzKSB7CisgICAgICAgIHRoaXMuZ2JyZWl0ZXZvbmxpbmtzID0z
RCBnYnJlaXRldm9ubGlua3M7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiR0JSRUlU
RUJJU0xJTktTIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNp
bWFsIGdldEdicmVpdGViaXNsaW5rcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZ2JyZWl0ZWJp
c2xpbmtzOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEdicmVpdGViaXNsaW5rcyhCaWdE
ZWNpbWFsIGdicmVpdGViaXNsaW5rcykgeworICAgICAgICB0aGlzLmdicmVpdGViaXNsaW5rcyA9
M0QgZ2JyZWl0ZWJpc2xpbmtzOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkdMT1RV
RkVSQUJTVElTVFZPTkxJTktTIiwgcHJlY2lzaW9uPTNEMSwgc2NhbGU9M0QwKQorICAgIHB1Ymxp
YyBCb29sZWFuIGdldEdsb3R1ZmVyYWJzdGlzdHZvbmxpbmtzKCkgeworICAgICAgICByZXR1cm4g
dGhpcy5nbG90dWZlcmFic3Rpc3R2b25saW5rczsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBz
ZXRHbG90dWZlcmFic3Rpc3R2b25saW5rcyhCb29sZWFuIGdsb3R1ZmVyYWJzdGlzdHZvbmxpbmtz
PQopIHsKKyAgICAgICAgdGhpcy5nbG90dWZlcmFic3Rpc3R2b25saW5rcyA9M0QgZ2xvdHVmZXJh
YnN0aXN0dm9ubGlua3M7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiU0xPVFVGRVJB
QlNUSVNUVk9OTElOS1MiLCBwcmVjaXNpb249M0QxLCBzY2FsZT0zRDApCisgICAgcHVibGljIEJv
b2xlYW4gZ2V0U2xvdHVmZXJhYnN0aXN0dm9ubGlua3MoKSB7CisgICAgICAgIHJldHVybiB0aGlz
LnNsb3R1ZmVyYWJzdGlzdHZvbmxpbmtzOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFNs
b3R1ZmVyYWJzdGlzdHZvbmxpbmtzKEJvb2xlYW4gc2xvdHVmZXJhYnN0aXN0dm9ubGlua3M9Cikg
eworICAgICAgICB0aGlzLnNsb3R1ZmVyYWJzdGlzdHZvbmxpbmtzID0zRCBzbG90dWZlcmFic3Rp
c3R2b25saW5rczsKKyAgICB9CisKK0BPbmVUb01hbnkoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSwg
bWFwcGVkQnk9M0QibWVzc3VuZyIpCisgICAgcHVibGljIFNldDxHbG90cmVjaHRlPiBnZXRHbG90
cmVjaHRlcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZ2xvdHJlY2h0ZXM7CisgICAgfQorCisg
ICAgcHVibGljIHZvaWQgc2V0R2xvdHJlY2h0ZXMoU2V0PEdsb3RyZWNodGU+IGdsb3RyZWNodGVz
KSB7CisgICAgICAgIHRoaXMuZ2xvdHJlY2h0ZXMgPTNEIGdsb3RyZWNodGVzOworICAgIH0KKwor
QE9uZVRvTWFueShmZXRjaD0zREZldGNoVHlwZS5MQVpZLCBtYXBwZWRCeT0zRCJtZXNzdW5nIikK
KyAgICBwdWJsaWMgU2V0PFNsb3RyZWNodGU+IGdldFNsb3RyZWNodGVzKCkgeworICAgICAgICBy
ZXR1cm4gdGhpcy5zbG90cmVjaHRlczsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRTbG90
cmVjaHRlcyhTZXQ8U2xvdHJlY2h0ZT4gc2xvdHJlY2h0ZXMpIHsKKyAgICAgICAgdGhpcy5zbG90
cmVjaHRlcyA9M0Qgc2xvdHJlY2h0ZXM7CisgICAgfQorfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAt
ciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMv
cml2ZXIvc2VkZGIvbW9kZWwvTWVzc3VuZ2xvdGNvdW50LmphdmEKLS0tIC9kZXYvbnVsbAlUaHUg
SmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvYmFja2VuZC9zcmMvbWFpbi9qYXZhL29y
Zy9kaXZlNGVsZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVsL01lc3N1bmdsb3RjPQpvdW50LmphdmEJ
TW9uIEFwciAyOSAxMTozMzowMSAyMDEzICswMjAwCkBAIC0wLDAgKzEsNTMgQEAKKy8qIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1D
Mz1BNHNzZXJrPQp1bmRlCisgKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdt
YkgKKyAqCisgKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwg
KD49M0R2Myk9MjAKKyAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENo
ZWNrIG91dCB0aGUKKyAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBS
aXZlciBmb3IgZGV0YWlscy49MjAKKyAqLworCitwYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnNl
ZGRiLm1vZGVsOworLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRl
IFRvb2xzIDMuNC4wLkNSMQorCisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5BdHRyaWJ1dGVP
dmVycmlkZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5BdHRyaWJ1dGVPdmVycmlkZXM7Citp
bXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNl
LkVtYmVkZGVkSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OworaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLlRhYmxlOworCisvKioKKyAqIE1lc3N1bmdsb3Rjb3VudCBnZW5lcmF0
ZWQgYnkgaGJtMmphdmEKKyAqLworQEVudGl0eQorQFRhYmxlKG5hbWU9M0QiTUVTU1VOR0xPVENP
VU5UIgorICAgICxzY2hlbWE9M0QiU0VEREIiCispCitwdWJsaWMgY2xhc3MgTWVzc3VuZ2xvdGNv
dW50ICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKKworCisgICAgIHByaXZhdGUg
TWVzc3VuZ2xvdGNvdW50SWQgaWQ7CisKKyAgICBwdWJsaWMgTWVzc3VuZ2xvdGNvdW50KCkgewor
ICAgIH0KKworICAgIHB1YmxpYyBNZXNzdW5nbG90Y291bnQoTWVzc3VuZ2xvdGNvdW50SWQgaWQp
IHsKKyAgICAgICB0aGlzLmlkID0zRCBpZDsKKyAgICB9CisKKyAgICAgQEVtYmVkZGVkSWQKKwor
CisgICAgQEF0dHJpYnV0ZU92ZXJyaWRlcyggeworICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUo
bmFtZT0zRCJtZXNzdW5naWQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUU9ClNTVU5HSUQi
LCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QwKSApLAorICAgICAg
ICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJnbG90Y291bnQiLCBjb2x1bW49M0RAQ29sdW1u
KG5hbWU9M0QiR0w9Ck9UQ09VTlQiLCBwcmVjaXNpb249M0QyMiwgc2NhbGU9M0QwKSApLAorICAg
ICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJzbG90Y291bnQiLCBjb2x1bW49M0RAQ29s
dW1uKG5hbWU9M0QiU0w9Ck9UQ09VTlQiLCBwcmVjaXNpb249M0QyMiwgc2NhbGU9M0QwKSApIH0g
KQorICAgIHB1YmxpYyBNZXNzdW5nbG90Y291bnRJZCBnZXRJZCgpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuaWQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0SWQoTWVzc3VuZ2xvdGNvdW50
SWQgaWQpIHsKKyAgICAgICAgdGhpcy5pZCA9M0QgaWQ7CisgICAgfQorfQpkaWZmIC1yIGJjNGUx
YmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVs
ZW1lbnQ9CnMvcml2ZXIvc2VkZGIvbW9kZWwvTWVzc3VuZ2xvdGNvdW50SWQuamF2YQotLS0gL2Rl
di9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9iYWNrZW5kL3NyYy9t
YWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvTWVzc3VuZ2xvdGM9
Cm91bnRJZC5qYXZhCU1vbiBBcHIgMjkgMTE6MzM6MDEgMjAxMyArMDIwMApAQCAtMCwwICsxLDky
IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBm
PUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQorICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkg
SW50ZXZhdGlvbiBHbWJICisgKgorICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIg
dGhlIEdOVSBBR1BMICg+PTNEdjMpPTIwCisgKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5P
IFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCisgKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERp
dmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFpbHMuPTIwCisgKi8KKworcGFja2FnZSBvcmcuZGl2
ZTRlbGVtZW50cy5zZWRkYi5tb2RlbDsKKy8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3
IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQuMC5DUjEKKworCitpbXBvcnQgamF2YS5tYXRoLkJpZ0Rl
Y2ltYWw7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBl
cnNpc3RlbmNlLkVtYmVkZGFibGU7CisKKy8qKgorICogTWVzc3VuZ2xvdGNvdW50SWQgZ2VuZXJh
dGVkIGJ5IGhibTJqYXZhCisgKi8KK0BFbWJlZGRhYmxlCitwdWJsaWMgY2xhc3MgTWVzc3VuZ2xv
dGNvdW50SWQgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgeworCisKKyAgICAgcHJp
dmF0ZSBsb25nIG1lc3N1bmdpZDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGdsb3Rjb3VudDsK
KyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHNsb3Rjb3VudDsKKworICAgIHB1YmxpYyBNZXNzdW5n
bG90Y291bnRJZCgpIHsKKyAgICB9CisKKworICAgIHB1YmxpYyBNZXNzdW5nbG90Y291bnRJZChs
b25nIG1lc3N1bmdpZCkgeworICAgICAgICB0aGlzLm1lc3N1bmdpZCA9M0QgbWVzc3VuZ2lkOwor
ICAgIH0KKyAgICBwdWJsaWMgTWVzc3VuZ2xvdGNvdW50SWQobG9uZyBtZXNzdW5naWQsIEJpZ0Rl
Y2ltYWwgZ2xvdGNvdW50LCBCaWdEZWNpPQptYWwgc2xvdGNvdW50KSB7CisgICAgICAgdGhpcy5t
ZXNzdW5naWQgPTNEIG1lc3N1bmdpZDsKKyAgICAgICB0aGlzLmdsb3Rjb3VudCA9M0QgZ2xvdGNv
dW50OworICAgICAgIHRoaXMuc2xvdGNvdW50ID0zRCBzbG90Y291bnQ7CisgICAgfQorCisKKwor
ICAgIEBDb2x1bW4obmFtZT0zRCJNRVNTVU5HSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNp
b249M0QxMSwgc2NhbGU9M0Q9CjApCisgICAgcHVibGljIGxvbmcgZ2V0TWVzc3VuZ2lkKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy5tZXNzdW5naWQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQg
c2V0TWVzc3VuZ2lkKGxvbmcgbWVzc3VuZ2lkKSB7CisgICAgICAgIHRoaXMubWVzc3VuZ2lkID0z
RCBtZXNzdW5naWQ7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiR0xPVENPVU5UIiwg
cHJlY2lzaW9uPTNEMjIsIHNjYWxlPTNEMCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRHbG90
Y291bnQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmdsb3Rjb3VudDsKKyAgICB9CisKKyAgICBw
dWJsaWMgdm9pZCBzZXRHbG90Y291bnQoQmlnRGVjaW1hbCBnbG90Y291bnQpIHsKKyAgICAgICAg
dGhpcy5nbG90Y291bnQgPTNEIGdsb3Rjb3VudDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFt
ZT0zRCJTTE9UQ09VTlQiLCBwcmVjaXNpb249M0QyMiwgc2NhbGU9M0QwKQorICAgIHB1YmxpYyBC
aWdEZWNpbWFsIGdldFNsb3Rjb3VudCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc2xvdGNvdW50
OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFNsb3Rjb3VudChCaWdEZWNpbWFsIHNsb3Rj
b3VudCkgeworICAgICAgICB0aGlzLnNsb3Rjb3VudCA9M0Qgc2xvdGNvdW50OworICAgIH0KKwor
CisgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG90aGVyKSB7CisgICAgICAgICBpZiAo
ICh0aGlzID0zRD0zRCBvdGhlciApICkgcmV0dXJuIHRydWU7CisgICAgICAgICBpZiAoIChvdGhl
ciA9M0Q9M0QgbnVsbCApICkgcmV0dXJuIGZhbHNlOworICAgICAgICAgaWYgKCAhKG90aGVyIGlu
c3RhbmNlb2YgTWVzc3VuZ2xvdGNvdW50SWQpICkgcmV0dXJuIGZhbHNlOworICAgICAgICAgTWVz
c3VuZ2xvdGNvdW50SWQgY2FzdE90aGVyID0zRCAoIE1lc3N1bmdsb3Rjb3VudElkICkgb3RoZXI7
CisKKyAgICAgICAgIHJldHVybiAodGhpcy5nZXRNZXNzdW5naWQoKT0zRD0zRGNhc3RPdGhlci5n
ZXRNZXNzdW5naWQoKSkKKyAmJiAoICh0aGlzLmdldEdsb3Rjb3VudCgpPTNEPTNEY2FzdE90aGVy
LmdldEdsb3Rjb3VudCgpKSB8fCAoIHRoaXMuZ2V0R2xvPQp0Y291bnQoKSE9M0RudWxsICYmIGNh
c3RPdGhlci5nZXRHbG90Y291bnQoKSE9M0RudWxsICYmIHRoaXMuZ2V0R2xvdGNvdW50KCk9Ci5l
cXVhbHMoY2FzdE90aGVyLmdldEdsb3Rjb3VudCgpKSApICkKKyAmJiAoICh0aGlzLmdldFNsb3Rj
b3VudCgpPTNEPTNEY2FzdE90aGVyLmdldFNsb3Rjb3VudCgpKSB8fCAoIHRoaXMuZ2V0U2xvPQp0
Y291bnQoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRTbG90Y291bnQoKSE9M0RudWxsICYmIHRo
aXMuZ2V0U2xvdGNvdW50KCk9Ci5lcXVhbHMoY2FzdE90aGVyLmdldFNsb3Rjb3VudCgpKSApICk7
CisgICB9CisKKyAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgICBpbnQgcmVzdWx0
ID0zRCAxNzsKKworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArIChpbnQpIHRoaXMu
Z2V0TWVzc3VuZ2lkKCk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRH
bG90Y291bnQoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLj0KZ2V0R2xvdGNvdW50KCkuaGFzaENv
ZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0U2xvdGNvdW50
KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy49CmdldFNsb3Rjb3VudCgpLmhhc2hDb2RlKCkgKTsK
KyAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICB9Cit9CmRpZmYgLXIgYmM0ZTFiZjI2MjI3IC1y
IDFlNjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudD0Kcy9y
aXZlci9zZWRkYi9tb2RlbC9NZXNzdW5nc3RhLmphdmEKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAx
IDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZl
NGVsZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVsL01lc3N1bmdzdGEuPQpqYXZhCU1vbiBBcHIgMjkg
MTE6MzM6MDEgMjAxMyArMDIwMApAQCAtMCwwICsxLDEzMCBAQAorLyogQ29weXJpZ2h0IChDKSAy
MDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9
CnVuZGUKKyAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAorICoKKyAq
IFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0y
MAorICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRo
ZQorICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBk
ZXRhaWxzLj0yMAorICovCisKK3BhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7
CisvLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40
LjAuQ1IxCisKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0ZU92ZXJyaWRlOwor
aW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0ZU92ZXJyaWRlczsKK2ltcG9ydCBqYXZh
eC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW1iZWRkZWRJ
ZDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7CitpbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuVGFibGU7CisKKy8qKgorICogTWVzc3VuZ3N0YSBnZW5lcmF0ZWQgYnkgaGJtMmphdmEK
KyAqLworQEVudGl0eQorQFRhYmxlKG5hbWU9M0QiTUVTU1VOR1NUQSIKKyAgICAsc2NoZW1hPTNE
IlNFRERCIgorKQorcHVibGljIGNsYXNzIE1lc3N1bmdzdGEgIGltcGxlbWVudHMgamF2YS5pby5T
ZXJpYWxpemFibGUgeworCisKKyAgICAgcHJpdmF0ZSBNZXNzdW5nc3RhSWQgaWQ7CisKKyAgICBw
dWJsaWMgTWVzc3VuZ3N0YSgpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgTWVzc3VuZ3N0YShNZXNz
dW5nc3RhSWQgaWQpIHsKKyAgICAgICB0aGlzLmlkID0zRCBpZDsKKyAgICB9CisKKyAgICAgQEVt
YmVkZGVkSWQKKworCisgICAgQEF0dHJpYnV0ZU92ZXJyaWRlcyggeworICAgICAgICBAQXR0cmli
dXRlT3ZlcnJpZGUobmFtZT0zRCJtZXNzdW5naWQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0Qi
TUU9ClNTVU5HSUQiKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJzdGF0
aW9uaWQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiU1Q9CkFUSU9OSUQiKSApLAorICAgICAg
ICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkYXR1bSIsIGNvbHVtbj0zREBDb2x1bW4obmFt
ZT0zRCJEQVRVTSI9CikgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiaHBl
aWx1bmdpZCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJIPQpQRUlMVU5HSUQiKSApLAorICAg
ICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtcGVpbHVuZ2lkIiwgY29sdW1uPTNEQENv
bHVtbihuYW1lPTNEIk09ClBFSUxVTkdJRCIpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlk
ZShuYW1lPTNEImdmYWVuZ2VyaWQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiRz0KRkFFTkdF
UklEIikgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZ3NpZWJzYXR6aWQi
LCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiPQpHU0lFQlNBVFpJRCIpICksCisgICAgICAgIEBB
dHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1lc3NuciIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0z
RCJNRVNTTj0KUiIpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImZndWUi
LCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiRkdVRSIpID0KKSwKKyAgICAgICAgQEF0dHJpYnV0
ZU92ZXJyaWRlKG5hbWU9M0QidWhydm9uIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlVIUlZP
PQpOIikgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QidWhyYmlzIiwgY29s
dW1uPTNEQENvbHVtbihuYW1lPTNEIlVIUkJJPQpTIikgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92
ZXJyaWRlKG5hbWU9M0Qid3NwY20iLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiV1NQQ00iPQop
ICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIlFCcGVnZWwiLCBjb2x1bW49
M0RAQ29sdW1uKG5hbWU9M0QiUV9CUD0KRUdFTCIpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVy
cmlkZShuYW1lPTNEIndzcG5uIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIldTUE5OIj0KKSAp
LAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJpZSIsIGNvbHVtbj0zREBDb2x1
bW4obmFtZT0zRCJJRSIpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInd0
ZW1wIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIldURU1QIj0KKSApLAorICAgICAgICBAQXR0
cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJnYnJlaXRlIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNE
IkdCUkU9CklURSIpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImdicmVp
dGV2b24iLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiRz0KQlJFSVRFVk9OIikgKSwKKyAgICAg
ICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZ2JyZWl0ZWJpcyIsIGNvbHVtbj0zREBDb2x1
bW4obmFtZT0zRCJHPQpCUkVJVEVCSVMiKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUo
bmFtZT0zRCJ0Z2VzY2hpZWJlIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlQ9CkdFU0NISUVC
RSIpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInRzYW5kIiwgY29sdW1u
PTNEQENvbHVtbihuYW1lPTNEIlRTQU5EIj0KKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJp
ZGUobmFtZT0zRCJ0c2Nod2ViIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlRTQ0g9CldFQiIp
ICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImNzY2h3ZWIiLCBjb2x1bW49
M0RAQ29sdW1uKG5hbWU9M0QiQ1NDSD0KV0VCIikgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJy
aWRlKG5hbWU9M0QidWZlcmxpYWJzdCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJVPQpGRVJM
SUFCU1QiKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ1ZmVycmVhYnN0
IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlU9CkZFUlJFQUJTVCIpICksCisgICAgICAgIEBB
dHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInEiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUSIp
ICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIkFIcGVpbCIsIGNvbHVtbj0z
REBDb2x1bW4obmFtZT0zRCJBX0hQRT0KSUwiKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJp
ZGUobmFtZT0zRCJBTXBlaWwiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiQV9NUEU9CklMIikg
KSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiYiIsIGNvbHVtbj0zREBDb2x1
bW4obmFtZT0zRCJCIikgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiaG0i
LCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiSE0iKSApLAorICAgICAgICBAQXR0cmlidXRlT3Zl
cnJpZGUobmFtZT0zRCJ2bSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJWTSIpICksCisgICAg
ICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInZzb2hsZSIsIGNvbHVtbj0zREBDb2x1bW4o
bmFtZT0zRCJWU09ITD0KRSIpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNE
InRhdSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJUQVUiKSApLAorICAgICAgICBAQXR0cmli
dXRlT3ZlcnJpZGUobmFtZT0zRCJ0YXV2IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlRBVVYi
KSA9CiksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInRlaWxRIiwgY29sdW1u
PTNEQENvbHVtbihuYW1lPTNEIlRFSUxfUT0KIikgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJy
aWRlKG5hbWU9M0QidGVpbEFIcGVpbCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJUPQpFSUxf
QV9IUEVJTCIpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInRlaWxBTXBl
aWwiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiVD0KRUlMX0FfTVBFSUwiKSApLAorICAgICAg
ICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ0ZWlsQiIsIGNvbHVtbj0zREBDb2x1bW4obmFt
ZT0zRCJURUlMX0I9CiIpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInRl
aWxIbSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJURUlMXz0KSE0iKSApLAorICAgICAgICBA
QXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ0ZWlsVm0iLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9
M0QiVEVJTF89ClZNIikgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QidGVp
bFZzb2hsZSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJUPQpFSUxfVlNPSExFIikgKSwKKyAg
ICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QidGVpbFRhdSIsIGNvbHVtbj0zREBDb2x1
bW4obmFtZT0zRCJURUlMPQpfVEFVIikgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5h
bWU9M0QidGVpbFRhdXYiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiVEVJPQpMX1RBVVYiKSAp
LAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtaXR0ZWx0eXAiLCBjb2x1bW49
M0RAQ29sdW1uKG5hbWU9M0QiTUk9ClRURUxUWVAiKSApLAorICAgICAgICBAQXR0cmlidXRlT3Zl
cnJpZGUobmFtZT0zRCJkbSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJETSIpICksCisgICAg
ICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInNrIiwgY29sdW1uPTNEQENvbHVtbihuYW1l
PTNEIlNLIikgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qic28iLCBjb2x1
bW49M0RAQ29sdW1uKG5hbWU9M0QiU08iKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUo
bmFtZT0zRCJ1IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlUiKSApLAorICAgICAgICBAQXR0
cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkOTAiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiRDkw
IikgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZDg0IiwgY29sdW1uPTNE
QENvbHVtbihuYW1lPTNEIkQ4NCIpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1l
PTNEImQ4MCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJEODAiKSApLAorICAgICAgICBAQXR0
cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkNzUiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiRDc1
IikgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZDcwIiwgY29sdW1uPTNE
QENvbHVtbihuYW1lPTNEIkQ3MCIpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1l
PTNEImQ2MCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJENjAiKSApLAorICAgICAgICBAQXR0
cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkNTAiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiRDUw
IikgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZDQwIiwgY29sdW1uPTNE
QENvbHVtbihuYW1lPTNEIkQ0MCIpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1l
PTNEImQzMCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJEMzAiKSApLAorICAgICAgICBAQXR0
cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkMjUiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiRDI1
IikgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZDIwIiwgY29sdW1uPTNE
QENvbHVtbihuYW1lPTNEIkQyMCIpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1l
PTNEImQxNiIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJEMTYiKSApLAorICAgICAgICBAQXR0
cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkMTAiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiRDEw
IikgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZG1pbiIsIGNvbHVtbj0z
REBDb2x1bW4obmFtZT0zRCJETUlOIikgPQopLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUo
bmFtZT0zRCJkdXJjaGRtaW4iLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiRFU9ClJDSERNSU4i
KSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJkbWF4IiwgY29sdW1uPTNE
QENvbHVtbihuYW1lPTNEIkRNQVgiKSA9CiksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShu
YW1lPTNEImR1cmNoZG1heCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJEVT0KUkNIRE1BWCIp
ICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIk5HZXNjaGllYiIsIGNvbHVt
bj0zREBDb2x1bW4obmFtZT0zRCJOXz0KR0VTQ0hJRUIiKSApLAorICAgICAgICBAQXR0cmlidXRl
T3ZlcnJpZGUobmFtZT0zRCJOVmllbHBrdCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJOX1Y9
CklFTFBLVCIpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInN5c0RhdGUi
LCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiU1lTXz0KREFURSIpICksCisgICAgICAgIEBBdHRy
aWJ1dGVPdmVycmlkZShuYW1lPTNEImJlbWVya3VuZyIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0z
RCJCRT0KTUVSS1VORyIpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImxh
c3R1cGRhdGVkIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIj0KTEFTVFVQREFURUQiKSApLAor
ICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJrbSIsIGNvbHVtbj0zREBDb2x1bW4o
bmFtZT0zRCJLTSIpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImdsb3Rh
YnN0b2Zmc2V0IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPQo9M0QiR0xPVEFCU1RPRkZTRVQiKSAp
LAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJzbG90YWJzdG9mZnNldCIsIGNv
bHVtbj0zREBDb2x1bW4obmFtZT0KPTNEIlNMT1RBQlNUT0ZGU0VUIikgKSwKKyAgICAgICAgQEF0
dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZ2JyZWl0ZXZvbmxpbmtzIiwgY29sdW1uPTNEQENvbHVt
bihuYW1lPQo9M0QiR0JSRUlURVZPTkxJTktTIikgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJy
aWRlKG5hbWU9M0QiZ2JyZWl0ZWJpc2xpbmtzIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPQo9M0Qi
R0JSRUlURUJJU0xJTktTIikgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qi
c3RhbmFtZSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJTVEFOPQpBTUUiKSApLAorICAgICAg
ICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJzdGFrbSIsIGNvbHVtbj0zREBDb2x1bW4obmFt
ZT0zRCJTVEFLTSI9CikgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZ2V3
YWVzc2VyaWQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiPQpHRVdBRVNTRVJJRCIpICksCisg
ICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImdld25hbWUiLCBjb2x1bW49M0RAQ29s
dW1uKG5hbWU9M0QiR0VXTj0KQU1FIikgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5h
bWU9M0QiYmV6dWdzcGVnZWxpZCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0KPTNEIkJFWlVHU1BF
R0VMSUQiKSApIH0gKQorICAgIHB1YmxpYyBNZXNzdW5nc3RhSWQgZ2V0SWQoKSB7CisgICAgICAg
IHJldHVybiB0aGlzLmlkOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldElkKE1lc3N1bmdz
dGFJZCBpZCkgeworICAgICAgICB0aGlzLmlkID0zRCBpZDsKKyAgICB9Cit9CmRpZmYgLXIgYmM0
ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0
ZWxlbWVudD0Kcy9yaXZlci9zZWRkYi9tb2RlbC9NZXNzdW5nc3RhSWQuamF2YQotLS0gL2Rldi9u
dWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9iYWNrZW5kL3NyYy9tYWlu
L2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvTWVzc3VuZ3N0YUk9CmQu
amF2YQlNb24gQXByIDI5IDExOjMzOjAxIDIwMTMgKzAyMDAKQEAgLTAsMCArMSwxMTY2IEBACisv
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJD
ciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQorICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZh
dGlvbiBHbWJICisgKgorICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdO
VSBBR1BMICg+PTNEdjMpPTIwCisgKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJB
TlRZISBDaGVjayBvdXQgdGhlCisgKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxl
bWVudHMgUml2ZXIgZm9yIGRldGFpbHMuPTIwCisgKi8KKworcGFja2FnZSBvcmcuZGl2ZTRlbGVt
ZW50cy5zZWRkYi5tb2RlbDsKKy8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhp
YmVybmF0ZSBUb29scyAzLjQuMC5DUjEKKworCitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7
CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3Rl
bmNlLkVtYmVkZGFibGU7CisKKy8qKgorICogTWVzc3VuZ3N0YUlkIGdlbmVyYXRlZCBieSBoYm0y
amF2YQorICovCitARW1iZWRkYWJsZQorcHVibGljIGNsYXNzIE1lc3N1bmdzdGFJZCAgaW1wbGVt
ZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7CisKKworICAgICBwcml2YXRlIFNlcmlhbGl6YWJs
ZSBtZXNzdW5naWQ7CisgICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIHN0YXRpb25pZDsKKyAgICAg
cHJpdmF0ZSBTZXJpYWxpemFibGUgZGF0dW07CisgICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGhw
ZWlsdW5naWQ7CisgICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIG1wZWlsdW5naWQ7CisgICAgIHBy
aXZhdGUgU2VyaWFsaXphYmxlIGdmYWVuZ2VyaWQ7CisgICAgIHByaXZhdGUgU2VyaWFsaXphYmxl
IGdzaWVic2F0emlkOworICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBtZXNzbnI7CisgICAgIHBy
aXZhdGUgU2VyaWFsaXphYmxlIGZndWU7CisgICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIHVocnZv
bjsKKyAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgdWhyYmlzOworICAgICBwcml2YXRlIFNlcmlh
bGl6YWJsZSB3c3BjbTsKKyAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgUUJwZWdlbDsKKyAgICAg
cHJpdmF0ZSBTZXJpYWxpemFibGUgd3Nwbm47CisgICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGll
OworICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSB3dGVtcDsKKyAgICAgcHJpdmF0ZSBTZXJpYWxp
emFibGUgZ2JyZWl0ZTsKKyAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgZ2JyZWl0ZXZvbjsKKyAg
ICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgZ2JyZWl0ZWJpczsKKyAgICAgcHJpdmF0ZSBTZXJpYWxp
emFibGUgdGdlc2NoaWViZTsKKyAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgdHNhbmQ7CisgICAg
IHByaXZhdGUgU2VyaWFsaXphYmxlIHRzY2h3ZWI7CisgICAgIHByaXZhdGUgU2VyaWFsaXphYmxl
IGNzY2h3ZWI7CisgICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIHVmZXJsaWFic3Q7CisgICAgIHBy
aXZhdGUgU2VyaWFsaXphYmxlIHVmZXJyZWFic3Q7CisgICAgIHByaXZhdGUgU2VyaWFsaXphYmxl
IHE7CisgICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIEFIcGVpbDsKKyAgICAgcHJpdmF0ZSBTZXJp
YWxpemFibGUgQU1wZWlsOworICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBiOworICAgICBwcml2
YXRlIFNlcmlhbGl6YWJsZSBobTsKKyAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgdm07CisgICAg
IHByaXZhdGUgU2VyaWFsaXphYmxlIHZzb2hsZTsKKyAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUg
dGF1OworICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSB0YXV2OworICAgICBwcml2YXRlIFNlcmlh
bGl6YWJsZSB0ZWlsUTsKKyAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgdGVpbEFIcGVpbDsKKyAg
ICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgdGVpbEFNcGVpbDsKKyAgICAgcHJpdmF0ZSBTZXJpYWxp
emFibGUgdGVpbEI7CisgICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIHRlaWxIbTsKKyAgICAgcHJp
dmF0ZSBTZXJpYWxpemFibGUgdGVpbFZtOworICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSB0ZWls
VnNvaGxlOworICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSB0ZWlsVGF1OworICAgICBwcml2YXRl
IFNlcmlhbGl6YWJsZSB0ZWlsVGF1djsKKyAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgbWl0dGVs
dHlwOworICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBkbTsKKyAgICAgcHJpdmF0ZSBTZXJpYWxp
emFibGUgc2s7CisgICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIHNvOworICAgICBwcml2YXRlIFNl
cmlhbGl6YWJsZSB1OworICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBkOTA7CisgICAgIHByaXZh
dGUgU2VyaWFsaXphYmxlIGQ4NDsKKyAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgZDgwOworICAg
ICBwcml2YXRlIFNlcmlhbGl6YWJsZSBkNzU7CisgICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGQ3
MDsKKyAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgZDYwOworICAgICBwcml2YXRlIFNlcmlhbGl6
YWJsZSBkNTA7CisgICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGQ0MDsKKyAgICAgcHJpdmF0ZSBT
ZXJpYWxpemFibGUgZDMwOworICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBkMjU7CisgICAgIHBy
aXZhdGUgU2VyaWFsaXphYmxlIGQyMDsKKyAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgZDE2Owor
ICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBkMTA7CisgICAgIHByaXZhdGUgU2VyaWFsaXphYmxl
IGRtaW47CisgICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGR1cmNoZG1pbjsKKyAgICAgcHJpdmF0
ZSBTZXJpYWxpemFibGUgZG1heDsKKyAgICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgZHVyY2hkbWF4
OworICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBOR2VzY2hpZWI7CisgICAgIHByaXZhdGUgU2Vy
aWFsaXphYmxlIE5WaWVscGt0OworICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBzeXNEYXRlOwor
ICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBiZW1lcmt1bmc7CisgICAgIHByaXZhdGUgU2VyaWFs
aXphYmxlIGxhc3R1cGRhdGVkOworICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBrbTsKKyAgICAg
cHJpdmF0ZSBTZXJpYWxpemFibGUgZ2xvdGFic3RvZmZzZXQ7CisgICAgIHByaXZhdGUgU2VyaWFs
aXphYmxlIHNsb3RhYnN0b2Zmc2V0OworICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBnYnJlaXRl
dm9ubGlua3M7CisgICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGdicmVpdGViaXNsaW5rczsKKyAg
ICAgcHJpdmF0ZSBTZXJpYWxpemFibGUgc3RhbmFtZTsKKyAgICAgcHJpdmF0ZSBTZXJpYWxpemFi
bGUgc3Rha207CisgICAgIHByaXZhdGUgU2VyaWFsaXphYmxlIGdld2Flc3NlcmlkOworICAgICBw
cml2YXRlIFNlcmlhbGl6YWJsZSBnZXduYW1lOworICAgICBwcml2YXRlIFNlcmlhbGl6YWJsZSBi
ZXp1Z3NwZWdlbGlkOworCisgICAgcHVibGljIE1lc3N1bmdzdGFJZCgpIHsKKyAgICB9CisKKyAg
ICBwdWJsaWMgTWVzc3VuZ3N0YUlkKFNlcmlhbGl6YWJsZSBtZXNzdW5naWQsIFNlcmlhbGl6YWJs
ZSBzdGF0aW9uaWQsIFNlPQpyaWFsaXphYmxlIGRhdHVtLCBTZXJpYWxpemFibGUgaHBlaWx1bmdp
ZCwgU2VyaWFsaXphYmxlIG1wZWlsdW5naWQsIFNlcmlhbGk9CnphYmxlIGdmYWVuZ2VyaWQsIFNl
cmlhbGl6YWJsZSBnc2llYnNhdHppZCwgU2VyaWFsaXphYmxlIG1lc3NuciwgU2VyaWFsaXphYj0K
bGUgZmd1ZSwgU2VyaWFsaXphYmxlIHVocnZvbiwgU2VyaWFsaXphYmxlIHVocmJpcywgU2VyaWFs
aXphYmxlIHdzcGNtLCBTZXJpPQphbGl6YWJsZSBRQnBlZ2VsLCBTZXJpYWxpemFibGUgd3Nwbm4s
IFNlcmlhbGl6YWJsZSBpZSwgU2VyaWFsaXphYmxlIHd0ZW1wLCA9ClNlcmlhbGl6YWJsZSBnYnJl
aXRlLCBTZXJpYWxpemFibGUgZ2JyZWl0ZXZvbiwgU2VyaWFsaXphYmxlIGdicmVpdGViaXMsIFNl
cj0KaWFsaXphYmxlIHRnZXNjaGllYmUsIFNlcmlhbGl6YWJsZSB0c2FuZCwgU2VyaWFsaXphYmxl
IHRzY2h3ZWIsIFNlcmlhbGl6YWJsPQplIGNzY2h3ZWIsIFNlcmlhbGl6YWJsZSB1ZmVybGlhYnN0
LCBTZXJpYWxpemFibGUgdWZlcnJlYWJzdCwgU2VyaWFsaXphYmxlIHE9CiwgU2VyaWFsaXphYmxl
IEFIcGVpbCwgU2VyaWFsaXphYmxlIEFNcGVpbCwgU2VyaWFsaXphYmxlIGIsIFNlcmlhbGl6YWJs
ZSBobT0KLCBTZXJpYWxpemFibGUgdm0sIFNlcmlhbGl6YWJsZSB2c29obGUsIFNlcmlhbGl6YWJs
ZSB0YXUsIFNlcmlhbGl6YWJsZSB0YXV2PQosIFNlcmlhbGl6YWJsZSB0ZWlsUSwgU2VyaWFsaXph
YmxlIHRlaWxBSHBlaWwsIFNlcmlhbGl6YWJsZSB0ZWlsQU1wZWlsLCBTZXI9CmlhbGl6YWJsZSB0
ZWlsQiwgU2VyaWFsaXphYmxlIHRlaWxIbSwgU2VyaWFsaXphYmxlIHRlaWxWbSwgU2VyaWFsaXph
YmxlIHRlaT0KbFZzb2hsZSwgU2VyaWFsaXphYmxlIHRlaWxUYXUsIFNlcmlhbGl6YWJsZSB0ZWls
VGF1diwgU2VyaWFsaXphYmxlIG1pdHRlbHR5PQpwLCBTZXJpYWxpemFibGUgZG0sIFNlcmlhbGl6
YWJsZSBzaywgU2VyaWFsaXphYmxlIHNvLCBTZXJpYWxpemFibGUgdSwgU2VyaWE9CmxpemFibGUg
ZDkwLCBTZXJpYWxpemFibGUgZDg0LCBTZXJpYWxpemFibGUgZDgwLCBTZXJpYWxpemFibGUgZDc1
LCBTZXJpYWxpej0KYWJsZSBkNzAsIFNlcmlhbGl6YWJsZSBkNjAsIFNlcmlhbGl6YWJsZSBkNTAs
IFNlcmlhbGl6YWJsZSBkNDAsIFNlcmlhbGl6YWJsPQplIGQzMCwgU2VyaWFsaXphYmxlIGQyNSwg
U2VyaWFsaXphYmxlIGQyMCwgU2VyaWFsaXphYmxlIGQxNiwgU2VyaWFsaXphYmxlIGQ9CjEwLCBT
ZXJpYWxpemFibGUgZG1pbiwgU2VyaWFsaXphYmxlIGR1cmNoZG1pbiwgU2VyaWFsaXphYmxlIGRt
YXgsIFNlcmlhbGl6YT0KYmxlIGR1cmNoZG1heCwgU2VyaWFsaXphYmxlIE5HZXNjaGllYiwgU2Vy
aWFsaXphYmxlIE5WaWVscGt0LCBTZXJpYWxpemFibGUgPQpzeXNEYXRlLCBTZXJpYWxpemFibGUg
YmVtZXJrdW5nLCBTZXJpYWxpemFibGUgbGFzdHVwZGF0ZWQsIFNlcmlhbGl6YWJsZSBrbSw9CiBT
ZXJpYWxpemFibGUgZ2xvdGFic3RvZmZzZXQsIFNlcmlhbGl6YWJsZSBzbG90YWJzdG9mZnNldCwg
U2VyaWFsaXphYmxlIGdicj0KZWl0ZXZvbmxpbmtzLCBTZXJpYWxpemFibGUgZ2JyZWl0ZWJpc2xp
bmtzLCBTZXJpYWxpemFibGUgc3RhbmFtZSwgU2VyaWFsaXphPQpibGUgc3Rha20sIFNlcmlhbGl6
YWJsZSBnZXdhZXNzZXJpZCwgU2VyaWFsaXphYmxlIGdld25hbWUsIFNlcmlhbGl6YWJsZSBiZXo9
CnVnc3BlZ2VsaWQpIHsKKyAgICAgICB0aGlzLm1lc3N1bmdpZCA9M0QgbWVzc3VuZ2lkOworICAg
ICAgIHRoaXMuc3RhdGlvbmlkID0zRCBzdGF0aW9uaWQ7CisgICAgICAgdGhpcy5kYXR1bSA9M0Qg
ZGF0dW07CisgICAgICAgdGhpcy5ocGVpbHVuZ2lkID0zRCBocGVpbHVuZ2lkOworICAgICAgIHRo
aXMubXBlaWx1bmdpZCA9M0QgbXBlaWx1bmdpZDsKKyAgICAgICB0aGlzLmdmYWVuZ2VyaWQgPTNE
IGdmYWVuZ2VyaWQ7CisgICAgICAgdGhpcy5nc2llYnNhdHppZCA9M0QgZ3NpZWJzYXR6aWQ7Cisg
ICAgICAgdGhpcy5tZXNzbnIgPTNEIG1lc3NucjsKKyAgICAgICB0aGlzLmZndWUgPTNEIGZndWU7
CisgICAgICAgdGhpcy51aHJ2b24gPTNEIHVocnZvbjsKKyAgICAgICB0aGlzLnVocmJpcyA9M0Qg
dWhyYmlzOworICAgICAgIHRoaXMud3NwY20gPTNEIHdzcGNtOworICAgICAgIHRoaXMuUUJwZWdl
bCA9M0QgUUJwZWdlbDsKKyAgICAgICB0aGlzLndzcG5uID0zRCB3c3BubjsKKyAgICAgICB0aGlz
LmllID0zRCBpZTsKKyAgICAgICB0aGlzLnd0ZW1wID0zRCB3dGVtcDsKKyAgICAgICB0aGlzLmdi
cmVpdGUgPTNEIGdicmVpdGU7CisgICAgICAgdGhpcy5nYnJlaXRldm9uID0zRCBnYnJlaXRldm9u
OworICAgICAgIHRoaXMuZ2JyZWl0ZWJpcyA9M0QgZ2JyZWl0ZWJpczsKKyAgICAgICB0aGlzLnRn
ZXNjaGllYmUgPTNEIHRnZXNjaGllYmU7CisgICAgICAgdGhpcy50c2FuZCA9M0QgdHNhbmQ7Cisg
ICAgICAgdGhpcy50c2Nod2ViID0zRCB0c2Nod2ViOworICAgICAgIHRoaXMuY3NjaHdlYiA9M0Qg
Y3NjaHdlYjsKKyAgICAgICB0aGlzLnVmZXJsaWFic3QgPTNEIHVmZXJsaWFic3Q7CisgICAgICAg
dGhpcy51ZmVycmVhYnN0ID0zRCB1ZmVycmVhYnN0OworICAgICAgIHRoaXMucSA9M0QgcTsKKyAg
ICAgICB0aGlzLkFIcGVpbCA9M0QgQUhwZWlsOworICAgICAgIHRoaXMuQU1wZWlsID0zRCBBTXBl
aWw7CisgICAgICAgdGhpcy5iID0zRCBiOworICAgICAgIHRoaXMuaG0gPTNEIGhtOworICAgICAg
IHRoaXMudm0gPTNEIHZtOworICAgICAgIHRoaXMudnNvaGxlID0zRCB2c29obGU7CisgICAgICAg
dGhpcy50YXUgPTNEIHRhdTsKKyAgICAgICB0aGlzLnRhdXYgPTNEIHRhdXY7CisgICAgICAgdGhp
cy50ZWlsUSA9M0QgdGVpbFE7CisgICAgICAgdGhpcy50ZWlsQUhwZWlsID0zRCB0ZWlsQUhwZWls
OworICAgICAgIHRoaXMudGVpbEFNcGVpbCA9M0QgdGVpbEFNcGVpbDsKKyAgICAgICB0aGlzLnRl
aWxCID0zRCB0ZWlsQjsKKyAgICAgICB0aGlzLnRlaWxIbSA9M0QgdGVpbEhtOworICAgICAgIHRo
aXMudGVpbFZtID0zRCB0ZWlsVm07CisgICAgICAgdGhpcy50ZWlsVnNvaGxlID0zRCB0ZWlsVnNv
aGxlOworICAgICAgIHRoaXMudGVpbFRhdSA9M0QgdGVpbFRhdTsKKyAgICAgICB0aGlzLnRlaWxU
YXV2ID0zRCB0ZWlsVGF1djsKKyAgICAgICB0aGlzLm1pdHRlbHR5cCA9M0QgbWl0dGVsdHlwOwor
ICAgICAgIHRoaXMuZG0gPTNEIGRtOworICAgICAgIHRoaXMuc2sgPTNEIHNrOworICAgICAgIHRo
aXMuc28gPTNEIHNvOworICAgICAgIHRoaXMudSA9M0QgdTsKKyAgICAgICB0aGlzLmQ5MCA9M0Qg
ZDkwOworICAgICAgIHRoaXMuZDg0ID0zRCBkODQ7CisgICAgICAgdGhpcy5kODAgPTNEIGQ4MDsK
KyAgICAgICB0aGlzLmQ3NSA9M0QgZDc1OworICAgICAgIHRoaXMuZDcwID0zRCBkNzA7CisgICAg
ICAgdGhpcy5kNjAgPTNEIGQ2MDsKKyAgICAgICB0aGlzLmQ1MCA9M0QgZDUwOworICAgICAgIHRo
aXMuZDQwID0zRCBkNDA7CisgICAgICAgdGhpcy5kMzAgPTNEIGQzMDsKKyAgICAgICB0aGlzLmQy
NSA9M0QgZDI1OworICAgICAgIHRoaXMuZDIwID0zRCBkMjA7CisgICAgICAgdGhpcy5kMTYgPTNE
IGQxNjsKKyAgICAgICB0aGlzLmQxMCA9M0QgZDEwOworICAgICAgIHRoaXMuZG1pbiA9M0QgZG1p
bjsKKyAgICAgICB0aGlzLmR1cmNoZG1pbiA9M0QgZHVyY2hkbWluOworICAgICAgIHRoaXMuZG1h
eCA9M0QgZG1heDsKKyAgICAgICB0aGlzLmR1cmNoZG1heCA9M0QgZHVyY2hkbWF4OworICAgICAg
IHRoaXMuTkdlc2NoaWViID0zRCBOR2VzY2hpZWI7CisgICAgICAgdGhpcy5OVmllbHBrdCA9M0Qg
TlZpZWxwa3Q7CisgICAgICAgdGhpcy5zeXNEYXRlID0zRCBzeXNEYXRlOworICAgICAgIHRoaXMu
YmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7CisgICAgICAgdGhpcy5sYXN0dXBkYXRlZCA9M0QgbGFz
dHVwZGF0ZWQ7CisgICAgICAgdGhpcy5rbSA9M0Qga207CisgICAgICAgdGhpcy5nbG90YWJzdG9m
ZnNldCA9M0QgZ2xvdGFic3RvZmZzZXQ7CisgICAgICAgdGhpcy5zbG90YWJzdG9mZnNldCA9M0Qg
c2xvdGFic3RvZmZzZXQ7CisgICAgICAgdGhpcy5nYnJlaXRldm9ubGlua3MgPTNEIGdicmVpdGV2
b25saW5rczsKKyAgICAgICB0aGlzLmdicmVpdGViaXNsaW5rcyA9M0QgZ2JyZWl0ZWJpc2xpbmtz
OworICAgICAgIHRoaXMuc3RhbmFtZSA9M0Qgc3RhbmFtZTsKKyAgICAgICB0aGlzLnN0YWttID0z
RCBzdGFrbTsKKyAgICAgICB0aGlzLmdld2Flc3NlcmlkID0zRCBnZXdhZXNzZXJpZDsKKyAgICAg
ICB0aGlzLmdld25hbWUgPTNEIGdld25hbWU7CisgICAgICAgdGhpcy5iZXp1Z3NwZWdlbGlkID0z
RCBiZXp1Z3NwZWdlbGlkOworICAgIH0KKworCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiTUVTU1VO
R0lEIikKKyAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldE1lc3N1bmdpZCgpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMubWVzc3VuZ2lkOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1lc3N1
bmdpZChTZXJpYWxpemFibGUgbWVzc3VuZ2lkKSB7CisgICAgICAgIHRoaXMubWVzc3VuZ2lkID0z
RCBtZXNzdW5naWQ7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiU1RBVElPTklEIikK
KyAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldFN0YXRpb25pZCgpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuc3RhdGlvbmlkOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFN0YXRpb25pZChT
ZXJpYWxpemFibGUgc3RhdGlvbmlkKSB7CisgICAgICAgIHRoaXMuc3RhdGlvbmlkID0zRCBzdGF0
aW9uaWQ7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiREFUVU0iKQorICAgIHB1Ymxp
YyBTZXJpYWxpemFibGUgZ2V0RGF0dW0oKSB7CisgICAgICAgIHJldHVybiB0aGlzLmRhdHVtOwor
ICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldERhdHVtKFNlcmlhbGl6YWJsZSBkYXR1bSkgewor
ICAgICAgICB0aGlzLmRhdHVtID0zRCBkYXR1bTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFt
ZT0zRCJIUEVJTFVOR0lEIikKKyAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldEhwZWlsdW5naWQo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLmhwZWlsdW5naWQ7CisgICAgfQorCisgICAgcHVibGlj
IHZvaWQgc2V0SHBlaWx1bmdpZChTZXJpYWxpemFibGUgaHBlaWx1bmdpZCkgeworICAgICAgICB0
aGlzLmhwZWlsdW5naWQgPTNEIGhwZWlsdW5naWQ7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5h
bWU9M0QiTVBFSUxVTkdJRCIpCisgICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRNcGVpbHVuZ2lk
KCkgeworICAgICAgICByZXR1cm4gdGhpcy5tcGVpbHVuZ2lkOworICAgIH0KKworICAgIHB1Ymxp
YyB2b2lkIHNldE1wZWlsdW5naWQoU2VyaWFsaXphYmxlIG1wZWlsdW5naWQpIHsKKyAgICAgICAg
dGhpcy5tcGVpbHVuZ2lkID0zRCBtcGVpbHVuZ2lkOworICAgIH0KKworCisgICAgQENvbHVtbihu
YW1lPTNEIkdGQUVOR0VSSUQiKQorICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0R2ZhZW5nZXJp
ZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZ2ZhZW5nZXJpZDsKKyAgICB9CisKKyAgICBwdWJs
aWMgdm9pZCBzZXRHZmFlbmdlcmlkKFNlcmlhbGl6YWJsZSBnZmFlbmdlcmlkKSB7CisgICAgICAg
IHRoaXMuZ2ZhZW5nZXJpZCA9M0QgZ2ZhZW5nZXJpZDsKKyAgICB9CisKKworICAgIEBDb2x1bW4o
bmFtZT0zRCJHU0lFQlNBVFpJRCIpCisgICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRHc2llYnNh
dHppZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZ3NpZWJzYXR6aWQ7CisgICAgfQorCisgICAg
cHVibGljIHZvaWQgc2V0R3NpZWJzYXR6aWQoU2VyaWFsaXphYmxlIGdzaWVic2F0emlkKSB7Cisg
ICAgICAgIHRoaXMuZ3NpZWJzYXR6aWQgPTNEIGdzaWVic2F0emlkOworICAgIH0KKworCisgICAg
QENvbHVtbihuYW1lPTNEIk1FU1NOUiIpCisgICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRNZXNz
bnIoKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1lc3NucjsKKyAgICB9CisKKyAgICBwdWJsaWMg
dm9pZCBzZXRNZXNzbnIoU2VyaWFsaXphYmxlIG1lc3NucikgeworICAgICAgICB0aGlzLm1lc3Nu
ciA9M0QgbWVzc25yOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkZHVUUiKQorICAg
IHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0Rmd1ZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZmd1
ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRGZ3VlKFNlcmlhbGl6YWJsZSBmZ3VlKSB7
CisgICAgICAgIHRoaXMuZmd1ZSA9M0QgZmd1ZTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFt
ZT0zRCJVSFJWT04iKQorICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0VWhydm9uKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy51aHJ2b247CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VWhy
dm9uKFNlcmlhbGl6YWJsZSB1aHJ2b24pIHsKKyAgICAgICAgdGhpcy51aHJ2b24gPTNEIHVocnZv
bjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJVSFJCSVMiKQorICAgIHB1YmxpYyBT
ZXJpYWxpemFibGUgZ2V0VWhyYmlzKCkgeworICAgICAgICByZXR1cm4gdGhpcy51aHJiaXM7Cisg
ICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VWhyYmlzKFNlcmlhbGl6YWJsZSB1aHJiaXMpIHsK
KyAgICAgICAgdGhpcy51aHJiaXMgPTNEIHVocmJpczsKKyAgICB9CisKKworICAgIEBDb2x1bW4o
bmFtZT0zRCJXU1BDTSIpCisgICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRXc3BjbSgpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMud3NwY207CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0V3Nw
Y20oU2VyaWFsaXphYmxlIHdzcGNtKSB7CisgICAgICAgIHRoaXMud3NwY20gPTNEIHdzcGNtOwor
ICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlFfQlBFR0VMIikKKyAgICBwdWJsaWMgU2Vy
aWFsaXphYmxlIGdldFFCcGVnZWwoKSB7CisgICAgICAgIHJldHVybiB0aGlzLlFCcGVnZWw7Cisg
ICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0UUJwZWdlbChTZXJpYWxpemFibGUgUUJwZWdlbCkg
eworICAgICAgICB0aGlzLlFCcGVnZWwgPTNEIFFCcGVnZWw7CisgICAgfQorCisKKyAgICBAQ29s
dW1uKG5hbWU9M0QiV1NQTk4iKQorICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0V3Nwbm4oKSB7
CisgICAgICAgIHJldHVybiB0aGlzLndzcG5uOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNl
dFdzcG5uKFNlcmlhbGl6YWJsZSB3c3BubikgeworICAgICAgICB0aGlzLndzcG5uID0zRCB3c3Bu
bjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJJRSIpCisgICAgcHVibGljIFNlcmlh
bGl6YWJsZSBnZXRJZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaWU7CisgICAgfQorCisgICAg
cHVibGljIHZvaWQgc2V0SWUoU2VyaWFsaXphYmxlIGllKSB7CisgICAgICAgIHRoaXMuaWUgPTNE
IGllOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIldURU1QIikKKyAgICBwdWJsaWMg
U2VyaWFsaXphYmxlIGdldFd0ZW1wKCkgeworICAgICAgICByZXR1cm4gdGhpcy53dGVtcDsKKyAg
ICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRXdGVtcChTZXJpYWxpemFibGUgd3RlbXApIHsKKyAg
ICAgICAgdGhpcy53dGVtcCA9M0Qgd3RlbXA7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9
M0QiR0JSRUlURSIpCisgICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRHYnJlaXRlKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy5nYnJlaXRlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEdi
cmVpdGUoU2VyaWFsaXphYmxlIGdicmVpdGUpIHsKKyAgICAgICAgdGhpcy5nYnJlaXRlID0zRCBn
YnJlaXRlOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkdCUkVJVEVWT04iKQorICAg
IHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0R2JyZWl0ZXZvbigpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuZ2JyZWl0ZXZvbjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRHYnJlaXRldm9uKFNl
cmlhbGl6YWJsZSBnYnJlaXRldm9uKSB7CisgICAgICAgIHRoaXMuZ2JyZWl0ZXZvbiA9M0QgZ2Jy
ZWl0ZXZvbjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJHQlJFSVRFQklTIikKKyAg
ICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldEdicmVpdGViaXMoKSB7CisgICAgICAgIHJldHVybiB0
aGlzLmdicmVpdGViaXM7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0R2JyZWl0ZWJpcyhT
ZXJpYWxpemFibGUgZ2JyZWl0ZWJpcykgeworICAgICAgICB0aGlzLmdicmVpdGViaXMgPTNEIGdi
cmVpdGViaXM7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiVEdFU0NISUVCRSIpCisg
ICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRUZ2VzY2hpZWJlKCkgeworICAgICAgICByZXR1cm4g
dGhpcy50Z2VzY2hpZWJlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFRnZXNjaGllYmUo
U2VyaWFsaXphYmxlIHRnZXNjaGllYmUpIHsKKyAgICAgICAgdGhpcy50Z2VzY2hpZWJlID0zRCB0
Z2VzY2hpZWJlOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlRTQU5EIikKKyAgICBw
dWJsaWMgU2VyaWFsaXphYmxlIGdldFRzYW5kKCkgeworICAgICAgICByZXR1cm4gdGhpcy50c2Fu
ZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRUc2FuZChTZXJpYWxpemFibGUgdHNhbmQp
IHsKKyAgICAgICAgdGhpcy50c2FuZCA9M0QgdHNhbmQ7CisgICAgfQorCisKKyAgICBAQ29sdW1u
KG5hbWU9M0QiVFNDSFdFQiIpCisgICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRUc2Nod2ViKCkg
eworICAgICAgICByZXR1cm4gdGhpcy50c2Nod2ViOworICAgIH0KKworICAgIHB1YmxpYyB2b2lk
IHNldFRzY2h3ZWIoU2VyaWFsaXphYmxlIHRzY2h3ZWIpIHsKKyAgICAgICAgdGhpcy50c2Nod2Vi
ID0zRCB0c2Nod2ViOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkNTQ0hXRUIiKQor
ICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0Q3NjaHdlYigpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuY3NjaHdlYjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRDc2Nod2ViKFNlcmlhbGl6
YWJsZSBjc2Nod2ViKSB7CisgICAgICAgIHRoaXMuY3NjaHdlYiA9M0QgY3NjaHdlYjsKKyAgICB9
CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJVRkVSTElBQlNUIikKKyAgICBwdWJsaWMgU2VyaWFs
aXphYmxlIGdldFVmZXJsaWFic3QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnVmZXJsaWFic3Q7
CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VWZlcmxpYWJzdChTZXJpYWxpemFibGUgdWZl
cmxpYWJzdCkgeworICAgICAgICB0aGlzLnVmZXJsaWFic3QgPTNEIHVmZXJsaWFic3Q7CisgICAg
fQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiVUZFUlJFQUJTVCIpCisgICAgcHVibGljIFNlcmlh
bGl6YWJsZSBnZXRVZmVycmVhYnN0KCkgeworICAgICAgICByZXR1cm4gdGhpcy51ZmVycmVhYnN0
OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFVmZXJyZWFic3QoU2VyaWFsaXphYmxlIHVm
ZXJyZWFic3QpIHsKKyAgICAgICAgdGhpcy51ZmVycmVhYnN0ID0zRCB1ZmVycmVhYnN0OworICAg
IH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlEiKQorICAgIHB1YmxpYyBTZXJpYWxpemFibGUg
Z2V0USgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9p
ZCBzZXRRKFNlcmlhbGl6YWJsZSBxKSB7CisgICAgICAgIHRoaXMucSA9M0QgcTsKKyAgICB9CisK
KworICAgIEBDb2x1bW4obmFtZT0zRCJBX0hQRUlMIikKKyAgICBwdWJsaWMgU2VyaWFsaXphYmxl
IGdldEFIcGVpbCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuQUhwZWlsOworICAgIH0KKworICAg
IHB1YmxpYyB2b2lkIHNldEFIcGVpbChTZXJpYWxpemFibGUgQUhwZWlsKSB7CisgICAgICAgIHRo
aXMuQUhwZWlsID0zRCBBSHBlaWw7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiQV9N
UEVJTCIpCisgICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRBTXBlaWwoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLkFNcGVpbDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRBTXBlaWwoU2Vy
aWFsaXphYmxlIEFNcGVpbCkgeworICAgICAgICB0aGlzLkFNcGVpbCA9M0QgQU1wZWlsOworICAg
IH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkIiKQorICAgIHB1YmxpYyBTZXJpYWxpemFibGUg
Z2V0QigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9p
ZCBzZXRCKFNlcmlhbGl6YWJsZSBiKSB7CisgICAgICAgIHRoaXMuYiA9M0QgYjsKKyAgICB9CisK
KworICAgIEBDb2x1bW4obmFtZT0zRCJITSIpCisgICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRI
bSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaG07CisgICAgfQorCisgICAgcHVibGljIHZvaWQg
c2V0SG0oU2VyaWFsaXphYmxlIGhtKSB7CisgICAgICAgIHRoaXMuaG0gPTNEIGhtOworICAgIH0K
KworCisgICAgQENvbHVtbihuYW1lPTNEIlZNIikKKyAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdl
dFZtKCkgeworICAgICAgICByZXR1cm4gdGhpcy52bTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9p
ZCBzZXRWbShTZXJpYWxpemFibGUgdm0pIHsKKyAgICAgICAgdGhpcy52bSA9M0Qgdm07CisgICAg
fQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiVlNPSExFIikKKyAgICBwdWJsaWMgU2VyaWFsaXph
YmxlIGdldFZzb2hsZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudnNvaGxlOworICAgIH0KKwor
ICAgIHB1YmxpYyB2b2lkIHNldFZzb2hsZShTZXJpYWxpemFibGUgdnNvaGxlKSB7CisgICAgICAg
IHRoaXMudnNvaGxlID0zRCB2c29obGU7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0Qi
VEFVIikKKyAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldFRhdSgpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMudGF1OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFRhdShTZXJpYWxpemFibGUg
dGF1KSB7CisgICAgICAgIHRoaXMudGF1ID0zRCB0YXU7CisgICAgfQorCisKKyAgICBAQ29sdW1u
KG5hbWU9M0QiVEFVViIpCisgICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRUYXV2KCkgeworICAg
ICAgICByZXR1cm4gdGhpcy50YXV2OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFRhdXYo
U2VyaWFsaXphYmxlIHRhdXYpIHsKKyAgICAgICAgdGhpcy50YXV2ID0zRCB0YXV2OworICAgIH0K
KworCisgICAgQENvbHVtbihuYW1lPTNEIlRFSUxfUSIpCisgICAgcHVibGljIFNlcmlhbGl6YWJs
ZSBnZXRUZWlsUSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudGVpbFE7CisgICAgfQorCisgICAg
cHVibGljIHZvaWQgc2V0VGVpbFEoU2VyaWFsaXphYmxlIHRlaWxRKSB7CisgICAgICAgIHRoaXMu
dGVpbFEgPTNEIHRlaWxROworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlRFSUxfQV9I
UEVJTCIpCisgICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRUZWlsQUhwZWlsKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy50ZWlsQUhwZWlsOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFRl
aWxBSHBlaWwoU2VyaWFsaXphYmxlIHRlaWxBSHBlaWwpIHsKKyAgICAgICAgdGhpcy50ZWlsQUhw
ZWlsID0zRCB0ZWlsQUhwZWlsOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlRFSUxf
QV9NUEVJTCIpCisgICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRUZWlsQU1wZWlsKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy50ZWlsQU1wZWlsOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNl
dFRlaWxBTXBlaWwoU2VyaWFsaXphYmxlIHRlaWxBTXBlaWwpIHsKKyAgICAgICAgdGhpcy50ZWls
QU1wZWlsID0zRCB0ZWlsQU1wZWlsOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlRF
SUxfQiIpCisgICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRUZWlsQigpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMudGVpbEI7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VGVpbEIoU2VyaWFs
aXphYmxlIHRlaWxCKSB7CisgICAgICAgIHRoaXMudGVpbEIgPTNEIHRlaWxCOworICAgIH0KKwor
CisgICAgQENvbHVtbihuYW1lPTNEIlRFSUxfSE0iKQorICAgIHB1YmxpYyBTZXJpYWxpemFibGUg
Z2V0VGVpbEhtKCkgeworICAgICAgICByZXR1cm4gdGhpcy50ZWlsSG07CisgICAgfQorCisgICAg
cHVibGljIHZvaWQgc2V0VGVpbEhtKFNlcmlhbGl6YWJsZSB0ZWlsSG0pIHsKKyAgICAgICAgdGhp
cy50ZWlsSG0gPTNEIHRlaWxIbTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJURUlM
X1ZNIikKKyAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldFRlaWxWbSgpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMudGVpbFZtOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFRlaWxWbShTZXJp
YWxpemFibGUgdGVpbFZtKSB7CisgICAgICAgIHRoaXMudGVpbFZtID0zRCB0ZWlsVm07CisgICAg
fQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiVEVJTF9WU09ITEUiKQorICAgIHB1YmxpYyBTZXJp
YWxpemFibGUgZ2V0VGVpbFZzb2hsZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudGVpbFZzb2hs
ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRUZWlsVnNvaGxlKFNlcmlhbGl6YWJsZSB0
ZWlsVnNvaGxlKSB7CisgICAgICAgIHRoaXMudGVpbFZzb2hsZSA9M0QgdGVpbFZzb2hsZTsKKyAg
ICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJURUlMX1RBVSIpCisgICAgcHVibGljIFNlcmlh
bGl6YWJsZSBnZXRUZWlsVGF1KCkgeworICAgICAgICByZXR1cm4gdGhpcy50ZWlsVGF1OworICAg
IH0KKworICAgIHB1YmxpYyB2b2lkIHNldFRlaWxUYXUoU2VyaWFsaXphYmxlIHRlaWxUYXUpIHsK
KyAgICAgICAgdGhpcy50ZWlsVGF1ID0zRCB0ZWlsVGF1OworICAgIH0KKworCisgICAgQENvbHVt
bihuYW1lPTNEIlRFSUxfVEFVViIpCisgICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRUZWlsVGF1
digpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudGVpbFRhdXY7CisgICAgfQorCisgICAgcHVibGlj
IHZvaWQgc2V0VGVpbFRhdXYoU2VyaWFsaXphYmxlIHRlaWxUYXV2KSB7CisgICAgICAgIHRoaXMu
dGVpbFRhdXYgPTNEIHRlaWxUYXV2OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIk1J
VFRFTFRZUCIpCisgICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRNaXR0ZWx0eXAoKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLm1pdHRlbHR5cDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRN
aXR0ZWx0eXAoU2VyaWFsaXphYmxlIG1pdHRlbHR5cCkgeworICAgICAgICB0aGlzLm1pdHRlbHR5
cCA9M0QgbWl0dGVsdHlwOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkRNIikKKyAg
ICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldERtKCkgeworICAgICAgICByZXR1cm4gdGhpcy5kbTsK
KyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXREbShTZXJpYWxpemFibGUgZG0pIHsKKyAgICAg
ICAgdGhpcy5kbSA9M0QgZG07CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiU0siKQor
ICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0U2soKSB7CisgICAgICAgIHJldHVybiB0aGlzLnNr
OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFNrKFNlcmlhbGl6YWJsZSBzaykgeworICAg
ICAgICB0aGlzLnNrID0zRCBzazsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJTTyIp
CisgICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRTbygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
c287CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0U28oU2VyaWFsaXphYmxlIHNvKSB7Cisg
ICAgICAgIHRoaXMuc28gPTNEIHNvOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlUi
KQorICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0VSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
dTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVKFNlcmlhbGl6YWJsZSB1KSB7CisgICAg
ICAgIHRoaXMudSA9M0QgdTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJEOTAiKQor
ICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0RDkwKCkgeworICAgICAgICByZXR1cm4gdGhpcy5k
OTA7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RDkwKFNlcmlhbGl6YWJsZSBkOTApIHsK
KyAgICAgICAgdGhpcy5kOTAgPTNEIGQ5MDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0z
RCJEODQiKQorICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0RDg0KCkgeworICAgICAgICByZXR1
cm4gdGhpcy5kODQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RDg0KFNlcmlhbGl6YWJs
ZSBkODQpIHsKKyAgICAgICAgdGhpcy5kODQgPTNEIGQ4NDsKKyAgICB9CisKKworICAgIEBDb2x1
bW4obmFtZT0zRCJEODAiKQorICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0RDgwKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy5kODA7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RDgwKFNl
cmlhbGl6YWJsZSBkODApIHsKKyAgICAgICAgdGhpcy5kODAgPTNEIGQ4MDsKKyAgICB9CisKKwor
ICAgIEBDb2x1bW4obmFtZT0zRCJENzUiKQorICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0RDc1
KCkgeworICAgICAgICByZXR1cm4gdGhpcy5kNzU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQg
c2V0RDc1KFNlcmlhbGl6YWJsZSBkNzUpIHsKKyAgICAgICAgdGhpcy5kNzUgPTNEIGQ3NTsKKyAg
ICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJENzAiKQorICAgIHB1YmxpYyBTZXJpYWxpemFi
bGUgZ2V0RDcwKCkgeworICAgICAgICByZXR1cm4gdGhpcy5kNzA7CisgICAgfQorCisgICAgcHVi
bGljIHZvaWQgc2V0RDcwKFNlcmlhbGl6YWJsZSBkNzApIHsKKyAgICAgICAgdGhpcy5kNzAgPTNE
IGQ3MDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJENjAiKQorICAgIHB1YmxpYyBT
ZXJpYWxpemFibGUgZ2V0RDYwKCkgeworICAgICAgICByZXR1cm4gdGhpcy5kNjA7CisgICAgfQor
CisgICAgcHVibGljIHZvaWQgc2V0RDYwKFNlcmlhbGl6YWJsZSBkNjApIHsKKyAgICAgICAgdGhp
cy5kNjAgPTNEIGQ2MDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJENTAiKQorICAg
IHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0RDUwKCkgeworICAgICAgICByZXR1cm4gdGhpcy5kNTA7
CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RDUwKFNlcmlhbGl6YWJsZSBkNTApIHsKKyAg
ICAgICAgdGhpcy5kNTAgPTNEIGQ1MDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJE
NDAiKQorICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0RDQwKCkgeworICAgICAgICByZXR1cm4g
dGhpcy5kNDA7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RDQwKFNlcmlhbGl6YWJsZSBk
NDApIHsKKyAgICAgICAgdGhpcy5kNDAgPTNEIGQ0MDsKKyAgICB9CisKKworICAgIEBDb2x1bW4o
bmFtZT0zRCJEMzAiKQorICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0RDMwKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy5kMzA7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RDMwKFNlcmlh
bGl6YWJsZSBkMzApIHsKKyAgICAgICAgdGhpcy5kMzAgPTNEIGQzMDsKKyAgICB9CisKKworICAg
IEBDb2x1bW4obmFtZT0zRCJEMjUiKQorICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0RDI1KCkg
eworICAgICAgICByZXR1cm4gdGhpcy5kMjU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0
RDI1KFNlcmlhbGl6YWJsZSBkMjUpIHsKKyAgICAgICAgdGhpcy5kMjUgPTNEIGQyNTsKKyAgICB9
CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJEMjAiKQorICAgIHB1YmxpYyBTZXJpYWxpemFibGUg
Z2V0RDIwKCkgeworICAgICAgICByZXR1cm4gdGhpcy5kMjA7CisgICAgfQorCisgICAgcHVibGlj
IHZvaWQgc2V0RDIwKFNlcmlhbGl6YWJsZSBkMjApIHsKKyAgICAgICAgdGhpcy5kMjAgPTNEIGQy
MDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJEMTYiKQorICAgIHB1YmxpYyBTZXJp
YWxpemFibGUgZ2V0RDE2KCkgeworICAgICAgICByZXR1cm4gdGhpcy5kMTY7CisgICAgfQorCisg
ICAgcHVibGljIHZvaWQgc2V0RDE2KFNlcmlhbGl6YWJsZSBkMTYpIHsKKyAgICAgICAgdGhpcy5k
MTYgPTNEIGQxNjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJEMTAiKQorICAgIHB1
YmxpYyBTZXJpYWxpemFibGUgZ2V0RDEwKCkgeworICAgICAgICByZXR1cm4gdGhpcy5kMTA7Cisg
ICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RDEwKFNlcmlhbGl6YWJsZSBkMTApIHsKKyAgICAg
ICAgdGhpcy5kMTAgPTNEIGQxMDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJETUlO
IikKKyAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldERtaW4oKSB7CisgICAgICAgIHJldHVybiB0
aGlzLmRtaW47CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RG1pbihTZXJpYWxpemFibGUg
ZG1pbikgeworICAgICAgICB0aGlzLmRtaW4gPTNEIGRtaW47CisgICAgfQorCisKKyAgICBAQ29s
dW1uKG5hbWU9M0QiRFVSQ0hETUlOIikKKyAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldER1cmNo
ZG1pbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZHVyY2hkbWluOworICAgIH0KKworICAgIHB1
YmxpYyB2b2lkIHNldER1cmNoZG1pbihTZXJpYWxpemFibGUgZHVyY2hkbWluKSB7CisgICAgICAg
IHRoaXMuZHVyY2hkbWluID0zRCBkdXJjaGRtaW47CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5h
bWU9M0QiRE1BWCIpCisgICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXREbWF4KCkgeworICAgICAg
ICByZXR1cm4gdGhpcy5kbWF4OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldERtYXgoU2Vy
aWFsaXphYmxlIGRtYXgpIHsKKyAgICAgICAgdGhpcy5kbWF4ID0zRCBkbWF4OworICAgIH0KKwor
CisgICAgQENvbHVtbihuYW1lPTNEIkRVUkNIRE1BWCIpCisgICAgcHVibGljIFNlcmlhbGl6YWJs
ZSBnZXREdXJjaGRtYXgoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmR1cmNoZG1heDsKKyAgICB9
CisKKyAgICBwdWJsaWMgdm9pZCBzZXREdXJjaGRtYXgoU2VyaWFsaXphYmxlIGR1cmNoZG1heCkg
eworICAgICAgICB0aGlzLmR1cmNoZG1heCA9M0QgZHVyY2hkbWF4OworICAgIH0KKworCisgICAg
QENvbHVtbihuYW1lPTNEIk5fR0VTQ0hJRUIiKQorICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0
Tkdlc2NoaWViKCkgeworICAgICAgICByZXR1cm4gdGhpcy5OR2VzY2hpZWI7CisgICAgfQorCisg
ICAgcHVibGljIHZvaWQgc2V0Tkdlc2NoaWViKFNlcmlhbGl6YWJsZSBOR2VzY2hpZWIpIHsKKyAg
ICAgICAgdGhpcy5OR2VzY2hpZWIgPTNEIE5HZXNjaGllYjsKKyAgICB9CisKKworICAgIEBDb2x1
bW4obmFtZT0zRCJOX1ZJRUxQS1QiKQorICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0TlZpZWxw
a3QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLk5WaWVscGt0OworICAgIH0KKworICAgIHB1Ymxp
YyB2b2lkIHNldE5WaWVscGt0KFNlcmlhbGl6YWJsZSBOVmllbHBrdCkgeworICAgICAgICB0aGlz
Lk5WaWVscGt0ID0zRCBOVmllbHBrdDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJT
WVNfREFURSIpCisgICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRTeXNEYXRlKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy5zeXNEYXRlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFN5c0Rh
dGUoU2VyaWFsaXphYmxlIHN5c0RhdGUpIHsKKyAgICAgICAgdGhpcy5zeXNEYXRlID0zRCBzeXNE
YXRlOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkJFTUVSS1VORyIpCisgICAgcHVi
bGljIFNlcmlhbGl6YWJsZSBnZXRCZW1lcmt1bmcoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJl
bWVya3VuZzsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRCZW1lcmt1bmcoU2VyaWFsaXph
YmxlIGJlbWVya3VuZykgeworICAgICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOwor
ICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkxBU1RVUERBVEVEIikKKyAgICBwdWJsaWMg
U2VyaWFsaXphYmxlIGdldExhc3R1cGRhdGVkKCkgeworICAgICAgICByZXR1cm4gdGhpcy5sYXN0
dXBkYXRlZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRMYXN0dXBkYXRlZChTZXJpYWxp
emFibGUgbGFzdHVwZGF0ZWQpIHsKKyAgICAgICAgdGhpcy5sYXN0dXBkYXRlZCA9M0QgbGFzdHVw
ZGF0ZWQ7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiS00iKQorICAgIHB1YmxpYyBT
ZXJpYWxpemFibGUgZ2V0S20oKSB7CisgICAgICAgIHJldHVybiB0aGlzLmttOworICAgIH0KKwor
ICAgIHB1YmxpYyB2b2lkIHNldEttKFNlcmlhbGl6YWJsZSBrbSkgeworICAgICAgICB0aGlzLmtt
ID0zRCBrbTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJHTE9UQUJTVE9GRlNFVCIp
CisgICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRHbG90YWJzdG9mZnNldCgpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuZ2xvdGFic3RvZmZzZXQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0
R2xvdGFic3RvZmZzZXQoU2VyaWFsaXphYmxlIGdsb3RhYnN0b2Zmc2V0KSB7CisgICAgICAgIHRo
aXMuZ2xvdGFic3RvZmZzZXQgPTNEIGdsb3RhYnN0b2Zmc2V0OworICAgIH0KKworCisgICAgQENv
bHVtbihuYW1lPTNEIlNMT1RBQlNUT0ZGU0VUIikKKyAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdl
dFNsb3RhYnN0b2Zmc2V0KCkgeworICAgICAgICByZXR1cm4gdGhpcy5zbG90YWJzdG9mZnNldDsK
KyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRTbG90YWJzdG9mZnNldChTZXJpYWxpemFibGUg
c2xvdGFic3RvZmZzZXQpIHsKKyAgICAgICAgdGhpcy5zbG90YWJzdG9mZnNldCA9M0Qgc2xvdGFi
c3RvZmZzZXQ7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiR0JSRUlURVZPTkxJTktT
IikKKyAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldEdicmVpdGV2b25saW5rcygpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuZ2JyZWl0ZXZvbmxpbmtzOworICAgIH0KKworICAgIHB1YmxpYyB2b2lk
IHNldEdicmVpdGV2b25saW5rcyhTZXJpYWxpemFibGUgZ2JyZWl0ZXZvbmxpbmtzKSB7CisgICAg
ICAgIHRoaXMuZ2JyZWl0ZXZvbmxpbmtzID0zRCBnYnJlaXRldm9ubGlua3M7CisgICAgfQorCisK
KyAgICBAQ29sdW1uKG5hbWU9M0QiR0JSRUlURUJJU0xJTktTIikKKyAgICBwdWJsaWMgU2VyaWFs
aXphYmxlIGdldEdicmVpdGViaXNsaW5rcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZ2JyZWl0
ZWJpc2xpbmtzOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEdicmVpdGViaXNsaW5rcyhT
ZXJpYWxpemFibGUgZ2JyZWl0ZWJpc2xpbmtzKSB7CisgICAgICAgIHRoaXMuZ2JyZWl0ZWJpc2xp
bmtzID0zRCBnYnJlaXRlYmlzbGlua3M7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0Qi
U1RBTkFNRSIpCisgICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRTdGFuYW1lKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy5zdGFuYW1lOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFN0YW5h
bWUoU2VyaWFsaXphYmxlIHN0YW5hbWUpIHsKKyAgICAgICAgdGhpcy5zdGFuYW1lID0zRCBzdGFu
YW1lOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlNUQUtNIikKKyAgICBwdWJsaWMg
U2VyaWFsaXphYmxlIGdldFN0YWttKCkgeworICAgICAgICByZXR1cm4gdGhpcy5zdGFrbTsKKyAg
ICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRTdGFrbShTZXJpYWxpemFibGUgc3Rha20pIHsKKyAg
ICAgICAgdGhpcy5zdGFrbSA9M0Qgc3Rha207CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9
M0QiR0VXQUVTU0VSSUQiKQorICAgIHB1YmxpYyBTZXJpYWxpemFibGUgZ2V0R2V3YWVzc2VyaWQo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLmdld2Flc3NlcmlkOworICAgIH0KKworICAgIHB1Ymxp
YyB2b2lkIHNldEdld2Flc3NlcmlkKFNlcmlhbGl6YWJsZSBnZXdhZXNzZXJpZCkgeworICAgICAg
ICB0aGlzLmdld2Flc3NlcmlkID0zRCBnZXdhZXNzZXJpZDsKKyAgICB9CisKKworICAgIEBDb2x1
bW4obmFtZT0zRCJHRVdOQU1FIikKKyAgICBwdWJsaWMgU2VyaWFsaXphYmxlIGdldEdld25hbWUo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLmdld25hbWU7CisgICAgfQorCisgICAgcHVibGljIHZv
aWQgc2V0R2V3bmFtZShTZXJpYWxpemFibGUgZ2V3bmFtZSkgeworICAgICAgICB0aGlzLmdld25h
bWUgPTNEIGdld25hbWU7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiQkVaVUdTUEVH
RUxJRCIpCisgICAgcHVibGljIFNlcmlhbGl6YWJsZSBnZXRCZXp1Z3NwZWdlbGlkKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy5iZXp1Z3NwZWdlbGlkOworICAgIH0KKworICAgIHB1YmxpYyB2b2lk
IHNldEJlenVnc3BlZ2VsaWQoU2VyaWFsaXphYmxlIGJlenVnc3BlZ2VsaWQpIHsKKyAgICAgICAg
dGhpcy5iZXp1Z3NwZWdlbGlkID0zRCBiZXp1Z3NwZWdlbGlkOworICAgIH0KKworCisgICBwdWJs
aWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG90aGVyKSB7CisgICAgICAgICBpZiAoICh0aGlzID0z
RD0zRCBvdGhlciApICkgcmV0dXJuIHRydWU7CisgICAgICAgICBpZiAoIChvdGhlciA9M0Q9M0Qg
bnVsbCApICkgcmV0dXJuIGZhbHNlOworICAgICAgICAgaWYgKCAhKG90aGVyIGluc3RhbmNlb2Yg
TWVzc3VuZ3N0YUlkKSApIHJldHVybiBmYWxzZTsKKyAgICAgICAgIE1lc3N1bmdzdGFJZCBjYXN0
T3RoZXIgPTNEICggTWVzc3VuZ3N0YUlkICkgb3RoZXI7CisKKyAgICAgICAgIHJldHVybiAoICh0
aGlzLmdldE1lc3N1bmdpZCgpPTNEPTNEY2FzdE90aGVyLmdldE1lc3N1bmdpZCgpKSB8fCAoPQog
dGhpcy5nZXRNZXNzdW5naWQoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNZXNzdW5naWQoKSE9
M0RudWxsICYmIHRoaXMuZ2U9CnRNZXNzdW5naWQoKS5lcXVhbHMoY2FzdE90aGVyLmdldE1lc3N1
bmdpZCgpKSApICkKKyAmJiAoICh0aGlzLmdldFN0YXRpb25pZCgpPTNEPTNEY2FzdE90aGVyLmdl
dFN0YXRpb25pZCgpKSB8fCAoIHRoaXMuZ2V0U3RhPQp0aW9uaWQoKSE9M0RudWxsICYmIGNhc3RP
dGhlci5nZXRTdGF0aW9uaWQoKSE9M0RudWxsICYmIHRoaXMuZ2V0U3RhdGlvbmlkKCk9Ci5lcXVh
bHMoY2FzdE90aGVyLmdldFN0YXRpb25pZCgpKSApICkKKyAmJiAoICh0aGlzLmdldERhdHVtKCk9
M0Q9M0RjYXN0T3RoZXIuZ2V0RGF0dW0oKSkgfHwgKCB0aGlzLmdldERhdHVtKCkhPTNEPQpudWxs
ICYmIGNhc3RPdGhlci5nZXREYXR1bSgpIT0zRG51bGwgJiYgdGhpcy5nZXREYXR1bSgpLmVxdWFs
cyhjYXN0T3RoZXIuZ2U9CnREYXR1bSgpKSApICkKKyAmJiAoICh0aGlzLmdldEhwZWlsdW5naWQo
KT0zRD0zRGNhc3RPdGhlci5nZXRIcGVpbHVuZ2lkKCkpIHx8ICggdGhpcy5nZXRIPQpwZWlsdW5n
aWQoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRIcGVpbHVuZ2lkKCkhPTNEbnVsbCAmJiB0aGlz
LmdldEhwZWlsdW49CmdpZCgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0SHBlaWx1bmdpZCgpKSApICkK
KyAmJiAoICh0aGlzLmdldE1wZWlsdW5naWQoKT0zRD0zRGNhc3RPdGhlci5nZXRNcGVpbHVuZ2lk
KCkpIHx8ICggdGhpcy5nZXRNPQpwZWlsdW5naWQoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRN
cGVpbHVuZ2lkKCkhPTNEbnVsbCAmJiB0aGlzLmdldE1wZWlsdW49CmdpZCgpLmVxdWFscyhjYXN0
T3RoZXIuZ2V0TXBlaWx1bmdpZCgpKSApICkKKyAmJiAoICh0aGlzLmdldEdmYWVuZ2VyaWQoKT0z
RD0zRGNhc3RPdGhlci5nZXRHZmFlbmdlcmlkKCkpIHx8ICggdGhpcy5nZXRHPQpmYWVuZ2VyaWQo
KSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRHZmFlbmdlcmlkKCkhPTNEbnVsbCAmJiB0aGlzLmdl
dEdmYWVuZ2U9CnJpZCgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0R2ZhZW5nZXJpZCgpKSApICkKKyAm
JiAoICh0aGlzLmdldEdzaWVic2F0emlkKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0R3NpZWJzYXR6aWQo
KSkgfHwgKCB0aGlzLmdlPQp0R3NpZWJzYXR6aWQoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRH
c2llYnNhdHppZCgpIT0zRG51bGwgJiYgdGhpcy5nZXRHc2k9CmVic2F0emlkKCkuZXF1YWxzKGNh
c3RPdGhlci5nZXRHc2llYnNhdHppZCgpKSApICkKKyAmJiAoICh0aGlzLmdldE1lc3NucigpPTNE
PTNEY2FzdE90aGVyLmdldE1lc3NucigpKSB8fCAoIHRoaXMuZ2V0TWVzc25yKCkhPQo9M0RudWxs
ICYmIGNhc3RPdGhlci5nZXRNZXNzbnIoKSE9M0RudWxsICYmIHRoaXMuZ2V0TWVzc25yKCkuZXF1
YWxzKGNhc3RPdGg9CmVyLmdldE1lc3NucigpKSApICkKKyAmJiAoICh0aGlzLmdldEZndWUoKT0z
RD0zRGNhc3RPdGhlci5nZXRGZ3VlKCkpIHx8ICggdGhpcy5nZXRGZ3VlKCkhPTNEbnVsPQpsICYm
IGNhc3RPdGhlci5nZXRGZ3VlKCkhPTNEbnVsbCAmJiB0aGlzLmdldEZndWUoKS5lcXVhbHMoY2Fz
dE90aGVyLmdldEZndWU9CigpKSApICkKKyAmJiAoICh0aGlzLmdldFVocnZvbigpPTNEPTNEY2Fz
dE90aGVyLmdldFVocnZvbigpKSB8fCAoIHRoaXMuZ2V0VWhydm9uKCkhPQo9M0RudWxsICYmIGNh
c3RPdGhlci5nZXRVaHJ2b24oKSE9M0RudWxsICYmIHRoaXMuZ2V0VWhydm9uKCkuZXF1YWxzKGNh
c3RPdGg9CmVyLmdldFVocnZvbigpKSApICkKKyAmJiAoICh0aGlzLmdldFVocmJpcygpPTNEPTNE
Y2FzdE90aGVyLmdldFVocmJpcygpKSB8fCAoIHRoaXMuZ2V0VWhyYmlzKCkhPQo9M0RudWxsICYm
IGNhc3RPdGhlci5nZXRVaHJiaXMoKSE9M0RudWxsICYmIHRoaXMuZ2V0VWhyYmlzKCkuZXF1YWxz
KGNhc3RPdGg9CmVyLmdldFVocmJpcygpKSApICkKKyAmJiAoICh0aGlzLmdldFdzcGNtKCk9M0Q9
M0RjYXN0T3RoZXIuZ2V0V3NwY20oKSkgfHwgKCB0aGlzLmdldFdzcGNtKCkhPTNEPQpudWxsICYm
IGNhc3RPdGhlci5nZXRXc3BjbSgpIT0zRG51bGwgJiYgdGhpcy5nZXRXc3BjbSgpLmVxdWFscyhj
YXN0T3RoZXIuZ2U9CnRXc3BjbSgpKSApICkKKyAmJiAoICh0aGlzLmdldFFCcGVnZWwoKT0zRD0z
RGNhc3RPdGhlci5nZXRRQnBlZ2VsKCkpIHx8ICggdGhpcy5nZXRRQnBlZ2VsPQooKSE9M0RudWxs
ICYmIGNhc3RPdGhlci5nZXRRQnBlZ2VsKCkhPTNEbnVsbCAmJiB0aGlzLmdldFFCcGVnZWwoKS5l
cXVhbHMoY2E9CnN0T3RoZXIuZ2V0UUJwZWdlbCgpKSApICkKKyAmJiAoICh0aGlzLmdldFdzcG5u
KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0V3Nwbm4oKSkgfHwgKCB0aGlzLmdldFdzcG5uKCkhPTNEPQpu
dWxsICYmIGNhc3RPdGhlci5nZXRXc3BubigpIT0zRG51bGwgJiYgdGhpcy5nZXRXc3BubigpLmVx
dWFscyhjYXN0T3RoZXIuZ2U9CnRXc3BubigpKSApICkKKyAmJiAoICh0aGlzLmdldEllKCk9M0Q9
M0RjYXN0T3RoZXIuZ2V0SWUoKSkgfHwgKCB0aGlzLmdldEllKCkhPTNEbnVsbCAmJiBjPQphc3RP
dGhlci5nZXRJZSgpIT0zRG51bGwgJiYgdGhpcy5nZXRJZSgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0
SWUoKSkgKSApCisgJiYgKCAodGhpcy5nZXRXdGVtcCgpPTNEPTNEY2FzdE90aGVyLmdldFd0ZW1w
KCkpIHx8ICggdGhpcy5nZXRXdGVtcCgpIT0zRD0KbnVsbCAmJiBjYXN0T3RoZXIuZ2V0V3RlbXAo
KSE9M0RudWxsICYmIHRoaXMuZ2V0V3RlbXAoKS5lcXVhbHMoY2FzdE90aGVyLmdlPQp0V3RlbXAo
KSkgKSApCisgJiYgKCAodGhpcy5nZXRHYnJlaXRlKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0R2JyZWl0
ZSgpKSB8fCAoIHRoaXMuZ2V0R2JyZWl0ZT0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0R2Jy
ZWl0ZSgpIT0zRG51bGwgJiYgdGhpcy5nZXRHYnJlaXRlKCkuZXF1YWxzKGNhPQpzdE90aGVyLmdl
dEdicmVpdGUoKSkgKSApCisgJiYgKCAodGhpcy5nZXRHYnJlaXRldm9uKCk9M0Q9M0RjYXN0T3Ro
ZXIuZ2V0R2JyZWl0ZXZvbigpKSB8fCAoIHRoaXMuZ2V0Rz0KYnJlaXRldm9uKCkhPTNEbnVsbCAm
JiBjYXN0T3RoZXIuZ2V0R2JyZWl0ZXZvbigpIT0zRG51bGwgJiYgdGhpcy5nZXRHYnJlaXRlPQp2
b24oKS5lcXVhbHMoY2FzdE90aGVyLmdldEdicmVpdGV2b24oKSkgKSApCisgJiYgKCAodGhpcy5n
ZXRHYnJlaXRlYmlzKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0R2JyZWl0ZWJpcygpKSB8fCAoIHRoaXMu
Z2V0Rz0KYnJlaXRlYmlzKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0R2JyZWl0ZWJpcygpIT0z
RG51bGwgJiYgdGhpcy5nZXRHYnJlaXRlPQpiaXMoKS5lcXVhbHMoY2FzdE90aGVyLmdldEdicmVp
dGViaXMoKSkgKSApCisgJiYgKCAodGhpcy5nZXRUZ2VzY2hpZWJlKCk9M0Q9M0RjYXN0T3RoZXIu
Z2V0VGdlc2NoaWViZSgpKSB8fCAoIHRoaXMuZ2V0VD0KZ2VzY2hpZWJlKCkhPTNEbnVsbCAmJiBj
YXN0T3RoZXIuZ2V0VGdlc2NoaWViZSgpIT0zRG51bGwgJiYgdGhpcy5nZXRUZ2VzY2hpPQplYmUo
KS5lcXVhbHMoY2FzdE90aGVyLmdldFRnZXNjaGllYmUoKSkgKSApCisgJiYgKCAodGhpcy5nZXRU
c2FuZCgpPTNEPTNEY2FzdE90aGVyLmdldFRzYW5kKCkpIHx8ICggdGhpcy5nZXRUc2FuZCgpIT0z
RD0KbnVsbCAmJiBjYXN0T3RoZXIuZ2V0VHNhbmQoKSE9M0RudWxsICYmIHRoaXMuZ2V0VHNhbmQo
KS5lcXVhbHMoY2FzdE90aGVyLmdlPQp0VHNhbmQoKSkgKSApCisgJiYgKCAodGhpcy5nZXRUc2No
d2ViKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0VHNjaHdlYigpKSB8fCAoIHRoaXMuZ2V0VHNjaHdlYj0K
KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0VHNjaHdlYigpIT0zRG51bGwgJiYgdGhpcy5nZXRU
c2Nod2ViKCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldFRzY2h3ZWIoKSkgKSApCisgJiYgKCAodGhp
cy5nZXRDc2Nod2ViKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0Q3NjaHdlYigpKSB8fCAoIHRoaXMuZ2V0
Q3NjaHdlYj0KKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0Q3NjaHdlYigpIT0zRG51bGwgJiYg
dGhpcy5nZXRDc2Nod2ViKCkuZXF1YWxzKGNhPQpzdE90aGVyLmdldENzY2h3ZWIoKSkgKSApCisg
JiYgKCAodGhpcy5nZXRVZmVybGlhYnN0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0VWZlcmxpYWJzdCgp
KSB8fCAoIHRoaXMuZ2V0VT0KZmVybGlhYnN0KCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0VWZl
cmxpYWJzdCgpIT0zRG51bGwgJiYgdGhpcy5nZXRVZmVybGlhPQpic3QoKS5lcXVhbHMoY2FzdE90
aGVyLmdldFVmZXJsaWFic3QoKSkgKSApCisgJiYgKCAodGhpcy5nZXRVZmVycmVhYnN0KCk9M0Q9
M0RjYXN0T3RoZXIuZ2V0VWZlcnJlYWJzdCgpKSB8fCAoIHRoaXMuZ2V0VT0KZmVycmVhYnN0KCkh
PTNEbnVsbCAmJiBjYXN0T3RoZXIuZ2V0VWZlcnJlYWJzdCgpIT0zRG51bGwgJiYgdGhpcy5nZXRV
ZmVycmVhPQpic3QoKS5lcXVhbHMoY2FzdE90aGVyLmdldFVmZXJyZWFic3QoKSkgKSApCisgJiYg
KCAodGhpcy5nZXRRKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0USgpKSB8fCAoIHRoaXMuZ2V0USgpIT0z
RG51bGwgJiYgY2FzdD0KT3RoZXIuZ2V0USgpIT0zRG51bGwgJiYgdGhpcy5nZXRRKCkuZXF1YWxz
KGNhc3RPdGhlci5nZXRRKCkpICkgKQorICYmICggKHRoaXMuZ2V0QUhwZWlsKCk9M0Q9M0RjYXN0
T3RoZXIuZ2V0QUhwZWlsKCkpIHx8ICggdGhpcy5nZXRBSHBlaWwoKSE9Cj0zRG51bGwgJiYgY2Fz
dE90aGVyLmdldEFIcGVpbCgpIT0zRG51bGwgJiYgdGhpcy5nZXRBSHBlaWwoKS5lcXVhbHMoY2Fz
dE90aD0KZXIuZ2V0QUhwZWlsKCkpICkgKQorICYmICggKHRoaXMuZ2V0QU1wZWlsKCk9M0Q9M0Rj
YXN0T3RoZXIuZ2V0QU1wZWlsKCkpIHx8ICggdGhpcy5nZXRBTXBlaWwoKSE9Cj0zRG51bGwgJiYg
Y2FzdE90aGVyLmdldEFNcGVpbCgpIT0zRG51bGwgJiYgdGhpcy5nZXRBTXBlaWwoKS5lcXVhbHMo
Y2FzdE90aD0KZXIuZ2V0QU1wZWlsKCkpICkgKQorICYmICggKHRoaXMuZ2V0QigpPTNEPTNEY2Fz
dE90aGVyLmdldEIoKSkgfHwgKCB0aGlzLmdldEIoKSE9M0RudWxsICYmIGNhc3Q9Ck90aGVyLmdl
dEIoKSE9M0RudWxsICYmIHRoaXMuZ2V0QigpLmVxdWFscyhjYXN0T3RoZXIuZ2V0QigpKSApICkK
KyAmJiAoICh0aGlzLmdldEhtKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0SG0oKSkgfHwgKCB0aGlzLmdl
dEhtKCkhPTNEbnVsbCAmJiBjPQphc3RPdGhlci5nZXRIbSgpIT0zRG51bGwgJiYgdGhpcy5nZXRI
bSgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0SG0oKSkgKSApCisgJiYgKCAodGhpcy5nZXRWbSgpPTNE
PTNEY2FzdE90aGVyLmdldFZtKCkpIHx8ICggdGhpcy5nZXRWbSgpIT0zRG51bGwgJiYgYz0KYXN0
T3RoZXIuZ2V0Vm0oKSE9M0RudWxsICYmIHRoaXMuZ2V0Vm0oKS5lcXVhbHMoY2FzdE90aGVyLmdl
dFZtKCkpICkgKQorICYmICggKHRoaXMuZ2V0VnNvaGxlKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0VnNv
aGxlKCkpIHx8ICggdGhpcy5nZXRWc29obGUoKSE9Cj0zRG51bGwgJiYgY2FzdE90aGVyLmdldFZz
b2hsZSgpIT0zRG51bGwgJiYgdGhpcy5nZXRWc29obGUoKS5lcXVhbHMoY2FzdE90aD0KZXIuZ2V0
VnNvaGxlKCkpICkgKQorICYmICggKHRoaXMuZ2V0VGF1KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0VGF1
KCkpIHx8ICggdGhpcy5nZXRUYXUoKSE9M0RudWxsICY9CiYgY2FzdE90aGVyLmdldFRhdSgpIT0z
RG51bGwgJiYgdGhpcy5nZXRUYXUoKS5lcXVhbHMoY2FzdE90aGVyLmdldFRhdSgpKSApICkKKyAm
JiAoICh0aGlzLmdldFRhdXYoKT0zRD0zRGNhc3RPdGhlci5nZXRUYXV2KCkpIHx8ICggdGhpcy5n
ZXRUYXV2KCkhPTNEbnVsPQpsICYmIGNhc3RPdGhlci5nZXRUYXV2KCkhPTNEbnVsbCAmJiB0aGlz
LmdldFRhdXYoKS5lcXVhbHMoY2FzdE90aGVyLmdldFRhdXY9CigpKSApICkKKyAmJiAoICh0aGlz
LmdldFRlaWxRKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0VGVpbFEoKSkgfHwgKCB0aGlzLmdldFRlaWxR
KCkhPTNEPQpudWxsICYmIGNhc3RPdGhlci5nZXRUZWlsUSgpIT0zRG51bGwgJiYgdGhpcy5nZXRU
ZWlsUSgpLmVxdWFscyhjYXN0T3RoZXIuZ2U9CnRUZWlsUSgpKSApICkKKyAmJiAoICh0aGlzLmdl
dFRlaWxBSHBlaWwoKT0zRD0zRGNhc3RPdGhlci5nZXRUZWlsQUhwZWlsKCkpIHx8ICggdGhpcy5n
ZXRUPQplaWxBSHBlaWwoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRUZWlsQUhwZWlsKCkhPTNE
bnVsbCAmJiB0aGlzLmdldFRlaWxBSHA9CmVpbCgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0VGVpbEFI
cGVpbCgpKSApICkKKyAmJiAoICh0aGlzLmdldFRlaWxBTXBlaWwoKT0zRD0zRGNhc3RPdGhlci5n
ZXRUZWlsQU1wZWlsKCkpIHx8ICggdGhpcy5nZXRUPQplaWxBTXBlaWwoKSE9M0RudWxsICYmIGNh
c3RPdGhlci5nZXRUZWlsQU1wZWlsKCkhPTNEbnVsbCAmJiB0aGlzLmdldFRlaWxBTXA9CmVpbCgp
LmVxdWFscyhjYXN0T3RoZXIuZ2V0VGVpbEFNcGVpbCgpKSApICkKKyAmJiAoICh0aGlzLmdldFRl
aWxCKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0VGVpbEIoKSkgfHwgKCB0aGlzLmdldFRlaWxCKCkhPTNE
PQpudWxsICYmIGNhc3RPdGhlci5nZXRUZWlsQigpIT0zRG51bGwgJiYgdGhpcy5nZXRUZWlsQigp
LmVxdWFscyhjYXN0T3RoZXIuZ2U9CnRUZWlsQigpKSApICkKKyAmJiAoICh0aGlzLmdldFRlaWxI
bSgpPTNEPTNEY2FzdE90aGVyLmdldFRlaWxIbSgpKSB8fCAoIHRoaXMuZ2V0VGVpbEhtKCkhPQo9
M0RudWxsICYmIGNhc3RPdGhlci5nZXRUZWlsSG0oKSE9M0RudWxsICYmIHRoaXMuZ2V0VGVpbEht
KCkuZXF1YWxzKGNhc3RPdGg9CmVyLmdldFRlaWxIbSgpKSApICkKKyAmJiAoICh0aGlzLmdldFRl
aWxWbSgpPTNEPTNEY2FzdE90aGVyLmdldFRlaWxWbSgpKSB8fCAoIHRoaXMuZ2V0VGVpbFZtKCkh
PQo9M0RudWxsICYmIGNhc3RPdGhlci5nZXRUZWlsVm0oKSE9M0RudWxsICYmIHRoaXMuZ2V0VGVp
bFZtKCkuZXF1YWxzKGNhc3RPdGg9CmVyLmdldFRlaWxWbSgpKSApICkKKyAmJiAoICh0aGlzLmdl
dFRlaWxWc29obGUoKT0zRD0zRGNhc3RPdGhlci5nZXRUZWlsVnNvaGxlKCkpIHx8ICggdGhpcy5n
ZXRUPQplaWxWc29obGUoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRUZWlsVnNvaGxlKCkhPTNE
bnVsbCAmJiB0aGlzLmdldFRlaWxWc289CmhsZSgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0VGVpbFZz
b2hsZSgpKSApICkKKyAmJiAoICh0aGlzLmdldFRlaWxUYXUoKT0zRD0zRGNhc3RPdGhlci5nZXRU
ZWlsVGF1KCkpIHx8ICggdGhpcy5nZXRUZWlsVGF1PQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5n
ZXRUZWlsVGF1KCkhPTNEbnVsbCAmJiB0aGlzLmdldFRlaWxUYXUoKS5lcXVhbHMoY2E9CnN0T3Ro
ZXIuZ2V0VGVpbFRhdSgpKSApICkKKyAmJiAoICh0aGlzLmdldFRlaWxUYXV2KCk9M0Q9M0RjYXN0
T3RoZXIuZ2V0VGVpbFRhdXYoKSkgfHwgKCB0aGlzLmdldFRlaWxUPQphdXYoKSE9M0RudWxsICYm
IGNhc3RPdGhlci5nZXRUZWlsVGF1digpIT0zRG51bGwgJiYgdGhpcy5nZXRUZWlsVGF1digpLmVx
dWE9CmxzKGNhc3RPdGhlci5nZXRUZWlsVGF1digpKSApICkKKyAmJiAoICh0aGlzLmdldE1pdHRl
bHR5cCgpPTNEPTNEY2FzdE90aGVyLmdldE1pdHRlbHR5cCgpKSB8fCAoIHRoaXMuZ2V0TWl0PQp0
ZWx0eXAoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRNaXR0ZWx0eXAoKSE9M0RudWxsICYmIHRo
aXMuZ2V0TWl0dGVsdHlwKCk9Ci5lcXVhbHMoY2FzdE90aGVyLmdldE1pdHRlbHR5cCgpKSApICkK
KyAmJiAoICh0aGlzLmdldERtKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RG0oKSkgfHwgKCB0aGlzLmdl
dERtKCkhPTNEbnVsbCAmJiBjPQphc3RPdGhlci5nZXREbSgpIT0zRG51bGwgJiYgdGhpcy5nZXRE
bSgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0RG0oKSkgKSApCisgJiYgKCAodGhpcy5nZXRTaygpPTNE
PTNEY2FzdE90aGVyLmdldFNrKCkpIHx8ICggdGhpcy5nZXRTaygpIT0zRG51bGwgJiYgYz0KYXN0
T3RoZXIuZ2V0U2soKSE9M0RudWxsICYmIHRoaXMuZ2V0U2soKS5lcXVhbHMoY2FzdE90aGVyLmdl
dFNrKCkpICkgKQorICYmICggKHRoaXMuZ2V0U28oKT0zRD0zRGNhc3RPdGhlci5nZXRTbygpKSB8
fCAoIHRoaXMuZ2V0U28oKSE9M0RudWxsICYmIGM9CmFzdE90aGVyLmdldFNvKCkhPTNEbnVsbCAm
JiB0aGlzLmdldFNvKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRTbygpKSApICkKKyAmJiAoICh0aGlz
LmdldFUoKT0zRD0zRGNhc3RPdGhlci5nZXRVKCkpIHx8ICggdGhpcy5nZXRVKCkhPTNEbnVsbCAm
JiBjYXN0PQpPdGhlci5nZXRVKCkhPTNEbnVsbCAmJiB0aGlzLmdldFUoKS5lcXVhbHMoY2FzdE90
aGVyLmdldFUoKSkgKSApCisgJiYgKCAodGhpcy5nZXREOTAoKT0zRD0zRGNhc3RPdGhlci5nZXRE
OTAoKSkgfHwgKCB0aGlzLmdldEQ5MCgpIT0zRG51bGwgJj0KJiBjYXN0T3RoZXIuZ2V0RDkwKCkh
PTNEbnVsbCAmJiB0aGlzLmdldEQ5MCgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0RDkwKCkpICkgKQor
ICYmICggKHRoaXMuZ2V0RDg0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RDg0KCkpIHx8ICggdGhpcy5n
ZXREODQoKSE9M0RudWxsICY9CiYgY2FzdE90aGVyLmdldEQ4NCgpIT0zRG51bGwgJiYgdGhpcy5n
ZXREODQoKS5lcXVhbHMoY2FzdE90aGVyLmdldEQ4NCgpKSApICkKKyAmJiAoICh0aGlzLmdldEQ4
MCgpPTNEPTNEY2FzdE90aGVyLmdldEQ4MCgpKSB8fCAoIHRoaXMuZ2V0RDgwKCkhPTNEbnVsbCAm
PQomIGNhc3RPdGhlci5nZXREODAoKSE9M0RudWxsICYmIHRoaXMuZ2V0RDgwKCkuZXF1YWxzKGNh
c3RPdGhlci5nZXREODAoKSkgKSApCisgJiYgKCAodGhpcy5nZXRENzUoKT0zRD0zRGNhc3RPdGhl
ci5nZXRENzUoKSkgfHwgKCB0aGlzLmdldEQ3NSgpIT0zRG51bGwgJj0KJiBjYXN0T3RoZXIuZ2V0
RDc1KCkhPTNEbnVsbCAmJiB0aGlzLmdldEQ3NSgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0RDc1KCkp
ICkgKQorICYmICggKHRoaXMuZ2V0RDcwKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RDcwKCkpIHx8ICgg
dGhpcy5nZXRENzAoKSE9M0RudWxsICY9CiYgY2FzdE90aGVyLmdldEQ3MCgpIT0zRG51bGwgJiYg
dGhpcy5nZXRENzAoKS5lcXVhbHMoY2FzdE90aGVyLmdldEQ3MCgpKSApICkKKyAmJiAoICh0aGlz
LmdldEQ2MCgpPTNEPTNEY2FzdE90aGVyLmdldEQ2MCgpKSB8fCAoIHRoaXMuZ2V0RDYwKCkhPTNE
bnVsbCAmPQomIGNhc3RPdGhlci5nZXRENjAoKSE9M0RudWxsICYmIHRoaXMuZ2V0RDYwKCkuZXF1
YWxzKGNhc3RPdGhlci5nZXRENjAoKSkgKSApCisgJiYgKCAodGhpcy5nZXRENTAoKT0zRD0zRGNh
c3RPdGhlci5nZXRENTAoKSkgfHwgKCB0aGlzLmdldEQ1MCgpIT0zRG51bGwgJj0KJiBjYXN0T3Ro
ZXIuZ2V0RDUwKCkhPTNEbnVsbCAmJiB0aGlzLmdldEQ1MCgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0
RDUwKCkpICkgKQorICYmICggKHRoaXMuZ2V0RDQwKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0RDQwKCkp
IHx8ICggdGhpcy5nZXRENDAoKSE9M0RudWxsICY9CiYgY2FzdE90aGVyLmdldEQ0MCgpIT0zRG51
bGwgJiYgdGhpcy5nZXRENDAoKS5lcXVhbHMoY2FzdE90aGVyLmdldEQ0MCgpKSApICkKKyAmJiAo
ICh0aGlzLmdldEQzMCgpPTNEPTNEY2FzdE90aGVyLmdldEQzMCgpKSB8fCAoIHRoaXMuZ2V0RDMw
KCkhPTNEbnVsbCAmPQomIGNhc3RPdGhlci5nZXREMzAoKSE9M0RudWxsICYmIHRoaXMuZ2V0RDMw
KCkuZXF1YWxzKGNhc3RPdGhlci5nZXREMzAoKSkgKSApCisgJiYgKCAodGhpcy5nZXREMjUoKT0z
RD0zRGNhc3RPdGhlci5nZXREMjUoKSkgfHwgKCB0aGlzLmdldEQyNSgpIT0zRG51bGwgJj0KJiBj
YXN0T3RoZXIuZ2V0RDI1KCkhPTNEbnVsbCAmJiB0aGlzLmdldEQyNSgpLmVxdWFscyhjYXN0T3Ro
ZXIuZ2V0RDI1KCkpICkgKQorICYmICggKHRoaXMuZ2V0RDIwKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0
RDIwKCkpIHx8ICggdGhpcy5nZXREMjAoKSE9M0RudWxsICY9CiYgY2FzdE90aGVyLmdldEQyMCgp
IT0zRG51bGwgJiYgdGhpcy5nZXREMjAoKS5lcXVhbHMoY2FzdE90aGVyLmdldEQyMCgpKSApICkK
KyAmJiAoICh0aGlzLmdldEQxNigpPTNEPTNEY2FzdE90aGVyLmdldEQxNigpKSB8fCAoIHRoaXMu
Z2V0RDE2KCkhPTNEbnVsbCAmPQomIGNhc3RPdGhlci5nZXREMTYoKSE9M0RudWxsICYmIHRoaXMu
Z2V0RDE2KCkuZXF1YWxzKGNhc3RPdGhlci5nZXREMTYoKSkgKSApCisgJiYgKCAodGhpcy5nZXRE
MTAoKT0zRD0zRGNhc3RPdGhlci5nZXREMTAoKSkgfHwgKCB0aGlzLmdldEQxMCgpIT0zRG51bGwg
Jj0KJiBjYXN0T3RoZXIuZ2V0RDEwKCkhPTNEbnVsbCAmJiB0aGlzLmdldEQxMCgpLmVxdWFscyhj
YXN0T3RoZXIuZ2V0RDEwKCkpICkgKQorICYmICggKHRoaXMuZ2V0RG1pbigpPTNEPTNEY2FzdE90
aGVyLmdldERtaW4oKSkgfHwgKCB0aGlzLmdldERtaW4oKSE9M0RudWw9CmwgJiYgY2FzdE90aGVy
LmdldERtaW4oKSE9M0RudWxsICYmIHRoaXMuZ2V0RG1pbigpLmVxdWFscyhjYXN0T3RoZXIuZ2V0
RG1pbj0KKCkpICkgKQorICYmICggKHRoaXMuZ2V0RHVyY2hkbWluKCk9M0Q9M0RjYXN0T3RoZXIu
Z2V0RHVyY2hkbWluKCkpIHx8ICggdGhpcy5nZXREdXI9CmNoZG1pbigpIT0zRG51bGwgJiYgY2Fz
dE90aGVyLmdldER1cmNoZG1pbigpIT0zRG51bGwgJiYgdGhpcy5nZXREdXJjaGRtaW4oKT0KLmVx
dWFscyhjYXN0T3RoZXIuZ2V0RHVyY2hkbWluKCkpICkgKQorICYmICggKHRoaXMuZ2V0RG1heCgp
PTNEPTNEY2FzdE90aGVyLmdldERtYXgoKSkgfHwgKCB0aGlzLmdldERtYXgoKSE9M0RudWw9Cmwg
JiYgY2FzdE90aGVyLmdldERtYXgoKSE9M0RudWxsICYmIHRoaXMuZ2V0RG1heCgpLmVxdWFscyhj
YXN0T3RoZXIuZ2V0RG1heD0KKCkpICkgKQorICYmICggKHRoaXMuZ2V0RHVyY2hkbWF4KCk9M0Q9
M0RjYXN0T3RoZXIuZ2V0RHVyY2hkbWF4KCkpIHx8ICggdGhpcy5nZXREdXI9CmNoZG1heCgpIT0z
RG51bGwgJiYgY2FzdE90aGVyLmdldER1cmNoZG1heCgpIT0zRG51bGwgJiYgdGhpcy5nZXREdXJj
aGRtYXgoKT0KLmVxdWFscyhjYXN0T3RoZXIuZ2V0RHVyY2hkbWF4KCkpICkgKQorICYmICggKHRo
aXMuZ2V0Tkdlc2NoaWViKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0Tkdlc2NoaWViKCkpIHx8ICggdGhp
cy5nZXROR2U9CnNjaGllYigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE5HZXNjaGllYigpIT0z
RG51bGwgJiYgdGhpcy5nZXROR2VzY2hpZWIoKT0KLmVxdWFscyhjYXN0T3RoZXIuZ2V0Tkdlc2No
aWViKCkpICkgKQorICYmICggKHRoaXMuZ2V0TlZpZWxwa3QoKT0zRD0zRGNhc3RPdGhlci5nZXRO
VmllbHBrdCgpKSB8fCAoIHRoaXMuZ2V0TlZpZWw9CnBrdCgpIT0zRG51bGwgJiYgY2FzdE90aGVy
LmdldE5WaWVscGt0KCkhPTNEbnVsbCAmJiB0aGlzLmdldE5WaWVscGt0KCkuZXF1YT0KbHMoY2Fz
dE90aGVyLmdldE5WaWVscGt0KCkpICkgKQorICYmICggKHRoaXMuZ2V0U3lzRGF0ZSgpPTNEPTNE
Y2FzdE90aGVyLmdldFN5c0RhdGUoKSkgfHwgKCB0aGlzLmdldFN5c0RhdGU9CigpIT0zRG51bGwg
JiYgY2FzdE90aGVyLmdldFN5c0RhdGUoKSE9M0RudWxsICYmIHRoaXMuZ2V0U3lzRGF0ZSgpLmVx
dWFscyhjYT0Kc3RPdGhlci5nZXRTeXNEYXRlKCkpICkgKQorICYmICggKHRoaXMuZ2V0QmVtZXJr
dW5nKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0QmVtZXJrdW5nKCkpIHx8ICggdGhpcy5nZXRCZW09CmVy
a3VuZygpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldEJlbWVya3VuZygpIT0zRG51bGwgJiYgdGhp
cy5nZXRCZW1lcmt1bmcoKT0KLmVxdWFscyhjYXN0T3RoZXIuZ2V0QmVtZXJrdW5nKCkpICkgKQor
ICYmICggKHRoaXMuZ2V0TGFzdHVwZGF0ZWQoKT0zRD0zRGNhc3RPdGhlci5nZXRMYXN0dXBkYXRl
ZCgpKSB8fCAoIHRoaXMuZ2U9CnRMYXN0dXBkYXRlZCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdl
dExhc3R1cGRhdGVkKCkhPTNEbnVsbCAmJiB0aGlzLmdldExhcz0KdHVwZGF0ZWQoKS5lcXVhbHMo
Y2FzdE90aGVyLmdldExhc3R1cGRhdGVkKCkpICkgKQorICYmICggKHRoaXMuZ2V0S20oKT0zRD0z
RGNhc3RPdGhlci5nZXRLbSgpKSB8fCAoIHRoaXMuZ2V0S20oKSE9M0RudWxsICYmIGM9CmFzdE90
aGVyLmdldEttKCkhPTNEbnVsbCAmJiB0aGlzLmdldEttKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRL
bSgpKSApICkKKyAmJiAoICh0aGlzLmdldEdsb3RhYnN0b2Zmc2V0KCk9M0Q9M0RjYXN0T3RoZXIu
Z2V0R2xvdGFic3RvZmZzZXQoKSkgfHwgKCB0PQpoaXMuZ2V0R2xvdGFic3RvZmZzZXQoKSE9M0Ru
dWxsICYmIGNhc3RPdGhlci5nZXRHbG90YWJzdG9mZnNldCgpIT0zRG51bGwgJiY9CiB0aGlzLmdl
dEdsb3RhYnN0b2Zmc2V0KCkuZXF1YWxzKGNhc3RPdGhlci5nZXRHbG90YWJzdG9mZnNldCgpKSAp
ICkKKyAmJiAoICh0aGlzLmdldFNsb3RhYnN0b2Zmc2V0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0U2xv
dGFic3RvZmZzZXQoKSkgfHwgKCB0PQpoaXMuZ2V0U2xvdGFic3RvZmZzZXQoKSE9M0RudWxsICYm
IGNhc3RPdGhlci5nZXRTbG90YWJzdG9mZnNldCgpIT0zRG51bGwgJiY9CiB0aGlzLmdldFNsb3Rh
YnN0b2Zmc2V0KCkuZXF1YWxzKGNhc3RPdGhlci5nZXRTbG90YWJzdG9mZnNldCgpKSApICkKKyAm
JiAoICh0aGlzLmdldEdicmVpdGV2b25saW5rcygpPTNEPTNEY2FzdE90aGVyLmdldEdicmVpdGV2
b25saW5rcygpKSB8fCAoPQogdGhpcy5nZXRHYnJlaXRldm9ubGlua3MoKSE9M0RudWxsICYmIGNh
c3RPdGhlci5nZXRHYnJlaXRldm9ubGlua3MoKSE9M0RudWw9CmwgJiYgdGhpcy5nZXRHYnJlaXRl
dm9ubGlua3MoKS5lcXVhbHMoY2FzdE90aGVyLmdldEdicmVpdGV2b25saW5rcygpKSApICkKKyAm
JiAoICh0aGlzLmdldEdicmVpdGViaXNsaW5rcygpPTNEPTNEY2FzdE90aGVyLmdldEdicmVpdGVi
aXNsaW5rcygpKSB8fCAoPQogdGhpcy5nZXRHYnJlaXRlYmlzbGlua3MoKSE9M0RudWxsICYmIGNh
c3RPdGhlci5nZXRHYnJlaXRlYmlzbGlua3MoKSE9M0RudWw9CmwgJiYgdGhpcy5nZXRHYnJlaXRl
YmlzbGlua3MoKS5lcXVhbHMoY2FzdE90aGVyLmdldEdicmVpdGViaXNsaW5rcygpKSApICkKKyAm
JiAoICh0aGlzLmdldFN0YW5hbWUoKT0zRD0zRGNhc3RPdGhlci5nZXRTdGFuYW1lKCkpIHx8ICgg
dGhpcy5nZXRTdGFuYW1lPQooKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRTdGFuYW1lKCkhPTNE
bnVsbCAmJiB0aGlzLmdldFN0YW5hbWUoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0U3RhbmFtZSgp
KSApICkKKyAmJiAoICh0aGlzLmdldFN0YWttKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0U3Rha20oKSkg
fHwgKCB0aGlzLmdldFN0YWttKCkhPTNEPQpudWxsICYmIGNhc3RPdGhlci5nZXRTdGFrbSgpIT0z
RG51bGwgJiYgdGhpcy5nZXRTdGFrbSgpLmVxdWFscyhjYXN0T3RoZXIuZ2U9CnRTdGFrbSgpKSAp
ICkKKyAmJiAoICh0aGlzLmdldEdld2Flc3NlcmlkKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0R2V3YWVz
c2VyaWQoKSkgfHwgKCB0aGlzLmdlPQp0R2V3YWVzc2VyaWQoKSE9M0RudWxsICYmIGNhc3RPdGhl
ci5nZXRHZXdhZXNzZXJpZCgpIT0zRG51bGwgJiYgdGhpcy5nZXRHZXc9CmFlc3NlcmlkKCkuZXF1
YWxzKGNhc3RPdGhlci5nZXRHZXdhZXNzZXJpZCgpKSApICkKKyAmJiAoICh0aGlzLmdldEdld25h
bWUoKT0zRD0zRGNhc3RPdGhlci5nZXRHZXduYW1lKCkpIHx8ICggdGhpcy5nZXRHZXduYW1lPQoo
KSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRHZXduYW1lKCkhPTNEbnVsbCAmJiB0aGlzLmdldEdl
d25hbWUoKS5lcXVhbHMoY2E9CnN0T3RoZXIuZ2V0R2V3bmFtZSgpKSApICkKKyAmJiAoICh0aGlz
LmdldEJlenVnc3BlZ2VsaWQoKT0zRD0zRGNhc3RPdGhlci5nZXRCZXp1Z3NwZWdlbGlkKCkpIHx8
ICggdGhpPQpzLmdldEJlenVnc3BlZ2VsaWQoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRCZXp1
Z3NwZWdlbGlkKCkhPTNEbnVsbCAmJiB0aGk9CnMuZ2V0QmV6dWdzcGVnZWxpZCgpLmVxdWFscyhj
YXN0T3RoZXIuZ2V0QmV6dWdzcGVnZWxpZCgpKSApICk7CisgICB9CisKKyAgIHB1YmxpYyBpbnQg
aGFzaENvZGUoKSB7CisgICAgICAgICBpbnQgcmVzdWx0ID0zRCAxNzsKKworICAgICAgICAgcmVz
dWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWVzc3VuZ2lkKCkgPTNEPTNEIG51bGwgPyAwIDog
dGhpcy49CmdldE1lc3N1bmdpZCgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0Qg
MzcgKiByZXN1bHQgKyAoIGdldFN0YXRpb25pZCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuPQpn
ZXRTdGF0aW9uaWQoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVz
dWx0ICsgKCBnZXREYXR1bSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0RD0KYXR1bSgpLmhh
c2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEhwZWls
dW5naWQoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzPQouZ2V0SHBlaWx1bmdpZCgpLmhhc2hDb2Rl
KCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1wZWlsdW5naWQo
KSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzPQouZ2V0TXBlaWx1bmdpZCgpLmhhc2hDb2RlKCkgKTsK
KyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEdmYWVuZ2VyaWQoKSA9M0Q9
M0QgbnVsbCA/IDAgOiB0aGlzPQouZ2V0R2ZhZW5nZXJpZCgpLmhhc2hDb2RlKCkgKTsKKyAgICAg
ICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEdzaWVic2F0emlkKCkgPTNEPTNEIG51
bGwgPyAwIDogdGhpPQpzLmdldEdzaWVic2F0emlkKCkuaGFzaENvZGUoKSApOworICAgICAgICAg
cmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWVzc25yKCkgPTNEPTNEIG51bGwgPyAwIDog
dGhpcy5nZXQ9Ck1lc3NucigpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcg
KiByZXN1bHQgKyAoIGdldEZndWUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEZnPQp1ZSgp
Lmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFVo
cnZvbigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0PQpVaHJ2b24oKS5oYXNoQ29kZSgpICk7
CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRVaHJiaXMoKSA9M0Q9M0Qg
bnVsbCA/IDAgOiB0aGlzLmdldD0KVWhyYmlzKCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVz
dWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0V3NwY20oKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlz
LmdldFc9CnNwY20oKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVz
dWx0ICsgKCBnZXRRQnBlZ2VsKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFFCcGVnZWwo
KS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRX
c3BubigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0Vz0Kc3BubigpLmhhc2hDb2RlKCkgKTsK
KyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEllKCkgPTNEPTNEIG51bGwg
PyAwIDogdGhpcy5nZXRJZSgpPQouaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAz
NyAqIHJlc3VsdCArICggZ2V0V3RlbXAoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldFc9CnRl
bXAoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBn
ZXRHYnJlaXRlKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdEdicmVpdGUoKS5oYXNoQ29k
ZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRHYnJlaXRldm9u
KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcz0KLmdldEdicmVpdGV2b24oKS5oYXNoQ29kZSgpICk7
CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRHYnJlaXRlYmlzKCkgPTNE
PTNEIG51bGwgPyAwIDogdGhpcz0KLmdldEdicmVpdGViaXMoKS5oYXNoQ29kZSgpICk7CisgICAg
ICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRUZ2VzY2hpZWJlKCkgPTNEPTNEIG51
bGwgPyAwIDogdGhpcz0KLmdldFRnZXNjaGllYmUoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICBy
ZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRUc2FuZCgpID0zRD0zRCBudWxsID8gMCA6IHRo
aXMuZ2V0VD0Kc2FuZCgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiBy
ZXN1bHQgKyAoIGdldFRzY2h3ZWIoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0VHNjaHdl
YigpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdl
dENzY2h3ZWIoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0Q3NjaHdlYigpLmhhc2hDb2Rl
KCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFVmZXJsaWFic3Qo
KSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzPQouZ2V0VWZlcmxpYWJzdCgpLmhhc2hDb2RlKCkgKTsK
KyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFVmZXJyZWFic3QoKSA9M0Q9
M0QgbnVsbCA/IDAgOiB0aGlzPQouZ2V0VWZlcnJlYWJzdCgpLmhhc2hDb2RlKCkgKTsKKyAgICAg
ICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFEoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0
aGlzLmdldFEoKS5oPQphc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1
bHQgKyAoIGdldEFIcGVpbCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0PQpBSHBlaWwoKS5o
YXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRBTXBl
aWwoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldD0KQU1wZWlsKCkuaGFzaENvZGUoKSApOwor
ICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0QigpID0zRD0zRCBudWxsID8g
MCA6IHRoaXMuZ2V0QigpLmg9CmFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAq
IHJlc3VsdCArICggZ2V0SG0oKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEhtKCk9Ci5oYXNo
Q29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRWbSgpID0z
RD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0Vm0oKT0KLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJl
c3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFZzb2hsZSgpID0zRD0zRCBudWxsID8gMCA6IHRo
aXMuZ2V0PQpWc29obGUoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICog
cmVzdWx0ICsgKCBnZXRUYXUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldFRhdT0KKCkuaGFz
aENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0VGF1digp
ID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0VGE9CnV2KCkuaGFzaENvZGUoKSApOworICAgICAg
ICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0VGVpbFEoKSA9M0Q9M0QgbnVsbCA/IDAg
OiB0aGlzLmdldFQ9CmVpbFEoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3
ICogcmVzdWx0ICsgKCBnZXRUZWlsQUhwZWlsKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcz0KLmdl
dFRlaWxBSHBlaWwoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVz
dWx0ICsgKCBnZXRUZWlsQU1wZWlsKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcz0KLmdldFRlaWxB
TXBlaWwoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsg
KCBnZXRUZWlsQigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0VD0KZWlsQigpLmhhc2hDb2Rl
KCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFRlaWxIbSgpID0z
RD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0PQpUZWlsSG0oKS5oYXNoQ29kZSgpICk7CisgICAgICAg
ICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRUZWlsVm0oKSA9M0Q9M0QgbnVsbCA/IDAg
OiB0aGlzLmdldD0KVGVpbFZtKCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAz
NyAqIHJlc3VsdCArICggZ2V0VGVpbFZzb2hsZSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXM9Ci5n
ZXRUZWlsVnNvaGxlKCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJl
c3VsdCArICggZ2V0VGVpbFRhdSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRUZWlsVGF1
KCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0
VGVpbFRhdXYoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0VGVpbFRhdXYoKS5oYXNoQ29k
ZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNaXR0ZWx0eXAo
KSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLj0KZ2V0TWl0dGVsdHlwKCkuaGFzaENvZGUoKSApOwor
ICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0RG0oKSA9M0Q9M0QgbnVsbCA/
IDAgOiB0aGlzLmdldERtKCk9Ci5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3
ICogcmVzdWx0ICsgKCBnZXRTaygpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0U2soKT0KLmhh
c2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFNvKCkg
PTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRTbygpPQouaGFzaENvZGUoKSApOworICAgICAgICAg
cmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0VSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMu
Z2V0VSgpLmg9CmFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCAr
ICggZ2V0RDkwKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXREOTA9CigpLmhhc2hDb2RlKCkg
KTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEQ4NCgpID0zRD0zRCBu
dWxsID8gMCA6IHRoaXMuZ2V0RDg0PQooKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQg
PTNEIDM3ICogcmVzdWx0ICsgKCBnZXREODAoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEQ4
MD0KKCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICgg
Z2V0RDc1KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRENzU9CigpLmhhc2hDb2RlKCkgKTsK
KyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEQ3MCgpID0zRD0zRCBudWxs
ID8gMCA6IHRoaXMuZ2V0RDcwPQooKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNE
IDM3ICogcmVzdWx0ICsgKCBnZXRENjAoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEQ2MD0K
KCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0
RDUwKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRENTA9CigpLmhhc2hDb2RlKCkgKTsKKyAg
ICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEQ0MCgpID0zRD0zRCBudWxsID8g
MCA6IHRoaXMuZ2V0RDQwPQooKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3
ICogcmVzdWx0ICsgKCBnZXREMzAoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEQzMD0KKCku
aGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0RDI1
KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXREMjU9CigpLmhhc2hDb2RlKCkgKTsKKyAgICAg
ICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEQyMCgpID0zRD0zRCBudWxsID8gMCA6
IHRoaXMuZ2V0RDIwPQooKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICog
cmVzdWx0ICsgKCBnZXREMTYoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEQxNj0KKCkuaGFz
aENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0RDEwKCkg
PTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXREMTA9CigpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAg
IHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldERtaW4oKSA9M0Q9M0QgbnVsbCA/IDAgOiB0
aGlzLmdldERtPQppbigpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiBy
ZXN1bHQgKyAoIGdldER1cmNoZG1pbigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuPQpnZXREdXJj
aGRtaW4oKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsg
KCBnZXREbWF4KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXREbT0KYXgoKS5oYXNoQ29kZSgp
ICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXREdXJjaGRtYXgoKSA9
M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLj0KZ2V0RHVyY2hkbWF4KCkuaGFzaENvZGUoKSApOworICAg
ICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0Tkdlc2NoaWViKCkgPTNEPTNEIG51
bGwgPyAwIDogdGhpcy49CmdldE5HZXNjaGllYigpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJl
c3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE5WaWVscGt0KCkgPTNEPTNEIG51bGwgPyAwIDog
dGhpcy5nPQpldE5WaWVscGt0KCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAz
NyAqIHJlc3VsdCArICggZ2V0U3lzRGF0ZSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRT
eXNEYXRlKCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCAr
ICggZ2V0QmVtZXJrdW5nKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy49CmdldEJlbWVya3VuZygp
Lmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldExh
c3R1cGRhdGVkKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpPQpzLmdldExhc3R1cGRhdGVkKCkuaGFz
aENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0S20oKSA9
M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldEttKCk9Ci5oYXNoQ29kZSgpICk7CisgICAgICAgICBy
ZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRHbG90YWJzdG9mZnNldCgpID0zRD0zRCBudWxs
ID8gMCA6ID0KdGhpcy5nZXRHbG90YWJzdG9mZnNldCgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAg
IHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFNsb3RhYnN0b2Zmc2V0KCkgPTNEPTNEIG51
bGwgPyAwIDogPQp0aGlzLmdldFNsb3RhYnN0b2Zmc2V0KCkuaGFzaENvZGUoKSApOworICAgICAg
ICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0R2JyZWl0ZXZvbmxpbmtzKCkgPTNEPTNE
IG51bGwgPyAwIDo9CiB0aGlzLmdldEdicmVpdGV2b25saW5rcygpLmhhc2hDb2RlKCkgKTsKKyAg
ICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEdicmVpdGViaXNsaW5rcygpID0z
RD0zRCBudWxsID8gMCA6PQogdGhpcy5nZXRHYnJlaXRlYmlzbGlua3MoKS5oYXNoQ29kZSgpICk7
CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRTdGFuYW1lKCkgPTNEPTNE
IG51bGwgPyAwIDogdGhpcy5nZT0KdFN0YW5hbWUoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICBy
ZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRTdGFrbSgpID0zRD0zRCBudWxsID8gMCA6IHRo
aXMuZ2V0Uz0KdGFrbSgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiBy
ZXN1bHQgKyAoIGdldEdld2Flc3NlcmlkKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpPQpzLmdldEdl
d2Flc3NlcmlkKCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3Vs
dCArICggZ2V0R2V3bmFtZSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRHZXduYW1lKCku
aGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0QmV6
dWdzcGVnZWxpZCgpID0zRD0zRCBudWxsID8gMCA6IHQ9Cmhpcy5nZXRCZXp1Z3NwZWdlbGlkKCku
aGFzaENvZGUoKSApOworICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgIH0KK30KZGlmZiAtciBi
YzRlMWJmMjYyMjcgLXIgMWU2OGVjYTI2YjhhIGJhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2
ZTRlbGVtZW50PQpzL3JpdmVyL3NlZGRiL21vZGVsL01lc3N1bmd1ZmVyYmV6dWcuamF2YQotLS0g
L2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9iYWNrZW5kL3Ny
Yy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvTWVzc3VuZ3Vm
ZXI9CmJlenVnLmphdmEJTW9uIEFwciAyOSAxMTozMzowMSAyMDEzICswMjAwCkBAIC0wLDAgKzEs
NTMgQEAKKy8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0
IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCisgKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBi
eSBJbnRldmF0aW9uIEdtYkgKKyAqCisgKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRl
ciB0aGUgR05VIEFHUEwgKD49M0R2Myk9MjAKKyAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkg
Tk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUKKyAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGgg
RGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy49MjAKKyAqLworCitwYWNrYWdlIG9yZy5k
aXZlNGVsZW1lbnRzLnNlZGRiLm1vZGVsOworLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6
NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQorCisKK2ltcG9ydCBqYXZheC5wZXJzaXN0
ZW5jZS5BdHRyaWJ1dGVPdmVycmlkZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5BdHRyaWJ1
dGVPdmVycmlkZXM7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLkVtYmVkZGVkSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50
aXR5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOworCisvKioKKyAqIE1lc3N1bmd1
ZmVyYmV6dWcgZ2VuZXJhdGVkIGJ5IGhibTJqYXZhCisgKi8KK0BFbnRpdHkKK0BUYWJsZShuYW1l
PTNEIk1FU1NVTkdVRkVSQkVaVUciCisgICAgLHNjaGVtYT0zRCJTRUREQiIKKykKK3B1YmxpYyBj
bGFzcyBNZXNzdW5ndWZlcmJlenVnICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsK
KworCisgICAgIHByaXZhdGUgTWVzc3VuZ3VmZXJiZXp1Z0lkIGlkOworCisgICAgcHVibGljIE1l
c3N1bmd1ZmVyYmV6dWcoKSB7CisgICAgfQorCisgICAgcHVibGljIE1lc3N1bmd1ZmVyYmV6dWco
TWVzc3VuZ3VmZXJiZXp1Z0lkIGlkKSB7CisgICAgICAgdGhpcy5pZCA9M0QgaWQ7CisgICAgfQor
CisgICAgIEBFbWJlZGRlZElkCisKKworICAgIEBBdHRyaWJ1dGVPdmVycmlkZXMoIHsKKyAgICAg
ICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWVzc3VuZ2lkIiwgY29sdW1uPTNEQENvbHVt
bihuYW1lPTNEIk1FPQpTU1VOR0lEIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMTEs
IHNjYWxlPTNEMCkgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QidWZlcmlz
dGxpbmtzIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEPQoiVUZFUklTVExJTktTIiwgbnVsbGFi
bGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMSwgc2NhbGU9M0QwKSApLAorICAgICAgICBAQXR0cmli
dXRlT3ZlcnJpZGUobmFtZT0zRCJobWFic3QiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiSE1B
QlM9ClQiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpICkgfSApCisgICAgcHVibGljIE1lc3N1
bmd1ZmVyYmV6dWdJZCBnZXRJZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaWQ7CisgICAgfQor
CisgICAgcHVibGljIHZvaWQgc2V0SWQoTWVzc3VuZ3VmZXJiZXp1Z0lkIGlkKSB7CisgICAgICAg
IHRoaXMuaWQgPTNEIGlkOworICAgIH0KK30KZGlmZiAtciBiYzRlMWJmMjYyMjcgLXIgMWU2OGVj
YTI2YjhhIGJhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50PQpzL3JpdmVyL3Nl
ZGRiL21vZGVsL01lc3N1bmd1ZmVyYmV6dWdJZC5qYXZhCi0tLSAvZGV2L251bGwJVGh1IEphbiAw
MSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL2JhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2
ZTRlbGVtZW50cy9yaXZlci9zZWRkYi9tb2RlbC9NZXNzdW5ndWZlcj0KYmV6dWdJZC5qYXZhCU1v
biBBcHIgMjkgMTE6MzM6MDEgMjAxMyArMDIwMApAQCAtMCwwICsxLDkyIEBACisvKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9
QTRzc2Vyaz0KdW5kZQorICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJI
CisgKgorICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+
PTNEdjMpPTIwCisgKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVj
ayBvdXQgdGhlCisgKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2
ZXIgZm9yIGRldGFpbHMuPTIwCisgKi8KKworcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5zZWRk
Yi5tb2RlbDsKKy8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBU
b29scyAzLjQuMC5DUjEKKworCitpbXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7CitpbXBvcnQg
amF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVtYmVk
ZGFibGU7CisKKy8qKgorICogTWVzc3VuZ3VmZXJiZXp1Z0lkIGdlbmVyYXRlZCBieSBoYm0yamF2
YQorICovCitARW1iZWRkYWJsZQorcHVibGljIGNsYXNzIE1lc3N1bmd1ZmVyYmV6dWdJZCAgaW1w
bGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7CisKKworICAgICBwcml2YXRlIGxvbmcgbWVz
c3VuZ2lkOworICAgICBwcml2YXRlIGJvb2xlYW4gdWZlcmlzdGxpbmtzOworICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgaG1hYnN0OworCisgICAgcHVibGljIE1lc3N1bmd1ZmVyYmV6dWdJZCgpIHsK
KyAgICB9CisKKyAgICBwdWJsaWMgTWVzc3VuZ3VmZXJiZXp1Z0lkKGxvbmcgbWVzc3VuZ2lkLCBi
b29sZWFuIHVmZXJpc3RsaW5rcykgeworICAgICAgICB0aGlzLm1lc3N1bmdpZCA9M0QgbWVzc3Vu
Z2lkOworICAgICAgICB0aGlzLnVmZXJpc3RsaW5rcyA9M0QgdWZlcmlzdGxpbmtzOworICAgIH0K
KyAgICBwdWJsaWMgTWVzc3VuZ3VmZXJiZXp1Z0lkKGxvbmcgbWVzc3VuZ2lkLCBib29sZWFuIHVm
ZXJpc3RsaW5rcywgQmlnRGVjPQppbWFsIGhtYWJzdCkgeworICAgICAgIHRoaXMubWVzc3VuZ2lk
ID0zRCBtZXNzdW5naWQ7CisgICAgICAgdGhpcy51ZmVyaXN0bGlua3MgPTNEIHVmZXJpc3RsaW5r
czsKKyAgICAgICB0aGlzLmhtYWJzdCA9M0QgaG1hYnN0OworICAgIH0KKworCisKKyAgICBAQ29s
dW1uKG5hbWU9M0QiTUVTU1VOR0lEIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMTEs
IHNjYWxlPTNEPQowKQorICAgIHB1YmxpYyBsb25nIGdldE1lc3N1bmdpZCgpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMubWVzc3VuZ2lkOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1lc3N1
bmdpZChsb25nIG1lc3N1bmdpZCkgeworICAgICAgICB0aGlzLm1lc3N1bmdpZCA9M0QgbWVzc3Vu
Z2lkOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlVGRVJJU1RMSU5LUyIsIG51bGxh
YmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDEsIHNjYWxlPQo9M0QwKQorICAgIHB1YmxpYyBib29s
ZWFuIGlzVWZlcmlzdGxpbmtzKCkgeworICAgICAgICByZXR1cm4gdGhpcy51ZmVyaXN0bGlua3M7
CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VWZlcmlzdGxpbmtzKGJvb2xlYW4gdWZlcmlz
dGxpbmtzKSB7CisgICAgICAgIHRoaXMudWZlcmlzdGxpbmtzID0zRCB1ZmVyaXN0bGlua3M7Cisg
ICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiSE1BQlNUIiwgcHJlY2lzaW9uPTNEOCwgc2Nh
bGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEhtYWJzdCgpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuaG1hYnN0OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEhtYWJzdChCaWdE
ZWNpbWFsIGhtYWJzdCkgeworICAgICAgICB0aGlzLmhtYWJzdCA9M0QgaG1hYnN0OworICAgIH0K
KworCisgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG90aGVyKSB7CisgICAgICAgICBp
ZiAoICh0aGlzID0zRD0zRCBvdGhlciApICkgcmV0dXJuIHRydWU7CisgICAgICAgICBpZiAoIChv
dGhlciA9M0Q9M0QgbnVsbCApICkgcmV0dXJuIGZhbHNlOworICAgICAgICAgaWYgKCAhKG90aGVy
IGluc3RhbmNlb2YgTWVzc3VuZ3VmZXJiZXp1Z0lkKSApIHJldHVybiBmYWxzZTsKKyAgICAgICAg
IE1lc3N1bmd1ZmVyYmV6dWdJZCBjYXN0T3RoZXIgPTNEICggTWVzc3VuZ3VmZXJiZXp1Z0lkICkg
b3RoZXI7CisKKyAgICAgICAgIHJldHVybiAodGhpcy5nZXRNZXNzdW5naWQoKT0zRD0zRGNhc3RP
dGhlci5nZXRNZXNzdW5naWQoKSkKKyAmJiAodGhpcy5pc1VmZXJpc3RsaW5rcygpPTNEPTNEY2Fz
dE90aGVyLmlzVWZlcmlzdGxpbmtzKCkpCisgJiYgKCAodGhpcy5nZXRIbWFic3QoKT0zRD0zRGNh
c3RPdGhlci5nZXRIbWFic3QoKSkgfHwgKCB0aGlzLmdldEhtYWJzdCgpIT0KPTNEbnVsbCAmJiBj
YXN0T3RoZXIuZ2V0SG1hYnN0KCkhPTNEbnVsbCAmJiB0aGlzLmdldEhtYWJzdCgpLmVxdWFscyhj
YXN0T3RoPQplci5nZXRIbWFic3QoKSkgKSApOworICAgfQorCisgICBwdWJsaWMgaW50IGhhc2hD
b2RlKCkgeworICAgICAgICAgaW50IHJlc3VsdCA9M0QgMTc7CisKKyAgICAgICAgIHJlc3VsdCA9
M0QgMzcgKiByZXN1bHQgKyAoaW50KSB0aGlzLmdldE1lc3N1bmdpZCgpOworICAgICAgICAgcmVz
dWx0ID0zRCAzNyAqIHJlc3VsdCArICh0aGlzLmlzVWZlcmlzdGxpbmtzKCk/MTowKTsKKyAgICAg
ICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEhtYWJzdCgpID0zRD0zRCBudWxsID8g
MCA6IHRoaXMuZ2V0PQpIbWFic3QoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgfQorfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2Vu
ZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMvcml2ZXIvc2VkZGIvbW9kZWwvTXBl
aWxwdW5rdC5qYXZhCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAw
CisrKyBiL2JhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZlci9zZWRk
Yi9tb2RlbC9NcGVpbHB1bmt0Lj0KamF2YQlNb24gQXByIDI5IDExOjMzOjAxIDIwMTMgKzAyMDAK
QEAgLTAsMCArMSw5MiBAQAorLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1
bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKKyAqIFNvZnR3YXJlIGVu
Z2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAorICoKKyAqIFRoaXMgZmlsZSBpcyBGcmVlIFNv
ZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAorICogYW5kIGNvbWVzIHdpdGgg
QUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQorICogZG9jdW1lbnRhdGlvbiBj
b21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAorICovCisKK3Bh
Y2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7CisvLyBHZW5lcmF0ZWQgMTQuMDYu
MjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCisKKworaW1wb3J0IGph
dmEubWF0aC5CaWdEZWNpbWFsOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0ZU92
ZXJyaWRlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0ZU92ZXJyaWRlczsKK2lt
cG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2Uu
RW1iZWRkZWRJZDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7CitpbXBvcnQgamF2
YXgucGVyc2lzdGVuY2UuRmV0Y2hUeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkpvaW5D
b2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTWFueVRvT25lOworaW1wb3J0IGphdmF4
LnBlcnNpc3RlbmNlLlRhYmxlOworCisvKioKKyAqIE1wZWlscHVua3QgZ2VuZXJhdGVkIGJ5IGhi
bTJqYXZhCisgKi8KK0BFbnRpdHkKK0BUYWJsZShuYW1lPTNEIk1QRUlMUFVOS1QiCisgICAgLHNj
aGVtYT0zRCJTRUREQiIKKykKK3B1YmxpYyBjbGFzcyBNcGVpbHB1bmt0ICBpbXBsZW1lbnRzIGph
dmEuaW8uU2VyaWFsaXphYmxlIHsKKworCisgICAgIHByaXZhdGUgTXBlaWxwdW5rdElkIGlkOwor
ICAgICBwcml2YXRlIE1wZWlsdW5nIG1wZWlsdW5nOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
eTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHo7CisKKyAgICBwdWJsaWMgTXBlaWxwdW5rdCgp
IHsKKyAgICB9CisKKyAgICBwdWJsaWMgTXBlaWxwdW5rdChNcGVpbHB1bmt0SWQgaWQsIE1wZWls
dW5nIG1wZWlsdW5nLCBCaWdEZWNpbWFsIHksIEJpPQpnRGVjaW1hbCB6KSB7CisgICAgICAgdGhp
cy5pZCA9M0QgaWQ7CisgICAgICAgdGhpcy5tcGVpbHVuZyA9M0QgbXBlaWx1bmc7CisgICAgICAg
dGhpcy55ID0zRCB5OworICAgICAgIHRoaXMueiA9M0QgejsKKyAgICB9CisKKyAgICAgQEVtYmVk
ZGVkSWQKKworCisgICAgQEF0dHJpYnV0ZU92ZXJyaWRlcyggeworICAgICAgICBAQXR0cmlidXRl
T3ZlcnJpZGUobmFtZT0zRCJtcGVpbHVuZ2lkIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk09
ClBFSUxVTkdJRCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDAp
ICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInB1bmt0bnIiLCBjb2x1bW49
M0RAQ29sdW1uKG5hbWU9M0QiUFVOSz0KVE5SIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9u
PTNENSwgc2NhbGU9M0QwKSApIH0gKQorICAgIHB1YmxpYyBNcGVpbHB1bmt0SWQgZ2V0SWQoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLmlkOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldElk
KE1wZWlscHVua3RJZCBpZCkgeworICAgICAgICB0aGlzLmlkID0zRCBpZDsKKyAgICB9CisKK0BN
YW55VG9PbmUoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSkKKyAgICBASm9pbkNvbHVtbihuYW1lPTNE
Ik1QRUlMVU5HSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBpbnNlcnRhYmxlPTNEZmFsc2UsPQogdXBk
YXRhYmxlPTNEZmFsc2UpCisgICAgcHVibGljIE1wZWlsdW5nIGdldE1wZWlsdW5nKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy5tcGVpbHVuZzsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRN
cGVpbHVuZyhNcGVpbHVuZyBtcGVpbHVuZykgeworICAgICAgICB0aGlzLm1wZWlsdW5nID0zRCBt
cGVpbHVuZzsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJZIiwgbnVsbGFibGU9M0Rm
YWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdl
dFkoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQg
c2V0WShCaWdEZWNpbWFsIHkpIHsKKyAgICAgICAgdGhpcy55ID0zRCB5OworICAgIH0KKworCisg
ICAgQENvbHVtbihuYW1lPTNEIloiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q4LCBz
Y2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0WigpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuejsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRaKEJpZ0RlY2ltYWwgeikgewor
ICAgICAgICB0aGlzLnogPTNEIHo7CisgICAgfQorfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAx
ZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMvcml2
ZXIvc2VkZGIvbW9kZWwvTXBlaWxwdW5rdElkLmphdmEKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAx
IDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZl
NGVsZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVsL01wZWlscHVua3RJPQpkLmphdmEJTW9uIEFwciAy
OSAxMTozMzowMSAyMDEzICswMjAwCkBAIC0wLDAgKzEsNzMgQEAKKy8qIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJr
PQp1bmRlCisgKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgKKyAqCisg
KiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49M0R2Myk9
MjAKKyAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNrIG91dCB0
aGUKKyAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZlciBmb3Ig
ZGV0YWlscy49MjAKKyAqLworCitwYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnNlZGRiLm1vZGVs
OworLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMu
NC4wLkNSMQorCisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2
YXgucGVyc2lzdGVuY2UuRW1iZWRkYWJsZTsKKworLyoqCisgKiBNcGVpbHB1bmt0SWQgZ2VuZXJh
dGVkIGJ5IGhibTJqYXZhCisgKi8KK0BFbWJlZGRhYmxlCitwdWJsaWMgY2xhc3MgTXBlaWxwdW5r
dElkICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKKworCisgICAgIHByaXZhdGUg
bG9uZyBtcGVpbHVuZ2lkOworICAgICBwcml2YXRlIGludCBwdW5rdG5yOworCisgICAgcHVibGlj
IE1wZWlscHVua3RJZCgpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgTXBlaWxwdW5rdElkKGxvbmcg
bXBlaWx1bmdpZCwgaW50IHB1bmt0bnIpIHsKKyAgICAgICB0aGlzLm1wZWlsdW5naWQgPTNEIG1w
ZWlsdW5naWQ7CisgICAgICAgdGhpcy5wdW5rdG5yID0zRCBwdW5rdG5yOworICAgIH0KKworCisK
KyAgICBAQ29sdW1uKG5hbWU9M0QiTVBFSUxVTkdJRCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNp
c2lvbj0zRDExLCBzY2FsZT0KPTNEMCkKKyAgICBwdWJsaWMgbG9uZyBnZXRNcGVpbHVuZ2lkKCkg
eworICAgICAgICByZXR1cm4gdGhpcy5tcGVpbHVuZ2lkOworICAgIH0KKworICAgIHB1YmxpYyB2
b2lkIHNldE1wZWlsdW5naWQobG9uZyBtcGVpbHVuZ2lkKSB7CisgICAgICAgIHRoaXMubXBlaWx1
bmdpZCA9M0QgbXBlaWx1bmdpZDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJQVU5L
VE5SIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNENSwgc2NhbGU9M0QwKQorICAgIHB1
YmxpYyBpbnQgZ2V0UHVua3RucigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucHVua3RucjsKKyAg
ICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRQdW5rdG5yKGludCBwdW5rdG5yKSB7CisgICAgICAg
IHRoaXMucHVua3RuciA9M0QgcHVua3RucjsKKyAgICB9CisKKworICAgcHVibGljIGJvb2xlYW4g
ZXF1YWxzKE9iamVjdCBvdGhlcikgeworICAgICAgICAgaWYgKCAodGhpcyA9M0Q9M0Qgb3RoZXIg
KSApIHJldHVybiB0cnVlOworICAgICAgICAgaWYgKCAob3RoZXIgPTNEPTNEIG51bGwgKSApIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgIGlmICggIShvdGhlciBpbnN0YW5jZW9mIE1wZWlscHVua3RJ
ZCkgKSByZXR1cm4gZmFsc2U7CisgICAgICAgICBNcGVpbHB1bmt0SWQgY2FzdE90aGVyID0zRCAo
IE1wZWlscHVua3RJZCApIG90aGVyOworCisgICAgICAgICByZXR1cm4gKHRoaXMuZ2V0TXBlaWx1
bmdpZCgpPTNEPTNEY2FzdE90aGVyLmdldE1wZWlsdW5naWQoKSkKKyAmJiAodGhpcy5nZXRQdW5r
dG5yKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0UHVua3RucigpKTsKKyAgIH0KKworICAgcHVibGljIGlu
dCBoYXNoQ29kZSgpIHsKKyAgICAgICAgIGludCByZXN1bHQgPTNEIDE3OworCisgICAgICAgICBy
ZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKGludCkgdGhpcy5nZXRNcGVpbHVuZ2lkKCk7CisgICAg
ICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgdGhpcy5nZXRQdW5rdG5yKCk7CisgICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgfQorfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNh
MjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMvcml2ZXIvc2Vk
ZGIvbW9kZWwvTXBlaWx1bmcuamF2YQotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMAorKysgYi9iYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMv
cml2ZXIvc2VkZGIvbW9kZWwvTXBlaWx1bmcuamE9CnZhCU1vbiBBcHIgMjkgMTE6MzM6MDEgMjAx
MyArMDIwMApAQCAtMCwwICsxLDE0OCBAQAorLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAy
MDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKKyAqIFNv
ZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAorICoKKyAqIFRoaXMgZmlsZSBp
cyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAorICogYW5kIGNv
bWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQorICogZG9jdW1l
bnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAor
ICovCisKK3BhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7CisvLyBHZW5lcmF0
ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCisKKwor
aW1wb3J0IGphdmEubWF0aC5CaWdEZWNpbWFsOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1w
b3J0IGphdmEudXRpbC5IYXNoU2V0OworaW1wb3J0IGphdmEudXRpbC5TZXQ7CitpbXBvcnQgamF2
YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsK
K2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKK2ltcG9ydCBq
YXZheC5wZXJzaXN0ZW5jZS5NYW55VG9PbmU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuT25l
VG9NYW55OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOworaW1wb3J0IGphdmF4LnBl
cnNpc3RlbmNlLlRlbXBvcmFsOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRlbXBvcmFsVHlw
ZTsKKworLyoqCisgKiBNcGVpbHVuZyBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKKyAqLworQEVudGl0
eQorQFRhYmxlKG5hbWU9M0QiTVBFSUxVTkciCisgICAgLHNjaGVtYT0zRCJTRUREQiIKKykKK3B1
YmxpYyBjbGFzcyBNcGVpbHVuZyAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7CisK
KworICAgICBwcml2YXRlIGxvbmcgbXBlaWx1bmdpZDsKKyAgICAgcHJpdmF0ZSBTdGF0aW9uIHN0
YXRpb247CisgICAgIHByaXZhdGUgRGF0ZSBkYXR1bTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IGttOworICAgICBwcml2YXRlIFN0cmluZyBiZW1lcmt1bmc7CisgICAgIHByaXZhdGUgRGF0ZSBs
YXN0dXBkYXRlZDsKKyAgICAgcHJpdmF0ZSBMb25nIG9sZGFwZWlsaWQ7CisgICAgIHByaXZhdGUg
U2V0PE1wZWlscHVua3Q+IG1wZWlscHVua3RzID0zRCBuZXcgSGFzaFNldDxNcGVpbHB1bmt0Pigw
KTsKKworICAgIHB1YmxpYyBNcGVpbHVuZygpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgTXBlaWx1
bmcobG9uZyBtcGVpbHVuZ2lkLCBTdGF0aW9uIHN0YXRpb24sIERhdGUgZGF0dW0sIEJpZ0RlY2lt
PQphbCBrbSwgRGF0ZSBsYXN0dXBkYXRlZCkgeworICAgICAgICB0aGlzLm1wZWlsdW5naWQgPTNE
IG1wZWlsdW5naWQ7CisgICAgICAgIHRoaXMuc3RhdGlvbiA9M0Qgc3RhdGlvbjsKKyAgICAgICAg
dGhpcy5kYXR1bSA9M0QgZGF0dW07CisgICAgICAgIHRoaXMua20gPTNEIGttOworICAgICAgICB0
aGlzLmxhc3R1cGRhdGVkID0zRCBsYXN0dXBkYXRlZDsKKyAgICB9CisgICAgcHVibGljIE1wZWls
dW5nKGxvbmcgbXBlaWx1bmdpZCwgU3RhdGlvbiBzdGF0aW9uLCBEYXRlIGRhdHVtLCBCaWdEZWNp
bT0KYWwga20sIFN0cmluZyBiZW1lcmt1bmcsIERhdGUgbGFzdHVwZGF0ZWQsIExvbmcgb2xkYXBl
aWxpZCwgU2V0PE1wZWlscHVua3Q+PQogbXBlaWxwdW5rdHMpIHsKKyAgICAgICB0aGlzLm1wZWls
dW5naWQgPTNEIG1wZWlsdW5naWQ7CisgICAgICAgdGhpcy5zdGF0aW9uID0zRCBzdGF0aW9uOwor
ICAgICAgIHRoaXMuZGF0dW0gPTNEIGRhdHVtOworICAgICAgIHRoaXMua20gPTNEIGttOworICAg
ICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7CisgICAgICAgdGhpcy5sYXN0dXBkYXRl
ZCA9M0QgbGFzdHVwZGF0ZWQ7CisgICAgICAgdGhpcy5vbGRhcGVpbGlkID0zRCBvbGRhcGVpbGlk
OworICAgICAgIHRoaXMubXBlaWxwdW5rdHMgPTNEIG1wZWlscHVua3RzOworICAgIH0KKworICAg
ICBASWQKKworCisgICAgQENvbHVtbihuYW1lPTNEIk1QRUlMVU5HSUQiLCB1bmlxdWU9M0R0cnVl
LCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpbz0Kbj0zRDExLCBzY2FsZT0zRDApCisgICAgcHVi
bGljIGxvbmcgZ2V0TXBlaWx1bmdpZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubXBlaWx1bmdp
ZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNcGVpbHVuZ2lkKGxvbmcgbXBlaWx1bmdp
ZCkgeworICAgICAgICB0aGlzLm1wZWlsdW5naWQgPTNEIG1wZWlsdW5naWQ7CisgICAgfQorCitA
TWFueVRvT25lKGZldGNoPTNERmV0Y2hUeXBlLkxBWlkpCisgICAgQEpvaW5Db2x1bW4obmFtZT0z
RCJTVEFUSU9OSUQiLCBudWxsYWJsZT0zRGZhbHNlKQorICAgIHB1YmxpYyBTdGF0aW9uIGdldFN0
YXRpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLnN0YXRpb247CisgICAgfQorCisgICAgcHVi
bGljIHZvaWQgc2V0U3RhdGlvbihTdGF0aW9uIHN0YXRpb24pIHsKKyAgICAgICAgdGhpcy5zdGF0
aW9uID0zRCBzdGF0aW9uOworICAgIH0KKworICAgIEBUZW1wb3JhbChUZW1wb3JhbFR5cGUuREFU
RSkKKyAgICBAQ29sdW1uKG5hbWU9M0QiREFUVU0iLCBudWxsYWJsZT0zRGZhbHNlLCBsZW5ndGg9
M0Q3KQorICAgIHB1YmxpYyBEYXRlIGdldERhdHVtKCkgeworICAgICAgICByZXR1cm4gdGhpcy5k
YXR1bTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXREYXR1bShEYXRlIGRhdHVtKSB7Cisg
ICAgICAgIHRoaXMuZGF0dW0gPTNEIGRhdHVtOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1l
PTNEIktNIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQorICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldEttKCkgeworICAgICAgICByZXR1cm4gdGhpcy5rbTsKKyAg
ICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRLbShCaWdEZWNpbWFsIGttKSB7CisgICAgICAgIHRo
aXMua20gPTNEIGttOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkJFTUVSS1VORyIs
IGxlbmd0aD0zRDI0MCkKKyAgICBwdWJsaWMgU3RyaW5nIGdldEJlbWVya3VuZygpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuYmVtZXJrdW5nOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEJl
bWVya3VuZyhTdHJpbmcgYmVtZXJrdW5nKSB7CisgICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBi
ZW1lcmt1bmc7CisgICAgfQorCisgICAgQFRlbXBvcmFsKFRlbXBvcmFsVHlwZS5EQVRFKQorICAg
IEBDb2x1bW4obmFtZT0zRCJMQVNUVVBEQVRFRCIsIG51bGxhYmxlPTNEZmFsc2UsIGxlbmd0aD0z
RDcpCisgICAgcHVibGljIERhdGUgZ2V0TGFzdHVwZGF0ZWQoKSB7CisgICAgICAgIHJldHVybiB0
aGlzLmxhc3R1cGRhdGVkOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldExhc3R1cGRhdGVk
KERhdGUgbGFzdHVwZGF0ZWQpIHsKKyAgICAgICAgdGhpcy5sYXN0dXBkYXRlZCA9M0QgbGFzdHVw
ZGF0ZWQ7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiT0xEQVBFSUxJRCIsIHByZWNp
c2lvbj0zRDExLCBzY2FsZT0zRDApCisgICAgcHVibGljIExvbmcgZ2V0T2xkYXBlaWxpZCgpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMub2xkYXBlaWxpZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9p
ZCBzZXRPbGRhcGVpbGlkKExvbmcgb2xkYXBlaWxpZCkgeworICAgICAgICB0aGlzLm9sZGFwZWls
aWQgPTNEIG9sZGFwZWlsaWQ7CisgICAgfQorCitAT25lVG9NYW55KGZldGNoPTNERmV0Y2hUeXBl
LkxBWlksIG1hcHBlZEJ5PTNEIm1wZWlsdW5nIikKKyAgICBwdWJsaWMgU2V0PE1wZWlscHVua3Q+
IGdldE1wZWlscHVua3RzKCkgeworICAgICAgICByZXR1cm4gdGhpcy5tcGVpbHB1bmt0czsKKyAg
ICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNcGVpbHB1bmt0cyhTZXQ8TXBlaWxwdW5rdD4gbXBl
aWxwdW5rdHMpIHsKKyAgICAgICAgdGhpcy5tcGVpbHB1bmt0cyA9M0QgbXBlaWxwdW5rdHM7Cisg
ICAgfQorfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMv
bWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMvcml2ZXIvc2VkZGIvbW9kZWwvUHJvYmViaWxk
LmphdmEKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIv
YmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVs
L1Byb2JlYmlsZC5qPQphdmEJTW9uIEFwciAyOSAxMTozMzowMSAyMDEzICswMjAwCkBAIC0wLDAg
KzEsMjAyIEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5z
dGFsdCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQorICogU29mdHdhcmUgZW5naW5lZXJp
bmcgYnkgSW50ZXZhdGlvbiBHbWJICisgKgorICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUg
dW5kZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMpPTIwCisgKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVU
RUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCisgKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3
aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFpbHMuPTIwCisgKi8KKworcGFja2FnZSBv
cmcuZGl2ZTRlbGVtZW50cy5zZWRkYi5tb2RlbDsKKy8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDEx
OjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQuMC5DUjEKKworCitpbXBvcnQgamF2YXgucGVy
c2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9y
dCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2Uu
SWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKK2ltcG9ydCBqYXZheC5w
ZXJzaXN0ZW5jZS5NYW55VG9PbmU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CisK
Ky8qKgorICogUHJvYmViaWxkIGdlbmVyYXRlZCBieSBoYm0yamF2YQorICovCitARW50aXR5CitA
VGFibGUobmFtZT0zRCJQUk9CRUJJTEQiCisgICAgLHNjaGVtYT0zRCJTRUREQiIKKykKK3B1Ymxp
YyBjbGFzcyBQcm9iZWJpbGQgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgeworCisK
KyAgICAgcHJpdmF0ZSBsb25nIHByb2JlYmlsZGlkOworICAgICBwcml2YXRlIFp6dGhlbWEgenp0
aGVtYTsKKyAgICAgcHJpdmF0ZSBTb2hscHJvYmUgc29obHByb2JlOworICAgICBwcml2YXRlIGlu
dCBsZmRucjsKKyAgICAgcHJpdmF0ZSBib29sZWFuIGlzdGRpZ2l0YWw7CisgICAgIHByaXZhdGUg
U3RyaW5nIHBmYWQ7CisgICAgIHByaXZhdGUgU3RyaW5nIHN0YW5kb3J0OworICAgICBwcml2YXRl
IFN0cmluZyBtZWRpdW07CisgICAgIHByaXZhdGUgU3RyaW5nIG1lZHBmYWQ7CisgICAgIHByaXZh
dGUgU3RyaW5nIGJlbWVya3VuZzsKKyAgICAgcHJpdmF0ZSBTdHJpbmcgdHlwa2xlaW47CisgICAg
IHByaXZhdGUgU3RyaW5nIHR5cG1pdHRlbDsKKyAgICAgcHJpdmF0ZSBTdHJpbmcgdHlwZ3Jvc3M7
CisKKyAgICBwdWJsaWMgUHJvYmViaWxkKCkgeworICAgIH0KKworICAgIHB1YmxpYyBQcm9iZWJp
bGQobG9uZyBwcm9iZWJpbGRpZCwgWnp0aGVtYSB6enRoZW1hLCBTb2hscHJvYmUgc29obHByb2I9
CmUsIGludCBsZmRuciwgYm9vbGVhbiBpc3RkaWdpdGFsKSB7CisgICAgICAgIHRoaXMucHJvYmVi
aWxkaWQgPTNEIHByb2JlYmlsZGlkOworICAgICAgICB0aGlzLnp6dGhlbWEgPTNEIHp6dGhlbWE7
CisgICAgICAgIHRoaXMuc29obHByb2JlID0zRCBzb2hscHJvYmU7CisgICAgICAgIHRoaXMubGZk
bnIgPTNEIGxmZG5yOworICAgICAgICB0aGlzLmlzdGRpZ2l0YWwgPTNEIGlzdGRpZ2l0YWw7Cisg
ICAgfQorICAgIHB1YmxpYyBQcm9iZWJpbGQobG9uZyBwcm9iZWJpbGRpZCwgWnp0aGVtYSB6enRo
ZW1hLCBTb2hscHJvYmUgc29obHByb2I9CmUsIGludCBsZmRuciwgYm9vbGVhbiBpc3RkaWdpdGFs
LCBTdHJpbmcgcGZhZCwgU3RyaW5nIHN0YW5kb3J0LCBTdHJpbmcgbWVkaT0KdW0sIFN0cmluZyBt
ZWRwZmFkLCBTdHJpbmcgYmVtZXJrdW5nLCBTdHJpbmcgdHlwa2xlaW4sIFN0cmluZyB0eXBtaXR0
ZWwsIFN0PQpyaW5nIHR5cGdyb3NzKSB7CisgICAgICAgdGhpcy5wcm9iZWJpbGRpZCA9M0QgcHJv
YmViaWxkaWQ7CisgICAgICAgdGhpcy56enRoZW1hID0zRCB6enRoZW1hOworICAgICAgIHRoaXMu
c29obHByb2JlID0zRCBzb2hscHJvYmU7CisgICAgICAgdGhpcy5sZmRuciA9M0QgbGZkbnI7Cisg
ICAgICAgdGhpcy5pc3RkaWdpdGFsID0zRCBpc3RkaWdpdGFsOworICAgICAgIHRoaXMucGZhZCA9
M0QgcGZhZDsKKyAgICAgICB0aGlzLnN0YW5kb3J0ID0zRCBzdGFuZG9ydDsKKyAgICAgICB0aGlz
Lm1lZGl1bSA9M0QgbWVkaXVtOworICAgICAgIHRoaXMubWVkcGZhZCA9M0QgbWVkcGZhZDsKKyAg
ICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOworICAgICAgIHRoaXMudHlwa2xlaW4g
PTNEIHR5cGtsZWluOworICAgICAgIHRoaXMudHlwbWl0dGVsID0zRCB0eXBtaXR0ZWw7CisgICAg
ICAgdGhpcy50eXBncm9zcyA9M0QgdHlwZ3Jvc3M7CisgICAgfQorCisgICAgIEBJZAorCisKKyAg
ICBAQ29sdW1uKG5hbWU9M0QiUFJPQkVCSUxESUQiLCB1bmlxdWU9M0R0cnVlLCBudWxsYWJsZT0z
RGZhbHNlLCBwcmVjaXNpPQpvbj0zRDExLCBzY2FsZT0zRDApCisgICAgcHVibGljIGxvbmcgZ2V0
UHJvYmViaWxkaWQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnByb2JlYmlsZGlkOworICAgIH0K
KworICAgIHB1YmxpYyB2b2lkIHNldFByb2JlYmlsZGlkKGxvbmcgcHJvYmViaWxkaWQpIHsKKyAg
ICAgICAgdGhpcy5wcm9iZWJpbGRpZCA9M0QgcHJvYmViaWxkaWQ7CisgICAgfQorCitATWFueVRv
T25lKGZldGNoPTNERmV0Y2hUeXBlLkxBWlkpCisgICAgQEpvaW5Db2x1bW4obmFtZT0zRCJUSEVN
QUlEIiwgbnVsbGFibGU9M0RmYWxzZSkKKyAgICBwdWJsaWMgWnp0aGVtYSBnZXRaenRoZW1hKCkg
eworICAgICAgICByZXR1cm4gdGhpcy56enRoZW1hOworICAgIH0KKworICAgIHB1YmxpYyB2b2lk
IHNldFp6dGhlbWEoWnp0aGVtYSB6enRoZW1hKSB7CisgICAgICAgIHRoaXMuenp0aGVtYSA9M0Qg
enp0aGVtYTsKKyAgICB9CisKK0BNYW55VG9PbmUoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSkKKyAg
ICBASm9pbkNvbHVtbihuYW1lPTNEIlNPSExQUk9CRUlEIiwgbnVsbGFibGU9M0RmYWxzZSkKKyAg
ICBwdWJsaWMgU29obHByb2JlIGdldFNvaGxwcm9iZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
c29obHByb2JlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFNvaGxwcm9iZShTb2hscHJv
YmUgc29obHByb2JlKSB7CisgICAgICAgIHRoaXMuc29obHByb2JlID0zRCBzb2hscHJvYmU7Cisg
ICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiTEZETlIiLCBudWxsYWJsZT0zRGZhbHNlLCBw
cmVjaXNpb249M0Q1LCBzY2FsZT0zRDApCisgICAgcHVibGljIGludCBnZXRMZmRucigpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMubGZkbnI7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TGZk
bnIoaW50IGxmZG5yKSB7CisgICAgICAgIHRoaXMubGZkbnIgPTNEIGxmZG5yOworICAgIH0KKwor
CisgICAgQENvbHVtbihuYW1lPTNEIklTVERJR0lUQUwiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVj
aXNpb249M0QxLCBzY2FsZT0zRD0KMCkKKyAgICBwdWJsaWMgYm9vbGVhbiBpc0lzdGRpZ2l0YWwo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLmlzdGRpZ2l0YWw7CisgICAgfQorCisgICAgcHVibGlj
IHZvaWQgc2V0SXN0ZGlnaXRhbChib29sZWFuIGlzdGRpZ2l0YWwpIHsKKyAgICAgICAgdGhpcy5p
c3RkaWdpdGFsID0zRCBpc3RkaWdpdGFsOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNE
IlBGQUQiLCBsZW5ndGg9M0Q1MTIpCisgICAgcHVibGljIFN0cmluZyBnZXRQZmFkKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy5wZmFkOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFBmYWQo
U3RyaW5nIHBmYWQpIHsKKyAgICAgICAgdGhpcy5wZmFkID0zRCBwZmFkOworICAgIH0KKworCisg
ICAgQENvbHVtbihuYW1lPTNEIlNUQU5ET1JUIiwgbGVuZ3RoPTNENTApCisgICAgcHVibGljIFN0
cmluZyBnZXRTdGFuZG9ydCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc3RhbmRvcnQ7CisgICAg
fQorCisgICAgcHVibGljIHZvaWQgc2V0U3RhbmRvcnQoU3RyaW5nIHN0YW5kb3J0KSB7CisgICAg
ICAgIHRoaXMuc3RhbmRvcnQgPTNEIHN0YW5kb3J0OworICAgIH0KKworCisgICAgQENvbHVtbihu
YW1lPTNEIk1FRElVTSIsIGxlbmd0aD0zRDUwKQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0TWVkaXVt
KCkgeworICAgICAgICByZXR1cm4gdGhpcy5tZWRpdW07CisgICAgfQorCisgICAgcHVibGljIHZv
aWQgc2V0TWVkaXVtKFN0cmluZyBtZWRpdW0pIHsKKyAgICAgICAgdGhpcy5tZWRpdW0gPTNEIG1l
ZGl1bTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJNRURQRkFEIiwgbGVuZ3RoPTNE
NTApCisgICAgcHVibGljIFN0cmluZyBnZXRNZWRwZmFkKCkgeworICAgICAgICByZXR1cm4gdGhp
cy5tZWRwZmFkOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1lZHBmYWQoU3RyaW5nIG1l
ZHBmYWQpIHsKKyAgICAgICAgdGhpcy5tZWRwZmFkID0zRCBtZWRwZmFkOworICAgIH0KKworCisg
ICAgQENvbHVtbihuYW1lPTNEIkJFTUVSS1VORyIsIGxlbmd0aD0zRDI0MCkKKyAgICBwdWJsaWMg
U3RyaW5nIGdldEJlbWVya3VuZygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYmVtZXJrdW5nOwor
ICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEJlbWVya3VuZyhTdHJpbmcgYmVtZXJrdW5nKSB7
CisgICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7CisgICAgfQorCisKKyAgICBA
Q29sdW1uKG5hbWU9M0QiVFlQS0xFSU4iLCBsZW5ndGg9M0Q4KQorICAgIHB1YmxpYyBTdHJpbmcg
Z2V0VHlwa2xlaW4oKSB7CisgICAgICAgIHJldHVybiB0aGlzLnR5cGtsZWluOworICAgIH0KKwor
ICAgIHB1YmxpYyB2b2lkIHNldFR5cGtsZWluKFN0cmluZyB0eXBrbGVpbikgeworICAgICAgICB0
aGlzLnR5cGtsZWluID0zRCB0eXBrbGVpbjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0z
RCJUWVBNSVRURUwiLCBsZW5ndGg9M0Q4KQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0VHlwbWl0dGVs
KCkgeworICAgICAgICByZXR1cm4gdGhpcy50eXBtaXR0ZWw7CisgICAgfQorCisgICAgcHVibGlj
IHZvaWQgc2V0VHlwbWl0dGVsKFN0cmluZyB0eXBtaXR0ZWwpIHsKKyAgICAgICAgdGhpcy50eXBt
aXR0ZWwgPTNEIHR5cG1pdHRlbDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJUWVBH
Uk9TUyIsIGxlbmd0aD0zRDgpCisgICAgcHVibGljIFN0cmluZyBnZXRUeXBncm9zcygpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMudHlwZ3Jvc3M7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0
VHlwZ3Jvc3MoU3RyaW5nIHR5cGdyb3NzKSB7CisgICAgICAgIHRoaXMudHlwZ3Jvc3MgPTNEIHR5
cGdyb3NzOworICAgIH0KK30KZGlmZiAtciBiYzRlMWJmMjYyMjcgLXIgMWU2OGVjYTI2YjhhIGJh
Y2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50PQpzL3JpdmVyL3NlZGRiL21vZGVs
L1NpZWJhbmFseXNlLmphdmEKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAg
KzAwMDAKKysrIGIvYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnRzL3JpdmVy
L3NlZGRiL21vZGVsL1NpZWJhbmFseXNlPQouamF2YQlNb24gQXByIDI5IDExOjMzOjAxIDIwMTMg
KzAyMDAKQEAgLTAsMCArMSwzNjkgQEAKKy8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAx
MyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCisgKiBTb2Z0
d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgKKyAqCisgKiBUaGlzIGZpbGUgaXMg
RnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49M0R2Myk9MjAKKyAqIGFuZCBjb21l
cyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUKKyAqIGRvY3VtZW50
YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy49MjAKKyAq
LworCitwYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnNlZGRiLm1vZGVsOworLy8gR2VuZXJhdGVk
IDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQorCisKK2lt
cG9ydCBqYXZhLm1hdGguQmlnRGVjaW1hbDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1
bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OworaW1wb3J0IGphdmF4LnBlcnNp
c3RlbmNlLkZldGNoVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKK2ltcG9ydCBq
YXZheC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk1h
bnlUb09uZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5PbmVUb09uZTsKK2ltcG9ydCBqYXZh
eC5wZXJzaXN0ZW5jZS5UYWJsZTsKKworLyoqCisgKiBTaWViYW5hbHlzZSBnZW5lcmF0ZWQgYnkg
aGJtMmphdmEKKyAqLworQEVudGl0eQorQFRhYmxlKG5hbWU9M0QiU0lFQkFOQUxZU0UiCisgICAg
LHNjaGVtYT0zRCJTRUREQiIKKykKK3B1YmxpYyBjbGFzcyBTaWViYW5hbHlzZSAgaW1wbGVtZW50
cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7CisKKworICAgICBwcml2YXRlIGxvbmcgc2llYmFuYWx5
c2VpZDsKKyAgICAgcHJpdmF0ZSBTb2hscHJvYmUgc29obHByb2JlOworICAgICBwcml2YXRlIGJv
b2xlYW4gaXN0ZGlnaXRhbDsKKyAgICAgcHJpdmF0ZSBTdHJpbmcgc3RhbmRvcnQ7CisgICAgIHBy
aXZhdGUgQmlnRGVjaW1hbCBkbTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHNvOworICAgICBw
cml2YXRlIEJpZ0RlY2ltYWwgc2s7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCB1OworICAgICBw
cml2YXRlIEJpZ0RlY2ltYWwgZDkwOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDg0OworICAg
ICBwcml2YXRlIEJpZ0RlY2ltYWwgZDgwOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDc1Owor
ICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDcwOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDYw
OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDUwOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
ZDQwOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDMwOworICAgICBwcml2YXRlIEJpZ0RlY2lt
YWwgZDI1OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDIwOworICAgICBwcml2YXRlIEJpZ0Rl
Y2ltYWwgZDE2OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZDEwOworICAgICBwcml2YXRlIEJp
Z0RlY2ltYWwgZG1pbjsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGR1cmNoZG1pbjsKKyAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIGRtYXg7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBkdXJjaGRt
YXg7CisgICAgIHByaXZhdGUgU3RyaW5nIGJlbWVya3VuZzsKKyAgICAgcHJpdmF0ZSBTc2llYnVu
ZyBzc2llYnVuZzsKKworICAgIHB1YmxpYyBTaWViYW5hbHlzZSgpIHsKKyAgICB9CisKKyAgICBw
dWJsaWMgU2llYmFuYWx5c2UobG9uZyBzaWViYW5hbHlzZWlkLCBTb2hscHJvYmUgc29obHByb2Jl
LCBib29sZWFuIGlzPQp0ZGlnaXRhbCkgeworICAgICAgICB0aGlzLnNpZWJhbmFseXNlaWQgPTNE
IHNpZWJhbmFseXNlaWQ7CisgICAgICAgIHRoaXMuc29obHByb2JlID0zRCBzb2hscHJvYmU7Cisg
ICAgICAgIHRoaXMuaXN0ZGlnaXRhbCA9M0QgaXN0ZGlnaXRhbDsKKyAgICB9CisgICAgcHVibGlj
IFNpZWJhbmFseXNlKGxvbmcgc2llYmFuYWx5c2VpZCwgU29obHByb2JlIHNvaGxwcm9iZSwgYm9v
bGVhbiBpcz0KdGRpZ2l0YWwsIFN0cmluZyBzdGFuZG9ydCwgQmlnRGVjaW1hbCBkbSwgQmlnRGVj
aW1hbCBzbywgQmlnRGVjaW1hbCBzaywgQmlnPQpEZWNpbWFsIHUsIEJpZ0RlY2ltYWwgZDkwLCBC
aWdEZWNpbWFsIGQ4NCwgQmlnRGVjaW1hbCBkODAsIEJpZ0RlY2ltYWwgZDc1LCA9CkJpZ0RlY2lt
YWwgZDcwLCBCaWdEZWNpbWFsIGQ2MCwgQmlnRGVjaW1hbCBkNTAsIEJpZ0RlY2ltYWwgZDQwLCBC
aWdEZWNpbWFsID0KZDMwLCBCaWdEZWNpbWFsIGQyNSwgQmlnRGVjaW1hbCBkMjAsIEJpZ0RlY2lt
YWwgZDE2LCBCaWdEZWNpbWFsIGQxMCwgQmlnRGVjPQppbWFsIGRtaW4sIEJpZ0RlY2ltYWwgZHVy
Y2hkbWluLCBCaWdEZWNpbWFsIGRtYXgsIEJpZ0RlY2ltYWwgZHVyY2hkbWF4LCBTdHI9CmluZyBi
ZW1lcmt1bmcsIFNzaWVidW5nIHNzaWVidW5nKSB7CisgICAgICAgdGhpcy5zaWViYW5hbHlzZWlk
ID0zRCBzaWViYW5hbHlzZWlkOworICAgICAgIHRoaXMuc29obHByb2JlID0zRCBzb2hscHJvYmU7
CisgICAgICAgdGhpcy5pc3RkaWdpdGFsID0zRCBpc3RkaWdpdGFsOworICAgICAgIHRoaXMuc3Rh
bmRvcnQgPTNEIHN0YW5kb3J0OworICAgICAgIHRoaXMuZG0gPTNEIGRtOworICAgICAgIHRoaXMu
c28gPTNEIHNvOworICAgICAgIHRoaXMuc2sgPTNEIHNrOworICAgICAgIHRoaXMudSA9M0QgdTsK
KyAgICAgICB0aGlzLmQ5MCA9M0QgZDkwOworICAgICAgIHRoaXMuZDg0ID0zRCBkODQ7CisgICAg
ICAgdGhpcy5kODAgPTNEIGQ4MDsKKyAgICAgICB0aGlzLmQ3NSA9M0QgZDc1OworICAgICAgIHRo
aXMuZDcwID0zRCBkNzA7CisgICAgICAgdGhpcy5kNjAgPTNEIGQ2MDsKKyAgICAgICB0aGlzLmQ1
MCA9M0QgZDUwOworICAgICAgIHRoaXMuZDQwID0zRCBkNDA7CisgICAgICAgdGhpcy5kMzAgPTNE
IGQzMDsKKyAgICAgICB0aGlzLmQyNSA9M0QgZDI1OworICAgICAgIHRoaXMuZDIwID0zRCBkMjA7
CisgICAgICAgdGhpcy5kMTYgPTNEIGQxNjsKKyAgICAgICB0aGlzLmQxMCA9M0QgZDEwOworICAg
ICAgIHRoaXMuZG1pbiA9M0QgZG1pbjsKKyAgICAgICB0aGlzLmR1cmNoZG1pbiA9M0QgZHVyY2hk
bWluOworICAgICAgIHRoaXMuZG1heCA9M0QgZG1heDsKKyAgICAgICB0aGlzLmR1cmNoZG1heCA9
M0QgZHVyY2hkbWF4OworICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7CisgICAg
ICAgdGhpcy5zc2llYnVuZyA9M0Qgc3NpZWJ1bmc7CisgICAgfQorCisgICAgIEBJZAorCisKKyAg
ICBAQ29sdW1uKG5hbWU9M0QiU0lFQkFOQUxZU0VJRCIsIHVuaXF1ZT0zRHRydWUsIG51bGxhYmxl
PTNEZmFsc2UsIHByZWNpPQpzaW9uPTNEMTEsIHNjYWxlPTNEMCkKKyAgICBwdWJsaWMgbG9uZyBn
ZXRTaWViYW5hbHlzZWlkKCkgeworICAgICAgICByZXR1cm4gdGhpcy5zaWViYW5hbHlzZWlkOwor
ICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFNpZWJhbmFseXNlaWQobG9uZyBzaWViYW5hbHlz
ZWlkKSB7CisgICAgICAgIHRoaXMuc2llYmFuYWx5c2VpZCA9M0Qgc2llYmFuYWx5c2VpZDsKKyAg
ICB9CisKK0BNYW55VG9PbmUoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSkKKyAgICBASm9pbkNvbHVt
bihuYW1lPTNEIlNPSExQUk9CRUlEIiwgbnVsbGFibGU9M0RmYWxzZSkKKyAgICBwdWJsaWMgU29o
bHByb2JlIGdldFNvaGxwcm9iZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc29obHByb2JlOwor
ICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFNvaGxwcm9iZShTb2hscHJvYmUgc29obHByb2Jl
KSB7CisgICAgICAgIHRoaXMuc29obHByb2JlID0zRCBzb2hscHJvYmU7CisgICAgfQorCisKKyAg
ICBAQ29sdW1uKG5hbWU9M0QiSVNURElHSVRBTCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lv
bj0zRDEsIHNjYWxlPTNEPQowKQorICAgIHB1YmxpYyBib29sZWFuIGlzSXN0ZGlnaXRhbCgpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuaXN0ZGlnaXRhbDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9p
ZCBzZXRJc3RkaWdpdGFsKGJvb2xlYW4gaXN0ZGlnaXRhbCkgeworICAgICAgICB0aGlzLmlzdGRp
Z2l0YWwgPTNEIGlzdGRpZ2l0YWw7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiU1RB
TkRPUlQiLCBsZW5ndGg9M0Q1MCkKKyAgICBwdWJsaWMgU3RyaW5nIGdldFN0YW5kb3J0KCkgewor
ICAgICAgICByZXR1cm4gdGhpcy5zdGFuZG9ydDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBz
ZXRTdGFuZG9ydChTdHJpbmcgc3RhbmRvcnQpIHsKKyAgICAgICAgdGhpcy5zdGFuZG9ydCA9M0Qg
c3RhbmRvcnQ7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiRE0iLCBwcmVjaXNpb249
M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RG0oKSB7CisgICAgICAg
IHJldHVybiB0aGlzLmRtOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldERtKEJpZ0RlY2lt
YWwgZG0pIHsKKyAgICAgICAgdGhpcy5kbSA9M0QgZG07CisgICAgfQorCisKKyAgICBAQ29sdW1u
KG5hbWU9M0QiU08iLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0U28oKSB7CisgICAgICAgIHJldHVybiB0aGlzLnNvOworICAgIH0KKworICAgIHB1
YmxpYyB2b2lkIHNldFNvKEJpZ0RlY2ltYWwgc28pIHsKKyAgICAgICAgdGhpcy5zbyA9M0Qgc287
CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiU0siLCBwcmVjaXNpb249M0Q4LCBzY2Fs
ZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0U2soKSB7CisgICAgICAgIHJldHVybiB0
aGlzLnNrOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFNrKEJpZ0RlY2ltYWwgc2spIHsK
KyAgICAgICAgdGhpcy5zayA9M0Qgc2s7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0Qi
VSIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRV
KCkgeworICAgICAgICByZXR1cm4gdGhpcy51OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNl
dFUoQmlnRGVjaW1hbCB1KSB7CisgICAgICAgIHRoaXMudSA9M0QgdTsKKyAgICB9CisKKworICAg
IEBDb2x1bW4obmFtZT0zRCJEOTAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVi
bGljIEJpZ0RlY2ltYWwgZ2V0RDkwKCkgeworICAgICAgICByZXR1cm4gdGhpcy5kOTA7CisgICAg
fQorCisgICAgcHVibGljIHZvaWQgc2V0RDkwKEJpZ0RlY2ltYWwgZDkwKSB7CisgICAgICAgIHRo
aXMuZDkwID0zRCBkOTA7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiRDg0IiwgcHJl
Y2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQ4NCgpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuZDg0OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEQ4
NChCaWdEZWNpbWFsIGQ4NCkgeworICAgICAgICB0aGlzLmQ4NCA9M0QgZDg0OworICAgIH0KKwor
CisgICAgQENvbHVtbihuYW1lPTNEIkQ4MCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAg
ICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREODAoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmQ4MDsK
KyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXREODAoQmlnRGVjaW1hbCBkODApIHsKKyAgICAg
ICAgdGhpcy5kODAgPTNEIGQ4MDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJENzUi
LCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDc1
KCkgeworICAgICAgICByZXR1cm4gdGhpcy5kNzU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQg
c2V0RDc1KEJpZ0RlY2ltYWwgZDc1KSB7CisgICAgICAgIHRoaXMuZDc1ID0zRCBkNzU7CisgICAg
fQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiRDcwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0
KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQ3MCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
ZDcwOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEQ3MChCaWdEZWNpbWFsIGQ3MCkgewor
ICAgICAgICB0aGlzLmQ3MCA9M0QgZDcwOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNE
IkQ2MCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXRENjAoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmQ2MDsKKyAgICB9CisKKyAgICBwdWJsaWMg
dm9pZCBzZXRENjAoQmlnRGVjaW1hbCBkNjApIHsKKyAgICAgICAgdGhpcy5kNjAgPTNEIGQ2MDsK
KyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJENTAiLCBwcmVjaXNpb249M0Q3LCBzY2Fs
ZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDUwKCkgeworICAgICAgICByZXR1cm4g
dGhpcy5kNTA7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RDUwKEJpZ0RlY2ltYWwgZDUw
KSB7CisgICAgICAgIHRoaXMuZDUwID0zRCBkNTA7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5h
bWU9M0QiRDQwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNp
bWFsIGdldEQ0MCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZDQwOworICAgIH0KKworICAgIHB1
YmxpYyB2b2lkIHNldEQ0MChCaWdEZWNpbWFsIGQ0MCkgeworICAgICAgICB0aGlzLmQ0MCA9M0Qg
ZDQwOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkQzMCIsIHByZWNpc2lvbj0zRDcs
IHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREMzAoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLmQzMDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXREMzAoQmlnRGVjaW1h
bCBkMzApIHsKKyAgICAgICAgdGhpcy5kMzAgPTNEIGQzMDsKKyAgICB9CisKKworICAgIEBDb2x1
bW4obmFtZT0zRCJEMjUiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0RDI1KCkgeworICAgICAgICByZXR1cm4gdGhpcy5kMjU7CisgICAgfQorCisg
ICAgcHVibGljIHZvaWQgc2V0RDI1KEJpZ0RlY2ltYWwgZDI1KSB7CisgICAgICAgIHRoaXMuZDI1
ID0zRCBkMjU7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiRDIwIiwgcHJlY2lzaW9u
PTNENywgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEQyMCgpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuZDIwOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEQyMChCaWdE
ZWNpbWFsIGQyMCkgeworICAgICAgICB0aGlzLmQyMCA9M0QgZDIwOworICAgIH0KKworCisgICAg
QENvbHVtbihuYW1lPTNEIkQxNiIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXREMTYoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmQxNjsKKyAgICB9
CisKKyAgICBwdWJsaWMgdm9pZCBzZXREMTYoQmlnRGVjaW1hbCBkMTYpIHsKKyAgICAgICAgdGhp
cy5kMTYgPTNEIGQxNjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJEMTAiLCBwcmVj
aXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0RDEwKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy5kMTA7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RDEw
KEJpZ0RlY2ltYWwgZDEwKSB7CisgICAgICAgIHRoaXMuZDEwID0zRCBkMTA7CisgICAgfQorCisK
KyAgICBAQ29sdW1uKG5hbWU9M0QiRE1JTiIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAg
ICBwdWJsaWMgQmlnRGVjaW1hbCBnZXREbWluKCkgeworICAgICAgICByZXR1cm4gdGhpcy5kbWlu
OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldERtaW4oQmlnRGVjaW1hbCBkbWluKSB7Cisg
ICAgICAgIHRoaXMuZG1pbiA9M0QgZG1pbjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0z
RCJEVVJDSERNSU4iLCBwcmVjaXNpb249M0Q2LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0RHVyY2hkbWluKCkgeworICAgICAgICByZXR1cm4gdGhpcy5kdXJjaGRtaW47Cisg
ICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RHVyY2hkbWluKEJpZ0RlY2ltYWwgZHVyY2hkbWlu
KSB7CisgICAgICAgIHRoaXMuZHVyY2hkbWluID0zRCBkdXJjaGRtaW47CisgICAgfQorCisKKyAg
ICBAQ29sdW1uKG5hbWU9M0QiRE1BWCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBw
dWJsaWMgQmlnRGVjaW1hbCBnZXREbWF4KCkgeworICAgICAgICByZXR1cm4gdGhpcy5kbWF4Owor
ICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldERtYXgoQmlnRGVjaW1hbCBkbWF4KSB7CisgICAg
ICAgIHRoaXMuZG1heCA9M0QgZG1heDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJE
VVJDSERNQVgiLCBwcmVjaXNpb249M0Q2LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2lt
YWwgZ2V0RHVyY2hkbWF4KCkgeworICAgICAgICByZXR1cm4gdGhpcy5kdXJjaGRtYXg7CisgICAg
fQorCisgICAgcHVibGljIHZvaWQgc2V0RHVyY2hkbWF4KEJpZ0RlY2ltYWwgZHVyY2hkbWF4KSB7
CisgICAgICAgIHRoaXMuZHVyY2hkbWF4ID0zRCBkdXJjaGRtYXg7CisgICAgfQorCisKKyAgICBA
Q29sdW1uKG5hbWU9M0QiQkVNRVJLVU5HIiwgbGVuZ3RoPTNEMjQwKQorICAgIHB1YmxpYyBTdHJp
bmcgZ2V0QmVtZXJrdW5nKCkgeworICAgICAgICByZXR1cm4gdGhpcy5iZW1lcmt1bmc7CisgICAg
fQorCisgICAgcHVibGljIHZvaWQgc2V0QmVtZXJrdW5nKFN0cmluZyBiZW1lcmt1bmcpIHsKKyAg
ICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKKyAgICB9CisKK0BPbmVUb09uZShm
ZXRjaD0zREZldGNoVHlwZS5MQVpZLCBtYXBwZWRCeT0zRCJzaWViYW5hbHlzZSIpCisgICAgcHVi
bGljIFNzaWVidW5nIGdldFNzaWVidW5nKCkgeworICAgICAgICByZXR1cm4gdGhpcy5zc2llYnVu
ZzsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRTc2llYnVuZyhTc2llYnVuZyBzc2llYnVu
ZykgeworICAgICAgICB0aGlzLnNzaWVidW5nID0zRCBzc2llYnVuZzsKKyAgICB9Cit9CmRpZmYg
LXIgYmM0ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3Jn
L2RpdmU0ZWxlbWVudD0Kcy9yaXZlci9zZWRkYi9tb2RlbC9TbG90bGlua3MuamF2YQotLS0gL2Rl
di9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9iYWNrZW5kL3NyYy9t
YWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvU2xvdGxpbmtzLmo9
CmF2YQlNb24gQXByIDI5IDExOjMzOjAxIDIwMTMgKzAyMDAKQEAgLTAsMCArMSw2MSBAQAorLyog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3Ig
R2V3PUMzPUE0c3Nlcms9CnVuZGUKKyAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRp
b24gR21iSAorICoKKyAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUg
QUdQTCAoPj0zRHYzKT0yMAorICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5U
WSEgQ2hlY2sgb3V0IHRoZQorICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1l
bnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAorICovCisKK3BhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVu
dHMuc2VkZGIubW9kZWw7CisvLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJl
cm5hdGUgVG9vbHMgMy40LjAuQ1IxCisKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJp
YnV0ZU92ZXJyaWRlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0ZU92ZXJyaWRl
czsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuRW1iZWRkZWRJZDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7CitpbXBv
cnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CisKKy8qKgorICogU2xvdGxpbmtzIGdlbmVyYXRl
ZCBieSBoYm0yamF2YQorICovCitARW50aXR5CitAVGFibGUobmFtZT0zRCJTTE9UTElOS1MiCisg
ICAgLHNjaGVtYT0zRCJTRUREQiIKKykKK3B1YmxpYyBjbGFzcyBTbG90bGlua3MgIGltcGxlbWVu
dHMgamF2YS5pby5TZXJpYWxpemFibGUgeworCisKKyAgICAgcHJpdmF0ZSBTbG90bGlua3NJZCBp
ZDsKKworICAgIHB1YmxpYyBTbG90bGlua3MoKSB7CisgICAgfQorCisgICAgcHVibGljIFNsb3Rs
aW5rcyhTbG90bGlua3NJZCBpZCkgeworICAgICAgIHRoaXMuaWQgPTNEIGlkOworICAgIH0KKwor
ICAgICBARW1iZWRkZWRJZAorCisgICAgQEF0dHJpYnV0ZU92ZXJyaWRlcyggeworICAgICAgICBA
QXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJzbG90cmVjaHRlaWQiLCBjb2x1bW49M0RAQ29sdW1u
KG5hbWU9M0Q9CiJTTE9UUkVDSFRFSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Qx
MSwgc2NhbGU9M0QwKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtZXNz
dW5naWQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUU9ClNTVU5HSUQiLCBudWxsYWJsZT0z
RGZhbHNlLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QwKSApLAorICAgICAgICBAQXR0cmlidXRl
T3ZlcnJpZGUobmFtZT0zRCJ1ZmVyYWJzdCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJVRkU9
ClJBQlNUIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKSApLAor
ICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ0c2FuZCIsIGNvbHVtbj0zREBDb2x1
bW4obmFtZT0zRCJUU0FORCI9CiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKSApLAorICAgICAg
ICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ0c2Nod2ViIiwgY29sdW1uPTNEQENvbHVtbihu
YW1lPTNEIlRTQ0g9CldFQiIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykgKSwKKyAgICAgICAg
QEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiZnYiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0Qi
RlYiLCBwcmVjPQppc2lvbj0zRDYsIHNjYWxlPTNEMykgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92
ZXJyaWRlKG5hbWU9M0Qidm0iLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiVk0iLCBwcmVjPQpp
c2lvbj0zRDYsIHNjYWxlPTNENCkgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9
M0QidGllZmUiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiVElFRkUiPQosIHByZWNpc2lvbj0z
RDgsIHNjYWxlPTNEMykgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QidnNv
aGxlIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlZTT0hMPQpFIiwgcHJlY2lzaW9uPTNENiwg
c2NhbGU9M0Q0KSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJiZW1lcmt1
bmciLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiQkU9Ck1FUktVTkciLCBsZW5ndGg9M0QyNDAp
ICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInVmZXJhYmxpbmtzIiwgY29s
dW1uPTNEQENvbHVtbihuYW1lPTNEIj0KVUZFUkFCTElOS1MiLCBwcmVjaXNpb249M0Q4LCBzY2Fs
ZT0zRDMpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImxpbmtzYWJzdCIs
IGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJMST0KTktTQUJTVCIsIHByZWNpc2lvbj0zRDIyLCBz
Y2FsZT0zRDApICkgfSApCisgICAgcHVibGljIFNsb3RsaW5rc0lkIGdldElkKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy5pZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRJZChTbG90bGlu
a3NJZCBpZCkgeworICAgICAgICB0aGlzLmlkID0zRCBpZDsKKyAgICB9Cit9CmRpZmYgLXIgYmM0
ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0
ZWxlbWVudD0Kcy9yaXZlci9zZWRkYi9tb2RlbC9TbG90bGlua3NJZC5qYXZhCi0tLSAvZGV2L251
bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL2JhY2tlbmQvc3JjL21haW4v
amF2YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZlci9zZWRkYi9tb2RlbC9TbG90bGlua3NJZD0KLmph
dmEJTW9uIEFwciAyOSAxMTozMzowMSAyMDEzICswMjAwCkBAIC0wLDAgKzEsMjE5IEBACisvKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBH
ZXc9QzM9QTRzc2Vyaz0KdW5kZQorICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlv
biBHbWJICisgKgorICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBB
R1BMICg+PTNEdjMpPTIwCisgKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZ
ISBDaGVjayBvdXQgdGhlCisgKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVu
dHMgUml2ZXIgZm9yIGRldGFpbHMuPTIwCisgKi8KKworcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50
cy5zZWRkYi5tb2RlbDsKKy8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVy
bmF0ZSBUb29scyAzLjQuMC5DUjEKKworCitpbXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7Citp
bXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNl
LkVtYmVkZGFibGU7CisKKy8qKgorICogU2xvdGxpbmtzSWQgZ2VuZXJhdGVkIGJ5IGhibTJqYXZh
CisgKi8KK0BFbWJlZGRhYmxlCitwdWJsaWMgY2xhc3MgU2xvdGxpbmtzSWQgIGltcGxlbWVudHMg
amF2YS5pby5TZXJpYWxpemFibGUgeworCisKKyAgICAgcHJpdmF0ZSBsb25nIHNsb3RyZWNodGVp
ZDsKKyAgICAgcHJpdmF0ZSBsb25nIG1lc3N1bmdpZDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IHVmZXJhYnN0OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdHNhbmQ7CisgICAgIHByaXZhdGUg
QmlnRGVjaW1hbCB0c2Nod2ViOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgZnY7CisgICAgIHBy
aXZhdGUgQmlnRGVjaW1hbCB2bTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHRpZWZlOworICAg
ICBwcml2YXRlIEJpZ0RlY2ltYWwgdnNvaGxlOworICAgICBwcml2YXRlIFN0cmluZyBiZW1lcmt1
bmc7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCB1ZmVyYWJsaW5rczsKKyAgICAgcHJpdmF0ZSBC
aWdEZWNpbWFsIGxpbmtzYWJzdDsKKworICAgIHB1YmxpYyBTbG90bGlua3NJZCgpIHsKKyAgICB9
CisKKyAgICBwdWJsaWMgU2xvdGxpbmtzSWQobG9uZyBzbG90cmVjaHRlaWQsIGxvbmcgbWVzc3Vu
Z2lkLCBCaWdEZWNpbWFsIHVmZXJhPQpic3QpIHsKKyAgICAgICAgdGhpcy5zbG90cmVjaHRlaWQg
PTNEIHNsb3RyZWNodGVpZDsKKyAgICAgICAgdGhpcy5tZXNzdW5naWQgPTNEIG1lc3N1bmdpZDsK
KyAgICAgICAgdGhpcy51ZmVyYWJzdCA9M0QgdWZlcmFic3Q7CisgICAgfQorICAgIHB1YmxpYyBT
bG90bGlua3NJZChsb25nIHNsb3RyZWNodGVpZCwgbG9uZyBtZXNzdW5naWQsIEJpZ0RlY2ltYWwg
dWZlcmE9CmJzdCwgQmlnRGVjaW1hbCB0c2FuZCwgQmlnRGVjaW1hbCB0c2Nod2ViLCBCaWdEZWNp
bWFsIGZ2LCBCaWdEZWNpbWFsIHZtLCBCaT0KZ0RlY2ltYWwgdGllZmUsIEJpZ0RlY2ltYWwgdnNv
aGxlLCBTdHJpbmcgYmVtZXJrdW5nLCBCaWdEZWNpbWFsIHVmZXJhYmxpbmtzPQosIEJpZ0RlY2lt
YWwgbGlua3NhYnN0KSB7CisgICAgICAgdGhpcy5zbG90cmVjaHRlaWQgPTNEIHNsb3RyZWNodGVp
ZDsKKyAgICAgICB0aGlzLm1lc3N1bmdpZCA9M0QgbWVzc3VuZ2lkOworICAgICAgIHRoaXMudWZl
cmFic3QgPTNEIHVmZXJhYnN0OworICAgICAgIHRoaXMudHNhbmQgPTNEIHRzYW5kOworICAgICAg
IHRoaXMudHNjaHdlYiA9M0QgdHNjaHdlYjsKKyAgICAgICB0aGlzLmZ2ID0zRCBmdjsKKyAgICAg
ICB0aGlzLnZtID0zRCB2bTsKKyAgICAgICB0aGlzLnRpZWZlID0zRCB0aWVmZTsKKyAgICAgICB0
aGlzLnZzb2hsZSA9M0QgdnNvaGxlOworICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1
bmc7CisgICAgICAgdGhpcy51ZmVyYWJsaW5rcyA9M0QgdWZlcmFibGlua3M7CisgICAgICAgdGhp
cy5saW5rc2Fic3QgPTNEIGxpbmtzYWJzdDsKKyAgICB9CisKKworCisgICAgQENvbHVtbihuYW1l
PTNEIlNMT1RSRUNIVEVJRCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2Fs
ZT0KPTNEMCkKKyAgICBwdWJsaWMgbG9uZyBnZXRTbG90cmVjaHRlaWQoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLnNsb3RyZWNodGVpZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRTbG90
cmVjaHRlaWQobG9uZyBzbG90cmVjaHRlaWQpIHsKKyAgICAgICAgdGhpcy5zbG90cmVjaHRlaWQg
PTNEIHNsb3RyZWNodGVpZDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJNRVNTVU5H
SUQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0Q9CjApCisgICAg
cHVibGljIGxvbmcgZ2V0TWVzc3VuZ2lkKCkgeworICAgICAgICByZXR1cm4gdGhpcy5tZXNzdW5n
aWQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TWVzc3VuZ2lkKGxvbmcgbWVzc3VuZ2lk
KSB7CisgICAgICAgIHRoaXMubWVzc3VuZ2lkID0zRCBtZXNzdW5naWQ7CisgICAgfQorCisKKyAg
ICBAQ29sdW1uKG5hbWU9M0QiVUZFUkFCU1QiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249
M0Q4LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VWZlcmFic3QoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLnVmZXJhYnN0OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNl
dFVmZXJhYnN0KEJpZ0RlY2ltYWwgdWZlcmFic3QpIHsKKyAgICAgICAgdGhpcy51ZmVyYWJzdCA9
M0QgdWZlcmFic3Q7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiVFNBTkQiLCBwcmVj
aXNpb249M0Q4LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VHNhbmQoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLnRzYW5kOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNl
dFRzYW5kKEJpZ0RlY2ltYWwgdHNhbmQpIHsKKyAgICAgICAgdGhpcy50c2FuZCA9M0QgdHNhbmQ7
CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiVFNDSFdFQiIsIHByZWNpc2lvbj0zRDgs
IHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRUc2Nod2ViKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy50c2Nod2ViOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFRzY2h3
ZWIoQmlnRGVjaW1hbCB0c2Nod2ViKSB7CisgICAgICAgIHRoaXMudHNjaHdlYiA9M0QgdHNjaHdl
YjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJGViIsIHByZWNpc2lvbj0zRDYsIHNj
YWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRGdigpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuZnY7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RnYoQmlnRGVjaW1hbCBmdikg
eworICAgICAgICB0aGlzLmZ2ID0zRCBmdjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0z
RCJWTSIsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXRWbSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudm07CisgICAgfQorCisgICAgcHVibGljIHZv
aWQgc2V0Vm0oQmlnRGVjaW1hbCB2bSkgeworICAgICAgICB0aGlzLnZtID0zRCB2bTsKKyAgICB9
CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJUSUVGRSIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNE
MykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRUaWVmZSgpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMudGllZmU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VGllZmUoQmlnRGVjaW1hbCB0
aWVmZSkgeworICAgICAgICB0aGlzLnRpZWZlID0zRCB0aWVmZTsKKyAgICB9CisKKworICAgIEBD
b2x1bW4obmFtZT0zRCJWU09ITEUiLCBwcmVjaXNpb249M0Q2LCBzY2FsZT0zRDQpCisgICAgcHVi
bGljIEJpZ0RlY2ltYWwgZ2V0VnNvaGxlKCkgeworICAgICAgICByZXR1cm4gdGhpcy52c29obGU7
CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VnNvaGxlKEJpZ0RlY2ltYWwgdnNvaGxlKSB7
CisgICAgICAgIHRoaXMudnNvaGxlID0zRCB2c29obGU7CisgICAgfQorCisKKyAgICBAQ29sdW1u
KG5hbWU9M0QiQkVNRVJLVU5HIiwgbGVuZ3RoPTNEMjQwKQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0
QmVtZXJrdW5nKCkgeworICAgICAgICByZXR1cm4gdGhpcy5iZW1lcmt1bmc7CisgICAgfQorCisg
ICAgcHVibGljIHZvaWQgc2V0QmVtZXJrdW5nKFN0cmluZyBiZW1lcmt1bmcpIHsKKyAgICAgICAg
dGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFt
ZT0zRCJVRkVSQUJMSU5LUyIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKKyAgICBwdWJsaWMg
QmlnRGVjaW1hbCBnZXRVZmVyYWJsaW5rcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudWZlcmFi
bGlua3M7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VWZlcmFibGlua3MoQmlnRGVjaW1h
bCB1ZmVyYWJsaW5rcykgeworICAgICAgICB0aGlzLnVmZXJhYmxpbmtzID0zRCB1ZmVyYWJsaW5r
czsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJMSU5LU0FCU1QiLCBwcmVjaXNpb249
M0QyMiwgc2NhbGU9M0QwKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldExpbmtzYWJzdCgpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMubGlua3NhYnN0OworICAgIH0KKworICAgIHB1YmxpYyB2b2lk
IHNldExpbmtzYWJzdChCaWdEZWNpbWFsIGxpbmtzYWJzdCkgeworICAgICAgICB0aGlzLmxpbmtz
YWJzdCA9M0QgbGlua3NhYnN0OworICAgIH0KKworCisgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMo
T2JqZWN0IG90aGVyKSB7CisgICAgICAgICBpZiAoICh0aGlzID0zRD0zRCBvdGhlciApICkgcmV0
dXJuIHRydWU7CisJCSBpZiAoIChvdGhlciA9M0Q9M0QgbnVsbCApICkgcmV0dXJuIGZhbHNlOwor
CQkgaWYgKCAhKG90aGVyIGluc3RhbmNlb2YgU2xvdGxpbmtzSWQpICkgcmV0dXJuIGZhbHNlOwor
CQkgU2xvdGxpbmtzSWQgY2FzdE90aGVyID0zRCAoIFNsb3RsaW5rc0lkICkgb3RoZXI7CisKKwkJ
IHJldHVybiAodGhpcy5nZXRTbG90cmVjaHRlaWQoKT0zRD0zRGNhc3RPdGhlci5nZXRTbG90cmVj
aHRlaWQoKSkKKyAmJiAodGhpcy5nZXRNZXNzdW5naWQoKT0zRD0zRGNhc3RPdGhlci5nZXRNZXNz
dW5naWQoKSkKKyAmJiAoICh0aGlzLmdldFVmZXJhYnN0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0VWZl
cmFic3QoKSkgfHwgKCB0aGlzLmdldFVmZXJhPQpic3QoKSE9M0RudWxsICYmIGNhc3RPdGhlci5n
ZXRVZmVyYWJzdCgpIT0zRG51bGwgJiYgdGhpcy5nZXRVZmVyYWJzdCgpLmVxdWE9CmxzKGNhc3RP
dGhlci5nZXRVZmVyYWJzdCgpKSApICkKKyAmJiAoICh0aGlzLmdldFRzYW5kKCk9M0Q9M0RjYXN0
T3RoZXIuZ2V0VHNhbmQoKSkgfHwgKCB0aGlzLmdldFRzYW5kKCkhPTNEPQpudWxsICYmIGNhc3RP
dGhlci5nZXRUc2FuZCgpIT0zRG51bGwgJiYgdGhpcy5nZXRUc2FuZCgpLmVxdWFscyhjYXN0T3Ro
ZXIuZ2U9CnRUc2FuZCgpKSApICkKKyAmJiAoICh0aGlzLmdldFRzY2h3ZWIoKT0zRD0zRGNhc3RP
dGhlci5nZXRUc2Nod2ViKCkpIHx8ICggdGhpcy5nZXRUc2Nod2ViPQooKSE9M0RudWxsICYmIGNh
c3RPdGhlci5nZXRUc2Nod2ViKCkhPTNEbnVsbCAmJiB0aGlzLmdldFRzY2h3ZWIoKS5lcXVhbHMo
Y2E9CnN0T3RoZXIuZ2V0VHNjaHdlYigpKSApICkKKyAmJiAoICh0aGlzLmdldEZ2KCk9M0Q9M0Rj
YXN0T3RoZXIuZ2V0RnYoKSkgfHwgKCB0aGlzLmdldEZ2KCkhPTNEbnVsbCAmJiBjPQphc3RPdGhl
ci5nZXRGdigpIT0zRG51bGwgJiYgdGhpcy5nZXRGdigpLmVxdWFscyhjYXN0T3RoZXIuZ2V0RnYo
KSkgKSApCisgJiYgKCAodGhpcy5nZXRWbSgpPTNEPTNEY2FzdE90aGVyLmdldFZtKCkpIHx8ICgg
dGhpcy5nZXRWbSgpIT0zRG51bGwgJiYgYz0KYXN0T3RoZXIuZ2V0Vm0oKSE9M0RudWxsICYmIHRo
aXMuZ2V0Vm0oKS5lcXVhbHMoY2FzdE90aGVyLmdldFZtKCkpICkgKQorICYmICggKHRoaXMuZ2V0
VGllZmUoKT0zRD0zRGNhc3RPdGhlci5nZXRUaWVmZSgpKSB8fCAoIHRoaXMuZ2V0VGllZmUoKSE9
M0Q9Cm51bGwgJiYgY2FzdE90aGVyLmdldFRpZWZlKCkhPTNEbnVsbCAmJiB0aGlzLmdldFRpZWZl
KCkuZXF1YWxzKGNhc3RPdGhlci5nZT0KdFRpZWZlKCkpICkgKQorICYmICggKHRoaXMuZ2V0VnNv
aGxlKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0VnNvaGxlKCkpIHx8ICggdGhpcy5nZXRWc29obGUoKSE9
Cj0zRG51bGwgJiYgY2FzdE90aGVyLmdldFZzb2hsZSgpIT0zRG51bGwgJiYgdGhpcy5nZXRWc29o
bGUoKS5lcXVhbHMoY2FzdE90aD0KZXIuZ2V0VnNvaGxlKCkpICkgKQorICYmICggKHRoaXMuZ2V0
QmVtZXJrdW5nKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0QmVtZXJrdW5nKCkpIHx8ICggdGhpcy5nZXRC
ZW09CmVya3VuZygpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldEJlbWVya3VuZygpIT0zRG51bGwg
JiYgdGhpcy5nZXRCZW1lcmt1bmcoKT0KLmVxdWFscyhjYXN0T3RoZXIuZ2V0QmVtZXJrdW5nKCkp
ICkgKQorICYmICggKHRoaXMuZ2V0VWZlcmFibGlua3MoKT0zRD0zRGNhc3RPdGhlci5nZXRVZmVy
YWJsaW5rcygpKSB8fCAoIHRoaXMuZ2U9CnRVZmVyYWJsaW5rcygpIT0zRG51bGwgJiYgY2FzdE90
aGVyLmdldFVmZXJhYmxpbmtzKCkhPTNEbnVsbCAmJiB0aGlzLmdldFVmZT0KcmFibGlua3MoKS5l
cXVhbHMoY2FzdE90aGVyLmdldFVmZXJhYmxpbmtzKCkpICkgKQorICYmICggKHRoaXMuZ2V0TGlu
a3NhYnN0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TGlua3NhYnN0KCkpIHx8ICggdGhpcy5nZXRMaW49
CmtzYWJzdCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldExpbmtzYWJzdCgpIT0zRG51bGwgJiYg
dGhpcy5nZXRMaW5rc2Fic3QoKT0KLmVxdWFscyhjYXN0T3RoZXIuZ2V0TGlua3NhYnN0KCkpICkg
KTsKKyAgIH0KKworICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgIGludCByZXN1
bHQgPTNEIDE3OworCisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKGludCkgdGhp
cy5nZXRTbG90cmVjaHRlaWQoKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAo
aW50KSB0aGlzLmdldE1lc3N1bmdpZCgpOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3Vs
dCArICggZ2V0VWZlcmFic3QoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0VWZlcmFic3Qo
KS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRU
c2FuZCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0VD0Kc2FuZCgpLmhhc2hDb2RlKCkgKTsK
KyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFRzY2h3ZWIoKSA9M0Q9M0Qg
bnVsbCA/IDAgOiB0aGlzLmdlPQp0VHNjaHdlYigpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJl
c3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEZ2KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5n
ZXRGdigpPQouaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCAr
ICggZ2V0Vm0oKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldFZtKCk9Ci5oYXNoQ29kZSgpICk7
CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRUaWVmZSgpID0zRD0zRCBu
dWxsID8gMCA6IHRoaXMuZ2V0VD0KaWVmZSgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3Vs
dCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFZzb2hsZSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMu
Z2V0PQpWc29obGUoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVz
dWx0ICsgKCBnZXRCZW1lcmt1bmcoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLj0KZ2V0QmVtZXJr
dW5nKCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICgg
Z2V0VWZlcmFibGlua3MoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGk9CnMuZ2V0VWZlcmFibGlua3Mo
KS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRM
aW5rc2Fic3QoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLj0KZ2V0TGlua3NhYnN0KCkuaGFzaENv
ZGUoKSApOworICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgIH0KK30KZGlmZiAtciBiYzRlMWJm
MjYyMjcgLXIgMWU2OGVjYTI2YjhhIGJhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVt
ZW50PQpzL3JpdmVyL3NlZGRiL21vZGVsL1Nsb3RyZWNodGUuamF2YQotLS0gL2Rldi9udWxsCVRo
dSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9iYWNrZW5kL3NyYy9tYWluL2phdmEv
b3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvU2xvdHJlY2h0ZS49CmphdmEJTW9u
IEFwciAyOSAxMTozMzowMSAyMDEzICswMjAwCkBAIC0wLDAgKzEsMTkxIEBACisvKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9
QTRzc2Vyaz0KdW5kZQorICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJI
CisgKgorICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+
PTNEdjMpPTIwCisgKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVj
ayBvdXQgdGhlCisgKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2
ZXIgZm9yIGRldGFpbHMuPTIwCisgKi8KKworcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5zZWRk
Yi5tb2RlbDsKKy8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBU
b29scyAzLjQuMC5DUjEKKworCitpbXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7CitpbXBvcnQg
amF2YS51dGlsLkhhc2hTZXQ7CitpbXBvcnQgamF2YS51dGlsLlNldDsKK2ltcG9ydCBqYXZheC5w
ZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OworaW1w
b3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5j
ZS5JZDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1uOworaW1wb3J0IGphdmF4
LnBlcnNpc3RlbmNlLk1hbnlUb09uZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5PbmVUb01h
bnk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CisKKy8qKgorICogU2xvdHJlY2h0
ZSBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKKyAqLworQEVudGl0eQorQFRhYmxlKG5hbWU9M0QiU0xP
VFJFQ0hURSIKKyAgICAsc2NoZW1hPTNEIlNFRERCIgorKQorcHVibGljIGNsYXNzIFNsb3RyZWNo
dGUgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgeworCisKKyAgICAgcHJpdmF0ZSBs
b25nIHNsb3RyZWNodGVpZDsKKyAgICAgcHJpdmF0ZSBNZXNzdW5nIG1lc3N1bmc7CisgICAgIHBy
aXZhdGUgQmlnRGVjaW1hbCB1ZmVyYWJzdDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHRzYW5k
OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdHNjaHdlYjsKKyAgICAgcHJpdmF0ZSBCaWdEZWNp
bWFsIGZ2OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdm07CisgICAgIHByaXZhdGUgQmlnRGVj
aW1hbCB0aWVmZTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHZzb2hsZTsKKyAgICAgcHJpdmF0
ZSBTdHJpbmcgYmVtZXJrdW5nOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdWZlcmFibGlua3M7
CisgICAgIHByaXZhdGUgU2V0PFNwcm9iZT4gc3Byb2JlcyA9M0QgbmV3IEhhc2hTZXQ8U3Byb2Jl
PigwKTsKKworICAgIHB1YmxpYyBTbG90cmVjaHRlKCkgeworICAgIH0KKworICAgIHB1YmxpYyBT
bG90cmVjaHRlKGxvbmcgc2xvdHJlY2h0ZWlkLCBNZXNzdW5nIG1lc3N1bmcsIEJpZ0RlY2ltYWwg
dWZlcmE9CmJzdCkgeworICAgICAgICB0aGlzLnNsb3RyZWNodGVpZCA9M0Qgc2xvdHJlY2h0ZWlk
OworICAgICAgICB0aGlzLm1lc3N1bmcgPTNEIG1lc3N1bmc7CisgICAgICAgIHRoaXMudWZlcmFi
c3QgPTNEIHVmZXJhYnN0OworICAgIH0KKyAgICBwdWJsaWMgU2xvdHJlY2h0ZShsb25nIHNsb3Ry
ZWNodGVpZCwgTWVzc3VuZyBtZXNzdW5nLCBCaWdEZWNpbWFsIHVmZXJhPQpic3QsIEJpZ0RlY2lt
YWwgdHNhbmQsIEJpZ0RlY2ltYWwgdHNjaHdlYiwgQmlnRGVjaW1hbCBmdiwgQmlnRGVjaW1hbCB2
bSwgQmk9CmdEZWNpbWFsIHRpZWZlLCBCaWdEZWNpbWFsIHZzb2hsZSwgU3RyaW5nIGJlbWVya3Vu
ZywgQmlnRGVjaW1hbCB1ZmVyYWJsaW5rcz0KLCBTZXQ8U3Byb2JlPiBzcHJvYmVzKSB7CisgICAg
ICAgdGhpcy5zbG90cmVjaHRlaWQgPTNEIHNsb3RyZWNodGVpZDsKKyAgICAgICB0aGlzLm1lc3N1
bmcgPTNEIG1lc3N1bmc7CisgICAgICAgdGhpcy51ZmVyYWJzdCA9M0QgdWZlcmFic3Q7CisgICAg
ICAgdGhpcy50c2FuZCA9M0QgdHNhbmQ7CisgICAgICAgdGhpcy50c2Nod2ViID0zRCB0c2Nod2Vi
OworICAgICAgIHRoaXMuZnYgPTNEIGZ2OworICAgICAgIHRoaXMudm0gPTNEIHZtOworICAgICAg
IHRoaXMudGllZmUgPTNEIHRpZWZlOworICAgICAgIHRoaXMudnNvaGxlID0zRCB2c29obGU7Cisg
ICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKKyAgICAgICB0aGlzLnVmZXJhYmxp
bmtzID0zRCB1ZmVyYWJsaW5rczsKKyAgICAgICB0aGlzLnNwcm9iZXMgPTNEIHNwcm9iZXM7Cisg
ICAgfQorCisgICAgIEBJZAorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiU0xPVFJFQ0hURUlEIiwg
dW5pcXVlPTNEdHJ1ZSwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzPQppb249M0QxMSwgc2NhbGU9
M0QwKQorICAgIHB1YmxpYyBsb25nIGdldFNsb3RyZWNodGVpZCgpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuc2xvdHJlY2h0ZWlkOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFNsb3RyZWNo
dGVpZChsb25nIHNsb3RyZWNodGVpZCkgeworICAgICAgICB0aGlzLnNsb3RyZWNodGVpZCA9M0Qg
c2xvdHJlY2h0ZWlkOworICAgIH0KKworQE1hbnlUb09uZShmZXRjaD0zREZldGNoVHlwZS5MQVpZ
KQorICAgIEBKb2luQ29sdW1uKG5hbWU9M0QiTUVTU1VOR0lEIiwgbnVsbGFibGU9M0RmYWxzZSkK
KyAgICBwdWJsaWMgTWVzc3VuZyBnZXRNZXNzdW5nKCkgeworICAgICAgICByZXR1cm4gdGhpcy5t
ZXNzdW5nOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1lc3N1bmcoTWVzc3VuZyBtZXNz
dW5nKSB7CisgICAgICAgIHRoaXMubWVzc3VuZyA9M0QgbWVzc3VuZzsKKyAgICB9CisKKworICAg
IEBDb2x1bW4obmFtZT0zRCJVRkVSQUJTVCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0z
RDgsIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRVZmVyYWJzdCgpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMudWZlcmFic3Q7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0
VWZlcmFic3QoQmlnRGVjaW1hbCB1ZmVyYWJzdCkgeworICAgICAgICB0aGlzLnVmZXJhYnN0ID0z
RCB1ZmVyYWJzdDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJUU0FORCIsIHByZWNp
c2lvbj0zRDgsIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRUc2FuZCgpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMudHNhbmQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0
VHNhbmQoQmlnRGVjaW1hbCB0c2FuZCkgeworICAgICAgICB0aGlzLnRzYW5kID0zRCB0c2FuZDsK
KyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJUU0NIV0VCIiwgcHJlY2lzaW9uPTNEOCwg
c2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFRzY2h3ZWIoKSB7CisgICAgICAg
IHJldHVybiB0aGlzLnRzY2h3ZWI7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VHNjaHdl
YihCaWdEZWNpbWFsIHRzY2h3ZWIpIHsKKyAgICAgICAgdGhpcy50c2Nod2ViID0zRCB0c2Nod2Vi
OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkZWIiwgcHJlY2lzaW9uPTNENiwgc2Nh
bGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEZ2KCkgeworICAgICAgICByZXR1cm4g
dGhpcy5mdjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRGdihCaWdEZWNpbWFsIGZ2KSB7
CisgICAgICAgIHRoaXMuZnYgPTNEIGZ2OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNE
IlZNIiwgcHJlY2lzaW9uPTNENiwgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdl
dFZtKCkgeworICAgICAgICByZXR1cm4gdGhpcy52bTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9p
ZCBzZXRWbShCaWdEZWNpbWFsIHZtKSB7CisgICAgICAgIHRoaXMudm0gPTNEIHZtOworICAgIH0K
KworCisgICAgQENvbHVtbihuYW1lPTNEIlRJRUZFIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0Qz
KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFRpZWZlKCkgeworICAgICAgICByZXR1cm4gdGhp
cy50aWVmZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRUaWVmZShCaWdEZWNpbWFsIHRp
ZWZlKSB7CisgICAgICAgIHRoaXMudGllZmUgPTNEIHRpZWZlOworICAgIH0KKworCisgICAgQENv
bHVtbihuYW1lPTNEIlZTT0hMRSIsIHByZWNpc2lvbj0zRDYsIHNjYWxlPTNENCkKKyAgICBwdWJs
aWMgQmlnRGVjaW1hbCBnZXRWc29obGUoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnZzb2hsZTsK
KyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRWc29obGUoQmlnRGVjaW1hbCB2c29obGUpIHsK
KyAgICAgICAgdGhpcy52c29obGUgPTNEIHZzb2hsZTsKKyAgICB9CisKKworICAgIEBDb2x1bW4o
bmFtZT0zRCJCRU1FUktVTkciLCBsZW5ndGg9M0QyNDApCisgICAgcHVibGljIFN0cmluZyBnZXRC
ZW1lcmt1bmcoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJlbWVya3VuZzsKKyAgICB9CisKKyAg
ICBwdWJsaWMgdm9pZCBzZXRCZW1lcmt1bmcoU3RyaW5nIGJlbWVya3VuZykgeworICAgICAgICB0
aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1l
PTNEIlVGRVJBQkxJTktTIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBC
aWdEZWNpbWFsIGdldFVmZXJhYmxpbmtzKCkgeworICAgICAgICByZXR1cm4gdGhpcy51ZmVyYWJs
aW5rczsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVZmVyYWJsaW5rcyhCaWdEZWNpbWFs
IHVmZXJhYmxpbmtzKSB7CisgICAgICAgIHRoaXMudWZlcmFibGlua3MgPTNEIHVmZXJhYmxpbmtz
OworICAgIH0KKworQE9uZVRvTWFueShmZXRjaD0zREZldGNoVHlwZS5MQVpZLCBtYXBwZWRCeT0z
RCJzbG90cmVjaHRlIikKKyAgICBwdWJsaWMgU2V0PFNwcm9iZT4gZ2V0U3Byb2JlcygpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuc3Byb2JlczsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRT
cHJvYmVzKFNldDxTcHJvYmU+IHNwcm9iZXMpIHsKKyAgICAgICAgdGhpcy5zcHJvYmVzID0zRCBz
cHJvYmVzOworICAgIH0KK30KZGlmZiAtciBiYzRlMWJmMjYyMjcgLXIgMWU2OGVjYTI2YjhhIGJh
Y2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50PQpzL3JpdmVyL3NlZGRiL21vZGVs
L1NvaGxwcm9iZS5qYXZhCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICsw
MDAwCisrKyBiL2JhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZlci9z
ZWRkYi9tb2RlbC9Tb2hscHJvYmUuaj0KYXZhCU1vbiBBcHIgMjkgMTE6MzM6MDEgMjAxMyArMDIw
MApAQCAtMCwwICsxLDE2NCBAQAorLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5
IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKKyAqIFNvZnR3YXJl
IGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAorICoKKyAqIFRoaXMgZmlsZSBpcyBGcmVl
IFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAorICogYW5kIGNvbWVzIHdp
dGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQorICogZG9jdW1lbnRhdGlv
biBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAorICovCisK
K3BhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7CisvLyBHZW5lcmF0ZWQgMTQu
MDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCisKKworaW1wb3J0
IGphdmEubWF0aC5CaWdEZWNpbWFsOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGph
dmEudXRpbC5IYXNoU2V0OworaW1wb3J0IGphdmEudXRpbC5TZXQ7CitpbXBvcnQgamF2YXgucGVy
c2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9y
dCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2Uu
SWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKK2ltcG9ydCBqYXZheC5w
ZXJzaXN0ZW5jZS5NYW55VG9PbmU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuT25lVG9NYW55
OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOworaW1wb3J0IGphdmF4LnBlcnNpc3Rl
bmNlLlRlbXBvcmFsOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRlbXBvcmFsVHlwZTsKKwor
LyoqCisgKiBTb2hscHJvYmUgZ2VuZXJhdGVkIGJ5IGhibTJqYXZhCisgKi8KK0BFbnRpdHkKK0BU
YWJsZShuYW1lPTNEIlNPSExQUk9CRSIKKyAgICAsc2NoZW1hPTNEIlNFRERCIgorKQorcHVibGlj
IGNsYXNzIFNvaGxwcm9iZSAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7CisKKwor
ICAgICBwcml2YXRlIGxvbmcgc29obHByb2JlaWQ7CisgICAgIHByaXZhdGUgWnpwcm9iZW5haG1l
YXJ0IHp6cHJvYmVuYWhtZWFydDsKKyAgICAgcHJpdmF0ZSBTb2hsdGVzdCBzb2hsdGVzdDsKKyAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHRpZWZldm9uOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
dGllZmViaXM7CisgICAgIHByaXZhdGUgU3RyaW5nIGJlc2NocmVpYnVuZzsKKyAgICAgcHJpdmF0
ZSBEYXRlIGxhc3R1cGRhdGVkOworICAgICBwcml2YXRlIFNldDxQcm9iZWJpbGQ+IHByb2JlYmls
ZHMgPTNEIG5ldyBIYXNoU2V0PFByb2JlYmlsZD4oMCk7CisgICAgIHByaXZhdGUgU2V0PFNpZWJh
bmFseXNlPiBzaWViYW5hbHlzZXMgPTNEIG5ldyBIYXNoU2V0PFNpZWJhbmFseXNlPigwKTsKKwor
ICAgIHB1YmxpYyBTb2hscHJvYmUoKSB7CisgICAgfQorCisgICAgcHVibGljIFNvaGxwcm9iZShs
b25nIHNvaGxwcm9iZWlkLCBaenByb2JlbmFobWVhcnQgenpwcm9iZW5haG1lYXJ0LCBTbz0KaGx0
ZXN0IHNvaGx0ZXN0LCBEYXRlIGxhc3R1cGRhdGVkKSB7CisgICAgICAgIHRoaXMuc29obHByb2Jl
aWQgPTNEIHNvaGxwcm9iZWlkOworICAgICAgICB0aGlzLnp6cHJvYmVuYWhtZWFydCA9M0Qgenpw
cm9iZW5haG1lYXJ0OworICAgICAgICB0aGlzLnNvaGx0ZXN0ID0zRCBzb2hsdGVzdDsKKyAgICAg
ICAgdGhpcy5sYXN0dXBkYXRlZCA9M0QgbGFzdHVwZGF0ZWQ7CisgICAgfQorICAgIHB1YmxpYyBT
b2hscHJvYmUobG9uZyBzb2hscHJvYmVpZCwgWnpwcm9iZW5haG1lYXJ0IHp6cHJvYmVuYWhtZWFy
dCwgU289CmhsdGVzdCBzb2hsdGVzdCwgQmlnRGVjaW1hbCB0aWVmZXZvbiwgQmlnRGVjaW1hbCB0
aWVmZWJpcywgU3RyaW5nIGJlc2NocmVpYj0KdW5nLCBEYXRlIGxhc3R1cGRhdGVkLCBTZXQ8UHJv
YmViaWxkPiBwcm9iZWJpbGRzLCBTZXQ8U2llYmFuYWx5c2U+IHNpZWJhbmFsPQp5c2VzKSB7Cisg
ICAgICAgdGhpcy5zb2hscHJvYmVpZCA9M0Qgc29obHByb2JlaWQ7CisgICAgICAgdGhpcy56enBy
b2JlbmFobWVhcnQgPTNEIHp6cHJvYmVuYWhtZWFydDsKKyAgICAgICB0aGlzLnNvaGx0ZXN0ID0z
RCBzb2hsdGVzdDsKKyAgICAgICB0aGlzLnRpZWZldm9uID0zRCB0aWVmZXZvbjsKKyAgICAgICB0
aGlzLnRpZWZlYmlzID0zRCB0aWVmZWJpczsKKyAgICAgICB0aGlzLmJlc2NocmVpYnVuZyA9M0Qg
YmVzY2hyZWlidW5nOworICAgICAgIHRoaXMubGFzdHVwZGF0ZWQgPTNEIGxhc3R1cGRhdGVkOwor
ICAgICAgIHRoaXMucHJvYmViaWxkcyA9M0QgcHJvYmViaWxkczsKKyAgICAgICB0aGlzLnNpZWJh
bmFseXNlcyA9M0Qgc2llYmFuYWx5c2VzOworICAgIH0KKworICAgICBASWQKKworCisgICAgQENv
bHVtbihuYW1lPTNEIlNPSExQUk9CRUlEIiwgdW5pcXVlPTNEdHJ1ZSwgbnVsbGFibGU9M0RmYWxz
ZSwgcHJlY2lzaT0Kb249M0QxMSwgc2NhbGU9M0QwKQorICAgIHB1YmxpYyBsb25nIGdldFNvaGxw
cm9iZWlkKCkgeworICAgICAgICByZXR1cm4gdGhpcy5zb2hscHJvYmVpZDsKKyAgICB9CisKKyAg
ICBwdWJsaWMgdm9pZCBzZXRTb2hscHJvYmVpZChsb25nIHNvaGxwcm9iZWlkKSB7CisgICAgICAg
IHRoaXMuc29obHByb2JlaWQgPTNEIHNvaGxwcm9iZWlkOworICAgIH0KKworQE1hbnlUb09uZShm
ZXRjaD0zREZldGNoVHlwZS5MQVpZKQorICAgIEBKb2luQ29sdW1uKG5hbWU9M0QiUFJPQkVOQUhN
RUFSVElEIiwgbnVsbGFibGU9M0RmYWxzZSkKKyAgICBwdWJsaWMgWnpwcm9iZW5haG1lYXJ0IGdl
dFp6cHJvYmVuYWhtZWFydCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuenpwcm9iZW5haG1lYXJ0
OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFp6cHJvYmVuYWhtZWFydChaenByb2JlbmFo
bWVhcnQgenpwcm9iZW5haG1lYXJ0KSB7CisgICAgICAgIHRoaXMuenpwcm9iZW5haG1lYXJ0ID0z
RCB6enByb2JlbmFobWVhcnQ7CisgICAgfQorCitATWFueVRvT25lKGZldGNoPTNERmV0Y2hUeXBl
LkxBWlkpCisgICAgQEpvaW5Db2x1bW4obmFtZT0zRCJTT0hMVEVTVElEIiwgbnVsbGFibGU9M0Rm
YWxzZSkKKyAgICBwdWJsaWMgU29obHRlc3QgZ2V0U29obHRlc3QoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLnNvaGx0ZXN0OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFNvaGx0ZXN0KFNv
aGx0ZXN0IHNvaGx0ZXN0KSB7CisgICAgICAgIHRoaXMuc29obHRlc3QgPTNEIHNvaGx0ZXN0Owor
ICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlRJRUZFVk9OIiwgcHJlY2lzaW9uPTNEOCwg
c2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFRpZWZldm9uKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy50aWVmZXZvbjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRUaWVm
ZXZvbihCaWdEZWNpbWFsIHRpZWZldm9uKSB7CisgICAgICAgIHRoaXMudGllZmV2b24gPTNEIHRp
ZWZldm9uOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlRJRUZFQklTIiwgcHJlY2lz
aW9uPTNEOCwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFRpZWZlYmlzKCkg
eworICAgICAgICByZXR1cm4gdGhpcy50aWVmZWJpczsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9p
ZCBzZXRUaWVmZWJpcyhCaWdEZWNpbWFsIHRpZWZlYmlzKSB7CisgICAgICAgIHRoaXMudGllZmVi
aXMgPTNEIHRpZWZlYmlzOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkJFU0NIUkVJ
QlVORyIsIGxlbmd0aD0zRDEwMjQpCisgICAgcHVibGljIFN0cmluZyBnZXRCZXNjaHJlaWJ1bmco
KSB7CisgICAgICAgIHJldHVybiB0aGlzLmJlc2NocmVpYnVuZzsKKyAgICB9CisKKyAgICBwdWJs
aWMgdm9pZCBzZXRCZXNjaHJlaWJ1bmcoU3RyaW5nIGJlc2NocmVpYnVuZykgeworICAgICAgICB0
aGlzLmJlc2NocmVpYnVuZyA9M0QgYmVzY2hyZWlidW5nOworICAgIH0KKworICAgIEBUZW1wb3Jh
bChUZW1wb3JhbFR5cGUuREFURSkKKyAgICBAQ29sdW1uKG5hbWU9M0QiTEFTVFVQREFURUQiLCBu
dWxsYWJsZT0zRGZhbHNlLCBsZW5ndGg9M0Q3KQorICAgIHB1YmxpYyBEYXRlIGdldExhc3R1cGRh
dGVkKCkgeworICAgICAgICByZXR1cm4gdGhpcy5sYXN0dXBkYXRlZDsKKyAgICB9CisKKyAgICBw
dWJsaWMgdm9pZCBzZXRMYXN0dXBkYXRlZChEYXRlIGxhc3R1cGRhdGVkKSB7CisgICAgICAgIHRo
aXMubGFzdHVwZGF0ZWQgPTNEIGxhc3R1cGRhdGVkOworICAgIH0KKworQE9uZVRvTWFueShmZXRj
aD0zREZldGNoVHlwZS5MQVpZLCBtYXBwZWRCeT0zRCJzb2hscHJvYmUiKQorICAgIHB1YmxpYyBT
ZXQ8UHJvYmViaWxkPiBnZXRQcm9iZWJpbGRzKCkgeworICAgICAgICByZXR1cm4gdGhpcy5wcm9i
ZWJpbGRzOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFByb2JlYmlsZHMoU2V0PFByb2Jl
YmlsZD4gcHJvYmViaWxkcykgeworICAgICAgICB0aGlzLnByb2JlYmlsZHMgPTNEIHByb2JlYmls
ZHM7CisgICAgfQorCitAT25lVG9NYW55KGZldGNoPTNERmV0Y2hUeXBlLkxBWlksIG1hcHBlZEJ5
PTNEInNvaGxwcm9iZSIpCisgICAgcHVibGljIFNldDxTaWViYW5hbHlzZT4gZ2V0U2llYmFuYWx5
c2VzKCkgeworICAgICAgICByZXR1cm4gdGhpcy5zaWViYW5hbHlzZXM7CisgICAgfQorCisgICAg
cHVibGljIHZvaWQgc2V0U2llYmFuYWx5c2VzKFNldDxTaWViYW5hbHlzZT4gc2llYmFuYWx5c2Vz
KSB7CisgICAgICAgIHRoaXMuc2llYmFuYWx5c2VzID0zRCBzaWViYW5hbHlzZXM7CisgICAgfQor
CisKKworCit9CisKKwpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2Vu
ZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMvcml2ZXIvc2VkZGIvbW9kZWwvU29o
bHRlc3QuamF2YQotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAor
KysgYi9iYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIv
bW9kZWwvU29obHRlc3QuamE9CnZhCU1vbiBBcHIgMjkgMTE6MzM6MDEgMjAxMyArMDIwMApAQCAt
MCwwICsxLDMwNyBAQAorLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRl
c2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKKyAqIFNvZnR3YXJlIGVuZ2lu
ZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAorICoKKyAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3
YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAorICogYW5kIGNvbWVzIHdpdGggQUJT
T0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQorICogZG9jdW1lbnRhdGlvbiBjb21p
bmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAorICovCisKK3BhY2th
Z2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7CisvLyBHZW5lcmF0ZWQgMTQuMDYuMjAx
MiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCisKKworaW1wb3J0IGphdmEu
bWF0aC5CaWdEZWNpbWFsOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRp
bC5IYXNoU2V0OworaW1wb3J0IGphdmEudXRpbC5TZXQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVu
Y2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZh
eC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7Citp
bXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0
ZW5jZS5NYW55VG9PbmU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuT25lVG9NYW55OworaW1w
b3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRl
bXBvcmFsOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRlbXBvcmFsVHlwZTsKKworLyoqCisg
KiBTb2hsdGVzdCBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKKyAqLworQEVudGl0eQorQFRhYmxlKG5h
bWU9M0QiU09ITFRFU1QiCisgICAgLHNjaGVtYT0zRCJTRUREQiIKKykKK3B1YmxpYyBjbGFzcyBT
b2hsdGVzdCAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7CisKKyAgICAgcHJpdmF0
ZSBsb25nIHNvaGx0ZXN0aWQ7CisgICAgIHByaXZhdGUgU3RhdGlvbiBzdGF0aW9uOworICAgICBw
cml2YXRlIFp6c29uZGllcnVuZ2FydCB6enNvbmRpZXJ1bmdhcnQ7CisgICAgIHByaXZhdGUgWnph
cmNoaXYgenphcmNoaXY7CisgICAgIHByaXZhdGUgRGF0ZSBkYXR1bTsKKyAgICAgcHJpdmF0ZSBi
b29sZWFuIGlzdG51cmphaHI7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBrbTsKKyAgICAgcHJp
dmF0ZSBCaWdEZWNpbWFsIGFic3RhbmQ7CisgICAgIHByaXZhdGUgYm9vbGVhbiBhYnN0aXN0dm9u
bGlua3M7CisgICAgIHByaXZhdGUgYm9vbGVhbiBhYnN0YmV6dWc7CisgICAgIHByaXZhdGUgQmln
RGVjaW1hbCBhYnN0b2Zmc2V0OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgYWJzdGxpbmtzOwor
ICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcmVjaHRzOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
aG9jaDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGhvZWhlOworICAgICBwcml2YXRlIFN0cmlu
ZyBiZW1lcmt1bmc7CisgICAgIHByaXZhdGUgU3RyaW5nIHNvaGxlYmVzY2hyZWliOworICAgICBw
cml2YXRlIFN0cmluZyBzb25kaWVydW5nYmVzY2hyZWliOworICAgICBwcml2YXRlIERhdGUgbGFz
dHVwZGF0ZWQ7CisgICAgIHByaXZhdGUgU2V0PEJpbGQ+IGJpbGRzID0zRCBuZXcgSGFzaFNldDxC
aWxkPigwKTsKKyAgICAgcHJpdmF0ZSBTZXQ8U29obHByb2JlPiBzb2hscHJvYmVzID0zRCBuZXcg
SGFzaFNldDxTb2hscHJvYmU+KDApOworCisgICAgcHVibGljIFNvaGx0ZXN0KCkgeworICAgIH0K
KworCisgICAgcHVibGljIFNvaGx0ZXN0KGxvbmcgc29obHRlc3RpZCwgU3RhdGlvbiBzdGF0aW9u
LCBEYXRlIGRhdHVtLCBib29sZWFuID0KaXN0bnVyamFociwgQmlnRGVjaW1hbCBhYnN0YW5kLCBi
b29sZWFuIGFic3Rpc3R2b25saW5rcywgYm9vbGVhbiBhYnN0YmV6dWcsPQogQmlnRGVjaW1hbCBh
YnN0b2Zmc2V0LCBEYXRlIGxhc3R1cGRhdGVkKSB7CisgICAgICAgIHRoaXMuc29obHRlc3RpZCA9
M0Qgc29obHRlc3RpZDsKKyAgICAgICAgdGhpcy5zdGF0aW9uID0zRCBzdGF0aW9uOworICAgICAg
ICB0aGlzLmRhdHVtID0zRCBkYXR1bTsKKyAgICAgICAgdGhpcy5pc3RudXJqYWhyID0zRCBpc3Ru
dXJqYWhyOworICAgICAgICB0aGlzLmFic3RhbmQgPTNEIGFic3RhbmQ7CisgICAgICAgIHRoaXMu
YWJzdGlzdHZvbmxpbmtzID0zRCBhYnN0aXN0dm9ubGlua3M7CisgICAgICAgIHRoaXMuYWJzdGJl
enVnID0zRCBhYnN0YmV6dWc7CisgICAgICAgIHRoaXMuYWJzdG9mZnNldCA9M0QgYWJzdG9mZnNl
dDsKKyAgICAgICAgdGhpcy5sYXN0dXBkYXRlZCA9M0QgbGFzdHVwZGF0ZWQ7CisgICAgfQorICAg
IHB1YmxpYyBTb2hsdGVzdChsb25nIHNvaGx0ZXN0aWQsIFN0YXRpb24gc3RhdGlvbiwgWnpzb25k
aWVydW5nYXJ0IHp6c289Cm5kaWVydW5nYXJ0LCBaemFyY2hpdiB6emFyY2hpdiwgRGF0ZSBkYXR1
bSwgYm9vbGVhbiBpc3RudXJqYWhyLCBCaWdEZWNpbWFsID0Ka20sIEJpZ0RlY2ltYWwgYWJzdGFu
ZCwgYm9vbGVhbiBhYnN0aXN0dm9ubGlua3MsIGJvb2xlYW4gYWJzdGJlenVnLCBCaWdEZWNpPQpt
YWwgYWJzdG9mZnNldCwgQmlnRGVjaW1hbCBhYnN0bGlua3MsIEJpZ0RlY2ltYWwgcmVjaHRzLCBC
aWdEZWNpbWFsIGhvY2gsIEI9CmlnRGVjaW1hbCBob2VoZSwgU3RyaW5nIGJlbWVya3VuZywgU3Ry
aW5nIHNvaGxlYmVzY2hyZWliLCBTdHJpbmcgc29uZGllcnVuZz0KYmVzY2hyZWliLCBEYXRlIGxh
c3R1cGRhdGVkLCBTZXQ8QmlsZD4gYmlsZHMsIFNldDxTb2hscHJvYmU+IHNvaGxwcm9iZXMpIHsK
KyAgICAgICB0aGlzLnNvaGx0ZXN0aWQgPTNEIHNvaGx0ZXN0aWQ7CisgICAgICAgdGhpcy5zdGF0
aW9uID0zRCBzdGF0aW9uOworICAgICAgIHRoaXMuenpzb25kaWVydW5nYXJ0ID0zRCB6enNvbmRp
ZXJ1bmdhcnQ7CisgICAgICAgdGhpcy56emFyY2hpdiA9M0QgenphcmNoaXY7CisgICAgICAgdGhp
cy5kYXR1bSA9M0QgZGF0dW07CisgICAgICAgdGhpcy5pc3RudXJqYWhyID0zRCBpc3RudXJqYWhy
OworICAgICAgIHRoaXMua20gPTNEIGttOworICAgICAgIHRoaXMuYWJzdGFuZCA9M0QgYWJzdGFu
ZDsKKyAgICAgICB0aGlzLmFic3Rpc3R2b25saW5rcyA9M0QgYWJzdGlzdHZvbmxpbmtzOworICAg
ICAgIHRoaXMuYWJzdGJlenVnID0zRCBhYnN0YmV6dWc7CisgICAgICAgdGhpcy5hYnN0b2Zmc2V0
ID0zRCBhYnN0b2Zmc2V0OworICAgICAgIHRoaXMuYWJzdGxpbmtzID0zRCBhYnN0bGlua3M7Cisg
ICAgICAgdGhpcy5yZWNodHMgPTNEIHJlY2h0czsKKyAgICAgICB0aGlzLmhvY2ggPTNEIGhvY2g7
CisgICAgICAgdGhpcy5ob2VoZSA9M0QgaG9laGU7CisgICAgICAgdGhpcy5iZW1lcmt1bmcgPTNE
IGJlbWVya3VuZzsKKyAgICAgICB0aGlzLnNvaGxlYmVzY2hyZWliID0zRCBzb2hsZWJlc2NocmVp
YjsKKyAgICAgICB0aGlzLnNvbmRpZXJ1bmdiZXNjaHJlaWIgPTNEIHNvbmRpZXJ1bmdiZXNjaHJl
aWI7CisgICAgICAgdGhpcy5sYXN0dXBkYXRlZCA9M0QgbGFzdHVwZGF0ZWQ7CisgICAgICAgdGhp
cy5iaWxkcyA9M0QgYmlsZHM7CisgICAgICAgdGhpcy5zb2hscHJvYmVzID0zRCBzb2hscHJvYmVz
OworICAgIH0KKworICAgICBASWQKKworCisgICAgQENvbHVtbihuYW1lPTNEIlNPSExURVNUSUQi
LCB1bmlxdWU9M0R0cnVlLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpbz0Kbj0zRDExLCBzY2Fs
ZT0zRDApCisgICAgcHVibGljIGxvbmcgZ2V0U29obHRlc3RpZCgpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuc29obHRlc3RpZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRTb2hsdGVzdGlk
KGxvbmcgc29obHRlc3RpZCkgeworICAgICAgICB0aGlzLnNvaGx0ZXN0aWQgPTNEIHNvaGx0ZXN0
aWQ7CisgICAgfQorCitATWFueVRvT25lKGZldGNoPTNERmV0Y2hUeXBlLkxBWlkpCisgICAgQEpv
aW5Db2x1bW4obmFtZT0zRCJTVEFUSU9OSUQiLCBudWxsYWJsZT0zRGZhbHNlKQorICAgIHB1Ymxp
YyBTdGF0aW9uIGdldFN0YXRpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLnN0YXRpb247Cisg
ICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0U3RhdGlvbihTdGF0aW9uIHN0YXRpb24pIHsKKyAg
ICAgICAgdGhpcy5zdGF0aW9uID0zRCBzdGF0aW9uOworICAgIH0KKworQE1hbnlUb09uZShmZXRj
aD0zREZldGNoVHlwZS5MQVpZKQorICAgIEBKb2luQ29sdW1uKG5hbWU9M0QiU09ORElFUlVOR0FS
VElEIikKKyAgICBwdWJsaWMgWnpzb25kaWVydW5nYXJ0IGdldFp6c29uZGllcnVuZ2FydCgpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuenpzb25kaWVydW5nYXJ0OworICAgIH0KKworICAgIHB1Ymxp
YyB2b2lkIHNldFp6c29uZGllcnVuZ2FydChaenNvbmRpZXJ1bmdhcnQgenpzb25kaWVydW5nYXJ0
KSB7CisgICAgICAgIHRoaXMuenpzb25kaWVydW5nYXJ0ID0zRCB6enNvbmRpZXJ1bmdhcnQ7Cisg
ICAgfQorCitATWFueVRvT25lKGZldGNoPTNERmV0Y2hUeXBlLkxBWlkpCisgICAgQEpvaW5Db2x1
bW4obmFtZT0zRCJBUkNISVZJRCIpCisgICAgcHVibGljIFp6YXJjaGl2IGdldFp6YXJjaGl2KCkg
eworICAgICAgICByZXR1cm4gdGhpcy56emFyY2hpdjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9p
ZCBzZXRaemFyY2hpdihaemFyY2hpdiB6emFyY2hpdikgeworICAgICAgICB0aGlzLnp6YXJjaGl2
ID0zRCB6emFyY2hpdjsKKyAgICB9CisKKyAgICBAVGVtcG9yYWwoVGVtcG9yYWxUeXBlLkRBVEUp
CisgICAgQENvbHVtbihuYW1lPTNEIkRBVFVNIiwgbnVsbGFibGU9M0RmYWxzZSwgbGVuZ3RoPTNE
NykKKyAgICBwdWJsaWMgRGF0ZSBnZXREYXR1bSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZGF0
dW07CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RGF0dW0oRGF0ZSBkYXR1bSkgeworICAg
ICAgICB0aGlzLmRhdHVtID0zRCBkYXR1bTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0z
RCJJU1ROVVJKQUhSIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMSwgc2NhbGU9M0Q9
CjApCisgICAgcHVibGljIGJvb2xlYW4gaXNJc3RudXJqYWhyKCkgeworICAgICAgICByZXR1cm4g
dGhpcy5pc3RudXJqYWhyOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldElzdG51cmphaHIo
Ym9vbGVhbiBpc3RudXJqYWhyKSB7CisgICAgICAgIHRoaXMuaXN0bnVyamFociA9M0QgaXN0bnVy
amFocjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJLTSIsIHByZWNpc2lvbj0zRDgs
IHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRLbSgpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMua207CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0S20oQmlnRGVjaW1hbCBr
bSkgeworICAgICAgICB0aGlzLmttID0zRCBrbTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFt
ZT0zRCJBQlNUQU5EIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0Qz
KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEFic3RhbmQoKSB7CisgICAgICAgIHJldHVybiB0
aGlzLmFic3RhbmQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0QWJzdGFuZChCaWdEZWNp
bWFsIGFic3RhbmQpIHsKKyAgICAgICAgdGhpcy5hYnN0YW5kID0zRCBhYnN0YW5kOworICAgIH0K
KworCisgICAgQENvbHVtbihuYW1lPTNEIkFCU1RJU1RWT05MSU5LUyIsIG51bGxhYmxlPTNEZmFs
c2UsIHByZWNpc2lvbj0zRDEsIHNjYT0KbGU9M0QwKQorICAgIHB1YmxpYyBib29sZWFuIGlzQWJz
dGlzdHZvbmxpbmtzKCkgeworICAgICAgICByZXR1cm4gdGhpcy5hYnN0aXN0dm9ubGlua3M7Cisg
ICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0QWJzdGlzdHZvbmxpbmtzKGJvb2xlYW4gYWJzdGlz
dHZvbmxpbmtzKSB7CisgICAgICAgIHRoaXMuYWJzdGlzdHZvbmxpbmtzID0zRCBhYnN0aXN0dm9u
bGlua3M7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiQUJTVEJFWlVHIiwgbnVsbGFi
bGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMSwgc2NhbGU9M0QwKQorICAgIHB1YmxpYyBib29sZWFu
IGlzQWJzdGJlenVnKCkgeworICAgICAgICByZXR1cm4gdGhpcy5hYnN0YmV6dWc7CisgICAgfQor
CisgICAgcHVibGljIHZvaWQgc2V0QWJzdGJlenVnKGJvb2xlYW4gYWJzdGJlenVnKSB7CisgICAg
ICAgIHRoaXMuYWJzdGJlenVnID0zRCBhYnN0YmV6dWc7CisgICAgfQorCisKKyAgICBAQ29sdW1u
KG5hbWU9M0QiQUJTVE9GRlNFVCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDgsIHNj
YWxlPTNEPQozKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEFic3RvZmZzZXQoKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLmFic3RvZmZzZXQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0
QWJzdG9mZnNldChCaWdEZWNpbWFsIGFic3RvZmZzZXQpIHsKKyAgICAgICAgdGhpcy5hYnN0b2Zm
c2V0ID0zRCBhYnN0b2Zmc2V0OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkFCU1RM
SU5LUyIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXRBYnN0bGlua3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmFic3RsaW5rczsKKyAgICB9CisK
KyAgICBwdWJsaWMgdm9pZCBzZXRBYnN0bGlua3MoQmlnRGVjaW1hbCBhYnN0bGlua3MpIHsKKyAg
ICAgICAgdGhpcy5hYnN0bGlua3MgPTNEIGFic3RsaW5rczsKKyAgICB9CisKKworICAgIEBDb2x1
bW4obmFtZT0zRCJSRUNIVFMiLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QzKQorICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldFJlY2h0cygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucmVjaHRzOwor
ICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFJlY2h0cyhCaWdEZWNpbWFsIHJlY2h0cykgewor
ICAgICAgICB0aGlzLnJlY2h0cyA9M0QgcmVjaHRzOworICAgIH0KKworCisgICAgQENvbHVtbihu
YW1lPTNEIkhPQ0giLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdE
ZWNpbWFsIGdldEhvY2goKSB7CisgICAgICAgIHJldHVybiB0aGlzLmhvY2g7CisgICAgfQorCisg
ICAgcHVibGljIHZvaWQgc2V0SG9jaChCaWdEZWNpbWFsIGhvY2gpIHsKKyAgICAgICAgdGhpcy5o
b2NoID0zRCBob2NoOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkhPRUhFIiwgcHJl
Y2lzaW9uPTNEOCwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEhvZWhlKCkg
eworICAgICAgICByZXR1cm4gdGhpcy5ob2VoZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBz
ZXRIb2VoZShCaWdEZWNpbWFsIGhvZWhlKSB7CisgICAgICAgIHRoaXMuaG9laGUgPTNEIGhvZWhl
OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkJFTUVSS1VORyIsIGxlbmd0aD0zRDI0
MCkKKyAgICBwdWJsaWMgU3RyaW5nIGdldEJlbWVya3VuZygpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuYmVtZXJrdW5nOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEJlbWVya3VuZyhTdHJp
bmcgYmVtZXJrdW5nKSB7CisgICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7Cisg
ICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiU09ITEVCRVNDSFJFSUIiLCBsZW5ndGg9M0Qx
MDI0KQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0U29obGViZXNjaHJlaWIoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLnNvaGxlYmVzY2hyZWliOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFNv
aGxlYmVzY2hyZWliKFN0cmluZyBzb2hsZWJlc2NocmVpYikgeworICAgICAgICB0aGlzLnNvaGxl
YmVzY2hyZWliID0zRCBzb2hsZWJlc2NocmVpYjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFt
ZT0zRCJTT05ESUVSVU5HQkVTQ0hSRUlCIiwgbGVuZ3RoPTNEMTAyNCkKKyAgICBwdWJsaWMgU3Ry
aW5nIGdldFNvbmRpZXJ1bmdiZXNjaHJlaWIoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnNvbmRp
ZXJ1bmdiZXNjaHJlaWI7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0U29uZGllcnVuZ2Jl
c2NocmVpYihTdHJpbmcgc29uZGllcnVuZ2Jlc2NocmVpYikgeworICAgICAgICB0aGlzLnNvbmRp
ZXJ1bmdiZXNjaHJlaWIgPTNEIHNvbmRpZXJ1bmdiZXNjaHJlaWI7CisgICAgfQorCisgICAgQFRl
bXBvcmFsKFRlbXBvcmFsVHlwZS5EQVRFKQorICAgIEBDb2x1bW4obmFtZT0zRCJMQVNUVVBEQVRF
RCIsIG51bGxhYmxlPTNEZmFsc2UsIGxlbmd0aD0zRDcpCisgICAgcHVibGljIERhdGUgZ2V0TGFz
dHVwZGF0ZWQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmxhc3R1cGRhdGVkOworICAgIH0KKwor
ICAgIHB1YmxpYyB2b2lkIHNldExhc3R1cGRhdGVkKERhdGUgbGFzdHVwZGF0ZWQpIHsKKyAgICAg
ICAgdGhpcy5sYXN0dXBkYXRlZCA9M0QgbGFzdHVwZGF0ZWQ7CisgICAgfQorCitAT25lVG9NYW55
KGZldGNoPTNERmV0Y2hUeXBlLkxBWlksIG1hcHBlZEJ5PTNEInNvaGx0ZXN0IikKKyAgICBwdWJs
aWMgU2V0PEJpbGQ+IGdldEJpbGRzKCkgeworICAgICAgICByZXR1cm4gdGhpcy5iaWxkczsKKyAg
ICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRCaWxkcyhTZXQ8QmlsZD4gYmlsZHMpIHsKKyAgICAg
ICAgdGhpcy5iaWxkcyA9M0QgYmlsZHM7CisgICAgfQorCitAT25lVG9NYW55KGZldGNoPTNERmV0
Y2hUeXBlLkxBWlksIG1hcHBlZEJ5PTNEInNvaGx0ZXN0IikKKyAgICBwdWJsaWMgU2V0PFNvaGxw
cm9iZT4gZ2V0U29obHByb2JlcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc29obHByb2JlczsK
KyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRTb2hscHJvYmVzKFNldDxTb2hscHJvYmU+IHNv
aGxwcm9iZXMpIHsKKyAgICAgICAgdGhpcy5zb2hscHJvYmVzID0zRCBzb2hscHJvYmVzOworICAg
IH0KK30KZGlmZiAtciBiYzRlMWJmMjYyMjcgLXIgMWU2OGVjYTI2YjhhIGJhY2tlbmQvc3JjL21h
aW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50PQpzL3JpdmVyL3NlZGRiL21vZGVsL1Nwcm9iZS5qYXZh
Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL2JhY2tl
bmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZlci9zZWRkYi9tb2RlbC9TcHJv
YmUuamF2YT0KCU1vbiBBcHIgMjkgMTE6MzM6MDEgMjAxMyArMDIwMApAQCAtMCwwICsxLDE2MiBA
QAorLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1D
Mz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKKyAqIFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IElu
dGV2YXRpb24gR21iSAorICoKKyAqIFRoaXMgZmlsZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRo
ZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAorICogYW5kIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBX
QVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQorICogZG9jdW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZl
NEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAorICovCisKK3BhY2thZ2Ugb3JnLmRpdmU0
ZWxlbWVudHMuc2VkZGIubW9kZWw7CisvLyBHZW5lcmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBi
eSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCisKKworaW1wb3J0IGphdmEubWF0aC5CaWdEZWNp
bWFsOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0ZU92ZXJyaWRlOworaW1wb3J0
IGphdmF4LnBlcnNpc3RlbmNlLkF0dHJpYnV0ZU92ZXJyaWRlczsKK2ltcG9ydCBqYXZheC5wZXJz
aXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW1iZWRkZWRJZDsKK2lt
cG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2Uu
RmV0Y2hUeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkpvaW5Db2x1bW47CitpbXBvcnQg
amF2YXgucGVyc2lzdGVuY2UuTWFueVRvT25lOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRh
YmxlOworCisvKioKKyAqIFNwcm9iZSBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKKyAqLworQEVudGl0
eQorQFRhYmxlKG5hbWU9M0QiU1BST0JFIgorICAgICxzY2hlbWE9M0QiU0VEREIiCispCitwdWJs
aWMgY2xhc3MgU3Byb2JlICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKKworCisg
ICAgIHByaXZhdGUgU3Byb2JlSWQgaWQ7CisgICAgIHByaXZhdGUgU2xvdHJlY2h0ZSBzbG90cmVj
aHRlOworICAgICBwcml2YXRlIHNob3J0IHdwcm96cGt0OworICAgICBwcml2YXRlIEJpZ0RlY2lt
YWwgd3BrdDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHZwa3Q7CisgICAgIHByaXZhdGUgQmln
RGVjaW1hbCBjc2FuZHBrdDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGNzY2h3ZWJwa3Q7Cisg
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCBzYW5kdHJpZWI7CisgICAgIHByaXZhdGUgQmlnRGVjaW1h
bCBzY2h3ZWJ0cmllYjsKKworICAgIHB1YmxpYyBTcHJvYmUoKSB7CisgICAgfQorCisKKyAgICBw
dWJsaWMgU3Byb2JlKFNwcm9iZUlkIGlkLCBTbG90cmVjaHRlIHNsb3RyZWNodGUsIHNob3J0IHdw
cm96cGt0LCBCaWdEPQplY2ltYWwgd3BrdCwgQmlnRGVjaW1hbCB2cGt0LCBCaWdEZWNpbWFsIGNz
YW5kcGt0LCBCaWdEZWNpbWFsIGNzY2h3ZWJwa3QpIHsKKyAgICAgICAgdGhpcy5pZCA9M0QgaWQ7
CisgICAgICAgIHRoaXMuc2xvdHJlY2h0ZSA9M0Qgc2xvdHJlY2h0ZTsKKyAgICAgICAgdGhpcy53
cHJvenBrdCA9M0Qgd3Byb3pwa3Q7CisgICAgICAgIHRoaXMud3BrdCA9M0Qgd3BrdDsKKyAgICAg
ICAgdGhpcy52cGt0ID0zRCB2cGt0OworICAgICAgICB0aGlzLmNzYW5kcGt0ID0zRCBjc2FuZHBr
dDsKKyAgICAgICAgdGhpcy5jc2Nod2VicGt0ID0zRCBjc2Nod2VicGt0OworICAgIH0KKyAgICBw
dWJsaWMgU3Byb2JlKFNwcm9iZUlkIGlkLCBTbG90cmVjaHRlIHNsb3RyZWNodGUsIHNob3J0IHdw
cm96cGt0LCBCaWdEPQplY2ltYWwgd3BrdCwgQmlnRGVjaW1hbCB2cGt0LCBCaWdEZWNpbWFsIGNz
YW5kcGt0LCBCaWdEZWNpbWFsIGNzY2h3ZWJwa3QsIEI9CmlnRGVjaW1hbCBzYW5kdHJpZWIsIEJp
Z0RlY2ltYWwgc2Nod2VidHJpZWIpIHsKKyAgICAgICB0aGlzLmlkID0zRCBpZDsKKyAgICAgICB0
aGlzLnNsb3RyZWNodGUgPTNEIHNsb3RyZWNodGU7CisgICAgICAgdGhpcy53cHJvenBrdCA9M0Qg
d3Byb3pwa3Q7CisgICAgICAgdGhpcy53cGt0ID0zRCB3cGt0OworICAgICAgIHRoaXMudnBrdCA9
M0QgdnBrdDsKKyAgICAgICB0aGlzLmNzYW5kcGt0ID0zRCBjc2FuZHBrdDsKKyAgICAgICB0aGlz
LmNzY2h3ZWJwa3QgPTNEIGNzY2h3ZWJwa3Q7CisgICAgICAgdGhpcy5zYW5kdHJpZWIgPTNEIHNh
bmR0cmllYjsKKyAgICAgICB0aGlzLnNjaHdlYnRyaWViID0zRCBzY2h3ZWJ0cmllYjsKKyAgICB9
CisKKyAgICAgQEVtYmVkZGVkSWQKKworCisgICAgQEF0dHJpYnV0ZU92ZXJyaWRlcyggeworICAg
ICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJzbG90cmVjaHRlaWQiLCBjb2x1bW49M0RA
Q29sdW1uKG5hbWU9M0Q9CiJTTE9UUkVDSFRFSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNp
b249M0QxMSwgc2NhbGU9M0QwKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0z
RCJsZmRuciIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJMRkROUiI9CiwgbnVsbGFibGU9M0Rm
YWxzZSwgcHJlY2lzaW9uPTNENSwgc2NhbGU9M0QwKSApIH0gKQorICAgIHB1YmxpYyBTcHJvYmVJ
ZCBnZXRJZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaWQ7CisgICAgfQorCisgICAgcHVibGlj
IHZvaWQgc2V0SWQoU3Byb2JlSWQgaWQpIHsKKyAgICAgICAgdGhpcy5pZCA9M0QgaWQ7CisgICAg
fQorCitATWFueVRvT25lKGZldGNoPTNERmV0Y2hUeXBlLkxBWlkpCisgICAgQEpvaW5Db2x1bW4o
bmFtZT0zRCJTTE9UUkVDSFRFSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBpbnNlcnRhYmxlPTNEZmFs
cz0KZSwgdXBkYXRhYmxlPTNEZmFsc2UpCisgICAgcHVibGljIFNsb3RyZWNodGUgZ2V0U2xvdHJl
Y2h0ZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc2xvdHJlY2h0ZTsKKyAgICB9CisKKyAgICBw
dWJsaWMgdm9pZCBzZXRTbG90cmVjaHRlKFNsb3RyZWNodGUgc2xvdHJlY2h0ZSkgeworICAgICAg
ICB0aGlzLnNsb3RyZWNodGUgPTNEIHNsb3RyZWNodGU7CisgICAgfQorCisKKyAgICBAQ29sdW1u
KG5hbWU9M0QiV1BST1pQS1QiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QzLCBzY2Fs
ZT0zRDApCisgICAgcHVibGljIHNob3J0IGdldFdwcm96cGt0KCkgeworICAgICAgICByZXR1cm4g
dGhpcy53cHJvenBrdDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRXcHJvenBrdChzaG9y
dCB3cHJvenBrdCkgeworICAgICAgICB0aGlzLndwcm96cGt0ID0zRCB3cHJvenBrdDsKKyAgICB9
CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJXUEtUIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lz
aW9uPTNEOCwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFdwa3QoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLndwa3Q7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0V3Br
dChCaWdEZWNpbWFsIHdwa3QpIHsKKyAgICAgICAgdGhpcy53cGt0ID0zRCB3cGt0OworICAgIH0K
KworCisgICAgQENvbHVtbihuYW1lPTNEIlZQS1QiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNp
b249M0Q2LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VnBrdCgpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMudnBrdDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRWcGt0
KEJpZ0RlY2ltYWwgdnBrdCkgeworICAgICAgICB0aGlzLnZwa3QgPTNEIHZwa3Q7CisgICAgfQor
CisKKyAgICBAQ29sdW1uKG5hbWU9M0QiQ1NBTkRQS1QiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVj
aXNpb249M0Q4LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0Q3NhbmRwa3Qo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLmNzYW5kcGt0OworICAgIH0KKworICAgIHB1YmxpYyB2
b2lkIHNldENzYW5kcGt0KEJpZ0RlY2ltYWwgY3NhbmRwa3QpIHsKKyAgICAgICAgdGhpcy5jc2Fu
ZHBrdCA9M0QgY3NhbmRwa3Q7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiQ1NDSFdF
QlBLVCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEPQozKQorICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldENzY2h3ZWJwa3QoKSB7CisgICAgICAgIHJldHVybiB0aGlz
LmNzY2h3ZWJwa3Q7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0Q3NjaHdlYnBrdChCaWdE
ZWNpbWFsIGNzY2h3ZWJwa3QpIHsKKyAgICAgICAgdGhpcy5jc2Nod2VicGt0ID0zRCBjc2Nod2Vi
cGt0OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlNBTkRUUklFQiIsIHByZWNpc2lv
bj0zRDgsIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRTYW5kdHJpZWIoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLnNhbmR0cmllYjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9p
ZCBzZXRTYW5kdHJpZWIoQmlnRGVjaW1hbCBzYW5kdHJpZWIpIHsKKyAgICAgICAgdGhpcy5zYW5k
dHJpZWIgPTNEIHNhbmR0cmllYjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJTQ0hX
RUJUUklFQiIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1h
bCBnZXRTY2h3ZWJ0cmllYigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc2Nod2VidHJpZWI7Cisg
ICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0U2Nod2VidHJpZWIoQmlnRGVjaW1hbCBzY2h3ZWJ0
cmllYikgeworICAgICAgICB0aGlzLnNjaHdlYnRyaWViID0zRCBzY2h3ZWJ0cmllYjsKKyAgICB9
Cit9CmRpZmYgLXIgYmM0ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9tYWlu
L2phdmEvb3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZlci9zZWRkYi9tb2RlbC9TcHJvYmVJZC5qYXZh
Ci0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL2JhY2tl
bmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZlci9zZWRkYi9tb2RlbC9TcHJv
YmVJZC5qYT0KdmEJTW9uIEFwciAyOSAxMTozMzowMSAyMDEzICswMjAwCkBAIC0wLDAgKzEsNzMg
QEAKKy8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9
QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCisgKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJ
bnRldmF0aW9uIEdtYkgKKyAqCisgKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0
aGUgR05VIEFHUEwgKD49M0R2Myk9MjAKKyAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8g
V0FSUkFOVFkhIENoZWNrIG91dCB0aGUKKyAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2
ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy49MjAKKyAqLworCitwYWNrYWdlIG9yZy5kaXZl
NGVsZW1lbnRzLnNlZGRiLm1vZGVsOworLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcg
YnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQorCisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5j
ZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW1iZWRkYWJsZTsKKworLyoqCisg
KiBTcHJvYmVJZCBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKKyAqLworQEVtYmVkZGFibGUKK3B1Ymxp
YyBjbGFzcyBTcHJvYmVJZCAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7CisKKwor
ICAgICBwcml2YXRlIGxvbmcgc2xvdHJlY2h0ZWlkOworICAgICBwcml2YXRlIGludCBsZmRucjsK
KworICAgIHB1YmxpYyBTcHJvYmVJZCgpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgU3Byb2JlSWQo
bG9uZyBzbG90cmVjaHRlaWQsIGludCBsZmRucikgeworICAgICAgIHRoaXMuc2xvdHJlY2h0ZWlk
ID0zRCBzbG90cmVjaHRlaWQ7CisgICAgICAgdGhpcy5sZmRuciA9M0QgbGZkbnI7CisgICAgfQor
CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJTTE9UUkVDSFRFSUQiLCBudWxsYWJsZT0zRGZhbHNl
LCBwcmVjaXNpb249M0QxMSwgc2NhbGU9Cj0zRDApCisgICAgcHVibGljIGxvbmcgZ2V0U2xvdHJl
Y2h0ZWlkKCkgeworICAgICAgICByZXR1cm4gdGhpcy5zbG90cmVjaHRlaWQ7CisgICAgfQorCisg
ICAgcHVibGljIHZvaWQgc2V0U2xvdHJlY2h0ZWlkKGxvbmcgc2xvdHJlY2h0ZWlkKSB7CisgICAg
ICAgIHRoaXMuc2xvdHJlY2h0ZWlkID0zRCBzbG90cmVjaHRlaWQ7CisgICAgfQorCisKKyAgICBA
Q29sdW1uKG5hbWU9M0QiTEZETlIiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0Q1LCBz
Y2FsZT0zRDApCisgICAgcHVibGljIGludCBnZXRMZmRucigpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMubGZkbnI7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TGZkbnIoaW50IGxmZG5yKSB7
CisgICAgICAgIHRoaXMubGZkbnIgPTNEIGxmZG5yOworICAgIH0KKworCisgICBwdWJsaWMgYm9v
bGVhbiBlcXVhbHMoT2JqZWN0IG90aGVyKSB7CisgICAgICAgICBpZiAoICh0aGlzID0zRD0zRCBv
dGhlciApICkgcmV0dXJuIHRydWU7CisgICAgICAgICBpZiAoIChvdGhlciA9M0Q9M0QgbnVsbCAp
ICkgcmV0dXJuIGZhbHNlOworICAgICAgICAgaWYgKCAhKG90aGVyIGluc3RhbmNlb2YgU3Byb2Jl
SWQpICkgcmV0dXJuIGZhbHNlOworICAgICAgICAgU3Byb2JlSWQgY2FzdE90aGVyID0zRCAoIFNw
cm9iZUlkICkgb3RoZXI7CisKKyAgICAgICAgIHJldHVybiAodGhpcy5nZXRTbG90cmVjaHRlaWQo
KT0zRD0zRGNhc3RPdGhlci5nZXRTbG90cmVjaHRlaWQoKSkKKyAmJiAodGhpcy5nZXRMZmRucigp
PTNEPTNEY2FzdE90aGVyLmdldExmZG5yKCkpOworICAgfQorCisgICBwdWJsaWMgaW50IGhhc2hD
b2RlKCkgeworICAgICAgICAgaW50IHJlc3VsdCA9M0QgMTc7CisKKyAgICAgICAgIHJlc3VsdCA9
M0QgMzcgKiByZXN1bHQgKyAoaW50KSB0aGlzLmdldFNsb3RyZWNodGVpZCgpOworICAgICAgICAg
cmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArIHRoaXMuZ2V0TGZkbnIoKTsKKyAgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICB9Cit9CmRpZmYgLXIgYmM0ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBi
YWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZlci9zZWRkYi9tb2Rl
bC9Tc2llYnVuZy5qYXZhCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICsw
MDAwCisrKyBiL2JhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZlci9z
ZWRkYi9tb2RlbC9Tc2llYnVuZy5qYT0KdmEJTW9uIEFwciAyOSAxMTozMzowMSAyMDEzICswMjAw
CkBAIC0wLDAgKzEsMzU5IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkg
QnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQorICogU29mdHdhcmUg
ZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICisgKgorICogVGhpcyBmaWxlIGlzIEZyZWUg
U29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMpPTIwCisgKiBhbmQgY29tZXMgd2l0
aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCisgKiBkb2N1bWVudGF0aW9u
IGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFpbHMuPTIwCisgKi8KKwor
cGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5zZWRkYi5tb2RlbDsKKy8vIEdlbmVyYXRlZCAxNC4w
Ni4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQuMC5DUjEKKworCitpbXBvcnQg
amF2YS5tYXRoLkJpZ0RlY2ltYWw7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOwor
aW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5j
ZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGVkVmFsdWU7Citp
bXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9p
bkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5NYW55VG9PbmU7CitpbXBvcnQgamF2
YXgucGVyc2lzdGVuY2UuT25lVG9PbmU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuUHJpbWFy
eUtleUpvaW5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CitpbXBvcnQg
b3JnLmhpYmVybmF0ZS5hbm5vdGF0aW9ucy5HZW5lcmljR2VuZXJhdG9yOworaW1wb3J0IG9yZy5o
aWJlcm5hdGUuYW5ub3RhdGlvbnMuUGFyYW1ldGVyOworCisvKioKKyAqIFNzaWVidW5nIGdlbmVy
YXRlZCBieSBoYm0yamF2YQorICovCitARW50aXR5CitAVGFibGUobmFtZT0zRCJTU0lFQlVORyIK
KyAgICAsc2NoZW1hPTNEIlNFRERCIgorKQorcHVibGljIGNsYXNzIFNzaWVidW5nICBpbXBsZW1l
bnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKKworCisgICAgIHByaXZhdGUgbG9uZyBzaWViYW5h
bHlzZWlkOworICAgICBwcml2YXRlIFNpZWJhbmFseXNlIHNpZWJhbmFseXNlOworICAgICBwcml2
YXRlIEdzaWVic2F0eiBnc2llYnNhdHo7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBnbWFzc2U7
CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjAxOworICAgICBwcml2YXRlIEJpZ0RlY2lt
YWwgcnNpZWIwMjsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMDM7CisgICAgIHByaXZh
dGUgQmlnRGVjaW1hbCByc2llYjA0OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIwNTsK
KyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMDY7CisgICAgIHByaXZhdGUgQmlnRGVjaW1h
bCByc2llYjA3OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIwODsKKyAgICAgcHJpdmF0
ZSBCaWdEZWNpbWFsIHJzaWViMDk7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjEwOwor
ICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIxMTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IHJzaWViMTI7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjEzOworICAgICBwcml2YXRl
IEJpZ0RlY2ltYWwgcnNpZWIxNDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMTU7Cisg
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCByc2llYjE2OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwg
cnNpZWIxNzsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMTg7CisgICAgIHByaXZhdGUg
QmlnRGVjaW1hbCByc2llYjE5OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgcnNpZWIyMDsKKyAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJzaWViMjE7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBy
ZXN0OworCisgICAgcHVibGljIFNzaWVidW5nKCkgeworICAgIH0KKworICAgIHB1YmxpYyBTc2ll
YnVuZyhTaWViYW5hbHlzZSBzaWViYW5hbHlzZSwgR3NpZWJzYXR6IGdzaWVic2F0eikgeworICAg
ICAgICB0aGlzLnNpZWJhbmFseXNlID0zRCBzaWViYW5hbHlzZTsKKyAgICAgICAgdGhpcy5nc2ll
YnNhdHogPTNEIGdzaWVic2F0ejsKKyAgICB9CisgICAgcHVibGljIFNzaWVidW5nKFNpZWJhbmFs
eXNlIHNpZWJhbmFseXNlLCBHc2llYnNhdHogZ3NpZWJzYXR6LCBCaWdEZWNpbT0KYWwgZ21hc3Nl
LCBCaWdEZWNpbWFsIHJzaWViMDEsIEJpZ0RlY2ltYWwgcnNpZWIwMiwgQmlnRGVjaW1hbCByc2ll
YjAzLCBCaWdEPQplY2ltYWwgcnNpZWIwNCwgQmlnRGVjaW1hbCByc2llYjA1LCBCaWdEZWNpbWFs
IHJzaWViMDYsIEJpZ0RlY2ltYWwgcnNpZWIwNyw9CiBCaWdEZWNpbWFsIHJzaWViMDgsIEJpZ0Rl
Y2ltYWwgcnNpZWIwOSwgQmlnRGVjaW1hbCByc2llYjEwLCBCaWdEZWNpbWFsIHJzaT0KZWIxMSwg
QmlnRGVjaW1hbCByc2llYjEyLCBCaWdEZWNpbWFsIHJzaWViMTMsIEJpZ0RlY2ltYWwgcnNpZWIx
NCwgQmlnRGVjaW1hPQpsIHJzaWViMTUsIEJpZ0RlY2ltYWwgcnNpZWIxNiwgQmlnRGVjaW1hbCBy
c2llYjE3LCBCaWdEZWNpbWFsIHJzaWViMTgsIEJpZ0Q9CmVjaW1hbCByc2llYjE5LCBCaWdEZWNp
bWFsIHJzaWViMjAsIEJpZ0RlY2ltYWwgcnNpZWIyMSwgQmlnRGVjaW1hbCByZXN0KSB7CisgICAg
ICAgdGhpcy5zaWViYW5hbHlzZSA9M0Qgc2llYmFuYWx5c2U7CisgICAgICAgdGhpcy5nc2llYnNh
dHogPTNEIGdzaWVic2F0ejsKKyAgICAgICB0aGlzLmdtYXNzZSA9M0QgZ21hc3NlOworICAgICAg
IHRoaXMucnNpZWIwMSA9M0QgcnNpZWIwMTsKKyAgICAgICB0aGlzLnJzaWViMDIgPTNEIHJzaWVi
MDI7CisgICAgICAgdGhpcy5yc2llYjAzID0zRCByc2llYjAzOworICAgICAgIHRoaXMucnNpZWIw
NCA9M0QgcnNpZWIwNDsKKyAgICAgICB0aGlzLnJzaWViMDUgPTNEIHJzaWViMDU7CisgICAgICAg
dGhpcy5yc2llYjA2ID0zRCByc2llYjA2OworICAgICAgIHRoaXMucnNpZWIwNyA9M0QgcnNpZWIw
NzsKKyAgICAgICB0aGlzLnJzaWViMDggPTNEIHJzaWViMDg7CisgICAgICAgdGhpcy5yc2llYjA5
ID0zRCByc2llYjA5OworICAgICAgIHRoaXMucnNpZWIxMCA9M0QgcnNpZWIxMDsKKyAgICAgICB0
aGlzLnJzaWViMTEgPTNEIHJzaWViMTE7CisgICAgICAgdGhpcy5yc2llYjEyID0zRCByc2llYjEy
OworICAgICAgIHRoaXMucnNpZWIxMyA9M0QgcnNpZWIxMzsKKyAgICAgICB0aGlzLnJzaWViMTQg
PTNEIHJzaWViMTQ7CisgICAgICAgdGhpcy5yc2llYjE1ID0zRCByc2llYjE1OworICAgICAgIHRo
aXMucnNpZWIxNiA9M0QgcnNpZWIxNjsKKyAgICAgICB0aGlzLnJzaWViMTcgPTNEIHJzaWViMTc7
CisgICAgICAgdGhpcy5yc2llYjE4ID0zRCByc2llYjE4OworICAgICAgIHRoaXMucnNpZWIxOSA9
M0QgcnNpZWIxOTsKKyAgICAgICB0aGlzLnJzaWViMjAgPTNEIHJzaWViMjA7CisgICAgICAgdGhp
cy5yc2llYjIxID0zRCByc2llYjIxOworICAgICAgIHRoaXMucmVzdCA9M0QgcmVzdDsKKyAgICB9
CisKKyAgICAgQEdlbmVyaWNHZW5lcmF0b3IobmFtZT0zRCJnZW5lcmF0b3IiLCBzdHJhdGVneT0z
RCJmb3JlaWduIiwgcGFyYW1ldGVyPQpzPTNEQFBhcmFtZXRlcihuYW1lPTNEInByb3BlcnR5Iiwg
dmFsdWU9M0Qic2llYmFuYWx5c2UiKSlASWQgQEdlbmVyYXRlZFZhbHU9CmUoZ2VuZXJhdG9yPTNE
ImdlbmVyYXRvciIpCisKKworICAgIEBDb2x1bW4obmFtZT0zRCJTSUVCQU5BTFlTRUlEIiwgdW5p
cXVlPTNEdHJ1ZSwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2k9CnNpb249M0QxMSwgc2NhbGU9M0Qw
KQorICAgIHB1YmxpYyBsb25nIGdldFNpZWJhbmFseXNlaWQoKSB7CisgICAgICAgIHJldHVybiB0
aGlzLnNpZWJhbmFseXNlaWQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0U2llYmFuYWx5
c2VpZChsb25nIHNpZWJhbmFseXNlaWQpIHsKKyAgICAgICAgdGhpcy5zaWViYW5hbHlzZWlkID0z
RCBzaWViYW5hbHlzZWlkOworICAgIH0KKworQE9uZVRvT25lKGZldGNoPTNERmV0Y2hUeXBlLkxB
WlkpQFByaW1hcnlLZXlKb2luQ29sdW1uCisgICAgcHVibGljIFNpZWJhbmFseXNlIGdldFNpZWJh
bmFseXNlKCkgeworICAgICAgICByZXR1cm4gdGhpcy5zaWViYW5hbHlzZTsKKyAgICB9CisKKyAg
ICBwdWJsaWMgdm9pZCBzZXRTaWViYW5hbHlzZShTaWViYW5hbHlzZSBzaWViYW5hbHlzZSkgewor
ICAgICAgICB0aGlzLnNpZWJhbmFseXNlID0zRCBzaWViYW5hbHlzZTsKKyAgICB9CisKK0BNYW55
VG9PbmUoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSkKKyAgICBASm9pbkNvbHVtbihuYW1lPTNEIkdT
SUVCU0FUWklEIiwgbnVsbGFibGU9M0RmYWxzZSkKKyAgICBwdWJsaWMgR3NpZWJzYXR6IGdldEdz
aWVic2F0eigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZ3NpZWJzYXR6OworICAgIH0KKworICAg
IHB1YmxpYyB2b2lkIHNldEdzaWVic2F0eihHc2llYnNhdHogZ3NpZWJzYXR6KSB7CisgICAgICAg
IHRoaXMuZ3NpZWJzYXR6ID0zRCBnc2llYnNhdHo7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5h
bWU9M0QiR01BU1NFIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdE
ZWNpbWFsIGdldEdtYXNzZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZ21hc3NlOworICAgIH0K
KworICAgIHB1YmxpYyB2b2lkIHNldEdtYXNzZShCaWdEZWNpbWFsIGdtYXNzZSkgeworICAgICAg
ICB0aGlzLmdtYXNzZSA9M0QgZ21hc3NlOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNE
IlJTSUVCMDEiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2lt
YWwgZ2V0UnNpZWIwMSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIwMTsKKyAgICB9CisK
KyAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjAxKEJpZ0RlY2ltYWwgcnNpZWIwMSkgeworICAgICAg
ICB0aGlzLnJzaWViMDEgPTNEIHJzaWViMDE7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9
M0QiUlNJRUIwMiIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVj
aW1hbCBnZXRSc2llYjAyKCkgeworICAgICAgICByZXR1cm4gdGhpcy5yc2llYjAyOworICAgIH0K
KworICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMDIoQmlnRGVjaW1hbCByc2llYjAyKSB7CisgICAg
ICAgIHRoaXMucnNpZWIwMiA9M0QgcnNpZWIwMjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFt
ZT0zRCJSU0lFQjAzIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdE
ZWNpbWFsIGdldFJzaWViMDMoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnJzaWViMDM7CisgICAg
fQorCisgICAgcHVibGljIHZvaWQgc2V0UnNpZWIwMyhCaWdEZWNpbWFsIHJzaWViMDMpIHsKKyAg
ICAgICAgdGhpcy5yc2llYjAzID0zRCByc2llYjAzOworICAgIH0KKworCisgICAgQENvbHVtbihu
YW1lPTNEIlJTSUVCMDQiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0UnNpZWIwNCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIwNDsKKyAg
ICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjA0KEJpZ0RlY2ltYWwgcnNpZWIwNCkgewor
ICAgICAgICB0aGlzLnJzaWViMDQgPTNEIHJzaWViMDQ7CisgICAgfQorCisKKyAgICBAQ29sdW1u
KG5hbWU9M0QiUlNJRUIwNSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKKyAgICBwdWJsaWMg
QmlnRGVjaW1hbCBnZXRSc2llYjA1KCkgeworICAgICAgICByZXR1cm4gdGhpcy5yc2llYjA1Owor
ICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMDUoQmlnRGVjaW1hbCByc2llYjA1KSB7
CisgICAgICAgIHRoaXMucnNpZWIwNSA9M0QgcnNpZWIwNTsKKyAgICB9CisKKworICAgIEBDb2x1
bW4obmFtZT0zRCJSU0lFQjA2IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQorICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldFJzaWViMDYoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnJzaWViMDY7
CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0UnNpZWIwNihCaWdEZWNpbWFsIHJzaWViMDYp
IHsKKyAgICAgICAgdGhpcy5yc2llYjA2ID0zRCByc2llYjA2OworICAgIH0KKworCisgICAgQENv
bHVtbihuYW1lPTNEIlJTSUVCMDciLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCisgICAgcHVi
bGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIwNygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucnNpZWIw
NzsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjA3KEJpZ0RlY2ltYWwgcnNpZWIw
NykgeworICAgICAgICB0aGlzLnJzaWViMDcgPTNEIHJzaWViMDc7CisgICAgfQorCisKKyAgICBA
Q29sdW1uKG5hbWU9M0QiUlNJRUIwOCIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKKyAgICBw
dWJsaWMgQmlnRGVjaW1hbCBnZXRSc2llYjA4KCkgeworICAgICAgICByZXR1cm4gdGhpcy5yc2ll
YjA4OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMDgoQmlnRGVjaW1hbCByc2ll
YjA4KSB7CisgICAgICAgIHRoaXMucnNpZWIwOCA9M0QgcnNpZWIwODsKKyAgICB9CisKKworICAg
IEBDb2x1bW4obmFtZT0zRCJSU0lFQjA5IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQorICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMDkoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnJz
aWViMDk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0UnNpZWIwOShCaWdEZWNpbWFsIHJz
aWViMDkpIHsKKyAgICAgICAgdGhpcy5yc2llYjA5ID0zRCByc2llYjA5OworICAgIH0KKworCisg
ICAgQENvbHVtbihuYW1lPTNEIlJTSUVCMTAiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCisg
ICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIxMCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
cnNpZWIxMDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjEwKEJpZ0RlY2ltYWwg
cnNpZWIxMCkgeworICAgICAgICB0aGlzLnJzaWViMTAgPTNEIHJzaWViMTA7CisgICAgfQorCisK
KyAgICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIxMSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykK
KyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSc2llYjExKCkgeworICAgICAgICByZXR1cm4gdGhp
cy5yc2llYjExOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMTEoQmlnRGVjaW1h
bCByc2llYjExKSB7CisgICAgICAgIHRoaXMucnNpZWIxMSA9M0QgcnNpZWIxMTsKKyAgICB9CisK
KworICAgIEBDb2x1bW4obmFtZT0zRCJSU0lFQjEyIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0Qz
KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMTIoKSB7CisgICAgICAgIHJldHVybiB0
aGlzLnJzaWViMTI7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0UnNpZWIxMihCaWdEZWNp
bWFsIHJzaWViMTIpIHsKKyAgICAgICAgdGhpcy5yc2llYjEyID0zRCByc2llYjEyOworICAgIH0K
KworCisgICAgQENvbHVtbihuYW1lPTNEIlJTSUVCMTMiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0z
RDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIxMygpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMucnNpZWIxMzsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjEzKEJpZ0Rl
Y2ltYWwgcnNpZWIxMykgeworICAgICAgICB0aGlzLnJzaWViMTMgPTNEIHJzaWViMTM7CisgICAg
fQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIxNCIsIHByZWNpc2lvbj0zRDksIHNjYWxl
PTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSc2llYjE0KCkgeworICAgICAgICByZXR1
cm4gdGhpcy5yc2llYjE0OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFJzaWViMTQoQmln
RGVjaW1hbCByc2llYjE0KSB7CisgICAgICAgIHRoaXMucnNpZWIxNCA9M0QgcnNpZWIxNDsKKyAg
ICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJSU0lFQjE1IiwgcHJlY2lzaW9uPTNEOSwgc2Nh
bGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMTUoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLnJzaWViMTU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0UnNpZWIxNShC
aWdEZWNpbWFsIHJzaWViMTUpIHsKKyAgICAgICAgdGhpcy5yc2llYjE1ID0zRCByc2llYjE1Owor
ICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlJTSUVCMTYiLCBwcmVjaXNpb249M0Q5LCBz
Y2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIxNigpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMucnNpZWIxNjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRSc2llYjE2
KEJpZ0RlY2ltYWwgcnNpZWIxNikgeworICAgICAgICB0aGlzLnJzaWViMTYgPTNEIHJzaWViMTY7
CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIxNyIsIHByZWNpc2lvbj0zRDks
IHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSc2llYjE3KCkgeworICAgICAg
ICByZXR1cm4gdGhpcy5yc2llYjE3OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFJzaWVi
MTcoQmlnRGVjaW1hbCByc2llYjE3KSB7CisgICAgICAgIHRoaXMucnNpZWIxNyA9M0QgcnNpZWIx
NzsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJSU0lFQjE4IiwgcHJlY2lzaW9uPTNE
OSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMTgoKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLnJzaWViMTg7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0UnNp
ZWIxOChCaWdEZWNpbWFsIHJzaWViMTgpIHsKKyAgICAgICAgdGhpcy5yc2llYjE4ID0zRCByc2ll
YjE4OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlJTSUVCMTkiLCBwcmVjaXNpb249
M0Q5LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnNpZWIxOSgpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMucnNpZWIxOTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRS
c2llYjE5KEJpZ0RlY2ltYWwgcnNpZWIxOSkgeworICAgICAgICB0aGlzLnJzaWViMTkgPTNEIHJz
aWViMTk7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiUlNJRUIyMCIsIHByZWNpc2lv
bj0zRDksIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSc2llYjIwKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy5yc2llYjIwOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNl
dFJzaWViMjAoQmlnRGVjaW1hbCByc2llYjIwKSB7CisgICAgICAgIHRoaXMucnNpZWIyMCA9M0Qg
cnNpZWIyMDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJSU0lFQjIxIiwgcHJlY2lz
aW9uPTNEOSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJzaWViMjEoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLnJzaWViMjE7CisgICAgfQorCisgICAgcHVibGljIHZvaWQg
c2V0UnNpZWIyMShCaWdEZWNpbWFsIHJzaWViMjEpIHsKKyAgICAgICAgdGhpcy5yc2llYjIxID0z
RCByc2llYjIxOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlJFU1QiLCBwcmVjaXNp
b249M0Q5LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UmVzdCgpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMucmVzdDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRSZXN0
KEJpZ0RlY2ltYWwgcmVzdCkgeworICAgICAgICB0aGlzLnJlc3QgPTNEIHJlc3Q7CisgICAgfQor
fQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9q
YXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMvcml2ZXIvc2VkZGIvbW9kZWwvU3NpZWJ1bmdzaWViLmph
dmEKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvYmFj
a2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVsL1Nz
aWVidW5nc2llPQpiLmphdmEJTW9uIEFwciAyOSAxMTozMzowMSAyMDEzICswMjAwCkBAIC0wLDAg
KzEsOTYgQEAKKy8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0
YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCisgKiBTb2Z0d2FyZSBlbmdpbmVlcmlu
ZyBieSBJbnRldmF0aW9uIEdtYkgKKyAqCisgKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1
bmRlciB0aGUgR05VIEFHUEwgKD49M0R2Myk9MjAKKyAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRF
TFkgTk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUKKyAqIGRvY3VtZW50YXRpb24gY29taW5nIHdp
dGggRGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy49MjAKKyAqLworCitwYWNrYWdlIG9y
Zy5kaXZlNGVsZW1lbnRzLnNlZGRiLm1vZGVsOworLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6
MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQorCisKK2ltcG9ydCBqYXZheC5wZXJz
aXN0ZW5jZS5BdHRyaWJ1dGVPdmVycmlkZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5BdHRy
aWJ1dGVPdmVycmlkZXM7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0
IGphdmF4LnBlcnNpc3RlbmNlLkVtYmVkZGVkSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2Uu
RW50aXR5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOworCisvKioKKyAqIFNzaWVi
dW5nc2llYiBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKKyAqLworQEVudGl0eQorQFRhYmxlKG5hbWU9
M0QiU1NJRUJVTkdTSUVCIgorICAgICxzY2hlbWE9M0QiU0VEREIiCispCitwdWJsaWMgY2xhc3Mg
U3NpZWJ1bmdzaWViICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKKworCisgICAg
IHByaXZhdGUgU3NpZWJ1bmdzaWViSWQgaWQ7CisKKyAgICBwdWJsaWMgU3NpZWJ1bmdzaWViKCkg
eworICAgIH0KKworICAgIHB1YmxpYyBTc2llYnVuZ3NpZWIoU3NpZWJ1bmdzaWViSWQgaWQpIHsK
KyAgICAgICB0aGlzLmlkID0zRCBpZDsKKyAgICB9CisKKyAgICAgQEVtYmVkZGVkSWQKKworCisg
ICAgQEF0dHJpYnV0ZU92ZXJyaWRlcyggeworICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFt
ZT0zRCJzaWViYW5hbHlzZWlkIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPQo9M0QiU0lFQkFOQUxZ
U0VJRCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDApICksCisg
ICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImdzaWVic2F0emlkIiwgY29sdW1uPTNE
QENvbHVtbihuYW1lPTNEIj0KR1NJRUJTQVRaSUQiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNp
b249M0QxMSwgc2NhbGU9M0QwKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0z
RCJnbWFzc2UiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiR01BU1M9CkUiLCBwcmVjaXNpb249
M0Q5LCBzY2FsZT0zRDMpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1h
c2NoZTAxIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMDEiLCBwcmVjaXNpb249
M0Q3LCBzY2FsZT0zRDQpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1
ZWNrMDEiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzAxIiwgcHJlY2lzaW9uPTNE
OSwgc2NhbGU9M0QzKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNj
aGUwMiIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNIRTAyIiwgcHJlY2lzaW9uPTNE
Nywgc2NhbGU9M0Q0KSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVj
azAyIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9CkswMiIsIHByZWNpc2lvbj0zRDks
IHNjYWxlPTNEMykgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hl
MDMiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpDSEUwMyIsIHByZWNpc2lvbj0zRDcs
IHNjYWxlPTNENCkgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2sw
MyIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpLMDMiLCBwcmVjaXNpb249M0Q5LCBz
Y2FsZT0zRDMpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTA0
IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMDQiLCBwcmVjaXNpb249M0Q3LCBz
Y2FsZT0zRDQpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMDQi
LCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzA0IiwgcHJlY2lzaW9uPTNEOSwgc2Nh
bGU9M0QzKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUwNSIs
IGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNIRTA1IiwgcHJlY2lzaW9uPTNENywgc2Nh
bGU9M0Q0KSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazA1Iiwg
Y29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9CkswNSIsIHByZWNpc2lvbj0zRDksIHNjYWxl
PTNEMykgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hlMDYiLCBj
b2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpDSEUwNiIsIHByZWNpc2lvbj0zRDcsIHNjYWxl
PTNENCkgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2swNiIsIGNv
bHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpLMDYiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0z
RDMpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTA3IiwgY29s
dW1uPTNEQENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMDciLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0z
RDQpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMDciLCBjb2x1
bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVFQz0KSzA3IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0Qz
KSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUwOCIsIGNvbHVt
bj0zREBDb2x1bW4obmFtZT0zRCJNQVM9CkNIRTA4IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0
KSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazA4IiwgY29sdW1u
PTNEQENvbHVtbihuYW1lPTNEIlJVRUM9CkswOCIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykg
KSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hlMDkiLCBjb2x1bW49
M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpDSEUwOSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkg
KSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2swOSIsIGNvbHVtbj0z
REBDb2x1bW4obmFtZT0zRCJSVUVDPQpLMDkiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICks
CisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTEwIiwgY29sdW1uPTNE
QENvbHVtbihuYW1lPTNEIk1BUz0KQ0hFMTAiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICks
CisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMTAiLCBjb2x1bW49M0RA
Q29sdW1uKG5hbWU9M0QiUlVFQz0KSzEwIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAor
ICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUxMSIsIGNvbHVtbj0zREBD
b2x1bW4obmFtZT0zRCJNQVM9CkNIRTExIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAor
ICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazExIiwgY29sdW1uPTNEQENv
bHVtbihuYW1lPTNEIlJVRUM9CksxMSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKKyAg
ICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hlMTIiLCBjb2x1bW49M0RAQ29s
dW1uKG5hbWU9M0QiTUFTPQpDSEUxMiIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKKyAg
ICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2sxMiIsIGNvbHVtbj0zREBDb2x1
bW4obmFtZT0zRCJSVUVDPQpLMTIiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCisgICAg
ICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTEzIiwgY29sdW1uPTNEQENvbHVt
bihuYW1lPTNEIk1BUz0KQ0hFMTMiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCisgICAg
ICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMTMiLCBjb2x1bW49M0RAQ29sdW1u
KG5hbWU9M0QiUlVFQz0KSzEzIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAorICAgICAg
ICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUxNCIsIGNvbHVtbj0zREBDb2x1bW4o
bmFtZT0zRCJNQVM9CkNIRTE0IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAorICAgICAg
ICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazE0IiwgY29sdW1uPTNEQENvbHVtbihu
YW1lPTNEIlJVRUM9CksxNCIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKKyAgICAgICAg
QEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hlMTUiLCBjb2x1bW49M0RAQ29sdW1uKG5h
bWU9M0QiTUFTPQpDSEUxNSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKKyAgICAgICAg
QEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2sxNSIsIGNvbHVtbj0zREBDb2x1bW4obmFt
ZT0zRCJSVUVDPQpLMTUiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCisgICAgICAgIEBB
dHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTE2IiwgY29sdW1uPTNEQENvbHVtbihuYW1l
PTNEIk1BUz0KQ0hFMTYiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCisgICAgICAgIEBB
dHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMTYiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9
M0QiUlVFQz0KSzE2IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAorICAgICAgICBAQXR0
cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUxNyIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0z
RCJNQVM9CkNIRTE3IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAorICAgICAgICBAQXR0
cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJydWVjazE3IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNE
IlJVRUM9CksxNyIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKKyAgICAgICAgQEF0dHJp
YnV0ZU92ZXJyaWRlKG5hbWU9M0QibWFzY2hlMTgiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0Qi
TUFTPQpDSEUxOCIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKKyAgICAgICAgQEF0dHJp
YnV0ZU92ZXJyaWRlKG5hbWU9M0QicnVlY2sxOCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJS
VUVDPQpLMTgiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCisgICAgICAgIEBBdHRyaWJ1
dGVPdmVycmlkZShuYW1lPTNEIm1hc2NoZTE5IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIk1B
Uz0KQ0hFMTkiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpICksCisgICAgICAgIEBBdHRyaWJ1
dGVPdmVycmlkZShuYW1lPTNEInJ1ZWNrMTkiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUlVF
Qz0KSzE5IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApLAorICAgICAgICBAQXR0cmlidXRl
T3ZlcnJpZGUobmFtZT0zRCJtYXNjaGUyMCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJNQVM9
CkNIRTIwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KSApLAorICAgICAgICBAQXR0cmlidXRl
T3ZlcnJpZGUobmFtZT0zRCJydWVjazIwIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJVRUM9
CksyMCIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92
ZXJyaWRlKG5hbWU9M0QibWFzY2hlMjEiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTUFTPQpD
SEUyMSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92
ZXJyaWRlKG5hbWU9M0QicnVlY2syMSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSVUVDPQpL
MjEiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVy
cmlkZShuYW1lPTNEInJlc3QiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUkVTVCIsID0KcHJl
Y2lzaW9uPTNEOSwgc2NhbGU9M0QzKSApIH0gKQorICAgIHB1YmxpYyBTc2llYnVuZ3NpZWJJZCBn
ZXRJZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaWQ7CisgICAgfQorCisgICAgcHVibGljIHZv
aWQgc2V0SWQoU3NpZWJ1bmdzaWViSWQgaWQpIHsKKyAgICAgICAgdGhpcy5pZCA9M0QgaWQ7Cisg
ICAgfQorfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMv
bWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMvcml2ZXIvc2VkZGIvbW9kZWwvU3NpZWJ1bmdz
aWViSWQuamF2YQotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAor
KysgYi9iYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIv
bW9kZWwvU3NpZWJ1bmdzaWU9CmJJZC5qYXZhCU1vbiBBcHIgMjkgMTE6MzM6MDEgMjAxMyArMDIw
MApAQCAtMCwwICsxLDY5NCBAQAorLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5
IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKKyAqIFNvZnR3YXJl
IGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAorICoKKyAqIFRoaXMgZmlsZSBpcyBGcmVl
IFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAorICogYW5kIGNvbWVzIHdp
dGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQorICogZG9jdW1lbnRhdGlv
biBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAorICovCisK
K3BhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7CisvLyBHZW5lcmF0ZWQgMTQu
MDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCisKKworaW1wb3J0
IGphdmEubWF0aC5CaWdEZWNpbWFsOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsK
K2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbWJlZGRhYmxlOworCisvKioKKyAqIFNzaWVidW5n
c2llYklkIGdlbmVyYXRlZCBieSBoYm0yamF2YQorICovCitARW1iZWRkYWJsZQorcHVibGljIGNs
YXNzIFNzaWVidW5nc2llYklkICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKKwor
CisgICAgIHByaXZhdGUgbG9uZyBzaWViYW5hbHlzZWlkOworICAgICBwcml2YXRlIGxvbmcgZ3Np
ZWJzYXR6aWQ7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBnbWFzc2U7CisgICAgIHByaXZhdGUg
QmlnRGVjaW1hbCBtYXNjaGUwMTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMDE7Cisg
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUwMjsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IHJ1ZWNrMDI7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUwMzsKKyAgICAgcHJpdmF0
ZSBCaWdEZWNpbWFsIHJ1ZWNrMDM7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUwNDsK
KyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMDQ7CisgICAgIHByaXZhdGUgQmlnRGVjaW1h
bCBtYXNjaGUwNTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMDU7CisgICAgIHByaXZh
dGUgQmlnRGVjaW1hbCBtYXNjaGUwNjsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMDY7
CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUwNzsKKyAgICAgcHJpdmF0ZSBCaWdEZWNp
bWFsIHJ1ZWNrMDc7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUwODsKKyAgICAgcHJp
dmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMDg7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUw
OTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMDk7CisgICAgIHByaXZhdGUgQmlnRGVj
aW1hbCBtYXNjaGUxMDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMTA7CisgICAgIHBy
aXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUxMTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNr
MTE7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUxMjsKKyAgICAgcHJpdmF0ZSBCaWdE
ZWNpbWFsIHJ1ZWNrMTI7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUxMzsKKyAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMTM7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNj
aGUxNDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMTQ7CisgICAgIHByaXZhdGUgQmln
RGVjaW1hbCBtYXNjaGUxNTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMTU7CisgICAg
IHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUxNjsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1
ZWNrMTY7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUxNzsKKyAgICAgcHJpdmF0ZSBC
aWdEZWNpbWFsIHJ1ZWNrMTc7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUxODsKKyAg
ICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMTg7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBt
YXNjaGUxOTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMTk7CisgICAgIHByaXZhdGUg
QmlnRGVjaW1hbCBtYXNjaGUyMDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHJ1ZWNrMjA7Cisg
ICAgIHByaXZhdGUgQmlnRGVjaW1hbCBtYXNjaGUyMTsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFs
IHJ1ZWNrMjE7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCByZXN0OworCisgICAgcHVibGljIFNz
aWVidW5nc2llYklkKCkgeworICAgIH0KKworICAgIHB1YmxpYyBTc2llYnVuZ3NpZWJJZChsb25n
IHNpZWJhbmFseXNlaWQsIGxvbmcgZ3NpZWJzYXR6aWQpIHsKKyAgICAgICAgdGhpcy5zaWViYW5h
bHlzZWlkID0zRCBzaWViYW5hbHlzZWlkOworICAgICAgICB0aGlzLmdzaWVic2F0emlkID0zRCBn
c2llYnNhdHppZDsKKyAgICB9CisgICAgcHVibGljIFNzaWVidW5nc2llYklkKGxvbmcgc2llYmFu
YWx5c2VpZCwgbG9uZyBnc2llYnNhdHppZCwgQmlnRGVjaW1hbD0KIGdtYXNzZSwgQmlnRGVjaW1h
bCBtYXNjaGUwMSwgQmlnRGVjaW1hbCBydWVjazAxLCBCaWdEZWNpbWFsIG1hc2NoZTAyLCBCaWdE
PQplY2ltYWwgcnVlY2swMiwgQmlnRGVjaW1hbCBtYXNjaGUwMywgQmlnRGVjaW1hbCBydWVjazAz
LCBCaWdEZWNpbWFsIG1hc2NoZTA9CjQsIEJpZ0RlY2ltYWwgcnVlY2swNCwgQmlnRGVjaW1hbCBt
YXNjaGUwNSwgQmlnRGVjaW1hbCBydWVjazA1LCBCaWdEZWNpbWFsID0KbWFzY2hlMDYsIEJpZ0Rl
Y2ltYWwgcnVlY2swNiwgQmlnRGVjaW1hbCBtYXNjaGUwNywgQmlnRGVjaW1hbCBydWVjazA3LCBC
aWdEPQplY2ltYWwgbWFzY2hlMDgsIEJpZ0RlY2ltYWwgcnVlY2swOCwgQmlnRGVjaW1hbCBtYXNj
aGUwOSwgQmlnRGVjaW1hbCBydWVjazA9CjksIEJpZ0RlY2ltYWwgbWFzY2hlMTAsIEJpZ0RlY2lt
YWwgcnVlY2sxMCwgQmlnRGVjaW1hbCBtYXNjaGUxMSwgQmlnRGVjaW1hbD0KIHJ1ZWNrMTEsIEJp
Z0RlY2ltYWwgbWFzY2hlMTIsIEJpZ0RlY2ltYWwgcnVlY2sxMiwgQmlnRGVjaW1hbCBtYXNjaGUx
MywgQmlnPQpEZWNpbWFsIHJ1ZWNrMTMsIEJpZ0RlY2ltYWwgbWFzY2hlMTQsIEJpZ0RlY2ltYWwg
cnVlY2sxNCwgQmlnRGVjaW1hbCBtYXNjaGU9CjE1LCBCaWdEZWNpbWFsIHJ1ZWNrMTUsIEJpZ0Rl
Y2ltYWwgbWFzY2hlMTYsIEJpZ0RlY2ltYWwgcnVlY2sxNiwgQmlnRGVjaW1hbD0KIG1hc2NoZTE3
LCBCaWdEZWNpbWFsIHJ1ZWNrMTcsIEJpZ0RlY2ltYWwgbWFzY2hlMTgsIEJpZ0RlY2ltYWwgcnVl
Y2sxOCwgQmlnPQpEZWNpbWFsIG1hc2NoZTE5LCBCaWdEZWNpbWFsIHJ1ZWNrMTksIEJpZ0RlY2lt
YWwgbWFzY2hlMjAsIEJpZ0RlY2ltYWwgcnVlY2s9CjIwLCBCaWdEZWNpbWFsIG1hc2NoZTIxLCBC
aWdEZWNpbWFsIHJ1ZWNrMjEsIEJpZ0RlY2ltYWwgcmVzdCkgeworICAgICAgIHRoaXMuc2llYmFu
YWx5c2VpZCA9M0Qgc2llYmFuYWx5c2VpZDsKKyAgICAgICB0aGlzLmdzaWVic2F0emlkID0zRCBn
c2llYnNhdHppZDsKKyAgICAgICB0aGlzLmdtYXNzZSA9M0QgZ21hc3NlOworICAgICAgIHRoaXMu
bWFzY2hlMDEgPTNEIG1hc2NoZTAxOworICAgICAgIHRoaXMucnVlY2swMSA9M0QgcnVlY2swMTsK
KyAgICAgICB0aGlzLm1hc2NoZTAyID0zRCBtYXNjaGUwMjsKKyAgICAgICB0aGlzLnJ1ZWNrMDIg
PTNEIHJ1ZWNrMDI7CisgICAgICAgdGhpcy5tYXNjaGUwMyA9M0QgbWFzY2hlMDM7CisgICAgICAg
dGhpcy5ydWVjazAzID0zRCBydWVjazAzOworICAgICAgIHRoaXMubWFzY2hlMDQgPTNEIG1hc2No
ZTA0OworICAgICAgIHRoaXMucnVlY2swNCA9M0QgcnVlY2swNDsKKyAgICAgICB0aGlzLm1hc2No
ZTA1ID0zRCBtYXNjaGUwNTsKKyAgICAgICB0aGlzLnJ1ZWNrMDUgPTNEIHJ1ZWNrMDU7CisgICAg
ICAgdGhpcy5tYXNjaGUwNiA9M0QgbWFzY2hlMDY7CisgICAgICAgdGhpcy5ydWVjazA2ID0zRCBy
dWVjazA2OworICAgICAgIHRoaXMubWFzY2hlMDcgPTNEIG1hc2NoZTA3OworICAgICAgIHRoaXMu
cnVlY2swNyA9M0QgcnVlY2swNzsKKyAgICAgICB0aGlzLm1hc2NoZTA4ID0zRCBtYXNjaGUwODsK
KyAgICAgICB0aGlzLnJ1ZWNrMDggPTNEIHJ1ZWNrMDg7CisgICAgICAgdGhpcy5tYXNjaGUwOSA9
M0QgbWFzY2hlMDk7CisgICAgICAgdGhpcy5ydWVjazA5ID0zRCBydWVjazA5OworICAgICAgIHRo
aXMubWFzY2hlMTAgPTNEIG1hc2NoZTEwOworICAgICAgIHRoaXMucnVlY2sxMCA9M0QgcnVlY2sx
MDsKKyAgICAgICB0aGlzLm1hc2NoZTExID0zRCBtYXNjaGUxMTsKKyAgICAgICB0aGlzLnJ1ZWNr
MTEgPTNEIHJ1ZWNrMTE7CisgICAgICAgdGhpcy5tYXNjaGUxMiA9M0QgbWFzY2hlMTI7CisgICAg
ICAgdGhpcy5ydWVjazEyID0zRCBydWVjazEyOworICAgICAgIHRoaXMubWFzY2hlMTMgPTNEIG1h
c2NoZTEzOworICAgICAgIHRoaXMucnVlY2sxMyA9M0QgcnVlY2sxMzsKKyAgICAgICB0aGlzLm1h
c2NoZTE0ID0zRCBtYXNjaGUxNDsKKyAgICAgICB0aGlzLnJ1ZWNrMTQgPTNEIHJ1ZWNrMTQ7Cisg
ICAgICAgdGhpcy5tYXNjaGUxNSA9M0QgbWFzY2hlMTU7CisgICAgICAgdGhpcy5ydWVjazE1ID0z
RCBydWVjazE1OworICAgICAgIHRoaXMubWFzY2hlMTYgPTNEIG1hc2NoZTE2OworICAgICAgIHRo
aXMucnVlY2sxNiA9M0QgcnVlY2sxNjsKKyAgICAgICB0aGlzLm1hc2NoZTE3ID0zRCBtYXNjaGUx
NzsKKyAgICAgICB0aGlzLnJ1ZWNrMTcgPTNEIHJ1ZWNrMTc7CisgICAgICAgdGhpcy5tYXNjaGUx
OCA9M0QgbWFzY2hlMTg7CisgICAgICAgdGhpcy5ydWVjazE4ID0zRCBydWVjazE4OworICAgICAg
IHRoaXMubWFzY2hlMTkgPTNEIG1hc2NoZTE5OworICAgICAgIHRoaXMucnVlY2sxOSA9M0QgcnVl
Y2sxOTsKKyAgICAgICB0aGlzLm1hc2NoZTIwID0zRCBtYXNjaGUyMDsKKyAgICAgICB0aGlzLnJ1
ZWNrMjAgPTNEIHJ1ZWNrMjA7CisgICAgICAgdGhpcy5tYXNjaGUyMSA9M0QgbWFzY2hlMjE7Cisg
ICAgICAgdGhpcy5ydWVjazIxID0zRCBydWVjazIxOworICAgICAgIHRoaXMucmVzdCA9M0QgcmVz
dDsKKyAgICB9CisKKworCisgICAgQENvbHVtbihuYW1lPTNEIlNJRUJBTkFMWVNFSUQiLCBudWxs
YWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxMSwgc2NhbD0KZT0zRDApCisgICAgcHVibGljIGxv
bmcgZ2V0U2llYmFuYWx5c2VpZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc2llYmFuYWx5c2Vp
ZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRTaWViYW5hbHlzZWlkKGxvbmcgc2llYmFu
YWx5c2VpZCkgeworICAgICAgICB0aGlzLnNpZWJhbmFseXNlaWQgPTNEIHNpZWJhbmFseXNlaWQ7
CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiR1NJRUJTQVRaSUQiLCBudWxsYWJsZT0z
RGZhbHNlLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9Cj0zRDApCisgICAgcHVibGljIGxvbmcgZ2V0
R3NpZWJzYXR6aWQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmdzaWVic2F0emlkOworICAgIH0K
KworICAgIHB1YmxpYyB2b2lkIHNldEdzaWVic2F0emlkKGxvbmcgZ3NpZWJzYXR6aWQpIHsKKyAg
ICAgICAgdGhpcy5nc2llYnNhdHppZCA9M0QgZ3NpZWJzYXR6aWQ7CisgICAgfQorCisKKyAgICBA
Q29sdW1uKG5hbWU9M0QiR01BU1NFIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQorICAgIHB1
YmxpYyBCaWdEZWNpbWFsIGdldEdtYXNzZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZ21hc3Nl
OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEdtYXNzZShCaWdEZWNpbWFsIGdtYXNzZSkg
eworICAgICAgICB0aGlzLmdtYXNzZSA9M0QgZ21hc3NlOworICAgIH0KKworCisgICAgQENvbHVt
bihuYW1lPTNEIk1BU0NIRTAxIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldE1hc2NoZTAxKCkgeworICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUw
MTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUwMShCaWdEZWNpbWFsIG1hc2No
ZTAxKSB7CisgICAgICAgIHRoaXMubWFzY2hlMDEgPTNEIG1hc2NoZTAxOworICAgIH0KKworCisg
ICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMDEiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCisg
ICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2swMSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
cnVlY2swMTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazAxKEJpZ0RlY2ltYWwg
cnVlY2swMSkgeworICAgICAgICB0aGlzLnJ1ZWNrMDEgPTNEIHJ1ZWNrMDE7CisgICAgfQorCisK
KyAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMDIiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQp
CisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMDIoKSB7CisgICAgICAgIHJldHVybiB0
aGlzLm1hc2NoZTAyOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTAyKEJpZ0Rl
Y2ltYWwgbWFzY2hlMDIpIHsKKyAgICAgICAgdGhpcy5tYXNjaGUwMiA9M0QgbWFzY2hlMDI7Cisg
ICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0swMiIsIHByZWNpc2lvbj0zRDksIHNj
YWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazAyKCkgeworICAgICAgICBy
ZXR1cm4gdGhpcy5ydWVjazAyOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMDIo
QmlnRGVjaW1hbCBydWVjazAyKSB7CisgICAgICAgIHRoaXMucnVlY2swMiA9M0QgcnVlY2swMjsK
KyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUwMyIsIHByZWNpc2lvbj0zRDcs
IHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUwMygpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMubWFzY2hlMDM7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TWFz
Y2hlMDMoQmlnRGVjaW1hbCBtYXNjaGUwMykgeworICAgICAgICB0aGlzLm1hc2NoZTAzID0zRCBt
YXNjaGUwMzsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzAzIiwgcHJlY2lz
aW9uPTNEOSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMDMoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMDM7CisgICAgfQorCisgICAgcHVibGljIHZvaWQg
c2V0UnVlY2swMyhCaWdEZWNpbWFsIHJ1ZWNrMDMpIHsKKyAgICAgICAgdGhpcy5ydWVjazAzID0z
RCBydWVjazAzOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTA0IiwgcHJl
Y2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTA0
KCkgeworICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUwNDsKKyAgICB9CisKKyAgICBwdWJsaWMg
dm9pZCBzZXRNYXNjaGUwNChCaWdEZWNpbWFsIG1hc2NoZTA0KSB7CisgICAgICAgIHRoaXMubWFz
Y2hlMDQgPTNEIG1hc2NoZTA0OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlJVRUNL
MDQiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0
UnVlY2swNCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucnVlY2swNDsKKyAgICB9CisKKyAgICBw
dWJsaWMgdm9pZCBzZXRSdWVjazA0KEJpZ0RlY2ltYWwgcnVlY2swNCkgeworICAgICAgICB0aGlz
LnJ1ZWNrMDQgPTNEIHJ1ZWNrMDQ7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiTUFT
Q0hFMDUiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwg
Z2V0TWFzY2hlMDUoKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTA1OworICAgIH0KKwor
ICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTA1KEJpZ0RlY2ltYWwgbWFzY2hlMDUpIHsKKyAgICAg
ICAgdGhpcy5tYXNjaGUwNSA9M0QgbWFzY2hlMDU7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5h
bWU9M0QiUlVFQ0swNSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmln
RGVjaW1hbCBnZXRSdWVjazA1KCkgeworICAgICAgICByZXR1cm4gdGhpcy5ydWVjazA1OworICAg
IH0KKworICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMDUoQmlnRGVjaW1hbCBydWVjazA1KSB7Cisg
ICAgICAgIHRoaXMucnVlY2swNSA9M0QgcnVlY2swNTsKKyAgICB9CisKKworICAgIEBDb2x1bW4o
bmFtZT0zRCJNQVNDSEUwNiIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMg
QmlnRGVjaW1hbCBnZXRNYXNjaGUwNigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMDY7
CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMDYoQmlnRGVjaW1hbCBtYXNjaGUw
NikgeworICAgICAgICB0aGlzLm1hc2NoZTA2ID0zRCBtYXNjaGUwNjsKKyAgICB9CisKKworICAg
IEBDb2x1bW4obmFtZT0zRCJSVUVDSzA2IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQorICAg
IHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMDYoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnJ1
ZWNrMDY7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0UnVlY2swNihCaWdEZWNpbWFsIHJ1
ZWNrMDYpIHsKKyAgICAgICAgdGhpcy5ydWVjazA2ID0zRCBydWVjazA2OworICAgIH0KKworCisg
ICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTA3IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQor
ICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTA3KCkgeworICAgICAgICByZXR1cm4gdGhp
cy5tYXNjaGUwNzsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUwNyhCaWdEZWNp
bWFsIG1hc2NoZTA3KSB7CisgICAgICAgIHRoaXMubWFzY2hlMDcgPTNEIG1hc2NoZTA3OworICAg
IH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMDciLCBwcmVjaXNpb249M0Q5LCBzY2Fs
ZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2swNygpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMucnVlY2swNzsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazA3KEJp
Z0RlY2ltYWwgcnVlY2swNykgeworICAgICAgICB0aGlzLnJ1ZWNrMDcgPTNEIHJ1ZWNrMDc7Cisg
ICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMDgiLCBwcmVjaXNpb249M0Q3LCBz
Y2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMDgoKSB7CisgICAgICAg
IHJldHVybiB0aGlzLm1hc2NoZTA4OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1hc2No
ZTA4KEJpZ0RlY2ltYWwgbWFzY2hlMDgpIHsKKyAgICAgICAgdGhpcy5tYXNjaGUwOCA9M0QgbWFz
Y2hlMDg7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0swOCIsIHByZWNpc2lv
bj0zRDksIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazA4KCkgewor
ICAgICAgICByZXR1cm4gdGhpcy5ydWVjazA4OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNl
dFJ1ZWNrMDgoQmlnRGVjaW1hbCBydWVjazA4KSB7CisgICAgICAgIHRoaXMucnVlY2swOCA9M0Qg
cnVlY2swODsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUwOSIsIHByZWNp
c2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUwOSgp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMDk7CisgICAgfQorCisgICAgcHVibGljIHZv
aWQgc2V0TWFzY2hlMDkoQmlnRGVjaW1hbCBtYXNjaGUwOSkgeworICAgICAgICB0aGlzLm1hc2No
ZTA5ID0zRCBtYXNjaGUwOTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzA5
IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1
ZWNrMDkoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMDk7CisgICAgfQorCisgICAgcHVi
bGljIHZvaWQgc2V0UnVlY2swOShCaWdEZWNpbWFsIHJ1ZWNrMDkpIHsKKyAgICAgICAgdGhpcy5y
dWVjazA5ID0zRCBydWVjazA5OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIk1BU0NI
RTEwIiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdl
dE1hc2NoZTEwKCkgeworICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUxMDsKKyAgICB9CisKKyAg
ICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUxMChCaWdEZWNpbWFsIG1hc2NoZTEwKSB7CisgICAgICAg
IHRoaXMubWFzY2hlMTAgPTNEIG1hc2NoZTEwOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1l
PTNEIlJVRUNLMTAiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0UnVlY2sxMCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucnVlY2sxMDsKKyAgICB9
CisKKyAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazEwKEJpZ0RlY2ltYWwgcnVlY2sxMCkgeworICAg
ICAgICB0aGlzLnJ1ZWNrMTAgPTNEIHJ1ZWNrMTA7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5h
bWU9M0QiTUFTQ0hFMTEiLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0TWFzY2hlMTEoKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTExOwor
ICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTExKEJpZ0RlY2ltYWwgbWFzY2hlMTEp
IHsKKyAgICAgICAgdGhpcy5tYXNjaGUxMSA9M0QgbWFzY2hlMTE7CisgICAgfQorCisKKyAgICBA
Q29sdW1uKG5hbWU9M0QiUlVFQ0sxMSIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKKyAgICBw
dWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazExKCkgeworICAgICAgICByZXR1cm4gdGhpcy5ydWVj
azExOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMTEoQmlnRGVjaW1hbCBydWVj
azExKSB7CisgICAgICAgIHRoaXMucnVlY2sxMSA9M0QgcnVlY2sxMTsKKyAgICB9CisKKworICAg
IEBDb2x1bW4obmFtZT0zRCJNQVNDSEUxMiIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAg
ICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUxMigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
bWFzY2hlMTI7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMTIoQmlnRGVjaW1h
bCBtYXNjaGUxMikgeworICAgICAgICB0aGlzLm1hc2NoZTEyID0zRCBtYXNjaGUxMjsKKyAgICB9
CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzEyIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9
M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMTIoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLnJ1ZWNrMTI7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0UnVlY2sxMihCaWdE
ZWNpbWFsIHJ1ZWNrMTIpIHsKKyAgICAgICAgdGhpcy5ydWVjazEyID0zRCBydWVjazEyOworICAg
IH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTEzIiwgcHJlY2lzaW9uPTNENywgc2Nh
bGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTEzKCkgeworICAgICAgICBy
ZXR1cm4gdGhpcy5tYXNjaGUxMzsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUx
MyhCaWdEZWNpbWFsIG1hc2NoZTEzKSB7CisgICAgICAgIHRoaXMubWFzY2hlMTMgPTNEIG1hc2No
ZTEzOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMTMiLCBwcmVjaXNpb249
M0Q5LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2sxMygpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMucnVlY2sxMzsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRS
dWVjazEzKEJpZ0RlY2ltYWwgcnVlY2sxMykgeworICAgICAgICB0aGlzLnJ1ZWNrMTMgPTNEIHJ1
ZWNrMTM7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMTQiLCBwcmVjaXNp
b249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMTQoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTE0OworICAgIH0KKworICAgIHB1YmxpYyB2b2lk
IHNldE1hc2NoZTE0KEJpZ0RlY2ltYWwgbWFzY2hlMTQpIHsKKyAgICAgICAgdGhpcy5tYXNjaGUx
NCA9M0QgbWFzY2hlMTQ7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0sxNCIs
IHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVj
azE0KCkgeworICAgICAgICByZXR1cm4gdGhpcy5ydWVjazE0OworICAgIH0KKworICAgIHB1Ymxp
YyB2b2lkIHNldFJ1ZWNrMTQoQmlnRGVjaW1hbCBydWVjazE0KSB7CisgICAgICAgIHRoaXMucnVl
Y2sxNCA9M0QgcnVlY2sxNDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUx
NSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRN
YXNjaGUxNSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMTU7CisgICAgfQorCisgICAg
cHVibGljIHZvaWQgc2V0TWFzY2hlMTUoQmlnRGVjaW1hbCBtYXNjaGUxNSkgeworICAgICAgICB0
aGlzLm1hc2NoZTE1ID0zRCBtYXNjaGUxNTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0z
RCJSVUVDSzE1IiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNp
bWFsIGdldFJ1ZWNrMTUoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMTU7CisgICAgfQor
CisgICAgcHVibGljIHZvaWQgc2V0UnVlY2sxNShCaWdEZWNpbWFsIHJ1ZWNrMTUpIHsKKyAgICAg
ICAgdGhpcy5ydWVjazE1ID0zRCBydWVjazE1OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1l
PTNEIk1BU0NIRTE2IiwgcHJlY2lzaW9uPTNENywgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdE
ZWNpbWFsIGdldE1hc2NoZTE2KCkgeworICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUxNjsKKyAg
ICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNYXNjaGUxNihCaWdEZWNpbWFsIG1hc2NoZTE2KSB7
CisgICAgICAgIHRoaXMubWFzY2hlMTYgPTNEIG1hc2NoZTE2OworICAgIH0KKworCisgICAgQENv
bHVtbihuYW1lPTNEIlJVRUNLMTYiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCisgICAgcHVi
bGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2sxNigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucnVlY2sx
NjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRSdWVjazE2KEJpZ0RlY2ltYWwgcnVlY2sx
NikgeworICAgICAgICB0aGlzLnJ1ZWNrMTYgPTNEIHJ1ZWNrMTY7CisgICAgfQorCisKKyAgICBA
Q29sdW1uKG5hbWU9M0QiTUFTQ0hFMTciLCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAg
cHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFzY2hlMTcoKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1h
c2NoZTE3OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1hc2NoZTE3KEJpZ0RlY2ltYWwg
bWFzY2hlMTcpIHsKKyAgICAgICAgdGhpcy5tYXNjaGUxNyA9M0QgbWFzY2hlMTc7CisgICAgfQor
CisKKyAgICBAQ29sdW1uKG5hbWU9M0QiUlVFQ0sxNyIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNE
MykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSdWVjazE3KCkgeworICAgICAgICByZXR1cm4g
dGhpcy5ydWVjazE3OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMTcoQmlnRGVj
aW1hbCBydWVjazE3KSB7CisgICAgICAgIHRoaXMucnVlY2sxNyA9M0QgcnVlY2sxNzsKKyAgICB9
CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJNQVNDSEUxOCIsIHByZWNpc2lvbj0zRDcsIHNjYWxl
PTNENCkKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRNYXNjaGUxOCgpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMubWFzY2hlMTg7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMTgo
QmlnRGVjaW1hbCBtYXNjaGUxOCkgeworICAgICAgICB0aGlzLm1hc2NoZTE4ID0zRCBtYXNjaGUx
ODsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJSVUVDSzE4IiwgcHJlY2lzaW9uPTNE
OSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJ1ZWNrMTgoKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLnJ1ZWNrMTg7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0UnVl
Y2sxOChCaWdEZWNpbWFsIHJ1ZWNrMTgpIHsKKyAgICAgICAgdGhpcy5ydWVjazE4ID0zRCBydWVj
azE4OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIk1BU0NIRTE5IiwgcHJlY2lzaW9u
PTNENywgc2NhbGU9M0Q0KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldE1hc2NoZTE5KCkgewor
ICAgICAgICByZXR1cm4gdGhpcy5tYXNjaGUxOTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBz
ZXRNYXNjaGUxOShCaWdEZWNpbWFsIG1hc2NoZTE5KSB7CisgICAgICAgIHRoaXMubWFzY2hlMTkg
PTNEIG1hc2NoZTE5OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIlJVRUNLMTkiLCBw
cmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UnVlY2sx
OSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucnVlY2sxOTsKKyAgICB9CisKKyAgICBwdWJsaWMg
dm9pZCBzZXRSdWVjazE5KEJpZ0RlY2ltYWwgcnVlY2sxOSkgeworICAgICAgICB0aGlzLnJ1ZWNr
MTkgPTNEIHJ1ZWNrMTk7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiTUFTQ0hFMjAi
LCBwcmVjaXNpb249M0Q3LCBzY2FsZT0zRDQpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TWFz
Y2hlMjAoKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1hc2NoZTIwOworICAgIH0KKworICAgIHB1
YmxpYyB2b2lkIHNldE1hc2NoZTIwKEJpZ0RlY2ltYWwgbWFzY2hlMjApIHsKKyAgICAgICAgdGhp
cy5tYXNjaGUyMCA9M0QgbWFzY2hlMjA7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0Qi
UlVFQ0syMCIsIHByZWNpc2lvbj0zRDksIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1h
bCBnZXRSdWVjazIwKCkgeworICAgICAgICByZXR1cm4gdGhpcy5ydWVjazIwOworICAgIH0KKwor
ICAgIHB1YmxpYyB2b2lkIHNldFJ1ZWNrMjAoQmlnRGVjaW1hbCBydWVjazIwKSB7CisgICAgICAg
IHRoaXMucnVlY2syMCA9M0QgcnVlY2syMDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0z
RCJNQVNDSEUyMSIsIHByZWNpc2lvbj0zRDcsIHNjYWxlPTNENCkKKyAgICBwdWJsaWMgQmlnRGVj
aW1hbCBnZXRNYXNjaGUyMSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubWFzY2hlMjE7CisgICAg
fQorCisgICAgcHVibGljIHZvaWQgc2V0TWFzY2hlMjEoQmlnRGVjaW1hbCBtYXNjaGUyMSkgewor
ICAgICAgICB0aGlzLm1hc2NoZTIxID0zRCBtYXNjaGUyMTsKKyAgICB9CisKKworICAgIEBDb2x1
bW4obmFtZT0zRCJSVUVDSzIxIiwgcHJlY2lzaW9uPTNEOSwgc2NhbGU9M0QzKQorICAgIHB1Ymxp
YyBCaWdEZWNpbWFsIGdldFJ1ZWNrMjEoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnJ1ZWNrMjE7
CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0UnVlY2syMShCaWdEZWNpbWFsIHJ1ZWNrMjEp
IHsKKyAgICAgICAgdGhpcy5ydWVjazIxID0zRCBydWVjazIxOworICAgIH0KKworCisgICAgQENv
bHVtbihuYW1lPTNEIlJFU1QiLCBwcmVjaXNpb249M0Q5LCBzY2FsZT0zRDMpCisgICAgcHVibGlj
IEJpZ0RlY2ltYWwgZ2V0UmVzdCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucmVzdDsKKyAgICB9
CisKKyAgICBwdWJsaWMgdm9pZCBzZXRSZXN0KEJpZ0RlY2ltYWwgcmVzdCkgeworICAgICAgICB0
aGlzLnJlc3QgPTNEIHJlc3Q7CisgICAgfQorCisKKyAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhP
YmplY3Qgb3RoZXIpIHsKKyAgICAgICAgIGlmICggKHRoaXMgPTNEPTNEIG90aGVyICkgKSByZXR1
cm4gdHJ1ZTsKKwkJIGlmICggKG90aGVyID0zRD0zRCBudWxsICkgKSByZXR1cm4gZmFsc2U7CisJ
CSBpZiAoICEob3RoZXIgaW5zdGFuY2VvZiBTc2llYnVuZ3NpZWJJZCkgKSByZXR1cm4gZmFsc2U7
CisJCSBTc2llYnVuZ3NpZWJJZCBjYXN0T3RoZXIgPTNEICggU3NpZWJ1bmdzaWViSWQgKSBvdGhl
cjsKKworCQkgcmV0dXJuICh0aGlzLmdldFNpZWJhbmFseXNlaWQoKT0zRD0zRGNhc3RPdGhlci5n
ZXRTaWViYW5hbHlzZWlkKCkpCisgJiYgKHRoaXMuZ2V0R3NpZWJzYXR6aWQoKT0zRD0zRGNhc3RP
dGhlci5nZXRHc2llYnNhdHppZCgpKQorICYmICggKHRoaXMuZ2V0R21hc3NlKCk9M0Q9M0RjYXN0
T3RoZXIuZ2V0R21hc3NlKCkpIHx8ICggdGhpcy5nZXRHbWFzc2UoKSE9Cj0zRG51bGwgJiYgY2Fz
dE90aGVyLmdldEdtYXNzZSgpIT0zRG51bGwgJiYgdGhpcy5nZXRHbWFzc2UoKS5lcXVhbHMoY2Fz
dE90aD0KZXIuZ2V0R21hc3NlKCkpICkgKQorICYmICggKHRoaXMuZ2V0TWFzY2hlMDEoKT0zRD0z
RGNhc3RPdGhlci5nZXRNYXNjaGUwMSgpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUwMSgpIT0zRG51
bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTAxKCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTAx
KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTAxKCkpICkgKQorICYmICggKHRoaXMuZ2V0
UnVlY2swMSgpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMDEoKSkgfHwgKCB0aGlzLmdldFJ1ZWNr
MDE9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMDEoKSE9M0RudWxsICYmIHRoaXMu
Z2V0UnVlY2swMSgpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazAxKCkpICkgKQorICYmICgg
KHRoaXMuZ2V0TWFzY2hlMDIoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUwMigpKSB8fCAoIHRo
aXMuZ2V0TWFzY2g9CmUwMigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTAyKCkhPTNE
bnVsbCAmJiB0aGlzLmdldE1hc2NoZTAyKCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTAy
KCkpICkgKQorICYmICggKHRoaXMuZ2V0UnVlY2swMigpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNr
MDIoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMDI9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1
ZWNrMDIoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2swMigpLmVxdWFscyhjYT0Kc3RPdGhlci5n
ZXRSdWVjazAyKCkpICkgKQorICYmICggKHRoaXMuZ2V0TWFzY2hlMDMoKT0zRD0zRGNhc3RPdGhl
ci5nZXRNYXNjaGUwMygpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUwMygpIT0zRG51bGwgJiYgY2Fz
dE90aGVyLmdldE1hc2NoZTAzKCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTAzKCkuZXF1YT0K
bHMoY2FzdE90aGVyLmdldE1hc2NoZTAzKCkpICkgKQorICYmICggKHRoaXMuZ2V0UnVlY2swMygp
PTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMDMoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMDM9CigpIT0z
RG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMDMoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2sw
MygpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazAzKCkpICkgKQorICYmICggKHRoaXMuZ2V0
TWFzY2hlMDQoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUwNCgpKSB8fCAoIHRoaXMuZ2V0TWFz
Y2g9CmUwNCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTA0KCkhPTNEbnVsbCAmJiB0
aGlzLmdldE1hc2NoZTA0KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTA0KCkpICkgKQor
ICYmICggKHRoaXMuZ2V0UnVlY2swNCgpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMDQoKSkgfHwg
KCB0aGlzLmdldFJ1ZWNrMDQ9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMDQoKSE9
M0RudWxsICYmIHRoaXMuZ2V0UnVlY2swNCgpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazA0
KCkpICkgKQorICYmICggKHRoaXMuZ2V0TWFzY2hlMDUoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNj
aGUwNSgpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUwNSgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdl
dE1hc2NoZTA1KCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTA1KCkuZXF1YT0KbHMoY2FzdE90
aGVyLmdldE1hc2NoZTA1KCkpICkgKQorICYmICggKHRoaXMuZ2V0UnVlY2swNSgpPTNEPTNEY2Fz
dE90aGVyLmdldFJ1ZWNrMDUoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMDU9CigpIT0zRG51bGwgJiYg
Y2FzdE90aGVyLmdldFJ1ZWNrMDUoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2swNSgpLmVxdWFs
cyhjYT0Kc3RPdGhlci5nZXRSdWVjazA1KCkpICkgKQorICYmICggKHRoaXMuZ2V0TWFzY2hlMDYo
KT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUwNigpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUwNigp
IT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTA2KCkhPTNEbnVsbCAmJiB0aGlzLmdldE1h
c2NoZTA2KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTA2KCkpICkgKQorICYmICggKHRo
aXMuZ2V0UnVlY2swNigpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMDYoKSkgfHwgKCB0aGlzLmdl
dFJ1ZWNrMDY9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMDYoKSE9M0RudWxsICYm
IHRoaXMuZ2V0UnVlY2swNigpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazA2KCkpICkgKQor
ICYmICggKHRoaXMuZ2V0TWFzY2hlMDcoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUwNygpKSB8
fCAoIHRoaXMuZ2V0TWFzY2g9CmUwNygpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTA3
KCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTA3KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1h
c2NoZTA3KCkpICkgKQorICYmICggKHRoaXMuZ2V0UnVlY2swNygpPTNEPTNEY2FzdE90aGVyLmdl
dFJ1ZWNrMDcoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMDc9CigpIT0zRG51bGwgJiYgY2FzdE90aGVy
LmdldFJ1ZWNrMDcoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2swNygpLmVxdWFscyhjYT0Kc3RP
dGhlci5nZXRSdWVjazA3KCkpICkgKQorICYmICggKHRoaXMuZ2V0TWFzY2hlMDgoKT0zRD0zRGNh
c3RPdGhlci5nZXRNYXNjaGUwOCgpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUwOCgpIT0zRG51bGwg
JiYgY2FzdE90aGVyLmdldE1hc2NoZTA4KCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTA4KCku
ZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTA4KCkpICkgKQorICYmICggKHRoaXMuZ2V0UnVl
Y2swOCgpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMDgoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMDg9
CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMDgoKSE9M0RudWxsICYmIHRoaXMuZ2V0
UnVlY2swOCgpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazA4KCkpICkgKQorICYmICggKHRo
aXMuZ2V0TWFzY2hlMDkoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUwOSgpKSB8fCAoIHRoaXMu
Z2V0TWFzY2g9CmUwOSgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTA5KCkhPTNEbnVs
bCAmJiB0aGlzLmdldE1hc2NoZTA5KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTA5KCkp
ICkgKQorICYmICggKHRoaXMuZ2V0UnVlY2swOSgpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMDko
KSkgfHwgKCB0aGlzLmdldFJ1ZWNrMDk9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNr
MDkoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2swOSgpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRS
dWVjazA5KCkpICkgKQorICYmICggKHRoaXMuZ2V0TWFzY2hlMTAoKT0zRD0zRGNhc3RPdGhlci5n
ZXRNYXNjaGUxMCgpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUxMCgpIT0zRG51bGwgJiYgY2FzdE90
aGVyLmdldE1hc2NoZTEwKCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTEwKCkuZXF1YT0KbHMo
Y2FzdE90aGVyLmdldE1hc2NoZTEwKCkpICkgKQorICYmICggKHRoaXMuZ2V0UnVlY2sxMCgpPTNE
PTNEY2FzdE90aGVyLmdldFJ1ZWNrMTAoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMTA9CigpIT0zRG51
bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMTAoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2sxMCgp
LmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazEwKCkpICkgKQorICYmICggKHRoaXMuZ2V0TWFz
Y2hlMTEoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUxMSgpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9
CmUxMSgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTExKCkhPTNEbnVsbCAmJiB0aGlz
LmdldE1hc2NoZTExKCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTExKCkpICkgKQorICYm
ICggKHRoaXMuZ2V0UnVlY2sxMSgpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMTEoKSkgfHwgKCB0
aGlzLmdldFJ1ZWNrMTE9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMTEoKSE9M0Ru
dWxsICYmIHRoaXMuZ2V0UnVlY2sxMSgpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazExKCkp
ICkgKQorICYmICggKHRoaXMuZ2V0TWFzY2hlMTIoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUx
MigpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUxMigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1h
c2NoZTEyKCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTEyKCkuZXF1YT0KbHMoY2FzdE90aGVy
LmdldE1hc2NoZTEyKCkpICkgKQorICYmICggKHRoaXMuZ2V0UnVlY2sxMigpPTNEPTNEY2FzdE90
aGVyLmdldFJ1ZWNrMTIoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMTI9CigpIT0zRG51bGwgJiYgY2Fz
dE90aGVyLmdldFJ1ZWNrMTIoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2sxMigpLmVxdWFscyhj
YT0Kc3RPdGhlci5nZXRSdWVjazEyKCkpICkgKQorICYmICggKHRoaXMuZ2V0TWFzY2hlMTMoKT0z
RD0zRGNhc3RPdGhlci5nZXRNYXNjaGUxMygpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUxMygpIT0z
RG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTEzKCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2No
ZTEzKCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTEzKCkpICkgKQorICYmICggKHRoaXMu
Z2V0UnVlY2sxMygpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMTMoKSkgfHwgKCB0aGlzLmdldFJ1
ZWNrMTM9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMTMoKSE9M0RudWxsICYmIHRo
aXMuZ2V0UnVlY2sxMygpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazEzKCkpICkgKQorICYm
ICggKHRoaXMuZ2V0TWFzY2hlMTQoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUxNCgpKSB8fCAo
IHRoaXMuZ2V0TWFzY2g9CmUxNCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTE0KCkh
PTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTE0KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2No
ZTE0KCkpICkgKQorICYmICggKHRoaXMuZ2V0UnVlY2sxNCgpPTNEPTNEY2FzdE90aGVyLmdldFJ1
ZWNrMTQoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMTQ9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdl
dFJ1ZWNrMTQoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2sxNCgpLmVxdWFscyhjYT0Kc3RPdGhl
ci5nZXRSdWVjazE0KCkpICkgKQorICYmICggKHRoaXMuZ2V0TWFzY2hlMTUoKT0zRD0zRGNhc3RP
dGhlci5nZXRNYXNjaGUxNSgpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUxNSgpIT0zRG51bGwgJiYg
Y2FzdE90aGVyLmdldE1hc2NoZTE1KCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTE1KCkuZXF1
YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTE1KCkpICkgKQorICYmICggKHRoaXMuZ2V0UnVlY2sx
NSgpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMTUoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMTU9Cigp
IT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMTUoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVl
Y2sxNSgpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazE1KCkpICkgKQorICYmICggKHRoaXMu
Z2V0TWFzY2hlMTYoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUxNigpKSB8fCAoIHRoaXMuZ2V0
TWFzY2g9CmUxNigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTE2KCkhPTNEbnVsbCAm
JiB0aGlzLmdldE1hc2NoZTE2KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTE2KCkpICkg
KQorICYmICggKHRoaXMuZ2V0UnVlY2sxNigpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMTYoKSkg
fHwgKCB0aGlzLmdldFJ1ZWNrMTY9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMTYo
KSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2sxNigpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVj
azE2KCkpICkgKQorICYmICggKHRoaXMuZ2V0TWFzY2hlMTcoKT0zRD0zRGNhc3RPdGhlci5nZXRN
YXNjaGUxNygpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUxNygpIT0zRG51bGwgJiYgY2FzdE90aGVy
LmdldE1hc2NoZTE3KCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTE3KCkuZXF1YT0KbHMoY2Fz
dE90aGVyLmdldE1hc2NoZTE3KCkpICkgKQorICYmICggKHRoaXMuZ2V0UnVlY2sxNygpPTNEPTNE
Y2FzdE90aGVyLmdldFJ1ZWNrMTcoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMTc9CigpIT0zRG51bGwg
JiYgY2FzdE90aGVyLmdldFJ1ZWNrMTcoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2sxNygpLmVx
dWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazE3KCkpICkgKQorICYmICggKHRoaXMuZ2V0TWFzY2hl
MTgoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUxOCgpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUx
OCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTE4KCkhPTNEbnVsbCAmJiB0aGlzLmdl
dE1hc2NoZTE4KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTE4KCkpICkgKQorICYmICgg
KHRoaXMuZ2V0UnVlY2sxOCgpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMTgoKSkgfHwgKCB0aGlz
LmdldFJ1ZWNrMTg9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMTgoKSE9M0RudWxs
ICYmIHRoaXMuZ2V0UnVlY2sxOCgpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazE4KCkpICkg
KQorICYmICggKHRoaXMuZ2V0TWFzY2hlMTkoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUxOSgp
KSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUxOSgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2No
ZTE5KCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTE5KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdl
dE1hc2NoZTE5KCkpICkgKQorICYmICggKHRoaXMuZ2V0UnVlY2sxOSgpPTNEPTNEY2FzdE90aGVy
LmdldFJ1ZWNrMTkoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMTk9CigpIT0zRG51bGwgJiYgY2FzdE90
aGVyLmdldFJ1ZWNrMTkoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2sxOSgpLmVxdWFscyhjYT0K
c3RPdGhlci5nZXRSdWVjazE5KCkpICkgKQorICYmICggKHRoaXMuZ2V0TWFzY2hlMjAoKT0zRD0z
RGNhc3RPdGhlci5nZXRNYXNjaGUyMCgpKSB8fCAoIHRoaXMuZ2V0TWFzY2g9CmUyMCgpIT0zRG51
bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTIwKCkhPTNEbnVsbCAmJiB0aGlzLmdldE1hc2NoZTIw
KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTIwKCkpICkgKQorICYmICggKHRoaXMuZ2V0
UnVlY2syMCgpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNrMjAoKSkgfHwgKCB0aGlzLmdldFJ1ZWNr
MjA9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1ZWNrMjAoKSE9M0RudWxsICYmIHRoaXMu
Z2V0UnVlY2syMCgpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRSdWVjazIwKCkpICkgKQorICYmICgg
KHRoaXMuZ2V0TWFzY2hlMjEoKT0zRD0zRGNhc3RPdGhlci5nZXRNYXNjaGUyMSgpKSB8fCAoIHRo
aXMuZ2V0TWFzY2g9CmUyMSgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldE1hc2NoZTIxKCkhPTNE
bnVsbCAmJiB0aGlzLmdldE1hc2NoZTIxKCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldE1hc2NoZTIx
KCkpICkgKQorICYmICggKHRoaXMuZ2V0UnVlY2syMSgpPTNEPTNEY2FzdE90aGVyLmdldFJ1ZWNr
MjEoKSkgfHwgKCB0aGlzLmdldFJ1ZWNrMjE9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFJ1
ZWNrMjEoKSE9M0RudWxsICYmIHRoaXMuZ2V0UnVlY2syMSgpLmVxdWFscyhjYT0Kc3RPdGhlci5n
ZXRSdWVjazIxKCkpICkgKQorICYmICggKHRoaXMuZ2V0UmVzdCgpPTNEPTNEY2FzdE90aGVyLmdl
dFJlc3QoKSkgfHwgKCB0aGlzLmdldFJlc3QoKSE9M0RudWw9CmwgJiYgY2FzdE90aGVyLmdldFJl
c3QoKSE9M0RudWxsICYmIHRoaXMuZ2V0UmVzdCgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0UmVzdD0K
KCkpICkgKTsKKyAgIH0KKworICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgIGlu
dCByZXN1bHQgPTNEIDE3OworCisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKGlu
dCkgdGhpcy5nZXRTaWViYW5hbHlzZWlkKCk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVz
dWx0ICsgKGludCkgdGhpcy5nZXRHc2llYnNhdHppZCgpOworICAgICAgICAgcmVzdWx0ID0zRCAz
NyAqIHJlc3VsdCArICggZ2V0R21hc3NlKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXQ9Ckdt
YXNzZSgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAo
IGdldE1hc2NoZTAxKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTAxKCkuaGFz
aENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2sw
MSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazAxKCkuaGFzaENvZGUoKSApOwor
ICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMDIoKSA9M0Q9M0Qg
bnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMDIoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICBy
ZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazAyKCkgPTNEPTNEIG51bGwgPyAwIDog
dGhpcy5nZT0KdFJ1ZWNrMDIoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3
ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUwMygpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRN
YXNjaGUwMygpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQg
KyAoIGdldFJ1ZWNrMDMoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2swMygpLmhh
c2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2No
ZTA0KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTA0KCkuaGFzaENvZGUoKSAp
OworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2swNCgpID0zRD0z
RCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazA0KCkuaGFzaENvZGUoKSApOworICAgICAgICAg
cmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMDUoKSA9M0Q9M0QgbnVsbCA/IDAg
OiB0aGlzLmc9CmV0TWFzY2hlMDUoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNE
IDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazA1KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0K
dFJ1ZWNrMDUoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0
ICsgKCBnZXRNYXNjaGUwNigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUwNigp
Lmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1
ZWNrMDYoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2swNigpLmhhc2hDb2RlKCkg
KTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTA3KCkgPTNE
PTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTA3KCkuaGFzaENvZGUoKSApOworICAgICAg
ICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2swNygpID0zRD0zRCBudWxsID8g
MCA6IHRoaXMuZ2U9CnRSdWVjazA3KCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0z
RCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMDgoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9
CmV0TWFzY2hlMDgoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVz
dWx0ICsgKCBnZXRSdWVjazA4KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMDgo
KS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRN
YXNjaGUwOSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUwOSgpLmhhc2hDb2Rl
KCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMDkoKSA9
M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2swOSgpLmhhc2hDb2RlKCkgKTsKKyAgICAg
ICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTEwKCkgPTNEPTNEIG51bGwg
PyAwIDogdGhpcy5nPQpldE1hc2NoZTEwKCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0
ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVlY2sxMCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMu
Z2U9CnRSdWVjazEwKCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJl
c3VsdCArICggZ2V0TWFzY2hlMTEoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hl
MTEoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBn
ZXRSdWVjazExKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMTEoKS5oYXNoQ29k
ZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUxMigp
ID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUxMigpLmhhc2hDb2RlKCkgKTsKKyAg
ICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMTIoKSA9M0Q9M0QgbnVs
bCA/IDAgOiB0aGlzLmdlPQp0UnVlY2sxMigpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3Vs
dCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE1hc2NoZTEzKCkgPTNEPTNEIG51bGwgPyAwIDogdGhp
cy5nPQpldE1hc2NoZTEzKCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAq
IHJlc3VsdCArICggZ2V0UnVlY2sxMygpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVj
azEzKCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICgg
Z2V0TWFzY2hlMTQoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMTQoKS5oYXNo
Q29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazE0
KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMTQoKS5oYXNoQ29kZSgpICk7Cisg
ICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUxNSgpID0zRD0zRCBu
dWxsID8gMCA6IHRoaXMuZz0KZXRNYXNjaGUxNSgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJl
c3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMTUoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0
aGlzLmdlPQp0UnVlY2sxNSgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcg
KiByZXN1bHQgKyAoIGdldE1hc2NoZTE2KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1h
c2NoZTE2KCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCAr
ICggZ2V0UnVlY2sxNigpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazE2KCkuaGFz
aENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hl
MTcoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMTcoKS5oYXNoQ29kZSgpICk7
CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazE3KCkgPTNEPTNE
IG51bGwgPyAwIDogdGhpcy5nZT0KdFJ1ZWNrMTcoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICBy
ZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUxOCgpID0zRD0zRCBudWxsID8gMCA6
IHRoaXMuZz0KZXRNYXNjaGUxOCgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0Qg
MzcgKiByZXN1bHQgKyAoIGdldFJ1ZWNrMTgoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0
UnVlY2sxOCgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQg
KyAoIGdldE1hc2NoZTE5KCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nPQpldE1hc2NoZTE5KCku
aGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0UnVl
Y2sxOSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2U9CnRSdWVjazE5KCkuaGFzaENvZGUoKSAp
OworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TWFzY2hlMjAoKSA9M0Q9
M0QgbnVsbCA/IDAgOiB0aGlzLmc9CmV0TWFzY2hlMjAoKS5oYXNoQ29kZSgpICk7CisgICAgICAg
ICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRSdWVjazIwKCkgPTNEPTNEIG51bGwgPyAw
IDogdGhpcy5nZT0KdFJ1ZWNrMjAoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNE
IDM3ICogcmVzdWx0ICsgKCBnZXRNYXNjaGUyMSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0K
ZXRNYXNjaGUyMSgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1
bHQgKyAoIGdldFJ1ZWNrMjEoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdlPQp0UnVlY2syMSgp
Lmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldFJl
c3QoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLmdldFJlPQpzdCgpLmhhc2hDb2RlKCkgKTsKKyAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICB9Cit9CmRpZmYgLXIgYmM0ZTFiZjI2MjI3IC1yIDFl
NjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZl
ci9zZWRkYi9tb2RlbC9TdGF0aW9uLmphdmEKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAw
OjAwIDE5NzAgKzAwMDAKKysrIGIvYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1l
bnRzL3JpdmVyL3NlZGRiL21vZGVsL1N0YXRpb24uamF2PQphCU1vbiBBcHIgMjkgMTE6MzM6MDEg
MjAxMyArMDIwMApAQCAtMCwwICsxLDMxMyBAQAorLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEy
LCAyMDEzIGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKKyAq
IFNvZnR3YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAorICoKKyAqIFRoaXMgZmls
ZSBpcyBGcmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAorICogYW5k
IGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQorICogZG9j
dW1lbnRhdGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0y
MAorICovCisKK3BhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7CisvLyBHZW5l
cmF0ZWQgMTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCisK
KworaW1wb3J0IGphdmEubWF0aC5CaWdEZWNpbWFsOworaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0
OworaW1wb3J0IGphdmEudXRpbC5TZXQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1u
OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0
ZW5jZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2
YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5NYW55
VG9PbmU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuT25lVG9NYW55OworaW1wb3J0IGphdmF4
LnBlcnNpc3RlbmNlLlRhYmxlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlVuaXF1ZUNvbnN0
cmFpbnQ7CisKKy8qKgorICogU3RhdGlvbiBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKKyAqLworQEVu
dGl0eQorQFRhYmxlKG5hbWU9M0QiU1RBVElPTiIKKyAgICAsc2NoZW1hPTNEIlNFRERCIgorICAg
ICwgdW5pcXVlQ29uc3RyYWludHMgPTNEIEBVbmlxdWVDb25zdHJhaW50KGNvbHVtbk5hbWVzPTNE
eyJHRVdBRVNTRVJJRCI9CiwgIk5BTUUifSkKKykKK3B1YmxpYyBjbGFzcyBTdGF0aW9uICBpbXBs
ZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKKworCisgICAgIHByaXZhdGUgbG9uZyBzdGF0
aW9uaWQ7CisgICAgIHByaXZhdGUgQmV6dWdzcGVnZWwgYmV6dWdzcGVnZWw7CisgICAgIHByaXZh
dGUgR2V3YWVzc2VyIGdld2Flc3NlcjsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGttOworICAg
ICBwcml2YXRlIFN0cmluZyBuYW1lOworICAgICBwcml2YXRlIGJvb2xlYW4gdWZlcmlzdGxpbmtz
OworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgdGVpbFZvbjsKKyAgICAgcHJpdmF0ZSBCaWdEZWNp
bWFsIHRlaWxCaXM7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBhYnN0SG1zdDsKKyAgICAgcHJp
dmF0ZSBCaWdEZWNpbWFsIExIb2Nod2VydDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIExSZWNo
d2VydDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIExObjsKKyAgICAgcHJpdmF0ZSBCaWdEZWNp
bWFsIFJIb2Nod2VydDsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIFJSZWNod2VydDsKKyAgICAg
cHJpdmF0ZSBCaWdEZWNpbWFsIFJObjsKKyAgICAgcHJpdmF0ZSBTdHJpbmcgYmVtZXJrdW5nOwor
ICAgICBwcml2YXRlIExvbmcgb2xkbXN0aWQ7CisgICAgIHByaXZhdGUgYm9vbGVhbiBpc3RmZXN0
c3RvZmY7CisgICAgIHByaXZhdGUgU2V0PFNvaGx0ZXN0PiBzb2hsdGVzdHMgPTNEIG5ldyBIYXNo
U2V0PFNvaGx0ZXN0PigwKTsKKyAgICAgcHJpdmF0ZSBTZXQ8SHBlaWx1bmc+IGhwZWlsdW5ncyA9
M0QgbmV3IEhhc2hTZXQ8SHBlaWx1bmc+KDApOworICAgICBwcml2YXRlIFNldDxNcGVpbHVuZz4g
bXBlaWx1bmdzID0zRCBuZXcgSGFzaFNldDxNcGVpbHVuZz4oMCk7CisgICAgIHByaXZhdGUgU2V0
PE1lc3N1bmc+IG1lc3N1bmdzID0zRCBuZXcgSGFzaFNldDxNZXNzdW5nPigwKTsKKworICAgIHB1
YmxpYyBTdGF0aW9uKCkgeworICAgIH0KKworICAgIHB1YmxpYyBTdGF0aW9uKGxvbmcgc3RhdGlv
bmlkLCBHZXdhZXNzZXIgZ2V3YWVzc2VyLCBCaWdEZWNpbWFsIGttLCBTdHI9CmluZyBuYW1lLCBi
b29sZWFuIHVmZXJpc3RsaW5rcywgYm9vbGVhbiBpc3RmZXN0c3RvZmYpIHsKKyAgICAgICAgdGhp
cy5zdGF0aW9uaWQgPTNEIHN0YXRpb25pZDsKKyAgICAgICAgdGhpcy5nZXdhZXNzZXIgPTNEIGdl
d2Flc3NlcjsKKyAgICAgICAgdGhpcy5rbSA9M0Qga207CisgICAgICAgIHRoaXMubmFtZSA9M0Qg
bmFtZTsKKyAgICAgICAgdGhpcy51ZmVyaXN0bGlua3MgPTNEIHVmZXJpc3RsaW5rczsKKyAgICAg
ICAgdGhpcy5pc3RmZXN0c3RvZmYgPTNEIGlzdGZlc3RzdG9mZjsKKyAgICB9CisgICAgcHVibGlj
IFN0YXRpb24obG9uZyBzdGF0aW9uaWQsIEJlenVnc3BlZ2VsIGJlenVnc3BlZ2VsLCBHZXdhZXNz
ZXIgZ2V3YT0KZXNzZXIsIEJpZ0RlY2ltYWwga20sIFN0cmluZyBuYW1lLCBib29sZWFuIHVmZXJp
c3RsaW5rcywgQmlnRGVjaW1hbCB0ZWlsVm9uPQosIEJpZ0RlY2ltYWwgdGVpbEJpcywgQmlnRGVj
aW1hbCBhYnN0SG1zdCwgQmlnRGVjaW1hbCBMSG9jaHdlcnQsIEJpZ0RlY2ltYWw9CiBMUmVjaHdl
cnQsIEJpZ0RlY2ltYWwgTE5uLCBCaWdEZWNpbWFsIFJIb2Nod2VydCwgQmlnRGVjaW1hbCBSUmVj
aHdlcnQsIEJpZz0KRGVjaW1hbCBSTm4sIFN0cmluZyBiZW1lcmt1bmcsIExvbmcgb2xkbXN0aWQs
IGJvb2xlYW4gaXN0ZmVzdHN0b2ZmLCBTZXQ8U29oPQpsdGVzdD4gc29obHRlc3RzLCBTZXQ8SHBl
aWx1bmc+IGhwZWlsdW5ncywgU2V0PE1wZWlsdW5nPiBtcGVpbHVuZ3MsIFNldDxNZXM9CnN1bmc+
IG1lc3N1bmdzKSB7CisgICAgICAgdGhpcy5zdGF0aW9uaWQgPTNEIHN0YXRpb25pZDsKKyAgICAg
ICB0aGlzLmJlenVnc3BlZ2VsID0zRCBiZXp1Z3NwZWdlbDsKKyAgICAgICB0aGlzLmdld2Flc3Nl
ciA9M0QgZ2V3YWVzc2VyOworICAgICAgIHRoaXMua20gPTNEIGttOworICAgICAgIHRoaXMubmFt
ZSA9M0QgbmFtZTsKKyAgICAgICB0aGlzLnVmZXJpc3RsaW5rcyA9M0QgdWZlcmlzdGxpbmtzOwor
ICAgICAgIHRoaXMudGVpbFZvbiA9M0QgdGVpbFZvbjsKKyAgICAgICB0aGlzLnRlaWxCaXMgPTNE
IHRlaWxCaXM7CisgICAgICAgdGhpcy5hYnN0SG1zdCA9M0QgYWJzdEhtc3Q7CisgICAgICAgdGhp
cy5MSG9jaHdlcnQgPTNEIExIb2Nod2VydDsKKyAgICAgICB0aGlzLkxSZWNod2VydCA9M0QgTFJl
Y2h3ZXJ0OworICAgICAgIHRoaXMuTE5uID0zRCBMTm47CisgICAgICAgdGhpcy5SSG9jaHdlcnQg
PTNEIFJIb2Nod2VydDsKKyAgICAgICB0aGlzLlJSZWNod2VydCA9M0QgUlJlY2h3ZXJ0OworICAg
ICAgIHRoaXMuUk5uID0zRCBSTm47CisgICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3Vu
ZzsKKyAgICAgICB0aGlzLm9sZG1zdGlkID0zRCBvbGRtc3RpZDsKKyAgICAgICB0aGlzLmlzdGZl
c3RzdG9mZiA9M0QgaXN0ZmVzdHN0b2ZmOworICAgICAgIHRoaXMuc29obHRlc3RzID0zRCBzb2hs
dGVzdHM7CisgICAgICAgdGhpcy5ocGVpbHVuZ3MgPTNEIGhwZWlsdW5nczsKKyAgICAgICB0aGlz
Lm1wZWlsdW5ncyA9M0QgbXBlaWx1bmdzOworICAgICAgIHRoaXMubWVzc3VuZ3MgPTNEIG1lc3N1
bmdzOworICAgIH0KKworICAgICBASWQKKworCisgICAgQENvbHVtbihuYW1lPTNEIlNUQVRJT05J
RCIsIHVuaXF1ZT0zRHRydWUsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0KPTNEMTEsIHNj
YWxlPTNEMCkKKyAgICBwdWJsaWMgbG9uZyBnZXRTdGF0aW9uaWQoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLnN0YXRpb25pZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRTdGF0aW9uaWQo
bG9uZyBzdGF0aW9uaWQpIHsKKyAgICAgICAgdGhpcy5zdGF0aW9uaWQgPTNEIHN0YXRpb25pZDsK
KyAgICB9CisKK0BNYW55VG9PbmUoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSkKKyAgICBASm9pbkNv
bHVtbihuYW1lPTNEIkJFWlVHU1BFR0VMSUQiKQorICAgIHB1YmxpYyBCZXp1Z3NwZWdlbCBnZXRC
ZXp1Z3NwZWdlbCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYmV6dWdzcGVnZWw7CisgICAgfQor
CisgICAgcHVibGljIHZvaWQgc2V0QmV6dWdzcGVnZWwoQmV6dWdzcGVnZWwgYmV6dWdzcGVnZWwp
IHsKKyAgICAgICAgdGhpcy5iZXp1Z3NwZWdlbCA9M0QgYmV6dWdzcGVnZWw7CisgICAgfQorCitA
TWFueVRvT25lKGZldGNoPTNERmV0Y2hUeXBlLkxBWlkpCisgICAgQEpvaW5Db2x1bW4obmFtZT0z
RCJHRVdBRVNTRVJJRCIsIG51bGxhYmxlPTNEZmFsc2UpCisgICAgcHVibGljIEdld2Flc3NlciBn
ZXRHZXdhZXNzZXIoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmdld2Flc3NlcjsKKyAgICB9CisK
KyAgICBwdWJsaWMgdm9pZCBzZXRHZXdhZXNzZXIoR2V3YWVzc2VyIGdld2Flc3NlcikgeworICAg
ICAgICB0aGlzLmdld2Flc3NlciA9M0QgZ2V3YWVzc2VyOworICAgIH0KKworCisgICAgQENvbHVt
bihuYW1lPTNEIktNIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0Qz
KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEttKCkgeworICAgICAgICByZXR1cm4gdGhpcy5r
bTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRLbShCaWdEZWNpbWFsIGttKSB7CisgICAg
ICAgIHRoaXMua20gPTNEIGttOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIk5BTUUi
LCBudWxsYWJsZT0zRGZhbHNlLCBsZW5ndGg9M0Q1MCkKKyAgICBwdWJsaWMgU3RyaW5nIGdldE5h
bWUoKSB7CisgICAgICAgIHJldHVybiB0aGlzLm5hbWU7CisgICAgfQorCisgICAgcHVibGljIHZv
aWQgc2V0TmFtZShTdHJpbmcgbmFtZSkgeworICAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7Cisg
ICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiVUZFUklTVExJTktTIiwgbnVsbGFibGU9M0Rm
YWxzZSwgcHJlY2lzaW9uPTNEMSwgc2NhbGU9Cj0zRDApCisgICAgcHVibGljIGJvb2xlYW4gaXNV
ZmVyaXN0bGlua3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnVmZXJpc3RsaW5rczsKKyAgICB9
CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVZmVyaXN0bGlua3MoYm9vbGVhbiB1ZmVyaXN0bGlua3Mp
IHsKKyAgICAgICAgdGhpcy51ZmVyaXN0bGlua3MgPTNEIHVmZXJpc3RsaW5rczsKKyAgICB9CisK
KworICAgIEBDb2x1bW4obmFtZT0zRCJURUlMX1ZPTiIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNE
MykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRUZWlsVm9uKCkgeworICAgICAgICByZXR1cm4g
dGhpcy50ZWlsVm9uOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFRlaWxWb24oQmlnRGVj
aW1hbCB0ZWlsVm9uKSB7CisgICAgICAgIHRoaXMudGVpbFZvbiA9M0QgdGVpbFZvbjsKKyAgICB9
CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJURUlMX0JJUyIsIHByZWNpc2lvbj0zRDgsIHNjYWxl
PTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRUZWlsQmlzKCkgeworICAgICAgICByZXR1
cm4gdGhpcy50ZWlsQmlzOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFRlaWxCaXMoQmln
RGVjaW1hbCB0ZWlsQmlzKSB7CisgICAgICAgIHRoaXMudGVpbEJpcyA9M0QgdGVpbEJpczsKKyAg
ICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJBQlNUX0hNU1QiLCBwcmVjaXNpb249M0Q4LCBz
Y2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0QWJzdEhtc3QoKSB7CisgICAgICAg
IHJldHVybiB0aGlzLmFic3RIbXN0OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEFic3RI
bXN0KEJpZ0RlY2ltYWwgYWJzdEhtc3QpIHsKKyAgICAgICAgdGhpcy5hYnN0SG1zdCA9M0QgYWJz
dEhtc3Q7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiTF9IT0NIV0VSVCIsIHByZWNp
c2lvbj0zRDExLCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0TEhvY2h3ZXJ0
KCkgeworICAgICAgICByZXR1cm4gdGhpcy5MSG9jaHdlcnQ7CisgICAgfQorCisgICAgcHVibGlj
IHZvaWQgc2V0TEhvY2h3ZXJ0KEJpZ0RlY2ltYWwgTEhvY2h3ZXJ0KSB7CisgICAgICAgIHRoaXMu
TEhvY2h3ZXJ0ID0zRCBMSG9jaHdlcnQ7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0Qi
TF9SRUNIV0VSVCIsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0Rl
Y2ltYWwgZ2V0TFJlY2h3ZXJ0KCkgeworICAgICAgICByZXR1cm4gdGhpcy5MUmVjaHdlcnQ7Cisg
ICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TFJlY2h3ZXJ0KEJpZ0RlY2ltYWwgTFJlY2h3ZXJ0
KSB7CisgICAgICAgIHRoaXMuTFJlY2h3ZXJ0ID0zRCBMUmVjaHdlcnQ7CisgICAgfQorCisKKyAg
ICBAQ29sdW1uKG5hbWU9M0QiTF9OTiIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKKyAgICBw
dWJsaWMgQmlnRGVjaW1hbCBnZXRMTm4oKSB7CisgICAgICAgIHJldHVybiB0aGlzLkxObjsKKyAg
ICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRMTm4oQmlnRGVjaW1hbCBMTm4pIHsKKyAgICAgICAg
dGhpcy5MTm4gPTNEIExObjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJSX0hPQ0hX
RVJUIiwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBn
ZXRSSG9jaHdlcnQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLlJIb2Nod2VydDsKKyAgICB9CisK
KyAgICBwdWJsaWMgdm9pZCBzZXRSSG9jaHdlcnQoQmlnRGVjaW1hbCBSSG9jaHdlcnQpIHsKKyAg
ICAgICAgdGhpcy5SSG9jaHdlcnQgPTNEIFJIb2Nod2VydDsKKyAgICB9CisKKworICAgIEBDb2x1
bW4obmFtZT0zRCJSX1JFQ0hXRVJUIiwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEMykKKyAgICBw
dWJsaWMgQmlnRGVjaW1hbCBnZXRSUmVjaHdlcnQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLlJS
ZWNod2VydDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRSUmVjaHdlcnQoQmlnRGVjaW1h
bCBSUmVjaHdlcnQpIHsKKyAgICAgICAgdGhpcy5SUmVjaHdlcnQgPTNEIFJSZWNod2VydDsKKyAg
ICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJSX05OIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9
M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldFJObigpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuUk5uOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFJObihCaWdEZWNpbWFsIFJObikg
eworICAgICAgICB0aGlzLlJObiA9M0QgUk5uOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1l
PTNEIkJFTUVSS1VORyIsIGxlbmd0aD0zRDI0MCkKKyAgICBwdWJsaWMgU3RyaW5nIGdldEJlbWVy
a3VuZygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYmVtZXJrdW5nOworICAgIH0KKworICAgIHB1
YmxpYyB2b2lkIHNldEJlbWVya3VuZyhTdHJpbmcgYmVtZXJrdW5nKSB7CisgICAgICAgIHRoaXMu
YmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0Qi
T0xETVNUSUQiLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QwKQorICAgIHB1YmxpYyBMb25nIGdl
dE9sZG1zdGlkKCkgeworICAgICAgICByZXR1cm4gdGhpcy5vbGRtc3RpZDsKKyAgICB9CisKKyAg
ICBwdWJsaWMgdm9pZCBzZXRPbGRtc3RpZChMb25nIG9sZG1zdGlkKSB7CisgICAgICAgIHRoaXMu
b2xkbXN0aWQgPTNEIG9sZG1zdGlkOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIklT
VEZFU1RTVE9GRiIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDEsIHNjYWxlPQo9M0Qw
KQorICAgIHB1YmxpYyBib29sZWFuIGlzSXN0ZmVzdHN0b2ZmKCkgeworICAgICAgICByZXR1cm4g
dGhpcy5pc3RmZXN0c3RvZmY7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0SXN0ZmVzdHN0
b2ZmKGJvb2xlYW4gaXN0ZmVzdHN0b2ZmKSB7CisgICAgICAgIHRoaXMuaXN0ZmVzdHN0b2ZmID0z
RCBpc3RmZXN0c3RvZmY7CisgICAgfQorCitAT25lVG9NYW55KGZldGNoPTNERmV0Y2hUeXBlLkxB
WlksIG1hcHBlZEJ5PTNEInN0YXRpb24iKQorICAgIHB1YmxpYyBTZXQ8U29obHRlc3Q+IGdldFNv
aGx0ZXN0cygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc29obHRlc3RzOworICAgIH0KKworICAg
IHB1YmxpYyB2b2lkIHNldFNvaGx0ZXN0cyhTZXQ8U29obHRlc3Q+IHNvaGx0ZXN0cykgeworICAg
ICAgICB0aGlzLnNvaGx0ZXN0cyA9M0Qgc29obHRlc3RzOworICAgIH0KKworQE9uZVRvTWFueShm
ZXRjaD0zREZldGNoVHlwZS5MQVpZLCBtYXBwZWRCeT0zRCJzdGF0aW9uIikKKyAgICBwdWJsaWMg
U2V0PEhwZWlsdW5nPiBnZXRIcGVpbHVuZ3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmhwZWls
dW5nczsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRIcGVpbHVuZ3MoU2V0PEhwZWlsdW5n
PiBocGVpbHVuZ3MpIHsKKyAgICAgICAgdGhpcy5ocGVpbHVuZ3MgPTNEIGhwZWlsdW5nczsKKyAg
ICB9CisKK0BPbmVUb01hbnkoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSwgbWFwcGVkQnk9M0Qic3Rh
dGlvbiIpCisgICAgcHVibGljIFNldDxNcGVpbHVuZz4gZ2V0TXBlaWx1bmdzKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy5tcGVpbHVuZ3M7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TXBl
aWx1bmdzKFNldDxNcGVpbHVuZz4gbXBlaWx1bmdzKSB7CisgICAgICAgIHRoaXMubXBlaWx1bmdz
ID0zRCBtcGVpbHVuZ3M7CisgICAgfQorCitAT25lVG9NYW55KGZldGNoPTNERmV0Y2hUeXBlLkxB
WlksIG1hcHBlZEJ5PTNEInN0YXRpb24iKQorICAgIHB1YmxpYyBTZXQ8TWVzc3VuZz4gZ2V0TWVz
c3VuZ3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1lc3N1bmdzOworICAgIH0KKworICAgIHB1
YmxpYyB2b2lkIHNldE1lc3N1bmdzKFNldDxNZXNzdW5nPiBtZXNzdW5ncykgeworICAgICAgICB0
aGlzLm1lc3N1bmdzID0zRCBtZXNzdW5nczsKKyAgICB9Cit9CmRpZmYgLXIgYmM0ZTFiZjI2MjI3
IC1yIDFlNjhlY2EyNmI4YSBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudD0K
cy9yaXZlci9zZWRkYi9tb2RlbC9TdGF0aW9uZ2V3LmphdmEKLS0tIC9kZXYvbnVsbAlUaHUgSmFu
IDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9k
aXZlNGVsZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVsL1N0YXRpb25nZXcuPQpqYXZhCU1vbiBBcHIg
MjkgMTE6MzM6MDEgMjAxMyArMDIwMApAQCAtMCwwICsxLDY5IEBACisvKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vy
az0KdW5kZQorICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICisgKgor
ICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMp
PTIwCisgKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQg
dGhlCisgKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9y
IGRldGFpbHMuPTIwCisgKi8KKworcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5zZWRkYi5tb2Rl
bDsKKy8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29scyAz
LjQuMC5DUjEKKworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQXR0cmlidXRlT3ZlcnJpZGU7
CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQXR0cmlidXRlT3ZlcnJpZGVzOworaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbWJlZGRl
ZElkOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJz
aXN0ZW5jZS5UYWJsZTsKKworLyoqCisgKiBTdGF0aW9uZ2V3IGdlbmVyYXRlZCBieSBoYm0yamF2
YQorICovCitARW50aXR5CitAVGFibGUobmFtZT0zRCJTVEFUSU9OR0VXIgorICAgICxzY2hlbWE9
M0QiU0VEREIiCispCitwdWJsaWMgY2xhc3MgU3RhdGlvbmdldyAgaW1wbGVtZW50cyBqYXZhLmlv
LlNlcmlhbGl6YWJsZSB7CisKKworICAgICBwcml2YXRlIFN0YXRpb25nZXdJZCBpZDsKKworICAg
IHB1YmxpYyBTdGF0aW9uZ2V3KCkgeworICAgIH0KKworICAgIHB1YmxpYyBTdGF0aW9uZ2V3KFN0
YXRpb25nZXdJZCBpZCkgeworICAgICAgIHRoaXMuaWQgPTNEIGlkOworICAgIH0KKworICAgICBA
RW1iZWRkZWRJZAorCisKKyAgICBAQXR0cmlidXRlT3ZlcnJpZGVzKCB7CisgICAgICAgIEBBdHRy
aWJ1dGVPdmVycmlkZShuYW1lPTNEInN0YXRpb25pZCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0z
RCJTVD0KQVRJT05JRCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0z
RDApICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImdld2Flc3NlcmlkIiwg
Y29sdW1uPTNEQENvbHVtbihuYW1lPTNEIj0KR0VXQUVTU0VSSUQiLCBudWxsYWJsZT0zRGZhbHNl
LCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QwKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJp
ZGUobmFtZT0zRCJrbSIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJLTSIsIG51bGw9CmFibGU9
M0RmYWxzZSwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0QzKSApLAorICAgICAgICBAQXR0cmlidXRl
T3ZlcnJpZGUobmFtZT0zRCJiZXp1Z3NwZWdlbGlkIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPQo9
M0QiQkVaVUdTUEVHRUxJRCIsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDApICksCisgICAgICAg
IEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIm5hbWUiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9
M0QiTkFNRSIsID0KbnVsbGFibGU9M0RmYWxzZSwgbGVuZ3RoPTNENTApICksCisgICAgICAgIEBB
dHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEInVmZXJpc3RsaW5rcyIsIGNvbHVtbj0zREBDb2x1bW4o
bmFtZT0zRD0KIlVGRVJJU1RMSU5LUyIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDEs
IHNjYWxlPTNEMCkgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QidGVpbFZv
biIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJURUlMPQpfVk9OIiwgcHJlY2lzaW9uPTNEOCwg
c2NhbGU9M0QzKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJ0ZWlsQmlz
IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlRFSUw9Cl9CSVMiLCBwcmVjaXNpb249M0Q4LCBz
Y2FsZT0zRDMpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEImFic3RIbXN0
IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkFCUz0KVF9ITVNUIiwgcHJlY2lzaW9uPTNEOCwg
c2NhbGU9M0QzKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJMSG9jaHdl
cnQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiTF89CkhPQ0hXRVJUIiwgcHJlY2lzaW9uPTNE
MTEsIHNjYWxlPTNEMykgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiTFJl
Y2h3ZXJ0IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkxfPQpSRUNIV0VSVCIsIHByZWNpc2lv
bj0zRDExLCBzY2FsZT0zRDMpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNE
IkxObiIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJMX05OIiwgcD0KcmVjaXNpb249M0Q4LCBz
Y2FsZT0zRDMpICksCisgICAgICAgIEBBdHRyaWJ1dGVPdmVycmlkZShuYW1lPTNEIlJIb2Nod2Vy
dCIsIGNvbHVtbj0zREBDb2x1bW4obmFtZT0zRCJSXz0KSE9DSFdFUlQiLCBwcmVjaXNpb249M0Qx
MSwgc2NhbGU9M0QzKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJSUmVj
aHdlcnQiLCBjb2x1bW49M0RAQ29sdW1uKG5hbWU9M0QiUl89ClJFQ0hXRVJUIiwgcHJlY2lzaW9u
PTNEMTEsIHNjYWxlPTNEMykgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0Qi
Uk5uIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIlJfTk4iLCBwPQpyZWNpc2lvbj0zRDgsIHNj
YWxlPTNEMykgKSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiYmVtZXJrdW5n
IiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkJFPQpNRVJLVU5HIiwgbGVuZ3RoPTNEMjQwKSAp
LAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUobmFtZT0zRCJvbGRtc3RpZCIsIGNvbHVtbj0z
REBDb2x1bW4obmFtZT0zRCJPTEQ9Ck1TVElEIiwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEMCkg
KSwKKyAgICAgICAgQEF0dHJpYnV0ZU92ZXJyaWRlKG5hbWU9M0QiaXN0ZmVzdHN0b2ZmIiwgY29s
dW1uPTNEQENvbHVtbihuYW1lPTNEPQoiSVNURkVTVFNUT0ZGIiwgbnVsbGFibGU9M0RmYWxzZSwg
cHJlY2lzaW9uPTNEMSwgc2NhbGU9M0QwKSApLAorICAgICAgICBAQXR0cmlidXRlT3ZlcnJpZGUo
bmFtZT0zRCJnZXduYW1lIiwgY29sdW1uPTNEQENvbHVtbihuYW1lPTNEIkdFV049CkFNRSIsIG51
bGxhYmxlPTNEZmFsc2UsIGxlbmd0aD0zRDIwKSApIH0gKQorICAgIHB1YmxpYyBTdGF0aW9uZ2V3
SWQgZ2V0SWQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmlkOworICAgIH0KKworICAgIHB1Ymxp
YyB2b2lkIHNldElkKFN0YXRpb25nZXdJZCBpZCkgeworICAgICAgICB0aGlzLmlkID0zRCBpZDsK
KyAgICB9Cit9CmRpZmYgLXIgYmM0ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBiYWNrZW5kL3Ny
Yy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZlci9zZWRkYi9tb2RlbC9TdGF0aW9u
Z2V3SWQuamF2YQotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAor
KysgYi9iYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIv
bW9kZWwvU3RhdGlvbmdld0k9CmQuamF2YQlNb24gQXByIDI5IDExOjMzOjAxIDIwMTMgKzAyMDAK
QEAgLTAsMCArMSwzMjEgQEAKKy8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBC
dW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCisgKiBTb2Z0d2FyZSBl
bmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgKKyAqCisgKiBUaGlzIGZpbGUgaXMgRnJlZSBT
b2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49M0R2Myk9MjAKKyAqIGFuZCBjb21lcyB3aXRo
IEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUKKyAqIGRvY3VtZW50YXRpb24g
Y29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy49MjAKKyAqLworCitw
YWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnNlZGRiLm1vZGVsOworLy8gR2VuZXJhdGVkIDE0LjA2
LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQorCisKK2ltcG9ydCBq
YXZhLm1hdGguQmlnRGVjaW1hbDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47Citp
bXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW1iZWRkYWJsZTsKKworLyoqCisgKiBTdGF0aW9uZ2V3
SWQgZ2VuZXJhdGVkIGJ5IGhibTJqYXZhCisgKi8KK0BFbWJlZGRhYmxlCitwdWJsaWMgY2xhc3Mg
U3RhdGlvbmdld0lkICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKKworCisgICAg
IHByaXZhdGUgbG9uZyBzdGF0aW9uaWQ7CisgICAgIHByaXZhdGUgbG9uZyBnZXdhZXNzZXJpZDsK
KyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIGttOworICAgICBwcml2YXRlIExvbmcgYmV6dWdzcGVn
ZWxpZDsKKyAgICAgcHJpdmF0ZSBTdHJpbmcgbmFtZTsKKyAgICAgcHJpdmF0ZSBib29sZWFuIHVm
ZXJpc3RsaW5rczsKKyAgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHRlaWxWb247CisgICAgIHByaXZh
dGUgQmlnRGVjaW1hbCB0ZWlsQmlzOworICAgICBwcml2YXRlIEJpZ0RlY2ltYWwgYWJzdEhtc3Q7
CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBMSG9jaHdlcnQ7CisgICAgIHByaXZhdGUgQmlnRGVj
aW1hbCBMUmVjaHdlcnQ7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBMTm47CisgICAgIHByaXZh
dGUgQmlnRGVjaW1hbCBSSG9jaHdlcnQ7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBSUmVjaHdl
cnQ7CisgICAgIHByaXZhdGUgQmlnRGVjaW1hbCBSTm47CisgICAgIHByaXZhdGUgU3RyaW5nIGJl
bWVya3VuZzsKKyAgICAgcHJpdmF0ZSBMb25nIG9sZG1zdGlkOworICAgICBwcml2YXRlIGJvb2xl
YW4gaXN0ZmVzdHN0b2ZmOworICAgICBwcml2YXRlIFN0cmluZyBnZXduYW1lOworCisgICAgcHVi
bGljIFN0YXRpb25nZXdJZCgpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RhdGlvbmdld0lkKGxv
bmcgc3RhdGlvbmlkLCBsb25nIGdld2Flc3NlcmlkLCBCaWdEZWNpbWFsIGttLCBTPQp0cmluZyBu
YW1lLCBib29sZWFuIHVmZXJpc3RsaW5rcywgYm9vbGVhbiBpc3RmZXN0c3RvZmYsIFN0cmluZyBn
ZXduYW1lKSB7CisgICAgICAgIHRoaXMuc3RhdGlvbmlkID0zRCBzdGF0aW9uaWQ7CisgICAgICAg
IHRoaXMuZ2V3YWVzc2VyaWQgPTNEIGdld2Flc3NlcmlkOworICAgICAgICB0aGlzLmttID0zRCBr
bTsKKyAgICAgICAgdGhpcy5uYW1lID0zRCBuYW1lOworICAgICAgICB0aGlzLnVmZXJpc3RsaW5r
cyA9M0QgdWZlcmlzdGxpbmtzOworICAgICAgICB0aGlzLmlzdGZlc3RzdG9mZiA9M0QgaXN0ZmVz
dHN0b2ZmOworICAgICAgICB0aGlzLmdld25hbWUgPTNEIGdld25hbWU7CisgICAgfQorICAgIHB1
YmxpYyBTdGF0aW9uZ2V3SWQobG9uZyBzdGF0aW9uaWQsIGxvbmcgZ2V3YWVzc2VyaWQsIEJpZ0Rl
Y2ltYWwga20sIEw9Cm9uZyBiZXp1Z3NwZWdlbGlkLCBTdHJpbmcgbmFtZSwgYm9vbGVhbiB1ZmVy
aXN0bGlua3MsIEJpZ0RlY2ltYWwgdGVpbFZvbiwgQj0KaWdEZWNpbWFsIHRlaWxCaXMsIEJpZ0Rl
Y2ltYWwgYWJzdEhtc3QsIEJpZ0RlY2ltYWwgTEhvY2h3ZXJ0LCBCaWdEZWNpbWFsIExSPQplY2h3
ZXJ0LCBCaWdEZWNpbWFsIExObiwgQmlnRGVjaW1hbCBSSG9jaHdlcnQsIEJpZ0RlY2ltYWwgUlJl
Y2h3ZXJ0LCBCaWdEZWM9CmltYWwgUk5uLCBTdHJpbmcgYmVtZXJrdW5nLCBMb25nIG9sZG1zdGlk
LCBib29sZWFuIGlzdGZlc3RzdG9mZiwgU3RyaW5nIGdldz0KbmFtZSkgeworICAgICAgIHRoaXMu
c3RhdGlvbmlkID0zRCBzdGF0aW9uaWQ7CisgICAgICAgdGhpcy5nZXdhZXNzZXJpZCA9M0QgZ2V3
YWVzc2VyaWQ7CisgICAgICAgdGhpcy5rbSA9M0Qga207CisgICAgICAgdGhpcy5iZXp1Z3NwZWdl
bGlkID0zRCBiZXp1Z3NwZWdlbGlkOworICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKKyAgICAg
ICB0aGlzLnVmZXJpc3RsaW5rcyA9M0QgdWZlcmlzdGxpbmtzOworICAgICAgIHRoaXMudGVpbFZv
biA9M0QgdGVpbFZvbjsKKyAgICAgICB0aGlzLnRlaWxCaXMgPTNEIHRlaWxCaXM7CisgICAgICAg
dGhpcy5hYnN0SG1zdCA9M0QgYWJzdEhtc3Q7CisgICAgICAgdGhpcy5MSG9jaHdlcnQgPTNEIExI
b2Nod2VydDsKKyAgICAgICB0aGlzLkxSZWNod2VydCA9M0QgTFJlY2h3ZXJ0OworICAgICAgIHRo
aXMuTE5uID0zRCBMTm47CisgICAgICAgdGhpcy5SSG9jaHdlcnQgPTNEIFJIb2Nod2VydDsKKyAg
ICAgICB0aGlzLlJSZWNod2VydCA9M0QgUlJlY2h3ZXJ0OworICAgICAgIHRoaXMuUk5uID0zRCBS
Tm47CisgICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKKyAgICAgICB0aGlzLm9s
ZG1zdGlkID0zRCBvbGRtc3RpZDsKKyAgICAgICB0aGlzLmlzdGZlc3RzdG9mZiA9M0QgaXN0ZmVz
dHN0b2ZmOworICAgICAgIHRoaXMuZ2V3bmFtZSA9M0QgZ2V3bmFtZTsKKyAgICB9CisKKworCisg
ICAgQENvbHVtbihuYW1lPTNEIlNUQVRJT05JRCIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lv
bj0zRDExLCBzY2FsZT0zRD0KMCkKKyAgICBwdWJsaWMgbG9uZyBnZXRTdGF0aW9uaWQoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLnN0YXRpb25pZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBz
ZXRTdGF0aW9uaWQobG9uZyBzdGF0aW9uaWQpIHsKKyAgICAgICAgdGhpcy5zdGF0aW9uaWQgPTNE
IHN0YXRpb25pZDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJHRVdBRVNTRVJJRCIs
IG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0KPTNEMCkKKyAgICBwdWJs
aWMgbG9uZyBnZXRHZXdhZXNzZXJpZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZ2V3YWVzc2Vy
aWQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0R2V3YWVzc2VyaWQobG9uZyBnZXdhZXNz
ZXJpZCkgeworICAgICAgICB0aGlzLmdld2Flc3NlcmlkID0zRCBnZXdhZXNzZXJpZDsKKyAgICB9
CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJLTSIsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lv
bj0zRDgsIHNjYWxlPTNEMykKKyAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRLbSgpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMua207CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0S20oQmlnRGVj
aW1hbCBrbSkgeworICAgICAgICB0aGlzLmttID0zRCBrbTsKKyAgICB9CisKKworICAgIEBDb2x1
bW4obmFtZT0zRCJCRVpVR1NQRUdFTElEIiwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEMCkKKyAg
ICBwdWJsaWMgTG9uZyBnZXRCZXp1Z3NwZWdlbGlkKCkgeworICAgICAgICByZXR1cm4gdGhpcy5i
ZXp1Z3NwZWdlbGlkOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEJlenVnc3BlZ2VsaWQo
TG9uZyBiZXp1Z3NwZWdlbGlkKSB7CisgICAgICAgIHRoaXMuYmV6dWdzcGVnZWxpZCA9M0QgYmV6
dWdzcGVnZWxpZDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJOQU1FIiwgbnVsbGFi
bGU9M0RmYWxzZSwgbGVuZ3RoPTNENTApCisgICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy5uYW1lOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE5h
bWUoU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgdGhpcy5uYW1lID0zRCBuYW1lOworICAgIH0KKwor
CisgICAgQENvbHVtbihuYW1lPTNEIlVGRVJJU1RMSU5LUyIsIG51bGxhYmxlPTNEZmFsc2UsIHBy
ZWNpc2lvbj0zRDEsIHNjYWxlPQo9M0QwKQorICAgIHB1YmxpYyBib29sZWFuIGlzVWZlcmlzdGxp
bmtzKCkgeworICAgICAgICByZXR1cm4gdGhpcy51ZmVyaXN0bGlua3M7CisgICAgfQorCisgICAg
cHVibGljIHZvaWQgc2V0VWZlcmlzdGxpbmtzKGJvb2xlYW4gdWZlcmlzdGxpbmtzKSB7CisgICAg
ICAgIHRoaXMudWZlcmlzdGxpbmtzID0zRCB1ZmVyaXN0bGlua3M7CisgICAgfQorCisKKyAgICBA
Q29sdW1uKG5hbWU9M0QiVEVJTF9WT04iLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCisgICAg
cHVibGljIEJpZ0RlY2ltYWwgZ2V0VGVpbFZvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudGVp
bFZvbjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRUZWlsVm9uKEJpZ0RlY2ltYWwgdGVp
bFZvbikgeworICAgICAgICB0aGlzLnRlaWxWb24gPTNEIHRlaWxWb247CisgICAgfQorCisKKyAg
ICBAQ29sdW1uKG5hbWU9M0QiVEVJTF9CSVMiLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCisg
ICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0VGVpbEJpcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
dGVpbEJpczsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRUZWlsQmlzKEJpZ0RlY2ltYWwg
dGVpbEJpcykgeworICAgICAgICB0aGlzLnRlaWxCaXMgPTNEIHRlaWxCaXM7CisgICAgfQorCisK
KyAgICBAQ29sdW1uKG5hbWU9M0QiQUJTVF9ITVNUIiwgcHJlY2lzaW9uPTNEOCwgc2NhbGU9M0Qz
KQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEFic3RIbXN0KCkgeworICAgICAgICByZXR1cm4g
dGhpcy5hYnN0SG1zdDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRBYnN0SG1zdChCaWdE
ZWNpbWFsIGFic3RIbXN0KSB7CisgICAgICAgIHRoaXMuYWJzdEhtc3QgPTNEIGFic3RIbXN0Owor
ICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkxfSE9DSFdFUlQiLCBwcmVjaXNpb249M0Qx
MSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldExIb2Nod2VydCgpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuTEhvY2h3ZXJ0OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNl
dExIb2Nod2VydChCaWdEZWNpbWFsIExIb2Nod2VydCkgeworICAgICAgICB0aGlzLkxIb2Nod2Vy
dCA9M0QgTEhvY2h3ZXJ0OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkxfUkVDSFdF
UlQiLCBwcmVjaXNpb249M0QxMSwgc2NhbGU9M0QzKQorICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdl
dExSZWNod2VydCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuTFJlY2h3ZXJ0OworICAgIH0KKwor
ICAgIHB1YmxpYyB2b2lkIHNldExSZWNod2VydChCaWdEZWNpbWFsIExSZWNod2VydCkgeworICAg
ICAgICB0aGlzLkxSZWNod2VydCA9M0QgTFJlY2h3ZXJ0OworICAgIH0KKworCisgICAgQENvbHVt
bihuYW1lPTNEIkxfTk4iLCBwcmVjaXNpb249M0Q4LCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0TE5uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5MTm47CisgICAgfQorCisg
ICAgcHVibGljIHZvaWQgc2V0TE5uKEJpZ0RlY2ltYWwgTE5uKSB7CisgICAgICAgIHRoaXMuTE5u
ID0zRCBMTm47CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiUl9IT0NIV0VSVCIsIHBy
ZWNpc2lvbj0zRDExLCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0UkhvY2h3
ZXJ0KCkgeworICAgICAgICByZXR1cm4gdGhpcy5SSG9jaHdlcnQ7CisgICAgfQorCisgICAgcHVi
bGljIHZvaWQgc2V0UkhvY2h3ZXJ0KEJpZ0RlY2ltYWwgUkhvY2h3ZXJ0KSB7CisgICAgICAgIHRo
aXMuUkhvY2h3ZXJ0ID0zRCBSSG9jaHdlcnQ7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9
M0QiUl9SRUNIV0VSVCIsIHByZWNpc2lvbj0zRDExLCBzY2FsZT0zRDMpCisgICAgcHVibGljIEJp
Z0RlY2ltYWwgZ2V0UlJlY2h3ZXJ0KCkgeworICAgICAgICByZXR1cm4gdGhpcy5SUmVjaHdlcnQ7
CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0UlJlY2h3ZXJ0KEJpZ0RlY2ltYWwgUlJlY2h3
ZXJ0KSB7CisgICAgICAgIHRoaXMuUlJlY2h3ZXJ0ID0zRCBSUmVjaHdlcnQ7CisgICAgfQorCisK
KyAgICBAQ29sdW1uKG5hbWU9M0QiUl9OTiIsIHByZWNpc2lvbj0zRDgsIHNjYWxlPTNEMykKKyAg
ICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRSTm4oKSB7CisgICAgICAgIHJldHVybiB0aGlzLlJObjsK
KyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRSTm4oQmlnRGVjaW1hbCBSTm4pIHsKKyAgICAg
ICAgdGhpcy5STm4gPTNEIFJObjsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJCRU1F
UktVTkciLCBsZW5ndGg9M0QyNDApCisgICAgcHVibGljIFN0cmluZyBnZXRCZW1lcmt1bmcoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLmJlbWVya3VuZzsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9p
ZCBzZXRCZW1lcmt1bmcoU3RyaW5nIGJlbWVya3VuZykgeworICAgICAgICB0aGlzLmJlbWVya3Vu
ZyA9M0QgYmVtZXJrdW5nOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIk9MRE1TVElE
IiwgcHJlY2lzaW9uPTNEMTEsIHNjYWxlPTNEMCkKKyAgICBwdWJsaWMgTG9uZyBnZXRPbGRtc3Rp
ZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMub2xkbXN0aWQ7CisgICAgfQorCisgICAgcHVibGlj
IHZvaWQgc2V0T2xkbXN0aWQoTG9uZyBvbGRtc3RpZCkgeworICAgICAgICB0aGlzLm9sZG1zdGlk
ID0zRCBvbGRtc3RpZDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJJU1RGRVNUU1RP
RkYiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxLCBzY2FsZT0KPTNEMCkKKyAgICBw
dWJsaWMgYm9vbGVhbiBpc0lzdGZlc3RzdG9mZigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaXN0
ZmVzdHN0b2ZmOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldElzdGZlc3RzdG9mZihib29s
ZWFuIGlzdGZlc3RzdG9mZikgeworICAgICAgICB0aGlzLmlzdGZlc3RzdG9mZiA9M0QgaXN0ZmVz
dHN0b2ZmOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1lPTNEIkdFV05BTUUiLCBudWxsYWJs
ZT0zRGZhbHNlLCBsZW5ndGg9M0QyMCkKKyAgICBwdWJsaWMgU3RyaW5nIGdldEdld25hbWUoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLmdld25hbWU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQg
c2V0R2V3bmFtZShTdHJpbmcgZ2V3bmFtZSkgeworICAgICAgICB0aGlzLmdld25hbWUgPTNEIGdl
d25hbWU7CisgICAgfQorCisKKyAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb3RoZXIp
IHsKKyAgICAgICAgIGlmICggKHRoaXMgPTNEPTNEIG90aGVyICkgKSByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgIGlmICggKG90aGVyID0zRD0zRCBudWxsICkgKSByZXR1cm4gZmFsc2U7CisgICAgICAg
ICBpZiAoICEob3RoZXIgaW5zdGFuY2VvZiBTdGF0aW9uZ2V3SWQpICkgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgU3RhdGlvbmdld0lkIGNhc3RPdGhlciA9M0QgKCBTdGF0aW9uZ2V3SWQgKSBvdGhl
cjsKKworICAgICAgICAgcmV0dXJuICh0aGlzLmdldFN0YXRpb25pZCgpPTNEPTNEY2FzdE90aGVy
LmdldFN0YXRpb25pZCgpKQorICYmICh0aGlzLmdldEdld2Flc3NlcmlkKCk9M0Q9M0RjYXN0T3Ro
ZXIuZ2V0R2V3YWVzc2VyaWQoKSkKKyAmJiAoICh0aGlzLmdldEttKCk9M0Q9M0RjYXN0T3RoZXIu
Z2V0S20oKSkgfHwgKCB0aGlzLmdldEttKCkhPTNEbnVsbCAmJiBjPQphc3RPdGhlci5nZXRLbSgp
IT0zRG51bGwgJiYgdGhpcy5nZXRLbSgpLmVxdWFscyhjYXN0T3RoZXIuZ2V0S20oKSkgKSApCisg
JiYgKCAodGhpcy5nZXRCZXp1Z3NwZWdlbGlkKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0QmV6dWdzcGVn
ZWxpZCgpKSB8fCAoIHRoaT0Kcy5nZXRCZXp1Z3NwZWdlbGlkKCkhPTNEbnVsbCAmJiBjYXN0T3Ro
ZXIuZ2V0QmV6dWdzcGVnZWxpZCgpIT0zRG51bGwgJiYgdGhpPQpzLmdldEJlenVnc3BlZ2VsaWQo
KS5lcXVhbHMoY2FzdE90aGVyLmdldEJlenVnc3BlZ2VsaWQoKSkgKSApCisgJiYgKCAodGhpcy5n
ZXROYW1lKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TmFtZSgpKSB8fCAoIHRoaXMuZ2V0TmFtZSgpIT0z
RG51bD0KbCAmJiBjYXN0T3RoZXIuZ2V0TmFtZSgpIT0zRG51bGwgJiYgdGhpcy5nZXROYW1lKCku
ZXF1YWxzKGNhc3RPdGhlci5nZXROYW1lPQooKSkgKSApCisgJiYgKHRoaXMuaXNVZmVyaXN0bGlu
a3MoKT0zRD0zRGNhc3RPdGhlci5pc1VmZXJpc3RsaW5rcygpKQorICYmICggKHRoaXMuZ2V0VGVp
bFZvbigpPTNEPTNEY2FzdE90aGVyLmdldFRlaWxWb24oKSkgfHwgKCB0aGlzLmdldFRlaWxWb249
CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFRlaWxWb24oKSE9M0RudWxsICYmIHRoaXMuZ2V0
VGVpbFZvbigpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRUZWlsVm9uKCkpICkgKQorICYmICggKHRo
aXMuZ2V0VGVpbEJpcygpPTNEPTNEY2FzdE90aGVyLmdldFRlaWxCaXMoKSkgfHwgKCB0aGlzLmdl
dFRlaWxCaXM9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldFRlaWxCaXMoKSE9M0RudWxsICYm
IHRoaXMuZ2V0VGVpbEJpcygpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRUZWlsQmlzKCkpICkgKQor
ICYmICggKHRoaXMuZ2V0QWJzdEhtc3QoKT0zRD0zRGNhc3RPdGhlci5nZXRBYnN0SG1zdCgpKSB8
fCAoIHRoaXMuZ2V0QWJzdEg9Cm1zdCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldEFic3RIbXN0
KCkhPTNEbnVsbCAmJiB0aGlzLmdldEFic3RIbXN0KCkuZXF1YT0KbHMoY2FzdE90aGVyLmdldEFi
c3RIbXN0KCkpICkgKQorICYmICggKHRoaXMuZ2V0TEhvY2h3ZXJ0KCk9M0Q9M0RjYXN0T3RoZXIu
Z2V0TEhvY2h3ZXJ0KCkpIHx8ICggdGhpcy5nZXRMSG89CmNod2VydCgpIT0zRG51bGwgJiYgY2Fz
dE90aGVyLmdldExIb2Nod2VydCgpIT0zRG51bGwgJiYgdGhpcy5nZXRMSG9jaHdlcnQoKT0KLmVx
dWFscyhjYXN0T3RoZXIuZ2V0TEhvY2h3ZXJ0KCkpICkgKQorICYmICggKHRoaXMuZ2V0TFJlY2h3
ZXJ0KCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TFJlY2h3ZXJ0KCkpIHx8ICggdGhpcy5nZXRMUmU9CmNo
d2VydCgpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldExSZWNod2VydCgpIT0zRG51bGwgJiYgdGhp
cy5nZXRMUmVjaHdlcnQoKT0KLmVxdWFscyhjYXN0T3RoZXIuZ2V0TFJlY2h3ZXJ0KCkpICkgKQor
ICYmICggKHRoaXMuZ2V0TE5uKCk9M0Q9M0RjYXN0T3RoZXIuZ2V0TE5uKCkpIHx8ICggdGhpcy5n
ZXRMTm4oKSE9M0RudWxsICY9CiYgY2FzdE90aGVyLmdldExObigpIT0zRG51bGwgJiYgdGhpcy5n
ZXRMTm4oKS5lcXVhbHMoY2FzdE90aGVyLmdldExObigpKSApICkKKyAmJiAoICh0aGlzLmdldFJI
b2Nod2VydCgpPTNEPTNEY2FzdE90aGVyLmdldFJIb2Nod2VydCgpKSB8fCAoIHRoaXMuZ2V0Ukhv
PQpjaHdlcnQoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRSSG9jaHdlcnQoKSE9M0RudWxsICYm
IHRoaXMuZ2V0UkhvY2h3ZXJ0KCk9Ci5lcXVhbHMoY2FzdE90aGVyLmdldFJIb2Nod2VydCgpKSAp
ICkKKyAmJiAoICh0aGlzLmdldFJSZWNod2VydCgpPTNEPTNEY2FzdE90aGVyLmdldFJSZWNod2Vy
dCgpKSB8fCAoIHRoaXMuZ2V0UlJlPQpjaHdlcnQoKSE9M0RudWxsICYmIGNhc3RPdGhlci5nZXRS
UmVjaHdlcnQoKSE9M0RudWxsICYmIHRoaXMuZ2V0UlJlY2h3ZXJ0KCk9Ci5lcXVhbHMoY2FzdE90
aGVyLmdldFJSZWNod2VydCgpKSApICkKKyAmJiAoICh0aGlzLmdldFJObigpPTNEPTNEY2FzdE90
aGVyLmdldFJObigpKSB8fCAoIHRoaXMuZ2V0Uk5uKCkhPTNEbnVsbCAmPQomIGNhc3RPdGhlci5n
ZXRSTm4oKSE9M0RudWxsICYmIHRoaXMuZ2V0Uk5uKCkuZXF1YWxzKGNhc3RPdGhlci5nZXRSTm4o
KSkgKSApCisgJiYgKCAodGhpcy5nZXRCZW1lcmt1bmcoKT0zRD0zRGNhc3RPdGhlci5nZXRCZW1l
cmt1bmcoKSkgfHwgKCB0aGlzLmdldEJlbT0KZXJrdW5nKCkhPTNEbnVsbCAmJiBjYXN0T3RoZXIu
Z2V0QmVtZXJrdW5nKCkhPTNEbnVsbCAmJiB0aGlzLmdldEJlbWVya3VuZygpPQouZXF1YWxzKGNh
c3RPdGhlci5nZXRCZW1lcmt1bmcoKSkgKSApCisgJiYgKCAodGhpcy5nZXRPbGRtc3RpZCgpPTNE
PTNEY2FzdE90aGVyLmdldE9sZG1zdGlkKCkpIHx8ICggdGhpcy5nZXRPbGRtcz0KdGlkKCkhPTNE
bnVsbCAmJiBjYXN0T3RoZXIuZ2V0T2xkbXN0aWQoKSE9M0RudWxsICYmIHRoaXMuZ2V0T2xkbXN0
aWQoKS5lcXVhPQpscyhjYXN0T3RoZXIuZ2V0T2xkbXN0aWQoKSkgKSApCisgJiYgKHRoaXMuaXNJ
c3RmZXN0c3RvZmYoKT0zRD0zRGNhc3RPdGhlci5pc0lzdGZlc3RzdG9mZigpKQorICYmICggKHRo
aXMuZ2V0R2V3bmFtZSgpPTNEPTNEY2FzdE90aGVyLmdldEdld25hbWUoKSkgfHwgKCB0aGlzLmdl
dEdld25hbWU9CigpIT0zRG51bGwgJiYgY2FzdE90aGVyLmdldEdld25hbWUoKSE9M0RudWxsICYm
IHRoaXMuZ2V0R2V3bmFtZSgpLmVxdWFscyhjYT0Kc3RPdGhlci5nZXRHZXduYW1lKCkpICkgKTsK
KyAgIH0KKworICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgIGludCByZXN1bHQg
PTNEIDE3OworCisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKGludCkgdGhpcy5n
ZXRTdGF0aW9uaWQoKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoaW50KSB0
aGlzLmdldEdld2Flc3NlcmlkKCk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsg
KCBnZXRLbSgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZ2V0S20oKT0KLmhhc2hDb2RlKCkgKTsK
KyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEJlenVnc3BlZ2VsaWQoKSA9
M0Q9M0QgbnVsbCA/IDAgOiB0PQpoaXMuZ2V0QmV6dWdzcGVnZWxpZCgpLmhhc2hDb2RlKCkgKTsK
KyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldE5hbWUoKSA9M0Q9M0QgbnVs
bCA/IDAgOiB0aGlzLmdldE5hPQptZSgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9
M0QgMzcgKiByZXN1bHQgKyAodGhpcy5pc1VmZXJpc3RsaW5rcygpPzE6MCk7CisgICAgICAgICBy
ZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRUZWlsVm9uKCkgPTNEPTNEIG51bGwgPyAwIDog
dGhpcy5nZT0KdFRlaWxWb24oKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3
ICogcmVzdWx0ICsgKCBnZXRUZWlsQmlzKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZT0KdFRl
aWxCaXMoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsg
KCBnZXRBYnN0SG1zdCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuZz0KZXRBYnN0SG1zdCgpLmhh
c2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldExIb2No
d2VydCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuPQpnZXRMSG9jaHdlcnQoKS5oYXNoQ29kZSgp
ICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRMUmVjaHdlcnQoKSA9
M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLj0KZ2V0TFJlY2h3ZXJ0KCkuaGFzaENvZGUoKSApOworICAg
ICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0TE5uKCkgPTNEPTNEIG51bGwgPyAw
IDogdGhpcy5nZXRMTm49CigpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0QgMzcg
KiByZXN1bHQgKyAoIGdldFJIb2Nod2VydCgpID0zRD0zRCBudWxsID8gMCA6IHRoaXMuPQpnZXRS
SG9jaHdlcnQoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXN1bHQgPTNEIDM3ICogcmVzdWx0
ICsgKCBnZXRSUmVjaHdlcnQoKSA9M0Q9M0QgbnVsbCA/IDAgOiB0aGlzLj0KZ2V0UlJlY2h3ZXJ0
KCkuaGFzaENvZGUoKSApOworICAgICAgICAgcmVzdWx0ID0zRCAzNyAqIHJlc3VsdCArICggZ2V0
Uk5uKCkgPTNEPTNEIG51bGwgPyAwIDogdGhpcy5nZXRSTm49CigpLmhhc2hDb2RlKCkgKTsKKyAg
ICAgICAgIHJlc3VsdCA9M0QgMzcgKiByZXN1bHQgKyAoIGdldEJlbWVya3VuZygpID0zRD0zRCBu
dWxsID8gMCA6IHRoaXMuPQpnZXRCZW1lcmt1bmcoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICBy
ZXN1bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRPbGRtc3RpZCgpID0zRD0zRCBudWxsID8gMCA6
IHRoaXMuZz0KZXRPbGRtc3RpZCgpLmhhc2hDb2RlKCkgKTsKKyAgICAgICAgIHJlc3VsdCA9M0Qg
MzcgKiByZXN1bHQgKyAodGhpcy5pc0lzdGZlc3RzdG9mZigpPzE6MCk7CisgICAgICAgICByZXN1
bHQgPTNEIDM3ICogcmVzdWx0ICsgKCBnZXRHZXduYW1lKCkgPTNEPTNEIG51bGwgPyAwIDogdGhp
cy5nZT0KdEdld25hbWUoKS5oYXNoQ29kZSgpICk7CisgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgfQorfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMv
bWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMvcml2ZXIvc2VkZGIvbW9kZWwvVG1wR2xvQ2hh
bmdlZC5qYXZhCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisr
KyBiL2JhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50cy9yaXZlci9zZWRkYi9t
b2RlbC9UbXBHbG9DaGFuZz0KZWQuamF2YQlNb24gQXByIDI5IDExOjMzOjAxIDIwMTMgKzAyMDAK
QEAgLTAsMCArMSw1MCBAQAorLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1
bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKKyAqIFNvZnR3YXJlIGVu
Z2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAorICoKKyAqIFRoaXMgZmlsZSBpcyBGcmVlIFNv
ZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAorICogYW5kIGNvbWVzIHdpdGgg
QUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQorICogZG9jdW1lbnRhdGlvbiBj
b21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAorICovCisKK3Bh
Y2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7CisvLyBHZW5lcmF0ZWQgMTQuMDYu
MjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCisKKworaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7
CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2Uu
VGFibGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVW5pcXVlQ29uc3RyYWludDsKKworLyoq
CisgKiBUbXBHbG9DaGFuZ2VkIGdlbmVyYXRlZCBieSBoYm0yamF2YQorICovCitARW50aXR5CitA
VGFibGUobmFtZT0zRCJUTVBfR0xPX0NIQU5HRUQiCisgICAgLHNjaGVtYT0zRCJTRUREQiIKKyAg
ICAsIHVuaXF1ZUNvbnN0cmFpbnRzID0zRCBAVW5pcXVlQ29uc3RyYWludChjb2x1bW5OYW1lcz0z
RCJHTE9UUkVDSFRFSUQiKQorKQorcHVibGljIGNsYXNzIFRtcEdsb0NoYW5nZWQgIGltcGxlbWVu
dHMgamF2YS5pby5TZXJpYWxpemFibGUgeworCisKKyAgICAgcHJpdmF0ZSBsb25nIGdsb3RyZWNo
dGVpZDsKKworICAgIHB1YmxpYyBUbXBHbG9DaGFuZ2VkKCkgeworICAgIH0KKworICAgIHB1Ymxp
YyBUbXBHbG9DaGFuZ2VkKGxvbmcgZ2xvdHJlY2h0ZWlkKSB7CisgICAgICAgdGhpcy5nbG90cmVj
aHRlaWQgPTNEIGdsb3RyZWNodGVpZDsKKyAgICB9CisKKyAgICAgQElkCisKKworICAgIEBDb2x1
bW4obmFtZT0zRCJHTE9UUkVDSFRFSUQiLCB1bmlxdWU9M0R0cnVlLCBudWxsYWJsZT0zRGZhbHNl
LCBwcmVjaXM9Cmlvbj0zRDExLCBzY2FsZT0zRDApCisgICAgcHVibGljIGxvbmcgZ2V0R2xvdHJl
Y2h0ZWlkKCkgeworICAgICAgICByZXR1cm4gdGhpcy5nbG90cmVjaHRlaWQ7CisgICAgfQorCisg
ICAgcHVibGljIHZvaWQgc2V0R2xvdHJlY2h0ZWlkKGxvbmcgZ2xvdHJlY2h0ZWlkKSB7CisgICAg
ICAgIHRoaXMuZ2xvdHJlY2h0ZWlkID0zRCBnbG90cmVjaHRlaWQ7CisgICAgfQorfQpkaWZmIC1y
IGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9k
aXZlNGVsZW1lbnQ9CnMvcml2ZXIvc2VkZGIvbW9kZWwvVG1wTWVzQWNoYW5nZWQuamF2YQotLS0g
L2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9iYWNrZW5kL3Ny
Yy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvVG1wTWVzQWNo
YW49CmdlZC5qYXZhCU1vbiBBcHIgMjkgMTE6MzM6MDEgMjAxMyArMDIwMApAQCAtMCwwICsxLDUw
IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBm
PUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQorICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkg
SW50ZXZhdGlvbiBHbWJICisgKgorICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIg
dGhlIEdOVSBBR1BMICg+PTNEdjMpPTIwCisgKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5P
IFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCisgKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERp
dmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFpbHMuPTIwCisgKi8KKworcGFja2FnZSBvcmcuZGl2
ZTRlbGVtZW50cy5zZWRkYi5tb2RlbDsKKy8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3
IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQuMC5DUjEKKworCitpbXBvcnQgamF2YXgucGVyc2lzdGVu
Y2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZh
eC5wZXJzaXN0ZW5jZS5JZDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKK2ltcG9y
dCBqYXZheC5wZXJzaXN0ZW5jZS5VbmlxdWVDb25zdHJhaW50OworCisvKioKKyAqIFRtcE1lc0Fj
aGFuZ2VkIGdlbmVyYXRlZCBieSBoYm0yamF2YQorICovCitARW50aXR5CitAVGFibGUobmFtZT0z
RCJUTVBfTUVTX0FDSEFOR0VEIgorICAgICxzY2hlbWE9M0QiU0VEREIiCisgICAgLCB1bmlxdWVD
b25zdHJhaW50cyA9M0QgQFVuaXF1ZUNvbnN0cmFpbnQoY29sdW1uTmFtZXM9M0QiTUVTU1VOR0lE
IikKKykKK3B1YmxpYyBjbGFzcyBUbXBNZXNBY2hhbmdlZCAgaW1wbGVtZW50cyBqYXZhLmlvLlNl
cmlhbGl6YWJsZSB7CisKKworICAgICBwcml2YXRlIGxvbmcgbWVzc3VuZ2lkOworCisgICAgcHVi
bGljIFRtcE1lc0FjaGFuZ2VkKCkgeworICAgIH0KKworICAgIHB1YmxpYyBUbXBNZXNBY2hhbmdl
ZChsb25nIG1lc3N1bmdpZCkgeworICAgICAgIHRoaXMubWVzc3VuZ2lkID0zRCBtZXNzdW5naWQ7
CisgICAgfQorCisgICAgIEBJZAorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiTUVTU1VOR0lEIiwg
dW5pcXVlPTNEdHJ1ZSwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPQo9M0QxMSwgc2NhbGU9
M0QwKQorICAgIHB1YmxpYyBsb25nIGdldE1lc3N1bmdpZCgpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMubWVzc3VuZ2lkOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1lc3N1bmdpZChsb25n
IG1lc3N1bmdpZCkgeworICAgICAgICB0aGlzLm1lc3N1bmdpZCA9M0QgbWVzc3VuZ2lkOworICAg
IH0KK30KZGlmZiAtciBiYzRlMWJmMjYyMjcgLXIgMWU2OGVjYTI2YjhhIGJhY2tlbmQvc3JjL21h
aW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50PQpzL3JpdmVyL3NlZGRiL21vZGVsL1RtcE1lc0djaGFu
Z2VkLmphdmEKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysr
IGIvYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnRzL3JpdmVyL3NlZGRiL21v
ZGVsL1RtcE1lc0djaGFuPQpnZWQuamF2YQlNb24gQXByIDI5IDExOjMzOjAxIDIwMTMgKzAyMDAK
QEAgLTAsMCArMSw1MCBAQAorLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIGJ5IEJ1
bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKKyAqIFNvZnR3YXJlIGVu
Z2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAorICoKKyAqIFRoaXMgZmlsZSBpcyBGcmVlIFNv
ZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAorICogYW5kIGNvbWVzIHdpdGgg
QUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQorICogZG9jdW1lbnRhdGlvbiBj
b21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAorICovCisKK3Bh
Y2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7CisvLyBHZW5lcmF0ZWQgMTQuMDYu
MjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCisKKworaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7
CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2Uu
VGFibGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVW5pcXVlQ29uc3RyYWludDsKKworLyoq
CisgKiBUbXBNZXNHY2hhbmdlZCBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKKyAqLworQEVudGl0eQor
QFRhYmxlKG5hbWU9M0QiVE1QX01FU19HQ0hBTkdFRCIKKyAgICAsc2NoZW1hPTNEIlNFRERCIgor
ICAgICwgdW5pcXVlQ29uc3RyYWludHMgPTNEIEBVbmlxdWVDb25zdHJhaW50KGNvbHVtbk5hbWVz
PTNEIk1FU1NVTkdJRCIpCispCitwdWJsaWMgY2xhc3MgVG1wTWVzR2NoYW5nZWQgIGltcGxlbWVu
dHMgamF2YS5pby5TZXJpYWxpemFibGUgeworCisKKyAgICAgcHJpdmF0ZSBsb25nIG1lc3N1bmdp
ZDsKKworICAgIHB1YmxpYyBUbXBNZXNHY2hhbmdlZCgpIHsKKyAgICB9CisKKyAgICBwdWJsaWMg
VG1wTWVzR2NoYW5nZWQobG9uZyBtZXNzdW5naWQpIHsKKyAgICAgICB0aGlzLm1lc3N1bmdpZCA9
M0QgbWVzc3VuZ2lkOworICAgIH0KKworICAgICBASWQKKworCisgICAgQENvbHVtbihuYW1lPTNE
Ik1FU1NVTkdJRCIsIHVuaXF1ZT0zRHRydWUsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0K
PTNEMTEsIHNjYWxlPTNEMCkKKyAgICBwdWJsaWMgbG9uZyBnZXRNZXNzdW5naWQoKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLm1lc3N1bmdpZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRN
ZXNzdW5naWQobG9uZyBtZXNzdW5naWQpIHsKKyAgICAgICAgdGhpcy5tZXNzdW5naWQgPTNEIG1l
c3N1bmdpZDsKKyAgICB9Cit9CmRpZmYgLXIgYmM0ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBi
YWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZlci9zZWRkYi9tb2Rl
bC9UbXBNZXNRY2hhbmdlZC5qYXZhCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAx
OTcwICswMDAwCisrKyBiL2JhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRlbGVtZW50cy9y
aXZlci9zZWRkYi9tb2RlbC9UbXBNZXNRY2hhbj0KZ2VkLmphdmEJTW9uIEFwciAyOSAxMTozMzow
MSAyMDEzICswMjAwCkBAIC0wLDAgKzEsNTAgQEAKKy8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAx
MiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCisg
KiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgKKyAqCisgKiBUaGlzIGZp
bGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49M0R2Myk9MjAKKyAqIGFu
ZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUKKyAqIGRv
Y3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy49
MjAKKyAqLworCitwYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnNlZGRiLm1vZGVsOworLy8gR2Vu
ZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQor
CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuRW50aXR5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOworaW1wb3J0IGphdmF4
LnBlcnNpc3RlbmNlLlRhYmxlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlVuaXF1ZUNvbnN0
cmFpbnQ7CisKKy8qKgorICogVG1wTWVzUWNoYW5nZWQgZ2VuZXJhdGVkIGJ5IGhibTJqYXZhCisg
Ki8KK0BFbnRpdHkKK0BUYWJsZShuYW1lPTNEIlRNUF9NRVNfUUNIQU5HRUQiCisgICAgLHNjaGVt
YT0zRCJTRUREQiIKKyAgICAsIHVuaXF1ZUNvbnN0cmFpbnRzID0zRCBAVW5pcXVlQ29uc3RyYWlu
dChjb2x1bW5OYW1lcz0zRCJNRVNTVU5HSUQiKQorKQorcHVibGljIGNsYXNzIFRtcE1lc1FjaGFu
Z2VkICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKKworCisgICAgIHByaXZhdGUg
bG9uZyBtZXNzdW5naWQ7CisKKyAgICBwdWJsaWMgVG1wTWVzUWNoYW5nZWQoKSB7CisgICAgfQor
CisgICAgcHVibGljIFRtcE1lc1FjaGFuZ2VkKGxvbmcgbWVzc3VuZ2lkKSB7CisgICAgICAgdGhp
cy5tZXNzdW5naWQgPTNEIG1lc3N1bmdpZDsKKyAgICB9CisKKyAgICAgQElkCisKKworICAgIEBD
b2x1bW4obmFtZT0zRCJNRVNTVU5HSUQiLCB1bmlxdWU9M0R0cnVlLCBudWxsYWJsZT0zRGZhbHNl
LCBwcmVjaXNpb249Cj0zRDExLCBzY2FsZT0zRDApCisgICAgcHVibGljIGxvbmcgZ2V0TWVzc3Vu
Z2lkKCkgeworICAgICAgICByZXR1cm4gdGhpcy5tZXNzdW5naWQ7CisgICAgfQorCisgICAgcHVi
bGljIHZvaWQgc2V0TWVzc3VuZ2lkKGxvbmcgbWVzc3VuZ2lkKSB7CisgICAgICAgIHRoaXMubWVz
c3VuZ2lkID0zRCBtZXNzdW5naWQ7CisgICAgfQorfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAx
ZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMvcml2
ZXIvc2VkZGIvbW9kZWwvVG1wTWVzU2NoYW5nZWQuamF2YQotLS0gL2Rldi9udWxsCVRodSBKYW4g
MDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9iYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2Rp
dmU0ZWxlbWVudHMvcml2ZXIvc2VkZGIvbW9kZWwvVG1wTWVzU2NoYW49CmdlZC5qYXZhCU1vbiBB
cHIgMjkgMTE6MzM6MDEgMjAxMyArMDIwMApAQCAtMCwwICsxLDUwIEBACisvKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIsIDIwMTMgYnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRz
c2Vyaz0KdW5kZQorICogU29mdHdhcmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICisg
KgorICogVGhpcyBmaWxlIGlzIEZyZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNE
djMpPTIwCisgKiBhbmQgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBv
dXQgdGhlCisgKiBkb2N1bWVudGF0aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIg
Zm9yIGRldGFpbHMuPTIwCisgKi8KKworcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5zZWRkYi5t
b2RlbDsKKy8vIEdlbmVyYXRlZCAxNC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29s
cyAzLjQuMC5DUjEKKworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0
IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsK
K2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5j
ZS5VbmlxdWVDb25zdHJhaW50OworCisvKioKKyAqIFRtcE1lc1NjaGFuZ2VkIGdlbmVyYXRlZCBi
eSBoYm0yamF2YQorICovCitARW50aXR5CitAVGFibGUobmFtZT0zRCJUTVBfTUVTX1NDSEFOR0VE
IgorICAgICxzY2hlbWE9M0QiU0VEREIiCisgICAgLCB1bmlxdWVDb25zdHJhaW50cyA9M0QgQFVu
aXF1ZUNvbnN0cmFpbnQoY29sdW1uTmFtZXM9M0QiTUVTU1VOR0lEIikKKykKK3B1YmxpYyBjbGFz
cyBUbXBNZXNTY2hhbmdlZCAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7CisKKwor
ICAgICBwcml2YXRlIGxvbmcgbWVzc3VuZ2lkOworCisgICAgcHVibGljIFRtcE1lc1NjaGFuZ2Vk
KCkgeworICAgIH0KKworICAgIHB1YmxpYyBUbXBNZXNTY2hhbmdlZChsb25nIG1lc3N1bmdpZCkg
eworICAgICAgIHRoaXMubWVzc3VuZ2lkID0zRCBtZXNzdW5naWQ7CisgICAgfQorCisgICAgIEBJ
ZAorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiTUVTU1VOR0lEIiwgdW5pcXVlPTNEdHJ1ZSwgbnVs
bGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPQo9M0QxMSwgc2NhbGU9M0QwKQorICAgIHB1YmxpYyBs
b25nIGdldE1lc3N1bmdpZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubWVzc3VuZ2lkOworICAg
IH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1lc3N1bmdpZChsb25nIG1lc3N1bmdpZCkgeworICAg
ICAgICB0aGlzLm1lc3N1bmdpZCA9M0QgbWVzc3VuZ2lkOworICAgIH0KK30KZGlmZiAtciBiYzRl
MWJmMjYyMjcgLXIgMWU2OGVjYTI2YjhhIGJhY2tlbmQvc3JjL21haW4vamF2YS9vcmcvZGl2ZTRl
bGVtZW50PQpzL3JpdmVyL3NlZGRiL21vZGVsL1p6YXJjaGl2LmphdmEKLS0tIC9kZXYvbnVsbAlU
aHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvYmFja2VuZC9zcmMvbWFpbi9qYXZh
L29yZy9kaXZlNGVsZW1lbnRzL3JpdmVyL3NlZGRiL21vZGVsL1p6YXJjaGl2LmphPQp2YQlNb24g
QXByIDI5IDExOjMzOjAxIDIwMTMgKzAyMDAKQEAgLTAsMCArMSwxMDQgQEAKKy8qIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxMiwgMjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1B
NHNzZXJrPQp1bmRlCisgKiBTb2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgK
KyAqCisgKiBUaGlzIGZpbGUgaXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49
M0R2Myk9MjAKKyAqIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNr
IG91dCB0aGUKKyAqIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZl
ciBmb3IgZGV0YWlscy49MjAKKyAqLworCitwYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnNlZGRi
Lm1vZGVsOworLy8gR2VuZXJhdGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRv
b2xzIDMuNC4wLkNSMQorCisKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKK2ltcG9ydCBqYXZh
LnV0aWwuU2V0OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9ydCBqYXZh
eC5wZXJzaXN0ZW5jZS5FbnRpdHk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRmV0Y2hUeXBl
OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNl
Lk9uZVRvTWFueTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKKworLyoqCisgKiBa
emFyY2hpdiBnZW5lcmF0ZWQgYnkgaGJtMmphdmEKKyAqLworQEVudGl0eQorQFRhYmxlKG5hbWU9
M0QiWlpBUkNISVYiCisgICAgLHNjaGVtYT0zRCJTRUREQiIKKykKK3B1YmxpYyBjbGFzcyBaemFy
Y2hpdiAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7CisKKworICAgICBwcml2YXRl
IGxvbmcgYXJjaGl2aWQ7CisgICAgIHByaXZhdGUgU3RyaW5nIG5hbWU7CisgICAgIHByaXZhdGUg
Ym9vbGVhbiBpc3Rha3RpdjsKKyAgICAgcHJpdmF0ZSBTdHJpbmcgYmVtZXJrdW5nOworICAgICBw
cml2YXRlIFNldDxTb2hsdGVzdD4gc29obHRlc3RzID0zRCBuZXcgSGFzaFNldDxTb2hsdGVzdD4o
MCk7CisKKyAgICBwdWJsaWMgWnphcmNoaXYoKSB7CisgICAgfQorCisgICAgcHVibGljIFp6YXJj
aGl2KGxvbmcgYXJjaGl2aWQsIFN0cmluZyBuYW1lLCBib29sZWFuIGlzdGFrdGl2KSB7CisgICAg
ICAgIHRoaXMuYXJjaGl2aWQgPTNEIGFyY2hpdmlkOworICAgICAgICB0aGlzLm5hbWUgPTNEIG5h
bWU7CisgICAgICAgIHRoaXMuaXN0YWt0aXYgPTNEIGlzdGFrdGl2OworICAgIH0KKyAgICBwdWJs
aWMgWnphcmNoaXYobG9uZyBhcmNoaXZpZCwgU3RyaW5nIG5hbWUsIGJvb2xlYW4gaXN0YWt0aXYs
IFN0cmluZyBiPQplbWVya3VuZywgU2V0PFNvaGx0ZXN0PiBzb2hsdGVzdHMpIHsKKyAgICAgICB0
aGlzLmFyY2hpdmlkID0zRCBhcmNoaXZpZDsKKyAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7Cisg
ICAgICAgdGhpcy5pc3Rha3RpdiA9M0QgaXN0YWt0aXY7CisgICAgICAgdGhpcy5iZW1lcmt1bmcg
PTNEIGJlbWVya3VuZzsKKyAgICAgICB0aGlzLnNvaGx0ZXN0cyA9M0Qgc29obHRlc3RzOworICAg
IH0KKworICAgICBASWQKKworCisgICAgQENvbHVtbihuYW1lPTNEIkFSQ0hJVklEIiwgdW5pcXVl
PTNEdHJ1ZSwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPQo9M0QxMSwgc2NhbGU9M0QwKQor
ICAgIHB1YmxpYyBsb25nIGdldEFyY2hpdmlkKCkgeworICAgICAgICByZXR1cm4gdGhpcy5hcmNo
aXZpZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRBcmNoaXZpZChsb25nIGFyY2hpdmlk
KSB7CisgICAgICAgIHRoaXMuYXJjaGl2aWQgPTNEIGFyY2hpdmlkOworICAgIH0KKworCisgICAg
QENvbHVtbihuYW1lPTNEIk5BTUUiLCBudWxsYWJsZT0zRGZhbHNlLCBsZW5ndGg9M0Q1MCkKKyAg
ICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7CisgICAgICAgIHJldHVybiB0aGlzLm5hbWU7Cisg
ICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkgeworICAgICAgICB0
aGlzLm5hbWUgPTNEIG5hbWU7CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiSVNUQUtU
SVYiLCBudWxsYWJsZT0zRGZhbHNlLCBwcmVjaXNpb249M0QxLCBzY2FsZT0zRDApCisgICAgcHVi
bGljIGJvb2xlYW4gaXNJc3Rha3RpdigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaXN0YWt0aXY7
CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0SXN0YWt0aXYoYm9vbGVhbiBpc3Rha3Rpdikg
eworICAgICAgICB0aGlzLmlzdGFrdGl2ID0zRCBpc3Rha3RpdjsKKyAgICB9CisKKworICAgIEBD
b2x1bW4obmFtZT0zRCJCRU1FUktVTkciLCBsZW5ndGg9M0QyNDApCisgICAgcHVibGljIFN0cmlu
ZyBnZXRCZW1lcmt1bmcoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJlbWVya3VuZzsKKyAgICB9
CisKKyAgICBwdWJsaWMgdm9pZCBzZXRCZW1lcmt1bmcoU3RyaW5nIGJlbWVya3VuZykgeworICAg
ICAgICB0aGlzLmJlbWVya3VuZyA9M0QgYmVtZXJrdW5nOworICAgIH0KKworQE9uZVRvTWFueShm
ZXRjaD0zREZldGNoVHlwZS5MQVpZLCBtYXBwZWRCeT0zRCJ6emFyY2hpdiIpCisgICAgcHVibGlj
IFNldDxTb2hsdGVzdD4gZ2V0U29obHRlc3RzKCkgeworICAgICAgICByZXR1cm4gdGhpcy5zb2hs
dGVzdHM7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0U29obHRlc3RzKFNldDxTb2hsdGVz
dD4gc29obHRlc3RzKSB7CisgICAgICAgIHRoaXMuc29obHRlc3RzID0zRCBzb2hsdGVzdHM7Cisg
ICAgfQorfQpkaWZmIC1yIGJjNGUxYmYyNjIyNyAtciAxZTY4ZWNhMjZiOGEgYmFja2VuZC9zcmMv
bWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnQ9CnMvcml2ZXIvc2VkZGIvbW9kZWwvWnpwcm9iZW5h
aG1lYXJ0LmphdmEKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAK
KysrIGIvYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnRzL3JpdmVyL3NlZGRi
L21vZGVsL1p6cHJvYmVuYWhtPQplYXJ0LmphdmEJTW9uIEFwciAyOSAxMTozMzowMSAyMDEzICsw
MjAwCkBAIC0wLDAgKzEsMTE4IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMg
YnkgQnVuZGVzYW5zdGFsdCBmPUMzPUJDciBHZXc9QzM9QTRzc2Vyaz0KdW5kZQorICogU29mdHdh
cmUgZW5naW5lZXJpbmcgYnkgSW50ZXZhdGlvbiBHbWJICisgKgorICogVGhpcyBmaWxlIGlzIEZy
ZWUgU29mdHdhcmUgdW5kZXIgdGhlIEdOVSBBR1BMICg+PTNEdjMpPTIwCisgKiBhbmQgY29tZXMg
d2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZISBDaGVjayBvdXQgdGhlCisgKiBkb2N1bWVudGF0
aW9uIGNvbWluZyB3aXRoIERpdmU0RWxlbWVudHMgUml2ZXIgZm9yIGRldGFpbHMuPTIwCisgKi8K
KworcGFja2FnZSBvcmcuZGl2ZTRlbGVtZW50cy5zZWRkYi5tb2RlbDsKKy8vIEdlbmVyYXRlZCAx
NC4wNi4yMDEyIDExOjMwOjU3IGJ5IEhpYmVybmF0ZSBUb29scyAzLjQuMC5DUjEKKworCitpbXBv
cnQgamF2YS51dGlsLkhhc2hTZXQ7CitpbXBvcnQgamF2YS51dGlsLlNldDsKK2ltcG9ydCBqYXZh
eC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5Owor
aW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0
ZW5jZS5JZDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5PbmVUb01hbnk7CitpbXBvcnQgamF2
YXgucGVyc2lzdGVuY2UuVGFibGU7CisKKy8qKgorICogWnpwcm9iZW5haG1lYXJ0IGdlbmVyYXRl
ZCBieSBoYm0yamF2YQorICovCitARW50aXR5CitAVGFibGUobmFtZT0zRCJaWlBST0JFTkFITUVB
UlQiCisgICAgLHNjaGVtYT0zRCJTRUREQiIKKykKK3B1YmxpYyBjbGFzcyBaenByb2JlbmFobWVh
cnQgIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgeworCisKKyAgICAgcHJpdmF0ZSBs
b25nIHByb2JlbmFobWVhcnRpZDsKKyAgICAgcHJpdmF0ZSBib29sZWFuIGlzdGtlcm47CisgICAg
IHByaXZhdGUgU3RyaW5nIG5hbWU7CisgICAgIHByaXZhdGUgYm9vbGVhbiBpc3Rha3RpdjsKKyAg
ICAgcHJpdmF0ZSBTdHJpbmcgYmVtZXJrdW5nOworICAgICBwcml2YXRlIFNldDxTb2hscHJvYmU+
IHNvaGxwcm9iZXMgPTNEIG5ldyBIYXNoU2V0PFNvaGxwcm9iZT4oMCk7CisKKyAgICBwdWJsaWMg
Wnpwcm9iZW5haG1lYXJ0KCkgeworICAgIH0KKworCisgICAgcHVibGljIFp6cHJvYmVuYWhtZWFy
dChsb25nIHByb2JlbmFobWVhcnRpZCwgYm9vbGVhbiBpc3RrZXJuLCBTdHJpbmcgbj0KYW1lLCBi
b29sZWFuIGlzdGFrdGl2KSB7CisgICAgICAgIHRoaXMucHJvYmVuYWhtZWFydGlkID0zRCBwcm9i
ZW5haG1lYXJ0aWQ7CisgICAgICAgIHRoaXMuaXN0a2VybiA9M0QgaXN0a2VybjsKKyAgICAgICAg
dGhpcy5uYW1lID0zRCBuYW1lOworICAgICAgICB0aGlzLmlzdGFrdGl2ID0zRCBpc3Rha3RpdjsK
KyAgICB9CisgICAgcHVibGljIFp6cHJvYmVuYWhtZWFydChsb25nIHByb2JlbmFobWVhcnRpZCwg
Ym9vbGVhbiBpc3RrZXJuLCBTdHJpbmcgbj0KYW1lLCBib29sZWFuIGlzdGFrdGl2LCBTdHJpbmcg
YmVtZXJrdW5nLCBTZXQ8U29obHByb2JlPiBzb2hscHJvYmVzKSB7CisgICAgICAgdGhpcy5wcm9i
ZW5haG1lYXJ0aWQgPTNEIHByb2JlbmFobWVhcnRpZDsKKyAgICAgICB0aGlzLmlzdGtlcm4gPTNE
IGlzdGtlcm47CisgICAgICAgdGhpcy5uYW1lID0zRCBuYW1lOworICAgICAgIHRoaXMuaXN0YWt0
aXYgPTNEIGlzdGFrdGl2OworICAgICAgIHRoaXMuYmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7Cisg
ICAgICAgdGhpcy5zb2hscHJvYmVzID0zRCBzb2hscHJvYmVzOworICAgIH0KKworICAgICBASWQK
KworCisgICAgQENvbHVtbihuYW1lPTNEIlBST0JFTkFITUVBUlRJRCIsIHVuaXF1ZT0zRHRydWUs
IG51bGxhYmxlPTNEZmFsc2UsIHByZT0KY2lzaW9uPTNEMTEsIHNjYWxlPTNEMCkKKyAgICBwdWJs
aWMgbG9uZyBnZXRQcm9iZW5haG1lYXJ0aWQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnByb2Jl
bmFobWVhcnRpZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRQcm9iZW5haG1lYXJ0aWQo
bG9uZyBwcm9iZW5haG1lYXJ0aWQpIHsKKyAgICAgICAgdGhpcy5wcm9iZW5haG1lYXJ0aWQgPTNE
IHByb2JlbmFobWVhcnRpZDsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJJU1RLRVJO
IiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMSwgc2NhbGU9M0QwKQorICAgIHB1Ymxp
YyBib29sZWFuIGlzSXN0a2VybigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaXN0a2VybjsKKyAg
ICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRJc3RrZXJuKGJvb2xlYW4gaXN0a2VybikgeworICAg
ICAgICB0aGlzLmlzdGtlcm4gPTNEIGlzdGtlcm47CisgICAgfQorCisKKyAgICBAQ29sdW1uKG5h
bWU9M0QiTkFNRSIsIG51bGxhYmxlPTNEZmFsc2UsIGxlbmd0aD0zRDUwKQorICAgIHB1YmxpYyBT
dHJpbmcgZ2V0TmFtZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubmFtZTsKKyAgICB9CisKKyAg
ICBwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBuYW1lKSB7CisgICAgICAgIHRoaXMubmFtZSA9
M0QgbmFtZTsKKyAgICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJJU1RBS1RJViIsIG51bGxh
YmxlPTNEZmFsc2UsIHByZWNpc2lvbj0zRDEsIHNjYWxlPTNEMCkKKyAgICBwdWJsaWMgYm9vbGVh
biBpc0lzdGFrdGl2KCkgeworICAgICAgICByZXR1cm4gdGhpcy5pc3Rha3RpdjsKKyAgICB9CisK
KyAgICBwdWJsaWMgdm9pZCBzZXRJc3Rha3Rpdihib29sZWFuIGlzdGFrdGl2KSB7CisgICAgICAg
IHRoaXMuaXN0YWt0aXYgPTNEIGlzdGFrdGl2OworICAgIH0KKworCisgICAgQENvbHVtbihuYW1l
PTNEIkJFTUVSS1VORyIsIGxlbmd0aD0zRDI0MCkKKyAgICBwdWJsaWMgU3RyaW5nIGdldEJlbWVy
a3VuZygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYmVtZXJrdW5nOworICAgIH0KKworICAgIHB1
YmxpYyB2b2lkIHNldEJlbWVya3VuZyhTdHJpbmcgYmVtZXJrdW5nKSB7CisgICAgICAgIHRoaXMu
YmVtZXJrdW5nID0zRCBiZW1lcmt1bmc7CisgICAgfQorCitAT25lVG9NYW55KGZldGNoPTNERmV0
Y2hUeXBlLkxBWlksIG1hcHBlZEJ5PTNEInp6cHJvYmVuYWhtZWFydCIpCisgICAgcHVibGljIFNl
dDxTb2hscHJvYmU+IGdldFNvaGxwcm9iZXMoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnNvaGxw
cm9iZXM7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0U29obHByb2JlcyhTZXQ8U29obHBy
b2JlPiBzb2hscHJvYmVzKSB7CisgICAgICAgIHRoaXMuc29obHByb2JlcyA9M0Qgc29obHByb2Jl
czsKKyAgICB9Cit9CmRpZmYgLXIgYmM0ZTFiZjI2MjI3IC1yIDFlNjhlY2EyNmI4YSBiYWNrZW5k
L3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZlci9zZWRkYi9tb2RlbC9aenNv
bmRpZXJ1bmdhcnQuamF2YQotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
MDAwMAorKysgYi9iYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudHMvcml2ZXIv
c2VkZGIvbW9kZWwvWnpzb25kaWVydW49CmdhcnQuamF2YQlNb24gQXByIDI5IDExOjMzOjAxIDIw
MTMgKzAyMDAKQEAgLTAsMCArMSwxMDQgQEAKKy8qIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwg
MjAxMyBieSBCdW5kZXNhbnN0YWx0IGY9QzM9QkNyIEdldz1DMz1BNHNzZXJrPQp1bmRlCisgKiBT
b2Z0d2FyZSBlbmdpbmVlcmluZyBieSBJbnRldmF0aW9uIEdtYkgKKyAqCisgKiBUaGlzIGZpbGUg
aXMgRnJlZSBTb2Z0d2FyZSB1bmRlciB0aGUgR05VIEFHUEwgKD49M0R2Myk9MjAKKyAqIGFuZCBj
b21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkhIENoZWNrIG91dCB0aGUKKyAqIGRvY3Vt
ZW50YXRpb24gY29taW5nIHdpdGggRGl2ZTRFbGVtZW50cyBSaXZlciBmb3IgZGV0YWlscy49MjAK
KyAqLworCitwYWNrYWdlIG9yZy5kaXZlNGVsZW1lbnRzLnNlZGRiLm1vZGVsOworLy8gR2VuZXJh
dGVkIDE0LjA2LjIwMTIgMTE6MzA6NTcgYnkgSGliZXJuYXRlIFRvb2xzIDMuNC4wLkNSMQorCisK
K2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworaW1wb3J0
IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRp
dHk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRmV0Y2hUeXBlOworaW1wb3J0IGphdmF4LnBl
cnNpc3RlbmNlLklkOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk9uZVRvTWFueTsKK2ltcG9y
dCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKKworLyoqCisgKiBaenNvbmRpZXJ1bmdhcnQgZ2Vu
ZXJhdGVkIGJ5IGhibTJqYXZhCisgKi8KK0BFbnRpdHkKK0BUYWJsZShuYW1lPTNEIlpaU09ORElF
UlVOR0FSVCIKKyAgICAsc2NoZW1hPTNEIlNFRERCIgorKQorcHVibGljIGNsYXNzIFp6c29uZGll
cnVuZ2FydCAgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7CisKKworICAgICBwcml2
YXRlIGxvbmcgc29uZGllcnVuZ2FydGlkOworICAgICBwcml2YXRlIFN0cmluZyBuYW1lOworICAg
ICBwcml2YXRlIGJvb2xlYW4gaXN0YWt0aXY7CisgICAgIHByaXZhdGUgU3RyaW5nIGJlbWVya3Vu
ZzsKKyAgICAgcHJpdmF0ZSBTZXQ8U29obHRlc3Q+IHNvaGx0ZXN0cyA9M0QgbmV3IEhhc2hTZXQ8
U29obHRlc3Q+KDApOworCisgICAgcHVibGljIFp6c29uZGllcnVuZ2FydCgpIHsKKyAgICB9CisK
KyAgICBwdWJsaWMgWnpzb25kaWVydW5nYXJ0KGxvbmcgc29uZGllcnVuZ2FydGlkLCBTdHJpbmcg
bmFtZSwgYm9vbGVhbiBpc3RhPQprdGl2KSB7CisgICAgICAgIHRoaXMuc29uZGllcnVuZ2FydGlk
ID0zRCBzb25kaWVydW5nYXJ0aWQ7CisgICAgICAgIHRoaXMubmFtZSA9M0QgbmFtZTsKKyAgICAg
ICAgdGhpcy5pc3Rha3RpdiA9M0QgaXN0YWt0aXY7CisgICAgfQorICAgIHB1YmxpYyBaenNvbmRp
ZXJ1bmdhcnQobG9uZyBzb25kaWVydW5nYXJ0aWQsIFN0cmluZyBuYW1lLCBib29sZWFuIGlzdGE9
Cmt0aXYsIFN0cmluZyBiZW1lcmt1bmcsIFNldDxTb2hsdGVzdD4gc29obHRlc3RzKSB7CisgICAg
ICAgdGhpcy5zb25kaWVydW5nYXJ0aWQgPTNEIHNvbmRpZXJ1bmdhcnRpZDsKKyAgICAgICB0aGlz
Lm5hbWUgPTNEIG5hbWU7CisgICAgICAgdGhpcy5pc3Rha3RpdiA9M0QgaXN0YWt0aXY7CisgICAg
ICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKKyAgICAgICB0aGlzLnNvaGx0ZXN0cyA9
M0Qgc29obHRlc3RzOworICAgIH0KKworICAgICBASWQKKworCisgICAgQENvbHVtbihuYW1lPTNE
IlNPTkRJRVJVTkdBUlRJRCIsIHVuaXF1ZT0zRHRydWUsIG51bGxhYmxlPTNEZmFsc2UsIHByZT0K
Y2lzaW9uPTNEMTEsIHNjYWxlPTNEMCkKKyAgICBwdWJsaWMgbG9uZyBnZXRTb25kaWVydW5nYXJ0
aWQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnNvbmRpZXJ1bmdhcnRpZDsKKyAgICB9CisKKyAg
ICBwdWJsaWMgdm9pZCBzZXRTb25kaWVydW5nYXJ0aWQobG9uZyBzb25kaWVydW5nYXJ0aWQpIHsK
KyAgICAgICAgdGhpcy5zb25kaWVydW5nYXJ0aWQgPTNEIHNvbmRpZXJ1bmdhcnRpZDsKKyAgICB9
CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJOQU1FIiwgbnVsbGFibGU9M0RmYWxzZSwgbGVuZ3Ro
PTNENTApCisgICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgeworICAgICAgICByZXR1cm4gdGhp
cy5uYW1lOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpIHsK
KyAgICAgICAgdGhpcy5uYW1lID0zRCBuYW1lOworICAgIH0KKworCisgICAgQENvbHVtbihuYW1l
PTNEIklTVEFLVElWIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMSwgc2NhbGU9M0Qw
KQorICAgIHB1YmxpYyBib29sZWFuIGlzSXN0YWt0aXYoKSB7CisgICAgICAgIHJldHVybiB0aGlz
LmlzdGFrdGl2OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldElzdGFrdGl2KGJvb2xlYW4g
aXN0YWt0aXYpIHsKKyAgICAgICAgdGhpcy5pc3Rha3RpdiA9M0QgaXN0YWt0aXY7CisgICAgfQor
CisKKyAgICBAQ29sdW1uKG5hbWU9M0QiQkVNRVJLVU5HIiwgbGVuZ3RoPTNEMjQwKQorICAgIHB1
YmxpYyBTdHJpbmcgZ2V0QmVtZXJrdW5nKCkgeworICAgICAgICByZXR1cm4gdGhpcy5iZW1lcmt1
bmc7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0QmVtZXJrdW5nKFN0cmluZyBiZW1lcmt1
bmcpIHsKKyAgICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKKyAgICB9CisKK0BP
bmVUb01hbnkoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSwgbWFwcGVkQnk9M0Qienpzb25kaWVydW5n
YXJ0IikKKyAgICBwdWJsaWMgU2V0PFNvaGx0ZXN0PiBnZXRTb2hsdGVzdHMoKSB7CisgICAgICAg
IHJldHVybiB0aGlzLnNvaGx0ZXN0czsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRTb2hs
dGVzdHMoU2V0PFNvaGx0ZXN0PiBzb2hsdGVzdHMpIHsKKyAgICAgICAgdGhpcy5zb2hsdGVzdHMg
PTNEIHNvaGx0ZXN0czsKKyAgICB9Cit9CmRpZmYgLXIgYmM0ZTFiZjI2MjI3IC1yIDFlNjhlY2Ey
NmI4YSBiYWNrZW5kL3NyYy9tYWluL2phdmEvb3JnL2RpdmU0ZWxlbWVudD0Kcy9yaXZlci9zZWRk
Yi9tb2RlbC9aenRoZW1hLmphdmEKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5
NzAgKzAwMDAKKysrIGIvYmFja2VuZC9zcmMvbWFpbi9qYXZhL29yZy9kaXZlNGVsZW1lbnRzL3Jp
dmVyL3NlZGRiL21vZGVsL1p6dGhlbWEuamF2PQphCU1vbiBBcHIgMjkgMTE6MzM6MDEgMjAxMyAr
MDIwMApAQCAtMCwwICsxLDExNiBAQAorLyogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEz
IGJ5IEJ1bmRlc2Fuc3RhbHQgZj1DMz1CQ3IgR2V3PUMzPUE0c3Nlcms9CnVuZGUKKyAqIFNvZnR3
YXJlIGVuZ2luZWVyaW5nIGJ5IEludGV2YXRpb24gR21iSAorICoKKyAqIFRoaXMgZmlsZSBpcyBG
cmVlIFNvZnR3YXJlIHVuZGVyIHRoZSBHTlUgQUdQTCAoPj0zRHYzKT0yMAorICogYW5kIGNvbWVz
IHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSEgQ2hlY2sgb3V0IHRoZQorICogZG9jdW1lbnRh
dGlvbiBjb21pbmcgd2l0aCBEaXZlNEVsZW1lbnRzIFJpdmVyIGZvciBkZXRhaWxzLj0yMAorICov
CisKK3BhY2thZ2Ugb3JnLmRpdmU0ZWxlbWVudHMuc2VkZGIubW9kZWw7CisvLyBHZW5lcmF0ZWQg
MTQuMDYuMjAxMiAxMTozMDo1NyBieSBIaWJlcm5hdGUgVG9vbHMgMy40LjAuQ1IxCisKKworaW1w
b3J0IGphdmEudXRpbC5IYXNoU2V0OworaW1wb3J0IGphdmEudXRpbC5TZXQ7CitpbXBvcnQgamF2
YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsK
K2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lz
dGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuT25lVG9NYW55OworaW1wb3J0IGph
dmF4LnBlcnNpc3RlbmNlLlRhYmxlOworCisvKioKKyAqIFp6dGhlbWEgZ2VuZXJhdGVkIGJ5IGhi
bTJqYXZhCisgKi8KK0BFbnRpdHkKK0BUYWJsZShuYW1lPTNEIlpaVEhFTUEiCisgICAgLHNjaGVt
YT0zRCJTRUREQiIKKykKK3B1YmxpYyBjbGFzcyBaenRoZW1hICBpbXBsZW1lbnRzIGphdmEuaW8u
U2VyaWFsaXphYmxlIHsKKworCisgICAgIHByaXZhdGUgbG9uZyB0aGVtYWlkOworICAgICBwcml2
YXRlIFN0cmluZyBuYW1lOworICAgICBwcml2YXRlIGJvb2xlYW4gaXN0YWt0aXY7CisgICAgIHBy
aXZhdGUgU3RyaW5nIGJlbWVya3VuZzsKKyAgICAgcHJpdmF0ZSBTZXQ8QmlsZD4gYmlsZHMgPTNE
IG5ldyBIYXNoU2V0PEJpbGQ+KDApOworICAgICBwcml2YXRlIFNldDxQcm9iZWJpbGQ+IHByb2Jl
YmlsZHMgPTNEIG5ldyBIYXNoU2V0PFByb2JlYmlsZD4oMCk7CisKKyAgICBwdWJsaWMgWnp0aGVt
YSgpIHsKKyAgICB9CisKKworICAgIHB1YmxpYyBaenRoZW1hKGxvbmcgdGhlbWFpZCwgU3RyaW5n
IG5hbWUsIGJvb2xlYW4gaXN0YWt0aXYpIHsKKyAgICAgICAgdGhpcy50aGVtYWlkID0zRCB0aGVt
YWlkOworICAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7CisgICAgICAgIHRoaXMuaXN0YWt0aXYg
PTNEIGlzdGFrdGl2OworICAgIH0KKyAgICBwdWJsaWMgWnp0aGVtYShsb25nIHRoZW1haWQsIFN0
cmluZyBuYW1lLCBib29sZWFuIGlzdGFrdGl2LCBTdHJpbmcgYmVtPQplcmt1bmcsIFNldDxCaWxk
PiBiaWxkcywgU2V0PFByb2JlYmlsZD4gcHJvYmViaWxkcykgeworICAgICAgIHRoaXMudGhlbWFp
ZCA9M0QgdGhlbWFpZDsKKyAgICAgICB0aGlzLm5hbWUgPTNEIG5hbWU7CisgICAgICAgdGhpcy5p
c3Rha3RpdiA9M0QgaXN0YWt0aXY7CisgICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3Vu
ZzsKKyAgICAgICB0aGlzLmJpbGRzID0zRCBiaWxkczsKKyAgICAgICB0aGlzLnByb2JlYmlsZHMg
PTNEIHByb2JlYmlsZHM7CisgICAgfQorCisgICAgIEBJZAorCisKKyAgICBAQ29sdW1uKG5hbWU9
M0QiVEhFTUFJRCIsIHVuaXF1ZT0zRHRydWUsIG51bGxhYmxlPTNEZmFsc2UsIHByZWNpc2lvbj0K
PTNEMTEsIHNjYWxlPTNEMCkKKyAgICBwdWJsaWMgbG9uZyBnZXRUaGVtYWlkKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy50aGVtYWlkOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFRoZW1h
aWQobG9uZyB0aGVtYWlkKSB7CisgICAgICAgIHRoaXMudGhlbWFpZCA9M0QgdGhlbWFpZDsKKyAg
ICB9CisKKworICAgIEBDb2x1bW4obmFtZT0zRCJOQU1FIiwgbnVsbGFibGU9M0RmYWxzZSwgbGVu
Z3RoPTNENTApCisgICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgeworICAgICAgICByZXR1cm4g
dGhpcy5uYW1lOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUp
IHsKKyAgICAgICAgdGhpcy5uYW1lID0zRCBuYW1lOworICAgIH0KKworCisgICAgQENvbHVtbihu
YW1lPTNEIklTVEFLVElWIiwgbnVsbGFibGU9M0RmYWxzZSwgcHJlY2lzaW9uPTNEMSwgc2NhbGU9
M0QwKQorICAgIHB1YmxpYyBib29sZWFuIGlzSXN0YWt0aXYoKSB7CisgICAgICAgIHJldHVybiB0
aGlzLmlzdGFrdGl2OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldElzdGFrdGl2KGJvb2xl
YW4gaXN0YWt0aXYpIHsKKyAgICAgICAgdGhpcy5pc3Rha3RpdiA9M0QgaXN0YWt0aXY7CisgICAg
fQorCisKKyAgICBAQ29sdW1uKG5hbWU9M0QiQkVNRVJLVU5HIiwgbGVuZ3RoPTNEMjQwKQorICAg
IHB1YmxpYyBTdHJpbmcgZ2V0QmVtZXJrdW5nKCkgeworICAgICAgICByZXR1cm4gdGhpcy5iZW1l
cmt1bmc7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0QmVtZXJrdW5nKFN0cmluZyBiZW1l
cmt1bmcpIHsKKyAgICAgICAgdGhpcy5iZW1lcmt1bmcgPTNEIGJlbWVya3VuZzsKKyAgICB9CisK
K0BPbmVUb01hbnkoZmV0Y2g9M0RGZXRjaFR5cGUuTEFaWSwgbWFwcGVkQnk9M0Qienp0aGVtYSIp
CisgICAgcHVibGljIFNldDxCaWxkPiBnZXRCaWxkcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
YmlsZHM7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0QmlsZHMoU2V0PEJpbGQ+IGJpbGRz
KSB7CisgICAgICAgIHRoaXMuYmlsZHMgPTNEIGJpbGRzOworICAgIH0KKworQE9uZVRvTWFueShm
ZXRjaD0zREZldGNoVHlwZS5MQVpZLCBtYXBwZWRCeT0zRCJ6enRoZW1hIikKKyAgICBwdWJsaWMg
U2V0PFByb2JlYmlsZD4gZ2V0UHJvYmViaWxkcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucHJv
YmViaWxkczsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRQcm9iZWJpbGRzKFNldDxQcm9i
ZWJpbGQ+IHByb2JlYmlsZHMpIHsKKyAgICAgICAgdGhpcy5wcm9iZWJpbGRzID0zRCBwcm9iZWJp
bGRzOworICAgIH0KK30K


More information about the Dive4elements-commits mailing list