Move a window

Steven J Abner <[email protected]> Fri, 30 May 2025 17:11:17 -0400
Newsgroups gmane.comp.freedesktop.xcb
Message-ID <[email protected]>
--=-fgyiyzLbA+FdDsDhKErp
Content-Type: text/plain; charset=us-ascii; format=flowed

Please, I'm begging for help! After over a month of finding a kernel 
bug, building Xorg/mesa from scratch, rewriting code, to eliminate this 
bug or secret, I've created a program to demonstrate.

I need the secret handshake or password to get any window manager, 
except the great! twm to run this.

To build:
gcc -ansi -pedantic -Wall -g -o xmove xmove.c -lxcb

To run for bare xorg:
with no-wm either in xinitrc:
cd <where built>
./xmove
or with xterm:
exec $xterm -geometry 120X62+850+0 -name login
and from xterm:
cd <where built>
./xmove

with twm:
$twm &
exec $xterm -geometry 120X62+850+0 -name login
and from xterm:
cd <where built>
./xmove

from any OS with (arrrg) window manager: use console, not xinitrc

Don't say _NET_WM_MOVERESIZE because it doesn't work on every window 
manager.
And on the 3 tested this 'grab' won't work. It has confines placed on 
it from moving past edges or 'STRUT's where cursor gets separated from 
drag point (mouse location).
PS freedesktop link from EWMH doesn't work, not that the managers 
follow, and I don't expect a reply from stack exchange.
Steve



--=-fgyiyzLbA+FdDsDhKErp
Content-Type: text/x-csrc
Content-Disposition: attachment; filename=xmove.c
Content-Transfer-Encoding: base64

