public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* optimization/9805: optimisation of largish array constant containing strings takes forever(?) and consumes very large amounts of memory
@ 2003-02-22 19:06 tilps
  0 siblings, 0 replies; only message in thread
From: tilps @ 2003-02-22 19:06 UTC (permalink / raw)
  To: gcc-gnats


>Number:         9805
>Category:       optimization
>Synopsis:       optimisation of largish array constant containing strings takes forever(?) and consumes very large amounts of memory
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Feb 22 19:06:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     tilps@hotmail.com
>Release:        gcc 3.4 - 20030222
>Organization:
>Environment:
$ gcctesting/bin/g++ -v
Reading specs from /home/Administrator/gcctesting/bin/../lib/gcc-lib/i686-pc-cyg
win/3.4/specs
Configured with: ../gcc/configure --prefix=~/gcctesting/ --enable-version-specif
ic-runtime-libs --enable-threads=posix --enable-shared : (reconfigured) ../gcc/c
onfigure --prefix=/home/Administrator/gcctesting/ --enable-version-specific-runt
ime-libs --enable-threads=posix --enable-shared
Thread model: posix
gcc version 3.4 20030222 (experimental)
>Description:
uses ~300meg - and i wasnt patient enough to see if it ever completed.
Without optimisation compiles rapidly.

also duplicated on redhat 8 - running same date gcc mainline.

also duplicated with redhat 8 default compiler (3.2) - and cygwin default compiler (3.2 - cygwin branch)

preprocessed source isnt exactly minimised - but its smaller then it was. (60% smaller - not to bad considering >90% of this one is <string> in the first line)
>How-To-Repeat:
g++ -O constants.ii
or -O2 ...
>Fix:
workarounds.
reduce the size of the array (only having 2 of the 9 first level entries in the array compiles quite reasonably)
change sstring_t title_m; to const char* title_m; in the titles class.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="constants.ii"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="constants.ii"

IyAxICJjb25zdGFudHMuY2MiCiMgMSAiPGJ1aWx0LWluPiIKIyAxICI8Y29tbWFuZCBsaW5lPiIK
IyAxICJjb25zdGFudHMuY2MiCiMgMSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xp
Yi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9zdHJpbmciIDEgMwojIDQ0
ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3
aW4vMy40L2luY2x1ZGUvYysrL3N0cmluZyIgMwoKIyAxICIvaG9tZS9BZG1pbmlzdHJhdG9yL2dj
Y3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2k2ODYt
cGMtY3lnd2luL2JpdHMvYysrY29uZmlnLmgiIDEgMwojIDM1ICIvaG9tZS9BZG1pbmlzdHJhdG9y
L2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2k2
ODYtcGMtY3lnd2luL2JpdHMvYysrY29uZmlnLmgiIDMKIyAxICIvaG9tZS9BZG1pbmlzdHJhdG9y
L2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2k2
ODYtcGMtY3lnd2luL2JpdHMvb3NfZGVmaW5lcy5oIiAxIDMKIyAzNiAiL2hvbWUvQWRtaW5pc3Ry
YXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2Mr
Ky9pNjg2LXBjLWN5Z3dpbi9iaXRzL2MrK2NvbmZpZy5oIiAyIDMKIyA0NiAiL2hvbWUvQWRtaW5p
c3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRl
L2MrKy9zdHJpbmciIDIgMwojIDEgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIv
Z2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdHJpbmdmd2QuaCIg
MSAzCiMgNDMgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2
LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdHJpbmdmd2QuaCIgMwoKCgpuYW1lc3Bh
Y2Ugc3RkCnsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiAgICBjbGFzcyBhbGxvY2F0b3I7
CgogIHRlbXBsYXRlPGNsYXNzIF9DaGFyVD4KICAgIHN0cnVjdCBjaGFyX3RyYWl0czsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0No
YXJUPiwKICAgICAgICAgICB0eXBlbmFtZSBfQWxsb2MgPSBhbGxvY2F0b3I8X0NoYXJUPiA+CiAg
ICBjbGFzcyBiYXNpY19zdHJpbmc7CgogIHRlbXBsYXRlPD4gc3RydWN0IGNoYXJfdHJhaXRzPGNo
YXI+OwoKICB0eXBlZGVmIGJhc2ljX3N0cmluZzxjaGFyPiBzdHJpbmc7CgoKCgoKCn0KIyA0NyAi
L2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2lu
LzMuNC9pbmNsdWRlL2MrKy9zdHJpbmciIDIgMwojIDEgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2Nj
dGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9j
aGFyX3RyYWl0cy5oIiAxIDMKIyA0NCAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xp
Yi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL2NoYXJfdHJhaXRz
LmgiIDMKCiMgMSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2
ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9jc3RyaW5nIiAxIDMKIyA0OCAiL2hvbWUvQWRt
aW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNs
dWRlL2MrKy9jc3RyaW5nIiAzCgojIDEgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvY3N0ZGRlZiIgMSAzCiMg
NDcgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5
Z3dpbi8zLjQvaW5jbHVkZS9jKysvY3N0ZGRlZiIgMwoKIyAxICIvaG9tZS9BZG1pbmlzdHJhdG9y
L2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvc3RkZGVm
LmgiIDEgMyA0CiMgMTUxICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1s
aWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvc3RkZGVmLmgiIDMgNAp0eXBlZGVmIGludCBw
dHJkaWZmX3Q7CiMgMjEzICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1s
aWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvc3RkZGVmLmgiIDMgNAp0eXBlZGVmIHVuc2ln
bmVkIGludCBzaXplX3Q7CiMgNDkgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIv
Z2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvY3N0ZGRlZiIgMiAzCgpuYW1l
c3BhY2Ugc3RkCnsKICB1c2luZyA6OnB0cmRpZmZfdDsKICB1c2luZyA6OnNpemVfdDsKfQojIDUw
ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3
aW4vMy40L2luY2x1ZGUvYysrL2NzdHJpbmciIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvc3RyaW5n
LmgiIDEgMyA0CiMgMTAgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CiMgMSAiL3Vzci9pbmNs
dWRlL19hbnNpLmgiIDEgMyA0CiMgMTUgIi91c3IvaW5jbHVkZS9fYW5zaS5oIiAzIDQKIyAxICIv
dXNyL2luY2x1ZGUvbmV3bGliLmgiIDEgMyA0CiMgMTYgIi91c3IvaW5jbHVkZS9fYW5zaS5oIiAy
IDMgNAojIDEgIi91c3IvaW5jbHVkZS9zeXMvY29uZmlnLmgiIDEgMyA0CgoKCiMgMSAiL3Vzci9p
bmNsdWRlL21hY2hpbmUvaWVlZWZwLmgiIDEgMyA0CiMgNSAiL3Vzci9pbmNsdWRlL3N5cy9jb25m
aWcuaCIgMiAzIDQKIyAxNyAiL3Vzci9pbmNsdWRlL19hbnNpLmgiIDIgMyA0CiMgMTEgIi91c3Iv
aW5jbHVkZS9zdHJpbmcuaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3JlZW50LmgiIDEg
MyA0CiMgOSAiL3Vzci9pbmNsdWRlL3N5cy9yZWVudC5oIiAzIDQKZXh0ZXJuICJDIiB7CgoKCgoj
IDEgIi91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmgiIDEgMyA0CiMgMTIgIi91c3IvaW5jbHVkZS9z
eXMvX3R5cGVzLmgiIDMgNAp0eXBlZGVmIGxvbmcgX29mZl90OwpfX2V4dGVuc2lvbl9fIHR5cGVk
ZWYgbG9uZyBsb25nIF9vZmY2NF90OwoKCnR5cGVkZWYgaW50IF9zc2l6ZV90OwoKCgoKCiMgMSAi
L2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2lu
LzMuNC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDM1NCAiL2hvbWUvQWRtaW5pc3RyYXRvci9n
Y2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL3N0ZGRlZi5o
IiAzIDQKdHlwZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90OwojIDIzICIvdXNyL2luY2x1ZGUvc3lz
L190eXBlcy5oIiAyIDMgNAoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19jb3VudDsKICB1bmlv
bgogIHsKICAgIHdpbnRfdCBfX3djaDsKICAgIHVuc2lnbmVkIGNoYXIgX193Y2hiWzRdOwogIH0g
X192YWx1ZTsKfSBfbWJzdGF0ZV90OwoKdHlwZWRlZiBpbnQgX2Zsb2NrX3Q7CiMgMTUgIi91c3Iv
aW5jbHVkZS9zeXMvcmVlbnQuaCIgMiAzIDQKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX1VM
b25nOwojIDQwICIvdXNyL2luY2x1ZGUvc3lzL3JlZW50LmgiIDMgNApzdHJ1Y3QgX0JpZ2ludAp7
CiAgc3RydWN0IF9CaWdpbnQgKl9uZXh0OwogIGludCBfaywgX21heHdkcywgX3NpZ24sIF93ZHM7
CiAgX19VTG9uZyBfeFsxXTsKfTsKCgpzdHJ1Y3QgX190bQp7CiAgaW50IF9fdG1fc2VjOwogIGlu
dCBfX3RtX21pbjsKICBpbnQgX190bV9ob3VyOwogIGludCBfX3RtX21kYXk7CiAgaW50IF9fdG1f
bW9uOwogIGludCBfX3RtX3llYXI7CiAgaW50IF9fdG1fd2RheTsKICBpbnQgX190bV95ZGF5Owog
IGludCBfX3RtX2lzZHN0Owp9OwojIDY4ICIvdXNyL2luY2x1ZGUvc3lzL3JlZW50LmgiIDMgNApz
dHJ1Y3QgX2F0ZXhpdCB7CiAgICAgICAgc3RydWN0IF9hdGV4aXQgKl9uZXh0OwogICAgICAgIGlu
dCBfaW5kOwogICAgICAgIHZvaWQgKCpfZm5zWzMyXSkodm9pZCk7CiAgICAgICAgdm9pZCAqX2Zu
YXJnc1szMl07CiAgICAgICAgX19VTG9uZyBfZm50eXBlczsKfTsKIyA5MSAiL3Vzci9pbmNsdWRl
L3N5cy9yZWVudC5oIiAzIDQKc3RydWN0IF9fc2J1ZiB7CiAgICAgICAgdW5zaWduZWQgY2hhciAq
X2Jhc2U7CiAgICAgICAgaW50IF9zaXplOwp9OwoKCgoKCgp0eXBlZGVmIGxvbmcgX2Zwb3NfdDsK
IyAxNTYgIi91c3IvaW5jbHVkZS9zeXMvcmVlbnQuaCIgMyA0CnN0cnVjdCBfX3NGSUxFIHsKICB1
bnNpZ25lZCBjaGFyICpfcDsKICBpbnQgX3I7CiAgaW50IF93OwogIHNob3J0IF9mbGFnczsKICBz
aG9ydCBfZmlsZTsKICBzdHJ1Y3QgX19zYnVmIF9iZjsKICBpbnQgX2xiZnNpemU7CgoKCgoKCiAg
dm9pZCAqIF9jb29raWU7CgogIF9zc2l6ZV90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpICgq
X3JlYWQpICh2b2lkICogX2Nvb2tpZSwgY2hhciAqX2J1ZiwgaW50IF9uKTsKICBfc3NpemVfdCBf
X2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSAoKl93cml0ZSkgKHZvaWQgKiBfY29va2llLCBjb25z
dCBjaGFyICpfYnVmLCBpbnQgX24pOwoKICBfZnBvc190IF9fYXR0cmlidXRlX18oKF9fY2RlY2xf
XykpICgqX3NlZWspICh2b2lkICogX2Nvb2tpZSwgX2Zwb3NfdCBfb2Zmc2V0LCBpbnQgX3doZW5j
ZSk7CiAgaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpICgqX2Nsb3NlKSAodm9pZCAqIF9j
b29raWUpOwoKCiAgc3RydWN0IF9fc2J1ZiBfdWI7CiAgdW5zaWduZWQgY2hhciAqX3VwOwogIGlu
dCBfdXI7CgoKICB1bnNpZ25lZCBjaGFyIF91YnVmWzNdOwogIHVuc2lnbmVkIGNoYXIgX25idWZb
MV07CgoKICBzdHJ1Y3QgX19zYnVmIF9sYjsKCgogIGludCBfYmxrc2l6ZTsKICBpbnQgX29mZnNl
dDsKCgogIHN0cnVjdCBfcmVlbnQgKl9kYXRhOwoKCgogIF9mbG9ja190IF9sb2NrOwoKfTsKIyAy
NDkgIi91c3IvaW5jbHVkZS9zeXMvcmVlbnQuaCIgMyA0CnR5cGVkZWYgc3RydWN0IF9fc0ZJTEUg
X19GSUxFOwoKCnN0cnVjdCBfZ2x1ZQp7CiAgc3RydWN0IF9nbHVlICpfbmV4dDsKICBpbnQgX25p
b2JzOwogIF9fRklMRSAqX2lvYnM7Cn07CiMgMjgwICIvdXNyL2luY2x1ZGUvc3lzL3JlZW50Lmgi
IDMgNApzdHJ1Y3QgX3JhbmQ0OCB7CiAgdW5zaWduZWQgc2hvcnQgX3NlZWRbM107CiAgdW5zaWdu
ZWQgc2hvcnQgX211bHRbM107CiAgdW5zaWduZWQgc2hvcnQgX2FkZDsKCgoKCn07CiMgNTMyICIv
dXNyL2luY2x1ZGUvc3lzL3JlZW50LmgiIDMgNApzdHJ1Y3QgX3JlZW50CnsKICBpbnQgX2Vycm5v
OwoKCgoKICBfX0ZJTEUgKl9zdGRpbiwgKl9zdGRvdXQsICpfc3RkZXJyOwoKICBpbnQgX2luYzsK
ICBjaGFyIF9lbWVyZ2VuY3lbMjVdOwoKICBpbnQgX2N1cnJlbnRfY2F0ZWdvcnk7CiAgY29uc3Qg
Y2hhciAqX2N1cnJlbnRfbG9jYWxlOwoKICBpbnQgX19zZGlkaW5pdDsKCiAgdm9pZCBfX2F0dHJp
YnV0ZV9fKChfX2NkZWNsX18pKSAoKl9fY2xlYW51cCkgKHN0cnVjdCBfcmVlbnQgKik7CgoKICBz
dHJ1Y3QgX0JpZ2ludCAqX3Jlc3VsdDsKICBpbnQgX3Jlc3VsdF9rOwogIHN0cnVjdCBfQmlnaW50
ICpfcDVzOwogIHN0cnVjdCBfQmlnaW50ICoqX2ZyZWVsaXN0OwoKCiAgaW50IF9jdnRsZW47CiAg
Y2hhciAqX2N2dGJ1ZjsKCiAgdW5pb24KICAgIHsKICAgICAgc3RydWN0CiAgICAgICAgewogICAg
ICAgICAgdW5zaWduZWQgaW50IF91bnVzZWRfcmFuZDsKICAgICAgICAgIGNoYXIgKiBfc3RydG9r
X2xhc3Q7CiAgICAgICAgICBjaGFyIF9hc2N0aW1lX2J1ZlsyNl07CiAgICAgICAgICBzdHJ1Y3Qg
X190bSBfbG9jYWx0aW1lX2J1ZjsKICAgICAgICAgIGludCBfZ2FtbWFfc2lnbmdhbTsKICAgICAg
ICAgIF9fZXh0ZW5zaW9uX18gdW5zaWduZWQgbG9uZyBsb25nIF9yYW5kX25leHQ7CiAgICAgICAg
ICBzdHJ1Y3QgX3JhbmQ0OCBfcjQ4OwogICAgICAgICAgX21ic3RhdGVfdCBfbWJsZW5fc3RhdGU7
CiAgICAgICAgICBfbWJzdGF0ZV90IF9tYnRvd2Nfc3RhdGU7CiAgICAgICAgICBfbWJzdGF0ZV90
IF93Y3RvbWJfc3RhdGU7CiAgICAgICAgICBjaGFyIF9sNjRhX2J1Zls4XTsKICAgICAgICAgIGNo
YXIgX3NpZ25hbF9idWZbMjRdOwogICAgICAgICAgaW50IF9nZXRkYXRlX2VycjsKICAgICAgICAg
IF9tYnN0YXRlX3QgX21icmxlbl9zdGF0ZTsKICAgICAgICAgIF9tYnN0YXRlX3QgX21icnRvd2Nf
c3RhdGU7CiAgICAgICAgICBfbWJzdGF0ZV90IF9tYnNydG93Y3Nfc3RhdGU7CiAgICAgICAgICBf
bWJzdGF0ZV90IF93Y3J0b21iX3N0YXRlOwogICAgICAgICAgX21ic3RhdGVfdCBfd2NzcnRvbWJz
X3N0YXRlOwogICAgICAgIH0gX3JlZW50OwoKCgogICAgICBzdHJ1Y3QKICAgICAgICB7CgogICAg
ICAgICAgdW5zaWduZWQgY2hhciAqIF9uZXh0ZlszMF07CiAgICAgICAgICB1bnNpZ25lZCBpbnQg
X25tYWxsb2NbMzBdOwogICAgICAgIH0gX3VudXNlZDsKICAgIH0gX25ldzsKCgogIHN0cnVjdCBf
YXRleGl0ICpfYXRleGl0OwogIHN0cnVjdCBfYXRleGl0IF9hdGV4aXQwOwoKCiAgdm9pZCAoKioo
X3NpZ19mdW5jKSkoaW50KTsKCgoKCiAgc3RydWN0IF9nbHVlIF9fc2dsdWU7CiAgX19GSUxFIF9f
c2ZbM107Cn07CiMgNzI4ICIvdXNyL2luY2x1ZGUvc3lzL3JlZW50LmgiIDMgNApleHRlcm4gc3Ry
dWN0IF9yZWVudCAqX2ltcHVyZV9wdHIgOwoKdm9pZCBfcmVjbGFpbV9yZWVudCAoc3RydWN0IF9y
ZWVudCAqKTsKIyA3NDYgIi91c3IvaW5jbHVkZS9zeXMvcmVlbnQuaCIgMyA0Cn0KIyAxMiAiL3Vz
ci9pbmNsdWRlL3N0cmluZy5oIiAyIDMgNAoKCiMgMSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0
ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL3N0ZGRlZi5oIiAx
IDMgNAojIDE1ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMyA0CgoKCgoKZXh0ZXJuICJDIiB7
Cgp2b2lkICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgbWVtY2hyIChjb25zdCB2b2lkICos
IGludCwgc2l6ZV90KTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIG1lbWNtcCAoY29u
c3Qgdm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7CnZvaWQgKiBfX2F0dHJpYnV0ZV9fKChf
X2NkZWNsX18pKSBtZW1jcHkgKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwp2b2lkICog
X19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgbWVtbW92ZSAodm9pZCAqLCBjb25zdCB2b2lkICos
IHNpemVfdCk7CnZvaWQgKiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBtZW1zZXQgKHZvaWQg
KiwgaW50LCBzaXplX3QpOwpjaGFyICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzdHJjYXQg
KGNoYXIgKiwgY29uc3QgY2hhciAqKTsKY2hhciAqX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkg
c3RyY2hyIChjb25zdCBjaGFyICosIGludCk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18p
KSBzdHJjbXAgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKaW50IF9fYXR0cmlidXRlX18o
KF9fY2RlY2xfXykpIHN0cmNvbGwgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKY2hhciAq
X19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3RyY3B5IChjaGFyICosIGNvbnN0IGNoYXIgKik7
CnNpemVfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzdHJjc3BuIChjb25zdCBjaGFyICos
IGNvbnN0IGNoYXIgKik7CmNoYXIgKl9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHN0cmVycm9y
IChpbnQpOwpzaXplX3QgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3RybGVuIChjb25zdCBj
aGFyICopOwpjaGFyICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzdHJuY2F0IChjaGFyICos
IGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHN0
cm5jbXAgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwpjaGFyICpfX2F0dHJp
YnV0ZV9fKChfX2NkZWNsX18pKSBzdHJuY3B5IChjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90
KTsKY2hhciAqX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3RycGJyayAoY29uc3QgY2hhciAq
LCBjb25zdCBjaGFyICopOwpjaGFyICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzdHJyY2hy
IChjb25zdCBjaGFyICosIGludCk7CnNpemVfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBz
dHJzcG4gKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKY2hhciAqX19hdHRyaWJ1dGVfXygo
X19jZGVjbF9fKSkgc3Ryc3RyIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CgoKY2hhciAq
X19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3RydG9rIChjaGFyICosIGNvbnN0IGNoYXIgKik7
CgoKc2l6ZV90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHN0cnhmcm0gKGNoYXIgKiwgY29u
c3QgY2hhciAqLCBzaXplX3QpOwoKCmNoYXIgKl9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHN0
cnRva19yIChjaGFyICosIGNvbnN0IGNoYXIgKiwgY2hhciAqKik7CgppbnQgX19hdHRyaWJ1dGVf
XygoX19jZGVjbF9fKSkgYmNtcCAoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7
CnZvaWQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgYmNvcHkgKGNvbnN0IHZvaWQgKiwgdm9p
ZCAqLCBzaXplX3QpOwp2b2lkIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGJ6ZXJvICh2b2lk
ICosIHNpemVfdCk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBmZnMgKGludCk7CmNo
YXIgKl9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGluZGV4IChjb25zdCBjaGFyICosIGludCk7
CnZvaWQgKiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBtZW1jY3B5ICh2b2lkICosIGNvbnN0
IHZvaWQgKiwgaW50LCBzaXplX3QpOwp2b2lkICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkg
bWVtcGNweSAodm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7CmNoYXIgKl9fYXR0cmlidXRl
X18oKF9fY2RlY2xfXykpIHJpbmRleCAoY29uc3QgY2hhciAqLCBpbnQpOwppbnQgX19hdHRyaWJ1
dGVfXygoX19jZGVjbF9fKSkgc3RyY2FzZWNtcCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICop
OwpjaGFyICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzdHJkdXAgKGNvbnN0IGNoYXIgKik7
CmNoYXIgKl9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9zdHJkdXBfciAoc3RydWN0IF9yZWVu
dCAqLCBjb25zdCBjaGFyICopOwpjaGFyICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzdHJu
ZHVwIChjb25zdCBjaGFyICosIHNpemVfdCk7CmNoYXIgKl9fYXR0cmlidXRlX18oKF9fY2RlY2xf
XykpIF9zdHJuZHVwX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwpj
aGFyICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzdHJlcnJvcl9yIChpbnQsIGNoYXIgKiwg
c2l6ZV90KTsKc2l6ZV90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHN0cmxjYXQgKGNoYXIg
KiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwpzaXplX3QgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9f
KSkgc3RybGNweSAoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CmludCBfX2F0dHJpYnV0
ZV9fKChfX2NkZWNsX18pKSBzdHJuY2FzZWNtcCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICos
IHNpemVfdCk7CnNpemVfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzdHJubGVuIChjb25z
dCBjaGFyICosIHNpemVfdCk7CmNoYXIgKl9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHN0cnNl
cCAoY2hhciAqKiwgY29uc3QgY2hhciAqKTsKY2hhciAqX19hdHRyaWJ1dGVfXygoX19jZGVjbF9f
KSkgc3RybHdyIChjaGFyICopOwpjaGFyICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzdHJ1
cHIgKGNoYXIgKik7CgoKY29uc3QgY2hhciAqX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3Ry
c2lnbmFsIChpbnQgX19zaWdubyk7CgppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3Ry
dG9zaWdubyAoY29uc3QgY2hhciAqX19uYW1lKTsKIyA5OCAiL3Vzci9pbmNsdWRlL3N0cmluZy5o
IiAzIDQKfQojIDUyICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIv
aTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2NzdHJpbmciIDIgMwojIDc3ICIvaG9tZS9B
ZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2lu
Y2x1ZGUvYysrL2NzdHJpbmciIDMKbmFtZXNwYWNlIHN0ZAp7CiAgdXNpbmcgOjptZW1jcHk7CiAg
dXNpbmcgOjptZW1tb3ZlOwogIHVzaW5nIDo6c3RyY3B5OwogIHVzaW5nIDo6c3RybmNweTsKICB1
c2luZyA6OnN0cmNhdDsKICB1c2luZyA6OnN0cm5jYXQ7CiAgdXNpbmcgOjptZW1jbXA7CiAgdXNp
bmcgOjpzdHJjbXA7CiAgdXNpbmcgOjpzdHJjb2xsOwogIHVzaW5nIDo6c3RybmNtcDsKICB1c2lu
ZyA6OnN0cnhmcm07CiAgdXNpbmcgOjpzdHJjc3BuOwogIHVzaW5nIDo6c3Ryc3BuOwogIHVzaW5n
IDo6c3RydG9rOwogIHVzaW5nIDo6bWVtc2V0OwogIHVzaW5nIDo6c3RyZXJyb3I7CiAgdXNpbmcg
OjpzdHJsZW47CgogIHVzaW5nIDo6bWVtY2hyOwoKICBpbmxpbmUgdm9pZCoKICBtZW1jaHIodm9p
ZCogX19wLCBpbnQgX19jLCBzaXplX3QgX19uKQogIHsgcmV0dXJuIG1lbWNocihjb25zdF9jYXN0
PGNvbnN0IHZvaWQqPihfX3ApLCBfX2MsIF9fbik7IH0KCiAgdXNpbmcgOjpzdHJjaHI7CgogIGlu
bGluZSBjaGFyKgogIHN0cmNocihjaGFyKiBfX3MxLCBpbnQgX19uKQogIHsgcmV0dXJuIF9fYnVp
bHRpbl9zdHJjaHIoY29uc3RfY2FzdDxjb25zdCBjaGFyKj4oX19zMSksIF9fbik7IH0KCiAgdXNp
bmcgOjpzdHJwYnJrOwoKICBpbmxpbmUgY2hhcioKICBzdHJwYnJrKGNoYXIqIF9fczEsIGNvbnN0
IGNoYXIqIF9fczIpCiAgeyByZXR1cm4gX19idWlsdGluX3N0cnBicmsoY29uc3RfY2FzdDxjb25z
dCBjaGFyKj4oX19zMSksIF9fczIpOyB9CgogIHVzaW5nIDo6c3RycmNocjsKCiAgaW5saW5lIGNo
YXIqCiAgc3RycmNocihjaGFyKiBfX3MxLCBpbnQgX19uKQogIHsgcmV0dXJuIF9fYnVpbHRpbl9z
dHJyY2hyKGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcio+KF9fczEpLCBfX24pOyB9CgogIHVzaW5nIDo6
c3Ryc3RyOwoKICBpbmxpbmUgY2hhcioKICBzdHJzdHIoY2hhciogX19zMSwgY29uc3QgY2hhciog
X19zMikKICB7IHJldHVybiBfX2J1aWx0aW5fc3Ryc3RyKGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcio+
KF9fczEpLCBfX3MyKTsgfQp9CiMgNDYgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9jaGFyX3RyYWl0
cy5oIiAyIDMKIyAxICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIv
aTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvZnBvcy5oIiAxIDMKIyA0MyAiL2hv
bWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMu
NC9pbmNsdWRlL2MrKy9iaXRzL2Zwb3MuaCIgMwoKIyAxICIvaG9tZS9BZG1pbmlzdHJhdG9yL2dj
Y3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2k2ODYt
cGMtY3lnd2luL2JpdHMvYysraW8uaCIgMSAzCiMgMzUgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2Nj
dGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvaTY4Ni1w
Yy1jeWd3aW4vYml0cy9jKytpby5oIiAzCiMgMSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0
aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9jc3RkaW8iIDEg
MwojIDQ4ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1w
Yy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2NzdGRpbyIgMwoKCgoKIyAxICIvdXNyL2luY2x1ZGUv
c3RkaW8uaCIgMSAzIDQKIyAzNCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAojIDEgIi9ob21l
L0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAzNSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0
CgoKIyAxICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1w
Yy1jeWd3aW4vMy40L2luY2x1ZGUvc3RkYXJnLmgiIDEgMyA0CiMgNDMgIi9ob21lL0FkbWluaXN0
cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9z
dGRhcmcuaCIgMyA0CnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMg
MzggIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAojIDQ2ICIvdXNyL2luY2x1ZGUvc3RkaW8u
aCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMgNAojIDI0ICIvdXNyL2lu
Y2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVk
ZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CgoKCgoKdHlwZWRlZiBpbnQgX19pbnQz
Ml90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQzMl90OwoKCgoKCgpfX2V4dGVuc2lvbl9f
IHR5cGVkZWYgbG9uZyBsb25nIF9faW50NjRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgbG9uZyBfX3VpbnQ2NF90OwojIDU5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgi
IDMgNAojIDEgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2
LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyA2MCAiL3Vzci9pbmNsdWRl
L3N5cy90eXBlcy5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9tYWNoaW5lL3R5cGVzLmgiIDEg
MyA0CiMgMzYgIi91c3IvaW5jbHVkZS9tYWNoaW5lL3R5cGVzLmgiIDMgNAp0eXBlZGVmIGxvbmcg
aW50IF9fb2ZmX3Q7CnR5cGVkZWYgaW50IF9fcGlkX3Q7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYg
bG9uZyBsb25nIGludCBfX2xvZmZfdDsKIyA2MSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAy
IDMgNAojIDgyICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVk
IGNoYXIgdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVfc2hvcnQ7CnR5cGVkZWYgdW5z
aWduZWQgaW50IHVfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdV9sb25nOwoKCgp0eXBlZGVm
IHVuc2lnbmVkIHNob3J0IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKCgoKdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGNsb2NrX3Q7CgoKCgp0eXBlZGVmIGxvbmcgdGltZV90OwoKCgoK
c3RydWN0IHRpbWVzcGVjIHsKICB0aW1lX3QgdHZfc2VjOwogIGxvbmcgdHZfbnNlYzsKfTsKCnN0
cnVjdCBpdGltZXJzcGVjIHsKICBzdHJ1Y3QgdGltZXNwZWMgaXRfaW50ZXJ2YWw7CiAgc3RydWN0
IHRpbWVzcGVjIGl0X3ZhbHVlOwp9OwoKCnR5cGVkZWYgbG9uZyBkYWRkcl90Owp0eXBlZGVmIGNo
YXIgKiBjYWRkcl90OwoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbm9fdDsKIyAxMzAgIi91c3Iv
aW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB2bV9vZmZzZXRf
dDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHZtX3NpemVfdDsKCgoKdHlwZWRlZiBjaGFyIGludDhf
dDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVfaW50OF90Owp0eXBlZGVmIHNob3J0IGludDE2X3Q7
CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdV9pbnQxNl90Owp0eXBlZGVmIGludCBpbnQzMl90Owp0
eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDMyX3Q7CnR5cGVkZWYgbG9uZyBsb25nIGludDY0X3Q7
CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVfaW50NjRfdDsKdHlwZWRlZiBpbnQzMl90IHJl
Z2lzdGVyX3Q7CiMgMTY5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIGlu
dCBwaWRfdDsKdHlwZWRlZiBsb25nIGtleV90Owp0eXBlZGVmIF9zc2l6ZV90IHNzaXplX3Q7CgoK
dHlwZWRlZiBjaGFyICogYWRkcl90Owp0eXBlZGVmIGludCBtb2RlX3Q7CiMgMTg4ICIvdXNyL2lu
Y2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IG5saW5rX3Q7CiMg
MjEwICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIGxvbmcgZmRfbWFzazsK
CgoKCgoKCnR5cGVkZWYgc3RydWN0IF90eXBlc19mZF9zZXQgewogICAgICAgIGZkX21hc2sgZmRz
X2JpdHNbKCgoNjQpKygoKHNpemVvZiAoZmRfbWFzaykgKiA4KSktMSkpLygoc2l6ZW9mIChmZF9t
YXNrKSAqIDgpKSldOwp9IF90eXBlc19mZF9zZXQ7CiMgMjQ2ICIvdXNyL2luY2x1ZGUvc3lzL3R5
cGVzLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgY2xvY2tpZF90OwoKCgoKdHlwZWRlZiB1
bnNpZ25lZCBsb25nIHRpbWVyX3Q7CgoKCgp0eXBlZGVmIGxvbmcgdXNlY29uZHNfdDsKCgojIDEg
Ii91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZXMuaCIgMSAzIDQKIyAyNSAiL3Vzci9pbmNsdWRlL3N5
cy9mZWF0dXJlcy5oIiAzIDQKZXh0ZXJuICJDIiB7CiMgOTMgIi91c3IvaW5jbHVkZS9zeXMvZmVh
dHVyZXMuaCIgMyA0Cn0KIyAyNjAgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzIDQKIyAz
NjQgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2N5Z3dp
bi90eXBlcy5oIiAxIDMgNAojIDEzICIvdXNyL2luY2x1ZGUvY3lnd2luL3R5cGVzLmgiIDMgNApl
eHRlcm4gIkMiCnsKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDEgMyA0
CiMgMjEgIi91c3IvaW5jbHVkZS9jeWd3aW4vdHlwZXMuaCIgMiAzIDQKCnR5cGVkZWYgc3RydWN0
IHRpbWVzcGVjIHRpbWVzcGVjX3QsIHRpbWVzdHJ1Y190OwoKdHlwZWRlZiBsb25nIF9fb2ZmMzJf
dDsKdHlwZWRlZiBsb25nIGxvbmcgX19vZmY2NF90OwoKCgp0eXBlZGVmIF9fb2ZmMzJfdCBvZmZf
dDsKCgp0eXBlZGVmIHNob3J0IF9fZGV2MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fZGV2
MzJfdDsKCgoKdHlwZWRlZiBfX2RldjE2X3QgZGV2X3Q7CgoKdHlwZWRlZiBsb25nIGJsa3NpemVf
dDsKCnR5cGVkZWYgbG9uZyBfX2Jsa2NudDMyX3Q7CnR5cGVkZWYgbG9uZyBsb25nIF9fYmxrY250
NjRfdDsKCgoKdHlwZWRlZiBfX2Jsa2NudDMyX3QgYmxrY250X3Q7CgoKdHlwZWRlZiB1bnNpZ25l
ZCBzaG9ydCBfX3VpZDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19naWQxNl90Owp0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgX191aWQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX19naWQz
Ml90OwoKCgoKdHlwZWRlZiBfX3VpZDE2X3QgdWlkX3Q7CnR5cGVkZWYgX19naWQxNl90IGdpZF90
OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX3Qge2NoYXIgX19kdW1teTt9ICpwdGhyZWFk
X3Q7CnR5cGVkZWYgc3RydWN0IF9fcHRocmVhZF9tdXRleF90IHtjaGFyIF9fZHVtbXk7fSAqcHRo
cmVhZF9tdXRleF90OwoKdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX2tleV90IHtjaGFyIF9fZHVt
bXk7fSAqcHRocmVhZF9rZXlfdDsKdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX2F0dHJfdCB7Y2hh
ciBfX2R1bW15O30gKnB0aHJlYWRfYXR0cl90Owp0eXBlZGVmIHN0cnVjdCBfX3B0aHJlYWRfbXV0
ZXhhdHRyX3Qge2NoYXIgX19kdW1teTt9ICpwdGhyZWFkX211dGV4YXR0cl90Owp0eXBlZGVmIHN0
cnVjdCBfX3B0aHJlYWRfY29uZGF0dHJfdCB7Y2hhciBfX2R1bW15O30gKnB0aHJlYWRfY29uZGF0
dHJfdDsKdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX2NvbmRfdCB7Y2hhciBfX2R1bW15O30gKnB0
aHJlYWRfY29uZF90OwoKCnR5cGVkZWYgc3RydWN0CnsKICBwdGhyZWFkX211dGV4X3QgbXV0ZXg7
CiAgaW50IHN0YXRlOwp9CnB0aHJlYWRfb25jZV90Owp0eXBlZGVmIHN0cnVjdCBfX3B0aHJlYWRf
cndsb2NrX3Qge2NoYXIgX19kdW1teTt9ICpwdGhyZWFkX3J3bG9ja190Owp0eXBlZGVmIHN0cnVj
dCBfX3B0aHJlYWRfcndsb2NrYXR0cl90IHtjaGFyIF9fZHVtbXk7fSAqcHRocmVhZF9yd2xvY2th
dHRyX3Q7CiMgMTA0ICIvdXNyL2luY2x1ZGUvY3lnd2luL3R5cGVzLmgiIDMgNAp9CiMgMzY1ICIv
dXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CiMgNDcgIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAyIDMgNAoKZXh0ZXJuICJDIiB7Cgp0eXBlZGVmIF9mcG9zX3QgZnBvc190Owp0eXBlZGVmIF9f
RklMRSBGSUxFOwoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zdGRpby5oIiAxIDMgNAojIDU4
ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKIyAxNjIgIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAzIDQKRklMRSAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHRtcGZpbGUgKHZvaWQpOwpj
aGFyICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgdG1wbmFtIChjaGFyICopOwppbnQgX19h
dHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZmNsb3NlIChGSUxFICopOwppbnQgX19hdHRyaWJ1dGVf
XygoX19jZGVjbF9fKSkgZmZsdXNoIChGSUxFICopOwpGSUxFICogX19hdHRyaWJ1dGVfXygoX19j
ZGVjbF9fKSkgZnJlb3BlbiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIEZJTEUgKik7CnZv
aWQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc2V0YnVmIChGSUxFICosIGNoYXIgKik7Cmlu
dCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzZXR2YnVmIChGSUxFICosIGNoYXIgKiwgaW50
LCBzaXplX3QpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZnByaW50ZiAoRklMRSAq
LCBjb25zdCBjaGFyICosIC4uLik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBmc2Nh
bmYgKEZJTEUgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVj
bF9fKSkgcHJpbnRmIChjb25zdCBjaGFyICosIC4uLik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2Nk
ZWNsX18pKSBzY2FuZiAoY29uc3QgY2hhciAqLCAuLi4pOwppbnQgX19hdHRyaWJ1dGVfXygoX19j
ZGVjbF9fKSkgc3NjYW5mIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IF9f
YXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHZmcHJpbnRmIChGSUxFICosIGNvbnN0IGNoYXIgKiwg
X19nbnVjX3ZhX2xpc3QpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgdnByaW50ZiAo
Y29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNs
X18pKSB2c3ByaW50ZiAoY2hhciAqLCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKaW50
IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGZnZXRjIChGSUxFICopOwpjaGFyICogX19hdHRy
aWJ1dGVfXygoX19jZGVjbF9fKSkgZmdldHMgKGNoYXIgKiwgaW50LCBGSUxFICopOwppbnQgX19h
dHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZnB1dGMgKGludCwgRklMRSAqKTsKaW50IF9fYXR0cmli
dXRlX18oKF9fY2RlY2xfXykpIGZwdXRzIChjb25zdCBjaGFyICosIEZJTEUgKik7CmludCBfX2F0
dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBnZXRjIChGSUxFICopOwppbnQgX19hdHRyaWJ1dGVfXygo
X19jZGVjbF9fKSkgZ2V0Y2hhciAodm9pZCk7CmNoYXIgKiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNs
X18pKSBnZXRzIChjaGFyICopOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgcHV0YyAo
aW50LCBGSUxFICopOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgcHV0Y2hhciAoaW50
KTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHB1dHMgKGNvbnN0IGNoYXIgKik7Cmlu
dCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSB1bmdldGMgKGludCwgRklMRSAqKTsKc2l6ZV90
IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGZyZWFkICh2b2lkICosIHNpemVfdCBfc2l6ZSwg
c2l6ZV90IF9uLCBGSUxFICopOwpzaXplX3QgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZndy
aXRlIChjb25zdCB2b2lkICogLCBzaXplX3QgX3NpemUsIHNpemVfdCBfbiwgRklMRSAqKTsKaW50
IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGZnZXRwb3MgKEZJTEUgKiwgZnBvc190ICopOwpp
bnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZnNlZWsgKEZJTEUgKiwgbG9uZywgaW50KTsK
aW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGZzZXRwb3MgKEZJTEUgKiwgY29uc3QgZnBv
c190ICopOwpsb25nIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGZ0ZWxsICggRklMRSAqKTsK
dm9pZCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSByZXdpbmQgKEZJTEUgKik7CnZvaWQgX19h
dHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgY2xlYXJlcnIgKEZJTEUgKik7CmludCBfX2F0dHJpYnV0
ZV9fKChfX2NkZWNsX18pKSBmZW9mIChGSUxFICopOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVj
bF9fKSkgZmVycm9yIChGSUxFICopOwp2b2lkIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHBl
cnJvciAoY29uc3QgY2hhciAqKTsKCkZJTEUgKiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBm
b3BlbiAoY29uc3QgY2hhciAqX25hbWUsIGNvbnN0IGNoYXIgKl90eXBlKTsKaW50IF9fYXR0cmli
dXRlX18oKF9fY2RlY2xfXykpIHNwcmludGYgKGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwpp
bnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgcmVtb3ZlIChjb25zdCBjaGFyICopOwppbnQg
X19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgcmVuYW1lIChjb25zdCBjaGFyICosIGNvbnN0IGNo
YXIgKik7CgoKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGFzcHJpbnRmIChjaGFyICoq
LCBjb25zdCBjaGFyICosIC4uLik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBmc2Vl
a28gKEZJTEUgKiwgb2ZmX3QsIGludCk7Cm9mZl90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykp
IGZ0ZWxsbyAoIEZJTEUgKik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSB2Zmlwcmlu
dGYgKEZJTEUgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmludCBfX2F0dHJpYnV0
ZV9fKChfX2NkZWNsX18pKSBpcHJpbnRmIChjb25zdCBjaGFyICosIC4uLik7CmludCBfX2F0dHJp
YnV0ZV9fKChfX2NkZWNsX18pKSBmaXByaW50ZiAoRklMRSAqLCBjb25zdCBjaGFyICosIC4uLik7
CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzaXByaW50ZiAoY2hhciAqLCBjb25zdCBj
aGFyICosIC4uLik7CmNoYXIgKiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSB0ZW1wbmFtIChj
b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18p
KSB2YXNwcmludGYgKGNoYXIgKiosIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwppbnQg
X19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgdnNucHJpbnRmIChjaGFyICosIHNpemVfdCwgY29u
c3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18p
KSB2ZnNjYW5mIChGSUxFICosIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwppbnQgX19h
dHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgdnNjYW5mIChjb25zdCBjaGFyICosIF9fZ251Y192YV9s
aXN0KTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHZzc2NhbmYgKGNvbnN0IGNoYXIg
KiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CgppbnQgX19hdHRyaWJ1dGVfXygoX19j
ZGVjbF9fKSkgZmNsb3NlYWxsICh2b2lkKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykp
IHNucHJpbnRmIChjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCAuLi4pOwojIDIzMSAiL3Vz
ci9pbmNsdWRlL3N0ZGlvLmgiIDMgNApGSUxFICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkg
ZmRvcGVuIChpbnQsIGNvbnN0IGNoYXIgKik7CgppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9f
KSkgZmlsZW5vIChGSUxFICopOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZ2V0dyAo
RklMRSAqKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHBjbG9zZSAoRklMRSAqKTsK
RklMRSAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHBvcGVuIChjb25zdCBjaGFyICosIGNv
bnN0IGNoYXIgKik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBwdXR3IChpbnQsIEZJ
TEUgKik7CnZvaWQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc2V0YnVmZmVyIChGSUxFICos
IGNoYXIgKiwgaW50KTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHNldGxpbmVidWYg
KEZJTEUgKik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBnZXRjX3VubG9ja2VkIChG
SUxFICopOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZ2V0Y2hhcl91bmxvY2tlZCAo
dm9pZCk7CnZvaWQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZmxvY2tmaWxlIChGSUxFICop
OwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZnRyeWxvY2tmaWxlIChGSUxFICopOwp2
b2lkIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGZ1bmxvY2tmaWxlIChGSUxFICopOwppbnQg
X19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgcHV0Y191bmxvY2tlZCAoaW50LCBGSUxFICopOwpp
bnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgcHV0Y2hhcl91bmxvY2tlZCAoaW50KTsKCgoK
CgoKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9hc3ByaW50Zl9yIChzdHJ1Y3QgX3Jl
ZW50ICosIGNoYXIgKiosIGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IF9fYXR0cmlidXRlX18oKF9f
Y2RlY2xfXykpIF9mY2xvc2VhbGxfciAoc3RydWN0IF9yZWVudCAqKTsKRklMRSAqIF9fYXR0cmli
dXRlX18oKF9fY2RlY2xfXykpIF9mZG9wZW5fciAoc3RydWN0IF9yZWVudCAqLCBpbnQsIGNvbnN0
IGNoYXIgKik7CkZJTEUgKiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfZm9wZW5fciAoc3Ry
dWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmludCBfX2F0dHJpYnV0
ZV9fKChfX2NkZWNsX18pKSBfZnNjYW5mX3IgKHN0cnVjdCBfcmVlbnQgKiwgRklMRSAqLCBjb25z
dCBjaGFyICosIC4uLik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfZ2V0Y2hhcl9y
IChzdHJ1Y3QgX3JlZW50ICopOwpjaGFyICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX2dl
dHNfciAoc3RydWN0IF9yZWVudCAqLCBjaGFyICopOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVj
bF9fKSkgX2lwcmludGZfciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICosIC4uLik7Cmlu
dCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfbWtzdGVtcF9yIChzdHJ1Y3QgX3JlZW50ICos
IGNoYXIgKik7CmNoYXIgKiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfbWt0ZW1wX3IgKHN0
cnVjdCBfcmVlbnQgKiwgY2hhciAqKTsKdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBf
cGVycm9yX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqKTsKaW50IF9fYXR0cmlidXRl
X18oKF9fY2RlY2xfXykpIF9wcmludGZfciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICos
IC4uLik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfcHV0Y2hhcl9yIChzdHJ1Y3Qg
X3JlZW50ICosIGludCk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfcHV0c19yIChz
dHJ1Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIgKik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNs
X18pKSBfcmVtb3ZlX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqKTsKaW50IF9fYXR0
cmlidXRlX18oKF9fY2RlY2xfXykpIF9yZW5hbWVfciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBj
aGFyICpfb2xkLCBjb25zdCBjaGFyICpfbmV3KTsKCmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNs
X18pKSBfc2NhbmZfciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICosIC4uLik7CmludCBf
X2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfc3ByaW50Zl9yIChzdHJ1Y3QgX3JlZW50ICosIGNo
YXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkg
X3NucHJpbnRmX3IgKHN0cnVjdCBfcmVlbnQgKiwgY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIg
KiwgLi4uKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9zc2NhbmZfciAoc3RydWN0
IF9yZWVudCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKY2hhciAqIF9fYXR0
cmlidXRlX18oKF9fY2RlY2xfXykpIF90ZW1wbmFtX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3Qg
Y2hhciAqLCBjb25zdCBjaGFyICopOwpGSUxFICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkg
X3RtcGZpbGVfciAoc3RydWN0IF9yZWVudCAqKTsKY2hhciAqIF9fYXR0cmlidXRlX18oKF9fY2Rl
Y2xfXykpIF90bXBuYW1fciAoc3RydWN0IF9yZWVudCAqLCBjaGFyICopOwppbnQgX19hdHRyaWJ1
dGVfXygoX19jZGVjbF9fKSkgX3Zhc3ByaW50Zl9yIChzdHJ1Y3QgX3JlZW50ICosIGNoYXIgKios
IGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVj
bF9fKSkgX3ZmcHJpbnRmX3IgKHN0cnVjdCBfcmVlbnQgKiwgRklMRSAqLCBjb25zdCBjaGFyICos
IF9fZ251Y192YV9saXN0KTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF92cHJpbnRm
X3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmludCBf
X2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfdnNwcmludGZfciAoc3RydWN0IF9yZWVudCAqLCBj
aGFyICosIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwppbnQgX19hdHRyaWJ1dGVfXygo
X19jZGVjbF9fKSkgX3ZzbnByaW50Zl9yIChzdHJ1Y3QgX3JlZW50ICosIGNoYXIgKiwgc2l6ZV90
LCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2Rl
Y2xfXykpIF92ZnNjYW5mX3IgKHN0cnVjdCBfcmVlbnQgKiwgRklMRSAqLCBjb25zdCBjaGFyICos
IF9fZ251Y192YV9saXN0KTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF92c2NhbmZf
ciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKaW50IF9f
YXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF92c3NjYW5mX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29u
c3QgY2hhciAqLCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKCnNzaXplX3QgX19hdHRy
aWJ1dGVfXygoX19jZGVjbF9fKSkgX19nZXRkZWxpbSAoY2hhciAqKiwgc2l6ZV90ICosIGludCwg
RklMRSAqKTsKc3NpemVfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfX2dldGxpbmUgKGNo
YXIgKiosIHNpemVfdCAqLCBGSUxFICopOwojIDMwOSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMg
NAppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX19zcmdldCAoRklMRSAqKTsKaW50IF9f
YXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9fc3didWYgKGludCwgRklMRSAqKTsKCgoKCgoKRklM
RSAqX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZnVub3BlbiAoY29uc3Qgdm9pZCAqIF9jb29r
aWUsIGludCAoKnJlYWRmbikodm9pZCAqIF9jb29raWUsIGNoYXIgKl9idWYsIGludCBfbiksIGlu
dCAoKndyaXRlZm4pKHZvaWQgKiBfY29va2llLCBjb25zdCBjaGFyICpfYnVmLCBpbnQgX24pLCBm
cG9zX3QgKCpzZWVrZm4pKHZvaWQgKiBfY29va2llLCBmcG9zX3QgX29mZiwgaW50IF93aGVuY2Up
LCBpbnQgKCpjbG9zZWZuKSh2b2lkICogX2Nvb2tpZSkpOwojIDMzNCAiL3Vzci9pbmNsdWRlL3N0
ZGlvLmgiIDMgNApzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19zZ2V0YyhGSUxFICpfX3ApCiAgewog
ICAgaW50IF9fYyA9ICgtLShfX3ApLT5fciA8IDAgPyBfX3NyZ2V0KF9fcCkgOiAoaW50KSgqKF9f
cCktPl9wKyspKTsKICAgIGlmICgoX19wLT5fZmxhZ3MgJiAweDQwMDApICYmIChfX2MgPT0gJ1xy
JykpCiAgICAgIHsKICAgICAgaW50IF9fYzIgPSAoLS0oX19wKS0+X3IgPCAwID8gX19zcmdldChf
X3ApIDogKGludCkoKihfX3ApLT5fcCsrKSk7CiAgICAgIGlmIChfX2MyID09ICdcbicpCiAgICAg
ICAgX19jID0gX19jMjsKICAgICAgZWxzZQogICAgICAgIHVuZ2V0YyhfX2MyLCBfX3ApOwogICAg
ICB9CiAgICByZXR1cm4gX19jOwogIH0KIyA0MTYgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQK
fQojIDUzICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1w
Yy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2NzdGRpbyIgMiAzCiMgOTcgIi9ob21lL0FkbWluaXN0
cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9j
KysvY3N0ZGlvIiAzCm5hbWVzcGFjZSBzdGQKewogIHVzaW5nIDo6RklMRTsKICB1c2luZyA6OmZw
b3NfdDsKCiAgdXNpbmcgOjpjbGVhcmVycjsKICB1c2luZyA6OmZjbG9zZTsKICB1c2luZyA6OmZl
b2Y7CiAgdXNpbmcgOjpmZXJyb3I7CiAgdXNpbmcgOjpmZmx1c2g7CiAgdXNpbmcgOjpmZ2V0YzsK
ICB1c2luZyA6OmZnZXRwb3M7CiAgdXNpbmcgOjpmZ2V0czsKICB1c2luZyA6OmZvcGVuOwogIHVz
aW5nIDo6ZnByaW50ZjsKICB1c2luZyA6OmZwdXRjOwogIHVzaW5nIDo6ZnB1dHM7CiAgdXNpbmcg
OjpmcmVhZDsKICB1c2luZyA6OmZyZW9wZW47CiAgdXNpbmcgOjpmc2NhbmY7CiAgdXNpbmcgOjpm
c2VlazsKICB1c2luZyA6OmZzZXRwb3M7CiAgdXNpbmcgOjpmdGVsbDsKICB1c2luZyA6OmZ3cml0
ZTsKICB1c2luZyA6OmdldGM7CiAgdXNpbmcgOjpnZXRjaGFyOwogIHVzaW5nIDo6Z2V0czsKICB1
c2luZyA6OnBlcnJvcjsKICB1c2luZyA6OnByaW50ZjsKICB1c2luZyA6OnB1dGM7CiAgdXNpbmcg
OjpwdXRjaGFyOwogIHVzaW5nIDo6cHV0czsKICB1c2luZyA6OnJlbW92ZTsKICB1c2luZyA6OnJl
bmFtZTsKICB1c2luZyA6OnJld2luZDsKICB1c2luZyA6OnNjYW5mOwogIHVzaW5nIDo6c2V0YnVm
OwogIHVzaW5nIDo6c2V0dmJ1ZjsKICB1c2luZyA6OnNwcmludGY7CiAgdXNpbmcgOjpzc2NhbmY7
CiAgdXNpbmcgOjp0bXBmaWxlOwogIHVzaW5nIDo6dG1wbmFtOwogIHVzaW5nIDo6dW5nZXRjOwog
IHVzaW5nIDo6dmZwcmludGY7CiAgdXNpbmcgOjp2cHJpbnRmOwogIHVzaW5nIDo6dnNwcmludGY7
Cn0KIyAzNiAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYt
cGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9pNjg2LXBjLWN5Z3dpbi9iaXRzL2MrK2lvLmgiIDIg
MwoKIyAxICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1w
Yy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2k2ODYtcGMtY3lnd2luL2JpdHMvZ3Roci5oIiAxIDMK
IyA5NiAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMt
Y3lnd2luLzMuNC9pbmNsdWRlL2MrKy9pNjg2LXBjLWN5Z3dpbi9iaXRzL2d0aHIuaCIgMwojIDEg
Ii9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dp
bi8zLjQvaW5jbHVkZS9jKysvaTY4Ni1wYy1jeWd3aW4vYml0cy9ndGhyLWRlZmF1bHQuaCIgMSAz
CiMgMzcgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBj
LWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvaTY4Ni1wYy1jeWd3aW4vYml0cy9ndGhyLWRlZmF1bHQu
aCIgMwojIDEgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDEgMyA0CiMgMTQgIi91c3IvaW5jbHVk
ZS9wdGhyZWFkLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMSAzIDQKCgoKCiMg
MSAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMSAzIDQKCgoKCgoKZXh0ZXJuICJDIiB7CiMg
MTkgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
c2lnc2V0X3Q7CiMgMTA5ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzIDQKdHlwZWRlZiB2
b2lkICgqX3NpZ19mdW5jX3B0cikoaW50KTsKCnN0cnVjdCBzaWdhY3Rpb24KewogICAgICAgIF9z
aWdfZnVuY19wdHIgc2FfaGFuZGxlcjsKICAgICAgICBzaWdzZXRfdCBzYV9tYXNrOwogICAgICAg
IGludCBzYV9mbGFnczsKfTsKIyAxMzkgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNApp
bnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc2lncHJvY21hc2sgKGludCBob3csIGNvbnN0
IHNpZ3NldF90ICpzZXQsIHNpZ3NldF90ICpvc2V0KTsKCgppbnQgX19hdHRyaWJ1dGVfXygoX19j
ZGVjbF9fKSkgcHRocmVhZF9zaWdtYXNrIChpbnQgaG93LCBjb25zdCBzaWdzZXRfdCAqc2V0LCBz
aWdzZXRfdCAqb3NldCk7CiMgMTUzICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzIDQKaW50
IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGtpbGwgKGludCwgaW50KTsKaW50IF9fYXR0cmli
dXRlX18oKF9fY2RlY2xfXykpIGtpbGxwZyAocGlkX3QsIGludCk7CmludCBfX2F0dHJpYnV0ZV9f
KChfX2NkZWNsX18pKSBzaWdhY3Rpb24gKGludCwgY29uc3Qgc3RydWN0IHNpZ2FjdGlvbiAqLCBz
dHJ1Y3Qgc2lnYWN0aW9uICopOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc2lnYWRk
c2V0IChzaWdzZXRfdCAqLCBjb25zdCBpbnQpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9f
KSkgc2lnZGVsc2V0IChzaWdzZXRfdCAqLCBjb25zdCBpbnQpOwppbnQgX19hdHRyaWJ1dGVfXygo
X19jZGVjbF9fKSkgc2lnaXNtZW1iZXIgKGNvbnN0IHNpZ3NldF90ICosIGludCk7CmludCBfX2F0
dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzaWdmaWxsc2V0IChzaWdzZXRfdCAqKTsKaW50IF9fYXR0
cmlidXRlX18oKF9fY2RlY2xfXykpIHNpZ2VtcHR5c2V0IChzaWdzZXRfdCAqKTsKaW50IF9fYXR0
cmlidXRlX18oKF9fY2RlY2xfXykpIHNpZ3BlbmRpbmcgKHNpZ3NldF90ICopOwppbnQgX19hdHRy
aWJ1dGVfXygoX19jZGVjbF9fKSkgc2lnc3VzcGVuZCAoY29uc3Qgc2lnc2V0X3QgKik7CmludCBf
X2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzaWdwYXVzZSAoaW50KTsKCgoKCgoKCmludCBfX2F0
dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBwdGhyZWFkX2tpbGwgKHB0aHJlYWRfdCB0aHJlYWQsIGlu
dCBzaWcpOwojIDM0MCAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0Cn0KIyA2ICIvdXNy
L2luY2x1ZGUvc2lnbmFsLmgiIDIgMyA0CgpleHRlcm4gIkMiIHsKCnR5cGVkZWYgaW50IHNpZ19h
dG9taWNfdDsKCgoKCgpzdHJ1Y3QgX3JlZW50OwoKX3NpZ19mdW5jX3B0ciBfX2F0dHJpYnV0ZV9f
KChfX2NkZWNsX18pKSBfc2lnbmFsX3IgKHN0cnVjdCBfcmVlbnQgKiwgaW50LCBfc2lnX2Z1bmNf
cHRyKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9yYWlzZV9yIChzdHJ1Y3QgX3Jl
ZW50ICosIGludCk7CgoKX3NpZ19mdW5jX3B0ciBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBz
aWduYWwgKGludCwgX3NpZ19mdW5jX3B0cik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18p
KSByYWlzZSAoaW50KTsKCgp9CiMgMTUgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDIgMyA0CiMg
MSAiL3Vzci9pbmNsdWRlL3NjaGVkLmgiIDEgMyA0CiMgMTcgIi91c3IvaW5jbHVkZS9zY2hlZC5o
IiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMgNAojIDE4ICIvdXNyL2luY2x1ZGUv
dGltZS5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvbWFjaGluZS90aW1lLmgiIDEgMyA0CiMgMTkg
Ii91c3IvaW5jbHVkZS90aW1lLmgiIDIgMyA0CiMgMjcgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMg
NAojIDEgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBj
LWN5Z3dpbi8zLjQvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAyOCAiL3Vzci9pbmNsdWRlL3Rp
bWUuaCIgMiAzIDQKCgoKZXh0ZXJuICJDIiB7CgpzdHJ1Y3QgdG0KewogIGludCB0bV9zZWM7CiAg
aW50IHRtX21pbjsKICBpbnQgdG1faG91cjsKICBpbnQgdG1fbWRheTsKICBpbnQgdG1fbW9uOwog
IGludCB0bV95ZWFyOwogIGludCB0bV93ZGF5OwogIGludCB0bV95ZGF5OwogIGludCB0bV9pc2Rz
dDsKfTsKCmNsb2NrX3QgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgY2xvY2sgKHZvaWQpOwpk
b3VibGUgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZGlmZnRpbWUgKHRpbWVfdCBfdGltZTIs
IHRpbWVfdCBfdGltZTEpOwp0aW1lX3QgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgbWt0aW1l
IChzdHJ1Y3QgdG0gKl90aW1lcHRyKTsKdGltZV90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykp
IHRpbWUgKHRpbWVfdCAqX3RpbWVyKTsKCmNoYXIgKl9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykp
IGFzY3RpbWUgKGNvbnN0IHN0cnVjdCB0bSAqX3RibG9jayk7CmNoYXIgKl9fYXR0cmlidXRlX18o
KF9fY2RlY2xfXykpIGN0aW1lIChjb25zdCB0aW1lX3QgKl90aW1lKTsKc3RydWN0IHRtICpfX2F0
dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBnbXRpbWUgKGNvbnN0IHRpbWVfdCAqX3RpbWVyKTsKc3Ry
dWN0IHRtICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBsb2NhbHRpbWUgKGNvbnN0IHRpbWVf
dCAqX3RpbWVyKTsKCnNpemVfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzdHJmdGltZSAo
Y2hhciAqX3MsIHNpemVfdCBfbWF4c2l6ZSwgY29uc3QgY2hhciAqX2ZtdCwgY29uc3Qgc3RydWN0
IHRtICpfdCk7CgpjaGFyICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBhc2N0aW1lX3IgKGNv
bnN0IHN0cnVjdCB0bSAqLCBjaGFyICopOwpjaGFyICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18p
KSBjdGltZV9yIChjb25zdCB0aW1lX3QgKiwgY2hhciAqKTsKc3RydWN0IHRtICpfX2F0dHJpYnV0
ZV9fKChfX2NkZWNsX18pKSBnbXRpbWVfciAoY29uc3QgdGltZV90ICosIHN0cnVjdCB0bSAqKTsK
c3RydWN0IHRtICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBsb2NhbHRpbWVfciAoY29uc3Qg
dGltZV90ICosIHN0cnVjdCB0bSAqKTsKCn0KCgpleHRlcm4gIkMiIHsKCgoKY2hhciAqX19hdHRy
aWJ1dGVfXygoX19jZGVjbF9fKSkgc3RycHRpbWUgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq
LCBzdHJ1Y3QgdG0gKik7CnZvaWQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgdHpzZXQgKHZv
aWQpOwp2b2lkIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF90enNldF9yIChzdHJ1Y3QgX3Jl
ZW50ICopOwojIDk4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKZXh0ZXJuIF9fYXR0cmlidXRl
X18oKGRsbGltcG9ydCkpIHRpbWVfdCBfdGltZXpvbmU7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChk
bGxpbXBvcnQpKSBpbnQgX2RheWxpZ2h0OwpleHRlcm4gX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0
KSkgY2hhciAqX3R6bmFtZVsyXTsKIyAxMTcgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNApjaGFy
ICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSB0aW1lem9uZSAodm9pZCk7CgoKCgoKfQojIDE2
OSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CmV4dGVybiAiQyIgewoKaW50IF9fYXR0cmlidXRl
X18oKF9fY2RlY2xfXykpIG5hbm9zbGVlcCAoY29uc3Qgc3RydWN0IHRpbWVzcGVjICpycXRwLCBz
dHJ1Y3QgdGltZXNwZWMgKnJtdHApOwoKfQoKCgoKCmV4dGVybiAiQyIgewojIDI0NyAiL3Vzci9p
bmNsdWRlL3RpbWUuaCIgMyA0Cn0KIyAxOCAiL3Vzci9pbmNsdWRlL3NjaGVkLmgiIDIgMyA0CgoK
CgoKCnN0cnVjdCBzY2hlZF9wYXJhbQp7CiAgaW50IHNjaGVkX3ByaW9yaXR5Owp9OwoKCmV4dGVy
biAiQyIgewoKCgppbnQgc2NoZWRfZ2V0X3ByaW9yaXR5X21heCAoaW50KTsKCmludCBzY2hlZF9n
ZXRfcHJpb3JpdHlfbWluIChpbnQpOwoKaW50IHNjaGVkX2dldHBhcmFtIChwaWRfdCwgc3RydWN0
IHNjaGVkX3BhcmFtICopOwoKaW50IHNjaGVkX2dldHNjaGVkdWxlciAocGlkX3QpOwoKaW50IHNj
aGVkX3JyX2dldF9pbnRlcnZhbCAocGlkX3QsIHN0cnVjdCB0aW1lc3BlYyAqKTsKCmludCBzY2hl
ZF9zZXRwYXJhbSAocGlkX3QsIGNvbnN0IHN0cnVjdCBzY2hlZF9wYXJhbSAqKTsKCmludCBzY2hl
ZF9zZXRzY2hlZHVsZXIgKHBpZF90LCBpbnQsIGNvbnN0IHN0cnVjdCBzY2hlZF9wYXJhbSAqKTsK
CmludCBzY2hlZF95aWVsZCAodm9pZCk7CiMgNjIgIi91c3IvaW5jbHVkZS9zY2hlZC5oIiAzIDQK
fQojIDE2ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAyIDMgNAoKCgoKCmV4dGVybiAiQyIKewoj
IDcxICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzIDQKaW50IHB0aHJlYWRfYXR0cl9kZXN0cm95
IChwdGhyZWFkX2F0dHJfdCAqKTsKaW50IHB0aHJlYWRfYXR0cl9nZXRkZXRhY2hzdGF0ZSAoY29u
c3QgcHRocmVhZF9hdHRyX3QgKiwgaW50ICopOwppbnQgcHRocmVhZF9hdHRyX2dldGluaGVyaXRz
Y2hlZCAoY29uc3QgcHRocmVhZF9hdHRyX3QgKiwgaW50ICopOwppbnQgcHRocmVhZF9hdHRyX2dl
dHNjaGVkcGFyYW0gKGNvbnN0IHB0aHJlYWRfYXR0cl90ICosIHN0cnVjdCBzY2hlZF9wYXJhbSAq
KTsKaW50IHB0aHJlYWRfYXR0cl9nZXRzY2hlZHBvbGljeSAoY29uc3QgcHRocmVhZF9hdHRyX3Qg
KiwgaW50ICopOwppbnQgcHRocmVhZF9hdHRyX2dldHNjb3BlIChjb25zdCBwdGhyZWFkX2F0dHJf
dCAqLCBpbnQgKik7CmludCBwdGhyZWFkX2F0dHJfaW5pdCAocHRocmVhZF9hdHRyX3QgKik7Cmlu
dCBwdGhyZWFkX2F0dHJfc2V0ZGV0YWNoc3RhdGUgKHB0aHJlYWRfYXR0cl90ICosIGludCk7Cmlu
dCBwdGhyZWFkX2F0dHJfc2V0aW5oZXJpdHNjaGVkIChwdGhyZWFkX2F0dHJfdCAqLCBpbnQpOwpp
bnQgcHRocmVhZF9hdHRyX3NldHNjaGVkcGFyYW0gKHB0aHJlYWRfYXR0cl90ICosIGNvbnN0IHN0
cnVjdCBzY2hlZF9wYXJhbSAqKTsKaW50IHB0aHJlYWRfYXR0cl9zZXRzY2hlZHBvbGljeSAocHRo
cmVhZF9hdHRyX3QgKiwgaW50KTsKaW50IHB0aHJlYWRfYXR0cl9zZXRzY29wZSAocHRocmVhZF9h
dHRyX3QgKiwgaW50KTsKIyA5NCAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMyA0CmludCBwdGhy
ZWFkX2F0dHJfZ2V0c3RhY2tzaXplIChjb25zdCBwdGhyZWFkX2F0dHJfdCAqLCBzaXplX3QgKik7
CmludCBwdGhyZWFkX2F0dHJfc2V0c3RhY2tzaXplIChwdGhyZWFkX2F0dHJfdCAqLCBzaXplX3Qp
OwoKCmludCBwdGhyZWFkX2NhbmNlbCAocHRocmVhZF90KTsKCgoKCgp0eXBlZGVmIHZvaWQgKCpf
X2NsZWFudXBfcm91dGluZV90eXBlKSAodm9pZCAqKTsKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRf
Y2xlYW51cF9oYW5kbGVyCnsKICBfX2NsZWFudXBfcm91dGluZV90eXBlIGZ1bmN0aW9uOwogIHZv
aWQgKmFyZzsKICBzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9oYW5kbGVyICpuZXh0Owp9IF9fcHRo
cmVhZF9jbGVhbnVwX2hhbmRsZXI7Cgp2b2lkIF9wdGhyZWFkX2NsZWFudXBfcHVzaCAoX19wdGhy
ZWFkX2NsZWFudXBfaGFuZGxlciAqaGFuZGxlcik7CnZvaWQgX3B0aHJlYWRfY2xlYW51cF9wb3Ag
KGludCBleGVjdXRlKTsKCgoKCgoKCmludCBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0IChwdGhyZWFk
X2NvbmRfdCAqKTsKaW50IHB0aHJlYWRfY29uZF9kZXN0cm95IChwdGhyZWFkX2NvbmRfdCAqKTsK
aW50IHB0aHJlYWRfY29uZF9pbml0IChwdGhyZWFkX2NvbmRfdCAqLCBjb25zdCBwdGhyZWFkX2Nv
bmRhdHRyX3QgKik7CmludCBwdGhyZWFkX2NvbmRfc2lnbmFsIChwdGhyZWFkX2NvbmRfdCAqKTsK
aW50IHB0aHJlYWRfY29uZF90aW1lZHdhaXQgKHB0aHJlYWRfY29uZF90ICosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdGhyZWFkX211dGV4X3QgKiwgY29uc3Qgc3RydWN0IHRpbWVzcGVj
ICopOwppbnQgcHRocmVhZF9jb25kX3dhaXQgKHB0aHJlYWRfY29uZF90ICosIHB0aHJlYWRfbXV0
ZXhfdCAqKTsKaW50IHB0aHJlYWRfY29uZGF0dHJfZGVzdHJveSAocHRocmVhZF9jb25kYXR0cl90
ICopOwppbnQgcHRocmVhZF9jb25kYXR0cl9nZXRwc2hhcmVkIChjb25zdCBwdGhyZWFkX2NvbmRh
dHRyX3QgKiwgaW50ICopOwppbnQgcHRocmVhZF9jb25kYXR0cl9pbml0IChwdGhyZWFkX2NvbmRh
dHRyX3QgKik7CmludCBwdGhyZWFkX2NvbmRhdHRyX3NldHBzaGFyZWQgKHB0aHJlYWRfY29uZGF0
dHJfdCAqLCBpbnQpOwoKaW50IHB0aHJlYWRfY3JlYXRlIChwdGhyZWFkX3QgKiwgY29uc3QgcHRo
cmVhZF9hdHRyX3QgKiwKICAgICAgICAgICAgICAgICAgICB2b2lkICooKikodm9pZCAqKSwgdm9p
ZCAqKTsKaW50IHB0aHJlYWRfZGV0YWNoIChwdGhyZWFkX3QpOwppbnQgcHRocmVhZF9lcXVhbCAo
cHRocmVhZF90LCBwdGhyZWFkX3QpOwp2b2lkIHB0aHJlYWRfZXhpdCAodm9pZCAqKTsKaW50IHB0
aHJlYWRfZ2V0c2NoZWRwYXJhbSAocHRocmVhZF90LCBpbnQgKiwgc3RydWN0IHNjaGVkX3BhcmFt
ICopOwp2b2lkICpwdGhyZWFkX2dldHNwZWNpZmljIChwdGhyZWFkX2tleV90KTsKaW50IHB0aHJl
YWRfam9pbiAocHRocmVhZF90LCB2b2lkICoqKTsKaW50IHB0aHJlYWRfa2V5X2NyZWF0ZSAocHRo
cmVhZF9rZXlfdCAqLCB2b2lkICgqKSh2b2lkICopKTsKaW50IHB0aHJlYWRfa2V5X2RlbGV0ZSAo
cHRocmVhZF9rZXlfdCk7CgoKaW50IHB0aHJlYWRfbXV0ZXhfZGVzdHJveSAocHRocmVhZF9tdXRl
eF90ICopOwppbnQgcHRocmVhZF9tdXRleF9nZXRwcmlvY2VpbGluZyAoY29uc3QgcHRocmVhZF9t
dXRleF90ICosIGludCAqKTsKaW50IHB0aHJlYWRfbXV0ZXhfaW5pdCAocHRocmVhZF9tdXRleF90
ICosIGNvbnN0IHB0aHJlYWRfbXV0ZXhhdHRyX3QgKik7CmludCBwdGhyZWFkX211dGV4X2xvY2sg
KHB0aHJlYWRfbXV0ZXhfdCAqKTsKaW50IHB0aHJlYWRfbXV0ZXhfc2V0cHJpb2NlaWxpbmcgKHB0
aHJlYWRfbXV0ZXhfdCAqLCBpbnQsIGludCAqKTsKaW50IHB0aHJlYWRfbXV0ZXhfdHJ5bG9jayAo
cHRocmVhZF9tdXRleF90ICopOwppbnQgcHRocmVhZF9tdXRleF91bmxvY2sgKHB0aHJlYWRfbXV0
ZXhfdCAqKTsKaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2Rlc3Ryb3kgKHB0aHJlYWRfbXV0ZXhhdHRy
X3QgKik7CmludCBwdGhyZWFkX211dGV4YXR0cl9nZXRwcmlvY2VpbGluZyAoY29uc3QgcHRocmVh
ZF9tdXRleGF0dHJfdCAqLCBpbnQgKik7CmludCBwdGhyZWFkX211dGV4YXR0cl9nZXRwcm90b2Nv
bCAoY29uc3QgcHRocmVhZF9tdXRleGF0dHJfdCAqLCBpbnQgKik7CmludCBwdGhyZWFkX211dGV4
YXR0cl9nZXRwc2hhcmVkIChjb25zdCBwdGhyZWFkX211dGV4YXR0cl90ICosIGludCAqKTsKaW50
IHB0aHJlYWRfbXV0ZXhhdHRyX2dldHR5cGUgKGNvbnN0IHB0aHJlYWRfbXV0ZXhhdHRyX3QgKiwg
aW50ICopOwppbnQgcHRocmVhZF9tdXRleGF0dHJfaW5pdCAocHRocmVhZF9tdXRleGF0dHJfdCAq
KTsKaW50IHB0aHJlYWRfbXV0ZXhhdHRyX3NldHByaW9jZWlsaW5nIChwdGhyZWFkX211dGV4YXR0
cl90ICosIGludCk7CmludCBwdGhyZWFkX211dGV4YXR0cl9zZXRwcm90b2NvbCAocHRocmVhZF9t
dXRleGF0dHJfdCAqLCBpbnQpOwppbnQgcHRocmVhZF9tdXRleGF0dHJfc2V0cHNoYXJlZCAocHRo
cmVhZF9tdXRleGF0dHJfdCAqLCBpbnQpOwppbnQgcHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZSAo
cHRocmVhZF9tdXRleGF0dHJfdCAqLCBpbnQpOwoKaW50IHB0aHJlYWRfb25jZSAocHRocmVhZF9v
bmNlX3QgKiwgdm9pZCAoKikodm9pZCkpOwoKCmludCBwdGhyZWFkX2dldGNvbmN1cnJlbmN5ICh2
b2lkKTsKaW50IHB0aHJlYWRfc2V0Y29uY3VycmVuY3kgKGludCk7CgoKcHRocmVhZF90IHB0aHJl
YWRfc2VsZiAodm9pZCk7CmludCBwdGhyZWFkX3NldGNhbmNlbHN0YXRlIChpbnQsIGludCAqKTsK
aW50IHB0aHJlYWRfc2V0Y2FuY2VsdHlwZSAoaW50LCBpbnQgKik7CmludCBwdGhyZWFkX3NldHNj
aGVkcGFyYW0gKHB0aHJlYWRfdCwgaW50LCBjb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKik7Cmlu
dCBwdGhyZWFkX3NldHNwZWNpZmljIChwdGhyZWFkX2tleV90LCBjb25zdCB2b2lkICopOwp2b2lk
IHB0aHJlYWRfdGVzdGNhbmNlbCAodm9pZCk7CgoKCmludCBwdGhyZWFkX3N1c3BlbmQgKHB0aHJl
YWRfdCk7CmludCBwdGhyZWFkX2NvbnRpbnVlIChwdGhyZWFkX3QpOwoKCn0KIyAzOCAiL2hvbWUv
QWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9p
bmNsdWRlL2MrKy9pNjg2LXBjLWN5Z3dpbi9iaXRzL2d0aHItZGVmYXVsdC5oIiAyIDMKIyAxICIv
dXNyL2luY2x1ZGUvdW5pc3RkLmgiIDEgMyA0CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3Vu
aXN0ZC5oIiAxIDMgNAoKCgoKZXh0ZXJuICJDIiB7CgoKCgoKCgojIDEgIi9ob21lL0FkbWluaXN0
cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9z
dGRkZWYuaCIgMSAzIDQKIyAxNCAiL3Vzci9pbmNsdWRlL3N5cy91bmlzdGQuaCIgMiAzIDQKCmV4
dGVybiBjaGFyICoqZW52aXJvbjsKCnZvaWQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX2V4
aXQgKGludCBfX3N0YXR1cyApIF9fYXR0cmlidXRlX18gKChub3JldHVybikpOwoKaW50IF9fYXR0
cmlidXRlX18oKF9fY2RlY2xfXykpIGFjY2VzcyAoY29uc3QgY2hhciAqX19wYXRoLCBpbnQgX19h
bW9kZSApOwp1bnNpZ25lZCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBhbGFybSAodW5zaWdu
ZWQgX19zZWNzICk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBjaGRpciAoY29uc3Qg
Y2hhciAqX19wYXRoICk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBjaG1vZCAoY29u
c3QgY2hhciAqX19wYXRoLCBtb2RlX3QgX19tb2RlICk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2Nk
ZWNsX18pKSBjaG93biAoY29uc3QgY2hhciAqX19wYXRoLCB1aWRfdCBfX293bmVyLCBnaWRfdCBf
X2dyb3VwICk7CgppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgY2hyb290IChjb25zdCBj
aGFyICpfX3BhdGggKTsKCmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBjbG9zZSAoaW50
IF9fZmlsZGVzICk7CmNoYXIgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgKmN0ZXJtaWQgKGNo
YXIgKl9fcyApOwpjaGFyIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpICpjdXNlcmlkIChjaGFy
ICpfX3MgKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGR1cCAoaW50IF9fZmlsZGVz
ICk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBkdXAyIChpbnQgX19maWxkZXMsIGlu
dCBfX2ZpbGRlczIgKTsKCnZvaWQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZW5kdXNlcnNo
ZWxsICh2b2lkKTsKCmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBleGVjbCAoY29uc3Qg
Y2hhciAqX19wYXRoLCBjb25zdCBjaGFyICosIC4uLiApOwppbnQgX19hdHRyaWJ1dGVfXygoX19j
ZGVjbF9fKSkgZXhlY2xlIChjb25zdCBjaGFyICpfX3BhdGgsIGNvbnN0IGNoYXIgKiwgLi4uICk7
CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBleGVjbHAgKGNvbnN0IGNoYXIgKl9fZmls
ZSwgY29uc3QgY2hhciAqLCAuLi4gKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGV4
ZWN2IChjb25zdCBjaGFyICpfX3BhdGgsIGNoYXIgKiBjb25zdCBfX2FyZ3ZbXSApOwppbnQgX19h
dHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZXhlY3ZlIChjb25zdCBjaGFyICpfX3BhdGgsIGNoYXIg
KiBjb25zdCBfX2FyZ3ZbXSwgY2hhciAqIGNvbnN0IF9fZW52cFtdICk7CmludCBfX2F0dHJpYnV0
ZV9fKChfX2NkZWNsX18pKSBleGVjdnAgKGNvbnN0IGNoYXIgKl9fZmlsZSwgY2hhciAqIGNvbnN0
IF9fYXJndltdICk7CgppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZmNoZGlyIChpbnQg
X19maWxkZXMpOwoKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGZjaG1vZCAoaW50IF9f
ZmlsZGVzLCBtb2RlX3QgX19tb2RlICk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBm
Y2hvd24gKGludCBfX2ZpbGRlcywgdWlkX3QgX19vd25lciwgZ2lkX3QgX19ncm91cCApOwpwaWRf
dCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBmb3JrICh2b2lkICk7CmxvbmcgX19hdHRyaWJ1
dGVfXygoX19jZGVjbF9fKSkgZnBhdGhjb25mIChpbnQgX19mZCwgaW50IF9fbmFtZSApOwppbnQg
X19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZnN5bmMgKGludCBfX2ZkKTsKY2hhciBfX2F0dHJp
YnV0ZV9fKChfX2NkZWNsX18pKSAqZ2V0Y3dkIChjaGFyICpfX2J1Ziwgc2l6ZV90IF9fc2l6ZSAp
OwoKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGdldGRvbWFpbm5hbWUgKGNoYXIgKl9f
bmFtZSwgc2l6ZV90IF9fbGVuKTsKCmdpZF90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGdl
dGVnaWQgKHZvaWQgKTsKdWlkX3QgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZ2V0ZXVpZCAo
dm9pZCApOwpnaWRfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBnZXRnaWQgKHZvaWQgKTsK
aW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGdldGdyb3VwcyAoaW50IF9fZ2lkc2V0c2l6
ZSwgZ2lkX3QgX19ncm91cGxpc3RbXSApOwpjaGFyIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykp
ICpnZXRsb2dpbiAodm9pZCApOwoKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGdldGxv
Z2luX3IgKGNoYXIgKm5hbWUsIHNpemVfdCBuYW1lc2l6ZSk7CgpjaGFyIF9fYXR0cmlidXRlX18o
KF9fY2RlY2xfXykpICpnZXRwYXNzIChfX2NvbnN0IGNoYXIgKl9fcHJvbXB0KTsKc2l6ZV90IF9f
YXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGdldHBhZ2VzaXplICh2b2lkKTsKcGlkX3QgX19hdHRy
aWJ1dGVfXygoX19jZGVjbF9fKSkgZ2V0cGdpZCAocGlkX3QpOwpwaWRfdCBfX2F0dHJpYnV0ZV9f
KChfX2NkZWNsX18pKSBnZXRwZ3JwICh2b2lkICk7CnBpZF90IF9fYXR0cmlidXRlX18oKF9fY2Rl
Y2xfXykpIGdldHBpZCAodm9pZCApOwpwaWRfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBn
ZXRwcGlkICh2b2lkICk7CgpwaWRfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBnZXRzaWQg
KHBpZF90KTsKCnVpZF90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGdldHVpZCAodm9pZCAp
OwoKY2hhciAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGdldHVzZXJzaGVsbCAodm9pZCk7
CmNoYXIgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgKmdldHdkIChjaGFyICpfX2J1ZiApOwpp
bnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgaXJ1c2Vyb2sgKHVuc2lnbmVkIGxvbmcgcmFk
ZHIsIGludCBzdXBlcnVzZXIsIGNvbnN0IGNoYXIgKnJ1c2VyLCBjb25zdCBjaGFyICpsdXNlcik7
CgppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgaXNhdHR5IChpbnQgX19maWxkZXMgKTsK
aW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGxjaG93biAoY29uc3QgY2hhciAqX19wYXRo
LCB1aWRfdCBfX293bmVyLCBnaWRfdCBfX2dyb3VwICk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2Nk
ZWNsX18pKSBsaW5rIChjb25zdCBjaGFyICpfX3BhdGgxLCBjb25zdCBjaGFyICpfX3BhdGgyICk7
CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBuaWNlIChpbnQgX19uaWNlX3ZhbHVlICk7
Cm9mZl90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGxzZWVrIChpbnQgX19maWxkZXMsIG9m
Zl90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UgKTsKbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2NkZWNs
X18pKSBwYXRoY29uZiAoY29uc3QgY2hhciAqX19wYXRoLCBpbnQgX19uYW1lICk7CmludCBfX2F0
dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBwYXVzZSAodm9pZCApOwoKaW50IF9fYXR0cmlidXRlX18o
KF9fY2RlY2xfXykpIHB0aHJlYWRfYXRmb3JrICh2b2lkICgqKSh2b2lkKSwgdm9pZCAoKikodm9p
ZCksIHZvaWQgKCopKHZvaWQpKTsKCmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBwaXBl
IChpbnQgX19maWxkZXNbMl0gKTsKc3NpemVfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBw
cmVhZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMsIG9mZl90IF9fb2Zm
c2V0KTsKc3NpemVfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBwd3JpdGUgKGludCBfX2Zk
LCBjb25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzLCBvZmZfdCBfX29mZnNldCk7Cl9z
c2l6ZV90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHJlYWQgKGludCBfX2ZkLCB2b2lkICpf
X2J1Ziwgc2l6ZV90IF9fbmJ5dGUgKTsKCmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBy
cmVzdnBvcnQgKGludCAqX19hbHBvcnQpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkg
cmV2b2tlIChjaGFyICpfX3BhdGgpOwoKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHJt
ZGlyIChjb25zdCBjaGFyICpfX3BhdGggKTsKCmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18p
KSBydXNlcm9rIChjb25zdCBjaGFyICpyaG9zdCwgaW50IHN1cGVydXNlciwgY29uc3QgY2hhciAq
cnVzZXIsIGNvbnN0IGNoYXIgKmx1c2VyKTsKCnZvaWQgKiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNs
X18pKSBzYnJrIChwdHJkaWZmX3QgX19pbmNyKTsKCmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNs
X18pKSBzZXRlZ2lkIChnaWRfdCBfX2dpZCApOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9f
KSkgc2V0ZXVpZCAodWlkX3QgX191aWQgKTsKCmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18p
KSBzZXRnaWQgKGdpZF90IF9fZ2lkICk7CgppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkg
c2V0Z3JvdXBzIChpbnQgbmdyb3VwcywgY29uc3QgZ2lkX3QgKmdyb3VwbGlzdCApOwoKaW50IF9f
YXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHNldHBnaWQgKHBpZF90IF9fcGlkLCBwaWRfdCBfX3Bn
aWQgKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHNldHBncnAgKHZvaWQgKTsKCmlu
dCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzZXRyZWdpZCAoZ2lkX3QgX19yZ2lkLCBnaWRf
dCBfX2VnaWQpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc2V0cmV1aWQgKHVpZF90
IF9fcnVpZCwgdWlkX3QgX19ldWlkKTsKCnBpZF90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykp
IHNldHNpZCAodm9pZCApOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc2V0dWlkICh1
aWRfdCBfX3VpZCApOwoKdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzZXR1c2Vyc2hl
bGwgKHZvaWQpOwoKdW5zaWduZWQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc2xlZXAgKHVu
c2lnbmVkIGludCBfX3NlY29uZHMgKTsKdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBz
d2FiIChjb25zdCB2b2lkICosIHZvaWQgKiwgc3NpemVfdCk7CmxvbmcgX19hdHRyaWJ1dGVfXygo
X19jZGVjbF9fKSkgc3lzY29uZiAoaW50IF9fbmFtZSApOwpwaWRfdCBfX2F0dHJpYnV0ZV9fKChf
X2NkZWNsX18pKSB0Y2dldHBncnAgKGludCBfX2ZpbGRlcyApOwppbnQgX19hdHRyaWJ1dGVfXygo
X19jZGVjbF9fKSkgdGNzZXRwZ3JwIChpbnQgX19maWxkZXMsIHBpZF90IF9fcGdycF9pZCApOwpj
aGFyIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpICp0dHluYW1lIChpbnQgX19maWxkZXMgKTsK
aW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHVubGluayAoY29uc3QgY2hhciAqX19wYXRo
ICk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSB2aGFuZ3VwICh2b2lkICk7Cl9zc2l6
ZV90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHdyaXRlIChpbnQgX19mZCwgY29uc3Qgdm9p
ZCAqX19idWYsIHNpemVfdCBfX25ieXRlICk7CgoKIyAxICIvdXNyL2luY2x1ZGUvZ2V0b3B0Lmgi
IDEgMyA0CiMgMzggIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMyA0CmV4dGVybiAiQyIgewoKCmV4
dGVybiBpbnQgb3B0ZXJyOwpleHRlcm4gaW50IG9wdGluZDsKZXh0ZXJuIGludCBvcHRvcHQ7CmV4
dGVybiBpbnQgb3B0cmVzZXQ7CmV4dGVybiBjaGFyICpvcHRhcmc7CgppbnQgZ2V0b3B0IChpbnQs
IGNoYXIgKiBjb25zdCAqLCBjb25zdCBjaGFyICopOwoKCn0KIyA2MCAiL3Vzci9pbmNsdWRlL2dl
dG9wdC5oIiAzIDQKZXh0ZXJuICJDIiB7CgoKc3RydWN0IG9wdGlvbiB7CiAgICAgICAgY29uc3Qg
Y2hhciAqbmFtZTsKICAgICAgICBpbnQgaGFzX2FyZzsKICAgICAgICBpbnQgKmZsYWc7CiAgICAg
ICAgaW50IHZhbDsKfTsKCmludCBnZXRvcHRfbG9uZyAoaW50LCBjaGFyICpjb25zdCAqLCBjb25z
dCBjaGFyICosIGNvbnN0IHN0cnVjdCBvcHRpb24gKiwgaW50ICopOwojIDgwICIvdXNyL2luY2x1
ZGUvZ2V0b3B0LmgiIDMgNAp9CiMgMTMwICIvdXNyL2luY2x1ZGUvc3lzL3VuaXN0ZC5oIiAyIDMg
NAojIDEzOCAiL3Vzci9pbmNsdWRlL3N5cy91bmlzdGQuaCIgMyA0CnBpZF90IF9fYXR0cmlidXRl
X18oKF9fY2RlY2xfXykpIHZmb3JrICh2b2lkICk7CgpleHRlcm4gY2hhciAqc3Vib3B0YXJnOwpp
bnQgZ2V0c3Vib3B0KGNoYXIgKiosIGNoYXIgKiBjb25zdCAqLCBjaGFyICoqKTsKCgoKCmludCBf
X2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfY2xvc2UgKGludCBfX2ZpbGRlcyApOwpwaWRfdCBf
X2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfZm9yayAodm9pZCApOwpwaWRfdCBfX2F0dHJpYnV0
ZV9fKChfX2NkZWNsX18pKSBfZ2V0cGlkICh2b2lkICk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2Nk
ZWNsX18pKSBfbGluayAoY29uc3QgY2hhciAqX19wYXRoMSwgY29uc3QgY2hhciAqX19wYXRoMiAp
OwpvZmZfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfbHNlZWsgKGludCBfX2ZpbGRlcywg
b2ZmX3QgX19vZmZzZXQsIGludCBfX3doZW5jZSApOwpfc3NpemVfdCBfX2F0dHJpYnV0ZV9fKChf
X2NkZWNsX18pKSBfcmVhZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZSAp
Owp2b2lkICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX3NicmsgKHB0cmRpZmZfdCBfX2lu
Y3IpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX3VubGluayAoY29uc3QgY2hhciAq
X19wYXRoICk7Cl9zc2l6ZV90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF93cml0ZSAoaW50
IF9fZmQsIGNvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZSApOwppbnQgX19hdHRyaWJ1
dGVfXygoX19jZGVjbF9fKSkgX2V4ZWN2ZSAoY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICogY29u
c3QgX19hcmd2W10sIGNoYXIgKiBjb25zdCBfX2VudnBbXSApOwoKCmludCBfX2F0dHJpYnV0ZV9f
KChfX2NkZWNsX18pKSBnZXRkdGFibGVzaXplICh2b2lkKTsKaW50IF9fYXR0cmlidXRlX18oKF9f
Y2RlY2xfXykpIHNldGR0YWJsZXNpemUgKGludCk7CnVzZWNvbmRzX3QgX19hdHRyaWJ1dGVfXygo
X19jZGVjbF9fKSkgdWFsYXJtICh1c2Vjb25kc190IF9fdXNlY29uZHMsIHVzZWNvbmRzX3QgX19p
bnRlcnZhbCk7CnVuc2lnbmVkIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHVzbGVlcCAodW5z
aWduZWQgaW50IF9fdXNlY29uZHMpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZnRy
dW5jYXRlIChpbnQgX19mZCwgb2ZmX3QgX19sZW5ndGgpOwppbnQgX19hdHRyaWJ1dGVfXygoX19j
ZGVjbF9fKSkgdHJ1bmNhdGUgKGNvbnN0IGNoYXIgKiwgb2ZmX3QgX19sZW5ndGgpOwoKCiBpbnQg
X19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZ2V0aG9zdG5hbWUgKGNoYXIgKl9fbmFtZSwgc2l6
ZV90IF9fbGVuKTsKCmNoYXIgKiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBta3RlbXAgKGNo
YXIgKik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzeW5jICh2b2lkKTsKaW50IF9f
YXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHJlYWRsaW5rIChjb25zdCBjaGFyICpfX3BhdGgsIGNo
YXIgKl9fYnVmLCBpbnQgX19idWZsZW4pOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkg
c3ltbGluayAoY29uc3QgY2hhciAqX19uYW1lMSwgY29uc3QgY2hhciAqX19uYW1lMik7CiMgMjk0
ICIvdXNyL2luY2x1ZGUvc3lzL3VuaXN0ZC5oIiAzIDQKfQojIDcgIi91c3IvaW5jbHVkZS91bmlz
dGQuaCIgMiAzIDQKCiMgMSAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAxIDMgNAojIDkgIi91c3Iv
aW5jbHVkZS91bmlzdGQuaCIgMiAzIDQKIyAzOSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0
aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9pNjg2LXBjLWN5
Z3dpbi9iaXRzL2d0aHItZGVmYXVsdC5oIiAyIDMKCnR5cGVkZWYgcHRocmVhZF9rZXlfdCBfX2d0
aHJlYWRfa2V5X3Q7CnR5cGVkZWYgcHRocmVhZF9vbmNlX3QgX19ndGhyZWFkX29uY2VfdDsKdHlw
ZWRlZiBwdGhyZWFkX211dGV4X3QgX19ndGhyZWFkX211dGV4X3Q7CgoKCgoKCiNwcmFnbWEgd2Vh
ayBwdGhyZWFkX29uY2UKI3ByYWdtYSB3ZWFrIHB0aHJlYWRfa2V5X2NyZWF0ZQojcHJhZ21hIHdl
YWsgcHRocmVhZF9rZXlfZGVsZXRlCiNwcmFnbWEgd2VhayBwdGhyZWFkX2dldHNwZWNpZmljCiNw
cmFnbWEgd2VhayBwdGhyZWFkX3NldHNwZWNpZmljCiNwcmFnbWEgd2VhayBwdGhyZWFkX2NyZWF0
ZQoKI3ByYWdtYSB3ZWFrIHB0aHJlYWRfbXV0ZXhfbG9jawojcHJhZ21hIHdlYWsgcHRocmVhZF9t
dXRleF90cnlsb2NrCiNwcmFnbWEgd2VhayBwdGhyZWFkX211dGV4X3VubG9jawojIDg3ICIvaG9t
ZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40
L2luY2x1ZGUvYysrL2k2ODYtcGMtY3lnd2luL2JpdHMvZ3Roci1kZWZhdWx0LmgiIDMKc3RhdGlj
IGlubGluZSBpbnQKX19ndGhyZWFkX2FjdGl2ZV9wICh2b2lkKQp7CiAgc3RhdGljIHZvaWQgKmNv
bnN0IF9fZ3RocmVhZF9hY3RpdmVfcHRyID0gKHZvaWQgKikgJnB0aHJlYWRfY3JlYXRlOwogIHJl
dHVybiBfX2d0aHJlYWRfYWN0aXZlX3B0ciAhPSAwOwp9CiMgNDQ5ICIvaG9tZS9BZG1pbmlzdHJh
dG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysr
L2k2ODYtcGMtY3lnd2luL2JpdHMvZ3Roci1kZWZhdWx0LmgiIDMKc3RhdGljIGlubGluZSBpbnQK
X19ndGhyZWFkX29uY2UgKF9fZ3RocmVhZF9vbmNlX3QgKm9uY2UsIHZvaWQgKCpmdW5jKSAodm9p
ZCkpCnsKICBpZiAoX19ndGhyZWFkX2FjdGl2ZV9wICgpKQogICAgcmV0dXJuIHB0aHJlYWRfb25j
ZSAob25jZSwgZnVuYyk7CiAgZWxzZQogICAgcmV0dXJuIC0xOwp9CgpzdGF0aWMgaW5saW5lIGlu
dApfX2d0aHJlYWRfa2V5X2NyZWF0ZSAoX19ndGhyZWFkX2tleV90ICprZXksIHZvaWQgKCpkdG9y
KSAodm9pZCAqKSkKewogIHJldHVybiBwdGhyZWFkX2tleV9jcmVhdGUgKGtleSwgZHRvcik7Cn0K
CnN0YXRpYyBpbmxpbmUgaW50Cl9fZ3RocmVhZF9rZXlfZGVsZXRlIChfX2d0aHJlYWRfa2V5X3Qg
a2V5KQp7CiAgcmV0dXJuIHB0aHJlYWRfa2V5X2RlbGV0ZSAoa2V5KTsKfQoKc3RhdGljIGlubGlu
ZSB2b2lkICoKX19ndGhyZWFkX2dldHNwZWNpZmljIChfX2d0aHJlYWRfa2V5X3Qga2V5KQp7CiAg
cmV0dXJuIHB0aHJlYWRfZ2V0c3BlY2lmaWMgKGtleSk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50Cl9f
Z3RocmVhZF9zZXRzcGVjaWZpYyAoX19ndGhyZWFkX2tleV90IGtleSwgY29uc3Qgdm9pZCAqcHRy
KQp7CiAgcmV0dXJuIHB0aHJlYWRfc2V0c3BlY2lmaWMgKGtleSwgcHRyKTsKfQoKc3RhdGljIGlu
bGluZSBpbnQKX19ndGhyZWFkX211dGV4X2xvY2sgKF9fZ3RocmVhZF9tdXRleF90ICptdXRleCkK
ewogIGlmIChfX2d0aHJlYWRfYWN0aXZlX3AgKCkpCiAgICByZXR1cm4gcHRocmVhZF9tdXRleF9s
b2NrIChtdXRleCk7CiAgZWxzZQogICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgaW50Cl9f
Z3RocmVhZF9tdXRleF90cnlsb2NrIChfX2d0aHJlYWRfbXV0ZXhfdCAqbXV0ZXgpCnsKICBpZiAo
X19ndGhyZWFkX2FjdGl2ZV9wICgpKQogICAgcmV0dXJuIHB0aHJlYWRfbXV0ZXhfdHJ5bG9jayAo
bXV0ZXgpOwogIGVsc2UKICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIGludApfX2d0aHJl
YWRfbXV0ZXhfdW5sb2NrIChfX2d0aHJlYWRfbXV0ZXhfdCAqbXV0ZXgpCnsKICBpZiAoX19ndGhy
ZWFkX2FjdGl2ZV9wICgpKQogICAgcmV0dXJuIHB0aHJlYWRfbXV0ZXhfdW5sb2NrIChtdXRleCk7
CiAgZWxzZQogICAgcmV0dXJuIDA7Cn0KIyA5NyAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0
aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9pNjg2LXBjLWN5
Z3dpbi9iaXRzL2d0aHIuaCIgMiAzCiMgMzggIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGlu
Zy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvaTY4Ni1wYy1jeWd3
aW4vYml0cy9jKytpby5oIiAyIDMKCm5hbWVzcGFjZSBzdGQKewoKICB0eXBlZGVmIGxvbmcgc3Ry
ZWFtb2ZmOwogIHR5cGVkZWYgcHRyZGlmZl90IHN0cmVhbXNpemU7CgoKCiAgdHlwZWRlZiBmcG9z
X3QgX19jX3N0cmVhbXBvczsKCiAgdHlwZWRlZiBfX2d0aHJlYWRfbXV0ZXhfdCBfX2NfbG9jazsK
CgogIHR5cGVkZWYgRklMRSBfX2NfZmlsZTsKCgogIHN0cnVjdCBfX2lvc19mbGFncwogIHsKICAg
IHR5cGVkZWYgc2hvcnQgX19pbnRfdHlwZTsKCiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBf
U19ib29sYWxwaGEgPSAweDAwMDE7CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19kZWMg
PSAweDAwMDI7CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19maXhlZCA9IDB4MDAwNDsK
ICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX2hleCA9IDB4MDAwODsKICAgIHN0YXRpYyBj
b25zdCBfX2ludF90eXBlIF9TX2ludGVybmFsID0gMHgwMDEwOwogICAgc3RhdGljIGNvbnN0IF9f
aW50X3R5cGUgX1NfbGVmdCA9IDB4MDAyMDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9T
X29jdCA9IDB4MDA0MDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX3JpZ2h0ID0gMHgw
MDgwOwogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1Nfc2NpZW50aWZpYyA9IDB4MDEwMDsK
ICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX3Nob3diYXNlID0gMHgwMjAwOwogICAgc3Rh
dGljIGNvbnN0IF9faW50X3R5cGUgX1Nfc2hvd3BvaW50ID0gMHgwNDAwOwogICAgc3RhdGljIGNv
bnN0IF9faW50X3R5cGUgX1Nfc2hvd3BvcyA9IDB4MDgwMDsKICAgIHN0YXRpYyBjb25zdCBfX2lu
dF90eXBlIF9TX3NraXB3cyA9IDB4MTAwMDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9T
X3VuaXRidWYgPSAweDIwMDA7CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU191cHBlcmNh
c2UgPSAweDQwMDA7CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19hZGp1c3RmaWVsZCA9
IDB4MDAyMCB8IDB4MDA4MCB8IDB4MDAxMDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9T
X2Jhc2VmaWVsZCA9IDB4MDAwMiB8IDB4MDA0MCB8IDB4MDAwODsKICAgIHN0YXRpYyBjb25zdCBf
X2ludF90eXBlIF9TX2Zsb2F0ZmllbGQgPSAweDAxMDAgfCAweDAwMDQ7CgoKICAgIHN0YXRpYyBj
b25zdCBfX2ludF90eXBlIF9TX2JhZGJpdCA9IDB4MDE7CiAgICBzdGF0aWMgY29uc3QgX19pbnRf
dHlwZSBfU19lb2ZiaXQgPSAweDAyOwogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1NfZmFp
bGJpdCA9IDB4MDQ7CgoKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX2FwcCA9IDB4MDE7
CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19hdGUgPSAweDAyOwogICAgc3RhdGljIGNv
bnN0IF9faW50X3R5cGUgX1NfYmluID0gMHgwNDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBl
IF9TX2luID0gMHgwODsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX291dCA9IDB4MTA7
CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU190cnVuYyA9IDB4MjA7CiAgfTsKfQojIDQ1
ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3
aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvZnBvcy5oIiAyIDMKIyAxICIvaG9tZS9BZG1pbmlzdHJh
dG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysr
L2N3Y2hhciIgMSAzCiMgNDggIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvY3djaGFyIiAzCgoKCiMgMSAiL2hv
bWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMu
NC9pbmNsdWRlL2MrKy9jdGltZSIgMSAzCiMgNDggIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVz
dGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvY3RpbWUiIDMK
IyA2NCAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMt
Y3lnd2luLzMuNC9pbmNsdWRlL2MrKy9jdGltZSIgMwpuYW1lc3BhY2Ugc3RkCnsKICB1c2luZyA6
OmNsb2NrX3Q7CiAgdXNpbmcgOjp0aW1lX3Q7CiAgdXNpbmcgOjp0bTsKCiAgdXNpbmcgOjpjbG9j
azsKICB1c2luZyA6OmRpZmZ0aW1lOwogIHVzaW5nIDo6bWt0aW1lOwogIHVzaW5nIDo6dGltZTsK
ICB1c2luZyA6OmFzY3RpbWU7CiAgdXNpbmcgOjpjdGltZTsKICB1c2luZyA6OmdtdGltZTsKICB1
c2luZyA6OmxvY2FsdGltZTsKICB1c2luZyA6OnN0cmZ0aW1lOwp9CiMgNTIgIi9ob21lL0FkbWlu
aXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVk
ZS9jKysvY3djaGFyIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMgNAojIDkg
Ii91c3IvaW5jbHVkZS93Y2hhci5oIiAzIDQKIyAxICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rl
c3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvc3RkZGVmLmgiIDEg
MyA0CiMgMTAgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMgNAojIDM0ICIvdXNyL2luY2x1ZGUv
d2NoYXIuaCIgMyA0CmV4dGVybiAiQyIgewoKCgp0eXBlZGVmIF9tYnN0YXRlX3QgbWJzdGF0ZV90
OwoKCndpbnRfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBidG93YyAoaW50KTsKaW50IF9f
YXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHdjdG9iICh3aW50X3QpOwpzaXplX3QgX19hdHRyaWJ1
dGVfXygoX19jZGVjbF9fKSkgbWJybGVuIChjb25zdCBjaGFyICogLCBzaXplX3QsIG1ic3RhdGVf
dCAqKTsKc2l6ZV90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIG1icnRvd2MgKHdjaGFyX3Qg
KiAsIGNvbnN0IGNoYXIgKiAsIHNpemVfdCwgbWJzdGF0ZV90ICopOwppbnQgX19hdHRyaWJ1dGVf
XygoX19jZGVjbF9fKSkgbWJzaW5pdCAoY29uc3QgbWJzdGF0ZV90ICopOwpzaXplX3QgX19hdHRy
aWJ1dGVfXygoX19jZGVjbF9fKSkgbWJzcnRvd2NzICh3Y2hhcl90ICogLCBjb25zdCBjaGFyICoq
ICwgc2l6ZV90LCBtYnN0YXRlX3QgKik7CnNpemVfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18p
KSB3Y3J0b21iIChjaGFyICogLCB3Y2hhcl90LCBtYnN0YXRlX3QgKik7CnNpemVfdCBfX2F0dHJp
YnV0ZV9fKChfX2NkZWNsX18pKSB3Y3NydG9tYnMgKGNoYXIgKiAsIGNvbnN0IHdjaGFyX3QgKiog
LCBzaXplX3QsIG1ic3RhdGVfdCAqKTsKd2NoYXJfdCAqX19hdHRyaWJ1dGVfXygoX19jZGVjbF9f
KSkgd2NzY2F0ICh3Y2hhcl90ICogLCBjb25zdCB3Y2hhcl90ICopOwp3Y2hhcl90ICpfX2F0dHJp
YnV0ZV9fKChfX2NkZWNsX18pKSB3Y3NjaHIgKGNvbnN0IHdjaGFyX3QgKiwgd2NoYXJfdCk7Cmlu
dCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSB3Y3NjbXAgKGNvbnN0IHdjaGFyX3QgKiwgY29u
c3Qgd2NoYXJfdCAqKTsKd2NoYXJfdCAqX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgd2NzY3B5
ICh3Y2hhcl90ICogLCBjb25zdCB3Y2hhcl90ICopOwpzaXplX3QgX19hdHRyaWJ1dGVfXygoX19j
ZGVjbF9fKSkgd2NzY3NwbiAoY29uc3Qgd2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICopOwpzaXpl
X3QgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgd2NzbGNhdCAod2NoYXJfdCAqLCBjb25zdCB3
Y2hhcl90ICosIHNpemVfdCk7CnNpemVfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSB3Y3Ns
Y3B5ICh3Y2hhcl90ICosIGNvbnN0IHdjaGFyX3QgKiwgc2l6ZV90KTsKc2l6ZV90IF9fYXR0cmli
dXRlX18oKF9fY2RlY2xfXykpIHdjc2xlbiAoY29uc3Qgd2NoYXJfdCAqKTsKd2NoYXJfdCAqX19h
dHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgd2NzbmNhdCAod2NoYXJfdCAqICwgY29uc3Qgd2NoYXJf
dCAqICwgc2l6ZV90KTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHdjc25jbXAgKGNv
bnN0IHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqLCBzaXplX3QpOwp3Y2hhcl90ICpfX2F0dHJp
YnV0ZV9fKChfX2NkZWNsX18pKSB3Y3NuY3B5ICh3Y2hhcl90ICogLCBjb25zdCB3Y2hhcl90ICog
LCBzaXplX3QpOwp3Y2hhcl90ICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSB3Y3NwYnJrIChj
b25zdCB3Y2hhcl90ICosIGNvbnN0IHdjaGFyX3QgKik7CndjaGFyX3QgKl9fYXR0cmlidXRlX18o
KF9fY2RlY2xfXykpIHdjc3JjaHIgKGNvbnN0IHdjaGFyX3QgKiwgd2NoYXJfdCk7CnNpemVfdCBf
X2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSB3Y3NzcG4gKGNvbnN0IHdjaGFyX3QgKiwgY29uc3Qg
d2NoYXJfdCAqKTsKd2NoYXJfdCAqX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgd2Nzc3RyIChj
b25zdCB3Y2hhcl90ICosIGNvbnN0IHdjaGFyX3QgKik7CndjaGFyX3QgKl9fYXR0cmlidXRlX18o
KF9fY2RlY2xfXykpIHdtZW1jaHIgKGNvbnN0IHdjaGFyX3QgKiwgd2NoYXJfdCwgc2l6ZV90KTsK
aW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHdtZW1jbXAgKGNvbnN0IHdjaGFyX3QgKiwg
Y29uc3Qgd2NoYXJfdCAqLCBzaXplX3QpOwp3Y2hhcl90ICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNs
X18pKSB3bWVtY3B5ICh3Y2hhcl90ICogLCBjb25zdCB3Y2hhcl90ICogLCBzaXplX3QpOwp3Y2hh
cl90ICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSB3bWVtbW92ZSAod2NoYXJfdCAqLCBjb25z
dCB3Y2hhcl90ICosIHNpemVfdCk7CndjaGFyX3QgKl9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykp
IHdtZW1zZXQgKHdjaGFyX3QgKiwgd2NoYXJfdCwgc2l6ZV90KTsKCn0KIyA1NSAiL2hvbWUvQWRt
aW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNs
dWRlL2MrKy9jd2NoYXIiIDIgMwojIDY5ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3Rpbmcv
bGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2N3Y2hhciIgMwpuYW1l
c3BhY2Ugc3RkCnsKICB1c2luZyA6Om1ic3RhdGVfdDsKfQojIDQ2ICIvaG9tZS9BZG1pbmlzdHJh
dG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysr
L2JpdHMvZnBvcy5oIiAyIDMKCm5hbWVzcGFjZSBzdGQKewoKCgoKCgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9TdGF0ZVQ+CiAgICBjbGFzcyBmcG9zCiAgICB7CiAgICBwdWJsaWM6CgogICAgICB0eXBl
ZGVmIF9TdGF0ZVQgX19zdGF0ZV90eXBlOwoKICAgIHByaXZhdGU6CiAgICAgIHN0cmVhbW9mZiBf
TV9vZmY7CiAgICAgIF9fc3RhdGVfdHlwZSBfTV9zdDsKCiAgICBwdWJsaWM6CiAgICAgIF9fc3Rh
dGVfdHlwZQogICAgICBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIF9NX3N0OyB9CgogICAgICB2b2lk
CiAgICAgIHN0YXRlKF9fc3RhdGVfdHlwZSBfX3N0KSB7IF9NX3N0ID0gX19zdDsgfQoKCgogICAg
ICBmcG9zKCk6IF9NX29mZihzdHJlYW1vZmYoKSksIF9NX3N0KF9fc3RhdGVfdHlwZSgpKSB7IH0K
CiAgICAgIGZwb3Moc3RyZWFtb2ZmIF9fb2ZmLCBfX3N0YXRlX3R5cGUgX19zdCA9IF9fc3RhdGVf
dHlwZSgpKQogICAgICA6IF9NX29mZihfX29mZiksIF9NX3N0KF9fc3QpIHsgfQoKICAgICAgb3Bl
cmF0b3Igc3RyZWFtb2ZmKCkgY29uc3QgeyByZXR1cm4gX01fb2ZmOyB9CgogICAgICBmcG9zJgog
ICAgICBvcGVyYXRvcis9KHN0cmVhbW9mZiBfX29mZikgeyBfTV9vZmYgKz0gX19vZmY7IHJldHVy
biAqdGhpczsgfQoKICAgICAgZnBvcyYKICAgICAgb3BlcmF0b3ItPShzdHJlYW1vZmYgX19vZmYp
IHsgX01fb2ZmIC09IF9fb2ZmOyByZXR1cm4gKnRoaXM7IH0KCiAgICAgIGZwb3MKICAgICAgb3Bl
cmF0b3IrKHN0cmVhbW9mZiBfX29mZikKICAgICAgewogICAgICAgIGZwb3MgX190KCp0aGlzKTsK
ICAgICAgICBfX3QgKz0gX19vZmY7CiAgICAgICAgcmV0dXJuIF9fdDsKICAgICAgfQoKICAgICAg
ZnBvcwogICAgICBvcGVyYXRvci0oc3RyZWFtb2ZmIF9fb2ZmKQogICAgICB7CiAgICAgICAgZnBv
cyBfX3QoKnRoaXMpOwogICAgICAgIF9fdCAtPSBfX29mZjsKICAgICAgICByZXR1cm4gX190Owog
ICAgICB9CgogICAgICBib29sCiAgICAgIG9wZXJhdG9yPT0oY29uc3QgZnBvcyYgX19wb3MpIGNv
bnN0CiAgICAgIHsgcmV0dXJuIF9NX29mZiA9PSBfX3Bvcy5fTV9vZmY7IH0KCiAgICAgIGJvb2wK
ICAgICAgb3BlcmF0b3IhPShjb25zdCBmcG9zJiBfX3BvcykgY29uc3QKICAgICAgeyByZXR1cm4g
X01fb2ZmICE9IF9fcG9zLl9NX29mZjsgfQoKICAgICAgc3RyZWFtb2ZmCiAgICAgIF9NX3Bvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gX01fb2ZmOyB9CgogICAgICB2b2lkCiAgICAgIF9NX3Bvc2l0
aW9uKHN0cmVhbW9mZiBfX29mZikgeyBfTV9vZmYgPSBfX29mZjsgfQogICAgfTsKCgogIHR5cGVk
ZWYgZnBvczxtYnN0YXRlX3Q+IHN0cmVhbXBvczsKCgoKCn0KIyA0NyAiL2hvbWUvQWRtaW5pc3Ry
YXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2Mr
Ky9iaXRzL2NoYXJfdHJhaXRzLmgiIDIgMwoKbmFtZXNwYWNlIHN0ZAp7CiMgNjEgIi9ob21lL0Fk
bWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5j
bHVkZS9jKysvYml0cy9jaGFyX3RyYWl0cy5oIiAzCiAgdGVtcGxhdGU8Y2xhc3MgX0NoYXJUPgog
ICAgc3RydWN0IGNoYXJfdHJhaXRzCiAgICB7CiAgICAgIHR5cGVkZWYgX0NoYXJUIGNoYXJfdHlw
ZTsKCiAgICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnRfdHlwZTsKICAgICAgdHlwZWRlZiBz
dHJlYW1wb3MgcG9zX3R5cGU7CiAgICAgIHR5cGVkZWYgc3RyZWFtb2ZmIG9mZl90eXBlOwogICAg
ICB0eXBlZGVmIG1ic3RhdGVfdCBzdGF0ZV90eXBlOwoKICAgICAgc3RhdGljIHZvaWQKICAgICAg
YXNzaWduKGNoYXJfdHlwZSYgX19jMSwgY29uc3QgY2hhcl90eXBlJiBfX2MyKTsKCiAgICAgIHN0
YXRpYyBib29sCiAgICAgIGVxKGNvbnN0IGNoYXJfdHlwZSYgX19jMSwgY29uc3QgY2hhcl90eXBl
JiBfX2MyKTsKCiAgICAgIHN0YXRpYyBib29sCiAgICAgIGx0KGNvbnN0IGNoYXJfdHlwZSYgX19j
MSwgY29uc3QgY2hhcl90eXBlJiBfX2MyKTsKCiAgICAgIHN0YXRpYyBpbnQKICAgICAgY29tcGFy
ZShjb25zdCBjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSogX19zMiwgc2l6ZV90IF9f
bik7CgogICAgICBzdGF0aWMgc2l6ZV90CiAgICAgIGxlbmd0aChjb25zdCBjaGFyX3R5cGUqIF9f
cyk7CgogICAgICBzdGF0aWMgY29uc3QgY2hhcl90eXBlKgogICAgICBmaW5kKGNvbnN0IGNoYXJf
dHlwZSogX19zLCBzaXplX3QgX19uLCBjb25zdCBjaGFyX3R5cGUmIF9fYSk7CgogICAgICBzdGF0
aWMgY2hhcl90eXBlKgogICAgICBtb3ZlKGNoYXJfdHlwZSogX19zMSwgY29uc3QgY2hhcl90eXBl
KiBfX3MyLCBzaXplX3QgX19uKTsKCiAgICAgIHN0YXRpYyBjaGFyX3R5cGUqCiAgICAgIGNvcHko
Y2hhcl90eXBlKiBfX3MxLCBjb25zdCBjaGFyX3R5cGUqIF9fczIsIHNpemVfdCBfX24pOwoKICAg
ICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAgYXNzaWduKGNoYXJfdHlwZSogX19zLCBzaXplX3Qg
X19uLCBjaGFyX3R5cGUgX19hKTsKCiAgICAgIHN0YXRpYyBjaGFyX3R5cGUKICAgICAgdG9fY2hh
cl90eXBlKGNvbnN0IGludF90eXBlJiBfX2MpOwoKICAgICAgc3RhdGljIGludF90eXBlCiAgICAg
IHRvX2ludF90eXBlKGNvbnN0IGNoYXJfdHlwZSYgX19jKTsKCiAgICAgIHN0YXRpYyBib29sCiAg
ICAgIGVxX2ludF90eXBlKGNvbnN0IGludF90eXBlJiBfX2MxLCBjb25zdCBpbnRfdHlwZSYgX19j
Mik7CgogICAgICBzdGF0aWMgaW50X3R5cGUKICAgICAgZW9mKCk7CgogICAgICBzdGF0aWMgaW50
X3R5cGUKICAgICAgbm90X2VvZihjb25zdCBpbnRfdHlwZSYgX19jKTsKICAgIH07CgoKCiAgdGVt
cGxhdGU8PgogICAgc3RydWN0IGNoYXJfdHJhaXRzPGNoYXI+CiAgICB7CiAgICAgIHR5cGVkZWYg
Y2hhciBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYgaW50IGludF90eXBlOwogICAgICB0eXBlZGVm
IHN0cmVhbXBvcyBwb3NfdHlwZTsKICAgICAgdHlwZWRlZiBzdHJlYW1vZmYgb2ZmX3R5cGU7CiAg
ICAgIHR5cGVkZWYgbWJzdGF0ZV90IHN0YXRlX3R5cGU7CgogICAgICBzdGF0aWMgdm9pZAogICAg
ICBhc3NpZ24oY2hhcl90eXBlJiBfX2MxLCBjb25zdCBjaGFyX3R5cGUmIF9fYzIpCiAgICAgIHsg
X19jMSA9IF9fYzI7IH0KCiAgICAgIHN0YXRpYyBib29sCiAgICAgIGVxKGNvbnN0IGNoYXJfdHlw
ZSYgX19jMSwgY29uc3QgY2hhcl90eXBlJiBfX2MyKQogICAgICB7IHJldHVybiBfX2MxID09IF9f
YzI7IH0KCiAgICAgIHN0YXRpYyBib29sCiAgICAgIGx0KGNvbnN0IGNoYXJfdHlwZSYgX19jMSwg
Y29uc3QgY2hhcl90eXBlJiBfX2MyKQogICAgICB7IHJldHVybiBfX2MxIDwgX19jMjsgfQoKICAg
ICAgc3RhdGljIGludAogICAgICBjb21wYXJlKGNvbnN0IGNoYXJfdHlwZSogX19zMSwgY29uc3Qg
Y2hhcl90eXBlKiBfX3MyLCBzaXplX3QgX19uKQogICAgICB7IHJldHVybiBtZW1jbXAoX19zMSwg
X19zMiwgX19uKTsgfQoKICAgICAgc3RhdGljIHNpemVfdAogICAgICBsZW5ndGgoY29uc3QgY2hh
cl90eXBlKiBfX3MpCiAgICAgIHsgcmV0dXJuIHN0cmxlbihfX3MpOyB9CgogICAgICBzdGF0aWMg
Y29uc3QgY2hhcl90eXBlKgogICAgICBmaW5kKGNvbnN0IGNoYXJfdHlwZSogX19zLCBzaXplX3Qg
X19uLCBjb25zdCBjaGFyX3R5cGUmIF9fYSkKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcl90eXBlKj4obWVtY2hyKF9fcywgX19hLCBfX24pKTsgfQoKICAgICAgc3RhdGljIGNo
YXJfdHlwZSoKICAgICAgbW92ZShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSogX19z
Miwgc2l6ZV90IF9fbikKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcl90eXBlKj4obWVt
bW92ZShfX3MxLCBfX3MyLCBfX24pKTsgfQoKICAgICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAg
Y29weShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSogX19zMiwgc2l6ZV90IF9fbikK
ICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcl90eXBlKj4obWVtY3B5KF9fczEsIF9fczIs
IF9fbikpOyB9CgogICAgICBzdGF0aWMgY2hhcl90eXBlKgogICAgICBhc3NpZ24oY2hhcl90eXBl
KiBfX3MsIHNpemVfdCBfX24sIGNoYXJfdHlwZSBfX2EpCiAgICAgIHsgcmV0dXJuIHN0YXRpY19j
YXN0PGNoYXJfdHlwZSo+KG1lbXNldChfX3MsIF9fYSwgX19uKSk7IH0KCiAgICAgIHN0YXRpYyBj
aGFyX3R5cGUKICAgICAgdG9fY2hhcl90eXBlKGNvbnN0IGludF90eXBlJiBfX2MpCiAgICAgIHsg
cmV0dXJuIHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oX19jKTsgfQoKCgogICAgICBzdGF0aWMgaW50
X3R5cGUKICAgICAgdG9faW50X3R5cGUoY29uc3QgY2hhcl90eXBlJiBfX2MpCiAgICAgIHsgcmV0
dXJuIHN0YXRpY19jYXN0PGludF90eXBlPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihfX2Mp
KTsgfQoKICAgICAgc3RhdGljIGJvb2wKICAgICAgZXFfaW50X3R5cGUoY29uc3QgaW50X3R5cGUm
IF9fYzEsIGNvbnN0IGludF90eXBlJiBfX2MyKQogICAgICB7IHJldHVybiBfX2MxID09IF9fYzI7
IH0KCiAgICAgIHN0YXRpYyBpbnRfdHlwZQogICAgICBlb2YoKSB7IHJldHVybiBzdGF0aWNfY2Fz
dDxpbnRfdHlwZT4oKC0xKSk7IH0KCiAgICAgIHN0YXRpYyBpbnRfdHlwZQogICAgICBub3RfZW9m
KGNvbnN0IGludF90eXBlJiBfX2MpCiAgICAgIHsgcmV0dXJuIChfX2MgPT0gZW9mKCkpID8gMCA6
IF9fYzsgfQogIH07CiMgMjUwICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2dj
Yy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvY2hhcl90cmFpdHMuaCIg
MwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0cnVj
dCBfQ2hhcl90cmFpdHNfbWF0Y2gKICAgIHsKICAgICAgX0NoYXJUIF9NX2M7CiAgICAgIF9DaGFy
X3RyYWl0c19tYXRjaChfQ2hhclQgY29uc3QmIF9fYykgOiBfTV9jKF9fYykgeyB9CgogICAgICBi
b29sCiAgICAgIG9wZXJhdG9yKCkoX0NoYXJUIGNvbnN0JiBfX2EpIHsgcmV0dXJuIF9UcmFpdHM6
OmVxKF9NX2MsIF9fYSk7IH0KICAgIH07Cn0KIyA0OCAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0
ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9zdHJpbmci
IDIgMwojIDEgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2
LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvbWVtb3J5IiAxIDMKIyA1MyAiL2hvbWUvQWRtaW5p
c3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRl
L2MrKy9tZW1vcnkiIDMKCiMgMSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9n
Y2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdvYmFzZS5o
IiAxIDMKIyA2NiAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2
ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzCiMgMSAi
L2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2lu
LzMuNC9pbmNsdWRlL2MrKy9jbGltaXRzIiAxIDMKIyA0OCAiL2hvbWUvQWRtaW5pc3RyYXRvci9n
Y2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9jbGlt
aXRzIiAzCgojIDEgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9p
Njg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9saW1pdHMuaCIgMSAzIDQKIyAxMSAiL2hvbWUvQWRt
aW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNs
dWRlL2xpbWl0cy5oIiAzIDQKIyAxICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGli
L2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvc3lzbGltaXRzLmgiIDEgMyA0CgoK
CgoKCiMgMSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYt
cGMtY3lnd2luLzMuNC9pbmNsdWRlL2xpbWl0cy5oIiAxIDMgNAojIDEyMiAiL2hvbWUvQWRtaW5p
c3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRl
L2xpbWl0cy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDEgMyA0CiMgMTIzICIv
aG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4v
My40L2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0CiMgOCAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0
ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL3N5c2xpbWl0cy5o
IiAyIDMgNAojIDEyICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIv
aTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0CiMgNTAgIi9ob21lL0Fk
bWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5j
bHVkZS9jKysvY2xpbWl0cyIgMiAzCiMgNjcgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGlu
Zy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfYWxn
b2Jhc2UuaCIgMiAzCiMgMSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2Mt
bGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9jc3RkbGliIiAxIDMKIyA0OCAiL2hv
bWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMu
NC9pbmNsdWRlL2MrKy9jc3RkbGliIiAzCgoKCgojIDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg
MSAzIDQKIyAxNCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKIyAxICIvaG9tZS9BZG1pbmlz
dHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUv
c3RkZGVmLmgiIDEgMyA0CiMgMTUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzIDQKCgojIDEg
Ii91c3IvaW5jbHVkZS9tYWNoaW5lL3N0ZGxpYi5oIiAxIDMgNAojIDE4ICIvdXNyL2luY2x1ZGUv
c3RkbGliLmgiIDIgMyA0CgojIDEgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMSAzIDQKIyAyMCAi
L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMgNAoKCmV4dGVybiAiQyIgewoKdHlwZWRlZiBzdHJ1
Y3QKewogIGludCBxdW90OwogIGludCByZW07Cn0gZGl2X3Q7Cgp0eXBlZGVmIHN0cnVjdAp7CiAg
bG9uZyBxdW90OwogIGxvbmcgcmVtOwp9IGxkaXZfdDsKIyA0NSAiL3Vzci9pbmNsdWRlL3N0ZGxp
Yi5oIiAzIDQKZXh0ZXJuIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGludCBfX21iX2N1cl9t
YXg7CgoKCnZvaWQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgYWJvcnQgKHZvaWQpIF9fYXR0
cmlidXRlX18gKChub3JldHVybikpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgYWJz
IChpbnQpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgYXRleGl0ICh2b2lkICgqX19m
dW5jKSh2b2lkKSk7CmRvdWJsZSBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBhdG9mIChjb25z
dCBjaGFyICpfX25wdHIpOwoKZmxvYXQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgYXRvZmYg
KGNvbnN0IGNoYXIgKl9fbnB0cik7CgppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgYXRv
aSAoY29uc3QgY2hhciAqX19ucHRyKTsKbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBh
dG9sIChjb25zdCBjaGFyICpfX25wdHIpOwp2b2lkICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9f
KSkgYnNlYXJjaCAoY29uc3Qgdm9pZCAqIF9fa2V5LCBjb25zdCB2b2lkICogX19iYXNlLCBzaXpl
X3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwgaW50ICgqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xf
XykpIF9jb21wYXIpIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwoKCgoKdm9pZCAqIF9f
YXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGNhbGxvYyAoc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBf
X3NpemUpOwpkaXZfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBkaXYgKGludCBfX251bWVy
LCBpbnQgX19kZW5vbSk7CnZvaWQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZXhpdCAoaW50
IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4pKTsKdm9pZCBfX2F0dHJpYnV0ZV9f
KChfX2NkZWNsX18pKSBmcmVlICh2b2lkICopOwpjaGFyICogX19hdHRyaWJ1dGVfXygoX19jZGVj
bF9fKSkgZ2V0ZW52IChjb25zdCBjaGFyICpfX3N0cmluZyk7CmNoYXIgKiBfX2F0dHJpYnV0ZV9f
KChfX2NkZWNsX18pKSBfZ2V0ZW52X3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqX19z
dHJpbmcpOwpjaGFyICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX2ZpbmRlbnYgKGNvbnN0
IGNoYXIgKiwgaW50ICopOwpjaGFyICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX2ZpbmRl
bnZfciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICosIGludCAqKTsKbG9uZyBfX2F0dHJp
YnV0ZV9fKChfX2NkZWNsX18pKSBsYWJzIChsb25nKTsKbGRpdl90IF9fYXR0cmlidXRlX18oKF9f
Y2RlY2xfXykpIGxkaXYgKGxvbmcgX19udW1lciwgbG9uZyBfX2Rlbm9tKTsKdm9pZCAqIF9fYXR0
cmlidXRlX18oKF9fY2RlY2xfXykpIG1hbGxvYyAoc2l6ZV90IF9fc2l6ZSk7CmludCBfX2F0dHJp
YnV0ZV9fKChfX2NkZWNsX18pKSBtYmxlbiAoY29uc3QgY2hhciAqLCBzaXplX3QpOwppbnQgX19h
dHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX21ibGVuX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3Qg
Y2hhciAqLCBzaXplX3QsIF9tYnN0YXRlX3QgKik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNs
X18pKSBtYnRvd2MgKHdjaGFyX3QgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwppbnQgX19hdHRy
aWJ1dGVfXygoX19jZGVjbF9fKSkgX21idG93Y19yIChzdHJ1Y3QgX3JlZW50ICosIHdjaGFyX3Qg
KiwgY29uc3QgY2hhciAqLCBzaXplX3QsIF9tYnN0YXRlX3QgKik7CmludCBfX2F0dHJpYnV0ZV9f
KChfX2NkZWNsX18pKSB3Y3RvbWIgKGNoYXIgKiwgd2NoYXJfdCk7CmludCBfX2F0dHJpYnV0ZV9f
KChfX2NkZWNsX18pKSBfd2N0b21iX3IgKHN0cnVjdCBfcmVlbnQgKiwgY2hhciAqLCB3Y2hhcl90
LCBfbWJzdGF0ZV90ICopOwpzaXplX3QgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgbWJzdG93
Y3MgKHdjaGFyX3QgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwpzaXplX3QgX19hdHRyaWJ1dGVf
XygoX19jZGVjbF9fKSkgX21ic3Rvd2NzX3IgKHN0cnVjdCBfcmVlbnQgKiwgd2NoYXJfdCAqLCBj
b25zdCBjaGFyICosIHNpemVfdCwgX21ic3RhdGVfdCAqKTsKc2l6ZV90IF9fYXR0cmlidXRlX18o
KF9fY2RlY2xfXykpIHdjc3RvbWJzIChjaGFyICosIGNvbnN0IHdjaGFyX3QgKiwgc2l6ZV90KTsK
c2l6ZV90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF93Y3N0b21ic19yIChzdHJ1Y3QgX3Jl
ZW50ICosIGNoYXIgKiwgY29uc3Qgd2NoYXJfdCAqLCBzaXplX3QsIF9tYnN0YXRlX3QgKik7CgoK
aW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIG1rc3RlbXAgKGNoYXIgKik7CmNoYXIgKiBf
X2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBta3RlbXAgKGNoYXIgKik7CgoKdm9pZCBfX2F0dHJp
YnV0ZV9fKChfX2NkZWNsX18pKSBxc29ydCAodm9pZCAqIF9fYmFzZSwgc2l6ZV90IF9fbm1lbWIs
IHNpemVfdCBfX3NpemUsIGludCgqX2NvbXBhcikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICop
KTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHJhbmQgKHZvaWQpOwp2b2lkICogX19h
dHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgcmVhbGxvYyAodm9pZCAqIF9fciwgc2l6ZV90IF9fc2l6
ZSk7CnZvaWQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3JhbmQgKHVuc2lnbmVkIF9fc2Vl
ZCk7CmRvdWJsZSBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzdHJ0b2QgKGNvbnN0IGNoYXIg
Kl9fbiwgY2hhciAqKl9fZW5kX1BUUik7CmRvdWJsZSBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18p
KSBfc3RydG9kX3IgKHN0cnVjdCBfcmVlbnQgKixjb25zdCBjaGFyICpfX24sIGNoYXIgKipfX2Vu
ZF9QVFIpOwpmbG9hdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzdHJ0b2YgKGNvbnN0IGNo
YXIgKl9fbiwgY2hhciAqKl9fZW5kX1BUUik7CgoKCgoKCmxvbmcgX19hdHRyaWJ1dGVfXygoX19j
ZGVjbF9fKSkgc3RydG9sIChjb25zdCBjaGFyICpfX24sIGNoYXIgKipfX2VuZF9QVFIsIGludCBf
X2Jhc2UpOwpsb25nIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9zdHJ0b2xfciAoc3RydWN0
IF9yZWVudCAqLGNvbnN0IGNoYXIgKl9fbiwgY2hhciAqKl9fZW5kX1BUUiwgaW50IF9fYmFzZSk7
CnVuc2lnbmVkIGxvbmcgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3RydG91bCAoY29uc3Qg
Y2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRSLCBpbnQgX19iYXNlKTsKdW5zaWduZWQgbG9uZyBf
X2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfc3RydG91bF9yIChzdHJ1Y3QgX3JlZW50ICosY29u
c3QgY2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRSLCBpbnQgX19iYXNlKTsKCmludCBfX2F0dHJp
YnV0ZV9fKChfX2NkZWNsX18pKSBzeXN0ZW0gKGNvbnN0IGNoYXIgKl9fc3RyaW5nKTsKCgpsb25n
IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGE2NGwgKGNvbnN0IGNoYXIgKl9faW5wdXQpOwpj
aGFyICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgbDY0YSAobG9uZyBfX2lucHV0KTsKY2hh
ciAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9sNjRhX3IgKHN0cnVjdCBfcmVlbnQgKixs
b25nIF9faW5wdXQpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgb25fZXhpdCAodm9p
ZCAoKl9fZnVuYykoaW50LCB2b2lkICopLHZvaWQgKiBfX2FyZyk7CnZvaWQgX19hdHRyaWJ1dGVf
XygoX19jZGVjbF9fKSkgX0V4aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKG5vcmV0
dXJuKSk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBwdXRlbnYgKGNvbnN0IGNoYXIg
Kl9fc3RyaW5nKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9wdXRlbnZfciAoc3Ry
dWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICpfX3N0cmluZyk7CmludCBfX2F0dHJpYnV0ZV9fKChf
X2NkZWNsX18pKSBzZXRlbnYgKGNvbnN0IGNoYXIgKl9fc3RyaW5nLCBjb25zdCBjaGFyICpfX3Zh
bHVlLCBpbnQgX19vdmVyd3JpdGUpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX3Nl
dGVudl9yIChzdHJ1Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIgKl9fc3RyaW5nLCBjb25zdCBjaGFy
ICpfX3ZhbHVlLCBpbnQgX19vdmVyd3JpdGUpOwoKY2hhciAqIF9fYXR0cmlidXRlX18oKF9fY2Rl
Y2xfXykpIGdjdnQgKGRvdWJsZSxpbnQsY2hhciAqKTsKY2hhciAqIF9fYXR0cmlidXRlX18oKF9f
Y2RlY2xfXykpIGdjdnRmIChmbG9hdCxpbnQsY2hhciAqKTsKY2hhciAqIF9fYXR0cmlidXRlX18o
KF9fY2RlY2xfXykpIGZjdnQgKGRvdWJsZSxpbnQsaW50ICosaW50ICopOwpjaGFyICogX19hdHRy
aWJ1dGVfXygoX19jZGVjbF9fKSkgZmN2dGYgKGZsb2F0LGludCxpbnQgKixpbnQgKik7CmNoYXIg
KiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBlY3Z0IChkb3VibGUsaW50LGludCAqLGludCAq
KTsKY2hhciAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGVjdnRidWYgKGRvdWJsZSwgaW50
LCBpbnQqLCBpbnQqLCBjaGFyICopOwpjaGFyICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkg
ZmN2dGJ1ZiAoZG91YmxlLCBpbnQsIGludCosIGludCosIGNoYXIgKik7CmNoYXIgKiBfX2F0dHJp
YnV0ZV9fKChfX2NkZWNsX18pKSBlY3Z0ZiAoZmxvYXQsaW50LGludCAqLGludCAqKTsKY2hhciAq
IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGR0b2EgKGRvdWJsZSwgaW50LCBpbnQsIGludCAq
LCBpbnQqLCBjaGFyKiopOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgcmFuZF9yICh1
bnNpZ25lZCAqX19zZWVkKTsKCmRvdWJsZSBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBkcmFu
ZDQ4ICh2b2lkKTsKZG91YmxlIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9kcmFuZDQ4X3Ig
KHN0cnVjdCBfcmVlbnQgKik7CmRvdWJsZSBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBlcmFu
ZDQ4ICh1bnNpZ25lZCBzaG9ydCBbM10pOwpkb3VibGUgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9f
KSkgX2VyYW5kNDhfciAoc3RydWN0IF9yZWVudCAqLCB1bnNpZ25lZCBzaG9ydCBbM10pOwpsb25n
IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGpyYW5kNDggKHVuc2lnbmVkIHNob3J0IFszXSk7
CmxvbmcgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX2pyYW5kNDhfciAoc3RydWN0IF9yZWVu
dCAqLCB1bnNpZ25lZCBzaG9ydCBbM10pOwp2b2lkIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykp
IGxjb25nNDggKHVuc2lnbmVkIHNob3J0IFs3XSk7CnZvaWQgX19hdHRyaWJ1dGVfXygoX19jZGVj
bF9fKSkgX2xjb25nNDhfciAoc3RydWN0IF9yZWVudCAqLCB1bnNpZ25lZCBzaG9ydCBbN10pOwps
b25nIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGxyYW5kNDggKHZvaWQpOwpsb25nIF9fYXR0
cmlidXRlX18oKF9fY2RlY2xfXykpIF9scmFuZDQ4X3IgKHN0cnVjdCBfcmVlbnQgKik7Cmxvbmcg
X19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgbXJhbmQ0OCAodm9pZCk7CmxvbmcgX19hdHRyaWJ1
dGVfXygoX19jZGVjbF9fKSkgX21yYW5kNDhfciAoc3RydWN0IF9yZWVudCAqKTsKbG9uZyBfX2F0
dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBucmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBbM10pOwpsb25n
IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9ucmFuZDQ4X3IgKHN0cnVjdCBfcmVlbnQgKiwg
dW5zaWduZWQgc2hvcnQgWzNdKTsKdW5zaWduZWQgc2hvcnQgKgogICAgICAgX19hdHRyaWJ1dGVf
XygoX19jZGVjbF9fKSkgc2VlZDQ4ICh1bnNpZ25lZCBzaG9ydCBbM10pOwp1bnNpZ25lZCBzaG9y
dCAqCiAgICAgICBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfc2VlZDQ4X3IgKHN0cnVjdCBf
cmVlbnQgKiwgdW5zaWduZWQgc2hvcnQgWzNdKTsKdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNs
X18pKSBzcmFuZDQ4IChsb25nKTsKdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfc3Jh
bmQ0OF9yIChzdHJ1Y3QgX3JlZW50ICosIGxvbmcpOwpsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygo
X19jZGVjbF9fKSkgc3RydG9sbCAoY29uc3QgY2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRSLCBp
bnQgX19iYXNlKTsKbG9uZyBsb25nIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9zdHJ0b2xs
X3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRSLCBp
bnQgX19iYXNlKTsKdW5zaWduZWQgbG9uZyBsb25nIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykp
IHN0cnRvdWxsIChjb25zdCBjaGFyICpfX24sIGNoYXIgKipfX2VuZF9QVFIsIGludCBfX2Jhc2Up
Owp1bnNpZ25lZCBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX3N0cnRvdWxs
X3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRSLCBp
bnQgX19iYXNlKTsKCgoKCmNoYXIgKiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSByZWFscGF0
aCAoY29uc3QgY2hhciAqLCBjaGFyICopOwp2b2lkIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykp
IHVuc2V0ZW52IChjb25zdCBjaGFyICpfX3N0cmluZyk7CnZvaWQgX19hdHRyaWJ1dGVfXygoX19j
ZGVjbF9fKSkgX3Vuc2V0ZW52X3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqX19zdHJp
bmcpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgcmFuZG9tICh2b2lkKTsKbG9uZyBf
X2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzcmFuZG9tICh1bnNpZ25lZCBfX3NlZWQpOwpjaGFy
ICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgcHRzbmFtZSAoaW50KTsKaW50IF9fYXR0cmli
dXRlX18oKF9fY2RlY2xfXykpIGdyYW50cHQgKGludCk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2Nk
ZWNsX18pKSB1bmxvY2twdCAoaW50KTsKCgoKCmNoYXIgKiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNs
X18pKSBfZHRvYV9yIChzdHJ1Y3QgX3JlZW50ICosIGRvdWJsZSwgaW50LCBpbnQsIGludCAqLCBp
bnQqLCBjaGFyKiopOwoKCgoKCgoKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9zeXN0
ZW1fciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICopOwoKdm9pZCBfX2F0dHJpYnV0ZV9f
KChfX2NkZWNsX18pKSBfX2VwcmludGYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB1bnNp
Z25lZCBpbnQsIGNvbnN0IGNoYXIgKik7CiMgMjEzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMg
NAp9CiMgNTMgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2
LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvY3N0ZGxpYiIgMiAzCiMgODQgIi9ob21lL0FkbWlu
aXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVk
ZS9jKysvY3N0ZGxpYiIgMwpuYW1lc3BhY2Ugc3RkCnsKICB1c2luZyA6OmRpdl90OwogIHVzaW5n
IDo6bGRpdl90OwoKICB1c2luZyA6OmFib3J0OwogIHVzaW5nIDo6YWJzOwogIHVzaW5nIDo6YXRl
eGl0OwogIHVzaW5nIDo6YXRvZjsKICB1c2luZyA6OmF0b2k7CiAgdXNpbmcgOjphdG9sOwogIHVz
aW5nIDo6YnNlYXJjaDsKICB1c2luZyA6OmNhbGxvYzsKICB1c2luZyA6OmRpdjsKICB1c2luZyA6
OmV4aXQ7CiAgdXNpbmcgOjpmcmVlOwogIHVzaW5nIDo6Z2V0ZW52OwogIHVzaW5nIDo6bGFiczsK
ICB1c2luZyA6OmxkaXY7CiAgdXNpbmcgOjptYWxsb2M7CiAgdXNpbmcgOjptYmxlbjsKICB1c2lu
ZyA6Om1ic3Rvd2NzOwogIHVzaW5nIDo6bWJ0b3djOwogIHVzaW5nIDo6cXNvcnQ7CiAgdXNpbmcg
OjpyYW5kOwogIHVzaW5nIDo6cmVhbGxvYzsKICB1c2luZyA6OnNyYW5kOwogIHVzaW5nIDo6c3Ry
dG9kOwogIHVzaW5nIDo6c3RydG9sOwogIHVzaW5nIDo6c3RydG91bDsKICB1c2luZyA6OnN5c3Rl
bTsKICB1c2luZyA6Ondjc3RvbWJzOwogIHVzaW5nIDo6d2N0b21iOwoKICBpbmxpbmUgbG9uZwog
IGFicyhsb25nIF9faSkgeyByZXR1cm4gbGFicyhfX2kpOyB9CgogIGlubGluZSBsZGl2X3QKICBk
aXYobG9uZyBfX2ksIGxvbmcgX19qKSB7IHJldHVybiBsZGl2KF9faSwgX19qKTsgfQp9CiMgNjgg
Ii9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dp
bi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMiAzCgojIDEgIi9ob21lL0Fk
bWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5j
bHVkZS9jKysvbmV3IiAxIDMKIyA0MiAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xp
Yi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9uZXciIDMKIyAxICIvaG9t
ZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40
L2luY2x1ZGUvYysrL2V4Y2VwdGlvbiIgMSAzCiMgNDAgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2Nj
dGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvZXhjZXB0
aW9uIiAzCmV4dGVybiAiQysrIiB7CgpuYW1lc3BhY2Ugc3RkCnsKIyA1MiAiL2hvbWUvQWRtaW5p
c3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRl
L2MrKy9leGNlcHRpb24iIDMKICBjbGFzcyBleGNlcHRpb24KICB7CiAgcHVibGljOgogICAgZXhj
ZXB0aW9uKCkgdGhyb3coKSB7IH0KICAgIHZpcnR1YWwgfmV4Y2VwdGlvbigpIHRocm93KCk7CgoK
ICAgIHZpcnR1YWwgY29uc3QgY2hhciogd2hhdCgpIGNvbnN0IHRocm93KCk7CiAgfTsKCgoKICBj
bGFzcyBiYWRfZXhjZXB0aW9uIDogcHVibGljIGV4Y2VwdGlvbgogIHsKICBwdWJsaWM6CiAgICBi
YWRfZXhjZXB0aW9uKCkgdGhyb3coKSB7IH0KCgogICAgdmlydHVhbCB+YmFkX2V4Y2VwdGlvbigp
IHRocm93KCk7CiAgfTsKCgogIHR5cGVkZWYgdm9pZCAoKnRlcm1pbmF0ZV9oYW5kbGVyKSAoKTsK
CiAgdHlwZWRlZiB2b2lkICgqdW5leHBlY3RlZF9oYW5kbGVyKSAoKTsKCgogIHRlcm1pbmF0ZV9o
YW5kbGVyIHNldF90ZXJtaW5hdGUodGVybWluYXRlX2hhbmRsZXIpIHRocm93KCk7CgoKICB2b2lk
IHRlcm1pbmF0ZSgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgogIHVuZXhwZWN0
ZWRfaGFuZGxlciBzZXRfdW5leHBlY3RlZCh1bmV4cGVjdGVkX2hhbmRsZXIpIHRocm93KCk7CgoK
ICB2b2lkIHVuZXhwZWN0ZWQoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CiMgMTAw
ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3
aW4vMy40L2luY2x1ZGUvYysrL2V4Y2VwdGlvbiIgMwogIGJvb2wgdW5jYXVnaHRfZXhjZXB0aW9u
KCkgdGhyb3coKTsKfQoKbmFtZXNwYWNlIF9fZ251X2N4eAp7CiMgMTE1ICIvaG9tZS9BZG1pbmlz
dHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUv
YysrL2V4Y2VwdGlvbiIgMwogIHZvaWQgX192ZXJib3NlX3Rlcm1pbmF0ZV9oYW5kbGVyICgpOwp9
Cgp9CiMgNDMgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2
LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvbmV3IiAyIDMKCmV4dGVybiAiQysrIiB7CgpuYW1l
c3BhY2Ugc3RkCnsKCgoKCgogIGNsYXNzIGJhZF9hbGxvYyA6IHB1YmxpYyBleGNlcHRpb24KICB7
CiAgcHVibGljOgogICAgYmFkX2FsbG9jKCkgdGhyb3coKSB7IH0KCgogICAgdmlydHVhbCB+YmFk
X2FsbG9jKCkgdGhyb3coKTsKICB9OwoKICBzdHJ1Y3Qgbm90aHJvd190IHsgfTsKICBleHRlcm4g
Y29uc3Qgbm90aHJvd190IG5vdGhyb3c7CgoKICB0eXBlZGVmIHZvaWQgKCpuZXdfaGFuZGxlciko
KTsKCiAgbmV3X2hhbmRsZXIgc2V0X25ld19oYW5kbGVyKG5ld19oYW5kbGVyKSB0aHJvdygpOwp9
CiMgODIgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBj
LWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvbmV3IiAzCnZvaWQqIG9wZXJhdG9yIG5ldyhzdGQ6OnNp
emVfdCkgdGhyb3cgKHN0ZDo6YmFkX2FsbG9jKTsKdm9pZCogb3BlcmF0b3IgbmV3W10oc3RkOjpz
aXplX3QpIHRocm93IChzdGQ6OmJhZF9hbGxvYyk7CnZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQq
KSB0aHJvdygpOwp2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqKSB0aHJvdygpOwp2b2lkKiBv
cGVyYXRvciBuZXcoc3RkOjpzaXplX3QsIGNvbnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKTsK
dm9pZCogb3BlcmF0b3IgbmV3W10oc3RkOjpzaXplX3QsIGNvbnN0IHN0ZDo6bm90aHJvd190Jikg
dGhyb3coKTsKdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCosIGNvbnN0IHN0ZDo6bm90aHJvd190
JikgdGhyb3coKTsKdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiwgY29uc3Qgc3RkOjpub3Ro
cm93X3QmKSB0aHJvdygpOwoKCmlubGluZSB2b2lkKiBvcGVyYXRvciBuZXcoc3RkOjpzaXplX3Qs
IHZvaWQqIF9fcCkgdGhyb3coKSB7IHJldHVybiBfX3A7IH0KaW5saW5lIHZvaWQqIG9wZXJhdG9y
IG5ld1tdKHN0ZDo6c2l6ZV90LCB2b2lkKiBfX3ApIHRocm93KCkgeyByZXR1cm4gX19wOyB9CgoK
aW5saW5lIHZvaWQgb3BlcmF0b3IgZGVsZXRlICh2b2lkKiwgdm9pZCopIHRocm93KCkgeyB9Cmlu
bGluZSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqLCB2b2lkKikgdGhyb3coKSB7IH0KCn0K
IyA3MCAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMt
Y3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdvYmFzZS5oIiAyIDMKIyAxICIvaG9t
ZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40
L2luY2x1ZGUvYysrL2lvc2Z3ZCIgMSAzCiMgNDQgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVz
dGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvaW9zZndkIiAz
CgoKIyAxICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1w
Yy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2k2ODYtcGMtY3lnd2luL2JpdHMvYysrbG9jYWxlLmgi
IDEgMwojIDQwICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4
Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2k2ODYtcGMtY3lnd2luL2JpdHMvYysrbG9jYWxl
LmgiIDMKCiMgMSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2
ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9jbG9jYWxlIiAxIDMKIyA0OCAiL2hvbWUvQWRt
aW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNs
dWRlL2MrKy9jbG9jYWxlIiAzCgojIDEgIi91c3IvaW5jbHVkZS9sb2NhbGUuaCIgMSAzIDQKIyAy
NCAiL3Vzci9pbmNsdWRlL2xvY2FsZS5oIiAzIDQKZXh0ZXJuICJDIiB7CgpzdHJ1Y3QgbGNvbnYK
ewogIGNoYXIgKmRlY2ltYWxfcG9pbnQ7CiAgY2hhciAqdGhvdXNhbmRzX3NlcDsKICBjaGFyICpn
cm91cGluZzsKICBjaGFyICppbnRfY3Vycl9zeW1ib2w7CiAgY2hhciAqY3VycmVuY3lfc3ltYm9s
OwogIGNoYXIgKm1vbl9kZWNpbWFsX3BvaW50OwogIGNoYXIgKm1vbl90aG91c2FuZHNfc2VwOwog
IGNoYXIgKm1vbl9ncm91cGluZzsKICBjaGFyICpwb3NpdGl2ZV9zaWduOwogIGNoYXIgKm5lZ2F0
aXZlX3NpZ247CiAgY2hhciBpbnRfZnJhY19kaWdpdHM7CiAgY2hhciBmcmFjX2RpZ2l0czsKICBj
aGFyIHBfY3NfcHJlY2VkZXM7CiAgY2hhciBwX3NlcF9ieV9zcGFjZTsKICBjaGFyIG5fY3NfcHJl
Y2VkZXM7CiAgY2hhciBuX3NlcF9ieV9zcGFjZTsKICBjaGFyIHBfc2lnbl9wb3NuOwogIGNoYXIg
bl9zaWduX3Bvc247Cn07CgoKY2hhciAqX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc2V0bG9j
YWxlIChpbnQgY2F0ZWdvcnksIGNvbnN0IGNoYXIgKmxvY2FsZSk7CnN0cnVjdCBsY29udiAqX19h
dHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgbG9jYWxlY29udiAodm9pZCk7CgoKc3RydWN0IF9yZWVu
dDsKY2hhciAqX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX3NldGxvY2FsZV9yIChzdHJ1Y3Qg
X3JlZW50ICosIGludCBjYXRlZ29yeSwgY29uc3QgY2hhciAqbG9jYWxlKTsKc3RydWN0IGxjb252
ICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfbG9jYWxlY29udl9yIChzdHJ1Y3QgX3JlZW50
ICopOwoKfQojIDUwICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIv
aTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2Nsb2NhbGUiIDIgMwoKCgoKCm5hbWVzcGFj
ZSBzdGQKewogIHVzaW5nIDo6bGNvbnY7CiAgdXNpbmcgOjpzZXRsb2NhbGU7CiAgdXNpbmcgOjps
b2NhbGVjb252Owp9CiMgNDIgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvaTY4Ni1wYy1jeWd3aW4vYml0cy9j
Kytsb2NhbGUuaCIgMiAzCgoKCm5hbWVzcGFjZSBzdGQKewogIHR5cGVkZWYgaW50KiBfX2NfbG9j
YWxlOwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1R2PgogICAgaW50CiAgICBfX2NvbnZlcnRf
ZnJvbV92KGNoYXIqIF9fb3V0LCBjb25zdCBpbnQgX19zaXplLCBjb25zdCBjaGFyKiBfX2ZtdCwK
ICAgICAgICAgICAgICAgICAgICAgX1R2IF9fdiwgY29uc3QgX19jX2xvY2FsZSYsIGludCBfX3By
ZWMgPSAtMSkKICAgIHsKICAgICAgY2hhciogX19vbGQgPSBzZXRsb2NhbGUoMCwgX19udWxsKTsK
ICAgICAgY2hhciogX19zYXYgPSBzdGF0aWNfY2FzdDxjaGFyKj4obWFsbG9jKHN0cmxlbihfX29s
ZCkgKyAxKSk7CiAgICAgIGlmIChfX3NhdikKICAgICAgICBzdHJjcHkoX19zYXYsIF9fb2xkKTsK
ICAgICAgc2V0bG9jYWxlKDAsICJDIik7CgogICAgICBpbnQgX19yZXQ7CgoKCgoKCiAgICAgIGlm
IChfX3ByZWMgPj0gMCkKICAgICAgICBfX3JldCA9IHNwcmludGYoX19vdXQsIF9fZm10LCBfX3By
ZWMsIF9fdik7CiAgICAgIGVsc2UKICAgICAgICBfX3JldCA9IHNwcmludGYoX19vdXQsIF9fZm10
LCBfX3YpOwoKICAgICAgc2V0bG9jYWxlKDAsIF9fc2F2KTsKICAgICAgZnJlZShfX3Nhdik7CiAg
ICAgIHJldHVybiBfX3JldDsKICAgIH0KfQojIDQ3ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rl
c3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2lvc2Z3ZCIg
MiAzCiMgMSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYt
cGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9jY3R5cGUiIDEgMwojIDQ3ICIvaG9tZS9BZG1pbmlz
dHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUv
YysrL2NjdHlwZSIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDEgMyA0CgoKCgoKZXh0
ZXJuICJDIiB7CgppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgaXNhbG51bSAoaW50IF9f
Yyk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBpc2FscGhhIChpbnQgX19jKTsKaW50
IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGlzY250cmwgKGludCBfX2MpOwppbnQgX19hdHRy
aWJ1dGVfXygoX19jZGVjbF9fKSkgaXNkaWdpdCAoaW50IF9fYyk7CmludCBfX2F0dHJpYnV0ZV9f
KChfX2NkZWNsX18pKSBpc2dyYXBoIChpbnQgX19jKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2Rl
Y2xfXykpIGlzbG93ZXIgKGludCBfX2MpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkg
aXNwcmludCAoaW50IF9fYyk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBpc3B1bmN0
IChpbnQgX19jKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGlzc3BhY2UgKGludCBf
X2MpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgaXN1cHBlciAoaW50IF9fYyk7Cmlu
dCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBpc3hkaWdpdCAoaW50IF9fYyk7CmludCBfX2F0
dHJpYnV0ZV9fKChfX2NkZWNsX18pKSB0b2xvd2VyIChpbnQgX19jKTsKaW50IF9fYXR0cmlidXRl
X18oKF9fY2RlY2xfXykpIHRvdXBwZXIgKGludCBfX2MpOwoKCmludCBfX2F0dHJpYnV0ZV9fKChf
X2NkZWNsX18pKSBpc2JsYW5rIChpbnQgX19jKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xf
XykpIGlzYXNjaWkgKGludCBfX2MpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgdG9h
c2NpaSAoaW50IF9fYyk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfdG9sb3dlciAo
aW50IF9fYyk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfdG91cHBlciAoaW50IF9f
Yyk7CiMgMzkgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzIDQKZXh0ZXJuIF9fYXR0cmlidXRlX18o
KGRsbGltcG9ydCkpIGNvbnN0IGNoYXIgX2N0eXBlX1tdOwojIDY4ICIvdXNyL2luY2x1ZGUvY3R5
cGUuaCIgMyA0Cn0KIyA1MCAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2Mt
bGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9jY3R5cGUiIDIgMwojIDY2ICIvaG9t
ZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40
L2luY2x1ZGUvYysrL2NjdHlwZSIgMwpuYW1lc3BhY2Ugc3RkCnsKICB1c2luZyA6OmlzYWxudW07
CiAgdXNpbmcgOjppc2FscGhhOwogIHVzaW5nIDo6aXNjbnRybDsKICB1c2luZyA6OmlzZGlnaXQ7
CiAgdXNpbmcgOjppc2dyYXBoOwogIHVzaW5nIDo6aXNsb3dlcjsKICB1c2luZyA6OmlzcHJpbnQ7
CiAgdXNpbmcgOjppc3B1bmN0OwogIHVzaW5nIDo6aXNzcGFjZTsKICB1c2luZyA6OmlzdXBwZXI7
CiAgdXNpbmcgOjppc3hkaWdpdDsKICB1c2luZyA6OnRvbG93ZXI7CiAgdXNpbmcgOjp0b3VwcGVy
Owp9CiMgNDggIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2
LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvaW9zZndkIiAyIDMKCgojIDEgIi9ob21lL0FkbWlu
aXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVk
ZS9jKysvYml0cy9mdW5jdGV4Y2VwdC5oIiAxIDMKIyAzNCAiL2hvbWUvQWRtaW5pc3RyYXRvci9n
Y2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRz
L2Z1bmN0ZXhjZXB0LmgiIDMKIyAxICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGli
L2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2V4Y2VwdGlvbl9kZWZpbmVz
LmgiIDEgMwojIDM1ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIv
aTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvZnVuY3RleGNlcHQuaCIgMiAzCgpu
YW1lc3BhY2Ugc3RkCnsKCiAgdm9pZAogIF9fdGhyb3dfYmFkX2V4Y2VwdGlvbih2b2lkKTsKCgog
IHZvaWQKICBfX3Rocm93X2JhZF9hbGxvYyh2b2lkKTsKCgogIHZvaWQKICBfX3Rocm93X2JhZF9j
YXN0KHZvaWQpOwoKICB2b2lkCiAgX190aHJvd19iYWRfdHlwZWlkKHZvaWQpOwoKCiAgdm9pZAog
IF9fdGhyb3dfbG9naWNfZXJyb3IoY29uc3QgY2hhciogX19zKTsKCiAgdm9pZAogIF9fdGhyb3df
ZG9tYWluX2Vycm9yKGNvbnN0IGNoYXIqIF9fcyk7CgogIHZvaWQKICBfX3Rocm93X2ludmFsaWRf
YXJndW1lbnQoY29uc3QgY2hhciogX19zKTsKCiAgdm9pZAogIF9fdGhyb3dfbGVuZ3RoX2Vycm9y
KGNvbnN0IGNoYXIqIF9fcyk7CgogIHZvaWQKICBfX3Rocm93X291dF9vZl9yYW5nZShjb25zdCBj
aGFyKiBfX3MpOwoKICB2b2lkCiAgX190aHJvd19ydW50aW1lX2Vycm9yKGNvbnN0IGNoYXIqIF9f
cyk7CgogIHZvaWQKICBfX3Rocm93X3JhbmdlX2Vycm9yKGNvbnN0IGNoYXIqIF9fcyk7CgogIHZv
aWQKICBfX3Rocm93X292ZXJmbG93X2Vycm9yKGNvbnN0IGNoYXIqIF9fcyk7CgogIHZvaWQKICBf
X3Rocm93X3VuZGVyZmxvd19lcnJvcihjb25zdCBjaGFyKiBfX3MpOwoKCiAgdm9pZAogIF9fdGhy
b3dfaW9zX2ZhaWx1cmUoY29uc3QgY2hhciogX19zKTsKfQojIDUxICIvaG9tZS9BZG1pbmlzdHJh
dG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysr
L2lvc2Z3ZCIgMiAzCgpuYW1lc3BhY2Ugc3RkCnsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs
IHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2lj
X2lvczsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hh
cl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19zdHJlYW1idWY7CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4g
PgogICAgY2xhc3MgYmFzaWNfaXN0cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19v
c3RyZWFtOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBj
aGFyX3RyYWl0czxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX2lvc3RyZWFtOwoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+
LAogICAgICAgICAgICB0eXBlbmFtZSBfQWxsb2MgPSBhbGxvY2F0b3I8X0NoYXJUPiA+CiAgICBj
bGFzcyBiYXNpY19zdHJpbmdidWY7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h
bWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4sCiAgICAgICAgICAgdHlwZW5hbWUgX0Fs
bG9jID0gYWxsb2NhdG9yPF9DaGFyVD4gPgogICAgY2xhc3MgYmFzaWNfaXN0cmluZ3N0cmVhbTsK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFp
dHM8X0NoYXJUPiwKICAgICAgICAgICB0eXBlbmFtZSBfQWxsb2MgPSBhbGxvY2F0b3I8X0NoYXJU
PiA+CiAgICBjbGFzcyBiYXNpY19vc3RyaW5nc3RyZWFtOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+LAogICAgICAgICAg
IHR5cGVuYW1lIF9BbGxvYyA9IGFsbG9jYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX3N0
cmluZ3N0cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz
ID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19maWxlYnVmOwoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hh
clQ+ID4KICAgIGNsYXNzIGJhc2ljX2lmc3RyZWFtOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4KICAgIGNsYXNzIGJh
c2ljX29mc3RyZWFtOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp
dHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX2ZzdHJlYW07CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9D
aGFyVD4gPgogICAgY2xhc3MgaXN0cmVhbWJ1Zl9pdGVyYXRvcjsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBj
bGFzcyBvc3RyZWFtYnVmX2l0ZXJhdG9yOwoKCgogIGNsYXNzIGlvc19iYXNlOwojIDEzNiAiL2hv
bWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMu
NC9pbmNsdWRlL2MrKy9pb3Nmd2QiIDMKICB0eXBlZGVmIGJhc2ljX2lvczxjaGFyPiBpb3M7CiAg
dHlwZWRlZiBiYXNpY19zdHJlYW1idWY8Y2hhcj4gc3RyZWFtYnVmOwogIHR5cGVkZWYgYmFzaWNf
aXN0cmVhbTxjaGFyPiBpc3RyZWFtOwogIHR5cGVkZWYgYmFzaWNfb3N0cmVhbTxjaGFyPiBvc3Ry
ZWFtOwogIHR5cGVkZWYgYmFzaWNfaW9zdHJlYW08Y2hhcj4gaW9zdHJlYW07CiAgdHlwZWRlZiBi
YXNpY19zdHJpbmdidWY8Y2hhcj4gc3RyaW5nYnVmOwogIHR5cGVkZWYgYmFzaWNfaXN0cmluZ3N0
cmVhbTxjaGFyPiBpc3RyaW5nc3RyZWFtOwogIHR5cGVkZWYgYmFzaWNfb3N0cmluZ3N0cmVhbTxj
aGFyPiBvc3RyaW5nc3RyZWFtOwogIHR5cGVkZWYgYmFzaWNfc3RyaW5nc3RyZWFtPGNoYXI+IHN0
cmluZ3N0cmVhbTsKICB0eXBlZGVmIGJhc2ljX2ZpbGVidWY8Y2hhcj4gZmlsZWJ1ZjsKICB0eXBl
ZGVmIGJhc2ljX2lmc3RyZWFtPGNoYXI+IGlmc3RyZWFtOwogIHR5cGVkZWYgYmFzaWNfb2ZzdHJl
YW08Y2hhcj4gb2ZzdHJlYW07CiAgdHlwZWRlZiBiYXNpY19mc3RyZWFtPGNoYXI+IGZzdHJlYW07
CiMgMTY2ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1w
Yy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2lvc2Z3ZCIgMwp9CiMgNzEgIi9ob21lL0FkbWluaXN0
cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9j
KysvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMiAzCiMgMSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0
ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0
bF9wYWlyLmgiIDEgMwojIDY0ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2dj
Yy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX3BhaXIuaCIgMwpu
YW1lc3BhY2Ugc3RkCnsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CnN0cnVjdCBw
YWlyIHsKICB0eXBlZGVmIF9UMSBmaXJzdF90eXBlOwogIHR5cGVkZWYgX1QyIHNlY29uZF90eXBl
OwoKICBfVDEgZmlyc3Q7CiAgX1QyIHNlY29uZDsKCgoKCiAgcGFpcigpIDogZmlyc3QoKSwgc2Vj
b25kKCkge30KCgoKCiAgcGFpcihjb25zdCBfVDEmIF9fYSwgY29uc3QgX1QyJiBfX2IpIDogZmly
c3QoX19hKSwgc2Vjb25kKF9fYikge30KCgogIHRlbXBsYXRlIDxjbGFzcyBfVTEsIGNsYXNzIF9V
Mj4KICBwYWlyKGNvbnN0IHBhaXI8X1UxLCBfVTI+JiBfX3ApIDogZmlyc3QoX19wLmZpcnN0KSwg
c2Vjb25kKF9fcC5zZWNvbmQpIHt9Cn07CgoKdGVtcGxhdGUgPGNsYXNzIF9UMSwgY2xhc3MgX1Qy
PgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNvbnN0
IHBhaXI8X1QxLCBfVDI+JiBfX3kpCnsKICByZXR1cm4gX194LmZpcnN0ID09IF9feS5maXJzdCAm
JiBfX3guc2Vjb25kID09IF9feS5zZWNvbmQ7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFz
cyBfVDI+CmlubGluZSBib29sIG9wZXJhdG9yPChjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194LCBj
b25zdCBwYWlyPF9UMSwgX1QyPiYgX195KQp7CiAgcmV0dXJuIF9feC5maXJzdCA8IF9feS5maXJz
dCB8fAogICAgICAgICAoIShfX3kuZmlyc3QgPCBfX3guZmlyc3QpICYmIF9feC5zZWNvbmQgPCBf
X3kuc2Vjb25kKTsKfQoKCnRlbXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBwYWlyPF9UMSwg
X1QyPiYgX195KSB7CiAgcmV0dXJuICEoX194ID09IF9feSk7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1QxLCBjbGFzcyBfVDI+CmlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBwYWlyPF9UMSwgX1Qy
PiYgX194LCBjb25zdCBwYWlyPF9UMSwgX1QyPiYgX195KSB7CiAgcmV0dXJuIF9feSA8IF9feDsK
fQoKCnRlbXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KaW5saW5lIGJvb2wgb3BlcmF0b3I8
PShjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBwYWlyPF9UMSwgX1QyPiYgX195KSB7
CiAgcmV0dXJuICEoX195IDwgX194KTsKfQoKCnRlbXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9U
Mj4KaW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25z
dCBwYWlyPF9UMSwgX1QyPiYgX195KSB7CiAgcmV0dXJuICEoX194IDwgX195KTsKfQojIDE0MCAi
L2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2lu
LzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9wYWlyLmgiIDMKdGVtcGxhdGUgPGNsYXNzIF9UMSwg
Y2xhc3MgX1QyPgoKCmlubGluZSBwYWlyPF9UMSwgX1QyPiBtYWtlX3BhaXIoX1QxIF9feCwgX1Qy
IF9feSkKCgoKewogIHJldHVybiBwYWlyPF9UMSwgX1QyPihfX3gsIF9feSk7Cn0KCn0KIyA3MiAi
L2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2lu
LzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdvYmFzZS5oIiAyIDMKIyAxICIvaG9tZS9BZG1p
bmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1
ZGUvYysrL2JpdHMvdHlwZV90cmFpdHMuaCIgMSAzCiMgNTMgIi9ob21lL0FkbWluaXN0cmF0b3Iv
Z2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0
cy90eXBlX3RyYWl0cy5oIiAzCiMgOTAgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy90eXBlX3RyYWl0
cy5oIiAzCnN0cnVjdCBfX3RydWVfdHlwZSB7fTsKc3RydWN0IF9fZmFsc2VfdHlwZSB7fTsKCnRl
bXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBfX3R5cGVfdHJhaXRzIHsKICAgdHlwZWRlZiBfX3Ry
dWVfdHlwZSB0aGlzX2R1bW15X21lbWJlcl9tdXN0X2JlX2ZpcnN0OwojIDExMyAiL2hvbWUvQWRt
aW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNs
dWRlL2MrKy9iaXRzL3R5cGVfdHJhaXRzLmgiIDMKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgaGFz
X3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgaGFz
X3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgaGFzX3Ry
aXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgaGFzX3Ry
aXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgaXNfUE9EX3R5cGU7Cn07
CgoKCgp0ZW1wbGF0ZTw+IHN0cnVjdCBfX3R5cGVfdHJhaXRzPGJvb2w+IHsKICAgdHlwZWRlZiBf
X3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9f
dHJ1ZV90eXBlIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVl
X3R5cGUgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVf
dHlwZSBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGlzX1BP
RF90eXBlOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgX190eXBlX3RyYWl0czxjaGFyPiB7CiAgIHR5
cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlw
ZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVm
IF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYg
X190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IF9fdHlwZV90cmFpdHM8c2lnbmVk
IGNoYXI+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0
cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0
b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRv
cjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBl
ZGVmIF9fdHJ1ZV90eXBlIGlzX1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgX190eXBl
X3RyYWl0czx1bnNpZ25lZCBjaGFyPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZp
YWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlh
bF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2Fz
c2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVz
dHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRl
PD4gc3RydWN0IF9fdHlwZV90cmFpdHM8d2NoYXJfdD4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBl
IGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUg
aGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNf
dHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190
cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaXNfUE9EX3R5cGU7Cn07
Cgp0ZW1wbGF0ZTw+IHN0cnVjdCBfX3R5cGVfdHJhaXRzPHNob3J0PiB7CiAgIHR5cGVkZWYgX190
cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3Ry
dWVfdHlwZSBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90
eXBlIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5
cGUgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBpc19QT0Rf
dHlwZTsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IF9fdHlwZV90cmFpdHM8dW5zaWduZWQgc2hvcnQ+
IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9y
OwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAg
IHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAg
dHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9f
dHJ1ZV90eXBlIGlzX1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgX190eXBlX3RyYWl0
czxpbnQ+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0
cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0
b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRv
cjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBl
ZGVmIF9fdHJ1ZV90eXBlIGlzX1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgX190eXBl
X3RyYWl0czx1bnNpZ25lZCBpbnQ+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlh
bF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFs
X2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfYXNz
aWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZXN0
cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGlzX1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8
PiBzdHJ1Y3QgX190eXBlX3RyYWl0czxsb25nPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFz
X3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNf
dHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2
aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZp
YWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBpc19QT0RfdHlwZTsKfTsKCnRl
bXBsYXRlPD4gc3RydWN0IF9fdHlwZV90cmFpdHM8dW5zaWduZWQgbG9uZz4gewogICB0eXBlZGVm
IF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYg
X190cnVlX3R5cGUgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3Ry
dWVfdHlwZSBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1
ZV90eXBlIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaXNf
UE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+IHN0cnVjdCBfX3R5cGVfdHJhaXRzPGxvbmcgbG9uZz4g
ewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7
CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAg
dHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0
eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190
cnVlX3R5cGUgaXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+IHN0cnVjdCBfX3R5cGVfdHJhaXRz
PHVuc2lnbmVkIGxvbmcgbG9uZz4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFs
X2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxf
Y29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9hc3Np
Z25tZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2Rlc3Ry
dWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+
IHN0cnVjdCBfX3R5cGVfdHJhaXRzPGZsb2F0PiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFz
X3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNf
dHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2
aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZp
YWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBpc19QT0RfdHlwZTsKfTsKCnRl
bXBsYXRlPD4gc3RydWN0IF9fdHlwZV90cmFpdHM8ZG91YmxlPiB7CiAgIHR5cGVkZWYgX190cnVl
X3R5cGUgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVf
dHlwZSBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBl
IGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUg
aGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBpc19QT0RfdHlw
ZTsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IF9fdHlwZV90cmFpdHM8bG9uZyBkb3VibGU+IHsKICAg
dHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0
eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVk
ZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRl
ZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90
eXBlIGlzX1BPRF90eXBlOwp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IF9fdHlwZV90
cmFpdHM8X1RwKj4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2RlZmF1bHRf
Y29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfY29weV9jb25z
dHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29w
ZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAg
IHR5cGVkZWYgX190cnVlX3R5cGUgaXNfUE9EX3R5cGU7Cn07CgoKCgoKdGVtcGxhdGUgPGNsYXNz
IF9UcD4gc3RydWN0IF9Jc19pbnRlZ2VyIHsKICB0eXBlZGVmIF9fZmFsc2VfdHlwZSBfSW50ZWdy
YWw7Cn07Cgp0ZW1wbGF0ZTw+IHN0cnVjdCBfSXNfaW50ZWdlcjxib29sPiB7CiAgdHlwZWRlZiBf
X3RydWVfdHlwZSBfSW50ZWdyYWw7Cn07Cgp0ZW1wbGF0ZTw+IHN0cnVjdCBfSXNfaW50ZWdlcjxj
aGFyPiB7CiAgdHlwZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7Cn07Cgp0ZW1wbGF0ZTw+IHN0
cnVjdCBfSXNfaW50ZWdlcjxzaWduZWQgY2hhcj4gewogIHR5cGVkZWYgX190cnVlX3R5cGUgX0lu
dGVncmFsOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgX0lzX2ludGVnZXI8dW5zaWduZWQgY2hhcj4g
ewogIHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3Qg
X0lzX2ludGVnZXI8d2NoYXJfdD4gewogIHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9
OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgX0lzX2ludGVnZXI8c2hvcnQ+IHsKICB0eXBlZGVmIF9fdHJ1
ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IF9Jc19pbnRlZ2VyPHVuc2ln
bmVkIHNob3J0PiB7CiAgdHlwZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7Cn07Cgp0ZW1wbGF0
ZTw+IHN0cnVjdCBfSXNfaW50ZWdlcjxpbnQ+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRl
Z3JhbDsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IF9Jc19pbnRlZ2VyPHVuc2lnbmVkIGludD4gewog
IHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgX0lz
X2ludGVnZXI8bG9uZz4gewogIHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9OwoKdGVt
cGxhdGU8PiBzdHJ1Y3QgX0lzX2ludGVnZXI8dW5zaWduZWQgbG9uZz4gewogIHR5cGVkZWYgX190
cnVlX3R5cGUgX0ludGVncmFsOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgX0lzX2ludGVnZXI8bG9u
ZyBsb25nPiB7CiAgdHlwZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7Cn07Cgp0ZW1wbGF0ZTw+
IHN0cnVjdCBfSXNfaW50ZWdlcjx1bnNpZ25lZCBsb25nIGxvbmc+IHsKICB0eXBlZGVmIF9fdHJ1
ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCnRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gc3RydWN0IF9Jc19u
b3JtYWxfaXRlcmF0b3IgewogICB0eXBlZGVmIF9fZmFsc2VfdHlwZSBfTm9ybWFsOwp9OwoKCm5h
bWVzcGFjZSBfX2dudV9jeHgKewogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5h
bWUgX0NvbnRhaW5lcj4gY2xhc3MgX19ub3JtYWxfaXRlcmF0b3I7Cn0KCnRlbXBsYXRlPHR5cGVu
YW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX0NvbnRhaW5lcj4Kc3RydWN0IF9Jc19ub3JtYWxfaXRl
cmF0b3I8IF9fZ251X2N4eDo6X19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVy
PiA+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBfTm9ybWFsOwp9OwojIDczICIvaG9tZS9BZG1p
bmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1
ZGUvYysrL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDIgMwojIDEgIi9ob21lL0FkbWluaXN0cmF0b3Iv
Z2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0
cy9zdGxfaXRlcmF0b3JfYmFzZV90eXBlcy5oIiAxIDMKIyA2OCAiL2hvbWUvQWRtaW5pc3RyYXRv
ci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9i
aXRzL3N0bF9pdGVyYXRvcl9iYXNlX3R5cGVzLmgiIDMKCm5hbWVzcGFjZSBzdGQKewojIDgwICIv
aG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4v
My40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2l0ZXJhdG9yX2Jhc2VfdHlwZXMuaCIgMwogIHN0cnVj
dCBpbnB1dF9pdGVyYXRvcl90YWcge307CgogIHN0cnVjdCBvdXRwdXRfaXRlcmF0b3JfdGFnIHt9
OwoKICBzdHJ1Y3QgZm9yd2FyZF9pdGVyYXRvcl90YWcgOiBwdWJsaWMgaW5wdXRfaXRlcmF0b3Jf
dGFnIHt9OwoKICBzdHJ1Y3QgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcgOiBwdWJsaWMgZm9y
d2FyZF9pdGVyYXRvcl90YWcge307CgogIHN0cnVjdCByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3Rh
ZyA6IHB1YmxpYyBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyB7fTsKIyAxMDIgIi9ob21lL0Fk
bWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5j
bHVkZS9jKysvYml0cy9zdGxfaXRlcmF0b3JfYmFzZV90eXBlcy5oIiAzCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NhdGVnb3J5LCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9EaXN0YW5jZSA9IHB0cmRp
ZmZfdCwKICAgICAgICAgICB0eXBlbmFtZSBfUG9pbnRlciA9IF9UcCosIHR5cGVuYW1lIF9SZWZl
cmVuY2UgPSBfVHAmPgogICAgc3RydWN0IGl0ZXJhdG9yCiAgICB7CgogICAgICB0eXBlZGVmIF9D
YXRlZ29yeSBpdGVyYXRvcl9jYXRlZ29yeTsKCiAgICAgIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7
CgogICAgICB0eXBlZGVmIF9EaXN0YW5jZSBkaWZmZXJlbmNlX3R5cGU7CgogICAgICB0eXBlZGVm
IF9Qb2ludGVyIHBvaW50ZXI7CgogICAgICB0eXBlZGVmIF9SZWZlcmVuY2UgcmVmZXJlbmNlOwog
ICAgfTsKCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yPgogICAgc3RydWN0IGl0
ZXJhdG9yX3RyYWl0cyB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjppdGVyYXRv
cl9jYXRlZ29yeSBpdGVyYXRvcl9jYXRlZ29yeTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRl
cmF0b3I6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRl
cmF0b3I6OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgX0l0ZXJhdG9yOjpwb2ludGVyIHBvaW50ZXI7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
X0l0ZXJhdG9yOjpyZWZlcmVuY2UgcmVmZXJlbmNlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogICAgc3RydWN0IGl0ZXJhdG9yX3RyYWl0czxfVHAqPiB7CiAgICAgIHR5cGVkZWYg
cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgICAgIHR5cGVk
ZWYgX1RwIHZhbHVlX3R5cGU7CiAgICAgIHR5cGVkZWYgcHRyZGlmZl90IGRpZmZlcmVuY2VfdHlw
ZTsKICAgICAgdHlwZWRlZiBfVHAqIHBvaW50ZXI7CiAgICAgIHR5cGVkZWYgX1RwJiByZWZlcmVu
Y2U7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgaXRlcmF0b3Jf
dHJhaXRzPGNvbnN0IF9UcCo+IHsKICAgICAgdHlwZWRlZiByYW5kb21fYWNjZXNzX2l0ZXJhdG9y
X3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICAgICAgdHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsKICAg
ICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwogICAgICB0eXBlZGVmIGNvbnN0
IF9UcCogcG9pbnRlcjsKICAgICAgdHlwZWRlZiBjb25zdCBfVHAmIHJlZmVyZW5jZTsKICAgIH07
CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyPgogICAgaW5saW5lIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfSXRlcj46Oml0ZXJhdG9yX2NhdGVnb3J5CiAgICBfX2l0ZXJhdG9yX2Nh
dGVnb3J5KGNvbnN0IF9JdGVyJikKICAgIHsgcmV0dXJuIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0
czxfSXRlcj46Oml0ZXJhdG9yX2NhdGVnb3J5KCk7IH0KCn0KIyA3NCAiL2hvbWUvQWRtaW5pc3Ry
YXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2Mr
Ky9iaXRzL3N0bF9hbGdvYmFzZS5oIiAyIDMKIyAxICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rl
c3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3Rs
X2l0ZXJhdG9yX2Jhc2VfZnVuY3MuaCIgMSAzCiMgNjggIi9ob21lL0FkbWluaXN0cmF0b3IvZ2Nj
dGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9z
dGxfaXRlcmF0b3JfYmFzZV9mdW5jcy5oIiAzCiMgMSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0
ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL2Nv
bmNlcHRfY2hlY2suaCIgMSAzCiMgMzkgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9jb25jZXB0X2No
ZWNrLmgiIDMKIyA2OSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGli
L2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9pdGVyYXRvcl9iYXNlX2Z1
bmNzLmgiIDIgMwoKbmFtZXNwYWNlIHN0ZAp7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRl
cmF0b3I+CiAgICBpbmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9y
Pjo6ZGlmZmVyZW5jZV90eXBlCiAgICBfX2Rpc3RhbmNlKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3Qs
IF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdGFn
KQogICAgewoKICAgICAKCiAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVy
YXRvcj46OmRpZmZlcmVuY2VfdHlwZSBfX24gPSAwOwogICAgICB3aGlsZSAoX19maXJzdCAhPSBf
X2xhc3QpIHsKICAgICAgICArK19fZmlyc3Q7ICsrX19uOwogICAgICB9CiAgICAgIHJldHVybiBf
X247CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4KICAg
IGlubGluZSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6
ZGlmZmVyZW5jZV90eXBlCiAgICBfX2Rpc3RhbmNlKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2Zp
cnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAgICByYW5kb21f
YWNjZXNzX2l0ZXJhdG9yX3RhZykKICAgIHsKCiAgICAgCiAgICAgIHJldHVybiBfX2xhc3QgLSBf
X2ZpcnN0OwogICAgfQojIDEwOSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9n
Y2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9pdGVyYXRvcl9i
YXNlX2Z1bmNzLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcj4KICAgIGlu
bGluZSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRlcmF0b3I+OjpkaWZmZXJlbmNl
X3R5cGUKICAgIGRpc3RhbmNlKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9y
IF9fbGFzdCkKICAgIHsKCiAgICAgIHJldHVybiBfX2Rpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCwg
X19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0KSk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9JbnB1dEl0ZXIsIHR5cGVuYW1lIF9EaXN0YW5jZT4KICAgIGlubGluZSB2b2lkCiAgICBfX2Fk
dmFuY2UoX0lucHV0SXRlciYgX19pLCBfRGlzdGFuY2UgX19uLCBpbnB1dF9pdGVyYXRvcl90YWcp
CiAgICB7CgogICAgIAogICAgICB3aGlsZSAoX19uLS0pICsrX19pOwogICAgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCB0eXBlbmFtZSBfRGlzdGFuY2U+CiAg
ICBpbmxpbmUgdm9pZAogICAgX19hZHZhbmNlKF9CaWRpcmVjdGlvbmFsSXRlcmF0b3ImIF9faSwg
X0Rpc3RhbmNlIF9fbiwKICAgICAgICAgICAgICBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZykK
ICAgIHsKCiAgICAgCgogICAgICBpZiAoX19uID4gMCkKICAgICAgICB3aGlsZSAoX19uLS0pICsr
X19pOwogICAgICBlbHNlCiAgICAgICAgd2hpbGUgKF9fbisrKSAtLV9faTsKICAgIH0KCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfRGlzdGFuY2U+
CiAgICBpbmxpbmUgdm9pZAogICAgX19hZHZhbmNlKF9SYW5kb21BY2Nlc3NJdGVyYXRvciYgX19p
LCBfRGlzdGFuY2UgX19uLAogICAgICAgICAgICAgIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFn
KQogICAgewoKICAgICAKICAgICAgX19pICs9IF9fbjsKICAgIH0KIyAxNjIgIi9ob21lL0FkbWlu
aXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVk
ZS9jKysvYml0cy9zdGxfaXRlcmF0b3JfYmFzZV9mdW5jcy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0lucHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9EaXN0YW5jZT4KICAgIGlubGluZSB2b2lkCiAg
ICBhZHZhbmNlKF9JbnB1dEl0ZXJhdG9yJiBfX2ksIF9EaXN0YW5jZSBfX24pCiAgICB7CgogICAg
ICBfX2FkdmFuY2UoX19pLCBfX24sIF9faXRlcmF0b3JfY2F0ZWdvcnkoX19pKSk7CiAgICB9Cn0K
IyA3NSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMt
Y3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdvYmFzZS5oIiAyIDMKIyAxICIvaG9t
ZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40
L2luY2x1ZGUvYysrL2JpdHMvc3RsX2l0ZXJhdG9yLmgiIDEgMwojIDY4ICIvaG9tZS9BZG1pbmlz
dHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUv
YysrL2JpdHMvc3RsX2l0ZXJhdG9yLmgiIDMKbmFtZXNwYWNlIHN0ZAp7CiMgODkgIi9ob21lL0Fk
bWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5j
bHVkZS9jKysvYml0cy9zdGxfaXRlcmF0b3IuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVy
YXRvcj4KICAgIGNsYXNzIHJldmVyc2VfaXRlcmF0b3IKICAgIDogcHVibGljIGl0ZXJhdG9yPHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+OjppdGVyYXRvcl9jYXRlZ29yeSwKICAg
ICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+Ojp2
YWx1ZV90eXBlLAogICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRz
PF9JdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgIHR5cGVu
YW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+Ojpwb2ludGVyLAogICAgICAgICAgICAgICAg
ICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46OnJlZmVyZW5jZT4KICAg
IHsKICAgIHByb3RlY3RlZDoKICAgICAgX0l0ZXJhdG9yIGN1cnJlbnQ7CgogICAgcHVibGljOgog
ICAgICB0eXBlZGVmIF9JdGVyYXRvciBpdGVyYXRvcl90eXBlOwogICAgICB0eXBlZGVmIHR5cGVu
YW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlm
ZmVyZW5jZV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRl
cmF0b3I+OjpyZWZlcmVuY2UgcmVmZXJlbmNlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJh
dG9yX3RyYWl0czxfSXRlcmF0b3I+Ojpwb2ludGVyIHBvaW50ZXI7CgogICAgcHVibGljOgoKCgog
ICAgICByZXZlcnNlX2l0ZXJhdG9yKCkgeyB9CgoKCgogICAgICBleHBsaWNpdAogICAgICByZXZl
cnNlX2l0ZXJhdG9yKGl0ZXJhdG9yX3R5cGUgX194KSA6IGN1cnJlbnQoX194KSB7IH0KCgoKCiAg
ICAgIHJldmVyc2VfaXRlcmF0b3IoY29uc3QgcmV2ZXJzZV9pdGVyYXRvciYgX194KQogICAgICA6
IGN1cnJlbnQoX194LmN1cnJlbnQpIHsgfQoKCgoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9J
dGVyPgogICAgICAgIHJldmVyc2VfaXRlcmF0b3IoY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRl
cj4mIF9feCkKICAgICAgICA6IGN1cnJlbnQoX194LmJhc2UoKSkgeyB9CgoKCgogICAgICBpdGVy
YXRvcl90eXBlCiAgICAgIGJhc2UoKSBjb25zdCB7IHJldHVybiBjdXJyZW50OyB9CgoKCgoKCiAg
ICAgIHJlZmVyZW5jZQogICAgICBvcGVyYXRvciooKSBjb25zdAogICAgICB7CiAgICAgICAgX0l0
ZXJhdG9yIF9fdG1wID0gY3VycmVudDsKICAgICAgICByZXR1cm4gKi0tX190bXA7CiAgICAgIH0K
CgoKCgoKICAgICAgcG9pbnRlcgogICAgICBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJihv
cGVyYXRvciooKSk7IH0KCgoKCgoKICAgICAgcmV2ZXJzZV9pdGVyYXRvciYKICAgICAgb3BlcmF0
b3IrKygpCiAgICAgIHsKICAgICAgICAtLWN1cnJlbnQ7CiAgICAgICAgcmV0dXJuICp0aGlzOwog
ICAgICB9CgoKCgoKCiAgICAgIHJldmVyc2VfaXRlcmF0b3IKICAgICAgb3BlcmF0b3IrKyhpbnQp
CiAgICAgIHsKICAgICAgICByZXZlcnNlX2l0ZXJhdG9yIF9fdG1wID0gKnRoaXM7CiAgICAgICAg
LS1jdXJyZW50OwogICAgICAgIHJldHVybiBfX3RtcDsKICAgICAgfQoKCgoKCgogICAgICByZXZl
cnNlX2l0ZXJhdG9yJgogICAgICBvcGVyYXRvci0tKCkKICAgICAgewogICAgICAgICsrY3VycmVu
dDsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgIH0KCgoKCgoKICAgICAgcmV2ZXJzZV9pdGVy
YXRvciBvcGVyYXRvci0tKGludCkKICAgICAgewogICAgICAgIHJldmVyc2VfaXRlcmF0b3IgX190
bXAgPSAqdGhpczsKICAgICAgICArK2N1cnJlbnQ7CiAgICAgICAgcmV0dXJuIF9fdG1wOwogICAg
ICB9CgoKCgoKCiAgICAgIHJldmVyc2VfaXRlcmF0b3IKICAgICAgb3BlcmF0b3IrKGRpZmZlcmVu
Y2VfdHlwZSBfX24pIGNvbnN0CiAgICAgIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoY3VycmVu
dCAtIF9fbik7IH0KCgoKCgoKICAgICAgcmV2ZXJzZV9pdGVyYXRvciYKICAgICAgb3BlcmF0b3Ir
PShkaWZmZXJlbmNlX3R5cGUgX19uKQogICAgICB7CiAgICAgICAgY3VycmVudCAtPSBfX247CiAg
ICAgICAgcmV0dXJuICp0aGlzOwogICAgICB9CgoKCgoKCiAgICAgIHJldmVyc2VfaXRlcmF0b3IK
ICAgICAgb3BlcmF0b3ItKGRpZmZlcmVuY2VfdHlwZSBfX24pIGNvbnN0CiAgICAgIHsgcmV0dXJu
IHJldmVyc2VfaXRlcmF0b3IoY3VycmVudCArIF9fbik7IH0KCgoKCgoKICAgICAgcmV2ZXJzZV9p
dGVyYXRvciYKICAgICAgb3BlcmF0b3ItPShkaWZmZXJlbmNlX3R5cGUgX19uKQogICAgICB7CiAg
ICAgICAgY3VycmVudCArPSBfX247CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICB9CgoKCgoK
CiAgICAgIHJlZmVyZW5jZQogICAgICBvcGVyYXRvcltdKGRpZmZlcmVuY2VfdHlwZSBfX24pIGNv
bnN0IHsgcmV0dXJuICooKnRoaXMgKyBfX24pOyB9CiAgICB9OwojIDI2OSAiL2hvbWUvQWRtaW5p
c3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRl
L2MrKy9iaXRzL3N0bF9pdGVyYXRvci5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9y
PgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxf
SXRlcmF0b3I+JiBfX3gsCiAgICAgICAgICAgICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0
ZXJhdG9yPiYgX195KQogICAgeyByZXR1cm4gX194LmJhc2UoKSA9PSBfX3kuYmFzZSgpOyB9Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRv
cjwoY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3gsCiAgICAgICAgICAgICAg
Y29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3kpCiAgICB7IHJldHVybiBfX3ku
YmFzZSgpIDwgX194LmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAg
ICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVy
YXRvcj4mIF9feCwKICAgICAgICAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0
b3I+JiBfX3kpCiAgICB7IHJldHVybiAhKF9feCA9PSBfX3kpOyB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9JdGVyYXRvcj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj4oY29uc3QgcmV2ZXJz
ZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3gsCiAgICAgICAgICAgICAgY29uc3QgcmV2ZXJzZV9p
dGVyYXRvcjxfSXRlcmF0b3I+JiBfX3kpCiAgICB7IHJldHVybiBfX3kgPCBfX3g7IH0KCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPD0o
Y29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3gsCiAgICAgICAgICAgICAgICBj
b25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkKICAgIHsgcmV0dXJuICEoX195
IDwgX194KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAgICBpbmxpbmUgYm9v
bAogICAgb3BlcmF0b3I+PShjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCwK
ICAgICAgICAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3kpCiAg
ICB7IHJldHVybiAhKF9feCA8IF9feSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9y
PgogICAgaW5saW5lIHR5cGVuYW1lIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPjo6ZGlmZmVy
ZW5jZV90eXBlCiAgICBvcGVyYXRvci0oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+
JiBfX3gsCiAgICAgICAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBf
X3kpCiAgICB7IHJldHVybiBfX3kuYmFzZSgpIC0gX194LmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSXRlcmF0b3I+CiAgICBpbmxpbmUgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+
CiAgICBvcGVyYXRvcisodHlwZW5hbWUgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+OjpkaWZm
ZXJlbmNlX3R5cGUgX19uLAogICAgICAgICAgICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0
ZXJhdG9yPiYgX194KQogICAgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+KF9f
eC5iYXNlKCkgLSBfX24pOyB9CiMgMzI5ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3Rpbmcv
bGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2l0ZXJh
dG9yLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ29udGFpbmVyPgogICAgY2xhc3MgYmFja19p
bnNlcnRfaXRlcmF0b3IKICAgIDogcHVibGljIGl0ZXJhdG9yPG91dHB1dF9pdGVyYXRvcl90YWcs
IHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQ+CiAgICB7CiAgICBwcm90ZWN0ZWQ6CiAgICAgIF9Db250
YWluZXIqIGNvbnRhaW5lcjsKCiAgICBwdWJsaWM6CgogICAgICB0eXBlZGVmIF9Db250YWluZXIg
Y29udGFpbmVyX3R5cGU7CgoKICAgICAgZXhwbGljaXQKICAgICAgYmFja19pbnNlcnRfaXRlcmF0
b3IoX0NvbnRhaW5lciYgX194KSA6IGNvbnRhaW5lcigmX194KSB7IH0KIyAzNTUgIi9ob21lL0Fk
bWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5j
bHVkZS9jKysvYml0cy9zdGxfaXRlcmF0b3IuaCIgMwogICAgICBiYWNrX2luc2VydF9pdGVyYXRv
ciYKICAgICAgb3BlcmF0b3I9KHR5cGVuYW1lIF9Db250YWluZXI6OmNvbnN0X3JlZmVyZW5jZSBf
X3ZhbHVlKQogICAgICB7CiAgICAgICAgY29udGFpbmVyLT5wdXNoX2JhY2soX192YWx1ZSk7CiAg
ICAgICAgcmV0dXJuICp0aGlzOwogICAgICB9CgoKICAgICAgYmFja19pbnNlcnRfaXRlcmF0b3Im
CiAgICAgIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzOyB9CgoKICAgICAgYmFja19pbnNlcnRf
aXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yKysoKSB7IHJldHVybiAqdGhpczsgfQoKCiAgICAgIGJh
Y2tfaW5zZXJ0X2l0ZXJhdG9yCiAgICAgIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhpczsg
fQogICAgfTsKIyAzODYgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfaXRlcmF0b3IuaCIgMwog
IHRlbXBsYXRlPHR5cGVuYW1lIF9Db250YWluZXI+CiAgICBpbmxpbmUgYmFja19pbnNlcnRfaXRl
cmF0b3I8X0NvbnRhaW5lcj4KICAgIGJhY2tfaW5zZXJ0ZXIoX0NvbnRhaW5lciYgX194KQogICAg
eyByZXR1cm4gYmFja19pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4oX194KTsgfQojIDQwMSAi
L2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2lu
LzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9pdGVyYXRvci5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NvbnRhaW5lcj4KICAgIGNsYXNzIGZyb250X2luc2VydF9pdGVyYXRvcgogICAgOiBwdWJs
aWMgaXRlcmF0b3I8b3V0cHV0X2l0ZXJhdG9yX3RhZywgdm9pZCwgdm9pZCwgdm9pZCwgdm9pZD4K
ICAgIHsKICAgIHByb3RlY3RlZDoKICAgICAgX0NvbnRhaW5lciogY29udGFpbmVyOwoKICAgIHB1
YmxpYzoKCiAgICAgIHR5cGVkZWYgX0NvbnRhaW5lciBjb250YWluZXJfdHlwZTsKCgogICAgICBl
eHBsaWNpdCBmcm9udF9pbnNlcnRfaXRlcmF0b3IoX0NvbnRhaW5lciYgX194KSA6IGNvbnRhaW5l
cigmX194KSB7IH0KIyA0MjYgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfaXRlcmF0b3IuaCIg
MwogICAgICBmcm9udF9pbnNlcnRfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yPSh0eXBlbmFtZSBf
Q29udGFpbmVyOjpjb25zdF9yZWZlcmVuY2UgX192YWx1ZSkKICAgICAgewogICAgICAgIGNvbnRh
aW5lci0+cHVzaF9mcm9udChfX3ZhbHVlKTsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgIH0K
CgogICAgICBmcm9udF9pbnNlcnRfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yKigpIHsgcmV0dXJu
ICp0aGlzOyB9CgoKICAgICAgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yJgogICAgICBvcGVyYXRvcisr
KCkgeyByZXR1cm4gKnRoaXM7IH0KCgogICAgICBmcm9udF9pbnNlcnRfaXRlcmF0b3IKICAgICAg
b3BlcmF0b3IrKyhpbnQpIHsgcmV0dXJuICp0aGlzOyB9CiAgICB9OwojIDQ1NyAiL2hvbWUvQWRt
aW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNs
dWRlL2MrKy9iaXRzL3N0bF9pdGVyYXRvci5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NvbnRh
aW5lcj4KICAgIGlubGluZSBmcm9udF9pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4KICAgIGZy
b250X2luc2VydGVyKF9Db250YWluZXImIF9feCkKICAgIHsgcmV0dXJuIGZyb250X2luc2VydF9p
dGVyYXRvcjxfQ29udGFpbmVyPihfX3gpOyB9CiMgNDc2ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2dj
Y3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMv
c3RsX2l0ZXJhdG9yLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ29udGFpbmVyPgogICAgY2xh
c3MgaW5zZXJ0X2l0ZXJhdG9yCiAgICA6IHB1YmxpYyBpdGVyYXRvcjxvdXRwdXRfaXRlcmF0b3Jf
dGFnLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkPgogICAgewogICAgcHJvdGVjdGVkOgogICAgICBf
Q29udGFpbmVyKiBjb250YWluZXI7CiAgICAgIHR5cGVuYW1lIF9Db250YWluZXI6Oml0ZXJhdG9y
IGl0ZXI7CgogICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBfQ29udGFpbmVyIGNvbnRhaW5lcl90
eXBlOwoKCgoKCiAgICAgIGluc2VydF9pdGVyYXRvcihfQ29udGFpbmVyJiBfX3gsIHR5cGVuYW1l
IF9Db250YWluZXI6Oml0ZXJhdG9yIF9faSkKICAgICAgOiBjb250YWluZXIoJl9feCksIGl0ZXIo
X19pKSB7fQojIDUxOCAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGli
L2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9pdGVyYXRvci5oIiAzCiAg
ICAgIGluc2VydF9pdGVyYXRvciYKICAgICAgb3BlcmF0b3I9KGNvbnN0IHR5cGVuYW1lIF9Db250
YWluZXI6OmNvbnN0X3JlZmVyZW5jZSBfX3ZhbHVlKQogICAgICB7CiAgICAgICAgaXRlciA9IGNv
bnRhaW5lci0+aW5zZXJ0KGl0ZXIsIF9fdmFsdWUpOwogICAgICAgICsraXRlcjsKICAgICAgICBy
ZXR1cm4gKnRoaXM7CiAgICAgIH0KCgogICAgICBpbnNlcnRfaXRlcmF0b3ImCiAgICAgIG9wZXJh
dG9yKigpIHsgcmV0dXJuICp0aGlzOyB9CgoKICAgICAgaW5zZXJ0X2l0ZXJhdG9yJgogICAgICBv
cGVyYXRvcisrKCkgeyByZXR1cm4gKnRoaXM7IH0KCgogICAgICBpbnNlcnRfaXRlcmF0b3ImCiAg
ICAgIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhpczsgfQogICAgfTsKIyA1NTAgIi9ob21l
L0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQv
aW5jbHVkZS9jKysvYml0cy9zdGxfaXRlcmF0b3IuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
b250YWluZXIsIHR5cGVuYW1lIF9JdGVyYXRvcj4KICAgIGlubGluZSBpbnNlcnRfaXRlcmF0b3I8
X0NvbnRhaW5lcj4KICAgIGluc2VydGVyKF9Db250YWluZXImIF9feCwgX0l0ZXJhdG9yIF9faSkK
ICAgIHsKICAgICAgcmV0dXJuIGluc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPihfX3gsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgX0NvbnRhaW5lcjo6
aXRlcmF0b3IoX19pKSk7CiAgICB9Cn0KCm5hbWVzcGFjZSBfX2dudV9jeHgKewoKCgoKCgoKICB1
c2luZyBzdGQ6Oml0ZXJhdG9yX3RyYWl0czsKICB1c2luZyBzdGQ6Oml0ZXJhdG9yOwogIHRlbXBs
YXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX0NvbnRhaW5lcj4KICAgIGNsYXNzIF9f
bm9ybWFsX2l0ZXJhdG9yCiAgICAgIDogcHVibGljIGl0ZXJhdG9yPHR5cGVuYW1lIGl0ZXJhdG9y
X3RyYWl0czxfSXRlcmF0b3I+OjppdGVyYXRvcl9jYXRlZ29yeSwKICAgICAgICAgICAgICAgICAg
ICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46OnZhbHVlX3R5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+
OjpkaWZmZXJlbmNlX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGl0ZXJh
dG9yX3RyYWl0czxfSXRlcmF0b3I+Ojpwb2ludGVyLAogICAgICAgICAgICAgICAgICAgICAgICB0
eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6cmVmZXJlbmNlPgogICAgewogICAg
cHJvdGVjdGVkOgogICAgICBfSXRlcmF0b3IgX01fY3VycmVudDsKCiAgICBwdWJsaWM6CiAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46OmRpZmZlcmVuY2Vf
dHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0
b3JfdHJhaXRzPF9JdGVyYXRvcj46OnJlZmVyZW5jZSByZWZlcmVuY2U7CiAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46OnBvaW50ZXIgcG9pbnRlcjsKCiAg
ICAgIF9fbm9ybWFsX2l0ZXJhdG9yKCkgOiBfTV9jdXJyZW50KF9JdGVyYXRvcigpKSB7IH0KCiAg
ICAgIGV4cGxpY2l0CiAgICAgIF9fbm9ybWFsX2l0ZXJhdG9yKGNvbnN0IF9JdGVyYXRvciYgX19p
KSA6IF9NX2N1cnJlbnQoX19pKSB7IH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcj4K
ICAgICAgaW5saW5lIF9fbm9ybWFsX2l0ZXJhdG9yKGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9J
dGVyLCBfQ29udGFpbmVyPiYgX19pKQogICAgICAgIDogX01fY3VycmVudChfX2kuYmFzZSgpKSB7
IH0KCgogICAgICByZWZlcmVuY2UKICAgICAgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKl9N
X2N1cnJlbnQ7IH0KCiAgICAgIHBvaW50ZXIKICAgICAgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0
dXJuIF9NX2N1cnJlbnQ7IH0KCiAgICAgIF9fbm9ybWFsX2l0ZXJhdG9yJgogICAgICBvcGVyYXRv
cisrKCkgeyArK19NX2N1cnJlbnQ7IHJldHVybiAqdGhpczsgfQoKICAgICAgX19ub3JtYWxfaXRl
cmF0b3IKICAgICAgb3BlcmF0b3IrKyhpbnQpIHsgcmV0dXJuIF9fbm9ybWFsX2l0ZXJhdG9yKF9N
X2N1cnJlbnQrKyk7IH0KCgogICAgICBfX25vcm1hbF9pdGVyYXRvciYKICAgICAgb3BlcmF0b3It
LSgpIHsgLS1fTV9jdXJyZW50OyByZXR1cm4gKnRoaXM7IH0KCiAgICAgIF9fbm9ybWFsX2l0ZXJh
dG9yCiAgICAgIG9wZXJhdG9yLS0oaW50KSB7IHJldHVybiBfX25vcm1hbF9pdGVyYXRvcihfTV9j
dXJyZW50LS0pOyB9CgoKICAgICAgcmVmZXJlbmNlCiAgICAgIG9wZXJhdG9yW10oY29uc3QgZGlm
ZmVyZW5jZV90eXBlJiBfX24pIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2N1cnJlbnRbX19uXTsg
fQoKICAgICAgX19ub3JtYWxfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yKz0oY29uc3QgZGlmZmVy
ZW5jZV90eXBlJiBfX24pCiAgICAgIHsgX01fY3VycmVudCArPSBfX247IHJldHVybiAqdGhpczsg
fQoKICAgICAgX19ub3JtYWxfaXRlcmF0b3IKICAgICAgb3BlcmF0b3IrKGNvbnN0IGRpZmZlcmVu
Y2VfdHlwZSYgX19uKSBjb25zdAogICAgICB7IHJldHVybiBfX25vcm1hbF9pdGVyYXRvcihfTV9j
dXJyZW50ICsgX19uKTsgfQoKICAgICAgX19ub3JtYWxfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9y
LT0oY29uc3QgZGlmZmVyZW5jZV90eXBlJiBfX24pCiAgICAgIHsgX01fY3VycmVudCAtPSBfX247
IHJldHVybiAqdGhpczsgfQoKICAgICAgX19ub3JtYWxfaXRlcmF0b3IKICAgICAgb3BlcmF0b3It
KGNvbnN0IGRpZmZlcmVuY2VfdHlwZSYgX19uKSBjb25zdAogICAgICB7IHJldHVybiBfX25vcm1h
bF9pdGVyYXRvcihfTV9jdXJyZW50IC0gX19uKTsgfQoKICAgICAgY29uc3QgX0l0ZXJhdG9yJgog
ICAgICBiYXNlKCkgY29uc3QgeyByZXR1cm4gX01fY3VycmVudDsgfQogICAgfTsKIyA2NTEgIi9o
b21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8z
LjQvaW5jbHVkZS9jKysvYml0cy9zdGxfaXRlcmF0b3IuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1l
IF9JdGVyYXRvckwsIHR5cGVuYW1lIF9JdGVyYXRvclIsIHR5cGVuYW1lIF9Db250YWluZXI+CiAg
aW5saW5lIGJvb2wKICBvcGVyYXRvcj09KGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRv
ckwsIF9Db250YWluZXI+JiBfX2xocywKICAgICAgICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0ZXJh
dG9yPF9JdGVyYXRvclIsIF9Db250YWluZXI+JiBfX3JocykKICB7IHJldHVybiBfX2xocy5iYXNl
KCkgPT0gX19yaHMuYmFzZSgpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlw
ZW5hbWUgX0NvbnRhaW5lcj4KICBpbmxpbmUgYm9vbAogIG9wZXJhdG9yPT0oY29uc3QgX19ub3Jt
YWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVyPiYgX19saHMsCiAgICAgICAgICAgICBj
b25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBfX3JocykKICB7
IHJldHVybiBfX2xocy5iYXNlKCkgPT0gX19yaHMuYmFzZSgpOyB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9JdGVyYXRvckwsIHR5cGVuYW1lIF9JdGVyYXRvclIsIHR5cGVuYW1lIF9Db250YWluZXI+
CiAgaW5saW5lIGJvb2wKICBvcGVyYXRvciE9KGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVy
YXRvckwsIF9Db250YWluZXI+JiBfX2xocywKICAgICAgICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0
ZXJhdG9yPF9JdGVyYXRvclIsIF9Db250YWluZXI+JiBfX3JocykKICB7IHJldHVybiBfX2xocy5i
YXNlKCkgIT0gX19yaHMuYmFzZSgpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwg
dHlwZW5hbWUgX0NvbnRhaW5lcj4KICBpbmxpbmUgYm9vbAogIG9wZXJhdG9yIT0oY29uc3QgX19u
b3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVyPiYgX19saHMsCiAgICAgICAgICAg
ICBjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBfX3JocykK
ICB7IHJldHVybiBfX2xocy5iYXNlKCkgIT0gX19yaHMuYmFzZSgpOyB9CgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSXRlcmF0b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JSLCB0eXBlbmFtZSBfQ29udGFp
bmVyPgogIGlubGluZSBib29sCiAgb3BlcmF0b3I8KGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9J
dGVyYXRvckwsIF9Db250YWluZXI+JiBfX2xocywKICAgICAgICAgICAgY29uc3QgX19ub3JtYWxf
aXRlcmF0b3I8X0l0ZXJhdG9yUiwgX0NvbnRhaW5lcj4mIF9fcmhzKQogIHsgcmV0dXJuIF9fbGhz
LmJhc2UoKSA8IF9fcmhzLmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3Is
IHR5cGVuYW1lIF9Db250YWluZXI+CiAgaW5saW5lIGJvb2wKICBvcGVyYXRvcjwoY29uc3QgX19u
b3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVyPiYgX19saHMsCiAgICAgICAgICAg
ICBjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBfX3JocykK
ICB7IHJldHVybiBfX2xocy5iYXNlKCkgPCBfX3Jocy5iYXNlKCk7IH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0l0ZXJhdG9yTCwgdHlwZW5hbWUgX0l0ZXJhdG9yUiwgdHlwZW5hbWUgX0NvbnRhaW5l
cj4KICBpbmxpbmUgYm9vbAogIG9wZXJhdG9yPihjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRl
cmF0b3JMLCBfQ29udGFpbmVyPiYgX19saHMsCiAgICAgICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0
ZXJhdG9yPF9JdGVyYXRvclIsIF9Db250YWluZXI+JiBfX3JocykKICB7IHJldHVybiBfX2xocy5i
YXNlKCkgPiBfX3Jocy5iYXNlKCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yLCB0
eXBlbmFtZSBfQ29udGFpbmVyPgogIGlubGluZSBib29sCiAgb3BlcmF0b3I+KGNvbnN0IF9fbm9y
bWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj4mIF9fbGhzLAogICAgICAgICAgICBj
b25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBfX3JocykKICB7
IHJldHVybiBfX2xocy5iYXNlKCkgPiBfX3Jocy5iYXNlKCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0l0ZXJhdG9yTCwgdHlwZW5hbWUgX0l0ZXJhdG9yUiwgdHlwZW5hbWUgX0NvbnRhaW5lcj4K
ICBpbmxpbmUgYm9vbAogIG9wZXJhdG9yPD0oY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJh
dG9yTCwgX0NvbnRhaW5lcj4mIF9fbGhzLAogICAgICAgICAgICAgY29uc3QgX19ub3JtYWxfaXRl
cmF0b3I8X0l0ZXJhdG9yUiwgX0NvbnRhaW5lcj4mIF9fcmhzKQogIHsgcmV0dXJuIF9fbGhzLmJh
c2UoKSA8PSBfX3Jocy5iYXNlKCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yLCB0
eXBlbmFtZSBfQ29udGFpbmVyPgogIGlubGluZSBib29sCiAgb3BlcmF0b3I8PShjb25zdCBfX25v
cm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBfX2xocywKICAgICAgICAgICAg
IGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj4mIF9fcmhzKQog
IHsgcmV0dXJuIF9fbGhzLmJhc2UoKSA8PSBfX3Jocy5iYXNlKCk7IH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0l0ZXJhdG9yTCwgdHlwZW5hbWUgX0l0ZXJhdG9yUiwgdHlwZW5hbWUgX0NvbnRhaW5l
cj4KICBpbmxpbmUgYm9vbAogIG9wZXJhdG9yPj0oY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0
ZXJhdG9yTCwgX0NvbnRhaW5lcj4mIF9fbGhzLAogICAgICAgICAgICAgY29uc3QgX19ub3JtYWxf
aXRlcmF0b3I8X0l0ZXJhdG9yUiwgX0NvbnRhaW5lcj4mIF9fcmhzKQogIHsgcmV0dXJuIF9fbGhz
LmJhc2UoKSA+PSBfX3Jocy5iYXNlKCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9y
LCB0eXBlbmFtZSBfQ29udGFpbmVyPgogIGlubGluZSBib29sCiAgb3BlcmF0b3I+PShjb25zdCBf
X25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBfX2xocywKICAgICAgICAg
ICAgIGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj4mIF9fcmhz
KQogIHsgcmV0dXJuIF9fbGhzLmJhc2UoKSA+PSBfX3Jocy5iYXNlKCk7IH0KCgoKCgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9JdGVyYXRvckwsIHR5cGVuYW1lIF9JdGVyYXRvclIsIHR5cGVuYW1lIF9D
b250YWluZXI+CiAgaW5saW5lIHR5cGVuYW1lIF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvckws
IF9Db250YWluZXI+OjpkaWZmZXJlbmNlX3R5cGUKICBvcGVyYXRvci0oY29uc3QgX19ub3JtYWxf
aXRlcmF0b3I8X0l0ZXJhdG9yTCwgX0NvbnRhaW5lcj4mIF9fbGhzLAogICAgICAgICAgICAgY29u
c3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yUiwgX0NvbnRhaW5lcj4mIF9fcmhzKQogIHsg
cmV0dXJuIF9fbGhzLmJhc2UoKSAtIF9fcmhzLmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSXRlcmF0b3IsIHR5cGVuYW1lIF9Db250YWluZXI+CiAgaW5saW5lIF9fbm9ybWFsX2l0ZXJh
dG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj4KICBvcGVyYXRvcisodHlwZW5hbWUgX19ub3JtYWxf
aXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVyPjo6ZGlmZmVyZW5jZV90eXBlIF9fbiwKICAg
ICAgICAgICAgY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVyPiYg
X19pKQogIHsgcmV0dXJuIF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj4o
X19pLmJhc2UoKSArIF9fbik7IH0KfQojIDc2ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3Rp
bmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2Fs
Z29iYXNlLmgiIDIgMwoKCm5hbWVzcGFjZSBzdGQKewojIDkxICIvaG9tZS9BZG1pbmlzdHJhdG9y
L2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2Jp
dHMvc3RsX2FsZ29iYXNlLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXIxLCB0
eXBlbmFtZSBfRm9yd2FyZEl0ZXIyPgogICAgaW5saW5lIHZvaWQKICAgIGl0ZXJfc3dhcChfRm9y
d2FyZEl0ZXIxIF9fYSwgX0ZvcndhcmRJdGVyMiBfX2IpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcjE+Ojp2YWx1ZV90eXBlIF9WYWx1ZVR5
cGUxOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXIy
Pjo6dmFsdWVfdHlwZSBfVmFsdWVUeXBlMjsKCgogICAgIAogICAgIAogICAgIAogICAgIAoKICAg
ICAgX1ZhbHVlVHlwZTEgX190bXAgPSAqX19hOwogICAgICAqX19hID0gKl9fYjsKICAgICAgKl9f
YiA9IF9fdG1wOwogICAgfQojIDExOCAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xp
Yi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdvYmFz
ZS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHZvaWQKICAgIHN3YXAo
X1RwJiBfX2EsIF9UcCYgX19iKQogICAgewoKICAgICAKCiAgICAgIF9UcCBfX3RtcCA9IF9fYTsK
ICAgICAgX19hID0gX19iOwogICAgICBfX2IgPSBfX3RtcDsKICAgIH0KIyAxNDYgIi9ob21lL0Fk
bWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5j
bHVkZS9jKysvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4K
ICAgIGlubGluZSBjb25zdCBfVHAmCiAgICBtaW4oY29uc3QgX1RwJiBfX2EsIGNvbnN0IF9UcCYg
X19iKQogICAgewoKICAgICAKCiAgICAgIGlmIChfX2IgPCBfX2EpIHJldHVybiBfX2I7IHJldHVy
biBfX2E7CiAgICB9CiMgMTY2ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2dj
Yy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2FsZ29iYXNlLmgi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgY29uc3QgX1RwJgogICAgbWF4
KGNvbnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYikKICAgIHsKCiAgICAgCgogICAgICBpZiAo
X19hIDwgX19iKSByZXR1cm4gX19iOyByZXR1cm4gX19hOwogICAgfQojIDE4NiAiL2hvbWUvQWRt
aW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNs
dWRlL2MrKy9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0
eXBlbmFtZSBfQ29tcGFyZT4KICAgIGlubGluZSBjb25zdCBfVHAmCiAgICBtaW4oY29uc3QgX1Rw
JiBfX2EsIGNvbnN0IF9UcCYgX19iLCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CgogICAgICBpZiAo
X19jb21wKF9fYiwgX19hKSkgcmV0dXJuIF9fYjsgcmV0dXJuIF9fYTsKICAgIH0KIyAyMDQgIi9o
b21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8z
LjQvaW5jbHVkZS9jKysvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcCwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBpbmxpbmUgY29uc3QgX1RwJgogICAgbWF4KGNv
bnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYiwgX0NvbXBhcmUgX19jb21wKQogICAgewoKICAg
ICAgaWYgKF9fY29tcChfX2EsIF9fYikpIHJldHVybiBfX2I7IHJldHVybiBfX2E7CiAgICB9CiMg
MjIxICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1j
eWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSW5wdXRJdGVyLCB0eXBlbmFtZSBfT3V0cHV0SXRlcj4KICAgIGlubGluZSBfT3V0
cHV0SXRlcgogICAgX19jb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3Qs
CiAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQsCiAgICAgICAgICAgaW5wdXRfaXRlcmF0
b3JfdGFnKQogICAgewogICAgICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fcmVzdWx0
LCArK19fZmlyc3QpCiAgICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3Q7CiAgICAgIHJldHVybiBf
X3Jlc3VsdDsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXIsIHR5
cGVuYW1lIF9PdXRwdXRJdGVyPgogICAgaW5saW5lIF9PdXRwdXRJdGVyCiAgICBfX2NvcHkoX1Jh
bmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LAogICAgICAg
ICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LAogICAgICAgICAgIHJhbmRvbV9hY2Nlc3NfaXRlcmF0
b3JfdGFnKQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFu
ZG9tQWNjZXNzSXRlcj46OmRpZmZlcmVuY2VfdHlwZQogICAgICAgICAgX0Rpc3RhbmNlOwogICAg
ICBmb3IgKF9EaXN0YW5jZSBfX24gPSBfX2xhc3QgLSBfX2ZpcnN0OyBfX24gPiAwOyAtLV9fbikg
ewogICAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogICAgICAgICsrX19maXJzdDsKICAgICAg
ICArK19fcmVzdWx0OwogICAgICB9CiAgICAgIHJldHVybiBfX3Jlc3VsdDsKICAgIH0KCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIF9UcCoKICAgIF9fY29weV90cml2aWFsKGNv
bnN0IF9UcCogX19maXJzdCwgY29uc3QgX1RwKiBfX2xhc3QsIF9UcCogX19yZXN1bHQpCiAgICB7
CiAgICAgIG1lbW1vdmUoX19yZXN1bHQsIF9fZmlyc3QsIHNpemVvZihfVHApICogKF9fbGFzdCAt
IF9fZmlyc3QpKTsKICAgICAgcmV0dXJuIF9fcmVzdWx0ICsgKF9fbGFzdCAtIF9fZmlyc3QpOwog
ICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyLCB0eXBlbmFtZSBfT3V0cHV0SXRl
cj4KICAgIGlubGluZSBfT3V0cHV0SXRlcgogICAgX19jb3B5X2F1eDIoX0lucHV0SXRlciBfX2Zp
cnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVz
dWx0LCBfX2ZhbHNlX3R5cGUpCiAgICB7IHJldHVybiBfX2NvcHkoX19maXJzdCwgX19sYXN0LCBf
X3Jlc3VsdCwgX19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0KSk7IH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0lucHV0SXRlciwgdHlwZW5hbWUgX091dHB1dEl0ZXI+CiAgICBpbmxpbmUgX091dHB1
dEl0ZXIKICAgIF9fY29weV9hdXgyKF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xh
c3QsCiAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCwgX190cnVlX3R5cGUpCiAg
ICB7IHJldHVybiBfX2NvcHkoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwgX19pdGVyYXRvcl9j
YXRlZ29yeShfX2ZpcnN0KSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5l
IF9UcCoKICAgIF9fY29weV9hdXgyKF9UcCogX19maXJzdCwgX1RwKiBfX2xhc3QsCiAgICAgICAg
ICAgICAgICBfVHAqIF9fcmVzdWx0LCBfX3RydWVfdHlwZSkKICAgIHsgcmV0dXJuIF9fY29weV90
cml2aWFsKF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcD4KICAgIGlubGluZSBfVHAqCiAgICBfX2NvcHlfYXV4Mihjb25zdCBfVHAqIF9fZmlyc3Qs
IGNvbnN0IF9UcCogX19sYXN0LAogICAgICAgICAgICAgICAgX1RwKiBfX3Jlc3VsdCwgX190cnVl
X3R5cGUpCiAgICB7IHJldHVybiBfX2NvcHlfdHJpdmlhbChfX2ZpcnN0LCBfX2xhc3QsIF9fcmVz
dWx0KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyLCB0eXBlbmFtZSBfT3V0cHV0
SXRlcj4KICAgIGlubGluZSBfT3V0cHV0SXRlcgogICAgX19jb3B5X25pMihfSW5wdXRJdGVyIF9f
Zmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jl
c3VsdCwgX190cnVlX3R5cGUpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3Jf
dHJhaXRzPF9JbnB1dEl0ZXI+Ojp2YWx1ZV90eXBlCiAgICAgICAgICBfVmFsdWVUeXBlOwogICAg
ICB0eXBlZGVmIHR5cGVuYW1lIF9fdHlwZV90cmFpdHM8X1ZhbHVlVHlwZT46Omhhc190cml2aWFs
X2Fzc2lnbm1lbnRfb3BlcmF0b3IKICAgICAgICAgIF9Ucml2aWFsOwogICAgICByZXR1cm4gX091
dHB1dEl0ZXIoX19jb3B5X2F1eDIoX19maXJzdCwgX19sYXN0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19yZXN1bHQuYmFzZSgpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX1RyaXZpYWwoKSkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
SW5wdXRJdGVyLCB0eXBlbmFtZSBfT3V0cHV0SXRlcj4KICAgIGlubGluZSBfT3V0cHV0SXRlcgog
ICAgX19jb3B5X25pMihfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAg
ICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCwgX19mYWxzZV90eXBlKQogICAgewogICAg
ICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyPjo6dmFsdWVfdHlw
ZQogICAgICAgICAgX1ZhbHVlVHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX3R5cGVfdHJh
aXRzPF9WYWx1ZVR5cGU+OjpoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yCiAgICAgICAg
ICBfVHJpdmlhbDsKICAgICAgcmV0dXJuIF9fY29weV9hdXgyKF9fZmlyc3QsIF9fbGFzdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAg
X1RyaXZpYWwoKSk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIsIHR5cGVu
YW1lIF9PdXRwdXRJdGVyPgogICAgaW5saW5lIF9PdXRwdXRJdGVyCiAgICBfX2NvcHlfbmkxKF9J
bnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgIF9PdXRw
dXRJdGVyIF9fcmVzdWx0LCBfX3RydWVfdHlwZSkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBfSXNfbm9ybWFsX2l0ZXJhdG9yPF9PdXRwdXRJdGVyPjo6X05vcm1hbCBfX05vcm1hbDsKICAg
ICAgcmV0dXJuIF9fY29weV9uaTIoX19maXJzdC5iYXNlKCksIF9fbGFzdC5iYXNlKCksIF9fcmVz
dWx0LCBfX05vcm1hbCgpKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlciwg
dHlwZW5hbWUgX091dHB1dEl0ZXI+CiAgICBpbmxpbmUgX091dHB1dEl0ZXIKICAgIF9fY29weV9u
aTEoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAg
X091dHB1dEl0ZXIgX19yZXN1bHQsIF9fZmFsc2VfdHlwZSkKICAgIHsKICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBfSXNfbm9ybWFsX2l0ZXJhdG9yPF9PdXRwdXRJdGVyPjo6X05vcm1hbCBfX05vcm1h
bDsKICAgICAgcmV0dXJuIF9fY29weV9uaTIoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwgX19O
b3JtYWwoKSk7CiAgICB9CiMgMzM5ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGli
L2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2FsZ29iYXNl
LmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyLCB0eXBlbmFtZSBfT3V0cHV0SXRl
cj4KICAgIGlubGluZSBfT3V0cHV0SXRlcgogICAgY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9J
bnB1dEl0ZXIgX19sYXN0LCBfT3V0cHV0SXRlciBfX3Jlc3VsdCkKICAgIHsKCiAgICAgCiAgICAg
CgoKICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0lzX25vcm1hbF9pdGVyYXRvcjxfSW5wdXRJdGVy
Pjo6X05vcm1hbCBfX05vcm1hbDsKICAgICAgIHJldHVybiBfX2NvcHlfbmkxKF9fZmlyc3QsIF9f
bGFzdCwgX19yZXN1bHQsIF9fTm9ybWFsKCkpOwogICAgfQoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQmlkaXJlY3Rpb25hbEl0ZXIxLCB0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXIyPgogICAg
aW5saW5lIF9CaWRpcmVjdGlvbmFsSXRlcjIKICAgIF9fY29weV9iYWNrd2FyZChfQmlkaXJlY3Rp
b25hbEl0ZXIxIF9fZmlyc3QsIF9CaWRpcmVjdGlvbmFsSXRlcjEgX19sYXN0LAogICAgICAgICAg
ICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjIgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAg
ICAgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcpCiAgICB7CiAgICAgIHdoaWxlIChfX2ZpcnN0
ICE9IF9fbGFzdCkKICAgICAgICAqLS1fX3Jlc3VsdCA9ICotLV9fbGFzdDsKICAgICAgcmV0dXJu
IF9fcmVzdWx0OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlciwg
dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyPgogICAgaW5saW5lIF9CaWRpcmVjdGlvbmFsSXRl
cgogICAgX19jb3B5X2JhY2t3YXJkKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5kb21B
Y2Nlc3NJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIg
X19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcp
CiAgICB7CiAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcj46
OmRpZmZlcmVuY2VfdHlwZSBfX247CiAgICAgIGZvciAoX19uID0gX19sYXN0IC0gX19maXJzdDsg
X19uID4gMDsgLS1fX24pCiAgICAgICAgKi0tX19yZXN1bHQgPSAqLS1fX2xhc3Q7CiAgICAgIHJl
dHVybiBfX3Jlc3VsdDsKICAgIH0KCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0
aW9uYWxJdGVyMSwgdHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyMiwKICAgICAgICAgICB0eXBl
bmFtZSBfQm9vbFR5cGU+CiAgICBzdHJ1Y3QgX19jb3B5X2JhY2t3YXJkX2Rpc3BhdGNoCiAgICB7
CiAgICAgIHN0YXRpYyBfQmlkaXJlY3Rpb25hbEl0ZXIyCiAgICAgIGNvcHkoX0JpZGlyZWN0aW9u
YWxJdGVyMSBfX2ZpcnN0LCBfQmlkaXJlY3Rpb25hbEl0ZXIxIF9fbGFzdCwKICAgICAgICAgICBf
QmlkaXJlY3Rpb25hbEl0ZXIyIF9fcmVzdWx0KQogICAgICB7CiAgICAgICAgcmV0dXJuIF9fY29w
eV9iYWNrd2FyZChfX2ZpcnN0LCBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faXRlcmF0b3JfY2F0
ZWdvcnkoX19maXJzdCkpOwogICAgICB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
CiAgICBzdHJ1Y3QgX19jb3B5X2JhY2t3YXJkX2Rpc3BhdGNoPF9UcCosIF9UcCosIF9fdHJ1ZV90
eXBlPgogICAgewogICAgICBzdGF0aWMgX1RwKgogICAgICBjb3B5KGNvbnN0IF9UcCogX19maXJz
dCwgY29uc3QgX1RwKiBfX2xhc3QsIF9UcCogX19yZXN1bHQpCiAgICAgIHsKICAgICAgICBjb25z
dCBwdHJkaWZmX3QgX051bSA9IF9fbGFzdCAtIF9fZmlyc3Q7CiAgICAgICAgbWVtbW92ZShfX3Jl
c3VsdCAtIF9OdW0sIF9fZmlyc3QsIHNpemVvZihfVHApICogX051bSk7CiAgICAgICAgcmV0dXJu
IF9fcmVzdWx0IC0gX051bTsKICAgICAgfQogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PgogICAgc3RydWN0IF9fY29weV9iYWNrd2FyZF9kaXNwYXRjaDxjb25zdCBfVHAqLCBfVHAqLCBf
X3RydWVfdHlwZT4KICAgIHsKICAgICAgc3RhdGljIF9UcCoKICAgICAgY29weShjb25zdCBfVHAq
IF9fZmlyc3QsIGNvbnN0IF9UcCogX19sYXN0LCBfVHAqIF9fcmVzdWx0KQogICAgICB7CiAgICAg
ICAgcmV0dXJuIF9fY29weV9iYWNrd2FyZF9kaXNwYXRjaDxfVHAqLCBfVHAqLCBfX3RydWVfdHlw
ZT4KICAgICAgICAgIDo6Y29weShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0KTsKICAgICAgfQog
ICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JJMSwgdHlwZW5hbWUgX0JJMj4KICAgIGlubGlu
ZSBfQkkyCiAgICBfX2NvcHlfYmFja3dhcmRfYXV4KF9CSTEgX19maXJzdCwgX0JJMSBfX2xhc3Qs
IF9CSTIgX19yZXN1bHQpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX190eXBlX3RyYWl0
czx0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0JJMj46OnZhbHVlX3R5cGU+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6Omhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3IgX1RyaXZp
YWw7CiAgICAgIHJldHVybiBfX2NvcHlfYmFja3dhcmRfZGlzcGF0Y2g8X0JJMSwgX0JJMiwgX1Ry
aXZpYWw+CiAgICAgICAgICAgICAgICAgIDo6Y29weShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0
KTsKICAgIH0KCiAgdGVtcGxhdGUgPHR5cGVuYW1lIF9CSTEsIHR5cGVuYW1lIF9CSTI+CiAgICBp
bmxpbmUgX0JJMgogICAgX19jb3B5X2JhY2t3YXJkX291dHB1dF9ub3JtYWxfaXRlcmF0b3IoX0JJ
MSBfX2ZpcnN0LCBfQkkxIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9CSTIgX19yZXN1bHQsIF9fdHJ1ZV90eXBlKQogICAgeyByZXR1cm4gX0JJMihf
X2NvcHlfYmFja3dhcmRfYXV4KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQuYmFzZSgpKSk7IH0K
CiAgdGVtcGxhdGUgPHR5cGVuYW1lIF9CSTEsIHR5cGVuYW1lIF9CSTI+CiAgICBpbmxpbmUgX0JJ
MgogICAgX19jb3B5X2JhY2t3YXJkX291dHB1dF9ub3JtYWxfaXRlcmF0b3IoX0JJMSBfX2ZpcnN0
LCBfQkkxIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9CSTIgX19yZXN1bHQsIF9fZmFsc2VfdHlwZSkKICAgIHsgcmV0dXJuIF9fY29weV9iYWNrd2Fy
ZF9hdXgoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCk7IH0KCiAgdGVtcGxhdGUgPHR5cGVuYW1l
IF9CSTEsIHR5cGVuYW1lIF9CSTI+CiAgICBpbmxpbmUgX0JJMgogICAgX19jb3B5X2JhY2t3YXJk
X2lucHV0X25vcm1hbF9pdGVyYXRvcihfQkkxIF9fZmlyc3QsIF9CSTEgX19sYXN0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQkkyIF9fcmVzdWx0LCBfX3RydWVf
dHlwZSkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXNfbm9ybWFsX2l0ZXJhdG9yPF9C
STI+OjpfTm9ybWFsIF9fTm9ybWFsOwogICAgICByZXR1cm4gX19jb3B5X2JhY2t3YXJkX291dHB1
dF9ub3JtYWxfaXRlcmF0b3IoX19maXJzdC5iYXNlKCksIF9fbGFzdC5iYXNlKCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc3VsdCwgX19O
b3JtYWwoKSk7CiAgICB9CgogIHRlbXBsYXRlIDx0eXBlbmFtZSBfQkkxLCB0eXBlbmFtZSBfQkky
PgogICAgaW5saW5lIF9CSTIKICAgIF9fY29weV9iYWNrd2FyZF9pbnB1dF9ub3JtYWxfaXRlcmF0
b3IoX0JJMSBfX2ZpcnN0LCBfQkkxIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX0JJMiBfX3Jlc3VsdCwgX19mYWxzZV90eXBlKQogICAgewogICAgICB0
eXBlZGVmIHR5cGVuYW1lIF9Jc19ub3JtYWxfaXRlcmF0b3I8X0JJMj46Ol9Ob3JtYWwgX19Ob3Jt
YWw7CiAgICAgIHJldHVybiBfX2NvcHlfYmFja3dhcmRfb3V0cHV0X25vcm1hbF9pdGVyYXRvcihf
X2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19Ob3JtYWwoKSk7CiAgICB9CiMgNDc3ICIvaG9tZS9BZG1p
bmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1
ZGUvYysrL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMKICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX0JJMSwg
dHlwZW5hbWUgX0JJMj4KICAgIGlubGluZSBfQkkyCiAgICBjb3B5X2JhY2t3YXJkKF9CSTEgX19m
aXJzdCwgX0JJMSBfX2xhc3QsIF9CSTIgX19yZXN1bHQpCiAgICB7CgogICAgIAogICAgIAogICAg
IAoKCgogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9Jc19ub3JtYWxfaXRlcmF0b3I8X0JJMT46Ol9O
b3JtYWwgX19Ob3JtYWw7CiAgICAgIHJldHVybiBfX2NvcHlfYmFja3dhcmRfaW5wdXRfbm9ybWFs
X2l0ZXJhdG9yKF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fTm9ybWFsKCkpOwogICAgfQojIDUwOSAi
L2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2lu
LzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ZvcndhcmRJdGVyLCB0eXBlbmFtZSBfVHA+CiAgICB2b2lkCiAgICBmaWxsKF9Gb3J3YXJk
SXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LCBjb25zdCBfVHAmIF9fdmFsdWUpCiAg
ICB7CgogICAgIAoKICAgICAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQog
ICAgICAgICpfX2ZpcnN0ID0gX192YWx1ZTsKICAgIH0KIyA1MzEgIi9ob21lL0FkbWluaXN0cmF0
b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysv
Yml0cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9PdXRwdXRJdGVyLCB0
eXBlbmFtZSBfU2l6ZSwgdHlwZW5hbWUgX1RwPgogICAgX091dHB1dEl0ZXIKICAgIGZpbGxfbihf
T3V0cHV0SXRlciBfX2ZpcnN0LCBfU2l6ZSBfX24sIGNvbnN0IF9UcCYgX192YWx1ZSkKICAgIHsK
CiAgICAgCgogICAgICBmb3IgKCA7IF9fbiA+IDA7IC0tX19uLCArK19fZmlyc3QpCiAgICAgICAg
Kl9fZmlyc3QgPSBfX3ZhbHVlOwogICAgICByZXR1cm4gX19maXJzdDsKICAgIH0KCgoKICBpbmxp
bmUgdm9pZAogIGZpbGwodW5zaWduZWQgY2hhciogX19maXJzdCwgdW5zaWduZWQgY2hhciogX19s
YXN0LCBjb25zdCB1bnNpZ25lZCBjaGFyJiBfX2MpCiAgewogICAgdW5zaWduZWQgY2hhciBfX3Rt
cCA9IF9fYzsKICAgIG1lbXNldChfX2ZpcnN0LCBfX3RtcCwgX19sYXN0IC0gX19maXJzdCk7CiAg
fQoKICBpbmxpbmUgdm9pZAogIGZpbGwoc2lnbmVkIGNoYXIqIF9fZmlyc3QsIHNpZ25lZCBjaGFy
KiBfX2xhc3QsIGNvbnN0IHNpZ25lZCBjaGFyJiBfX2MpCiAgewogICAgc2lnbmVkIGNoYXIgX190
bXAgPSBfX2M7CiAgICBtZW1zZXQoX19maXJzdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
X190bXApLCBfX2xhc3QgLSBfX2ZpcnN0KTsKICB9CgogIGlubGluZSB2b2lkCiAgZmlsbChjaGFy
KiBfX2ZpcnN0LCBjaGFyKiBfX2xhc3QsIGNvbnN0IGNoYXImIF9fYykKICB7CiAgICBjaGFyIF9f
dG1wID0gX19jOwogICAgbWVtc2V0KF9fZmlyc3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KF9fdG1wKSwgX19sYXN0IC0gX19maXJzdCk7CiAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU2l6
ZT4KICAgIGlubGluZSB1bnNpZ25lZCBjaGFyKgogICAgZmlsbF9uKHVuc2lnbmVkIGNoYXIqIF9f
Zmlyc3QsIF9TaXplIF9fbiwgY29uc3QgdW5zaWduZWQgY2hhciYgX19jKQogICAgewogICAgICBm
aWxsKF9fZmlyc3QsIF9fZmlyc3QgKyBfX24sIF9fYyk7CiAgICAgIHJldHVybiBfX2ZpcnN0ICsg
X19uOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU2l6ZT4KICAgIGlubGluZSBzaWduZWQg
Y2hhcioKICAgIGZpbGxfbihjaGFyKiBfX2ZpcnN0LCBfU2l6ZSBfX24sIGNvbnN0IHNpZ25lZCBj
aGFyJiBfX2MpCiAgICB7CiAgICAgIGZpbGwoX19maXJzdCwgX19maXJzdCArIF9fbiwgX19jKTsK
ICAgICAgcmV0dXJuIF9fZmlyc3QgKyBfX247CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9T
aXplPgogICAgaW5saW5lIGNoYXIqCiAgICBmaWxsX24oY2hhciogX19maXJzdCwgX1NpemUgX19u
LCBjb25zdCBjaGFyJiBfX2MpCiAgICB7CiAgICAgIGZpbGwoX19maXJzdCwgX19maXJzdCArIF9f
biwgX19jKTsKICAgICAgcmV0dXJuIF9fZmlyc3QgKyBfX247CiAgICB9CiMgNjA2ICIvaG9tZS9B
ZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2lu
Y2x1ZGUvYysrL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5w
dXRJdGVyMSwgdHlwZW5hbWUgX0lucHV0SXRlcjI+CiAgICBwYWlyPF9JbnB1dEl0ZXIxLCBfSW5w
dXRJdGVyMj4KICAgIG1pc21hdGNoKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBf
X2xhc3QxLAogICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIpCiAgICB7CgogICAgIAog
ICAgIAogICAgIAoKICAgICAKCgogICAgICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiAq
X19maXJzdDEgPT0gKl9fZmlyc3QyKSB7CiAgICAgICAgKytfX2ZpcnN0MTsKICAgICAgICArK19f
Zmlyc3QyOwogICAgICB9CiAgICAgIHJldHVybiBwYWlyPF9JbnB1dEl0ZXIxLCBfSW5wdXRJdGVy
Mj4oX19maXJzdDEsIF9fZmlyc3QyKTsKICAgIH0KIyA2NDAgIi9ob21lL0FkbWluaXN0cmF0b3Iv
Z2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0
cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIxLCB0eXBl
bmFtZSBfSW5wdXRJdGVyMiwgdHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4KICAgIHBhaXI8X0lu
cHV0SXRlcjEsIF9JbnB1dEl0ZXIyPgogICAgbWlzbWF0Y2goX0lucHV0SXRlcjEgX19maXJzdDEs
IF9JbnB1dEl0ZXIxIF9fbGFzdDEsCiAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwK
ICAgICAgICAgICAgIF9CaW5hcnlQcmVkaWNhdGUgX19iaW5hcnlfcHJlZCkKICAgIHsKCiAgICAg
CiAgICAgCgogICAgICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2JpbmFyeV9wcmVk
KCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkgewogICAgICAgICsrX19maXJzdDE7CiAgICAgICAgKytf
X2ZpcnN0MjsKICAgICAgfQogICAgICByZXR1cm4gcGFpcjxfSW5wdXRJdGVyMSwgX0lucHV0SXRl
cjI+KF9fZmlyc3QxLCBfX2ZpcnN0Mik7CiAgICB9CiMgNjY4ICIvaG9tZS9BZG1pbmlzdHJhdG9y
L2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2Jp
dHMvc3RsX2FsZ29iYXNlLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyMSwgdHlw
ZW5hbWUgX0lucHV0SXRlcjI+CiAgICBpbmxpbmUgYm9vbAogICAgZXF1YWwoX0lucHV0SXRlcjEg
X19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsCiAgICAgICAgICBfSW5wdXRJdGVyMiBfX2Zp
cnN0MikKICAgIHsKCiAgICAgCiAgICAgCiAgICAgCgoKCiAgICAgIGZvciAoIDsgX19maXJzdDEg
IT0gX19sYXN0MTsgKytfX2ZpcnN0MSwgKytfX2ZpcnN0MikKICAgICAgICBpZiAoISgqX19maXJz
dDEgPT0gKl9fZmlyc3QyKSkKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgcmV0dXJuIHRy
dWU7CiAgICB9CiMgNjk5ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1s
aWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyMSwgdHlwZW5hbWUgX0lucHV0SXRlcjIsIHR5
cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+CiAgICBpbmxpbmUgYm9vbAogICAgZXF1YWwoX0lucHV0
SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsCiAgICAgICAgICBfSW5wdXRJdGVy
MiBfX2ZpcnN0MiwKICAgICAgICAgIF9CaW5hcnlQcmVkaWNhdGUgX19iaW5hcnlfcHJlZCkKICAg
IHsKCiAgICAgCiAgICAgCgogICAgICBmb3IgKCA7IF9fZmlyc3QxICE9IF9fbGFzdDE7ICsrX19m
aXJzdDEsICsrX19maXJzdDIpCiAgICAgICAgaWYgKCFfX2JpbmFyeV9wcmVkKCpfX2ZpcnN0MSwg
Kl9fZmlyc3QyKSkKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgcmV0dXJuIHRydWU7CiAg
ICB9CiMgNzMyICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4
Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyMSwgdHlwZW5hbWUgX0lucHV0SXRlcjI+CiAgICBib29s
CiAgICBsZXhpY29ncmFwaGljYWxfY29tcGFyZShfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0
SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9f
Zmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xhc3QyKQogICAgewoKICAgICAKICAgICAKICAgICAKCiAg
ICAgCgoKICAgICAgZm9yICggOyBfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9f
bGFzdDIKICAgICAgICAgICAgOyArK19fZmlyc3QxLCArK19fZmlyc3QyKSB7CiAgICAgICAgaWYg
KCpfX2ZpcnN0MSA8ICpfX2ZpcnN0MikKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIGlm
ICgqX19maXJzdDIgPCAqX19maXJzdDEpCiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0K
ICAgICAgcmV0dXJuIF9fZmlyc3QxID09IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0MjsK
ICAgIH0KIyA3NjcgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9p
Njg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRl
bXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIxLCB0eXBlbmFtZSBfSW5wdXRJdGVyMiwgdHlwZW5h
bWUgX0NvbXBhcmU+CiAgICBib29sCiAgICBsZXhpY29ncmFwaGljYWxfY29tcGFyZShfSW5wdXRJ
dGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xhc3QyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKQogICAgewoKICAgICAKICAgICAK
CiAgICAgIGZvciAoIDsgX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3Qy
CiAgICAgICAgICAgIDsgKytfX2ZpcnN0MSwgKytfX2ZpcnN0MikgewogICAgICAgIGlmIChfX2Nv
bXAoKl9fZmlyc3QxLCAqX19maXJzdDIpKQogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
aWYgKF9fY29tcCgqX19maXJzdDIsICpfX2ZpcnN0MSkpCiAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgIH0KICAgICAgcmV0dXJuIF9fZmlyc3QxID09IF9fbGFzdDEgJiYgX19maXJzdDIgIT0g
X19sYXN0MjsKICAgIH0KCiAgaW5saW5lIGJvb2wKICBsZXhpY29ncmFwaGljYWxfY29tcGFyZShj
b25zdCB1bnNpZ25lZCBjaGFyKiBfX2ZpcnN0MSwgY29uc3QgdW5zaWduZWQgY2hhciogX19sYXN0
MSwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBfX2ZpcnN0
MiwgY29uc3QgdW5zaWduZWQgY2hhciogX19sYXN0MikKICB7CiAgICBjb25zdCBzaXplX3QgX19s
ZW4xID0gX19sYXN0MSAtIF9fZmlyc3QxOwogICAgY29uc3Qgc2l6ZV90IF9fbGVuMiA9IF9fbGFz
dDIgLSBfX2ZpcnN0MjsKICAgIGNvbnN0IGludCBfX3Jlc3VsdCA9IG1lbWNtcChfX2ZpcnN0MSwg
X19maXJzdDIsIHN0ZDo6bWluKF9fbGVuMSwgX19sZW4yKSk7CiAgICByZXR1cm4gX19yZXN1bHQg
IT0gMCA/IF9fcmVzdWx0IDwgMCA6IF9fbGVuMSA8IF9fbGVuMjsKICB9CgogIGlubGluZSBib29s
CiAgbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUoY29uc3QgY2hhciogX19maXJzdDEsIGNvbnN0IGNo
YXIqIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogX19maXJz
dDIsIGNvbnN0IGNoYXIqIF9fbGFzdDIpCiAgewoKICAgIHJldHVybiBsZXhpY29ncmFwaGljYWxf
Y29tcGFyZSgoY29uc3Qgc2lnbmVkIGNoYXIqKSBfX2ZpcnN0MSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoY29uc3Qgc2lnbmVkIGNoYXIqKSBfX2xhc3QxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBzaWduZWQgY2hhciopIF9fZmlyc3QyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBzaWduZWQgY2hhciopIF9f
bGFzdDIpOwoKCgoKCgogIH0KCn0KIyA1NSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5n
L2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9tZW1vcnkiIDIgMwoj
IDEgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5
Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfYWxsb2MuaCIgMSAzCiMgODQgIi9ob21lL0Fk
bWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5j
bHVkZS9jKysvYml0cy9zdGxfYWxsb2MuaCIgMwojIDEgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2Nj
dGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9m
dW5jdGV4Y2VwdC5oIiAxIDMKIyAzNCAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xp
Yi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL2Z1bmN0ZXhjZXB0
LmgiIDMKIyAxICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4
Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2V4Y2VwdGlvbl9kZWZpbmVzLmgiIDEgMwojIDM1
ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3
aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvZnVuY3RleGNlcHQuaCIgMiAzCgpuYW1lc3BhY2Ugc3Rk
CnsKCiAgdm9pZAogIF9fdGhyb3dfYmFkX2V4Y2VwdGlvbih2b2lkKTsKCgogIHZvaWQKICBfX3Ro
cm93X2JhZF9hbGxvYyh2b2lkKTsKCgogIHZvaWQKICBfX3Rocm93X2JhZF9jYXN0KHZvaWQpOwoK
ICB2b2lkCiAgX190aHJvd19iYWRfdHlwZWlkKHZvaWQpOwoKCiAgdm9pZAogIF9fdGhyb3dfbG9n
aWNfZXJyb3IoY29uc3QgY2hhciogX19zKTsKCiAgdm9pZAogIF9fdGhyb3dfZG9tYWluX2Vycm9y
KGNvbnN0IGNoYXIqIF9fcyk7CgogIHZvaWQKICBfX3Rocm93X2ludmFsaWRfYXJndW1lbnQoY29u
c3QgY2hhciogX19zKTsKCiAgdm9pZAogIF9fdGhyb3dfbGVuZ3RoX2Vycm9yKGNvbnN0IGNoYXIq
IF9fcyk7CgogIHZvaWQKICBfX3Rocm93X291dF9vZl9yYW5nZShjb25zdCBjaGFyKiBfX3MpOwoK
ICB2b2lkCiAgX190aHJvd19ydW50aW1lX2Vycm9yKGNvbnN0IGNoYXIqIF9fcyk7CgogIHZvaWQK
ICBfX3Rocm93X3JhbmdlX2Vycm9yKGNvbnN0IGNoYXIqIF9fcyk7CgogIHZvaWQKICBfX3Rocm93
X292ZXJmbG93X2Vycm9yKGNvbnN0IGNoYXIqIF9fcyk7CgogIHZvaWQKICBfX3Rocm93X3VuZGVy
Zmxvd19lcnJvcihjb25zdCBjaGFyKiBfX3MpOwoKCiAgdm9pZAogIF9fdGhyb3dfaW9zX2ZhaWx1
cmUoY29uc3QgY2hhciogX19zKTsKfQojIDg1ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3Rp
bmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2Fs
bG9jLmgiIDIgMwojIDEgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfdGhyZWFkcy5oIiAxIDMK
IyA1NCAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMt
Y3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF90aHJlYWRzLmgiIDMKbmFtZXNwYWNlIHN0
ZAp7CgoKCgogIHN0cnVjdCBfUmVmY291bnRfQmFzZQogIHsKCiAgICB0eXBlZGVmIHNpemVfdCBf
UkNfdDsKCgogICAgdm9sYXRpbGUgX1JDX3QgX01fcmVmX2NvdW50OwoKCiAgICBfX2d0aHJlYWRf
bXV0ZXhfdCBfTV9yZWZfY291bnRfbG9jazsKCiAgICBfUmVmY291bnRfQmFzZShfUkNfdCBfX24p
IDogX01fcmVmX2NvdW50KF9fbikKICAgIHsKCiAgICAgIF9fZ3RocmVhZF9tdXRleF90IF9fdG1w
ID0gKHB0aHJlYWRfbXV0ZXhfdCkyMDsKICAgICAgX01fcmVmX2NvdW50X2xvY2sgPSBfX3RtcDsK
CgoKCgogICAgfQoKICAgIHZvaWQKICAgIF9NX2luY3IoKQogICAgewogICAgICBfX2d0aHJlYWRf
bXV0ZXhfbG9jaygmX01fcmVmX2NvdW50X2xvY2spOwogICAgICArK19NX3JlZl9jb3VudDsKICAg
ICAgX19ndGhyZWFkX211dGV4X3VubG9jaygmX01fcmVmX2NvdW50X2xvY2spOwogICAgfQoKICAg
IF9SQ190CiAgICBfTV9kZWNyKCkKICAgIHsKICAgICAgX19ndGhyZWFkX211dGV4X2xvY2soJl9N
X3JlZl9jb3VudF9sb2NrKTsKICAgICAgdm9sYXRpbGUgX1JDX3QgX190bXAgPSAtLV9NX3JlZl9j
b3VudDsKICAgICAgX19ndGhyZWFkX211dGV4X3VubG9jaygmX01fcmVmX2NvdW50X2xvY2spOwog
ICAgICByZXR1cm4gX190bXA7CiAgICB9CiAgfTsKIyAxMDkgIi9ob21lL0FkbWluaXN0cmF0b3Iv
Z2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0
cy9zdGxfdGhyZWFkcy5oIiAzCiAgdGVtcGxhdGU8aW50IF9fZHVtbXk+CiAgICBzdHJ1Y3QgX1N3
YXBfbG9ja19zdHJ1Y3QKICAgIHsgc3RhdGljIF9fZ3RocmVhZF9tdXRleF90IF9TX3N3YXBfbG9j
azsgfTsKCiAgdGVtcGxhdGU8aW50IF9fZHVtbXk+CiAgICBfX2d0aHJlYWRfbXV0ZXhfdAogICAg
X1N3YXBfbG9ja19zdHJ1Y3Q8X19kdW1teT46Ol9TX3N3YXBfbG9jayA9IChwdGhyZWFkX211dGV4
X3QpMjA7CgoKCiAgaW5saW5lIHVuc2lnbmVkIGxvbmcKICBfQXRvbWljX3N3YXAodW5zaWduZWQg
bG9uZyAqIF9fcCwgdW5zaWduZWQgbG9uZyBfX3EpCiAgewogICAgX19ndGhyZWFkX211dGV4X2xv
Y2soJl9Td2FwX2xvY2tfc3RydWN0PDA+OjpfU19zd2FwX2xvY2spOwogICAgdW5zaWduZWQgbG9u
ZyBfX3Jlc3VsdCA9ICpfX3A7CiAgICAqX19wID0gX19xOwogICAgX19ndGhyZWFkX211dGV4X3Vu
bG9jaygmX1N3YXBfbG9ja19zdHJ1Y3Q8MD46Ol9TX3N3YXBfbG9jayk7CiAgICByZXR1cm4gX19y
ZXN1bHQ7CiAgfQoKfQojIDE1NSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9n
Y2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF90aHJlYWRzLmgi
IDMKbmFtZXNwYWNlIHN0ZAp7CiAgc3RydWN0IF9TVExfbXV0ZXhfbG9jawogIHsKCgoKCgogICAg
X19ndGhyZWFkX211dGV4X3QgX01fbG9jazsKCiAgICB2b2lkCiAgICBfTV9pbml0aWFsaXplKCkK
ICAgIHsKIyAxOTIgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9p
Njg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfdGhyZWFkcy5oIiAzCiAgICB9
CgogICAgdm9pZAogICAgX01fYWNxdWlyZV9sb2NrKCkKICAgIHsKCgoKICAgICAgX19ndGhyZWFk
X211dGV4X2xvY2soJl9NX2xvY2spOwogICAgfQoKICAgIHZvaWQKICAgIF9NX3JlbGVhc2VfbG9j
aygpCiAgICB7CgoKCiAgICAgIF9fZ3RocmVhZF9tdXRleF91bmxvY2soJl9NX2xvY2spOwogICAg
fQogIH07CiMgMjI4ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIv
aTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX3RocmVhZHMuaCIgMwogIHN0
cnVjdCBfU1RMX2F1dG9fbG9jawogIHsKICAgIF9TVExfbXV0ZXhfbG9jayYgX01fbG9jazsKCiAg
ICBfU1RMX2F1dG9fbG9jayhfU1RMX211dGV4X2xvY2smIF9fbG9jaykgOiBfTV9sb2NrKF9fbG9j
aykKICAgIHsgX01fbG9jay5fTV9hY3F1aXJlX2xvY2soKTsgfQoKICAgIH5fU1RMX2F1dG9fbG9j
aygpIHsgX01fbG9jay5fTV9yZWxlYXNlX2xvY2soKTsgfQoKICBwcml2YXRlOgogICAgdm9pZCBv
cGVyYXRvcj0oY29uc3QgX1NUTF9hdXRvX2xvY2smKTsKICAgIF9TVExfYXV0b19sb2NrKGNvbnN0
IF9TVExfYXV0b19sb2NrJik7CiAgfTsKCn0KIyA4NiAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0
ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0
bF9hbGxvYy5oIiAyIDMKCiMgMSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9n
Y2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9pNjg2LXBjLWN5Z3dpbi9iaXRz
L2F0b21pY2l0eS5oIiAxIDMKIyAzMyAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xp
Yi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9pNjg2LXBjLWN5Z3dpbi9i
aXRzL2F0b21pY2l0eS5oIiAzCnR5cGVkZWYgaW50IF9BdG9taWNfd29yZDsKCnN0YXRpYyBpbmxp
bmUgX0F0b21pY193b3JkCl9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSkKX19leGNoYW5nZV9h
bmRfYWRkICh2b2xhdGlsZSBfQXRvbWljX3dvcmQgKl9fbWVtLCBpbnQgX192YWwpCnsKICByZWdp
c3RlciBfQXRvbWljX3dvcmQgX19yZXN1bHQ7CiAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsb2Nr
OyB4YWRkbCAlMCwlMSIKICAgICAgICAgICAgICAgICAgICAgICAgOiAiPXIiIChfX3Jlc3VsdCks
ICIrbSIgKCpfX21lbSkKICAgICAgICAgICAgICAgICAgICAgICAgOiAiMCIgKF9fdmFsKQogICAg
ICAgICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCnN0
YXRpYyBpbmxpbmUgdm9pZApfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpCl9fYXRvbWljX2Fk
ZCAodm9sYXRpbGUgX0F0b21pY193b3JkKiBfX21lbSwgaW50IF9fdmFsKQp7CiAgX19hc21fXyBf
X3ZvbGF0aWxlX18gKCJsb2NrOyBhZGRsICUxLCUwIgogICAgICAgICAgICAgICAgICAgICAgICA6
ICIrbSIgKCpfX21lbSkgOiAiaXIiIChfX3ZhbCkgOiAibWVtb3J5Iik7Cn0KIyA4OCAiL2hvbWUv
QWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9p
bmNsdWRlL2MrKy9iaXRzL3N0bF9hbGxvYy5oIiAyIDMKCm5hbWVzcGFjZSBzdGQKewojIDk5ICIv
aG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4v
My40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2FsbG9jLmgiIDMKICBjbGFzcyBfX25ld19hbGxvYwog
IHsKICBwdWJsaWM6CiAgICBzdGF0aWMgdm9pZCoKICAgIGFsbG9jYXRlKHNpemVfdCBfX24pCiAg
ICB7IHJldHVybiA6Om9wZXJhdG9yIG5ldyhfX24pOyB9CgogICAgc3RhdGljIHZvaWQKICAgIGRl
YWxsb2NhdGUodm9pZCogX19wLCBzaXplX3QpCiAgICB7IDo6b3BlcmF0b3IgZGVsZXRlKF9fcCk7
IH0KICB9OwojIDEyMiAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGli
L2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGxvYy5oIiAzCiAgdGVt
cGxhdGU8aW50IF9faW5zdD4KICAgIGNsYXNzIF9fbWFsbG9jX2FsbG9jCiAgICB7CiAgICBwcml2
YXRlOgogICAgICBzdGF0aWMgdm9pZCogX1Nfb29tX21hbGxvYyhzaXplX3QpOwogICAgICBzdGF0
aWMgdm9pZCAoKiBfX21hbGxvY19hbGxvY19vb21faGFuZGxlcikoKTsKCiAgICBwdWJsaWM6CiAg
ICAgIHN0YXRpYyB2b2lkKgogICAgICBhbGxvY2F0ZShzaXplX3QgX19uKQogICAgICB7CiAgICAg
ICAgdm9pZCogX19yZXN1bHQgPSBtYWxsb2MoX19uKTsKICAgICAgICBpZiAoX19idWlsdGluX2V4
cGVjdChfX3Jlc3VsdCA9PSAwLCAwKSkKICAgICAgICAgIF9fcmVzdWx0ID0gX1Nfb29tX21hbGxv
YyhfX24pOwogICAgICAgIHJldHVybiBfX3Jlc3VsdDsKICAgICAgfQoKICAgICAgc3RhdGljIHZv
aWQKICAgICAgZGVhbGxvY2F0ZSh2b2lkKiBfX3AsIHNpemVfdCApCiAgICAgIHsgZnJlZShfX3Ap
OyB9CgogICAgICBzdGF0aWMgdm9pZCAoKiBfX3NldF9tYWxsb2NfaGFuZGxlcih2b2lkICgqX19m
KSgpKSkoKQogICAgICB7CiAgICAgICAgdm9pZCAoKiBfX29sZCkoKSA9IF9fbWFsbG9jX2FsbG9j
X29vbV9oYW5kbGVyOwogICAgICAgIF9fbWFsbG9jX2FsbG9jX29vbV9oYW5kbGVyID0gX19mOwog
ICAgICAgIHJldHVybiBfX29sZDsKICAgICAgfQogICAgfTsKCgogIHRlbXBsYXRlPGludCBfX2lu
c3Q+CiAgICB2b2lkICgqIF9fbWFsbG9jX2FsbG9jPF9faW5zdD46Ol9fbWFsbG9jX2FsbG9jX29v
bV9oYW5kbGVyKSgpID0gMDsKCiAgdGVtcGxhdGU8aW50IF9faW5zdD4KICAgIHZvaWQqCiAgICBf
X21hbGxvY19hbGxvYzxfX2luc3Q+OjoKICAgIF9TX29vbV9tYWxsb2Moc2l6ZV90IF9fbikKICAg
IHsKICAgICAgdm9pZCAoKiBfX215X21hbGxvY19oYW5kbGVyKSgpOwogICAgICB2b2lkKiBfX3Jl
c3VsdDsKCiAgICAgIGZvciAoOzspCiAgICAgICAgewogICAgICAgICAgX19teV9tYWxsb2NfaGFu
ZGxlciA9IF9fbWFsbG9jX2FsbG9jX29vbV9oYW5kbGVyOwogICAgICAgICAgaWYgKF9fYnVpbHRp
bl9leHBlY3QoX19teV9tYWxsb2NfaGFuZGxlciA9PSAwLCAwKSkKICAgICAgICAgICAgX190aHJv
d19iYWRfYWxsb2MoKTsKICAgICAgICAgICgqX19teV9tYWxsb2NfaGFuZGxlcikoKTsKICAgICAg
ICAgIF9fcmVzdWx0ID0gbWFsbG9jKF9fbik7CiAgICAgICAgICBpZiAoX19yZXN1bHQpCiAgICAg
ICAgICAgIHJldHVybiBfX3Jlc3VsdDsKICAgICAgICB9CiAgICB9CgoKICB0eXBlZGVmIF9fbmV3
X2FsbG9jIF9fbWVtX2ludGVyZmFjZTsKIyAxODkgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVz
dGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxf
YWxsb2MuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9jPgogICAg
Y2xhc3MgX19zaW1wbGVfYWxsb2MKICAgIHsKICAgIHB1YmxpYzoKICAgICAgc3RhdGljIF9UcCoK
ICAgICAgYWxsb2NhdGUoc2l6ZV90IF9fbikKICAgICAgewogICAgICAgIF9UcCogX19yZXQgPSAw
OwogICAgICAgIGlmIChfX24pCiAgICAgICAgICBfX3JldCA9IHN0YXRpY19jYXN0PF9UcCo+KF9B
bGxvYzo6YWxsb2NhdGUoX19uICogc2l6ZW9mKF9UcCkpKTsKICAgICAgICByZXR1cm4gX19yZXQ7
CiAgICAgIH0KCiAgICAgIHN0YXRpYyBfVHAqCiAgICAgIGFsbG9jYXRlKCkKICAgICAgeyByZXR1
cm4gKF9UcCopIF9BbGxvYzo6YWxsb2NhdGUoc2l6ZW9mIChfVHApKTsgfQoKICAgICAgc3RhdGlj
IHZvaWQKICAgICAgZGVhbGxvY2F0ZShfVHAqIF9fcCwgc2l6ZV90IF9fbikKICAgICAgeyBpZiAo
MCAhPSBfX24pIF9BbGxvYzo6ZGVhbGxvY2F0ZShfX3AsIF9fbiAqIHNpemVvZiAoX1RwKSk7IH0K
CiAgICAgIHN0YXRpYyB2b2lkCiAgICAgIGRlYWxsb2NhdGUoX1RwKiBfX3ApCiAgICAgIHsgX0Fs
bG9jOjpkZWFsbG9jYXRlKF9fcCwgc2l6ZW9mIChfVHApKTsgfQogICAgfTsKIyAyMjcgIi9ob21l
L0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQv
aW5jbHVkZS9jKysvYml0cy9zdGxfYWxsb2MuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxv
Yz4KICAgIGNsYXNzIF9fZGVidWdfYWxsb2MKICAgIHsKICAgIHByaXZhdGU6CgoKICAgICAgZW51
bSB7X1NfZXh0cmEgPSA4fTsKCiAgICBwdWJsaWM6CiAgICAgIHN0YXRpYyB2b2lkKgogICAgICBh
bGxvY2F0ZShzaXplX3QgX19uKQogICAgICB7CiAgICAgICAgY2hhciogX19yZXN1bHQgPSAoY2hh
ciopX0FsbG9jOjphbGxvY2F0ZShfX24gKyAoaW50KSBfU19leHRyYSk7CiAgICAgICAgKihzaXpl
X3QqKV9fcmVzdWx0ID0gX19uOwogICAgICAgIHJldHVybiBfX3Jlc3VsdCArIChpbnQpIF9TX2V4
dHJhOwogICAgICB9CgogICAgICBzdGF0aWMgdm9pZAogICAgICBkZWFsbG9jYXRlKHZvaWQqIF9f
cCwgc2l6ZV90IF9fbikKICAgICAgewogICAgICAgIGNoYXIqIF9fcmVhbF9wID0gKGNoYXIqKV9f
cCAtIChpbnQpIF9TX2V4dHJhOwogICAgICAgIGlmICgqKHNpemVfdCopX19yZWFsX3AgIT0gX19u
KQogICAgICAgICAgYWJvcnQoKTsKICAgICAgICBfQWxsb2M6OmRlYWxsb2NhdGUoX19yZWFsX3As
IF9fbiArIChpbnQpIF9TX2V4dHJhKTsKICAgICAgfQogICAgfTsKIyAyODUgIi9ob21lL0FkbWlu
aXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVk
ZS9jKysvYml0cy9zdGxfYWxsb2MuaCIgMwogIHRlbXBsYXRlPGJvb2wgX190aHJlYWRzLCBpbnQg
X19pbnN0PgogICAgY2xhc3MgX19wb29sX2FsbG9jCiAgICB7CiAgICBwcml2YXRlOgogICAgICBl
bnVtIHtfQUxJR04gPSA4fTsKICAgICAgZW51bSB7X01BWF9CWVRFUyA9IDEyOH07CiAgICAgIGVu
dW0ge19ORlJFRUxJU1RTID0gX01BWF9CWVRFUyAvIF9BTElHTn07CgogICAgICB1bmlvbiBfT2Jq
CiAgICAgIHsKICAgICAgICB1bmlvbiBfT2JqKiBfTV9mcmVlX2xpc3RfbGluazsKICAgICAgICBj
aGFyIF9NX2NsaWVudF9kYXRhWzFdOwogICAgICB9OwoKICAgICAgc3RhdGljIF9PYmoqIHZvbGF0
aWxlIF9TX2ZyZWVfbGlzdFtfTkZSRUVMSVNUU107CgoKICAgICAgc3RhdGljIGNoYXIqIF9TX3N0
YXJ0X2ZyZWU7CiAgICAgIHN0YXRpYyBjaGFyKiBfU19lbmRfZnJlZTsKICAgICAgc3RhdGljIHNp
emVfdCBfU19oZWFwX3NpemU7CgogICAgICBzdGF0aWMgX1NUTF9tdXRleF9sb2NrIF9TX2xvY2s7
CiAgICAgIHN0YXRpYyBfQXRvbWljX3dvcmQgX1NfZm9yY2VfbmV3OwoKICAgICAgc3RhdGljIHNp
emVfdAogICAgICBfU19yb3VuZF91cChzaXplX3QgX19ieXRlcykKICAgICAgeyByZXR1cm4gKCgo
X19ieXRlcykgKyAoc2l6ZV90KSBfQUxJR04tMSkgJiB+KChzaXplX3QpIF9BTElHTiAtIDEpKTsg
fQoKICAgICAgc3RhdGljIHNpemVfdAogICAgICBfU19mcmVlbGlzdF9pbmRleChzaXplX3QgX19i
eXRlcykKICAgICAgeyByZXR1cm4gKCgoX19ieXRlcykgKyAoc2l6ZV90KV9BTElHTiAtIDEpLyhz
aXplX3QpX0FMSUdOIC0gMSk7IH0KCgoKICAgICAgc3RhdGljIHZvaWQqCiAgICAgIF9TX3JlZmls
bChzaXplX3QgX19uKTsKCgoKICAgICAgc3RhdGljIGNoYXIqCiAgICAgIF9TX2NodW5rX2FsbG9j
KHNpemVfdCBfX3NpemUsIGludCYgX19ub2Jqcyk7CgoKCiAgICAgIHN0cnVjdCBfTG9jawogICAg
ICB7CiAgICAgICAgX0xvY2soKSB7IGlmIChfX3RocmVhZHMpIF9TX2xvY2suX01fYWNxdWlyZV9s
b2NrKCk7IH0KICAgICAgICB+X0xvY2soKSB7IGlmIChfX3RocmVhZHMpIF9TX2xvY2suX01fcmVs
ZWFzZV9sb2NrKCk7IH0KICAgICAgfSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAg
ICBmcmllbmQgc3RydWN0IF9Mb2NrOwoKICAgIHB1YmxpYzoKCiAgICAgIHN0YXRpYyB2b2lkKgog
ICAgICBhbGxvY2F0ZShzaXplX3QgX19uKQogICAgICB7CiAgICAgICAgdm9pZCogX19yZXQgPSAw
OwoKCgoKICAgICAgICBpZiAoX1NfZm9yY2VfbmV3ID09IDApCiAgICAgICAgICB7CiAgICAgICAg
ICAgIGlmIChnZXRlbnYoIkdMSUJDUFBfRk9SQ0VfTkVXIikpCiAgICAgICAgICAgICAgX19hdG9t
aWNfYWRkKCZfU19mb3JjZV9uZXcsIDEpOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
X19hdG9taWNfYWRkKCZfU19mb3JjZV9uZXcsIC0xKTsKICAgICAgICAgIH0KCiAgICAgICAgaWYg
KChfX24gPiAoc2l6ZV90KSBfTUFYX0JZVEVTKSB8fCAoX1NfZm9yY2VfbmV3ID4gMCkpCiAgICAg
ICAgICBfX3JldCA9IF9fbmV3X2FsbG9jOjphbGxvY2F0ZShfX24pOwogICAgICAgIGVsc2UKICAg
ICAgICAgIHsKICAgICAgICAgICAgX09iaiogdm9sYXRpbGUqIF9fbXlfZnJlZV9saXN0ID0gX1Nf
ZnJlZV9saXN0CiAgICAgICAgICAgICAgKyBfU19mcmVlbGlzdF9pbmRleChfX24pOwoKCgogICAg
ICAgICAgICBfTG9jayBfX2xvY2tfaW5zdGFuY2U7CiAgICAgICAgICAgIF9PYmoqIF9fcmVzdHJp
Y3RfXyBfX3Jlc3VsdCA9ICpfX215X2ZyZWVfbGlzdDsKICAgICAgICAgICAgaWYgKF9fYnVpbHRp
bl9leHBlY3QoX19yZXN1bHQgPT0gMCwgMCkpCiAgICAgICAgICAgICAgX19yZXQgPSBfU19yZWZp
bGwoX1Nfcm91bmRfdXAoX19uKSk7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAqX19teV9mcmVlX2xpc3QgPSBfX3Jlc3VsdCAtPiBfTV9mcmVlX2xpc3Rf
bGluazsKICAgICAgICAgICAgICAgIF9fcmV0ID0gX19yZXN1bHQ7CiAgICAgICAgICAgICAgfQog
ICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdChfX3JldCA9PSAwLCAwKSkKICAgICAgICAg
ICAgICBfX3Rocm93X2JhZF9hbGxvYygpOwogICAgICAgICAgfQogICAgICAgIHJldHVybiBfX3Jl
dDsKICAgICAgfQoKCiAgICAgIHN0YXRpYyB2b2lkCiAgICAgIGRlYWxsb2NhdGUodm9pZCogX19w
LCBzaXplX3QgX19uKQogICAgICB7CiAgICAgICAgaWYgKChfX24gPiAoc2l6ZV90KSBfTUFYX0JZ
VEVTKSB8fCAoX1NfZm9yY2VfbmV3ID4gMCkpCiAgICAgICAgICBfX25ld19hbGxvYzo6ZGVhbGxv
Y2F0ZShfX3AsIF9fbik7CiAgICAgICAgZWxzZQogICAgICAgICAgewogICAgICAgICAgICBfT2Jq
KiB2b2xhdGlsZSogX19teV9mcmVlX2xpc3QgPSBfU19mcmVlX2xpc3QKICAgICAgICAgICAgICAr
IF9TX2ZyZWVsaXN0X2luZGV4KF9fbik7CiAgICAgICAgICAgIF9PYmoqIF9fcSA9IChfT2JqKilf
X3A7CgoKCgogICAgICAgICAgICBfTG9jayBfX2xvY2tfaW5zdGFuY2U7CiAgICAgICAgICAgIF9f
cSAtPiBfTV9mcmVlX2xpc3RfbGluayA9ICpfX215X2ZyZWVfbGlzdDsKICAgICAgICAgICAgKl9f
bXlfZnJlZV9saXN0ID0gX19xOwogICAgICAgICAgfQogICAgICB9CiAgICB9OwoKICB0ZW1wbGF0
ZTxib29sIF9fdGhyZWFkcywgaW50IF9faW5zdD4gX0F0b21pY193b3JkCiAgX19wb29sX2FsbG9j
PF9fdGhyZWFkcywgX19pbnN0Pjo6X1NfZm9yY2VfbmV3ID0gMDsKCiAgdGVtcGxhdGU8Ym9vbCBf
X3RocmVhZHMsIGludCBfX2luc3Q+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I9PShjb25z
dCBfX3Bvb2xfYWxsb2M8X190aHJlYWRzLF9faW5zdD4mLAogICAgICAgICAgICAgICBjb25zdCBf
X3Bvb2xfYWxsb2M8X190aHJlYWRzLF9faW5zdD4mKQogICAgeyByZXR1cm4gdHJ1ZTsgfQoKICB0
ZW1wbGF0ZTxib29sIF9fdGhyZWFkcywgaW50IF9faW5zdD4KICAgIGlubGluZSBib29sCiAgICBv
cGVyYXRvciE9KGNvbnN0IF9fcG9vbF9hbGxvYzxfX3RocmVhZHMsX19pbnN0PiYsCiAgICAgICAg
ICAgICAgIGNvbnN0IF9fcG9vbF9hbGxvYzxfX3RocmVhZHMsX19pbnN0PiYpCiAgICB7IHJldHVy
biBmYWxzZTsgfQoKCgoKCiAgdGVtcGxhdGU8Ym9vbCBfX3RocmVhZHMsIGludCBfX2luc3Q+CiAg
ICBjaGFyKgogICAgX19wb29sX2FsbG9jPF9fdGhyZWFkcywgX19pbnN0Pjo6CiAgICBfU19jaHVu
a19hbGxvYyhzaXplX3QgX19zaXplLCBpbnQmIF9fbm9ianMpCiAgICB7CiAgICAgIGNoYXIqIF9f
cmVzdWx0OwogICAgICBzaXplX3QgX190b3RhbF9ieXRlcyA9IF9fc2l6ZSAqIF9fbm9ianM7CiAg
ICAgIHNpemVfdCBfX2J5dGVzX2xlZnQgPSBfU19lbmRfZnJlZSAtIF9TX3N0YXJ0X2ZyZWU7Cgog
ICAgICBpZiAoX19ieXRlc19sZWZ0ID49IF9fdG90YWxfYnl0ZXMpCiAgICAgICAgewogICAgICAg
ICAgX19yZXN1bHQgPSBfU19zdGFydF9mcmVlOwogICAgICAgICAgX1Nfc3RhcnRfZnJlZSArPSBf
X3RvdGFsX2J5dGVzOwogICAgICAgICAgcmV0dXJuIF9fcmVzdWx0IDsKICAgICAgICB9CiAgICAg
IGVsc2UgaWYgKF9fYnl0ZXNfbGVmdCA+PSBfX3NpemUpCiAgICAgICAgewogICAgICAgICAgX19u
b2JqcyA9IChpbnQpKF9fYnl0ZXNfbGVmdC9fX3NpemUpOwogICAgICAgICAgX190b3RhbF9ieXRl
cyA9IF9fc2l6ZSAqIF9fbm9ianM7CiAgICAgICAgICBfX3Jlc3VsdCA9IF9TX3N0YXJ0X2ZyZWU7
CiAgICAgICAgICBfU19zdGFydF9mcmVlICs9IF9fdG90YWxfYnl0ZXM7CiAgICAgICAgICByZXR1
cm4gX19yZXN1bHQ7CiAgICAgICAgfQogICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgc2l6
ZV90IF9fYnl0ZXNfdG9fZ2V0ID0KICAgICAgICAgICAgMiAqIF9fdG90YWxfYnl0ZXMgKyBfU19y
b3VuZF91cChfU19oZWFwX3NpemUgPj4gNCk7CgogICAgICAgICAgaWYgKF9fYnl0ZXNfbGVmdCA+
IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBfT2JqKiB2b2xhdGlsZSogX19teV9mcmVl
X2xpc3QgPQogICAgICAgICAgICAgICAgX1NfZnJlZV9saXN0ICsgX1NfZnJlZWxpc3RfaW5kZXgo
X19ieXRlc19sZWZ0KTsKCiAgICAgICAgICAgICAgKChfT2JqKilfU19zdGFydF9mcmVlKSAtPiBf
TV9mcmVlX2xpc3RfbGluayA9ICpfX215X2ZyZWVfbGlzdDsKICAgICAgICAgICAgICAqX19teV9m
cmVlX2xpc3QgPSAoX09iaiopX1Nfc3RhcnRfZnJlZTsKICAgICAgICAgICAgfQogICAgICAgICAg
X1Nfc3RhcnRfZnJlZSA9IChjaGFyKikgX19uZXdfYWxsb2M6OmFsbG9jYXRlKF9fYnl0ZXNfdG9f
Z2V0KTsKICAgICAgICAgIGlmIChfU19zdGFydF9mcmVlID09IDApCiAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICBzaXplX3QgX19pOwogICAgICAgICAgICAgIF9PYmoqIHZvbGF0aWxlKiBfX215
X2ZyZWVfbGlzdDsKICAgICAgICAgICAgICBfT2JqKiBfX3A7CgoKCiAgICAgICAgICAgICAgX19p
ID0gX19zaXplOwogICAgICAgICAgICAgIGZvciAoOyBfX2kgPD0gKHNpemVfdCkgX01BWF9CWVRF
UzsgX19pICs9IChzaXplX3QpIF9BTElHTikKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgX19teV9mcmVlX2xpc3QgPSBfU19mcmVlX2xpc3QgKyBfU19mcmVlbGlzdF9pbmRleChf
X2kpOwogICAgICAgICAgICAgICAgICBfX3AgPSAqX19teV9mcmVlX2xpc3Q7CiAgICAgICAgICAg
ICAgICAgIGlmIChfX3AgIT0gMCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgICAqX19teV9mcmVlX2xpc3QgPSBfX3AgLT4gX01fZnJlZV9saXN0X2xpbms7CiAgICAg
ICAgICAgICAgICAgICAgICBfU19zdGFydF9mcmVlID0gKGNoYXIqKV9fcDsKICAgICAgICAgICAg
ICAgICAgICAgIF9TX2VuZF9mcmVlID0gX1Nfc3RhcnRfZnJlZSArIF9faTsKICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBfU19jaHVua19hbGxvYyhfX3NpemUsIF9fbm9ianMpOwoKCiAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9TX2VuZF9m
cmVlID0gMDsKICAgICAgICAgICAgICBfU19zdGFydF9mcmVlID0gKGNoYXIqKV9fbmV3X2FsbG9j
OjphbGxvY2F0ZShfX2J5dGVzX3RvX2dldCk7CgoKICAgICAgICAgICAgfQogICAgICAgICAgX1Nf
aGVhcF9zaXplICs9IF9fYnl0ZXNfdG9fZ2V0OwogICAgICAgICAgX1NfZW5kX2ZyZWUgPSBfU19z
dGFydF9mcmVlICsgX19ieXRlc190b19nZXQ7CiAgICAgICAgICByZXR1cm4gX1NfY2h1bmtfYWxs
b2MoX19zaXplLCBfX25vYmpzKTsKICAgICAgICB9CiAgICB9CgoKCgoKICB0ZW1wbGF0ZTxib29s
IF9fdGhyZWFkcywgaW50IF9faW5zdD4KICAgIHZvaWQqCiAgICBfX3Bvb2xfYWxsb2M8X190aHJl
YWRzLCBfX2luc3Q+OjpfU19yZWZpbGwoc2l6ZV90IF9fbikKICAgIHsKICAgICAgaW50IF9fbm9i
anMgPSAyMDsKICAgICAgY2hhciogX19jaHVuayA9IF9TX2NodW5rX2FsbG9jKF9fbiwgX19ub2Jq
cyk7CiAgICAgIF9PYmoqIHZvbGF0aWxlKiBfX215X2ZyZWVfbGlzdDsKICAgICAgX09iaiogX19y
ZXN1bHQ7CiAgICAgIF9PYmoqIF9fY3VycmVudF9vYmo7CiAgICAgIF9PYmoqIF9fbmV4dF9vYmo7
CiAgICAgIGludCBfX2k7CgogICAgICBpZiAoMSA9PSBfX25vYmpzKQogICAgICAgIHJldHVybiBf
X2NodW5rOwogICAgICBfX215X2ZyZWVfbGlzdCA9IF9TX2ZyZWVfbGlzdCArIF9TX2ZyZWVsaXN0
X2luZGV4KF9fbik7CgoKICAgICAgX19yZXN1bHQgPSAoX09iaiopX19jaHVuazsKICAgICAgKl9f
bXlfZnJlZV9saXN0ID0gX19uZXh0X29iaiA9IChfT2JqKikoX19jaHVuayArIF9fbik7CiAgICAg
IGZvciAoX19pID0gMTsgOyBfX2krKykKICAgICAgICB7CiAgICAgICAgICBfX2N1cnJlbnRfb2Jq
ID0gX19uZXh0X29iajsKICAgICAgICAgIF9fbmV4dF9vYmogPSAoX09iaiopKChjaGFyKilfX25l
eHRfb2JqICsgX19uKTsKICAgICAgICAgIGlmIChfX25vYmpzIC0gMSA9PSBfX2kpCiAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICBfX2N1cnJlbnRfb2JqIC0+IF9NX2ZyZWVfbGlzdF9saW5rID0g
MDsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAg
ICAgICAgICBfX2N1cnJlbnRfb2JqIC0+IF9NX2ZyZWVfbGlzdF9saW5rID0gX19uZXh0X29iajsK
ICAgICAgICB9CiAgICAgIHJldHVybiBfX3Jlc3VsdDsKICAgIH0KCgogIHRlbXBsYXRlPGJvb2wg
X190aHJlYWRzLCBpbnQgX19pbnN0PgogICAgX1NUTF9tdXRleF9sb2NrCiAgICBfX3Bvb2xfYWxs
b2M8X190aHJlYWRzLF9faW5zdD46Ol9TX2xvY2sgPSB7IChwdGhyZWFkX211dGV4X3QpMjAgfTsK
CiAgdGVtcGxhdGU8Ym9vbCBfX3RocmVhZHMsIGludCBfX2luc3Q+CiAgICBjaGFyKiBfX3Bvb2xf
YWxsb2M8X190aHJlYWRzLF9faW5zdD46Ol9TX3N0YXJ0X2ZyZWUgPSAwOwoKICB0ZW1wbGF0ZTxi
b29sIF9fdGhyZWFkcywgaW50IF9faW5zdD4KICAgIGNoYXIqIF9fcG9vbF9hbGxvYzxfX3RocmVh
ZHMsX19pbnN0Pjo6X1NfZW5kX2ZyZWUgPSAwOwoKICB0ZW1wbGF0ZTxib29sIF9fdGhyZWFkcywg
aW50IF9faW5zdD4KICAgIHNpemVfdCBfX3Bvb2xfYWxsb2M8X190aHJlYWRzLF9faW5zdD46Ol9T
X2hlYXBfc2l6ZSA9IDA7CgogIHRlbXBsYXRlPGJvb2wgX190aHJlYWRzLCBpbnQgX19pbnN0Pgog
ICAgdHlwZW5hbWUgX19wb29sX2FsbG9jPF9fdGhyZWFkcyxfX2luc3Q+OjpfT2JqKiB2b2xhdGls
ZQogICAgX19wb29sX2FsbG9jPF9fdGhyZWFkcyxfX2luc3Q+OjpfU19mcmVlX2xpc3RbX05GUkVF
TElTVFNdOwoKICB0eXBlZGVmIF9fcG9vbF9hbGxvYzx0cnVlLDA+IF9fYWxsb2M7CiAgdHlwZWRl
ZiBfX3Bvb2xfYWxsb2M8ZmFsc2UsMD4gX19zaW5nbGVfY2xpZW50X2FsbG9jOwojIDU2NCAiL2hv
bWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMu
NC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGxvYy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PgogICAgY2xhc3MgYWxsb2NhdG9yCiAgICB7CiAgICAgIHR5cGVkZWYgX19hbGxvYyBfQWxsb2M7
CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgc2l6ZV90IHNpemVfdHlwZTsKICAgICAgdHlwZWRl
ZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwogICAgICB0eXBlZGVmIF9UcCogcG9pbnRlcjsK
ICAgICAgdHlwZWRlZiBjb25zdCBfVHAqIGNvbnN0X3BvaW50ZXI7CiAgICAgIHR5cGVkZWYgX1Rw
JiByZWZlcmVuY2U7CiAgICAgIHR5cGVkZWYgY29uc3QgX1RwJiBjb25zdF9yZWZlcmVuY2U7CiAg
ICAgIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAx
PgogICAgICAgIHN0cnVjdCByZWJpbmQKICAgICAgICB7IHR5cGVkZWYgYWxsb2NhdG9yPF9UcDE+
IG90aGVyOyB9OwoKICAgICAgYWxsb2NhdG9yKCkgdGhyb3coKSB7fQogICAgICBhbGxvY2F0b3Io
Y29uc3QgYWxsb2NhdG9yJikgdGhyb3coKSB7fQogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAx
PgogICAgICAgIGFsbG9jYXRvcihjb25zdCBhbGxvY2F0b3I8X1RwMT4mKSB0aHJvdygpIHt9CiAg
ICAgIH5hbGxvY2F0b3IoKSB0aHJvdygpIHt9CgogICAgICBwb2ludGVyCiAgICAgIGFkZHJlc3Mo
cmVmZXJlbmNlIF9feCkgY29uc3QgeyByZXR1cm4gJl9feDsgfQoKICAgICAgY29uc3RfcG9pbnRl
cgogICAgICBhZGRyZXNzKGNvbnN0X3JlZmVyZW5jZSBfX3gpIGNvbnN0IHsgcmV0dXJuICZfX3g7
IH0KCgoKICAgICAgX1RwKgogICAgICBhbGxvY2F0ZShzaXplX3R5cGUgX19uLCBjb25zdCB2b2lk
KiA9IDApCiAgICAgIHsKICAgICAgICBfVHAqIF9fcmV0ID0gMDsKICAgICAgICBpZiAoX19uKQog
ICAgICAgICAgewogICAgICAgICAgICBpZiAoX19uIDw9IHRoaXMtPm1heF9zaXplKCkpCiAgICAg
ICAgICAgICAgX19yZXQgPSBzdGF0aWNfY2FzdDxfVHAqPihfQWxsb2M6OmFsbG9jYXRlKF9fbiAq
IHNpemVvZihfVHApKSk7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICBfX3Rocm93X2Jh
ZF9hbGxvYygpOwogICAgICAgICAgfQogICAgICAgIHJldHVybiBfX3JldDsKICAgICAgfQoKCiAg
ICAgIHZvaWQKICAgICAgZGVhbGxvY2F0ZShwb2ludGVyIF9fcCwgc2l6ZV90eXBlIF9fbikKICAg
ICAgeyBfQWxsb2M6OmRlYWxsb2NhdGUoX19wLCBfX24gKiBzaXplb2YoX1RwKSk7IH0KCiAgICAg
IHNpemVfdHlwZQogICAgICBtYXhfc2l6ZSgpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gc2l6ZV90
KC0xKSAvIHNpemVvZihfVHApOyB9CgogICAgICB2b2lkIGNvbnN0cnVjdChwb2ludGVyIF9fcCwg
Y29uc3QgX1RwJiBfX3ZhbCkgeyBuZXcoX19wKSBfVHAoX192YWwpOyB9CiAgICAgIHZvaWQgZGVz
dHJveShwb2ludGVyIF9fcCkgeyBfX3AtPn5fVHAoKTsgfQogICAgfTsKCiAgdGVtcGxhdGU8Pgog
ICAgY2xhc3MgYWxsb2NhdG9yPHZvaWQ+CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYg
c2l6ZV90IHNpemVfdHlwZTsKICAgICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBl
OwogICAgICB0eXBlZGVmIHZvaWQqIHBvaW50ZXI7CiAgICAgIHR5cGVkZWYgY29uc3Qgdm9pZCog
Y29uc3RfcG9pbnRlcjsKICAgICAgdHlwZWRlZiB2b2lkIHZhbHVlX3R5cGU7CgogICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHAxPgogICAgICAgIHN0cnVjdCByZWJpbmQKICAgICAgICB7IHR5cGVk
ZWYgYWxsb2NhdG9yPF9UcDE+IG90aGVyOyB9OwogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UMSwgdHlwZW5hbWUgX1QyPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3Qg
YWxsb2NhdG9yPF9UMT4mLCBjb25zdCBhbGxvY2F0b3I8X1QyPiYpCiAgICB7IHJldHVybiB0cnVl
OyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UMSwgdHlwZW5hbWUgX1QyPgogICAgaW5saW5lIGJv
b2wKICAgIG9wZXJhdG9yIT0oY29uc3QgYWxsb2NhdG9yPF9UMT4mLCBjb25zdCBhbGxvY2F0b3I8
X1QyPiYpCiAgICB7IHJldHVybiBmYWxzZTsgfQojIDY2MCAiL2hvbWUvQWRtaW5pc3RyYXRvci9n
Y2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRz
L3N0bF9hbGxvYy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQWxsb2M+
CiAgICBzdHJ1Y3QgX19hbGxvY2F0b3IKICAgIHsKICAgICAgX0FsbG9jIF9fdW5kZXJseWluZ19h
bGxvYzsKCiAgICAgIHR5cGVkZWYgc2l6ZV90IHNpemVfdHlwZTsKICAgICAgdHlwZWRlZiBwdHJk
aWZmX3QgZGlmZmVyZW5jZV90eXBlOwogICAgICB0eXBlZGVmIF9UcCogcG9pbnRlcjsKICAgICAg
dHlwZWRlZiBjb25zdCBfVHAqIGNvbnN0X3BvaW50ZXI7CiAgICAgIHR5cGVkZWYgX1RwJiByZWZl
cmVuY2U7CiAgICAgIHR5cGVkZWYgY29uc3QgX1RwJiBjb25zdF9yZWZlcmVuY2U7CiAgICAgIHR5
cGVkZWYgX1RwIHZhbHVlX3R5cGU7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxPgogICAg
ICAgIHN0cnVjdCByZWJpbmQKICAgICAgICB7IHR5cGVkZWYgX19hbGxvY2F0b3I8X1RwMSwgX0Fs
bG9jPiBvdGhlcjsgfTsKCiAgICAgIF9fYWxsb2NhdG9yKCkgdGhyb3coKSB7fQogICAgICBfX2Fs
bG9jYXRvcihjb25zdCBfX2FsbG9jYXRvciYgX19hKSB0aHJvdygpCiAgICAgIDogX191bmRlcmx5
aW5nX2FsbG9jKF9fYS5fX3VuZGVybHlpbmdfYWxsb2MpIHt9CgogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHAxPgogICAgICAgIF9fYWxsb2NhdG9yKGNvbnN0IF9fYWxsb2NhdG9yPF9UcDEsIF9B
bGxvYz4mIF9fYSkgdGhyb3coKQogICAgICAgIDogX191bmRlcmx5aW5nX2FsbG9jKF9fYS5fX3Vu
ZGVybHlpbmdfYWxsb2MpIHt9CgogICAgICB+X19hbGxvY2F0b3IoKSB0aHJvdygpIHt9CgogICAg
ICBwb2ludGVyCiAgICAgIGFkZHJlc3MocmVmZXJlbmNlIF9feCkgY29uc3QgeyByZXR1cm4gJl9f
eDsgfQoKICAgICAgY29uc3RfcG9pbnRlcgogICAgICBhZGRyZXNzKGNvbnN0X3JlZmVyZW5jZSBf
X3gpIGNvbnN0IHsgcmV0dXJuICZfX3g7IH0KCgoKICAgICAgX1RwKgogICAgICBhbGxvY2F0ZShz
aXplX3R5cGUgX19uLCBjb25zdCB2b2lkKiA9IDApCiAgICAgIHsKICAgICAgICBfVHAqIF9fcmV0
ID0gMDsKICAgICAgICBpZiAoX19uKQogICAgICAgICAgX19yZXQgPSBzdGF0aWNfY2FzdDxfVHAq
PihfQWxsb2M6OmFsbG9jYXRlKF9fbiAqIHNpemVvZihfVHApKSk7CiAgICAgICAgcmV0dXJuIF9f
cmV0OwogICAgICB9CgoKICAgICAgdm9pZAogICAgICBkZWFsbG9jYXRlKHBvaW50ZXIgX19wLCBz
aXplX3R5cGUgX19uKQogICAgICB7IF9fdW5kZXJseWluZ19hbGxvYy5kZWFsbG9jYXRlKF9fcCwg
X19uICogc2l6ZW9mKF9UcCkpOyB9CgogICAgICBzaXplX3R5cGUKICAgICAgbWF4X3NpemUoKSBj
b25zdCB0aHJvdygpIHsgcmV0dXJuIHNpemVfdCgtMSkgLyBzaXplb2YoX1RwKTsgfQoKICAgICAg
dm9pZAogICAgICBjb25zdHJ1Y3QocG9pbnRlciBfX3AsIGNvbnN0IF9UcCYgX192YWwpIHsgbmV3
KF9fcCkgX1RwKF9fdmFsKTsgfQoKICAgICAgdm9pZAogICAgICBkZXN0cm95KHBvaW50ZXIgX19w
KSB7IF9fcC0+fl9UcCgpOyB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiAg
ICBzdHJ1Y3QgX19hbGxvY2F0b3I8dm9pZCwgX0FsbG9jPgogICAgewogICAgICB0eXBlZGVmIHNp
emVfdCBzaXplX3R5cGU7CiAgICAgIHR5cGVkZWYgcHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsK
ICAgICAgdHlwZWRlZiB2b2lkKiBwb2ludGVyOwogICAgICB0eXBlZGVmIGNvbnN0IHZvaWQqIGNv
bnN0X3BvaW50ZXI7CiAgICAgIHR5cGVkZWYgdm9pZCB2YWx1ZV90eXBlOwoKICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwMT4KICAgICAgICBzdHJ1Y3QgcmViaW5kCiAgICAgICAgeyB0eXBlZGVm
IF9fYWxsb2NhdG9yPF9UcDEsIF9BbGxvYz4gb3RoZXI7IH07CiAgICB9OwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRv
cj09KGNvbnN0IF9fYWxsb2NhdG9yPF9UcCxfQWxsb2M+JiBfX2ExLAogICAgICAgICAgICAgICBj
b25zdCBfX2FsbG9jYXRvcjxfVHAsX0FsbG9jPiYgX19hMikKICAgIHsgcmV0dXJuIF9fYTEuX191
bmRlcmx5aW5nX2FsbG9jID09IF9fYTIuX191bmRlcmx5aW5nX2FsbG9jOyB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJh
dG9yIT0oY29uc3QgX19hbGxvY2F0b3I8X1RwLCBfQWxsb2M+JiBfX2ExLAogICAgICAgICAgICAg
ICBjb25zdCBfX2FsbG9jYXRvcjxfVHAsIF9BbGxvYz4mIF9fYTIpCiAgICB7IHJldHVybiBfX2Ex
Ll9fdW5kZXJseWluZ19hbGxvYyAhPSBfX2EyLl9fdW5kZXJseWluZ19hbGxvYzsgfQoKCgoKCgoK
ICB0ZW1wbGF0ZTxpbnQgaW5zdD4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj09KGNvbnN0
IF9fbWFsbG9jX2FsbG9jPGluc3Q+JiwKICAgICAgICAgICAgICAgY29uc3QgX19tYWxsb2NfYWxs
b2M8aW5zdD4mKQogICAgeyByZXR1cm4gdHJ1ZTsgfQoKICB0ZW1wbGF0ZTxpbnQgX19pbnN0Pgog
ICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3QgX19tYWxsb2NfYWxsb2M8X19pbnN0
PiYsCiAgICAgICAgICAgICAgIGNvbnN0IF9fbWFsbG9jX2FsbG9jPF9faW5zdD4mKQogICAgeyBy
ZXR1cm4gZmFsc2U7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJv
b2wKICAgIG9wZXJhdG9yPT0oY29uc3QgX19kZWJ1Z19hbGxvYzxfQWxsb2M+JiwgY29uc3QgX19k
ZWJ1Z19hbGxvYzxfQWxsb2M+JikKICAgIHsgcmV0dXJuIHRydWU7IH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3QgX19kZWJ1
Z19hbGxvYzxfQWxsb2M+JiwgY29uc3QgX19kZWJ1Z19hbGxvYzxfQWxsb2M+JikKICAgIHsgcmV0
dXJuIGZhbHNlOyB9CiMgODEzICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2dj
Yy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2FsbG9jLmgiIDMK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvY2F0b3I+CiAgICBzdHJ1Y3Qg
X0FsbG9jX3RyYWl0cwogICAgewogICAgICBzdGF0aWMgY29uc3QgYm9vbCBfU19pbnN0YW5jZWxl
c3MgPSBmYWxzZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQWxsb2NhdG9yOjp0ZW1wbGF0ZSBy
ZWJpbmQ8X1RwPjo6b3RoZXIgYWxsb2NhdG9yX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvY2F0b3I+CiAgICBjb25zdCBib29sIF9BbGxvY190cmFp
dHM8X1RwLCBfQWxsb2NhdG9yPjo6X1NfaW5zdGFuY2VsZXNzOwoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwLCB0eXBlbmFtZSBfVHAxPgogICAgc3RydWN0IF9BbGxvY190cmFpdHM8X1RwLCBhbGxv
Y2F0b3I8X1RwMT4gPgogICAgewogICAgICBzdGF0aWMgY29uc3QgYm9vbCBfU19pbnN0YW5jZWxl
c3MgPSB0cnVlOwogICAgICB0eXBlZGVmIF9fc2ltcGxlX2FsbG9jPF9UcCwgX19hbGxvYz4gX0Fs
bG9jX3R5cGU7CiAgICAgIHR5cGVkZWYgYWxsb2NhdG9yPF9UcD4gYWxsb2NhdG9yX3R5cGU7CiAg
ICB9OwoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGludCBfX2luc3Q+CiAgICBzdHJ1Y3Qg
X0FsbG9jX3RyYWl0czxfVHAsIF9fbWFsbG9jX2FsbG9jPF9faW5zdD4gPgogICAgewogICAgICBz
dGF0aWMgY29uc3QgYm9vbCBfU19pbnN0YW5jZWxlc3MgPSB0cnVlOwogICAgICB0eXBlZGVmIF9f
c2ltcGxlX2FsbG9jPF9UcCwgX19tYWxsb2NfYWxsb2M8X19pbnN0PiA+IF9BbGxvY190eXBlOwog
ICAgICB0eXBlZGVmIF9fYWxsb2NhdG9yPF9UcCwgX19tYWxsb2NfYWxsb2M8X19pbnN0PiA+IGFs
bG9jYXRvcl90eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBib29sIF9fdGhy
ZWFkcywgaW50IF9faW5zdD4KICAgIHN0cnVjdCBfQWxsb2NfdHJhaXRzPF9UcCwgX19wb29sX2Fs
bG9jPF9fdGhyZWFkcywgX19pbnN0PiA+CiAgICB7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIF9T
X2luc3RhbmNlbGVzcyA9IHRydWU7CiAgICAgIHR5cGVkZWYgX19zaW1wbGVfYWxsb2M8X1RwLCBf
X3Bvb2xfYWxsb2M8X190aHJlYWRzLCBfX2luc3Q+ID4KICAgICAgX0FsbG9jX3R5cGU7CiAgICAg
IHR5cGVkZWYgX19hbGxvY2F0b3I8X1RwLCBfX3Bvb2xfYWxsb2M8X190aHJlYWRzLCBfX2luc3Q+
ID4KICAgICAgYWxsb2NhdG9yX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAs
IHR5cGVuYW1lIF9BbGxvYz4KICAgIHN0cnVjdCBfQWxsb2NfdHJhaXRzPF9UcCwgX19kZWJ1Z19h
bGxvYzxfQWxsb2M+ID4KICAgIHsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgX1NfaW5zdGFuY2Vs
ZXNzID0gdHJ1ZTsKICAgICAgdHlwZWRlZiBfX3NpbXBsZV9hbGxvYzxfVHAsIF9fZGVidWdfYWxs
b2M8X0FsbG9jPiA+IF9BbGxvY190eXBlOwogICAgICB0eXBlZGVmIF9fYWxsb2NhdG9yPF9UcCwg
X19kZWJ1Z19hbGxvYzxfQWxsb2M+ID4gYWxsb2NhdG9yX3R5cGU7CiAgICB9OwoKCgoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVHAxLCBpbnQgX19pbnN0PgogICAgc3RydWN0
IF9BbGxvY190cmFpdHM8X1RwLAogICAgICAgICAgICAgICAgICAgICAgICAgX19hbGxvY2F0b3I8
X1RwMSwgX19tYWxsb2NfYWxsb2M8X19pbnN0PiA+ID4KICAgIHsKICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgX1NfaW5zdGFuY2VsZXNzID0gdHJ1ZTsKICAgICAgdHlwZWRlZiBfX3NpbXBsZV9hbGxv
YzxfVHAsIF9fbWFsbG9jX2FsbG9jPF9faW5zdD4gPiBfQWxsb2NfdHlwZTsKICAgICAgdHlwZWRl
ZiBfX2FsbG9jYXRvcjxfVHAsIF9fbWFsbG9jX2FsbG9jPF9faW5zdD4gPiBhbGxvY2F0b3JfdHlw
ZTsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1RwMSwgYm9vbCBf
X3RociwgaW50IF9faW5zdD4KICAgIHN0cnVjdCBfQWxsb2NfdHJhaXRzPF9UcCwgX19hbGxvY2F0
b3I8X1RwMSwgX19wb29sX2FsbG9jPF9fdGhyLCBfX2luc3Q+ID4gPgogICAgewogICAgICBzdGF0
aWMgY29uc3QgYm9vbCBfU19pbnN0YW5jZWxlc3MgPSB0cnVlOwogICAgICB0eXBlZGVmIF9fc2lt
cGxlX2FsbG9jPF9UcCwgX19wb29sX2FsbG9jPF9fdGhyLF9faW5zdD4gPgogICAgICBfQWxsb2Nf
dHlwZTsKICAgICAgdHlwZWRlZiBfX2FsbG9jYXRvcjxfVHAsIF9fcG9vbF9hbGxvYzxfX3Rocixf
X2luc3Q+ID4KICAgICAgYWxsb2NhdG9yX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHAsIHR5cGVuYW1lIF9UcDEsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHN0cnVjdCBfQWxsb2Nf
dHJhaXRzPF9UcCwgX19hbGxvY2F0b3I8X1RwMSwgX19kZWJ1Z19hbGxvYzxfQWxsb2M+ID4gPgog
ICAgewogICAgICBzdGF0aWMgY29uc3QgYm9vbCBfU19pbnN0YW5jZWxlc3MgPSB0cnVlOwogICAg
ICB0eXBlZGVmIF9fc2ltcGxlX2FsbG9jPF9UcCwgX19kZWJ1Z19hbGxvYzxfQWxsb2M+ID4gX0Fs
bG9jX3R5cGU7CiAgICAgIHR5cGVkZWYgX19hbGxvY2F0b3I8X1RwLCBfX2RlYnVnX2FsbG9jPF9B
bGxvYz4gPiBhbGxvY2F0b3JfdHlwZTsKICAgIH07CgoKCgoKCiAgZXh0ZXJuIHRlbXBsYXRlIGNs
YXNzIGFsbG9jYXRvcjxjaGFyPjsKICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgYWxsb2NhdG9yPHdj
aGFyX3Q+OwogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBfX3Bvb2xfYWxsb2M8dHJ1ZSwwPjsKCn0K
IyA1NiAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMt
Y3lnd2luLzMuNC9pbmNsdWRlL2MrKy9tZW1vcnkiIDIgMwojIDEgIi9ob21lL0FkbWluaXN0cmF0
b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysv
Yml0cy9zdGxfY29uc3RydWN0LmgiIDEgMwojIDY3ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rl
c3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3Rs
X2NvbnN0cnVjdC5oIiAzCm5hbWVzcGFjZSBzdGQKewoKCgoKCgogIHRlbXBsYXRlIDxjbGFzcyBf
VDEsIGNsYXNzIF9UMj4KICAgIGlubGluZSB2b2lkCiAgICBfQ29uc3RydWN0KF9UMSogX19wLCBj
b25zdCBfVDImIF9fdmFsdWUpCiAgICB7IG5ldyAoc3RhdGljX2Nhc3Q8dm9pZCo+KF9fcCkpIF9U
MShfX3ZhbHVlKTsgfQoKCgoKCgoKICB0ZW1wbGF0ZSA8Y2xhc3MgX1QxPgogICAgaW5saW5lIHZv
aWQKICAgIF9Db25zdHJ1Y3QoX1QxKiBfX3ApCiAgICB7IG5ldyAoc3RhdGljX2Nhc3Q8dm9pZCo+
KF9fcCkpIF9UMSgpOyB9CiMgOTggIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIv
Z2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfY29uc3RydWN0
LmgiIDMKICB0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvcj4KICAgIGlubGluZSB2b2lk
CiAgICBfX2Rlc3Ryb3lfYXV4KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVy
YXRvciBfX2xhc3QsIF9fZmFsc2VfdHlwZSkKICAgIHsgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFz
dDsgKytfX2ZpcnN0KSBfRGVzdHJveSgmKl9fZmlyc3QpOyB9CiMgMTEyICIvaG9tZS9BZG1pbmlz
dHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUv
YysrL2JpdHMvc3RsX2NvbnN0cnVjdC5oIiAzCiAgdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRl
cmF0b3I+CiAgICBpbmxpbmUgdm9pZAogICAgX19kZXN0cm95X2F1eChfRm9yd2FyZEl0ZXJhdG9y
LCBfRm9yd2FyZEl0ZXJhdG9yLCBfX3RydWVfdHlwZSkKICAgIHsgfQoKCgoKCgogIHRlbXBsYXRl
IDxjbGFzcyBfVHA+CiAgICBpbmxpbmUgdm9pZAogICAgX0Rlc3Ryb3koX1RwKiBfX3BvaW50ZXIp
CiAgICB7IF9fcG9pbnRlci0+fl9UcCgpOyB9CiMgMTM0ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2dj
Y3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMv
c3RsX2NvbnN0cnVjdC5oIiAzCiAgdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+CiAg
ICBpbmxpbmUgdm9pZAogICAgX0Rlc3Ryb3koX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9y
d2FyZEl0ZXJhdG9yIF9fbGFzdCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRv
cl90cmFpdHM8X0ZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGUKICAgICAgICAgICAgICAgICAg
ICAgICBfVmFsdWVfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX3R5cGVfdHJhaXRzPF9W
YWx1ZV90eXBlPjo6aGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcgogICAgICAgICAgICAgICAgICAgICAg
IF9IYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwoKICAgICAgX19kZXN0cm95X2F1eChfX2ZpcnN0LCBf
X2xhc3QsIF9IYXNfdHJpdmlhbF9kZXN0cnVjdG9yKCkpOwogICAgfQp9CiMgNTcgIi9ob21lL0Fk
bWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5j
bHVkZS9jKysvbWVtb3J5IiAyIDMKCiMgMSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5n
L2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF91bmlu
aXRpYWxpemVkLmgiIDEgMwojIDY2ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGli
L2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX3VuaW5pdGlh
bGl6ZWQuaCIgMwpuYW1lc3BhY2Ugc3RkCnsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJ
dGVyLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXI+CiAgICBpbmxpbmUgX0ZvcndhcmRJdGVyCiAgICBf
X3VuaW5pdGlhbGl6ZWRfY29weV9hdXgoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9f
bGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX190cnVlX3R5cGUpCiAgICB7IHJldHVybiBj
b3B5KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9J
bnB1dEl0ZXIsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcj4KICAgIF9Gb3J3YXJkSXRlcgogICAgX191
bmluaXRpYWxpemVkX2NvcHlfYXV4KF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xh
c3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fcmVzdWx0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZmFsc2VfdHlwZSkKICAgIHsKICAgICAgX0Zv
cndhcmRJdGVyIF9fY3VyID0gX19yZXN1bHQ7CiAgICAgIHRyeSB7CiAgICAgICAgZm9yICggOyBf
X2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0LCArK19fY3VyKQogICAgICAgICAgX0NvbnN0cnVj
dCgmKl9fY3VyLCAqX19maXJzdCk7CiAgICAgICAgcmV0dXJuIF9fY3VyOwogICAgICB9CiAgICAg
IGNhdGNoKC4uLikKICAgICAgICB7CiAgICAgICAgICBfRGVzdHJveShfX3Jlc3VsdCwgX19jdXIp
OwogICAgICAgICAgdGhyb3c7CiAgICAgICAgfQogICAgfQojIDEwNiAiL2hvbWUvQWRtaW5pc3Ry
YXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2Mr
Ky9iaXRzL3N0bF91bmluaXRpYWxpemVkLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJ
dGVyLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXI+CiAgICBpbmxpbmUgX0ZvcndhcmRJdGVyCiAgICB1
bmluaXRpYWxpemVkX2NvcHkoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwg
X0ZvcndhcmRJdGVyIF9fcmVzdWx0KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJh
dG9yX3RyYWl0czxfRm9yd2FyZEl0ZXI+Ojp2YWx1ZV90eXBlIF9WYWx1ZVR5cGU7CiAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgX190eXBlX3RyYWl0czxfVmFsdWVUeXBlPjo6aXNfUE9EX3R5cGUgX0lz
X1BPRDsKICAgICAgcmV0dXJuIF9fdW5pbml0aWFsaXplZF9jb3B5X2F1eChfX2ZpcnN0LCBfX2xh
c3QsIF9fcmVzdWx0LCBfSXNfUE9EKCkpOwogICAgfQoKICBpbmxpbmUgY2hhcioKICB1bmluaXRp
YWxpemVkX2NvcHkoY29uc3QgY2hhciogX19maXJzdCwgY29uc3QgY2hhciogX19sYXN0LCBjaGFy
KiBfX3Jlc3VsdCkKICB7CiAgICBtZW1tb3ZlKF9fcmVzdWx0LCBfX2ZpcnN0LCBfX2xhc3QgLSBf
X2ZpcnN0KTsKICAgIHJldHVybiBfX3Jlc3VsdCArIChfX2xhc3QgLSBfX2ZpcnN0KTsKICB9Cgog
IGlubGluZSB3Y2hhcl90KgogIHVuaW5pdGlhbGl6ZWRfY29weShjb25zdCB3Y2hhcl90KiBfX2Zp
cnN0LCBjb25zdCB3Y2hhcl90KiBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3Qq
IF9fcmVzdWx0KQogIHsKICAgIG1lbW1vdmUoX19yZXN1bHQsIF9fZmlyc3QsIHNpemVvZih3Y2hh
cl90KSAqIChfX2xhc3QgLSBfX2ZpcnN0KSk7CiAgICByZXR1cm4gX19yZXN1bHQgKyAoX19sYXN0
IC0gX19maXJzdCk7CiAgfQoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlciwgdHlw
ZW5hbWUgX1RwPgogICAgaW5saW5lIHZvaWQKICAgIF9fdW5pbml0aWFsaXplZF9maWxsX2F1eChf
Rm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBfVHAmIF9feCwgX190cnVlX3R5cGUpCiAgICB7IGZpbGwoX19m
aXJzdCwgX19sYXN0LCBfX3gpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlciwg
dHlwZW5hbWUgX1RwPgogICAgdm9pZAogICAgX191bmluaXRpYWxpemVkX2ZpbGxfYXV4KF9Gb3J3
YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IF9UcCYgX194LCBfX2ZhbHNlX3R5cGUpCiAgICB7CiAgICAgIF9Gb3J3
YXJkSXRlciBfX2N1ciA9IF9fZmlyc3Q7CiAgICAgIHRyeSB7CiAgICAgICAgZm9yICggOyBfX2N1
ciAhPSBfX2xhc3Q7ICsrX19jdXIpCiAgICAgICAgICBfQ29uc3RydWN0KCYqX19jdXIsIF9feCk7
CiAgICAgIH0KICAgICAgY2F0Y2goLi4uKQogICAgICAgIHsKICAgICAgICAgIF9EZXN0cm95KF9f
Zmlyc3QsIF9fY3VyKTsKICAgICAgICAgIHRocm93OwogICAgICAgIH0KICAgIH0KIyAxNjQgIi9o
b21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8z
LjQvaW5jbHVkZS9jKysvYml0cy9zdGxfdW5pbml0aWFsaXplZC5oIiAzCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0ZvcndhcmRJdGVyLCB0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgdm9pZAogICAgdW5p
bml0aWFsaXplZF9maWxsKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0
LCBjb25zdCBfVHAmIF9feCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90
cmFpdHM8X0ZvcndhcmRJdGVyPjo6dmFsdWVfdHlwZSBfVmFsdWVUeXBlOwogICAgICB0eXBlZGVm
IHR5cGVuYW1lIF9fdHlwZV90cmFpdHM8X1ZhbHVlVHlwZT46OmlzX1BPRF90eXBlIF9Jc19QT0Q7
CiAgICAgIF9fdW5pbml0aWFsaXplZF9maWxsX2F1eChfX2ZpcnN0LCBfX2xhc3QsIF9feCwgX0lz
X1BPRCgpKTsKICAgIH0KCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXIsIHR5cGVu
YW1lIF9TaXplLCB0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgX0ZvcndhcmRJdGVyCiAgICBfX3Vu
aW5pdGlhbGl6ZWRfZmlsbF9uX2F1eChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX1NpemUgX19uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3gsIF9fdHJ1ZV90eXBl
KQogICAgewogICAgICByZXR1cm4gZmlsbF9uKF9fZmlyc3QsIF9fbiwgX194KTsKICAgIH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyLCB0eXBlbmFtZSBfU2l6ZSwgdHlwZW5hbWUg
X1RwPgogICAgX0ZvcndhcmRJdGVyCiAgICBfX3VuaW5pdGlhbGl6ZWRfZmlsbF9uX2F1eChfRm9y
d2FyZEl0ZXIgX19maXJzdCwgX1NpemUgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgX1RwJiBfX3gsIF9fZmFsc2VfdHlwZSkKICAgIHsKICAgICAgX0ZvcndhcmRJdGVy
IF9fY3VyID0gX19maXJzdDsKICAgICAgdHJ5IHsKICAgICAgICBmb3IgKCA7IF9fbiA+IDA7IC0t
X19uLCArK19fY3VyKQogICAgICAgICAgX0NvbnN0cnVjdCgmKl9fY3VyLCBfX3gpOwogICAgICAg
IHJldHVybiBfX2N1cjsKICAgICAgfQogICAgICBjYXRjaCguLi4pCiAgICAgICAgewogICAgICAg
ICAgX0Rlc3Ryb3koX19maXJzdCwgX19jdXIpOwogICAgICAgICAgdGhyb3c7CiAgICAgICAgfQog
ICAgfQojIDIxMCAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2
ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF91bmluaXRpYWxpemVkLmgiIDMK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXIsIHR5cGVuYW1lIF9TaXplLCB0eXBlbmFt
ZSBfVHA+CiAgICBpbmxpbmUgX0ZvcndhcmRJdGVyCiAgICB1bmluaXRpYWxpemVkX2ZpbGxfbihf
Rm9yd2FyZEl0ZXIgX19maXJzdCwgX1NpemUgX19uLCBjb25zdCBfVHAmIF9feCkKICAgIHsKICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyPjo6dmFsdWVf
dHlwZSBfVmFsdWVUeXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fdHlwZV90cmFpdHM8X1Zh
bHVlVHlwZT46OmlzX1BPRF90eXBlIF9Jc19QT0Q7CiAgICAgIHJldHVybiBfX3VuaW5pdGlhbGl6
ZWRfZmlsbF9uX2F1eChfX2ZpcnN0LCBfX24sIF9feCwgX0lzX1BPRCgpKTsKICAgIH0KIyAyMjcg
Ii9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dp
bi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfdW5pbml0aWFsaXplZC5oIiAzCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0lucHV0SXRlcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXIyLCB0eXBlbmFtZSBfRm9y
d2FyZEl0ZXI+CiAgICBpbmxpbmUgX0ZvcndhcmRJdGVyCiAgICBfX3VuaW5pdGlhbGl6ZWRfY29w
eV9jb3B5KF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIg
X19sYXN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fcmVz
dWx0KQogICAgewogICAgICBfRm9yd2FyZEl0ZXIgX19taWQgPSB1bmluaXRpYWxpemVkX2NvcHko
X19maXJzdDEsIF9fbGFzdDEsIF9fcmVzdWx0KTsKICAgICAgdHJ5IHsKICAgICAgICByZXR1cm4g
dW5pbml0aWFsaXplZF9jb3B5KF9fZmlyc3QyLCBfX2xhc3QyLCBfX21pZCk7CiAgICAgIH0KICAg
ICAgY2F0Y2goLi4uKQogICAgICAgIHsKICAgICAgICAgIF9EZXN0cm95KF9fcmVzdWx0LCBfX21p
ZCk7CiAgICAgICAgICB0aHJvdzsKICAgICAgICB9CiAgICB9CgoKCgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9Gb3J3YXJkSXRlciwgdHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfSW5wdXRJdGVyPgogICAg
aW5saW5lIF9Gb3J3YXJkSXRlcgogICAgX191bmluaXRpYWxpemVkX2ZpbGxfY29weShfRm9yd2Fy
ZEl0ZXIgX19yZXN1bHQsIF9Gb3J3YXJkSXRlciBfX21pZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgX1RwJiBfX3gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9J
bnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QpCiAgICB7CiAgICAgIHVuaW5pdGlh
bGl6ZWRfZmlsbChfX3Jlc3VsdCwgX19taWQsIF9feCk7CiAgICAgIHRyeSB7CiAgICAgICAgcmV0
dXJuIHVuaW5pdGlhbGl6ZWRfY29weShfX2ZpcnN0LCBfX2xhc3QsIF9fbWlkKTsKICAgICAgfQog
ICAgICBjYXRjaCguLi4pCiAgICAgICAgewogICAgICAgICAgX0Rlc3Ryb3koX19yZXN1bHQsIF9f
bWlkKTsKICAgICAgICAgIHRocm93OwogICAgICAgIH0KICAgIH0KCgoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0lucHV0SXRlciwgdHlwZW5hbWUgX0ZvcndhcmRJdGVyLCB0eXBlbmFtZSBfVHA+CiAg
ICBpbmxpbmUgdm9pZAogICAgX191bmluaXRpYWxpemVkX2NvcHlfZmlsbChfSW5wdXRJdGVyIF9f
Zmlyc3QxLCBfSW5wdXRJdGVyIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9Gb3J3YXJkSXRlciBfX2ZpcnN0MiwgX0ZvcndhcmRJdGVyIF9fbGFzdDIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX194KQogICAgewogICAgICBfRm9yd2FyZEl0
ZXIgX19taWQyID0gdW5pbml0aWFsaXplZF9jb3B5KF9fZmlyc3QxLCBfX2xhc3QxLCBfX2ZpcnN0
Mik7CiAgICAgIHRyeSB7CiAgICAgICAgdW5pbml0aWFsaXplZF9maWxsKF9fbWlkMiwgX19sYXN0
MiwgX194KTsKICAgICAgfQogICAgICBjYXRjaCguLi4pCiAgICAgICAgewogICAgICAgICAgX0Rl
c3Ryb3koX19maXJzdDIsIF9fbWlkMik7CiAgICAgICAgICB0aHJvdzsKICAgICAgICB9CiAgICB9
Cgp9CiMgNTkgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2
LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvbWVtb3J5IiAyIDMKIyAxICIvaG9tZS9BZG1pbmlz
dHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUv
YysrL2JpdHMvc3RsX3Jhd19zdG9yYWdlX2l0ZXIuaCIgMSAzCiMgNjQgIi9ob21lL0FkbWluaXN0
cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9j
KysvYml0cy9zdGxfcmF3X3N0b3JhZ2VfaXRlci5oIiAzCm5hbWVzcGFjZSBzdGQKewoKCgoKICB0
ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvciwgY2xhc3MgX1RwPgogIGNsYXNzIHJhd19z
dG9yYWdlX2l0ZXJhdG9yCiAgICA6IHB1YmxpYyBpdGVyYXRvcjxvdXRwdXRfaXRlcmF0b3JfdGFn
LCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkPgogICAgewogICAgcHJvdGVjdGVkOgogICAgICBfRm9y
d2FyZEl0ZXJhdG9yIF9NX2l0ZXI7CgogICAgcHVibGljOgogICAgICBleHBsaWNpdAogICAgICBy
YXdfc3RvcmFnZV9pdGVyYXRvcihfRm9yd2FyZEl0ZXJhdG9yIF9feCkgOiBfTV9pdGVyKF9feCkg
e30KCiAgICAgIHJhd19zdG9yYWdlX2l0ZXJhdG9yJgogICAgICBvcGVyYXRvciooKSB7IHJldHVy
biAqdGhpczsgfQoKICAgICAgcmF3X3N0b3JhZ2VfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yPShj
b25zdCBfVHAmIF9fZWxlbWVudCkKICAgICAgewogICAgICAgIF9Db25zdHJ1Y3QoJipfTV9pdGVy
LCBfX2VsZW1lbnQpOwogICAgICAgIHJldHVybiAqdGhpczsKICAgICAgfQoKICAgICAgcmF3X3N0
b3JhZ2VfaXRlcmF0b3I8X0ZvcndhcmRJdGVyYXRvciwgX1RwPiYKICAgICAgb3BlcmF0b3IrKygp
CiAgICAgIHsKICAgICAgICArK19NX2l0ZXI7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICB9
CgogICAgICByYXdfc3RvcmFnZV9pdGVyYXRvcjxfRm9yd2FyZEl0ZXJhdG9yLCBfVHA+CiAgICAg
IG9wZXJhdG9yKysoaW50KQogICAgICB7CiAgICAgICAgcmF3X3N0b3JhZ2VfaXRlcmF0b3I8X0Zv
cndhcmRJdGVyYXRvciwgX1RwPiBfX3RtcCA9ICp0aGlzOwogICAgICAgICsrX01faXRlcjsKICAg
ICAgICByZXR1cm4gX190bXA7CiAgICAgIH0KICAgIH07Cn0KIyA2MCAiL2hvbWUvQWRtaW5pc3Ry
YXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2Mr
Ky9tZW1vcnkiIDIgMwoKbmFtZXNwYWNlIHN0ZAp7CiMgNzEgIi9ob21lL0FkbWluaXN0cmF0b3Iv
Z2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvbWVt
b3J5IiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgcGFpcjxfVHAqLCBwdHJkaWZmX3Q+
CiAgICBfX2dldF90ZW1wb3JhcnlfYnVmZmVyKHB0cmRpZmZfdCBfX2xlbiwgX1RwKikKICAgIHsK
ICAgICAgaWYgKF9fbGVuID4gcHRyZGlmZl90KDIxNDc0ODM2NDcgLyBzaXplb2YoX1RwKSkpCiAg
ICAgICAgX19sZW4gPSAyMTQ3NDgzNjQ3IC8gc2l6ZW9mKF9UcCk7CgogICAgICB3aGlsZSAoX19s
ZW4gPiAwKQogICAgICAgIHsKICAgICAgICAgIF9UcCogX190bXAgPSAoX1RwKikgc3RkOjptYWxs
b2MoKHN0ZDo6c2l6ZV90KV9fbGVuICogc2l6ZW9mKF9UcCkpOwogICAgICAgICAgaWYgKF9fdG1w
ICE9IDApCiAgICAgICAgICAgIHJldHVybiBwYWlyPF9UcCosIHB0cmRpZmZfdD4oX190bXAsIF9f
bGVuKTsKICAgICAgICAgIF9fbGVuIC89IDI7CiAgICAgICAgfQogICAgICByZXR1cm4gcGFpcjxf
VHAqLCBwdHJkaWZmX3Q+KChfVHAqKTAsIDApOwogICAgfQojIDEwMyAiL2hvbWUvQWRtaW5pc3Ry
YXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2Mr
Ky9tZW1vcnkiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgcGFpcjxfVHAq
LHB0cmRpZmZfdD4KICAgIGdldF90ZW1wb3JhcnlfYnVmZmVyKHB0cmRpZmZfdCBfX2xlbikKICAg
IHsgcmV0dXJuIF9fZ2V0X3RlbXBvcmFyeV9idWZmZXIoX19sZW4sIChfVHAqKSAwKTsgfQojIDEx
NSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3ln
d2luLzMuNC9pbmNsdWRlL2MrKy9tZW1vcnkiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICB2b2lkCiAgICByZXR1cm5fdGVtcG9yYXJ5X2J1ZmZlcihfVHAqIF9fcCkKICAgIHsgc3RkOjpm
cmVlKF9fcCk7IH0KIyAxMjcgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvbWVtb3J5IiAzCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwMT4KICAgIHN0cnVjdCBhdXRvX3B0cl9yZWYKICAgIHsKICAgICAgX1RwMSog
X01fcHRyOwoKICAgICAgZXhwbGljaXQKICAgICAgYXV0b19wdHJfcmVmKF9UcDEqIF9fcCk6IF9N
X3B0cihfX3ApIHsgfQogICAgfTsKIyAxNjYgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGlu
Zy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvbWVtb3J5IiAzCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY2xhc3MgYXV0b19wdHIKICAgIHsKICAgIHByaXZh
dGU6CiAgICAgIF9UcCogX01fcHRyOwoKICAgIHB1YmxpYzoKCiAgICAgIHR5cGVkZWYgX1RwIGVs
ZW1lbnRfdHlwZTsKCgoKCgoKCiAgICAgIGV4cGxpY2l0CiAgICAgIGF1dG9fcHRyKGVsZW1lbnRf
dHlwZSogX19wID0gMCkgdGhyb3coKSA6IF9NX3B0cihfX3ApIHsgfQojIDE5MiAiL2hvbWUvQWRt
aW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNs
dWRlL2MrKy9tZW1vcnkiIDMKICAgICAgYXV0b19wdHIoYXV0b19wdHImIF9fYSkgdGhyb3coKSA6
IF9NX3B0cihfX2EucmVsZWFzZSgpKSB7IH0KIyAyMDMgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2Nj
dGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvbWVtb3J5
IiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDE+CiAgICAgICAgYXV0b19wdHIoYXV0b19w
dHI8X1RwMT4mIF9fYSkgdGhyb3coKSA6IF9NX3B0cihfX2EucmVsZWFzZSgpKSB7IH0KIyAyMTQg
Ii9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dp
bi8zLjQvaW5jbHVkZS9jKysvbWVtb3J5IiAzCiAgICAgIGF1dG9fcHRyJgogICAgICBvcGVyYXRv
cj0oYXV0b19wdHImIF9fYSkgdGhyb3coKQogICAgICB7CiAgICAgICAgcmVzZXQoX19hLnJlbGVh
c2UoKSk7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICB9CiMgMjMxICIvaG9tZS9BZG1pbmlz
dHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUv
YysrL21lbW9yeSIgMwogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxPgogICAgICAgIGF1dG9f
cHRyJgogICAgICAgIG9wZXJhdG9yPShhdXRvX3B0cjxfVHAxPiYgX19hKSB0aHJvdygpCiAgICAg
ICAgewogICAgICAgICAgcmVzZXQoX19hLnJlbGVhc2UoKSk7CiAgICAgICAgICByZXR1cm4gKnRo
aXM7CiAgICAgICAgfQojIDI1MSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9n
Y2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9tZW1vcnkiIDMKICAgICAgfmF1
dG9fcHRyKCkgeyBkZWxldGUgX01fcHRyOyB9CiMgMjYxICIvaG9tZS9BZG1pbmlzdHJhdG9yL2dj
Y3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL21lbW9y
eSIgMwogICAgICBlbGVtZW50X3R5cGUmCiAgICAgIG9wZXJhdG9yKigpIGNvbnN0IHRocm93KCkg
eyByZXR1cm4gKl9NX3B0cjsgfQoKCgoKCgoKICAgICAgZWxlbWVudF90eXBlKgogICAgICBvcGVy
YXRvci0+KCkgY29uc3QgdGhyb3coKSB7IHJldHVybiBfTV9wdHI7IH0KIyAyODMgIi9ob21lL0Fk
bWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5j
bHVkZS9jKysvbWVtb3J5IiAzCiAgICAgIGVsZW1lbnRfdHlwZSoKICAgICAgZ2V0KCkgY29uc3Qg
dGhyb3coKSB7IHJldHVybiBfTV9wdHI7IH0KIyAyOTcgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2Nj
dGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvbWVtb3J5
IiAzCiAgICAgIGVsZW1lbnRfdHlwZSoKICAgICAgcmVsZWFzZSgpIHRocm93KCkKICAgICAgewog
ICAgICAgIGVsZW1lbnRfdHlwZSogX190bXAgPSBfTV9wdHI7CiAgICAgICAgX01fcHRyID0gMDsK
ICAgICAgICByZXR1cm4gX190bXA7CiAgICAgIH0KIyAzMTIgIi9ob21lL0FkbWluaXN0cmF0b3Iv
Z2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvbWVt
b3J5IiAzCiAgICAgIHZvaWQKICAgICAgcmVzZXQoZWxlbWVudF90eXBlKiBfX3AgPSAwKSB0aHJv
dygpCiAgICAgIHsKICAgICAgICBpZiAoX19wICE9IF9NX3B0cikKICAgICAgICAgIHsKICAgICAg
ICAgICAgZGVsZXRlIF9NX3B0cjsKICAgICAgICAgICAgX01fcHRyID0gX19wOwogICAgICAgICAg
fQogICAgICB9CiMgMzMzICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1s
aWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL21lbW9yeSIgMwogICAgICBhdXRvX3B0
cihhdXRvX3B0cl9yZWY8ZWxlbWVudF90eXBlPiBfX3JlZikgdGhyb3coKQogICAgICA6IF9NX3B0
cihfX3JlZi5fTV9wdHIpIHsgfQoKICAgICAgYXV0b19wdHImCiAgICAgIG9wZXJhdG9yPShhdXRv
X3B0cl9yZWY8ZWxlbWVudF90eXBlPiBfX3JlZikgdGhyb3coKQogICAgICB7CiAgICAgICAgaWYg
KF9fcmVmLl9NX3B0ciAhPSB0aGlzLT5nZXQoKSkKICAgICAgICAgIHsKICAgICAgICAgICAgZGVs
ZXRlIF9NX3B0cjsKICAgICAgICAgICAgX01fcHRyID0gX19yZWYuX01fcHRyOwogICAgICAgICAg
fQogICAgICAgIHJldHVybiAqdGhpczsKICAgICAgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwMT4KICAgICAgICBvcGVyYXRvciBhdXRvX3B0cl9yZWY8X1RwMT4oKSB0aHJvdygpCiAgICAg
ICAgeyByZXR1cm4gYXV0b19wdHJfcmVmPF9UcDE+KHRoaXMtPnJlbGVhc2UoKSk7IH0KCiAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcDE+CiAgICAgICAgb3BlcmF0b3IgYXV0b19wdHI8X1RwMT4o
KSB0aHJvdygpCiAgICAgICAgeyByZXR1cm4gYXV0b19wdHI8X1RwMT4odGhpcy0+cmVsZWFzZSgp
KTsgfQoKICB9Owp9CiMgNDkgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvc3RyaW5nIiAyIDMKCgoKIyAxICIv
aG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4v
My40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2Z1bmN0aW9uLmgiIDEgMwojIDY0ICIvaG9tZS9BZG1p
bmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1
ZGUvYysrL2JpdHMvc3RsX2Z1bmN0aW9uLmgiIDMKbmFtZXNwYWNlIHN0ZAp7CiMgMTAxICIvaG9t
ZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40
L2luY2x1ZGUvYysrL2JpdHMvc3RsX2Z1bmN0aW9uLmgiIDMKdGVtcGxhdGUgPGNsYXNzIF9Bcmcs
IGNsYXNzIF9SZXN1bHQ+CnN0cnVjdCB1bmFyeV9mdW5jdGlvbiB7CiAgdHlwZWRlZiBfQXJnIGFy
Z3VtZW50X3R5cGU7CiAgdHlwZWRlZiBfUmVzdWx0IHJlc3VsdF90eXBlOwp9OwoKCgoKdGVtcGxh
dGUgPGNsYXNzIF9BcmcxLCBjbGFzcyBfQXJnMiwgY2xhc3MgX1Jlc3VsdD4Kc3RydWN0IGJpbmFy
eV9mdW5jdGlvbiB7CiAgdHlwZWRlZiBfQXJnMSBmaXJzdF9hcmd1bWVudF90eXBlOwogIHR5cGVk
ZWYgX0FyZzIgc2Vjb25kX2FyZ3VtZW50X3R5cGU7CiAgdHlwZWRlZiBfUmVzdWx0IHJlc3VsdF90
eXBlOwp9OwojIDEyNyAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGli
L2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9mdW5jdGlvbi5oIiAzCnRl
bXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBwbHVzIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxf
VHAsX1RwLF9UcD4gewogIF9UcCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAm
IF9feSkgY29uc3QgeyByZXR1cm4gX194ICsgX195OyB9Cn07CgoKdGVtcGxhdGUgPGNsYXNzIF9U
cD4Kc3RydWN0IG1pbnVzIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLF9UcD4gewog
IF9UcCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyBy
ZXR1cm4gX194IC0gX195OyB9Cn07CgoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IG11bHRp
cGxpZXMgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsX1RwPiB7CiAgX1RwIG9wZXJh
dG9yKCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBfX3gg
KiBfX3k7IH0KfTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgZGl2aWRlcyA6IHB1Ymxp
YyBiaW5hcnlfZnVuY3Rpb248X1RwLF9UcCxfVHA+IHsKICBfVHAgb3BlcmF0b3IoKShjb25zdCBf
VHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0IHsgcmV0dXJuIF9feCAvIF9feTsgfQp9OwoK
CnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBtb2R1bHVzIDogcHVibGljIGJpbmFyeV9mdW5j
dGlvbjxfVHAsX1RwLF9UcD4KewogIF9UcCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25z
dCBfVHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194ICUgX195OyB9Cn07CgoKdGVtcGxhdGUgPGNs
YXNzIF9UcD4Kc3RydWN0IG5lZ2F0ZSA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfVHAsX1RwPgp7
CiAgX1RwIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gpIGNvbnN0IHsgcmV0dXJuIC1fX3g7IH0K
fTsKIyAxNzMgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2
LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfZnVuY3Rpb24uaCIgMwp0ZW1wbGF0
ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgZXF1YWxfdG8gOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9U
cCxfVHAsYm9vbD4KewogIGJvb2wgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1Rw
JiBfX3kpIGNvbnN0IHsgcmV0dXJuIF9feCA9PSBfX3k7IH0KfTsKCgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1RwPgpzdHJ1Y3Qgbm90X2VxdWFsX3RvIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1Rw
LGJvb2w+CnsKICBib29sIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195
KSBjb25zdCB7IHJldHVybiBfX3ggIT0gX195OyB9Cn07CgoKdGVtcGxhdGUgPGNsYXNzIF9UcD4K
c3RydWN0IGdyZWF0ZXIgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsYm9vbD4Kewog
IGJvb2wgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0IHsg
cmV0dXJuIF9feCA+IF9feTsgfQp9OwoKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBsZXNz
IDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLGJvb2w+CnsKICBib29sIG9wZXJhdG9y
KCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBfX3ggPCBf
X3k7IH0KfTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgZ3JlYXRlcl9lcXVhbCA6IHB1
YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLF9UcCxib29sPgp7CiAgYm9vbCBvcGVyYXRvcigpKGNv
bnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194ID49IF9feTsg
fQp9OwoKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBsZXNzX2VxdWFsIDogcHVibGljIGJp
bmFyeV9mdW5jdGlvbjxfVHAsX1RwLGJvb2w+CnsKICBib29sIG9wZXJhdG9yKCkoY29uc3QgX1Rw
JiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBfX3ggPD0gX195OyB9Cn07CiMg
MjIyICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1j
eWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2Z1bmN0aW9uLmgiIDMKdGVtcGxhdGUgPGNs
YXNzIF9UcD4Kc3RydWN0IGxvZ2ljYWxfYW5kIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAs
X1RwLGJvb2w+CnsKICBib29sIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYg
X195KSBjb25zdCB7IHJldHVybiBfX3ggJiYgX195OyB9Cn07CgoKdGVtcGxhdGUgPGNsYXNzIF9U
cD4Kc3RydWN0IGxvZ2ljYWxfb3IgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsYm9v
bD4KewogIGJvb2wgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNv
bnN0IHsgcmV0dXJuIF9feCB8fCBfX3k7IH0KfTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1
Y3QgbG9naWNhbF9ub3QgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1RwLGJvb2w+CnsKICBib29s
IG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gpIGNvbnN0IHsgcmV0dXJuICFfX3g7IH0KfTsKIyAy
NzEgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5
Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfZnVuY3Rpb24uaCIgMwp0ZW1wbGF0ZSA8Y2xh
c3MgX1ByZWRpY2F0ZT4KY2xhc3MgdW5hcnlfbmVnYXRlCiAgOiBwdWJsaWMgdW5hcnlfZnVuY3Rp
b248dHlwZW5hbWUgX1ByZWRpY2F0ZTo6YXJndW1lbnRfdHlwZSwgYm9vbD4gewpwcm90ZWN0ZWQ6
CiAgX1ByZWRpY2F0ZSBfTV9wcmVkOwpwdWJsaWM6CiAgZXhwbGljaXQgdW5hcnlfbmVnYXRlKGNv
bnN0IF9QcmVkaWNhdGUmIF9feCkgOiBfTV9wcmVkKF9feCkge30KICBib29sIG9wZXJhdG9yKCko
Y29uc3QgdHlwZW5hbWUgX1ByZWRpY2F0ZTo6YXJndW1lbnRfdHlwZSYgX194KSBjb25zdCB7CiAg
ICByZXR1cm4gIV9NX3ByZWQoX194KTsKICB9Cn07CgoKdGVtcGxhdGUgPGNsYXNzIF9QcmVkaWNh
dGU+CmlubGluZSB1bmFyeV9uZWdhdGU8X1ByZWRpY2F0ZT4Kbm90MShjb25zdCBfUHJlZGljYXRl
JiBfX3ByZWQpCnsKICByZXR1cm4gdW5hcnlfbmVnYXRlPF9QcmVkaWNhdGU+KF9fcHJlZCk7Cn0K
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1ByZWRpY2F0ZT4KY2xhc3MgYmluYXJ5X25lZ2F0ZQogIDogcHVi
bGljIGJpbmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBfUHJlZGljYXRlOjpmaXJzdF9hcmd1bWVudF90
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBfUHJlZGljYXRlOjpzZWNv
bmRfYXJndW1lbnRfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbD4gewpwcm90
ZWN0ZWQ6CiAgX1ByZWRpY2F0ZSBfTV9wcmVkOwpwdWJsaWM6CiAgZXhwbGljaXQgYmluYXJ5X25l
Z2F0ZShjb25zdCBfUHJlZGljYXRlJiBfX3gpIDogX01fcHJlZChfX3gpIHt9CiAgYm9vbCBvcGVy
YXRvcigpKGNvbnN0IHR5cGVuYW1lIF9QcmVkaWNhdGU6OmZpcnN0X2FyZ3VtZW50X3R5cGUmIF9f
eCwKICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZW5hbWUgX1ByZWRpY2F0ZTo6c2Vjb25kX2Fy
Z3VtZW50X3R5cGUmIF9feSkgY29uc3QKICB7CiAgICByZXR1cm4gIV9NX3ByZWQoX194LCBfX3kp
OwogIH0KfTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1ByZWRpY2F0ZT4KaW5saW5lIGJpbmFyeV9uZWdh
dGU8X1ByZWRpY2F0ZT4Kbm90Mihjb25zdCBfUHJlZGljYXRlJiBfX3ByZWQpCnsKICByZXR1cm4g
YmluYXJ5X25lZ2F0ZTxfUHJlZGljYXRlPihfX3ByZWQpOwp9CiMgMzQ5ICIvaG9tZS9BZG1pbmlz
dHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUv
YysrL2JpdHMvc3RsX2Z1bmN0aW9uLmgiIDMKdGVtcGxhdGUgPGNsYXNzIF9PcGVyYXRpb24+CmNs
YXNzIGJpbmRlcjFzdAogIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIF9PcGVyYXRp
b246OnNlY29uZF9hcmd1bWVudF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVu
YW1lIF9PcGVyYXRpb246OnJlc3VsdF90eXBlPiB7CnByb3RlY3RlZDoKICBfT3BlcmF0aW9uIG9w
OwogIHR5cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3VtZW50X3R5cGUgdmFsdWU7CnB1Ymxp
YzoKICBiaW5kZXIxc3QoY29uc3QgX09wZXJhdGlvbiYgX194LAogICAgICAgICAgICBjb25zdCB0
eXBlbmFtZSBfT3BlcmF0aW9uOjpmaXJzdF9hcmd1bWVudF90eXBlJiBfX3kpCiAgICAgIDogb3Ao
X194KSwgdmFsdWUoX195KSB7fQogIHR5cGVuYW1lIF9PcGVyYXRpb246OnJlc3VsdF90eXBlCiAg
b3BlcmF0b3IoKShjb25zdCB0eXBlbmFtZSBfT3BlcmF0aW9uOjpzZWNvbmRfYXJndW1lbnRfdHlw
ZSYgX194KSBjb25zdCB7CiAgICByZXR1cm4gb3AodmFsdWUsIF9feCk7CiAgfQoKCiAgdHlwZW5h
bWUgX09wZXJhdGlvbjo6cmVzdWx0X3R5cGUKICBvcGVyYXRvcigpKHR5cGVuYW1lIF9PcGVyYXRp
b246OnNlY29uZF9hcmd1bWVudF90eXBlJiBfX3gpIGNvbnN0IHsKICAgIHJldHVybiBvcCh2YWx1
ZSwgX194KTsKICB9Cgp9OwoKCnRlbXBsYXRlIDxjbGFzcyBfT3BlcmF0aW9uLCBjbGFzcyBfVHA+
CmlubGluZSBiaW5kZXIxc3Q8X09wZXJhdGlvbj4KYmluZDFzdChjb25zdCBfT3BlcmF0aW9uJiBf
X2ZuLCBjb25zdCBfVHAmIF9feCkKewogIHR5cGVkZWYgdHlwZW5hbWUgX09wZXJhdGlvbjo6Zmly
c3RfYXJndW1lbnRfdHlwZSBfQXJnMV90eXBlOwogIHJldHVybiBiaW5kZXIxc3Q8X09wZXJhdGlv
bj4oX19mbiwgX0FyZzFfdHlwZShfX3gpKTsKfQoKCnRlbXBsYXRlIDxjbGFzcyBfT3BlcmF0aW9u
PgpjbGFzcyBiaW5kZXIybmQKICA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBfT3Bl
cmF0aW9uOjpmaXJzdF9hcmd1bWVudF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGVuYW1lIF9PcGVyYXRpb246OnJlc3VsdF90eXBlPiB7CnByb3RlY3RlZDoKICBfT3BlcmF0aW9u
IG9wOwogIHR5cGVuYW1lIF9PcGVyYXRpb246OnNlY29uZF9hcmd1bWVudF90eXBlIHZhbHVlOwpw
dWJsaWM6CiAgYmluZGVyMm5kKGNvbnN0IF9PcGVyYXRpb24mIF9feCwKICAgICAgICAgICAgY29u
c3QgdHlwZW5hbWUgX09wZXJhdGlvbjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUmIF9feSkKICAgICAg
OiBvcChfX3gpLCB2YWx1ZShfX3kpIHt9CiAgdHlwZW5hbWUgX09wZXJhdGlvbjo6cmVzdWx0X3R5
cGUKICBvcGVyYXRvcigpKGNvbnN0IHR5cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3VtZW50
X3R5cGUmIF9feCkgY29uc3QgewogICAgcmV0dXJuIG9wKF9feCwgdmFsdWUpOwogIH0KCgogIHR5
cGVuYW1lIF9PcGVyYXRpb246OnJlc3VsdF90eXBlCiAgb3BlcmF0b3IoKSh0eXBlbmFtZSBfT3Bl
cmF0aW9uOjpmaXJzdF9hcmd1bWVudF90eXBlJiBfX3gpIGNvbnN0IHsKICAgIHJldHVybiBvcChf
X3gsIHZhbHVlKTsKICB9Cgp9OwoKCnRlbXBsYXRlIDxjbGFzcyBfT3BlcmF0aW9uLCBjbGFzcyBf
VHA+CmlubGluZSBiaW5kZXIybmQ8X09wZXJhdGlvbj4KYmluZDJuZChjb25zdCBfT3BlcmF0aW9u
JiBfX2ZuLCBjb25zdCBfVHAmIF9feCkKewogIHR5cGVkZWYgdHlwZW5hbWUgX09wZXJhdGlvbjo6
c2Vjb25kX2FyZ3VtZW50X3R5cGUgX0FyZzJfdHlwZTsKICByZXR1cm4gYmluZGVyMm5kPF9PcGVy
YXRpb24+KF9fZm4sIF9BcmcyX3R5cGUoX194KSk7Cn0KIyA0MzggIi9ob21lL0FkbWluaXN0cmF0
b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysv
Yml0cy9zdGxfZnVuY3Rpb24uaCIgMwp0ZW1wbGF0ZSA8Y2xhc3MgX0FyZywgY2xhc3MgX1Jlc3Vs
dD4KY2xhc3MgcG9pbnRlcl90b191bmFyeV9mdW5jdGlvbiA6IHB1YmxpYyB1bmFyeV9mdW5jdGlv
bjxfQXJnLCBfUmVzdWx0PiB7CnByb3RlY3RlZDoKICBfUmVzdWx0ICgqX01fcHRyKShfQXJnKTsK
cHVibGljOgogIHBvaW50ZXJfdG9fdW5hcnlfZnVuY3Rpb24oKSB7fQogIGV4cGxpY2l0IHBvaW50
ZXJfdG9fdW5hcnlfZnVuY3Rpb24oX1Jlc3VsdCAoKl9feCkoX0FyZykpIDogX01fcHRyKF9feCkg
e30KICBfUmVzdWx0IG9wZXJhdG9yKCkoX0FyZyBfX3gpIGNvbnN0IHsgcmV0dXJuIF9NX3B0cihf
X3gpOyB9Cn07CgoKdGVtcGxhdGUgPGNsYXNzIF9BcmcsIGNsYXNzIF9SZXN1bHQ+CmlubGluZSBw
b2ludGVyX3RvX3VuYXJ5X2Z1bmN0aW9uPF9BcmcsIF9SZXN1bHQ+IHB0cl9mdW4oX1Jlc3VsdCAo
Kl9feCkoX0FyZykpCnsKICByZXR1cm4gcG9pbnRlcl90b191bmFyeV9mdW5jdGlvbjxfQXJnLCBf
UmVzdWx0PihfX3gpOwp9CgoKdGVtcGxhdGUgPGNsYXNzIF9BcmcxLCBjbGFzcyBfQXJnMiwgY2xh
c3MgX1Jlc3VsdD4KY2xhc3MgcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb24gOgogIHB1YmxpYyBi
aW5hcnlfZnVuY3Rpb248X0FyZzEsX0FyZzIsX1Jlc3VsdD4gewpwcm90ZWN0ZWQ6CiAgICBfUmVz
dWx0ICgqX01fcHRyKShfQXJnMSwgX0FyZzIpOwpwdWJsaWM6CiAgICBwb2ludGVyX3RvX2JpbmFy
eV9mdW5jdGlvbigpIHt9CiAgICBleHBsaWNpdCBwb2ludGVyX3RvX2JpbmFyeV9mdW5jdGlvbihf
UmVzdWx0ICgqX194KShfQXJnMSwgX0FyZzIpKQogICAgICA6IF9NX3B0cihfX3gpIHt9CiAgICBf
UmVzdWx0IG9wZXJhdG9yKCkoX0FyZzEgX194LCBfQXJnMiBfX3kpIGNvbnN0IHsKICAgICAgcmV0
dXJuIF9NX3B0cihfX3gsIF9feSk7CiAgICB9Cn07CgoKdGVtcGxhdGUgPGNsYXNzIF9BcmcxLCBj
bGFzcyBfQXJnMiwgY2xhc3MgX1Jlc3VsdD4KaW5saW5lIHBvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0
aW9uPF9BcmcxLF9BcmcyLF9SZXN1bHQ+CnB0cl9mdW4oX1Jlc3VsdCAoKl9feCkoX0FyZzEsIF9B
cmcyKSkgewogIHJldHVybiBwb2ludGVyX3RvX2JpbmFyeV9mdW5jdGlvbjxfQXJnMSxfQXJnMixf
UmVzdWx0PihfX3gpOwp9CgoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IF9JZGVudGl0eSA6
IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfVHAsX1RwPiB7CiAgX1RwJiBvcGVyYXRvcigpKF9UcCYg
X194KSBjb25zdCB7IHJldHVybiBfX3g7IH0KICBjb25zdCBfVHAmIG9wZXJhdG9yKCkoY29uc3Qg
X1RwJiBfX3gpIGNvbnN0IHsgcmV0dXJuIF9feDsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9QYWly
PgpzdHJ1Y3QgX1NlbGVjdDFzdCA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfUGFpciwgdHlwZW5h
bWUgX1BhaXI6OmZpcnN0X3R5cGU+IHsKICB0eXBlbmFtZSBfUGFpcjo6Zmlyc3RfdHlwZSYgb3Bl
cmF0b3IoKShfUGFpciYgX194KSBjb25zdCB7CiAgICByZXR1cm4gX194LmZpcnN0OwogIH0KICBj
b25zdCB0eXBlbmFtZSBfUGFpcjo6Zmlyc3RfdHlwZSYgb3BlcmF0b3IoKShjb25zdCBfUGFpciYg
X194KSBjb25zdCB7CiAgICByZXR1cm4gX194LmZpcnN0OwogIH0KfTsKCnRlbXBsYXRlIDxjbGFz
cyBfUGFpcj4Kc3RydWN0IF9TZWxlY3QybmQgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1BhaXIs
IHR5cGVuYW1lIF9QYWlyOjpzZWNvbmRfdHlwZT4KewogIHR5cGVuYW1lIF9QYWlyOjpzZWNvbmRf
dHlwZSYgb3BlcmF0b3IoKShfUGFpciYgX194KSBjb25zdCB7CiAgICByZXR1cm4gX194LnNlY29u
ZDsKICB9CiAgY29uc3QgdHlwZW5hbWUgX1BhaXI6OnNlY29uZF90eXBlJiBvcGVyYXRvcigpKGNv
bnN0IF9QYWlyJiBfX3gpIGNvbnN0IHsKICAgIHJldHVybiBfX3guc2Vjb25kOwogIH0KfTsKIyA1
MjggIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5
Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfZnVuY3Rpb24uaCIgMwp0ZW1wbGF0ZSA8Y2xh
c3MgX1JldCwgY2xhc3MgX1RwPgpjbGFzcyBtZW1fZnVuX3QgOiBwdWJsaWMgdW5hcnlfZnVuY3Rp
b248X1RwKixfUmV0PiB7CnB1YmxpYzoKICBleHBsaWNpdCBtZW1fZnVuX3QoX1JldCAoX1RwOjoq
X19wZikoKSkgOiBfTV9mKF9fcGYpIHt9CiAgX1JldCBvcGVyYXRvcigpKF9UcCogX19wKSBjb25z
dCB7IHJldHVybiAoX19wLT4qX01fZikoKTsgfQpwcml2YXRlOgogIF9SZXQgKF9UcDo6Kl9NX2Yp
KCk7Cn07CgoKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcD4KY2xhc3MgY29uc3RfbWVt
X2Z1bl90IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPGNvbnN0IF9UcCosX1JldD4gewpwdWJsaWM6
CiAgZXhwbGljaXQgY29uc3RfbWVtX2Z1bl90KF9SZXQgKF9UcDo6Kl9fcGYpKCkgY29uc3QpIDog
X01fZihfX3BmKSB7fQogIF9SZXQgb3BlcmF0b3IoKShjb25zdCBfVHAqIF9fcCkgY29uc3QgeyBy
ZXR1cm4gKF9fcC0+Kl9NX2YpKCk7IH0KcHJpdmF0ZToKICBfUmV0IChfVHA6OipfTV9mKSgpIGNv
bnN0Owp9OwoKCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHA+CmNsYXNzIG1lbV9mdW5f
cmVmX3QgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1RwLF9SZXQ+IHsKcHVibGljOgogIGV4cGxp
Y2l0IG1lbV9mdW5fcmVmX3QoX1JldCAoX1RwOjoqX19wZikoKSkgOiBfTV9mKF9fcGYpIHt9CiAg
X1JldCBvcGVyYXRvcigpKF9UcCYgX19yKSBjb25zdCB7IHJldHVybiAoX19yLipfTV9mKSgpOyB9
CnByaXZhdGU6CiAgX1JldCAoX1RwOjoqX01fZikoKTsKfTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jl
dCwgY2xhc3MgX1RwPgpjbGFzcyBjb25zdF9tZW1fZnVuX3JlZl90IDogcHVibGljIHVuYXJ5X2Z1
bmN0aW9uPF9UcCxfUmV0PiB7CnB1YmxpYzoKICBleHBsaWNpdCBjb25zdF9tZW1fZnVuX3JlZl90
KF9SZXQgKF9UcDo6Kl9fcGYpKCkgY29uc3QpIDogX01fZihfX3BmKSB7fQogIF9SZXQgb3BlcmF0
b3IoKShjb25zdCBfVHAmIF9fcikgY29uc3QgeyByZXR1cm4gKF9fci4qX01fZikoKTsgfQpwcml2
YXRlOgogIF9SZXQgKF9UcDo6Kl9NX2YpKCkgY29uc3Q7Cn07CgoKdGVtcGxhdGUgPGNsYXNzIF9S
ZXQsIGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KY2xhc3MgbWVtX2Z1bjFfdCA6IHB1YmxpYyBiaW5h
cnlfZnVuY3Rpb248X1RwKixfQXJnLF9SZXQ+IHsKcHVibGljOgogIGV4cGxpY2l0IG1lbV9mdW4x
X3QoX1JldCAoX1RwOjoqX19wZikoX0FyZykpIDogX01fZihfX3BmKSB7fQogIF9SZXQgb3BlcmF0
b3IoKShfVHAqIF9fcCwgX0FyZyBfX3gpIGNvbnN0IHsgcmV0dXJuIChfX3AtPipfTV9mKShfX3gp
OyB9CnByaXZhdGU6CiAgX1JldCAoX1RwOjoqX01fZikoX0FyZyk7Cn07CgoKdGVtcGxhdGUgPGNs
YXNzIF9SZXQsIGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KY2xhc3MgY29uc3RfbWVtX2Z1bjFfdCA6
IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248Y29uc3QgX1RwKixfQXJnLF9SZXQ+IHsKcHVibGljOgog
IGV4cGxpY2l0IGNvbnN0X21lbV9mdW4xX3QoX1JldCAoX1RwOjoqX19wZikoX0FyZykgY29uc3Qp
IDogX01fZihfX3BmKSB7fQogIF9SZXQgb3BlcmF0b3IoKShjb25zdCBfVHAqIF9fcCwgX0FyZyBf
X3gpIGNvbnN0CiAgICB7IHJldHVybiAoX19wLT4qX01fZikoX194KTsgfQpwcml2YXRlOgogIF9S
ZXQgKF9UcDo6Kl9NX2YpKF9BcmcpIGNvbnN0Owp9OwoKCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBj
bGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmNsYXNzIG1lbV9mdW4xX3JlZl90IDogcHVibGljIGJpbmFy
eV9mdW5jdGlvbjxfVHAsX0FyZyxfUmV0PiB7CnB1YmxpYzoKICBleHBsaWNpdCBtZW1fZnVuMV9y
ZWZfdChfUmV0IChfVHA6OipfX3BmKShfQXJnKSkgOiBfTV9mKF9fcGYpIHt9CiAgX1JldCBvcGVy
YXRvcigpKF9UcCYgX19yLCBfQXJnIF9feCkgY29uc3QgeyByZXR1cm4gKF9fci4qX01fZikoX194
KTsgfQpwcml2YXRlOgogIF9SZXQgKF9UcDo6Kl9NX2YpKF9BcmcpOwp9OwoKCnRlbXBsYXRlIDxj
bGFzcyBfUmV0LCBjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmNsYXNzIGNvbnN0X21lbV9mdW4xX3Jl
Zl90IDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX0FyZyxfUmV0PiB7CnB1YmxpYzoKICBl
eHBsaWNpdCBjb25zdF9tZW1fZnVuMV9yZWZfdChfUmV0IChfVHA6OipfX3BmKShfQXJnKSBjb25z
dCkgOiBfTV9mKF9fcGYpIHt9CiAgX1JldCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX19yLCBfQXJn
IF9feCkgY29uc3QgeyByZXR1cm4gKF9fci4qX01fZikoX194KTsgfQpwcml2YXRlOgogIF9SZXQg
KF9UcDo6Kl9NX2YpKF9BcmcpIGNvbnN0Owp9OwoKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmNsYXNz
IG1lbV9mdW5fdDx2b2lkLCBfVHA+IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9UcCosdm9pZD4g
ewpwdWJsaWM6CiAgZXhwbGljaXQgbWVtX2Z1bl90KHZvaWQgKF9UcDo6Kl9fcGYpKCkpIDogX01f
ZihfX3BmKSB7fQogIHZvaWQgb3BlcmF0b3IoKShfVHAqIF9fcCkgY29uc3QgeyAoX19wLT4qX01f
ZikoKTsgfQpwcml2YXRlOgogIHZvaWQgKF9UcDo6Kl9NX2YpKCk7Cn07CgoKdGVtcGxhdGUgPGNs
YXNzIF9UcD4KY2xhc3MgY29uc3RfbWVtX2Z1bl90PHZvaWQsIF9UcD4gOiBwdWJsaWMgdW5hcnlf
ZnVuY3Rpb248Y29uc3QgX1RwKix2b2lkPiB7CnB1YmxpYzoKICBleHBsaWNpdCBjb25zdF9tZW1f
ZnVuX3Qodm9pZCAoX1RwOjoqX19wZikoKSBjb25zdCkgOiBfTV9mKF9fcGYpIHt9CiAgdm9pZCBv
cGVyYXRvcigpKGNvbnN0IF9UcCogX19wKSBjb25zdCB7IChfX3AtPipfTV9mKSgpOyB9CnByaXZh
dGU6CiAgdm9pZCAoX1RwOjoqX01fZikoKSBjb25zdDsKfTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1Rw
PgpjbGFzcyBtZW1fZnVuX3JlZl90PHZvaWQsIF9UcD4gOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248
X1RwLHZvaWQ+IHsKcHVibGljOgogIGV4cGxpY2l0IG1lbV9mdW5fcmVmX3Qodm9pZCAoX1RwOjoq
X19wZikoKSkgOiBfTV9mKF9fcGYpIHt9CiAgdm9pZCBvcGVyYXRvcigpKF9UcCYgX19yKSBjb25z
dCB7IChfX3IuKl9NX2YpKCk7IH0KcHJpdmF0ZToKICB2b2lkIChfVHA6OipfTV9mKSgpOwp9OwoK
CnRlbXBsYXRlIDxjbGFzcyBfVHA+CmNsYXNzIGNvbnN0X21lbV9mdW5fcmVmX3Q8dm9pZCwgX1Rw
PiA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfVHAsdm9pZD4gewpwdWJsaWM6CiAgZXhwbGljaXQg
Y29uc3RfbWVtX2Z1bl9yZWZfdCh2b2lkIChfVHA6OipfX3BmKSgpIGNvbnN0KSA6IF9NX2YoX19w
Zikge30KICB2b2lkIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3IpIGNvbnN0IHsgKF9fci4qX01f
ZikoKTsgfQpwcml2YXRlOgogIHZvaWQgKF9UcDo6Kl9NX2YpKCkgY29uc3Q7Cn07CgoKdGVtcGxh
dGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KY2xhc3MgbWVtX2Z1bjFfdDx2b2lkLCBfVHAsIF9B
cmc+IDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAqLF9Bcmcsdm9pZD4gewpwdWJsaWM6CiAg
ZXhwbGljaXQgbWVtX2Z1bjFfdCh2b2lkIChfVHA6OipfX3BmKShfQXJnKSkgOiBfTV9mKF9fcGYp
IHt9CiAgdm9pZCBvcGVyYXRvcigpKF9UcCogX19wLCBfQXJnIF9feCkgY29uc3QgeyAoX19wLT4q
X01fZikoX194KTsgfQpwcml2YXRlOgogIHZvaWQgKF9UcDo6Kl9NX2YpKF9BcmcpOwp9OwoKCnRl
bXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmNsYXNzIGNvbnN0X21lbV9mdW4xX3Q8dm9p
ZCwgX1RwLCBfQXJnPgogIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxjb25zdCBfVHAqLF9Bcmcs
dm9pZD4gewpwdWJsaWM6CiAgZXhwbGljaXQgY29uc3RfbWVtX2Z1bjFfdCh2b2lkIChfVHA6Oipf
X3BmKShfQXJnKSBjb25zdCkgOiBfTV9mKF9fcGYpIHt9CiAgdm9pZCBvcGVyYXRvcigpKGNvbnN0
IF9UcCogX19wLCBfQXJnIF9feCkgY29uc3QgeyAoX19wLT4qX01fZikoX194KTsgfQpwcml2YXRl
OgogIHZvaWQgKF9UcDo6Kl9NX2YpKF9BcmcpIGNvbnN0Owp9OwoKCnRlbXBsYXRlIDxjbGFzcyBf
VHAsIGNsYXNzIF9Bcmc+CmNsYXNzIG1lbV9mdW4xX3JlZl90PHZvaWQsIF9UcCwgX0FyZz4KICA6
IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLF9Bcmcsdm9pZD4gewpwdWJsaWM6CiAgZXhwbGlj
aXQgbWVtX2Z1bjFfcmVmX3Qodm9pZCAoX1RwOjoqX19wZikoX0FyZykpIDogX01fZihfX3BmKSB7
fQogIHZvaWQgb3BlcmF0b3IoKShfVHAmIF9fciwgX0FyZyBfX3gpIGNvbnN0IHsgKF9fci4qX01f
ZikoX194KTsgfQpwcml2YXRlOgogIHZvaWQgKF9UcDo6Kl9NX2YpKF9BcmcpOwp9OwoKCnRlbXBs
YXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmNsYXNzIGNvbnN0X21lbV9mdW4xX3JlZl90PHZv
aWQsIF9UcCwgX0FyZz4KICA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLF9Bcmcsdm9pZD4g
ewpwdWJsaWM6CiAgZXhwbGljaXQgY29uc3RfbWVtX2Z1bjFfcmVmX3Qodm9pZCAoX1RwOjoqX19w
ZikoX0FyZykgY29uc3QpIDogX01fZihfX3BmKSB7fQogIHZvaWQgb3BlcmF0b3IoKShjb25zdCBf
VHAmIF9fciwgX0FyZyBfX3gpIGNvbnN0IHsgKF9fci4qX01fZikoX194KTsgfQpwcml2YXRlOgog
IHZvaWQgKF9UcDo6Kl9NX2YpKF9BcmcpIGNvbnN0Owp9OwoKCgoKCnRlbXBsYXRlIDxjbGFzcyBf
UmV0LCBjbGFzcyBfVHA+CmlubGluZSBtZW1fZnVuX3Q8X1JldCxfVHA+IG1lbV9mdW4oX1JldCAo
X1RwOjoqX19mKSgpKQogIHsgcmV0dXJuIG1lbV9mdW5fdDxfUmV0LF9UcD4oX19mKTsgfQoKdGVt
cGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcD4KaW5saW5lIGNvbnN0X21lbV9mdW5fdDxfUmV0
LF9UcD4gbWVtX2Z1bihfUmV0IChfVHA6OipfX2YpKCkgY29uc3QpCiAgeyByZXR1cm4gY29uc3Rf
bWVtX2Z1bl90PF9SZXQsX1RwPihfX2YpOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3Mg
X1RwPgppbmxpbmUgbWVtX2Z1bl9yZWZfdDxfUmV0LF9UcD4gbWVtX2Z1bl9yZWYoX1JldCAoX1Rw
OjoqX19mKSgpKQogIHsgcmV0dXJuIG1lbV9mdW5fcmVmX3Q8X1JldCxfVHA+KF9fZik7IH0KCnRl
bXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHA+CmlubGluZSBjb25zdF9tZW1fZnVuX3JlZl90
PF9SZXQsX1RwPiBtZW1fZnVuX3JlZihfUmV0IChfVHA6OipfX2YpKCkgY29uc3QpCiAgeyByZXR1
cm4gY29uc3RfbWVtX2Z1bl9yZWZfdDxfUmV0LF9UcD4oX19mKTsgfQoKdGVtcGxhdGUgPGNsYXNz
IF9SZXQsIGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KaW5saW5lIG1lbV9mdW4xX3Q8X1JldCxfVHAs
X0FyZz4gbWVtX2Z1bihfUmV0IChfVHA6OipfX2YpKF9BcmcpKQogIHsgcmV0dXJuIG1lbV9mdW4x
X3Q8X1JldCxfVHAsX0FyZz4oX19mKTsgfQoKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9U
cCwgY2xhc3MgX0FyZz4KaW5saW5lIGNvbnN0X21lbV9mdW4xX3Q8X1JldCxfVHAsX0FyZz4gbWVt
X2Z1bihfUmV0IChfVHA6OipfX2YpKF9BcmcpIGNvbnN0KQogIHsgcmV0dXJuIGNvbnN0X21lbV9m
dW4xX3Q8X1JldCxfVHAsX0FyZz4oX19mKTsgfQoKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNz
IF9UcCwgY2xhc3MgX0FyZz4KaW5saW5lIG1lbV9mdW4xX3JlZl90PF9SZXQsX1RwLF9Bcmc+IG1l
bV9mdW5fcmVmKF9SZXQgKF9UcDo6Kl9fZikoX0FyZykpCiAgeyByZXR1cm4gbWVtX2Z1bjFfcmVm
X3Q8X1JldCxfVHAsX0FyZz4oX19mKTsgfQoKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9U
cCwgY2xhc3MgX0FyZz4KaW5saW5lIGNvbnN0X21lbV9mdW4xX3JlZl90PF9SZXQsX1RwLF9Bcmc+
Cm1lbV9mdW5fcmVmKF9SZXQgKF9UcDo6Kl9fZikoX0FyZykgY29uc3QpCiAgeyByZXR1cm4gY29u
c3RfbWVtX2Z1bjFfcmVmX3Q8X1JldCxfVHAsX0FyZz4oX19mKTsgfQoKCgp9CiMgNTMgIi9ob21l
L0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQv
aW5jbHVkZS9jKysvc3RyaW5nIiAyIDMKIyAxICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3Rp
bmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvYmFzaWNf
c3RyaW5nLmgiIDEgMwojIDQ0ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2dj
Yy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvYmFzaWNfc3RyaW5nLmgi
IDMKCgoKbmFtZXNwYWNlIHN0ZAp7CiMgMTA4ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3Rp
bmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvYmFzaWNf
c3RyaW5nLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMs
IHR5cGVuYW1lIF9BbGxvYz4KICAgIGNsYXNzIGJhc2ljX3N0cmluZwogICAgewoKICAgIHB1Ymxp
YzoKICAgICAgdHlwZWRlZiBfVHJhaXRzIHRyYWl0c190eXBlOwogICAgICB0eXBlZGVmIHR5cGVu
YW1lIF9UcmFpdHM6OmNoYXJfdHlwZSB2YWx1ZV90eXBlOwogICAgICB0eXBlZGVmIF9BbGxvYyBh
bGxvY2F0b3JfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQWxsb2M6OnNpemVfdHlwZSBz
aXplX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jOjpkaWZmZXJlbmNlX3R5cGUg
ZGlmZmVyZW5jZV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9BbGxvYzo6cmVmZXJlbmNl
IHJlZmVyZW5jZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQWxsb2M6OmNvbnN0X3JlZmVyZW5j
ZSBjb25zdF9yZWZlcmVuY2U7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jOjpwb2ludGVy
IHBvaW50ZXI7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jOjpjb25zdF9wb2ludGVyIGNv
bnN0X3BvaW50ZXI7CiAgICAgIHR5cGVkZWYgX19nbnVfY3h4OjpfX25vcm1hbF9pdGVyYXRvcjxw
b2ludGVyLCBiYXNpY19zdHJpbmc+IGl0ZXJhdG9yOwogICAgICB0eXBlZGVmIF9fZ251X2N4eDo6
X19ub3JtYWxfaXRlcmF0b3I8Y29uc3RfcG9pbnRlciwgYmFzaWNfc3RyaW5nPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9p
dGVyYXRvcjsKICAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0
b3I+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7CiAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0
ZXJhdG9yPGl0ZXJhdG9yPiByZXZlcnNlX2l0ZXJhdG9yOwoKICAgIHByaXZhdGU6CiMgMTQzICIv
aG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4v
My40L2luY2x1ZGUvYysrL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgc3RydWN0IF9SZXAK
ICAgICAgewoKICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIF9BbGxvYzo6dGVtcGxhdGUgcmViaW5k
PGNoYXI+OjpvdGhlciBfUmF3X2J5dGVzX2FsbG9jOwojIDE2MSAiL2hvbWUvQWRtaW5pc3RyYXRv
ci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9i
aXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdHlwZSBfU19t
YXhfc2l6ZTsKICAgICAgICBzdGF0aWMgY29uc3QgX0NoYXJUIF9TX3Rlcm1pbmFsOwoKICAgICAg
ICBzaXplX3R5cGUgX01fbGVuZ3RoOwogICAgICAgIHNpemVfdHlwZSBfTV9jYXBhY2l0eTsKICAg
ICAgICBfQXRvbWljX3dvcmQgX01fcmVmZXJlbmNlczsKCiAgICAgICAgYm9vbAogICAgICAgIF9N
X2lzX2xlYWtlZCgpIGNvbnN0CiAgICAgICAgeyByZXR1cm4gX01fcmVmZXJlbmNlcyA8IDA7IH0K
CiAgICAgICAgYm9vbAogICAgICAgIF9NX2lzX3NoYXJlZCgpIGNvbnN0CiAgICAgICAgeyByZXR1
cm4gX01fcmVmZXJlbmNlcyA+IDA7IH0KCiAgICAgICAgdm9pZAogICAgICAgIF9NX3NldF9sZWFr
ZWQoKQogICAgICAgIHsgX01fcmVmZXJlbmNlcyA9IC0xOyB9CgogICAgICAgIHZvaWQKICAgICAg
ICBfTV9zZXRfc2hhcmFibGUoKQogICAgICAgIHsgX01fcmVmZXJlbmNlcyA9IDA7IH0KCiAgICAg
ICAgX0NoYXJUKgogICAgICAgIF9NX3JlZmRhdGEoKSB0aHJvdygpCiAgICAgICAgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxfQ2hhclQqPih0aGlzICsgMSk7IH0KCiAgICAgICAgX0NoYXJUJgog
ICAgICAgIG9wZXJhdG9yW10oc2l6ZV90IF9fcykgdGhyb3coKQogICAgICAgIHsgcmV0dXJuIF9N
X3JlZmRhdGEoKSBbX19zXTsgfQoKICAgICAgICBfQ2hhclQqCiAgICAgICAgX01fZ3JhYihjb25z
dCBfQWxsb2MmIF9fYWxsb2MxLCBjb25zdCBfQWxsb2MmIF9fYWxsb2MyKQogICAgICAgIHsKICAg
ICAgICAgIHJldHVybiAoIV9NX2lzX2xlYWtlZCgpICYmIF9fYWxsb2MxID09IF9fYWxsb2MyKQog
ICAgICAgICAgICAgICAgICA/IF9NX3JlZmNvcHkoKSA6IF9NX2Nsb25lKF9fYWxsb2MxKTsKICAg
ICAgICB9CgoKICAgICAgICBzdGF0aWMgX1JlcCoKICAgICAgICBfU19jcmVhdGUoc2l6ZV90LCBj
b25zdCBfQWxsb2MmKTsKCiAgICAgICAgdm9pZAogICAgICAgIF9NX2Rpc3Bvc2UoY29uc3QgX0Fs
bG9jJiBfX2EpCiAgICAgICAgewogICAgICAgICAgaWYgKF9fZXhjaGFuZ2VfYW5kX2FkZCgmX01f
cmVmZXJlbmNlcywgLTEpIDw9IDApCiAgICAgICAgICAgIF9NX2Rlc3Ryb3koX19hKTsKICAgICAg
ICB9CgogICAgICAgIHZvaWQKICAgICAgICBfTV9kZXN0cm95KGNvbnN0IF9BbGxvYyYpIHRocm93
KCk7CgogICAgICAgIF9DaGFyVCoKICAgICAgICBfTV9yZWZjb3B5KCkgdGhyb3coKQogICAgICAg
IHsKICAgICAgICAgIF9fYXRvbWljX2FkZCgmX01fcmVmZXJlbmNlcywgMSk7CiAgICAgICAgICBy
ZXR1cm4gX01fcmVmZGF0YSgpOwogICAgICAgIH0KCiAgICAgICAgX0NoYXJUKgogICAgICAgIF9N
X2Nsb25lKGNvbnN0IF9BbGxvYyYsIHNpemVfdHlwZSBfX3JlcyA9IDApOwogICAgICB9OwoKCiAg
ICAgIHN0cnVjdCBfQWxsb2NfaGlkZXIgOiBfQWxsb2MKICAgICAgewogICAgICAgIF9BbGxvY19o
aWRlcihfQ2hhclQqIF9fZGF0LCBjb25zdCBfQWxsb2MmIF9fYSkKICAgICAgICA6IF9BbGxvYyhf
X2EpLCBfTV9wKF9fZGF0KSB7IH0KCiAgICAgICAgX0NoYXJUKiBfTV9wOwogICAgICB9OwoKICAg
IHB1YmxpYzoKCgoKICAgICAgc3RhdGljIGNvbnN0IHNpemVfdHlwZSBucG9zID0gc3RhdGljX2Nh
c3Q8c2l6ZV90eXBlPigtMSk7CgogICAgcHJpdmF0ZToKCiAgICAgIG11dGFibGUgX0FsbG9jX2hp
ZGVyIF9NX2RhdGFwbHVzOwoKCgogICAgICBzdGF0aWMgc2l6ZV90eXBlIF9TX2VtcHR5X3JlcF9z
dG9yYWdlWyhzaXplb2YoX1JlcCkgKyBzaXplb2YoX0NoYXJUKSArIHNpemVvZihzaXplX3R5cGUp
IC0gMSkvc2l6ZW9mKHNpemVfdHlwZSldOwoKICAgICAgX0NoYXJUKgogICAgICBfTV9kYXRhKCkg
Y29uc3QKICAgICAgeyByZXR1cm4gX01fZGF0YXBsdXMuX01fcDsgfQoKICAgICAgX0NoYXJUKgog
ICAgICBfTV9kYXRhKF9DaGFyVCogX19wKQogICAgICB7IHJldHVybiAoX01fZGF0YXBsdXMuX01f
cCA9IF9fcCk7IH0KCiAgICAgIF9SZXAqCiAgICAgIF9NX3JlcCgpIGNvbnN0CiAgICAgIHsgcmV0
dXJuICYoKHJlaW50ZXJwcmV0X2Nhc3Q8X1JlcCo+IChfTV9kYXRhKCkpKVstMV0pOyB9CgoKCiAg
ICAgIGl0ZXJhdG9yCiAgICAgIF9NX2liZWdpbigpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKF9N
X2RhdGEoKSk7IH0KCiAgICAgIGl0ZXJhdG9yCiAgICAgIF9NX2llbmQoKSBjb25zdCB7IHJldHVy
biBpdGVyYXRvcihfTV9kYXRhKCkgKyB0aGlzLT5zaXplKCkpOyB9CgogICAgICB2b2lkCiAgICAg
IF9NX2xlYWsoKQogICAgICB7CiAgICAgICAgaWYgKCFfTV9yZXAoKS0+X01faXNfbGVha2VkKCkp
CiAgICAgICAgICBfTV9sZWFrX2hhcmQoKTsKICAgICAgfQoKICAgICAgaXRlcmF0b3IKICAgICAg
X01fY2hlY2soc2l6ZV90eXBlIF9fcG9zKSBjb25zdAogICAgICB7CiAgICAgICAgaWYgKF9fcG9z
ID4gdGhpcy0+c2l6ZSgpKQogICAgICAgICAgX190aHJvd19vdXRfb2ZfcmFuZ2UoImJhc2ljX3N0
cmluZzo6X01fY2hlY2siKTsKICAgICAgICByZXR1cm4gX01faWJlZ2luKCkgKyBfX3BvczsKICAg
ICAgfQoKCiAgICAgIGl0ZXJhdG9yCiAgICAgIF9NX2ZvbGQoc2l6ZV90eXBlIF9fcG9zLCBzaXpl
X3R5cGUgX19vZmYpIGNvbnN0CiAgICAgIHsKICAgICAgICBib29sIF9fdGVzdG9mZiA9IF9fb2Zm
IDwgdGhpcy0+c2l6ZSgpIC0gX19wb3M7CiAgICAgICAgc2l6ZV90eXBlIF9fbmV3b2ZmID0gX190
ZXN0b2ZmID8gX19vZmYgOiB0aGlzLT5zaXplKCkgLSBfX3BvczsKICAgICAgICByZXR1cm4gKF9N
X2liZWdpbigpICsgX19wb3MgKyBfX25ld29mZik7CiAgICAgIH0KCgoKICAgICAgdGVtcGxhdGU8
Y2xhc3MgX0l0ZXJhdG9yPgogICAgICAgIHN0YXRpYyB2b2lkCiAgICAgICAgX1NfY29weV9jaGFy
cyhfQ2hhclQqIF9fcCwgX0l0ZXJhdG9yIF9fazEsIF9JdGVyYXRvciBfX2syKQogICAgICAgIHsK
ICAgICAgICAgIGZvciAoOyBfX2sxICE9IF9fazI7ICsrX19rMSwgKytfX3ApCiAgICAgICAgICAg
IHRyYWl0c190eXBlOjphc3NpZ24oKl9fcCwgKl9fazEpOwogICAgICAgIH0KCiAgICAgIHN0YXRp
YyB2b2lkCiAgICAgIF9TX2NvcHlfY2hhcnMoX0NoYXJUKiBfX3AsIGl0ZXJhdG9yIF9fazEsIGl0
ZXJhdG9yIF9fazIpCiAgICAgIHsgX1NfY29weV9jaGFycyhfX3AsIF9fazEuYmFzZSgpLCBfX2sy
LmJhc2UoKSk7IH0KCiAgICAgIHN0YXRpYyB2b2lkCiAgICAgIF9TX2NvcHlfY2hhcnMoX0NoYXJU
KiBfX3AsIGNvbnN0X2l0ZXJhdG9yIF9fazEsIGNvbnN0X2l0ZXJhdG9yIF9fazIpCiAgICAgIHsg
X1NfY29weV9jaGFycyhfX3AsIF9fazEuYmFzZSgpLCBfX2syLmJhc2UoKSk7IH0KCiAgICAgIHN0
YXRpYyB2b2lkCiAgICAgIF9TX2NvcHlfY2hhcnMoX0NoYXJUKiBfX3AsIF9DaGFyVCogX19rMSwg
X0NoYXJUKiBfX2syKQogICAgICB7IHRyYWl0c190eXBlOjpjb3B5KF9fcCwgX19rMSwgX19rMiAt
IF9fazEpOyB9CgogICAgICBzdGF0aWMgdm9pZAogICAgICBfU19jb3B5X2NoYXJzKF9DaGFyVCog
X19wLCBjb25zdCBfQ2hhclQqIF9fazEsIGNvbnN0IF9DaGFyVCogX19rMikKICAgICAgeyB0cmFp
dHNfdHlwZTo6Y29weShfX3AsIF9fazEsIF9fazIgLSBfX2sxKTsgfQoKICAgICAgdm9pZAogICAg
ICBfTV9tdXRhdGUoc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19sZW4xLCBzaXplX3R5cGUg
X19sZW4yKTsKCiAgICAgIHZvaWQKICAgICAgX01fbGVha19oYXJkKCk7CgogICAgICBzdGF0aWMg
X1JlcCYKICAgICAgX1NfZW1wdHlfcmVwKCkKICAgICAgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nh
c3Q8X1JlcCo+KCZfU19lbXB0eV9yZXBfc3RvcmFnZSk7IH0KCiAgICBwdWJsaWM6CgoKCgogICAg
ICBpbmxpbmUKICAgICAgYmFzaWNfc3RyaW5nKCk7CgogICAgICBleHBsaWNpdAogICAgICBiYXNp
Y19zdHJpbmcoY29uc3QgX0FsbG9jJiBfX2EpOwoKCiAgICAgIGJhc2ljX3N0cmluZyhjb25zdCBi
YXNpY19zdHJpbmcmIF9fc3RyKTsKICAgICAgYmFzaWNfc3RyaW5nKGNvbnN0IGJhc2ljX3N0cmlu
ZyYgX19zdHIsIHNpemVfdHlwZSBfX3BvcywKICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZSBf
X24gPSBucG9zKTsKICAgICAgYmFzaWNfc3RyaW5nKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIs
IHNpemVfdHlwZSBfX3BvcywKICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZSBfX24sIGNvbnN0
IF9BbGxvYyYgX19hKTsKCiAgICAgIGJhc2ljX3N0cmluZyhjb25zdCBfQ2hhclQqIF9fcywgc2l6
ZV90eXBlIF9fbiwKICAgICAgICAgICAgICAgICAgIGNvbnN0IF9BbGxvYyYgX19hID0gX0FsbG9j
KCkpOwogICAgICBiYXNpY19zdHJpbmcoY29uc3QgX0NoYXJUKiBfX3MsIGNvbnN0IF9BbGxvYyYg
X19hID0gX0FsbG9jKCkpOwogICAgICBiYXNpY19zdHJpbmcoc2l6ZV90eXBlIF9fbiwgX0NoYXJU
IF9fYywgY29uc3QgX0FsbG9jJiBfX2EgPSBfQWxsb2MoKSk7CgogICAgICB0ZW1wbGF0ZTxjbGFz
cyBfSW5wdXRJdGVyYXRvcj4KICAgICAgICBiYXNpY19zdHJpbmcoX0lucHV0SXRlcmF0b3IgX19i
ZWcsIF9JbnB1dEl0ZXJhdG9yIF9fZW5kLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBfQWxs
b2MmIF9fYSA9IF9BbGxvYygpKTsKCiAgICAgIH5iYXNpY19zdHJpbmcoKQogICAgICB7IF9NX3Jl
cCgpLT5fTV9kaXNwb3NlKHRoaXMtPmdldF9hbGxvY2F0b3IoKSk7IH0KCiAgICAgIGJhc2ljX3N0
cmluZyYKICAgICAgb3BlcmF0b3I9KGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIpIHsgcmV0dXJu
IHRoaXMtPmFzc2lnbihfX3N0cik7IH0KCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgb3BlcmF0
b3I9KGNvbnN0IF9DaGFyVCogX19zKSB7IHJldHVybiB0aGlzLT5hc3NpZ24oX19zKTsgfQoKICAg
ICAgYmFzaWNfc3RyaW5nJgogICAgICBvcGVyYXRvcj0oX0NoYXJUIF9fYykgeyByZXR1cm4gdGhp
cy0+YXNzaWduKDEsIF9fYyk7IH0KCgogICAgICBpdGVyYXRvcgogICAgICBiZWdpbigpCiAgICAg
IHsKICAgICAgICBfTV9sZWFrKCk7CiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKF9NX2RhdGEoKSk7
CiAgICAgIH0KCiAgICAgIGNvbnN0X2l0ZXJhdG9yCiAgICAgIGJlZ2luKCkgY29uc3QKICAgICAg
eyByZXR1cm4gY29uc3RfaXRlcmF0b3IoX01fZGF0YSgpKTsgfQoKICAgICAgaXRlcmF0b3IKICAg
ICAgZW5kKCkKICAgICAgewogICAgICAgICBfTV9sZWFrKCk7CiAgICAgICAgIHJldHVybiBpdGVy
YXRvcihfTV9kYXRhKCkgKyB0aGlzLT5zaXplKCkpOwogICAgICB9CgogICAgICBjb25zdF9pdGVy
YXRvcgogICAgICBlbmQoKSBjb25zdAogICAgICB7IHJldHVybiBjb25zdF9pdGVyYXRvcihfTV9k
YXRhKCkgKyB0aGlzLT5zaXplKCkpOyB9CgogICAgICByZXZlcnNlX2l0ZXJhdG9yCiAgICAgIHJi
ZWdpbigpCiAgICAgIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IodGhpcy0+ZW5kKCkpOyB9Cgog
ICAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yCiAgICAgIHJiZWdpbigpIGNvbnN0CiAgICAgIHsg
cmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IodGhpcy0+ZW5kKCkpOyB9CgogICAgICByZXZl
cnNlX2l0ZXJhdG9yCiAgICAgIHJlbmQoKQogICAgICB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9y
KHRoaXMtPmJlZ2luKCkpOyB9CgogICAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yCiAgICAgIHJl
bmQoKSBjb25zdAogICAgICB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKHRoaXMtPmJl
Z2luKCkpOyB9CgogICAgcHVibGljOgoKICAgICAgc2l6ZV90eXBlCiAgICAgIHNpemUoKSBjb25z
dCB7IHJldHVybiBfTV9yZXAoKS0+X01fbGVuZ3RoOyB9CgogICAgICBzaXplX3R5cGUKICAgICAg
bGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gX01fcmVwKCktPl9NX2xlbmd0aDsgfQoKICAgICAgc2l6
ZV90eXBlCiAgICAgIG1heF9zaXplKCkgY29uc3QgeyByZXR1cm4gX1JlcDo6X1NfbWF4X3NpemU7
IH0KCiAgICAgIHZvaWQKICAgICAgcmVzaXplKHNpemVfdHlwZSBfX24sIF9DaGFyVCBfX2MpOwoK
ICAgICAgdm9pZAogICAgICByZXNpemUoc2l6ZV90eXBlIF9fbikgeyB0aGlzLT5yZXNpemUoX19u
LCBfQ2hhclQoKSk7IH0KCiAgICAgIHNpemVfdHlwZQogICAgICBjYXBhY2l0eSgpIGNvbnN0IHsg
cmV0dXJuIF9NX3JlcCgpLT5fTV9jYXBhY2l0eTsgfQoKICAgICAgdm9pZAogICAgICByZXNlcnZl
KHNpemVfdHlwZSBfX3Jlc19hcmcgPSAwKTsKCiAgICAgIHZvaWQKICAgICAgY2xlYXIoKSB7IF9N
X211dGF0ZSgwLCB0aGlzLT5zaXplKCksIDApOyB9CgogICAgICBib29sCiAgICAgIGVtcHR5KCkg
Y29uc3QgeyByZXR1cm4gdGhpcy0+c2l6ZSgpID09IDA7IH0KCgogICAgICBjb25zdF9yZWZlcmVu
Y2UKICAgICAgb3BlcmF0b3JbXSAoc2l6ZV90eXBlIF9fcG9zKSBjb25zdAogICAgICB7IHJldHVy
biBfTV9kYXRhKClbX19wb3NdOyB9CgogICAgICByZWZlcmVuY2UKICAgICAgb3BlcmF0b3JbXShz
aXplX3R5cGUgX19wb3MpCiAgICAgIHsKICAgICAgICBfTV9sZWFrKCk7CiAgICAgICAgcmV0dXJu
IF9NX2RhdGEoKVtfX3Bvc107CiAgICAgIH0KCiAgICAgIGNvbnN0X3JlZmVyZW5jZQogICAgICBh
dChzaXplX3R5cGUgX19uKSBjb25zdAogICAgICB7CiAgICAgICAgaWYgKF9fbiA+PSB0aGlzLT5z
aXplKCkpCiAgICAgICAgICBfX3Rocm93X291dF9vZl9yYW5nZSgiYmFzaWNfc3RyaW5nOjphdCIp
OwogICAgICAgIHJldHVybiBfTV9kYXRhKClbX19uXTsKICAgICAgfQoKICAgICAgcmVmZXJlbmNl
CiAgICAgIGF0KHNpemVfdHlwZSBfX24pCiAgICAgIHsKICAgICAgICBpZiAoX19uID49IHNpemUo
KSkKICAgICAgICAgIF9fdGhyb3dfb3V0X29mX3JhbmdlKCJiYXNpY19zdHJpbmc6OmF0Iik7CiAg
ICAgICAgX01fbGVhaygpOwogICAgICAgIHJldHVybiBfTV9kYXRhKClbX19uXTsKICAgICAgfQoK
CiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgb3BlcmF0b3IrPShjb25zdCBiYXNpY19zdHJpbmcm
IF9fc3RyKSB7IHJldHVybiB0aGlzLT5hcHBlbmQoX19zdHIpOyB9CgogICAgICBiYXNpY19zdHJp
bmcmCiAgICAgIG9wZXJhdG9yKz0oY29uc3QgX0NoYXJUKiBfX3MpIHsgcmV0dXJuIHRoaXMtPmFw
cGVuZChfX3MpOyB9CgogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIG9wZXJhdG9yKz0oX0NoYXJU
IF9fYykgeyByZXR1cm4gdGhpcy0+YXBwZW5kKHNpemVfdHlwZSgxKSwgX19jKTsgfQoKICAgICAg
YmFzaWNfc3RyaW5nJgogICAgICBhcHBlbmQoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0cik7Cgog
ICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGFwcGVuZChjb25zdCBiYXNpY19zdHJpbmcmIF9fc3Ry
LCBzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24pOwoKICAgICAgYmFzaWNfc3RyaW5nJgog
ICAgICBhcHBlbmQoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX24pOwoKICAgICAgYmFz
aWNfc3RyaW5nJgogICAgICBhcHBlbmQoY29uc3QgX0NoYXJUKiBfX3MpCiAgICAgIHsgcmV0dXJu
IHRoaXMtPmFwcGVuZChfX3MsIHRyYWl0c190eXBlOjpsZW5ndGgoX19zKSk7IH0KCiAgICAgIGJh
c2ljX3N0cmluZyYKICAgICAgYXBwZW5kKHNpemVfdHlwZSBfX24sIF9DaGFyVCBfX2MpOwoKICAg
ICAgdGVtcGxhdGU8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiAgICAgICAgYmFzaWNfc3RyaW5nJgog
ICAgICAgIGFwcGVuZChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xh
c3QpCiAgICAgICAgeyByZXR1cm4gdGhpcy0+cmVwbGFjZShfTV9pZW5kKCksIF9NX2llbmQoKSwg
X19maXJzdCwgX19sYXN0KTsgfQoKICAgICAgdm9pZAogICAgICBwdXNoX2JhY2soX0NoYXJUIF9f
YykKICAgICAgeyB0aGlzLT5yZXBsYWNlKF9NX2llbmQoKSwgX01faWVuZCgpLCAxLCBfX2MpOyB9
CgogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGFzc2lnbihjb25zdCBiYXNpY19zdHJpbmcmIF9f
c3RyKTsKCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgYXNzaWduKGNvbnN0IGJhc2ljX3N0cmlu
ZyYgX19zdHIsIHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbikKICAgICAgewogICAgICAg
IGNvbnN0IHNpemVfdHlwZSBfX3N0cnNpemUgPSBfX3N0ci5zaXplKCk7CiAgICAgICAgaWYgKF9f
cG9zID4gX19zdHJzaXplKQogICAgICAgICAgX190aHJvd19vdXRfb2ZfcmFuZ2UoImJhc2ljX3N0
cmluZzo6YXNzaWduIik7CiAgICAgICAgY29uc3QgYm9vbCBfX3Rlc3RuID0gX19uIDwgX19zdHJz
aXplIC0gX19wb3M7CiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fbmV3c2l6ZSA9IF9fdGVzdG4g
PyBfX24gOiBfX3N0cnNpemUgLSBfX3BvczsKICAgICAgICByZXR1cm4gdGhpcy0+YXNzaWduKF9f
c3RyLl9NX2RhdGEoKSArIF9fcG9zLCBfX25ld3NpemUpOwogICAgICB9CgogICAgICBiYXNpY19z
dHJpbmcmCiAgICAgIGFzc2lnbihjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fbikKICAg
ICAgewogICAgICAgIGlmIChfX24gPiB0aGlzLT5tYXhfc2l6ZSgpKQogICAgICAgICAgX190aHJv
d19sZW5ndGhfZXJyb3IoImJhc2ljX3N0cmluZzo6YXNzaWduIik7CiAgICAgICAgaWYgKF9NX3Jl
cCgpLT5fTV9pc19zaGFyZWQoKSB8fCBsZXNzPGNvbnN0IF9DaGFyVCo+KCkoX19zLCBfTV9kYXRh
KCkpCiAgICAgICAgICAgIHx8IGxlc3M8Y29uc3QgX0NoYXJUKj4oKShfTV9kYXRhKCkgKyB0aGlz
LT5zaXplKCksIF9fcykpCiAgICAgICAgICByZXR1cm4gX01fcmVwbGFjZV9zYWZlKF9NX2liZWdp
bigpLCBfTV9pZW5kKCksIF9fcywgX19zICsgX19uKTsKICAgICAgICBlbHNlCiAgICAgICAgICB7
CgogICAgICAgICAgICBjb25zdCBzaXplX3R5cGUgX19wb3MgPSBfX3MgLSBfTV9kYXRhKCk7CiAg
ICAgICAgICAgIGlmIChfX3BvcyA+PSBfX24pCiAgICAgICAgICAgICAgdHJhaXRzX3R5cGU6OmNv
cHkoX01fZGF0YSgpLCBfX3MsIF9fbik7CiAgICAgICAgICAgIGVsc2UgaWYgKF9fcG9zKQogICAg
ICAgICAgICAgIHRyYWl0c190eXBlOjptb3ZlKF9NX2RhdGEoKSwgX19zLCBfX24pOwogICAgICAg
ICAgICBfTV9yZXAoKS0+X01fbGVuZ3RoID0gX19uOwogICAgICAgICAgICBfTV9kYXRhKClbX19u
XSA9IF9SZXA6Ol9TX3Rlcm1pbmFsOwogICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAg
ICB9CiAgICAgIH0KCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgYXNzaWduKGNvbnN0IF9DaGFy
VCogX19zKQogICAgICB7IHJldHVybiB0aGlzLT5hc3NpZ24oX19zLCB0cmFpdHNfdHlwZTo6bGVu
Z3RoKF9fcykpOyB9CgogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGFzc2lnbihzaXplX3R5cGUg
X19uLCBfQ2hhclQgX19jKQogICAgICB7IHJldHVybiB0aGlzLT5yZXBsYWNlKF9NX2liZWdpbigp
LCBfTV9pZW5kKCksIF9fbiwgX19jKTsgfQoKICAgICAgdGVtcGxhdGU8Y2xhc3MgX0lucHV0SXRl
cmF0b3I+CiAgICAgICAgYmFzaWNfc3RyaW5nJgogICAgICAgIGFzc2lnbihfSW5wdXRJdGVyYXRv
ciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpCiAgICAgICAgeyByZXR1cm4gdGhpcy0+
cmVwbGFjZShfTV9pYmVnaW4oKSwgX01faWVuZCgpLCBfX2ZpcnN0LCBfX2xhc3QpOyB9CgogICAg
ICB2b2lkCiAgICAgIGluc2VydChpdGVyYXRvciBfX3AsIHNpemVfdHlwZSBfX24sIF9DaGFyVCBf
X2MpCiAgICAgIHsgdGhpcy0+cmVwbGFjZShfX3AsIF9fcCwgX19uLCBfX2MpOyB9CgogICAgICB0
ZW1wbGF0ZTxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICAgICAgICB2b2lkIGluc2VydChpdGVyYXRv
ciBfX3AsIF9JbnB1dEl0ZXJhdG9yIF9fYmVnLCBfSW5wdXRJdGVyYXRvciBfX2VuZCkKICAgICAg
ICB7IHRoaXMtPnJlcGxhY2UoX19wLCBfX3AsIF9fYmVnLCBfX2VuZCk7IH0KCiAgICAgIGJhc2lj
X3N0cmluZyYKICAgICAgaW5zZXJ0KHNpemVfdHlwZSBfX3BvczEsIGNvbnN0IGJhc2ljX3N0cmlu
ZyYgX19zdHIpCiAgICAgIHsgcmV0dXJuIHRoaXMtPmluc2VydChfX3BvczEsIF9fc3RyLCAwLCBf
X3N0ci5zaXplKCkpOyB9CgogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGluc2VydChzaXplX3R5
cGUgX19wb3MxLCBjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyLAogICAgICAgICAgICAgc2l6ZV90
eXBlIF9fcG9zMiwgc2l6ZV90eXBlIF9fbikKICAgICAgewogICAgICAgIGNvbnN0IHNpemVfdHlw
ZSBfX3N0cnNpemUgPSBfX3N0ci5zaXplKCk7CiAgICAgICAgaWYgKF9fcG9zMiA+IF9fc3Ryc2l6
ZSkKICAgICAgICAgIF9fdGhyb3dfb3V0X29mX3JhbmdlKCJiYXNpY19zdHJpbmc6Omluc2VydCIp
OwogICAgICAgIGNvbnN0IGJvb2wgX190ZXN0biA9IF9fbiA8IF9fc3Ryc2l6ZSAtIF9fcG9zMjsK
ICAgICAgICBjb25zdCBzaXplX3R5cGUgX19uZXdzaXplID0gX190ZXN0biA/IF9fbiA6IF9fc3Ry
c2l6ZSAtIF9fcG9zMjsKICAgICAgICByZXR1cm4gdGhpcy0+aW5zZXJ0KF9fcG9zMSwgX19zdHIu
X01fZGF0YSgpICsgX19wb3MyLCBfX25ld3NpemUpOwogICAgICB9CgogICAgICBiYXNpY19zdHJp
bmcmCiAgICAgIGluc2VydChzaXplX3R5cGUgX19wb3MsIGNvbnN0IF9DaGFyVCogX19zLCBzaXpl
X3R5cGUgX19uKQogICAgICB7CiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fc2l6ZSA9IHRoaXMt
PnNpemUoKTsKICAgICAgICBpZiAoX19wb3MgPiBfX3NpemUpCiAgICAgICAgICBfX3Rocm93X291
dF9vZl9yYW5nZSgiYmFzaWNfc3RyaW5nOjppbnNlcnQiKTsKICAgICAgICBpZiAoX19zaXplID4g
dGhpcy0+bWF4X3NpemUoKSAtIF9fbikKICAgICAgICAgIF9fdGhyb3dfbGVuZ3RoX2Vycm9yKCJi
YXNpY19zdHJpbmc6Omluc2VydCIpOwogICAgICAgIGlmIChfTV9yZXAoKS0+X01faXNfc2hhcmVk
KCkgfHwgbGVzczxjb25zdCBfQ2hhclQqPigpKF9fcywgX01fZGF0YSgpKQogICAgICAgICAgICB8
fCBsZXNzPGNvbnN0IF9DaGFyVCo+KCkoX01fZGF0YSgpICsgX19zaXplLCBfX3MpKQogICAgICAg
ICAgcmV0dXJuIF9NX3JlcGxhY2Vfc2FmZShfTV9pYmVnaW4oKSArIF9fcG9zLCBfTV9pYmVnaW4o
KSArIF9fcG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3MsIF9fcyArIF9f
bik7CiAgICAgICAgZWxzZQogICAgICAgICAgewoKCgogICAgICAgICAgICBjb25zdCBzaXplX3R5
cGUgX19vZmYgPSBfX3MgLSBfTV9kYXRhKCk7CiAgICAgICAgICAgIF9NX211dGF0ZShfX3Bvcywg
MCwgX19uKTsKICAgICAgICAgICAgX19zID0gX01fZGF0YSgpICsgX19vZmY7CiAgICAgICAgICAg
IF9DaGFyVCogX19wID0gX01fZGF0YSgpICsgX19wb3M7CiAgICAgICAgICAgIGlmIChfX3MgKyBf
X24gPD0gX19wKQogICAgICAgICAgICAgIHRyYWl0c190eXBlOjpjb3B5KF9fcCwgX19zLCBfX24p
OwogICAgICAgICAgICBlbHNlIGlmIChfX3MgPj0gX19wKQogICAgICAgICAgICAgIHRyYWl0c190
eXBlOjpjb3B5KF9fcCwgX19zICsgX19uLCBfX24pOwogICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU6OmNvcHkoX19wLCBfX3MsIF9fcCAt
IF9fcyk7CiAgICAgICAgICAgICAgICB0cmFpdHNfdHlwZTo6Y29weShfX3AgKyAoX19wIC0gX19z
KSwgX19wICsgX19uLCBfX24gLSAoX19wIC0gX19zKSk7CiAgICAgICAgICAgICAgfQogICAgICAg
ICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgICB9CiAgICAgICB9CgogICAgICBiYXNpY19zdHJp
bmcmCiAgICAgIGluc2VydChzaXplX3R5cGUgX19wb3MsIGNvbnN0IF9DaGFyVCogX19zKQogICAg
ICB7IHJldHVybiB0aGlzLT5pbnNlcnQoX19wb3MsIF9fcywgdHJhaXRzX3R5cGU6Omxlbmd0aChf
X3MpKTsgfQoKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBpbnNlcnQoc2l6ZV90eXBlIF9fcG9z
LCBzaXplX3R5cGUgX19uLCBfQ2hhclQgX19jKQogICAgICB7CiAgICAgICAgdGhpcy0+aW5zZXJ0
KF9NX2NoZWNrKF9fcG9zKSwgX19uLCBfX2MpOwogICAgICAgIHJldHVybiAqdGhpczsKICAgICAg
fQoKICAgICAgaXRlcmF0b3IKICAgICAgaW5zZXJ0KGl0ZXJhdG9yIF9fcCwgX0NoYXJUIF9fYyA9
IF9DaGFyVCgpKQogICAgICB7CiAgICAgICAgc2l6ZV90eXBlIF9fcG9zID0gX19wIC0gX01faWJl
Z2luKCk7CiAgICAgICAgdGhpcy0+aW5zZXJ0KF9NX2NoZWNrKF9fcG9zKSwgc2l6ZV90eXBlKDEp
LCBfX2MpOwogICAgICAgIF9NX3JlcCgpLT5fTV9zZXRfbGVha2VkKCk7CiAgICAgICAgcmV0dXJu
IHRoaXMtPl9NX2liZWdpbigpICsgX19wb3M7CiAgICAgIH0KCiAgICAgIGJhc2ljX3N0cmluZyYK
ICAgICAgZXJhc2Uoc2l6ZV90eXBlIF9fcG9zID0gMCwgc2l6ZV90eXBlIF9fbiA9IG5wb3MpCiAg
ICAgIHsKICAgICAgICByZXR1cm4gdGhpcy0+cmVwbGFjZShfTV9jaGVjayhfX3BvcyksIF9NX2Zv
bGQoX19wb3MsIF9fbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01fZGF0YSgpLCBf
TV9kYXRhKCkpOwogICAgICB9CgogICAgICBpdGVyYXRvcgogICAgICBlcmFzZShpdGVyYXRvciBf
X3Bvc2l0aW9uKQogICAgICB7CiAgICAgICAgc2l6ZV90eXBlIF9faSA9IF9fcG9zaXRpb24gLSBf
TV9pYmVnaW4oKTsKICAgICAgICB0aGlzLT5yZXBsYWNlKF9fcG9zaXRpb24sIF9fcG9zaXRpb24g
KyAxLCBfTV9kYXRhKCksIF9NX2RhdGEoKSk7CiAgICAgICAgX01fcmVwKCktPl9NX3NldF9sZWFr
ZWQoKTsKICAgICAgICByZXR1cm4gX01faWJlZ2luKCkgKyBfX2k7CiAgICAgIH0KCiAgICAgIGl0
ZXJhdG9yCiAgICAgIGVyYXNlKGl0ZXJhdG9yIF9fZmlyc3QsIGl0ZXJhdG9yIF9fbGFzdCkKICAg
ICAgewogICAgICAgIHNpemVfdHlwZSBfX2kgPSBfX2ZpcnN0IC0gX01faWJlZ2luKCk7CiAgICAg
ICAgdGhpcy0+cmVwbGFjZShfX2ZpcnN0LCBfX2xhc3QsIF9NX2RhdGEoKSwgX01fZGF0YSgpKTsK
ICAgICAgICBfTV9yZXAoKS0+X01fc2V0X2xlYWtlZCgpOwogICAgICAgcmV0dXJuIF9NX2liZWdp
bigpICsgX19pOwogICAgICB9CgogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIHJlcGxhY2Uoc2l6
ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uLCBjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyKQog
ICAgICB7IHJldHVybiB0aGlzLT5yZXBsYWNlKF9fcG9zLCBfX24sIF9fc3RyLl9NX2RhdGEoKSwg
X19zdHIuc2l6ZSgpKTsgfQoKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICByZXBsYWNlKHNpemVf
dHlwZSBfX3BvczEsIHNpemVfdHlwZSBfX24xLCBjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyLAog
ICAgICAgICAgICAgIHNpemVfdHlwZSBfX3BvczIsIHNpemVfdHlwZSBfX24yKTsKCiAgICAgIGJh
c2ljX3N0cmluZyYKICAgICAgcmVwbGFjZShzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24x
LCBjb25zdCBfQ2hhclQqIF9fcywKICAgICAgICAgICAgICBzaXplX3R5cGUgX19uMikKICAgICAg
ewogICAgICAgIGNvbnN0IHNpemVfdHlwZSBfX3NpemUgPSB0aGlzLT5zaXplKCk7CiAgICAgICAg
aWYgKF9fcG9zID4gX19zaXplKQogICAgICAgICAgX190aHJvd19vdXRfb2ZfcmFuZ2UoImJhc2lj
X3N0cmluZzo6cmVwbGFjZSIpOwogICAgICAgIGNvbnN0IGJvb2wgX190ZXN0bjEgPSBfX24xIDwg
X19zaXplIC0gX19wb3M7CiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fZm9sZG4xID0gX190ZXN0
bjEgPyBfX24xIDogX19zaXplIC0gX19wb3M7CiAgICAgICAgaWYgKF9fc2l6ZSAtIF9fZm9sZG4x
ID4gdGhpcy0+bWF4X3NpemUoKSAtIF9fbjIpCiAgICAgICAgICBfX3Rocm93X2xlbmd0aF9lcnJv
cigiYmFzaWNfc3RyaW5nOjpyZXBsYWNlIik7CiAgICAgICAgaWYgKF9NX3JlcCgpLT5fTV9pc19z
aGFyZWQoKSB8fCBsZXNzPGNvbnN0IF9DaGFyVCo+KCkoX19zLCBfTV9kYXRhKCkpCiAgICAgICAg
ICAgIHx8IGxlc3M8Y29uc3QgX0NoYXJUKj4oKShfTV9kYXRhKCkgKyBfX3NpemUsIF9fcykpCiAg
ICAgICAgICByZXR1cm4gX01fcmVwbGFjZV9zYWZlKF9NX2liZWdpbigpICsgX19wb3MsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NX2liZWdpbigpICsgX19wb3MgKyBfX2ZvbGRu
MSwgX19zLCBfX3MgKyBfX24yKTsKCiAgICAgICAgZWxzZSByZXR1cm4KICAgICAgICAgICAgICAg
X01fcmVwbGFjZShfTV9pYmVnaW4oKSArIF9fcG9zLCBfTV9pYmVnaW4oKSArIF9fcG9zICsgX19m
b2xkbjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX19zLCBfX3MgKyBfX24yLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxjb25zdCBfQ2hhclQq
Pjo6aXRlcmF0b3JfY2F0ZWdvcnkoKSk7CiAgICAgIH0KCiAgICAgIGJhc2ljX3N0cmluZyYKICAg
ICAgcmVwbGFjZShzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24xLCBjb25zdCBfQ2hhclQq
IF9fcykKICAgICAgeyByZXR1cm4gdGhpcy0+cmVwbGFjZShfX3BvcywgX19uMSwgX19zLCB0cmFp
dHNfdHlwZTo6bGVuZ3RoKF9fcykpOyB9CgogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIHJlcGxh
Y2Uoc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uMSwgc2l6ZV90eXBlIF9fbjIsIF9DaGFy
VCBfX2MpCiAgICAgIHsgcmV0dXJuIHRoaXMtPnJlcGxhY2UoX01fY2hlY2soX19wb3MpLCBfTV9m
b2xkKF9fcG9zLCBfX24xKSwgX19uMiwgX19jKTsgfQoKICAgICAgYmFzaWNfc3RyaW5nJgogICAg
ICByZXBsYWNlKGl0ZXJhdG9yIF9faTEsIGl0ZXJhdG9yIF9faTIsIGNvbnN0IGJhc2ljX3N0cmlu
ZyYgX19zdHIpCiAgICAgIHsgcmV0dXJuIHRoaXMtPnJlcGxhY2UoX19pMSwgX19pMiwgX19zdHIu
X01fZGF0YSgpLCBfX3N0ci5zaXplKCkpOyB9CgogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIHJl
cGxhY2UoaXRlcmF0b3IgX19pMSwgaXRlcmF0b3IgX19pMiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX24pCiAgICAgIHsgcmV0dXJuIHRo
aXMtPnJlcGxhY2UoX19pMSAtIF9NX2liZWdpbigpLCBfX2kyIC0gX19pMSwgX19zLCBfX24pOyB9
CgogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIHJlcGxhY2UoaXRlcmF0b3IgX19pMSwgaXRlcmF0
b3IgX19pMiwgY29uc3QgX0NoYXJUKiBfX3MpCiAgICAgIHsgcmV0dXJuIHRoaXMtPnJlcGxhY2Uo
X19pMSwgX19pMiwgX19zLCB0cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcykpOyB9CgogICAgICBiYXNp
Y19zdHJpbmcmCiAgICAgIHJlcGxhY2UoaXRlcmF0b3IgX19pMSwgaXRlcmF0b3IgX19pMiwgc2l6
ZV90eXBlIF9fbiwgX0NoYXJUIF9fYyk7CgogICAgICB0ZW1wbGF0ZTxjbGFzcyBfSW5wdXRJdGVy
YXRvcj4KICAgICAgICBiYXNpY19zdHJpbmcmCiAgICAgICAgcmVwbGFjZShpdGVyYXRvciBfX2kx
LCBpdGVyYXRvciBfX2kyLAogICAgICAgICAgICAgICAgX0lucHV0SXRlcmF0b3IgX19rMSwgX0lu
cHV0SXRlcmF0b3IgX19rMikKICAgICAgICB7IHJldHVybiBfTV9yZXBsYWNlKF9faTEsIF9faTIs
IF9fazEsIF9fazIsCiAgICAgICAgICAgICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0
SXRlcmF0b3I+OjppdGVyYXRvcl9jYXRlZ29yeSgpKTsgfQoKCgogICAgICBiYXNpY19zdHJpbmcm
CiAgICAgIHJlcGxhY2UoaXRlcmF0b3IgX19pMSwgaXRlcmF0b3IgX19pMiwgX0NoYXJUKiBfX2sx
LCBfQ2hhclQqIF9fazIpCiAgICAgICAgeyByZXR1cm4gdGhpcy0+cmVwbGFjZShfX2kxIC0gX01f
aWJlZ2luKCksIF9faTIgLSBfX2kxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19r
MSwgX19rMiAtIF9fazEpOyB9CgogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIHJlcGxhY2UoaXRl
cmF0b3IgX19pMSwgaXRlcmF0b3IgX19pMiwgY29uc3QgX0NoYXJUKiBfX2sxLCBjb25zdCBfQ2hh
clQqIF9fazIpCiAgICAgICAgeyByZXR1cm4gdGhpcy0+cmVwbGFjZShfX2kxIC0gX01faWJlZ2lu
KCksIF9faTIgLSBfX2kxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19rMSwgX19r
MiAtIF9fazEpOyB9CgogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIHJlcGxhY2UoaXRlcmF0b3Ig
X19pMSwgaXRlcmF0b3IgX19pMiwgaXRlcmF0b3IgX19rMSwgaXRlcmF0b3IgX19rMikKICAgICAg
ICB7IHJldHVybiB0aGlzLT5yZXBsYWNlKF9faTEgLSBfTV9pYmVnaW4oKSwgX19pMiAtIF9faTEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2sxLmJhc2UoKSwgX19rMiAtIF9fazEp
OwogICAgICAgIH0KCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgcmVwbGFjZShpdGVyYXRvciBf
X2kxLCBpdGVyYXRvciBfX2kyLCBjb25zdF9pdGVyYXRvciBfX2sxLCBjb25zdF9pdGVyYXRvciBf
X2syKQogICAgICAgIHsgcmV0dXJuIHRoaXMtPnJlcGxhY2UoX19pMSAtIF9NX2liZWdpbigpLCBf
X2kyIC0gX19pMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fazEuYmFzZSgpLCBf
X2syIC0gX19rMSk7CiAgICAgICAgfQoKICAgIHByaXZhdGU6CiAgICAgIHRlbXBsYXRlPGNsYXNz
IF9JbnB1dEl0ZXJhdG9yPgogICAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgICBfTV9yZXBsYWNl
KGl0ZXJhdG9yIF9faTEsIGl0ZXJhdG9yIF9faTIsIF9JbnB1dEl0ZXJhdG9yIF9fazEsCiAgICAg
ICAgICAgICAgICAgICBfSW5wdXRJdGVyYXRvciBfX2syLCBpbnB1dF9pdGVyYXRvcl90YWcpOwoK
ICAgICAgdGVtcGxhdGU8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvcj4KICAgICAgICBiYXNpY19zdHJp
bmcmCiAgICAgICAgX01fcmVwbGFjZV9zYWZlKGl0ZXJhdG9yIF9faTEsIGl0ZXJhdG9yIF9faTIs
IF9Gb3J3YXJkSXRlcmF0b3IgX19rMSwKICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlcmF0
b3IgX19rMik7CgoKCiAgICAgIHRlbXBsYXRlPGNsYXNzIF9Jbkl0ZXI+CiAgICAgICAgc3RhdGlj
IF9DaGFyVCoKICAgICAgICBfU19jb25zdHJ1Y3RfYXV4KF9Jbkl0ZXIgX19iZWcsIF9Jbkl0ZXIg
X19lbmQsIGNvbnN0IF9BbGxvYyYgX19hLAogICAgICAgICAgICAgICAgICAgICAgICAgX19mYWxz
ZV90eXBlKQogICAgICAgIHsKICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJh
aXRzPF9Jbkl0ZXI+OjppdGVyYXRvcl9jYXRlZ29yeSBfVGFnOwogICAgICAgICAgcmV0dXJuIF9T
X2NvbnN0cnVjdChfX2JlZywgX19lbmQsIF9fYSwgX1RhZygpKTsKICAgICAgICB9CgogICAgICB0
ZW1wbGF0ZTxjbGFzcyBfSW5JdGVyPgogICAgICAgIHN0YXRpYyBfQ2hhclQqCiAgICAgICAgX1Nf
Y29uc3RydWN0X2F1eChfSW5JdGVyIF9fYmVnLCBfSW5JdGVyIF9fZW5kLCBjb25zdCBfQWxsb2Mm
IF9fYSwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fdHJ1ZV90eXBlKQogICAgICAgIHsKICAg
ICAgICAgIHJldHVybiBfU19jb25zdHJ1Y3Qoc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfX2JlZyks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KF9f
ZW5kKSwgX19hKTsKICAgICAgICB9CgogICAgICB0ZW1wbGF0ZTxjbGFzcyBfSW5JdGVyPgogICAg
ICAgIHN0YXRpYyBfQ2hhclQqCiAgICAgICAgX1NfY29uc3RydWN0KF9Jbkl0ZXIgX19iZWcsIF9J
bkl0ZXIgX19lbmQsIGNvbnN0IF9BbGxvYyYgX19hKQogICAgICAgIHsKICAgICAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgX0lzX2ludGVnZXI8X0luSXRlcj46Ol9JbnRlZ3JhbCBfSW50ZWdyYWw7CiAg
ICAgICAgICByZXR1cm4gX1NfY29uc3RydWN0X2F1eChfX2JlZywgX19lbmQsIF9fYSwgX0ludGVn
cmFsKCkpOwogICAgICAgIH0KCgogICAgICB0ZW1wbGF0ZTxjbGFzcyBfSW5JdGVyPgogICAgICAg
IHN0YXRpYyBfQ2hhclQqCiAgICAgICAgIF9TX2NvbnN0cnVjdChfSW5JdGVyIF9fYmVnLCBfSW5J
dGVyIF9fZW5kLCBjb25zdCBfQWxsb2MmIF9fYSwKICAgICAgICAgICAgICAgICAgICAgIGlucHV0
X2l0ZXJhdG9yX3RhZyk7CgoKCiAgICAgIHRlbXBsYXRlPGNsYXNzIF9Gd2RJdGVyPgogICAgICAg
IHN0YXRpYyBfQ2hhclQqCiAgICAgICAgX1NfY29uc3RydWN0KF9Gd2RJdGVyIF9fYmVnLCBfRndk
SXRlciBfX2VuZCwgY29uc3QgX0FsbG9jJiBfX2EsCiAgICAgICAgICAgICAgICAgICAgIGZvcndh
cmRfaXRlcmF0b3JfdGFnKTsKCiAgICAgIHN0YXRpYyBfQ2hhclQqCiAgICAgIF9TX2NvbnN0cnVj
dChzaXplX3R5cGUgX19yZXEsIF9DaGFyVCBfX2MsIGNvbnN0IF9BbGxvYyYgX19hKTsKCiAgICBw
dWJsaWM6CgogICAgICBzaXplX3R5cGUKICAgICAgY29weShfQ2hhclQqIF9fcywgc2l6ZV90eXBl
IF9fbiwgc2l6ZV90eXBlIF9fcG9zID0gMCkgY29uc3Q7CgogICAgICB2b2lkCiAgICAgIHN3YXAo
YmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19zKTsKCgogICAgICBjb25z
dCBfQ2hhclQqCiAgICAgIGNfc3RyKCkgY29uc3QKICAgICAgewoKICAgICAgICBzaXplX3R5cGUg
X19uID0gdGhpcy0+c2l6ZSgpOwogICAgICAgIHRyYWl0c190eXBlOjphc3NpZ24oX01fZGF0YSgp
W19fbl0sIF9SZXA6Ol9TX3Rlcm1pbmFsKTsKICAgICAgICByZXR1cm4gX01fZGF0YSgpOwogICAg
ICB9CgogICAgICBjb25zdCBfQ2hhclQqCiAgICAgIGRhdGEoKSBjb25zdCB7IHJldHVybiBfTV9k
YXRhKCk7IH0KCiAgICAgIGFsbG9jYXRvcl90eXBlCiAgICAgIGdldF9hbGxvY2F0b3IoKSBjb25z
dCB7IHJldHVybiBfTV9kYXRhcGx1czsgfQoKICAgICAgc2l6ZV90eXBlCiAgICAgIGZpbmQoY29u
c3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbikgY29uc3Q7Cgog
ICAgICBzaXplX3R5cGUKICAgICAgZmluZChjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyLCBzaXpl
X3R5cGUgX19wb3MgPSAwKSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5maW5kKF9fc3RyLmRh
dGEoKSwgX19wb3MsIF9fc3RyLnNpemUoKSk7IH0KCiAgICAgIHNpemVfdHlwZQogICAgICBmaW5k
KGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19wb3MgPSAwKSBjb25zdAogICAgICB7IHJl
dHVybiB0aGlzLT5maW5kKF9fcywgX19wb3MsIHRyYWl0c190eXBlOjpsZW5ndGgoX19zKSk7IH0K
CiAgICAgIHNpemVfdHlwZQogICAgICBmaW5kKF9DaGFyVCBfX2MsIHNpemVfdHlwZSBfX3BvcyA9
IDApIGNvbnN0OwoKICAgICAgc2l6ZV90eXBlCiAgICAgIHJmaW5kKGNvbnN0IGJhc2ljX3N0cmlu
ZyYgX19zdHIsIHNpemVfdHlwZSBfX3BvcyA9IG5wb3MpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRo
aXMtPnJmaW5kKF9fc3RyLmRhdGEoKSwgX19wb3MsIF9fc3RyLnNpemUoKSk7IH0KCiAgICAgIHNp
emVfdHlwZQogICAgICByZmluZChjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fcG9zLCBz
aXplX3R5cGUgX19uKSBjb25zdDsKCiAgICAgIHNpemVfdHlwZQogICAgICByZmluZChjb25zdCBf
Q2hhclQqIF9fcywgc2l6ZV90eXBlIF9fcG9zID0gbnBvcykgY29uc3QKICAgICAgeyByZXR1cm4g
dGhpcy0+cmZpbmQoX19zLCBfX3BvcywgdHJhaXRzX3R5cGU6Omxlbmd0aChfX3MpKTsgfQoKICAg
ICAgc2l6ZV90eXBlCiAgICAgIHJmaW5kKF9DaGFyVCBfX2MsIHNpemVfdHlwZSBfX3BvcyA9IG5w
b3MpIGNvbnN0OwoKICAgICAgc2l6ZV90eXBlCiAgICAgIGZpbmRfZmlyc3Rfb2YoY29uc3QgYmFz
aWNfc3RyaW5nJiBfX3N0ciwgc2l6ZV90eXBlIF9fcG9zID0gMCkgY29uc3QKICAgICAgeyByZXR1
cm4gdGhpcy0+ZmluZF9maXJzdF9vZihfX3N0ci5kYXRhKCksIF9fcG9zLCBfX3N0ci5zaXplKCkp
OyB9CgogICAgICBzaXplX3R5cGUKICAgICAgZmluZF9maXJzdF9vZihjb25zdCBfQ2hhclQqIF9f
cywgc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uKSBjb25zdDsKCiAgICAgIHNpemVfdHlw
ZQogICAgICBmaW5kX2ZpcnN0X29mKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19wb3Mg
PSAwKSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5maW5kX2ZpcnN0X29mKF9fcywgX19wb3Ms
IHRyYWl0c190eXBlOjpsZW5ndGgoX19zKSk7IH0KCiAgICAgIHNpemVfdHlwZQogICAgICBmaW5k
X2ZpcnN0X29mKF9DaGFyVCBfX2MsIHNpemVfdHlwZSBfX3BvcyA9IDApIGNvbnN0CiAgICAgIHsg
cmV0dXJuIHRoaXMtPmZpbmQoX19jLCBfX3Bvcyk7IH0KCiAgICAgIHNpemVfdHlwZQogICAgICBm
aW5kX2xhc3Rfb2YoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwgc2l6ZV90eXBlIF9fcG9zID0g
bnBvcykgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZmluZF9sYXN0X29mKF9fc3RyLmRhdGEo
KSwgX19wb3MsIF9fc3RyLnNpemUoKSk7IH0KCiAgICAgIHNpemVfdHlwZQogICAgICBmaW5kX2xh
c3Rfb2YoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbikg
Y29uc3Q7CgogICAgICBzaXplX3R5cGUKICAgICAgZmluZF9sYXN0X29mKGNvbnN0IF9DaGFyVCog
X19zLCBzaXplX3R5cGUgX19wb3MgPSBucG9zKSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5m
aW5kX2xhc3Rfb2YoX19zLCBfX3BvcywgdHJhaXRzX3R5cGU6Omxlbmd0aChfX3MpKTsgfQoKICAg
ICAgc2l6ZV90eXBlCiAgICAgIGZpbmRfbGFzdF9vZihfQ2hhclQgX19jLCBzaXplX3R5cGUgX19w
b3MgPSBucG9zKSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5yZmluZChfX2MsIF9fcG9zKTsg
fQoKICAgICAgc2l6ZV90eXBlCiAgICAgIGZpbmRfZmlyc3Rfbm90X29mKGNvbnN0IGJhc2ljX3N0
cmluZyYgX19zdHIsIHNpemVfdHlwZSBfX3BvcyA9IDApIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRo
aXMtPmZpbmRfZmlyc3Rfbm90X29mKF9fc3RyLmRhdGEoKSwgX19wb3MsIF9fc3RyLnNpemUoKSk7
IH0KCiAgICAgIHNpemVfdHlwZQogICAgICBmaW5kX2ZpcnN0X25vdF9vZihjb25zdCBfQ2hhclQq
IF9fcywgc2l6ZV90eXBlIF9fcG9zLAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGUg
X19uKSBjb25zdDsKCiAgICAgIHNpemVfdHlwZQogICAgICBmaW5kX2ZpcnN0X25vdF9vZihjb25z
dCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fcG9zID0gMCkgY29uc3QKICAgICAgeyByZXR1cm4g
dGhpcy0+ZmluZF9maXJzdF9ub3Rfb2YoX19zLCBfX3BvcywgdHJhaXRzX3R5cGU6Omxlbmd0aChf
X3MpKTsgfQoKICAgICAgc2l6ZV90eXBlCiAgICAgIGZpbmRfZmlyc3Rfbm90X29mKF9DaGFyVCBf
X2MsIHNpemVfdHlwZSBfX3BvcyA9IDApIGNvbnN0OwoKICAgICAgc2l6ZV90eXBlCiAgICAgIGZp
bmRfbGFzdF9ub3Rfb2YoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwgc2l6ZV90eXBlIF9fcG9z
ID0gbnBvcykgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZmluZF9sYXN0X25vdF9vZihfX3N0
ci5kYXRhKCksIF9fcG9zLCBfX3N0ci5zaXplKCkpOyB9CgogICAgICBzaXplX3R5cGUKICAgICAg
ZmluZF9sYXN0X25vdF9vZihjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fcG9zLAogICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZSBfX24pIGNvbnN0OwogICAgICBzaXplX3R5cGUK
ICAgICAgZmluZF9sYXN0X25vdF9vZihjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fcG9z
ID0gbnBvcykgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZmluZF9sYXN0X25vdF9vZihfX3Ms
IF9fcG9zLCB0cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcykpOyB9CgogICAgICBzaXplX3R5cGUKICAg
ICAgZmluZF9sYXN0X25vdF9vZihfQ2hhclQgX19jLCBzaXplX3R5cGUgX19wb3MgPSBucG9zKSBj
b25zdDsKCiAgICAgIGJhc2ljX3N0cmluZwogICAgICBzdWJzdHIoc2l6ZV90eXBlIF9fcG9zID0g
MCwgc2l6ZV90eXBlIF9fbiA9IG5wb3MpIGNvbnN0CiAgICAgIHsKICAgICAgICBpZiAoX19wb3Mg
PiB0aGlzLT5zaXplKCkpCiAgICAgICAgICBfX3Rocm93X291dF9vZl9yYW5nZSgiYmFzaWNfc3Ry
aW5nOjpzdWJzdHIiKTsKICAgICAgICByZXR1cm4gYmFzaWNfc3RyaW5nKCp0aGlzLCBfX3Bvcywg
X19uKTsKICAgICAgfQoKICAgICAgaW50CiAgICAgIGNvbXBhcmUoY29uc3QgYmFzaWNfc3RyaW5n
JiBfX3N0cikgY29uc3QKICAgICAgewogICAgICAgIHNpemVfdHlwZSBfX3NpemUgPSB0aGlzLT5z
aXplKCk7CiAgICAgICAgc2l6ZV90eXBlIF9fb3NpemUgPSBfX3N0ci5zaXplKCk7CiAgICAgICAg
c2l6ZV90eXBlIF9fbGVuID0gc3RkOjptaW4oX19zaXplLCBfX29zaXplKTsKCiAgICAgICAgaW50
IF9fciA9IHRyYWl0c190eXBlOjpjb21wYXJlKF9NX2RhdGEoKSwgX19zdHIuZGF0YSgpLCBfX2xl
bik7CiAgICAgICAgaWYgKCFfX3IpCiAgICAgICAgICBfX3IgPSBfX3NpemUgLSBfX29zaXplOwog
ICAgICAgIHJldHVybiBfX3I7CiAgICAgIH0KCiAgICAgIGludAogICAgICBjb21wYXJlKHNpemVf
dHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbiwgY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0cikgY29u
c3Q7CgogICAgICBpbnQKICAgICAgY29tcGFyZShzaXplX3R5cGUgX19wb3MxLCBzaXplX3R5cGUg
X19uMSwgY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwKICAgICAgICAgICAgICBzaXplX3R5cGUg
X19wb3MyLCBzaXplX3R5cGUgX19uMikgY29uc3Q7CgogICAgICBpbnQKICAgICAgY29tcGFyZShj
b25zdCBfQ2hhclQqIF9fcykgY29uc3Q7CgoKCiAgICAgIGludAogICAgICBjb21wYXJlKHNpemVf
dHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbjEsIGNvbnN0IF9DaGFyVCogX19zKSBjb25zdDsKCiAg
ICAgIGludAogICAgICBjb21wYXJlKHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbjEsIGNv
bnN0IF9DaGFyVCogX19zLAogICAgICAgICAgICAgIHNpemVfdHlwZSBfX24yKSBjb25zdDsKICB9
OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFt
ZSBfQWxsb2M+CiAgICBpbmxpbmUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9j
Pjo6CiAgICBiYXNpY19zdHJpbmcoKQogICAgOiBfTV9kYXRhcGx1cyhfU19lbXB0eV9yZXAoKS5f
TV9yZWZjb3B5KCksIF9BbGxvYygpKSB7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgYmFzaWNfc3RyaW5nPF9DaGFy
VCwgX1RyYWl0cywgX0FsbG9jPgogICAgb3BlcmF0b3IrKGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hh
clQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fbGhzLAogICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3N0
cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fcmhzKQogICAgewogICAgICBiYXNpY19z
dHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+IF9fc3RyKF9fbGhzKTsKICAgICAgX19zdHIu
YXBwZW5kKF9fcmhzKTsKICAgICAgcmV0dXJuIF9fc3RyOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGJhc2lj
X3N0cmluZzxfQ2hhclQsX1RyYWl0cyxfQWxsb2M+CiAgICBvcGVyYXRvcisoY29uc3QgX0NoYXJU
KiBfX2xocywKICAgICAgICAgICAgICBjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULF9UcmFpdHMs
X0FsbG9jPiYgX19yaHMpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U
cmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsX1RyYWl0cyxf
QWxsb2M+CiAgICBvcGVyYXRvcisoX0NoYXJUIF9fbGhzLCBjb25zdCBiYXNpY19zdHJpbmc8X0No
YXJULF9UcmFpdHMsX0FsbG9jPiYgX19yaHMpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs
IHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBiYXNpY19zdHJp
bmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+CiAgICBvcGVyYXRvcisoY29uc3QgYmFzaWNfc3Ry
aW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMsCiAgICAgICAgICAgICBjb25zdCBf
Q2hhclQqIF9fcmhzKQogICAgewogICAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBf
QWxsb2M+IF9fc3RyKF9fbGhzKTsKICAgICAgX19zdHIuYXBwZW5kKF9fcmhzKTsKICAgICAgcmV0
dXJuIF9fc3RyOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U
cmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBiYXNpY19zdHJpbmc8X0NoYXJULCBf
VHJhaXRzLCBfQWxsb2M+CiAgICBvcGVyYXRvcisoY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwg
X1RyYWl0cywgX0FsbG9jPiYgX19saHMsIF9DaGFyVCBfX3JocykKICAgIHsKICAgICAgdHlwZWRl
ZiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+IF9fc3RyaW5nX3R5cGU7CiAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgX19zdHJpbmdfdHlwZTo6c2l6ZV90eXBlIF9fc2l6ZV90eXBl
OwogICAgICBfX3N0cmluZ190eXBlIF9fc3RyKF9fbGhzKTsKICAgICAgX19zdHIuYXBwZW5kKF9f
c2l6ZV90eXBlKDEpLCBfX3Jocyk7CiAgICAgIHJldHVybiBfX3N0cjsKICAgIH0KCgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgog
ICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwg
X1RyYWl0cywgX0FsbG9jPiYgX19saHMsCiAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3N0cmlu
ZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fcmhzKQogICAgeyByZXR1cm4gX19saHMuY29t
cGFyZShfX3JocykgPT0gMDsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj09
KGNvbnN0IF9DaGFyVCogX19saHMsCiAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3N0cmluZzxf
Q2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fcmhzKQogICAgeyByZXR1cm4gX19yaHMuY29tcGFy
ZShfX2xocykgPT0gMDsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U
cmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj09KGNv
bnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fbGhzLAogICAgICAg
ICAgICAgICBjb25zdCBfQ2hhclQqIF9fcmhzKQogICAgeyByZXR1cm4gX19saHMuY29tcGFyZShf
X3JocykgPT0gMDsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJh
aXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25z
dCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX2xocywKICAgICAgICAg
ICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19yaHMp
CiAgICB7IHJldHVybiBfX3Jocy5jb21wYXJlKF9fbGhzKSAhPSAwOyB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5s
aW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3QgX0NoYXJUKiBfX2xocywKICAgICAgICAgICAg
ICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19yaHMpCiAg
ICB7IHJldHVybiBfX3Jocy5jb21wYXJlKF9fbGhzKSAhPSAwOyB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5l
IGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywg
X0FsbG9jPiYgX19saHMsCiAgICAgICAgICAgICAgIGNvbnN0IF9DaGFyVCogX19yaHMpCiAgICB7
IHJldHVybiBfX2xocy5jb21wYXJlKF9fcmhzKSAhPSAwOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBi
b29sCiAgICBvcGVyYXRvcjwoY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0Fs
bG9jPiYgX19saHMsCiAgICAgICAgICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1Ry
YWl0cywgX0FsbG9jPiYgX19yaHMpCiAgICB7IHJldHVybiBfX2xocy5jb21wYXJlKF9fcmhzKSA8
IDA7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBl
bmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IGJhc2ljX3N0
cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fbGhzLAogICAgICAgICAgICAgIGNvbnN0
IF9DaGFyVCogX19yaHMpCiAgICB7IHJldHVybiBfX2xocy5jb21wYXJlKF9fcmhzKSA8IDA7IH0K
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBf
QWxsb2M+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IF9DaGFyVCogX19saHMs
CiAgICAgICAgICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9j
PiYgX19yaHMpCiAgICB7IHJldHVybiBfX3Jocy5jb21wYXJlKF9fbGhzKSA+IDA7IH0KCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9j
PgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPihjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJU
LCBfVHJhaXRzLCBfQWxsb2M+JiBfX2xocywKICAgICAgICAgICAgICBjb25zdCBiYXNpY19zdHJp
bmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3JocykKICAgIHsgcmV0dXJuIF9fbGhzLmNv
bXBhcmUoX19yaHMpID4gMDsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj4o
Y29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMsCiAgICAg
ICAgICAgICAgY29uc3QgX0NoYXJUKiBfX3JocykKICAgIHsgcmV0dXJuIF9fbGhzLmNvbXBhcmUo
X19yaHMpID4gMDsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp
dHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj4oY29uc3Qg
X0NoYXJUKiBfX2xocywKICAgICAgICAgICAgICBjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBf
VHJhaXRzLCBfQWxsb2M+JiBfX3JocykKICAgIHsgcmV0dXJuIF9fcmhzLmNvbXBhcmUoX19saHMp
IDwgMDsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0
eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8PShjb25zdCBiYXNp
Y19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX2xocywKICAgICAgICAgICAgICAg
Y29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19yaHMpCiAgICB7
IHJldHVybiBfX2xocy5jb21wYXJlKF9fcmhzKSA8PSAwOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJv
b2wKICAgIG9wZXJhdG9yPD0oY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0Fs
bG9jPiYgX19saHMsCiAgICAgICAgICAgICAgIGNvbnN0IF9DaGFyVCogX19yaHMpCiAgICB7IHJl
dHVybiBfX2xocy5jb21wYXJlKF9fcmhzKSA8PSAwOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJvb2wK
ICAgIG9wZXJhdG9yPD0oY29uc3QgX0NoYXJUKiBfX2xocywKICAgICAgICAgICAgICAgY29uc3Qg
YmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19yaHMpCiAgeyByZXR1cm4g
X19yaHMuY29tcGFyZShfX2xocykgPj0gMDsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgYm9vbAogICAg
b3BlcmF0b3I+PShjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBf
X2xocywKICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywg
X0FsbG9jPiYgX19yaHMpCiAgICB7IHJldHVybiBfX2xocy5jb21wYXJlKF9fcmhzKSA+PSAwOyB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUg
X0FsbG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPj0oY29uc3QgYmFzaWNfc3RyaW5n
PF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMsCiAgICAgICAgICAgICAgIGNvbnN0IF9D
aGFyVCogX19yaHMpCiAgICB7IHJldHVybiBfX2xocy5jb21wYXJlKF9fcmhzKSA+PSAwOyB9Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0Fs
bG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPj0oY29uc3QgX0NoYXJUKiBfX2xocywK
ICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4m
IF9fcmhzKQogICAgeyByZXR1cm4gX19yaHMuY29tcGFyZShfX2xocykgPD0gMDsgfQoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+
CiAgICBpbmxpbmUgdm9pZAogICAgc3dhcChiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBf
QWxsb2M+JiBfX2xocywKICAgICAgICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0Fs
bG9jPiYgX19yaHMpCiAgICB7IF9fbGhzLnN3YXAoX19yaHMpOyB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgYmFzaWNf
aXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+PihiYXNpY19pc3RyZWFtPF9D
aGFyVCwgX1RyYWl0cz4mIF9faXMsCiAgICAgICAgICAgICAgIGJhc2ljX3N0cmluZzxfQ2hhclQs
IF9UcmFpdHMsIF9BbGxvYz4mIF9fc3RyKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19vc3RyZWFtPF9DaGFy
VCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRz
PiYgX19vcywKICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0
cywgX0FsbG9jPiYgX19zdHIpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULF9UcmFp
dHM+JgogICAgZ2V0bGluZShiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAg
ICAgICAgICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fc3RyLCBf
Q2hhclQgX19kZWxpbSk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1Ry
YWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJhc2ljX2lzdHJlYW08X0NoYXJULF9U
cmFpdHM+JgogICAgZ2V0bGluZShiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMs
CiAgICAgICAgICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fc3Ry
KTsKfQojIDU0ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4
Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL3N0cmluZyIgMiAzCgoKIyAxICIvaG9tZS9BZG1p
bmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1
ZGUvYysrL2FsZ29yaXRobSIgMSAzCiMgNjUgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGlu
Zy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYWxnb3JpdGhtIiAz
CgoKCgojIDEgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2
LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfYWxnby5oIiAxIDMKIyA2NCAiL2hv
bWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMu
NC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdvLmgiIDMKIyAxICIvaG9tZS9BZG1pbmlzdHJhdG9y
L2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2Jp
dHMvc3RsX2hlYXAuaCIgMSAzCiMgNjMgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfaGVhcC5o
IiAzCm5hbWVzcGFjZSBzdGQKewoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJ
dGVyYXRvciwgdHlwZW5hbWUgX0Rpc3RhbmNlLCB0eXBlbmFtZSBfVHA+CiAgICB2b2lkCiAgICBf
X3B1c2hfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwKICAgICAgICAgICAgICAg
IF9EaXN0YW5jZSBfX2hvbGVJbmRleCwgX0Rpc3RhbmNlIF9fdG9wSW5kZXgsIF9UcCBfX3ZhbHVl
KQogICAgewogICAgICBfRGlzdGFuY2UgX19wYXJlbnQgPSAoX19ob2xlSW5kZXggLSAxKSAvIDI7
CiAgICAgIHdoaWxlIChfX2hvbGVJbmRleCA+IF9fdG9wSW5kZXggJiYgKihfX2ZpcnN0ICsgX19w
YXJlbnQpIDwgX192YWx1ZSkgewogICAgICAgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICoo
X19maXJzdCArIF9fcGFyZW50KTsKICAgICAgICBfX2hvbGVJbmRleCA9IF9fcGFyZW50OwogICAg
ICAgIF9fcGFyZW50ID0gKF9faG9sZUluZGV4IC0gMSkgLyAyOwogICAgICB9CiAgICAgICooX19m
aXJzdCArIF9faG9sZUluZGV4KSA9IF9fdmFsdWU7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4KICAgIGlubGluZSB2b2lkCiAgICBwdXNoX2hlYXAoX1Jh
bmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3Qp
CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nl
c3NJdGVyYXRvcj46OnZhbHVlX3R5cGUKICAgICAgICAgIF9WYWx1ZVR5cGU7CiAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OmRpZmZl
cmVuY2VfdHlwZQogICAgICAgICAgX0Rpc3RhbmNlVHlwZTsKCgogICAgIAoKICAgICAKCiAgICAg
IF9fcHVzaF9oZWFwKF9fZmlyc3QsIF9EaXN0YW5jZVR5cGUoKF9fbGFzdCAtIF9fZmlyc3QpIC0g
MSksIF9EaXN0YW5jZVR5cGUoMCksCiAgICAgICAgICAgICAgICAgIF9WYWx1ZVR5cGUoKihfX2xh
c3QgLSAxKSkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0
b3IsIHR5cGVuYW1lIF9EaXN0YW5jZSwgdHlwZW5hbWUgX1RwLAogICAgICAgICAgICB0eXBlbmFt
ZSBfQ29tcGFyZT4KICAgIHZvaWQKICAgIF9fcHVzaF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciBfX2ZpcnN0LCBfRGlzdGFuY2UgX19ob2xlSW5kZXgsCiAgICAgICAgICAgICAgICBfRGlzdGFu
Y2UgX190b3BJbmRleCwgX1RwIF9fdmFsdWUsIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAg
X0Rpc3RhbmNlIF9fcGFyZW50ID0gKF9faG9sZUluZGV4IC0gMSkgLyAyOwogICAgICB3aGlsZSAo
X19ob2xlSW5kZXggPiBfX3RvcEluZGV4ICYmIF9fY29tcCgqKF9fZmlyc3QgKyBfX3BhcmVudCks
IF9fdmFsdWUpKSB7CiAgICAgICAgKihfX2ZpcnN0ICsgX19ob2xlSW5kZXgpID0gKihfX2ZpcnN0
ICsgX19wYXJlbnQpOwogICAgICAgIF9faG9sZUluZGV4ID0gX19wYXJlbnQ7CiAgICAgICAgX19w
YXJlbnQgPSAoX19ob2xlSW5kZXggLSAxKSAvIDI7CiAgICAgIH0KICAgICAgKihfX2ZpcnN0ICsg
X19ob2xlSW5kZXgpID0gX192YWx1ZTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGlubGluZSB2b2lkCiAgICBw
dXNoX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVy
YXRvciBfX2xhc3QsCiAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICB0
eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2
YWx1ZV90eXBlCiAgICAgICAgICBfVmFsdWVUeXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUKICAg
ICAgICAgIF9EaXN0YW5jZVR5cGU7CgoKICAgICAKCgogICAgICBfX3B1c2hfaGVhcChfX2ZpcnN0
LCBfRGlzdGFuY2VUeXBlKChfX2xhc3QgLSBfX2ZpcnN0KSAtIDEpLCBfRGlzdGFuY2VUeXBlKDAp
LAogICAgICAgICAgICAgICAgICBfVmFsdWVUeXBlKCooX19sYXN0IC0gMSkpLCBfX2NvbXApOwog
ICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1l
IF9EaXN0YW5jZSwgdHlwZW5hbWUgX1RwPgogICAgdm9pZAogICAgX19hZGp1c3RfaGVhcChfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX0Rpc3RhbmNlIF9faG9sZUluZGV4LAogICAgICAg
ICAgICAgICAgICBfRGlzdGFuY2UgX19sZW4sIF9UcCBfX3ZhbHVlKQogICAgewogICAgICBfRGlz
dGFuY2UgX190b3BJbmRleCA9IF9faG9sZUluZGV4OwogICAgICBfRGlzdGFuY2UgX19zZWNvbmRD
aGlsZCA9IDIgKiBfX2hvbGVJbmRleCArIDI7CiAgICAgIHdoaWxlIChfX3NlY29uZENoaWxkIDwg
X19sZW4pIHsKICAgICAgICBpZiAoKihfX2ZpcnN0ICsgX19zZWNvbmRDaGlsZCkgPCAqKF9fZmly
c3QgKyAoX19zZWNvbmRDaGlsZCAtIDEpKSkKICAgICAgICAgIF9fc2Vjb25kQ2hpbGQtLTsKICAg
ICAgICAqKF9fZmlyc3QgKyBfX2hvbGVJbmRleCkgPSAqKF9fZmlyc3QgKyBfX3NlY29uZENoaWxk
KTsKICAgICAgICBfX2hvbGVJbmRleCA9IF9fc2Vjb25kQ2hpbGQ7CiAgICAgICAgX19zZWNvbmRD
aGlsZCA9IDIgKiAoX19zZWNvbmRDaGlsZCArIDEpOwogICAgICB9CiAgICAgIGlmIChfX3NlY29u
ZENoaWxkID09IF9fbGVuKSB7CiAgICAgICAgKihfX2ZpcnN0ICsgX19ob2xlSW5kZXgpID0gKihf
X2ZpcnN0ICsgKF9fc2Vjb25kQ2hpbGQgLSAxKSk7CiAgICAgICAgX19ob2xlSW5kZXggPSBfX3Nl
Y29uZENoaWxkIC0gMTsKICAgICAgfQogICAgICBfX3B1c2hfaGVhcChfX2ZpcnN0LCBfX2hvbGVJ
bmRleCwgX190b3BJbmRleCwgX192YWx1ZSk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9S
YW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHZvaWQKICAgIF9f
cG9wX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVy
YXRvciBfX2xhc3QsCiAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX3Jlc3Vs
dCwgX1RwIF9fdmFsdWUpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJh
aXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSBfRGlzdGFuY2U7CiAg
ICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogICAgICBfX2FkanVzdF9oZWFwKF9fZmlyc3QsIF9E
aXN0YW5jZSgwKSwgX0Rpc3RhbmNlKF9fbGFzdCAtIF9fZmlyc3QpLCBfX3ZhbHVlKTsKICAgIH0K
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPgogICAgaW5saW5lIHZv
aWQKICAgIHBvcF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IgX19sYXN0KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9y
X3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIF9WYWx1ZVR5cGU7CgoK
ICAgICAKCiAgICAgCgogICAgICBfX3BvcF9oZWFwKF9fZmlyc3QsIF9fbGFzdCAtIDEsIF9fbGFz
dCAtIDEsIF9WYWx1ZVR5cGUoKihfX2xhc3QgLSAxKSkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9EaXN0YW5jZSwKICAgICAgICAg
ICB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgdm9pZAogICAgX19hZGp1c3Rf
aGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX0Rpc3RhbmNlIF9faG9sZUluZGV4
LAogICAgICAgICAgICAgICAgICBfRGlzdGFuY2UgX19sZW4sIF9UcCBfX3ZhbHVlLCBfQ29tcGFy
ZSBfX2NvbXApCiAgICB7CiAgICAgIF9EaXN0YW5jZSBfX3RvcEluZGV4ID0gX19ob2xlSW5kZXg7
CiAgICAgIF9EaXN0YW5jZSBfX3NlY29uZENoaWxkID0gMiAqIF9faG9sZUluZGV4ICsgMjsKICAg
ICAgd2hpbGUgKF9fc2Vjb25kQ2hpbGQgPCBfX2xlbikgewogICAgICAgIGlmIChfX2NvbXAoKihf
X2ZpcnN0ICsgX19zZWNvbmRDaGlsZCksICooX19maXJzdCArIChfX3NlY29uZENoaWxkIC0gMSkp
KSkKICAgICAgICAgIF9fc2Vjb25kQ2hpbGQtLTsKICAgICAgICAqKF9fZmlyc3QgKyBfX2hvbGVJ
bmRleCkgPSAqKF9fZmlyc3QgKyBfX3NlY29uZENoaWxkKTsKICAgICAgICBfX2hvbGVJbmRleCA9
IF9fc2Vjb25kQ2hpbGQ7CiAgICAgICAgX19zZWNvbmRDaGlsZCA9IDIgKiAoX19zZWNvbmRDaGls
ZCArIDEpOwogICAgICB9CiAgICAgIGlmIChfX3NlY29uZENoaWxkID09IF9fbGVuKSB7CiAgICAg
ICAgKihfX2ZpcnN0ICsgX19ob2xlSW5kZXgpID0gKihfX2ZpcnN0ICsgKF9fc2Vjb25kQ2hpbGQg
LSAxKSk7CiAgICAgICAgX19ob2xlSW5kZXggPSBfX3NlY29uZENoaWxkIC0gMTsKICAgICAgfQog
ICAgICBfX3B1c2hfaGVhcChfX2ZpcnN0LCBfX2hvbGVJbmRleCwgX190b3BJbmRleCwgX192YWx1
ZSwgX19jb21wKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yLCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgaW5saW5lIHZvaWQKICAg
IF9fcG9wX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJ
dGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX3Jl
c3VsdCwgX1RwIF9fdmFsdWUsIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5j
ZV90eXBlIF9EaXN0YW5jZTsKICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3Q7CiAgICAgIF9fYWRq
dXN0X2hlYXAoX19maXJzdCwgX0Rpc3RhbmNlKDApLCBfRGlzdGFuY2UoX19sYXN0IC0gX19maXJz
dCksCiAgICAgICAgICAgICAgICAgICAgX192YWx1ZSwgX19jb21wKTsKICAgIH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAg
IGlubGluZSB2b2lkCiAgICBwb3BfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwK
ICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsIF9Db21wYXJlIF9fY29t
cCkKICAgIHsKCiAgICAgCgoKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBfVmFsdWVUeXBlOwogICAgICBfX3Bv
cF9oZWFwKF9fZmlyc3QsIF9fbGFzdCAtIDEsIF9fbGFzdCAtIDEsIF9WYWx1ZVR5cGUoKihfX2xh
c3QgLSAxKSksIF9fY29tcCk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nl
c3NJdGVyYXRvcj4KICAgIHZvaWQKICAgIG1ha2VfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3Ig
X19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkKICAgIHsKICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVf
dHlwZQogICAgICAgICAgX1ZhbHVlVHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRv
cl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCiAgICAgICAg
ICBfRGlzdGFuY2VUeXBlOwoKCiAgICAgCgogICAgIAoKICAgICAgaWYgKF9fbGFzdCAtIF9fZmly
c3QgPCAyKSByZXR1cm47CiAgICAgIF9EaXN0YW5jZVR5cGUgX19sZW4gPSBfX2xhc3QgLSBfX2Zp
cnN0OwogICAgICBfRGlzdGFuY2VUeXBlIF9fcGFyZW50ID0gKF9fbGVuIC0gMikvMjsKCiAgICAg
IHdoaWxlICh0cnVlKSB7CiAgICAgICAgX19hZGp1c3RfaGVhcChfX2ZpcnN0LCBfX3BhcmVudCwg
X19sZW4sIF9WYWx1ZVR5cGUoKihfX2ZpcnN0ICsgX19wYXJlbnQpKSk7CiAgICAgICAgaWYgKF9f
cGFyZW50ID09IDApIHJldHVybjsKICAgICAgICBfX3BhcmVudC0tOwogICAgICB9CiAgICB9Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBh
cmU+CiAgICBpbmxpbmUgdm9pZAogICAgbWFrZV9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBf
X2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAgIF9Db21w
YXJlIF9fY29tcCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZQogICAgICAgICAgX1ZhbHVlVHlwZTsK
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yPjo6ZGlmZmVyZW5jZV90eXBlCiAgICAgICAgICBfRGlzdGFuY2VUeXBlOwoKCiAgICAgCgoK
ICAgICAgaWYgKF9fbGFzdCAtIF9fZmlyc3QgPCAyKSByZXR1cm47CiAgICAgIF9EaXN0YW5jZVR5
cGUgX19sZW4gPSBfX2xhc3QgLSBfX2ZpcnN0OwogICAgICBfRGlzdGFuY2VUeXBlIF9fcGFyZW50
ID0gKF9fbGVuIC0gMikvMjsKCiAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgX19hZGp1c3Rf
aGVhcChfX2ZpcnN0LCBfX3BhcmVudCwgX19sZW4sCiAgICAgICAgICAgICAgICAgICAgICBfVmFs
dWVUeXBlKCooX19maXJzdCArIF9fcGFyZW50KSksIF9fY29tcCk7CiAgICAgICAgaWYgKF9fcGFy
ZW50ID09IDApIHJldHVybjsKICAgICAgICBfX3BhcmVudC0tOwogICAgICB9CiAgICB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4KICAgIHZvaWQKICAgIHNvcnRf
aGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9y
IF9fbGFzdCkKICAgIHsKCiAgICAgCgogICAgIAoKCiAgICAgIHdoaWxlIChfX2xhc3QgLSBfX2Zp
cnN0ID4gMSkKICAgICAgICBwb3BfaGVhcChfX2ZpcnN0LCBfX2xhc3QtLSk7CiAgICB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+
CiAgICB2b2lkCiAgICBzb3J0X2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9S
YW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21w
KQogICAgewoKICAgICAKCgogICAgICB3aGlsZSAoX19sYXN0IC0gX19maXJzdCA+IDEpCiAgICAg
ICAgcG9wX2hlYXAoX19maXJzdCwgX19sYXN0LS0sIF9fY29tcCk7CiAgICB9Cgp9CiMgNjUgIi9o
b21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8z
LjQvaW5jbHVkZS9jKysvYml0cy9zdGxfYWxnby5oIiAyIDMKIyAxICIvaG9tZS9BZG1pbmlzdHJh
dG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysr
L2JpdHMvc3RsX3RlbXBidWYuaCIgMSAzCiMgNjQgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVz
dGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxf
dGVtcGJ1Zi5oIiAzCm5hbWVzcGFjZSBzdGQKewojIDc0ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2dj
Y3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMv
c3RsX3RlbXBidWYuaCIgMwp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvciwgY2xhc3Mg
X1RwPgogIGNsYXNzIF9UZW1wb3JhcnlfYnVmZmVyCnsKCiAKCiAgcHRyZGlmZl90IF9NX29yaWdp
bmFsX2xlbjsKICBwdHJkaWZmX3QgX01fbGVuOwogIF9UcCogX01fYnVmZmVyOwoKCiAgdm9pZCBf
TV9hbGxvY2F0ZV9idWZmZXIoKSB7CiAgICBfTV9vcmlnaW5hbF9sZW4gPSBfTV9sZW47CiAgICBf
TV9idWZmZXIgPSAwOwoKICAgIGlmIChfTV9sZW4gPiAocHRyZGlmZl90KSgyMTQ3NDgzNjQ3IC8g
c2l6ZW9mKF9UcCkpKQogICAgICBfTV9sZW4gPSAyMTQ3NDgzNjQ3IC8gc2l6ZW9mKF9UcCk7Cgog
ICAgd2hpbGUgKF9NX2xlbiA+IDApIHsKICAgICAgX01fYnVmZmVyID0gKF9UcCopIG1hbGxvYyhf
TV9sZW4gKiBzaXplb2YoX1RwKSk7CiAgICAgIGlmIChfTV9idWZmZXIpCiAgICAgICAgYnJlYWs7
CiAgICAgIF9NX2xlbiAvPSAyOwogICAgfQogIH0KCiAgdm9pZCBfTV9pbml0aWFsaXplX2J1ZmZl
cihjb25zdCBfVHAmLCBfX3RydWVfdHlwZSkge30KICB2b2lkIF9NX2luaXRpYWxpemVfYnVmZmVy
KGNvbnN0IF9UcCYgdmFsLCBfX2ZhbHNlX3R5cGUpIHsKICAgIHVuaW5pdGlhbGl6ZWRfZmlsbF9u
KF9NX2J1ZmZlciwgX01fbGVuLCB2YWwpOwogIH0KCnB1YmxpYzoKCiAgcHRyZGlmZl90IHNpemUo
KSBjb25zdCB7IHJldHVybiBfTV9sZW47IH0KCiAgcHRyZGlmZl90IHJlcXVlc3RlZF9zaXplKCkg
Y29uc3QgeyByZXR1cm4gX01fb3JpZ2luYWxfbGVuOyB9CgogIF9UcCogYmVnaW4oKSB7IHJldHVy
biBfTV9idWZmZXI7IH0KCiAgX1RwKiBlbmQoKSB7IHJldHVybiBfTV9idWZmZXIgKyBfTV9sZW47
IH0KCiAgX1RlbXBvcmFyeV9idWZmZXIoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2Fy
ZEl0ZXJhdG9yIF9fbGFzdCkgewoKICAgIHR5cGVkZWYgdHlwZW5hbWUgX190eXBlX3RyYWl0czxf
VHA+OjpoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yCiAgICAgICAgICAgIF9Ucml2aWFs
OwoKICAgIHRyeSB7CiAgICAgIF9NX2xlbiA9IHN0ZDo6ZGlzdGFuY2UoX19maXJzdCwgX19sYXN0
KTsKICAgICAgX01fYWxsb2NhdGVfYnVmZmVyKCk7CiAgICAgIGlmIChfTV9sZW4gPiAwKQogICAg
ICAgIF9NX2luaXRpYWxpemVfYnVmZmVyKCpfX2ZpcnN0LCBfVHJpdmlhbCgpKTsKICAgIH0KICAg
IGNhdGNoKC4uLikKICAgICAgewogICAgICAgIGZyZWUoX01fYnVmZmVyKTsKICAgICAgICBfTV9i
dWZmZXIgPSAwOwogICAgICAgIF9NX2xlbiA9IDA7CiAgICAgICAgdGhyb3c7CiAgICAgIH0KICB9
CgogIH5fVGVtcG9yYXJ5X2J1ZmZlcigpIHsKICAgIF9EZXN0cm95KF9NX2J1ZmZlciwgX01fYnVm
ZmVyICsgX01fbGVuKTsKICAgIGZyZWUoX01fYnVmZmVyKTsKICB9Cgpwcml2YXRlOgoKICBfVGVt
cG9yYXJ5X2J1ZmZlcihjb25zdCBfVGVtcG9yYXJ5X2J1ZmZlciYpIHt9CiAgdm9pZCBvcGVyYXRv
cj0oY29uc3QgX1RlbXBvcmFyeV9idWZmZXImKSB7fQp9OwoKfQojIDY2ICIvaG9tZS9BZG1pbmlz
dHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUv
YysrL2JpdHMvc3RsX2FsZ28uaCIgMiAzCgoKCm5hbWVzcGFjZSBzdGQKewojIDg0ICIvaG9tZS9B
ZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2lu
Y2x1ZGUvYysrL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICBp
bmxpbmUgY29uc3QgX1RwJgogICAgX19tZWRpYW4oY29uc3QgX1RwJiBfX2EsIGNvbnN0IF9UcCYg
X19iLCBjb25zdCBfVHAmIF9fYykKICAgIHsKCiAgICAgCiAgICAgIGlmIChfX2EgPCBfX2IpCiAg
ICAgICAgaWYgKF9fYiA8IF9fYykKICAgICAgICAgIHJldHVybiBfX2I7CiAgICAgICAgZWxzZSBp
ZiAoX19hIDwgX19jKQogICAgICAgICAgcmV0dXJuIF9fYzsKICAgICAgICBlbHNlCiAgICAgICAg
ICByZXR1cm4gX19hOwogICAgICBlbHNlIGlmIChfX2EgPCBfX2MpCiAgICAgICAgcmV0dXJuIF9f
YTsKICAgICAgZWxzZSBpZiAoX19iIDwgX19jKQogICAgICAgIHJldHVybiBfX2M7CiAgICAgIGVs
c2UKICAgICAgICByZXR1cm4gX19iOwogICAgfQojIDExOCAiL2hvbWUvQWRtaW5pc3RyYXRvci9n
Y2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRz
L3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Db21wYXJl
PgogICAgaW5saW5lIGNvbnN0IF9UcCYKICAgIF9fbWVkaWFuKGNvbnN0IF9UcCYgX19hLCBjb25z
dCBfVHAmIF9fYiwgY29uc3QgX1RwJiBfX2MsIF9Db21wYXJlIF9fY29tcCkKICAgIHsKCiAgICAg
CiAgICAgIGlmIChfX2NvbXAoX19hLCBfX2IpKQogICAgICAgIGlmIChfX2NvbXAoX19iLCBfX2Mp
KQogICAgICAgICAgcmV0dXJuIF9fYjsKICAgICAgICBlbHNlIGlmIChfX2NvbXAoX19hLCBfX2Mp
KQogICAgICAgICAgcmV0dXJuIF9fYzsKICAgICAgICBlbHNlCiAgICAgICAgICByZXR1cm4gX19h
OwogICAgICBlbHNlIGlmIChfX2NvbXAoX19hLCBfX2MpKQogICAgICAgIHJldHVybiBfX2E7CiAg
ICAgIGVsc2UgaWYgKF9fY29tcChfX2IsIF9fYykpCiAgICAgICAgcmV0dXJuIF9fYzsKICAgICAg
ZWxzZQogICAgICAgIHJldHVybiBfX2I7CiAgICB9CiMgMTUwICIvaG9tZS9BZG1pbmlzdHJhdG9y
L2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2Jp
dHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIsIHR5cGVuYW1l
IF9GdW5jdGlvbj4KICAgIF9GdW5jdGlvbgogICAgZm9yX2VhY2goX0lucHV0SXRlciBfX2ZpcnN0
LCBfSW5wdXRJdGVyIF9fbGFzdCwgX0Z1bmN0aW9uIF9fZikKICAgIHsKCiAgICAgCiAgICAgIGZv
ciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICAgICAgICBfX2YoKl9fZmlyc3Qp
OwogICAgICByZXR1cm4gX19mOwogICAgfQoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1
dEl0ZXIsIHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBfSW5wdXRJdGVyCiAgICBmaW5kKF9JbnB1
dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgIGNvbnN0IF9UcCYgX192
YWwsCiAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3RhZykKICAgIHsKICAgICAgd2hpbGUgKF9fZmly
c3QgIT0gX19sYXN0ICYmICEoKl9fZmlyc3QgPT0gX192YWwpKQogICAgICAgICsrX19maXJzdDsK
ICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICB9CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lu
cHV0SXRlciwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIGlubGluZSBfSW5wdXRJdGVyCiAgICBm
aW5kX2lmKF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAg
IF9QcmVkaWNhdGUgX19wcmVkLAogICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90YWcpCiAgICB7
CiAgICAgIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCAmJiAhX19wcmVkKCpfX2ZpcnN0KSkKICAg
ICAgICArK19fZmlyc3Q7CiAgICAgIHJldHVybiBfX2ZpcnN0OwogICAgfQoKCgoKCgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyLCB0eXBlbmFtZSBfVHA+CiAgICBfUmFuZG9t
QWNjZXNzSXRlcgogICAgZmluZChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNj
ZXNzSXRlciBfX2xhc3QsCiAgICAgICAgIGNvbnN0IF9UcCYgX192YWwsCiAgICAgICAgIHJhbmRv
bV9hY2Nlc3NfaXRlcmF0b3JfdGFnKQogICAgewogICAgICB0eXBlbmFtZSBpdGVyYXRvcl90cmFp
dHM8X1JhbmRvbUFjY2Vzc0l0ZXI+OjpkaWZmZXJlbmNlX3R5cGUgX190cmlwX2NvdW50CiAgICAg
ICAgPSAoX19sYXN0IC0gX19maXJzdCkgPj4gMjsKCiAgICAgIGZvciAoIDsgX190cmlwX2NvdW50
ID4gMCA7IC0tX190cmlwX2NvdW50KSB7CiAgICAgICAgaWYgKCpfX2ZpcnN0ID09IF9fdmFsKSBy
ZXR1cm4gX19maXJzdDsKICAgICAgICArK19fZmlyc3Q7CgogICAgICAgIGlmICgqX19maXJzdCA9
PSBfX3ZhbCkgcmV0dXJuIF9fZmlyc3Q7CiAgICAgICAgKytfX2ZpcnN0OwoKICAgICAgICBpZiAo
Kl9fZmlyc3QgPT0gX192YWwpIHJldHVybiBfX2ZpcnN0OwogICAgICAgICsrX19maXJzdDsKCiAg
ICAgICAgaWYgKCpfX2ZpcnN0ID09IF9fdmFsKSByZXR1cm4gX19maXJzdDsKICAgICAgICArK19f
Zmlyc3Q7CiAgICAgIH0KCiAgICAgIHN3aXRjaChfX2xhc3QgLSBfX2ZpcnN0KSB7CiAgICAgIGNh
c2UgMzoKICAgICAgICBpZiAoKl9fZmlyc3QgPT0gX192YWwpIHJldHVybiBfX2ZpcnN0OwogICAg
ICAgICsrX19maXJzdDsKICAgICAgY2FzZSAyOgogICAgICAgIGlmICgqX19maXJzdCA9PSBfX3Zh
bCkgcmV0dXJuIF9fZmlyc3Q7CiAgICAgICAgKytfX2ZpcnN0OwogICAgICBjYXNlIDE6CiAgICAg
ICAgaWYgKCpfX2ZpcnN0ID09IF9fdmFsKSByZXR1cm4gX19maXJzdDsKICAgICAgICArK19fZmly
c3Q7CiAgICAgIGNhc2UgMDoKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gX19sYXN0Owog
ICAgICB9CiAgICB9CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXIs
IHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgICBfUmFuZG9tQWNjZXNzSXRlcgogICAgZmluZF9pZihf
UmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsCiAgICAg
ICAgICAgIF9QcmVkaWNhdGUgX19wcmVkLAogICAgICAgICAgICByYW5kb21fYWNjZXNzX2l0ZXJh
dG9yX3RhZykKICAgIHsKICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nl
c3NJdGVyPjo6ZGlmZmVyZW5jZV90eXBlIF9fdHJpcF9jb3VudAogICAgICAgID0gKF9fbGFzdCAt
IF9fZmlyc3QpID4+IDI7CgogICAgICBmb3IgKCA7IF9fdHJpcF9jb3VudCA+IDAgOyAtLV9fdHJp
cF9jb3VudCkgewogICAgICAgIGlmIChfX3ByZWQoKl9fZmlyc3QpKSByZXR1cm4gX19maXJzdDsK
ICAgICAgICArK19fZmlyc3Q7CgogICAgICAgIGlmIChfX3ByZWQoKl9fZmlyc3QpKSByZXR1cm4g
X19maXJzdDsKICAgICAgICArK19fZmlyc3Q7CgogICAgICAgIGlmIChfX3ByZWQoKl9fZmlyc3Qp
KSByZXR1cm4gX19maXJzdDsKICAgICAgICArK19fZmlyc3Q7CgogICAgICAgIGlmIChfX3ByZWQo
Kl9fZmlyc3QpKSByZXR1cm4gX19maXJzdDsKICAgICAgICArK19fZmlyc3Q7CiAgICAgIH0KCiAg
ICAgIHN3aXRjaChfX2xhc3QgLSBfX2ZpcnN0KSB7CiAgICAgIGNhc2UgMzoKICAgICAgICBpZiAo
X19wcmVkKCpfX2ZpcnN0KSkgcmV0dXJuIF9fZmlyc3Q7CiAgICAgICAgKytfX2ZpcnN0OwogICAg
ICBjYXNlIDI6CiAgICAgICAgaWYgKF9fcHJlZCgqX19maXJzdCkpIHJldHVybiBfX2ZpcnN0Owog
ICAgICAgICsrX19maXJzdDsKICAgICAgY2FzZSAxOgogICAgICAgIGlmIChfX3ByZWQoKl9fZmly
c3QpKSByZXR1cm4gX19maXJzdDsKICAgICAgICArK19fZmlyc3Q7CiAgICAgIGNhc2UgMDoKICAg
ICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gX19sYXN0OwogICAgICB9CiAgICB9CiMgMjg5ICIv
aG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4v
My40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9J
bnB1dEl0ZXIsIHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBfSW5wdXRJdGVyCiAgICBmaW5kKF9J
bnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgIGNvbnN0IF9UcCYg
X192YWwpCiAgICB7CgogICAgIAogICAgIAoKICAgICAgcmV0dXJuIGZpbmQoX19maXJzdCwgX19s
YXN0LCBfX3ZhbCwgX19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0KSk7CiAgICB9CiMgMzA5ICIv
aG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4v
My40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9J
bnB1dEl0ZXIsIHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgICBpbmxpbmUgX0lucHV0SXRlcgogICAg
ZmluZF9pZihfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAg
ICBfUHJlZGljYXRlIF9fcHJlZCkKICAgIHsKCiAgICAgCiAgICAgCgogICAgICByZXR1cm4gZmlu
ZF9pZihfX2ZpcnN0LCBfX2xhc3QsIF9fcHJlZCwgX19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0
KSk7CiAgICB9CiMgMzI5ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1s
aWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRl
bXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcj4KICAgIF9Gb3J3YXJkSXRlcgogICAgYWRqYWNl
bnRfZmluZChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCkKICAgIHsK
CiAgICAgCiAgICAgCgogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiAgICAgICAgcmV0dXJu
IF9fbGFzdDsKICAgICAgX0ZvcndhcmRJdGVyIF9fbmV4dCA9IF9fZmlyc3Q7CiAgICAgIHdoaWxl
KCsrX19uZXh0ICE9IF9fbGFzdCkgewogICAgICAgIGlmICgqX19maXJzdCA9PSAqX19uZXh0KQog
ICAgICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICAgICAgX19maXJzdCA9IF9fbmV4dDsKICAgICAg
fQogICAgICByZXR1cm4gX19sYXN0OwogICAgfQojIDM1OCAiL2hvbWUvQWRtaW5pc3RyYXRvci9n
Y2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRz
L3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXIsIHR5cGVuYW1l
IF9CaW5hcnlQcmVkaWNhdGU+CiAgICBfRm9yd2FyZEl0ZXIKICAgIGFkamFjZW50X2ZpbmQoX0Zv
cndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAg
IF9CaW5hcnlQcmVkaWNhdGUgX19iaW5hcnlfcHJlZCkKICAgIHsKCiAgICAgCiAgICAgCgoKICAg
ICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KQogICAgICAgIHJldHVybiBfX2xhc3Q7CiAgICAgIF9G
b3J3YXJkSXRlciBfX25leHQgPSBfX2ZpcnN0OwogICAgICB3aGlsZSgrK19fbmV4dCAhPSBfX2xh
c3QpIHsKICAgICAgICBpZiAoX19iaW5hcnlfcHJlZCgqX19maXJzdCwgKl9fbmV4dCkpCiAgICAg
ICAgICByZXR1cm4gX19maXJzdDsKICAgICAgICBfX2ZpcnN0ID0gX19uZXh0OwogICAgICB9CiAg
ICAgIHJldHVybiBfX2xhc3Q7CiAgICB9CiMgMzg3ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rl
c3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3Rs
X2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIsIHR5cGVuYW1lIF9UcD4K
ICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyPjo6ZGlmZmVyZW5jZV90eXBl
CiAgICBjb3VudChfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LCBjb25zdCBf
VHAmIF9fdmFsdWUpCiAgICB7CgogICAgIAogICAgIAoKICAgICAKICAgICAgdHlwZW5hbWUgaXRl
cmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXI+OjpkaWZmZXJlbmNlX3R5cGUgX19uID0gMDsKICAgICAg
Zm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICAgICAgIGlmICgqX19maXJz
dCA9PSBfX3ZhbHVlKQogICAgICAgICAgKytfX247CiAgICAgIHJldHVybiBfX247CiAgICB9CiMg
NDExICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1j
eWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVu
YW1lIF9JbnB1dEl0ZXIsIHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgICB0eXBlbmFtZSBpdGVyYXRv
cl90cmFpdHM8X0lucHV0SXRlcj46OmRpZmZlcmVuY2VfdHlwZQogICAgY291bnRfaWYoX0lucHV0
SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwgX1ByZWRpY2F0ZSBfX3ByZWQpCiAgICB7
CgogICAgIAogICAgIAoKICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXI+
OjpkaWZmZXJlbmNlX3R5cGUgX19uID0gMDsKICAgICAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFz
dDsgKytfX2ZpcnN0KQogICAgICAgIGlmIChfX3ByZWQoKl9fZmlyc3QpKQogICAgICAgICAgKytf
X247CiAgICAgIHJldHVybiBfX247CiAgICB9CiMgNDUwICIvaG9tZS9BZG1pbmlzdHJhdG9yL2dj
Y3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMv
c3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcjEsIHR5cGVuYW1l
IF9Gb3J3YXJkSXRlcjI+CiAgICBfRm9yd2FyZEl0ZXIxCiAgICBzZWFyY2goX0ZvcndhcmRJdGVy
MSBfX2ZpcnN0MSwgX0ZvcndhcmRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgIF9Gb3J3YXJkSXRl
cjIgX19maXJzdDIsIF9Gb3J3YXJkSXRlcjIgX19sYXN0MikKICAgIHsKCiAgICAgCiAgICAgCiAg
ICAgCgoKCgogICAgICBpZiAoX19maXJzdDEgPT0gX19sYXN0MSB8fCBfX2ZpcnN0MiA9PSBfX2xh
c3QyKQogICAgICAgIHJldHVybiBfX2ZpcnN0MTsKCgogICAgICBfRm9yd2FyZEl0ZXIyIF9fdG1w
KF9fZmlyc3QyKTsKICAgICAgKytfX3RtcDsKICAgICAgaWYgKF9fdG1wID09IF9fbGFzdDIpCiAg
ICAgICAgcmV0dXJuIGZpbmQoX19maXJzdDEsIF9fbGFzdDEsICpfX2ZpcnN0Mik7CgoKCiAgICAg
IF9Gb3J3YXJkSXRlcjIgX19wMSwgX19wOwoKICAgICAgX19wMSA9IF9fZmlyc3QyOyArK19fcDE7
CgogICAgICBfRm9yd2FyZEl0ZXIxIF9fY3VycmVudCA9IF9fZmlyc3QxOwoKICAgICAgd2hpbGUg
KF9fZmlyc3QxICE9IF9fbGFzdDEpIHsKICAgICAgICBfX2ZpcnN0MSA9IGZpbmQoX19maXJzdDEs
IF9fbGFzdDEsICpfX2ZpcnN0Mik7CiAgICAgICAgaWYgKF9fZmlyc3QxID09IF9fbGFzdDEpCiAg
ICAgICAgICByZXR1cm4gX19sYXN0MTsKCiAgICAgICAgX19wID0gX19wMTsKICAgICAgICBfX2N1
cnJlbnQgPSBfX2ZpcnN0MTsKICAgICAgICBpZiAoKytfX2N1cnJlbnQgPT0gX19sYXN0MSkKICAg
ICAgICAgIHJldHVybiBfX2xhc3QxOwoKICAgICAgICB3aGlsZSAoKl9fY3VycmVudCA9PSAqX19w
KSB7CiAgICAgICAgICBpZiAoKytfX3AgPT0gX19sYXN0MikKICAgICAgICAgICAgcmV0dXJuIF9f
Zmlyc3QxOwogICAgICAgICAgaWYgKCsrX19jdXJyZW50ID09IF9fbGFzdDEpCiAgICAgICAgICAg
IHJldHVybiBfX2xhc3QxOwogICAgICAgIH0KCiAgICAgICAgKytfX2ZpcnN0MTsKICAgICAgfQog
ICAgICByZXR1cm4gX19maXJzdDE7CiAgICB9CiMgNTIyICIvaG9tZS9BZG1pbmlzdHJhdG9yL2dj
Y3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMv
c3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcjEsIHR5cGVuYW1l
IF9Gb3J3YXJkSXRlcjIsIHR5cGVuYW1lIF9CaW5hcnlQcmVkPgogICAgX0ZvcndhcmRJdGVyMQog
ICAgc2VhcmNoKF9Gb3J3YXJkSXRlcjEgX19maXJzdDEsIF9Gb3J3YXJkSXRlcjEgX19sYXN0MSwK
ICAgICAgICAgICBfRm9yd2FyZEl0ZXIyIF9fZmlyc3QyLCBfRm9yd2FyZEl0ZXIyIF9fbGFzdDIs
CiAgICAgICAgICAgX0JpbmFyeVByZWQgX19wcmVkaWNhdGUpCiAgICB7CgogICAgIAogICAgIAog
ICAgIAoKCgoKICAgICAgaWYgKF9fZmlyc3QxID09IF9fbGFzdDEgfHwgX19maXJzdDIgPT0gX19s
YXN0MikKICAgICAgICByZXR1cm4gX19maXJzdDE7CgoKICAgICAgX0ZvcndhcmRJdGVyMiBfX3Rt
cChfX2ZpcnN0Mik7CiAgICAgICsrX190bXA7CiAgICAgIGlmIChfX3RtcCA9PSBfX2xhc3QyKSB7
CiAgICAgICAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgIV9fcHJlZGljYXRlKCpfX2Zp
cnN0MSwgKl9fZmlyc3QyKSkKICAgICAgICAgICsrX19maXJzdDE7CiAgICAgICAgcmV0dXJuIF9f
Zmlyc3QxOwogICAgICB9CgoKCiAgICAgIF9Gb3J3YXJkSXRlcjIgX19wMSwgX19wOwoKICAgICAg
X19wMSA9IF9fZmlyc3QyOyArK19fcDE7CgogICAgICBfRm9yd2FyZEl0ZXIxIF9fY3VycmVudCA9
IF9fZmlyc3QxOwoKICAgICAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEpIHsKICAgICAgICB3
aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSkgewogICAgICAgICAgaWYgKF9fcHJlZGljYXRlKCpf
X2ZpcnN0MSwgKl9fZmlyc3QyKSkKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICArK19fZmly
c3QxOwogICAgICAgIH0KICAgICAgICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiAhX19w
cmVkaWNhdGUoKl9fZmlyc3QxLCAqX19maXJzdDIpKQogICAgICAgICAgKytfX2ZpcnN0MTsKICAg
ICAgICBpZiAoX19maXJzdDEgPT0gX19sYXN0MSkKICAgICAgICAgIHJldHVybiBfX2xhc3QxOwoK
ICAgICAgICBfX3AgPSBfX3AxOwogICAgICAgIF9fY3VycmVudCA9IF9fZmlyc3QxOwogICAgICAg
IGlmICgrK19fY3VycmVudCA9PSBfX2xhc3QxKSByZXR1cm4gX19sYXN0MTsKCiAgICAgICAgd2hp
bGUgKF9fcHJlZGljYXRlKCpfX2N1cnJlbnQsICpfX3ApKSB7CiAgICAgICAgICBpZiAoKytfX3Ag
PT0gX19sYXN0MikKICAgICAgICAgICAgcmV0dXJuIF9fZmlyc3QxOwogICAgICAgICAgaWYgKCsr
X19jdXJyZW50ID09IF9fbGFzdDEpCiAgICAgICAgICAgIHJldHVybiBfX2xhc3QxOwogICAgICAg
IH0KCiAgICAgICAgKytfX2ZpcnN0MTsKICAgICAgfQogICAgICByZXR1cm4gX19maXJzdDE7CiAg
ICB9CiMgNTk2ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4
Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRl
PHR5cGVuYW1lIF9Gb3J3YXJkSXRlciwgdHlwZW5hbWUgX0ludGVnZXIsIHR5cGVuYW1lIF9UcD4K
ICAgIF9Gb3J3YXJkSXRlcgogICAgc2VhcmNoX24oX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3
YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAgICBfSW50ZWdlciBfX2NvdW50LCBjb25zdCBfVHAm
IF9fdmFsKQogICAgewoKICAgICAKICAgICAKCiAgICAgCgogICAgICBpZiAoX19jb3VudCA8PSAw
KQogICAgICAgIHJldHVybiBfX2ZpcnN0OwogICAgICBlbHNlIHsKICAgICAgICBfX2ZpcnN0ID0g
ZmluZChfX2ZpcnN0LCBfX2xhc3QsIF9fdmFsKTsKICAgICAgICB3aGlsZSAoX19maXJzdCAhPSBf
X2xhc3QpIHsKICAgICAgICAgIF9JbnRlZ2VyIF9fbiA9IF9fY291bnQgLSAxOwogICAgICAgICAg
X0ZvcndhcmRJdGVyIF9faSA9IF9fZmlyc3Q7CiAgICAgICAgICArK19faTsKICAgICAgICAgIHdo
aWxlIChfX2kgIT0gX19sYXN0ICYmIF9fbiAhPSAwICYmICpfX2kgPT0gX192YWwpIHsKICAgICAg
ICAgICAgKytfX2k7CiAgICAgICAgICAgIC0tX19uOwogICAgICAgICAgfQogICAgICAgICAgaWYg
KF9fbiA9PSAwKQogICAgICAgICAgICByZXR1cm4gX19maXJzdDsKICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgX19maXJzdCA9IGZpbmQoX19pLCBfX2xhc3QsIF9fdmFsKTsKICAgICAgICB9CiAg
ICAgICAgcmV0dXJuIF9fbGFzdDsKICAgICAgfQogICAgfQojIDY0MyAiL2hvbWUvQWRtaW5pc3Ry
YXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2Mr
Ky9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXIsIHR5
cGVuYW1lIF9JbnRlZ2VyLCB0eXBlbmFtZSBfVHAsCiAgICAgICAgICAgdHlwZW5hbWUgX0JpbmFy
eVByZWQ+CiAgICBfRm9yd2FyZEl0ZXIKICAgIHNlYXJjaF9uKF9Gb3J3YXJkSXRlciBfX2ZpcnN0
LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgX0ludGVnZXIgX19jb3VudCwgY29u
c3QgX1RwJiBfX3ZhbCwKICAgICAgICAgICAgIF9CaW5hcnlQcmVkIF9fYmluYXJ5X3ByZWQpCiAg
ICB7CgogICAgIAogICAgIAoKCiAgICAgIGlmIChfX2NvdW50IDw9IDApCiAgICAgICAgcmV0dXJu
IF9fZmlyc3Q7CiAgICAgIGVsc2UgewogICAgICAgIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkg
ewogICAgICAgICAgaWYgKF9fYmluYXJ5X3ByZWQoKl9fZmlyc3QsIF9fdmFsKSkKICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICArK19fZmlyc3Q7CiAgICAgICAgfQogICAgICAgIHdoaWxlIChf
X2ZpcnN0ICE9IF9fbGFzdCkgewogICAgICAgICAgX0ludGVnZXIgX19uID0gX19jb3VudCAtIDE7
CiAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19pID0gX19maXJzdDsKICAgICAgICAgICsrX19pOwog
ICAgICAgICAgd2hpbGUgKF9faSAhPSBfX2xhc3QgJiYgX19uICE9IDAgJiYgX19iaW5hcnlfcHJl
ZCgqX19pLCBfX3ZhbCkpIHsKICAgICAgICAgICAgKytfX2k7CiAgICAgICAgICAgIC0tX19uOwog
ICAgICAgICAgfQogICAgICAgICAgaWYgKF9fbiA9PSAwKQogICAgICAgICAgICByZXR1cm4gX19m
aXJzdDsKICAgICAgICAgIGVsc2UgewogICAgICAgICAgICB3aGlsZSAoX19pICE9IF9fbGFzdCkg
ewogICAgICAgICAgICAgIGlmIChfX2JpbmFyeV9wcmVkKCpfX2ksIF9fdmFsKSkKICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICsrX19pOwogICAgICAgICAgICB9CiAgICAgICAg
ICAgIF9fZmlyc3QgPSBfX2k7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBf
X2xhc3Q7CiAgICAgIH0KICAgIH0KIyA2OTcgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGlu
Zy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfYWxn
by5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyMSwgdHlwZW5hbWUgX0Zvcndh
cmRJdGVyMj4KICAgIF9Gb3J3YXJkSXRlcjIKICAgIHN3YXBfcmFuZ2VzKF9Gb3J3YXJkSXRlcjEg
X19maXJzdDEsIF9Gb3J3YXJkSXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgIF9Gb3J3YXJk
SXRlcjIgX19maXJzdDIpCiAgICB7CgogICAgIAogICAgIAogICAgIAoKCiAgICAgCgoKCiAgICAg
IGZvciAoIDsgX19maXJzdDEgIT0gX19sYXN0MTsgKytfX2ZpcnN0MSwgKytfX2ZpcnN0MikKICAg
ICAgICBpdGVyX3N3YXAoX19maXJzdDEsIF9fZmlyc3QyKTsKICAgICAgcmV0dXJuIF9fZmlyc3Qy
OwogICAgfQojIDczMiAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGli
L2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyLCB0eXBlbmFtZSBfT3V0cHV0SXRlciwgdHlwZW5hbWUg
X1VuYXJ5T3BlcmF0aW9uPgogICAgX091dHB1dEl0ZXIKICAgIHRyYW5zZm9ybShfSW5wdXRJdGVy
IF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9f
cmVzdWx0LCBfVW5hcnlPcGVyYXRpb24gX191bmFyeV9vcCkKICAgIHsKCiAgICAgCiAgICAgCgoK
CiAgICAgIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCwgKytfX3Jlc3VsdCkK
ICAgICAgICAqX19yZXN1bHQgPSBfX3VuYXJ5X29wKCpfX2ZpcnN0KTsKICAgICAgcmV0dXJuIF9f
cmVzdWx0OwogICAgfQojIDc2NSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9n
Y2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdvLmgiIDMK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyMSwgdHlwZW5hbWUgX0lucHV0SXRlcjIsIHR5
cGVuYW1lIF9PdXRwdXRJdGVyLAogICAgICAgICAgIHR5cGVuYW1lIF9CaW5hcnlPcGVyYXRpb24+
CiAgICBfT3V0cHV0SXRlcgogICAgdHJhbnNmb3JtKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5w
dXRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyLCBfT3V0
cHV0SXRlciBfX3Jlc3VsdCwKICAgICAgICAgICAgICBfQmluYXJ5T3BlcmF0aW9uIF9fYmluYXJ5
X29wKQogICAgewoKICAgICAKICAgICAKICAgICAKCgoKICAgICAgZm9yICggOyBfX2ZpcnN0MSAh
PSBfX2xhc3QxOyArK19fZmlyc3QxLCArK19fZmlyc3QyLCArK19fcmVzdWx0KQogICAgICAgICpf
X3Jlc3VsdCA9IF9fYmluYXJ5X29wKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKTsKICAgICAgcmV0dXJu
IF9fcmVzdWx0OwogICAgfQojIDc5NiAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xp
Yi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdvLmgi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXIsIHR5cGVuYW1lIF9UcD4KICAgIHZv
aWQKICAgIHJlcGxhY2UoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3Qs
CiAgICAgICAgICAgIGNvbnN0IF9UcCYgX19vbGRfdmFsdWUsIGNvbnN0IF9UcCYgX19uZXdfdmFs
dWUpCiAgICB7CgogICAgIAogICAgIAoKICAgICAKCgogICAgICBmb3IgKCA7IF9fZmlyc3QgIT0g
X19sYXN0OyArK19fZmlyc3QpCiAgICAgICAgaWYgKCpfX2ZpcnN0ID09IF9fb2xkX3ZhbHVlKQog
ICAgICAgICAgKl9fZmlyc3QgPSBfX25ld192YWx1ZTsKICAgIH0KIyA4MjUgIi9ob21lL0FkbWlu
aXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVk
ZS9jKysvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVy
LCB0eXBlbmFtZSBfUHJlZGljYXRlLCB0eXBlbmFtZSBfVHA+CiAgICB2b2lkCiAgICByZXBsYWNl
X2lmKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAg
ICAgICBfUHJlZGljYXRlIF9fcHJlZCwgY29uc3QgX1RwJiBfX25ld192YWx1ZSkKICAgIHsKCiAg
ICAgCiAgICAgCgogICAgIAoKCiAgICAgIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19m
aXJzdCkKICAgICAgICBpZiAoX19wcmVkKCpfX2ZpcnN0KSkKICAgICAgICAgICpfX2ZpcnN0ID0g
X19uZXdfdmFsdWU7CiAgICB9CiMgODU2ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3Rpbmcv
bGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2FsZ28u
aCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIsIHR5cGVuYW1lIF9PdXRwdXRJdGVy
LCB0eXBlbmFtZSBfVHA+CiAgICBfT3V0cHV0SXRlcgogICAgcmVwbGFjZV9jb3B5KF9JbnB1dEl0
ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgX091dHB1dEl0
ZXIgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX29sZF92YWx1ZSwgY29u
c3QgX1RwJiBfX25ld192YWx1ZSkKICAgIHsKCiAgICAgCiAgICAgCgogICAgIAoKCiAgICAgIGZv
ciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCwgKytfX3Jlc3VsdCkKICAgICAgICAq
X19yZXN1bHQgPSAqX19maXJzdCA9PSBfX29sZF92YWx1ZSA/IF9fbmV3X3ZhbHVlIDogKl9fZmly
c3Q7CiAgICAgIHJldHVybiBfX3Jlc3VsdDsKICAgIH0KIyA4ODggIi9ob21lL0FkbWluaXN0cmF0
b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysv
Yml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlciwgdHlwZW5h
bWUgX091dHB1dEl0ZXIsIHR5cGVuYW1lIF9QcmVkaWNhdGUsCiAgICAgICAgICAgdHlwZW5hbWUg
X1RwPgogICAgX091dHB1dEl0ZXIKICAgIHJlcGxhY2VfY29weV9pZihfSW5wdXRJdGVyIF9fZmly
c3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9f
cmVzdWx0LAogICAgICAgICAgICAgICAgICAgIF9QcmVkaWNhdGUgX19wcmVkLCBjb25zdCBfVHAm
IF9fbmV3X3ZhbHVlKQogICAgewoKICAgICAKICAgICAKCiAgICAgCgoKICAgICAgZm9yICggOyBf
X2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0LCArK19fcmVzdWx0KQogICAgICAgICpfX3Jlc3Vs
dCA9IF9fcHJlZCgqX19maXJzdCkgPyBfX25ld192YWx1ZSA6ICpfX2ZpcnN0OwogICAgICByZXR1
cm4gX19yZXN1bHQ7CiAgICB9CiMgOTE4ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3Rpbmcv
bGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2FsZ28u
aCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlciwgdHlwZW5hbWUgX0dlbmVyYXRv
cj4KICAgIHZvaWQKICAgIGdlbmVyYXRlKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0
ZXIgX19sYXN0LCBfR2VuZXJhdG9yIF9fZ2VuKQogICAgewoKICAgICAKICAgICAKCgogICAgICBm
b3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiAgICAgICAgKl9fZmlyc3QgPSBf
X2dlbigpOwogICAgfQojIDk0MiAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9n
Y2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdvLmgiIDMK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfT3V0cHV0SXRlciwgdHlwZW5hbWUgX1NpemUsIHR5cGVuYW1l
IF9HZW5lcmF0b3I+CiAgICBfT3V0cHV0SXRlcgogICAgZ2VuZXJhdGVfbihfT3V0cHV0SXRlciBf
X2ZpcnN0LCBfU2l6ZSBfX24sIF9HZW5lcmF0b3IgX19nZW4pCiAgICB7CgogICAgIAoKCgogICAg
ICBmb3IgKCA7IF9fbiA+IDA7IC0tX19uLCArK19fZmlyc3QpCiAgICAgICAgKl9fZmlyc3QgPSBf
X2dlbigpOwogICAgICByZXR1cm4gX19maXJzdDsKICAgIH0KIyA5NjkgIi9ob21lL0FkbWluaXN0
cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9j
KysvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlciwgdHlw
ZW5hbWUgX091dHB1dEl0ZXIsIHR5cGVuYW1lIF9UcD4KICAgIF9PdXRwdXRJdGVyCiAgICByZW1v
dmVfY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAg
ICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQsIGNvbnN0IF9UcCYgX192YWx1ZSkKICAgIHsKCiAg
ICAgCiAgICAgCgogICAgIAoKCiAgICAgIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19m
aXJzdCkKICAgICAgICBpZiAoISgqX19maXJzdCA9PSBfX3ZhbHVlKSkgewogICAgICAgICAgKl9f
cmVzdWx0ID0gKl9fZmlyc3Q7CiAgICAgICAgICArK19fcmVzdWx0OwogICAgICAgIH0KICAgICAg
cmV0dXJuIF9fcmVzdWx0OwogICAgfQojIDEwMDMgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVz
dGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxf
YWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlciwgdHlwZW5hbWUgX091dHB1
dEl0ZXIsIHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgICBfT3V0cHV0SXRlcgogICAgcmVtb3ZlX2Nv
cHlfaWYoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAg
ICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LCBfUHJlZGljYXRlIF9fcHJlZCkKICAgIHsKCiAg
ICAgCiAgICAgCgogICAgIAoKCiAgICAgIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19m
aXJzdCkKICAgICAgICBpZiAoIV9fcHJlZCgqX19maXJzdCkpIHsKICAgICAgICAgICpfX3Jlc3Vs
dCA9ICpfX2ZpcnN0OwogICAgICAgICAgKytfX3Jlc3VsdDsKICAgICAgICB9CiAgICAgIHJldHVy
biBfX3Jlc3VsdDsKICAgIH0KIyAxMDM5ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3Rpbmcv
bGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2FsZ28u
aCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlciwgdHlwZW5hbWUgX1RwPgogICAg
X0ZvcndhcmRJdGVyCiAgICByZW1vdmUoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRl
ciBfX2xhc3QsCiAgICAgICAgICAgY29uc3QgX1RwJiBfX3ZhbHVlKQogICAgewoKICAgICAKICAg
ICAKCiAgICAgCgoKICAgICAgX19maXJzdCA9IGZpbmQoX19maXJzdCwgX19sYXN0LCBfX3ZhbHVl
KTsKICAgICAgX0ZvcndhcmRJdGVyIF9faSA9IF9fZmlyc3Q7CiAgICAgIHJldHVybiBfX2ZpcnN0
ID09IF9fbGFzdCA/IF9fZmlyc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcmVt
b3ZlX2NvcHkoKytfX2ksIF9fbGFzdCwgX19maXJzdCwgX192YWx1ZSk7CiAgICB9CiMgMTA3MyAi
L2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2lu
LzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Rm9yd2FyZEl0ZXIsIHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgICBfRm9yd2FyZEl0ZXIKICAgIHJl
bW92ZV9pZihfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAg
ICAgICAgICBfUHJlZGljYXRlIF9fcHJlZCkKICAgIHsKCiAgICAgCiAgICAgCgoKICAgICAgX19m
aXJzdCA9IGZpbmRfaWYoX19maXJzdCwgX19sYXN0LCBfX3ByZWQpOwogICAgICBfRm9yd2FyZEl0
ZXIgX19pID0gX19maXJzdDsKICAgICAgcmV0dXJuIF9fZmlyc3QgPT0gX19sYXN0ID8gX19maXJz
dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiByZW1vdmVfY29weV9pZigrK19faSwg
X19sYXN0LCBfX2ZpcnN0LCBfX3ByZWQpOwogICAgfQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSW5wdXRJdGVyLCB0eXBlbmFtZSBfT3V0cHV0SXRlcj4KICAgIF9PdXRwdXRJdGVyCiAgICBf
X3VuaXF1ZV9jb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAg
ICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICBvdXRw
dXRfaXRlcmF0b3JfdGFnKQogICAgewoKICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9J
bnB1dEl0ZXI+Ojp2YWx1ZV90eXBlIF9fdmFsdWUgPSAqX19maXJzdDsKICAgICAgKl9fcmVzdWx0
ID0gX192YWx1ZTsKICAgICAgd2hpbGUgKCsrX19maXJzdCAhPSBfX2xhc3QpCiAgICAgICAgaWYg
KCEoX192YWx1ZSA9PSAqX19maXJzdCkpIHsKICAgICAgICAgIF9fdmFsdWUgPSAqX19maXJzdDsK
ICAgICAgICAgICorK19fcmVzdWx0ID0gX192YWx1ZTsKICAgICAgICB9CiAgICAgIHJldHVybiAr
K19fcmVzdWx0OwogICAgfQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyLCB0
eXBlbmFtZSBfRm9yd2FyZEl0ZXI+CiAgICBfRm9yd2FyZEl0ZXIKICAgIF9fdW5pcXVlX2NvcHko
X0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAg
X0ZvcndhcmRJdGVyIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICBmb3J3YXJkX2l0ZXJhdG9y
X3RhZykKICAgIHsKCiAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogICAgICB3aGlsZSAoKytf
X2ZpcnN0ICE9IF9fbGFzdCkKICAgICAgICBpZiAoISgqX19yZXN1bHQgPT0gKl9fZmlyc3QpKQog
ICAgICAgICAgKisrX19yZXN1bHQgPSAqX19maXJzdDsKICAgICAgcmV0dXJuICsrX19yZXN1bHQ7
CiAgICB9CiMgMTE0NSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGli
L2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyLCB0eXBlbmFtZSBfT3V0cHV0SXRlcj4KICAgIGlubGlu
ZSBfT3V0cHV0SXRlcgogICAgdW5pcXVlX2NvcHkoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJ
dGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0KQogICAgewoK
ICAgICAKICAgICAKCiAgICAgCgoKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFp
dHM8X091dHB1dEl0ZXI+OjppdGVyYXRvcl9jYXRlZ29yeSBfSXRlclR5cGU7CgogICAgICBpZiAo
X19maXJzdCA9PSBfX2xhc3QpIHJldHVybiBfX3Jlc3VsdDsKICAgICAgcmV0dXJuIF9fdW5pcXVl
X2NvcHkoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwgX0l0ZXJUeXBlKCkpOwogICAgfQojIDEx
NzAgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5
Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0lucHV0SXRlciwgdHlwZW5hbWUgX091dHB1dEl0ZXIsIHR5cGVuYW1lIF9CaW5hcnlQcmVk
aWNhdGU+CiAgICBfT3V0cHV0SXRlcgogICAgX191bmlxdWVfY29weShfSW5wdXRJdGVyIF9fZmly
c3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jl
c3VsdCwKICAgICAgICAgICAgICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkLAog
ICAgICAgICAgICAgICAgICBvdXRwdXRfaXRlcmF0b3JfdGFnKQogICAgewoKICAgICAKCgoKICAg
ICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXI+Ojp2YWx1ZV90eXBlIF9fdmFs
dWUgPSAqX19maXJzdDsKICAgICAgKl9fcmVzdWx0ID0gX192YWx1ZTsKICAgICAgd2hpbGUgKCsr
X19maXJzdCAhPSBfX2xhc3QpCiAgICAgICAgaWYgKCFfX2JpbmFyeV9wcmVkKF9fdmFsdWUsICpf
X2ZpcnN0KSkgewogICAgICAgICAgX192YWx1ZSA9ICpfX2ZpcnN0OwogICAgICAgICAgKisrX19y
ZXN1bHQgPSBfX3ZhbHVlOwogICAgICAgIH0KICAgICAgcmV0dXJuICsrX19yZXN1bHQ7CiAgICB9
CiMgMTE5OSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYt
cGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSW5wdXRJdGVyLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXIsIHR5cGVuYW1lIF9CaW5h
cnlQcmVkaWNhdGU+CiAgICBfRm9yd2FyZEl0ZXIKICAgIF9fdW5pcXVlX2NvcHkoX0lucHV0SXRl
ciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJ
dGVyIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICBfQmluYXJ5UHJlZGljYXRlIF9fYmluYXJ5
X3ByZWQsCiAgICAgICAgICAgICAgICAgIGZvcndhcmRfaXRlcmF0b3JfdGFnKQogICAgewoKICAg
ICAKCgoKICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3Q7CiAgICAgIHdoaWxlICgrK19fZmlyc3Qg
IT0gX19sYXN0KQogICAgICAgIGlmICghX19iaW5hcnlfcHJlZCgqX19yZXN1bHQsICpfX2ZpcnN0
KSkgKisrX19yZXN1bHQgPSAqX19maXJzdDsKICAgICAgcmV0dXJuICsrX19yZXN1bHQ7CiAgICB9
CiMgMTIzMiAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYt
cGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSW5wdXRJdGVyLCB0eXBlbmFtZSBfT3V0cHV0SXRlciwgdHlwZW5hbWUgX0JpbmFy
eVByZWRpY2F0ZT4KICAgIGlubGluZSBfT3V0cHV0SXRlcgogICAgdW5pcXVlX2NvcHkoX0lucHV0
SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgIF9PdXRwdXRJ
dGVyIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9w
cmVkKQogICAgewoKICAgICAKICAgICAKCgogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9y
X3RyYWl0czxfT3V0cHV0SXRlcj46Oml0ZXJhdG9yX2NhdGVnb3J5IF9JdGVyVHlwZTsKCiAgICAg
IGlmIChfX2ZpcnN0ID09IF9fbGFzdCkgcmV0dXJuIF9fcmVzdWx0OwogICAgICByZXR1cm4gX191
bmlxdWVfY29weShfX2ZpcnN0LCBfX2xhc3QsCl9fcmVzdWx0LCBfX2JpbmFyeV9wcmVkLCBfSXRl
clR5cGUoKSk7CiAgICB9CiMgMTI2MyAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xp
Yi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdvLmgi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXI+CiAgICBfRm9yd2FyZEl0ZXIKICAg
IHVuaXF1ZShfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCkKICAgIHsK
CiAgICAgICAgIAogICAgICAgICAKCgogICAgICAgICAgX19maXJzdCA9IGFkamFjZW50X2ZpbmQo
X19maXJzdCwgX19sYXN0KTsKICAgICAgICAgIHJldHVybiB1bmlxdWVfY29weShfX2ZpcnN0LCBf
X2xhc3QsIF9fZmlyc3QpOwogICAgfQojIDEyOTAgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVz
dGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxf
YWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyLCB0eXBlbmFtZSBfQmlu
YXJ5UHJlZGljYXRlPgogICAgX0ZvcndhcmRJdGVyCiAgICB1bmlxdWUoX0ZvcndhcmRJdGVyIF9f
Zmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAgX0JpbmFyeVByZWRpY2F0ZSBf
X2JpbmFyeV9wcmVkKQogICAgewoKICAgICAKICAgICAKCgoKICAgICAgX19maXJzdCA9IGFkamFj
ZW50X2ZpbmQoX19maXJzdCwgX19sYXN0LCBfX2JpbmFyeV9wcmVkKTsKICAgICAgcmV0dXJuIHVu
aXF1ZV9jb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19maXJzdCwgX19iaW5hcnlfcHJlZCk7CiAgICB9
CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlcj4KICAgIHZvaWQK
ICAgIF9fcmV2ZXJzZShfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwgX0JpZGlyZWN0aW9uYWxJ
dGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBiaWRpcmVjdGlvbmFsX2l0ZXJh
dG9yX3RhZykKICAgIHsKICAgICAgICAgIHdoaWxlICh0cnVlKQogICAgICAgICAgICBpZiAoX19m
aXJzdCA9PSBfX2xhc3QgfHwgX19maXJzdCA9PSAtLV9fbGFzdCkKICAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgIGl0ZXJfc3dhcChfX2Zp
cnN0KyssIF9fbGFzdCk7CiAgICB9CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21B
Y2Nlc3NJdGVyPgogICAgdm9pZAogICAgX19yZXZlcnNlKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmly
c3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBy
YW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykKICAgIHsKICAgICAgICAgIHdoaWxlIChfX2ZpcnN0
IDwgX19sYXN0KQogICAgICAgICAgICBpdGVyX3N3YXAoX19maXJzdCsrLCAtLV9fbGFzdCk7CiAg
ICB9CiMgMTM0OSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2
ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXI+CiAgICBpbmxpbmUgdm9pZAogICAgcmV2ZXJz
ZShfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbGFzdCkK
ICAgIHsKCiAgICAgICAgIAoKICAgICAgICAgIF9fcmV2ZXJzZShfX2ZpcnN0LCBfX2xhc3QsIF9f
aXRlcmF0b3JfY2F0ZWdvcnkoX19maXJzdCkpOwogICAgfQojIDEzNzQgIi9ob21lL0FkbWluaXN0
cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9j
KysvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJ
dGVyLCB0eXBlbmFtZSBfT3V0cHV0SXRlcj4KICAgIF9PdXRwdXRJdGVyCiAgICByZXZlcnNlX2Nv
cHkoX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQpCiAgICB7
CgogICAgIAogICAgIAoKCiAgICAgIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkgewogICAgICAg
IC0tX19sYXN0OwogICAgICAgICpfX3Jlc3VsdCA9ICpfX2xhc3Q7CiAgICAgICAgKytfX3Jlc3Vs
dDsKICAgICAgfQogICAgICByZXR1cm4gX19yZXN1bHQ7CiAgICB9CiMgMTM5OSAiL2hvbWUvQWRt
aW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNs
dWRlL2MrKy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRXVjbGlkZWFu
UmluZ0VsZW1lbnQ+CiAgICBfRXVjbGlkZWFuUmluZ0VsZW1lbnQKICAgIF9fZ2NkKF9FdWNsaWRl
YW5SaW5nRWxlbWVudCBfX20sIF9FdWNsaWRlYW5SaW5nRWxlbWVudCBfX24pCiAgICB7CiAgICAg
IHdoaWxlIChfX24gIT0gMCkgewogICAgICAgIF9FdWNsaWRlYW5SaW5nRWxlbWVudCBfX3QgPSBf
X20gJSBfX247CiAgICAgICAgX19tID0gX19uOwogICAgICAgIF9fbiA9IF9fdDsKICAgICAgfQog
ICAgICByZXR1cm4gX19tOwogICAgfQoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJk
SXRlcj4KICAgIHZvaWQKICAgIF9fcm90YXRlKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LAogICAgICAg
ICAgICAgX0ZvcndhcmRJdGVyIF9fbWlkZGxlLAogICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9f
bGFzdCwKICAgICAgICAgICAgICBmb3J3YXJkX2l0ZXJhdG9yX3RhZykKICAgIHsKICAgICAgaWYg
KChfX2ZpcnN0ID09IF9fbWlkZGxlKSB8fCAoX19sYXN0ID09IF9fbWlkZGxlKSkKICAgICAgICBy
ZXR1cm47CgogICAgICBfRm9yd2FyZEl0ZXIgX19maXJzdDIgPSBfX21pZGRsZTsKICAgICAgZG8g
ewogICAgICAgIHN3YXAoKl9fZmlyc3QrKywgKl9fZmlyc3QyKyspOwogICAgICAgIGlmIChfX2Zp
cnN0ID09IF9fbWlkZGxlKQogICAgICAgICAgX19taWRkbGUgPSBfX2ZpcnN0MjsKICAgICAgfSB3
aGlsZSAoX19maXJzdDIgIT0gX19sYXN0KTsKCiAgICAgIF9fZmlyc3QyID0gX19taWRkbGU7Cgog
ICAgICB3aGlsZSAoX19maXJzdDIgIT0gX19sYXN0KSB7CiAgICAgICAgc3dhcCgqX19maXJzdCsr
LCAqX19maXJzdDIrKyk7CiAgICAgICAgaWYgKF9fZmlyc3QgPT0gX19taWRkbGUpCiAgICAgICAg
ICBfX21pZGRsZSA9IF9fZmlyc3QyOwogICAgICAgIGVsc2UgaWYgKF9fZmlyc3QyID09IF9fbGFz
dCkKICAgICAgICAgIF9fZmlyc3QyID0gX19taWRkbGU7CiAgICAgIH0KICAgIH0KCgoKCgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXI+CiAgICB2b2lkCiAgICBfX3JvdGF0
ZShfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwKICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFs
SXRlciBfX21pZGRsZSwKICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QsCiAg
ICAgICAgICAgICAgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcpCiAgICB7CgogICAgIAoKCiAg
ICAgIGlmICgoX19maXJzdCA9PSBfX21pZGRsZSkgfHwgKF9fbGFzdCA9PSBfX21pZGRsZSkpCiAg
ICAgICAgcmV0dXJuOwoKICAgICAgX19yZXZlcnNlKF9fZmlyc3QsIF9fbWlkZGxlLCBiaWRpcmVj
dGlvbmFsX2l0ZXJhdG9yX3RhZygpKTsKICAgICAgX19yZXZlcnNlKF9fbWlkZGxlLCBfX2xhc3Qs
IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnKCkpOwoKICAgICAgd2hpbGUgKF9fZmlyc3QgIT0g
X19taWRkbGUgJiYgX19taWRkbGUgIT0gX19sYXN0KQogICAgICAgIHN3YXAgKCpfX2ZpcnN0Kyss
ICotLV9fbGFzdCk7CgogICAgICBpZiAoX19maXJzdCA9PSBfX21pZGRsZSkgewogICAgICAgIF9f
cmV2ZXJzZShfX21pZGRsZSwgX19sYXN0LCBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZygpKTsK
ICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBfX3JldmVyc2UoX19maXJzdCwgX19taWRkbGUs
IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnKCkpOwogICAgICB9CiAgICB9CgoKCgoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXI+CiAgICB2b2lkCiAgICBfX3JvdGF0ZShf
UmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIg
X19taWRkbGUsCiAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsCiAgICAgICAg
ICAgICByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykKICAgIHsKCiAgICAgCgoKICAgICAgaWYg
KChfX2ZpcnN0ID09IF9fbWlkZGxlKSB8fCAoX19sYXN0ID09IF9fbWlkZGxlKSkKICAgICAgICBy
ZXR1cm47CgogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNj
ZXNzSXRlcj46OmRpZmZlcmVuY2VfdHlwZSBfRGlzdGFuY2U7CiAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyPjo6dmFsdWVfdHlwZSBfVmFsdWVU
eXBlOwoKICAgICAgX0Rpc3RhbmNlIF9fbiA9IF9fbGFzdCAtIF9fZmlyc3Q7CiAgICAgIF9EaXN0
YW5jZSBfX2sgPSBfX21pZGRsZSAtIF9fZmlyc3Q7CiAgICAgIF9EaXN0YW5jZSBfX2wgPSBfX24g
LSBfX2s7CgogICAgICBpZiAoX19rID09IF9fbCkgewogICAgICAgIHN3YXBfcmFuZ2VzKF9fZmly
c3QsIF9fbWlkZGxlLCBfX21pZGRsZSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBf
RGlzdGFuY2UgX19kID0gX19nY2QoX19uLCBfX2spOwoKICAgICAgZm9yIChfRGlzdGFuY2UgX19p
ID0gMDsgX19pIDwgX19kOyBfX2krKykgewogICAgICAgIF9WYWx1ZVR5cGUgX190bXAgPSAqX19m
aXJzdDsKICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX3AgPSBfX2ZpcnN0OwoKICAgICAgICBp
ZiAoX19rIDwgX19sKSB7CiAgICAgICAgICBmb3IgKF9EaXN0YW5jZSBfX2ogPSAwOyBfX2ogPCBf
X2wvX19kOyBfX2orKykgewogICAgICAgICAgICBpZiAoX19wID4gX19maXJzdCArIF9fbCkgewog
ICAgICAgICAgICAgICpfX3AgPSAqKF9fcCAtIF9fbCk7CiAgICAgICAgICAgICAgX19wIC09IF9f
bDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgKl9fcCA9ICooX19wICsgX19rKTsKICAgICAg
ICAgICAgX19wICs9IF9fazsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGVsc2Ugewog
ICAgICAgICAgZm9yIChfRGlzdGFuY2UgX19qID0gMDsgX19qIDwgX19rL19fZCAtIDE7IF9faiAr
KykgewogICAgICAgICAgICBpZiAoX19wIDwgX19sYXN0IC0gX19rKSB7CiAgICAgICAgICAgICAg
Kl9fcCA9ICooX19wICsgX19rKTsKICAgICAgICAgICAgICBfX3AgKz0gX19rOwogICAgICAgICAg
ICB9CgogICAgICAgICAgICAqX19wID0gKiAoX19wIC0gX19sKTsKICAgICAgICAgICAgX19wIC09
IF9fbDsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICpfX3AgPSBfX3RtcDsKICAgICAg
ICArK19fZmlyc3Q7CiAgICAgIH0KICAgIH0KIyAxNTYxICIvaG9tZS9BZG1pbmlzdHJhdG9yL2dj
Y3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMv
c3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcj4KICAgIGlubGlu
ZSB2b2lkCiAgICByb3RhdGUoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX21p
ZGRsZSwgX0ZvcndhcmRJdGVyIF9fbGFzdCkKICAgIHsKCiAgICAgCgogICAgICB0eXBlZGVmIHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXI+OjppdGVyYXRvcl9jYXRlZ29yeSBf
SXRlclR5cGU7CiAgICAgIF9fcm90YXRlKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QsIF9JdGVy
VHlwZSgpKTsKICAgIH0KIyAxNTg5ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGli
L2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2FsZ28uaCIg
MwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlciwgdHlwZW5hbWUgX091dHB1dEl0ZXI+
CiAgICBfT3V0cHV0SXRlcgogICAgcm90YXRlX2NvcHkoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9G
b3J3YXJkSXRlciBfX21pZGRsZSwKICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX2xhc3Qs
IF9PdXRwdXRJdGVyIF9fcmVzdWx0KQogICAgewoKICAgICAKICAgICAKCgogICAgICByZXR1cm4g
Y29weShfX2ZpcnN0LCBfX21pZGRsZSwgY29weShfX21pZGRsZSwgX19sYXN0LCBfX3Jlc3VsdCkp
OwogICAgfQojIDE2MTIgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0Rpc3RhbmNlPgogICAgaW5saW5lIF9EaXN0YW5jZQogICAgX19yYW5k
b21fbnVtYmVyKF9EaXN0YW5jZSBfX24pCiAgICB7CgogICAgICByZXR1cm4gbHJhbmQ0OCgpICUg
X19uOwoKCgogICAgfQojIDE2MzQgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIv
Z2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfYWxnby5oIiAz
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXI+CiAgICBpbmxpbmUgdm9pZAog
ICAgcmFuZG9tX3NodWZmbGUoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vz
c0l0ZXIgX19sYXN0KQogICAgewoKICAgICAKCgogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3Qp
IHJldHVybjsKICAgICAgZm9yIChfUmFuZG9tQWNjZXNzSXRlciBfX2kgPSBfX2ZpcnN0ICsgMTsg
X19pICE9IF9fbGFzdDsgKytfX2kpCiAgICAgICAgaXRlcl9zd2FwKF9faSwgX19maXJzdCArIF9f
cmFuZG9tX251bWJlcigoX19pIC0gX19maXJzdCkgKyAxKSk7CiAgICB9CiMgMTY2MCAiL2hvbWUv
QWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9p
bmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9t
QWNjZXNzSXRlciwgdHlwZW5hbWUgX1JhbmRvbU51bWJlckdlbmVyYXRvcj4KICAgIHZvaWQKICAg
IHJhbmRvbV9zaHVmZmxlKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJ
dGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgIF9SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9f
cmFuZCkKICAgIHsKCiAgICAgCgoKICAgICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KSByZXR1cm47
CiAgICAgIGZvciAoX1JhbmRvbUFjY2Vzc0l0ZXIgX19pID0gX19maXJzdCArIDE7IF9faSAhPSBf
X2xhc3Q7ICsrX19pKQogICAgICAgIGl0ZXJfc3dhcChfX2ksIF9fZmlyc3QgKyBfX3JhbmQoKF9f
aSAtIF9fZmlyc3QpICsgMSkpOwogICAgfQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9y
d2FyZEl0ZXIsIHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgICBfRm9yd2FyZEl0ZXIKICAgIF9fcGFy
dGl0aW9uKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAg
ICAgICAgICAgX1ByZWRpY2F0ZSBfX3ByZWQsCiAgICAgICAgICAgICAgICBmb3J3YXJkX2l0ZXJh
dG9yX3RhZykKICAgIHsKICAgICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KSByZXR1cm4gX19maXJz
dDsKCiAgICAgIHdoaWxlIChfX3ByZWQoKl9fZmlyc3QpKQogICAgICAgIGlmICgrK19fZmlyc3Qg
PT0gX19sYXN0KSByZXR1cm4gX19maXJzdDsKCiAgICAgIF9Gb3J3YXJkSXRlciBfX25leHQgPSBf
X2ZpcnN0OwoKICAgICAgd2hpbGUgKCsrX19uZXh0ICE9IF9fbGFzdCkKICAgICAgICBpZiAoX19w
cmVkKCpfX25leHQpKSB7CiAgICAgICAgICBzd2FwKCpfX2ZpcnN0LCAqX19uZXh0KTsKICAgICAg
ICAgICsrX19maXJzdDsKICAgICAgICB9CgogICAgICByZXR1cm4gX19maXJzdDsKICAgIH0KCgoK
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXIsIHR5cGVuYW1lIF9QcmVk
aWNhdGU+CiAgICBfQmlkaXJlY3Rpb25hbEl0ZXIKICAgIF9fcGFydGl0aW9uKF9CaWRpcmVjdGlv
bmFsSXRlciBfX2ZpcnN0LCBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0LAogICAgICAgICAgICAg
ICAgX1ByZWRpY2F0ZSBfX3ByZWQsCiAgICAgICAgICAgICAgICBiaWRpcmVjdGlvbmFsX2l0ZXJh
dG9yX3RhZykKICAgIHsKICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICB3aGlsZSAodHJ1ZSkK
ICAgICAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKICAgICAgICAgICAgcmV0dXJuIF9fZmly
c3Q7CiAgICAgICAgICBlbHNlIGlmIChfX3ByZWQoKl9fZmlyc3QpKQogICAgICAgICAgICArK19f
Zmlyc3Q7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIC0tX19sYXN0
OwogICAgICAgIHdoaWxlICh0cnVlKQogICAgICAgICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KQog
ICAgICAgICAgICByZXR1cm4gX19maXJzdDsKICAgICAgICAgIGVsc2UgaWYgKCFfX3ByZWQoKl9f
bGFzdCkpCiAgICAgICAgICAgIC0tX19sYXN0OwogICAgICAgICAgZWxzZQogICAgICAgICAgICBi
cmVhazsKICAgICAgICBpdGVyX3N3YXAoX19maXJzdCwgX19sYXN0KTsKICAgICAgICArK19fZmly
c3Q7CiAgICAgIH0KICAgIH0KIyAxNzQ4ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3Rpbmcv
bGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2FsZ28u
aCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlciwgdHlwZW5hbWUgX1ByZWRpY2F0
ZT4KICAgIGlubGluZSBfRm9yd2FyZEl0ZXIKICAgIHBhcnRpdGlvbihfRm9yd2FyZEl0ZXIgX19m
aXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICBfUHJlZGljYXRlIF9fcHJl
ZCkKICAgIHsKCiAgICAgCiAgICAgCgoKICAgICAgcmV0dXJuIF9fcGFydGl0aW9uKF9fZmlyc3Qs
IF9fbGFzdCwgX19wcmVkLCBfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsKICAgIH0KCgoK
CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyLCB0eXBlbmFtZSBfUHJlZGljYXRl
LCB0eXBlbmFtZSBfRGlzdGFuY2U+CiAgICBfRm9yd2FyZEl0ZXIKICAgIF9faW5wbGFjZV9zdGFi
bGVfcGFydGl0aW9uKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1ByZWRpY2F0ZSBfX3ByZWQsIF9EaXN0YW5j
ZSBfX2xlbikKICAgIHsKICAgICAgaWYgKF9fbGVuID09IDEpCiAgICAgICAgcmV0dXJuIF9fcHJl
ZCgqX19maXJzdCkgPyBfX2xhc3QgOiBfX2ZpcnN0OwogICAgICBfRm9yd2FyZEl0ZXIgX19taWRk
bGUgPSBfX2ZpcnN0OwogICAgICBhZHZhbmNlKF9fbWlkZGxlLCBfX2xlbiAvIDIpOwogICAgICBf
Rm9yd2FyZEl0ZXIgX19iZWdpbiA9IF9faW5wbGFjZV9zdGFibGVfcGFydGl0aW9uKF9fZmlyc3Qs
IF9fbWlkZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fcHJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2xlbiAvIDIpOwogICAgICBfRm9yd2FyZEl0ZXIgX19lbmQgPSBf
X2lucGxhY2Vfc3RhYmxlX3BhcnRpdGlvbihfX21pZGRsZSwgX19sYXN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ByZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbGVuIC0gX19s
ZW4gLyAyKTsKICAgICAgcm90YXRlKF9fYmVnaW4sIF9fbWlkZGxlLCBfX2VuZCk7CiAgICAgIGFk
dmFuY2UoX19iZWdpbiwgc3RkOjpkaXN0YW5jZShfX21pZGRsZSwgX19lbmQpKTsKICAgICAgcmV0
dXJuIF9fYmVnaW47CiAgICB9CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVy
LCB0eXBlbmFtZSBfUG9pbnRlciwgdHlwZW5hbWUgX1ByZWRpY2F0ZSwKICAgICAgICAgICB0eXBl
bmFtZSBfRGlzdGFuY2U+CiAgICBfRm9yd2FyZEl0ZXIKICAgIF9fc3RhYmxlX3BhcnRpdGlvbl9h
ZGFwdGl2ZShfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfUHJlZGljYXRlIF9fcHJlZCwgX0Rpc3RhbmNlIF9f
bGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Qb2ludGVyIF9fYnVmZmVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZSBfX2J1ZmZlcl9zaXplKQog
ICAgewogICAgICBpZiAoX19sZW4gPD0gX19idWZmZXJfc2l6ZSkgewogICAgICAgIF9Gb3J3YXJk
SXRlciBfX3Jlc3VsdDEgPSBfX2ZpcnN0OwogICAgICAgIF9Qb2ludGVyIF9fcmVzdWx0MiA9IF9f
YnVmZmVyOwogICAgICAgIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3QgOyArK19fZmlyc3QpCiAg
ICAgICAgICBpZiAoX19wcmVkKCpfX2ZpcnN0KSkgewogICAgICAgICAgICAqX19yZXN1bHQxID0g
Kl9fZmlyc3Q7CiAgICAgICAgICAgICsrX19yZXN1bHQxOwogICAgICAgICAgfQogICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICpfX3Jlc3VsdDIgPSAqX19maXJzdDsKICAgICAgICAgICAgKytf
X3Jlc3VsdDI7CiAgICAgICAgICB9CiAgICAgICAgY29weShfX2J1ZmZlciwgX19yZXN1bHQyLCBf
X3Jlc3VsdDEpOwogICAgICAgIHJldHVybiBfX3Jlc3VsdDE7CiAgICAgIH0KICAgICAgZWxzZSB7
CiAgICAgICAgX0ZvcndhcmRJdGVyIF9fbWlkZGxlID0gX19maXJzdDsKICAgICAgICBhZHZhbmNl
KF9fbWlkZGxlLCBfX2xlbiAvIDIpOwogICAgICAgIF9Gb3J3YXJkSXRlciBfX2JlZ2luID0gX19z
dGFibGVfcGFydGl0aW9uX2FkYXB0aXZlKF9fZmlyc3QsIF9fbWlkZGxlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcHJlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
X2xlbiAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19idWZmZXIsIF9fYnVmZmVyX3NpemUpOwogICAgICAgIF9Gb3J3YXJkSXRl
ciBfX2VuZCA9IF9fc3RhYmxlX3BhcnRpdGlvbl9hZGFwdGl2ZSggX19taWRkbGUsIF9fbGFzdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fcHJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fbGVuIC0gX19sZW4gLyAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19idWZmZXIsIF9fYnVmZmVyX3NpemUpOwog
ICAgICAgIHJvdGF0ZShfX2JlZ2luLCBfX21pZGRsZSwgX19lbmQpOwogICAgICAgIGFkdmFuY2Uo
X19iZWdpbiwgc3RkOjpkaXN0YW5jZShfX21pZGRsZSwgX19lbmQpKTsKICAgICAgICByZXR1cm4g
X19iZWdpbjsKICAgICAgfQogICAgfQojIDE4NDggIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVz
dGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxf
YWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyLCB0eXBlbmFtZSBfUHJl
ZGljYXRlPgogICAgX0ZvcndhcmRJdGVyCiAgICBzdGFibGVfcGFydGl0aW9uKF9Gb3J3YXJkSXRl
ciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICBfUHJl
ZGljYXRlIF9fcHJlZCkKICAgIHsKCiAgICAgCiAgICAgCgoKICAgICAgaWYgKF9fZmlyc3QgPT0g
X19sYXN0KQogICAgICAgIHJldHVybiBfX2ZpcnN0OwogICAgICBlbHNlCiAgICAgIHsKICAgICAg
ICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXI+Ojp2YWx1ZV90
eXBlIF9WYWx1ZVR5cGU7CiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8
X0ZvcndhcmRJdGVyPjo6ZGlmZmVyZW5jZV90eXBlIF9EaXN0YW5jZVR5cGU7CgogICAgICAgIF9U
ZW1wb3JhcnlfYnVmZmVyPF9Gb3J3YXJkSXRlciwgX1ZhbHVlVHlwZT4gX19idWYoX19maXJzdCwg
X19sYXN0KTsKICAgICAgICBpZiAoX19idWYuc2l6ZSgpID4gMCkKICAgICAgICAgIHJldHVybiBf
X3N0YWJsZV9wYXJ0aXRpb25fYWRhcHRpdmUoX19maXJzdCwgX19sYXN0LCBfX3ByZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZVR5cGUoX19i
dWYucmVxdWVzdGVkX3NpemUoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fYnVmLmJlZ2luKCksIF9fYnVmLnNpemUoKSk7CiAgICAgICAgZWxzZQogICAg
ICAgICAgcmV0dXJuIF9faW5wbGFjZV9zdGFibGVfcGFydGl0aW9uKF9fZmlyc3QsIF9fbGFzdCwg
X19wcmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9EaXN0
YW5jZVR5cGUoX19idWYucmVxdWVzdGVkX3NpemUoKSkpOwogICAgICB9CiAgICB9CgoKCgoKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXIsIHR5cGVuYW1lIF9UcD4KICAgIF9S
YW5kb21BY2Nlc3NJdGVyCiAgICBfX3VuZ3VhcmRlZF9wYXJ0aXRpb24oX1JhbmRvbUFjY2Vzc0l0
ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgIF9UcCBfX3Bpdm90KQogICAgewogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIHdo
aWxlICgqX19maXJzdCA8IF9fcGl2b3QpCiAgICAgICAgICArK19fZmlyc3Q7CiAgICAgICAgLS1f
X2xhc3Q7CiAgICAgICAgd2hpbGUgKF9fcGl2b3QgPCAqX19sYXN0KQogICAgICAgICAgLS1fX2xh
c3Q7CiAgICAgICAgaWYgKCEoX19maXJzdCA8IF9fbGFzdCkpCiAgICAgICAgICByZXR1cm4gX19m
aXJzdDsKICAgICAgICBpdGVyX3N3YXAoX19maXJzdCwgX19sYXN0KTsKICAgICAgICArK19fZmly
c3Q7CiAgICAgIH0KICAgIH0KCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNz
SXRlciwgdHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIF9SYW5kb21BY2Nlc3NJ
dGVyCiAgICBfX3VuZ3VhcmRlZF9wYXJ0aXRpb24oX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwg
X1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIF9UcCBf
X3Bpdm90LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAg
ICAgd2hpbGUgKF9fY29tcCgqX19maXJzdCwgX19waXZvdCkpCiAgICAgICAgICArK19fZmlyc3Q7
CiAgICAgICAgLS1fX2xhc3Q7CiAgICAgICAgd2hpbGUgKF9fY29tcChfX3Bpdm90LCAqX19sYXN0
KSkKICAgICAgICAgIC0tX19sYXN0OwogICAgICAgIGlmICghKF9fZmlyc3QgPCBfX2xhc3QpKQog
ICAgICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICAgICAgaXRlcl9zd2FwKF9fZmlyc3QsIF9fbGFz
dCk7CiAgICAgICAgKytfX2ZpcnN0OwogICAgICB9CiAgICB9CiMgMTkyOSAiL2hvbWUvQWRtaW5p
c3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRl
L2MrKy9iaXRzL3N0bF9hbGdvLmgiIDMKICBlbnVtIHsgX01fdGhyZXNob2xkID0gMTYgfTsKCgoK
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlciwgdHlwZW5hbWUgX1RwPgog
ICAgdm9pZAogICAgX191bmd1YXJkZWRfbGluZWFyX2luc2VydChfUmFuZG9tQWNjZXNzSXRlciBf
X2xhc3QsIF9UcCBfX3ZhbCkKICAgIHsKICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19uZXh0ID0g
X19sYXN0OwogICAgICAtLV9fbmV4dDsKICAgICAgd2hpbGUgKF9fdmFsIDwgKl9fbmV4dCkgewog
ICAgICAgICpfX2xhc3QgPSAqX19uZXh0OwogICAgICAgIF9fbGFzdCA9IF9fbmV4dDsKICAgICAg
ICAtLV9fbmV4dDsKICAgICAgfQogICAgICAqX19sYXN0ID0gX192YWw7CiAgICB9CgoKCgoKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXIsIHR5cGVuYW1lIF9UcCwgdHlwZW5h
bWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBfX3VuZ3VhcmRlZF9saW5lYXJfaW5zZXJ0KF9SYW5k
b21BY2Nlc3NJdGVyIF9fbGFzdCwgX1RwIF9fdmFsLCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAg
ICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbmV4dCA9IF9fbGFzdDsKICAgICAgLS1fX25leHQ7CiAg
ICAgIHdoaWxlIChfX2NvbXAoX192YWwsICpfX25leHQpKSB7CiAgICAgICAgKl9fbGFzdCA9ICpf
X25leHQ7CiAgICAgICAgX19sYXN0ID0gX19uZXh0OwogICAgICAgIC0tX19uZXh0OwogICAgICB9
CiAgICAgICpfX2xhc3QgPSBfX3ZhbDsKICAgIH0KCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
UmFuZG9tQWNjZXNzSXRlcj4KICAgIHZvaWQKICAgIF9faW5zZXJ0aW9uX3NvcnQoX1JhbmRvbUFj
Y2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0KQogICAgewogICAgICBp
ZiAoX19maXJzdCA9PSBfX2xhc3QpIHJldHVybjsKCiAgICAgIGZvciAoX1JhbmRvbUFjY2Vzc0l0
ZXIgX19pID0gX19maXJzdCArIDE7IF9faSAhPSBfX2xhc3Q7ICsrX19pKQogICAgICB7CiAgICAg
ICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyPjo6dmFsdWVfdHlw
ZSBfX3ZhbCA9ICpfX2k7CiAgICAgICAgaWYgKF9fdmFsIDwgKl9fZmlyc3QpIHsKICAgICAgICAg
IGNvcHlfYmFja3dhcmQoX19maXJzdCwgX19pLCBfX2kgKyAxKTsKICAgICAgICAgICpfX2ZpcnN0
ID0gX192YWw7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICAgIF9fdW5ndWFyZGVkX2xp
bmVhcl9pbnNlcnQoX19pLCBfX3ZhbCk7CiAgICAgIH0KICAgIH0KCgoKCgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAg
ICBfX2luc2VydGlvbl9zb3J0KF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5kb21BY2Nl
c3NJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKQogICAg
ewogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QpIHJldHVybjsKCiAgICAgIGZvciAoX1JhbmRv
bUFjY2Vzc0l0ZXIgX19pID0gX19maXJzdCArIDE7IF9faSAhPSBfX2xhc3Q7ICsrX19pKQogICAg
ICB7CiAgICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyPjo6
dmFsdWVfdHlwZSBfX3ZhbCA9ICpfX2k7CiAgICAgICAgaWYgKF9fY29tcChfX3ZhbCwgKl9fZmly
c3QpKSB7CiAgICAgICAgICBjb3B5X2JhY2t3YXJkKF9fZmlyc3QsIF9faSwgX19pICsgMSk7CiAg
ICAgICAgICAqX19maXJzdCA9IF9fdmFsOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAg
ICBfX3VuZ3VhcmRlZF9saW5lYXJfaW5zZXJ0KF9faSwgX192YWwsIF9fY29tcCk7CiAgICAgIH0K
ICAgIH0KCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcj4KICAgIGlu
bGluZSB2b2lkCiAgICBfX3VuZ3VhcmRlZF9pbnNlcnRpb25fc29ydChfUmFuZG9tQWNjZXNzSXRl
ciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QpCiAgICB7CiAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyPjo6dmFsdWVfdHlwZSBf
VmFsdWVUeXBlOwoKICAgICAgZm9yIChfUmFuZG9tQWNjZXNzSXRlciBfX2kgPSBfX2ZpcnN0OyBf
X2kgIT0gX19sYXN0OyArK19faSkKICAgICAgICBfX3VuZ3VhcmRlZF9saW5lYXJfaW5zZXJ0KF9f
aSwgX1ZhbHVlVHlwZSgqX19pKSk7CiAgICB9CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jh
bmRvbUFjY2Vzc0l0ZXIsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgaW5saW5lIHZvaWQKICAgIF9f
dW5ndWFyZGVkX2luc2VydGlvbl9zb3J0KF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5k
b21BY2Nlc3NJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Db21w
YXJlIF9fY29tcCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8
X1JhbmRvbUFjY2Vzc0l0ZXI+Ojp2YWx1ZV90eXBlIF9WYWx1ZVR5cGU7CgogICAgICBmb3IgKF9S
YW5kb21BY2Nlc3NJdGVyIF9faSA9IF9fZmlyc3Q7IF9faSAhPSBfX2xhc3Q7ICsrX19pKQogICAg
ICAgIF9fdW5ndWFyZGVkX2xpbmVhcl9pbnNlcnQoX19pLCBfVmFsdWVUeXBlKCpfX2kpLCBfX2Nv
bXApOwogICAgfQoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyPgog
ICAgdm9pZAogICAgX19maW5hbF9pbnNlcnRpb25fc29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2Zp
cnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QpCiAgICB7CiAgICAgIGlmIChfX2xhc3QgLSBf
X2ZpcnN0ID4gX01fdGhyZXNob2xkKSB7CiAgICAgICAgX19pbnNlcnRpb25fc29ydChfX2ZpcnN0
LCBfX2ZpcnN0ICsgX01fdGhyZXNob2xkKTsKICAgICAgICBfX3VuZ3VhcmRlZF9pbnNlcnRpb25f
c29ydChfX2ZpcnN0ICsgX01fdGhyZXNob2xkLCBfX2xhc3QpOwogICAgICB9CiAgICAgIGVsc2UK
ICAgICAgICBfX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fbGFzdCk7CiAgICB9CgoKCgoKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXIsIHR5cGVuYW1lIF9Db21wYXJlPgog
ICAgdm9pZAogICAgX19maW5hbF9pbnNlcnRpb25fc29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2Zp
cnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAgaWYgKF9fbGFzdCAtIF9fZmlyc3QgPiBfTV90
aHJlc2hvbGQpIHsKICAgICAgICBfX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fZmlyc3QgKyBf
TV90aHJlc2hvbGQsIF9fY29tcCk7CiAgICAgICAgX191bmd1YXJkZWRfaW5zZXJ0aW9uX3NvcnQo
X19maXJzdCArIF9NX3RocmVzaG9sZCwgX19sYXN0LCBfX2NvbXApOwogICAgICB9CiAgICAgIGVs
c2UKICAgICAgICBfX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fbGFzdCwgX19jb21wKTsKICAg
IH0KCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU2l6ZT4KICAgIGlubGluZSBfU2l6ZQogICAg
X19sZyhfU2l6ZSBfX24pCiAgICB7CiAgICAgIF9TaXplIF9fazsKICAgICAgZm9yIChfX2sgPSAw
OyBfX24gIT0gMTsgX19uID4+PSAxKSArK19fazsKICAgICAgcmV0dXJuIF9fazsKICAgIH0KCgoK
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlciwgdHlwZW5hbWUgX1NpemU+
CiAgICB2b2lkCiAgICBfX2ludHJvc29ydF9sb29wKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3Qs
IF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgX1NpemUgX19k
ZXB0aF9saW1pdCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8
X1JhbmRvbUFjY2Vzc0l0ZXI+Ojp2YWx1ZV90eXBlIF9WYWx1ZVR5cGU7CgogICAgICB3aGlsZSAo
X19sYXN0IC0gX19maXJzdCA+IF9NX3RocmVzaG9sZCkgewogICAgICAgIGlmIChfX2RlcHRoX2xp
bWl0ID09IDApIHsKICAgICAgICAgIHBhcnRpYWxfc29ydChfX2ZpcnN0LCBfX2xhc3QsIF9fbGFz
dCk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIC0tX19kZXB0aF9saW1pdDsK
ICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2N1dCA9CiAgICAgICAgICBfX3VuZ3VhcmRlZF9w
YXJ0aXRpb24oX19maXJzdCwgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9WYWx1ZVR5cGUoX19tZWRpYW4oKl9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqKF9fZmlyc3QgKyAoX19sYXN0IC0gX19maXJzdCkv
MiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
KF9fbGFzdCAtIDEpKSkpOwogICAgICAgIF9faW50cm9zb3J0X2xvb3AoX19jdXQsIF9fbGFzdCwg
X19kZXB0aF9saW1pdCk7CiAgICAgICAgX19sYXN0ID0gX19jdXQ7CiAgICAgIH0KICAgIH0KCgoK
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlciwgdHlwZW5hbWUgX1NpemUs
IHR5cGVuYW1lIF9Db21wYXJlPgogICAgdm9pZAogICAgX19pbnRyb3NvcnRfbG9vcChfUmFuZG9t
QWNjZXNzSXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsCiAgICAgICAgICAg
ICAgICAgICAgIF9TaXplIF9fZGVwdGhfbGltaXQsIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXI+Ojp2
YWx1ZV90eXBlIF9WYWx1ZVR5cGU7CgogICAgICB3aGlsZSAoX19sYXN0IC0gX19maXJzdCA+IF9N
X3RocmVzaG9sZCkgewogICAgICAgIGlmIChfX2RlcHRoX2xpbWl0ID09IDApIHsKICAgICAgICAg
IHBhcnRpYWxfc29ydChfX2ZpcnN0LCBfX2xhc3QsIF9fbGFzdCwgX19jb21wKTsKICAgICAgICAg
IHJldHVybjsKICAgICAgICB9CiAgICAgICAgLS1fX2RlcHRoX2xpbWl0OwogICAgICAgIF9SYW5k
b21BY2Nlc3NJdGVyIF9fY3V0ID0KICAgICAgICAgIF9fdW5ndWFyZGVkX3BhcnRpdGlvbihfX2Zp
cnN0LCBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1ZhbHVlVHlwZShf
X21lZGlhbigqX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICooX19maXJzdCArIChfX2xhc3QgLSBfX2ZpcnN0KS8yKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooX19sYXN0IC0gMSks
IF9fY29tcCkpLAogICAgICAgICAgIF9fY29tcCk7CiAgICAgICAgX19pbnRyb3NvcnRfbG9vcChf
X2N1dCwgX19sYXN0LCBfX2RlcHRoX2xpbWl0LCBfX2NvbXApOwogICAgICAgIF9fbGFzdCA9IF9f
Y3V0OwogICAgICB9CiAgICB9CiMgMjE2NiAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5n
L2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdv
LmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcj4KICAgIGlubGluZSB2
b2lkCiAgICBzb3J0KF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVy
IF9fbGFzdCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1Jh
bmRvbUFjY2Vzc0l0ZXI+Ojp2YWx1ZV90eXBlIF9WYWx1ZVR5cGU7CgoKICAgICAKCiAgICAgCgog
ICAgICBpZiAoX19maXJzdCAhPSBfX2xhc3QpIHsKICAgICAgICBfX2ludHJvc29ydF9sb29wKF9f
Zmlyc3QsIF9fbGFzdCwgX19sZyhfX2xhc3QgLSBfX2ZpcnN0KSAqIDIpOwogICAgICAgIF9fZmlu
YWxfaW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19sYXN0KTsKICAgICAgfQogICAgfQojIDIxOTcg
Ii9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dp
bi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1JhbmRvbUFjY2Vzc0l0ZXIsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgaW5saW5lIHZvaWQKICAg
IHNvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0
LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3Jf
dHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyPjo6dmFsdWVfdHlwZSBfVmFsdWVUeXBlOwoKCiAgICAg
CgogICAgIAoKICAgICAgaWYgKF9fZmlyc3QgIT0gX19sYXN0KSB7CiAgICAgICAgX19pbnRyb3Nv
cnRfbG9vcChfX2ZpcnN0LCBfX2xhc3QsIF9fbGcoX19sYXN0IC0gX19maXJzdCkgKiAyLCBfX2Nv
bXApOwogICAgICAgIF9fZmluYWxfaW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19sYXN0LCBfX2Nv
bXApOwogICAgICB9CiAgICB9CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nl
c3NJdGVyPgogICAgdm9pZAogICAgX19pbnBsYWNlX3N0YWJsZV9zb3J0KF9SYW5kb21BY2Nlc3NJ
dGVyIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCkKICAgIHsKICAgICAgaWYgKF9f
bGFzdCAtIF9fZmlyc3QgPCAxNSkgewogICAgICAgIF9faW5zZXJ0aW9uX3NvcnQoX19maXJzdCwg
X19sYXN0KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIg
X19taWRkbGUgPSBfX2ZpcnN0ICsgKF9fbGFzdCAtIF9fZmlyc3QpIC8gMjsKICAgICAgX19pbnBs
YWNlX3N0YWJsZV9zb3J0KF9fZmlyc3QsIF9fbWlkZGxlKTsKICAgICAgX19pbnBsYWNlX3N0YWJs
ZV9zb3J0KF9fbWlkZGxlLCBfX2xhc3QpOwogICAgICBfX21lcmdlX3dpdGhvdXRfYnVmZmVyKF9f
Zmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19t
aWRkbGUgLSBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbGFzdCAtIF9f
bWlkZGxlKTsKICAgIH0KCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRl
ciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBfX2lucGxhY2Vfc3RhYmxlX3NvcnQo
X1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAgaWYgKF9f
bGFzdCAtIF9fZmlyc3QgPCAxNSkgewogICAgICAgIF9faW5zZXJ0aW9uX3NvcnQoX19maXJzdCwg
X19sYXN0LCBfX2NvbXApOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBfUmFuZG9tQWNj
ZXNzSXRlciBfX21pZGRsZSA9IF9fZmlyc3QgKyAoX19sYXN0IC0gX19maXJzdCkgLyAyOwogICAg
ICBfX2lucGxhY2Vfc3RhYmxlX3NvcnQoX19maXJzdCwgX19taWRkbGUsIF9fY29tcCk7CiAgICAg
IF9faW5wbGFjZV9zdGFibGVfc29ydChfX21pZGRsZSwgX19sYXN0LCBfX2NvbXApOwogICAgICBf
X21lcmdlX3dpdGhvdXRfYnVmZmVyKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19taWRkbGUgLSBfX2ZpcnN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fbGFzdCAtIF9fbWlkZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29tcCk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVy
MSwgdHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXIyLAogICAgICAgICAgIHR5cGVuYW1lIF9EaXN0
YW5jZT4KICAgIHZvaWQKICAgIF9fbWVyZ2Vfc29ydF9sb29wKF9SYW5kb21BY2Nlc3NJdGVyMSBf
X2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcjEgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAg
X1JhbmRvbUFjY2Vzc0l0ZXIyIF9fcmVzdWx0LCBfRGlzdGFuY2UgX19zdGVwX3NpemUpCiAgICB7
CiAgICAgIF9EaXN0YW5jZSBfX3R3b19zdGVwID0gMiAqIF9fc3RlcF9zaXplOwoKICAgICAgd2hp
bGUgKF9fbGFzdCAtIF9fZmlyc3QgPj0gX190d29fc3RlcCkgewogICAgICAgIF9fcmVzdWx0ID0g
bWVyZ2UoX19maXJzdCwgX19maXJzdCArIF9fc3RlcF9zaXplLAogICAgICAgICAgICAgICAgICAg
ICAgICAgX19maXJzdCArIF9fc3RlcF9zaXplLCBfX2ZpcnN0ICsgX190d29fc3RlcCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fcmVzdWx0KTsKICAgICAgICBfX2ZpcnN0ICs9IF9fdHdvX3N0
ZXA7CiAgICAgIH0KCiAgICAgIF9fc3RlcF9zaXplID0gc3RkOjptaW4oX0Rpc3RhbmNlKF9fbGFz
dCAtIF9fZmlyc3QpLCBfX3N0ZXBfc2l6ZSk7CiAgICAgIG1lcmdlKF9fZmlyc3QsIF9fZmlyc3Qg
KyBfX3N0ZXBfc2l6ZSwgX19maXJzdCArIF9fc3RlcF9zaXplLCBfX2xhc3QsCiAgICAgICAgICAg
IF9fcmVzdWx0KTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXIx
LCB0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcjIsCiAgICAgICAgICAgdHlwZW5hbWUgX0Rpc3Rh
bmNlLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIHZvaWQKICAgIF9fbWVyZ2Vfc29ydF9sb29wKF9S
YW5kb21BY2Nlc3NJdGVyMSBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcjEgX19sYXN0LAogICAg
ICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIyIF9fcmVzdWx0LCBfRGlzdGFuY2Ug
X19zdGVwX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApCiAgICB7
CiAgICAgIF9EaXN0YW5jZSBfX3R3b19zdGVwID0gMiAqIF9fc3RlcF9zaXplOwoKICAgICAgd2hp
bGUgKF9fbGFzdCAtIF9fZmlyc3QgPj0gX190d29fc3RlcCkgewogICAgICAgIF9fcmVzdWx0ID0g
bWVyZ2UoX19maXJzdCwgX19maXJzdCArIF9fc3RlcF9zaXplLAogICAgICAgICAgICAgICAgICAg
ICAgICAgX19maXJzdCArIF9fc3RlcF9zaXplLCBfX2ZpcnN0ICsgX190d29fc3RlcCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19j
b21wKTsKICAgICAgICBfX2ZpcnN0ICs9IF9fdHdvX3N0ZXA7CiAgICAgIH0KICAgICAgX19zdGVw
X3NpemUgPSBzdGQ6Om1pbihfRGlzdGFuY2UoX19sYXN0IC0gX19maXJzdCksIF9fc3RlcF9zaXpl
KTsKCiAgICAgIG1lcmdlKF9fZmlyc3QsIF9fZmlyc3QgKyBfX3N0ZXBfc2l6ZSwKICAgICAgICAg
ICAgX19maXJzdCArIF9fc3RlcF9zaXplLCBfX2xhc3QsCiAgICAgICAgICAgIF9fcmVzdWx0LAog
ICAgICAgICAgICBfX2NvbXApOwogICAgfQoKICBlbnVtIHsgX01fY2h1bmtfc2l6ZSA9IDcgfTsK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXIsIHR5cGVuYW1lIF9EaXN0YW5j
ZT4KICAgIHZvaWQKICAgIF9fY2h1bmtfaW5zZXJ0aW9uX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIg
X19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBfRGlzdGFuY2UgX19jaHVua19zaXplKQogICAgewogICAgICB3aGlsZSAoX19sYXN0IC0g
X19maXJzdCA+PSBfX2NodW5rX3NpemUpIHsKICAgICAgICBfX2luc2VydGlvbl9zb3J0KF9fZmly
c3QsIF9fZmlyc3QgKyBfX2NodW5rX3NpemUpOwogICAgICAgIF9fZmlyc3QgKz0gX19jaHVua19z
aXplOwogICAgICB9CiAgICAgIF9faW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19sYXN0KTsKICAg
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXIsIHR5cGVuYW1lIF9EaXN0
YW5jZSwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBfX2NodW5rX2luc2VydGlvbl9z
b3J0KF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX0Rpc3RhbmNlIF9fY2h1bmtfc2l6ZSwgX0NvbXBh
cmUgX19jb21wKQogICAgewogICAgICB3aGlsZSAoX19sYXN0IC0gX19maXJzdCA+PSBfX2NodW5r
X3NpemUpIHsKICAgICAgICBfX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fZmlyc3QgKyBfX2No
dW5rX3NpemUsIF9fY29tcCk7CiAgICAgICAgX19maXJzdCArPSBfX2NodW5rX3NpemU7CiAgICAg
IH0KICAgICAgX19pbnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2xhc3QsIF9fY29tcCk7CiAgICB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyLCB0eXBlbmFtZSBfUG9pbnRl
cj4KICAgIHZvaWQKICAgIF9fbWVyZ2Vfc29ydF93aXRoX2J1ZmZlcihfUmFuZG9tQWNjZXNzSXRl
ciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX1BvaW50ZXIgX19idWZmZXIpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
aXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyPjo6ZGlmZmVyZW5jZV90eXBlIF9EaXN0
YW5jZTsKCiAgICAgIF9EaXN0YW5jZSBfX2xlbiA9IF9fbGFzdCAtIF9fZmlyc3Q7CiAgICAgIF9Q
b2ludGVyIF9fYnVmZmVyX2xhc3QgPSBfX2J1ZmZlciArIF9fbGVuOwoKICAgICAgX0Rpc3RhbmNl
IF9fc3RlcF9zaXplID0gX01fY2h1bmtfc2l6ZTsKICAgICAgX19jaHVua19pbnNlcnRpb25fc29y
dChfX2ZpcnN0LCBfX2xhc3QsIF9fc3RlcF9zaXplKTsKCiAgICAgIHdoaWxlIChfX3N0ZXBfc2l6
ZSA8IF9fbGVuKSB7CiAgICAgICAgX19tZXJnZV9zb3J0X2xvb3AoX19maXJzdCwgX19sYXN0LCBf
X2J1ZmZlciwgX19zdGVwX3NpemUpOwogICAgICAgIF9fc3RlcF9zaXplICo9IDI7CiAgICAgICAg
X19tZXJnZV9zb3J0X2xvb3AoX19idWZmZXIsIF9fYnVmZmVyX2xhc3QsIF9fZmlyc3QsIF9fc3Rl
cF9zaXplKTsKICAgICAgICBfX3N0ZXBfc2l6ZSAqPSAyOwogICAgICB9CiAgICB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyLCB0eXBlbmFtZSBfUG9pbnRlciwgdHlwZW5h
bWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBfX21lcmdlX3NvcnRfd2l0aF9idWZmZXIoX1JhbmRv
bUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9Qb2ludGVyIF9fYnVmZmVyLCBfQ29tcGFyZSBfX2NvbXApCiAg
ICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJ
dGVyPjo6ZGlmZmVyZW5jZV90eXBlIF9EaXN0YW5jZTsKCiAgICAgIF9EaXN0YW5jZSBfX2xlbiA9
IF9fbGFzdCAtIF9fZmlyc3Q7CiAgICAgIF9Qb2ludGVyIF9fYnVmZmVyX2xhc3QgPSBfX2J1ZmZl
ciArIF9fbGVuOwoKICAgICAgX0Rpc3RhbmNlIF9fc3RlcF9zaXplID0gX01fY2h1bmtfc2l6ZTsK
ICAgICAgX19jaHVua19pbnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2xhc3QsIF9fc3RlcF9zaXpl
LCBfX2NvbXApOwoKICAgICAgd2hpbGUgKF9fc3RlcF9zaXplIDwgX19sZW4pIHsKICAgICAgICBf
X21lcmdlX3NvcnRfbG9vcChfX2ZpcnN0LCBfX2xhc3QsIF9fYnVmZmVyLCBfX3N0ZXBfc2l6ZSwg
X19jb21wKTsKICAgICAgICBfX3N0ZXBfc2l6ZSAqPSAyOwogICAgICAgIF9fbWVyZ2Vfc29ydF9s
b29wKF9fYnVmZmVyLCBfX2J1ZmZlcl9sYXN0LCBfX2ZpcnN0LCBfX3N0ZXBfc2l6ZSwgX19jb21w
KTsKICAgICAgICBfX3N0ZXBfc2l6ZSAqPSAyOwogICAgICB9CiAgICB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyLCB0eXBlbmFtZSBfUG9pbnRlciwgdHlwZW5hbWUgX0Rp
c3RhbmNlPgogICAgdm9pZAogICAgX19zdGFibGVfc29ydF9hZGFwdGl2ZShfUmFuZG9tQWNjZXNz
SXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9Qb2ludGVyIF9fYnVmZmVyLCBfRGlzdGFuY2UgX19idWZmZXJfc2l6ZSkKICAg
IHsKICAgICAgX0Rpc3RhbmNlIF9fbGVuID0gKF9fbGFzdCAtIF9fZmlyc3QgKyAxKSAvIDI7CiAg
ICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbWlkZGxlID0gX19maXJzdCArIF9fbGVuOwogICAgICBp
ZiAoX19sZW4gPiBfX2J1ZmZlcl9zaXplKSB7CiAgICAgICAgX19zdGFibGVfc29ydF9hZGFwdGl2
ZShfX2ZpcnN0LCBfX21pZGRsZSwgX19idWZmZXIsIF9fYnVmZmVyX3NpemUpOwogICAgICAgIF9f
c3RhYmxlX3NvcnRfYWRhcHRpdmUoX19taWRkbGUsIF9fbGFzdCwgX19idWZmZXIsIF9fYnVmZmVy
X3NpemUpOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgIF9fbWVyZ2Vfc29ydF93aXRoX2J1
ZmZlcihfX2ZpcnN0LCBfX21pZGRsZSwgX19idWZmZXIpOwogICAgICAgIF9fbWVyZ2Vfc29ydF93
aXRoX2J1ZmZlcihfX21pZGRsZSwgX19sYXN0LCBfX2J1ZmZlcik7CiAgICAgIH0KICAgICAgX19t
ZXJnZV9hZGFwdGl2ZShfX2ZpcnN0LCBfX21pZGRsZSwgX19sYXN0LCBfRGlzdGFuY2UoX19taWRk
bGUgLSBfX2ZpcnN0KSwKICAgICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2UoX19sYXN0IC0g
X19taWRkbGUpLCBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSk7CiAgICB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyLCB0eXBlbmFtZSBfUG9pbnRlciwgdHlwZW5hbWUgX0Rp
c3RhbmNlLAogICAgICAgICAgIHR5cGVuYW1lIF9Db21wYXJlPgogICAgdm9pZAogICAgX19zdGFi
bGVfc29ydF9hZGFwdGl2ZShfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNz
SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Qb2ludGVyIF9fYnVmZmVy
LCBfRGlzdGFuY2UgX19idWZmZXJfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX0Nv
bXBhcmUgX19jb21wKQogICAgewogICAgICBfRGlzdGFuY2UgX19sZW4gPSAoX19sYXN0IC0gX19m
aXJzdCArIDEpIC8gMjsKICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19taWRkbGUgPSBfX2ZpcnN0
ICsgX19sZW47CiAgICAgIGlmIChfX2xlbiA+IF9fYnVmZmVyX3NpemUpIHsKICAgICAgICBfX3N0
YWJsZV9zb3J0X2FkYXB0aXZlKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2J1ZmZlciwgX19idWZmZXJf
c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29tcCk7CiAgICAgICAgX19z
dGFibGVfc29ydF9hZGFwdGl2ZShfX21pZGRsZSwgX19sYXN0LCBfX2J1ZmZlciwgX19idWZmZXJf
c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29tcCk7CiAgICAgIH0KICAg
ICAgZWxzZSB7CiAgICAgICAgX19tZXJnZV9zb3J0X3dpdGhfYnVmZmVyKF9fZmlyc3QsIF9fbWlk
ZGxlLCBfX2J1ZmZlciwgX19jb21wKTsKICAgICAgICBfX21lcmdlX3NvcnRfd2l0aF9idWZmZXIo
X19taWRkbGUsIF9fbGFzdCwgX19idWZmZXIsIF9fY29tcCk7CiAgICAgIH0KICAgICAgX19tZXJn
ZV9hZGFwdGl2ZShfX2ZpcnN0LCBfX21pZGRsZSwgX19sYXN0LCBfRGlzdGFuY2UoX19taWRkbGUg
LSBfX2ZpcnN0KSwKICAgICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2UoX19sYXN0IC0gX19t
aWRkbGUpLCBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICBf
X2NvbXApOwogICAgfQojIDI0MzAgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIv
Z2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfYWxnby5oIiAz
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXI+CiAgICBpbmxpbmUgdm9pZAog
ICAgc3RhYmxlX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0
ZXIgX19sYXN0KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxf
UmFuZG9tQWNjZXNzSXRlcj46OnZhbHVlX3R5cGUgX1ZhbHVlVHlwZTsKICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXI+OjpkaWZmZXJlbmNlX3R5
cGUgX0Rpc3RhbmNlVHlwZTsKCgogICAgIAoKICAgICAKCiAgICAgIF9UZW1wb3JhcnlfYnVmZmVy
PF9SYW5kb21BY2Nlc3NJdGVyLCBfVmFsdWVUeXBlPiBidWYoX19maXJzdCwgX19sYXN0KTsKICAg
ICAgaWYgKGJ1Zi5iZWdpbigpID09IDApCiAgICAgICAgX19pbnBsYWNlX3N0YWJsZV9zb3J0KF9f
Zmlyc3QsIF9fbGFzdCk7CiAgICAgIGVsc2UKICAgICAgICBfX3N0YWJsZV9zb3J0X2FkYXB0aXZl
KF9fZmlyc3QsIF9fbGFzdCwgYnVmLmJlZ2luKCksIF9EaXN0YW5jZVR5cGUoYnVmLnNpemUoKSkp
OwogICAgfQojIDI0NjYgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXIsIHR5cGVuYW1lIF9Db21wYXJlPgogICAg
aW5saW5lIHZvaWQKICAgIHN0YWJsZV9zb3J0KF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9S
YW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICB0eXBl
ZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcj46OnZhbHVlX3R5
cGUgX1ZhbHVlVHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1Jh
bmRvbUFjY2Vzc0l0ZXI+OjpkaWZmZXJlbmNlX3R5cGUgX0Rpc3RhbmNlVHlwZTsKCgogICAgIAoK
ICAgICAKCgogICAgICBfVGVtcG9yYXJ5X2J1ZmZlcjxfUmFuZG9tQWNjZXNzSXRlciwgX1ZhbHVl
VHlwZT4gYnVmKF9fZmlyc3QsIF9fbGFzdCk7CiAgICAgIGlmIChidWYuYmVnaW4oKSA9PSAwKQog
ICAgICAgIF9faW5wbGFjZV9zdGFibGVfc29ydChfX2ZpcnN0LCBfX2xhc3QsIF9fY29tcCk7CiAg
ICAgIGVsc2UKICAgICAgICBfX3N0YWJsZV9zb3J0X2FkYXB0aXZlKF9fZmlyc3QsIF9fbGFzdCwg
YnVmLmJlZ2luKCksIF9EaXN0YW5jZVR5cGUoYnVmLnNpemUoKSksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX2NvbXApOwogICAgfQojIDI1MDIgIi9ob21lL0FkbWluaXN0cmF0b3Iv
Z2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0
cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXI+CiAg
ICB2b2lkCiAgICBwYXJ0aWFsX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwKICAgICAg
ICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX21pZGRsZSwKICAgICAgICAgICAgICAgICBf
UmFuZG9tQWNjZXNzSXRlciBfX2xhc3QpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRl
cmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyPjo6dmFsdWVfdHlwZSBfVmFsdWVUeXBlOwoK
CiAgICAgCgogICAgIAoKICAgICAgbWFrZV9oZWFwKF9fZmlyc3QsIF9fbWlkZGxlKTsKICAgICAg
Zm9yIChfUmFuZG9tQWNjZXNzSXRlciBfX2kgPSBfX21pZGRsZTsgX19pIDwgX19sYXN0OyArK19f
aSkKICAgICAgICBpZiAoKl9faSA8ICpfX2ZpcnN0KQogICAgICAgICAgX19wb3BfaGVhcChfX2Zp
cnN0LCBfX21pZGRsZSwgX19pLCBfVmFsdWVUeXBlKCpfX2kpKTsKICAgICAgc29ydF9oZWFwKF9f
Zmlyc3QsIF9fbWlkZGxlKTsKICAgIH0KIyAyNTQwICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rl
c3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3Rs
X2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyLCB0eXBlbmFt
ZSBfQ29tcGFyZT4KICAgIHZvaWQKICAgIHBhcnRpYWxfc29ydChfUmFuZG9tQWNjZXNzSXRlciBf
X2ZpcnN0LAogICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbWlkZGxlLAogICAg
ICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICBf
Q29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJh
aXRzPF9SYW5kb21BY2Nlc3NJdGVyPjo6dmFsdWVfdHlwZSBfVmFsdWVUeXBlOwoKCiAgICAgCgog
ICAgIAoKCiAgICAgIG1ha2VfaGVhcChfX2ZpcnN0LCBfX21pZGRsZSwgX19jb21wKTsKICAgICAg
Zm9yIChfUmFuZG9tQWNjZXNzSXRlciBfX2kgPSBfX21pZGRsZTsgX19pIDwgX19sYXN0OyArK19f
aSkKICAgICAgICBpZiAoX19jb21wKCpfX2ksICpfX2ZpcnN0KSkKICAgICAgICAgIF9fcG9wX2hl
YXAoX19maXJzdCwgX19taWRkbGUsIF9faSwgX1ZhbHVlVHlwZSgqX19pKSwgX19jb21wKTsKICAg
ICAgc29ydF9oZWFwKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2NvbXApOwogICAgfQojIDI1NzkgIi9o
b21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8z
LjQvaW5jbHVkZS9jKysvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lu
cHV0SXRlciwgdHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXI+CiAgICBfUmFuZG9tQWNjZXNzSXRl
cgogICAgcGFydGlhbF9zb3J0X2NvcHkoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9f
bGFzdCwKICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fcmVzdWx0X2Zp
cnN0LAogICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19yZXN1bHRfbGFz
dCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRl
cj46OnZhbHVlX3R5cGUgX0lucHV0VmFsdWVUeXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcj46OnZhbHVlX3R5cGUgX091dHB1dFZhbHVl
VHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vz
c0l0ZXI+OjpkaWZmZXJlbmNlX3R5cGUgX0Rpc3RhbmNlVHlwZTsKCgogICAgIAogICAgIAogICAg
IAogICAgIAoKICAgICAgaWYgKF9fcmVzdWx0X2ZpcnN0ID09IF9fcmVzdWx0X2xhc3QpIHJldHVy
biBfX3Jlc3VsdF9sYXN0OwogICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX3Jlc3VsdF9yZWFsX2xh
c3QgPSBfX3Jlc3VsdF9maXJzdDsKICAgICAgd2hpbGUoX19maXJzdCAhPSBfX2xhc3QgJiYgX19y
ZXN1bHRfcmVhbF9sYXN0ICE9IF9fcmVzdWx0X2xhc3QpIHsKICAgICAgICAqX19yZXN1bHRfcmVh
bF9sYXN0ID0gKl9fZmlyc3Q7CiAgICAgICAgKytfX3Jlc3VsdF9yZWFsX2xhc3Q7CiAgICAgICAg
KytfX2ZpcnN0OwogICAgICB9CiAgICAgIG1ha2VfaGVhcChfX3Jlc3VsdF9maXJzdCwgX19yZXN1
bHRfcmVhbF9sYXN0KTsKICAgICAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KSB7CiAgICAgICAg
aWYgKCpfX2ZpcnN0IDwgKl9fcmVzdWx0X2ZpcnN0KQogICAgICAgICAgX19hZGp1c3RfaGVhcChf
X3Jlc3VsdF9maXJzdCwgX0Rpc3RhbmNlVHlwZSgwKSwKICAgICAgICAgICAgICAgICAgICAgICAg
X0Rpc3RhbmNlVHlwZShfX3Jlc3VsdF9yZWFsX2xhc3QgLSBfX3Jlc3VsdF9maXJzdCksCiAgICAg
ICAgICAgICAgICAgICAgICAgIF9JbnB1dFZhbHVlVHlwZSgqX19maXJzdCkpOwogICAgICAgICsr
X19maXJzdDsKICAgICAgfQogICAgICBzb3J0X2hlYXAoX19yZXN1bHRfZmlyc3QsIF9fcmVzdWx0
X3JlYWxfbGFzdCk7CiAgICAgIHJldHVybiBfX3Jlc3VsdF9yZWFsX2xhc3Q7CiAgICB9CiMgMjYz
MyAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3ln
d2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSW5wdXRJdGVyLCB0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlciwgdHlwZW5hbWUgX0NvbXBh
cmU+CiAgICBfUmFuZG9tQWNjZXNzSXRlcgogICAgcGFydGlhbF9zb3J0X2NvcHkoX0lucHV0SXRl
ciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgIF9SYW5k
b21BY2Nlc3NJdGVyIF9fcmVzdWx0X2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgX1JhbmRv
bUFjY2Vzc0l0ZXIgX19yZXN1bHRfbGFzdCwKICAgICAgICAgICAgICAgICAgICAgIF9Db21wYXJl
IF9fY29tcCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lu
cHV0SXRlcj46OnZhbHVlX3R5cGUgX0lucHV0VmFsdWVUeXBlOwogICAgICB0eXBlZGVmIHR5cGVu
YW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcj46OnZhbHVlX3R5cGUgX091dHB1
dFZhbHVlVHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRv
bUFjY2Vzc0l0ZXI+OjpkaWZmZXJlbmNlX3R5cGUgX0Rpc3RhbmNlVHlwZTsKCgogICAgIAogICAg
IAogICAgIAogICAgIAoKCiAgICAgIGlmIChfX3Jlc3VsdF9maXJzdCA9PSBfX3Jlc3VsdF9sYXN0
KSByZXR1cm4gX19yZXN1bHRfbGFzdDsKICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19yZXN1bHRf
cmVhbF9sYXN0ID0gX19yZXN1bHRfZmlyc3Q7CiAgICAgIHdoaWxlKF9fZmlyc3QgIT0gX19sYXN0
ICYmIF9fcmVzdWx0X3JlYWxfbGFzdCAhPSBfX3Jlc3VsdF9sYXN0KSB7CiAgICAgICAgKl9fcmVz
dWx0X3JlYWxfbGFzdCA9ICpfX2ZpcnN0OwogICAgICAgICsrX19yZXN1bHRfcmVhbF9sYXN0Owog
ICAgICAgICsrX19maXJzdDsKICAgICAgfQogICAgICBtYWtlX2hlYXAoX19yZXN1bHRfZmlyc3Qs
IF9fcmVzdWx0X3JlYWxfbGFzdCwgX19jb21wKTsKICAgICAgd2hpbGUgKF9fZmlyc3QgIT0gX19s
YXN0KSB7CiAgICAgICAgaWYgKF9fY29tcCgqX19maXJzdCwgKl9fcmVzdWx0X2ZpcnN0KSkKICAg
ICAgICAgIF9fYWRqdXN0X2hlYXAoX19yZXN1bHRfZmlyc3QsIF9EaXN0YW5jZVR5cGUoMCksCiAg
ICAgICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZVR5cGUoX19yZXN1bHRfcmVhbF9sYXN0IC0g
X19yZXN1bHRfZmlyc3QpLAogICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRWYWx1ZVR5cGUo
Kl9fZmlyc3QpLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbXApOwogICAgICAgICsrX19m
aXJzdDsKICAgICAgfQogICAgICBzb3J0X2hlYXAoX19yZXN1bHRfZmlyc3QsIF9fcmVzdWx0X3Jl
YWxfbGFzdCwgX19jb21wKTsKICAgICAgcmV0dXJuIF9fcmVzdWx0X3JlYWxfbGFzdDsKICAgIH0K
IyAyNjg2ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1w
Yy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5
cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyPgogICAgdm9pZAogICAgbnRoX2VsZW1lbnQoX1JhbmRv
bUFjY2Vzc0l0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9f
bnRoLAogICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0KQogICAgewogICAg
ICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcj46OnZh
bHVlX3R5cGUgX1ZhbHVlVHlwZTsKCgogICAgIAogICAgIAoKICAgICAgd2hpbGUgKF9fbGFzdCAt
IF9fZmlyc3QgPiAzKSB7CiAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19jdXQgPQogICAgICAg
ICAgX191bmd1YXJkZWRfcGFydGl0aW9uKF9fZmlyc3QsIF9fbGFzdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfVmFsdWVUeXBlKF9fbWVkaWFuKCpfX2ZpcnN0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihfX2ZpcnN0ICsgKF9f
bGFzdCAtIF9fZmlyc3QpLzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKihfX2xhc3QgLSAxKSkpKTsKICAgICAgICBpZiAoX19jdXQgPD0gX19u
dGgpCiAgICAgICAgICBfX2ZpcnN0ID0gX19jdXQ7CiAgICAgICAgZWxzZQogICAgICAgICAgX19s
YXN0ID0gX19jdXQ7CiAgICAgIH0KICAgICAgX19pbnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2xh
c3QpOwogICAgfQojIDI3MjggIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfYWxnby5oIiAzCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXIsIHR5cGVuYW1lIF9Db21wYXJlPgog
ICAgdm9pZAogICAgbnRoX2VsZW1lbnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwKICAgICAg
ICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbnRoLAogICAgICAgICAgICAgICAgX1JhbmRv
bUFjY2Vzc0l0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX0NvbXBhcmUg
X19jb21wKQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFu
ZG9tQWNjZXNzSXRlcj46OnZhbHVlX3R5cGUgX1ZhbHVlVHlwZTsKCgogICAgIAogICAgIAoKCiAg
ICAgIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0ID4gMykgewogICAgICAgIF9SYW5kb21BY2Nlc3NJ
dGVyIF9fY3V0ID0KICAgICAgICAgIF9fdW5ndWFyZGVkX3BhcnRpdGlvbihfX2ZpcnN0LCBfX2xh
c3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1ZhbHVlVHlwZShfX21lZGlhbigq
X19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICooX19maXJzdCArIChfX2xhc3QgLSBfX2ZpcnN0KS8yKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooX19sYXN0IC0gMSksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbXApKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbXApOwogICAgICAgIGlmIChfX2N1dCA8
PSBfX250aCkKICAgICAgICAgIF9fZmlyc3QgPSBfX2N1dDsKICAgICAgICBlbHNlCiAgICAgICAg
ICBfX2xhc3QgPSBfX2N1dDsKICAgICAgfQogICAgICBfX2luc2VydGlvbl9zb3J0KF9fZmlyc3Qs
IF9fbGFzdCwgX19jb21wKTsKICAgIH0KIyAyNzY4ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rl
c3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3Rs
X2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlciwgdHlwZW5hbWUgX1Rw
PgogICAgX0ZvcndhcmRJdGVyCiAgICBsb3dlcl9ib3VuZChfRm9yd2FyZEl0ZXIgX19maXJzdCwg
X0ZvcndhcmRJdGVyIF9fbGFzdCwgY29uc3QgX1RwJiBfX3ZhbCkKICAgIHsKICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyPjo6dmFsdWVfdHlwZSBfVmFs
dWVUeXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0
ZXI+OjpkaWZmZXJlbmNlX3R5cGUgX0Rpc3RhbmNlVHlwZTsKCgoKCgoKICAgICAKICAgICAKICAg
ICAKCiAgICAgIF9EaXN0YW5jZVR5cGUgX19sZW4gPSBzdGQ6OmRpc3RhbmNlKF9fZmlyc3QsIF9f
bGFzdCk7CiAgICAgIF9EaXN0YW5jZVR5cGUgX19oYWxmOwogICAgICBfRm9yd2FyZEl0ZXIgX19t
aWRkbGU7CgogICAgICB3aGlsZSAoX19sZW4gPiAwKSB7CiAgICAgICAgX19oYWxmID0gX19sZW4g
Pj4gMTsKICAgICAgICBfX21pZGRsZSA9IF9fZmlyc3Q7CiAgICAgICAgYWR2YW5jZShfX21pZGRs
ZSwgX19oYWxmKTsKICAgICAgICBpZiAoKl9fbWlkZGxlIDwgX192YWwpIHsKICAgICAgICAgIF9f
Zmlyc3QgPSBfX21pZGRsZTsKICAgICAgICAgICsrX19maXJzdDsKICAgICAgICAgIF9fbGVuID0g
X19sZW4gLSBfX2hhbGYgLSAxOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgICBfX2xl
biA9IF9faGFsZjsKICAgICAgfQogICAgICByZXR1cm4gX19maXJzdDsKICAgIH0KIyAyODE2ICIv
aG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4v
My40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9G
b3J3YXJkSXRlciwgdHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIF9Gb3J3YXJk
SXRlcgogICAgbG93ZXJfYm91bmQoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBf
X2xhc3QsCiAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9fdmFsLCBfQ29tcGFyZSBfX2NvbXAp
CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRl
cj46OnZhbHVlX3R5cGUgX1ZhbHVlVHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRv
cl90cmFpdHM8X0ZvcndhcmRJdGVyPjo6ZGlmZmVyZW5jZV90eXBlIF9EaXN0YW5jZVR5cGU7CgoK
ICAgICAKICAgICAKCiAgICAgIF9EaXN0YW5jZVR5cGUgX19sZW4gPSBzdGQ6OmRpc3RhbmNlKF9f
Zmlyc3QsIF9fbGFzdCk7CiAgICAgIF9EaXN0YW5jZVR5cGUgX19oYWxmOwogICAgICBfRm9yd2Fy
ZEl0ZXIgX19taWRkbGU7CgogICAgICB3aGlsZSAoX19sZW4gPiAwKSB7CiAgICAgICAgX19oYWxm
ID0gX19sZW4gPj4gMTsKICAgICAgICBfX21pZGRsZSA9IF9fZmlyc3Q7CiAgICAgICAgYWR2YW5j
ZShfX21pZGRsZSwgX19oYWxmKTsKICAgICAgICBpZiAoX19jb21wKCpfX21pZGRsZSwgX192YWwp
KSB7CiAgICAgICAgICBfX2ZpcnN0ID0gX19taWRkbGU7CiAgICAgICAgICArK19fZmlyc3Q7CiAg
ICAgICAgICBfX2xlbiA9IF9fbGVuIC0gX19oYWxmIC0gMTsKICAgICAgICB9CiAgICAgICAgZWxz
ZQogICAgICAgICAgX19sZW4gPSBfX2hhbGY7CiAgICAgIH0KICAgICAgcmV0dXJuIF9fZmlyc3Q7
CiAgICB9CiMgMjg1NiAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGli
L2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXIsIHR5cGVuYW1lIF9UcD4KICAgIF9Gb3J3YXJkSXRl
cgogICAgdXBwZXJfYm91bmQoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xh
c3QsIGNvbnN0IF9UcCYgX192YWwpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0
b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcj46OnZhbHVlX3R5cGUgX1ZhbHVlVHlwZTsKICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyPjo6ZGlmZmVyZW5jZV90
eXBlIF9EaXN0YW5jZVR5cGU7CgoKCiAgICAgCiAgICAgCiAgICAgCgogICAgICBfRGlzdGFuY2VU
eXBlIF9fbGVuID0gc3RkOjpkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QpOwogICAgICBfRGlzdGFu
Y2VUeXBlIF9faGFsZjsKICAgICAgX0ZvcndhcmRJdGVyIF9fbWlkZGxlOwoKICAgICAgd2hpbGUg
KF9fbGVuID4gMCkgewogICAgICAgIF9faGFsZiA9IF9fbGVuID4+IDE7CiAgICAgICAgX19taWRk
bGUgPSBfX2ZpcnN0OwogICAgICAgIGFkdmFuY2UoX19taWRkbGUsIF9faGFsZik7CiAgICAgICAg
aWYgKF9fdmFsIDwgKl9fbWlkZGxlKQogICAgICAgICAgX19sZW4gPSBfX2hhbGY7CiAgICAgICAg
ZWxzZSB7CiAgICAgICAgICBfX2ZpcnN0ID0gX19taWRkbGU7CiAgICAgICAgICArK19fZmlyc3Q7
CiAgICAgICAgICBfX2xlbiA9IF9fbGVuIC0gX19oYWxmIC0gMTsKICAgICAgICB9CiAgICAgIH0K
ICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICB9CiMgMjkwMSAiL2hvbWUvQWRtaW5pc3RyYXRvci9n
Y2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRz
L3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXIsIHR5cGVuYW1l
IF9UcCwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBfRm9yd2FyZEl0ZXIKICAgIHVwcGVyX2JvdW5k
KF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAg
ICAgY29uc3QgX1RwJiBfX3ZhbCwgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICB0eXBlZGVm
IHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXI+Ojp2YWx1ZV90eXBlIF9WYWx1
ZVR5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRl
cj46OmRpZmZlcmVuY2VfdHlwZSBfRGlzdGFuY2VUeXBlOwoKCiAgICAgCiAgICAgCgogICAgICBf
RGlzdGFuY2VUeXBlIF9fbGVuID0gc3RkOjpkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QpOwogICAg
ICBfRGlzdGFuY2VUeXBlIF9faGFsZjsKICAgICAgX0ZvcndhcmRJdGVyIF9fbWlkZGxlOwoKICAg
ICAgd2hpbGUgKF9fbGVuID4gMCkgewogICAgICAgIF9faGFsZiA9IF9fbGVuID4+IDE7CiAgICAg
ICAgX19taWRkbGUgPSBfX2ZpcnN0OwogICAgICAgIGFkdmFuY2UoX19taWRkbGUsIF9faGFsZik7
CiAgICAgICAgaWYgKF9fY29tcChfX3ZhbCwgKl9fbWlkZGxlKSkKICAgICAgICAgIF9fbGVuID0g
X19oYWxmOwogICAgICAgIGVsc2UgewogICAgICAgICAgX19maXJzdCA9IF9fbWlkZGxlOwogICAg
ICAgICAgKytfX2ZpcnN0OwogICAgICAgICAgX19sZW4gPSBfX2xlbiAtIF9faGFsZiAtIDE7CiAg
ICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBfX2ZpcnN0OwogICAgfQojIDI5NDggIi9ob21l
L0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQv
aW5jbHVkZS9jKysvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zvcndh
cmRJdGVyLCB0eXBlbmFtZSBfVHA+CiAgICBwYWlyPF9Gb3J3YXJkSXRlciwgX0ZvcndhcmRJdGVy
PgogICAgZXF1YWxfcmFuZ2UoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xh
c3QsIGNvbnN0IF9UcCYgX192YWwpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0
b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcj46OnZhbHVlX3R5cGUgX1ZhbHVlVHlwZTsKICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyPjo6ZGlmZmVyZW5jZV90
eXBlIF9EaXN0YW5jZVR5cGU7CgoKCiAgICAgCiAgICAgCiAgICAgCgogICAgICBfRGlzdGFuY2VU
eXBlIF9fbGVuID0gc3RkOjpkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QpOwogICAgICBfRGlzdGFu
Y2VUeXBlIF9faGFsZjsKICAgICAgX0ZvcndhcmRJdGVyIF9fbWlkZGxlLCBfX2xlZnQsIF9fcmln
aHQ7CgogICAgICB3aGlsZSAoX19sZW4gPiAwKSB7CiAgICAgICAgX19oYWxmID0gX19sZW4gPj4g
MTsKICAgICAgICBfX21pZGRsZSA9IF9fZmlyc3Q7CiAgICAgICAgYWR2YW5jZShfX21pZGRsZSwg
X19oYWxmKTsKICAgICAgICBpZiAoKl9fbWlkZGxlIDwgX192YWwpIHsKICAgICAgICAgIF9fZmly
c3QgPSBfX21pZGRsZTsKICAgICAgICAgICsrX19maXJzdDsKICAgICAgICAgIF9fbGVuID0gX19s
ZW4gLSBfX2hhbGYgLSAxOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChfX3ZhbCA8ICpfX21p
ZGRsZSkKICAgICAgICAgIF9fbGVuID0gX19oYWxmOwogICAgICAgIGVsc2UgewogICAgICAgICAg
X19sZWZ0ID0gbG93ZXJfYm91bmQoX19maXJzdCwgX19taWRkbGUsIF9fdmFsKTsKICAgICAgICAg
IGFkdmFuY2UoX19maXJzdCwgX19sZW4pOwogICAgICAgICAgX19yaWdodCA9IHVwcGVyX2JvdW5k
KCsrX19taWRkbGUsIF9fZmlyc3QsIF9fdmFsKTsKICAgICAgICAgIHJldHVybiBwYWlyPF9Gb3J3
YXJkSXRlciwgX0ZvcndhcmRJdGVyPihfX2xlZnQsIF9fcmlnaHQpOwogICAgICAgIH0KICAgICAg
fQogICAgICByZXR1cm4gcGFpcjxfRm9yd2FyZEl0ZXIsIF9Gb3J3YXJkSXRlcj4oX19maXJzdCwg
X19maXJzdCk7CiAgICB9CiMgMzAwMyAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xp
Yi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL3N0bF9hbGdvLmgi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXIsIHR5cGVuYW1lIF9UcCwgdHlwZW5h
bWUgX0NvbXBhcmU+CiAgICBwYWlyPF9Gb3J3YXJkSXRlciwgX0ZvcndhcmRJdGVyPgogICAgZXF1
YWxfcmFuZ2UoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsIGNvbnN0
IF9UcCYgX192YWwsCiAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcj46OnZhbHVlX3R5
cGUgX1ZhbHVlVHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0Zv
cndhcmRJdGVyPjo6ZGlmZmVyZW5jZV90eXBlIF9EaXN0YW5jZVR5cGU7CgoKICAgICAKICAgICAK
ICAgICAKCiAgICAgIF9EaXN0YW5jZVR5cGUgX19sZW4gPSBzdGQ6OmRpc3RhbmNlKF9fZmlyc3Qs
IF9fbGFzdCk7CiAgICAgIF9EaXN0YW5jZVR5cGUgX19oYWxmOwogICAgICBfRm9yd2FyZEl0ZXIg
X19taWRkbGUsIF9fbGVmdCwgX19yaWdodDsKCiAgICAgIHdoaWxlIChfX2xlbiA+IDApIHsKICAg
ICAgICBfX2hhbGYgPSBfX2xlbiA+PiAxOwogICAgICAgIF9fbWlkZGxlID0gX19maXJzdDsKICAg
ICAgICBhZHZhbmNlKF9fbWlkZGxlLCBfX2hhbGYpOwogICAgICAgIGlmIChfX2NvbXAoKl9fbWlk
ZGxlLCBfX3ZhbCkpIHsKICAgICAgICAgIF9fZmlyc3QgPSBfX21pZGRsZTsKICAgICAgICAgICsr
X19maXJzdDsKICAgICAgICAgIF9fbGVuID0gX19sZW4gLSBfX2hhbGYgLSAxOwogICAgICAgIH0K
ICAgICAgICBlbHNlIGlmIChfX2NvbXAoX192YWwsICpfX21pZGRsZSkpCiAgICAgICAgICBfX2xl
biA9IF9faGFsZjsKICAgICAgICBlbHNlIHsKICAgICAgICAgIF9fbGVmdCA9IGxvd2VyX2JvdW5k
KF9fZmlyc3QsIF9fbWlkZGxlLCBfX3ZhbCwgX19jb21wKTsKICAgICAgICAgIGFkdmFuY2UoX19m
aXJzdCwgX19sZW4pOwogICAgICAgICAgX19yaWdodCA9IHVwcGVyX2JvdW5kKCsrX19taWRkbGUs
IF9fZmlyc3QsIF9fdmFsLCBfX2NvbXApOwogICAgICAgICAgcmV0dXJuIHBhaXI8X0ZvcndhcmRJ
dGVyLCBfRm9yd2FyZEl0ZXI+KF9fbGVmdCwgX19yaWdodCk7CiAgICAgICAgfQogICAgICB9CiAg
ICAgIHJldHVybiBwYWlyPF9Gb3J3YXJkSXRlciwgX0ZvcndhcmRJdGVyPihfX2ZpcnN0LCBfX2Zp
cnN0KTsKICAgIH0KIyAzMDUyICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2dj
Yy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL2JpdHMvc3RsX2FsZ28uaCIgMwog
IHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlciwgdHlwZW5hbWUgX1RwPgogICAgYm9vbAog
ICAgYmluYXJ5X3NlYXJjaChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFz
dCwKICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3ZhbCkKICAgIHsKCgogICAgIAogICAg
IAoKICAgICAKCiAgICAgIF9Gb3J3YXJkSXRlciBfX2kgPSBsb3dlcl9ib3VuZChfX2ZpcnN0LCBf
X2xhc3QsIF9fdmFsKTsKICAgICAgcmV0dXJuIF9faSAhPSBfX2xhc3QgJiYgIShfX3ZhbCA8ICpf
X2kpOwogICAgfQojIDMwODMgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfYWxnby5oIiAzCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyLCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9D
b21wYXJlPgogICAgYm9vbAogICAgYmluYXJ5X3NlYXJjaChfRm9yd2FyZEl0ZXIgX19maXJzdCwg
X0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3ZhbCwg
X0NvbXBhcmUgX19jb21wKQogICAgewoKICAgICAKICAgICAKCiAgICAgCgoKICAgICAgX0Zvcndh
cmRJdGVyIF9faSA9IGxvd2VyX2JvdW5kKF9fZmlyc3QsIF9fbGFzdCwgX192YWwsIF9fY29tcCk7
CiAgICAgIHJldHVybiBfX2kgIT0gX19sYXN0ICYmICFfX2NvbXAoX192YWwsICpfX2kpOwogICAg
fQojIDMxMTUgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2
LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0lucHV0SXRlcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXIyLCB0eXBlbmFtZSBfT3V0
cHV0SXRlcj4KICAgIF9PdXRwdXRJdGVyCiAgICBtZXJnZShfSW5wdXRJdGVyMSBfX2ZpcnN0MSwg
X0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyLCBfSW5w
dXRJdGVyMiBfX2xhc3QyLAogICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQpCiAgICB7Cgog
ICAgIAogICAgIAogICAgIAoKICAgICAKCgogICAgIAoKCiAgICAgIHdoaWxlIChfX2ZpcnN0MSAh
PSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpIHsKICAgICAgICBpZiAoKl9fZmlyc3Qy
IDwgKl9fZmlyc3QxKSB7CiAgICAgICAgICAqX19yZXN1bHQgPSAqX19maXJzdDI7CiAgICAgICAg
ICArK19fZmlyc3QyOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICpfX3Jlc3Vs
dCA9ICpfX2ZpcnN0MTsKICAgICAgICAgICsrX19maXJzdDE7CiAgICAgICAgfQogICAgICAgICsr
X19yZXN1bHQ7CiAgICAgIH0KICAgICAgcmV0dXJuIGNvcHkoX19maXJzdDIsIF9fbGFzdDIsIGNv
cHkoX19maXJzdDEsIF9fbGFzdDEsIF9fcmVzdWx0KSk7CiAgICB9CiMgMzE2NiAiL2hvbWUvQWRt
aW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNs
dWRlL2MrKy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVy
MSwgdHlwZW5hbWUgX0lucHV0SXRlcjIsIHR5cGVuYW1lIF9PdXRwdXRJdGVyLAogICAgICAgICAg
IHR5cGVuYW1lIF9Db21wYXJlPgogICAgX091dHB1dEl0ZXIKICAgIG1lcmdlKF9JbnB1dEl0ZXIx
IF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgX0lucHV0SXRlcjIgX19m
aXJzdDIsIF9JbnB1dEl0ZXIyIF9fbGFzdDIsCiAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3Vs
dCwgX0NvbXBhcmUgX19jb21wKQogICAgewoKICAgICAKICAgICAKICAgICAKCgogICAgIAoKICAg
ICAKCgoKICAgICAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19s
YXN0MikgewogICAgICAgIGlmIChfX2NvbXAoKl9fZmlyc3QyLCAqX19maXJzdDEpKSB7CiAgICAg
ICAgICAqX19yZXN1bHQgPSAqX19maXJzdDI7CiAgICAgICAgICArK19fZmlyc3QyOwogICAgICAg
IH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MTsKICAgICAg
ICAgICsrX19maXJzdDE7CiAgICAgICAgfQogICAgICAgICsrX19yZXN1bHQ7CiAgICAgIH0KICAg
ICAgcmV0dXJuIGNvcHkoX19maXJzdDIsIF9fbGFzdDIsIGNvcHkoX19maXJzdDEsIF9fbGFzdDEs
IF9fcmVzdWx0KSk7CiAgICB9CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9u
YWxJdGVyLCB0eXBlbmFtZSBfRGlzdGFuY2U+CiAgICB2b2lkCiAgICBfX21lcmdlX3dpdGhvdXRf
YnVmZmVyKF9CaWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19taWRkbGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9EaXN0YW5jZSBfX2xlbjEsIF9EaXN0YW5jZSBfX2xlbjIpCiAgICB7CiAgICAgIGlmIChfX2xl
bjEgPT0gMCB8fCBfX2xlbjIgPT0gMCkKICAgICAgICByZXR1cm47CiAgICAgIGlmIChfX2xlbjEg
KyBfX2xlbjIgPT0gMikgewogICAgICAgIGlmICgqX19taWRkbGUgPCAqX19maXJzdCkKICAgICAg
ICAgICAgICBpdGVyX3N3YXAoX19maXJzdCwgX19taWRkbGUpOwogICAgICAgIHJldHVybjsKICAg
ICAgfQogICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdF9jdXQgPSBfX2ZpcnN0OwogICAg
ICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19zZWNvbmRfY3V0ID0gX19taWRkbGU7CiAgICAgIF9EaXN0
YW5jZSBfX2xlbjExID0gMDsKICAgICAgX0Rpc3RhbmNlIF9fbGVuMjIgPSAwOwogICAgICBpZiAo
X19sZW4xID4gX19sZW4yKSB7CiAgICAgICAgX19sZW4xMSA9IF9fbGVuMSAvIDI7CiAgICAgICAg
YWR2YW5jZShfX2ZpcnN0X2N1dCwgX19sZW4xMSk7CiAgICAgICAgX19zZWNvbmRfY3V0ID0gbG93
ZXJfYm91bmQoX19taWRkbGUsIF9fbGFzdCwgKl9fZmlyc3RfY3V0KTsKICAgICAgICBfX2xlbjIy
ID0gc3RkOjpkaXN0YW5jZShfX21pZGRsZSwgX19zZWNvbmRfY3V0KTsKICAgICAgfQogICAgICBl
bHNlIHsKICAgICAgICBfX2xlbjIyID0gX19sZW4yIC8gMjsKICAgICAgICBhZHZhbmNlKF9fc2Vj
b25kX2N1dCwgX19sZW4yMik7CiAgICAgICAgX19maXJzdF9jdXQgPSB1cHBlcl9ib3VuZChfX2Zp
cnN0LCBfX21pZGRsZSwgKl9fc2Vjb25kX2N1dCk7CiAgICAgICAgX19sZW4xMSA9IHN0ZDo6ZGlz
dGFuY2UoX19maXJzdCwgX19maXJzdF9jdXQpOwogICAgICB9CiAgICAgIHJvdGF0ZShfX2ZpcnN0
X2N1dCwgX19taWRkbGUsIF9fc2Vjb25kX2N1dCk7CiAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBf
X25ld19taWRkbGUgPSBfX2ZpcnN0X2N1dDsKICAgICAgYWR2YW5jZShfX25ld19taWRkbGUsIHN0
ZDo6ZGlzdGFuY2UoX19taWRkbGUsIF9fc2Vjb25kX2N1dCkpOwogICAgICBfX21lcmdlX3dpdGhv
dXRfYnVmZmVyKF9fZmlyc3QsIF9fZmlyc3RfY3V0LCBfX25ld19taWRkbGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19sZW4xMSwgX19sZW4yMik7CiAgICAgIF9fbWVyZ2Vfd2l0aG91
dF9idWZmZXIoX19uZXdfbWlkZGxlLCBfX3NlY29uZF9jdXQsIF9fbGFzdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2xlbjEgLSBfX2xlbjExLCBfX2xlbjIgLSBfX2xlbjIyKTsKICAg
IH0KCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXIsIHR5cGVuYW1l
IF9EaXN0YW5jZSwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBfX21lcmdlX3dpdGhv
dXRfYnVmZmVyKF9CaWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19taWRkbGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9EaXN0YW5jZSBfX2xlbjEsIF9EaXN0YW5jZSBfX2xlbjIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAgaWYgKF9fbGVuMSA9PSAwIHx8
IF9fbGVuMiA9PSAwKQogICAgICAgIHJldHVybjsKICAgICAgaWYgKF9fbGVuMSArIF9fbGVuMiA9
PSAyKSB7CiAgICAgICAgaWYgKF9fY29tcCgqX19taWRkbGUsICpfX2ZpcnN0KSkKICAgICAgICAg
ICAgICBpdGVyX3N3YXAoX19maXJzdCwgX19taWRkbGUpOwogICAgICAgIHJldHVybjsKICAgICAg
fQogICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdF9jdXQgPSBfX2ZpcnN0OwogICAgICBf
QmlkaXJlY3Rpb25hbEl0ZXIgX19zZWNvbmRfY3V0ID0gX19taWRkbGU7CiAgICAgIF9EaXN0YW5j
ZSBfX2xlbjExID0gMDsKICAgICAgX0Rpc3RhbmNlIF9fbGVuMjIgPSAwOwogICAgICBpZiAoX19s
ZW4xID4gX19sZW4yKSB7CiAgICAgICAgX19sZW4xMSA9IF9fbGVuMSAvIDI7CiAgICAgICAgYWR2
YW5jZShfX2ZpcnN0X2N1dCwgX19sZW4xMSk7CiAgICAgICAgX19zZWNvbmRfY3V0ID0gbG93ZXJf
Ym91bmQoX19taWRkbGUsIF9fbGFzdCwgKl9fZmlyc3RfY3V0LCBfX2NvbXApOwogICAgICAgIF9f
bGVuMjIgPSBzdGQ6OmRpc3RhbmNlKF9fbWlkZGxlLCBfX3NlY29uZF9jdXQpOwogICAgICB9CiAg
ICAgIGVsc2UgewogICAgICAgIF9fbGVuMjIgPSBfX2xlbjIgLyAyOwogICAgICAgIGFkdmFuY2Uo
X19zZWNvbmRfY3V0LCBfX2xlbjIyKTsKICAgICAgICBfX2ZpcnN0X2N1dCA9IHVwcGVyX2JvdW5k
KF9fZmlyc3QsIF9fbWlkZGxlLCAqX19zZWNvbmRfY3V0LCBfX2NvbXApOwogICAgICAgIF9fbGVu
MTEgPSBzdGQ6OmRpc3RhbmNlKF9fZmlyc3QsIF9fZmlyc3RfY3V0KTsKICAgICAgfQogICAgICBy
b3RhdGUoX19maXJzdF9jdXQsIF9fbWlkZGxlLCBfX3NlY29uZF9jdXQpOwogICAgICBfQmlkaXJl
Y3Rpb25hbEl0ZXIgX19uZXdfbWlkZGxlID0gX19maXJzdF9jdXQ7CiAgICAgIGFkdmFuY2UoX19u
ZXdfbWlkZGxlLCBzdGQ6OmRpc3RhbmNlKF9fbWlkZGxlLCBfX3NlY29uZF9jdXQpKTsKICAgICAg
X19tZXJnZV93aXRob3V0X2J1ZmZlcihfX2ZpcnN0LCBfX2ZpcnN0X2N1dCwgX19uZXdfbWlkZGxl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbGVuMTEsIF9fbGVuMjIsIF9fY29tcCk7
CiAgICAgIF9fbWVyZ2Vfd2l0aG91dF9idWZmZXIoX19uZXdfbWlkZGxlLCBfX3NlY29uZF9jdXQs
IF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xlbjEgLSBfX2xlbjExLCBf
X2xlbjIgLSBfX2xlbjIyLCBfX2NvbXApOwogICAgfQoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9CaWRpcmVjdGlvbmFsSXRlcjEsIHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlcjIsCiAgICAg
ICAgICAgdHlwZW5hbWUgX0Rpc3RhbmNlPgogICAgX0JpZGlyZWN0aW9uYWxJdGVyMQogICAgX19y
b3RhdGVfYWRhcHRpdmUoX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2ZpcnN0LAogICAgICAgICAgICAg
ICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyMSBfX21pZGRsZSwKICAgICAgICAgICAgICAgICAg
ICAgIF9CaWRpcmVjdGlvbmFsSXRlcjEgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgX0Rp
c3RhbmNlIF9fbGVuMSwgX0Rpc3RhbmNlIF9fbGVuMiwKICAgICAgICAgICAgICAgICAgICAgIF9C
aWRpcmVjdGlvbmFsSXRlcjIgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBfRGlzdGFu
Y2UgX19idWZmZXJfc2l6ZSkKICAgIHsKICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyMiBfX2J1ZmZl
cl9lbmQ7CiAgICAgIGlmIChfX2xlbjEgPiBfX2xlbjIgJiYgX19sZW4yIDw9IF9fYnVmZmVyX3Np
emUpIHsKICAgICAgICBfX2J1ZmZlcl9lbmQgPSBjb3B5KF9fbWlkZGxlLCBfX2xhc3QsIF9fYnVm
ZmVyKTsKICAgICAgICBjb3B5X2JhY2t3YXJkKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QpOwog
ICAgICAgIHJldHVybiBjb3B5KF9fYnVmZmVyLCBfX2J1ZmZlcl9lbmQsIF9fZmlyc3QpOwogICAg
ICB9CiAgICAgIGVsc2UgaWYgKF9fbGVuMSA8PSBfX2J1ZmZlcl9zaXplKSB7CiAgICAgICAgX19i
dWZmZXJfZW5kID0gY29weShfX2ZpcnN0LCBfX21pZGRsZSwgX19idWZmZXIpOwogICAgICAgIGNv
cHkoX19taWRkbGUsIF9fbGFzdCwgX19maXJzdCk7CiAgICAgICAgcmV0dXJuIGNvcHlfYmFja3dh
cmQoX19idWZmZXIsIF9fYnVmZmVyX2VuZCwgX19sYXN0KTsKICAgICAgfQogICAgICBlbHNlIHsK
ICAgICAgICByb3RhdGUoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCk7CiAgICAgICAgYWR2YW5j
ZShfX2ZpcnN0LCBzdGQ6OmRpc3RhbmNlKF9fbWlkZGxlLCBfX2xhc3QpKTsKICAgICAgICByZXR1
cm4gX19maXJzdDsKICAgICAgfQogICAgfQoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9CaWRp
cmVjdGlvbmFsSXRlcjEsIHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlcjIsCiAgICAgICAgICAg
dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyMz4KICAgIF9CaWRpcmVjdGlvbmFsSXRlcjMKICAg
IF9fbWVyZ2VfYmFja3dhcmQoX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2ZpcnN0MSwgX0JpZGlyZWN0
aW9uYWxJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0
ZXIyIF9fZmlyc3QyLCBfQmlkaXJlY3Rpb25hbEl0ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgICAg
ICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjMgX19yZXN1bHQpCiAgICB7CiAgICAgIGlmIChfX2Zp
cnN0MSA9PSBfX2xhc3QxKQogICAgICAgIHJldHVybiBjb3B5X2JhY2t3YXJkKF9fZmlyc3QyLCBf
X2xhc3QyLCBfX3Jlc3VsdCk7CiAgICAgIGlmIChfX2ZpcnN0MiA9PSBfX2xhc3QyKQogICAgICAg
IHJldHVybiBjb3B5X2JhY2t3YXJkKF9fZmlyc3QxLCBfX2xhc3QxLCBfX3Jlc3VsdCk7CiAgICAg
IC0tX19sYXN0MTsKICAgICAgLS1fX2xhc3QyOwogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAg
IGlmICgqX19sYXN0MiA8ICpfX2xhc3QxKSB7CiAgICAgICAgICAqLS1fX3Jlc3VsdCA9ICpfX2xh
c3QxOwogICAgICAgICAgaWYgKF9fZmlyc3QxID09IF9fbGFzdDEpCiAgICAgICAgICAgIHJldHVy
biBjb3B5X2JhY2t3YXJkKF9fZmlyc3QyLCArK19fbGFzdDIsIF9fcmVzdWx0KTsKICAgICAgICAg
IC0tX19sYXN0MTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAqLS1fX3Jlc3Vs
dCA9ICpfX2xhc3QyOwogICAgICAgICAgaWYgKF9fZmlyc3QyID09IF9fbGFzdDIpCiAgICAgICAg
ICAgIHJldHVybiBjb3B5X2JhY2t3YXJkKF9fZmlyc3QxLCArK19fbGFzdDEsIF9fcmVzdWx0KTsK
ICAgICAgICAgIC0tX19sYXN0MjsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCgoKCgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXIxLCB0eXBlbmFtZSBfQmlkaXJlY3Rpb25h
bEl0ZXIyLAogICAgICAgICAgIHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlcjMsIHR5cGVuYW1l
IF9Db21wYXJlPgogICAgX0JpZGlyZWN0aW9uYWxJdGVyMwogICAgX19tZXJnZV9iYWNrd2FyZChf
QmlkaXJlY3Rpb25hbEl0ZXIxIF9fZmlyc3QxLCBfQmlkaXJlY3Rpb25hbEl0ZXIxIF9fbGFzdDEs
CiAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjIgX19maXJzdDIsIF9CaWRp
cmVjdGlvbmFsSXRlcjIgX19sYXN0MiwKICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9u
YWxJdGVyMyBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKQog
ICAgewogICAgICBpZiAoX19maXJzdDEgPT0gX19sYXN0MSkKICAgICAgICByZXR1cm4gY29weV9i
YWNrd2FyZChfX2ZpcnN0MiwgX19sYXN0MiwgX19yZXN1bHQpOwogICAgICBpZiAoX19maXJzdDIg
PT0gX19sYXN0MikKICAgICAgICByZXR1cm4gY29weV9iYWNrd2FyZChfX2ZpcnN0MSwgX19sYXN0
MSwgX19yZXN1bHQpOwogICAgICAtLV9fbGFzdDE7CiAgICAgIC0tX19sYXN0MjsKICAgICAgd2hp
bGUgKHRydWUpIHsKICAgICAgICBpZiAoX19jb21wKCpfX2xhc3QyLCAqX19sYXN0MSkpIHsKICAg
ICAgICAgICotLV9fcmVzdWx0ID0gKl9fbGFzdDE7CiAgICAgICAgICBpZiAoX19maXJzdDEgPT0g
X19sYXN0MSkKICAgICAgICAgICAgcmV0dXJuIGNvcHlfYmFja3dhcmQoX19maXJzdDIsICsrX19s
YXN0MiwgX19yZXN1bHQpOwogICAgICAgICAgLS1fX2xhc3QxOwogICAgICAgIH0KICAgICAgICBl
bHNlIHsKICAgICAgICAgICotLV9fcmVzdWx0ID0gKl9fbGFzdDI7CiAgICAgICAgICBpZiAoX19m
aXJzdDIgPT0gX19sYXN0MikKICAgICAgICAgICAgcmV0dXJuIGNvcHlfYmFja3dhcmQoX19maXJz
dDEsICsrX19sYXN0MSwgX19yZXN1bHQpOwogICAgICAgICAgLS1fX2xhc3QyOwogICAgICAgIH0K
ICAgICAgfQogICAgfQoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRl
ciwgdHlwZW5hbWUgX0Rpc3RhbmNlLCB0eXBlbmFtZSBfUG9pbnRlcj4KICAgIHZvaWQKICAgIF9f
bWVyZ2VfYWRhcHRpdmUoX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAg
ICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX21pZGRsZSwKICAgICAgICAgICAgICAgICAgICAg
X0JpZGlyZWN0aW9uYWxJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgX0Rpc3RhbmNl
IF9fbGVuMSwgX0Rpc3RhbmNlIF9fbGVuMiwKICAgICAgICAgICAgICAgICAgICAgX1BvaW50ZXIg
X19idWZmZXIsIF9EaXN0YW5jZSBfX2J1ZmZlcl9zaXplKQogICAgewogICAgICAgICAgaWYgKF9f
bGVuMSA8PSBfX2xlbjIgJiYgX19sZW4xIDw9IF9fYnVmZmVyX3NpemUpIHsKICAgICAgICAgICAg
X1BvaW50ZXIgX19idWZmZXJfZW5kID0gY29weShfX2ZpcnN0LCBfX21pZGRsZSwgX19idWZmZXIp
OwogICAgICAgICAgICBtZXJnZShfX2J1ZmZlciwgX19idWZmZXJfZW5kLCBfX21pZGRsZSwgX19s
YXN0LCBfX2ZpcnN0KTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKF9fbGVuMiA8PSBf
X2J1ZmZlcl9zaXplKSB7CiAgICAgICAgICAgIF9Qb2ludGVyIF9fYnVmZmVyX2VuZCA9IGNvcHko
X19taWRkbGUsIF9fbGFzdCwgX19idWZmZXIpOwogICAgICAgICAgICBfX21lcmdlX2JhY2t3YXJk
KF9fZmlyc3QsIF9fbWlkZGxlLCBfX2J1ZmZlciwgX19idWZmZXJfZW5kLCBfX2xhc3QpOwogICAg
ICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBf
X2ZpcnN0X2N1dCA9IF9fZmlyc3Q7CiAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX3Nl
Y29uZF9jdXQgPSBfX21pZGRsZTsKICAgICAgICAgICAgX0Rpc3RhbmNlIF9fbGVuMTEgPSAwOwog
ICAgICAgICAgICBfRGlzdGFuY2UgX19sZW4yMiA9IDA7CiAgICAgICAgICAgIGlmIChfX2xlbjEg
PiBfX2xlbjIpIHsKICAgICAgICAgICAgICAgICAgX19sZW4xMSA9IF9fbGVuMSAvIDI7CiAgICAg
ICAgICAgICAgICAgIGFkdmFuY2UoX19maXJzdF9jdXQsIF9fbGVuMTEpOwogICAgICAgICAgICAg
ICAgICBfX3NlY29uZF9jdXQgPSBsb3dlcl9ib3VuZChfX21pZGRsZSwgX19sYXN0LCAqX19maXJz
dF9jdXQpOwogICAgICAgICAgICAgICAgICBfX2xlbjIyID0gc3RkOjpkaXN0YW5jZShfX21pZGRs
ZSwgX19zZWNvbmRfY3V0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgX19sZW4yMiA9IF9fbGVuMiAvIDI7CiAgICAgICAgICAgICAgICAgIGFkdmFu
Y2UoX19zZWNvbmRfY3V0LCBfX2xlbjIyKTsKICAgICAgICAgICAgICAgICAgX19maXJzdF9jdXQg
PSB1cHBlcl9ib3VuZChfX2ZpcnN0LCBfX21pZGRsZSwgKl9fc2Vjb25kX2N1dCk7CiAgICAgICAg
ICAgICAgICAgIF9fbGVuMTEgPSBzdGQ6OmRpc3RhbmNlKF9fZmlyc3QsIF9fZmlyc3RfY3V0KTsK
ICAgICAgICAgICAgfQogICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19uZXdfbWlkZGxl
ID0KICAgICAgICAgICAgICAgICAgX19yb3RhdGVfYWRhcHRpdmUoX19maXJzdF9jdXQsIF9fbWlk
ZGxlLCBfX3NlY29uZF9jdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
bGVuMSAtIF9fbGVuMTEsIF9fbGVuMjIsIF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX2J1ZmZlcl9zaXplKTsKICAgICAgICAgICAgX19tZXJnZV9hZGFwdGl2
ZShfX2ZpcnN0LCBfX2ZpcnN0X2N1dCwgX19uZXdfbWlkZGxlLCBfX2xlbjExLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fbGVuMjIsIF9fYnVmZmVyLCBfX2J1ZmZlcl9zaXplKTsKICAg
ICAgICAgICAgX19tZXJnZV9hZGFwdGl2ZShfX25ld19taWRkbGUsIF9fc2Vjb25kX2N1dCwgX19s
YXN0LCBfX2xlbjEgLSBfX2xlbjExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbGVu
MiAtIF9fbGVuMjIsIF9fYnVmZmVyLCBfX2J1ZmZlcl9zaXplKTsKICAgICAgICAgIH0KICAgIH0K
CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXIsIHR5cGVuYW1lIF9E
aXN0YW5jZSwgdHlwZW5hbWUgX1BvaW50ZXIsCiAgICAgICAgICAgdHlwZW5hbWUgX0NvbXBhcmU+
CiAgICB2b2lkCiAgICBfX21lcmdlX2FkYXB0aXZlKF9CaWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0
LAogICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19taWRkbGUsCiAgICAg
ICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAg
ICAgICAgIF9EaXN0YW5jZSBfX2xlbjEsIF9EaXN0YW5jZSBfX2xlbjIsCiAgICAgICAgICAgICAg
ICAgICAgIF9Qb2ludGVyIF9fYnVmZmVyLCBfRGlzdGFuY2UgX19idWZmZXJfc2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICAgICAgaWYgKF9fbGVu
MSA8PSBfX2xlbjIgJiYgX19sZW4xIDw9IF9fYnVmZmVyX3NpemUpIHsKICAgICAgICAgICAgX1Bv
aW50ZXIgX19idWZmZXJfZW5kID0gY29weShfX2ZpcnN0LCBfX21pZGRsZSwgX19idWZmZXIpOwog
ICAgICAgICAgICBtZXJnZShfX2J1ZmZlciwgX19idWZmZXJfZW5kLCBfX21pZGRsZSwgX19sYXN0
LCBfX2ZpcnN0LCBfX2NvbXApOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAoX19sZW4y
IDw9IF9fYnVmZmVyX3NpemUpIHsKICAgICAgICAgICAgX1BvaW50ZXIgX19idWZmZXJfZW5kID0g
Y29weShfX21pZGRsZSwgX19sYXN0LCBfX2J1ZmZlcik7CiAgICAgICAgICAgIF9fbWVyZ2VfYmFj
a3dhcmQoX19maXJzdCwgX19taWRkbGUsIF9fYnVmZmVyLCBfX2J1ZmZlcl9lbmQsIF9fbGFzdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb21wKTsKICAg
ICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIg
X19maXJzdF9jdXQgPSBfX2ZpcnN0OwogICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19z
ZWNvbmRfY3V0ID0gX19taWRkbGU7CiAgICAgICAgICAgIF9EaXN0YW5jZSBfX2xlbjExID0gMDsK
ICAgICAgICAgICAgX0Rpc3RhbmNlIF9fbGVuMjIgPSAwOwogICAgICAgICAgICBpZiAoX19sZW4x
ID4gX19sZW4yKSB7CiAgICAgICAgICAgICAgICAgIF9fbGVuMTEgPSBfX2xlbjEgLyAyOwogICAg
ICAgICAgICAgICAgICBhZHZhbmNlKF9fZmlyc3RfY3V0LCBfX2xlbjExKTsKICAgICAgICAgICAg
ICAgICAgX19zZWNvbmRfY3V0ID0gbG93ZXJfYm91bmQoX19taWRkbGUsIF9fbGFzdCwgKl9fZmly
c3RfY3V0LCBfX2NvbXApOwogICAgICAgICAgICAgICAgICBfX2xlbjIyID0gc3RkOjpkaXN0YW5j
ZShfX21pZGRsZSwgX19zZWNvbmRfY3V0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICAgX19sZW4yMiA9IF9fbGVuMiAvIDI7CiAgICAgICAgICAgICAg
ICAgIGFkdmFuY2UoX19zZWNvbmRfY3V0LCBfX2xlbjIyKTsKICAgICAgICAgICAgICAgICAgX19m
aXJzdF9jdXQgPSB1cHBlcl9ib3VuZChfX2ZpcnN0LCBfX21pZGRsZSwgKl9fc2Vjb25kX2N1dCwg
X19jb21wKTsKICAgICAgICAgICAgICAgICAgX19sZW4xMSA9IHN0ZDo6ZGlzdGFuY2UoX19maXJz
dCwgX19maXJzdF9jdXQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFs
SXRlciBfX25ld19taWRkbGUgPQogICAgICAgICAgICAgICAgICBfX3JvdGF0ZV9hZGFwdGl2ZShf
X2ZpcnN0X2N1dCwgX19taWRkbGUsIF9fc2Vjb25kX2N1dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX19sZW4xIC0gX19sZW4xMSwgX19sZW4yMiwgX19idWZmZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYnVmZmVyX3NpemUpOwogICAgICAgICAg
ICBfX21lcmdlX2FkYXB0aXZlKF9fZmlyc3QsIF9fZmlyc3RfY3V0LCBfX25ld19taWRkbGUsIF9f
bGVuMTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sZW4yMiwgX19idWZmZXIsIF9f
YnVmZmVyX3NpemUsIF9fY29tcCk7CiAgICAgICAgICAgIF9fbWVyZ2VfYWRhcHRpdmUoX19uZXdf
bWlkZGxlLCBfX3NlY29uZF9jdXQsIF9fbGFzdCwgX19sZW4xIC0gX19sZW4xMSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2xlbjIgLSBfX2xlbjIyLCBfX2J1ZmZlciwgX19idWZmZXJf
c2l6ZSwgX19jb21wKTsKICAgICAgICAgIH0KICAgIH0KIyAzNTA4ICIvaG9tZS9BZG1pbmlzdHJh
dG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysr
L2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRl
cj4KICAgIHZvaWQKICAgIGlucGxhY2VfbWVyZ2UoX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3Qs
CiAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX21pZGRsZSwKICAgICAgICAg
ICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbGFzdCkKICAgIHsKICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0JpZGlyZWN0aW9uYWxJdGVyPjo6dmFsdWVfdHlwZQog
ICAgICAgICAgX1ZhbHVlVHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFp
dHM8X0JpZGlyZWN0aW9uYWxJdGVyPjo6ZGlmZmVyZW5jZV90eXBlCiAgICAgICAgICBfRGlzdGFu
Y2VUeXBlOwoKCiAgICAgCgogICAgIAoKICAgICAgaWYgKF9fZmlyc3QgPT0gX19taWRkbGUgfHwg
X19taWRkbGUgPT0gX19sYXN0KQogICAgICAgIHJldHVybjsKCiAgICAgIF9EaXN0YW5jZVR5cGUg
X19sZW4xID0gc3RkOjpkaXN0YW5jZShfX2ZpcnN0LCBfX21pZGRsZSk7CiAgICAgIF9EaXN0YW5j
ZVR5cGUgX19sZW4yID0gc3RkOjpkaXN0YW5jZShfX21pZGRsZSwgX19sYXN0KTsKCiAgICAgIF9U
ZW1wb3JhcnlfYnVmZmVyPF9CaWRpcmVjdGlvbmFsSXRlciwgX1ZhbHVlVHlwZT4gX19idWYoX19m
aXJzdCwgX19sYXN0KTsKICAgICAgaWYgKF9fYnVmLmJlZ2luKCkgPT0gMCkKICAgICAgICBfX21l
cmdlX3dpdGhvdXRfYnVmZmVyKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QsIF9fbGVuMSwgX19s
ZW4yKTsKICAgICAgZWxzZQogICAgICAgIF9fbWVyZ2VfYWRhcHRpdmUoX19maXJzdCwgX19taWRk
bGUsIF9fbGFzdCwgX19sZW4xLCBfX2xlbjIsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2J1
Zi5iZWdpbigpLCBfRGlzdGFuY2VUeXBlKF9fYnVmLnNpemUoKSkpOwogICAgfQojIDM1NTkgIi9o
b21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8z
LjQvaW5jbHVkZS9jKysvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Jp
ZGlyZWN0aW9uYWxJdGVyLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIHZvaWQKICAgIGlucGxhY2Vf
bWVyZ2UoX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgIF9CaWRp
cmVjdGlvbmFsSXRlciBfX21pZGRsZSwKICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJ
dGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKQogICAgewogICAg
ICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfQmlkaXJlY3Rpb25hbEl0ZXI+Ojp2
YWx1ZV90eXBlCiAgICAgICAgICBfVmFsdWVUeXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfQmlkaXJlY3Rpb25hbEl0ZXI+OjpkaWZmZXJlbmNlX3R5cGUKICAgICAg
ICAgIF9EaXN0YW5jZVR5cGU7CgoKICAgICAKCiAgICAgCgoKICAgICAgaWYgKF9fZmlyc3QgPT0g
X19taWRkbGUgfHwgX19taWRkbGUgPT0gX19sYXN0KQogICAgICAgIHJldHVybjsKCiAgICAgIF9E
aXN0YW5jZVR5cGUgX19sZW4xID0gc3RkOjpkaXN0YW5jZShfX2ZpcnN0LCBfX21pZGRsZSk7CiAg
ICAgIF9EaXN0YW5jZVR5cGUgX19sZW4yID0gc3RkOjpkaXN0YW5jZShfX21pZGRsZSwgX19sYXN0
KTsKCiAgICAgIF9UZW1wb3JhcnlfYnVmZmVyPF9CaWRpcmVjdGlvbmFsSXRlciwgX1ZhbHVlVHlw
ZT4gX19idWYoX19maXJzdCwgX19sYXN0KTsKICAgICAgaWYgKF9fYnVmLmJlZ2luKCkgPT0gMCkK
ICAgICAgICBfX21lcmdlX3dpdGhvdXRfYnVmZmVyKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3Qs
IF9fbGVuMSwgX19sZW4yLCBfX2NvbXApOwogICAgICBlbHNlCiAgICAgICAgX19tZXJnZV9hZGFw
dGl2ZShfX2ZpcnN0LCBfX21pZGRsZSwgX19sYXN0LCBfX2xlbjEsIF9fbGVuMiwKICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fYnVmLmJlZ2luKCksIF9EaXN0YW5jZVR5cGUoX19idWYuc2l6ZSgp
KSwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29tcCk7CiAgICB9CgoKCgoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0lucHV0SXRlcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXIyPgogICAgYm9vbAog
ICAgaW5jbHVkZXMoX0lucHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsCiAg
ICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0MikKICAg
IHsKCiAgICAgCiAgICAgCiAgICAgCgoKICAgICAKCgogICAgICB3aGlsZSAoX19maXJzdDEgIT0g
X19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKQogICAgICAgIGlmICgqX19maXJzdDIgPCAq
X19maXJzdDEpCiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgZWxzZSBpZigqX19maXJz
dDEgPCAqX19maXJzdDIpCiAgICAgICAgICArK19fZmlyc3QxOwogICAgICAgIGVsc2UKICAgICAg
ICAgICsrX19maXJzdDEsICsrX19maXJzdDI7CgogICAgICByZXR1cm4gX19maXJzdDIgPT0gX19s
YXN0MjsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcjEsIHR5cGVuYW1lIF9J
bnB1dEl0ZXIyLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGJvb2wKICAgIGluY2x1ZGVzKF9JbnB1
dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgX0lucHV0
SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0ZXIyIF9fbGFzdDIsIF9Db21wYXJlIF9fY29tcCkKICAg
IHsKCiAgICAgCiAgICAgCiAgICAgCgoKICAgICAKCgoKICAgICAgd2hpbGUgKF9fZmlyc3QxICE9
IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0MikKICAgICAgICBpZiAoX19jb21wKCpfX2Zp
cnN0MiwgKl9fZmlyc3QxKSkKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICBlbHNlIGlm
KF9fY29tcCgqX19maXJzdDEsICpfX2ZpcnN0MikpCiAgICAgICAgICArK19fZmlyc3QxOwogICAg
ICAgIGVsc2UKICAgICAgICAgICsrX19maXJzdDEsICsrX19maXJzdDI7CgogICAgICByZXR1cm4g
X19maXJzdDIgPT0gX19sYXN0MjsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRl
cjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXIyLCB0eXBlbmFtZSBfT3V0cHV0SXRlcj4KICAgIF9PdXRw
dXRJdGVyCiAgICBzZXRfdW5pb24oX0lucHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9f
bGFzdDEsCiAgICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0ZXIyIF9f
bGFzdDIsCiAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQpCiAgICB7CgogICAgIAog
ICAgIAogICAgIAoKICAgICAKCgogICAgIAoKCiAgICAgIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xh
c3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpIHsKICAgICAgICBpZiAoKl9fZmlyc3QxIDwgKl9f
Zmlyc3QyKSB7CiAgICAgICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7CiAgICAgICAgICArK19f
Zmlyc3QxOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICgqX19maXJzdDIgPCAqX19maXJzdDEp
IHsKICAgICAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MjsKICAgICAgICAgICsrX19maXJzdDI7
CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3Qx
OwogICAgICAgICAgKytfX2ZpcnN0MTsKICAgICAgICAgICsrX19maXJzdDI7CiAgICAgICAgfQog
ICAgICAgICsrX19yZXN1bHQ7CiAgICAgIH0KICAgICAgcmV0dXJuIGNvcHkoX19maXJzdDIsIF9f
bGFzdDIsIGNvcHkoX19maXJzdDEsIF9fbGFzdDEsIF9fcmVzdWx0KSk7CiAgICB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIxLCB0eXBlbmFtZSBfSW5wdXRJdGVyMiwgdHlwZW5hbWUg
X091dHB1dEl0ZXIsCiAgICAgICAgICAgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBfT3V0cHV0SXRl
cgogICAgc2V0X3VuaW9uKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3Qx
LAogICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xhc3Qy
LAogICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LCBfQ29tcGFyZSBfX2NvbXApCiAg
ICB7CgogICAgIAogICAgIAogICAgIAoKCiAgICAgCgogICAgIAoKCgogICAgICB3aGlsZSAoX19m
aXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKSB7CiAgICAgICAgaWYgKF9f
Y29tcCgqX19maXJzdDEsICpfX2ZpcnN0MikpIHsKICAgICAgICAgICpfX3Jlc3VsdCA9ICpfX2Zp
cnN0MTsKICAgICAgICAgICsrX19maXJzdDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKF9f
Y29tcCgqX19maXJzdDIsICpfX2ZpcnN0MSkpIHsKICAgICAgICAgICpfX3Jlc3VsdCA9ICpfX2Zp
cnN0MjsKICAgICAgICAgICsrX19maXJzdDI7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAg
ICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QxOwogICAgICAgICAgKytfX2ZpcnN0MTsKICAgICAg
ICAgICsrX19maXJzdDI7CiAgICAgICAgfQogICAgICAgICsrX19yZXN1bHQ7CiAgICAgIH0KICAg
ICAgcmV0dXJuIGNvcHkoX19maXJzdDIsIF9fbGFzdDIsIGNvcHkoX19maXJzdDEsIF9fbGFzdDEs
IF9fcmVzdWx0KSk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIxLCB0eXBl
bmFtZSBfSW5wdXRJdGVyMiwgdHlwZW5hbWUgX091dHB1dEl0ZXI+CiAgICBfT3V0cHV0SXRlcgog
ICAgc2V0X2ludGVyc2VjdGlvbihfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19s
YXN0MSwKICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0
ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0KQog
ICAgewoKICAgICAKICAgICAKICAgICAKCiAgICAgCgoKICAgICAKCgogICAgICB3aGlsZSAoX19m
aXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKQogICAgICAgIGlmICgqX19m
aXJzdDEgPCAqX19maXJzdDIpCiAgICAgICAgICArK19fZmlyc3QxOwogICAgICAgIGVsc2UgaWYg
KCpfX2ZpcnN0MiA8ICpfX2ZpcnN0MSkKICAgICAgICAgICsrX19maXJzdDI7CiAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7CiAgICAgICAgICArK19fZmlyc3Qx
OwogICAgICAgICAgKytfX2ZpcnN0MjsKICAgICAgICAgICsrX19yZXN1bHQ7CiAgICAgICAgfQog
ICAgICByZXR1cm4gX19yZXN1bHQ7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0
ZXIxLCB0eXBlbmFtZSBfSW5wdXRJdGVyMiwgdHlwZW5hbWUgX091dHB1dEl0ZXIsCiAgICAgICAg
ICAgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBfT3V0cHV0SXRlcgogICAgc2V0X2ludGVyc2VjdGlv
bihfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAg
ICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0ZXIyIF9fbGFzdDIsCiAgICAg
ICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LCBfQ29tcGFyZSBfX2NvbXApCiAg
ICB7CgogICAgIAogICAgIAogICAgIAoKCiAgICAgCgogICAgIAoKCgogICAgICB3aGlsZSAoX19m
aXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKQogICAgICAgIGlmIChfX2Nv
bXAoKl9fZmlyc3QxLCAqX19maXJzdDIpKQogICAgICAgICAgKytfX2ZpcnN0MTsKICAgICAgICBl
bHNlIGlmIChfX2NvbXAoKl9fZmlyc3QyLCAqX19maXJzdDEpKQogICAgICAgICAgKytfX2ZpcnN0
MjsKICAgICAgICBlbHNlIHsKICAgICAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MTsKICAgICAg
ICAgICsrX19maXJzdDE7CiAgICAgICAgICArK19fZmlyc3QyOwogICAgICAgICAgKytfX3Jlc3Vs
dDsKICAgICAgICB9CiAgICAgIHJldHVybiBfX3Jlc3VsdDsKICAgIH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0lucHV0SXRlcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXIyLCB0eXBlbmFtZSBfT3V0cHV0
SXRlcj4KICAgIF9PdXRwdXRJdGVyCiAgICBzZXRfZGlmZmVyZW5jZShfSW5wdXRJdGVyMSBfX2Zp
cnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIy
IF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xhc3QyLAogICAgICAgICAgICAgICAgICAgX091dHB1
dEl0ZXIgX19yZXN1bHQpCiAgICB7CgogICAgIAogICAgIAogICAgIAoKICAgICAKCgogICAgIAoK
CiAgICAgIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIp
CiAgICAgICAgaWYgKCpfX2ZpcnN0MSA8ICpfX2ZpcnN0MikgewogICAgICAgICAgKl9fcmVzdWx0
ID0gKl9fZmlyc3QxOwogICAgICAgICAgKytfX2ZpcnN0MTsKICAgICAgICAgICsrX19yZXN1bHQ7
CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKCpfX2ZpcnN0MiA8ICpfX2ZpcnN0MSkKICAgICAg
ICAgICsrX19maXJzdDI7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICArK19fZmlyc3QxOwogICAg
ICAgICAgKytfX2ZpcnN0MjsKICAgICAgICB9CiAgICAgIHJldHVybiBjb3B5KF9fZmlyc3QxLCBf
X2xhc3QxLCBfX3Jlc3VsdCk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIx
LCB0eXBlbmFtZSBfSW5wdXRJdGVyMiwgdHlwZW5hbWUgX091dHB1dEl0ZXIsCiAgICAgICAgICAg
dHlwZW5hbWUgX0NvbXBhcmU+CiAgICBfT3V0cHV0SXRlcgogICAgc2V0X2RpZmZlcmVuY2UoX0lu
cHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAg
ICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0MiwKICAgICAgICAgICAg
ICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CgogICAg
IAogICAgIAogICAgIAoKCiAgICAgCgogICAgIAoKCgogICAgICB3aGlsZSAoX19maXJzdDEgIT0g
X19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKQogICAgICAgIGlmIChfX2NvbXAoKl9fZmly
c3QxLCAqX19maXJzdDIpKSB7CiAgICAgICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7CiAgICAg
ICAgICArK19fZmlyc3QxOwogICAgICAgICAgKytfX3Jlc3VsdDsKICAgICAgICB9CiAgICAgICAg
ZWxzZSBpZiAoX19jb21wKCpfX2ZpcnN0MiwgKl9fZmlyc3QxKSkKICAgICAgICAgICsrX19maXJz
dDI7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICArK19fZmlyc3QxOwogICAgICAgICAgKytfX2Zp
cnN0MjsKICAgICAgICB9CiAgICAgIHJldHVybiBjb3B5KF9fZmlyc3QxLCBfX2xhc3QxLCBfX3Jl
c3VsdCk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIxLCB0eXBlbmFtZSBf
SW5wdXRJdGVyMiwgdHlwZW5hbWUgX091dHB1dEl0ZXI+CiAgICBfT3V0cHV0SXRlcgogICAgc2V0
X3N5bW1ldHJpY19kaWZmZXJlbmNlKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBf
X2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3Qy
LCBfSW5wdXRJdGVyMiBfX2xhc3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9PdXRw
dXRJdGVyIF9fcmVzdWx0KQogICAgewoKICAgICAKICAgICAKICAgICAKCiAgICAgCgoKICAgICAK
CgogICAgICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3Qy
KQogICAgICAgIGlmICgqX19maXJzdDEgPCAqX19maXJzdDIpIHsKICAgICAgICAgICpfX3Jlc3Vs
dCA9ICpfX2ZpcnN0MTsKICAgICAgICAgICsrX19maXJzdDE7CiAgICAgICAgICArK19fcmVzdWx0
OwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICgqX19maXJzdDIgPCAqX19maXJzdDEpIHsKICAg
ICAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MjsKICAgICAgICAgICsrX19maXJzdDI7CiAgICAg
ICAgICArK19fcmVzdWx0OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICsrX19m
aXJzdDE7CiAgICAgICAgICArK19fZmlyc3QyOwogICAgICAgIH0KICAgICAgcmV0dXJuIGNvcHko
X19maXJzdDIsIF9fbGFzdDIsIGNvcHkoX19maXJzdDEsIF9fbGFzdDEsIF9fcmVzdWx0KSk7CiAg
ICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIxLCB0eXBlbmFtZSBfSW5wdXRJdGVy
MiwgdHlwZW5hbWUgX091dHB1dEl0ZXIsCiAgICAgICAgICAgdHlwZW5hbWUgX0NvbXBhcmU+CiAg
ICBfT3V0cHV0SXRlcgogICAgc2V0X3N5bW1ldHJpY19kaWZmZXJlbmNlKF9JbnB1dEl0ZXIxIF9f
Zmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9JbnB1dEl0ZXIyIF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xhc3QyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9Db21wYXJlIF9fY29tcCkKICAgIHsKCiAgICAgCiAgICAgCiAgICAgCgoKICAg
ICAKCiAgICAgCgoKCiAgICAgIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3Qy
ICE9IF9fbGFzdDIpCiAgICAgICAgaWYgKF9fY29tcCgqX19maXJzdDEsICpfX2ZpcnN0MikpIHsK
ICAgICAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MTsKICAgICAgICAgICsrX19maXJzdDE7CiAg
ICAgICAgICArK19fcmVzdWx0OwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChfX2NvbXAoKl9f
Zmlyc3QyLCAqX19maXJzdDEpKSB7CiAgICAgICAgICAqX19yZXN1bHQgPSAqX19maXJzdDI7CiAg
ICAgICAgICArK19fZmlyc3QyOwogICAgICAgICAgKytfX3Jlc3VsdDsKICAgICAgICB9CiAgICAg
ICAgZWxzZSB7CiAgICAgICAgICArK19fZmlyc3QxOwogICAgICAgICAgKytfX2ZpcnN0MjsKICAg
ICAgICB9CiAgICAgIHJldHVybiBjb3B5KF9fZmlyc3QyLCBfX2xhc3QyLCBjb3B5KF9fZmlyc3Qx
LCBfX2xhc3QxLCBfX3Jlc3VsdCkpOwogICAgfQoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9y
d2FyZEl0ZXI+CiAgICBfRm9yd2FyZEl0ZXIKICAgIG1heF9lbGVtZW50KF9Gb3J3YXJkSXRlciBf
X2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0KQogICAgewoKICAgICAKICAgICAKCgogICAgICBp
ZiAoX19maXJzdCA9PSBfX2xhc3QpIHJldHVybiBfX2ZpcnN0OwogICAgICBfRm9yd2FyZEl0ZXIg
X19yZXN1bHQgPSBfX2ZpcnN0OwogICAgICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFzdCkKICAg
ICAgICBpZiAoKl9fcmVzdWx0IDwgKl9fZmlyc3QpCiAgICAgICAgICBfX3Jlc3VsdCA9IF9fZmly
c3Q7CiAgICAgIHJldHVybiBfX3Jlc3VsdDsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zv
cndhcmRJdGVyLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIF9Gb3J3YXJkSXRlcgogICAgbWF4X2Vs
ZW1lbnQoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAg
ICAgICAgICBfQ29tcGFyZSBfX2NvbXApCiAgICB7CgogICAgIAogICAgIAoKCgogICAgICBpZiAo
X19maXJzdCA9PSBfX2xhc3QpIHJldHVybiBfX2ZpcnN0OwogICAgICBfRm9yd2FyZEl0ZXIgX19y
ZXN1bHQgPSBfX2ZpcnN0OwogICAgICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFzdCkKICAgICAg
ICBpZiAoX19jb21wKCpfX3Jlc3VsdCwgKl9fZmlyc3QpKSBfX3Jlc3VsdCA9IF9fZmlyc3Q7CiAg
ICAgIHJldHVybiBfX3Jlc3VsdDsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJ
dGVyPgogICAgX0ZvcndhcmRJdGVyCiAgICBtaW5fZWxlbWVudChfRm9yd2FyZEl0ZXIgX19maXJz
dCwgX0ZvcndhcmRJdGVyIF9fbGFzdCkKICAgIHsKCiAgICAgCiAgICAgCgoKICAgICAgaWYgKF9f
Zmlyc3QgPT0gX19sYXN0KSByZXR1cm4gX19maXJzdDsKICAgICAgX0ZvcndhcmRJdGVyIF9fcmVz
dWx0ID0gX19maXJzdDsKICAgICAgd2hpbGUgKCsrX19maXJzdCAhPSBfX2xhc3QpCiAgICAgICAg
aWYgKCpfX2ZpcnN0IDwgKl9fcmVzdWx0KQogICAgICAgICAgX19yZXN1bHQgPSBfX2ZpcnN0Owog
ICAgICByZXR1cm4gX19yZXN1bHQ7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJk
SXRlciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBfRm9yd2FyZEl0ZXIKICAgIG1pbl9lbGVtZW50
KF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAg
ICAgX0NvbXBhcmUgX19jb21wKQogICAgewoKICAgICAKICAgICAKCgoKICAgICAgaWYgKF9fZmly
c3QgPT0gX19sYXN0KSByZXR1cm4gX19maXJzdDsKICAgICAgX0ZvcndhcmRJdGVyIF9fcmVzdWx0
ID0gX19maXJzdDsKICAgICAgd2hpbGUgKCsrX19maXJzdCAhPSBfX2xhc3QpCiAgICAgICAgaWYg
KF9fY29tcCgqX19maXJzdCwgKl9fcmVzdWx0KSkKICAgICAgICAgIF9fcmVzdWx0ID0gX19maXJz
dDsKICAgICAgcmV0dXJuIF9fcmVzdWx0OwogICAgfQoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
QmlkaXJlY3Rpb25hbEl0ZXI+CiAgICBib29sCiAgICBuZXh0X3Blcm11dGF0aW9uKF9CaWRpcmVj
dGlvbmFsSXRlciBfX2ZpcnN0LCBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0KQogICAgewoKICAg
ICAKICAgICAKCgogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19pID0gX19maXJzdDsKICAgICAgKytfX2k7
CiAgICAgIGlmIChfX2kgPT0gX19sYXN0KQogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgX19p
ID0gX19sYXN0OwogICAgICAtLV9faTsKCiAgICAgIGZvcig7OykgewogICAgICAgIF9CaWRpcmVj
dGlvbmFsSXRlciBfX2lpID0gX19pOwogICAgICAgIC0tX19pOwogICAgICAgIGlmICgqX19pIDwg
Kl9faWkpIHsKICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2ogPSBfX2xhc3Q7CiAgICAg
ICAgICB3aGlsZSAoISgqX19pIDwgKi0tX19qKSkKICAgICAgICAgICAge30KICAgICAgICAgIGl0
ZXJfc3dhcChfX2ksIF9faik7CiAgICAgICAgICByZXZlcnNlKF9faWksIF9fbGFzdCk7CiAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKF9faSA9PSBfX2ZpcnN0KSB7
CiAgICAgICAgICByZXZlcnNlKF9fZmlyc3QsIF9fbGFzdCk7CiAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9CaWRpcmVj
dGlvbmFsSXRlciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBib29sCiAgICBuZXh0X3Blcm11dGF0
aW9uKF9CaWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0LCBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0
LAogICAgICAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApCiAgICB7CgogICAgIAogICAg
IAoKCgogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19pID0gX19maXJzdDsKICAgICAgKytfX2k7CiAgICAg
IGlmIChfX2kgPT0gX19sYXN0KQogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgX19pID0gX19s
YXN0OwogICAgICAtLV9faTsKCiAgICAgIGZvcig7OykgewogICAgICAgIF9CaWRpcmVjdGlvbmFs
SXRlciBfX2lpID0gX19pOwogICAgICAgIC0tX19pOwogICAgICAgIGlmIChfX2NvbXAoKl9faSwg
Kl9faWkpKSB7CiAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19qID0gX19sYXN0OwogICAg
ICAgICAgd2hpbGUgKCFfX2NvbXAoKl9faSwgKi0tX19qKSkKICAgICAgICAgICAge30KICAgICAg
ICAgIGl0ZXJfc3dhcChfX2ksIF9faik7CiAgICAgICAgICByZXZlcnNlKF9faWksIF9fbGFzdCk7
CiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKF9faSA9PSBfX2Zp
cnN0KSB7CiAgICAgICAgICByZXZlcnNlKF9fZmlyc3QsIF9fbGFzdCk7CiAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9C
aWRpcmVjdGlvbmFsSXRlcj4KICAgIGJvb2wKICAgIHByZXZfcGVybXV0YXRpb24oX0JpZGlyZWN0
aW9uYWxJdGVyIF9fZmlyc3QsIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QpCiAgICB7CgogICAg
IAogICAgIAoKCiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2kgPSBfX2ZpcnN0OwogICAgICArK19faTsK
ICAgICAgaWYgKF9faSA9PSBfX2xhc3QpCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICBfX2kg
PSBfX2xhc3Q7CiAgICAgIC0tX19pOwoKICAgICAgZm9yKDs7KSB7CiAgICAgICAgX0JpZGlyZWN0
aW9uYWxJdGVyIF9faWkgPSBfX2k7CiAgICAgICAgLS1fX2k7CiAgICAgICAgaWYgKCpfX2lpIDwg
Kl9faSkgewogICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9faiA9IF9fbGFzdDsKICAgICAg
ICAgIHdoaWxlICghKCotLV9faiA8ICpfX2kpKQogICAgICAgICAgICB7fQogICAgICAgICAgaXRl
cl9zd2FwKF9faSwgX19qKTsKICAgICAgICAgIHJldmVyc2UoX19paSwgX19sYXN0KTsKICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICBpZiAoX19pID09IF9fZmlyc3QpIHsK
ICAgICAgICAgIHJldmVyc2UoX19maXJzdCwgX19sYXN0KTsKICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0
aW9uYWxJdGVyLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGJvb2wKICAgIHByZXZfcGVybXV0YXRp
b24oX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3Qs
CiAgICAgICAgICAgICAgICAgICAgIF9Db21wYXJlIF9fY29tcCkKICAgIHsKCiAgICAgCiAgICAg
CgoKCiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2kgPSBfX2ZpcnN0OwogICAgICArK19faTsKICAgICAg
aWYgKF9faSA9PSBfX2xhc3QpCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICBfX2kgPSBfX2xh
c3Q7CiAgICAgIC0tX19pOwoKICAgICAgZm9yKDs7KSB7CiAgICAgICAgX0JpZGlyZWN0aW9uYWxJ
dGVyIF9faWkgPSBfX2k7CiAgICAgICAgLS1fX2k7CiAgICAgICAgaWYgKF9fY29tcCgqX19paSwg
Kl9faSkpIHsKICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2ogPSBfX2xhc3Q7CiAgICAg
ICAgICB3aGlsZSAoIV9fY29tcCgqLS1fX2osICpfX2kpKQogICAgICAgICAgICB7fQogICAgICAg
ICAgaXRlcl9zd2FwKF9faSwgX19qKTsKICAgICAgICAgIHJldmVyc2UoX19paSwgX19sYXN0KTsK
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICBpZiAoX19pID09IF9fZmly
c3QpIHsKICAgICAgICAgIHJldmVyc2UoX19maXJzdCwgX19sYXN0KTsKICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
SW5wdXRJdGVyLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXI+CiAgICBfSW5wdXRJdGVyCiAgICBmaW5k
X2ZpcnN0X29mKF9JbnB1dEl0ZXIgX19maXJzdDEsIF9JbnB1dEl0ZXIgX19sYXN0MSwKICAgICAg
ICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fZmlyc3QyLCBfRm9yd2FyZEl0ZXIgX19sYXN0MikK
ICAgIHsKCiAgICAgCiAgICAgCiAgICAgCgoKCiAgICAgIGZvciAoIDsgX19maXJzdDEgIT0gX19s
YXN0MTsgKytfX2ZpcnN0MSkKICAgICAgICBmb3IgKF9Gb3J3YXJkSXRlciBfX2l0ZXIgPSBfX2Zp
cnN0MjsgX19pdGVyICE9IF9fbGFzdDI7ICsrX19pdGVyKQogICAgICAgICAgaWYgKCpfX2ZpcnN0
MSA9PSAqX19pdGVyKQogICAgICAgICAgICByZXR1cm4gX19maXJzdDE7CiAgICAgIHJldHVybiBf
X2xhc3QxOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyLCB0eXBlbmFtZSBf
Rm9yd2FyZEl0ZXIsIHR5cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+CiAgICBfSW5wdXRJdGVyCiAg
ICBmaW5kX2ZpcnN0X29mKF9JbnB1dEl0ZXIgX19maXJzdDEsIF9JbnB1dEl0ZXIgX19sYXN0MSwK
ICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fZmlyc3QyLCBfRm9yd2FyZEl0ZXIgX19s
YXN0MiwKICAgICAgICAgICAgICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2NvbXApCiAgICB7Cgog
ICAgIAogICAgIAogICAgIAoKCiAgICAgCgoKCiAgICAgIGZvciAoIDsgX19maXJzdDEgIT0gX19s
YXN0MTsgKytfX2ZpcnN0MSkKICAgICAgICBmb3IgKF9Gb3J3YXJkSXRlciBfX2l0ZXIgPSBfX2Zp
cnN0MjsgX19pdGVyICE9IF9fbGFzdDI7ICsrX19pdGVyKQogICAgICAgICAgaWYgKF9fY29tcCgq
X19maXJzdDEsICpfX2l0ZXIpKQogICAgICAgICAgICByZXR1cm4gX19maXJzdDE7CiAgICAgIHJl
dHVybiBfX2xhc3QxOwogICAgfQojIDQyMDEgIi9ob21lL0FkbWluaXN0cmF0b3IvZ2NjdGVzdGlu
Zy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5jbHVkZS9jKysvYml0cy9zdGxfYWxn
by5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyMSwgdHlwZW5hbWUgX0Zvcndh
cmRJdGVyMj4KICAgIF9Gb3J3YXJkSXRlcjEKICAgIF9fZmluZF9lbmQoX0ZvcndhcmRJdGVyMSBf
X2ZpcnN0MSwgX0ZvcndhcmRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgICBfRm9yd2FyZEl0
ZXIyIF9fZmlyc3QyLCBfRm9yd2FyZEl0ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgICAgIGZvcndh
cmRfaXRlcmF0b3JfdGFnLCBmb3J3YXJkX2l0ZXJhdG9yX3RhZykKICAgIHsKICAgICAgaWYgKF9f
Zmlyc3QyID09IF9fbGFzdDIpCiAgICAgICAgcmV0dXJuIF9fbGFzdDE7CiAgICAgIGVsc2Ugewog
ICAgICAgIF9Gb3J3YXJkSXRlcjEgX19yZXN1bHQgPSBfX2xhc3QxOwogICAgICAgIHdoaWxlICgx
KSB7CiAgICAgICAgICBfRm9yd2FyZEl0ZXIxIF9fbmV3X3Jlc3VsdAogICAgICAgICAgICA9IHNl
YXJjaChfX2ZpcnN0MSwgX19sYXN0MSwgX19maXJzdDIsIF9fbGFzdDIpOwogICAgICAgICAgaWYg
KF9fbmV3X3Jlc3VsdCA9PSBfX2xhc3QxKQogICAgICAgICAgICByZXR1cm4gX19yZXN1bHQ7CiAg
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgX19yZXN1bHQgPSBfX25ld19yZXN1bHQ7CiAgICAg
ICAgICAgIF9fZmlyc3QxID0gX19uZXdfcmVzdWx0OwogICAgICAgICAgICArK19fZmlyc3QxOwog
ICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Rm9yd2FyZEl0ZXIxLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXIyLAogICAgICAgICAgIHR5cGVuYW1l
IF9CaW5hcnlQcmVkaWNhdGU+CiAgICBfRm9yd2FyZEl0ZXIxCiAgICBfX2ZpbmRfZW5kKF9Gb3J3
YXJkSXRlcjEgX19maXJzdDEsIF9Gb3J3YXJkSXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAg
X0ZvcndhcmRJdGVyMiBfX2ZpcnN0MiwgX0ZvcndhcmRJdGVyMiBfX2xhc3QyLAogICAgICAgICAg
ICAgICBmb3J3YXJkX2l0ZXJhdG9yX3RhZywgZm9yd2FyZF9pdGVyYXRvcl90YWcsCiAgICAgICAg
ICAgICAgIF9CaW5hcnlQcmVkaWNhdGUgX19jb21wKQogICAgewogICAgICBpZiAoX19maXJzdDIg
PT0gX19sYXN0MikKICAgICAgICByZXR1cm4gX19sYXN0MTsKICAgICAgZWxzZSB7CiAgICAgICAg
X0ZvcndhcmRJdGVyMSBfX3Jlc3VsdCA9IF9fbGFzdDE7CiAgICAgICAgd2hpbGUgKDEpIHsKICAg
ICAgICAgIF9Gb3J3YXJkSXRlcjEgX19uZXdfcmVzdWx0CiAgICAgICAgICAgID0gc2VhcmNoKF9f
Zmlyc3QxLCBfX2xhc3QxLCBfX2ZpcnN0MiwgX19sYXN0MiwgX19jb21wKTsKICAgICAgICAgIGlm
IChfX25ld19yZXN1bHQgPT0gX19sYXN0MSkKICAgICAgICAgICAgcmV0dXJuIF9fcmVzdWx0Owog
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIF9fcmVzdWx0ID0gX19uZXdfcmVzdWx0OwogICAg
ICAgICAgICBfX2ZpcnN0MSA9IF9fbmV3X3Jlc3VsdDsKICAgICAgICAgICAgKytfX2ZpcnN0MTsK
ICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9CaWRpcmVjdGlvbmFsSXRlcjEsIHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlcjI+CiAgICBf
QmlkaXJlY3Rpb25hbEl0ZXIxCiAgICBfX2ZpbmRfZW5kKF9CaWRpcmVjdGlvbmFsSXRlcjEgX19m
aXJzdDEsIF9CaWRpcmVjdGlvbmFsSXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgX0JpZGly
ZWN0aW9uYWxJdGVyMiBfX2ZpcnN0MiwgX0JpZGlyZWN0aW9uYWxJdGVyMiBfX2xhc3QyLAogICAg
ICAgICAgICAgICBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZywgYmlkaXJlY3Rpb25hbF9pdGVy
YXRvcl90YWcpCiAgICB7CgogICAgIAogICAgIAoKICAgICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJh
dG9yPF9CaWRpcmVjdGlvbmFsSXRlcjE+IF9SZXZJdGVyMTsKICAgICAgdHlwZWRlZiByZXZlcnNl
X2l0ZXJhdG9yPF9CaWRpcmVjdGlvbmFsSXRlcjI+IF9SZXZJdGVyMjsKCiAgICAgIF9SZXZJdGVy
MSBfX3JsYXN0MShfX2ZpcnN0MSk7CiAgICAgIF9SZXZJdGVyMiBfX3JsYXN0MihfX2ZpcnN0Mik7
CiAgICAgIF9SZXZJdGVyMSBfX3JyZXN1bHQgPSBzZWFyY2goX1Jldkl0ZXIxKF9fbGFzdDEpLCBf
X3JsYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmV2SXRlcjIoX19s
YXN0MiksIF9fcmxhc3QyKTsKCiAgICAgIGlmIChfX3JyZXN1bHQgPT0gX19ybGFzdDEpCiAgICAg
ICAgcmV0dXJuIF9fbGFzdDE7CiAgICAgIGVsc2UgewogICAgICAgIF9CaWRpcmVjdGlvbmFsSXRl
cjEgX19yZXN1bHQgPSBfX3JyZXN1bHQuYmFzZSgpOwogICAgICAgIGFkdmFuY2UoX19yZXN1bHQs
IC1zdGQ6OmRpc3RhbmNlKF9fZmlyc3QyLCBfX2xhc3QyKSk7CiAgICAgICAgcmV0dXJuIF9fcmVz
dWx0OwogICAgICB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRl
cjEsIHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlcjIsCiAgICAgICAgICAgdHlwZW5hbWUgX0Jp
bmFyeVByZWRpY2F0ZT4KICAgIF9CaWRpcmVjdGlvbmFsSXRlcjEKICAgIF9fZmluZF9lbmQoX0Jp
ZGlyZWN0aW9uYWxJdGVyMSBfX2ZpcnN0MSwgX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2xhc3QxLAog
ICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIyIF9fZmlyc3QyLCBfQmlkaXJlY3Rpb25h
bEl0ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgICAgIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFn
LCBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZywKICAgICAgICAgICAgICAgX0JpbmFyeVByZWRp
Y2F0ZSBfX2NvbXApCiAgICB7CgogICAgIAogICAgIAoKICAgICAgdHlwZWRlZiByZXZlcnNlX2l0
ZXJhdG9yPF9CaWRpcmVjdGlvbmFsSXRlcjE+IF9SZXZJdGVyMTsKICAgICAgdHlwZWRlZiByZXZl
cnNlX2l0ZXJhdG9yPF9CaWRpcmVjdGlvbmFsSXRlcjI+IF9SZXZJdGVyMjsKCiAgICAgIF9SZXZJ
dGVyMSBfX3JsYXN0MShfX2ZpcnN0MSk7CiAgICAgIF9SZXZJdGVyMiBfX3JsYXN0MihfX2ZpcnN0
Mik7CiAgICAgIF9SZXZJdGVyMSBfX3JyZXN1bHQgPSBzZWFyY2goX1Jldkl0ZXIxKF9fbGFzdDEp
LCBfX3JsYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmV2SXRlcjIo
X19sYXN0MiksIF9fcmxhc3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
Y29tcCk7CgogICAgICBpZiAoX19ycmVzdWx0ID09IF9fcmxhc3QxKQogICAgICAgIHJldHVybiBf
X2xhc3QxOwogICAgICBlbHNlIHsKICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIxIF9fcmVzdWx0
ID0gX19ycmVzdWx0LmJhc2UoKTsKICAgICAgICBhZHZhbmNlKF9fcmVzdWx0LCAtc3RkOjpkaXN0
YW5jZShfX2ZpcnN0MiwgX19sYXN0MikpOwogICAgICAgIHJldHVybiBfX3Jlc3VsdDsKICAgICAg
fQogICAgfQoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcjEsIHR5cGVuYW1lIF9G
b3J3YXJkSXRlcjI+CiAgICBpbmxpbmUgX0ZvcndhcmRJdGVyMQogICAgZmluZF9lbmQoX0Zvcndh
cmRJdGVyMSBfX2ZpcnN0MSwgX0ZvcndhcmRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgX0Zv
cndhcmRJdGVyMiBfX2ZpcnN0MiwgX0ZvcndhcmRJdGVyMiBfX2xhc3QyKQogICAgewoKICAgICAK
ICAgICAKICAgICAKCgoKICAgICAgcmV0dXJuIF9fZmluZF9lbmQoX19maXJzdDEsIF9fbGFzdDEs
IF9fZmlyc3QyLCBfX2xhc3QyLAogICAgICAgICAgICAgICAgICAgICAgICBfX2l0ZXJhdG9yX2Nh
dGVnb3J5KF9fZmlyc3QxKSwKICAgICAgICAgICAgICAgICAgICAgICAgX19pdGVyYXRvcl9jYXRl
Z29yeShfX2ZpcnN0MikpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXIx
LCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXIyLAogICAgICAgICAgIHR5cGVuYW1lIF9CaW5hcnlQcmVk
aWNhdGU+CiAgICBpbmxpbmUgX0ZvcndhcmRJdGVyMQogICAgZmluZF9lbmQoX0ZvcndhcmRJdGVy
MSBfX2ZpcnN0MSwgX0ZvcndhcmRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgX0ZvcndhcmRJ
dGVyMiBfX2ZpcnN0MiwgX0ZvcndhcmRJdGVyMiBfX2xhc3QyLAogICAgICAgICAgICAgX0JpbmFy
eVByZWRpY2F0ZSBfX2NvbXApCiAgICB7CgogICAgIAogICAgIAogICAgIAoKCgogICAgICByZXR1
cm4gX19maW5kX2VuZChfX2ZpcnN0MSwgX19sYXN0MSwgX19maXJzdDIsIF9fbGFzdDIsCiAgICAg
ICAgICAgICAgICAgICAgICAgIF9faXRlcmF0b3JfY2F0ZWdvcnkoX19maXJzdDEpLAogICAgICAg
ICAgICAgICAgICAgICAgICBfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QyKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgX19jb21wKTsKICAgIH0KCn0KIyA3MCAiL2hvbWUvQWRtaW5pc3RyYXRv
ci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9h
bGdvcml0aG0iIDIgMwojIDU3ICIvaG9tZS9BZG1pbmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2dj
Yy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1ZGUvYysrL3N0cmluZyIgMiAzCiMgMSAiL2hv
bWUvQWRtaW5pc3RyYXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMu
NC9pbmNsdWRlL2MrKy9iaXRzL2Jhc2ljX3N0cmluZy50Y2MiIDEgMwojIDQ1ICIvaG9tZS9BZG1p
bmlzdHJhdG9yL2djY3Rlc3RpbmcvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy40L2luY2x1
ZGUvYysrL2JpdHMvYmFzaWNfc3RyaW5nLnRjYyIgMwoKbmFtZXNwYWNlIHN0ZAp7CiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAg
ICBjb25zdCB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+Ojpz
aXplX3R5cGUKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAg
X1JlcDo6X1NfbWF4X3NpemUgPSAoKChucG9zIC0gc2l6ZW9mKF9SZXApKS9zaXplb2YoX0NoYXJU
KSkgLSAxKSAvIDQ7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cywgdHlwZW5hbWUgX0FsbG9jPgogICAgY29uc3QgX0NoYXJUCiAgICBiYXNpY19zdHJpbmc8X0No
YXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIF9SZXA6Ol9TX3Rlcm1pbmFsID0gX0NoYXJUKCk7
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUg
X0FsbG9jPgogICAgY29uc3QgdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywg
X0FsbG9jPjo6c2l6ZV90eXBlCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxs
b2M+OjpucG9zOwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cywgdHlwZW5hbWUgX0FsbG9jPgogICAgdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1Ry
YWl0cywgX0FsbG9jPjo6c2l6ZV90eXBlCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRz
LCBfQWxsb2M+OjpfU19lbXB0eV9yZXBfc3RvcmFnZVsKICAgIChzaXplb2YoX1JlcCkgKyBzaXpl
b2YoX0NoYXJUKSArIHNpemVvZihzaXplX3R5cGUpIC0gMSkvc2l6ZW9mKHNpemVfdHlwZSldOwoK
CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFt
ZSBfQWxsb2M+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5JdGVyPgogICAgICBfQ2hhclQqCiAg
ICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgICBfU19jb25z
dHJ1Y3QoX0luSXRlciBfX2JlZywgX0luSXRlciBfX2VuZCwgY29uc3QgX0FsbG9jJiBfX2EsCiAg
ICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90YWcpCiAgICAgIHsKICAgICAgICBpZiAo
X19iZWcgPT0gX19lbmQgJiYgX19hID09IF9BbGxvYygpKQogICAgICAgICAgcmV0dXJuIF9TX2Vt
cHR5X3JlcCgpLl9NX3JlZmNvcHkoKTsKCiAgICAgICAgX0NoYXJUIF9fYnVmWzEwMF07CiAgICAg
ICAgc2l6ZV90eXBlIF9faSA9IDA7CiAgICAgICAgd2hpbGUgKF9fYmVnICE9IF9fZW5kICYmIF9f
aSA8IHNpemVvZihfX2J1ZikgLyBzaXplb2YoX0NoYXJUKSkKICAgICAgICAgIHsKICAgICAgICAg
ICAgX19idWZbX19pKytdID0gKl9fYmVnOwogICAgICAgICAgICArK19fYmVnOwogICAgICAgICAg
fQogICAgICAgIF9SZXAqIF9fciA9IF9SZXA6Ol9TX2NyZWF0ZShfX2ksIF9fYSk7CiAgICAgICAg
dHJhaXRzX3R5cGU6OmNvcHkoX19yLT5fTV9yZWZkYXRhKCksIF9fYnVmLCBfX2kpOwogICAgICAg
IF9fci0+X01fbGVuZ3RoID0gX19pOwogICAgICAgIHRyeQogICAgICAgICAgewoKCgogICAgICAg
ICAgICBmb3IgKDs7KQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIF9DaGFyVCogX19w
ID0gX19yLT5fTV9yZWZkYXRhKCkgKyBfX3ItPl9NX2xlbmd0aDsKICAgICAgICAgICAgICAgIF9D
aGFyVCogX19sYXN0ID0gX19yLT5fTV9yZWZkYXRhKCkgKyBfX3ItPl9NX2NhcGFjaXR5OwogICAg
ICAgICAgICAgICAgZm9yICg7OykKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICAgIGlmIChfX2JlZyA9PSBfX2VuZCkKICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgX19yLT5fTV9sZW5ndGggPSBfX3AgLSBfX3ItPl9NX3JlZmRhdGEoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgKl9fcCA9IF9SZXA6Ol9TX3Rlcm1pbmFsOwogICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gX19yLT5fTV9yZWZkYXRhKCk7CiAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKF9fcCA9PSBfX2xhc3QpCiAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAqX19wKysgPSAqX19iZWc7
CiAgICAgICAgICAgICAgICAgICAgKytfX2JlZzsKICAgICAgICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgICAgIHNpemVfdHlwZSBfX2xlbiA9IF9fcCAtIF9fci0+X01fcmVmZGF0YSgpOwogICAg
ICAgICAgICAgICAgX1JlcCogX19hbm90aGVyID0gX1JlcDo6X1NfY3JlYXRlKF9fbGVuICsgMSwg
X19hKTsKICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOjpjb3B5KF9fYW5vdGhlci0+X01fcmVm
ZGF0YSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yLT5fTV9yZWZkYXRh
KCksIF9fbGVuKTsKICAgICAgICAgICAgICAgIF9fci0+X01fZGVzdHJveShfX2EpOwogICAgICAg
ICAgICAgICAgX19yID0gX19hbm90aGVyOwogICAgICAgICAgICAgICAgX19yLT5fTV9sZW5ndGgg
PSBfX2xlbjsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgY2F0Y2goLi4uKQog
ICAgICAgICAgewogICAgICAgICAgICBfX3ItPl9NX2Rlc3Ryb3koX19hKTsKICAgICAgICAgICAg
dGhyb3c7CiAgICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICAgIH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB0
ZW1wbGF0ZSA8Y2xhc3MgX0luSXRlcj4KICAgICAgX0NoYXJUKgogICAgICBiYXNpY19zdHJpbmc8
X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgICAgX1NfY29uc3RydWN0KF9Jbkl0ZXIgX19i
ZWcsIF9Jbkl0ZXIgX19lbmQsIGNvbnN0IF9BbGxvYyYgX19hLAogICAgICAgICAgICAgICAgICAg
Zm9yd2FyZF9pdGVyYXRvcl90YWcpCiAgICAgIHsKICAgICAgICBpZiAoX19iZWcgPT0gX19lbmQg
JiYgX19hID09IF9BbGxvYygpKQogICAgICAgICAgcmV0dXJuIF9TX2VtcHR5X3JlcCgpLl9NX3Jl
ZmNvcHkoKTsKCgogICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KF9fYmVnID09IF9Jbkl0ZXIo
KSwgMCkpCiAgICAgICAgICBfX3Rocm93X2xvZ2ljX2Vycm9yKCJhdHRlbXB0IHRvIGNyZWF0ZSBz
dHJpbmcgd2l0aCBudWxsIHBvaW50ZXIiKTsKCiAgICAgICAgc2l6ZV90eXBlIF9fZG5ldyA9IHN0
YXRpY19jYXN0PHNpemVfdHlwZT4oc3RkOjpkaXN0YW5jZShfX2JlZywgX19lbmQpKTsKCgogICAg
ICAgIF9SZXAqIF9fciA9IF9SZXA6Ol9TX2NyZWF0ZShfX2RuZXcsIF9fYSk7CiAgICAgICAgdHJ5
CiAgICAgICAgICB7IF9TX2NvcHlfY2hhcnMoX19yLT5fTV9yZWZkYXRhKCksIF9fYmVnLCBfX2Vu
ZCk7IH0KICAgICAgICBjYXRjaCguLi4pCiAgICAgICAgICB7CiAgICAgICAgICAgIF9fci0+X01f
ZGVzdHJveShfX2EpOwogICAgICAgICAgICB0aHJvdzsKICAgICAgICAgIH0KICAgICAgICBfX3It
Pl9NX2xlbmd0aCA9IF9fZG5ldzsKCiAgICAgICAgX19yLT5fTV9yZWZkYXRhKClbX19kbmV3XSA9
IF9SZXA6Ol9TX3Rlcm1pbmFsOwogICAgICAgIHJldHVybiBfX3ItPl9NX3JlZmRhdGEoKTsKICAg
ICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVu
YW1lIF9BbGxvYz4KICAgIF9DaGFyVCoKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMs
IF9BbGxvYz46OgogICAgX1NfY29uc3RydWN0KHNpemVfdHlwZSBfX24sIF9DaGFyVCBfX2MsIGNv
bnN0IF9BbGxvYyYgX19hKQogICAgewogICAgICBpZiAoX19uID09IDAgJiYgX19hID09IF9BbGxv
YygpKQogICAgICAgIHJldHVybiBfU19lbXB0eV9yZXAoKS5fTV9yZWZjb3B5KCk7CgoKICAgICAg
X1JlcCogX19yID0gX1JlcDo6X1NfY3JlYXRlKF9fbiwgX19hKTsKICAgICAgdHJ5CiAgICAgICAg
ewogICAgICAgICAgaWYgKF9fbikKICAgICAgICAgICAgdHJhaXRzX3R5cGU6OmFzc2lnbihfX3It
Pl9NX3JlZmRhdGEoKSwgX19uLCBfX2MpOwogICAgICAgIH0KICAgICAgY2F0Y2goLi4uKQogICAg
ICAgIHsKICAgICAgICAgIF9fci0+X01fZGVzdHJveShfX2EpOwogICAgICAgICAgdGhyb3c7CiAg
ICAgICAgfQogICAgICBfX3ItPl9NX2xlbmd0aCA9IF9fbjsKICAgICAgX19yLT5fTV9yZWZkYXRh
KClbX19uXSA9IF9SZXA6Ol9TX3Rlcm1pbmFsOwogICAgICByZXR1cm4gX19yLT5fTV9yZWZkYXRh
KCk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywg
dHlwZW5hbWUgX0FsbG9jPgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9j
Pjo6CiAgICBiYXNpY19zdHJpbmcoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0cikKICAgIDogX01f
ZGF0YXBsdXMoX19zdHIuX01fcmVwKCktPl9NX2dyYWIoX0FsbG9jKCksIF9fc3RyLmdldF9hbGxv
Y2F0b3IoKSksCiAgICAgICAgICAgICAgICAgX19zdHIuZ2V0X2FsbG9jYXRvcigpKQogICAgeyB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUg
X0FsbG9jPgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBi
YXNpY19zdHJpbmcoY29uc3QgX0FsbG9jJiBfX2EpCiAgICA6IF9NX2RhdGFwbHVzKF9TX2NvbnN0
cnVjdChzaXplX3R5cGUoKSwgX0NoYXJUKCksIF9fYSksIF9fYSkKICAgIHsgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAg
IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgYmFzaWNfc3RyaW5n
KGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIsIHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9f
bikKICAgIDogX01fZGF0YXBsdXMoX1NfY29uc3RydWN0KF9fc3RyLl9NX2NoZWNrKF9fcG9zKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fc3RyLl9NX2ZvbGQoX19wb3MsIF9fbiks
IF9BbGxvYygpKSwgX0FsbG9jKCkpCiAgICB7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19zdHJpbmc8X0No
YXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIGJhc2ljX3N0cmluZyhjb25zdCBiYXNpY19zdHJp
bmcmIF9fc3RyLCBzaXplX3R5cGUgX19wb3MsCiAgICAgICAgICAgICAgICAgc2l6ZV90eXBlIF9f
biwgY29uc3QgX0FsbG9jJiBfX2EpCiAgICA6IF9NX2RhdGFwbHVzKF9TX2NvbnN0cnVjdChfX3N0
ci5fTV9jaGVjayhfX3BvcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3N0ci5f
TV9mb2xkKF9fcG9zLCBfX24pLCBfX2EpLCBfX2EpCiAgICB7IH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19z
dHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIGJhc2ljX3N0cmluZyhjb25zdCBf
Q2hhclQqIF9fcywgc2l6ZV90eXBlIF9fbiwgY29uc3QgX0FsbG9jJiBfX2EpCiAgICA6IF9NX2Rh
dGFwbHVzKF9TX2NvbnN0cnVjdChfX3MsIF9fcyArIF9fbiwgX19hKSwgX19hKQogICAgeyB9Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0Fs
bG9jPgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBiYXNp
Y19zdHJpbmcoY29uc3QgX0NoYXJUKiBfX3MsIGNvbnN0IF9BbGxvYyYgX19hKQogICAgOiBfTV9k
YXRhcGx1cyhfU19jb25zdHJ1Y3QoX19zLCBfX3MgPyBfX3MgKyB0cmFpdHNfdHlwZTo6bGVuZ3Ro
KF9fcykgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19zICsgbnBvcywgX19hKSwg
X19hKQogICAgeyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cywgdHlwZW5hbWUgX0FsbG9jPgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0Fs
bG9jPjo6CiAgICBiYXNpY19zdHJpbmcoc2l6ZV90eXBlIF9fbiwgX0NoYXJUIF9fYywgY29uc3Qg
X0FsbG9jJiBfX2EpCiAgICA6IF9NX2RhdGFwbHVzKF9TX2NvbnN0cnVjdChfX24sIF9fYywgX19h
KSwgX19hKQogICAgeyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1Ry
YWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcj4K
ICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgYmFzaWNfc3Ry
aW5nKF9JbnB1dEl0ZXIgX19iZWcsIF9JbnB1dEl0ZXIgX19lbmQsIGNvbnN0IF9BbGxvYyYgX19h
KQogICAgOiBfTV9kYXRhcGx1cyhfU19jb25zdHJ1Y3QoX19iZWcsIF9fZW5kLCBfX2EpLCBfX2Ep
CiAgICB7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0
eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+
JgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6YXNzaWduKGNvbnN0
IGJhc2ljX3N0cmluZyYgX19zdHIpCiAgICB7CiAgICAgIGlmIChfTV9yZXAoKSAhPSBfX3N0ci5f
TV9yZXAoKSkKICAgICAgICB7CgogICAgICAgICAgYWxsb2NhdG9yX3R5cGUgX19hID0gdGhpcy0+
Z2V0X2FsbG9jYXRvcigpOwogICAgICAgICAgX0NoYXJUKiBfX3RtcCA9IF9fc3RyLl9NX3JlcCgp
LT5fTV9ncmFiKF9fYSwgX19zdHIuZ2V0X2FsbG9jYXRvcigpKTsKICAgICAgICAgIF9NX3JlcCgp
LT5fTV9kaXNwb3NlKF9fYSk7CiAgICAgICAgICBfTV9kYXRhKF9fdG1wKTsKICAgICAgICB9CiAg
ICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBl
bmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB2b2lkCiAgICBiYXNpY19zdHJpbmc8
X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjpfUmVwOjoKICAgIF9NX2Rlc3Ryb3koY29uc3QgX0Fs
bG9jJiBfX2EpIHRocm93ICgpCiAgICB7CiAgICAgIHNpemVfdHlwZSBfX3NpemUgPSBzaXplb2Yo
X1JlcCkgKyAoX01fY2FwYWNpdHkgKyAxKSAqIHNpemVvZihfQ2hhclQpOwogICAgICBfUmF3X2J5
dGVzX2FsbG9jKF9fYSkuZGVhbGxvY2F0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPih0aGlzKSwg
X19zaXplKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJh
aXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB2b2lkCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBf
VHJhaXRzLCBfQWxsb2M+OjpfTV9sZWFrX2hhcmQoKQogICAgewogICAgICBpZiAoX01fcmVwKCkt
Pl9NX2lzX3NoYXJlZCgpKQogICAgICAgIF9NX211dGF0ZSgwLCAwLCAwKTsKICAgICAgX01fcmVw
KCktPl9NX3NldF9sZWFrZWQoKTsKICAgIH0KCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB2b2lkCiAgICBiYXNp
Y19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIF9NX211dGF0ZShzaXplX3R5
cGUgX19wb3MsIHNpemVfdHlwZSBfX2xlbjEsIHNpemVfdHlwZSBfX2xlbjIpCiAgICB7CiAgICAg
IHNpemVfdHlwZSBfX29sZF9zaXplID0gdGhpcy0+c2l6ZSgpOwogICAgICBjb25zdCBzaXplX3R5
cGUgX19uZXdfc2l6ZSA9IF9fb2xkX3NpemUgKyBfX2xlbjIgLSBfX2xlbjE7CiAgICAgIGNvbnN0
IF9DaGFyVCogX19zcmMgPSBfTV9kYXRhKCkgKyBfX3BvcyArIF9fbGVuMTsKICAgICAgY29uc3Qg
c2l6ZV90eXBlIF9faG93X211Y2ggPSBfX29sZF9zaXplIC0gX19wb3MgLSBfX2xlbjE7CgogICAg
ICBpZiAoX01fcmVwKCktPl9NX2lzX3NoYXJlZCgpIHx8IF9fbmV3X3NpemUgPiBjYXBhY2l0eSgp
KQogICAgICAgIHsKCiAgICAgICAgICBhbGxvY2F0b3JfdHlwZSBfX2EgPSBnZXRfYWxsb2NhdG9y
KCk7CgoKICAgICAgICAgIGNvbnN0IHNpemVfdHlwZSBfX3BhZ2VzaXplID0gNDA5NjsKICAgICAg
ICAgIGNvbnN0IHNpemVfdHlwZSBfX21hbGxvY19oZWFkZXJfc2l6ZSA9IDQgKiBzaXplb2YgKHZv
aWQqKTsKCiAgICAgICAgICBjb25zdCBzaXplX3R5cGUgX19wYWdlX2NhcGFjaXR5ID0gKF9fcGFn
ZXNpemUgLSBfX21hbGxvY19oZWFkZXJfc2l6ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAtIHNpemVvZihfUmVwKSAtIHNpemVvZihfQ2hhclQpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIHNpemVvZihfQ2hhclQpOwog
ICAgICAgICAgX1JlcCogX19yOwogICAgICAgICAgaWYgKF9fbmV3X3NpemUgPiBjYXBhY2l0eSgp
ICYmIF9fbmV3X3NpemUgPiBfX3BhZ2VfY2FwYWNpdHkpCgogICAgICAgICAgICBfX3IgPSBfUmVw
OjpfU19jcmVhdGUoX19uZXdfc2l6ZSA+IDIqY2FwYWNpdHkoKSA/CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX25ld19zaXplIDogMipjYXBhY2l0eSgpLCBfX2EpOwogICAgICAg
ICAgZWxzZQogICAgICAgICAgICBfX3IgPSBfUmVwOjpfU19jcmVhdGUoX19uZXdfc2l6ZSwgX19h
KTsKICAgICAgICAgIHRyeQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgaWYgKF9fcG9zKQog
ICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU6OmNvcHkoX19yLT5fTV9yZWZkYXRhKCksIF9NX2Rh
dGEoKSwgX19wb3MpOwogICAgICAgICAgICAgIGlmIChfX2hvd19tdWNoKQogICAgICAgICAgICAg
ICAgdHJhaXRzX3R5cGU6OmNvcHkoX19yLT5fTV9yZWZkYXRhKCkgKyBfX3BvcyArIF9fbGVuMiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fc3JjLCBfX2hvd19tdWNoKTsKICAg
ICAgICAgICAgfQogICAgICAgICAgY2F0Y2goLi4uKQogICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgX19yLT5fTV9kaXNwb3NlKGdldF9hbGxvY2F0b3IoKSk7CiAgICAgICAgICAgICAgdGhyb3c7
CiAgICAgICAgICAgIH0KICAgICAgICAgIF9NX3JlcCgpLT5fTV9kaXNwb3NlKF9fYSk7CiAgICAg
ICAgICBfTV9kYXRhKF9fci0+X01fcmVmZGF0YSgpKTsKICAgICAgfQogICAgICBlbHNlIGlmIChf
X2hvd19tdWNoICYmIF9fbGVuMSAhPSBfX2xlbjIpCiAgICAgICAgewoKICAgICAgICAgIHRyYWl0
c190eXBlOjptb3ZlKF9NX2RhdGEoKSArIF9fcG9zICsgX19sZW4yLCBfX3NyYywgX19ob3dfbXVj
aCk7CiAgICAgICAgfQogICAgICBfTV9yZXAoKS0+X01fc2V0X3NoYXJhYmxlKCk7CiAgICAgIF9N
X3JlcCgpLT5fTV9sZW5ndGggPSBfX25ld19zaXplOwogICAgICBfTV9kYXRhKClbX19uZXdfc2l6
ZV0gPSBfUmVwOjpfU190ZXJtaW5hbDsKCiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgdm9pZAogICAgYmFzaWNf
c3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6cmVzZXJ2ZShzaXplX3R5cGUgX19yZXMp
CiAgICB7CiAgICAgIGlmIChfX3JlcyA+IHRoaXMtPmNhcGFjaXR5KCkgfHwgX01fcmVwKCktPl9N
X2lzX3NoYXJlZCgpKQogICAgICAgIHsKICAgICAgICAgIGlmIChfX3JlcyA+IHRoaXMtPm1heF9z
aXplKCkpCiAgICAgICAgICAgIF9fdGhyb3dfbGVuZ3RoX2Vycm9yKCJiYXNpY19zdHJpbmc6OnJl
c2VydmUiKTsKCiAgICAgICAgICBpZiAoX19yZXMgPCB0aGlzLT5zaXplKCkpCiAgICAgICAgICAg
IF9fcmVzID0gdGhpcy0+c2l6ZSgpOwogICAgICAgICAgYWxsb2NhdG9yX3R5cGUgX19hID0gZ2V0
X2FsbG9jYXRvcigpOwogICAgICAgICAgX0NoYXJUKiBfX3RtcCA9IF9NX3JlcCgpLT5fTV9jbG9u
ZShfX2EsIF9fcmVzIC0gdGhpcy0+c2l6ZSgpKTsKICAgICAgICAgIF9NX3JlcCgpLT5fTV9kaXNw
b3NlKF9fYSk7CiAgICAgICAgICBfTV9kYXRhKF9fdG1wKTsKICAgICAgICB9CiAgICB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9j
PgogICAgdm9pZCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+Ojpzd2FwKGJh
c2ljX3N0cmluZyYgX19zKQogICAgewogICAgICBpZiAoX01fcmVwKCktPl9NX2lzX2xlYWtlZCgp
KQogICAgICAgIF9NX3JlcCgpLT5fTV9zZXRfc2hhcmFibGUoKTsKICAgICAgaWYgKF9fcy5fTV9y
ZXAoKS0+X01faXNfbGVha2VkKCkpCiAgICAgICAgX19zLl9NX3JlcCgpLT5fTV9zZXRfc2hhcmFi
bGUoKTsKICAgICAgaWYgKHRoaXMtPmdldF9hbGxvY2F0b3IoKSA9PSBfX3MuZ2V0X2FsbG9jYXRv
cigpKQogICAgICAgIHsKICAgICAgICAgIF9DaGFyVCogX190bXAgPSBfTV9kYXRhKCk7CiAgICAg
ICAgICBfTV9kYXRhKF9fcy5fTV9kYXRhKCkpOwogICAgICAgICAgX19zLl9NX2RhdGEoX190bXAp
OwogICAgICAgIH0KCiAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICBiYXNpY19zdHJpbmcg
X190bXAxKF9NX2liZWdpbigpLCBfTV9pZW5kKCksIF9fcy5nZXRfYWxsb2NhdG9yKCkpOwogICAg
ICAgICAgYmFzaWNfc3RyaW5nIF9fdG1wMihfX3MuX01faWJlZ2luKCksIF9fcy5fTV9pZW5kKCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPmdldF9hbGxvY2F0b3IoKSk7CiAg
ICAgICAgICAqdGhpcyA9IF9fdG1wMjsKICAgICAgICAgIF9fcyA9IF9fdG1wMTsKICAgICAgICB9
CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlw
ZW5hbWUgX0FsbG9jPgogICAgdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywg
X0FsbG9jPjo6X1JlcCoKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46
Ol9SZXA6OgogICAgX1NfY3JlYXRlKHNpemVfdCBfX2NhcGFjaXR5LCBjb25zdCBfQWxsb2MmIF9f
YWxsb2MpCiAgICB7CiAgICAgIHR5cGVkZWYgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywg
X0FsbG9jPiBfX3N0cmluZ190eXBlOwoKCiAgICAgIGlmIChfX2NhcGFjaXR5ID4gX1NfbWF4X3Np
emUpCgoKCiAgICAgICAgX190aHJvd19sZW5ndGhfZXJyb3IoImJhc2ljX3N0cmluZzo6X1NfY3Jl
YXRlIik7CgoKCgogICAgICBzaXplX3QgX19zaXplID0gKF9fY2FwYWNpdHkgKyAxKSAqIHNpemVv
ZihfQ2hhclQpICsgc2l6ZW9mKF9SZXApOwojIDQyMSAiL2hvbWUvQWRtaW5pc3RyYXRvci9nY2N0
ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2MrKy9iaXRzL2Jh
c2ljX3N0cmluZy50Y2MiIDMKICAgICAgY29uc3Qgc2l6ZV90IF9fcGFnZXNpemUgPSA0MDk2Owog
ICAgICBjb25zdCBzaXplX3QgX19zdWJwYWdlc2l6ZSA9IDEyODsKICAgICAgY29uc3Qgc2l6ZV90
IF9fbWFsbG9jX2hlYWRlcl9zaXplID0gNCAqIHNpemVvZiAodm9pZCopOwogICAgICBpZiAoKF9f
c2l6ZSArIF9fbWFsbG9jX2hlYWRlcl9zaXplKSA+IF9fcGFnZXNpemUpCiAgICAgICAgewogICAg
ICAgICAgc2l6ZV90IF9fZXh0cmEgPQogICAgICAgICAgICAoX19wYWdlc2l6ZSAtICgoX19zaXpl
ICsgX19tYWxsb2NfaGVhZGVyX3NpemUpICUgX19wYWdlc2l6ZSkpCiAgICAgICAgICAgICUgX19w
YWdlc2l6ZTsKICAgICAgICAgIF9fY2FwYWNpdHkgKz0gX19leHRyYSAvIHNpemVvZihfQ2hhclQp
OwogICAgICAgICAgX19zaXplID0gKF9fY2FwYWNpdHkgKyAxKSAqIHNpemVvZihfQ2hhclQpICsg
c2l6ZW9mKF9SZXApOwogICAgICAgIH0KICAgICAgZWxzZSBpZiAoX19zaXplID4gX19zdWJwYWdl
c2l6ZSkKICAgICAgICB7CiAgICAgICAgICBzaXplX3QgX19leHRyYSA9CiAgICAgICAgICAgIChf
X3N1YnBhZ2VzaXplIC0gKChfX3NpemUgKyBfX21hbGxvY19oZWFkZXJfc2l6ZSkgJSBfX3N1YnBh
Z2VzaXplKSkKICAgICAgICAgICAgJSBfX3N1YnBhZ2VzaXplOwogICAgICAgICAgX19jYXBhY2l0
eSArPSBfX2V4dHJhIC8gc2l6ZW9mKF9DaGFyVCk7CiAgICAgICAgICBfX3NpemUgPSAoX19jYXBh
Y2l0eSArIDEpICogc2l6ZW9mKF9DaGFyVCkgKyBzaXplb2YoX1JlcCk7CiAgICAgICAgfQoKCgog
ICAgICB2b2lkKiBfX3BsYWNlID0gX1Jhd19ieXRlc19hbGxvYyhfX2FsbG9jKS5hbGxvY2F0ZShf
X3NpemUpOwogICAgICBfUmVwICpfX3AgPSBuZXcgKF9fcGxhY2UpIF9SZXA7CiAgICAgIF9fcC0+
X01fY2FwYWNpdHkgPSBfX2NhcGFjaXR5OwogICAgICBfX3AtPl9NX3NldF9zaGFyYWJsZSgpOwog
ICAgICBfX3AtPl9NX2xlbmd0aCA9IDA7CiAgICAgIHJldHVybiBfX3A7CiAgICB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgog
ICAgX0NoYXJUKgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6X1Jl
cDo6CiAgICBfTV9jbG9uZShjb25zdCBfQWxsb2MmIF9fYWxsb2MsIHNpemVfdHlwZSBfX3JlcykK
ICAgIHsKCiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX3JlcXVlc3RlZF9jYXAgPSBfTV9sZW5ndGgg
KyBfX3JlczsKCiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX3BhZ2VzaXplID0gNDA5NjsKICAgICAg
Y29uc3Qgc2l6ZV90eXBlIF9fbWFsbG9jX2hlYWRlcl9zaXplID0gNCAqIHNpemVvZiAodm9pZCop
OwoKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fcGFnZV9jYXBhY2l0eSA9CiAgICAgICAgKF9fcGFn
ZXNpemUgLSBfX21hbGxvY19oZWFkZXJfc2l6ZSAtIHNpemVvZihfUmVwKSAtIHNpemVvZihfQ2hh
clQpKQogICAgICAgIC8gc2l6ZW9mKF9DaGFyVCk7CiAgICAgIF9SZXAqIF9fcjsKICAgICAgaWYg
KF9fcmVxdWVzdGVkX2NhcCA+IF9NX2NhcGFjaXR5ICYmIF9fcmVxdWVzdGVkX2NhcCA+IF9fcGFn
ZV9jYXBhY2l0eSkKCiAgICAgICAgX19yID0gX1JlcDo6X1NfY3JlYXRlKF9fcmVxdWVzdGVkX2Nh
cCA+IDIqX01fY2FwYWNpdHkgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3JlcXVl
c3RlZF9jYXAgOiAyKl9NX2NhcGFjaXR5LCBfX2FsbG9jKTsKICAgICAgZWxzZQogICAgICAgIF9f
ciA9IF9SZXA6Ol9TX2NyZWF0ZShfX3JlcXVlc3RlZF9jYXAsIF9fYWxsb2MpOwoKICAgICAgaWYg
KF9NX2xlbmd0aCkKICAgICAgICB7CiAgICAgICAgICB0cnkKICAgICAgICAgICAgeyB0cmFpdHNf
dHlwZTo6Y29weShfX3ItPl9NX3JlZmRhdGEoKSwgX01fcmVmZGF0YSgpLCBfTV9sZW5ndGgpOyB9
CiAgICAgICAgICBjYXRjaCguLi4pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBfX3ItPl9N
X2Rlc3Ryb3koX19hbGxvYyk7CiAgICAgICAgICAgICAgdGhyb3c7CiAgICAgICAgICAgIH0KICAg
ICAgICB9CiAgICAgIF9fci0+X01fbGVuZ3RoID0gX01fbGVuZ3RoOwogICAgICByZXR1cm4gX19y
LT5fTV9yZWZkYXRhKCk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h
bWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgdm9pZAogICAgYmFzaWNfc3RyaW5nPF9D
aGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6cmVzaXplKHNpemVfdHlwZSBfX24sIF9DaGFyVCBfX2Mp
CiAgICB7CiAgICAgIGlmIChfX24gPiBtYXhfc2l6ZSgpKQogICAgICAgIF9fdGhyb3dfbGVuZ3Ro
X2Vycm9yKCJiYXNpY19zdHJpbmc6OnJlc2l6ZSIpOwogICAgICBzaXplX3R5cGUgX19zaXplID0g
dGhpcy0+c2l6ZSgpOwogICAgICBpZiAoX19zaXplIDwgX19uKQogICAgICAgIHRoaXMtPmFwcGVu
ZChfX24gLSBfX3NpemUsIF9fYyk7CiAgICAgIGVsc2UgaWYgKF9fbiA8IF9fc2l6ZSkKICAgICAg
ICB0aGlzLT5lcmFzZShfX24pOwoKICAgIH0KCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSW5wdXRJdGVyPgogICAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+
JgogICAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgICAgX01f
cmVwbGFjZShpdGVyYXRvciBfX2kxLCBpdGVyYXRvciBfX2kyLCBfSW5wdXRJdGVyIF9fazEsCiAg
ICAgICAgICAgICAgICAgX0lucHV0SXRlciBfX2syLCBpbnB1dF9pdGVyYXRvcl90YWcpCiAgICAg
IHsKCiAgICAgICAgYmFzaWNfc3RyaW5nIF9fcyhfX2sxLCBfX2syKTsKICAgICAgICByZXR1cm4g
X01fcmVwbGFjZV9zYWZlKF9faTEsIF9faTIsIF9fcy5fTV9pYmVnaW4oKSwgX19zLl9NX2llbmQo
KSk7CiAgICAgIH0KCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJh
aXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXI+
CiAgICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mCiAgICAgIGJhc2lj
X3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgICBfTV9yZXBsYWNlX3NhZmUo
aXRlcmF0b3IgX19pMSwgaXRlcmF0b3IgX19pMiwgX0ZvcndhcmRJdGVyIF9fazEsCiAgICAgICAg
ICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19rMikKICAgICAgewogICAgICAgIHNpemVfdHlw
ZSBfX2RuZXcgPSBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KHN0ZDo6ZGlzdGFuY2UoX19rMSwgX19r
MikpOwogICAgICAgIHNpemVfdHlwZSBfX2RvbGQgPSBfX2kyIC0gX19pMTsKICAgICAgICBzaXpl
X3R5cGUgX19kbWF4ID0gdGhpcy0+bWF4X3NpemUoKTsKCiAgICAgICAgaWYgKF9fZG1heCA8PSBf
X2RuZXcpCiAgICAgICAgICBfX3Rocm93X2xlbmd0aF9lcnJvcigiYmFzaWNfc3RyaW5nOjpfTV9y
ZXBsYWNlIik7CiAgICAgICAgc2l6ZV90eXBlIF9fb2ZmID0gX19pMSAtIF9NX2liZWdpbigpOwog
ICAgICAgIF9NX211dGF0ZShfX29mZiwgX19kb2xkLCBfX2RuZXcpOwoKCiAgICAgICAgaWYgKF9f
ZG5ldykKICAgICAgICAgIF9TX2NvcHlfY2hhcnMoX01fZGF0YSgpICsgX19vZmYsIF9fazEsIF9f
azIpOwoKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19zdHJp
bmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1Ry
YWl0cywgX0FsbG9jPjo6CiAgICByZXBsYWNlKHNpemVfdHlwZSBfX3BvczEsIHNpemVfdHlwZSBf
X24xLCBjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyLAogICAgICAgICAgICBzaXplX3R5cGUgX19w
b3MyLCBzaXplX3R5cGUgX19uMikKICAgIHsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fc3Ryc2l6
ZSA9IF9fc3RyLnNpemUoKTsKICAgICAgaWYgKF9fcG9zMiA+IF9fc3Ryc2l6ZSkKICAgICAgICBf
X3Rocm93X291dF9vZl9yYW5nZSgiYmFzaWNfc3RyaW5nOjpyZXBsYWNlIik7CiAgICAgIGNvbnN0
IGJvb2wgX190ZXN0bjIgPSBfX24yIDwgX19zdHJzaXplIC0gX19wb3MyOwogICAgICBjb25zdCBz
aXplX3R5cGUgX19mb2xkbjIgPSBfX3Rlc3RuMiA/IF9fbjIgOiBfX3N0cnNpemUgLSBfX3BvczI7
CiAgICAgIHJldHVybiB0aGlzLT5yZXBsYWNlKF9fcG9zMSwgX19uMSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19zdHIuX01fZGF0YSgpICsgX19wb3MyLCBfX2ZvbGRuMik7CiAgICB9Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0Fs
bG9jPgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYKICAgIGJhc2lj
X3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgYXBwZW5kKGNvbnN0IGJhc2lj
X3N0cmluZyYgX19zdHIpCiAgICB7CgoKCiAgICAgIHNpemVfdHlwZSBfX3NpemUgPSBfX3N0ci5z
aXplKCk7CiAgICAgIHNpemVfdHlwZSBfX2xlbiA9IF9fc2l6ZSArIHRoaXMtPnNpemUoKTsKICAg
ICAgaWYgKF9fbGVuID4gdGhpcy0+Y2FwYWNpdHkoKSkKICAgICAgICB0aGlzLT5yZXNlcnZlKF9f
bGVuKTsKICAgICAgcmV0dXJuIF9NX3JlcGxhY2Vfc2FmZShfTV9pZW5kKCksIF9NX2llbmQoKSwg
X19zdHIuX01faWJlZ2luKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19zdHIuX01f
aWVuZCgpKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJh
aXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBf
QWxsb2M+JgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBh
cHBlbmQoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwgc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5
cGUgX19uKQogICAgewoKCgogICAgICBzaXplX3R5cGUgX19sZW4gPSBzdGQ6Om1pbihfX3N0ci5z
aXplKCkgLSBfX3BvcywgX19uKSArIHRoaXMtPnNpemUoKTsKICAgICAgaWYgKF9fbGVuID4gdGhp
cy0+Y2FwYWNpdHkoKSkKICAgICAgICB0aGlzLT5yZXNlcnZlKF9fbGVuKTsKICAgICAgcmV0dXJu
IF9NX3JlcGxhY2Vfc2FmZShfTV9pZW5kKCksIF9NX2llbmQoKSwgX19zdHIuX01fY2hlY2soX19w
b3MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fc3RyLl9NX2ZvbGQoX19wb3MsIF9f
bikpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMs
IHR5cGVuYW1lIF9BbGxvYz4KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxv
Yz4mCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIGFwcGVu
ZChjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fbikKICAgIHsKICAgICAgc2l6ZV90eXBl
IF9fbGVuID0gX19uICsgdGhpcy0+c2l6ZSgpOwogICAgICBpZiAoX19sZW4gPiB0aGlzLT5jYXBh
Y2l0eSgpKQogICAgICAgIHRoaXMtPnJlc2VydmUoX19sZW4pOwogICAgICByZXR1cm4gX01fcmVw
bGFjZV9zYWZlKF9NX2llbmQoKSwgX01faWVuZCgpLCBfX3MsIF9fcyArIF9fbik7CiAgICB9Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0Fs
bG9jPgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYKICAgIGJhc2lj
X3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgYXBwZW5kKHNpemVfdHlwZSBf
X24sIF9DaGFyVCBfX2MpCiAgICB7CiAgICAgIHNpemVfdHlwZSBfX2xlbiA9IF9fbiArIHRoaXMt
PnNpemUoKTsKICAgICAgaWYgKF9fbGVuID4gdGhpcy0+Y2FwYWNpdHkoKSkKICAgICAgICB0aGlz
LT5yZXNlcnZlKF9fbGVuKTsKICAgICAgIHJldHVybiB0aGlzLT5yZXBsYWNlKF9NX2llbmQoKSwg
X01faWVuZCgpLCBfX24sIF9fYyk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgYmFzaWNfc3RyaW5nPF9DaGFy
VCwgX1RyYWl0cywgX0FsbG9jPgogICAgb3BlcmF0b3IrKGNvbnN0IF9DaGFyVCogX19saHMsCiAg
ICAgICAgICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYg
X19yaHMpCiAgICB7CiAgICAgIHR5cGVkZWYgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywg
X0FsbG9jPiBfX3N0cmluZ190eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fc3RyaW5nX3R5
cGU6OnNpemVfdHlwZSBfX3NpemVfdHlwZTsKICAgICAgX19zaXplX3R5cGUgX19sZW4gPSBfVHJh
aXRzOjpsZW5ndGgoX19saHMpOwogICAgICBfX3N0cmluZ190eXBlIF9fc3RyOwogICAgICBfX3N0
ci5yZXNlcnZlKF9fbGVuICsgX19yaHMuc2l6ZSgpKTsKICAgICAgX19zdHIuYXBwZW5kKF9fbGhz
LCBfX2xocyArIF9fbGVuKTsKICAgICAgX19zdHIuYXBwZW5kKF9fcmhzKTsKICAgICAgcmV0dXJu
IF9fc3RyOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp
dHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9B
bGxvYz4KICAgIG9wZXJhdG9yKyhfQ2hhclQgX19saHMsIGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hh
clQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fcmhzKQogICAgewogICAgICB0eXBlZGVmIGJhc2ljX3N0
cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4gX19zdHJpbmdfdHlwZTsKICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBfX3N0cmluZ190eXBlOjpzaXplX3R5cGUgX19zaXplX3R5cGU7CiAgICAgIF9f
c3RyaW5nX3R5cGUgX19zdHI7CiAgICAgIF9fc2l6ZV90eXBlIF9fbGVuID0gX19yaHMuc2l6ZSgp
OwogICAgICBfX3N0ci5yZXNlcnZlKF9fbGVuICsgMSk7CiAgICAgIF9fc3RyLmFwcGVuZChfX3Np
emVfdHlwZSgxKSwgX19saHMpOwogICAgICBfX3N0ci5hcHBlbmQoX19yaHMpOwogICAgICByZXR1
cm4gX19zdHI7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1Ry
YWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywg
X0FsbG9jPiYKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAg
cmVwbGFjZShpdGVyYXRvciBfX2kxLCBpdGVyYXRvciBfX2kyLCBzaXplX3R5cGUgX19uMiwgX0No
YXJUIF9fYykKICAgIHsKICAgICAgc2l6ZV90eXBlIF9fbjEgPSBfX2kyIC0gX19pMTsKICAgICAg
c2l6ZV90eXBlIF9fb2ZmMSA9IF9faTEgLSBfTV9pYmVnaW4oKTsKICAgICAgaWYgKG1heF9zaXpl
KCkgLSAodGhpcy0+c2l6ZSgpIC0gX19uMSkgPD0gX19uMikKICAgICAgICBfX3Rocm93X2xlbmd0
aF9lcnJvcigiYmFzaWNfc3RyaW5nOjpyZXBsYWNlIik7CiAgICAgIF9NX211dGF0ZSAoX19vZmYx
LCBfX24xLCBfX24yKTsKCiAgICAgIGlmIChfX24yKQogICAgICAgIHRyYWl0c190eXBlOjphc3Np
Z24oX01fZGF0YSgpICsgX19vZmYxLCBfX24yLCBfX2MpOwogICAgICByZXR1cm4gKnRoaXM7CiAg
ICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5h
bWUgX0FsbG9jPgogICAgdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0Fs
bG9jPjo6c2l6ZV90eXBlCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+
OjoKICAgIGNvcHkoX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX24sIHNpemVfdHlwZSBfX3Bvcykg
Y29uc3QKICAgIHsKICAgICAgaWYgKF9fcG9zID4gdGhpcy0+c2l6ZSgpKQogICAgICAgIF9fdGhy
b3dfb3V0X29mX3JhbmdlKCJiYXNpY19zdHJpbmc6OmNvcHkiKTsKCiAgICAgIGlmIChfX24gPiB0
aGlzLT5zaXplKCkgLSBfX3BvcykKICAgICAgICBfX24gPSB0aGlzLT5zaXplKCkgLSBfX3BvczsK
CiAgICAgIHRyYWl0c190eXBlOjpjb3B5KF9fcywgX01fZGF0YSgpICsgX19wb3MsIF9fbik7Cgog
ICAgICByZXR1cm4gX19uOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVu
YW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxf
Q2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAgYmFzaWNfc3RyaW5nPF9DaGFy
VCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBmaW5kKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5
cGUgX19wb3MsIHNpemVfdHlwZSBfX24pIGNvbnN0CiAgICB7CiAgICAgIHNpemVfdHlwZSBfX3Np
emUgPSB0aGlzLT5zaXplKCk7CiAgICAgIHNpemVfdCBfX3hwb3MgPSBfX3BvczsKICAgICAgY29u
c3QgX0NoYXJUKiBfX2RhdGEgPSBfTV9kYXRhKCk7CiAgICAgIGZvciAoOyBfX3hwb3MgKyBfX24g
PD0gX19zaXplOyArK19feHBvcykKICAgICAgICBpZiAodHJhaXRzX3R5cGU6OmNvbXBhcmUoX19k
YXRhICsgX194cG9zLCBfX3MsIF9fbikgPT0gMCkKICAgICAgICAgIHJldHVybiBfX3hwb3M7CiAg
ICAgIHJldHVybiBucG9zOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVu
YW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxf
Q2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAgYmFzaWNfc3RyaW5nPF9DaGFy
VCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBmaW5kKF9DaGFyVCBfX2MsIHNpemVfdHlwZSBfX3Bv
cykgY29uc3QKICAgIHsKICAgICAgc2l6ZV90eXBlIF9fc2l6ZSA9IHRoaXMtPnNpemUoKTsKICAg
ICAgc2l6ZV90eXBlIF9fcmV0ID0gbnBvczsKICAgICAgaWYgKF9fcG9zIDwgX19zaXplKQogICAg
ICAgIHsKICAgICAgICAgIGNvbnN0IF9DaGFyVCogX19kYXRhID0gX01fZGF0YSgpOwogICAgICAg
ICAgc2l6ZV90eXBlIF9fbiA9IF9fc2l6ZSAtIF9fcG9zOwogICAgICAgICAgY29uc3QgX0NoYXJU
KiBfX3AgPSB0cmFpdHNfdHlwZTo6ZmluZChfX2RhdGEgKyBfX3BvcywgX19uLCBfX2MpOwogICAg
ICAgICAgaWYgKF9fcCkKICAgICAgICAgICAgX19yZXQgPSBfX3AgLSBfX2RhdGE7CiAgICAgICAg
fQogICAgICByZXR1cm4gX19yZXQ7CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs
IHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHR5cGVuYW1lIGJhc2ljX3N0
cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAgYmFzaWNfc3RyaW5n
PF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICByZmluZChjb25zdCBfQ2hhclQqIF9fcywg
c2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uKSBjb25zdAogICAgewogICAgICBzaXplX3R5
cGUgX19zaXplID0gdGhpcy0+c2l6ZSgpOwogICAgICBpZiAoX19uIDw9IF9fc2l6ZSkKICAgICAg
ICB7CiAgICAgICAgICBfX3BvcyA9IHN0ZDo6bWluKF9fc2l6ZSAtIF9fbiwgX19wb3MpOwogICAg
ICAgICAgY29uc3QgX0NoYXJUKiBfX2RhdGEgPSBfTV9kYXRhKCk7CiAgICAgICAgICBkbwogICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgaWYgKHRyYWl0c190eXBlOjpjb21wYXJlKF9fZGF0YSAr
IF9fcG9zLCBfX3MsIF9fbikgPT0gMCkKICAgICAgICAgICAgICAgIHJldHVybiBfX3BvczsKICAg
ICAgICAgICAgfQogICAgICAgICAgd2hpbGUgKF9fcG9zLS0gPiAwKTsKICAgICAgICB9CiAgICAg
IHJldHVybiBucG9zOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hh
clQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwg
X1RyYWl0cywgX0FsbG9jPjo6CiAgICByZmluZChfQ2hhclQgX19jLCBzaXplX3R5cGUgX19wb3Mp
IGNvbnN0CiAgICB7CiAgICAgIHNpemVfdHlwZSBfX3NpemUgPSB0aGlzLT5zaXplKCk7CiAgICAg
IGlmIChfX3NpemUpCiAgICAgICAgewogICAgICAgICAgc2l6ZV90IF9feHBvcyA9IF9fc2l6ZSAt
IDE7CiAgICAgICAgICBpZiAoX194cG9zID4gX19wb3MpCiAgICAgICAgICAgIF9feHBvcyA9IF9f
cG9zOwoKICAgICAgICAgIGZvciAoKytfX3hwb3M7IF9feHBvcy0tID4gMDsgKQogICAgICAgICAg
ICBpZiAodHJhaXRzX3R5cGU6OmVxKF9NX2RhdGEoKVtfX3hwb3NdLCBfX2MpKQogICAgICAgICAg
ICAgIHJldHVybiBfX3hwb3M7CiAgICAgICAgfQogICAgICByZXR1cm4gbnBvczsKICAgIH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxs
b2M+CiAgICB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+Ojpz
aXplX3R5cGUKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAg
ZmluZF9maXJzdF9vZihjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5
cGUgX19uKSBjb25zdAogICAgewogICAgICBmb3IgKDsgX19uICYmIF9fcG9zIDwgdGhpcy0+c2l6
ZSgpOyArK19fcG9zKQogICAgICAgIHsKICAgICAgICAgIGNvbnN0IF9DaGFyVCogX19wID0gdHJh
aXRzX3R5cGU6OmZpbmQoX19zLCBfX24sIF9NX2RhdGEoKVtfX3Bvc10pOwogICAgICAgICAgaWYg
KF9fcCkKICAgICAgICAgICAgcmV0dXJuIF9fcG9zOwogICAgICAgIH0KICAgICAgcmV0dXJuIG5w
b3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywg
dHlwZW5hbWUgX0FsbG9jPgogICAgdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0
cywgX0FsbG9jPjo6c2l6ZV90eXBlCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBf
QWxsb2M+OjoKICAgIGZpbmRfbGFzdF9vZihjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9f
cG9zLCBzaXplX3R5cGUgX19uKSBjb25zdAogICAgewogICAgICBzaXplX3R5cGUgX19zaXplID0g
dGhpcy0+c2l6ZSgpOwogICAgICBpZiAoX19zaXplICYmIF9fbikKICAgICAgICB7CiAgICAgICAg
ICBpZiAoLS1fX3NpemUgPiBfX3BvcykKICAgICAgICAgICAgX19zaXplID0gX19wb3M7CiAgICAg
ICAgICBkbwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgaWYgKHRyYWl0c190eXBlOjpmaW5k
KF9fcywgX19uLCBfTV9kYXRhKClbX19zaXplXSkpCiAgICAgICAgICAgICAgICByZXR1cm4gX19z
aXplOwogICAgICAgICAgICB9CiAgICAgICAgICB3aGlsZSAoX19zaXplLS0gIT0gMCk7CiAgICAg
ICAgfQogICAgICByZXR1cm4gbnBvczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB0eXBlbmFtZSBiYXNpY19z
dHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjpzaXplX3R5cGUKICAgIGJhc2ljX3N0cmlu
ZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgZmluZF9maXJzdF9ub3Rfb2YoY29uc3Qg
X0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbikgY29uc3QKICAgIHsK
ICAgICAgc2l6ZV90IF9feHBvcyA9IF9fcG9zOwogICAgICBmb3IgKDsgX194cG9zIDwgdGhpcy0+
c2l6ZSgpOyArK19feHBvcykKICAgICAgICBpZiAoIXRyYWl0c190eXBlOjpmaW5kKF9fcywgX19u
LCBfTV9kYXRhKClbX194cG9zXSkpCiAgICAgICAgICByZXR1cm4gX194cG9zOwogICAgICByZXR1
cm4gbnBvczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJh
aXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJULCBf
VHJhaXRzLCBfQWxsb2M+OjpzaXplX3R5cGUKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFp
dHMsIF9BbGxvYz46OgogICAgZmluZF9maXJzdF9ub3Rfb2YoX0NoYXJUIF9fYywgc2l6ZV90eXBl
IF9fcG9zKSBjb25zdAogICAgewogICAgICBzaXplX3QgX194cG9zID0gX19wb3M7CiAgICAgIGZv
ciAoOyBfX3hwb3MgPCB0aGlzLT5zaXplKCk7ICsrX194cG9zKQogICAgICAgIGlmICghdHJhaXRz
X3R5cGU6OmVxKF9NX2RhdGEoKVtfX3hwb3NdLCBfX2MpKQogICAgICAgICAgcmV0dXJuIF9feHBv
czsKICAgICAgcmV0dXJuIG5wb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgdHlwZW5hbWUgYmFzaWNfc3Ry
aW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6c2l6ZV90eXBlCiAgICBiYXNpY19zdHJpbmc8
X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIGZpbmRfbGFzdF9ub3Rfb2YoY29uc3QgX0No
YXJUKiBfX3MsIHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbikgY29uc3QKICAgIHsKICAg
ICAgc2l6ZV90eXBlIF9fc2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICAgaWYgKF9fc2l6ZSkKICAg
ICAgICB7CiAgICAgICAgICBpZiAoLS1fX3NpemUgPiBfX3BvcykKICAgICAgICAgICAgX19zaXpl
ID0gX19wb3M7CiAgICAgICAgICBkbwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgaWYgKCF0
cmFpdHNfdHlwZTo6ZmluZChfX3MsIF9fbiwgX01fZGF0YSgpW19fc2l6ZV0pKQogICAgICAgICAg
ICAgICAgcmV0dXJuIF9fc2l6ZTsKICAgICAgICAgICAgfQogICAgICAgICAgd2hpbGUgKF9fc2l6
ZS0tKTsKICAgICAgICB9CiAgICAgIHJldHVybiBucG9zOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHR5cGVu
YW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAg
YmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBmaW5kX2xhc3Rfbm90
X29mKF9DaGFyVCBfX2MsIHNpemVfdHlwZSBfX3BvcykgY29uc3QKICAgIHsKICAgICAgc2l6ZV90
eXBlIF9fc2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICAgaWYgKF9fc2l6ZSkKICAgICAgICB7CiAg
ICAgICAgICBpZiAoLS1fX3NpemUgPiBfX3BvcykKICAgICAgICAgICAgX19zaXplID0gX19wb3M7
CiAgICAgICAgICBkbwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgaWYgKCF0cmFpdHNfdHlw
ZTo6ZXEoX01fZGF0YSgpW19fc2l6ZV0sIF9fYykpCiAgICAgICAgICAgICAgICByZXR1cm4gX19z
aXplOwogICAgICAgICAgICB9CiAgICAgICAgICB3aGlsZSAoX19zaXplLS0pOwogICAgICAgIH0K
ICAgICAgcmV0dXJuIG5wb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlw
ZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW50CiAgICBiYXNpY19zdHJpbmc8
X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIGNvbXBhcmUoc2l6ZV90eXBlIF9fcG9zLCBz
aXplX3R5cGUgX19uLCBjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyKSBjb25zdAogICAgewogICAg
ICBzaXplX3R5cGUgX19zaXplID0gdGhpcy0+c2l6ZSgpOwogICAgICBzaXplX3R5cGUgX19vc2l6
ZSA9IF9fc3RyLnNpemUoKTsKICAgICAgaWYgKF9fcG9zID4gX19zaXplKQogICAgICAgIF9fdGhy
b3dfb3V0X29mX3JhbmdlKCJiYXNpY19zdHJpbmc6OmNvbXBhcmUiKTsKCiAgICAgIHNpemVfdHlw
ZSBfX3JzaXplPSBzdGQ6Om1pbihfX3NpemUgLSBfX3BvcywgX19uKTsKICAgICAgc2l6ZV90eXBl
IF9fbGVuID0gc3RkOjptaW4oX19yc2l6ZSwgX19vc2l6ZSk7CiAgICAgIGludCBfX3IgPSB0cmFp
dHNfdHlwZTo6Y29tcGFyZShfTV9kYXRhKCkgKyBfX3BvcywgX19zdHIuZGF0YSgpLCBfX2xlbik7
CiAgICAgIGlmICghX19yKQogICAgICAgIF9fciA9IF9fcnNpemUgLSBfX29zaXplOwogICAgICBy
ZXR1cm4gX19yOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U
cmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGludAogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwg
X1RyYWl0cywgX0FsbG9jPjo6CiAgICBjb21wYXJlKHNpemVfdHlwZSBfX3BvczEsIHNpemVfdHlw
ZSBfX24xLCBjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyLAogICAgICAgICAgICBzaXplX3R5cGUg
X19wb3MyLCBzaXplX3R5cGUgX19uMikgY29uc3QKICAgIHsKICAgICAgc2l6ZV90eXBlIF9fc2l6
ZSA9IHRoaXMtPnNpemUoKTsKICAgICAgc2l6ZV90eXBlIF9fb3NpemUgPSBfX3N0ci5zaXplKCk7
CiAgICAgIGlmIChfX3BvczEgPiBfX3NpemUgfHwgX19wb3MyID4gX19vc2l6ZSkKICAgICAgICBf
X3Rocm93X291dF9vZl9yYW5nZSgiYmFzaWNfc3RyaW5nOjpjb21wYXJlIik7CgogICAgICBzaXpl
X3R5cGUgX19yc2l6ZSA9IHN0ZDo6bWluKF9fc2l6ZSAtIF9fcG9zMSwgX19uMSk7CiAgICAgIHNp
emVfdHlwZSBfX3Jvc2l6ZSA9IHN0ZDo6bWluKF9fb3NpemUgLSBfX3BvczIsIF9fbjIpOwogICAg
ICBzaXplX3R5cGUgX19sZW4gPSBzdGQ6Om1pbihfX3JzaXplLCBfX3Jvc2l6ZSk7CiAgICAgIGlu
dCBfX3IgPSB0cmFpdHNfdHlwZTo6Y29tcGFyZShfTV9kYXRhKCkgKyBfX3BvczEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3N0ci5kYXRhKCkgKyBfX3BvczIsIF9fbGVu
KTsKICAgICAgaWYgKCFfX3IpCiAgICAgICAgX19yID0gX19yc2l6ZSAtIF9fcm9zaXplOwogICAg
ICByZXR1cm4gX19yOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt
ZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbnQKICAgIGJhc2ljX3N0cmluZzxfQ2hh
clQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgY29tcGFyZShjb25zdCBfQ2hhclQqIF9fcykgY29u
c3QKICAgIHsKICAgICAgc2l6ZV90eXBlIF9fc2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICAgc2l6
ZV90eXBlIF9fb3NpemUgPSB0cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcyk7CiAgICAgIHNpemVfdHlw
ZSBfX2xlbiA9IHN0ZDo6bWluKF9fc2l6ZSwgX19vc2l6ZSk7CiAgICAgIGludCBfX3IgPSB0cmFp
dHNfdHlwZTo6Y29tcGFyZShfTV9kYXRhKCksIF9fcywgX19sZW4pOwogICAgICBpZiAoIV9fcikK
ICAgICAgICBfX3IgPSBfX3NpemUgLSBfX29zaXplOwogICAgICByZXR1cm4gX19yOwogICAgfQoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBf
QWxsb2M+CiAgICBpbnQKICAgIGJhc2ljX3N0cmluZyA8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+
OjoKICAgIGNvbXBhcmUoc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uMSwgY29uc3QgX0No
YXJUKiBfX3MpIGNvbnN0CiAgICB7CiAgICAgIHNpemVfdHlwZSBfX3NpemUgPSB0aGlzLT5zaXpl
KCk7CiAgICAgIGlmIChfX3BvcyA+IF9fc2l6ZSkKICAgICAgICBfX3Rocm93X291dF9vZl9yYW5n
ZSgiYmFzaWNfc3RyaW5nOjpjb21wYXJlIik7CgogICAgICBzaXplX3R5cGUgX19vc2l6ZSA9IHRy
YWl0c190eXBlOjpsZW5ndGgoX19zKTsKICAgICAgc2l6ZV90eXBlIF9fcnNpemUgPSBzdGQ6Om1p
bihfX3NpemUgLSBfX3BvcywgX19uMSk7CiAgICAgIHNpemVfdHlwZSBfX2xlbiA9IHN0ZDo6bWlu
KF9fcnNpemUsIF9fb3NpemUpOwogICAgICBpbnQgX19yID0gdHJhaXRzX3R5cGU6OmNvbXBhcmUo
X01fZGF0YSgpICsgX19wb3MsIF9fcywgX19sZW4pOwogICAgICBpZiAoIV9fcikKICAgICAgICBf
X3IgPSBfX3JzaXplIC0gX19vc2l6ZTsKICAgICAgcmV0dXJuIF9fcjsKICAgIH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAg
ICBpbnQKICAgIGJhc2ljX3N0cmluZyA8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIGNv
bXBhcmUoc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uMSwgY29uc3QgX0NoYXJUKiBfX3Ms
CiAgICAgICAgICAgIHNpemVfdHlwZSBfX24yKSBjb25zdAogICAgewogICAgICBzaXplX3R5cGUg
X19zaXplID0gdGhpcy0+c2l6ZSgpOwogICAgICBpZiAoX19wb3MgPiBfX3NpemUpCiAgICAgICAg
X190aHJvd19vdXRfb2ZfcmFuZ2UoImJhc2ljX3N0cmluZzo6Y29tcGFyZSIpOwoKICAgICAgc2l6
ZV90eXBlIF9fb3NpemUgPSBzdGQ6Om1pbih0cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcyksIF9fbjIp
OwogICAgICBzaXplX3R5cGUgX19yc2l6ZSA9IHN0ZDo6bWluKF9fc2l6ZSAtIF9fcG9zLCBfX24x
KTsKICAgICAgc2l6ZV90eXBlIF9fbGVuID0gc3RkOjptaW4oX19yc2l6ZSwgX19vc2l6ZSk7CiAg
ICAgIGludCBfX3IgPSB0cmFpdHNfdHlwZTo6Y29tcGFyZShfTV9kYXRhKCkgKyBfX3BvcywgX19z
LCBfX2xlbik7CiAgICAgIGlmICghX19yKQogICAgICAgIF9fciA9IF9fcnNpemUgLSBfX29zaXpl
OwogICAgICByZXR1cm4gX19yOwogICAgfQoKCgoKCiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGJh
c2ljX3N0cmluZzxjaGFyPjsKICBleHRlcm4gdGVtcGxhdGUKICAgIGJhc2ljX2lzdHJlYW08Y2hh
cj4mCiAgICBvcGVyYXRvcj4+KGJhc2ljX2lzdHJlYW08Y2hhcj4mLCBzdHJpbmcmKTsKICBleHRl
cm4gdGVtcGxhdGUKICAgIGJhc2ljX29zdHJlYW08Y2hhcj4mCiAgICBvcGVyYXRvcjw8KGJhc2lj
X29zdHJlYW08Y2hhcj4mLCBjb25zdCBzdHJpbmcmKTsKICBleHRlcm4gdGVtcGxhdGUKICAgIGJh
c2ljX2lzdHJlYW08Y2hhcj4mCiAgICBnZXRsaW5lKGJhc2ljX2lzdHJlYW08Y2hhcj4mLCBzdHJp
bmcmLCBjaGFyKTsKICBleHRlcm4gdGVtcGxhdGUKICAgIGJhc2ljX2lzdHJlYW08Y2hhcj4mCiAg
ICBnZXRsaW5lKGJhc2ljX2lzdHJlYW08Y2hhcj4mLCBzdHJpbmcmKTsKIyA5NjcgIi9ob21lL0Fk
bWluaXN0cmF0b3IvZ2NjdGVzdGluZy9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjQvaW5j
bHVkZS9jKysvYml0cy9iYXNpY19zdHJpbmcudGNjIiAzCn0KIyA1OCAiL2hvbWUvQWRtaW5pc3Ry
YXRvci9nY2N0ZXN0aW5nL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuNC9pbmNsdWRlL2Mr
Ky9zdHJpbmciIDIgMwojIDIgImNvbnN0YW50cy5jYyIgMgoKY2xhc3Mgc3N0cmluZ190IDogcHVi
bGljIHN0ZDo6c3RyaW5nCnsKcHVibGljOgogICAgc3N0cmluZ190KHZvaWQpIDogc3RkOjpzdHJp
bmcoKSB7fQogICAgc3N0cmluZ190KGNvbnN0IGNoYXIqIHNyYykgOiBzdGQ6OnN0cmluZyhzcmMp
IHt9Cn07CgoKY2xhc3MgdGl0bGVfdHlwZQp7CnB1YmxpYzoKICAgIHNzdHJpbmdfdCB0aXRsZV9t
OwoKcHVibGljOgogICAgdm9pZCBjbGVhcigpCiAgICB7CiAgICAgICAgdGl0bGVfbSA9ICIiOwog
ICAgfQogICAgdGl0bGVfdHlwZSgpIHsgY2xlYXIoKTsgfQogICAgdGl0bGVfdHlwZShjb25zdCBj
aGFyKiB0aXRsZV9tX2luLCBjb25zdCBjaGFyKiB0aXRsZV9mX2luLCBpbnQgZXhwX2luKQogICAg
ewogICAgICAgIHRpdGxlX20gPSB0aXRsZV9tX2luOwogICAgfQp9OwpleHRlcm4gY29uc3QgdGl0
bGVfdHlwZSB0aXRsZXNbOCArMV1bMTI3XTsKIyAzOCAiY29uc3RhbnRzLmNjIgpjb25zdCB0aXRs
ZV90eXBlIHRpdGxlc1s4ICsxXVsxMjddID0KICAgIHsKICAgICAgICB7CiAgICAgICAgICAgIHRp
dGxlX3R5cGUoICJNYW4iLCAiV29tYW4iLCAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJB
cHByZW50aWNlIiwgIkFwcHJlbnRpY2UiLCAxICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJT
dHVkZW50IiwgIlN0dWRlbnQiLCAyNDk5ICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJTY2hv
bGFyIiwgIlNjaG9sYXIiLCAyNTAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJUcmlja3N0
ZXIiLCAiVHJpY2tzdGVyIiwgNTAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiTWVkaXVt
IiwgIkd5cHN5IiwgMTAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlNjcmliZSIsICJX
aXRjaCIsIDIwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJTZWVyIiwgIlNlZXJlc3Mi
LCAyMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiU2FnZSIsICJTYWdlIiwgMzAwMDAg
KSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIklsbHVzaW9uaXN0IiwgIklsbHVzaW9uaXN0Iiwg
NTAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkFianVyZXIiLCAiQWJqdXJlc3MiLCAx
MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkludm9rZXIiLCAiSW52b2tlciIsIDIw
MDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiRW5jaGFudGVyIiwgIkVuY2hhbnRyZXNz
IiwgMzc1MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJDb25qdXJlciIsICJDb25qdXJl
c3MiLCAzNzUwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIk1hZ2ljaWFuIiwgIk1hZ2lj
aWFuIiwgMzc1MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJTcGVsbE1hc3RlciIsICJT
cGVsbE1pc3RyZXNzIiwgMzc1MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJTYXZhbnQi
LCAiU2F2YW50aSIsIDM3NTAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiTWFndXMiLCAi
SW5jYW50cml4IiwgMzc1MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJXaXphcmQiLCAi
V2l6YXJkIiwgMzc1MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJXYXJsb2NrIiwgIldh
ciBXaXRjaCIsIDM3NTAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiR2VvbWFuY2VyIiwg
Ikdlb21hbmNlcmVzcyIsIDM3NTAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiU3Bpcml0
bWFuIiwgIlNwaXJpdHdvbWFuIiwgMzc1MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJO
ZWNyb21hbmNlciIsICJOZWNyb21hbmNlcmVzcyIsIDM3NTAwMCApLAogICAgICAgICAgICB0aXRs
ZV90eXBlKCAiTWluZHJlYWRlciIsICJNaW5kcmVhZGVyIiwgMzc1MDAwICksCiAgICAgICAgICAg
IHRpdGxlX3R5cGUoICJQb3NzZXNzb3IiLCAiUG9zc2Vzc29yZXNzIiwgMzc1MDAwICksCiAgICAg
ICAgICAgIHRpdGxlX3R5cGUoICJGYWlyeSIsICJGYWlyeSIsIDM3NTAwMCApLAogICAgICAgICAg
ICB0aXRsZV90eXBlKCAiQ2hhcm1lciIsICJDaGFybWVzcyIsIDM3NTAwMCApLAogICAgICAgICAg
ICB0aXRsZV90eXBlKCAiTWVkaWNhc3RlciIsICJNZWRpY2FzdGVyIiwgMzc1MDAwICksCiAgICAg
ICAgICAgIHRpdGxlX3R5cGUoICJWb29kb28iLCAiVm9vZG9vZXNzIiwgMzc1MDAwICksCiAgICAg
ICAgICAgIHRpdGxlX3R5cGUoICJEb3dzZXIiLCAiRG93c2VyZXNzIiwgMzc1MDAwICksCiAgICAg
ICAgICAgIHRpdGxlX3R5cGUoICJNZWRpY2luZU1hbiIsICJNZWRpY2luZVdvbWFuIiwgMzc1MDAw
ICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJXaXRjaC1Eb2N0b3IiLCAiV2l0Y2gtRG9jdG9y
IiwgMzc1MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJTaGFtYW4iLCAiU2hhbWFuZXNz
IiwgMzc1MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJIeXBub3Rpc3QiLCAiSHlwbm90
aXN0IiwgMzc1MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJBc3Ryb2xvZ2VyIiwgIkFz
dHJvbG9nZXNzIiwgMzc1MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJNYXN0ZXJtaW5k
IiwgIk1hc3Rlcm1pbmQiLCAzNzUwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlNwZWxs
Y2FzdGVyIiwgIlNwZWxsY2FzdGVyIiwgMzc1MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUo
ICJEZW1vbnN0cmF0b3IiLCAiRGVtb25zdHJhdG9yIiwgMzc1MDAwICksCiAgICAgICAgICAgIHRp
dGxlX3R5cGUoICJGYXNjaW5hdG9yIiwgIkZhc2NpbmF0b3IiLCAzNzUwMDAgKSwKICAgICAgICAg
ICAgdGl0bGVfdHlwZSggIkZpcmV3b3JrZXIiLCAiRmlyZXdvcmtlc3MiLCAzNzUwMDAgKSwKICAg
ICAgICAgICAgdGl0bGVfdHlwZSggIlN1bW1vbmVyIiwgIlN1bW1vbmVzcyIsIDM3NTAwMCApLAog
ICAgICAgICAgICB0aXRsZV90eXBlKCAiR2VuaWUiLCAiR2VuaWUiLCAzNzUwMDAgKSwKICAgICAg
ICAgICAgdGl0bGVfdHlwZSggIkZsYW1ldGhyb3dlciIsICJGbGFtZXRocm93ZXIiLCAzNzUwMDAg
KSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIk9yYWNsZXIiLCAiT3JhY2xlc3MiLCAzNzUwMDAg
KSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlNvb3Roc2F5ZXIiLCAiU29vdGhzYXllciIsIDM3
NTAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiQXVndXIiLCAiQXVndXJlc3MiLCAzNzUw
MDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkZvcnR1bmV0ZWxsZXIiLCAiUGFsbXJlYWRl
ciIsIDM3NTAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiT21lbiIsICJPbWVuZXNzIiwg
Mzc1MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJTdGFyZ2F6ZXIiLCAiR2F6ZXIiLCAz
NzUwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlNvcmNlcmVyIiwgIlNvcmNlcmVyZXNz
IiwgMzc1MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJHcmFuZCBTb3JjZXJlciIsICJH
cmFuZCBTb3JjZXJlcmVzcyIsIDEwMDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIklt
bW9ydGFsIFdhcmxvY2siLCAiSW1tb3J0YWwgRW5jaGFudHJlc3MiLCAxNTAwMDAwMDAgKSwKICAg
ICAgICAgICAgdGl0bGVfdHlwZSggIkltbW9ydGFsIFdhcmxvY2siLCAiSW1tb3J0YWwgRW5jaGFu
dHJlc3MiLCAxMDAwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiSW1tb3J0YWwgV2Fy
bG9jayIsICJJbW1vcnRhbCBFbmNoYW50cmVzcyIsIDEwMDAwMDAwICksCiAgICAgICAgICAgIHRp
dGxlX3R5cGUoICJJbW1vcnRhbCBXYXJsb2NrIiwgIkltbW9ydGFsIEVuY2hhbnRyZXNzIiwgMTAw
MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkltbW9ydGFsIFdhcmxvY2siLCAiSW1t
b3J0YWwgRW5jaGFudHJlc3MiLCAxMDAwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAi
SW1tb3J0YWwgV2FybG9jayIsICJJbW1vcnRhbCBFbmNoYW50cmVzcyIsIDEwMDAwMDAwICksCiAg
ICAgICAgICAgIHRpdGxlX3R5cGUoICJBdmF0YXIgb2YgTWFnaWMiLCAiRW1wcmVzcyBvZiBNYWdp
YyIsIDEwMDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJHb2Qgb2YgTWFnaWMiLCAi
R29kZGVzcyBvZiBNYWdpYyIsIDEwMDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJJ
bXBsZW1lbnRvciIsICJJbXBsZW1lbnRyaXgiLCAxMDAwMDAwMCApLAogICAgICAgICAgICB0aXRs
ZV90eXBlKCAiSW1wbGVtZW50b3IiLCAiSW1wbGVtZW50cml4IiwgMTAwMDAwMDAgKQogICAgICAg
IH0sCiAgICAgICAgewogICAgICAgICAgICB0aXRsZV90eXBlKCAiTWFuIiwgIldvbWFuIiwgMCAp
LAogICAgICAgICAgICB0aXRsZV90eXBlKCAiQmVsaWV2ZXIiLCAiQmVsaWV2ZXIiLCAxICksCiAg
ICAgICAgICAgIHRpdGxlX3R5cGUoICJBdHRlbmRhbnQiLCAiQXR0ZW5kYW50IiwgMTQ5OSApLAog
ICAgICAgICAgICB0aXRsZV90eXBlKCAiQWNvbHl0ZSIsICJBY29seXRlIiwgMTUwMCApLAogICAg
ICAgICAgICB0aXRsZV90eXBlKCAiTm92aWNlIiwgIk5vdmljZSIsIDMwMDAgKSwKICAgICAgICAg
ICAgdGl0bGVfdHlwZSggIk1pc3Npb25hcnkiLCAiTWlzc2lvbmFyeSIsIDcwMDAgKSwKICAgICAg
ICAgICAgdGl0bGVfdHlwZSggIkFkZXB0IiwgIkFkZXB0IiwgMTQ1MDAgKSwKICAgICAgICAgICAg
dGl0bGVfdHlwZSggIkRlYWNvbiIsICJEZWFjb25lc3MiLCAyNzUwMCApLAogICAgICAgICAgICB0
aXRsZV90eXBlKCAiVmljYXIiLCAiVmljYXJlc3MiLCA1NTAwMCApLAogICAgICAgICAgICB0aXRs
ZV90eXBlKCAiUHJpZXN0IiwgIlByaWVzdGVzcyIsIDExNTAwMCApLAogICAgICAgICAgICB0aXRs
ZV90eXBlKCAiTWluaXN0ZXIiLCAiTGFkeSBNaW5pc3RlciIsIDMwMDAwMCApLAogICAgICAgICAg
ICB0aXRsZV90eXBlKCAiQ2Fub24iLCAiQ2Fub24iLCAzMDAwMDAgKSwKICAgICAgICAgICAgdGl0
bGVfdHlwZSggIkxldml0ZSIsICJMZXZpdGVzcyIsIDMwMDAwMCApLAogICAgICAgICAgICB0aXRs
ZV90eXBlKCAiQ3VyYXRlIiwgIkN1cmVzcyIsIDMwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90
eXBlKCAiTW9uayIsICJOdW5uZSIsIDMwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAi
SGVhbGVyIiwgIkhlYWxlciIsIDMwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiQ2hh
cGxhaW4iLCAiQ2hhcGxhaW4iLCAzMDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkV4
cG9zaXRvciIsICJFeHBvc2l0cmVzcyIsIDMwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBl
KCAiVXNoZXIiLCAiVXNoZXJlc3MiLCAzMDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSgg
IlBhZ2UiLCAiUGFnZXNzIiwgMzAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJTcXVp
cmUiLCAiU3F1aXJlc3MiLCAzMDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlJlc3Vy
cmVjdG9yIiwgIlJlc3VycmVjdGVzcyIsIDMwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBl
KCAiQXBvc3RsZSIsICJIaWdoIFByaWVzdGVzcyIsIDMwMDAwMCApLAogICAgICAgICAgICB0aXRs
ZV90eXBlKCAiSG9seSBGYXRoZXIiLCAiSG9seSBNb3RoZXIiLCAzMDAwMDAgKSwKICAgICAgICAg
ICAgdGl0bGVfdHlwZSggIkFsdGFyYm95IiwgIkFsdGFyZ2lybCIsIDMwMDAwMCApLAogICAgICAg
ICAgICB0aXRsZV90eXBlKCAiU2FuY3RvciIsICJTYW5jdG9yZXNzIiwgMzAwMDAwICksCiAgICAg
ICAgICAgIHRpdGxlX3R5cGUoICJEZWFuIiwgIkRlYW5lc3MiLCAzMDAwMDAgKSwKICAgICAgICAg
ICAgdGl0bGVfdHlwZSggIlBhc3RvciIsICJQYXN0b3Jlc3MiLCAzMDAwMDAgKSwKICAgICAgICAg
ICAgdGl0bGVfdHlwZSggIkNvbmZlc3NvciIsICJDb25mZXNzb3Jlc3MiLCAzMDAwMDAgKSwKICAg
ICAgICAgICAgdGl0bGVfdHlwZSggIkRpdmluZSIsICJEaXZpbmVzcyIsIDMwMDAwMCApLAogICAg
ICAgICAgICB0aXRsZV90eXBlKCAiUHJlYWNoZXIiLCAiUHJlYWNoZXJlc3MiLCAzMDAwMDAgKSwK
ICAgICAgICAgICAgdGl0bGVfdHlwZSggIlBvbnRpZmYiLCAiUG9udGlmZmVzcyIsIDMwMDAwMCAp
LAogICAgICAgICAgICB0aXRsZV90eXBlKCAiUmVqdXZlbmF0b3IiLCAiUmVqdXZlbmF0b3IiLCAz
MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlNhaW50IiwgIlNhaW50IiwgMzAwMDAw
ICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJXb3JzaGlwZXIiLCAiV29yc2hpcGVzcyIsIDMw
MDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiQW5pbWF0b3IiLCAiQW5pbWF0b3Jlc3Mi
LCAzMDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkNob2lyYm95IiwgIkNob2lyZ2ly
bCIsIDMwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiR3VydSIsICJHdXJ1IiwgMzAw
MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJDaHVyY2htYW4iLCAiQ2h1cmNobGFkeSIs
IDMwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiTGlmZXNhdmVyIiwgIkxpZmVzYXZl
ciIsIDMwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiUHJvcGhldCIsICJQcm9waGV0
ZXNzIiwgMzAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJCZWFkc21hbiIsICJCZWFk
c3dvbWFuIiwgMzAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJTcGlyaXR1YWwgSGVh
bGVyIiwgIlNwaXJpdHVhbCBIZWFsZXNzIiwgMzAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5
cGUoICJSZXBlbnRvciIsICJSZXBlbnRlc3MiLCAzMDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVf
dHlwZSggIkRpc2NpcGxlIiwgIkRpc2NpcGxlc3MiLCAzMDAwMDAgKSwKICAgICAgICAgICAgdGl0
bGVfdHlwZSggIkJpc2hvcCIsICJMYWR5IEJpc2hvcCIsIDMwMDAwMCApLAogICAgICAgICAgICB0
aXRsZV90eXBlKCAiQXJjaCBCaXNob3AiLCAiQXJjaGxhZHkgQmlzaG9wIiwgMzAwMDAwICksCiAg
ICAgICAgICAgIHRpdGxlX3R5cGUoICJQYXRyaWFyY2giLCAiTWF0cmlhcmNoIiwgMzAwMDAwICks
CiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJBc3Npc3RhbnQgUG9wZSIsICJTaXN0ZXIiLCAzMDAw
MDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlBvcGUiLCAiR3JhbmQgTnVubmUiLCAzMDAw
MDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlN1cHJlbWUgUG9wZSIsICJNb3RoZXIgU3Vw
ZXJpb3IiLCAxMDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJJbW1vcnRhbCBDYXJk
aW5hbCIsICJJbW1vcnRhbCBQcmllc3Rlc3MiLCAxNTAwMDAwMCApLAogICAgICAgICAgICB0aXRs
ZV90eXBlKCAiSW1tb3J0YWwgQ2FyZGluYWwiLCAiSW1tb3J0YWwgUHJpZXN0ZXNzIiwgMTAwMDAw
MCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiSW1tb3J0YWwgQ2FyZGluYWwiLCAiSW1tb3J0
YWwgUHJpZXN0ZXNzIiwgMTAwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiSW1tb3J0
YWwgQ2FyZGluYWwiLCAiSW1tb3J0YWwgUHJpZXN0ZXNzIiwgMTAwMDAwMCApLAogICAgICAgICAg
ICB0aXRsZV90eXBlKCAiSW1tb3J0YWwgQ2FyZGluYWwiLCAiSW1tb3J0YWwgUHJpZXN0ZXNzIiwg
MTAwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiSW1tb3J0YWwgQ2FyZGluYWwiLCAi
SW1tb3J0YWwgUHJpZXN0ZXNzIiwgMTAwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAi
SW5xdWlzaXRvciIsICJJbnF1aXNpdHJlc3MiLCAxMDAwMDAwICksCiAgICAgICAgICAgIHRpdGxl
X3R5cGUoICJHb2QiLCAiR29kZGVzcyIsIDEwMDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlw
ZSggIkltcGxlbWVudG9yIiwgIkltcGxlbWVudHJlc3MiLCAxMDAwMDAwICksCiAgICAgICAgICAg
IHRpdGxlX3R5cGUoICJJbXBsZW1lbnRvciIsICJJbXBsZW1lbnRyZXNzIiwgMTAwMDAwMCApCiAg
ICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJNYW4iLCAiV29tYW4i
LCAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJTd29yZHB1cGlsIiwgIlN3b3JkcHVwaWwi
LCAxICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJSZWNydWl0IiwgIlJlY3J1aXQiLCAxOTk5
ICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJTZW50cnkiLCAiU2VudHJlc3MiLCAyMDAwICks
CiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJGaWdodGVyIiwgIkZpZ2h0ZXIiLCA0MDAwICksCiAg
ICAgICAgICAgIHRpdGxlX3R5cGUoICJTb2xkaWVyIiwgIlNvbGRpZXIiLCA4MDAwICksCiAgICAg
ICAgICAgIHRpdGxlX3R5cGUoICJXYXJyaW9yIiwgIldhcnJpb3IiLCAxNjAwMCApLAogICAgICAg
ICAgICB0aXRsZV90eXBlKCAiVmV0ZXJhbiIsICJWZXRlcmFuIiwgMzIwMDAgKSwKICAgICAgICAg
ICAgdGl0bGVfdHlwZSggIlN3b3Jkc21hbiIsICJTd29yZHN3b21hbiIsIDYxMDAwICksCiAgICAg
ICAgICAgIHRpdGxlX3R5cGUoICJGZW5jZXIiLCAiRmVuY2VyZXNzIiwgMTI1MDAwICksCiAgICAg
ICAgICAgIHRpdGxlX3R5cGUoICJDb21iYXRhbnQiLCAiQ29tYmF0cml4IiwgMjUwMDAwICksCiAg
ICAgICAgICAgIHRpdGxlX3R5cGUoICJIZXJvIiwgIkhlcm9pbmUiLCAyNTAwMDAgKSwKICAgICAg
ICAgICAgdGl0bGVfdHlwZSggIk15cm1pZG9uIiwgIk15cm1pZG9uIiwgMjUwMDAwICksCiAgICAg
ICAgICAgIHRpdGxlX3R5cGUoICJTd2FzaGJ1Y2tsZXIiLCAiU3dhc2hidWNrbGVyZXNzIiwgMjUw
MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJNZXJjZW5hcnkiLCAiTWVyY2VuYXJlc3Mi
LCAyNTAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlN3b3JkbWFzdGVyIiwgIlN3b3Jk
bWlzdHJlc3MiLCAyNTAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkNvbXBldGl0b3Ii
LCAiQ29tcGV0aXRvcmVzcyIsIDI1MDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiQ2hh
bXBpb24iLCAiTGFkeSBDaGFtcGlvbiIsIDI1MDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBl
KCAiRHJhZ29vbiIsICJMYWR5IERyYWdvb24iLCAyNTAwMDAgKSwKICAgICAgICAgICAgdGl0bGVf
dHlwZSggIkNhdmFsaWVyIiwgIkNhdmFsaWVyIiwgMjUwMDAwICksCiAgICAgICAgICAgIHRpdGxl
X3R5cGUoICJTYWJyZXVyIiwgIlNhYnJldXJlc3MiLCAzNTAwMDAgKSwKICAgICAgICAgICAgdGl0
bGVfdHlwZSggIkFzc2FpbGFudCIsICJBc3NhaWxhbnQiLCAzNTAwMDAgKSwKICAgICAgICAgICAg
dGl0bGVfdHlwZSggIk1pbmktVGFuayIsICJNaW5pLVRhbmtlc3MiLCAzNTAwMDAgKSwKICAgICAg
ICAgICAgdGl0bGVfdHlwZSggIlRyb29wZXIiLCAiTGFkeXRyb29wZXIiLCAzNTAwMDAgKSwKICAg
ICAgICAgICAgdGl0bGVfdHlwZSggIk1haW1lciIsICJNYWltZXNzIiwgMzUwMDAwICksCiAgICAg
ICAgICAgIHRpdGxlX3R5cGUoICJCdXRjaGVyIiwgIkJ1dGNoZXNzIiwgMzUwMDAwICksCiAgICAg
ICAgICAgIHRpdGxlX3R5cGUoICJTbGF5ZXIiLCAiU2xheWVyIiwgMzUwMDAwICksCiAgICAgICAg
ICAgIHRpdGxlX3R5cGUoICJHbGFkaWF0b3IiLCAiTGFkeSBHbGFkaWF0b3IiLCAzNTAwMDAgKSwK
ICAgICAgICAgICAgdGl0bGVfdHlwZSggIkFtYXpvbiIsICJBbWF6b24iLCAzNTAwMDAgKSwKICAg
ICAgICAgICAgdGl0bGVfdHlwZSggIlByaXZhdGUiLCAiUHJpdmF0ZSIsIDM1MDAwMCApLAogICAg
ICAgICAgICB0aXRsZV90eXBlKCAiQnJ1aXNlciIsICJCcnVpc2VyIiwgMzUwMDAwICksCiAgICAg
ICAgICAgIHRpdGxlX3R5cGUoICJPZmZpY2VyIiwgIk9mZmljZXIiLCAzNTAwMDAgKSwKICAgICAg
ICAgICAgdGl0bGVfdHlwZSggIkxhbmNlciIsICJMYW5jZXIiLCAzNTAwMDAgKSwKICAgICAgICAg
ICAgdGl0bGVfdHlwZSggIk11c2tldGVlciIsICJNdXNrZXRlc3MiLCAzNTAwMDAgKSwKICAgICAg
ICAgICAgdGl0bGVfdHlwZSggIkd1bm5lciIsICJHdW5uZXNzIiwgMzUwMDAwICksCiAgICAgICAg
ICAgIHRpdGxlX3R5cGUoICJUYW5rIiwgIlRhbmsiLCAzNTAwMDAgKSwKICAgICAgICAgICAgdGl0
bGVfdHlwZSggIkRlc3Ryb3llciIsICJEZXN0cm95ZXIiLCAzNTAwMDAgKSwKICAgICAgICAgICAg
dGl0bGVfdHlwZSggIlNlcmdlYW50IiwgIlNlcmdlYW50IiwgMzUwMDAwICksCiAgICAgICAgICAg
IHRpdGxlX3R5cGUoICJHdWFyZCIsICJHdWFyZCIsIDM1MDAwMCApLAogICAgICAgICAgICB0aXRs
ZV90eXBlKCAiTGlldXRlbmFudCIsICJMaWV1dGVuYW50IiwgMzUwMDAwICksCiAgICAgICAgICAg
IHRpdGxlX3R5cGUoICJTbWFzaGVyIiwgIlNtYXNoZXNzIiwgMzUwMDAwICksCiAgICAgICAgICAg
IHRpdGxlX3R5cGUoICJLaWNrYm94ZXIiLCAiS2lja2JveGVyIiwgMzUwMDAwICksCiAgICAgICAg
ICAgIHRpdGxlX3R5cGUoICJDcmVtYXRvciIsICJDcmVtYXRvciIsIDM1MDAwMCApLAogICAgICAg
ICAgICB0aXRsZV90eXBlKCAiRXh0ZXJtaW5hdG9yIiwgIlNjcmF0Y2hlciIsIDM1MDAwMCApLAog
ICAgICAgICAgICB0aXRsZV90eXBlKCAiQmFyYmFyaWFuIiwgIkJhcmJhcmlhbiBXb21hbiIsIDM1
MDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiQ2FwdGFpbiIsICJDYXB0YWluIiwgMzUw
MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJDb21tYW5kZXIiLCAiQ29tbWFuZGVyIiwg
MzUwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJLbmlnaHQgQXBwcmVudGljZSIsICJR
dWVlbktvbmciLCAzNTAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIldoaXRlIEtuaWdo
dCIsICJCdXRjaCIsIDM1MDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiQmxhY2sgS25p
Z2h0IiwgIlByb3RlY3RvcmVzcyIsIDM1MDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAi
R3JhbmQgS25pZ2h0IiwgIlByaW5jZXNzIiwgMTAwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90
eXBlKCAiSW1tb3J0YWwiLCAiSW1tb3J0YWwiLCAxNTAwMDAwMDAgKSwKICAgICAgICAgICAgdGl0
bGVfdHlwZSggIkltbW9ydGFsIiwgIkltbW9ydGFsIiwgMTAwMDAwMCApLAogICAgICAgICAgICB0
aXRsZV90eXBlKCAiSW1tb3J0YWwiLCAiSW1tb3J0YWwiLCAxMDAwMDAwICksCiAgICAgICAgICAg
IHRpdGxlX3R5cGUoICJJbW1vcnRhbCIsICJJbW1vcnRhbCIsIDEwMDAwMDAgKSwKICAgICAgICAg
ICAgdGl0bGVfdHlwZSggIkltbW9ydGFsIiwgIkltbW9ydGFsIiwgMTAwMDAwMCApLAogICAgICAg
ICAgICB0aXRsZV90eXBlKCAiSW1tb3J0YWwiLCAiSW1tb3J0YWwiLCAxMDAwMDAwICksCiAgICAg
ICAgICAgIHRpdGxlX3R5cGUoICJFeHRpcnBhdG9yIiwgIlF1ZWVuIiwgMTAwMDAwMCApLAogICAg
ICAgICAgICB0aXRsZV90eXBlKCAiR29kIiwgIkdvZGRlc3MiLCAxMDAwMDAwICksCiAgICAgICAg
ICAgIHRpdGxlX3R5cGUoICJJbXBsZW1lbnRvciIsICJJbXBsZW1lbnRyZXNzIiwgMTAwMDAwMCAp
LAogICAgICAgICAgICB0aXRsZV90eXBlKCAiSW1wbGVtZW50b3IiLCAiSW1wbGVtZW50cmVzcyIs
IDEwMDAwMDAgKQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICB0aXRsZV90eXBlKCAi
TWFuIiwgIldvbWFuIiwgMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiUGlsZmVyZXIiLCAi
UGlsZmVyZXNzIiwgMSApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiRm9vdHBhZCIsICJGb290
cGFkIiwgMTI0OSApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiRmlsY2hlciIsICJGaWxjaGVy
ZXNzIiwgMTI1MCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiUGljay1Qb2NrZXQiLCAiUGlj
ay1Qb2NrZXQiLCAyNTAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJTbmVhayIsICJTbmVh
ayIsIDUwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlBpbmNoZXIiLCAiUGluY2hlcmVz
cyIsIDEwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJDdXQtUHVyc2UiLCAiQ3V0LVB1
cnNlIiwgMTAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlNuYXRjaGVyIiwgIlNuYXRj
aGVyZXNzIiwgMzAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlNoYXJwZXIiLCAiU2hh
cnBlciIsIDQwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJSb2d1ZSIsICJSb2d1ZSIs
IDQwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJSb2JiZXIiLCAiUm9iYmVyIiwgNjAw
MDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIk1hZ3NtYW4iLCAiTWFnc3dvbWFuIiwgMTQw
MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJIaWdod2F5bWFuIiwgIkhpZ2h3YXl3b21h
biIsIDIyMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiQnVyZ2xhciIsICJCdXJnbGFy
ZXNzIiwgMjIwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJUaGllZiIsICJUaGllZiIs
IDIyMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiS25pZmVyIiwgIktuaWZlciIsIDIw
MDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiUXVpY2stQmxhZGUiLCAiUXVpY2stQmxh
ZGUiLCAzMDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIktpbGxlciIsICJNdXJkZXJl
c3MiLCAzMDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkJyaWdhbmQiLCAiQnJpZ2Fu
ZCIsIDMwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiQ3V0LVRocm9hdCIsICJDdXQt
VGhyb2F0IiwgMzAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJTY291dCIsICJTY291
dGVzcyIsIDMwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiU2hvcGxpZnRlciIsICJT
aG9wbGlmdGVyIiwgMzAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJNYXJhdWRlciIs
ICJNYXJhdWRlcmVzcyIsIDMwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiUG9hY2hl
ciIsICJQb2FjaGVzcyIsIDMwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiU211Z2ds
ZXIiLCAiU211Z2dsZXIiLCAzMDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlN3aW5k
bGVyIiwgIlN3aW5kbGVyIiwgMzAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJGYWxj
b24iLCAiRmFsY29uZXNzIiwgMzAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJCYW5k
aXQiLCAiTGFkeSBCYW5kaXQiLCAzMDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlRo
dWciLCAiVGh1Z2dlc3MiLCAzMDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIldlbGNo
ZXIiLCAiV2VsY2hlciIsIDMwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiQ3Jvb2si
LCAiQ3Jvb2siLCAzMDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkNvbi1hcnRpc3Qi
LCAiQ29uLWFydGlzdCIsIDMwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiRmVsb24i
LCAiRmVsb24iLCAzMDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlJ1bm5lciIsICJS
dW5uZXIiLCAzMDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkNvbmNlYWxlciIsICJD
b25jZWFsZXNzIiwgMzAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJFc2NhcGVlIiwg
IkVzY2FwZXNzIiwgMzAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJTd2l0Y2hibGFk
ZSIsICJTd2l0Y2hibGFkZSIsIDMwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiRnJh
dWQiLCAiRnJhdWRlc3MiLCAzMDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkZvcmdl
ciIsICJGb3JnZXIiLCAzMDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIktpZG5hcHBl
ciIsICJLaWRuYXBwZXIiLCAzMDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlBpbGFn
ZXIiLCAiUGlsYWdlciIsIDMwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiQmxhY2tt
YWlsZXIiLCAiQmxhY2ttYWlsZXIiLCAzMDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSgg
IlBpcmF0ZSIsICJQaXJhdGVzcyIsIDMwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAi
QnVjY2FuZWVyIiwgIkJ1Y2NhbmVlciIsIDMwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBl
KCAiRGVhZGV5ZSIsICJEZWFkZXllIiwgMzAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUo
ICJFbWJlenpsZXIiLCAiRW1iZXp6bGVyIiwgMzAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5
cGUoICJSZW5lZ2FkZSIsICJSZW5lZ2FkZSIsIDMwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90
eXBlKCAiTG9ja3NtaXRoIiwgIkxvY2tzbWl0aCIsIDMwMDAwMCApLAogICAgICAgICAgICB0aXRs
ZV90eXBlKCAiQmFja3N0YWJiZXIiLCAiQmFja3N0YWJiZXIiLCAzMDAwMDAgKSwKICAgICAgICAg
ICAgdGl0bGVfdHlwZSggIkdyYW5kIEFzc2Fzc2luIiwgIkdyYW5kIEFzc2Fzc2luIiwgMTAwMDAw
MCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiSW1tb3J0YWwgQXNzYXNpbiIsICJJbW1vcnRh
bCBBc3Nhc2luIiwgMTUwMDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJJbW1vcnRh
bCBBc3Nhc2luIiwgIkltbW9ydGFsIEFzc2FzaW4iLCAxMDAwMDAwICksCiAgICAgICAgICAgIHRp
dGxlX3R5cGUoICJJbW1vcnRhbCBBc3Nhc2luIiwgIkltbW9ydGFsIEFzc2FzaW4iLCAxMDAwMDAw
ICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJJbW1vcnRhbCBBc3Nhc2luIiwgIkltbW9ydGFs
IEFzc2FzaW4iLCAxMDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJJbW1vcnRhbCBB
c3Nhc2luIiwgIkltbW9ydGFsIEFzc2FzaW4iLCAxMDAwMDAwICksCiAgICAgICAgICAgIHRpdGxl
X3R5cGUoICJJbW1vcnRhbCBBc3Nhc2luIiwgIkltbW9ydGFsIEFzc2FzaW4iLCAxMDAwMDAwICks
CiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJEZW1pIEdvZCIsICJEZW1pIEdvZGRlc3MiLCAxMDAw
MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJHb2QiLCAiR29kZGVzcyIsIDEwMDAwMDAg
KSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkltcGxlbWVudG9yIiwgIkltcGxlbWVudHJpeCIs
IDEwMDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkltcGxlbWVudG9yIiwgIkltcGxl
bWVudHJpeCIsIDEwMDAwMDAgKQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICB0aXRs
ZV90eXBlKCAiTWFuIiwgIldvbWFuIiwgMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiSG9s
eSBCZWxpZXZlciIsICJIb2x5IEJlbGlldmVyIiwgMSApLAogICAgICAgICAgICB0aXRsZV90eXBl
KCAiUGFnZSIsICJQYWdlIiwgMzk5OSApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiR2FsbGFu
dCIsICJHYWxsYW50IiwgNDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiU3F1aXJlIiwg
IlNxdWlyZSIsIDgwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIktlZXBlciIsICJLZWVw
ZXIiLCAxNjAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiSG9seSBQYWdlIiwgIkhvbHkg
UGFnZSIsIDMyMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJXYXJkZXIiLCAiV2FyZGVz
cyIsIDY0MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJIb2x5IFNxdWlyZSIsICJIb2x5
IFNxdWlyZSIsIDEyMjAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiQ3Jvc3MgQmVhcmVy
IiwgIkNyb3NzIEJlYXJlciIsIDI1MDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiQXBw
cmVudGljZSBLbmlnaHQiLCAiQXBwcmVudGljZSBLbmlnaHQiLCAzMDAwMDAgKSwKICAgICAgICAg
ICAgdGl0bGVfdHlwZSggIkRyYWdvb24iLCAiRHJhZ29vbiIsIDMwMDAwMCApLAogICAgICAgICAg
ICB0aXRsZV90eXBlKCAiTGFuY2VyIiwgIkxhbmNlciIsIDQwMDAwMCApLAogICAgICAgICAgICB0
aXRsZV90eXBlKCAiTG9jYWwgSGVybyIsICJMb2NhbCBIZXJvaW5lIiwgNDAwMDAwICksCiAgICAg
ICAgICAgIHRpdGxlX3R5cGUoICJEZWZlbmRlciBvZiB0aGUgQ3Jvc3MiLAogICAgICAgICAgICAg
ICJEZWZlbmRlciBvZiB0aGUgQ3Jvc3MiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlw
ZSggIkNodXJjaCBHdWFyZHNtYW4iLCAiQ2h1cmNoIEd1YXJkc3dvbWFuIiwgNDAwMDAwICksCiAg
ICAgICAgICAgIHRpdGxlX3R5cGUoICJDaGFtcGlvbiBvZiB0aGUgQ3Jvc3MiLAogICAgICAgICAg
ICAgICJDaGFtcGlvbiBvZiB0aGUgQ3Jvc3MiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVf
dHlwZSggIldhcnJpb3Igb2YgSnVzdGljZSIsICJXYXJyaW9yIG9mIEp1c3RpY2UiLCA0MDAwMDAg
KSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkNhdmFsaWVyIiwgIkNhdmFsaWVyZXNzIiwgNDAw
MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJIb2x5IEhlcm8iLCAiSG9seSBIZXJvaW5l
IiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJKdXN0aWNhciIsICJKdXN0aWNh
cmVzcyIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiU2VhcmNoZXIiLCAiU2Vh
cmNoZXIiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkhvbHkgV2FycmlvciIs
ICJIb2x5IFdhcnJpb3IiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkxhd2tl
ZXBlciIsICJMYXdrZWVwZXIiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIktu
aWdodCBvZiB0aGUgQ2h1cmNoIiwKICAgICAgICAgICAgICAiS25pZ2h0IG9mIHRoZSBDaHVyY2gi
LCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkhvbHkgQ29tYmF0YW50IiwgIkhv
bHkgQ29tYmF0YW50IiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJNeXJtaWRv
biIsICJNeXJtaWRvbiIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiWmVhbG90
IiwgIlplYWxvdCIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiUGVhY2UgS2Vl
cGVyIiwgIlBlYWNlIEtlZXBlciIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAi
S25pZ2h0IG9mIEp1c3RpY2UiLCAiS25pZ2h0IG9mIEp1c3RpY2UiLCA0MDAwMDAgKSwKICAgICAg
ICAgICAgdGl0bGVfdHlwZSggIkNydXNhZG8iLCAiQ3J1c2FkbyIsIDQwMDAwMCApLAogICAgICAg
ICAgICB0aXRsZV90eXBlKCAiS25pZ2h0IG9mIHRoZSBQZW9wbGUiLAogICAgICAgICAgICAgICJL
bmlnaHQgb2YgdGhlIFBlb3BsZSIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAi
RHJhZ29uIFNsYXllciIsICJEcmFnb24gU2xheWVyIiwgNDAwMDAwICksCiAgICAgICAgICAgIHRp
dGxlX3R5cGUoICJQZWFjZSBNYWtlciIsICJQZWFjZSBNYWtlciIsIDQwMDAwMCApLAogICAgICAg
ICAgICB0aXRsZV90eXBlKCAiSG9seSBLbmlnaHQiLCAiSG9seSBLbmlnaHQiLCA0MDAwMDAgKSwK
ICAgICAgICAgICAgdGl0bGVfdHlwZSggIldhcnJpb3Igb2YgdGhlIFByaWVzdHMiLAogICAgICAg
ICAgICAgICJXYXJyaW9yIG9mIHRoZSBQcmllc3RzIiwgNDAwMDAwICksCiAgICAgICAgICAgIHRp
dGxlX3R5cGUoICJRdWVzdG9yIiwgIlF1ZXN0b3IiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0
bGVfdHlwZSggIktuaWdodCBvZiB0aGUgUHJpZXN0cyIsCiAgICAgICAgICAgICAgIktuaWdodCBv
ZiB0aGUgUHJpZXN0cyIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiTGF3Z2l2
ZXIiLCAiTGF3Z2l2ZXIiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlZpY3Rv
ciIsICJWaWN0b3IiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlByb3RlY3Rv
ciBvZiB0aGUgQ2h1cmNoIiwKICAgICAgICAgICAgICAiUHJvdGVjdG9yIG9mIHRoZSBDaHVyY2gi
LCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlByb3RlY3RvciBvZiB0aGUgUHJp
ZXN0cyIsCiAgICAgICAgICAgICAgIlByb3RlY3RvciBvZiB0aGUgUHJpZXN0cyIsIDQwMDAwMCAp
LAogICAgICAgICAgICB0aXRsZV90eXBlKCAiSG9seSBDcnVzYWRlciIsICJIb2x5IENydXNhZGVy
IiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJQYWxhZGluIiwgIlBhbGFkaW4i
LCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkdyYW5kIEtuaWdodCIsICJHcmFu
ZCBLbmlnaHQiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkdyYW5kIFByb3Rl
Y3RvciIsICJHcmFuZCBQcm90ZWN0b3IiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlw
ZSggIkdyYW5kIFBhbGFkaW4iLCAiR3JhbmQgUGFsYWRpbiIsIDQwMDAwMCApLAogICAgICAgICAg
ICB0aXRsZV90eXBlKCAiR3JhbmQgUGFsYWRpbiBvZiB0aGUgQ2h1cmNoIiwKICAgICAgICAgICAg
ICAiR3JhbmQgUGFsYWRpbiBvZiB0aGUgQ2h1cmNoIiwgNDAwMDAwICksCiAgICAgICAgICAgIHRp
dGxlX3R5cGUoICJHcmFuZCBQYWxhZGluIG9mIHRoZSBGYWl0aCIsCiAgICAgICAgICAgICAgIkdy
YW5kIFBhbGFkaW4gb2YgdGhlIEZhaXRoIiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5
cGUoICJHcmFuZCBQYWxhZGluIG9mIHRoZSBQcmllc3RzIiwKICAgICAgICAgICAgICAiR3JhbmQg
UGFsYWRpbiBvZiB0aGUgUHJpZXN0cyIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBl
KCAiR3JhbmQgUGFsYWRpbiBvZiB0aGUgSG9seSBPcmRlciIsCiAgICAgICAgICAgICAgIkdyYW5k
IFBhbGFkaW4gb2YgdGhlIEhvbHkgT3JkZXIiLCAxMDAwMDAwICksCiAgICAgICAgICAgIHRpdGxl
X3R5cGUoICJJbW1vcnRhbCIsICJJbW1vcnRhbCIsIDE1MDAwMDAwMCApLAogICAgICAgICAgICB0
aXRsZV90eXBlKCAiSW1tb3J0YWwiLCAiSW1tb3J0YWwiLCAxMDAwMDAwICksCiAgICAgICAgICAg
IHRpdGxlX3R5cGUoICJJbW1vcnRhbCIsICJJbW1vcnRhbCIsIDEwMDAwMDAgKSwKICAgICAgICAg
ICAgdGl0bGVfdHlwZSggIkltbW9ydGFsIiwgIkltbW9ydGFsIiwgMTAwMDAwMCApLAogICAgICAg
ICAgICB0aXRsZV90eXBlKCAiSW1tb3J0YWwiLCAiSW1tb3J0YWwiLCAxMDAwMDAwICksCiAgICAg
ICAgICAgIHRpdGxlX3R5cGUoICJJbW1vcnRhbCIsICJJbW1vcnRhbCIsIDEwMDAwMDAgKSwKICAg
ICAgICAgICAgdGl0bGVfdHlwZSggIlBhbGFkaW4gRXh0aXJwYXRvciIsICJQYWxhZGluIFF1ZWVu
IiwgMTAwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiR29kIiwgIkdvZGRlc3MiLCAx
MDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJJbXBsZW1lbnRvciIsICJJbXBsZW1l
bnRyZXNzIiwgMTAwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiSW1wbGVtZW50b3Ii
LCAiSW1wbGVtZW50cmVzcyIsIDEwMDAwMDAgKQogICAgICAgIH0sCiAgICAgICAgewogICAgICAg
ICAgICB0aXRsZV90eXBlKCAiTWFuIiwgIldvbWFuIiwgMCApLAogICAgICAgICAgICB0aXRsZV90
eXBlKCAiQmVsaWV2ZXIgb2YgTmF0dXJlIiwgIkJlbGlldmVyIG9mIE5hdHVyZSIsIDEgKSwKICAg
ICAgICAgICAgdGl0bGVfdHlwZSggIkFzcGlyYW50IiwgIkFzcGlyYW50IiwgMzk5OSApLAogICAg
ICAgICAgICB0aXRsZV90eXBlKCAiSGVyYiBHYXRoZXJlciIsICJIZXJiIEdhdGhlcmVyIiwgMzAw
MCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiU2hlcGhhcmQiLCAiU2hlcGhhcmRlc3MiLCA2
MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJOb3ZpY2UgU3RhcmdhemVyIiwgIk5vdmlj
ZSBTdGFyZ2F6ZXIiLCAxNTAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiR2FyZGVuZXIg
b2YgUGxhbnRzIiwgIkdhcmRlbmVyIG9mIFBsYW50cyIsIDMyMDAwICksCiAgICAgICAgICAgIHRp
dGxlX3R5cGUoICJWb2ljZSBvZiB0aGUgQW5pbWFscyIsCiAgICAgICAgICAgICAgIlZvaWNlIG9m
IHRoZSBBbmltYWxzIiwgNzAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIk5vdmljZSBI
ZXJiaWxpc3QiLCAiTm92aWNlIEhlcmJpbGlzdCIsIDE0MDAwMCApLAogICAgICAgICAgICB0aXRs
ZV90eXBlKCAiQW5pbWFsIEhlYWxlciIsICJBbmltYWwgSGVhbGVyIiwgMjc1MDAwICksCiAgICAg
ICAgICAgIHRpdGxlX3R5cGUoICJXZWF0aGVyIFdhdGNoZXIiLCAiV2VhdGhlciBXYXRjaGVyIiwg
MzUwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJDYXJldGFrZXIgb2YgTmF0dXJlIiwK
ICAgICAgICAgICAgICAiQ2FyZXRha2VyIG9mIE5hdHVyZSIsIDM1MDAwMCApLAogICAgICAgICAg
ICB0aXRsZV90eXBlKCAiSGVyYmlsaXN0IiwgIkhlcmJpbGlzdCIsIDM1MDAwMCApLAogICAgICAg
ICAgICB0aXRsZV90eXBlKCAiTW9vbndhdGNoZXIiLCAiTW9vbndhdGNoZXIiLCAzNTAwMDAgKSwK
ICAgICAgICAgICAgdGl0bGVfdHlwZSggIlRyZWUgU3VyZ2VvbiIsICJUcmVlIFN1cmdlb24iLCAz
NTAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlNlbmlvciBIZXJiaWxpc3QiLCAiU2Vu
aW9yIEhlcmJpbGlzdCIsIDM1MDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiQ2FyZXRh
a2VyIG9mIHRoZSBTYWNyZWQgR3JvdmUiLAogICAgICAgICAgICAgICJDYXJldGFrZXIgb2YgdGhl
IFNhY3JlZCBHcm92ZSIsIDM1MDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiTWFzdGVy
IEhlcmJpbGlzdCIsICJNYXN0ZXIgSGVyYmlsaXN0IiwgMzUwMDAwICksCiAgICAgICAgICAgIHRp
dGxlX3R5cGUoICJXb3JzaGlwcGVyIG9mIEZpcmUiLCAiV29yc2hpcHBlciBvZiBGaXJlIiwgMzUw
MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJXb3JzaGlwcGVyIG9mIFdhdGVyIiwKICAg
ICAgICAgICAgICAiV29yc2hpcHBlciBvZiBXYXRlciIsIDM1MDAwMCApLAogICAgICAgICAgICB0
aXRsZV90eXBlKCAiV29yc2hpcHBlciBvZiBFYXJ0aCIsCiAgICAgICAgICAgICAgIldvcnNoaXBw
ZXIgb2YgRWFydGgiLCAzNTAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIldvcnNoaXBw
ZXIgb2YgQWlyIiwgIldvcnNoaXBwZXIgb2YgQWlyIiwgMzUwMDAwICksCiAgICAgICAgICAgIHRp
dGxlX3R5cGUoICJEcnVpZCBvZiB0aGUgTmlnaHQiLCAiRHJ1aWQgb2YgdGhlIE5pZ2h0IiwgMzUw
MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJEcnVpZCBvZiB0aGUgRGF5IiwgIkRydWlk
IG9mIHRoZSBEYXkiLCAzNTAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkRydWlkIG9m
IEJpcnRoIiwgIkRydWlkIG9mIEJpcnRoIiwgMzUwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5
cGUoICJEcnVpZCBvZiBHcm93dGgiLCAiRHJ1aWQgb2YgR3Jvd3RoIiwgMzUwMDAwICksCiAgICAg
ICAgICAgIHRpdGxlX3R5cGUoICJEcnVpZCBvZiBEZWF0aCIsICJEcnVpZCBvZiBEZWF0aCIsIDM1
MDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiRHJ1aWQgb2YgUmViaXJ0aCIsICJEcnVp
ZCBvZiBSZWJpcnRoIiwgMzUwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJEcnVpZCBv
ZiB0aGUgT2FrIiwgIkRydWlkIG9mIHRoZSBPYWsiLCAzNTAwMDAgKSwKICAgICAgICAgICAgdGl0
bGVfdHlwZSggIkRydWlkIG9mIHRoZSBBc2giLCAiRHJ1aWQgb2YgdGhlIEFzaCIsIDM1MDAwMCAp
LAogICAgICAgICAgICB0aXRsZV90eXBlKCAiRHJ1aWQgb2YgdGhlIE1vb24iLCAiRHJ1aWQgb2Yg
dGhlIE1vb24iLCAzNTAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkRydWlkIG9mIHRo
ZSBTdW4iLCAiRHJ1aWQgb2YgdGhlIFN1biIsIDM1MDAwMCApLAogICAgICAgICAgICB0aXRsZV90
eXBlKCAiRmF0aGVyIG9mIFdpbnRlciIsICJNb3RoZXIgb2YgV2ludGVyIiwgMzUwMDAwICksCiAg
ICAgICAgICAgIHRpdGxlX3R5cGUoICJGYXRoZXIgb2YgU3VtbWVyIiwgIk1vdGhlciBvZiBTdW1t
ZXIiLCAzNTAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkZhdGhlciBvZiBGYWxsIiwg
Ik1vdGhlciBvZiBGYWxsIiwgMzUwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJGYXRo
ZXIgb2YgU3ByaW5nIiwgIk1vdGhlciBvZiBTcHJpbmciLCAzNTAwMDAgKSwKICAgICAgICAgICAg
dGl0bGVfdHlwZSggIkRydWlkIG9mIHRoZSBXaGl0ZSBSb2JlcyIsCiAgICAgICAgICAgICAgIkRy
dWlkIG9mIHRoZSBXaGl0ZSBSb2JlcyIsIDM1MDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBl
KCAiRHJ1aWQgb2YgdGhlIEJsYWNrIFJvYmVzIiwKICAgICAgICAgICAgICAiRHJ1aWQgb2YgdGhl
IEJsYWNrIFJvYmVzIiwgMzUwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJEcnVpZCBv
ZiB0aGUgR3JleSBSb2JlcyIsCiAgICAgICAgICAgICAgIkRydWlkIG9mIHRoZSBHcmV5IFJvYmVz
IiwgMzUwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJJbml0aWF0ZSBvZiB0aGUgRmly
c3QgQ2lyY2xlIiwKICAgICAgICAgICAgICAiSW5pdGlhdGUgb2YgdGhlIEZpcnN0IENpcmNsZSIs
IDM1MDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiSW5pdGlhdGUgb2YgdGhlIFNlY29u
ZCBDaXJjbGUiLAogICAgICAgICAgICAgICJJbml0aWF0ZSBvZiB0aGUgU2Vjb25kIENpcmNsZSIs
IDM1MDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiSW5pdGlhdGUgb2YgdGhlIFRoaXJk
IENpcmNsZSIsCiAgICAgICAgICAgICAgIkluaXRpYXRlIG9mIHRoZSBUaGlyZCBDaXJjbGUiLCAz
NTAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkluaXRpYXRlIG9mIHRoZSBGb3VydGgg
Q2lyY2xlIiwKICAgICAgICAgICAgICAiSW5pdGlhdGUgb2YgdGhlIEZvdXJ0aCBDaXJjbGUiLCAz
NTAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkluaXRpYXRlIG9mIHRoZSBGaWZ0aCBD
aXJjbGUiLAogICAgICAgICAgICAgICJJbml0aWF0ZSBvZiB0aGUgRmlmdGggQ2lyY2xlIiwgMzUw
MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJJbml0aWF0ZSBvZiB0aGUgU2l4dGggQ2ly
Y2xlIiwKICAgICAgICAgICAgICAiSW5pdGlhdGUgb2YgdGhlIFNpeHRoIENpcmNsZSIsIDM1MDAw
MCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiSW5pdGlhdGUgb2YgdGhlIFNldmVudGggQ2ly
Y2xlIiwKICAgICAgICAgICAgICAiSW5pdGlhdGUgb2YgdGhlIFNldmVudGggQ2lyY2xlIiwgMzUw
MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJJbml0aWF0ZSBvZiB0aGUgRWlnaHRoIENp
cmNsZSIsCiAgICAgICAgICAgICAgIkluaXRpYXRlIG9mIHRoZSBFaWdodGggQ2lyY2xlIiwgMzUw
MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJJbml0aWF0ZSBvZiB0aGUgTmludGggQ2ly
Y2xlIiwKICAgICAgICAgICAgICAiSW5pdGlhdGUgb2YgdGhlIE5pbnRoIENpcmNsZSIsIDM1MDAw
MCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiRHJ1aWQiLCAiRHJ1aWQiLCAzNTAwMDAgKSwK
ICAgICAgICAgICAgdGl0bGVfdHlwZSggIkFyY2ggRHJ1aWQiLCAiQXJjaCBEcnVpZCIsIDM1MDAw
MCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiVGhlIEdyZWF0IERydWlkIiwgIlRoZSBHcmVh
dCBEcnVpZCIsIDEwMDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkltbW9ydGFsIERy
dWlkIiwgIkltbW9ydGFsIERydWlkIiwgMTUwMDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5
cGUoICJJbW1vcnRhbCBEcnVpZCIsICJJbW1vcnRhbCBEcnVpZCIsIDEwMDAwMDAgKSwKICAgICAg
ICAgICAgdGl0bGVfdHlwZSggIkltbW9ydGFsIERydWlkIiwgIkltbW9ydGFsIERydWlkIiwgMTAw
MDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiSW1tb3J0YWwgRHJ1aWQiLCAiSW1tb3J0
YWwgRHJ1aWQiLCAxMDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJJbW1vcnRhbCBE
cnVpZCIsICJJbW1vcnRhbCBEcnVpZCIsIDEwMDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlw
ZSggIkltbW9ydGFsIERydWlkIiwgIkltbW9ydGFsIERydWlkIiwgMTAwMDAwMCApLAogICAgICAg
ICAgICB0aXRsZV90eXBlKCAiRHJ1aWQgR29kIiwgIkRydWlkIEdvZGRlc3MiLCAxMDAwMDAwICks
CiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJHb2QiLCAiR29kZGVzcyIsIDEwMDAwMDAgKSwKICAg
ICAgICAgICAgdGl0bGVfdHlwZSggIkltcGxlbWVudG9yIiwgIkltcGxlbWVudHJlc3MiLCAxMDAw
MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJJbXBsZW1lbnRvciIsICJJbXBsZW1lbnRy
ZXNzIiwgMTAwMDAwMCApCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIHRpdGxlX3R5
cGUoICJNYW4iLCAiV29tYW4iLCAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJJbml0aWF0
ZSIsICJJbml0aWF0ZSIsIDEgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkxlYXJuZXIiLCAi
TGVhcm5lciIsIDQ5OTkgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIk1lbnRhbCBNaWRnZXQi
LCAiTWVudGFsIE1pZGdldCIsIDUwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkJyYWlu
IFRlYXNlciIsICJCcmFpbiBUZWFzZXIiLCAxMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBl
KCAiU21va2VyIiwgIlNtb2tlciIsIDIwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJT
dHVkZW50IiwgIlN0dWRlbnQiLCA0MDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiQXNz
YXlpc3QiLCAiQXNzYXlpc3QiLCA4MDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiSHlw
bm90aXN0IiwgIkh5cG5vdGlzdCIsIDE2MDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAi
U2Vuc29yIiwgIlNlbnNvciIsIDMyMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiUG9u
ZGVyZXIiLCAiUG9uZGVyZXIiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkRv
c2VyIiwgIkRvc2VyIiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJUZWxlcGF0
aCIsICJUZWxlcGF0aCIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiRVNQIElu
aXRpYXRlIiwgIkVTUCBJbml0aWF0ZSIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBl
KCAiUGFsbXJlYWRlciIsICJQYWxtcmVhZGVyIiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxl
X3R5cGUoICJQc3ljaGljIiwgIlBzeWNoaWMiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVf
dHlwZSggIk1lZGl0YXRvciIsICJNZWRpdGF0b3IiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0
bGVfdHlwZSggIlBzaW9uaWNpc3QiLCAiUHNpb25pY2lzdCIsIDQwMDAwMCApLAogICAgICAgICAg
ICB0aXRsZV90eXBlKCAiUHJvYmVyIiwgIlByb2JlciIsIDQwMDAwMCApLAogICAgICAgICAgICB0
aXRsZV90eXBlKCAiUmVkYWN0b3IiLCAiUmVkYWN0b3IiLCA0MDAwMDAgKSwKICAgICAgICAgICAg
dGl0bGVfdHlwZSggIk1pbmQgRml4ZXIiLCAiTWluZCBGaXhlciIsIDQwMDAwMCApLAogICAgICAg
ICAgICB0aXRsZV90eXBlKCAiTWlyYWdpc3QiLCAiTWlyYWdpc3QiLCA0MDAwMDAgKSwKICAgICAg
ICAgICAgdGl0bGVfdHlwZSggIk1pbmQgU3RpbXVsYXRvciIsICJNaW5kIFN0aW11bGF0b3IiLCA0
MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIk1pbmQgQmVuZGVyIiwgIk1pbmQgQmVu
ZGVyIiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJNZW50YWwgQ3JhbXBlciIs
ICJNZW50YWwgQ3JhbXBlciIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiS25v
d2xlZGdlIEdpdmVyIiwgIktub3dsZWRnZSBHaXZlciIsIDQwMDAwMCApLAogICAgICAgICAgICB0
aXRsZV90eXBlKCAiU2VlciIsICJTZWVyZXNzIiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxl
X3R5cGUoICJIYWxsdWNpbmF0b3IiLCAiSGFsbHVjaW5hdG9yIiwgNDAwMDAwICksCiAgICAgICAg
ICAgIHRpdGxlX3R5cGUoICJUaG91Z2h0IEJsYXN0ZXIiLCAiVGhvdWdodCBCbGFzdGVyIiwgNDAw
MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJEb21pbmF0b3IiLCAiRG9taW5hdHJpeCIs
IDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiQ29udHJvbGxlciIsICJDb250cm9s
bGVyIiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJDb2VyY2VyIiwgIkNvZXJj
ZXIiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkV4cGFuZGVyIiwgIkV4cGFu
ZGVyIiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJHZW5pdXMiLCAiR2VuaXVz
IiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJNaW5kIFJlYWRlciIsICJNaW5k
IFJlYWRlciIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiRGlzcnVwdGVyIiwg
IkRpc3J1cHRlciIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiTWlncmFpbmVy
IiwgIk1pZ3JhaW5lciIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiTWluZCBD
cnVzaGVyIiwgIk1pbmQgQ3J1c2hlciIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBl
KCAiVGVsZWtpbmV0aWMiLCAiVGVsZWtpbmV0aWMiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0
bGVfdHlwZSggIk1pbmQgTGlua2VyIiwgIk1pbmQgTGlua2VyIiwgNDAwMDAwICksCiAgICAgICAg
ICAgIHRpdGxlX3R5cGUoICJUaG91Z2h0IFN0ZWFsZXIiLCAiVGhvdWdodCBTdGVhbGVyIiwgNDAw
MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJNaW5kIE1hc3RlciIsICJNaW5kIE1hc3Rl
ciIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiTWVudGFsIEdpYW50IiwgIk1l
bnRhbCBHaWFudCIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiR2VuaXVzIEV4
dHJvZGluYWlycmUiLAogICAgICAgICAgICAgICJHZW5pdXMgRXh0cm9kaW5haXJyZSIsIDQwMDAw
MCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiTWFnbmlmaWNlbnQiLCAiTWFnbmlmaWNlbnQi
LCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIk1lbnRhbGlzdCIsICJNZW50YWxp
c3QiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkhpZ2ggTWVudGFsaXN0Iiwg
IkhpZ2ggTWVudGFsaXN0IiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJNZW50
YXQiLCAiTWVudGF0IiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJMb3cgTWVu
dGF0IiwgIkxvdyBNZW50YXQiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkhp
Z2ggTWVudGF0IiwgIkhpZ2ggTWVudGF0IiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5
cGUoICJNYXN0ZXIgTWVudGF0IiwgIk1hc3RlciBNZW50YXQiLCAxMDAwMDAwICksCiAgICAgICAg
ICAgIHRpdGxlX3R5cGUoICJJbW1vcnRhbCBQc2lvbmljaXN0IiwKICAgICAgICAgICAgICAiSW1t
b3J0YWwgUHNpb25pY2lzdCIsIDE1MDAwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAi
SW1tb3J0YWwgUHNpb25pY2lzdCIsCiAgICAgICAgICAgICAgIkltbW9ydGFsIFBzaW9uaWNpc3Qi
LCAxMDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJJbW1vcnRhbCBQc2lvbmljaXN0
IiwKICAgICAgICAgICAgICAiSW1tb3J0YWwgUHNpb25pY2lzdCIsIDEwMDAwMDAgKSwKICAgICAg
ICAgICAgdGl0bGVfdHlwZSggIkltbW9ydGFsIFBzaW9uaWNpc3QiLAogICAgICAgICAgICAgICJJ
bW1vcnRhbCBQc2lvbmljaXN0IiwgMTAwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAi
SW1tb3J0YWwgUHNpb25pY2lzdCIsCiAgICAgICAgICAgICAgIkltbW9ydGFsIFBzaW9uaWNpc3Qi
LCAxMDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJJbW1vcnRhbCBQc2lvbmljaXN0
IiwKICAgICAgICAgICAgICAiSW1tb3J0YWwgUHNpb25pY2lzdCIsIDEwMDAwMDAgKSwKICAgICAg
ICAgICAgdGl0bGVfdHlwZSggIkF2YXRhciBvZiB0aGUgTWluZCIsICJFbXByZXNzIG9mIHRoZSBN
aW5kIiwgMTAwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiR29kIG9mIHRoZSBNaW5k
IiwgIkdvZGRlc3Mgb2YgdGhlIE1pbmQiLCAxMDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5
cGUoICJJbXBsZW1lbnRvciIsICJJbXBsZW1lbnRyaXgiLCAxMDAwMDAwICksCiAgICAgICAgICAg
IHRpdGxlX3R5cGUoICJJbXBsZW1lbnRvciIsICJJbXBsZW1lbnRyaXgiLCAxMDAwMDAwICkKICAg
ICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgdGl0bGVfdHlwZSggIk1hbiIsICJXb21hbiIs
IDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkZvcmVzdCBSZWNydWl0IiwgIkZvcmVzdCBS
ZWNydWl0IiwgMSApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiUnVubmVyIiwgIlJ1bm5lciIs
IDM5OTkgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkZvcmFnZXIiLCAiRm9yYWdlciIsIDQw
MDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkp1bmlvciBUcmFja2VyIiwgIkp1bmlvciBU
cmFja2VyIiwgODAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiRmxldGNoZXIiLCAiRmxl
dGNoZXIiLCAxNjAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiUGF0aGZpbmRlciIsICJQ
YXRoZmluZGVyIiwgMzIwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkp1bmlvciBXb29k
c21hbiIsICJKdW5pb3IgV29vZHN3b21hbiIsIDY0MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5
cGUoICJPdXRkb29yc21hbiIsICJPdXRkb29yc3dvbWFuIiwgMTI4MDAwICksCiAgICAgICAgICAg
IHRpdGxlX3R5cGUoICJKdW5pb3IgRm9yZXN0ZXIiLCAiSnVuaW9yIEZvcmVzdGVyIiwgMjUwMDAw
ICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJOb3ZpY2UgQXJjaGVyIiwgIk5vdmljZSBBcmNo
ZXIiLCA1MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlRyYXBwZXIiLCAiVHJhcHBl
ciIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiTm92aWNlIFNjb3V0IiwgIk5v
dmljZSBTY291dCIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiU3RyaWRlciIs
ICJTdHJpZGVyIiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJUcmFpbCBCbGF6
ZXIiLCAiVHJhaWwgQmxhemVyIiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJI
dW50ZXIiLCAiSHVudHJlc3MiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkd1
aWRlIiwgIkd1aWRlIiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJBcmNoZXIi
LCAiQXJjaGVyIiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJUcmFja2VyIiwg
IlRyYWNrZXIiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkNvdXJzZXIiLCAi
Q291cnNlciIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiV29vZHNtYW4iLCAi
V29vZHN3b21hbiIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiRXhwbG9yZXIi
LCAiRXhwbG9yZXIiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlNlbmlvciBU
cmFja2VyIiwgIlNlbmlvciBUcmFja2VyIiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5
cGUoICJGb3Jlc3RlciIsICJGb3Jlc3RlciIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90
eXBlKCAiV29vZGxhbmQgRmlnaHRlciIsICJXb29kbGFuZCBGaWdodGVyIiwgNDAwMDAwICksCiAg
ICAgICAgICAgIHRpdGxlX3R5cGUoICJTZW5pb3IgU2NvdXQiLCAiU2VuaW9yIFNjb3V0IiwgNDAw
MDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJTd29yZHNtYW4gb2YgdGhlIFdvb2RzIiwK
ICAgICAgICAgICAgICAiU3dvcmRzd29tYW4gb2YgdGhlIFdvb2RzIiwgNDAwMDAwICksCiAgICAg
ICAgICAgIHRpdGxlX3R5cGUoICJTZW5pb3IgRm9yZXN0ZXIiLCAiU2VuaW9yIEZvcmVzdGVyIiwg
NDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJGb3Jlc3QgU2VudHJ5IiwgIkZvcmVz
dCBTZW50cnkiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkJvdW50eSBIdW50
ZXIiLCAiQm91bnR5IEh1bnRyZXNzIiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUo
ICJWb3lhZ2VyIiwgIlZveWFnZXIiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSgg
Ik1hc3RlciBBcmNoZXIiLCAiTWFzdGVyIEFyY2hlciIsIDQwMDAwMCApLAogICAgICAgICAgICB0
aXRsZV90eXBlKCAiU2VuaW9yIEh1bnRlciIsICJTZW5pb3IgSHVudHJlc3MiLCA0MDAwMDAgKSwK
ICAgICAgICAgICAgdGl0bGVfdHlwZSggIldvb2RsYW5kIEhlcm8iLCAiV29vZGxhbmQgSGVybyIs
IDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiV29vZGxhbmQgU2NvdXQiLCAiV29v
ZGxhbmQgU2NvdXQiLCA0MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlN3b3JkbWFz
dGVyIG9mIHRoZSBXb29kcyIsCiAgICAgICAgICAgICAgIlN3b3JkbWlzdHJlc3Mgb2YgdGhlIFdv
b2RzIiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJXb29kbGFuZCBDaGFtcGlv
biIsICJXb29kbGFuZCBDaGFtcGlvbiIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBl
KCAiTWFzdGVyIFRyYWNrZXIiLCAiTWFzdGVyIFRyYWNrZXIiLCA0MDAwMDAgKSwKICAgICAgICAg
ICAgdGl0bGVfdHlwZSggIlNjb3V0IE1hc3RlciIsICJTY291dCBNaXN0cmVzcyIsIDQwMDAwMCAp
LAogICAgICAgICAgICB0aXRsZV90eXBlKCAiTWFzdGVyIFdvb2RzbWFuIiwgIk1hc3RlciBXb29k
c3dvbWFuIiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJNYXN0ZXIgRm9yZXN0
ZXIiLCAiTWFzdGVyIEZvcmVzdGVyIiwgNDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUo
ICJEZWZlbmRlciBvZiB0aGUgRm9yZXN0IiwKICAgICAgICAgICAgICAiRGVmZW5kZXIgb2YgdGhl
IEZvcmVzdCIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAiUHJvdGVjdG9yIG9m
IHRoZSBXb29kcyIsCiAgICAgICAgICAgICAgIlByb3RlY3RvciBvZiB0aGUgV29vZHMiLCA0MDAw
MDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlJhbmdlciIsICJSYW5nZXIiLCA0MDAwMDAg
KSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIlJhbmdlciBvZiB0aGUgRmlyc3QgT3JkZXIiLAog
ICAgICAgICAgICAgICJSYW5nZXIgb2YgdGhlIEZpcnN0IE9yZGVyIiwgNDAwMDAwICksCiAgICAg
ICAgICAgIHRpdGxlX3R5cGUoICJSYW5nZXIgb2YgdGhlIFNlY29uZCBPcmRlciIsCiAgICAgICAg
ICAgICAgIlJhbmdlciBvZiB0aGUgU2Vjb25kIE9yZGVyIiwgNDAwMDAwICksCiAgICAgICAgICAg
IHRpdGxlX3R5cGUoICJSYW5nZXIgb2YgdGhlIFRoaXJkIE9yZGVyIiwKICAgICAgICAgICAgICAi
UmFuZ2VyIG9mIHRoZSBUaGlyZCBPcmRlciIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90
eXBlKCAiUmFuZ2VyIG9mIHRoZSBGb3VydGggT3JkZXIiLAogICAgICAgICAgICAgICJSYW5nZXIg
b2YgdGhlIEZvdXJ0aCBPcmRlciIsIDQwMDAwMCApLAogICAgICAgICAgICB0aXRsZV90eXBlKCAi
UmFuZ2VyIEtuaWdodCIsICJSYW5nZXIgRGFtc2VsIiwgNDAwMDAwICksCiAgICAgICAgICAgIHRp
dGxlX3R5cGUoICJSYW5nZXIgTG9yZCIsICJSYW5nZXIgTGFkeSIsIDQwMDAwMCApLAogICAgICAg
ICAgICB0aXRsZV90eXBlKCAiR3JhbmQgS25pZ2h0IG9mIHRoZSBGb3Jlc3QiLAogICAgICAgICAg
ICAgICJQcmluY2VzcyBvZiB0aGUgRm9yZXN0IiwgMTAwMDAwMCApLAogICAgICAgICAgICB0aXRs
ZV90eXBlKCAiSW1tb3J0YWwiLCAiSW1tb3J0YWwiLCAxNTAwMDAwMDAgKSwKICAgICAgICAgICAg
dGl0bGVfdHlwZSggIkltbW9ydGFsIiwgIkltbW9ydGFsIiwgMTAwMDAwMCApLAogICAgICAgICAg
ICB0aXRsZV90eXBlKCAiSW1tb3J0YWwiLCAiSW1tb3J0YWwiLCAxMDAwMDAwICksCiAgICAgICAg
ICAgIHRpdGxlX3R5cGUoICJJbW1vcnRhbCIsICJJbW1vcnRhbCIsIDEwMDAwMDAgKSwKICAgICAg
ICAgICAgdGl0bGVfdHlwZSggIkltbW9ydGFsIiwgIkltbW9ydGFsIiwgMTAwMDAwMCApLAogICAg
ICAgICAgICB0aXRsZV90eXBlKCAiSW1tb3J0YWwiLCAiSW1tb3J0YWwiLCAxMDAwMDAwICksCiAg
ICAgICAgICAgIHRpdGxlX3R5cGUoICJSYW5nZXIgRXh0aXJwYXRvciIsICJSYW5nZXIgUXVlZW4i
LCAxMDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJHb2QiLCAiR29kZGVzcyIsIDEw
MDAwMDAgKSwKICAgICAgICAgICAgdGl0bGVfdHlwZSggIkltcGxlbWVudG9yIiwgIkltcGxlbWVu
dHJlc3MiLCAxMDAwMDAwICksCiAgICAgICAgICAgIHRpdGxlX3R5cGUoICJJbXBsZW1lbnRvciIs
ICJJbXBsZW1lbnRyZXNzIiwgMTAwMDAwMCApCiAgICAgICAgfSwKICAgICAgICB7IHRpdGxlX3R5
cGUoIk1hbiIsICJXb21hbiIsIDApLAogICAgICAgICAgdGl0bGVfdHlwZSgiU2hhcGVzaGlmdGVy
IEluaXRpYXRlIiwgIlNoYXBlc2hpZnRlciBJbml0aWF0ZSIsIDEpLAogICAgICAgICAgdGl0bGVf
dHlwZSgiRm9ybWVyIiwgIkZvcm1lciIsIDI0OTkpLAogICAgICAgICAgdGl0bGVfdHlwZSgiRmFr
ZXIiLCAiRmFrZXIiLCAyNTAwKSwKICAgICAgICAgIHRpdGxlX3R5cGUoIkRhYmJsZXIiLCAiRGFi
YmxlciIsIDUwMDApLAogICAgICAgICAgdGl0bGVfdHlwZSgiUmVnZW5lcmF0b3IiLCAiUmVnZW5l
cmF0b3IiLCAxMDAwMCksCiAgICAgICAgICB0aXRsZV90eXBlKCJSZW5ld2lzdCIsICJSZW5ld2lz
dCIsIDIwMDAwKSwKICAgICAgICAgIHRpdGxlX3R5cGUoIlJlanV2ZW5hdG9yIiwgIlJlanV2ZW5h
dG9yIiwgMjAwMDApLAogICAgICAgICAgdGl0bGVfdHlwZSgiUmV2aXZlciIsICJSZXZpdmVyIiwg
MzAwMDApLAogICAgICAgICAgdGl0bGVfdHlwZSgiQW5vbWFseSIsICJBbm9tYWx5IiwgNTAwMDAp
LAogICAgICAgICAgdGl0bGVfdHlwZSgiU2hhcGVzaGlmdGVyIG9mIHRoZSBGaXJzdCBPcmRlciIs
ICJTaGFwZXNoaWZ0ZXIgb2YgdGhlIEZpcnN0IE9yZGVyIiwgMTAwMDAwKSwKICAgICAgICAgIHRp
dGxlX3R5cGUoIkNoYW1lbGVvbiIsICJDaGFtZWxlb24iLCAyMDAwMDApLAogICAgICAgICAgdGl0
bGVfdHlwZSgiQ29uY2VhbGVyIiwgIkNvbmNlYWxlc3MiLCAzNzUwMDApLAogICAgICAgICAgdGl0
bGVfdHlwZSgiTWVsZGVyIiwgIk1lbGRlciIsIDM3NTAwMCksCiAgICAgICAgICB0aXRsZV90eXBl
KCJDYW1vdWZsYWdlIEFydGlzdCIsICJDYW1vdWZsYWdlIEFydGlzdCIsIDM3NTAwMCksCiAgICAg
ICAgICB0aXRsZV90eXBlKCJTaGFwZSBDaGFuZ2VyIiwgIlNoYXBlIENoYW5nZXIiLCAzNzUwMDAp
LAogICAgICAgICAgdGl0bGVfdHlwZSgiQ2hhbmdsaW5nIiwgIkNoYW5nbGluZyIsIDM3NTAwMCks
CiAgICAgICAgICB0aXRsZV90eXBlKCJQaGFzZXIiLCAiUGhhc2VyIiwgMzc1MDAwKSwKICAgICAg
ICAgIHRpdGxlX3R5cGUoIlRyYW5zZm9ybWVyIiwgIlRyYW5zZm9ybWVyIiwgMzc1MDAwKSwKICAg
ICAgICAgIHRpdGxlX3R5cGUoIk11dGF0ZXIiLCAiTXV0YXRlciIsIDM3NTAwMCksCiAgICAgICAg
ICB0aXRsZV90eXBlKCJTaGFwZXNoaWZ0ZXIgb2YgU2Vjb25kIE9yZGVyIiwgIlNoYXBlc2hpZnRl
ciBvZiB0aGUgU2Vjb25kIE9yZGVyIiwgMzc1MDAwKSwKICAgICAgICAgIHRpdGxlX3R5cGUoIkJp
bmRlciIsICJCaW5kZXIiLCAzNzUwMDApLAogICAgICAgICAgdGl0bGVfdHlwZSgiUmVzdHJpY3Rl
ciIsICJSZXN0cmljdGVyIiwgMzc1MDAwKSwKICAgICAgICAgIHRpdGxlX3R5cGUoIkNvbnN0cmlj
dGVyIiwgIkNvbnN0cmljdGVyIiwgMzc1MDAwKSwKICAgICAgICAgIHRpdGxlX3R5cGUoIlJlc3Ry
YWluZXIiLCAiUmVzdHJhaW5lciIsIDM3NTAwMCksCiAgICAgICAgICB0aXRsZV90eXBlKCJDb250
cmFjdGVyIiwgIkNvbnRyYWN0ZXIiLCAzNzUwMDApLAogICAgICAgICAgdGl0bGVfdHlwZSgiRGV2
aWFudCIsICJEZXZpYW50IiwgMzc1MDAwKSwKICAgICAgICAgIHRpdGxlX3R5cGUoIkZ1c2VyIiwg
IkZ1c2VyIiwgMzc1MDAwKSwKICAgICAgICAgIHRpdGxlX3R5cGUoIlJlY29uc3RydWN0b3IiLCAi
UmVjb25zdHJ1Y3RvciIsIDM3NTAwMCksCiAgICAgICAgICB0aXRsZV90eXBlKCJKdW5pb3IgTW9y
cGhlciIsICJKdW5pb3IgTW9ycGhlciIsIDM3NTAwMCksCiAgICAgICAgICB0aXRsZV90eXBlKCJT
aGFwZXNoaWZ0ZXIgb2YgdGhlIFRoaXJkIE9yZGVyIiwgIlNoYXBlc2hpZnRlciBvZiB0aGUgVGhp
cmQgT3JkZXIiLCAzNzUwMDApLAogICAgICAgICAgdGl0bGVfdHlwZSgiTWVsZCBQcmFjdGljaW9u
ZXIiLCAiTWVsZCBQcmFjdGljaW9uZXIiLCAzNzUwMDApLAogICAgICAgICAgdGl0bGVfdHlwZSgi
U2hpZnRlciIsICJTaGlmdGVyIiwgMzc1MDAwKSwKICAgICAgICAgIHRpdGxlX3R5cGUoIlNpbXVs
YXRvciIsICJTaW11bGF0b3IiLCAzNzUwMDApLAogICAgICAgICAgdGl0bGVfdHlwZSgiSW1pdGF0
b3IiLCAiSW1pdGF0b3IiLCAzNzUwMDApLAogICAgICAgICAgdGl0bGVfdHlwZSgiRG9wcGxlZ2Fu
Z2VyIiwgIkRvcHBsZWdhbmdlciIsIDM3NTAwMCksCiAgICAgICAgICB0aXRsZV90eXBlKCJDbG9u
ZSBBcnRpc3QiLCAiQ2xvbmUgQXJ0aXN0IiwgMzc1MDAwKSwKICAgICAgICAgIHRpdGxlX3R5cGUo
IlJlcGxpY2FudCIsICJSZXBsaWNhbnQiLCAzNzUwMDApLAogICAgICAgICAgdGl0bGVfdHlwZSgi
TWlycm9yIiwgIk1pcnJvciIsIDM3NTAwMCksCiAgICAgICAgICB0aXRsZV90eXBlKCJTZW5pb3Ig
TW9ycGhlciIsICJTZW5pb3IgTW9ycGhlciIsIDM3NTAwMCksCiAgICAgICAgICB0aXRsZV90eXBl
KCJTaGFwZXNoaWZ0ZXIgb2YgdGhlIEZvdXJ0aCBPcmRlciIsICJTaGFwZXNoaWZ0ZXIgb2YgdGhl
IEZvdXJ0aCBPcmRlciIsIDM3NTAwMCksCiAgICAgICAgICB0aXRsZV90eXBlKCJJbWFnZXIiLCAi
SW1hZ2VyIiwgMzc1MDAwKSwKICAgICAgICAgIHRpdGxlX3R5cGUoIlN3aXRjaGVyIiwgIlN3aXRj
aGVyIiwgMzc1MDAwKSwKICAgICAgICAgIHRpdGxlX3R5cGUoIkRlZm9ybWVyIiwgIkRlZm9ybWVy
IiwgMzc1MDAwKSwKICAgICAgICAgIHRpdGxlX3R5cGUoIlJlZm9ybWVyIiwgIlJlZm9ybWVyIiwg
Mzc1MDAwKSwKICAgICAgICAgIHRpdGxlX3R5cGUoIlNoYWRvdyIsICJTaGFkb3ciLCAxMDAwMDAw
KSwKICAgICAgICAgIHRpdGxlX3R5cGUoIk1lbHRlciIsICJNZWx0ZXIiLCAxMDAwMDAwKSwKICAg
ICAgICAgIHRpdGxlX3R5cGUoIkFueW9uZSIsICJBbnlvbmUiLCAxMDAwMDAwKSwKICAgICAgICAg
IHRpdGxlX3R5cGUoIlJlcHJvZHVjZXIiLCAiUmVwcm9kdWNlciIsIDEwMDAwMDApLAogICAgICAg
ICAgdGl0bGVfdHlwZSgiTW9ycGggTG9yZCIsICJNb3JwaCBMb3JkIiwgMTAwMDAwMCksCiAgICAg
ICAgICB0aXRsZV90eXBlKCJHcmFuZCBTaGFwZXNoaWZ0ZXIgb2YgdGhlIEZpZnRoIE9yZGVyIiwg
IkdyYW5kIFNoYXBlc2hpZnRlciBvZiB0aGUgRmlmdGggT3JkZXIiLCAxMDAwMDAwKSwKICAgICAg
ICAgIHRpdGxlX3R5cGUoIkltbW9ydGFsIiwgIkltbW9ydGFsIiwgMTUwMDAwMDAwKSwKICAgICAg
ICAgIHRpdGxlX3R5cGUoIkltbW9ydGFsIiwgIkltbW9ydGFsIiwgMTAwMDAwMDApLAogICAgICAg
ICAgdGl0bGVfdHlwZSgiSW1tb3J0YWwiLCAiSW1tb3J0YWwiLCAxMDAwMDAwMCksCiAgICAgICAg
ICB0aXRsZV90eXBlKCJJbW1vcnRhbCIsICJJbW1vcnRhbCIsIDEwMDAwMDAwKSwKICAgICAgICAg
IHRpdGxlX3R5cGUoIkltbW9ydGFsIiwgIkltbW9ydGFsIiwgMTAwMDAwMDApLAogICAgICAgICAg
dGl0bGVfdHlwZSgiSW1tb3J0YWwiLCAiSW1tb3J0YWwiLCAxMDAwMDAwMCksCiAgICAgICAgICB0
aXRsZV90eXBlKCJJbW1vcnRhbCIsICJJbW1vcnRhbCIsIDEwMDAwMDAwKSwKICAgICAgICAgIHRp
dGxlX3R5cGUoIkdvZCIsICJHb2RkZXNzIiwgMTAwMDAwMDApLAogICAgICAgICAgdGl0bGVfdHlw
ZSgiSW1wbGVtZW50b3IiLCJJbXBsZW1lbnRyZXNzIiwgMTAwMDAwMDApLAogICAgICAgICAgdGl0
bGVfdHlwZSgiSW1wbGVtZW50b3IiLCJJbXBsZW1lbnRyZXNzIiwgMTAwMDAwMDApCiAgICAgICAg
fQogICAgfTsK


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2003-02-22 19:06 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-02-22 19:06 optimization/9805: optimisation of largish array constant containing strings takes forever(?) and consumes very large amounts of memory tilps

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).