LyoKICogTW92ZSB3aW5kb3cgZGVtbwogKiBTdGV2ZW4gSiBBYm5lciAyMDI1CiAqLwojaW5jbHVk
ZSA8eGNiL3hjYi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5j
bHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDxzdGRib29sLmg+CiNpbmNsdWRlIDxpbnR0eXBlcy5o
PgojaW5jbHVkZSA8bGltaXRzLmg+CiNpbmNsdWRlIDxwb2xsLmg+CgovKiBnY2MgLWFuc2kgLXBl
ZGFudGljIC1XYWxsIC1Xbm8tdW5rbm93bi1wcmFnbWFzIC1nIFwKIC1vIHhtb3ZlIHhtb3ZlLmMg
LWx4Y2IgKi8KCnR5cGVkZWYgc3RydWN0IF9QaHhJbnRlcmZhY2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBoeEludGVyZmFjZTsKdHlwZWRlZiBzdHJ1Y3QgX1BoeFJlY3RhbmdsZSB7IGlu
dDE2X3QgeCwgeSwgdywgaDsgfSAgICAgUGh4UmVjdGFuZ2xlOwoKeGNiX2Nvbm5lY3Rpb25fdCAg
ICAgKmNvbm5lY3Rpb24gPSBOVUxMOwp4Y2JfYXRvbV90IFdNX1BST1RPQ09MUzsKeGNiX2F0b21f
dCBXTV9ERUxFVEVfV0lORE9XOwppbnQxNl90IHhyb290LCB5cm9vdDsKCnN0cnVjdCBfUGh4SW50
ZXJmYWNlIHsKIFBoeFJlY3RhbmdsZSAgbWV0ZV9ib3g7CiB4Y2Jfd2luZG93X3QgIHdpbmRvdzsK
fSBpZmFjZTAgPSB7IHswfSwgMCB9OwoKI2lmIChfX1NURENfVkVSU0lPTl9fIDw9IDE5OTkwMUwp
CiAjZGVmaW5lIFJFQ1RBTkdMRShhLGIsYyxkLGUpIFwKICBhLnggPSBiLCBhLnkgPSBjLCBhLncg
PSBkLCBhLmggPSBlCiNlbHNlCiAjZGVmaW5lIFJFQ1RBTkdMRShhLGIsYyxkLGUpIFwKICBhID0g
KFBoeFJlY3RhbmdsZSl7IGIsIGMsIGQsIGUgfQojZW5kaWYKCnN0YXRpYyBib29sCmV2ZW50X2tl
eWJvYXJkKHhjYl9nZW5lcmljX2V2ZW50X3QgKm52dCkgewoKICB4Y2Jfa2V5X3ByZXNzX2V2ZW50
X3QgKmtwID0gKHhjYl9rZXlfcHJlc3NfZXZlbnRfdCopbnZ0OwogIHhjYl9jbGllbnRfbWVzc2Fn
ZV9ldmVudF90ICptZXNzYWdlOwogIG1lc3NhZ2UgPSBjYWxsb2MoMzIsIDEpOwogIG1lc3NhZ2Ut
PnJlc3BvbnNlX3R5cGUgID0gWENCX0NMSUVOVF9NRVNTQUdFOwogIG1lc3NhZ2UtPmZvcm1hdCAg
ICAgICAgID0gMzI7CiAgbWVzc2FnZS0+d2luZG93ICAgICAgICAgPSBrcC0+ZXZlbnQ7CiAgbWVz
c2FnZS0+dHlwZSAgICAgICAgICAgPSBXTV9QUk9UT0NPTFM7CiAgbWVzc2FnZS0+ZGF0YS5kYXRh
MzJbMF0gPSBXTV9ERUxFVEVfV0lORE9XOwogIG1lc3NhZ2UtPmRhdGEuZGF0YTMyWzFdID0ga3At
PnRpbWU7CiAgeGNiX3NlbmRfZXZlbnQoY29ubmVjdGlvbiwgZmFsc2UsIG1lc3NhZ2UtPndpbmRv
dywKICAgICAgICAgICAgICAgICAgICAgWENCX0VWRU5UX01BU0tfTk9fRVZFTlQsIChjaGFyKilt
ZXNzYWdlKTsKICB4Y2JfZmx1c2goY29ubmVjdGlvbik7CiAgcmV0dXJuIHRydWU7Cn0KCnN0YXRp
YyBib29sCmV2ZW50X21vdXNlKHhjYl9nZW5lcmljX2V2ZW50X3QgKm52dCkgewoKICBib29sIGxv
Y3VzID0gKChudnQtPnJlc3BvbnNlX3R5cGUgJiAodWludDhfdCl+MHg4MCkgPT0gWENCX0JVVFRP
Tl9QUkVTUyk7CiAgeGNiX2J1dHRvbl9wcmVzc19ldmVudF90ICptb3VzZQogICAgPSAoeGNiX2J1
dHRvbl9wcmVzc19ldmVudF90KiludnQ7CgogIGlmIChsb2N1cykgewogICAgeGNiX2dyYWJfcG9p
bnRlcl9jb29raWVfdCBjMDsKICAgIHhjYl9ncmFiX3BvaW50ZXJfcmVwbHlfdCAqcjA7CgogICAg
eHJvb3QgPSBtb3VzZS0+cm9vdF94OwogICAgeXJvb3QgPSBtb3VzZS0+cm9vdF95OwogICAgYzAg
PSB4Y2JfZ3JhYl9wb2ludGVyKGNvbm5lY3Rpb24sIDEsIG1vdXNlLT5ldmVudCwKICAgICAgICBY
Q0JfRVZFTlRfTUFTS19CVVRUT05fUFJFU1MgfCBYQ0JfRVZFTlRfTUFTS19CVVRUT05fUkVMRUFT
RQogICAgICAgICAgIHwgWENCX0VWRU5UX01BU0tfUE9JTlRFUl9NT1RJT04sCiAgICAgICAgWENC
X0dSQUJfTU9ERV9BU1lOQywgWENCX0dSQUJfTU9ERV9BU1lOQywKICAgICAgICBYQ0JfTk9ORSwg
WENCX05PTkUsIG1vdXNlLT50aW1lKTsKICAgIHIwID0geGNiX2dyYWJfcG9pbnRlcl9yZXBseShj
b25uZWN0aW9uLCBjMCwgTlVMTCk7CiAgICBpZiAoKHIwID09IE5VTEwpIHx8IChyMC0+c3RhdHVz
ICE9IFhDQl9HUkFCX1NUQVRVU19TVUNDRVNTKSkgewogICAgICBwdXRzKCJncmFiIGZhaWxlZCIp
OwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfSBlbHNlIHsKICAgIHhjYl91bmdyYWJfcG9p
bnRlcihjb25uZWN0aW9uLCBtb3VzZS0+dGltZSk7CiAgfQogIHJldHVybiB0cnVlOwp9CgpzdGF0
aWMgYm9vbApldmVudF9tb3Rpb24oeGNiX2dlbmVyaWNfZXZlbnRfdCAqbnZ0KSB7CgogIHhjYl9t
b3Rpb25fbm90aWZ5X2V2ZW50X3QgKm1vdGlvbgogICAgPSAoeGNiX21vdGlvbl9ub3RpZnlfZXZl
bnRfdCopbnZ0OwoKICBpZiAoISEobW90aW9uLT5zdGF0ZSAmIFhDQl9CVVRUT05fTUFTS18xKSkg
ewogICAgaW50MzJfdCB2YWx1ZXNbMl07CiAgICB4Y2JfcXVlcnlfcG9pbnRlcl9jb29raWVfdCBj
MAogICAgICA9IHhjYl9xdWVyeV9wb2ludGVyKGNvbm5lY3Rpb24sIGlmYWNlMC53aW5kb3cpOwog
ICAgeGNiX3F1ZXJ5X3BvaW50ZXJfcmVwbHlfdCAqcjAKICAgICAgPSB4Y2JfcXVlcnlfcG9pbnRl
cl9yZXBseShjb25uZWN0aW9uLCBjMCwgTlVMTCk7CiAgICB4Y2JfZmx1c2goY29ubmVjdGlvbik7
CiAgICB2YWx1ZXNbMF0gPSAoaWZhY2UwLm1ldGVfYm94LnggKz0gKHIwLT5yb290X3ggLSB4cm9v
dCkpOwogICAgdmFsdWVzWzFdID0gKGlmYWNlMC5tZXRlX2JveC55ICs9IChyMC0+cm9vdF95IC0g
eXJvb3QpKTsKICAgIHhyb290ID0gcjAtPnJvb3RfeDsKICAgIHlyb290ID0gcjAtPnJvb3RfeTsK
ICAgIGZyZWUocjApOwogICAgeGNiX2NvbmZpZ3VyZV93aW5kb3coY29ubmVjdGlvbiwgbW90aW9u
LT5ldmVudCwKICAgICAgICAgICAgICAgICBYQ0JfQ09ORklHX1dJTkRPV19YIHwgWENCX0NPTkZJ
R19XSU5ET1dfWSwgdmFsdWVzKTsKICAgIHhjYl9mbHVzaChjb25uZWN0aW9uKTsKICB9CiAgcmV0
dXJuIHRydWU7Cn0KCnN0YXRpYyBpbnQzMl90CnByb2Nlc3NfdGltZXJzKHZvaWQpIHsKICByZXR1
cm4gSU5UX01BWDsKfQoKc3RhdGljIGJvb2wKcHJvY2Vzc19ldmVudCh4Y2JfZ2VuZXJpY19ldmVu
dF90ICpudnQpIHsKCiAgc3dpdGNoIChudnQtPnJlc3BvbnNlX3R5cGUgJiAodWludDhfdCl+MHg4
MCkgewoKICAgIGNhc2UgWENCX0tFWV9QUkVTUzogeyAgICAgICAgIC8qIHJlc3BvbnNlX3R5cGUg
MiAqLwogICAgICBldmVudF9rZXlib2FyZChudnQpOwogICAgICBicmVhazsKICAgIH0KICAgIGNh
c2UgWENCX0tFWV9SRUxFQVNFOiB7ICAgICAgIC8qIHJlc3BvbnNlX3R5cGUgMyAqLwogICAgICBi
cmVhazsKICAgIH0KCiAgICBjYXNlIFhDQl9CVVRUT05fUFJFU1M6ICAgICAgICAvKiByZXNwb25z
ZV90eXBlIDQgKi8KICAgIGNhc2UgWENCX0JVVFRPTl9SRUxFQVNFOiB7ICAgIC8qIHJlc3BvbnNl
X3R5cGUgNSAqLwogICAgICBldmVudF9tb3VzZShudnQpOwogICAgICBicmVhazsKICAgIH0KCiAg
ICBjYXNlIFhDQl9NT1RJT05fTk9USUZZOiB7ICAgICAvKiByZXNwb25zZV90eXBlIDYgKi8KICAg
ICAgZXZlbnRfbW90aW9uKG52dCk7CiAgICAgIGJyZWFrOwogICAgfQoKICAgIGNhc2UgWENCX0VO
VEVSX05PVElGWTogICAgICAgIC8qIHJlc3BvbnNlX3R5cGUgNyAqLwogICAgY2FzZSBYQ0JfTEVB
VkVfTk9USUZZOiB7ICAgICAgLyogcmVzcG9uc2VfdHlwZSA4ICovCiAgICAgIGJyZWFrOwogICAg
fQoKICAgIGNhc2UgWENCX0ZPQ1VTX0lOOiB7ICAgICAgICAgIC8qIHJlc3BvbnNlX3R5cGUgOSAq
LwogICAgICB4Y2Jfc2V0X2lucHV0X2ZvY3VzKGNvbm5lY3Rpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgWENCX0lOUFVUX0ZPQ1VTX1BBUkVOVCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZmFjZTAud2luZG93LCBYQ0JfQ1VSUkVOVF9USU1FKTsKICAgICAgYnJlYWs7CiAgICB9CiAg
ICBjYXNlIFhDQl9GT0NVU19PVVQ6IHsgICAgICAgICAvKiByZXNwb25zZV90eXBlIDEwICovCiAg
ICAgIGJyZWFrOwogICAgfQoKICAgIGNhc2UgWENCX0VYUE9TRTogeyAgICAgICAgICAgIC8qIHJl
c3BvbnNlX3R5cGUgMTIgKi8KICAgICAgYnJlYWs7CiAgICB9CgogICAgY2FzZSBYQ0JfVklTSUJJ
TElUWV9OT1RJRlk6IHsgLyogcmVzcG9uc2VfdHlwZSAxNSAqLwogICAgICBicmVhazsKICAgIH0K
CiAgICBjYXNlIFhDQl9ERVNUUk9ZX05PVElGWTogeyAgICAvKiByZXNwb25zZV90eXBlIDE3ICov
CiAgICAgICAgLyogYXNzdW1lIGEga2lsbCwgZGVsZXRlIGFsbCB3aW5kb3dzIChkbyB0aGVpciB0
aGluZykKICAgICAgICAgICBzZW5kIGZhbHNlIHRvIGV4aXQgbG9vcCAqLwogICAgICBmcmVlKG52
dCk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgICAgLyogdGhlc2UgNCBiZWNhdXNlIG9m
IFhDQl9FVkVOVF9NQVNLX1NUUlVDVFVSRV9OT1RJRlkgKi8KICAgIGNhc2UgWENCX1VOTUFQX05P
VElGWTogeyAgICAgIC8qIHJlc3BvbnNlX3R5cGUgMTggKi8KICAgICAgYnJlYWs7CiAgICB9CiAg
ICBjYXNlIFhDQl9NQVBfTk9USUZZOiB7ICAgICAgICAvKiByZXNwb25zZV90eXBlIDE5ICovCiAg
ICAgIGJyZWFrOwogICAgfQogICAgY2FzZSBYQ0JfUkVQQVJFTlRfTk9USUZZOiB7ICAgLyogcmVz
cG9uc2VfdHlwZSAyMSAqLwogICAgICAgIC8qIHBvc2l0aW9uIGFmdGVyIG1hcCwgdG8gZGVzaWdu
IHVzZXIgcmVxdWVzdGVkIG9mIHdpbmRvdwogICAgICAgICAqIHNldCBvbmNlIGFuZCB3aGVuIHdp
bmRvdyBtYW5hZ2VyIGFza3MgdG8gcmVwYXJlbnQKICAgICAgICAgKiBkb250IG5lZWQgZHVyaW5n
IGljb24vZGVpY29uaWZ5CiAgICAgICAgICogZG9lc250IHN0b3AgV00gY29uZmlndXJlcywgYnV0
IHdpbGwgYmUgc2VudCBhZnRlciBtYXAgbm90aWZ5ICovCiAgICAgIHVpbnQzMl90IHZhbHVlc1sy
XTsKICAgICAgdmFsdWVzWzBdID0gaWZhY2UwLm1ldGVfYm94Lng7CiAgICAgIHZhbHVlc1sxXSA9
IGlmYWNlMC5tZXRlX2JveC55OwogICAgICB4Y2JfY29uZmlndXJlX3dpbmRvdyhjb25uZWN0aW9u
LCBpZmFjZTAud2luZG93LAogICAgICAgICAgICAgICAgICAgWENCX0NPTkZJR19XSU5ET1dfWCB8
IFhDQl9DT05GSUdfV0lORE9XX1ksIHZhbHVlcyk7CiAgICAgIGJyZWFrOwogICAgfQogCiAgIGNh
c2UgWENCX0NPTkZJR1VSRV9OT1RJRlk6IHsgIC8qIHJlc3BvbnNlX3R5cGUgMjIgKi8KICAgICAg
IGJyZWFrOwogICAgfQoKICAgIGNhc2UgWENCX1BST1BFUlRZX05PVElGWTogeyAgIC8qIHJlc3Bv
bnNlX3R5cGUgMjggKi8KICAgIGNhc2UgWENCX1NFTEVDVElPTl9DTEVBUjogICAgIC8qIHJlc3Bv
bnNlX3R5cGUgMjkgKi8KICAgIGNhc2UgWENCX1NFTEVDVElPTl9SRVFVRVNUOiAgIC8qIHJlc3Bv
bnNlX3R5cGUgMzAgKi8KICAgIGNhc2UgWENCX1NFTEVDVElPTl9OT1RJRlk6ICAgIC8qIHJlc3Bv
bnNlX3R5cGUgMzEgKi8KICAgICAgYnJlYWs7CiAgICB9CgogICAgY2FzZSBYQ0JfQ0xJRU5UX01F
U1NBR0U6IHsgICAgLyogcmVzcG9uc2VfdHlwZSAzMyAqLwogICAgICB4Y2JfY2xpZW50X21lc3Nh
Z2VfZXZlbnRfdCAqY20KICAgICAgICA9ICh4Y2JfY2xpZW50X21lc3NhZ2VfZXZlbnRfdCopbnZ0
OwogICAgICBpZiAoY20tPnR5cGUgIT0gV01fUFJPVE9DT0xTKSAgZ290byByZXBvcnQ7CiAgICAg
IHhjYl91bm1hcF93aW5kb3coY29ubmVjdGlvbiwgaWZhY2UwLndpbmRvdyk7CiAgICAgIHhjYl9k
ZXN0cm95X3dpbmRvdyhjb25uZWN0aW9uLCBpZmFjZTAud2luZG93KTsKICAgICAgYnJlYWs7CiAg
ICB9CgogICAgZGVmYXVsdDoKICAgICAgaWYgKG52dC0+cmVzcG9uc2VfdHlwZSA9PSAwKSB7CiAg
ICAgICAgeGNiX2dlbmVyaWNfZXJyb3JfdCAqZXJyID0gKHhjYl9nZW5lcmljX2Vycm9yX3QqKW52
dDsKICAgICAgICBwcmludGYoImVycm9yOiAlIlBSSXU4IlxuIiwgZXJyLT5lcnJvcl9jb2RlKTsK
ICAgICAgICBicmVhazsKICAgICAgfQpyZXBvcnQ6CiAgICAgICAgLyogVW5rbm93biBldmVudCB0
eXBlLCB1c2UgdG8gdHJhY2sgY29kaW5nIHByb2JsZW1zICovCiAgICAgIHByaW50ZigiVW5rbm93
biBldmVudDogJSJQUkl1OCJcbiIsIG52dC0+cmVzcG9uc2VfdHlwZSk7CiAgICAgIGJyZWFrOwoK
ICB9IC8qIGVuZCBzd2l0Y2gocmVzcG9uc2VfdHlwZSkgKi8KICAgIC8qIG52dCBubyBsb25nZXIg
bmVlZGVkICovCiAgZnJlZShudnQpOwogICAgLyogY3JpdGljYWwhIG90aGVyd2lzZSB3b250IHBy
b2Nlc3MgYW55dGhpbmcgZG9uZSAqLwogIHhjYl9mbHVzaChjb25uZWN0aW9uKTsKICByZXR1cm4g
dHJ1ZTsKfQoKc3RhdGljIHZvaWQKeGNiX21haW4odm9pZCkgewoKICAgIC8qIHNldCBhbGwgYmVm
b3JlIHRocm91Z2ggdG8gWHNlcnZlciAqLwogIHhjYl9mbHVzaChjb25uZWN0aW9uKTsKCiAgZG8g
ewogICAgaW50IHRpbWVvdXQ7CiAgICB4Y2JfZ2VuZXJpY19ldmVudF90ICpldmVudDsKICAgIHdo
aWxlICgoZXZlbnQgPSB4Y2JfcG9sbF9mb3JfZXZlbnQoY29ubmVjdGlvbikpICE9IE5VTEwpCiAg
ICAgICAgLyogX3Byb2Nlc3NfZXZlbnQoKSByZXR1cm5zICdydW5uaW5nJyBmb3IgbWFpbiBsb29w
LiAqLwogICAgICBpZiAocHJvY2Vzc19ldmVudChldmVudCkgPT0gZmFsc2UpICBnb3RvIGNsZWFu
dXA7CiAgICBkbyB7CiAgICAgICAgLyogX3Byb2Nlc3NfdGltZXJzKCkgcnVucyBhbnkgdGltZXJz
IHRoYXQgYXJlIGltbWVkaWF0ZWx5IHBlbmRpbmcsCiAgICAgICAgICAgYW5kIHJldHVybnMgdGhl
IG51bWJlciBvZiBtaWxsaXNlY29uZHMgdW50aWwgdGhlIG5leHQgdGltZXIKICAgICAgICAgICBp
biB0aGUgcXVldWUgaXMgcmVhZHkuCiAgICAgICAgICAgX3Byb2Nlc3NfdGltZXJzKCkgcmV0dXJu
cyBJTlRfTUFYIGlmIHRoZXJlIGFyZSBubyB0aW1lcnMuICovCiAgICAgICAgLyogX3Byb2Nlc3Nf
dGltZXJzKCkgYWxzbyByZW1vdmVzIGZyb20gdGltZW91dCBpdHMgcnVuIHRpbWUuICovCiAgICAg
IHRpbWVvdXQgPSBwcm9jZXNzX3RpbWVycygpOwogICAgICBpZiAoKGV2ZW50ID0geGNiX3BvbGxf
Zm9yX3F1ZXVlZF9ldmVudChjb25uZWN0aW9uKSkgPT0gTlVMTCkgIGJyZWFrOwogICAgICAgIGlm
IChwcm9jZXNzX2V2ZW50KGV2ZW50KSA9PSBmYWxzZSkgIGdvdG8gY2xlYW51cDsKICAgIH0gd2hp
bGUgKDEpOwogICAgaWYgKHRpbWVvdXQgPiA2KSB7CiAgICAgIHN0cnVjdCBwb2xsZmQgcGZkWzFd
OwogICAgICBwZmQtPmZkID0geGNiX2dldF9maWxlX2Rlc2NyaXB0b3IoY29ubmVjdGlvbik7CiAg
ICAgIHBmZC0+ZXZlbnRzID0gUE9MTElOOwogICAgICBwZmQtPnJldmVudHMgPSBQT0xMT1VUOwog
ICAgICBwb2xsKHBmZCwgMSwgdGltZW91dCk7CiAgICB9CiAgfSB3aGlsZSAoMSk7CiAgICAvKiBy
ZWNlaXZlZCBYQ0JfREVTVFJPWV9OT1RJRlkgKi8KY2xlYW51cDoKICByZXR1cm47Cn0KCnZvaWQK
dWlfd2luZG93X25hbWUoeGNiX3dpbmRvd190IHdpbmRvdykgewoKICB4Y2JfaW50ZXJuX2F0b21f
Y29va2llX3QgY29va2llCiAgICA9IHhjYl9pbnRlcm5fYXRvbShjb25uZWN0aW9uLCAxLCA3LCAi
V01fTkFNRSIpOwogIHhjYl9pbnRlcm5fYXRvbV9yZXBseV90ICpyZXBseQogICAgPSB4Y2JfaW50
ZXJuX2F0b21fcmVwbHkoY29ubmVjdGlvbiwgY29va2llLCBOVUxMKTsKICB4Y2JfaW50ZXJuX2F0
b21fY29va2llX3QgY29va2llMgogICAgPSB4Y2JfaW50ZXJuX2F0b20oY29ubmVjdGlvbiwgMCwg
NiwgIlNUUklORyIpOwogIHhjYl9pbnRlcm5fYXRvbV9yZXBseV90ICpyZXBseTIKICAgID0geGNi
X2ludGVybl9hdG9tX3JlcGx5KGNvbm5lY3Rpb24sIGNvb2tpZTIsIE5VTEwpOwoKICBjaGFyIHRp
dGxlWzE2XTsKICBzcHJpbnRmKHRpdGxlLCAiJWQiLCB3aW5kb3cpOwogIHhjYl9jaGFuZ2VfcHJv
cGVydHkoY29ubmVjdGlvbiwgWENCX1BST1BfTU9ERV9SRVBMQUNFLCB3aW5kb3csCiAgICAgICAg
ICAgICAgICAgICAgICAgcmVwbHktPmF0b20sIHJlcGx5Mi0+YXRvbSwgOCwKICAgICAgICAgICAg
ICAgICAgICAgICBzdHJsZW4odGl0bGUpLCB0aXRsZSk7CiAgZnJlZShyZXBseSk7CiAgZnJlZShy
ZXBseTIpOwp9CgpzdGF0aWMgdm9pZApfd2luZG93X2V2ZW50X2RlbGV0ZSh4Y2JfY29ubmVjdGlv
bl90ICpjb25uZWN0aW9uLCB4Y2Jfd2luZG93X3Qgd2luZG93KSB7CgogICAgLyogYWxsb3cgZGVs
ZXRlIHdpbmRvdyBzbyBjYW4gcXVpdCBhcHBsaWNhdGlvbi4gQXZvaWQgXkMuICovCiAgeGNiX2No
YW5nZV9wcm9wZXJ0eShjb25uZWN0aW9uLCBYQ0JfUFJPUF9NT0RFX1JFUExBQ0UsIHdpbmRvdywK
ICAgICAgICAgICAgICAgICAgICAgIFdNX1BST1RPQ09MUywgWENCX0FUT01fQVRPTSwgMzIsIDEs
CiAgICAgICAgICAgICAgICAgICAgICAmV01fREVMRVRFX1dJTkRPVyk7Cn0KCnN0YXRpYyB4Y2Jf
d2luZG93X3QKX3dpbmRvd19jcmVhdGUoUGh4UmVjdGFuZ2xlIGNvbmZpZ3VyZSkgewoKICB4Y2Jf
c2NyZWVuX3QgKnNjcmVlbjsKICB4Y2Jfd2luZG93X3Qgd2luZG93OwogIHVpbnQzMl90IG1hc2s7
CiAgdWludDMyX3QgdmFsdWVzWzJdOwoKICBpZiAoY29ubmVjdGlvbiA9PSBOVUxMKSB7CiAgICB4
Y2JfaW50ZXJuX2F0b21fY29va2llX3QgYzAsIGMxOwogICAgeGNiX2ludGVybl9hdG9tX3JlcGx5
X3QgKnIwLCAqcjE7CiAgICBjb25uZWN0aW9uID0geGNiX2Nvbm5lY3QoTlVMTCwgTlVMTCk7CiAg
ICBjMCA9IHhjYl9pbnRlcm5fYXRvbShjb25uZWN0aW9uLCAwLCAxMiwgIldNX1BST1RPQ09MUyIp
OwogICAgYzEgPSB4Y2JfaW50ZXJuX2F0b20oY29ubmVjdGlvbiwgMCwgMTYsICJXTV9ERUxFVEVf
V0lORE9XIik7CiAgICByMCA9IHhjYl9pbnRlcm5fYXRvbV9yZXBseShjb25uZWN0aW9uLCBjMCwg
TlVMTCk7CiAgICByMSA9IHhjYl9pbnRlcm5fYXRvbV9yZXBseShjb25uZWN0aW9uLCBjMSwgTlVM
TCk7CiAgICBXTV9QUk9UT0NPTFMgICAgID0gcjAtPmF0b207ICBmcmVlKCh2b2lkKilyMCk7CiAg
ICBXTV9ERUxFVEVfV0lORE9XID0gcjEtPmF0b207ICBmcmVlKCh2b2lkKilyMSk7CiAgfQoKICBz
Y3JlZW4gPSB4Y2Jfc2V0dXBfcm9vdHNfaXRlcmF0b3IoeGNiX2dldF9zZXR1cChjb25uZWN0aW9u
KSkuZGF0YTsKICAgIC8qIENyZWF0ZSB0aGUgd2luZG93ICovCiAgd2luZG93ID0geGNiX2dlbmVy
YXRlX2lkKGNvbm5lY3Rpb24pOwoKICBtYXNrICAgICAgPSBYQ0JfQ1dfQkFDS19QSVhFTCB8IFhD
Ql9DV19FVkVOVF9NQVNLOwogIHZhbHVlc1swXSA9IHNjcmVlbi0+d2hpdGVfcGl4ZWw7CiAgdmFs
dWVzWzFdID0gWENCX0VWRU5UX01BU0tfRVhQT1NVUkUgICAgICAgfCBYQ0JfRVZFTlRfTUFTS19C
VVRUT05fUFJFU1MgICB8CiAgICAgICAgICAgICAgWENCX0VWRU5UX01BU0tfQlVUVE9OX1JFTEVB
U0UgfCBYQ0JfRVZFTlRfTUFTS19QT0lOVEVSX01PVElPTiB8CiAgICAgICAgICAgICAgWENCX0VW
RU5UX01BU0tfRU5URVJfV0lORE9XICAgfCBYQ0JfRVZFTlRfTUFTS19MRUFWRV9XSU5ET1cgICB8
CiAgICAgICAgICAgICAgWENCX0VWRU5UX01BU0tfS0VZX1BSRVNTICAgICAgfCBYQ0JfRVZFTlRf
TUFTS19LRVlfUkVMRUFTRSAgICB8CiAgICAgICAgICAgICAgWENCX0VWRU5UX01BU0tfRk9DVVNf
Q0hBTkdFICAgfCBYQ0JfRVZFTlRfTUFTS19TVFJVQ1RVUkVfTk9USUZZIHwKICAgICAgICAgICAg
ICBYQ0JfRVZFTlRfTUFTS19WSVNJQklMSVRZX0NIQU5HRTsKCiAgICAvKiBpZ25vcmVzIHgsIHks
IGJvcmRlcl93aWR0aCAodmlydXMpICovCiAgeGNiX2NyZWF0ZV93aW5kb3coY29ubmVjdGlvbiwK
ICAgICAgICAgICAgICAgICAgICBzY3JlZW4tPnJvb3RfZGVwdGgsICAgICAgICAgICAgLyogZGVw
dGggICAgICAgICAgKi8KICAgICAgICAgICAgICAgICAgICB3aW5kb3csICAgICAgICAgICAgICAg
ICAgICAgICAgLyogZ2VuZXJhdGVkIGlkICAgKi8KICAgICAgICAgICAgICAgICAgICBzY3JlZW4t
PnJvb3QsICAgICAgICAgICAgICAgICAgLyogcGFyZW50IHdpbmRvdyAgKi8KICAgICAgICAgICAg
ICAgICAgICBjb25maWd1cmUueCwgICAgICAgICAgICAgICAgICAgLyogeCwgeSAgICAgICAgICAg
Ki8KICAgICAgICAgICAgICAgICAgICBjb25maWd1cmUueSwKICAgICAgICAgICAgICAgICAgICBj
b25maWd1cmUudywgICAgICAgICAgICAgICAgICAgLyogd2lkdGgsIGhlaWdodCAgKi8KICAgICAg
ICAgICAgICAgICAgICBjb25maWd1cmUuaCwKICAgICAgICAgICAgICAgICAgICAwLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogYm9yZGVyX3dpZHRoICAgKi8KICAgICAgICAgICAgICAg
ICAgICBYQ0JfV0lORE9XX0NMQVNTX0lOUFVUX09VVFBVVCwgLyogY2xhc3MgICAgICAgICAgKi8K
ICAgICAgICAgICAgICAgICAgICBzY3JlZW4tPnJvb3RfdmlzdWFsLCAgICAgICAgICAgLyogdmlz
dWFsICAgICAgICAgKi8KICAgICAgICAgICAgICAgICAgICBtYXNrLCB2YWx1ZXMpOyAgICAgICAg
ICAgICAgICAgLyogbWFza3MgKi8KCnsKICB1aW50MzJfdCB2YWx1ZV9saXN0OwogIHhjYl9mb250
X3QgZm9udDsKICB4Y2JfY3Vyc29yX3QgY3Vyc29yOwogIGZvbnQgPSB4Y2JfZ2VuZXJhdGVfaWQo
Y29ubmVjdGlvbik7CiAgeGNiX29wZW5fZm9udChjb25uZWN0aW9uLCBmb250LCBzdHJsZW4gKCJj
dXJzb3IiKSwgImN1cnNvciIpOwogIGN1cnNvciA9IHhjYl9nZW5lcmF0ZV9pZChjb25uZWN0aW9u
KTsKICB4Y2JfY3JlYXRlX2dseXBoX2N1cnNvcihjb25uZWN0aW9uLCBjdXJzb3IsIGZvbnQsIGZv
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzMiwgMTMyICsgMSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgMCwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwg
MCk7CiAgdmFsdWVfbGlzdCA9IGN1cnNvcjsKICB4Y2JfY2hhbmdlX3dpbmRvd19hdHRyaWJ1dGVz
KGNvbm5lY3Rpb24sIHdpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhDQl9D
V19DVVJTT1IsICZ2YWx1ZV9saXN0KTsKfQogIF93aW5kb3dfZXZlbnRfZGVsZXRlKGNvbm5lY3Rp
b24sIHdpbmRvdyk7CiAgcmV0dXJuIHdpbmRvdzsKfQoKeGNiX3dpbmRvd190CnVpX3dpbmRvd19j
cmVhdGUoUGh4UmVjdGFuZ2xlIGNvbmZpZ3VyZSkgewoKICB4Y2Jfd2luZG93X3Qgd2luZG93ID0g
X3dpbmRvd19jcmVhdGUoY29uZmlndXJlKTsKICBpZiAod2luZG93ID09IDApICByZXR1cm4gMDsK
CiAgaWZhY2UwLm1ldGVfYm94ID0gY29uZmlndXJlOwogIGlmYWNlMC53aW5kb3cgPSB3aW5kb3c7
CiAgcmV0dXJuIHdpbmRvdzsKfQoKaW50Cm1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgewoK
ICB4Y2Jfd2luZG93X3Qgd2luZG93OwoKICAgIC8qIHdpbmRvdyBzaXplIGFuZCBwb3NpdGlvbiAq
LwogIFBoeFJlY3RhbmdsZSBjb25maWd1cmUgPSB7IDgwMCwgMjAwLCAzMDAsIDIwMCB9OwogICAg
LyogQSAndG9wbW9zdCcgZGVjb3JhdGVkIHdpbmRvdyAqLwogIHdpbmRvdyA9IHVpX3dpbmRvd19j
cmVhdGUoY29uZmlndXJlKTsKICBpZiAod2luZG93ID09IDApICBleGl0KEVYSVRfRkFJTFVSRSk7
CgogIHVpX3dpbmRvd19uYW1lKHdpbmRvdyk7CgogICAgLyogTWFwIHRoZSB3aW5kb3cgb24gdGhl
IHNjcmVlbiAqLwogIHhjYl9tYXBfd2luZG93KGNvbm5lY3Rpb24sIHdpbmRvdyk7CgogICAgLyog
UnVuIGV2ZW50IGxvb3AgKi8KICB4Y2JfbWFpbigpOwoKICByZXR1cm4gRVhJVF9TVUNDRVNTOwp9
Cg==

--=-fgyiyzLbA+FdDsDhKErp--