GCC segfault on i686
Till Hofmann <[email protected]> Thu, 18 Aug 2016 12:10:49 +0200
| Newsgroups | gmane.comp.gnu.prolog.bugs |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --------------75FEE9681F67D3318494118F Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi all, I'm currently trying to debug a GCC segfault that occurs when compiling EnginePl/machine.c on i686 machines: > make[1]: Entering directory '/home/till/rpmbuild/SOURCES/gprolog-1.4.4/= src/EnginePl' > gplc -c -C '-O3 -fomit-frame-pointer' machine.c > machine.c: In function =E2=80=98Pl_M_Randomize=E2=80=99: > machine.c:386:1: internal compiler error: Segmentation fault It looks like this is related to using the ebx register; if I remove '-ffixed-ebx' from the call to cc1, the segfault disappears. Looking at the Changelog, it looks like there was a fix for some issue related to using ebx in 1.3.1, but the error still occurs on i686. To reproduce, you need to build gprolog on i686 with GCC 6.1. I could reproduce this on multiple machines. Some additional info: gprolog version: 1.4.4 OS: Fedora 24 (also occurs on Fedora 25 and Fedora Rawhide) $ gcc --version gcc (GCC) 6.1.1 20160621 (Red Hat 6.1.1-3) $ uname -a Linux nc10 4.6.5-300.fc24.i686+PAE #1 SMP Thu Jul 28 01:34:46 UTC 2016 i686 i686 i386 GNU/Linux I build with "./configure --with-c-flags=3D'-v -save-temps'", I've attached the full output from make. I've also attached machine.i. With older GCC versions (<6), the bug does not occur, so this might well be a bug in GCC6. Kind regards Till --------------75FEE9681F67D3318494118F Content-Type: text/plain; charset=UTF-8; name="make.log" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="make.log" Y2QgRW5naW5lUGw7IG1ha2UgY29uZmlnCm1ha2VbMV06IEVudGVyaW5nIGRpcmVjdG9yeSAn L2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0VuZ2luZVBs JwpnY2MgLW1hcmNoPXBlbnRpdW1wcm8gLW0zMiAtZm5vLXN0cmljdC1hbGlhc2luZyAtdiAt c2F2ZS10ZW1wcyAgLW8gcGxfY29uZmlnIHBsX2NvbmZpZy5jClVzaW5nIGJ1aWx0LWluIHNw ZWNzLgpDT0xMRUNUX0dDQz1nY2MKQ09MTEVDVF9MVE9fV1JBUFBFUj0vdXNyL2xpYmV4ZWMv Z2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2x0by13cmFwcGVyClRhcmdldDogaTY4Ni1y ZWRoYXQtbGludXgKQ29uZmlndXJlZCB3aXRoOiAuLi9jb25maWd1cmUgLS1lbmFibGUtYm9v dHN0cmFwIC0tZW5hYmxlLWxhbmd1YWdlcz1jLGMrKyxvYmpjLG9iai1jKyssZm9ydHJhbixh ZGEsZ28sbHRvIC0tcHJlZml4PS91c3IgLS1tYW5kaXI9L3Vzci9zaGFyZS9tYW4gLS1pbmZv ZGlyPS91c3Ivc2hhcmUvaW5mbyAtLXdpdGgtYnVndXJsPWh0dHA6Ly9idWd6aWxsYS5yZWRo YXQuY29tL2J1Z3ppbGxhIC0tZW5hYmxlLXNoYXJlZCAtLWVuYWJsZS10aHJlYWRzPXBvc2l4 IC0tZW5hYmxlLWNoZWNraW5nPXJlbGVhc2UgLS1lbmFibGUtbXVsdGlsaWIgLS13aXRoLXN5 c3RlbS16bGliIC0tZW5hYmxlLV9fY3hhX2F0ZXhpdCAtLWRpc2FibGUtbGlidW53aW5kLWV4 Y2VwdGlvbnMgLS1lbmFibGUtZ251LXVuaXF1ZS1vYmplY3QgLS1lbmFibGUtbGlua2VyLWJ1 aWxkLWlkIC0td2l0aC1saW5rZXItaGFzaC1zdHlsZT1nbnUgLS1lbmFibGUtcGx1Z2luIC0t ZW5hYmxlLWluaXRmaW5pLWFycmF5IC0tZGlzYWJsZS1saWJnY2ogLS13aXRoLWlzbCAtLWVu YWJsZS1saWJtcHggLS1lbmFibGUtZ251LWluZGlyZWN0LWZ1bmN0aW9uIC0td2l0aC10dW5l PWdlbmVyaWMgLS13aXRoLWFyY2g9aTY4NiAtLWJ1aWxkPWk2ODYtcmVkaGF0LWxpbnV4ClRo cmVhZCBtb2RlbDogcG9zaXgKZ2NjIHZlcnNpb24gNi4xLjEgMjAxNjA2MjEgKFJlZCBIYXQg Ni4xLjEtMykgKEdDQykgCkNPTExFQ1RfR0NDX09QVElPTlM9Jy1tYXJjaD1wZW50aXVtcHJv JyAnLW0zMicgJy1mbm8tc3RyaWN0LWFsaWFzaW5nJyAnLXYnICctc2F2ZS10ZW1wcycgJy1v JyAncGxfY29uZmlnJwogL3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEu MS9jYzEgLUUgLXF1aWV0IC12IHBsX2NvbmZpZy5jIC1tYXJjaD1wZW50aXVtcHJvIC1tMzIg LWZuby1zdHJpY3QtYWxpYXNpbmcgLWZwY2gtcHJlcHJvY2VzcyAtbyBwbF9jb25maWcuaQpp Z25vcmluZyBub25leGlzdGVudCBkaXJlY3RvcnkgIi91c3IvbGliL2djYy9pNjg2LXJlZGhh dC1saW51eC82LjEuMS9pbmNsdWRlLWZpeGVkIgppZ25vcmluZyBub25leGlzdGVudCBkaXJl Y3RvcnkgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS8uLi8uLi8uLi8u Li9pNjg2LXJlZGhhdC1saW51eC9pbmNsdWRlIgojaW5jbHVkZSAiLi4uIiBzZWFyY2ggc3Rh cnRzIGhlcmU6CiNpbmNsdWRlIDwuLi4+IHNlYXJjaCBzdGFydHMgaGVyZToKIC91c3IvbGli L2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlCiAvdXNyL2xvY2FsL2luY2x1 ZGUKIC91c3IvaW5jbHVkZQpFbmQgb2Ygc2VhcmNoIGxpc3QuCkNPTExFQ1RfR0NDX09QVElP TlM9Jy1tYXJjaD1wZW50aXVtcHJvJyAnLW0zMicgJy1mbm8tc3RyaWN0LWFsaWFzaW5nJyAn LXYnICctc2F2ZS10ZW1wcycgJy1vJyAncGxfY29uZmlnJwogL3Vzci9saWJleGVjL2djYy9p Njg2LXJlZGhhdC1saW51eC82LjEuMS9jYzEgLWZwcmVwcm9jZXNzZWQgcGxfY29uZmlnLmkg LXF1aWV0IC1kdW1wYmFzZSBwbF9jb25maWcuYyAtbWFyY2g9cGVudGl1bXBybyAtbTMyIC1h dXhiYXNlIHBsX2NvbmZpZyAtdmVyc2lvbiAtZm5vLXN0cmljdC1hbGlhc2luZyAtbyBwbF9j b25maWcucwpHTlUgQzExIChHQ0MpIHZlcnNpb24gNi4xLjEgMjAxNjA2MjEgKFJlZCBIYXQg Ni4xLjEtMykgKGk2ODYtcmVkaGF0LWxpbnV4KQoJY29tcGlsZWQgYnkgR05VIEMgdmVyc2lv biA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEuMS0zKSwgR01QIHZlcnNpb24gNi4xLjAs IE1QRlIgdmVyc2lvbiAzLjEuNCwgTVBDIHZlcnNpb24gMS4wLjIsIGlzbCB2ZXJzaW9uIDAu MTQgb3IgMC4xMwp3YXJuaW5nOiBHTVAgaGVhZGVyIHZlcnNpb24gNi4xLjAgZGlmZmVycyBm cm9tIGxpYnJhcnkgdmVyc2lvbiA2LjEuMS4KR0dDIGhldXJpc3RpY3M6IC0tcGFyYW0gZ2dj LW1pbi1leHBhbmQ9MTAwIC0tcGFyYW0gZ2djLW1pbi1oZWFwc2l6ZT0xMzEwNzIKR05VIEMx MSAoR0NDKSB2ZXJzaW9uIDYuMS4xIDIwMTYwNjIxIChSZWQgSGF0IDYuMS4xLTMpIChpNjg2 LXJlZGhhdC1saW51eCkKCWNvbXBpbGVkIGJ5IEdOVSBDIHZlcnNpb24gNi4xLjEgMjAxNjA2 MjEgKFJlZCBIYXQgNi4xLjEtMyksIEdNUCB2ZXJzaW9uIDYuMS4wLCBNUEZSIHZlcnNpb24g My4xLjQsIE1QQyB2ZXJzaW9uIDEuMC4yLCBpc2wgdmVyc2lvbiAwLjE0IG9yIDAuMTMKd2Fy bmluZzogR01QIGhlYWRlciB2ZXJzaW9uIDYuMS4wIGRpZmZlcnMgZnJvbSBsaWJyYXJ5IHZl cnNpb24gNi4xLjEuCkdHQyBoZXVyaXN0aWNzOiAtLXBhcmFtIGdnYy1taW4tZXhwYW5kPTEw MCAtLXBhcmFtIGdnYy1taW4taGVhcHNpemU9MTMxMDcyCkNvbXBpbGVyIGV4ZWN1dGFibGUg Y2hlY2tzdW06IGFiY2ViMTM4YWY0M2E3OGMzNmMxYWFhMjI4ZjVmOTJhCkNPTExFQ1RfR0ND X09QVElPTlM9Jy1tYXJjaD1wZW50aXVtcHJvJyAnLW0zMicgJy1mbm8tc3RyaWN0LWFsaWFz aW5nJyAnLXYnICctc2F2ZS10ZW1wcycgJy1vJyAncGxfY29uZmlnJwogYXMgLXYgLS0zMiAt byBwbF9jb25maWcubyBwbF9jb25maWcucwpHTlUgYXNzZW1ibGVyIHZlcnNpb24gMi4yNi4x IChpNjg2LXJlZGhhdC1saW51eCkgdXNpbmcgQkZEIHZlcnNpb24gdmVyc2lvbiAyLjI2LjEt MS5mYzI0CkNPTVBJTEVSX1BBVEg9L3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51 eC82LjEuMS86L3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS86L3Vz ci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC86L3Vzci9saWIvZ2NjL2k2ODYtcmVk aGF0LWxpbnV4LzYuMS4xLzovdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvCkxJQlJB UllfUEFUSD0vdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvOi91c3IvbGli L2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS8uLi8uLi8uLi86L2xpYi86L3Vzci9saWIv CkNPTExFQ1RfR0NDX09QVElPTlM9Jy1tYXJjaD1wZW50aXVtcHJvJyAnLW0zMicgJy1mbm8t c3RyaWN0LWFsaWFzaW5nJyAnLXYnICctc2F2ZS10ZW1wcycgJy1vJyAncGxfY29uZmlnJwog L3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9jb2xsZWN0MiAtcGx1 Z2luIC91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvbGlibHRvX3Bs dWdpbi5zbyAtcGx1Z2luLW9wdD0vdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4 LzYuMS4xL2x0by13cmFwcGVyIC1wbHVnaW4tb3B0PS1mcmVzb2x1dGlvbj1wbF9jb25maWcu cmVzIC1wbHVnaW4tb3B0PS1wYXNzLXRocm91Z2g9LWxnY2MgLXBsdWdpbi1vcHQ9LXBhc3Mt dGhyb3VnaD0tbGdjY19zIC1wbHVnaW4tb3B0PS1wYXNzLXRocm91Z2g9LWxjIC1wbHVnaW4t b3B0PS1wYXNzLXRocm91Z2g9LWxnY2MgLXBsdWdpbi1vcHQ9LXBhc3MtdGhyb3VnaD0tbGdj Y19zIC0tYnVpbGQtaWQgLS1uby1hZGQtbmVlZGVkIC0tZWgtZnJhbWUtaGRyIC0taGFzaC1z dHlsZT1nbnUgLW0gZWxmX2kzODYgLWR5bmFtaWMtbGlua2VyIC9saWIvbGQtbGludXguc28u MiAtbyBwbF9jb25maWcgL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xLy4u Ly4uLy4uL2NydDEubyAvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4v Li4vLi4vY3J0aS5vIC91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9jcnRi ZWdpbi5vIC1ML3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xIC1ML3Vzci9s aWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xLy4uLy4uLy4uIHBsX2NvbmZpZy5vIC1s Z2NjIC0tYXMtbmVlZGVkIC1sZ2NjX3MgLS1uby1hcy1uZWVkZWQgLWxjIC1sZ2NjIC0tYXMt bmVlZGVkIC1sZ2NjX3MgLS1uby1hcy1uZWVkZWQgL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0 LWxpbnV4LzYuMS4xL2NydGVuZC5vIC91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82 LjEuMS8uLi8uLi8uLi9jcnRuLm8KQ09MTEVDVF9HQ0NfT1BUSU9OUz0nLW1hcmNoPXBlbnRp dW1wcm8nICctbTMyJyAnLWZuby1zdHJpY3QtYWxpYXNpbmcnICctdicgJy1zYXZlLXRlbXBz JyAnLW8nICdwbF9jb25maWcnCi4vcGxfY29uZmlnCgoJLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQoJLS0tIEdOVSBQUk9MT0cgSU5TVEFMTEFUSU9OIC0tLQoJLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKR05VIFByb2xvZyB2ZXJzaW9uOiAxLjQuNCAoQXVn IDE4IDIwMTYpCk9wZXJhdGluZyBzeXN0ZW0gIDogbGludXgtZ251ClByb2Nlc3NvciAgICAg ICAgIDogaTY4NgpTaXplIG9mIGEgV0FNIHdvcmQ6IDMyIGJpdHMKQyBjb21waWxlciAgICAg ICAgOiBnY2MKQyBmbGFncyAgICAgICAgICAgOiAtdiAtc2F2ZS10ZW1wcwpDIGZsYWdzIG1h Y2hpbmUgICA6IC1tYXJjaD1wZW50aXVtcHJvIC1tMzIgLWZuby1zdHJpY3QtYWxpYXNpbmcK QXNzZW1ibGVyICAgICAgICAgOiBhcwpBc3NlbWJsZXIgZmxhZ3MgICA6IC0tMzIKTG9hZGVy IGZsYWdzICAgICAgOiAKTG9hZGVyIGxpYnJhcmllcyAgOiAtbG0KVXNlIGxpbmUgZWRpdG9y ICAgOiBZZXMKVXNlIHBpcGVkIGNvbnN1bHQgOiBZZXMKVXNlIHNvY2tldHMgICAgICAgOiBZ ZXMKVXNlIEZEIHNvbHZlciAgICAgOiBZZXMKVXNlIGZhc3QgY2FsbCAgICAgOiBZZXMKVXNl IG1hY2hpbmUgcmVncy4gOiBZZXMKVXNlZCByZWdpc3RlcihzKSAgOiBlYnggKFRSKSAgCgoJ LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgooY2QgLi4vVG9wQ29tcDsgbWFrZSBn cGxjKQptYWtlWzJdOiBFbnRlcmluZyBkaXJlY3RvcnkgJy9ob21lL3RpbGwvcnBtYnVpbGQv U09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9Ub3BDb21wJwpnY2MgLW1hcmNoPXBlbnRpdW1w cm8gLW0zMiAtZm5vLXN0cmljdC1hbGlhc2luZyAtdiAtc2F2ZS10ZW1wcyAtbyBncGxjIHRv cF9jb21wLmMgLWxtClVzaW5nIGJ1aWx0LWluIHNwZWNzLgpDT0xMRUNUX0dDQz1nY2MKQ09M TEVDVF9MVE9fV1JBUFBFUj0vdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYu MS4xL2x0by13cmFwcGVyClRhcmdldDogaTY4Ni1yZWRoYXQtbGludXgKQ29uZmlndXJlZCB3 aXRoOiAuLi9jb25maWd1cmUgLS1lbmFibGUtYm9vdHN0cmFwIC0tZW5hYmxlLWxhbmd1YWdl cz1jLGMrKyxvYmpjLG9iai1jKyssZm9ydHJhbixhZGEsZ28sbHRvIC0tcHJlZml4PS91c3Ig LS1tYW5kaXI9L3Vzci9zaGFyZS9tYW4gLS1pbmZvZGlyPS91c3Ivc2hhcmUvaW5mbyAtLXdp dGgtYnVndXJsPWh0dHA6Ly9idWd6aWxsYS5yZWRoYXQuY29tL2J1Z3ppbGxhIC0tZW5hYmxl LXNoYXJlZCAtLWVuYWJsZS10aHJlYWRzPXBvc2l4IC0tZW5hYmxlLWNoZWNraW5nPXJlbGVh c2UgLS1lbmFibGUtbXVsdGlsaWIgLS13aXRoLXN5c3RlbS16bGliIC0tZW5hYmxlLV9fY3hh X2F0ZXhpdCAtLWRpc2FibGUtbGlidW53aW5kLWV4Y2VwdGlvbnMgLS1lbmFibGUtZ251LXVu aXF1ZS1vYmplY3QgLS1lbmFibGUtbGlua2VyLWJ1aWxkLWlkIC0td2l0aC1saW5rZXItaGFz aC1zdHlsZT1nbnUgLS1lbmFibGUtcGx1Z2luIC0tZW5hYmxlLWluaXRmaW5pLWFycmF5IC0t ZGlzYWJsZS1saWJnY2ogLS13aXRoLWlzbCAtLWVuYWJsZS1saWJtcHggLS1lbmFibGUtZ251 LWluZGlyZWN0LWZ1bmN0aW9uIC0td2l0aC10dW5lPWdlbmVyaWMgLS13aXRoLWFyY2g9aTY4 NiAtLWJ1aWxkPWk2ODYtcmVkaGF0LWxpbnV4ClRocmVhZCBtb2RlbDogcG9zaXgKZ2NjIHZl cnNpb24gNi4xLjEgMjAxNjA2MjEgKFJlZCBIYXQgNi4xLjEtMykgKEdDQykgCkNPTExFQ1Rf R0NDX09QVElPTlM9Jy1tYXJjaD1wZW50aXVtcHJvJyAnLW0zMicgJy1mbm8tc3RyaWN0LWFs aWFzaW5nJyAnLXYnICctc2F2ZS10ZW1wcycgJy1vJyAnZ3BsYycKIC91c3IvbGliZXhlYy9n Y2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvY2MxIC1FIC1xdWlldCAtdiB0b3BfY29tcC5j IC1tYXJjaD1wZW50aXVtcHJvIC1tMzIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZwY2gtcHJl cHJvY2VzcyAtbyB0b3BfY29tcC5pCmlnbm9yaW5nIG5vbmV4aXN0ZW50IGRpcmVjdG9yeSAi L3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUtZml4ZWQiCmln bm9yaW5nIG5vbmV4aXN0ZW50IGRpcmVjdG9yeSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0 LWxpbnV4LzYuMS4xLy4uLy4uLy4uLy4uL2k2ODYtcmVkaGF0LWxpbnV4L2luY2x1ZGUiCiNp bmNsdWRlICIuLi4iIHNlYXJjaCBzdGFydHMgaGVyZToKI2luY2x1ZGUgPC4uLj4gc2VhcmNo IHN0YXJ0cyBoZXJlOgogL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2lu Y2x1ZGUKIC91c3IvbG9jYWwvaW5jbHVkZQogL3Vzci9pbmNsdWRlCkVuZCBvZiBzZWFyY2gg bGlzdC4KQ09MTEVDVF9HQ0NfT1BUSU9OUz0nLW1hcmNoPXBlbnRpdW1wcm8nICctbTMyJyAn LWZuby1zdHJpY3QtYWxpYXNpbmcnICctdicgJy1zYXZlLXRlbXBzJyAnLW8nICdncGxjJwog L3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9jYzEgLWZwcmVwcm9j ZXNzZWQgdG9wX2NvbXAuaSAtcXVpZXQgLWR1bXBiYXNlIHRvcF9jb21wLmMgLW1hcmNoPXBl bnRpdW1wcm8gLW0zMiAtYXV4YmFzZSB0b3BfY29tcCAtdmVyc2lvbiAtZm5vLXN0cmljdC1h bGlhc2luZyAtbyB0b3BfY29tcC5zCkdOVSBDMTEgKEdDQykgdmVyc2lvbiA2LjEuMSAyMDE2 MDYyMSAoUmVkIEhhdCA2LjEuMS0zKSAoaTY4Ni1yZWRoYXQtbGludXgpCgljb21waWxlZCBi eSBHTlUgQyB2ZXJzaW9uIDYuMS4xIDIwMTYwNjIxIChSZWQgSGF0IDYuMS4xLTMpLCBHTVAg dmVyc2lvbiA2LjEuMCwgTVBGUiB2ZXJzaW9uIDMuMS40LCBNUEMgdmVyc2lvbiAxLjAuMiwg aXNsIHZlcnNpb24gMC4xNCBvciAwLjEzCndhcm5pbmc6IEdNUCBoZWFkZXIgdmVyc2lvbiA2 LjEuMCBkaWZmZXJzIGZyb20gbGlicmFyeSB2ZXJzaW9uIDYuMS4xLgpHR0MgaGV1cmlzdGlj czogLS1wYXJhbSBnZ2MtbWluLWV4cGFuZD0xMDAgLS1wYXJhbSBnZ2MtbWluLWhlYXBzaXpl PTEzMTA3MgpHTlUgQzExIChHQ0MpIHZlcnNpb24gNi4xLjEgMjAxNjA2MjEgKFJlZCBIYXQg Ni4xLjEtMykgKGk2ODYtcmVkaGF0LWxpbnV4KQoJY29tcGlsZWQgYnkgR05VIEMgdmVyc2lv biA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEuMS0zKSwgR01QIHZlcnNpb24gNi4xLjAs IE1QRlIgdmVyc2lvbiAzLjEuNCwgTVBDIHZlcnNpb24gMS4wLjIsIGlzbCB2ZXJzaW9uIDAu MTQgb3IgMC4xMwp3YXJuaW5nOiBHTVAgaGVhZGVyIHZlcnNpb24gNi4xLjAgZGlmZmVycyBm cm9tIGxpYnJhcnkgdmVyc2lvbiA2LjEuMS4KR0dDIGhldXJpc3RpY3M6IC0tcGFyYW0gZ2dj LW1pbi1leHBhbmQ9MTAwIC0tcGFyYW0gZ2djLW1pbi1oZWFwc2l6ZT0xMzEwNzIKQ29tcGls ZXIgZXhlY3V0YWJsZSBjaGVja3N1bTogYWJjZWIxMzhhZjQzYTc4YzM2YzFhYWEyMjhmNWY5 MmEKQ09MTEVDVF9HQ0NfT1BUSU9OUz0nLW1hcmNoPXBlbnRpdW1wcm8nICctbTMyJyAnLWZu by1zdHJpY3QtYWxpYXNpbmcnICctdicgJy1zYXZlLXRlbXBzJyAnLW8nICdncGxjJwogYXMg LXYgLS0zMiAtbyB0b3BfY29tcC5vIHRvcF9jb21wLnMKR05VIGFzc2VtYmxlciB2ZXJzaW9u IDIuMjYuMSAoaTY4Ni1yZWRoYXQtbGludXgpIHVzaW5nIEJGRCB2ZXJzaW9uIHZlcnNpb24g Mi4yNi4xLTEuZmMyNApDT01QSUxFUl9QQVRIPS91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRo YXQtbGludXgvNi4xLjEvOi91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4x LjEvOi91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGludXgvOi91c3IvbGliL2djYy9p Njg2LXJlZGhhdC1saW51eC82LjEuMS86L3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4 LwpMSUJSQVJZX1BBVEg9L3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xLzov dXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4vLi4vOi9saWIvOi91 c3IvbGliLwpDT0xMRUNUX0dDQ19PUFRJT05TPSctbWFyY2g9cGVudGl1bXBybycgJy1tMzIn ICctZm5vLXN0cmljdC1hbGlhc2luZycgJy12JyAnLXNhdmUtdGVtcHMnICctbycgJ2dwbGMn CiAvdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2NvbGxlY3QyIC1w bHVnaW4gL3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9saWJsdG9f cGx1Z2luLnNvIC1wbHVnaW4tb3B0PS91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGlu dXgvNi4xLjEvbHRvLXdyYXBwZXIgLXBsdWdpbi1vcHQ9LWZyZXNvbHV0aW9uPXRvcF9jb21w LnJlcyAtcGx1Z2luLW9wdD0tcGFzcy10aHJvdWdoPS1sZ2NjIC1wbHVnaW4tb3B0PS1wYXNz LXRocm91Z2g9LWxnY2NfcyAtcGx1Z2luLW9wdD0tcGFzcy10aHJvdWdoPS1sYyAtcGx1Z2lu LW9wdD0tcGFzcy10aHJvdWdoPS1sZ2NjIC1wbHVnaW4tb3B0PS1wYXNzLXRocm91Z2g9LWxn Y2NfcyAtLWJ1aWxkLWlkIC0tbm8tYWRkLW5lZWRlZCAtLWVoLWZyYW1lLWhkciAtLWhhc2gt c3R5bGU9Z251IC1tIGVsZl9pMzg2IC1keW5hbWljLWxpbmtlciAvbGliL2xkLWxpbnV4LnNv LjIgLW8gZ3BsYyAvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4v Li4vY3J0MS5vIC91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS8uLi8uLi8u Li9jcnRpLm8gL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2NydGJlZ2lu Lm8gLUwvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEgLUwvdXNyL2xpYi9n Y2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4vLi4gdG9wX2NvbXAubyAtbG0gLWxn Y2MgLS1hcy1uZWVkZWQgLWxnY2NfcyAtLW5vLWFzLW5lZWRlZCAtbGMgLWxnY2MgLS1hcy1u ZWVkZWQgLWxnY2NfcyAtLW5vLWFzLW5lZWRlZCAvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQt bGludXgvNi4xLjEvY3J0ZW5kLm8gL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYu MS4xLy4uLy4uLy4uL2NydG4ubwpDT0xMRUNUX0dDQ19PUFRJT05TPSctbWFyY2g9cGVudGl1 bXBybycgJy1tMzInICctZm5vLXN0cmljdC1hbGlhc2luZycgJy12JyAnLXNhdmUtdGVtcHMn ICctbycgJ2dwbGMnCm1ha2VbMl06IExlYXZpbmcgZGlyZWN0b3J5ICcvaG9tZS90aWxsL3Jw bWJ1aWxkL1NPVVJDRVMvZ3Byb2xvZy0xLjQuNC9zcmMvVG9wQ29tcCcKbWFrZVsxXTogTGVh dmluZyBkaXJlY3RvcnkgJy9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEu NC40L3NyYy9FbmdpbmVQbCcKLiAuL1NFVFZBUlM7Zm9yIGkgaW4gRW5naW5lUGwgVG9wQ29t cCBXYW0yTWEgTWEyQXNtIExpbmVkaXQgQmlwc1BsIFBsMldhbSBGZDJDIEVuZ2luZUZEIEJp cHNGRDtkbyAoY2QgJGk7IG1ha2UpIHx8IGV4aXQgMTsgZG9uZTtcCihjZCBUb3BDb21wOyBt YWtlIHRvcC1sZXZlbCkgfHwgZXhpdCAxO1wKKGNkIFBsMldhbTsgbWFrZSBzdGFnZTIpCm1h a2VbMV06IEVudGVyaW5nIGRpcmVjdG9yeSAnL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VT L2dwcm9sb2ctMS40LjQvc3JjL0VuZ2luZVBsJwpnY2MgLW1hcmNoPXBlbnRpdW1wcm8gLW0z MiAtZm5vLXN0cmljdC1hbGlhc2luZyAtdiAtc2F2ZS10ZW1wcyAgLW8gY3BwX2hlYWRlcnMg Y3BwX2hlYWRlcnMuYwpVc2luZyBidWlsdC1pbiBzcGVjcy4KQ09MTEVDVF9HQ0M9Z2NjCkNP TExFQ1RfTFRPX1dSQVBQRVI9L3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82 LjEuMS9sdG8td3JhcHBlcgpUYXJnZXQ6IGk2ODYtcmVkaGF0LWxpbnV4CkNvbmZpZ3VyZWQg d2l0aDogLi4vY29uZmlndXJlIC0tZW5hYmxlLWJvb3RzdHJhcCAtLWVuYWJsZS1sYW5ndWFn ZXM9YyxjKyssb2JqYyxvYmotYysrLGZvcnRyYW4sYWRhLGdvLGx0byAtLXByZWZpeD0vdXNy IC0tbWFuZGlyPS91c3Ivc2hhcmUvbWFuIC0taW5mb2Rpcj0vdXNyL3NoYXJlL2luZm8gLS13 aXRoLWJ1Z3VybD1odHRwOi8vYnVnemlsbGEucmVkaGF0LmNvbS9idWd6aWxsYSAtLWVuYWJs ZS1zaGFyZWQgLS1lbmFibGUtdGhyZWFkcz1wb3NpeCAtLWVuYWJsZS1jaGVja2luZz1yZWxl YXNlIC0tZW5hYmxlLW11bHRpbGliIC0td2l0aC1zeXN0ZW0temxpYiAtLWVuYWJsZS1fX2N4 YV9hdGV4aXQgLS1kaXNhYmxlLWxpYnVud2luZC1leGNlcHRpb25zIC0tZW5hYmxlLWdudS11 bmlxdWUtb2JqZWN0IC0tZW5hYmxlLWxpbmtlci1idWlsZC1pZCAtLXdpdGgtbGlua2VyLWhh c2gtc3R5bGU9Z251IC0tZW5hYmxlLXBsdWdpbiAtLWVuYWJsZS1pbml0ZmluaS1hcnJheSAt LWRpc2FibGUtbGliZ2NqIC0td2l0aC1pc2wgLS1lbmFibGUtbGlibXB4IC0tZW5hYmxlLWdu dS1pbmRpcmVjdC1mdW5jdGlvbiAtLXdpdGgtdHVuZT1nZW5lcmljIC0td2l0aC1hcmNoPWk2 ODYgLS1idWlsZD1pNjg2LXJlZGhhdC1saW51eApUaHJlYWQgbW9kZWw6IHBvc2l4CmdjYyB2 ZXJzaW9uIDYuMS4xIDIwMTYwNjIxIChSZWQgSGF0IDYuMS4xLTMpIChHQ0MpIApDT0xMRUNU X0dDQ19PUFRJT05TPSctbWFyY2g9cGVudGl1bXBybycgJy1tMzInICctZm5vLXN0cmljdC1h bGlhc2luZycgJy12JyAnLXNhdmUtdGVtcHMnICctbycgJ2NwcF9oZWFkZXJzJwogL3Vzci9s aWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9jYzEgLUUgLXF1aWV0IC12IGNw cF9oZWFkZXJzLmMgLW1hcmNoPXBlbnRpdW1wcm8gLW0zMiAtZm5vLXN0cmljdC1hbGlhc2lu ZyAtZnBjaC1wcmVwcm9jZXNzIC1vIGNwcF9oZWFkZXJzLmkKaWdub3Jpbmcgbm9uZXhpc3Rl bnQgZGlyZWN0b3J5ICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5j bHVkZS1maXhlZCIKaWdub3Jpbmcgbm9uZXhpc3RlbnQgZGlyZWN0b3J5ICIvdXNyL2xpYi9n Y2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4vLi4vLi4vaTY4Ni1yZWRoYXQtbGlu dXgvaW5jbHVkZSIKI2luY2x1ZGUgIi4uLiIgc2VhcmNoIHN0YXJ0cyBoZXJlOgojaW5jbHVk ZSA8Li4uPiBzZWFyY2ggc3RhcnRzIGhlcmU6CiAvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQt bGludXgvNi4xLjEvaW5jbHVkZQogL3Vzci9sb2NhbC9pbmNsdWRlCiAvdXNyL2luY2x1ZGUK RW5kIG9mIHNlYXJjaCBsaXN0LgpDT0xMRUNUX0dDQ19PUFRJT05TPSctbWFyY2g9cGVudGl1 bXBybycgJy1tMzInICctZm5vLXN0cmljdC1hbGlhc2luZycgJy12JyAnLXNhdmUtdGVtcHMn ICctbycgJ2NwcF9oZWFkZXJzJwogL3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51 eC82LjEuMS9jYzEgLWZwcmVwcm9jZXNzZWQgY3BwX2hlYWRlcnMuaSAtcXVpZXQgLWR1bXBi YXNlIGNwcF9oZWFkZXJzLmMgLW1hcmNoPXBlbnRpdW1wcm8gLW0zMiAtYXV4YmFzZSBjcHBf aGVhZGVycyAtdmVyc2lvbiAtZm5vLXN0cmljdC1hbGlhc2luZyAtbyBjcHBfaGVhZGVycy5z CkdOVSBDMTEgKEdDQykgdmVyc2lvbiA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEuMS0z KSAoaTY4Ni1yZWRoYXQtbGludXgpCgljb21waWxlZCBieSBHTlUgQyB2ZXJzaW9uIDYuMS4x IDIwMTYwNjIxIChSZWQgSGF0IDYuMS4xLTMpLCBHTVAgdmVyc2lvbiA2LjEuMCwgTVBGUiB2 ZXJzaW9uIDMuMS40LCBNUEMgdmVyc2lvbiAxLjAuMiwgaXNsIHZlcnNpb24gMC4xNCBvciAw LjEzCndhcm5pbmc6IEdNUCBoZWFkZXIgdmVyc2lvbiA2LjEuMCBkaWZmZXJzIGZyb20gbGli cmFyeSB2ZXJzaW9uIDYuMS4xLgpHR0MgaGV1cmlzdGljczogLS1wYXJhbSBnZ2MtbWluLWV4 cGFuZD0xMDAgLS1wYXJhbSBnZ2MtbWluLWhlYXBzaXplPTEzMTA3MgpHTlUgQzExIChHQ0Mp IHZlcnNpb24gNi4xLjEgMjAxNjA2MjEgKFJlZCBIYXQgNi4xLjEtMykgKGk2ODYtcmVkaGF0 LWxpbnV4KQoJY29tcGlsZWQgYnkgR05VIEMgdmVyc2lvbiA2LjEuMSAyMDE2MDYyMSAoUmVk IEhhdCA2LjEuMS0zKSwgR01QIHZlcnNpb24gNi4xLjAsIE1QRlIgdmVyc2lvbiAzLjEuNCwg TVBDIHZlcnNpb24gMS4wLjIsIGlzbCB2ZXJzaW9uIDAuMTQgb3IgMC4xMwp3YXJuaW5nOiBH TVAgaGVhZGVyIHZlcnNpb24gNi4xLjAgZGlmZmVycyBmcm9tIGxpYnJhcnkgdmVyc2lvbiA2 LjEuMS4KR0dDIGhldXJpc3RpY3M6IC0tcGFyYW0gZ2djLW1pbi1leHBhbmQ9MTAwIC0tcGFy YW0gZ2djLW1pbi1oZWFwc2l6ZT0xMzEwNzIKQ29tcGlsZXIgZXhlY3V0YWJsZSBjaGVja3N1 bTogYWJjZWIxMzhhZjQzYTc4YzM2YzFhYWEyMjhmNWY5MmEKQ09MTEVDVF9HQ0NfT1BUSU9O Uz0nLW1hcmNoPXBlbnRpdW1wcm8nICctbTMyJyAnLWZuby1zdHJpY3QtYWxpYXNpbmcnICct dicgJy1zYXZlLXRlbXBzJyAnLW8nICdjcHBfaGVhZGVycycKIGFzIC12IC0tMzIgLW8gY3Bw X2hlYWRlcnMubyBjcHBfaGVhZGVycy5zCkdOVSBhc3NlbWJsZXIgdmVyc2lvbiAyLjI2LjEg KGk2ODYtcmVkaGF0LWxpbnV4KSB1c2luZyBCRkQgdmVyc2lvbiB2ZXJzaW9uIDIuMjYuMS0x LmZjMjQKQ09NUElMRVJfUEFUSD0vdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4 LzYuMS4xLzovdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xLzovdXNy L2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzovdXNyL2xpYi9nY2MvaTY4Ni1yZWRo YXQtbGludXgvNi4xLjEvOi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC8KTElCUkFS WV9QQVRIPS91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS86L3Vzci9saWIv Z2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xLy4uLy4uLy4uLzovbGliLzovdXNyL2xpYi8K Q09MTEVDVF9HQ0NfT1BUSU9OUz0nLW1hcmNoPXBlbnRpdW1wcm8nICctbTMyJyAnLWZuby1z dHJpY3QtYWxpYXNpbmcnICctdicgJy1zYXZlLXRlbXBzJyAnLW8nICdjcHBfaGVhZGVycycK IC91c3IvbGliZXhlYy9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvY29sbGVjdDIgLXBs dWdpbiAvdXNyL2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2xpYmx0b19w bHVnaW4uc28gLXBsdWdpbi1vcHQ9L3Vzci9saWJleGVjL2djYy9pNjg2LXJlZGhhdC1saW51 eC82LjEuMS9sdG8td3JhcHBlciAtcGx1Z2luLW9wdD0tZnJlc29sdXRpb249Y3BwX2hlYWRl cnMucmVzIC1wbHVnaW4tb3B0PS1wYXNzLXRocm91Z2g9LWxnY2MgLXBsdWdpbi1vcHQ9LXBh c3MtdGhyb3VnaD0tbGdjY19zIC1wbHVnaW4tb3B0PS1wYXNzLXRocm91Z2g9LWxjIC1wbHVn aW4tb3B0PS1wYXNzLXRocm91Z2g9LWxnY2MgLXBsdWdpbi1vcHQ9LXBhc3MtdGhyb3VnaD0t bGdjY19zIC0tYnVpbGQtaWQgLS1uby1hZGQtbmVlZGVkIC0tZWgtZnJhbWUtaGRyIC0taGFz aC1zdHlsZT1nbnUgLW0gZWxmX2kzODYgLWR5bmFtaWMtbGlua2VyIC9saWIvbGQtbGludXgu c28uMiAtbyBjcHBfaGVhZGVycyAvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4x LjEvLi4vLi4vLi4vY3J0MS5vIC91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEu MS8uLi8uLi8uLi9jcnRpLm8gL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4x L2NydGJlZ2luLm8gLUwvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEgLUwv dXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4vLi4gY3BwX2hlYWRl cnMubyAtbGdjYyAtLWFzLW5lZWRlZCAtbGdjY19zIC0tbm8tYXMtbmVlZGVkIC1sYyAtbGdj YyAtLWFzLW5lZWRlZCAtbGdjY19zIC0tbm8tYXMtbmVlZGVkIC91c3IvbGliL2djYy9pNjg2 LXJlZGhhdC1saW51eC82LjEuMS9jcnRlbmQubyAvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQt bGludXgvNi4xLjEvLi4vLi4vLi4vY3J0bi5vCkNPTExFQ1RfR0NDX09QVElPTlM9Jy1tYXJj aD1wZW50aXVtcHJvJyAnLW0zMicgJy1mbm8tc3RyaWN0LWFsaWFzaW5nJyAnLXYnICctc2F2 ZS10ZW1wcycgJy1vJyAnY3BwX2hlYWRlcnMnCmdwbGMgLWMgLUMgJy12IC1zYXZlLXRlbXBz JyBtYWNoaW5lLmMKVXNpbmcgYnVpbHQtaW4gc3BlY3MuCkNPTExFQ1RfR0NDPWdjYwpUYXJn ZXQ6IGk2ODYtcmVkaGF0LWxpbnV4CkNvbmZpZ3VyZWQgd2l0aDogLi4vY29uZmlndXJlIC0t ZW5hYmxlLWJvb3RzdHJhcCAtLWVuYWJsZS1sYW5ndWFnZXM9YyxjKyssb2JqYyxvYmotYysr LGZvcnRyYW4sYWRhLGdvLGx0byAtLXByZWZpeD0vdXNyIC0tbWFuZGlyPS91c3Ivc2hhcmUv bWFuIC0taW5mb2Rpcj0vdXNyL3NoYXJlL2luZm8gLS13aXRoLWJ1Z3VybD1odHRwOi8vYnVn emlsbGEucmVkaGF0LmNvbS9idWd6aWxsYSAtLWVuYWJsZS1zaGFyZWQgLS1lbmFibGUtdGhy ZWFkcz1wb3NpeCAtLWVuYWJsZS1jaGVja2luZz1yZWxlYXNlIC0tZW5hYmxlLW11bHRpbGli IC0td2l0aC1zeXN0ZW0temxpYiAtLWVuYWJsZS1fX2N4YV9hdGV4aXQgLS1kaXNhYmxlLWxp YnVud2luZC1leGNlcHRpb25zIC0tZW5hYmxlLWdudS11bmlxdWUtb2JqZWN0IC0tZW5hYmxl LWxpbmtlci1idWlsZC1pZCAtLXdpdGgtbGlua2VyLWhhc2gtc3R5bGU9Z251IC0tZW5hYmxl LXBsdWdpbiAtLWVuYWJsZS1pbml0ZmluaS1hcnJheSAtLWRpc2FibGUtbGliZ2NqIC0td2l0 aC1pc2wgLS1lbmFibGUtbGlibXB4IC0tZW5hYmxlLWdudS1pbmRpcmVjdC1mdW5jdGlvbiAt LXdpdGgtdHVuZT1nZW5lcmljIC0td2l0aC1hcmNoPWk2ODYgLS1idWlsZD1pNjg2LXJlZGhh dC1saW51eApUaHJlYWQgbW9kZWw6IHBvc2l4CmdjYyB2ZXJzaW9uIDYuMS4xIDIwMTYwNjIx IChSZWQgSGF0IDYuMS4xLTMpIChHQ0MpIApDT0xMRUNUX0dDQ19PUFRJT05TPSctdicgJy1z YXZlLXRlbXBzJyAnLW1hcmNoPXBlbnRpdW1wcm8nICctbTMyJyAnLWZuby1zdHJpY3QtYWxp YXNpbmcnICctZmZpeGVkLWVieCcgJy1jJyAnLUknICcvaG9tZS90aWxsL3JwbWJ1aWxkL1NP VVJDRVMvZ3Byb2xvZy0xLjQuNC9zcmMvRW5naW5lUGwnICctSScgJy9ob21lL3RpbGwvcnBt YnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9CaXBzUGwnICctSScgJy9ob21lL3Rp bGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9FbmdpbmVGRCcgJy1JJyAn L2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0JpcHNGRCcg Jy1JJyAnL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0xp bmVkaXQnICctSScgJy9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40 L3NyYy9XMzJHVUlDb25zJyAnLW8nICdtYWNoaW5lLm8nCiAvdXNyL2xpYmV4ZWMvZ2NjL2k2 ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2NjMSAtRSAtcXVpZXQgLXYgLUkgL2hvbWUvdGlsbC9y cG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0VuZ2luZVBsIC1JIC9ob21lL3Rp bGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9CaXBzUGwgLUkgL2hvbWUv dGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0VuZ2luZUZEIC1JIC9o b21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9CaXBzRkQgLUkg L2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0xpbmVkaXQg LUkgL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL1czMkdV SUNvbnMgbWFjaGluZS5jIC1tYXJjaD1wZW50aXVtcHJvIC1tMzIgLWZuby1zdHJpY3QtYWxp YXNpbmcgLWZmaXhlZC1lYnggLWZwY2gtcHJlcHJvY2VzcyAtbyBtYWNoaW5lLmkKaWdub3Jp bmcgbm9uZXhpc3RlbnQgZGlyZWN0b3J5ICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGlu dXgvNi4xLjEvaW5jbHVkZS1maXhlZCIKaWdub3Jpbmcgbm9uZXhpc3RlbnQgZGlyZWN0b3J5 ICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvLi4vLi4vLi4vLi4vaTY4 Ni1yZWRoYXQtbGludXgvaW5jbHVkZSIKI2luY2x1ZGUgIi4uLiIgc2VhcmNoIHN0YXJ0cyBo ZXJlOgojaW5jbHVkZSA8Li4uPiBzZWFyY2ggc3RhcnRzIGhlcmU6CiAvaG9tZS90aWxsL3Jw bWJ1aWxkL1NPVVJDRVMvZ3Byb2xvZy0xLjQuNC9zcmMvRW5naW5lUGwKIC9ob21lL3RpbGwv cnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9CaXBzUGwKIC9ob21lL3RpbGwv cnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9FbmdpbmVGRAogL2hvbWUvdGls bC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0JpcHNGRAogL2hvbWUvdGls bC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40LjQvc3JjL0xpbmVkaXQKIC9ob21lL3Rp bGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9XMzJHVUlDb25zCiAvdXNy L2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZQogL3Vzci9sb2NhbC9p bmNsdWRlCiAvdXNyL2luY2x1ZGUKRW5kIG9mIHNlYXJjaCBsaXN0LgpDT0xMRUNUX0dDQ19P UFRJT05TPSctdicgJy1zYXZlLXRlbXBzJyAnLW1hcmNoPXBlbnRpdW1wcm8nICctbTMyJyAn LWZuby1zdHJpY3QtYWxpYXNpbmcnICctZmZpeGVkLWVieCcgJy1jJyAnLUknICcvaG9tZS90 aWxsL3JwbWJ1aWxkL1NPVVJDRVMvZ3Byb2xvZy0xLjQuNC9zcmMvRW5naW5lUGwnICctSScg Jy9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9CaXBzUGwn ICctSScgJy9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNFUy9ncHJvbG9nLTEuNC40L3NyYy9F bmdpbmVGRCcgJy1JJyAnL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9sb2ctMS40 LjQvc3JjL0JpcHNGRCcgJy1JJyAnL2hvbWUvdGlsbC9ycG1idWlsZC9TT1VSQ0VTL2dwcm9s b2ctMS40LjQvc3JjL0xpbmVkaXQnICctSScgJy9ob21lL3RpbGwvcnBtYnVpbGQvU09VUkNF Uy9ncHJvbG9nLTEuNC40L3NyYy9XMzJHVUlDb25zJyAnLW8nICdtYWNoaW5lLm8nCiAvdXNy L2xpYmV4ZWMvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2NjMSAtZnByZXByb2Nlc3Nl ZCBtYWNoaW5lLmkgLXF1aWV0IC1kdW1wYmFzZSBtYWNoaW5lLmMgLW1hcmNoPXBlbnRpdW1w cm8gLW0zMiAtYXV4YmFzZS1zdHJpcCBtYWNoaW5lLm8gLXZlcnNpb24gLWZuby1zdHJpY3Qt YWxpYXNpbmcgLWZmaXhlZC1lYnggLW8gbWFjaGluZS5zCkdOVSBDMTEgKEdDQykgdmVyc2lv biA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEuMS0zKSAoaTY4Ni1yZWRoYXQtbGludXgp Cgljb21waWxlZCBieSBHTlUgQyB2ZXJzaW9uIDYuMS4xIDIwMTYwNjIxIChSZWQgSGF0IDYu MS4xLTMpLCBHTVAgdmVyc2lvbiA2LjEuMCwgTVBGUiB2ZXJzaW9uIDMuMS40LCBNUEMgdmVy c2lvbiAxLjAuMiwgaXNsIHZlcnNpb24gMC4xNCBvciAwLjEzCndhcm5pbmc6IEdNUCBoZWFk ZXIgdmVyc2lvbiA2LjEuMCBkaWZmZXJzIGZyb20gbGlicmFyeSB2ZXJzaW9uIDYuMS4xLgpH R0MgaGV1cmlzdGljczogLS1wYXJhbSBnZ2MtbWluLWV4cGFuZD0xMDAgLS1wYXJhbSBnZ2Mt bWluLWhlYXBzaXplPTEzMTA3MgpHTlUgQzExIChHQ0MpIHZlcnNpb24gNi4xLjEgMjAxNjA2 MjEgKFJlZCBIYXQgNi4xLjEtMykgKGk2ODYtcmVkaGF0LWxpbnV4KQoJY29tcGlsZWQgYnkg R05VIEMgdmVyc2lvbiA2LjEuMSAyMDE2MDYyMSAoUmVkIEhhdCA2LjEuMS0zKSwgR01QIHZl cnNpb24gNi4xLjAsIE1QRlIgdmVyc2lvbiAzLjEuNCwgTVBDIHZlcnNpb24gMS4wLjIsIGlz bCB2ZXJzaW9uIDAuMTQgb3IgMC4xMwp3YXJuaW5nOiBHTVAgaGVhZGVyIHZlcnNpb24gNi4x LjAgZGlmZmVycyBmcm9tIGxpYnJhcnkgdmVyc2lvbiA2LjEuMS4KR0dDIGhldXJpc3RpY3M6 IC0tcGFyYW0gZ2djLW1pbi1leHBhbmQ9MTAwIC0tcGFyYW0gZ2djLW1pbi1oZWFwc2l6ZT0x MzEwNzIKQ29tcGlsZXIgZXhlY3V0YWJsZSBjaGVja3N1bTogYWJjZWIxMzhhZjQzYTc4YzM2 YzFhYWEyMjhmNWY5MmEKbWFjaGluZS5jOiBJbiBmdW5jdGlvbiDigJhQbF9NX1JhbmRvbWl6 ZeKAmToKbWFjaGluZS5jOjM4NjoxOiBpbnRlcm5hbCBjb21waWxlciBlcnJvcjogU2VnbWVu dGF0aW9uIGZhdWx0CiB9CiBeClBsZWFzZSBzdWJtaXQgYSBmdWxsIGJ1ZyByZXBvcnQsCndp dGggcHJlcHJvY2Vzc2VkIHNvdXJjZSBpZiBhcHByb3ByaWF0ZS4KU2VlIDxodHRwOi8vYnVn emlsbGEucmVkaGF0LmNvbS9idWd6aWxsYT4gZm9yIGluc3RydWN0aW9ucy4KUHJlcHJvY2Vz c2VkIHNvdXJjZSBzdG9yZWQgaW50byAvdG1wL2NjY1hDQVdNLm91dCBmaWxlLCBwbGVhc2Ug YXR0YWNoIHRoaXMgdG8geW91ciBidWdyZXBvcnQuCmNvbXBpbGF0aW9uIGZhaWxlZApNYWtl ZmlsZTozMDogcmVjaXBlIGZvciB0YXJnZXQgJ21hY2hpbmUubycgZmFpbGVkCm1ha2VbMV06 ICoqKiBbbWFjaGluZS5vXSBFcnJvciAxCm1ha2VbMV06IExlYXZpbmcgZGlyZWN0b3J5ICcv aG9tZS90aWxsL3JwbWJ1aWxkL1NPVVJDRVMvZ3Byb2xvZy0xLjQuNC9zcmMvRW5naW5lUGwn Ck1ha2VmaWxlOjQ1OiByZWNpcGUgZm9yIHRhcmdldCAnYWxsJyBmYWlsZWQKbWFrZTogKioq IFthbGxdIEVycm9yIDEK --------------75FEE9681F67D3318494118F Content-Type: text/plain; charset=UTF-8; name="machine.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="machine.i" IyAxICJtYWNoaW5lLmMiCiMgMSAiPGJ1aWx0LWluPiIKIyAxICI8Y29tbWFuZC1saW5lPiIK IyAzMSAiPGNvbW1hbmQtbGluZT4iCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGMtcHJlZGVmLmgi IDEgMyA0CiMgMzIgIjxjb21tYW5kLWxpbmU+IiAyCiMgMSAibWFjaGluZS5jIgojIDM5ICJt YWNoaW5lLmMiCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDEgMyA0CiMgMjcgIi91c3Iv aW5jbHVkZS9zdGRpby5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAz IDQKIyAzNjggIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzIDQKIyAxICIvdXNyL2luY2x1 ZGUvc3lzL2NkZWZzLmgiIDEgMyA0CiMgNDEwICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgi IDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEgMyA0CiMgNDExICIv dXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDIgMyA0CiMgMzY5ICIvdXNyL2luY2x1ZGUvZmVh dHVyZXMuaCIgMiAzIDQKIyAzOTIgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzIDQKIyAx ICIvdXNyL2luY2x1ZGUvZ251L3N0dWJzLmgiIDEgMyA0CgoKCgoKCiMgMSAiL3Vzci9pbmNs dWRlL2dudS9zdHVicy0zMi5oIiAxIDMgNAojIDggIi91c3IvaW5jbHVkZS9nbnUvc3R1YnMu aCIgMiAzIDQKIyAzOTMgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMgNAojIDI4ICIv dXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKCgoKCgojIDEgIi91c3IvbGliL2djYy9pNjg2 LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDIxNiAiL3Vz ci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUvc3RkZGVmLmgiIDMg NAoKIyAyMTYgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRl L3N0ZGRlZi5oIiAzIDQKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDM0ICIvdXNy L2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMu aCIgMSAzIDQKIyAyNyAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMyA0CiMgMSAiL3Vz ci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMSAzIDQKIyAyOCAiL3Vzci9pbmNsdWRlL2Jp dHMvdHlwZXMuaCIgMiAzIDQKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191X2NoYXI7CnR5 cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBp bnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX3VfbG9uZzsKCgp0eXBl ZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50 OF90Owp0eXBlZGVmIHNpZ25lZCBzaG9ydCBpbnQgX19pbnQxNl90Owp0eXBlZGVmIHVuc2ln bmVkIHNob3J0IGludCBfX3VpbnQxNl90Owp0eXBlZGVmIHNpZ25lZCBpbnQgX19pbnQzMl90 Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQzMl90OwoKCgoKX19leHRlbnNpb25fXyB0 eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRfdDsKX19leHRlbnNpb25fXyB0 eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRfdDsKCgoKCgoKCl9fZXh0 ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwpfX2V4dGVuc2lvbl9f IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VfcXVhZF90OwojIDEyMSAiL3Vz ci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlw ZXNpemVzLmgiIDEgMyA0CiMgMTIyICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMg NAoKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7Cl9fZXh0ZW5z aW9uX18gdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191aWRfdDsKX19leHRlbnNpb25fXyB0eXBl ZGVmIHVuc2lnbmVkIGludCBfX2dpZF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWdu ZWQgbG9uZyBpbnQgX19pbm9fdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIF9fdV9xdWFkX3Qg X19pbm82NF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgaW50IF9fbW9kZV90 OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgaW50IF9fbmxpbmtfdDsKX19leHRl bnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRl ZiBfX3F1YWRfdCBfX29mZjY0X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBpbnQgX19waWRf dDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHN0cnVjdCB7IGludCBfX3ZhbFsyXTsgfSBfX2Zz aWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fY2xvY2tfdDsKX19leHRl bnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fcmxpbV90OwpfX2V4dGVuc2lv bl9fIHR5cGVkZWYgX191X3F1YWRfdCBfX3JsaW02NF90OwpfX2V4dGVuc2lvbl9fIHR5cGVk ZWYgdW5zaWduZWQgaW50IF9faWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50 IF9fdGltZV90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgaW50IF9fdXNlY29u ZHNfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7Cgpf X2V4dGVuc2lvbl9fIHR5cGVkZWYgaW50IF9fZGFkZHJfdDsKX19leHRlbnNpb25fXyB0eXBl ZGVmIGludCBfX2tleV90OwoKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBpbnQgX19jbG9ja2lk X3Q7CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHZvaWQgKiBfX3RpbWVyX3Q7CgoKX19leHRl bnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKX19leHRlbnNpb25f XyB0eXBlZGVmIGxvbmcgaW50IF9fYmxrY250X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBf X3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVk IGxvbmcgaW50IF9fZnNibGtjbnRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIF9fdV9xdWFk X3QgX19mc2Jsa2NudDY0X3Q7CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxv bmcgaW50IF9fZnNmaWxjbnRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIF9fdV9xdWFkX3Qg X19mc2ZpbGNudDY0X3Q7CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIGludCBfX2Zzd29yZF90 OwoKX19leHRlbnNpb25fXyB0eXBlZGVmIGludCBfX3NzaXplX3Q7CgoKX19leHRlbnNpb25f XyB0eXBlZGVmIGxvbmcgaW50IF9fc3lzY2FsbF9zbG9uZ190OwoKX19leHRlbnNpb25fXyB0 eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fc3lzY2FsbF91bG9uZ190OwoKCgp0eXBlZGVm IF9fb2ZmNjRfdCBfX2xvZmZfdDsKdHlwZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90Owp0eXBl ZGVmIGNoYXIgKl9fY2FkZHJfdDsKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgaW50IF9faW50 cHRyX3Q7CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGludCBfX3NvY2tsZW5f dDsKIyAzNiAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CiMgNDQgIi91c3IvaW5jbHVk ZS9zdGRpby5oIiAzIDQKc3RydWN0IF9JT19GSUxFOwoKCgp0eXBlZGVmIHN0cnVjdCBfSU9f RklMRSBGSUxFOwoKCgoKCiMgNjQgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKdHlwZWRl ZiBzdHJ1Y3QgX0lPX0ZJTEUgX19GSUxFOwojIDc0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg MyA0CiMgMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDEgMyA0CiMgMzEgIi91c3IvaW5jbHVk ZS9saWJpby5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDEgMyA0CiMg MTUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMyA0CiMgMSAiL3Vzci9saWIvZ2NjL2k2 ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMTYgIi91 c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzIDQKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3dj aGFyLmgiIDEgMyA0CiMgODIgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzIDQKdHlwZWRlZiBz dHJ1Y3QKewogIGludCBfX2NvdW50OwogIHVuaW9uCiAgewoKICAgIHVuc2lnbmVkIGludCBf X3djaDsKCgoKICAgIGNoYXIgX193Y2hiWzRdOwogIH0gX192YWx1ZTsKfSBfX21ic3RhdGVf dDsKIyAyMSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMgNAp0eXBlZGVmIHN0cnVj dAp7CiAgX19vZmZfdCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3Nf dDsKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmNjRfdCBfX3BvczsKICBfX21ic3RhdGVfdCBf X3N0YXRlOwp9IF9HX2Zwb3M2NF90OwojIDMyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAz IDQKIyA0OSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNAojIDEgIi91c3IvbGliL2djYy9p Njg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMgNAojIDQwICIv dXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRhcmcuaCIg MyA0CnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMgNTAgIi91 c3IvaW5jbHVkZS9saWJpby5oIiAyIDMgNAojIDE0NCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgi IDMgNApzdHJ1Y3QgX0lPX2p1bXBfdDsgc3RydWN0IF9JT19GSUxFOwoKCgoKCnR5cGVkZWYg dm9pZCBfSU9fbG9ja190OwoKCgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lP X21hcmtlciAqX25leHQ7CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3Bv czsKIyAxNzMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKfTsKCgplbnVtIF9fY29kZWN2 dF9yZXN1bHQKewogIF9fY29kZWN2dF9vaywKICBfX2NvZGVjdnRfcGFydGlhbCwKICBfX2Nv ZGVjdnRfZXJyb3IsCiAgX19jb2RlY3Z0X25vY29udgp9OwojIDI0MSAiL3Vzci9pbmNsdWRl L2xpYmlvLmgiIDMgNApzdHJ1Y3QgX0lPX0ZJTEUgewogIGludCBfZmxhZ3M7CgoKCgogIGNo YXIqIF9JT19yZWFkX3B0cjsKICBjaGFyKiBfSU9fcmVhZF9lbmQ7CiAgY2hhciogX0lPX3Jl YWRfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfcHRy OwogIGNoYXIqIF9JT193cml0ZV9lbmQ7CiAgY2hhciogX0lPX2J1Zl9iYXNlOwogIGNoYXIq IF9JT19idWZfZW5kOwoKICBjaGFyICpfSU9fc2F2ZV9iYXNlOwogIGNoYXIgKl9JT19iYWNr dXBfYmFzZTsKICBjaGFyICpfSU9fc2F2ZV9lbmQ7CgogIHN0cnVjdCBfSU9fbWFya2VyICpf bWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47CgogIGludCBfZmlsZW5vOwoK CgogIGludCBfZmxhZ3MyOwoKICBfX29mZl90IF9vbGRfb2Zmc2V0OwoKCgogIHVuc2lnbmVk IHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0OwogIGNo YXIgX3Nob3J0YnVmWzFdOwoKCgogIF9JT19sb2NrX3QgKl9sb2NrOwojIDI4OSAiL3Vzci9p bmNsdWRlL2xpYmlvLmgiIDMgNAogIF9fb2ZmNjRfdCBfb2Zmc2V0OwoKCgoKCgoKICB2b2lk ICpfX3BhZDE7CiAgdm9pZCAqX19wYWQyOwogIHZvaWQgKl9fcGFkMzsKICB2b2lkICpfX3Bh ZDQ7CgogIHNpemVfdCBfX3BhZDU7CiAgaW50IF9tb2RlOwoKICBjaGFyIF91bnVzZWQyWzE1 ICogc2l6ZW9mIChpbnQpIC0gNCAqIHNpemVvZiAodm9pZCAqKSAtIHNpemVvZiAoc2l6ZV90 KV07Cgp9OwoKCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIF9JT19GSUxFOwoKCnN0cnVjdCBf SU9fRklMRV9wbHVzOwoKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3Rk aW5fOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRvdXRfOwpleHRl cm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRlcnJfOwojIDMzMyAiL3Vzci9p bmNsdWRlL2xpYmlvLmgiIDMgNAp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3JlYWRfZm4gKHZv aWQgKl9fY29va2llLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKTsKCgoKCgoKCnR5 cGVkZWYgX19zc2l6ZV90IF9faW9fd3JpdGVfZm4gKHZvaWQgKl9fY29va2llLCBjb25zdCBj aGFyICpfX2J1ZiwKICAgICBzaXplX3QgX19uKTsKCgoKCgoKCnR5cGVkZWYgaW50IF9faW9f c2Vla19mbiAodm9pZCAqX19jb29raWUsIF9fb2ZmNjRfdCAqX19wb3MsIGludCBfX3cpOwoK CnR5cGVkZWYgaW50IF9faW9fY2xvc2VfZm4gKHZvaWQgKl9fY29va2llKTsKIyAzODUgIi91 c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKZXh0ZXJuIGludCBfX3VuZGVyZmxvdyAoX0lPX0ZJ TEUgKik7CmV4dGVybiBpbnQgX191ZmxvdyAoX0lPX0ZJTEUgKik7CmV4dGVybiBpbnQgX19v dmVyZmxvdyAoX0lPX0ZJTEUgKiwgaW50KTsKIyA0MjkgIi91c3IvaW5jbHVkZS9saWJpby5o IiAzIDQKZXh0ZXJuIGludCBfSU9fZ2V0YyAoX0lPX0ZJTEUgKl9fZnApOwpleHRlcm4gaW50 IF9JT19wdXRjIChpbnQgX19jLCBfSU9fRklMRSAqX19mcCk7CmV4dGVybiBpbnQgX0lPX2Zl b2YgKF9JT19GSUxFICpfX2ZwKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwpleHRlcm4gaW50IF9JT19mZXJyb3IgKF9JT19GSUxFICpfX2ZwKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKZXh0ZXJuIGludCBfSU9fcGVl a2NfbG9ja2VkIChfSU9fRklMRSAqX19mcCk7CgoKCgoKZXh0ZXJuIHZvaWQgX0lPX2Zsb2Nr ZmlsZSAoX0lPX0ZJTEUgKikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKTsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxlIChfSU9fRklMRSAqKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwpleHRlcm4gaW50IF9JT19mdHJ5 bG9ja2ZpbGUgKF9JT19GSUxFICopIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSk7CiMgNDU5ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMyA0CmV4dGVybiBpbnQg X0lPX3Zmc2NhbmYgKF9JT19GSUxFICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVz dHJpY3QsCiAgIF9fZ251Y192YV9saXN0LCBpbnQgKl9fcmVzdHJpY3QpOwpleHRlcm4gaW50 IF9JT192ZnByaW50ZiAoX0lPX0ZJTEUgKl9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKl9fcmVz dHJpY3QsCiAgICBfX2dudWNfdmFfbGlzdCk7CmV4dGVybiBfX3NzaXplX3QgX0lPX3BhZG4g KF9JT19GSUxFICosIGludCwgX19zc2l6ZV90KTsKZXh0ZXJuIHNpemVfdCBfSU9fc2dldG4g KF9JT19GSUxFICosIHZvaWQgKiwgc2l6ZV90KTsKCmV4dGVybiBfX29mZjY0X3QgX0lPX3Nl ZWtvZmYgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50LCBpbnQpOwpleHRlcm4gX19vZmY2 NF90IF9JT19zZWVrcG9zIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCk7CgpleHRlcm4g dm9pZCBfSU9fZnJlZV9iYWNrdXBfYXJlYSAoX0lPX0ZJTEUgKikgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKIyA3NSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi IDIgMyA0CgoKCgp0eXBlZGVmIF9fZ251Y192YV9saXN0IHZhX2xpc3Q7CiMgOTAgIi91c3Iv aW5jbHVkZS9zdGRpby5oIiAzIDQKdHlwZWRlZiBfX29mZl90IG9mZl90OwojIDEwMiAiL3Vz ci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAp0eXBlZGVmIF9fc3NpemVfdCBzc2l6ZV90OwoKCgoK CgoKdHlwZWRlZiBfR19mcG9zX3QgZnBvc190OwoKCgoKIyAxNjQgIi91c3IvaW5jbHVkZS9z dGRpby5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpb19saW0uaCIgMSAzIDQK IyAxNjUgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAoKCgpleHRlcm4gc3RydWN0IF9J T19GSUxFICpzdGRpbjsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRSAqc3Rkb3V0OwpleHRlcm4g c3RydWN0IF9JT19GSUxFICpzdGRlcnI7CgoKCgoKCgpleHRlcm4gaW50IHJlbW92ZSAoY29u c3QgY2hhciAqX19maWxlbmFtZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKCmV4dGVybiBpbnQgcmVuYW1lIChjb25zdCBjaGFyICpfX29sZCwgY29uc3Qg Y2hhciAqX19uZXcpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7 CgoKCgpleHRlcm4gaW50IHJlbmFtZWF0IChpbnQgX19vbGRmZCwgY29uc3QgY2hhciAqX19v bGQsIGludCBfX25ld2ZkLAogICAgICAgY29uc3QgY2hhciAqX19uZXcpIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKCgoKZXh0ZXJuIEZJTEUgKnRt cGZpbGUgKHZvaWQpIDsKIyAyMDkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJu IGNoYXIgKnRtcG5hbSAoY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIDsKCgoKCgpleHRlcm4gY2hhciAqdG1wbmFtX3IgKGNoYXIgKl9fcykg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CiMgMjI3ICIvdXNy L2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBjaGFyICp0ZW1wbmFtIChjb25zdCBjaGFy ICpfX2RpciwgY29uc3QgY2hhciAqX19wZngpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIDsKCgoK CgoKCgpleHRlcm4gaW50IGZjbG9zZSAoRklMRSAqX19zdHJlYW0pOwoKCgoKZXh0ZXJuIGlu dCBmZmx1c2ggKEZJTEUgKl9fc3RyZWFtKTsKCiMgMjUyICIvdXNyL2luY2x1ZGUvc3RkaW8u aCIgMyA0CmV4dGVybiBpbnQgZmZsdXNoX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSk7CiMg MjY2ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CgoKCgoKCmV4dGVybiBGSUxFICpmb3Bl biAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICBjb25zdCBjaGFy ICpfX3Jlc3RyaWN0IF9fbW9kZXMpIDsKCgoKCmV4dGVybiBGSUxFICpmcmVvcGVuIChjb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX21vZGVzLAogICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsK IyAyOTUgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKCiMgMzA2ICIvdXNyL2luY2x1ZGUv c3RkaW8uaCIgMyA0CmV4dGVybiBGSUxFICpmZG9wZW4gKGludCBfX2ZkLCBjb25zdCBjaGFy ICpfX21vZGVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsK IyAzMTkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIEZJTEUgKmZtZW1vcGVu ICh2b2lkICpfX3MsIHNpemVfdCBfX2xlbiwgY29uc3QgY2hhciAqX19tb2RlcykKICBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKCgoKCmV4dGVybiBGSUxF ICpvcGVuX21lbXN0cmVhbSAoY2hhciAqKl9fYnVmbG9jLCBzaXplX3QgKl9fc2l6ZWxvYykg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CgoKCgoKCmV4dGVy biB2b2lkIHNldGJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0 cmljdCBfX2J1ZikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK CgoKZXh0ZXJuIGludCBzZXR2YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFy ICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICBpbnQgX19tb2Rlcywgc2l6ZV90IF9fbikgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgpleHRlcm4gdm9p ZCBzZXRidWZmZXIgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJp Y3QgX19idWYsCiAgICAgICAgIHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0ZXJuIHZvaWQgc2V0bGluZWJ1ZiAoRklMRSAq X19zdHJlYW0pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoK CgoKCgoKZXh0ZXJuIGludCBmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAog ICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pOwoKCgoKZXh0ZXJu IGludCBwcmludGYgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLik7Cgpl eHRlcm4gaW50IHNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICBjb25zdCBj aGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXykpOwoKCgoKCmV4dGVybiBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19z LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgX19nbnVjX3ZhX2xp c3QgX19hcmcpOwoKCgoKZXh0ZXJuIGludCB2cHJpbnRmIChjb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZyk7CgpleHRlcm4gaW50IHZzcHJp bnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv cm1hdCwKICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18pKTsKCgoKCgpleHRlcm4gaW50IHNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0 IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBf X2Zvcm1hdCwgLi4uKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0 cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKZXh0ZXJuIGlu dCB2c25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAg ICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3Qg X19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVf XyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7CgojIDQxMiAiL3Vzci9pbmNs dWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gaW50IHZkcHJpbnRmIChpbnQgX19mZCwgY29uc3Qg Y2hhciAqX19yZXN0cmljdCBfX2ZtdCwKICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKQog ICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAwKSkpOwpl eHRlcm4gaW50IGRwcmludGYgKGludCBfX2ZkLCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f Zm10LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18s IDIsIDMpKSk7CgoKCgoKCgoKZXh0ZXJuIGludCBmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3Qg X19zdHJlYW0sCiAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7 CgoKCgpleHRlcm4gaW50IHNjYW5mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0 LCAuLi4pIDsKCmV4dGVybiBpbnQgc3NjYW5mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f cywKICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgNDQzICIvdXNyL2luY2x1ZGUv c3RkaW8uaCIgMyA0CmV4dGVybiBpbnQgZnNjYW5mIChGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry ZWFtLCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIF9fYXNtX18gKCIi ICJfX2lzb2M5OV9mc2NhbmYiKQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsK ZXh0ZXJuIGludCBzY2FuZiAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4u KSBfX2FzbV9fICgiIiAiX19pc29jOTlfc2NhbmYiKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA7CmV4dGVybiBpbnQgc3NjYW5mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f cywgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSBfX2FzbV9fICgiIiAi X19pc29jOTlfc3NjYW5mIikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKQoKICAgICAgICAgICAgICAgICAgICAgIDsKIyA0NjMgIi91c3IvaW5jbHVkZS9zdGRp by5oIiAzIDQKCgoKCgoKCgpleHRlcm4gaW50IHZmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3Qg X19zLCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICBfX2dudWNfdmFf bGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9f LCAyLCAwKSkpIDsKCgoKCgpleHRlcm4gaW50IHZzY2FuZiAoY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVf XyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMSwgMCkpKSA7CgoKZXh0ZXJuIGludCB2c3Nj YW5mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt YXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwojIDQ5NCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi IDMgNApleHRlcm4gaW50IHZmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBjb25zdCBj aGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykgX19hc21f XyAoIiIgIl9faXNvYzk5X3Zmc2NhbmYiKQoKCgogICAgIF9fYXR0cmlidXRlX18gKChfX2Zv cm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSkgOwpleHRlcm4gaW50IHZzY2FuZiAoY29uc3Qg Y2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpIF9fYXNt X18gKCIiICJfX2lzb2M5OV92c2NhbmYiKQoKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt YXRfXyAoX19zY2FuZl9fLCAxLCAwKSkpIDsKZXh0ZXJuIGludCB2c3NjYW5mIChjb25zdCBj aGFyICpfX3Jlc3RyaWN0IF9fcywgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwg X19nbnVjX3ZhX2xpc3QgX19hcmcpIF9fYXNtX18gKCIiICJfX2lzb2M5OV92c3NjYW5mIikg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKQoKCgogICAgIF9fYXR0 cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSk7CiMgNTIyICIvdXNy L2luY2x1ZGUvc3RkaW8uaCIgMyA0CgoKCgoKCgoKCmV4dGVybiBpbnQgZmdldGMgKEZJTEUg Kl9fc3RyZWFtKTsKZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVhbSk7CgoKCgoKZXh0 ZXJuIGludCBnZXRjaGFyICh2b2lkKTsKCiMgNTUwICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg MyA0CmV4dGVybiBpbnQgZ2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pOwpleHRlcm4g aW50IGdldGNoYXJfdW5sb2NrZWQgKHZvaWQpOwojIDU2MSAiL3Vzci9pbmNsdWRlL3N0ZGlv LmgiIDMgNApleHRlcm4gaW50IGZnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSk7CgoK CgoKCgoKCgoKZXh0ZXJuIGludCBmcHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pOwpl eHRlcm4gaW50IHB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKTsKCgoKCgpleHRlcm4g aW50IHB1dGNoYXIgKGludCBfX2MpOwoKIyA1OTQgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAz IDQKZXh0ZXJuIGludCBmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0p OwoKCgoKCgoKZXh0ZXJuIGludCBwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0 cmVhbSk7CmV4dGVybiBpbnQgcHV0Y2hhcl91bmxvY2tlZCAoaW50IF9fYyk7CgoKCgoKCmV4 dGVybiBpbnQgZ2V0dyAoRklMRSAqX19zdHJlYW0pOwoKCmV4dGVybiBpbnQgcHV0dyAoaW50 IF9fdywgRklMRSAqX19zdHJlYW0pOwoKCgoKCgoKCmV4dGVybiBjaGFyICpmZ2V0cyAoY2hh ciAqX19yZXN0cmljdCBfX3MsIGludCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0p CiAgICAgOwojIDY0MCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAoKIyA2NjUgIi91c3Iv aW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIF9fc3NpemVfdCBfX2dldGRlbGltIChjaGFy ICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCiAgICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3Qg X19uLCBpbnQgX19kZWxpbWl0ZXIsCiAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry ZWFtKSA7CmV4dGVybiBfX3NzaXplX3QgZ2V0ZGVsaW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9f bGluZXB0ciwKICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19uLCBpbnQgX19kZWxpbWl0 ZXIsCiAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKCgoKCgoKZXh0ZXJu IF9fc3NpemVfdCBnZXRsaW5lIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCiAgICAg ICBzaXplX3QgKl9fcmVzdHJpY3QgX19uLAogICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0 cmVhbSkgOwoKCgoKCgoKCmV4dGVybiBpbnQgZnB1dHMgKGNvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19zLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKTsKCgoKCgpleHRlcm4gaW50IHB1 dHMgKGNvbnN0IGNoYXIgKl9fcyk7CgoKCgoKCmV4dGVybiBpbnQgdW5nZXRjIChpbnQgX19j LCBGSUxFICpfX3N0cmVhbSk7CgoKCgoKCmV4dGVybiBzaXplX3QgZnJlYWQgKHZvaWQgKl9f cmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICBzaXplX3QgX19uLCBGSUxF ICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKCgpleHRlcm4gc2l6ZV90IGZ3cml0ZSAoY29u c3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICBzaXpl X3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fcyk7CgojIDczNyAiL3Vzci9pbmNsdWRlL3N0 ZGlvLmgiIDMgNApleHRlcm4gc2l6ZV90IGZyZWFkX3VubG9ja2VkICh2b2lkICpfX3Jlc3Ry aWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICBzaXplX3QgX19uLCBGSUxFICpf X3Jlc3RyaWN0IF9fc3RyZWFtKSA7CmV4dGVybiBzaXplX3QgZndyaXRlX3VubG9ja2VkIChj b25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAg c2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSk7CgoKCgoKCgoKZXh0ZXJu IGludCBmc2VlayAoRklMRSAqX19zdHJlYW0sIGxvbmcgaW50IF9fb2ZmLCBpbnQgX193aGVu Y2UpOwoKCgoKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsIChGSUxFICpfX3N0cmVhbSkgOwoKCgoK ZXh0ZXJuIHZvaWQgcmV3aW5kIChGSUxFICpfX3N0cmVhbSk7CgojIDc3MyAiL3Vzci9pbmNs dWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gaW50IGZzZWVrbyAoRklMRSAqX19zdHJlYW0sIF9f b2ZmX3QgX19vZmYsIGludCBfX3doZW5jZSk7CgoKCgpleHRlcm4gX19vZmZfdCBmdGVsbG8g KEZJTEUgKl9fc3RyZWFtKSA7CiMgNzkyICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CgoK CgoKCmV4dGVybiBpbnQgZmdldHBvcyAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgZnBv c190ICpfX3Jlc3RyaWN0IF9fcG9zKTsKCgoKCmV4dGVybiBpbnQgZnNldHBvcyAoRklMRSAq X19zdHJlYW0sIGNvbnN0IGZwb3NfdCAqX19wb3MpOwojIDgxNSAiL3Vzci9pbmNsdWRlL3N0 ZGlvLmgiIDMgNAoKIyA4MjQgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKCgpleHRlcm4g dm9pZCBjbGVhcmVyciAoRklMRSAqX19zdHJlYW0pIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSk7CgpleHRlcm4gaW50IGZlb2YgKEZJTEUgKl9fc3RyZWFtKSBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKCmV4dGVybiBpbnQg ZmVycm9yIChGSUxFICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKSA7CgoKCgpleHRlcm4gdm9pZCBjbGVhcmVycl91bmxvY2tlZCAoRklMRSAq X19zdHJlYW0pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CmV4 dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwpleHRlcm4gaW50IGZlcnJvcl91bmxvY2tl ZCAoRklMRSAqX19zdHJlYW0pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSkgOwoKCgoKCgoKCmV4dGVybiB2b2lkIHBlcnJvciAoY29uc3QgY2hhciAqX19zKTsK CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zeXNfZXJybGlzdC5oIiAxIDMgNAojIDI2 ICIvdXNyL2luY2x1ZGUvYml0cy9zeXNfZXJybGlzdC5oIiAzIDQKZXh0ZXJuIGludCBzeXNf bmVycjsKZXh0ZXJuIGNvbnN0IGNoYXIgKmNvbnN0IHN5c19lcnJsaXN0W107CiMgODU0ICIv dXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKCgoKCmV4dGVybiBpbnQgZmlsZW5vIChGSUxF ICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7 CgoKCgpleHRlcm4gaW50IGZpbGVub191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwojIDg3MiAiL3Vzci9pbmNs dWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gRklMRSAqcG9wZW4gKGNvbnN0IGNoYXIgKl9fY29t bWFuZCwgY29uc3QgY2hhciAqX19tb2RlcykgOwoKCgoKCmV4dGVybiBpbnQgcGNsb3NlIChG SUxFICpfX3N0cmVhbSk7CgoKCgoKZXh0ZXJuIGNoYXIgKmN0ZXJtaWQgKGNoYXIgKl9fcykg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKIyA5MTIgIi91c3Iv aW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIHZvaWQgZmxvY2tmaWxlIChGSUxFICpfX3N0 cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKZXh0 ZXJuIGludCBmdHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKCgpleHRlcm4gdm9pZCBmdW5sb2NrZmlsZSAo RklMRSAqX19zdHJlYW0pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSk7CiMgOTQyICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CgojIDQwICJtYWNoaW5lLmMi IDIKIyAxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMyA0CiMgMzIgIi91c3IvaW5jbHVk ZS9zdGRsaWIuaCIgMyA0CiMgMSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYu MS4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMzI4ICIvdXNyL2xpYi9nY2MvaTY4Ni1y ZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CnR5cGVkZWYgbG9uZyBp bnQgd2NoYXJfdDsKIyAzMyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMgNAoKCgoKCgoK CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2FpdGZsYWdzLmgiIDEgMyA0CiMgNDIgIi91c3Iv aW5jbHVkZS9zdGRsaWIuaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93YWl0c3Rh dHVzLmgiIDEgMyA0CiMgNjQgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRzdGF0dXMuaCIgMyA0 CiMgMSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMgNAojIDM2ICIvdXNyL2luY2x1ZGUv ZW5kaWFuLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2VuZGlhbi5oIiAxIDMgNAoj IDM3ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMyA0CiMgNjAgIi91c3IvaW5jbHVkZS9l bmRpYW4uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvYnl0ZXN3YXAuaCIgMSAzIDQK IyAyOCAiL3Vzci9pbmNsdWRlL2JpdHMvYnl0ZXN3YXAuaCIgMyA0CiMgMSAiL3Vzci9pbmNs dWRlL2JpdHMvd29yZHNpemUuaCIgMSAzIDQKIyAyOSAiL3Vzci9pbmNsdWRlL2JpdHMvYnl0 ZXN3YXAuaCIgMiAzIDQKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9ieXRlc3dhcC0x Ni5oIiAxIDMgNAojIDM2ICIvdXNyL2luY2x1ZGUvYml0cy9ieXRlc3dhcC5oIiAyIDMgNAoj IDQ0ICIvdXNyL2luY2x1ZGUvYml0cy9ieXRlc3dhcC5oIiAzIDQKc3RhdGljIF9faW5saW5l IHVuc2lnbmVkIGludApfX2Jzd2FwXzMyICh1bnNpZ25lZCBpbnQgX19ic3gpCnsKICByZXR1 cm4gX19idWlsdGluX2Jzd2FwMzIgKF9fYnN4KTsKfQojIDEwOCAiL3Vzci9pbmNsdWRlL2Jp dHMvYnl0ZXN3YXAuaCIgMyA0CnN0YXRpYyBfX2lubGluZSBfX3VpbnQ2NF90Cl9fYnN3YXBf NjQgKF9fdWludDY0X3QgX19ic3gpCnsKICByZXR1cm4gX19idWlsdGluX2Jzd2FwNjQgKF9f YnN4KTsKfQojIDYxICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMyA0CiMgNjUgIi91c3Iv aW5jbHVkZS9iaXRzL3dhaXRzdGF0dXMuaCIgMiAzIDQKCnVuaW9uIHdhaXQKICB7CiAgICBp bnQgd19zdGF0dXM7CiAgICBzdHJ1Y3QKICAgICAgewoKIHVuc2lnbmVkIGludCBfX3dfdGVy bXNpZzo3OwogdW5zaWduZWQgaW50IF9fd19jb3JlZHVtcDoxOwogdW5zaWduZWQgaW50IF9f d19yZXRjb2RlOjg7CiB1bnNpZ25lZCBpbnQ6MTY7CgoKCgoKCgogICAgICB9IF9fd2FpdF90 ZXJtaW5hdGVkOwogICAgc3RydWN0CiAgICAgIHsKCiB1bnNpZ25lZCBpbnQgX193X3N0b3B2 YWw6ODsKIHVuc2lnbmVkIGludCBfX3dfc3RvcHNpZzo4OwogdW5zaWduZWQgaW50OjE2OwoK CgoKCgogICAgICB9IF9fd2FpdF9zdG9wcGVkOwogIH07CiMgNDMgIi91c3IvaW5jbHVkZS9z dGRsaWIuaCIgMiAzIDQKIyA2NyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKdHlwZWRl ZiB1bmlvbgogIHsKICAgIHVuaW9uIHdhaXQgKl9fdXB0cjsKICAgIGludCAqX19pcHRyOwog IH0gX19XQUlUX1NUQVRVUyBfX2F0dHJpYnV0ZV9fICgoX190cmFuc3BhcmVudF91bmlvbl9f KSk7CiMgOTUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CgoKdHlwZWRlZiBzdHJ1Y3QK ICB7CiAgICBpbnQgcXVvdDsKICAgIGludCByZW07CiAgfSBkaXZfdDsKCgoKdHlwZWRlZiBz dHJ1Y3QKICB7CiAgICBsb25nIGludCBxdW90OwogICAgbG9uZyBpbnQgcmVtOwogIH0gbGRp dl90OwoKCgoKCgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcg bG9uZyBpbnQgcXVvdDsKICAgIGxvbmcgbG9uZyBpbnQgcmVtOwogIH0gbGxkaXZfdDsKCgoj IDEzOSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIHNpemVfdCBfX2N0eXBl X2dldF9tYl9jdXJfbWF4ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIDsKCgoKCmV4dGVybiBkb3VibGUgYXRvZiAoY29uc3QgY2hhciAqX19ucHRy KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkp IDsKCmV4dGVybiBpbnQgYXRvaSAoY29uc3QgY2hhciAqX19ucHRyKQogICAgIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVy ZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCmV4dGVybiBsb25n IGludCBhdG9sIChjb25zdCBjaGFyICpfX25wdHIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoKCgoKCl9fZXh0ZW5zaW9uX18gZXh0 ZXJuIGxvbmcgbG9uZyBpbnQgYXRvbGwgKGNvbnN0IGNoYXIgKl9fbnB0cikKICAgICBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChf X3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CgoKCgoKZXh0 ZXJuIGRvdWJsZSBzdHJ0b2QgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAg ICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKQogICAgIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx KSkpOwoKCgoKCmV4dGVybiBmbG9hdCBzdHJ0b2YgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg X19ucHRyLAogICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxKSkpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHN0cnRvbGQgKGNvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19ucHRyLAogICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpCiAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoKZXh0ZXJuIGxvbmcgaW50IHN0cnRvbCAo Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f ZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKZXh0ZXJu IHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u cHRyLAogICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAg ICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcg bG9uZyBpbnQgc3RydG9xIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAg ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSkpKTsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9u ZyBpbnQgc3RydG91cSAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAg ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEpKSk7CgoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGlu dCBzdHJ0b2xsIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgY2hh ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEpKSk7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50 IHN0cnRvdWxsIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICBjaGFyICoq X19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSkpKTsKCiMgMzA1ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gY2hhciAq bDY0YSAobG9uZyBpbnQgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIDsKCgpleHRlcm4gbG9uZyBpbnQgYTY0bCAoY29uc3QgY2hhciAqX19zKQogICAg IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCgoK CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMgNAojIDI3ICIvdXNyL2luY2x1 ZGUvc3lzL3R5cGVzLmgiIDMgNAoKCgoKCgp0eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsKdHlw ZWRlZiBfX3Vfc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiBfX3VfaW50IHVfaW50Owp0eXBlZGVm IF9fdV9sb25nIHVfbG9uZzsKdHlwZWRlZiBfX3F1YWRfdCBxdWFkX3Q7CnR5cGVkZWYgX191 X3F1YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2ZzaWRfdCBmc2lkX3Q7CgoKCgp0eXBlZGVm IF9fbG9mZl90IGxvZmZfdDsKCgoKdHlwZWRlZiBfX2lub190IGlub190OwojIDYwICIvdXNy L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIF9fZGV2X3QgZGV2X3Q7CgoKCgp0 eXBlZGVmIF9fZ2lkX3QgZ2lkX3Q7CgoKCgp0eXBlZGVmIF9fbW9kZV90IG1vZGVfdDsKCgoK CnR5cGVkZWYgX19ubGlua190IG5saW5rX3Q7CgoKCgp0eXBlZGVmIF9fdWlkX3QgdWlkX3Q7 CiMgOTggIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgX19waWRfdCBw aWRfdDsKCgoKCgp0eXBlZGVmIF9faWRfdCBpZF90OwojIDExNSAiL3Vzci9pbmNsdWRlL3N5 cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2Nh ZGRyX3QgY2FkZHJfdDsKCgoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiMgMTMyICIvdXNy L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEg MyA0CiMgNTcgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAoKCnR5cGVkZWYgX19jbG9ja190 IGNsb2NrX3Q7CgoKCiMgNzMgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAoKCnR5cGVkZWYg X190aW1lX3QgdGltZV90OwoKCgojIDkxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKdHlw ZWRlZiBfX2Nsb2NraWRfdCBjbG9ja2lkX3Q7CiMgMTAzICIvdXNyL2luY2x1ZGUvdGltZS5o IiAzIDQKdHlwZWRlZiBfX3RpbWVyX3QgdGltZXJfdDsKIyAxMzMgIi91c3IvaW5jbHVkZS9z eXMvdHlwZXMuaCIgMiAzIDQKIyAxNDYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0 CiMgMSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUvc3Rk ZGVmLmgiIDEgMyA0CiMgMTQ3ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CgoK CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgdWxvbmc7CnR5cGVkZWYgdW5zaWduZWQgc2hv cnQgaW50IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKIyAxOTQgIi91c3Iv aW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgaW50IGludDhfdCBfX2F0dHJpYnV0 ZV9fICgoX19tb2RlX18gKF9fUUlfXykpKTsKdHlwZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJp YnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiBpbnQgaW50MzJfdCBfX2F0 dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiBpbnQgaW50NjRfdCBf X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCgp0eXBlZGVmIHVuc2lnbmVk IGludCB1X2ludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlfXykpKTsKdHlw ZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAo X19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDMyX3QgX19hdHRyaWJ1dGVf XyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50NjRf dCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCnR5cGVkZWYgaW50IHJl Z2lzdGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX3dvcmRfXykpKTsKIyAyMTkg Ii91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9z ZWxlY3QuaCIgMSAzIDQKIyAzMCAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0CiMg MSAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDEgMyA0CiMgMjIgIi91c3IvaW5jbHVk ZS9iaXRzL3NlbGVjdC5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5o IiAxIDMgNAojIDIzICIvdXNyL2luY2x1ZGUvYml0cy9zZWxlY3QuaCIgMiAzIDQKIyAzMSAi L3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9i aXRzL3NpZ3NldC5oIiAxIDMgNAojIDIyICIvdXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIg MyA0CnR5cGVkZWYgaW50IF9fc2lnX2F0b21pY190OwoKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7 CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNp Z25lZCBsb25nIGludCkpKV07CiAgfSBfX3NpZ3NldF90OwojIDM0ICIvdXNyL2luY2x1ZGUv c3lzL3NlbGVjdC5oIiAyIDMgNAoKCgp0eXBlZGVmIF9fc2lnc2V0X3Qgc2lnc2V0X3Q7CgoK CgoKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMgNAojIDEyMCAiL3Vzci9pbmNsdWRl L3RpbWUuaCIgMyA0CnN0cnVjdCB0aW1lc3BlYwogIHsKICAgIF9fdGltZV90IHR2X3NlYzsK ICAgIF9fc3lzY2FsbF9zbG9uZ190IHR2X25zZWM7CiAgfTsKIyA0NCAiL3Vzci9pbmNsdWRl L3N5cy9zZWxlY3QuaCIgMiAzIDQKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAx IDMgNAojIDMwICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDMgNApzdHJ1Y3QgdGltZXZh bAogIHsKICAgIF9fdGltZV90IHR2X3NlYzsKICAgIF9fc3VzZWNvbmRzX3QgdHZfdXNlYzsK ICB9OwojIDQ2ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMgNAoKCnR5cGVkZWYg X19zdXNlY29uZHNfdCBzdXNlY29uZHNfdDsKCgoKCgp0eXBlZGVmIGxvbmcgaW50IF9fZmRf bWFzazsKIyA2NCAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0CnR5cGVkZWYgc3Ry dWN0CiAgewoKCgoKCgogICAgX19mZF9tYXNrIF9fZmRzX2JpdHNbMTAyNCAvICg4ICogKGlu dCkgc2l6ZW9mIChfX2ZkX21hc2spKV07CgoKICB9IGZkX3NldDsKCgoKCgoKdHlwZWRlZiBf X2ZkX21hc2sgZmRfbWFzazsKIyA5NiAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0 CgojIDEwNiAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0CmV4dGVybiBpbnQgc2Vs ZWN0IChpbnQgX19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAgIGZk X3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAogICAgIGZkX3NldCAqX19yZXN0cmljdCBf X2V4Y2VwdGZkcywKICAgICBzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCBfX3RpbWVvdXQp OwojIDExOCAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0CmV4dGVybiBpbnQgcHNl bGVjdCAoaW50IF9fbmZkcywgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZkcywKICAgICAg ZmRfc2V0ICpfX3Jlc3RyaWN0IF9fd3JpdGVmZHMsCiAgICAgIGZkX3NldCAqX19yZXN0cmlj dCBfX2V4Y2VwdGZkcywKICAgICAgY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3Jlc3RyaWN0 IF9fdGltZW91dCwKICAgICAgY29uc3QgX19zaWdzZXRfdCAqX19yZXN0cmljdCBfX3NpZ21h c2spOwojIDEzMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0CgojIDIyMCAiL3Vz ci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNAoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9z eXNtYWNyb3MuaCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCIg MyA0CgoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgaW50IGdudV9kZXZfbWFqb3Ig KHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19kZXYpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7Cl9f ZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGludCBnbnVfZGV2X21pbm9yICh1bnNpZ25l ZCBsb25nIGxvbmcgaW50IF9fZGV2KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpfX2V4dGVuc2lv bl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IGdudV9kZXZfbWFrZWRldiAodW5z aWduZWQgaW50IF9fbWFqb3IsCiAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX21pbm9yKQog ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fY29uc3RfXykpOwojIDU4ICIvdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5o IiAzIDQKCiMgMjIzICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CgoKCgoKdHlw ZWRlZiBfX2Jsa3NpemVfdCBibGtzaXplX3Q7CgoKCgoKCnR5cGVkZWYgX19ibGtjbnRfdCBi bGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzYmxrY250X3QgZnNibGtjbnRfdDsKCgoKdHlwZWRl ZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsKIyAyNzAgIi91c3IvaW5jbHVkZS9zeXMvdHlw ZXMuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMyA0 CiMgMjEgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzIDQKIyAxICIvdXNy L2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5oIiAxIDMgNAojIDIyICIvdXNyL2luY2x1ZGUvYml0 cy9wdGhyZWFkdHlwZXMuaCIgMiAzIDQKIyA2MCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVh ZHR5cGVzLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHB0aHJlYWRfdDsKCgp1 bmlvbiBwdGhyZWFkX2F0dHJfdAp7CiAgY2hhciBfX3NpemVbMzZdOwogIGxvbmcgaW50IF9f YWxpZ247Cn07Cgp0eXBlZGVmIHVuaW9uIHB0aHJlYWRfYXR0cl90IHB0aHJlYWRfYXR0cl90 OwojIDgxICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMyA0CnR5cGVkZWYg c3RydWN0IF9fcHRocmVhZF9pbnRlcm5hbF9zbGlzdAp7CiAgc3RydWN0IF9fcHRocmVhZF9p bnRlcm5hbF9zbGlzdCAqX19uZXh0Owp9IF9fcHRocmVhZF9zbGlzdF90OwoKCgoKCnR5cGVk ZWYgdW5pb24KewogIHN0cnVjdCBfX3B0aHJlYWRfbXV0ZXhfcwogIHsKICAgIGludCBfX2xv Y2s7CiAgICB1bnNpZ25lZCBpbnQgX19jb3VudDsKICAgIGludCBfX293bmVyOwoKCgoKCiAg ICBpbnQgX19raW5kOwojIDExMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgi IDMgNAogICAgdW5zaWduZWQgaW50IF9fbnVzZXJzOwogICAgX19leHRlbnNpb25fXyB1bmlv bgogICAgewogICAgICBzdHJ1Y3QKICAgICAgewogc2hvcnQgX19lc3BpbnM7CiBzaG9ydCBf X2VsaXNpb247CgoKCiAgICAgIH0gX19lbGlzaW9uX2RhdGE7CiAgICAgIF9fcHRocmVhZF9z bGlzdF90IF9fbGlzdDsKICAgIH07CgogIH0gX19kYXRhOwogIGNoYXIgX19zaXplWzI0XTsK ICBsb25nIGludCBfX2FsaWduOwp9IHB0aHJlYWRfbXV0ZXhfdDsKCnR5cGVkZWYgdW5pb24K ewogIGNoYXIgX19zaXplWzRdOwogIGludCBfX2FsaWduOwp9IHB0aHJlYWRfbXV0ZXhhdHRy X3Q7CgoKCgp0eXBlZGVmIHVuaW9uCnsKICBzdHJ1Y3QKICB7CiAgICBpbnQgX19sb2NrOwog ICAgdW5zaWduZWQgaW50IF9fZnV0ZXg7CiAgICBfX2V4dGVuc2lvbl9fIHVuc2lnbmVkIGxv bmcgbG9uZyBpbnQgX190b3RhbF9zZXE7CiAgICBfX2V4dGVuc2lvbl9fIHVuc2lnbmVkIGxv bmcgbG9uZyBpbnQgX193YWtldXBfc2VxOwogICAgX19leHRlbnNpb25fXyB1bnNpZ25lZCBs b25nIGxvbmcgaW50IF9fd29rZW5fc2VxOwogICAgdm9pZCAqX19tdXRleDsKICAgIHVuc2ln bmVkIGludCBfX253YWl0ZXJzOwogICAgdW5zaWduZWQgaW50IF9fYnJvYWRjYXN0X3NlcTsK ICB9IF9fZGF0YTsKICBjaGFyIF9fc2l6ZVs0OF07CiAgX19leHRlbnNpb25fXyBsb25nIGxv bmcgaW50IF9fYWxpZ247Cn0gcHRocmVhZF9jb25kX3Q7Cgp0eXBlZGVmIHVuaW9uCnsKICBj aGFyIF9fc2l6ZVs0XTsKICBpbnQgX19hbGlnbjsKfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgoK CnR5cGVkZWYgdW5zaWduZWQgaW50IHB0aHJlYWRfa2V5X3Q7CgoKCnR5cGVkZWYgaW50IHB0 aHJlYWRfb25jZV90OwoKCgoKCnR5cGVkZWYgdW5pb24KewojIDIwMiAiL3Vzci9pbmNsdWRl L2JpdHMvcHRocmVhZHR5cGVzLmgiIDMgNAogIHN0cnVjdAogIHsKICAgIGludCBfX2xvY2s7 CiAgICB1bnNpZ25lZCBpbnQgX19ucl9yZWFkZXJzOwogICAgdW5zaWduZWQgaW50IF9fcmVh ZGVyc193YWtldXA7CiAgICB1bnNpZ25lZCBpbnQgX193cml0ZXJfd2FrZXVwOwogICAgdW5z aWduZWQgaW50IF9fbnJfcmVhZGVyc19xdWV1ZWQ7CiAgICB1bnNpZ25lZCBpbnQgX19ucl93 cml0ZXJzX3F1ZXVlZDsKCgogICAgdW5zaWduZWQgY2hhciBfX2ZsYWdzOwogICAgdW5zaWdu ZWQgY2hhciBfX3NoYXJlZDsKICAgIHNpZ25lZCBjaGFyIF9fcndlbGlzaW9uOwoKICAgIHVu c2lnbmVkIGNoYXIgX19wYWQyOwogICAgaW50IF9fd3JpdGVyOwogIH0gX19kYXRhOwoKICBj aGFyIF9fc2l6ZVszMl07CiAgbG9uZyBpbnQgX19hbGlnbjsKfSBwdGhyZWFkX3J3bG9ja190 OwoKdHlwZWRlZiB1bmlvbgp7CiAgY2hhciBfX3NpemVbOF07CiAgbG9uZyBpbnQgX19hbGln bjsKfSBwdGhyZWFkX3J3bG9ja2F0dHJfdDsKCgoKCgp0eXBlZGVmIHZvbGF0aWxlIGludCBw dGhyZWFkX3NwaW5sb2NrX3Q7CgoKCgp0eXBlZGVmIHVuaW9uCnsKICBjaGFyIF9fc2l6ZVsy MF07CiAgbG9uZyBpbnQgX19hbGlnbjsKfSBwdGhyZWFkX2JhcnJpZXJfdDsKCnR5cGVkZWYg dW5pb24KewogIGNoYXIgX19zaXplWzRdOwogIGludCBfX2FsaWduOwp9IHB0aHJlYWRfYmFy cmllcmF0dHJfdDsKIyAyNzEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzIDQKCgoK IyAzMTUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzIDQKCgoKCgoKZXh0ZXJuIGxvbmcg aW50IHJhbmRvbSAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKTsKCgpleHRlcm4gdm9pZCBzcmFuZG9tICh1bnNpZ25lZCBpbnQgX19zZWVkKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCmV4dGVybiBjaGFy ICppbml0c3RhdGUgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fc3RhdGVidWYsCiAg IHNpemVfdCBfX3N0YXRlbGVuKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCgoKZXh0ZXJuIGNo YXIgKnNldHN0YXRlIChjaGFyICpfX3N0YXRlYnVmKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsK CgoKCgoKCnN0cnVjdCByYW5kb21fZGF0YQogIHsKICAgIGludDMyX3QgKmZwdHI7CiAgICBp bnQzMl90ICpycHRyOwogICAgaW50MzJfdCAqc3RhdGU7CiAgICBpbnQgcmFuZF90eXBlOwog ICAgaW50IHJhbmRfZGVnOwogICAgaW50IHJhbmRfc2VwOwogICAgaW50MzJfdCAqZW5kX3B0 cjsKICB9OwoKZXh0ZXJuIGludCByYW5kb21fciAoc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jl c3RyaWN0IF9fYnVmLAogICAgICAgaW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEsIDIpKSk7CgpleHRlcm4gaW50IHNyYW5kb21fciAodW5zaWduZWQg aW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikKICAgICBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMikpKTsKCmV4dGVybiBpbnQgaW5pdHN0YXRlX3IgKHVuc2lnbmVkIGludCBfX3Nl ZWQsIGNoYXIgKl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKICAgc2l6ZV90IF9fc3RhdGVsZW4s CiAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikKICAgICBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMiwgNCkpKTsKCmV4dGVybiBpbnQgc2V0c3RhdGVfciAoY2hhciAqX19yZXN0 cmljdCBfX3N0YXRlYnVmLAogICAgICAgICBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJp Y3QgX19idWYpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCgoKCmV4dGVybiBp bnQgcmFuZCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KTsKCmV4dGVybiB2b2lkIHNyYW5kICh1bnNpZ25lZCBpbnQgX19zZWVkKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKZXh0ZXJuIGludCByYW5kX3Ig KHVuc2lnbmVkIGludCAqX19zZWVkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwoKCgoKCgoKZXh0ZXJuIGRvdWJsZSBkcmFuZDQ4ICh2b2lkKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwpleHRlcm4gZG91YmxlIGVyYW5k NDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp KTsKCgpleHRlcm4gbG9uZyBpbnQgbHJhbmQ0OCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVuc2ln bmVkIHNob3J0IGludCBfX3hzdWJpWzNdKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoK CmV4dGVybiBsb25nIGludCBtcmFuZDQ4ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwpleHRlcm4gbG9uZyBpbnQganJhbmQ0OCAodW5zaWduZWQg c2hvcnQgaW50IF9feHN1YmlbM10pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0 ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQgX19zZWVkdmFsKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50ICpz ZWVkNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10pCiAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDEpKSk7CmV4dGVybiB2b2lkIGxjb25nNDggKHVuc2lnbmVkIHNob3J0IGludCBf X3BhcmFtWzddKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgpzdHJ1Y3QgZHJhbmQ0OF9k YXRhCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IF9feFszXTsKICAgIHVuc2lnbmVkIHNo b3J0IGludCBfX29sZF94WzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fYzsKICAgIHVu c2lnbmVkIHNob3J0IGludCBfX2luaXQ7CiAgICBfX2V4dGVuc2lvbl9fIHVuc2lnbmVkIGxv bmcgbG9uZyBpbnQgX19hOwoKICB9OwoKCmV4dGVybiBpbnQgZHJhbmQ0OF9yIChzdHJ1Y3Qg ZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgIGRvdWJsZSAqX19y ZXN0cmljdCBfX3Jlc3VsdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CmV4dGVybiBpbnQg ZXJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICBzdHJ1 Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgIGRvdWJsZSAq X19yZXN0cmljdCBfX3Jlc3VsdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJu IGludCBscmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZm ZXIsCiAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEsIDIpKSk7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9y dCBpbnQgX194c3ViaVszXSwKICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3Ry aWN0IF9fYnVmZmVyLAogICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KQog ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBpbnQgbXJhbmQ0OF9yIChz dHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgIGxvbmcg aW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkp OwpleHRlcm4gaW50IGpyYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10s CiAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAg ICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkKICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf XyAoMSwgMikpKTsKCgpleHRlcm4gaW50IHNyYW5kNDhfciAobG9uZyBpbnQgX19zZWVkdmFs LCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikKICAgICBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MikpKTsKCmV4dGVybiBpbnQgc2VlZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQx NnZbM10sCiAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDEsIDIpKSk7CgpleHRlcm4gaW50IGxjb25nNDhfciAodW5zaWduZWQgc2hvcnQg aW50IF9fcGFyYW1bN10sCiAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIp CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJp YnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCgoKCgoKCmV4dGVybiB2b2lkICpt YWxsb2MgKHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSA7CgpleHRlcm4gdm9pZCAq Y2FsbG9jIChzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSkKICAgICBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxv Y19fKSkgOwoKCgoKCgoKCgoKZXh0ZXJuIHZvaWQgKnJlYWxsb2MgKHZvaWQgKl9fcHRyLCBz aXplX3QgX19zaXplKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsKCmV4dGVy biB2b2lkIGZyZWUgKHZvaWQgKl9fcHRyKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpOwoKCgoKZXh0ZXJuIHZvaWQgY2ZyZWUgKHZvaWQgKl9fcHRyKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgojIDEgIi91c3IvaW5j bHVkZS9hbGxvY2EuaCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAzIDQK IyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRk ZWYuaCIgMSAzIDQKIyAyNSAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAyIDMgNAoKCgoKCgoK ZXh0ZXJuIHZvaWQgKmFsbG9jYSAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgoKIyA0OTMgIi91c3IvaW5jbHVkZS9zdGRs aWIuaCIgMiAzIDQKCgoKCgpleHRlcm4gdm9pZCAqdmFsbG9jIChzaXplX3QgX19zaXplKSBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18g KChfX21hbGxvY19fKSkgOwoKCgoKZXh0ZXJuIGludCBwb3NpeF9tZW1hbGlnbiAodm9pZCAq Kl9fbWVtcHRyLCBzaXplX3QgX19hbGlnbm1lbnQsIHNpemVfdCBfX3NpemUpCiAgICAgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEpKSkgOwoKCgoKZXh0ZXJuIHZvaWQgKmFsaWduZWRfYWxsb2MgKHNp emVfdCBfX2FsaWdubWVudCwgc2l6ZV90IF9fc2l6ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSkg X19hdHRyaWJ1dGVfXyAoKF9fYWxsb2Nfc2l6ZV9fICgyKSkpIDsKCgoKCmV4dGVybiB2b2lk IGFib3J0ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp IF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKZXh0ZXJuIGludCBhdGV4aXQg KHZvaWQgKCpfX2Z1bmMpICh2b2lkKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoKCgpl eHRlcm4gaW50IGF0X3F1aWNrX2V4aXQgKHZvaWQgKCpfX2Z1bmMpICh2b2lkKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEpKSk7CgoKCgoKCgpleHRlcm4gaW50IG9uX2V4aXQgKHZvaWQgKCpfX2Z1 bmMpIChpbnQgX19zdGF0dXMsIHZvaWQgKl9fYXJnKSwgdm9pZCAqX19hcmcpCiAgICAgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEpKSk7CgoKCgoKCmV4dGVybiB2b2lkIGV4aXQgKGludCBfX3N0YXR1 cykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgoKZXh0ZXJuIHZvaWQgcXVpY2tfZXhpdCAoaW50 IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9f YXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCgoKCmV4dGVybiB2b2lkIF9FeGl0 IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCgpleHRlcm4gY2hhciAq Z2V0ZW52IChjb25zdCBjaGFyICpfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCiMg NTc4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gaW50IHB1dGVudiAoY2hh ciAqX19zdHJpbmcpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCmV4dGVybiBpbnQgc2V0 ZW52IChjb25zdCBjaGFyICpfX25hbWUsIGNvbnN0IGNoYXIgKl9fdmFsdWUsIGludCBfX3Jl cGxhY2UpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgoKZXh0ZXJuIGludCB1bnNldGVu diAoY29uc3QgY2hhciAqX19uYW1lKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgoKZXh0 ZXJuIGludCBjbGVhcmVudiAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKTsKIyA2MDYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBj aGFyICpta3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoj IDYxOSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBta3N0ZW1wIChj aGFyICpfX3RlbXBsYXRlKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoj IDY0MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBta3N0ZW1wcyAo Y2hhciAqX190ZW1wbGF0ZSwgaW50IF9fc3VmZml4bGVuKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEpKSkgOwojIDY2MiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0 ZXJuIGNoYXIgKm1rZHRlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx KSkpIDsKIyA3MTEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CgoKCgoKZXh0ZXJuIGlu dCBzeXN0ZW0gKGNvbnN0IGNoYXIgKl9fY29tbWFuZCkgOwoKIyA3MzMgIi91c3IvaW5jbHVk ZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBjaGFyICpyZWFscGF0aCAoY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX25hbWUsCiAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19yZXNvbHZlZCkg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CgoKCgoKCnR5cGVk ZWYgaW50ICgqX19jb21wYXJfZm5fdCkgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsK IyA3NTEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CgoKCmV4dGVybiB2b2lkICpic2Vh cmNoIChjb25zdCB2b2lkICpfX2tleSwgY29uc3Qgdm9pZCAqX19iYXNlLAogICAgICAgIHNp emVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplLCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKQog ICAgIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMiwgNSkpKSA7CgoKCgoKCgpl eHRlcm4gdm9pZCBxc29ydCAodm9pZCAqX19iYXNlLCBzaXplX3QgX19ubWVtYiwgc2l6ZV90 IF9fc2l6ZSwKICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEsIDQpKSk7CiMgNzc0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMg NApleHRlcm4gaW50IGFicyAoaW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSkgOwpleHRlcm4gbG9u ZyBpbnQgbGFicyAobG9uZyBpbnQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKSA7CgoKCl9fZXh0ZW5z aW9uX18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxhYnMgKGxvbmcgbG9uZyBpbnQgX194KQog ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fY29uc3RfXykpIDsKCgoKCgoKCmV4dGVybiBkaXZfdCBkaXYgKGludCBfX251 bWVyLCBpbnQgX19kZW5vbSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKSA7CmV4dGVybiBsZGl2X3Qg bGRpdiAobG9uZyBpbnQgX19udW1lciwgbG9uZyBpbnQgX19kZW5vbSkKICAgICBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2Nv bnN0X18pKSA7CgoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsbGRpdl90IGxsZGl2IChsb25n IGxvbmcgaW50IF9fbnVtZXIsCiAgICAgICAgbG9uZyBsb25nIGludCBfX2Rlbm9tKQogICAg IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fY29uc3RfXykpIDsKCiMgODExICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApl eHRlcm4gY2hhciAqZWN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpf X3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDMsIDQpKSkgOwoKCgoKZXh0ZXJuIGNoYXIgKmZjdnQgKGRvdWJsZSBfX3Zh bHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgIGludCAq X19yZXN0cmljdCBfX3NpZ24pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzLCA0KSkpIDsKCgoKCmV4dGVy biBjaGFyICpnY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1 ZikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMykpKSA7CgoKCgpleHRlcm4gY2hhciAqcWVjdnQg KGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgaW50ICpfX3Jlc3Ry aWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pCiAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDMsIDQpKSkgOwpleHRlcm4gY2hhciAqcWZjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUs IGludCBfX25kaWdpdCwKICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19y ZXN0cmljdCBfX3NpZ24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMsIDQpKSkgOwpleHRlcm4g Y2hhciAqcWdjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAq X19idWYpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMpKSkgOwoKCgoKZXh0ZXJuIGludCBlY3Z0 X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2Rl Y3B0LAogICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19i dWYsCiAgICAgc2l6ZV90IF9fbGVuKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMywgNCwgNSkpKTsKZXh0 ZXJuIGludCBmY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19y ZXN0cmljdCBfX2RlY3B0LAogICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9f cmVzdHJpY3QgX19idWYsCiAgICAgc2l6ZV90IF9fbGVuKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMywg NCwgNSkpKTsKCmV4dGVybiBpbnQgcWVjdnRfciAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50 IF9fbmRpZ2l0LAogICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3Ry aWN0IF9fc2lnbiwKICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVu KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzLCA0LCA1KSkpOwpleHRlcm4gaW50IHFmY3Z0X3Ig KGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgaW50ICpfX3Jlc3Ry aWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgIGNoYXIgKl9fcmVz dHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMywgNCwg NSkpKTsKCgoKCgoKZXh0ZXJuIGludCBtYmxlbiAoY29uc3QgY2hhciAqX19zLCBzaXplX3Qg X19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVy biBpbnQgbWJ0b3djICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjLAogICAgIGNvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBpbnQgd2N0b21iIChjaGFyICpfX3MsIHdj aGFyX3QgX193Y2hhcikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KTsKCgoKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3 Y3MsCiAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKZXh0ZXJuIHNpemVfdCB3Y3N0 b21icyAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgIGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJp Y3QgX19wd2NzLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSk7CgoKCgoKCgoKZXh0ZXJuIGludCBycG1hdGNoIChjb25zdCBjaGFy ICpfX3Jlc3BvbnNlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CiMgODk4ICIvdXNyL2luY2x1 ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gaW50IGdldHN1Ym9wdCAoY2hhciAqKl9fcmVzdHJp Y3QgX19vcHRpb25wLAogICAgICAgIGNoYXIgKmNvbnN0ICpfX3Jlc3RyaWN0IF9fdG9rZW5z LAogICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fdmFsdWVwKQogICAgIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxLCAyLCAzKSkpIDsKIyA5NTAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4 dGVybiBpbnQgZ2V0bG9hZGF2ZyAoZG91YmxlIF9fbG9hZGF2Z1tdLCBpbnQgX19uZWxlbSkK ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0 ZGxpYi1mbG9hdC5oIiAxIDMgNAojIDk1NSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMg NAojIDk2NyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKCiMgNDEgIm1hY2hpbmUuYyIg MgojIDEgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMSAzIDQKIyAzMCAiL3Vzci9pbmNsdWRl L3NpZ25hbC5oIiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAxIDMg NAojIDEwMiAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMgNApleHRlcm4gaW50IF9f c2lnaXNtZW1iZXIgKGNvbnN0IF9fc2lnc2V0X3QgKiwgaW50KTsKZXh0ZXJuIGludCBfX3Np Z2FkZHNldCAoX19zaWdzZXRfdCAqLCBpbnQpOwpleHRlcm4gaW50IF9fc2lnZGVsc2V0IChf X3NpZ3NldF90ICosIGludCk7CiMgMzMgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMiAzIDQK CgoKCgoKCnR5cGVkZWYgX19zaWdfYXRvbWljX3Qgc2lnX2F0b21pY190OwoKIyA1NyAiL3Vz ci9pbmNsdWRlL3NpZ25hbC5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zaWdudW0u aCIgMSAzIDQKIyA1OCAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAyIDMgNAojIDc1ICIvdXNy L2luY2x1ZGUvc2lnbmFsLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMyA0 CiMgNzYgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMiAzIDQKCgoKCiMgMSAiL3Vzci9pbmNs dWRlL2JpdHMvc2lnaW5mby5oIiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy9zaWdp bmZvLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEgMyA0CiMg MjUgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ2luZm8uaCIgMiAzIDQKCgoKCgoKCnR5cGVkZWYg dW5pb24gc2lndmFsCiAgewogICAgaW50IHNpdmFsX2ludDsKICAgIHZvaWQgKnNpdmFsX3B0 cjsKICB9IHNpZ3ZhbF90OwojIDU4ICIvdXNyL2luY2x1ZGUvYml0cy9zaWdpbmZvLmgiIDMg NAp0eXBlZGVmIF9fY2xvY2tfdCBfX3NpZ2NobGRfY2xvY2tfdDsKCgoKdHlwZWRlZiBzdHJ1 Y3QKICB7CiAgICBpbnQgc2lfc2lnbm87CiAgICBpbnQgc2lfZXJybm87CgogICAgaW50IHNp X2NvZGU7CgogICAgdW5pb24KICAgICAgewogaW50IF9wYWRbKCgxMjggLyBzaXplb2YgKGlu dCkpIC0gMyldOwoKCiBzdHJ1Y3QKICAgewogICAgIF9fcGlkX3Qgc2lfcGlkOwogICAgIF9f dWlkX3Qgc2lfdWlkOwogICB9IF9raWxsOwoKCiBzdHJ1Y3QKICAgewogICAgIGludCBzaV90 aWQ7CiAgICAgaW50IHNpX292ZXJydW47CiAgICAgc2lndmFsX3Qgc2lfc2lndmFsOwogICB9 IF90aW1lcjsKCgogc3RydWN0CiAgIHsKICAgICBfX3BpZF90IHNpX3BpZDsKICAgICBfX3Vp ZF90IHNpX3VpZDsKICAgICBzaWd2YWxfdCBzaV9zaWd2YWw7CiAgIH0gX3J0OwoKCiBzdHJ1 Y3QKICAgewogICAgIF9fcGlkX3Qgc2lfcGlkOwogICAgIF9fdWlkX3Qgc2lfdWlkOwogICAg IGludCBzaV9zdGF0dXM7CiAgICAgX19zaWdjaGxkX2Nsb2NrX3Qgc2lfdXRpbWU7CiAgICAg X19zaWdjaGxkX2Nsb2NrX3Qgc2lfc3RpbWU7CiAgIH0gX3NpZ2NobGQ7CgoKIHN0cnVjdAog ICB7CiAgICAgdm9pZCAqc2lfYWRkcjsKICAgICBzaG9ydCBpbnQgc2lfYWRkcl9sc2I7CiAg ICAgc3RydWN0CiAgICAgICB7CiAgdm9pZCAqX2xvd2VyOwogIHZvaWQgKl91cHBlcjsKICAg ICAgIH0gc2lfYWRkcl9ibmQ7CiAgIH0gX3NpZ2ZhdWx0OwoKCiBzdHJ1Y3QKICAgewogICAg IGxvbmcgaW50IHNpX2JhbmQ7CiAgICAgaW50IHNpX2ZkOwogICB9IF9zaWdwb2xsOwoKCiBz dHJ1Y3QKICAgewogICAgIHZvaWQgKl9jYWxsX2FkZHI7CiAgICAgaW50IF9zeXNjYWxsOwog ICAgIHVuc2lnbmVkIGludCBfYXJjaDsKICAgfSBfc2lnc3lzOwogICAgICB9IF9zaWZpZWxk czsKICB9IHNpZ2luZm9fdCA7CiMgMTYwICIvdXNyL2luY2x1ZGUvYml0cy9zaWdpbmZvLmgi IDMgNAplbnVtCnsKICBTSV9BU1lOQ05MID0gLTYwLAoKICBTSV9US0lMTCA9IC02LAoKICBT SV9TSUdJTywKCiAgU0lfQVNZTkNJTywKCiAgU0lfTUVTR1EsCgogIFNJX1RJTUVSLAoKICBT SV9RVUVVRSwKCiAgU0lfVVNFUiwKCiAgU0lfS0VSTkVMID0gMHg4MAoKfTsKCgoKCmVudW0K ewogIElMTF9JTExPUEMgPSAxLAoKICBJTExfSUxMT1BOLAoKICBJTExfSUxMQURSLAoKICBJ TExfSUxMVFJQLAoKICBJTExfUFJWT1BDLAoKICBJTExfUFJWUkVHLAoKICBJTExfQ09QUk9D LAoKICBJTExfQkFEU1RLCgp9OwoKCmVudW0KewogIEZQRV9JTlRESVYgPSAxLAoKICBGUEVf SU5UT1ZGLAoKICBGUEVfRkxURElWLAoKICBGUEVfRkxUT1ZGLAoKICBGUEVfRkxUVU5ELAoK ICBGUEVfRkxUUkVTLAoKICBGUEVfRkxUSU5WLAoKICBGUEVfRkxUU1VCCgp9OwoKCmVudW0K ewogIFNFR1ZfTUFQRVJSID0gMSwKCiAgU0VHVl9BQ0NFUlIKCn07CgoKZW51bQp7CiAgQlVT X0FEUkFMTiA9IDEsCgogIEJVU19BRFJFUlIsCgogIEJVU19PQkpFUlIsCgogIEJVU19NQ0VF UlJfQVIsCgogIEJVU19NQ0VFUlJfQU8KCn07CiMgMjY0ICIvdXNyL2luY2x1ZGUvYml0cy9z aWdpbmZvLmgiIDMgNAplbnVtCnsKICBDTERfRVhJVEVEID0gMSwKCiAgQ0xEX0tJTExFRCwK CiAgQ0xEX0RVTVBFRCwKCiAgQ0xEX1RSQVBQRUQsCgogIENMRF9TVE9QUEVELAoKICBDTERf Q09OVElOVUVECgp9OwoKCmVudW0KewogIFBPTExfSU4gPSAxLAoKICBQT0xMX09VVCwKCiAg UE9MTF9NU0csCgogIFBPTExfRVJSLAoKICBQT0xMX1BSSSwKCiAgUE9MTF9IVVAKCn07CiMg MzIwICIvdXNyL2luY2x1ZGUvYml0cy9zaWdpbmZvLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBz aWdldmVudAogIHsKICAgIHNpZ3ZhbF90IHNpZ2V2X3ZhbHVlOwogICAgaW50IHNpZ2V2X3Np Z25vOwogICAgaW50IHNpZ2V2X25vdGlmeTsKCiAgICB1bmlvbgogICAgICB7CiBpbnQgX3Bh ZFsoKDY0IC8gc2l6ZW9mIChpbnQpKSAtIDMpXTsKCgoKIF9fcGlkX3QgX3RpZDsKCiBzdHJ1 Y3QKICAgewogICAgIHZvaWQgKCpfZnVuY3Rpb24pIChzaWd2YWxfdCk7CiAgICAgcHRocmVh ZF9hdHRyX3QgKl9hdHRyaWJ1dGU7CiAgIH0gX3NpZ2V2X3RocmVhZDsKICAgICAgfSBfc2ln ZXZfdW47CiAgfSBzaWdldmVudF90OwoKCgoKCgplbnVtCnsKICBTSUdFVl9TSUdOQUwgPSAw LAoKICBTSUdFVl9OT05FLAoKICBTSUdFVl9USFJFQUQsCgoKICBTSUdFVl9USFJFQURfSUQg PSA0Cgp9OwojIDgxICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDIgMyA0CgoKCgp0eXBlZGVm IHZvaWQgKCpfX3NpZ2hhbmRsZXJfdCkgKGludCk7CgoKCgpleHRlcm4gX19zaWdoYW5kbGVy X3QgX19zeXN2X3NpZ25hbCAoaW50IF9fc2lnLCBfX3NpZ2hhbmRsZXJfdCBfX2hhbmRsZXIp CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKIyAxMDAg Ii91c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0CgoKZXh0ZXJuIF9fc2lnaGFuZGxlcl90IHNp Z25hbCAoaW50IF9fc2lnLCBfX3NpZ2hhbmRsZXJfdCBfX2hhbmRsZXIpCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKIyAxMTQgIi91c3IvaW5jbHVk ZS9zaWduYWwuaCIgMyA0CgojIDEyNyAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAzIDQKZXh0 ZXJuIGludCBraWxsIChfX3BpZF90IF9fcGlkLCBpbnQgX19zaWcpIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKCmV4dGVybiBpbnQga2lsbHBnIChf X3BpZF90IF9fcGdycCwgaW50IF9fc2lnKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpOwoKCgoKZXh0ZXJuIGludCByYWlzZSAoaW50IF9fc2lnKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKZXh0ZXJuIF9fc2lnaGFu ZGxlcl90IHNzaWduYWwgKGludCBfX3NpZywgX19zaWdoYW5kbGVyX3QgX19oYW5kbGVyKQog ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CmV4dGVybiBp bnQgZ3NpZ25hbCAoaW50IF9fc2lnKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwoKCgoKZXh0ZXJuIHZvaWQgcHNpZ25hbCAoaW50IF9fc2lnLCBjb25zdCBj aGFyICpfX3MpOwoKCmV4dGVybiB2b2lkIHBzaWdpbmZvIChjb25zdCBzaWdpbmZvX3QgKl9f cGluZm8sIGNvbnN0IGNoYXIgKl9fcyk7CiMgMTg3ICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgi IDMgNApleHRlcm4gaW50IHNpZ2Jsb2NrIChpbnQgX19tYXNrKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRf XykpOwoKCmV4dGVybiBpbnQgc2lnc2V0bWFzayAoaW50IF9fbWFzaykgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNh dGVkX18pKTsKCgpleHRlcm4gaW50IHNpZ2dldG1hc2sgKHZvaWQpIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRl ZF9fKSk7CiMgMjA3ICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDMgNAp0eXBlZGVmIF9fc2ln aGFuZGxlcl90IHNpZ190OwoKCgoKCmV4dGVybiBpbnQgc2lnZW1wdHlzZXQgKHNpZ3NldF90 ICpfX3NldCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGludCBzaWdmaWxsc2V0 IChzaWdzZXRfdCAqX19zZXQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQg c2lnYWRkc2V0IChzaWdzZXRfdCAqX19zZXQsIGludCBfX3NpZ25vKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf XyAoMSkpKTsKCgpleHRlcm4gaW50IHNpZ2RlbHNldCAoc2lnc2V0X3QgKl9fc2V0LCBpbnQg X19zaWdubykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGludCBzaWdpc21lbWJl ciAoY29uc3Qgc2lnc2V0X3QgKl9fc2V0LCBpbnQgX19zaWdubykKICAgICBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSkpKTsKIyAyNDMgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0CiMgMSAiL3Vz ci9pbmNsdWRlL2JpdHMvc2lnYWN0aW9uLmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9i aXRzL3NpZ2FjdGlvbi5oIiAzIDQKc3RydWN0IHNpZ2FjdGlvbgogIHsKCgogICAgdW5pb24K ICAgICAgewoKIF9fc2lnaGFuZGxlcl90IHNhX2hhbmRsZXI7Cgogdm9pZCAoKnNhX3NpZ2Fj dGlvbikgKGludCwgc2lnaW5mb190ICosIHZvaWQgKik7CiAgICAgIH0KICAgIF9fc2lnYWN0 aW9uX2hhbmRsZXI7CgoKCgoKCgogICAgX19zaWdzZXRfdCBzYV9tYXNrOwoKCiAgICBpbnQg c2FfZmxhZ3M7CgoKICAgIHZvaWQgKCpzYV9yZXN0b3JlcikgKHZvaWQpOwogIH07CiMgMjQ0 ICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDIgMyA0CgoKZXh0ZXJuIGludCBzaWdwcm9jbWFz ayAoaW50IF9faG93LCBjb25zdCBzaWdzZXRfdCAqX19yZXN0cmljdCBfX3NldCwKICAgc2ln c2V0X3QgKl9fcmVzdHJpY3QgX19vc2V0KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpOwoKCgoKCgpleHRlcm4gaW50IHNpZ3N1c3BlbmQgKGNvbnN0IHNpZ3Nl dF90ICpfX3NldCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVy biBpbnQgc2lnYWN0aW9uIChpbnQgX19zaWcsIGNvbnN0IHN0cnVjdCBzaWdhY3Rpb24gKl9f cmVzdHJpY3QgX19hY3QsCiAgICAgICAgc3RydWN0IHNpZ2FjdGlvbiAqX19yZXN0cmljdCBf X29hY3QpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0 ZXJuIGludCBzaWdwZW5kaW5nIChzaWdzZXRfdCAqX19zZXQpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx KSkpOwoKCgoKCgpleHRlcm4gaW50IHNpZ3dhaXQgKGNvbnN0IHNpZ3NldF90ICpfX3Jlc3Ry aWN0IF9fc2V0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWcpCiAgICAgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKCgpleHRlcm4gaW50IHNpZ3dhaXRpbmZvIChj b25zdCBzaWdzZXRfdCAqX19yZXN0cmljdCBfX3NldCwKICAgc2lnaW5mb190ICpfX3Jlc3Ry aWN0IF9faW5mbykgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCgpl eHRlcm4gaW50IHNpZ3RpbWVkd2FpdCAoY29uc3Qgc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19z ZXQsCiAgICBzaWdpbmZvX3QgKl9fcmVzdHJpY3QgX19pbmZvLAogICAgY29uc3Qgc3RydWN0 IHRpbWVzcGVjICpfX3Jlc3RyaWN0IF9fdGltZW91dCkKICAgICBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEpKSk7CgoKCmV4dGVybiBpbnQgc2lncXVldWUgKF9fcGlkX3QgX19w aWQsIGludCBfX3NpZywgY29uc3QgdW5pb24gc2lndmFsIF9fdmFsKQogICAgIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgMzAxICIvdXNyL2luY2x1ZGUv c2lnbmFsLmgiIDMgNApleHRlcm4gY29uc3QgY2hhciAqY29uc3QgX3N5c19zaWdsaXN0WzY1 XTsKZXh0ZXJuIGNvbnN0IGNoYXIgKmNvbnN0IHN5c19zaWdsaXN0WzY1XTsKCgoKIyAxICIv dXNyL2luY2x1ZGUvYml0cy9zaWdjb250ZXh0LmgiIDEgMyA0CiMgMjkgIi91c3IvaW5jbHVk ZS9iaXRzL3NpZ2NvbnRleHQuaCIgMyA0CnN0cnVjdCBfZnB4X3N3X2J5dGVzCnsKICBfX3Vp bnQzMl90IG1hZ2ljMTsKICBfX3VpbnQzMl90IGV4dGVuZGVkX3NpemU7CiAgX191aW50NjRf dCB4c3RhdGVfYnY7CiAgX191aW50MzJfdCB4c3RhdGVfc2l6ZTsKICBfX3VpbnQzMl90IHBh ZGRpbmdbN107Cn07CgpzdHJ1Y3QgX2ZwcmVnCnsKICB1bnNpZ25lZCBzaG9ydCBzaWduaWZp Y2FuZFs0XTsKICB1bnNpZ25lZCBzaG9ydCBleHBvbmVudDsKfTsKCnN0cnVjdCBfZnB4cmVn CnsKICB1bnNpZ25lZCBzaG9ydCBzaWduaWZpY2FuZFs0XTsKICB1bnNpZ25lZCBzaG9ydCBl eHBvbmVudDsKICB1bnNpZ25lZCBzaG9ydCBwYWRkaW5nWzNdOwp9OwoKc3RydWN0IF94bW1y ZWcKewogIF9fdWludDMyX3QgZWxlbWVudFs0XTsKfTsKCgoKCgpzdHJ1Y3QgX2Zwc3RhdGUK ewoKICBfX3VpbnQzMl90IGN3OwogIF9fdWludDMyX3Qgc3c7CiAgX191aW50MzJfdCB0YWc7 CiAgX191aW50MzJfdCBpcG9mZjsKICBfX3VpbnQzMl90IGNzc2VsOwogIF9fdWludDMyX3Qg ZGF0YW9mZjsKICBfX3VpbnQzMl90IGRhdGFzZWw7CiAgc3RydWN0IF9mcHJlZyBfc3RbOF07 CiAgdW5zaWduZWQgc2hvcnQgc3RhdHVzOwogIHVuc2lnbmVkIHNob3J0IG1hZ2ljOwoKCiAg X191aW50MzJfdCBfZnhzcl9lbnZbNl07CiAgX191aW50MzJfdCBteGNzcjsKICBfX3VpbnQz Ml90IHJlc2VydmVkOwogIHN0cnVjdCBfZnB4cmVnIF9meHNyX3N0WzhdOwogIHN0cnVjdCBf eG1tcmVnIF94bW1bOF07CiAgX191aW50MzJfdCBwYWRkaW5nWzU2XTsKfTsKIyA5MyAiL3Vz ci9pbmNsdWRlL2JpdHMvc2lnY29udGV4dC5oIiAzIDQKc3RydWN0IHNpZ2NvbnRleHQKewog IHVuc2lnbmVkIHNob3J0IGdzLCBfX2dzaDsKICB1bnNpZ25lZCBzaG9ydCBmcywgX19mc2g7 CiAgdW5zaWduZWQgc2hvcnQgZXMsIF9fZXNoOwogIHVuc2lnbmVkIHNob3J0IGRzLCBfX2Rz aDsKICB1bnNpZ25lZCBsb25nIGVkaTsKICB1bnNpZ25lZCBsb25nIGVzaTsKICB1bnNpZ25l ZCBsb25nIGVicDsKICB1bnNpZ25lZCBsb25nIGVzcDsKICB1bnNpZ25lZCBsb25nIGVieDsK ICB1bnNpZ25lZCBsb25nIGVkeDsKICB1bnNpZ25lZCBsb25nIGVjeDsKICB1bnNpZ25lZCBs b25nIGVheDsKICB1bnNpZ25lZCBsb25nIHRyYXBubzsKICB1bnNpZ25lZCBsb25nIGVycjsK ICB1bnNpZ25lZCBsb25nIGVpcDsKICB1bnNpZ25lZCBzaG9ydCBjcywgX19jc2g7CiAgdW5z aWduZWQgbG9uZyBlZmxhZ3M7CiAgdW5zaWduZWQgbG9uZyBlc3BfYXRfc2lnbmFsOwogIHVu c2lnbmVkIHNob3J0IHNzLCBfX3NzaDsKICBzdHJ1Y3QgX2Zwc3RhdGUgKiBmcHN0YXRlOwog IHVuc2lnbmVkIGxvbmcgb2xkbWFzazsKICB1bnNpZ25lZCBsb25nIGNyMjsKfTsKIyAxNzUg Ii91c3IvaW5jbHVkZS9iaXRzL3NpZ2NvbnRleHQuaCIgMyA0CnN0cnVjdCBfeHNhdmVfaGRy CnsKICBfX3VpbnQ2NF90IHhzdGF0ZV9idjsKICBfX3VpbnQ2NF90IHJlc2VydmVkMVsyXTsK ICBfX3VpbnQ2NF90IHJlc2VydmVkMls1XTsKfTsKCnN0cnVjdCBfeW1taF9zdGF0ZQp7CiAg X191aW50MzJfdCB5bW1oX3NwYWNlWzY0XTsKfTsKCnN0cnVjdCBfeHN0YXRlCnsKICBzdHJ1 Y3QgX2Zwc3RhdGUgZnBzdGF0ZTsKICBzdHJ1Y3QgX3hzYXZlX2hkciB4c3RhdGVfaGRyOwog IHN0cnVjdCBfeW1taF9zdGF0ZSB5bW1oOwp9OwojIDMwNyAiL3Vzci9pbmNsdWRlL3NpZ25h bC5oIiAyIDMgNAoKCmV4dGVybiBpbnQgc2lncmV0dXJuIChzdHJ1Y3Qgc2lnY29udGV4dCAq X19zY3ApIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoK CiMgMSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUvc3Rk ZGVmLmgiIDEgMyA0CiMgMzE3ICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDIgMyA0CgoKCgpl eHRlcm4gaW50IHNpZ2ludGVycnVwdCAoaW50IF9fc2lnLCBpbnQgX19pbnRlcnJ1cHQpIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgojIDEgIi91c3IvaW5j bHVkZS9iaXRzL3NpZ3N0YWNrLmgiIDEgMyA0CiMgMjUgIi91c3IvaW5jbHVkZS9iaXRzL3Np Z3N0YWNrLmgiIDMgNApzdHJ1Y3Qgc2lnc3RhY2sKICB7CiAgICB2b2lkICpzc19zcDsKICAg IGludCBzc19vbnN0YWNrOwogIH07CgoKCmVudW0KewogIFNTX09OU1RBQ0sgPSAxLAoKICBT U19ESVNBQkxFCgp9OwojIDQ5ICIvdXNyL2luY2x1ZGUvYml0cy9zaWdzdGFjay5oIiAzIDQK dHlwZWRlZiBzdHJ1Y3Qgc2lnYWx0c3RhY2sKICB7CiAgICB2b2lkICpzc19zcDsKICAgIGlu dCBzc19mbGFnczsKICAgIHNpemVfdCBzc19zaXplOwogIH0gc3RhY2tfdDsKIyAzMjQgIi91 c3IvaW5jbHVkZS9zaWduYWwuaCIgMiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdWNv bnRleHQuaCIgMSAzIDQKIyAyMiAiL3Vzci9pbmNsdWRlL3N5cy91Y29udGV4dC5oIiAzIDQK IyAxICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDEgMyA0CiMgMjMgIi91c3IvaW5jbHVkZS9z eXMvdWNvbnRleHQuaCIgMiAzIDQKIyAxNDYgIi91c3IvaW5jbHVkZS9zeXMvdWNvbnRleHQu aCIgMyA0CnR5cGVkZWYgaW50IGdyZWdfdDsKCgoKCgp0eXBlZGVmIGdyZWdfdCBncmVnc2V0 X3RbMTldOwojIDIwMCAiL3Vzci9pbmNsdWRlL3N5cy91Y29udGV4dC5oIiAzIDQKc3RydWN0 IF9saWJjX2ZwcmVnCnsKICB1bnNpZ25lZCBzaG9ydCBpbnQgc2lnbmlmaWNhbmRbNF07CiAg dW5zaWduZWQgc2hvcnQgaW50IGV4cG9uZW50Owp9OwoKc3RydWN0IF9saWJjX2Zwc3RhdGUK ewogIHVuc2lnbmVkIGxvbmcgaW50IGN3OwogIHVuc2lnbmVkIGxvbmcgaW50IHN3OwogIHVu c2lnbmVkIGxvbmcgaW50IHRhZzsKICB1bnNpZ25lZCBsb25nIGludCBpcG9mZjsKICB1bnNp Z25lZCBsb25nIGludCBjc3NlbDsKICB1bnNpZ25lZCBsb25nIGludCBkYXRhb2ZmOwogIHVu c2lnbmVkIGxvbmcgaW50IGRhdGFzZWw7CiAgc3RydWN0IF9saWJjX2ZwcmVnIF9zdFs4XTsK ICB1bnNpZ25lZCBsb25nIGludCBzdGF0dXM7Cn07CgoKdHlwZWRlZiBzdHJ1Y3QgX2xpYmNf ZnBzdGF0ZSAqZnByZWdzZXRfdDsKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGdyZWdzZXRf dCBncmVnczsKCgogICAgZnByZWdzZXRfdCBmcHJlZ3M7CiAgICB1bnNpZ25lZCBsb25nIGlu dCBvbGRtYXNrOwogICAgdW5zaWduZWQgbG9uZyBpbnQgY3IyOwogIH0gbWNvbnRleHRfdDsK Cgp0eXBlZGVmIHN0cnVjdCB1Y29udGV4dAogIHsKICAgIHVuc2lnbmVkIGxvbmcgaW50IHVj X2ZsYWdzOwogICAgc3RydWN0IHVjb250ZXh0ICp1Y19saW5rOwogICAgc3RhY2tfdCB1Y19z dGFjazsKICAgIG1jb250ZXh0X3QgdWNfbWNvbnRleHQ7CiAgICBfX3NpZ3NldF90IHVjX3Np Z21hc2s7CiAgICBzdHJ1Y3QgX2xpYmNfZnBzdGF0ZSBfX2ZwcmVnc19tZW07CiAgfSB1Y29u dGV4dF90OwojIDMyNyAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAyIDMgNAoKCgoKCmV4dGVy biBpbnQgc2lnc3RhY2sgKHN0cnVjdCBzaWdzdGFjayAqX19zcywgc3RydWN0IHNpZ3N0YWNr ICpfX29zcykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp IF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpOwoKCgpleHRlcm4gaW50IHNpZ2Fs dHN0YWNrIChjb25zdCBzdHJ1Y3Qgc2lnYWx0c3RhY2sgKl9fcmVzdHJpY3QgX19zcywKICAg c3RydWN0IHNpZ2FsdHN0YWNrICpfX3Jlc3RyaWN0IF9fb3NzKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpOwojIDM2MiAiL3Vzci9pbmNsdWRlL3NpZ25hbC5o IiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zaWd0aHJlYWQuaCIgMSAzIDQKIyAzMCAi L3Vzci9pbmNsdWRlL2JpdHMvc2lndGhyZWFkLmgiIDMgNApleHRlcm4gaW50IHB0aHJlYWRf c2lnbWFzayAoaW50IF9faG93LAogICAgICAgY29uc3QgX19zaWdzZXRfdCAqX19yZXN0cmlj dCBfX25ld21hc2ssCiAgICAgICBfX3NpZ3NldF90ICpfX3Jlc3RyaWN0IF9fb2xkbWFzaylf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBpbnQg cHRocmVhZF9raWxsIChwdGhyZWFkX3QgX190aHJlYWRpZCwgaW50IF9fc2lnbm8pIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgMzYzICIvdXNyL2luY2x1 ZGUvc2lnbmFsLmgiIDIgMyA0CgoKCgoKCmV4dGVybiBpbnQgX19saWJjX2N1cnJlbnRfc2ln cnRtaW4gKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7 CgpleHRlcm4gaW50IF9fbGliY19jdXJyZW50X3NpZ3J0bWF4ICh2b2lkKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKIyA0MiAibWFjaGluZS5jIiAy CiMgMSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDEgMyA0CiMgMzEgIi91c3IvaW5jbHVkZS9l cnJuby5oIiAzIDQKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMSAzIDQK IyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRl L2xpbnV4L2Vycm5vLmgiIDEgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2FzbS9lcnJuby5oIiAx IDMgNAojIDEgIi91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby5oIiAxIDMgNAoKCgoj IDEgIi91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby1iYXNlLmgiIDEgMyA0CiMgNSAi L3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2Vycm5vLmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNs dWRlL2FzbS9lcnJuby5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9saW51eC9lcnJuby5o IiAyIDMgNAojIDI1ICIvdXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAyIDMgNAojIDUwICIv dXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAzIDQKZXh0ZXJuIGludCAqX19lcnJub19sb2Nh dGlvbiAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBf X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgMzYgIi91c3IvaW5jbHVkZS9lcnJuby5o IiAyIDMgNAojIDU4ICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMyA0CgojIDQzICJtYWNoaW5l LmMiIDIKIyAxICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMSAzIDQKIyAyOCAiL3Vzci9pbmNs dWRlL2ZjbnRsLmgiIDMgNAoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9mY250bC5o IiAxIDMgNAojIDM1ICIvdXNyL2luY2x1ZGUvYml0cy9mY250bC5oIiAzIDQKc3RydWN0IGZs b2NrCiAgewogICAgc2hvcnQgaW50IGxfdHlwZTsKICAgIHNob3J0IGludCBsX3doZW5jZTsK CiAgICBfX29mZl90IGxfc3RhcnQ7CiAgICBfX29mZl90IGxfbGVuOwoKCgoKICAgIF9fcGlk X3QgbF9waWQ7CiAgfTsKIyA2MSAiL3Vzci9pbmNsdWRlL2JpdHMvZmNudGwuaCIgMyA0CiMg MSAiL3Vzci9pbmNsdWRlL2JpdHMvZmNudGwtbGludXguaCIgMSAzIDQKIyAzNDUgIi91c3Iv aW5jbHVkZS9iaXRzL2ZjbnRsLWxpbnV4LmgiIDMgNAoKIyA0MTkgIi91c3IvaW5jbHVkZS9i aXRzL2ZjbnRsLWxpbnV4LmgiIDMgNAoKIyA2MSAiL3Vzci9pbmNsdWRlL2JpdHMvZmNudGwu aCIgMiAzIDQKIyAzNiAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDIgMyA0CiMgNzYgIi91c3Iv aW5jbHVkZS9mY250bC5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMgNAoj IDc3ICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0 cy9zdGF0LmgiIDEgMyA0CiMgNDYgIi91c3IvaW5jbHVkZS9iaXRzL3N0YXQuaCIgMyA0CnN0 cnVjdCBzdGF0CiAgewogICAgX19kZXZfdCBzdF9kZXY7CgogICAgdW5zaWduZWQgc2hvcnQg aW50IF9fcGFkMTsKCgogICAgX19pbm9fdCBzdF9pbm87CgoKCgogICAgX19tb2RlX3Qgc3Rf bW9kZTsKICAgIF9fbmxpbmtfdCBzdF9ubGluazsKCgoKCiAgICBfX3VpZF90IHN0X3VpZDsK ICAgIF9fZ2lkX3Qgc3RfZ2lkOwoKCgogICAgX19kZXZfdCBzdF9yZGV2OwoKICAgIHVuc2ln bmVkIHNob3J0IGludCBfX3BhZDI7CgoKICAgIF9fb2ZmX3Qgc3Rfc2l6ZTsKCgoKICAgIF9f Ymxrc2l6ZV90IHN0X2Jsa3NpemU7CgogICAgX19ibGtjbnRfdCBzdF9ibG9ja3M7CiMgOTEg Ii91c3IvaW5jbHVkZS9iaXRzL3N0YXQuaCIgMyA0CiAgICBzdHJ1Y3QgdGltZXNwZWMgc3Rf YXRpbTsKICAgIHN0cnVjdCB0aW1lc3BlYyBzdF9tdGltOwogICAgc3RydWN0IHRpbWVzcGVj IHN0X2N0aW07CiMgMTA5ICIvdXNyL2luY2x1ZGUvYml0cy9zdGF0LmgiIDMgNAogICAgdW5z aWduZWQgbG9uZyBpbnQgX19nbGliY19yZXNlcnZlZDQ7CiAgICB1bnNpZ25lZCBsb25nIGlu dCBfX2dsaWJjX3Jlc2VydmVkNTsKCgoKCiAgfTsKIyA3OCAiL3Vzci9pbmNsdWRlL2ZjbnRs LmgiIDIgMyA0CiMgMTY5ICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMyA0CmV4dGVybiBpbnQg ZmNudGwgKGludCBfX2ZkLCBpbnQgX19jbWQsIC4uLik7CiMgMTc5ICIvdXNyL2luY2x1ZGUv ZmNudGwuaCIgMyA0CmV4dGVybiBpbnQgb3BlbiAoY29uc3QgY2hhciAqX19maWxlLCBpbnQg X19vZmxhZywgLi4uKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CiMgMjAz ICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMyA0CmV4dGVybiBpbnQgb3BlbmF0IChpbnQgX19m ZCwgY29uc3QgY2hhciAqX19maWxlLCBpbnQgX19vZmxhZywgLi4uKQogICAgIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKIyAyMjUgIi91c3IvaW5jbHVkZS9mY250bC5o IiAzIDQKZXh0ZXJuIGludCBjcmVhdCAoY29uc3QgY2hhciAqX19maWxlLCBtb2RlX3QgX19t b2RlKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CiMgMjU0ICIvdXNyL2lu Y2x1ZGUvZmNudGwuaCIgMyA0CmV4dGVybiBpbnQgbG9ja2YgKGludCBfX2ZkLCBpbnQgX19j bWQsIG9mZl90IF9fbGVuKTsKIyAyNzEgIi91c3IvaW5jbHVkZS9mY250bC5oIiAzIDQKZXh0 ZXJuIGludCBwb3NpeF9mYWR2aXNlIChpbnQgX19mZCwgb2ZmX3QgX19vZmZzZXQsIG9mZl90 IF9fbGVuLAogICAgIGludCBfX2FkdmlzZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKTsKIyAyOTMgIi91c3IvaW5jbHVkZS9mY250bC5oIiAzIDQKZXh0ZXJu IGludCBwb3NpeF9mYWxsb2NhdGUgKGludCBfX2ZkLCBvZmZfdCBfX29mZnNldCwgb2ZmX3Qg X19sZW4pOwojIDMxNSAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMgNAoKIyA0NCAibWFjaGlu ZS5jIiAyCiMgMSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDEgMyA0CiMgMjggIi91c3IvaW5j bHVkZS9jdHlwZS5oIiAzIDQKCiMgNDYgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzIDQKZW51 bQp7CiAgX0lTdXBwZXIgPSAoKDApIDwgOCA/ICgoMSA8PCAoMCkpIDw8IDgpIDogKCgxIDw8 ICgwKSkgPj4gOCkpLAogIF9JU2xvd2VyID0gKCgxKSA8IDggPyAoKDEgPDwgKDEpKSA8PCA4 KSA6ICgoMSA8PCAoMSkpID4+IDgpKSwKICBfSVNhbHBoYSA9ICgoMikgPCA4ID8gKCgxIDw8 ICgyKSkgPDwgOCkgOiAoKDEgPDwgKDIpKSA+PiA4KSksCiAgX0lTZGlnaXQgPSAoKDMpIDwg OCA/ICgoMSA8PCAoMykpIDw8IDgpIDogKCgxIDw8ICgzKSkgPj4gOCkpLAogIF9JU3hkaWdp dCA9ICgoNCkgPCA4ID8gKCgxIDw8ICg0KSkgPDwgOCkgOiAoKDEgPDwgKDQpKSA+PiA4KSks CiAgX0lTc3BhY2UgPSAoKDUpIDwgOCA/ICgoMSA8PCAoNSkpIDw8IDgpIDogKCgxIDw8ICg1 KSkgPj4gOCkpLAogIF9JU3ByaW50ID0gKCg2KSA8IDggPyAoKDEgPDwgKDYpKSA8PCA4KSA6 ICgoMSA8PCAoNikpID4+IDgpKSwKICBfSVNncmFwaCA9ICgoNykgPCA4ID8gKCgxIDw8ICg3 KSkgPDwgOCkgOiAoKDEgPDwgKDcpKSA+PiA4KSksCiAgX0lTYmxhbmsgPSAoKDgpIDwgOCA/ ICgoMSA8PCAoOCkpIDw8IDgpIDogKCgxIDw8ICg4KSkgPj4gOCkpLAogIF9JU2NudHJsID0g KCg5KSA8IDggPyAoKDEgPDwgKDkpKSA8PCA4KSA6ICgoMSA8PCAoOSkpID4+IDgpKSwKICBf SVNwdW5jdCA9ICgoMTApIDwgOCA/ICgoMSA8PCAoMTApKSA8PCA4KSA6ICgoMSA8PCAoMTAp KSA+PiA4KSksCiAgX0lTYWxudW0gPSAoKDExKSA8IDggPyAoKDEgPDwgKDExKSkgPDwgOCkg OiAoKDEgPDwgKDExKSkgPj4gOCkpCn07CiMgNzkgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAz IDQKZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IGludCAqKl9fY3R5cGVfYl9sb2MgKHZv aWQpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBjb25zdCBfX2ludDMyX3QgKipfX2N0 eXBlX3RvbG93ZXJfbG9jICh2b2lkKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gY29u c3QgX19pbnQzMl90ICoqX19jdHlwZV90b3VwcGVyX2xvYyAodm9pZCkKICAgICBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2Nv bnN0X18pKTsKIyAxMDQgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzIDQKCgoKCgoKZXh0ZXJu IGludCBpc2FsbnVtIChpbnQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSk7CmV4dGVybiBpbnQgaXNhbHBoYSAoaW50KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwpleHRlcm4gaW50IGlzY250cmwgKGludCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGludCBpc2RpZ2l0IChp bnQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CmV4dGVybiBp bnQgaXNsb3dlciAoaW50KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpOwpleHRlcm4gaW50IGlzZ3JhcGggKGludCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGludCBpc3ByaW50IChpbnQpIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CmV4dGVybiBpbnQgaXNwdW5jdCAoaW50 KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwpleHRlcm4gaW50 IGlzc3BhY2UgKGludCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KTsKZXh0ZXJuIGludCBpc3VwcGVyIChpbnQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSk7CmV4dGVybiBpbnQgaXN4ZGlnaXQgKGludCkgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKZXh0ZXJuIGludCB0b2xvd2VyIChp bnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4 dGVybiBpbnQgdG91cHBlciAoaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKTsKCgoKCgoKCgpleHRlcm4gaW50IGlzYmxhbmsgKGludCkgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgojIDE1MCAiL3Vzci9pbmNs dWRlL2N0eXBlLmgiIDMgNApleHRlcm4gaW50IGlzYXNjaWkgKGludCBfX2MpIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiBpbnQgdG9hc2Np aSAoaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK CgoKZXh0ZXJuIGludCBfdG91cHBlciAoaW50KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpOwpleHRlcm4gaW50IF90b2xvd2VyIChpbnQpIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgMjU3ICIvdXNyL2luY2x1ZGUvY3R5 cGUuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3hsb2NhbGUuaCIgMSAzIDQKIyAyNyAiL3Vz ci9pbmNsdWRlL3hsb2NhbGUuaCIgMyA0CnR5cGVkZWYgc3RydWN0IF9fbG9jYWxlX3N0cnVj dAp7CgogIHN0cnVjdCBfX2xvY2FsZV9kYXRhICpfX2xvY2FsZXNbMTNdOwoKCiAgY29uc3Qg dW5zaWduZWQgc2hvcnQgaW50ICpfX2N0eXBlX2I7CiAgY29uc3QgaW50ICpfX2N0eXBlX3Rv bG93ZXI7CiAgY29uc3QgaW50ICpfX2N0eXBlX3RvdXBwZXI7CgoKICBjb25zdCBjaGFyICpf X25hbWVzWzEzXTsKfSAqX19sb2NhbGVfdDsKCgp0eXBlZGVmIF9fbG9jYWxlX3QgbG9jYWxl X3Q7CiMgMjU4ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMiAzIDQKIyAyNzEgIi91c3IvaW5j bHVkZS9jdHlwZS5oIiAzIDQKZXh0ZXJuIGludCBpc2FsbnVtX2wgKGludCwgX19sb2NhbGVf dCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGlu dCBpc2FscGhhX2wgKGludCwgX19sb2NhbGVfdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGludCBpc2NudHJsX2wgKGludCwgX19sb2NhbGVf dCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGlu dCBpc2RpZ2l0X2wgKGludCwgX19sb2NhbGVfdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGludCBpc2xvd2VyX2wgKGludCwgX19sb2NhbGVf dCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGlu dCBpc2dyYXBoX2wgKGludCwgX19sb2NhbGVfdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGludCBpc3ByaW50X2wgKGludCwgX19sb2NhbGVf dCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGlu dCBpc3B1bmN0X2wgKGludCwgX19sb2NhbGVfdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGludCBpc3NwYWNlX2wgKGludCwgX19sb2NhbGVf dCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGlu dCBpc3VwcGVyX2wgKGludCwgX19sb2NhbGVfdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGludCBpc3hkaWdpdF9sIChpbnQsIF9fbG9jYWxl X3QpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgpleHRlcm4g aW50IGlzYmxhbmtfbCAoaW50LCBfX2xvY2FsZV90KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwoKCgpleHRlcm4gaW50IF9fdG9sb3dlcl9sIChpbnQgX19j LCBfX2xvY2FsZV90IF9fbCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKTsKZXh0ZXJuIGludCB0b2xvd2VyX2wgKGludCBfX2MsIF9fbG9jYWxlX3QgX19sKSBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBpbnQg X190b3VwcGVyX2wgKGludCBfX2MsIF9fbG9jYWxlX3QgX19sKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpOwpleHRlcm4gaW50IHRvdXBwZXJfbCAoaW50IF9f YywgX19sb2NhbGVfdCBfX2wpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSk7CiMgMzQ3ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMyA0CgojIDQ1ICJtYWNoaW5l LmMiIDIKIyAxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMyA0CiMgMjcgIi91c3IvaW5j bHVkZS9zdHJpbmcuaCIgMyA0CgoKCgoKIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQt bGludXgvNi4xLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAzMyAiL3Vzci9pbmNsdWRl L3N0cmluZy5oIiAyIDMgNAoKCgoKCgoKCgpleHRlcm4gdm9pZCAqbWVtY3B5ICh2b2lkICpf X3Jlc3RyaWN0IF9fZGVzdCwgY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywKICAgICAg IHNpemVfdCBfX24pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiB2b2lkICpt ZW1tb3ZlICh2b2lkICpfX2Rlc3QsIGNvbnN0IHZvaWQgKl9fc3JjLCBzaXplX3QgX19uKQog ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKCgpleHRlcm4gdm9pZCAqbWVtY2Nw eSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsIGNvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19z cmMsCiAgICAgICAgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSwgMikpKTsKCgoKCgpleHRlcm4gdm9pZCAqbWVtc2V0ICh2b2lkICpfX3MsIGludCBfX2Ms IHNpemVfdCBfX24pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgbWVtY21w IChjb25zdCB2b2lkICpfX3MxLCBjb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogICAg IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoj IDkyICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNApleHRlcm4gdm9pZCAqbWVtY2hyIChj b25zdCB2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCiMgMTIzICIvdXNyL2lu Y2x1ZGUvc3RyaW5nLmgiIDMgNAoKCmV4dGVybiBjaGFyICpzdHJjcHkgKGNoYXIgKl9fcmVz dHJpY3QgX19kZXN0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f bm9ubnVsbF9fICgxLCAyKSkpOwoKZXh0ZXJuIGNoYXIgKnN0cm5jcHkgKGNoYXIgKl9fcmVz dHJpY3QgX19kZXN0LAogICAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNp emVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJuIGNoYXIg KnN0cmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19zcmMpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgpleHRlcm4gY2hhciAq c3RybmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19zcmMsCiAgICAgICAgc2l6ZV90IF9fbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7 CgoKZXh0ZXJuIGludCBzdHJjbXAgKGNvbnN0IGNoYXIgKl9fczEsIGNvbnN0IGNoYXIgKl9f czIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEs IDIpKSk7CgpleHRlcm4gaW50IHN0cm5jbXAgKGNvbnN0IGNoYXIgKl9fczEsIGNvbnN0IGNo YXIgKl9fczIsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJuIGludCBzdHJjb2xsIChjb25zdCBj aGFyICpfX3MxLCBjb25zdCBjaGFyICpfX3MyKQogICAgIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJt IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX3NyYywgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCiMg MTYyICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNApleHRlcm4gaW50IHN0cmNvbGxfbCAo Y29uc3QgY2hhciAqX19zMSwgY29uc3QgY2hhciAqX19zMiwgX19sb2NhbGVfdCBfX2wpCiAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0 ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIsIDMp KSk7CgpleHRlcm4gc2l6ZV90IHN0cnhmcm1fbCAoY2hhciAqX19kZXN0LCBjb25zdCBjaGFy ICpfX3NyYywgc2l6ZV90IF9fbiwKICAgIF9fbG9jYWxlX3QgX19sKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf XyAoMiwgNCkpKTsKCgoKCmV4dGVybiBjaGFyICpzdHJkdXAgKGNvbnN0IGNoYXIgKl9fcykK ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli dXRlX18gKChfX21hbGxvY19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkp OwoKCgoKCgpleHRlcm4gY2hhciAqc3RybmR1cCAoY29uc3QgY2hhciAqX19zdHJpbmcsIHNp emVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSkpKTsKIyAyMDYgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CgojIDIzMSAi L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKZXh0ZXJuIGNoYXIgKnN0cmNociAoY29uc3Qg Y2hhciAqX19zLCBpbnQgX19jKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxKSkpOwojIDI1OCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQK ZXh0ZXJuIGNoYXIgKnN0cnJjaHIgKGNvbnN0IGNoYXIgKl9fcywgaW50IF9fYykKICAgICBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18g KChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgojIDI3 NyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKCgoKZXh0ZXJuIHNpemVfdCBzdHJjc3Bu IChjb25zdCBjaGFyICpfX3MsIGNvbnN0IGNoYXIgKl9fcmVqZWN0KQogICAgIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVy ZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBz aXplX3Qgc3Ryc3BuIChjb25zdCBjaGFyICpfX3MsIGNvbnN0IGNoYXIgKl9fYWNjZXB0KQog ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkp OwojIDMxMCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKZXh0ZXJuIGNoYXIgKnN0cnBi cmsgKGNvbnN0IGNoYXIgKl9fcywgY29uc3QgY2hhciAqX19hY2NlcHQpCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19w dXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CiMgMzM3ICIv dXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNApleHRlcm4gY2hhciAqc3Ryc3RyIChjb25zdCBj aGFyICpfX2hheXN0YWNrLCBjb25zdCBjaGFyICpfX25lZWRsZSkKICAgICBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVf XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgoKCmV4dGVybiBj aGFyICpzdHJ0b2sgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBjb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fZGVsaW0pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgoKCgpleHRlcm4gY2hh ciAqX19zdHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICBjb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fZGVsaW0sCiAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKQog ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgyLCAzKSkpOwoKZXh0ZXJuIGNoYXIgKnN0cnRva19yIChj aGFyICpfX3Jlc3RyaWN0IF9fcywgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAog ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKQogICAgIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgyLCAzKSkpOwojIDM5MiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKCgpleHRl cm4gc2l6ZV90IHN0cmxlbiAoY29uc3QgY2hhciAqX19zKQogICAgIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCmV4dGVybiBzaXplX3Qg c3RybmxlbiAoY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX21heGxlbikKICAgICBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18g KChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgpl eHRlcm4gY2hhciAqc3RyZXJyb3IgKGludCBfX2Vycm51bSkgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKTsKCiMgNDIyICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgi IDMgNApleHRlcm4gaW50IHN0cmVycm9yX3IgKGludCBfX2Vycm51bSwgY2hhciAqX19idWYs IHNpemVfdCBfX2J1ZmxlbikgX19hc21fXyAoIiIgIl9feHBnX3N0cmVycm9yX3IiKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpCgogICAgICAgICAgICAgICAg ICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CiMgNDQwICIvdXNy L2luY2x1ZGUvc3RyaW5nLmgiIDMgNApleHRlcm4gY2hhciAqc3RyZXJyb3JfbCAoaW50IF9f ZXJybnVtLCBfX2xvY2FsZV90IF9fbCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKTsKCgoKCgpleHRlcm4gdm9pZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNpemVf dCBfX24pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgpleHRlcm4gdm9pZCBiY29weSAoY29u c3Qgdm9pZCAqX19zcmMsIHZvaWQgKl9fZGVzdCwgc2l6ZV90IF9fbikKICAgICBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gdm9pZCBiemVybyAodm9pZCAqX19zLCBzaXpl X3QgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IGJjbXAgKGNvbnN0 IHZvaWQgKl9fczEsIGNvbnN0IHZvaWQgKl9fczIsIHNpemVfdCBfX24pCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19w dXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CiMgNDg0ICIv dXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNApleHRlcm4gY2hhciAqaW5kZXggKGNvbnN0IGNo YXIgKl9fcywgaW50IF9fYykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMSkpKTsKIyA1MTIgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CmV4 dGVybiBjaGFyICpyaW5kZXggKGNvbnN0IGNoYXIgKl9fcywgaW50IF9fYykKICAgICBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChf X3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCmV4dGVy biBpbnQgZmZzIChpbnQgX19pKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKIyA1MjkgIi91c3IvaW5jbHVk ZS9zdHJpbmcuaCIgMyA0CmV4dGVybiBpbnQgc3RyY2FzZWNtcCAoY29uc3QgY2hhciAqX19z MSwgY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gaW50IHN0cm5jYXNlY21wIChjb25z dCBjaGFyICpfX3MxLCBjb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f cHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwojIDU1MiAi L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKZXh0ZXJuIGNoYXIgKnN0cnNlcCAoY2hhciAq Kl9fcmVzdHJpY3QgX19zdHJpbmdwLAogICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBf X2RlbGltKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKZXh0ZXJuIGNoYXIg KnN0cnNpZ25hbCAoaW50IF9fc2lnKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwoKCmV4dGVybiBjaGFyICpfX3N0cGNweSAoY2hhciAqX19yZXN0cmljdCBf X2Rlc3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEsIDIpKSk7CmV4dGVybiBjaGFyICpzdHBjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19k ZXN0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f ICgxLCAyKSkpOwoKCgpleHRlcm4gY2hhciAqX19zdHBuY3B5IChjaGFyICpfX3Jlc3RyaWN0 IF9fZGVzdCwKICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikK ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKZXh0ZXJuIGNoYXIgKnN0cG5jcHkgKGNo YXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg X19zcmMsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CiMgNjU4 ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNAoKIyA0NiAibWFjaGluZS5jIiAyCiMgMSAi L3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzIDQKIyAyOSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIg MyA0CgoKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEv aW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAzOCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAz IDQKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDEgMyA0CiMgNDIgIi91c3Iv aW5jbHVkZS90aW1lLmgiIDIgMyA0CiMgMTMxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQK CgpzdHJ1Y3QgdG0KewogIGludCB0bV9zZWM7CiAgaW50IHRtX21pbjsKICBpbnQgdG1faG91 cjsKICBpbnQgdG1fbWRheTsKICBpbnQgdG1fbW9uOwogIGludCB0bV95ZWFyOwogIGludCB0 bV93ZGF5OwogIGludCB0bV95ZGF5OwogIGludCB0bV9pc2RzdDsKCgogIGxvbmcgaW50IHRt X2dtdG9mZjsKICBjb25zdCBjaGFyICp0bV96b25lOwoKCgoKfTsKCgoKCgoKCgpzdHJ1Y3Qg aXRpbWVyc3BlYwogIHsKICAgIHN0cnVjdCB0aW1lc3BlYyBpdF9pbnRlcnZhbDsKICAgIHN0 cnVjdCB0aW1lc3BlYyBpdF92YWx1ZTsKICB9OwoKCnN0cnVjdCBzaWdldmVudDsKIyAxODYg Ii91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAoKCgpleHRlcm4gY2xvY2tfdCBjbG9jayAodm9p ZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgpleHRlcm4g dGltZV90IHRpbWUgKHRpbWVfdCAqX190aW1lcikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKCgpleHRlcm4gZG91YmxlIGRpZmZ0aW1lICh0aW1lX3QgX190 aW1lMSwgdGltZV90IF9fdGltZTApCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIHRp bWVfdCBta3RpbWUgKHN0cnVjdCB0bSAqX190cCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKCgoKCgpleHRlcm4gc2l6ZV90IHN0cmZ0aW1lIChjaGFyICpf X3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4c2l6ZSwKICAgY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX2Zvcm1hdCwKICAgY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgojIDIyMyAiL3Vzci9p bmNsdWRlL3RpbWUuaCIgMyA0CmV4dGVybiBzaXplX3Qgc3RyZnRpbWVfbCAoY2hhciAqX19y ZXN0cmljdCBfX3MsIHNpemVfdCBfX21heHNpemUsCiAgICAgY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX2Zvcm1hdCwKICAgICBjb25zdCBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCwK ICAgICBfX2xvY2FsZV90IF9fbG9jKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwojIDIzNiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CgoKCmV4dGVybiBz dHJ1Y3QgdG0gKmdtdGltZSAoY29uc3QgdGltZV90ICpfX3RpbWVyKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgpleHRlcm4gc3RydWN0IHRtICpsb2Nh bHRpbWUgKGNvbnN0IHRpbWVfdCAqX190aW1lcikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKCgoKCgpleHRlcm4gc3RydWN0IHRtICpnbXRpbWVfciAoY29u c3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCiAgICAgICBzdHJ1Y3QgdG0gKl9fcmVz dHJpY3QgX190cCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK CgoKZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lX3IgKGNvbnN0IHRpbWVfdCAqX19yZXN0 cmljdCBfX3RpbWVyLAogICAgICAgICAgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKZXh0ZXJuIGNo YXIgKmFzY3RpbWUgKGNvbnN0IHN0cnVjdCB0bSAqX190cCkgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKTsKCgpleHRlcm4gY2hhciAqY3RpbWUgKGNvbnN0IHRp bWVfdCAqX190aW1lcikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KTsKCgoKCgoKCmV4dGVybiBjaGFyICphc2N0aW1lX3IgKGNvbnN0IHN0cnVjdCB0bSAqX19y ZXN0cmljdCBfX3RwLAogICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBjaGFyICpjdGltZV9yIChj b25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKICAgICAgICBjaGFyICpfX3Jlc3Ry aWN0IF9fYnVmKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoK CgoKZXh0ZXJuIGNoYXIgKl9fdHpuYW1lWzJdOwpleHRlcm4gaW50IF9fZGF5bGlnaHQ7CmV4 dGVybiBsb25nIGludCBfX3RpbWV6b25lOwoKCgoKZXh0ZXJuIGNoYXIgKnR6bmFtZVsyXTsK CgoKZXh0ZXJuIHZvaWQgdHpzZXQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiBpbnQgZGF5bGlnaHQ7CmV4dGVybiBsb25nIGlu dCB0aW1lem9uZTsKCgoKCgpleHRlcm4gaW50IHN0aW1lIChjb25zdCB0aW1lX3QgKl9fd2hl bikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKIyAzMTkgIi91 c3IvaW5jbHVkZS90aW1lLmgiIDMgNApleHRlcm4gdGltZV90IHRpbWVnbSAoc3RydWN0IHRt ICpfX3RwKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4 dGVybiB0aW1lX3QgdGltZWxvY2FsIChzdHJ1Y3QgdG0gKl9fdHApIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0ZXJuIGludCBkeXNpemUgKGludCBf X3llYXIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDMzNCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0 CmV4dGVybiBpbnQgbmFub3NsZWVwIChjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVxdWVz dGVkX3RpbWUsCiAgICAgICAgc3RydWN0IHRpbWVzcGVjICpfX3JlbWFpbmluZyk7CgoKCmV4 dGVybiBpbnQgY2xvY2tfZ2V0cmVzIChjbG9ja2lkX3QgX19jbG9ja19pZCwgc3RydWN0IHRp bWVzcGVjICpfX3JlcykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KTsKCgpleHRlcm4gaW50IGNsb2NrX2dldHRpbWUgKGNsb2NraWRfdCBfX2Nsb2NrX2lkLCBz dHJ1Y3QgdGltZXNwZWMgKl9fdHApIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSk7CgoKZXh0ZXJuIGludCBjbG9ja19zZXR0aW1lIChjbG9ja2lkX3QgX19jbG9j a19pZCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3RwKQogICAgIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKCmV4dGVybiBpbnQgY2xvY2tfbmFu b3NsZWVwIChjbG9ja2lkX3QgX19jbG9ja19pZCwgaW50IF9fZmxhZ3MsCiAgICAgICBjb25z dCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVxLAogICAgICAgc3RydWN0IHRpbWVzcGVjICpfX3Jl bSk7CgoKZXh0ZXJuIGludCBjbG9ja19nZXRjcHVjbG9ja2lkIChwaWRfdCBfX3BpZCwgY2xv Y2tpZF90ICpfX2Nsb2NrX2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwoKCgoKZXh0ZXJuIGludCB0aW1lcl9jcmVhdGUgKGNsb2NraWRfdCBfX2Nsb2Nr X2lkLAogICAgc3RydWN0IHNpZ2V2ZW50ICpfX3Jlc3RyaWN0IF9fZXZwLAogICAgdGltZXJf dCAqX19yZXN0cmljdCBfX3RpbWVyaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSk7CgoKZXh0ZXJuIGludCB0aW1lcl9kZWxldGUgKHRpbWVyX3QgX190aW1l cmlkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVy biBpbnQgdGltZXJfc2V0dGltZSAodGltZXJfdCBfX3RpbWVyaWQsIGludCBfX2ZsYWdzLAog ICAgIGNvbnN0IHN0cnVjdCBpdGltZXJzcGVjICpfX3Jlc3RyaWN0IF9fdmFsdWUsCiAgICAg c3RydWN0IGl0aW1lcnNwZWMgKl9fcmVzdHJpY3QgX19vdmFsdWUpIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0ZXJuIGludCB0aW1lcl9nZXR0aW1l ICh0aW1lcl90IF9fdGltZXJpZCwgc3RydWN0IGl0aW1lcnNwZWMgKl9fdmFsdWUpCiAgICAg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgpleHRlcm4gaW50 IHRpbWVyX2dldG92ZXJydW4gKHRpbWVyX3QgX190aW1lcmlkKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCmV4dGVybiBpbnQgdGltZXNwZWNfZ2V0 IChzdHJ1Y3QgdGltZXNwZWMgKl9fdHMsIGludCBfX2Jhc2UpCiAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEpKSk7CiMgNDMwICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKCiMgNDcgIm1hY2hp bmUuYyIgMgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMSAzIDQKIyAxMDIgIi91 c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0 YXQuaCIgMSAzIDQKIyAxMDUgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMgNAojIDIw OCAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMgNApleHRlcm4gaW50IHN0YXQgKGNvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlLAogICBzdHJ1Y3Qgc3RhdCAqX19yZXN0cmljdCBf X2J1ZikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJp YnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCmV4dGVybiBpbnQgZnN0YXQgKGlu dCBfX2ZkLCBzdHJ1Y3Qgc3RhdCAqX19idWYpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwojIDIz NyAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMgNApleHRlcm4gaW50IGZzdGF0YXQgKGlu dCBfX2ZkLCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZSwKICAgICAgc3RydWN0IHN0 YXQgKl9fcmVzdHJpY3QgX19idWYsIGludCBfX2ZsYWcpCiAgICAgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDIsIDMpKSk7CiMgMjYyICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0CmV4dGVybiBp bnQgbHN0YXQgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlLAogICAgc3RydWN0IHN0 YXQgKl9fcmVzdHJpY3QgX19idWYpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwojIDI4MyAi L3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMgNApleHRlcm4gaW50IGNobW9kIChjb25zdCBj aGFyICpfX2ZpbGUsIF9fbW9kZV90IF9fbW9kZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp KTsKCgoKCgpleHRlcm4gaW50IGxjaG1vZCAoY29uc3QgY2hhciAqX19maWxlLCBfX21vZGVf dCBfX21vZGUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgpleHRlcm4gaW50IGZj aG1vZCAoaW50IF9fZmQsIF9fbW9kZV90IF9fbW9kZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgpleHRlcm4gaW50IGZjaG1vZGF0IChpbnQgX19m ZCwgY29uc3QgY2hhciAqX19maWxlLCBfX21vZGVfdCBfX21vZGUsCiAgICAgICBpbnQgX19m bGFnKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpIDsKCgoKCgoKZXh0ZXJuIF9fbW9kZV90 IHVtYXNrIChfX21vZGVfdCBfX21hc2spIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSk7CiMgMzIwICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0CmV4dGVy biBpbnQgbWtkaXIgKGNvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlKQogICAg IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCmV4dGVybiBpbnQgbWtkaXJhdCAoaW50IF9f ZmQsIGNvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlKQogICAgIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u bnVsbF9fICgyKSkpOwoKCgoKCgpleHRlcm4gaW50IG1rbm9kIChjb25zdCBjaGFyICpfX3Bh dGgsIF9fbW9kZV90IF9fbW9kZSwgX19kZXZfdCBfX2RldikKICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf XyAoMSkpKTsKCgoKCgpleHRlcm4gaW50IG1rbm9kYXQgKGludCBfX2ZkLCBjb25zdCBjaGFy ICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSwKICAgICAgX19kZXZfdCBfX2RldikgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDIpKSk7CgoKCgoKZXh0ZXJuIGludCBta2ZpZm8gKGNvbnN0IGNoYXIgKl9f cGF0aCwgX19tb2RlX3QgX19tb2RlKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoK CmV4dGVybiBpbnQgbWtmaWZvYXQgKGludCBfX2ZkLCBjb25zdCBjaGFyICpfX3BhdGgsIF9f bW9kZV90IF9fbW9kZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCgoKCgpleHRlcm4g aW50IHV0aW1lbnNhdCAoaW50IF9fZmQsIGNvbnN0IGNoYXIgKl9fcGF0aCwKICAgICAgICBj b25zdCBzdHJ1Y3QgdGltZXNwZWMgX190aW1lc1syXSwKICAgICAgICBpbnQgX19mbGFncykK ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCgoKCmV4dGVybiBpbnQgZnV0aW1lbnMgKGlu dCBfX2ZkLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgX190aW1lc1syXSkgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKIyAzOTggIi91c3IvaW5jbHVkZS9zeXMv c3RhdC5oIiAzIDQKZXh0ZXJuIGludCBfX2Z4c3RhdCAoaW50IF9fdmVyLCBpbnQgX19maWxk ZXMsIHN0cnVjdCBzdGF0ICpfX3N0YXRfYnVmKQogICAgIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzKSkp OwpleHRlcm4gaW50IF9feHN0YXQgKGludCBfX3ZlciwgY29uc3QgY2hhciAqX19maWxlbmFt ZSwKICAgICAgc3RydWN0IHN0YXQgKl9fc3RhdF9idWYpIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyLCAz KSkpOwpleHRlcm4gaW50IF9fbHhzdGF0IChpbnQgX192ZXIsIGNvbnN0IGNoYXIgKl9fZmls ZW5hbWUsCiAgICAgICBzdHJ1Y3Qgc3RhdCAqX19zdGF0X2J1ZikgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDIsIDMpKSk7CmV4dGVybiBpbnQgX19meHN0YXRhdCAoaW50IF9fdmVyLCBpbnQgX19maWxk ZXMsIGNvbnN0IGNoYXIgKl9fZmlsZW5hbWUsCiAgICAgICAgIHN0cnVjdCBzdGF0ICpfX3N0 YXRfYnVmLCBpbnQgX19mbGFnKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzLCA0KSkpOwojIDQ0 MSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMgNApleHRlcm4gaW50IF9feG1rbm9kIChp bnQgX192ZXIsIGNvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlLAogICAgICAg X19kZXZfdCAqX19kZXYpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyLCA0KSkpOwoKZXh0ZXJuIGludCBf X3hta25vZGF0IChpbnQgX192ZXIsIGludCBfX2ZkLCBjb25zdCBjaGFyICpfX3BhdGgsCiAg ICAgICAgIF9fbW9kZV90IF9fbW9kZSwgX19kZXZfdCAqX19kZXYpCiAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDMsIDUpKSk7CiMgNTMzICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0Cgoj IDQ5ICJtYWNoaW5lLmMiIDIKCiMgMSAiZ3BfY29uZmlnLmgiIDEKIyAzMjcgImdwX2NvbmZp Zy5oIgojIDEgImFyY2hfZGVwLmgiIDEKIyAzMjggImdwX2NvbmZpZy5oIiAyCiMgMSAicGxf bG9uZy5oIiAxCiMgNDEgInBsX2xvbmcuaCIKIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRo YXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRpbnQuaCIgMSAzIDQKIyA5ICIvdXNyL2xpYi9n Y2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRpbnQuaCIgMyA0CiMgMSAi L3Vzci9pbmNsdWRlL3N0ZGludC5oIiAxIDMgNAojIDI2ICIvdXNyL2luY2x1ZGUvc3RkaW50 LmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3djaGFyLmgiIDEgMyA0CiMgMjcgIi91 c3IvaW5jbHVkZS9zdGRpbnQuaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jk c2l6ZS5oIiAxIDMgNAojIDI4ICIvdXNyL2luY2x1ZGUvc3RkaW50LmgiIDIgMyA0CiMgNDgg Ii91c3IvaW5jbHVkZS9zdGRpbnQuaCIgMyA0CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50 OF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1aW50MTZfdDsKCnR5cGVkZWYgdW5z aWduZWQgaW50IHVpbnQzMl90OwoKCgoKCl9fZXh0ZW5zaW9uX18KdHlwZWRlZiB1bnNpZ25l ZCBsb25nIGxvbmcgaW50IHVpbnQ2NF90OwoKCgoKCgp0eXBlZGVmIHNpZ25lZCBjaGFyIGlu dF9sZWFzdDhfdDsKdHlwZWRlZiBzaG9ydCBpbnQgaW50X2xlYXN0MTZfdDsKdHlwZWRlZiBp bnQgaW50X2xlYXN0MzJfdDsKCgoKX19leHRlbnNpb25fXwp0eXBlZGVmIGxvbmcgbG9uZyBp bnQgaW50X2xlYXN0NjRfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnRfbGVhc3Q4 X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVpbnRfbGVhc3QxNl90Owp0eXBlZGVm IHVuc2lnbmVkIGludCB1aW50X2xlYXN0MzJfdDsKCgoKX19leHRlbnNpb25fXwp0eXBlZGVm IHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgdWludF9sZWFzdDY0X3Q7CgoKCgoKCnR5cGVkZWYg c2lnbmVkIGNoYXIgaW50X2Zhc3Q4X3Q7CgoKCgoKdHlwZWRlZiBpbnQgaW50X2Zhc3QxNl90 Owp0eXBlZGVmIGludCBpbnRfZmFzdDMyX3Q7Cl9fZXh0ZW5zaW9uX18KdHlwZWRlZiBsb25n IGxvbmcgaW50IGludF9mYXN0NjRfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnRf ZmFzdDhfdDsKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X2Zhc3QxNl90Owp0eXBl ZGVmIHVuc2lnbmVkIGludCB1aW50X2Zhc3QzMl90OwpfX2V4dGVuc2lvbl9fCnR5cGVkZWYg dW5zaWduZWQgbG9uZyBsb25nIGludCB1aW50X2Zhc3Q2NF90OwojIDEyNSAiL3Vzci9pbmNs dWRlL3N0ZGludC5oIiAzIDQKdHlwZWRlZiBpbnQgaW50cHRyX3Q7CgoKdHlwZWRlZiB1bnNp Z25lZCBpbnQgdWludHB0cl90OwojIDEzNyAiL3Vzci9pbmNsdWRlL3N0ZGludC5oIiAzIDQK X19leHRlbnNpb25fXwp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgaW50bWF4X3Q7Cl9fZXh0ZW5z aW9uX18KdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVpbnRtYXhfdDsKIyAxMCAi L3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1ZGUvc3RkaW50Lmgi IDIgMyA0CiMgNDIgInBsX2xvbmcuaCIgMgoKIyAxICJncF9jb25maWcuaCIgMQojIDQ0ICJw bF9sb25nLmgiIDIKCgoKCiMgNDcgInBsX2xvbmcuaCIKdHlwZWRlZiBpbnRwdHJfdCBQbExv bmc7CnR5cGVkZWYgdWludHB0cl90IFBsVUxvbmc7CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2lu dHR5cGVzLmgiIDEgMyA0CiMgMzQgIi91c3IvaW5jbHVkZS9pbnR0eXBlcy5oIiAzIDQKCiMg MzQgIi91c3IvaW5jbHVkZS9pbnR0eXBlcy5oIiAzIDQKdHlwZWRlZiBsb25nIGludCBfX2d3 Y2hhcl90OwojIDI2NiAiL3Vzci9pbmNsdWRlL2ludHR5cGVzLmgiIDMgNAoKIyAyODAgIi91 c3IvaW5jbHVkZS9pbnR0eXBlcy5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBfX2V4 dGVuc2lvbl9fIGxvbmcgbG9uZyBpbnQgcXVvdDsKICAgIF9fZXh0ZW5zaW9uX18gbG9uZyBs b25nIGludCByZW07CiAgfSBpbWF4ZGl2X3Q7CgoKCgoKZXh0ZXJuIGludG1heF90IGltYXhh YnMgKGludG1heF90IF9fbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGltYXhkaXZfdCBp bWF4ZGl2IChpbnRtYXhfdCBfX251bWVyLCBpbnRtYXhfdCBfX2Rlbm9tKQogICAgICBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChf X2NvbnN0X18pKTsKCgpleHRlcm4gaW50bWF4X3Qgc3RydG9pbWF4IChjb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu dCBfX2Jhc2UpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoK ZXh0ZXJuIHVpbnRtYXhfdCBzdHJ0b3VtYXggKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u cHRyLAogICAgICAgY2hhciAqKiBfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBpbnRt YXhfdCB3Y3N0b2ltYXggKGNvbnN0IF9fZ3djaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAog ICAgICBfX2d3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAg ICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiB1 aW50bWF4X3Qgd2NzdG91bWF4IChjb25zdCBfX2d3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0 ciwKICAgICAgIF9fZ3djaGFyX3QgKiogX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFz ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwojIDQz MiAiL3Vzci9pbmNsdWRlL2ludHR5cGVzLmgiIDMgNAoKIyA1MyAicGxfbG9uZy5oIiAyCiMg MzI5ICJncF9jb25maWcuaCIgMgojIDUxICJtYWNoaW5lLmMiIDIKCgoKCgoKIyAxICIvdXNy L2luY2x1ZGUvcHdkLmgiIDEgMyA0CiMgMjcgIi91c3IvaW5jbHVkZS9wd2QuaCIgMyA0CgoK CgoKIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9z dGRkZWYuaCIgMSAzIDQKIyAzMyAiL3Vzci9pbmNsdWRlL3B3ZC5oIiAyIDMgNAojIDQ5ICIv dXNyL2luY2x1ZGUvcHdkLmgiIDMgNApzdHJ1Y3QgcGFzc3dkCnsKICBjaGFyICpwd19uYW1l OwogIGNoYXIgKnB3X3Bhc3N3ZDsKICBfX3VpZF90IHB3X3VpZDsKICBfX2dpZF90IHB3X2dp ZDsKICBjaGFyICpwd19nZWNvczsKICBjaGFyICpwd19kaXI7CiAgY2hhciAqcHdfc2hlbGw7 Cn07CiMgNzIgIi91c3IvaW5jbHVkZS9wd2QuaCIgMyA0CmV4dGVybiB2b2lkIHNldHB3ZW50 ICh2b2lkKTsKCgoKCgpleHRlcm4gdm9pZCBlbmRwd2VudCAodm9pZCk7CgoKCgoKZXh0ZXJu IHN0cnVjdCBwYXNzd2QgKmdldHB3ZW50ICh2b2lkKTsKIyA5NCAiL3Vzci9pbmNsdWRlL3B3 ZC5oIiAzIDQKZXh0ZXJuIHN0cnVjdCBwYXNzd2QgKmZnZXRwd2VudCAoRklMRSAqX19zdHJl YW0pIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgoKCmV4dGVybiBp bnQgcHV0cHdlbnQgKGNvbnN0IHN0cnVjdCBwYXNzd2QgKl9fcmVzdHJpY3QgX19wLAogICAg ICAgRklMRSAqX19yZXN0cmljdCBfX2YpOwoKCgoKCgpleHRlcm4gc3RydWN0IHBhc3N3ZCAq Z2V0cHd1aWQgKF9fdWlkX3QgX191aWQpOwoKCgoKCmV4dGVybiBzdHJ1Y3QgcGFzc3dkICpn ZXRwd25hbSAoY29uc3QgY2hhciAqX19uYW1lKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEpKSk7CiMgMTM5ICIvdXNyL2luY2x1ZGUvcHdkLmgiIDMgNApleHRlcm4gaW50IGdl dHB3ZW50X3IgKHN0cnVjdCBwYXNzd2QgKl9fcmVzdHJpY3QgX19yZXN1bHRidWYsCiAgICAg ICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWZmZXIsIHNpemVfdCBfX2J1ZmxlbiwKICAgICAg ICAgc3RydWN0IHBhc3N3ZCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpCiAgICAgICAgIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMiwgNCkpKTsKCgpleHRlcm4gaW50IGdldHB3 dWlkX3IgKF9fdWlkX3QgX191aWQsCiAgICAgICAgIHN0cnVjdCBwYXNzd2QgKl9fcmVzdHJp Y3QgX19yZXN1bHRidWYsCiAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWZmZXIsIHNp emVfdCBfX2J1ZmxlbiwKICAgICAgICAgc3RydWN0IHBhc3N3ZCAqKl9fcmVzdHJpY3QgX19y ZXN1bHQpCiAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMiwgMywgNSkp KTsKCmV4dGVybiBpbnQgZ2V0cHduYW1fciAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25h bWUsCiAgICAgICAgIHN0cnVjdCBwYXNzd2QgKl9fcmVzdHJpY3QgX19yZXN1bHRidWYsCiAg ICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWZmZXIsIHNpemVfdCBfX2J1ZmxlbiwKICAg ICAgICAgc3RydWN0IHBhc3N3ZCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpCiAgICAgICAgIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMiwgMywgNSkpKTsKIyAxNjYgIi91c3Iv aW5jbHVkZS9wd2QuaCIgMyA0CmV4dGVybiBpbnQgZmdldHB3ZW50X3IgKEZJTEUgKl9fcmVz dHJpY3QgX19zdHJlYW0sCiAgIHN0cnVjdCBwYXNzd2QgKl9fcmVzdHJpY3QgX19yZXN1bHRi dWYsCiAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWZmZXIsIHNpemVfdCBfX2J1ZmxlbiwKICAg c3RydWN0IHBhc3N3ZCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpCiAgIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSwgMiwgMywgNSkpKTsKIyAxODcgIi91c3IvaW5jbHVkZS9wd2Qu aCIgMyA0CgojIDU4ICJtYWNoaW5lLmMiIDIKIyAxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgi IDEgMyA0CiMgMjcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CgojIDIwNSAiL3Vzci9p bmNsdWRlL3VuaXN0ZC5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeF9vcHQu aCIgMSAzIDQKIyAyMDYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzIDQKCgoKIyAxICIv dXNyL2luY2x1ZGUvYml0cy9lbnZpcm9ubWVudHMuaCIgMSAzIDQKIyAyMiAiL3Vzci9pbmNs dWRlL2JpdHMvZW52aXJvbm1lbnRzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dv cmRzaXplLmgiIDEgMyA0CiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL2Vudmlyb25tZW50cy5o IiAyIDMgNAojIDIxMCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMgNAojIDIyOSAiL3Vz ci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQt bGludXgvNi4xLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAyMzAgIi91c3IvaW5jbHVk ZS91bmlzdGQuaCIgMiAzIDQKIyAyNTggIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CnR5 cGVkZWYgX191c2Vjb25kc190IHVzZWNvbmRzX3Q7CiMgMjc3ICIvdXNyL2luY2x1ZGUvdW5p c3RkLmgiIDMgNAp0eXBlZGVmIF9fc29ja2xlbl90IHNvY2tsZW5fdDsKIyAyOTAgIi91c3Iv aW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBpbnQgYWNjZXNzIChjb25zdCBjaGFyICpf X25hbWUsIGludCBfX3R5cGUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwojIDMwNyAiL3Vzci9p bmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIGludCBmYWNjZXNzYXQgKGludCBfX2ZkLCBj b25zdCBjaGFyICpfX2ZpbGUsIGludCBfX3R5cGUsIGludCBfX2ZsYWcpCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDIpKSkgOwojIDMzNyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0 ZXJuIF9fb2ZmX3QgbHNlZWsgKGludCBfX2ZkLCBfX29mZl90IF9fb2Zmc2V0LCBpbnQgX193 aGVuY2UpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgMzU2 ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gaW50IGNsb3NlIChpbnQgX19m ZCk7CgoKCgoKCmV4dGVybiBzc2l6ZV90IHJlYWQgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwg c2l6ZV90IF9fbmJ5dGVzKSA7CgoKCgoKZXh0ZXJuIHNzaXplX3Qgd3JpdGUgKGludCBfX2Zk LCBjb25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbikgOwojIDM3OSAiL3Vzci9pbmNsdWRl L3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIHNzaXplX3QgcHJlYWQgKGludCBfX2ZkLCB2b2lkICpf X2J1Ziwgc2l6ZV90IF9fbmJ5dGVzLAogICAgICAgIF9fb2ZmX3QgX19vZmZzZXQpIDsKCgoK CgoKZXh0ZXJuIHNzaXplX3QgcHdyaXRlIChpbnQgX19mZCwgY29uc3Qgdm9pZCAqX19idWYs IHNpemVfdCBfX24sCiAgICAgICAgIF9fb2ZmX3QgX19vZmZzZXQpIDsKIyA0MjAgIi91c3Iv aW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBpbnQgcGlwZSAoaW50IF9fcGlwZWRlc1sy XSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CiMgNDM1ICIv dXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gdW5zaWduZWQgaW50IGFsYXJtICh1 bnNpZ25lZCBpbnQgX19zZWNvbmRzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwojIDQ0NyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIHVu c2lnbmVkIGludCBzbGVlcCAodW5zaWduZWQgaW50IF9fc2Vjb25kcyk7CgoKCgoKCgpleHRl cm4gX191c2Vjb25kc190IHVhbGFybSAoX191c2Vjb25kc190IF9fdmFsdWUsIF9fdXNlY29u ZHNfdCBfX2ludGVydmFsKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSk7CgoKCgoKCmV4dGVybiBpbnQgdXNsZWVwIChfX3VzZWNvbmRzX3QgX191c2Vj b25kcyk7CiMgNDcyICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gaW50IHBh dXNlICh2b2lkKTsKCgoKZXh0ZXJuIGludCBjaG93biAoY29uc3QgY2hhciAqX19maWxlLCBf X3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkKICAgICBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSkpKSA7CgoKCmV4dGVybiBpbnQgZmNob3duIChpbnQgX19mZCwgX191aWRfdCBfX293bmVy LCBfX2dpZF90IF9fZ3JvdXApIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSkgOwoKCgoKZXh0ZXJuIGludCBsY2hvd24gKGNvbnN0IGNoYXIgKl9fZmlsZSwgX191 aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3JvdXApCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEp KSkgOwoKCgoKCgpleHRlcm4gaW50IGZjaG93bmF0IChpbnQgX19mZCwgY29uc3QgY2hhciAq X19maWxlLCBfX3VpZF90IF9fb3duZXIsCiAgICAgICBfX2dpZF90IF9fZ3JvdXAsIGludCBf X2ZsYWcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSkgOwoKCgpleHRlcm4gaW50IGNoZGly IChjb25zdCBjaGFyICpfX3BhdGgpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCgoKZXh0ZXJu IGludCBmY2hkaXIgKGludCBfX2ZkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIDsKIyA1MTQgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBj aGFyICpnZXRjd2QgKGNoYXIgKl9fYnVmLCBzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKIyA1MjggIi91c3IvaW5jbHVkZS91bmlz dGQuaCIgMyA0CmV4dGVybiBjaGFyICpnZXR3ZCAoY2hhciAqX19idWYpCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEpKSkgX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRlZF9fKSkgOwoKCgoK ZXh0ZXJuIGludCBkdXAgKGludCBfX2ZkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIDsKCgpleHRlcm4gaW50IGR1cDIgKGludCBfX2ZkLCBpbnQgX19mZDIp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgNTQ2ICIvdXNy L2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gY2hhciAqKl9fZW52aXJvbjsKCgoKCgoK CmV4dGVybiBpbnQgZXhlY3ZlIChjb25zdCBjaGFyICpfX3BhdGgsIGNoYXIgKmNvbnN0IF9f YXJndltdLAogICAgIGNoYXIgKmNvbnN0IF9fZW52cFtdKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwg MikpKTsKCgoKCmV4dGVybiBpbnQgZmV4ZWN2ZSAoaW50IF9fZmQsIGNoYXIgKmNvbnN0IF9f YXJndltdLCBjaGFyICpjb25zdCBfX2VudnBbXSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikp KTsKCgoKCmV4dGVybiBpbnQgZXhlY3YgKGNvbnN0IGNoYXIgKl9fcGF0aCwgY2hhciAqY29u c3QgX19hcmd2W10pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCmV4dGVybiBp bnQgZXhlY2xlIChjb25zdCBjaGFyICpfX3BhdGgsIGNvbnN0IGNoYXIgKl9fYXJnLCAuLi4p CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJp YnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCmV4dGVybiBpbnQgZXhlY2wgKGNv bnN0IGNoYXIgKl9fcGF0aCwgY29uc3QgY2hhciAqX19hcmcsIC4uLikKICAgICBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSwgMikpKTsKCgoKZXh0ZXJuIGludCBleGVjdnAgKGNvbnN0IGNoYXIgKl9f ZmlsZSwgY2hhciAqY29uc3QgX19hcmd2W10pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIp KSk7CgoKCgpleHRlcm4gaW50IGV4ZWNscCAoY29uc3QgY2hhciAqX19maWxlLCBjb25zdCBj aGFyICpfX2FyZywgLi4uKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwojIDYwMSAi L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIGludCBuaWNlIChpbnQgX19pbmMp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwoKCgoKZXh0ZXJu IHZvaWQgX2V4aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5f XykpOwoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvY29uZm5hbWUuaCIgMSAzIDQKIyAy NCAiL3Vzci9pbmNsdWRlL2JpdHMvY29uZm5hbWUuaCIgMyA0CmVudW0KICB7CiAgICBfUENf TElOS19NQVgsCgogICAgX1BDX01BWF9DQU5PTiwKCiAgICBfUENfTUFYX0lOUFVULAoKICAg IF9QQ19OQU1FX01BWCwKCiAgICBfUENfUEFUSF9NQVgsCgogICAgX1BDX1BJUEVfQlVGLAoK ICAgIF9QQ19DSE9XTl9SRVNUUklDVEVELAoKICAgIF9QQ19OT19UUlVOQywKCiAgICBfUENf VkRJU0FCTEUsCgogICAgX1BDX1NZTkNfSU8sCgogICAgX1BDX0FTWU5DX0lPLAoKICAgIF9Q Q19QUklPX0lPLAoKICAgIF9QQ19TT0NLX01BWEJVRiwKCiAgICBfUENfRklMRVNJWkVCSVRT LAoKICAgIF9QQ19SRUNfSU5DUl9YRkVSX1NJWkUsCgogICAgX1BDX1JFQ19NQVhfWEZFUl9T SVpFLAoKICAgIF9QQ19SRUNfTUlOX1hGRVJfU0laRSwKCiAgICBfUENfUkVDX1hGRVJfQUxJ R04sCgogICAgX1BDX0FMTE9DX1NJWkVfTUlOLAoKICAgIF9QQ19TWU1MSU5LX01BWCwKCiAg ICBfUENfMl9TWU1MSU5LUwoKICB9OwoKCmVudW0KICB7CiAgICBfU0NfQVJHX01BWCwKCiAg ICBfU0NfQ0hJTERfTUFYLAoKICAgIF9TQ19DTEtfVENLLAoKICAgIF9TQ19OR1JPVVBTX01B WCwKCiAgICBfU0NfT1BFTl9NQVgsCgogICAgX1NDX1NUUkVBTV9NQVgsCgogICAgX1NDX1Ra TkFNRV9NQVgsCgogICAgX1NDX0pPQl9DT05UUk9MLAoKICAgIF9TQ19TQVZFRF9JRFMsCgog ICAgX1NDX1JFQUxUSU1FX1NJR05BTFMsCgogICAgX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcs CgogICAgX1NDX1RJTUVSUywKCiAgICBfU0NfQVNZTkNIUk9OT1VTX0lPLAoKICAgIF9TQ19Q UklPUklUSVpFRF9JTywKCiAgICBfU0NfU1lOQ0hST05JWkVEX0lPLAoKICAgIF9TQ19GU1lO QywKCiAgICBfU0NfTUFQUEVEX0ZJTEVTLAoKICAgIF9TQ19NRU1MT0NLLAoKICAgIF9TQ19N RU1MT0NLX1JBTkdFLAoKICAgIF9TQ19NRU1PUllfUFJPVEVDVElPTiwKCiAgICBfU0NfTUVT U0FHRV9QQVNTSU5HLAoKICAgIF9TQ19TRU1BUEhPUkVTLAoKICAgIF9TQ19TSEFSRURfTUVN T1JZX09CSkVDVFMsCgogICAgX1NDX0FJT19MSVNUSU9fTUFYLAoKICAgIF9TQ19BSU9fTUFY LAoKICAgIF9TQ19BSU9fUFJJT19ERUxUQV9NQVgsCgogICAgX1NDX0RFTEFZVElNRVJfTUFY LAoKICAgIF9TQ19NUV9PUEVOX01BWCwKCiAgICBfU0NfTVFfUFJJT19NQVgsCgogICAgX1ND X1ZFUlNJT04sCgogICAgX1NDX1BBR0VTSVpFLAoKCiAgICBfU0NfUlRTSUdfTUFYLAoKICAg IF9TQ19TRU1fTlNFTVNfTUFYLAoKICAgIF9TQ19TRU1fVkFMVUVfTUFYLAoKICAgIF9TQ19T SUdRVUVVRV9NQVgsCgogICAgX1NDX1RJTUVSX01BWCwKCgoKCiAgICBfU0NfQkNfQkFTRV9N QVgsCgogICAgX1NDX0JDX0RJTV9NQVgsCgogICAgX1NDX0JDX1NDQUxFX01BWCwKCiAgICBf U0NfQkNfU1RSSU5HX01BWCwKCiAgICBfU0NfQ09MTF9XRUlHSFRTX01BWCwKCiAgICBfU0Nf RVFVSVZfQ0xBU1NfTUFYLAoKICAgIF9TQ19FWFBSX05FU1RfTUFYLAoKICAgIF9TQ19MSU5F X01BWCwKCiAgICBfU0NfUkVfRFVQX01BWCwKCiAgICBfU0NfQ0hBUkNMQVNTX05BTUVfTUFY LAoKCiAgICBfU0NfMl9WRVJTSU9OLAoKICAgIF9TQ18yX0NfQklORCwKCiAgICBfU0NfMl9D X0RFViwKCiAgICBfU0NfMl9GT1JUX0RFViwKCiAgICBfU0NfMl9GT1JUX1JVTiwKCiAgICBf U0NfMl9TV19ERVYsCgogICAgX1NDXzJfTE9DQUxFREVGLAoKCiAgICBfU0NfUElJLAoKICAg IF9TQ19QSUlfWFRJLAoKICAgIF9TQ19QSUlfU09DS0VULAoKICAgIF9TQ19QSUlfSU5URVJO RVQsCgogICAgX1NDX1BJSV9PU0ksCgogICAgX1NDX1BPTEwsCgogICAgX1NDX1NFTEVDVCwK CiAgICBfU0NfVUlPX01BWElPViwKCiAgICBfU0NfSU9WX01BWCA9IF9TQ19VSU9fTUFYSU9W LAoKICAgIF9TQ19QSUlfSU5URVJORVRfU1RSRUFNLAoKICAgIF9TQ19QSUlfSU5URVJORVRf REdSQU0sCgogICAgX1NDX1BJSV9PU0lfQ09UUywKCiAgICBfU0NfUElJX09TSV9DTFRTLAoK ICAgIF9TQ19QSUlfT1NJX00sCgogICAgX1NDX1RfSU9WX01BWCwKCgoKICAgIF9TQ19USFJF QURTLAoKICAgIF9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMsCgogICAgX1NDX0dFVEdSX1Jf U0laRV9NQVgsCgogICAgX1NDX0dFVFBXX1JfU0laRV9NQVgsCgogICAgX1NDX0xPR0lOX05B TUVfTUFYLAoKICAgIF9TQ19UVFlfTkFNRV9NQVgsCgogICAgX1NDX1RIUkVBRF9ERVNUUlVD VE9SX0lURVJBVElPTlMsCgogICAgX1NDX1RIUkVBRF9LRVlTX01BWCwKCiAgICBfU0NfVEhS RUFEX1NUQUNLX01JTiwKCiAgICBfU0NfVEhSRUFEX1RIUkVBRFNfTUFYLAoKICAgIF9TQ19U SFJFQURfQVRUUl9TVEFDS0FERFIsCgogICAgX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSwK CiAgICBfU0NfVEhSRUFEX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgogICAgX1NDX1RIUkVBRF9Q UklPX0lOSEVSSVQsCgogICAgX1NDX1RIUkVBRF9QUklPX1BST1RFQ1QsCgogICAgX1NDX1RI UkVBRF9QUk9DRVNTX1NIQVJFRCwKCgogICAgX1NDX05QUk9DRVNTT1JTX0NPTkYsCgogICAg X1NDX05QUk9DRVNTT1JTX09OTE4sCgogICAgX1NDX1BIWVNfUEFHRVMsCgogICAgX1NDX0FW UEhZU19QQUdFUywKCiAgICBfU0NfQVRFWElUX01BWCwKCiAgICBfU0NfUEFTU19NQVgsCgoK ICAgIF9TQ19YT1BFTl9WRVJTSU9OLAoKICAgIF9TQ19YT1BFTl9YQ1VfVkVSU0lPTiwKCiAg ICBfU0NfWE9QRU5fVU5JWCwKCiAgICBfU0NfWE9QRU5fQ1JZUFQsCgogICAgX1NDX1hPUEVO X0VOSF9JMThOLAoKICAgIF9TQ19YT1BFTl9TSE0sCgoKICAgIF9TQ18yX0NIQVJfVEVSTSwK CiAgICBfU0NfMl9DX1ZFUlNJT04sCgogICAgX1NDXzJfVVBFLAoKCiAgICBfU0NfWE9QRU5f WFBHMiwKCiAgICBfU0NfWE9QRU5fWFBHMywKCiAgICBfU0NfWE9QRU5fWFBHNCwKCgogICAg X1NDX0NIQVJfQklULAoKICAgIF9TQ19DSEFSX01BWCwKCiAgICBfU0NfQ0hBUl9NSU4sCgog ICAgX1NDX0lOVF9NQVgsCgogICAgX1NDX0lOVF9NSU4sCgogICAgX1NDX0xPTkdfQklULAoK ICAgIF9TQ19XT1JEX0JJVCwKCiAgICBfU0NfTUJfTEVOX01BWCwKCiAgICBfU0NfTlpFUk8s CgogICAgX1NDX1NTSVpFX01BWCwKCiAgICBfU0NfU0NIQVJfTUFYLAoKICAgIF9TQ19TQ0hB Ul9NSU4sCgogICAgX1NDX1NIUlRfTUFYLAoKICAgIF9TQ19TSFJUX01JTiwKCiAgICBfU0Nf VUNIQVJfTUFYLAoKICAgIF9TQ19VSU5UX01BWCwKCiAgICBfU0NfVUxPTkdfTUFYLAoKICAg IF9TQ19VU0hSVF9NQVgsCgoKICAgIF9TQ19OTF9BUkdNQVgsCgogICAgX1NDX05MX0xBTkdN QVgsCgogICAgX1NDX05MX01TR01BWCwKCiAgICBfU0NfTkxfTk1BWCwKCiAgICBfU0NfTkxf U0VUTUFYLAoKICAgIF9TQ19OTF9URVhUTUFYLAoKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkYz MiwKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkZCSUcsCgogICAgX1NDX1hCUzVfTFA2NF9PRkY2 NCwKCiAgICBfU0NfWEJTNV9MUEJJR19PRkZCSUcsCgoKICAgIF9TQ19YT1BFTl9MRUdBQ1ks CgogICAgX1NDX1hPUEVOX1JFQUxUSU1FLAoKICAgIF9TQ19YT1BFTl9SRUFMVElNRV9USFJF QURTLAoKCiAgICBfU0NfQURWSVNPUllfSU5GTywKCiAgICBfU0NfQkFSUklFUlMsCgogICAg X1NDX0JBU0UsCgogICAgX1NDX0NfTEFOR19TVVBQT1JULAoKICAgIF9TQ19DX0xBTkdfU1VQ UE9SVF9SLAoKICAgIF9TQ19DTE9DS19TRUxFQ1RJT04sCgogICAgX1NDX0NQVVRJTUUsCgog ICAgX1NDX1RIUkVBRF9DUFVUSU1FLAoKICAgIF9TQ19ERVZJQ0VfSU8sCgogICAgX1NDX0RF VklDRV9TUEVDSUZJQywKCiAgICBfU0NfREVWSUNFX1NQRUNJRklDX1IsCgogICAgX1NDX0ZE X01HTVQsCgogICAgX1NDX0ZJRk8sCgogICAgX1NDX1BJUEUsCgogICAgX1NDX0ZJTEVfQVRU UklCVVRFUywKCiAgICBfU0NfRklMRV9MT0NLSU5HLAoKICAgIF9TQ19GSUxFX1NZU1RFTSwK CiAgICBfU0NfTU9OT1RPTklDX0NMT0NLLAoKICAgIF9TQ19NVUxUSV9QUk9DRVNTLAoKICAg IF9TQ19TSU5HTEVfUFJPQ0VTUywKCiAgICBfU0NfTkVUV09SS0lORywKCiAgICBfU0NfUkVB REVSX1dSSVRFUl9MT0NLUywKCiAgICBfU0NfU1BJTl9MT0NLUywKCiAgICBfU0NfUkVHRVhQ LAoKICAgIF9TQ19SRUdFWF9WRVJTSU9OLAoKICAgIF9TQ19TSEVMTCwKCiAgICBfU0NfU0lH TkFMUywKCiAgICBfU0NfU1BBV04sCgogICAgX1NDX1NQT1JBRElDX1NFUlZFUiwKCiAgICBf U0NfVEhSRUFEX1NQT1JBRElDX1NFUlZFUiwKCiAgICBfU0NfU1lTVEVNX0RBVEFCQVNFLAoK ICAgIF9TQ19TWVNURU1fREFUQUJBU0VfUiwKCiAgICBfU0NfVElNRU9VVFMsCgogICAgX1ND X1RZUEVEX01FTU9SWV9PQkpFQ1RTLAoKICAgIF9TQ19VU0VSX0dST1VQUywKCiAgICBfU0Nf VVNFUl9HUk9VUFNfUiwKCiAgICBfU0NfMl9QQlMsCgogICAgX1NDXzJfUEJTX0FDQ09VTlRJ TkcsCgogICAgX1NDXzJfUEJTX0xPQ0FURSwKCiAgICBfU0NfMl9QQlNfTUVTU0FHRSwKCiAg ICBfU0NfMl9QQlNfVFJBQ0ssCgogICAgX1NDX1NZTUxPT1BfTUFYLAoKICAgIF9TQ19TVFJF QU1TLAoKICAgIF9TQ18yX1BCU19DSEVDS1BPSU5ULAoKCiAgICBfU0NfVjZfSUxQMzJfT0ZG MzIsCgogICAgX1NDX1Y2X0lMUDMyX09GRkJJRywKCiAgICBfU0NfVjZfTFA2NF9PRkY2NCwK CiAgICBfU0NfVjZfTFBCSUdfT0ZGQklHLAoKCiAgICBfU0NfSE9TVF9OQU1FX01BWCwKCiAg ICBfU0NfVFJBQ0UsCgogICAgX1NDX1RSQUNFX0VWRU5UX0ZJTFRFUiwKCiAgICBfU0NfVFJB Q0VfSU5IRVJJVCwKCiAgICBfU0NfVFJBQ0VfTE9HLAoKCiAgICBfU0NfTEVWRUwxX0lDQUNI RV9TSVpFLAoKICAgIF9TQ19MRVZFTDFfSUNBQ0hFX0FTU09DLAoKICAgIF9TQ19MRVZFTDFf SUNBQ0hFX0xJTkVTSVpFLAoKICAgIF9TQ19MRVZFTDFfRENBQ0hFX1NJWkUsCgogICAgX1ND X0xFVkVMMV9EQ0FDSEVfQVNTT0MsCgogICAgX1NDX0xFVkVMMV9EQ0FDSEVfTElORVNJWkUs CgogICAgX1NDX0xFVkVMMl9DQUNIRV9TSVpFLAoKICAgIF9TQ19MRVZFTDJfQ0FDSEVfQVNT T0MsCgogICAgX1NDX0xFVkVMMl9DQUNIRV9MSU5FU0laRSwKCiAgICBfU0NfTEVWRUwzX0NB Q0hFX1NJWkUsCgogICAgX1NDX0xFVkVMM19DQUNIRV9BU1NPQywKCiAgICBfU0NfTEVWRUwz X0NBQ0hFX0xJTkVTSVpFLAoKICAgIF9TQ19MRVZFTDRfQ0FDSEVfU0laRSwKCiAgICBfU0Nf TEVWRUw0X0NBQ0hFX0FTU09DLAoKICAgIF9TQ19MRVZFTDRfQ0FDSEVfTElORVNJWkUsCgoK CiAgICBfU0NfSVBWNiA9IF9TQ19MRVZFTDFfSUNBQ0hFX1NJWkUgKyA1MCwKCiAgICBfU0Nf UkFXX1NPQ0tFVFMsCgoKICAgIF9TQ19WN19JTFAzMl9PRkYzMiwKCiAgICBfU0NfVjdfSUxQ MzJfT0ZGQklHLAoKICAgIF9TQ19WN19MUDY0X09GRjY0LAoKICAgIF9TQ19WN19MUEJJR19P RkZCSUcsCgoKICAgIF9TQ19TU19SRVBMX01BWCwKCgogICAgX1NDX1RSQUNFX0VWRU5UX05B TUVfTUFYLAoKICAgIF9TQ19UUkFDRV9OQU1FX01BWCwKCiAgICBfU0NfVFJBQ0VfU1lTX01B WCwKCiAgICBfU0NfVFJBQ0VfVVNFUl9FVkVOVF9NQVgsCgoKICAgIF9TQ19YT1BFTl9TVFJF QU1TLAoKCiAgICBfU0NfVEhSRUFEX1JPQlVTVF9QUklPX0lOSEVSSVQsCgogICAgX1NDX1RI UkVBRF9ST0JVU1RfUFJJT19QUk9URUNUCgogIH07CgoKZW51bQogIHsKICAgIF9DU19QQVRI LAoKCiAgICBfQ1NfVjZfV0lEVEhfUkVTVFJJQ1RFRF9FTlZTLAoKCgogICAgX0NTX0dOVV9M SUJDX1ZFUlNJT04sCgogICAgX0NTX0dOVV9MSUJQVEhSRUFEX1ZFUlNJT04sCgoKICAgIF9D U19WNV9XSURUSF9SRVNUUklDVEVEX0VOVlMsCgoKCiAgICBfQ1NfVjdfV0lEVEhfUkVTVFJJ Q1RFRF9FTlZTLAoKCgogICAgX0NTX0xGU19DRkxBR1MgPSAxMDAwLAoKICAgIF9DU19MRlNf TERGTEFHUywKCiAgICBfQ1NfTEZTX0xJQlMsCgogICAgX0NTX0xGU19MSU5URkxBR1MsCgog ICAgX0NTX0xGUzY0X0NGTEFHUywKCiAgICBfQ1NfTEZTNjRfTERGTEFHUywKCiAgICBfQ1Nf TEZTNjRfTElCUywKCiAgICBfQ1NfTEZTNjRfTElOVEZMQUdTLAoKCiAgICBfQ1NfWEJTNV9J TFAzMl9PRkYzMl9DRkxBR1MgPSAxMTAwLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xE RkxBR1MsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTElCUywKCiAgICBfQ1NfWEJTNV9J TFAzMl9PRkYzMl9MSU5URkxBR1MsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0NGTEFH UywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTERGTEFHUywKCiAgICBfQ1NfWEJTNV9J TFAzMl9PRkZCSUdfTElCUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElOVEZMQUdT LAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfQ0ZMQUdTLAoKICAgIF9DU19YQlM1X0xQNjRf T0ZGNjRfTERGTEFHUywKCiAgICBfQ1NfWEJTNV9MUDY0X09GRjY0X0xJQlMsCgogICAgX0NT X1hCUzVfTFA2NF9PRkY2NF9MSU5URkxBR1MsCgogICAgX0NTX1hCUzVfTFBCSUdfT0ZGQklH X0NGTEFHUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTERGTEFHUywKCiAgICBfQ1Nf WEJTNV9MUEJJR19PRkZCSUdfTElCUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElO VEZMQUdTLAoKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfQ0ZMQUdTLAoKICAgIF9D U19QT1NJWF9WNl9JTFAzMl9PRkYzMl9MREZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9JTFAz Ml9PRkYzMl9MSUJTLAoKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkYzMl9MSU5URkxBR1Ms CgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRkJJR19DRkxBR1MsCgogICAgX0NTX1BPU0lY X1Y2X0lMUDMyX09GRkJJR19MREZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZC SUdfTElCUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUywKCiAg ICBfQ1NfUE9TSVhfVjZfTFA2NF9PRkY2NF9DRkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQ NjRfT0ZGNjRfTERGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfTFA2NF9PRkY2NF9MSUJTLAoK ICAgIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0xJTlRGTEFHUywKCiAgICBfQ1NfUE9TSVhf VjZfTFBCSUdfT0ZGQklHX0NGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfTFBCSUdfT0ZGQklH X0xERkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19MSUJTLAoKICAgIF9D U19QT1NJWF9WNl9MUEJJR19PRkZCSUdfTElOVEZMQUdTLAoKCiAgICBfQ1NfUE9TSVhfVjdf SUxQMzJfT0ZGMzJfQ0ZMQUdTLAoKICAgIF9DU19QT1NJWF9WN19JTFAzMl9PRkYzMl9MREZM QUdTLAoKICAgIF9DU19QT1NJWF9WN19JTFAzMl9PRkYzMl9MSUJTLAoKICAgIF9DU19QT1NJ WF9WN19JTFAzMl9PRkYzMl9MSU5URkxBR1MsCgogICAgX0NTX1BPU0lYX1Y3X0lMUDMyX09G RkJJR19DRkxBR1MsCgogICAgX0NTX1BPU0lYX1Y3X0lMUDMyX09GRkJJR19MREZMQUdTLAoK ICAgIF9DU19QT1NJWF9WN19JTFAzMl9PRkZCSUdfTElCUywKCiAgICBfQ1NfUE9TSVhfVjdf SUxQMzJfT0ZGQklHX0xJTlRGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjdfTFA2NF9PRkY2NF9D RkxBR1MsCgogICAgX0NTX1BPU0lYX1Y3X0xQNjRfT0ZGNjRfTERGTEFHUywKCiAgICBfQ1Nf UE9TSVhfVjdfTFA2NF9PRkY2NF9MSUJTLAoKICAgIF9DU19QT1NJWF9WN19MUDY0X09GRjY0 X0xJTlRGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjdfTFBCSUdfT0ZGQklHX0NGTEFHUywKCiAg ICBfQ1NfUE9TSVhfVjdfTFBCSUdfT0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1BPU0lYX1Y3 X0xQQklHX09GRkJJR19MSUJTLAoKICAgIF9DU19QT1NJWF9WN19MUEJJR19PRkZCSUdfTElO VEZMQUdTLAoKCiAgICBfQ1NfVjZfRU5WLAoKICAgIF9DU19WN19FTlYKCiAgfTsKIyA2MTMg Ii91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzIDQKCgpleHRlcm4gbG9uZyBpbnQgcGF0aGNv bmYgKGNvbnN0IGNoYXIgKl9fcGF0aCwgaW50IF9fbmFtZSkKICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf XyAoMSkpKTsKCgpleHRlcm4gbG9uZyBpbnQgZnBhdGhjb25mIChpbnQgX19mZCwgaW50IF9f bmFtZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgpleHRl cm4gbG9uZyBpbnQgc3lzY29uZiAoaW50IF9fbmFtZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKTsKCgoKZXh0ZXJuIHNpemVfdCBjb25mc3RyIChpbnQgX19u YW1lLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbGVuKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwoKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGlkICh2b2lkKSBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBfX3Bp ZF90IGdldHBwaWQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSk7CgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdycCAodm9pZCkgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgpleHRlcm4gX19waWRfdCBfX2dldHBnaWQg KF9fcGlkX3QgX19waWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSk7CgpleHRlcm4gX19waWRfdCBnZXRwZ2lkIChfX3BpZF90IF9fcGlkKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCgpleHRlcm4gaW50IHNldHBn aWQgKF9fcGlkX3QgX19waWQsIF9fcGlkX3QgX19wZ2lkKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpOwojIDY2MyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz IDQKZXh0ZXJuIGludCBzZXRwZ3JwICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpOwoKCgoKCgpleHRlcm4gX19waWRfdCBzZXRzaWQgKHZvaWQpIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiBfX3Bp ZF90IGdldHNpZCAoX19waWRfdCBfX3BpZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKTsKCgoKZXh0ZXJuIF9fdWlkX3QgZ2V0dWlkICh2b2lkKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBfX3VpZF90IGdl dGV1aWQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7 CgoKZXh0ZXJuIF9fZ2lkX3QgZ2V0Z2lkICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBfX2dpZF90IGdldGVnaWQgKHZvaWQpIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgpleHRlcm4gaW50 IGdldGdyb3VwcyAoaW50IF9fc2l6ZSwgX19naWRfdCBfX2xpc3RbXSkgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CiMgNzAzICIvdXNyL2luY2x1ZGUvdW5p c3RkLmgiIDMgNApleHRlcm4gaW50IHNldHVpZCAoX191aWRfdCBfX3VpZCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CgoKCgpleHRlcm4gaW50IHNldHJl dWlkIChfX3VpZF90IF9fcnVpZCwgX191aWRfdCBfX2V1aWQpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwoKCgoKZXh0ZXJuIGludCBzZXRldWlkIChfX3Vp ZF90IF9fdWlkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsK CgoKCgoKZXh0ZXJuIGludCBzZXRnaWQgKF9fZ2lkX3QgX19naWQpIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwoKCgoKZXh0ZXJuIGludCBzZXRyZWdpZCAo X19naWRfdCBfX3JnaWQsIF9fZ2lkX3QgX19lZ2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpIDsKCgoKCmV4dGVybiBpbnQgc2V0ZWdpZCAoX19naWRfdCBf X2dpZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CiMgNzU5 ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gX19waWRfdCBmb3JrICh2b2lk KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCgoKCgoKCmV4dGVybiBfX3BpZF90 IHZmb3JrICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp OwoKCgoKCmV4dGVybiBjaGFyICp0dHluYW1lIChpbnQgX19mZCkgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKZXh0ZXJuIGludCB0dHluYW1lX3IgKGlu dCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKQogICAgIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgyKSkpIDsKCgoKZXh0ZXJuIGludCBpc2F0dHkgKGludCBfX2ZkKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCmV4dGVybiBpbnQgdHR5c2xv dCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoK CmV4dGVybiBpbnQgbGluayAoY29uc3QgY2hhciAqX19mcm9tLCBjb25zdCBjaGFyICpfX3Rv KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpIDsKCgoKCmV4dGVybiBpbnQgbGlua2F0 IChpbnQgX19mcm9tZmQsIGNvbnN0IGNoYXIgKl9fZnJvbSwgaW50IF9fdG9mZCwKICAgICBj b25zdCBjaGFyICpfX3RvLCBpbnQgX19mbGFncykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMiwg NCkpKSA7CgoKCgpleHRlcm4gaW50IHN5bWxpbmsgKGNvbnN0IGNoYXIgKl9fZnJvbSwgY29u c3QgY2hhciAqX190bykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKSA7CgoKCgpleHRl cm4gc3NpemVfdCByZWFkbGluayAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3BhdGgsCiAg ICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pCiAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDEsIDIpKSkgOwoKCgoKZXh0ZXJuIGludCBzeW1saW5rYXQgKGNvbnN0IGNoYXIg Kl9fZnJvbSwgaW50IF9fdG9mZCwKICAgICAgICBjb25zdCBjaGFyICpfX3RvKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSwgMykpKSA7CgoKZXh0ZXJuIHNzaXplX3QgcmVhZGxpbmthdCAoaW50IF9f ZmQsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19wYXRoLAogICAgICBjaGFyICpfX3Jlc3Ry aWN0IF9fYnVmLCBzaXplX3QgX19sZW4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIsIDMpKSkg OwoKCgpleHRlcm4gaW50IHVubGluayAoY29uc3QgY2hhciAqX19uYW1lKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSkpKTsKCgoKZXh0ZXJuIGludCB1bmxpbmthdCAoaW50IF9fZmQsIGNvbnN0IGNo YXIgKl9fbmFtZSwgaW50IF9fZmxhZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCgoK ZXh0ZXJuIGludCBybWRpciAoY29uc3QgY2hhciAqX19wYXRoKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSkpKTsKCgoKZXh0ZXJuIF9fcGlkX3QgdGNnZXRwZ3JwIChpbnQgX19mZCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgpleHRlcm4gaW50IHRjc2V0cGdy cCAoaW50IF9fZmQsIF9fcGlkX3QgX19wZ3JwX2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwoKCgoKCgpleHRlcm4gY2hhciAqZ2V0bG9naW4gKHZvaWQp OwoKCgoKCgoKZXh0ZXJuIGludCBnZXRsb2dpbl9yIChjaGFyICpfX25hbWUsIHNpemVfdCBf X25hbWVfbGVuKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgpleHRl cm4gaW50IHNldGxvZ2luIChjb25zdCBjaGFyICpfX25hbWUpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx KSkpOwojIDg3NCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKIyAxICIvdXNyL2luY2x1 ZGUvZ2V0b3B0LmgiIDEgMyA0CiMgNTcgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMyA0CmV4 dGVybiBjaGFyICpvcHRhcmc7CiMgNzEgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMyA0CmV4 dGVybiBpbnQgb3B0aW5kOwoKCgoKZXh0ZXJuIGludCBvcHRlcnI7CgoKCmV4dGVybiBpbnQg b3B0b3B0OwojIDE1MCAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzIDQKZXh0ZXJuIGludCBn ZXRvcHQgKGludCBfX19hcmdjLCBjaGFyICpjb25zdCAqX19fYXJndiwgY29uc3QgY2hhciAq X19zaG9ydG9wdHMpCiAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwojIDg3NSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMgNAoKCgoKCgoKZXh0 ZXJuIGludCBnZXRob3N0bmFtZSAoY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f bm9ubnVsbF9fICgxKSkpOwoKCgoKCgpleHRlcm4gaW50IHNldGhvc3RuYW1lIChjb25zdCBj aGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7 CgoKCmV4dGVybiBpbnQgc2V0aG9zdGlkIChsb25nIGludCBfX2lkKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKCgoKCgpleHRlcm4gaW50IGdldGRvbWFp bm5hbWUgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKQogICAgIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f ICgxKSkpIDsKZXh0ZXJuIGludCBzZXRkb21haW5uYW1lIChjb25zdCBjaGFyICpfX25hbWUs IHNpemVfdCBfX2xlbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CgoKCgoKZXh0ZXJu IGludCB2aGFuZ3VwICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwoKCmV4dGVybiBpbnQgcmV2b2tlIChjb25zdCBjaGFyICpfX2ZpbGUpIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f bm9ubnVsbF9fICgxKSkpIDsKCgoKCgoKCmV4dGVybiBpbnQgcHJvZmlsICh1bnNpZ25lZCBz aG9ydCBpbnQgKl9fc2FtcGxlX2J1ZmZlciwgc2l6ZV90IF9fc2l6ZSwKICAgICBzaXplX3Qg X19vZmZzZXQsIHVuc2lnbmVkIGludCBfX3NjYWxlKQogICAgIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx KSkpOwoKCgoKCmV4dGVybiBpbnQgYWNjdCAoY29uc3QgY2hhciAqX19uYW1lKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgpleHRlcm4gY2hhciAqZ2V0 dXNlcnNoZWxsICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpOwpleHRlcm4gdm9pZCBlbmR1c2Vyc2hlbGwgKHZvaWQpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CmV4dGVybiB2b2lkIHNldHVzZXJzaGVsbCAodm9p ZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgpleHRl cm4gaW50IGRhZW1vbiAoaW50IF9fbm9jaGRpciwgaW50IF9fbm9jbG9zZSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CgoKCgoKCmV4dGVybiBpbnQgY2hy b290IChjb25zdCBjaGFyICpfX3BhdGgpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCgoKZXh0 ZXJuIGNoYXIgKmdldHBhc3MgKGNvbnN0IGNoYXIgKl9fcHJvbXB0KSBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoKCgpleHRlcm4gaW50IGZzeW5jIChpbnQgX19m ZCk7CiMgOTcyICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gbG9uZyBpbnQg Z2V0aG9zdGlkICh2b2lkKTsKCgpleHRlcm4gdm9pZCBzeW5jICh2b2lkKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCmV4dGVybiBpbnQgZ2V0cGFn ZXNpemUgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBnZXRkdGFibGVz aXplICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoj IDk5NiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIGludCB0cnVuY2F0ZSAo Y29uc3QgY2hhciAqX19maWxlLCBfX29mZl90IF9fbGVuZ3RoKQogICAgIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxKSkpIDsKIyAxMDE5ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4g aW50IGZ0cnVuY2F0ZSAoaW50IF9fZmQsIF9fb2ZmX3QgX19sZW5ndGgpIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwojIDEwNDAgIi91c3IvaW5jbHVkZS91 bmlzdGQuaCIgMyA0CmV4dGVybiBpbnQgYnJrICh2b2lkICpfX2FkZHIpIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwoKCgoKCmV4dGVybiB2b2lkICpzYnJr IChpbnRwdHJfdCBfX2RlbHRhKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwojIDEwNjEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBsb25n IGludCBzeXNjYWxsIChsb25nIGludCBfX3N5c25vLCAuLi4pIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgMTExNSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5o IiAzIDQKZXh0ZXJuIGludCBmZGF0YXN5bmMgKGludCBfX2ZpbGRlcyk7CiMgMTE1NCAiL3Vz ci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKCiMgNTkgIm1hY2hpbmUuYyIgMgojIDEgIi91c3Iv aW5jbHVkZS9zeXMvcGFyYW0uaCIgMSAzIDQKIyAyMyAiL3Vzci9pbmNsdWRlL3N5cy9wYXJh bS5oIiAzIDQKIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5j bHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRlL3N5cy9wYXJhbS5oIiAy IDMgNAoKCiMgMSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2luY2x1 ZGUvbGltaXRzLmgiIDEgMyA0CiMgMzQgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51 eC82LjEuMS9pbmNsdWRlL2xpbWl0cy5oIiAzIDQKIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1y ZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMSAzIDQKCgoKCgoKIyAx ICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9saW1pdHMu aCIgMSAzIDQKIyAxNjggIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9p bmNsdWRlL2xpbWl0cy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDEgMyA0 CiMgMTQzICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9i aXRzL3Bvc2l4MV9saW0uaCIgMSAzIDQKIyAxNjAgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4 MV9saW0uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbG9jYWxfbGltLmgiIDEgMyA0 CiMgMzggIi91c3IvaW5jbHVkZS9iaXRzL2xvY2FsX2xpbS5oIiAzIDQKIyAxICIvdXNyL2lu Y2x1ZGUvbGludXgvbGltaXRzLmgiIDEgMyA0CiMgMzkgIi91c3IvaW5jbHVkZS9iaXRzL2xv Y2FsX2xpbS5oIiAyIDMgNAojIDE2MSAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5o IiAyIDMgNAojIDE0NCAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAyIDMgNAoKCgojIDEgIi91 c3IvaW5jbHVkZS9iaXRzL3Bvc2l4Ml9saW0uaCIgMSAzIDQKIyAxNDggIi91c3IvaW5jbHVk ZS9saW1pdHMuaCIgMiAzIDQKIyAxNjkgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51 eC82LjEuMS9pbmNsdWRlL2xpbWl0cy5oIiAyIDMgNAojIDggIi91c3IvbGliL2djYy9pNjg2 LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N5c2xpbWl0cy5oIiAyIDMgNAojIDM1ICIv dXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9saW1pdHMuaCIg MiAzIDQKIyAyNyAiL3Vzci9pbmNsdWRlL3N5cy9wYXJhbS5oIiAyIDMgNAoKCgoKIyAxICIv dXNyL2luY2x1ZGUvYml0cy9wYXJhbS5oIiAxIDMgNAojIDI4ICIvdXNyL2luY2x1ZGUvYml0 cy9wYXJhbS5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvbGludXgvcGFyYW0uaCIgMSAzIDQK CgoKIyAxICIvdXNyL2luY2x1ZGUvYXNtL3BhcmFtLmgiIDEgMyA0CiMgMSAiL3Vzci9pbmNs dWRlL2FzbS1nZW5lcmljL3BhcmFtLmgiIDEgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2FzbS9w YXJhbS5oIiAyIDMgNAojIDUgIi91c3IvaW5jbHVkZS9saW51eC9wYXJhbS5oIiAyIDMgNAoj IDI5ICIvdXNyL2luY2x1ZGUvYml0cy9wYXJhbS5oIiAyIDMgNAojIDMyICIvdXNyL2luY2x1 ZGUvc3lzL3BhcmFtLmgiIDIgMyA0CiMgNjAgIm1hY2hpbmUuYyIgMgojIDEgIi91c3IvaW5j bHVkZS9zeXMvdGltZS5oIiAxIDMgNAojIDI3ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIg MyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAxIDMgNAojIDI4ICIvdXNyL2lu Y2x1ZGUvc3lzL3RpbWUuaCIgMiAzIDQKIyAzNyAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgi IDMgNAoKIyA1NSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNApzdHJ1Y3QgdGltZXpv bmUKICB7CiAgICBpbnQgdHpfbWludXRlc3dlc3Q7CiAgICBpbnQgdHpfZHN0dGltZTsKICB9 OwoKdHlwZWRlZiBzdHJ1Y3QgdGltZXpvbmUgKl9fcmVzdHJpY3QgX190aW1lem9uZV9wdHJf dDsKIyA3MSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNApleHRlcm4gaW50IGdldHRp bWVvZmRheSAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QgX190diwKICAgIF9fdGltZXpv bmVfcHRyX3QgX190eikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgpleHRlcm4gaW50IHNl dHRpbWVvZmRheSAoY29uc3Qgc3RydWN0IHRpbWV2YWwgKl9fdHYsCiAgICBjb25zdCBzdHJ1 Y3QgdGltZXpvbmUgKl9fdHopCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKTsKCgoKCgpleHRlcm4gaW50IGFkanRpbWUgKGNvbnN0IHN0cnVjdCB0aW1l dmFsICpfX2RlbHRhLAogICAgICBzdHJ1Y3QgdGltZXZhbCAqX19vbGRkZWx0YSkgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCmVudW0gX19pdGltZXJf d2hpY2gKICB7CgogICAgSVRJTUVSX1JFQUwgPSAwLAoKCiAgICBJVElNRVJfVklSVFVBTCA9 IDEsCgoKCiAgICBJVElNRVJfUFJPRiA9IDIKCiAgfTsKCgoKc3RydWN0IGl0aW1lcnZhbAog IHsKCiAgICBzdHJ1Y3QgdGltZXZhbCBpdF9pbnRlcnZhbDsKCiAgICBzdHJ1Y3QgdGltZXZh bCBpdF92YWx1ZTsKICB9OwoKCgoKCgp0eXBlZGVmIGludCBfX2l0aW1lcl93aGljaF90OwoK CgoKZXh0ZXJuIGludCBnZXRpdGltZXIgKF9faXRpbWVyX3doaWNoX3QgX193aGljaCwKICAg ICAgICBzdHJ1Y3QgaXRpbWVydmFsICpfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwoKCgoKZXh0ZXJuIGludCBzZXRpdGltZXIgKF9faXRpbWVy X3doaWNoX3QgX193aGljaCwKICAgICAgICBjb25zdCBzdHJ1Y3QgaXRpbWVydmFsICpfX3Jl c3RyaWN0IF9fbmV3LAogICAgICAgIHN0cnVjdCBpdGltZXJ2YWwgKl9fcmVzdHJpY3QgX19v bGQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgpleHRl cm4gaW50IHV0aW1lcyAoY29uc3QgY2hhciAqX19maWxlLCBjb25zdCBzdHJ1Y3QgdGltZXZh bCBfX3R2cFsyXSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKZXh0ZXJuIGludCBs dXRpbWVzIChjb25zdCBjaGFyICpfX2ZpbGUsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIF9fdHZw WzJdKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgZnV0aW1lcyAo aW50IF9fZmQsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIF9fdHZwWzJdKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwojIDE4OSAiL3Vzci9pbmNsdWRlL3N5cy90 aW1lLmgiIDMgNAoKIyA2MSAibWFjaGluZS5jIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90 aW1lcy5oIiAxIDMgNAojIDMxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWVzLmgiIDMgNAoKCgpz dHJ1Y3QgdG1zCiAgewogICAgY2xvY2tfdCB0bXNfdXRpbWU7CiAgICBjbG9ja190IHRtc19z dGltZTsKCiAgICBjbG9ja190IHRtc19jdXRpbWU7CiAgICBjbG9ja190IHRtc19jc3RpbWU7 CiAgfTsKCgoKCgoKZXh0ZXJuIGNsb2NrX3QgdGltZXMgKHN0cnVjdCB0bXMgKl9fYnVmZmVy KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCiMgNjIgIm1h Y2hpbmUuYyIgMgojIDEgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMSAzIDQKIyAy NCAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUv Yml0cy9yZXNvdXJjZS5oIiAxIDMgNAojIDMxICIvdXNyL2luY2x1ZGUvYml0cy9yZXNvdXJj ZS5oIiAzIDQKZW51bSBfX3JsaW1pdF9yZXNvdXJjZQp7CgogIFJMSU1JVF9DUFUgPSAwLAoK CgogIFJMSU1JVF9GU0laRSA9IDEsCgoKCiAgUkxJTUlUX0RBVEEgPSAyLAoKCgogIFJMSU1J VF9TVEFDSyA9IDMsCgoKCiAgUkxJTUlUX0NPUkUgPSA0LAoKCgoKCgogIF9fUkxJTUlUX1JT UyA9IDUsCgoKCiAgUkxJTUlUX05PRklMRSA9IDcsCiAgX19STElNSVRfT0ZJTEUgPSBSTElN SVRfTk9GSUxFLAoKCgoKICBSTElNSVRfQVMgPSA5LAoKCgogIF9fUkxJTUlUX05QUk9DID0g NiwKCgoKICBfX1JMSU1JVF9NRU1MT0NLID0gOCwKCgoKICBfX1JMSU1JVF9MT0NLUyA9IDEw LAoKCgogIF9fUkxJTUlUX1NJR1BFTkRJTkcgPSAxMSwKCgoKICBfX1JMSU1JVF9NU0dRVUVV RSA9IDEyLAoKCgoKCiAgX19STElNSVRfTklDRSA9IDEzLAoKCgoKICBfX1JMSU1JVF9SVFBS SU8gPSAxNCwKCgoKCgogIF9fUkxJTUlUX1JUVElNRSA9IDE1LAoKCiAgX19STElNSVRfTkxJ TUlUUyA9IDE2LAogIF9fUkxJTV9OTElNSVRTID0gX19STElNSVRfTkxJTUlUUwoKCn07CiMg MTMxICIvdXNyL2luY2x1ZGUvYml0cy9yZXNvdXJjZS5oIiAzIDQKdHlwZWRlZiBfX3JsaW1f dCBybGltX3Q7CgoKCgoKCgpzdHJ1Y3QgcmxpbWl0CiAgewoKICAgIHJsaW1fdCBybGltX2N1 cjsKCiAgICBybGltX3QgcmxpbV9tYXg7CiAgfTsKIyAxNTggIi91c3IvaW5jbHVkZS9iaXRz L3Jlc291cmNlLmgiIDMgNAplbnVtIF9fcnVzYWdlX3dobwp7CgogIFJVU0FHRV9TRUxGID0g MCwKCgoKICBSVVNBR0VfQ0hJTERSRU4gPSAtMQojIDE3NiAiL3Vzci9pbmNsdWRlL2JpdHMv cmVzb3VyY2UuaCIgMyA0Cn07CgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDEg MyA0CiMgMTgwICIvdXNyL2luY2x1ZGUvYml0cy9yZXNvdXJjZS5oIiAyIDMgNAoKCgoKCgoK c3RydWN0IHJ1c2FnZQogIHsKCiAgICBzdHJ1Y3QgdGltZXZhbCBydV91dGltZTsKCiAgICBz dHJ1Y3QgdGltZXZhbCBydV9zdGltZTsKCiAgICBfX2V4dGVuc2lvbl9fIHVuaW9uCiAgICAg IHsKIGxvbmcgaW50IHJ1X21heHJzczsKIF9fc3lzY2FsbF9zbG9uZ190IF9fcnVfbWF4cnNz X3dvcmQ7CiAgICAgIH07CgoKCiAgICBfX2V4dGVuc2lvbl9fIHVuaW9uCiAgICAgIHsKIGxv bmcgaW50IHJ1X2l4cnNzOwogX19zeXNjYWxsX3Nsb25nX3QgX19ydV9peHJzc193b3JkOwog ICAgICB9OwoKICAgIF9fZXh0ZW5zaW9uX18gdW5pb24KICAgICAgewogbG9uZyBpbnQgcnVf aWRyc3M7CiBfX3N5c2NhbGxfc2xvbmdfdCBfX3J1X2lkcnNzX3dvcmQ7CiAgICAgIH07Cgog ICAgX19leHRlbnNpb25fXyB1bmlvbgogICAgICB7CiBsb25nIGludCBydV9pc3JzczsKICBf X3N5c2NhbGxfc2xvbmdfdCBfX3J1X2lzcnNzX3dvcmQ7CiAgICAgIH07CgoKICAgIF9fZXh0 ZW5zaW9uX18gdW5pb24KICAgICAgewogbG9uZyBpbnQgcnVfbWluZmx0OwogX19zeXNjYWxs X3Nsb25nX3QgX19ydV9taW5mbHRfd29yZDsKICAgICAgfTsKCiAgICBfX2V4dGVuc2lvbl9f IHVuaW9uCiAgICAgIHsKIGxvbmcgaW50IHJ1X21hamZsdDsKIF9fc3lzY2FsbF9zbG9uZ190 IF9fcnVfbWFqZmx0X3dvcmQ7CiAgICAgIH07CgogICAgX19leHRlbnNpb25fXyB1bmlvbgog ICAgICB7CiBsb25nIGludCBydV9uc3dhcDsKIF9fc3lzY2FsbF9zbG9uZ190IF9fcnVfbnN3 YXBfd29yZDsKICAgICAgfTsKCgogICAgX19leHRlbnNpb25fXyB1bmlvbgogICAgICB7CiBs b25nIGludCBydV9pbmJsb2NrOwogX19zeXNjYWxsX3Nsb25nX3QgX19ydV9pbmJsb2NrX3dv cmQ7CiAgICAgIH07CgogICAgX19leHRlbnNpb25fXyB1bmlvbgogICAgICB7CiBsb25nIGlu dCBydV9vdWJsb2NrOwogX19zeXNjYWxsX3Nsb25nX3QgX19ydV9vdWJsb2NrX3dvcmQ7CiAg ICAgIH07CgogICAgX19leHRlbnNpb25fXyB1bmlvbgogICAgICB7CiBsb25nIGludCBydV9t c2dzbmQ7CiBfX3N5c2NhbGxfc2xvbmdfdCBfX3J1X21zZ3NuZF93b3JkOwogICAgICB9OwoK ICAgIF9fZXh0ZW5zaW9uX18gdW5pb24KICAgICAgewogbG9uZyBpbnQgcnVfbXNncmN2Owog X19zeXNjYWxsX3Nsb25nX3QgX19ydV9tc2dyY3Zfd29yZDsKICAgICAgfTsKCiAgICBfX2V4 dGVuc2lvbl9fIHVuaW9uCiAgICAgIHsKIGxvbmcgaW50IHJ1X25zaWduYWxzOwogX19zeXNj YWxsX3Nsb25nX3QgX19ydV9uc2lnbmFsc193b3JkOwogICAgICB9OwoKCgogICAgX19leHRl bnNpb25fXyB1bmlvbgogICAgICB7CiBsb25nIGludCBydV9udmNzdzsKIF9fc3lzY2FsbF9z bG9uZ190IF9fcnVfbnZjc3dfd29yZDsKICAgICAgfTsKCgogICAgX19leHRlbnNpb25fXyB1 bmlvbgogICAgICB7CiBsb25nIGludCBydV9uaXZjc3c7CiBfX3N5c2NhbGxfc2xvbmdfdCBf X3J1X25pdmNzd193b3JkOwogICAgICB9OwogIH07CgoKCgoKCgplbnVtIF9fcHJpb3JpdHlf d2hpY2gKewogIFBSSU9fUFJPQ0VTUyA9IDAsCgogIFBSSU9fUEdSUCA9IDEsCgogIFBSSU9f VVNFUiA9IDIKCn07CgoKCiMgMzI4ICIvdXNyL2luY2x1ZGUvYml0cy9yZXNvdXJjZS5oIiAz IDQKCiMgMjUgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMiAzIDQKCgoKCgoKCiMg NDIgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMyA0CnR5cGVkZWYgaW50IF9fcmxp bWl0X3Jlc291cmNlX3Q7CnR5cGVkZWYgaW50IF9fcnVzYWdlX3dob190Owp0eXBlZGVmIGlu dCBfX3ByaW9yaXR5X3doaWNoX3Q7CgoKCgoKZXh0ZXJuIGludCBnZXRybGltaXQgKF9fcmxp bWl0X3Jlc291cmNlX3QgX19yZXNvdXJjZSwKICAgICAgICBzdHJ1Y3QgcmxpbWl0ICpfX3Js aW1pdHMpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgNjkg Ii91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMyA0CmV4dGVybiBpbnQgc2V0cmxpbWl0 IChfX3JsaW1pdF9yZXNvdXJjZV90IF9fcmVzb3VyY2UsCiAgICAgICAgY29uc3Qgc3RydWN0 IHJsaW1pdCAqX19ybGltaXRzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwojIDg3ICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDMgNApleHRlcm4g aW50IGdldHJ1c2FnZSAoX19ydXNhZ2Vfd2hvX3QgX193aG8sIHN0cnVjdCBydXNhZ2UgKl9f dXNhZ2UpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoK ZXh0ZXJuIGludCBnZXRwcmlvcml0eSAoX19wcmlvcml0eV93aGljaF90IF9fd2hpY2gsIGlk X3QgX193aG8pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoK CmV4dGVybiBpbnQgc2V0cHJpb3JpdHkgKF9fcHJpb3JpdHlfd2hpY2hfdCBfX3doaWNoLCBp ZF90IF9fd2hvLCBpbnQgX19wcmlvKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSk7CgoKIyA2MyAibWFjaGluZS5jIiAyCiMgNzEgIm1hY2hpbmUuYyIK IyAxICJlbmdpbmVfcGwuaCIgMQojIDQwICJlbmdpbmVfcGwuaCIKIyAxICJwbF9wYXJhbXMu aCIgMQojIDQxICJlbmdpbmVfcGwuaCIgMgojIDEgImhhc2hfZmN0LmgiIDEKIyA1MyAiaGFz aF9mY3QuaCIKCiMgNTMgImhhc2hfZmN0LmgiCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgbGVu OwogIHVpbnQzMl90IGhhc2g7Cn0gSGFzaEluY3JJbmZvOwoKCgoKCgoKdWludDMyX3QgUGxf SGFzaF9CdWZmZXIoY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbik7Cgp2b2lkIFBsX0hhc2hf SW5jcl9Jbml0KEhhc2hJbmNySW5mbyAqaGkpOwoKdm9pZCBQbF9IYXNoX0luY3JfQnVmZmVy KEhhc2hJbmNySW5mbyAqaGksIGNvbnN0IHZvaWQgKmRhdGEsIGludCBsZW4pOwoKdm9pZCBQ bF9IYXNoX0luY3JfSW50MzIoSGFzaEluY3JJbmZvICpoaSwgdWludDMyX3QgeCk7Cgp2b2lk IFBsX0hhc2hfSW5jcl9JbnQ2NChIYXNoSW5jckluZm8gKmhpLCB1aW50NjRfdCB4KTsKCnZv aWQgUGxfSGFzaF9JbmNyX0RvdWJsZShIYXNoSW5jckluZm8gKmhpLCBkb3VibGUgeCk7Cgp1 aW50MzJfdCBQbF9IYXNoX0luY3JfVGVybShIYXNoSW5jckluZm8gKmhpKTsKIyA0MiAiZW5n aW5lX3BsLmgiIDIKIyAxICJoYXNoLmgiIDEKIyA0OCAiaGFzaC5oIgp0eXBlZGVmIHN0cnVj dAp7CiAgY2hhciAqZW5kdDsKICBjaGFyICpjdXJfdDsKICBjaGFyICpjdXJfcDsKfQpIYXNo U2NhbjsKIyA2NyAiaGFzaC5oIgpjaGFyICpQbF9IYXNoX0FsbG9jX1RhYmxlKGludCB0Ymxf c2l6ZSwgaW50IGVsZW1fc2l6ZSk7Cgp2b2lkIFBsX0hhc2hfRnJlZV9UYWJsZShjaGFyICp0 YmwpOwoKY2hhciAqUGxfSGFzaF9SZWFsbG9jX1RhYmxlKGNoYXIgKnRibCwgaW50IG5ld190 Ymxfc2l6ZSk7Cgp2b2lkIFBsX0hhc2hfRGVsZXRlX0FsbChjaGFyICp0YmwpOwoKY2hhciAq UGxfSGFzaF9JbnNlcnQoY2hhciAqdGJsLCBjaGFyICplbGVtLCBpbnQgcmVwbGFjZSk7Cgpj aGFyICpQbF9IYXNoX0ZpbmQoY2hhciAqdGJsLCBQbExvbmcga2V5KTsKCmNoYXIgKlBsX0hh c2hfRGVsZXRlKGNoYXIgKnRibCwgUGxMb25nIGtleSk7CgpjaGFyICpQbF9IYXNoX0ZpcnN0 KGNoYXIgKnRibCwgSGFzaFNjYW4gKnNjYW4pOwoKY2hhciAqUGxfSGFzaF9OZXh0KEhhc2hT Y2FuICpzY2FuKTsKCmludCBQbF9IYXNoX1RhYmxlX1NpemUoY2hhciAqdGJsKTsKCmludCBQ bF9IYXNoX05iX0VsZW1lbnRzKGNoYXIgKnRibCk7CiMgNDMgImVuZ2luZV9wbC5oIiAyCiMg MSAiYm9vbC5oIiAxCiMgNjUgImJvb2wuaCIKdHlwZWRlZiBpbnQgQm9vbDsKIyA0NCAiZW5n aW5lX3BsLmgiIDIKIyAxICJ3YW1fcmVncy5oIiAxCiMgNDUgImVuZ2luZV9wbC5oIiAyCiMg MSAid2FtX2FyY2hpLmgiIDEKIyA0NCAid2FtX2FyY2hpLmgiCnR5cGVkZWYgaW50cHRyX3Qg V2FtV29yZDsKCnR5cGVkZWYgdm9pZCAoKkNvZGVQdHIpICgpOwoKdHlwZWRlZiBDb2RlUHRy IFdhbUNvbnQ7CgoKCgoKCnR5cGVkZWYgV2FtV29yZCAqV2FtV29yZFA7CgoKCgoKCnJlZ2lz dGVyIFdhbVdvcmRQIFRSIGFzbSAoImVieCIpOwojIDk2ICJ3YW1fYXJjaGkuaCIKZXh0ZXJu IFdhbVdvcmQgcGxfcmVnX2JhbmtbXTsKZXh0ZXJuIFdhbVdvcmQgcGxfYnVmZl9zaWduYWxf cmVnW107CgpleHRlcm4gY2hhciAqcGxfcmVnX3RibFtdOwojIDI3MCAid2FtX2FyY2hpLmgi CnR5cGVkZWYgZW51bQp7CiAgTE9OR19JTlQsCiAgU0hPUlRfVU5TLAogIEFERFJFU1MKfVR5 cFRhZzsKCnR5cGVkZWYgc3RydWN0CnsKICBjaGFyICpuYW1lOwogIFR5cFRhZyB0eXBlOwog IGludCB2YWx1ZTsKICBQbExvbmcgdGFnX21hc2s7Cn1JbmZUYWc7CiMgMzAxICJ3YW1fYXJj aGkuaCIKZXh0ZXJuIEluZlRhZyBwbF90YWdfdGJsW107CiMgMzI4ICJ3YW1fYXJjaGkuaCIK IyAxICJ3YW1fc3RhY2tzLmgiIDEKIyAyNyAid2FtX3N0YWNrcy5oIgp0eXBlZGVmIHN0cnVj dAp7CiAgY2hhciAqbmFtZTsKICBjaGFyICpkZXNjOwogIGNoYXIgKmVudl92YXJfbmFtZTsK ICBQbExvbmcgKnBfZGVmX3NpemU7CiAgaW50IGRlZmF1bHRfc2l6ZTsKICBpbnQgc2l6ZTsK ICBXYW1Xb3JkICpzdGFjazsKfUluZlN0YWNrOwojIDU4ICJ3YW1fc3RhY2tzLmgiCmV4dGVy biBQbExvbmcgcGxfZGVmX3RyYWlsX3NpemU7CmV4dGVybiBQbExvbmcgcGxfZGVmX2NzdHJf c2l6ZTsKZXh0ZXJuIFBsTG9uZyBwbF9kZWZfZ2xvYmFsX3NpemU7CmV4dGVybiBQbExvbmcg cGxfZGVmX2xvY2FsX3NpemU7CmV4dGVybiBQbExvbmcgcGxfZml4ZWRfc2l6ZXM7CgoKZXh0 ZXJuIEluZlN0YWNrIHBsX3N0a190YmxbXTsKIyAzMjkgIndhbV9hcmNoaS5oIiAyCiMgNDYg ImVuZ2luZV9wbC5oIiAyCiMgMSAiZW5naW5lLmgiIDEKIyA4NyAiZW5naW5lLmgiCmV4dGVy biBpbnQgcGxfb3NfYXJnYzsKZXh0ZXJuIGNoYXIgKipwbF9vc19hcmd2OwoKZXh0ZXJuIGNo YXIgKnBsX2hvbWU7CmV4dGVybiBpbnQgcGxfZGV2ZWxfbW9kZTsKCmV4dGVybiBjaGFyIHBs X2dsb2JfYnVmZltdOwoKZXh0ZXJuIFBsTG9uZyAqcGxfYmFzZV9mbDsKZXh0ZXJuIGRvdWJs ZSAqcGxfYmFzZV9mZDsKCmV4dGVybiBpbnQgcGxfbGVfbW9kZTsKIyAxMDggImVuZ2luZS5o IgppbnQgUGxfU3RhcnRfUHJvbG9nKGludCBhcmdjLCBjaGFyICphcmd2W10pOwoKdm9pZCBQ bF9TdG9wX1Byb2xvZyh2b2lkKTsKCnZvaWQgUGxfUmVzZXRfUHJvbG9nKHZvaWQpOwoKdm9p ZCBQbF9SZXNldF9Qcm9sb2dfSW5fU2lnbmFsKHZvaWQpOwoKdm9pZCBQbF9TZXRfSGVhcF9B Y3R1YWxfU3RhcnQoV2FtV29yZCAqaGVhcF9hY3R1YWxfc3RhcnQpOwoKCgp2b2lkIFBsX0V4 ZWN1dGVfRGlyZWN0aXZlKGludCBwbF9maWxlLCBpbnQgcGxfbGluZSwgQm9vbCBpc19zeXN0 ZW0sCiAgICAgQ29kZVB0ciBwcm9jKTsKCkJvb2wgUGxfVHJ5X0V4ZWN1dGVfVG9wX0xldmVs KHZvaWQpOwoKQm9vbCBQbF9DYWxsX1Byb2xvZyhDb2RlUHRyIGNvZGVwKTsKCkJvb2wgUGxf Q2FsbF9Qcm9sb2dfTmV4dF9Tb2woV2FtV29yZCAqcXVlcnlfYik7Cgp2b2lkIFBsX0tlZXBf UmVzdF9Gb3JfUHJvbG9nKFdhbVdvcmQgKnF1ZXJ5X2IpOwoKdm9pZCBQbF9FeGl0X1dpdGhf RXhjZXB0aW9uKHZvaWQpOwoKdm9pZCBQbF9FeGVjdXRlX0FfQ29udGludWF0aW9uKENvZGVQ dHIgY29kZXApOwojIDQ3ICJlbmdpbmVfcGwuaCIgMgojIDEgImF0b20uaCIgMQojIDk3ICJh dG9tLmgiCnR5cGVkZWYgc3RydWN0CnsKICB1bnNpZ25lZCBsZW5ndGg6MTY7CiAgdW5zaWdu ZWQgb3BfbWFzazo0OwogIHVuc2lnbmVkIHR5cGU6MjsKICB1bnNpZ25lZCBuZWVkc19xdW90 ZToxOwogIHVuc2lnbmVkIG5lZWRzX3NjYW46MTsKfQpBdG9tUHJvcDsKCgoKCnR5cGVkZWYg c3RydWN0CnsKICBjaGFyICpuYW1lOwogIHVuc2lnbmVkIGhhc2g7CiAgQXRvbVByb3AgcHJv cDsKICB2b2lkICppbmZvOwp9CkF0b21JbmY7CiMgMTUzICJhdG9tLmgiCmV4dGVybiBBdG9t SW5mICpwbF9hdG9tX3RibDsKZXh0ZXJuIGludCBwbF9tYXhfYXRvbTsKZXh0ZXJuIGludCBw bF9uYl9hdG9tOwoKZXh0ZXJuIGludCBwbF9hdG9tX3ZvaWQ7CmV4dGVybiBpbnQgcGxfYXRv bV9jdXJseV9icmFja2V0czsKCmV4dGVybiBpbnQgcGxfYXRvbV9mYWxzZTsKZXh0ZXJuIGlu dCBwbF9hdG9tX3RydWU7CgpleHRlcm4gaW50IHBsX2F0b21fZW5kX29mX2ZpbGU7CgoKCgoK ZXh0ZXJuIGNoYXIgcGxfY2hhcl9jb252W107CmV4dGVybiBpbnQgcGxfY2hhcl90eXBlW107 CgpleHRlcm4gY2hhciBwbF9lc2NhcGVfc3ltYm9sW107CmV4dGVybiBjaGFyIHBsX2VzY2Fw ZV9jaGFyW107CgoKClBsTG9uZyBwbF9kZWZfbWF4X2F0b207CgoKCgoKCgp2b2lkIFBsX0lu aXRfQXRvbSh2b2lkKTsKCmludCBQbF9DcmVhdGVfQWxsb2NhdGVfQXRvbShjaGFyICpuYW1l KTsKCmludCBQbF9DcmVhdGVfQXRvbShjaGFyICpuYW1lKTsKCldhbVdvcmQgX19hdHRyaWJ1 dGVfXygocmVncGFybSgzKSkpIFBsX0NyZWF0ZV9BdG9tX1RhZ2dlZChjaGFyICpuYW1lKTsK CmludCBQbF9GaW5kX0F0b20oY2hhciAqbmFtZSk7CgppbnQgUGxfR2VuX05ld19BdG9tKGNo YXIgKnByZWZpeCk7CgppbnQgUGxfRmluZF9OZXh0X0F0b20oaW50IGxhc3RfYXRvbSk7CiMg NDggImVuZ2luZV9wbC5oIiAyCiMgMSAicHJlZC5oIiAxCiMgNjIgInByZWQuaCIKdHlwZWRl ZiBzdHJ1Y3QKewogIFBsTG9uZyBmX247CiAgaW50IHBsX2ZpbGU7CiAgaW50IHBsX2xpbmU7 CiAgaW50IHByb3A7CiAgUGxMb25nICpjb2RlcDsKICBQbExvbmcgKmR5bjsKfQpQcmVkSW5m OwojIDg2ICJwcmVkLmgiCmV4dGVybiBjaGFyICpwbF9wcmVkX3RibDsKIyA5NyAicHJlZC5o Igp2b2lkIFBsX0luaXRfUHJlZCh2b2lkKTsKClByZWRJbmYgKiBfX2F0dHJpYnV0ZV9fKChy ZWdwYXJtKDMpKSkgUGxfQ3JlYXRlX1ByZWQoaW50IGZ1bmMsIGludCBhcml0eSwgaW50IHBs X2ZpbGUsIGludCBwbF9saW5lLAogICAgICAgaW50IHByb3AsIFBsTG9uZyAqY29kZXApOwoK UHJlZEluZiAqIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9Mb29rdXBfUHJlZChp bnQgZnVuYywgaW50IGFyaXR5KTsKCnZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp IFBsX0RlbGV0ZV9QcmVkKGludCBmdW5jLCBpbnQgYXJpdHkpOwojIDQ5ICJlbmdpbmVfcGwu aCIgMgojIDEgIm1pc2MuaCIgMQojIDU3ICJtaXNjLmgiCmNoYXIgKlBsX01hbGxvY19DaGVj ayh1bnNpZ25lZCBzaXplLCBjaGFyICpzcmNfZmlsZSwgaW50IHNyY19saW5lKTsKCmNoYXIg KlBsX0NhbGxvY19DaGVjayh1bnNpZ25lZCBuYiwgdW5zaWduZWQgc2l6ZSwgY2hhciAqc3Jj X2ZpbGUsCiAgICAgaW50IHNyY19saW5lKTsKCmNoYXIgKlBsX1JlYWxsb2NfQ2hlY2soY2hh ciAqcHRyLCB1bnNpZ25lZCBzaXplLCBjaGFyICpzcmNfZmlsZSwgaW50IHNyY19saW5lKTsK CmNoYXIgKlBsX1N0cmR1cF9DaGVjayhjaGFyICpzdHIsIGNoYXIgKnNyY19maWxlLCBpbnQg c3JjX2xpbmUpOwojIDc2ICJtaXNjLmgiCnZvaWQgUGxfRXh0ZW5kX1RhYmxlX0lmX05lZWRl ZChjaGFyICoqaGFzaF90YmwpOwoKdm9pZCBQbF9FeHRlbmRfQXJyYXkoY2hhciAqKnB0Ymws IGludCAqbmJfZWxlbSwgaW50IGVsZW1fc2l6ZSwgQm9vbCBiemVybyk7Cgp2b2lkIFBsX0V4 aXRfV2l0aF9WYWx1ZShpbnQgcmV0X3ZhbCk7Cgp2b2lkIFBsX0ZhdGFsX0Vycm9yKGNoYXIg KmZvcm1hdCwgLi4uKTsKIyAxMTQgIm1pc2MuaCIKdm9pZCAqUGxfRHVtbXlfUHRyKHZvaWQg KnApOwojIDUwICJlbmdpbmVfcGwuaCIgMgojIDEgIm9wZXIuaCIgMQojIDcyICJvcGVyLmgi CnR5cGVkZWYgc3RydWN0CnsKICBQbExvbmcgYV90OwogIGludCBwcmVjOwogIGludCBsZWZ0 OwogIGludCByaWdodDsKfQpPcGVySW5mOwojIDk0ICJvcGVyLmgiCmV4dGVybiBjaGFyICpw bF9vcGVyX3RibDsKIyAxMDMgIm9wZXIuaCIKdm9pZCBQbF9Jbml0X09wZXIodm9pZCk7CgpP cGVySW5mICpQbF9DcmVhdGVfT3BlcihpbnQgYXRvbV9vcCwgaW50IHR5cGUsIGludCBwcmVj LCBpbnQgbGVmdCwgaW50IHJpZ2h0KTsKCk9wZXJJbmYgKlBsX0xvb2t1cF9PcGVyKGludCBh dG9tX29wLCBpbnQgdHlwZSk7CgpPcGVySW5mICpQbF9Mb29rdXBfT3Blcl9BbnlfVHlwZShp bnQgYXRvbV9vcCk7CgpPcGVySW5mICpQbF9EZWxldGVfT3BlcihpbnQgYXRvbV9vcCwgaW50 IHR5cGUpOwojIDUxICJlbmdpbmVfcGwuaCIgMgojIDEgIm1hY2hpbmUxLmgiIDEKIyA3MCAi bWFjaGluZTEuaCIKZXh0ZXJuIGludCBwbF9tX29zX3R5cGU7CmV4dGVybiBjaGFyIHBsX21f YXJjaGl0ZWN0dXJlW107CmV4dGVybiBjaGFyIHBsX21fb3NfdmVyc2lvbltdOwojIDgzICJt YWNoaW5lMS5oIgp2b2lkIFBsX0luaXRfTWFjaGluZTEodm9pZCk7CgpjaGFyICoqUGxfTV9D cmVhdGVfU2hlbGxfQ29tbWFuZChjaGFyICpjbWQpOwoKY2hhciAqKlBsX01fQ21kX0xpbmVf VG9fQXJndihjaGFyICpjbWQsIGludCAqYXJnYyk7CgppbnQgUGxfTV9TaGVsbChjaGFyICpj bWQpOwoKaW50IFBsX01fU3Bhd24oY2hhciAqYXJnW10pOwoKaW50IFBsX01fU3Bhd25fUmVk aXJlY3QoY2hhciAqYXJnW10sIGludCBkZXRhY2gsCiAgICAgICBGSUxFICoqZl9pbiwgRklM RSAqKmZfb3V0LCBGSUxFICoqZl9lcnIpOwoKaW50IFBsX01fR2V0X1N0YXR1cyhpbnQgcGlk KTsKCgoKY2hhciAqUGxfTV9Na3RlbXAoY2hhciAqdG1wX3RlbXBsYXRlKTsKCmNoYXIgKlBs X01fVGVtcG5hbShjaGFyICpkaXIsIGNoYXIgKnBmeCk7CiMgNTIgImVuZ2luZV9wbC5oIiAy CiMgMSAibWFjaGluZS5oIiAxCiMgNjEgIm1hY2hpbmUuaCIKdm9pZCBQbF9Jbml0X01hY2hp bmUodm9pZCk7CgpjaGFyICpQbF9NX1N5c19FcnJfU3RyaW5nKGludCByZXRfdmFsKTsKClBs TG9uZyBQbF9NX1VzZXJfVGltZSh2b2lkKTsKClBsTG9uZyBQbF9NX1N5c3RlbV9UaW1lKHZv aWQpOwoKUGxMb25nIFBsX01fUmVhbF9UaW1lKHZvaWQpOwoKdm9pZCBQbF9NX1JhbmRvbWl6 ZSh2b2lkKTsKCnZvaWQgUGxfTV9TZXRfU2VlZChpbnQgbik7CgppbnQgUGxfTV9HZXRfU2Vl ZCh2b2lkKTsKCmludCBQbF9NX1JhbmRvbV9JbnRlZ2VyKGludCBuKTsKCmRvdWJsZSBQbF9N X1JhbmRvbV9GbG9hdChkb3VibGUgbik7CgoKCmNoYXIgKlBsX01fSG9zdF9OYW1lX0Zyb21f TmFtZShjaGFyICpob3N0X25hbWUpOwoKY2hhciAqUGxfTV9Ib3N0X05hbWVfRnJvbV9BZHIo Y2hhciAqaG9zdF9hZGRyZXNzKTsKCmNoYXIgKlBsX01fR2V0X1dvcmtpbmdfRGlyKHZvaWQp OwoKQm9vbCBQbF9NX1NldF9Xb3JraW5nX0RpcihjaGFyICpwYXRoKTsKCmNoYXIgKlBsX01f QWJzb2x1dGVfUGF0aF9OYW1lKGNoYXIgKnNyYyk7CgpCb29sIFBsX01fSXNfQWJzb2x1dGVf RmlsZV9OYW1lKGNoYXIgKnBhdGgpOwoKY2hhciAqUGxfTV9EZWNvbXBvc2VfRmlsZV9OYW1l KGNoYXIgKnBhdGgsIEJvb2wgZGVsX3RyYWlsX3NsYXNoZXMsCiAgICAgICAgICBjaGFyICoq YmFzZSwgY2hhciAqKnN1ZmZpeCk7CgoKCgoKCgp2b2lkIE1fQ2hlY2tfTWFnaWNfV29yZHMo dm9pZCk7CiMgNTMgImVuZ2luZV9wbC5oIiAyCiMgMSAic3RhY2tzX3NpZ3NlZ3YuaCIgMQoj IDUwICJzdGFja3Nfc2lnc2Vndi5oIgp0eXBlZGVmIGludCAoKlNlZ3ZIZGxyKSh2b2lkICpi YWRfYWRkcik7CiMgNjAgInN0YWNrc19zaWdzZWd2LmgiCnZvaWQgUGxfQWxsb2NhdGVfU3Rh Y2tzKHZvaWQpOwoKdm9pZCBQbF9QdXNoX1NJR1NFR1ZfSGFuZGxlcihTZWd2SGRsciBoYW5k bGVyKTsKCnZvaWQgUGxfUG9wX1NJR1NFR1ZfSGFuZGxlcih2b2lkKTsKIyA1NCAiZW5naW5l X3BsLmgiIDIKIyAxICJvYmpfY2hhaW4uaCIgMQojIDU4ICJvYmpfY2hhaW4uaCIKdm9pZCBQ bF9GaW5kX0xpbmtlZF9PYmplY3RzKHZvaWQpOwoKdm9pZCBQbF9OZXdfT2JqZWN0KHZvaWQg KCpmY3Rfb2JqX2luaXQpKCksIHZvaWQgKCpmY3RfZXhlY19zeXN0ZW0pICgpLCB2b2lkICgq ZmN0X2V4ZWNfdXNlcikgKCkpOwojIDU1ICJlbmdpbmVfcGwuaCIgMgojIDEgIndhbV9pbnN0 LmgiIDEKIyAyNDkgIndhbV9pbnN0LmgiCnR5cGVkZWYgc3RydWN0CnsKICBQbExvbmcga2V5 OwogIENvZGVQdHIgY29kZXA7Cn0KU3d0SW5mOwoKdHlwZWRlZiBTd3RJbmYgKlN3dFRibDsK IyAyNjkgIndhbV9pbnN0LmgiCldhbVdvcmQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp IFBsX0NyZWF0ZV9GdW5jdG9yX0FyaXR5X1RhZ2dlZChjaGFyICpmdW5jX3N0ciwgaW50IGFy aXR5KTsKClN3dFRibCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfQ3JlYXRlX1N3 dF9UYWJsZShpbnQgc2l6ZSk7Cgp2b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQ bF9DcmVhdGVfU3d0X0F0bV9FbGVtZW50KFN3dFRibCB0LCBpbnQgc2l6ZSwgaW50IGF0b20s IENvZGVQdHIgY29kZXApOwoKdm9pZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxf Q3JlYXRlX1N3dF9TdGNfRWxlbWVudChTd3RUYmwgdCwgaW50IHNpemUsIGludCBmdW5jLCBp bnQgYXJpdHksCiAgICAgICBDb2RlUHRyIGNvZGVwKTsKCkJvb2wgX19hdHRyaWJ1dGVfXygo cmVncGFybSgzKSkpIFBsX0dldF9BdG9tX1RhZ2dlZChXYW1Xb3JkIHcsIFdhbVdvcmQgc3Rh cnRfd29yZCk7CgpCb29sIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9HZXRfQXRv bShpbnQgYXRvbSwgV2FtV29yZCBzdGFydF93b3JkKTsKCkJvb2wgX19hdHRyaWJ1dGVfXygo cmVncGFybSgzKSkpIFBsX0dldF9JbnRlZ2VyX1RhZ2dlZChXYW1Xb3JkIHcsIFdhbVdvcmQg c3RhcnRfd29yZCk7CgpCb29sIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9HZXRf SW50ZWdlcihQbExvbmcgbiwgV2FtV29yZCBzdGFydF93b3JkKTsKCkJvb2wgX19hdHRyaWJ1 dGVfXygocmVncGFybSgzKSkpIFBsX0dldF9GbG9hdChkb3VibGUgbiwgV2FtV29yZCBzdGFy dF93b3JkKTsKCkJvb2wgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX0dldF9OaWwo V2FtV29yZCBzdGFydF93b3JkKTsKCkJvb2wgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp IFBsX0dldF9MaXN0KFdhbVdvcmQgc3RhcnRfd29yZCk7CgpCb29sIF9fYXR0cmlidXRlX18o KHJlZ3Bhcm0oMykpKSBQbF9HZXRfU3RydWN0dXJlX1RhZ2dlZChXYW1Xb3JkIHcsIFdhbVdv cmQgc3RhcnRfd29yZCk7CgpCb29sIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9H ZXRfU3RydWN0dXJlKGludCBmdW5jLCBpbnQgYXJpdHksIFdhbVdvcmQgc3RhcnRfd29yZCk7 CgpXYW1Xb3JkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9QdXRfWF9WYXJpYWJs ZSh2b2lkKTsKCldhbVdvcmQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1B1dF9Z X1ZhcmlhYmxlKFdhbVdvcmQgKnlfYWRyKTsKCldhbVdvcmQgX19hdHRyaWJ1dGVfXygocmVn cGFybSgzKSkpIFBsX1B1dF9VbnNhZmVfVmFsdWUoV2FtV29yZCBzdGFydF93b3JkKTsKCldh bVdvcmQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1B1dF9BdG9tX1RhZ2dlZChX YW1Xb3JkIHcpOwoKV2FtV29yZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfUHV0 X0F0b20oaW50IGF0b20pOwoKV2FtV29yZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkg UGxfUHV0X0ludGVnZXJfVGFnZ2VkKFdhbVdvcmQgdyk7CgpXYW1Xb3JkIF9fYXR0cmlidXRl X18oKHJlZ3Bhcm0oMykpKSBQbF9QdXRfSW50ZWdlcihQbExvbmcgbik7CgpXYW1Xb3JkIF9f YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9QdXRfRmxvYXQoZG91YmxlIG4pOwoKV2Ft V29yZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfUHV0X05pbCh2b2lkKTsKCldh bVdvcmQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1B1dF9MaXN0KHZvaWQpOwoK V2FtV29yZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfUHV0X1N0cnVjdHVyZV9U YWdnZWQoV2FtV29yZCB3KTsKCldhbVdvcmQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp IFBsX1B1dF9TdHJ1Y3R1cmUoaW50IGZ1bmMsIGludCBhcml0eSk7CgpXYW1Xb3JkIF9fYXR0 cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9VbmlmeV9WYXJpYWJsZSh2b2lkKTsKCnZvaWQg X19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1VuaWZ5X1ZvaWQoaW50IG4pOwoKQm9v bCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfVW5pZnlfVmFsdWUoV2FtV29yZCBz dGFydF93b3JkKTsKCkJvb2wgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1VuaWZ5 X0xvY2FsX1ZhbHVlKFdhbVdvcmQgc3RhcnRfd29yZCk7CgpCb29sIF9fYXR0cmlidXRlX18o KHJlZ3Bhcm0oMykpKSBQbF9VbmlmeV9BdG9tX1RhZ2dlZChXYW1Xb3JkIHcpOwoKQm9vbCBf X2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfVW5pZnlfQXRvbShpbnQgYXRvbSk7CgpC b29sIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9VbmlmeV9JbnRlZ2VyX1RhZ2dl ZChXYW1Xb3JkIHcpOwoKQm9vbCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfVW5p ZnlfSW50ZWdlcihQbExvbmcgbik7CgpCb29sIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykp KSBQbF9VbmlmeV9OaWwodm9pZCk7CgpCb29sIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykp KSBQbF9VbmlmeV9MaXN0KHZvaWQpOwoKQm9vbCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp KSkgUGxfVW5pZnlfU3RydWN0dXJlX1RhZ2dlZChXYW1Xb3JkIHcpOwoKQm9vbCBfX2F0dHJp YnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfVW5pZnlfU3RydWN0dXJlKGludCBmdW5jLCBpbnQg YXJpdHkpOwoKV2FtV29yZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfR2xvYmFs aXplX0lmX0luX0xvY2FsKFdhbVdvcmQgc3RhcnRfd29yZCk7Cgp2b2lkIF9fYXR0cmlidXRl X18oKHJlZ3Bhcm0oMykpKSBQbF9BbGxvY2F0ZShpbnQgbik7Cgp2b2lkIF9fYXR0cmlidXRl X18oKHJlZ3Bhcm0oMykpKSBQbF9EZWFsbG9jYXRlKHZvaWQpOwoKQ29kZVB0ciBfX2F0dHJp YnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfU3dpdGNoX09uX1Rlcm0oQ29kZVB0ciBjX3Zhciwg Q29kZVB0ciBjX2F0bSwgQ29kZVB0ciBjX2ludCwKICAgICAgICAgICAgQ29kZVB0ciBjX2xz dCwgQ29kZVB0ciBjX3N0Yyk7CkNvZGVQdHIgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp IFBsX1N3aXRjaF9Pbl9UZXJtX1Zhcl9BdG0oQ29kZVB0ciBjX3ZhciwgQ29kZVB0ciBjX2F0 bSk7CkNvZGVQdHIgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1N3aXRjaF9Pbl9U ZXJtX1Zhcl9TdGMoQ29kZVB0ciBjX3ZhciwgQ29kZVB0ciBjX3N0Yyk7CkNvZGVQdHIgX19h dHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1N3aXRjaF9Pbl9UZXJtX1Zhcl9BdG1fTHN0 KENvZGVQdHIgY192YXIsIENvZGVQdHIgY19hdG0sCiAgICAgICAgICBDb2RlUHRyIGNfbHN0 KTsKQ29kZVB0ciBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfU3dpdGNoX09uX1Rl cm1fVmFyX0F0bV9TdGMoQ29kZVB0ciBjX3ZhciwgQ29kZVB0ciBjX2F0bSwKICAgICAgICAg IENvZGVQdHIgY19zdGMpOwoKQ29kZVB0ciBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkg UGxfU3dpdGNoX09uX0F0b20oU3d0VGJsIHQsIGludCBzaXplKTsKClBsTG9uZyBfX2F0dHJp YnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfU3dpdGNoX09uX0ludGVnZXIodm9pZCk7CgpDb2Rl UHRyIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9Td2l0Y2hfT25fU3RydWN0dXJl KFN3dFRibCB0LCBpbnQgc2l6ZSk7CgpXYW1Xb3JkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o MykpKSBQbF9HZXRfQ3VycmVudF9DaG9pY2Uodm9pZCk7Cgp2b2lkIF9fYXR0cmlidXRlX18o KHJlZ3Bhcm0oMykpKSBQbF9DdXQoV2FtV29yZCBiX3dvcmQpOwoKdm9pZCBfX2F0dHJpYnV0 ZV9fKChyZWdwYXJtKDMpKSkgUGxfU29mdF9DdXQoV2FtV29yZCBiX3dvcmQpOwoKdm9pZCBf X2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfR2xvYmFsX1B1c2hfRmxvYXQoZG91Ymxl IG4pOwoKZG91YmxlIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9PYnRhaW5fRmxv YXQoV2FtV29yZCAqYWRyKTsKCgp2b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQ bF9DcmVhdGVfQ2hvaWNlX1BvaW50KENvZGVQdHIgY29kZXBfYWx0LCBpbnQgYXJpdHkpOwp2 b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9DcmVhdGVfQ2hvaWNlX1BvaW50 MChDb2RlUHRyIGNvZGVwX2FsdCk7CnZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp IFBsX0NyZWF0ZV9DaG9pY2VfUG9pbnQxKENvZGVQdHIgY29kZXBfYWx0KTsKdm9pZCBfX2F0 dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfQ3JlYXRlX0Nob2ljZV9Qb2ludDIoQ29kZVB0 ciBjb2RlcF9hbHQpOwp2b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9DcmVh dGVfQ2hvaWNlX1BvaW50MyhDb2RlUHRyIGNvZGVwX2FsdCk7CnZvaWQgX19hdHRyaWJ1dGVf XygocmVncGFybSgzKSkpIFBsX0NyZWF0ZV9DaG9pY2VfUG9pbnQ0KENvZGVQdHIgY29kZXBf YWx0KTsKCgp2b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9VcGRhdGVfQ2hv aWNlX1BvaW50KENvZGVQdHIgY29kZXBfYWx0LCBpbnQgYXJpdHkpOwp2b2lkIF9fYXR0cmli dXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9VcGRhdGVfQ2hvaWNlX1BvaW50MChDb2RlUHRyIGNv ZGVwX2FsdCk7CnZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1VwZGF0ZV9D aG9pY2VfUG9pbnQxKENvZGVQdHIgY29kZXBfYWx0KTsKdm9pZCBfX2F0dHJpYnV0ZV9fKChy ZWdwYXJtKDMpKSkgUGxfVXBkYXRlX0Nob2ljZV9Qb2ludDIoQ29kZVB0ciBjb2RlcF9hbHQp Owp2b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9VcGRhdGVfQ2hvaWNlX1Bv aW50MyhDb2RlUHRyIGNvZGVwX2FsdCk7CnZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgz KSkpIFBsX1VwZGF0ZV9DaG9pY2VfUG9pbnQ0KENvZGVQdHIgY29kZXBfYWx0KTsKCnZvaWQg X19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX0RlbGV0ZV9DaG9pY2VfUG9pbnQoaW50 IGFyaXR5KTsKdm9pZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfRGVsZXRlX0No b2ljZV9Qb2ludDAodm9pZCk7CnZvaWQgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBs X0RlbGV0ZV9DaG9pY2VfUG9pbnQxKHZvaWQpOwp2b2lkIF9fYXR0cmlidXRlX18oKHJlZ3Bh cm0oMykpKSBQbF9EZWxldGVfQ2hvaWNlX1BvaW50Mih2b2lkKTsKdm9pZCBfX2F0dHJpYnV0 ZV9fKChyZWdwYXJtKDMpKSkgUGxfRGVsZXRlX0Nob2ljZV9Qb2ludDModm9pZCk7CnZvaWQg X19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX0RlbGV0ZV9DaG9pY2VfUG9pbnQ0KHZv aWQpOwoKCnZvaWQgUGxfRGVmZWFzaWJsZV9PcGVuKCk7CnZvaWQgUGxfRGVmZWFzaWJsZV9V bmRvKCk7CnZvaWQgUGxfRGVmZWFzaWJsZV9DbG9zZShCb29sIHVuZG9fYmVmb3JlKTsKCgoK dm9pZCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkgUGxfVW50cmFpbChXYW1Xb3JkICps b3dfYWRyKTsKCkJvb2wgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpIFBsX1VuaWZ5KFdh bVdvcmQgc3RhcnRfdV93b3JkLCBXYW1Xb3JkIHN0YXJ0X3Zfd29yZCk7CgpCb29sIF9fYXR0 cmlidXRlX18oKHJlZ3Bhcm0oMykpKSBQbF9VbmlmeV9PY2N1cnNfQ2hlY2soV2FtV29yZCBz dGFydF91X3dvcmQsIFdhbVdvcmQgc3RhcnRfdl93b3JkKTsKIyA1NiAiZW5naW5lX3BsLmgi IDIKIyAxICJpZl9ub19mZC5oIiAxCiMgNjUgImlmX25vX2ZkLmgiCmV4dGVybiB2b2lkICgq cGxfZmRfaW5pdF9zb2x2ZXIpICgpOwpleHRlcm4gdm9pZCAoKnBsX2ZkX3Jlc2V0X3NvbHZl cikgKCk7CmV4dGVybiBCb29sICgqcGxfZmRfdW5pZnlfd2l0aF9pbnRlZ2VyKSAoKTsKZXh0 ZXJuIEJvb2wgKCpwbF9mZF91bmlmeV93aXRoX2ZkX3ZhcikgKCk7CmV4dGVybiBpbnQgKCpw bF9mZF92YXJpYWJsZV9zaXplKSAoKTsKZXh0ZXJuIGludCAoKnBsX2ZkX2NvcHlfdmFyaWFi bGUpICgpOwpleHRlcm4gY2hhciAqKCpwbF9mZF92YXJpYWJsZV90b19zdHJpbmcpICgpOwoj IDgyICJpZl9ub19mZC5oIgp2b2lkIFBsX0ZkX0luaXRfU29sdmVyKHZvaWQpOwoKdm9pZCBQ bF9GZF9SZXNldF9Tb2x2ZXIodm9pZCk7CiMgNTYgImVuZ2luZV9wbC5oIiAyCiMgNzIgIm1h Y2hpbmUuYyIgMgoKCgojIDEgIi91c3IvaW5jbHVkZS9tYWxsb2MuaCIgMSAzIDQKIyAyMyAi L3Vzci9pbmNsdWRlL21hbGxvYy5oIiAzIDQKIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRo YXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAxNDkgIi91c3IvbGli L2djYy9pNjg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKCiMg MTQ5ICIvdXNyL2xpYi9nY2MvaTY4Ni1yZWRoYXQtbGludXgvNi4xLjEvaW5jbHVkZS9zdGRk ZWYuaCIgMyA0CnR5cGVkZWYgaW50IHB0cmRpZmZfdDsKIyA0MjYgIi91c3IvbGliL2djYy9p Njg2LXJlZGhhdC1saW51eC82LjEuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKdHlwZWRlZiBz dHJ1Y3QgewogIGxvbmcgbG9uZyBfX21heF9hbGlnbl9sbCBfX2F0dHJpYnV0ZV9fKChfX2Fs aWduZWRfXyhfX2FsaWdub2ZfXyhsb25nIGxvbmcpKSkpOwogIGxvbmcgZG91YmxlIF9fbWF4 X2FsaWduX2xkIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKF9fYWxpZ25vZl9fKGxvbmcg ZG91YmxlKSkpKTsKfSBtYXhfYWxpZ25fdDsKIyAyNCAiL3Vzci9pbmNsdWRlL21hbGxvYy5o IiAyIDMgNAojIDM1ICIvdXNyL2luY2x1ZGUvbWFsbG9jLmgiIDMgNAoKCgpleHRlcm4gdm9p ZCAqbWFsbG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSkgOwoKCmV4dGVybiB2 b2lkICpjYWxsb2MgKHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplKQpfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxv Y19fKSkgOwoKCgoKCgpleHRlcm4gdm9pZCAqcmVhbGxvYyAodm9pZCAqX19wdHIsIHNpemVf dCBfX3NpemUpCl9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsKCgpleHRlcm4gdm9pZCBm cmVlICh2b2lkICpfX3B0cikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKTsKCgpleHRlcm4gdm9pZCBjZnJlZSAodm9pZCAqX19wdHIpIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0ZXJuIHZvaWQgKm1lbWFsaWduIChz aXplX3QgX19hbGlnbm1lbnQsIHNpemVfdCBfX3NpemUpCl9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSA7CgoK ZXh0ZXJuIHZvaWQgKnZhbGxvYyAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIDsK CgoKZXh0ZXJuIHZvaWQgKnB2YWxsb2MgKHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18p KSA7CgoKCmV4dGVybiB2b2lkICooKl9fbW9yZWNvcmUpIChwdHJkaWZmX3QgX19zaXplKTsK CgpleHRlcm4gdm9pZCAqX19kZWZhdWx0X21vcmVjb3JlIChwdHJkaWZmX3QgX19zaXplKQpf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18g KChfX21hbGxvY19fKSk7CgoKCnN0cnVjdCBtYWxsaW5mbwp7CiAgaW50IGFyZW5hOwogIGlu dCBvcmRibGtzOwogIGludCBzbWJsa3M7CiAgaW50IGhibGtzOwogIGludCBoYmxraGQ7CiAg aW50IHVzbWJsa3M7CiAgaW50IGZzbWJsa3M7CiAgaW50IHVvcmRibGtzOwogIGludCBmb3Jk YmxrczsKICBpbnQga2VlcGNvc3Q7Cn07CgoKZXh0ZXJuIHN0cnVjdCBtYWxsaW5mbyBtYWxs aW5mbyAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK IyAxMjEgIi91c3IvaW5jbHVkZS9tYWxsb2MuaCIgMyA0CmV4dGVybiBpbnQgbWFsbG9wdCAo aW50IF9fcGFyYW0sIGludCBfX3ZhbCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKTsKCgoKZXh0ZXJuIGludCBtYWxsb2NfdHJpbSAoc2l6ZV90IF9fcGFkKSBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgpleHRlcm4gc2l6 ZV90IG1hbGxvY191c2FibGVfc2l6ZSAodm9pZCAqX19wdHIpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0ZXJuIHZvaWQgbWFsbG9jX3N0YXRzICh2 b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVy biBpbnQgbWFsbG9jX2luZm8gKGludCBfX29wdGlvbnMsIEZJTEUgKl9fZnApIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0ZXJuIHZvaWQgKm1hbGxv Y19nZXRfc3RhdGUgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSk7CgoKCmV4dGVybiBpbnQgbWFsbG9jX3NldF9zdGF0ZSAodm9pZCAqX19wdHIpIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgpleHRlcm4gdm9p ZCAoKnZvbGF0aWxlIF9fbWFsbG9jX2luaXRpYWxpemVfaG9vaykgKHZvaWQpCl9fYXR0cmli dXRlX18gKChfX2RlcHJlY2F0ZWRfXykpOwoKZXh0ZXJuIHZvaWQgKCp2b2xhdGlsZSBfX2Zy ZWVfaG9vaykgKHZvaWQgKl9fcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICopCl9fYXR0cmlidXRlX18gKChfX2Rl cHJlY2F0ZWRfXykpOwpleHRlcm4gdm9pZCAqKCp2b2xhdGlsZSBfX21hbGxvY19ob29rKShz aXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHZvaWQgKikKX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRl ZF9fKSk7CmV4dGVybiB2b2lkICooKnZvbGF0aWxlIF9fcmVhbGxvY19ob29rKSh2b2lkICpf X3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqKQpfX2F0dHJpYnV0ZV9fICgoX19k ZXByZWNhdGVkX18pKTsKZXh0ZXJuIHZvaWQgKigqdm9sYXRpbGUgX19tZW1hbGlnbl9ob29r KShzaXplX3QgX19hbGlnbm1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqKQpf X2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKTsKZXh0ZXJuIHZvaWQgKCp2b2xhdGls ZSBfX2FmdGVyX21vcmVjb3JlX2hvb2spICh2b2lkKTsKCgpleHRlcm4gdm9pZCBfX21hbGxv Y19jaGVja19pbml0ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpOwoKCgojIDc2ICJtYWNo aW5lLmMiIDIKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDEgMyA0CiMgMjcgIi91 c3IvaW5jbHVkZS9uZXRkYi5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5o IiAxIDMgNAojIDIzICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAzIDQKIyAxICIvdXNy L2luY2x1ZGUvc3lzL3NvY2tldC5oIiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUvc3lzL3Nv Y2tldC5oIiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdWlvLmgiIDEgMyA0CiMgMjUg Ii91c3IvaW5jbHVkZS9zeXMvdWlvLmgiIDMgNAoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRz L3Vpby5oIiAxIDMgNAojIDQzICIvdXNyL2luY2x1ZGUvYml0cy91aW8uaCIgMyA0CnN0cnVj dCBpb3ZlYwogIHsKICAgIHZvaWQgKmlvdl9iYXNlOwogICAgc2l6ZV90IGlvdl9sZW47CiAg fTsKIyAyOSAiL3Vzci9pbmNsdWRlL3N5cy91aW8uaCIgMiAzIDQKIyAzOSAiL3Vzci9pbmNs dWRlL3N5cy91aW8uaCIgMyA0CmV4dGVybiBzc2l6ZV90IHJlYWR2IChpbnQgX19mZCwgY29u c3Qgc3RydWN0IGlvdmVjICpfX2lvdmVjLCBpbnQgX19jb3VudCkKICA7CiMgNTAgIi91c3Iv aW5jbHVkZS9zeXMvdWlvLmgiIDMgNApleHRlcm4gc3NpemVfdCB3cml0ZXYgKGludCBfX2Zk LCBjb25zdCBzdHJ1Y3QgaW92ZWMgKl9faW92ZWMsIGludCBfX2NvdW50KQogIDsKIyA2NSAi L3Vzci9pbmNsdWRlL3N5cy91aW8uaCIgMyA0CmV4dGVybiBzc2l6ZV90IHByZWFkdiAoaW50 IF9fZmQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqX19pb3ZlYywgaW50IF9fY291bnQsCiAgICAg ICAgIF9fb2ZmX3QgX19vZmZzZXQpIDsKIyA3NyAiL3Vzci9pbmNsdWRlL3N5cy91aW8uaCIg MyA0CmV4dGVybiBzc2l6ZV90IHB3cml0ZXYgKGludCBfX2ZkLCBjb25zdCBzdHJ1Y3QgaW92 ZWMgKl9faW92ZWMsIGludCBfX2NvdW50LAogICBfX29mZl90IF9fb2Zmc2V0KSA7CiMgMTIw ICIvdXNyL2luY2x1ZGUvc3lzL3Vpby5oIiAzIDQKCiMgMjcgIi91c3IvaW5jbHVkZS9zeXMv c29ja2V0LmgiIDIgMyA0CgojIDEgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51eC82 LjEuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDI5ICIvdXNyL2luY2x1ZGUvc3lzL3Nv Y2tldC5oIiAyIDMgNAojIDM4ICIvdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAzIDQKIyAx ICIvdXNyL2luY2x1ZGUvYml0cy9zb2NrZXQuaCIgMSAzIDQKIyAyNyAiL3Vzci9pbmNsdWRl L2JpdHMvc29ja2V0LmgiIDMgNAojIDEgIi91c3IvbGliL2djYy9pNjg2LXJlZGhhdC1saW51 eC82LjEuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDI4ICIvdXNyL2luY2x1ZGUvYml0 cy9zb2NrZXQuaCIgMiAzIDQKIyAzOCAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDMg NAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NvY2tldF90eXBlLmgiIDEgMyA0CiMgMjQgIi91 c3IvaW5jbHVkZS9iaXRzL3NvY2tldF90eXBlLmgiIDMgNAplbnVtIF9fc29ja2V0X3R5cGUK ewogIFNPQ0tfU1RSRUFNID0gMSwKCgogIFNPQ0tfREdSQU0gPSAyLAoKCiAgU09DS19SQVcg PSAzLAoKICBTT0NLX1JETSA9IDQsCgogIFNPQ0tfU0VRUEFDS0VUID0gNSwKCgogIFNPQ0tf RENDUCA9IDYsCgogIFNPQ0tfUEFDS0VUID0gMTAsCgoKCgoKCgogIFNPQ0tfQ0xPRVhFQyA9 IDAyMDAwMDAwLAoKCiAgU09DS19OT05CTE9DSyA9IDAwMDA0MDAwCgoKfTsKIyAzOSAiL3Vz ci9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDIgMyA0CiMgMTUwICIvdXNyL2luY2x1ZGUvYml0 cy9zb2NrZXQuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2FkZHIuaCIgMSAz IDQKIyAyOCAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2FkZHIuaCIgMyA0CnR5cGVkZWYgdW5z aWduZWQgc2hvcnQgaW50IHNhX2ZhbWlseV90OwojIDE1MSAiL3Vzci9pbmNsdWRlL2JpdHMv c29ja2V0LmgiIDIgMyA0CgoKc3RydWN0IHNvY2thZGRyCiAgewogICAgc2FfZmFtaWx5X3Qg c2FfZmFtaWx5OwogICAgY2hhciBzYV9kYXRhWzE0XTsKICB9OwojIDE2NiAiL3Vzci9pbmNs dWRlL2JpdHMvc29ja2V0LmgiIDMgNApzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZQogIHsKICAg IHNhX2ZhbWlseV90IHNzX2ZhbWlseTsKICAgIGNoYXIgX19zc19wYWRkaW5nWygxMjggLSAo c2l6ZW9mICh1bnNpZ25lZCBzaG9ydCBpbnQpKSAtIHNpemVvZiAodW5zaWduZWQgbG9uZyBp bnQpKV07CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3NzX2FsaWduOwogIH07CgoKCmVudW0K ICB7CiAgICBNU0dfT09CID0gMHgwMSwKCiAgICBNU0dfUEVFSyA9IDB4MDIsCgogICAgTVNH X0RPTlRST1VURSA9IDB4MDQsCgoKCgoKCiAgICBNU0dfQ1RSVU5DID0gMHgwOCwKCiAgICBN U0dfUFJPWFkgPSAweDEwLAoKICAgIE1TR19UUlVOQyA9IDB4MjAsCgogICAgTVNHX0RPTlRX QUlUID0gMHg0MCwKCiAgICBNU0dfRU9SID0gMHg4MCwKCiAgICBNU0dfV0FJVEFMTCA9IDB4 MTAwLAoKICAgIE1TR19GSU4gPSAweDIwMCwKCiAgICBNU0dfU1lOID0gMHg0MDAsCgogICAg TVNHX0NPTkZJUk0gPSAweDgwMCwKCiAgICBNU0dfUlNUID0gMHgxMDAwLAoKICAgIE1TR19F UlJRVUVVRSA9IDB4MjAwMCwKCiAgICBNU0dfTk9TSUdOQUwgPSAweDQwMDAsCgogICAgTVNH X01PUkUgPSAweDgwMDAsCgogICAgTVNHX1dBSVRGT1JPTkUgPSAweDEwMDAwLAoKICAgIE1T R19GQVNUT1BFTiA9IDB4MjAwMDAwMDAsCgoKICAgIE1TR19DTVNHX0NMT0VYRUMgPSAweDQw MDAwMDAwCgoKCiAgfTsKCgoKCnN0cnVjdCBtc2doZHIKICB7CiAgICB2b2lkICptc2dfbmFt ZTsKICAgIHNvY2tsZW5fdCBtc2dfbmFtZWxlbjsKCiAgICBzdHJ1Y3QgaW92ZWMgKm1zZ19p b3Y7CiAgICBzaXplX3QgbXNnX2lvdmxlbjsKCiAgICB2b2lkICptc2dfY29udHJvbDsKICAg IHNpemVfdCBtc2dfY29udHJvbGxlbjsKCgoKCiAgICBpbnQgbXNnX2ZsYWdzOwogIH07CgoK c3RydWN0IGNtc2doZHIKICB7CiAgICBzaXplX3QgY21zZ19sZW47CgoKCgogICAgaW50IGNt c2dfbGV2ZWw7CiAgICBpbnQgY21zZ190eXBlOwoKICAgIF9fZXh0ZW5zaW9uX18gdW5zaWdu ZWQgY2hhciBfX2Ntc2dfZGF0YSBbXTsKCiAgfTsKIyAyNzYgIi91c3IvaW5jbHVkZS9iaXRz L3NvY2tldC5oIiAzIDQKZXh0ZXJuIHN0cnVjdCBjbXNnaGRyICpfX2Ntc2dfbnh0aGRyIChz dHJ1Y3QgbXNnaGRyICpfX21oZHIsCiAgICAgICAgICBzdHJ1Y3QgY21zZ2hkciAqX19jbXNn KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwojIDMwMyAiL3Vz ci9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDMgNAplbnVtCiAgewogICAgU0NNX1JJR0hUUyA9 IDB4MDEKCgoKCgogIH07CiMgMzQ5ICIvdXNyL2luY2x1ZGUvYml0cy9zb2NrZXQuaCIgMyA0 CiMgMSAiL3Vzci9pbmNsdWRlL2FzbS9zb2NrZXQuaCIgMSAzIDQKIyAxICIvdXNyL2luY2x1 ZGUvYXNtLWdlbmVyaWMvc29ja2V0LmgiIDEgMyA0CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2Fz bS9zb2NraW9zLmgiIDEgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL3NvY2tp b3MuaCIgMSAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYXNtL3NvY2tpb3MuaCIgMiAzIDQKIyA1 ICIvdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvc29ja2V0LmgiIDIgMyA0CiMgMSAiL3Vzci9p bmNsdWRlL2FzbS9zb2NrZXQuaCIgMiAzIDQKIyAzNTAgIi91c3IvaW5jbHVkZS9iaXRzL3Nv Y2tldC5oIiAyIDMgNAojIDM4MyAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDMgNApz dHJ1Y3QgbGluZ2VyCiAgewogICAgaW50IGxfb25vZmY7CiAgICBpbnQgbF9saW5nZXI7CiAg fTsKIyAzOSAiL3Vzci9pbmNsdWRlL3N5cy9zb2NrZXQuaCIgMiAzIDQKCgoKCnN0cnVjdCBv c29ja2FkZHIKICB7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgc2FfZmFtaWx5OwogICAgdW5z aWduZWQgY2hhciBzYV9kYXRhWzE0XTsKICB9OwoKCgoKZW51bQp7CiAgU0hVVF9SRCA9IDAs CgogIFNIVVRfV1IsCgogIFNIVVRfUkRXUgoKfTsKIyAxMTMgIi91c3IvaW5jbHVkZS9zeXMv c29ja2V0LmgiIDMgNApleHRlcm4gaW50IHNvY2tldCAoaW50IF9fZG9tYWluLCBpbnQgX190 eXBlLCBpbnQgX19wcm90b2NvbCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKCgoKCgpleHRlcm4gaW50IHNvY2tldHBhaXIgKGludCBfX2RvbWFpbiwgaW50 IF9fdHlwZSwgaW50IF9fcHJvdG9jb2wsCiAgICAgICAgIGludCBfX2Zkc1syXSkgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgpleHRlcm4gaW50IGJpbmQg KGludCBfX2ZkLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKiBfX2FkZHIsIHNvY2tsZW5fdCBf X2xlbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoK CmV4dGVybiBpbnQgZ2V0c29ja25hbWUgKGludCBfX2ZkLCBzdHJ1Y3Qgc29ja2FkZHIgKl9f cmVzdHJpY3QgX19hZGRyLAogICBzb2NrbGVuX3QgKl9fcmVzdHJpY3QgX19sZW4pIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgMTM3ICIvdXNyL2luY2x1 ZGUvc3lzL3NvY2tldC5oIiAzIDQKZXh0ZXJuIGludCBjb25uZWN0IChpbnQgX19mZCwgY29u c3Qgc3RydWN0IHNvY2thZGRyICogX19hZGRyLCBzb2NrbGVuX3QgX19sZW4pOwoKCgpleHRl cm4gaW50IGdldHBlZXJuYW1lIChpbnQgX19mZCwgc3RydWN0IHNvY2thZGRyICpfX3Jlc3Ry aWN0IF9fYWRkciwKICAgc29ja2xlbl90ICpfX3Jlc3RyaWN0IF9fbGVuKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCgpleHRlcm4gc3NpemVfdCBz ZW5kIChpbnQgX19mZCwgY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24sIGludCBfX2Zs YWdzKTsKCgoKCgoKZXh0ZXJuIHNzaXplX3QgcmVjdiAoaW50IF9fZmQsIHZvaWQgKl9fYnVm LCBzaXplX3QgX19uLCBpbnQgX19mbGFncyk7CgoKCgoKCmV4dGVybiBzc2l6ZV90IHNlbmR0 byAoaW50IF9fZmQsIGNvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19uLAogICAgICAgICBp bnQgX19mbGFncywgY29uc3Qgc3RydWN0IHNvY2thZGRyICogX19hZGRyLAogICAgICAgICBz b2NrbGVuX3QgX19hZGRyX2xlbik7CiMgMTc0ICIvdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5o IiAzIDQKZXh0ZXJuIHNzaXplX3QgcmVjdmZyb20gKGludCBfX2ZkLCB2b2lkICpfX3Jlc3Ry aWN0IF9fYnVmLCBzaXplX3QgX19uLAogICAgaW50IF9fZmxhZ3MsIHN0cnVjdCBzb2NrYWRk ciAqX19yZXN0cmljdCBfX2FkZHIsCiAgICBzb2NrbGVuX3QgKl9fcmVzdHJpY3QgX19hZGRy X2xlbik7CgoKCgoKCgpleHRlcm4gc3NpemVfdCBzZW5kbXNnIChpbnQgX19mZCwgY29uc3Qg c3RydWN0IG1zZ2hkciAqX19tZXNzYWdlLAogICBpbnQgX19mbGFncyk7CiMgMjAyICIvdXNy L2luY2x1ZGUvc3lzL3NvY2tldC5oIiAzIDQKZXh0ZXJuIHNzaXplX3QgcmVjdm1zZyAoaW50 IF9fZmQsIHN0cnVjdCBtc2doZHIgKl9fbWVzc2FnZSwgaW50IF9fZmxhZ3MpOwojIDIxOSAi L3Vzci9pbmNsdWRlL3N5cy9zb2NrZXQuaCIgMyA0CmV4dGVybiBpbnQgZ2V0c29ja29wdCAo aW50IF9fZmQsIGludCBfX2xldmVsLCBpbnQgX19vcHRuYW1lLAogICAgICAgICB2b2lkICpf X3Jlc3RyaWN0IF9fb3B0dmFsLAogICAgICAgICBzb2NrbGVuX3QgKl9fcmVzdHJpY3QgX19v cHRsZW4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgpl eHRlcm4gaW50IHNldHNvY2tvcHQgKGludCBfX2ZkLCBpbnQgX19sZXZlbCwgaW50IF9fb3B0 bmFtZSwKICAgICAgICAgY29uc3Qgdm9pZCAqX19vcHR2YWwsIHNvY2tsZW5fdCBfX29wdGxl bikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgpleHRl cm4gaW50IGxpc3RlbiAoaW50IF9fZmQsIGludCBfX24pIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgMjQzICIvdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5o IiAzIDQKZXh0ZXJuIGludCBhY2NlcHQgKGludCBfX2ZkLCBzdHJ1Y3Qgc29ja2FkZHIgKl9f cmVzdHJpY3QgX19hZGRyLAogICAgIHNvY2tsZW5fdCAqX19yZXN0cmljdCBfX2FkZHJfbGVu KTsKIyAyNjEgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0LmgiIDMgNApleHRlcm4gaW50IHNo dXRkb3duIChpbnQgX19mZCwgaW50IF9faG93KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpOwoKCgoKZXh0ZXJuIGludCBzb2NrYXRtYXJrIChpbnQgX19mZCkg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgoKCmV4dGVy biBpbnQgaXNmZHR5cGUgKGludCBfX2ZkLCBpbnQgX19mZHR5cGUpIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgMjgzICIvdXNyL2luY2x1ZGUvc3lzL3Nv Y2tldC5oIiAzIDQKCiMgMjQgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDIgMyA0CgoK CgoKCnR5cGVkZWYgdWludDMyX3QgaW5fYWRkcl90OwpzdHJ1Y3QgaW5fYWRkcgogIHsKICAg IGluX2FkZHJfdCBzX2FkZHI7CiAgfTsKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2luLmgi IDEgMyA0CiMgMTMzICIvdXNyL2luY2x1ZGUvYml0cy9pbi5oIiAzIDQKc3RydWN0IGlwX29w dHMKICB7CiAgICBzdHJ1Y3QgaW5fYWRkciBpcF9kc3Q7CiAgICBjaGFyIGlwX29wdHNbNDBd OwogIH07CgoKc3RydWN0IGlwX21yZXFuCiAgewogICAgc3RydWN0IGluX2FkZHIgaW1yX211 bHRpYWRkcjsKICAgIHN0cnVjdCBpbl9hZGRyIGltcl9hZGRyZXNzOwogICAgaW50IGltcl9p ZmluZGV4OwogIH07CgoKc3RydWN0IGluX3BrdGluZm8KICB7CiAgICBpbnQgaXBpX2lmaW5k ZXg7CiAgICBzdHJ1Y3QgaW5fYWRkciBpcGlfc3BlY19kc3Q7CiAgICBzdHJ1Y3QgaW5fYWRk ciBpcGlfYWRkcjsKICB9OwojIDM4ICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAyIDMg NAoKCmVudW0KICB7CiAgICBJUFBST1RPX0lQID0gMCwKCiAgICBJUFBST1RPX0lDTVAgPSAx LAoKICAgIElQUFJPVE9fSUdNUCA9IDIsCgogICAgSVBQUk9UT19JUElQID0gNCwKCiAgICBJ UFBST1RPX1RDUCA9IDYsCgogICAgSVBQUk9UT19FR1AgPSA4LAoKICAgIElQUFJPVE9fUFVQ ID0gMTIsCgogICAgSVBQUk9UT19VRFAgPSAxNywKCiAgICBJUFBST1RPX0lEUCA9IDIyLAoK ICAgIElQUFJPVE9fVFAgPSAyOSwKCiAgICBJUFBST1RPX0RDQ1AgPSAzMywKCiAgICBJUFBS T1RPX0lQVjYgPSA0MSwKCiAgICBJUFBST1RPX1JTVlAgPSA0NiwKCiAgICBJUFBST1RPX0dS RSA9IDQ3LAoKICAgIElQUFJPVE9fRVNQID0gNTAsCgogICAgSVBQUk9UT19BSCA9IDUxLAoK ICAgIElQUFJPVE9fTVRQID0gOTIsCgogICAgSVBQUk9UT19CRUVUUEggPSA5NCwKCiAgICBJ UFBST1RPX0VOQ0FQID0gOTgsCgogICAgSVBQUk9UT19QSU0gPSAxMDMsCgogICAgSVBQUk9U T19DT01QID0gMTA4LAoKICAgIElQUFJPVE9fU0NUUCA9IDEzMiwKCiAgICBJUFBST1RPX1VE UExJVEUgPSAxMzYsCgogICAgSVBQUk9UT19NUExTID0gMTM3LAoKICAgIElQUFJPVE9fUkFX ID0gMjU1LAoKICAgIElQUFJPVE9fTUFYCiAgfTsKCgoKCgplbnVtCiAgewogICAgSVBQUk9U T19IT1BPUFRTID0gMCwKCiAgICBJUFBST1RPX1JPVVRJTkcgPSA0MywKCiAgICBJUFBST1RP X0ZSQUdNRU5UID0gNDQsCgogICAgSVBQUk9UT19JQ01QVjYgPSA1OCwKCiAgICBJUFBST1RP X05PTkUgPSA1OSwKCiAgICBJUFBST1RPX0RTVE9QVFMgPSA2MCwKCiAgICBJUFBST1RPX01I ID0gMTM1CgogIH07CgoKCnR5cGVkZWYgdWludDE2X3QgaW5fcG9ydF90OwoKCmVudW0KICB7 CiAgICBJUFBPUlRfRUNITyA9IDcsCiAgICBJUFBPUlRfRElTQ0FSRCA9IDksCiAgICBJUFBP UlRfU1lTVEFUID0gMTEsCiAgICBJUFBPUlRfREFZVElNRSA9IDEzLAogICAgSVBQT1JUX05F VFNUQVQgPSAxNSwKICAgIElQUE9SVF9GVFAgPSAyMSwKICAgIElQUE9SVF9URUxORVQgPSAy MywKICAgIElQUE9SVF9TTVRQID0gMjUsCiAgICBJUFBPUlRfVElNRVNFUlZFUiA9IDM3LAog ICAgSVBQT1JUX05BTUVTRVJWRVIgPSA0MiwKICAgIElQUE9SVF9XSE9JUyA9IDQzLAogICAg SVBQT1JUX01UUCA9IDU3LAoKICAgIElQUE9SVF9URlRQID0gNjksCiAgICBJUFBPUlRfUkpF ID0gNzcsCiAgICBJUFBPUlRfRklOR0VSID0gNzksCiAgICBJUFBPUlRfVFRZTElOSyA9IDg3 LAogICAgSVBQT1JUX1NVUERVUCA9IDk1LAoKCiAgICBJUFBPUlRfRVhFQ1NFUlZFUiA9IDUx MiwKICAgIElQUE9SVF9MT0dJTlNFUlZFUiA9IDUxMywKICAgIElQUE9SVF9DTURTRVJWRVIg PSA1MTQsCiAgICBJUFBPUlRfRUZTU0VSVkVSID0gNTIwLAoKCiAgICBJUFBPUlRfQklGRlVE UCA9IDUxMiwKICAgIElQUE9SVF9XSE9TRVJWRVIgPSA1MTMsCiAgICBJUFBPUlRfUk9VVEVT RVJWRVIgPSA1MjAsCgoKICAgIElQUE9SVF9SRVNFUlZFRCA9IDEwMjQsCgoKICAgIElQUE9S VF9VU0VSUkVTRVJWRUQgPSA1MDAwCiAgfTsKIyAyMTEgIi91c3IvaW5jbHVkZS9uZXRpbmV0 L2luLmgiIDMgNApzdHJ1Y3QgaW42X2FkZHIKICB7CiAgICB1bmlvbgogICAgICB7CiB1aW50 OF90IF9fdTZfYWRkcjhbMTZdOwoKIHVpbnQxNl90IF9fdTZfYWRkcjE2WzhdOwogdWludDMy X3QgX191Nl9hZGRyMzJbNF07CgogICAgICB9IF9faW42X3U7CgoKCgoKICB9OwoKCmV4dGVy biBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgaW42YWRkcl9hbnk7CmV4dGVybiBjb25zdCBzdHJ1 Y3QgaW42X2FkZHIgaW42YWRkcl9sb29wYmFjazsKIyAyMzkgIi91c3IvaW5jbHVkZS9uZXRp bmV0L2luLmgiIDMgNApzdHJ1Y3Qgc29ja2FkZHJfaW4KICB7CiAgICBzYV9mYW1pbHlfdCBz aW5fZmFtaWx5OwogICAgaW5fcG9ydF90IHNpbl9wb3J0OwogICAgc3RydWN0IGluX2FkZHIg c2luX2FkZHI7CgoKICAgIHVuc2lnbmVkIGNoYXIgc2luX3plcm9bc2l6ZW9mIChzdHJ1Y3Qg c29ja2FkZHIpIC0KICAgICAgKHNpemVvZiAodW5zaWduZWQgc2hvcnQgaW50KSkgLQogICAg ICBzaXplb2YgKGluX3BvcnRfdCkgLQogICAgICBzaXplb2YgKHN0cnVjdCBpbl9hZGRyKV07 CiAgfTsKCgoKc3RydWN0IHNvY2thZGRyX2luNgogIHsKICAgIHNhX2ZhbWlseV90IHNpbjZf ZmFtaWx5OwogICAgaW5fcG9ydF90IHNpbjZfcG9ydDsKICAgIHVpbnQzMl90IHNpbjZfZmxv d2luZm87CiAgICBzdHJ1Y3QgaW42X2FkZHIgc2luNl9hZGRyOwogICAgdWludDMyX3Qgc2lu Nl9zY29wZV9pZDsKICB9OwoKCgoKc3RydWN0IGlwX21yZXEKICB7CgogICAgc3RydWN0IGlu X2FkZHIgaW1yX211bHRpYWRkcjsKCgogICAgc3RydWN0IGluX2FkZHIgaW1yX2ludGVyZmFj ZTsKICB9OwoKc3RydWN0IGlwX21yZXFfc291cmNlCiAgewoKICAgIHN0cnVjdCBpbl9hZGRy IGltcl9tdWx0aWFkZHI7CgoKICAgIHN0cnVjdCBpbl9hZGRyIGltcl9pbnRlcmZhY2U7CgoK ICAgIHN0cnVjdCBpbl9hZGRyIGltcl9zb3VyY2VhZGRyOwogIH07CgoKCgpzdHJ1Y3QgaXB2 Nl9tcmVxCiAgewoKICAgIHN0cnVjdCBpbjZfYWRkciBpcHY2bXJfbXVsdGlhZGRyOwoKCiAg ICB1bnNpZ25lZCBpbnQgaXB2Nm1yX2ludGVyZmFjZTsKICB9OwoKCgoKc3RydWN0IGdyb3Vw X3JlcQogIHsKCiAgICB1aW50MzJfdCBncl9pbnRlcmZhY2U7CgoKICAgIHN0cnVjdCBzb2Nr YWRkcl9zdG9yYWdlIGdyX2dyb3VwOwogIH07CgpzdHJ1Y3QgZ3JvdXBfc291cmNlX3JlcQog IHsKCiAgICB1aW50MzJfdCBnc3JfaW50ZXJmYWNlOwoKCiAgICBzdHJ1Y3Qgc29ja2FkZHJf c3RvcmFnZSBnc3JfZ3JvdXA7CgoKICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIGdzcl9z b3VyY2U7CiAgfTsKCgoKc3RydWN0IGlwX21zZmlsdGVyCiAgewoKICAgIHN0cnVjdCBpbl9h ZGRyIGltc2ZfbXVsdGlhZGRyOwoKCiAgICBzdHJ1Y3QgaW5fYWRkciBpbXNmX2ludGVyZmFj ZTsKCgogICAgdWludDMyX3QgaW1zZl9mbW9kZTsKCgogICAgdWludDMyX3QgaW1zZl9udW1z cmM7CgogICAgc3RydWN0IGluX2FkZHIgaW1zZl9zbGlzdFsxXTsKICB9OwoKCgoKCnN0cnVj dCBncm91cF9maWx0ZXIKICB7CgogICAgdWludDMyX3QgZ2ZfaW50ZXJmYWNlOwoKCiAgICBz dHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBnZl9ncm91cDsKCgogICAgdWludDMyX3QgZ2ZfZm1v ZGU7CgoKICAgIHVpbnQzMl90IGdmX251bXNyYzsKCiAgICBzdHJ1Y3Qgc29ja2FkZHJfc3Rv cmFnZSBnZl9zbGlzdFsxXTsKfTsKIyAzNzYgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgi IDMgNApleHRlcm4gdWludDMyX3QgbnRvaGwgKHVpbnQzMl90IF9fbmV0bG9uZykgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19j b25zdF9fKSk7CmV4dGVybiB1aW50MTZfdCBudG9ocyAodWludDE2X3QgX19uZXRzaG9ydCkK ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli dXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIHVpbnQzMl90IGh0b25sICh1aW50MzJfdCBf X2hvc3Rsb25nKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gdWludDE2X3QgaHRvbnMg KHVpbnQxNl90IF9faG9zdHNob3J0KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKIyAxICIv dXNyL2luY2x1ZGUvYml0cy9ieXRlc3dhcC5oIiAxIDMgNAojIDM4OCAiL3Vzci9pbmNsdWRl L25ldGluZXQvaW4uaCIgMiAzIDQKIyA1MDMgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgi IDMgNApleHRlcm4gaW50IGJpbmRyZXN2cG9ydCAoaW50IF9fc29ja2ZkLCBzdHJ1Y3Qgc29j a2FkZHJfaW4gKl9fc29ja19pbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKCgpleHRlcm4gaW50IGJpbmRyZXN2cG9ydDYgKGludCBfX3NvY2tmZCwgc3Ry dWN0IHNvY2thZGRyX2luNiAqX19zb2NrX2luKQogICAgIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgNjMxICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5o IiAzIDQKCiMgMjggIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAyIDMgNAoKCgoKIyAxICIvdXNy L2luY2x1ZGUvcnBjL25ldGRiLmgiIDEgMyA0CiMgNDIgIi91c3IvaW5jbHVkZS9ycGMvbmV0 ZGIuaCIgMyA0CiMgMSAiL3Vzci9saWIvZ2NjL2k2ODYtcmVkaGF0LWxpbnV4LzYuMS4xL2lu Y2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgNDMgIi91c3IvaW5jbHVkZS9ycGMvbmV0ZGIuaCIg MiAzIDQKCgoKc3RydWN0IHJwY2VudAp7CiAgY2hhciAqcl9uYW1lOwogIGNoYXIgKipyX2Fs aWFzZXM7CiAgaW50IHJfbnVtYmVyOwp9OwoKZXh0ZXJuIHZvaWQgc2V0cnBjZW50IChpbnQg X19zdGF5b3BlbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK ZXh0ZXJuIHZvaWQgZW5kcnBjZW50ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpOwpleHRlcm4gc3RydWN0IHJwY2VudCAqZ2V0cnBjYnluYW1lIChj b25zdCBjaGFyICpfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSk7CmV4dGVybiBzdHJ1Y3QgcnBjZW50ICpnZXRycGNieW51bWJlciAoaW50IF9fbnVt YmVyKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwpleHRlcm4g c3RydWN0IHJwY2VudCAqZ2V0cnBjZW50ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBpbnQgZ2V0cnBjYnluYW1lX3IgKGNvbnN0 IGNoYXIgKl9fbmFtZSwgc3RydWN0IHJwY2VudCAqX19yZXN1bHRfYnVmLAogICAgICBjaGFy ICpfX2J1ZmZlciwgc2l6ZV90IF9fYnVmbGVuLAogICAgICBzdHJ1Y3QgcnBjZW50ICoqX19y ZXN1bHQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgpleHRl cm4gaW50IGdldHJwY2J5bnVtYmVyX3IgKGludCBfX251bWJlciwgc3RydWN0IHJwY2VudCAq X19yZXN1bHRfYnVmLAogICAgICAgIGNoYXIgKl9fYnVmZmVyLCBzaXplX3QgX19idWZsZW4s CiAgICAgICAgc3RydWN0IHJwY2VudCAqKl9fcmVzdWx0KSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpOwoKZXh0ZXJuIGludCBnZXRycGNlbnRfciAoc3RydWN0 IHJwY2VudCAqX19yZXN1bHRfYnVmLCBjaGFyICpfX2J1ZmZlciwKICAgc2l6ZV90IF9fYnVm bGVuLCBzdHJ1Y3QgcnBjZW50ICoqX19yZXN1bHQpIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSk7CgoKCiMgMzMgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAyIDMg NAojIDQyICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2Jp dHMvbmV0ZGIuaCIgMSAzIDQKIyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMvbmV0ZGIuaCIgMyA0 CnN0cnVjdCBuZXRlbnQKewogIGNoYXIgKm5fbmFtZTsKICBjaGFyICoqbl9hbGlhc2VzOwog IGludCBuX2FkZHJ0eXBlOwogIHVpbnQzMl90IG5fbmV0Owp9OwojIDQzICIvdXNyL2luY2x1 ZGUvbmV0ZGIuaCIgMiAzIDQKIyA1MyAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMgNAoKCgoK CgoKCmV4dGVybiBpbnQgKl9faF9lcnJub19sb2NhdGlvbiAodm9pZCkgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f KSk7CiMgOTIgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAzIDQKZXh0ZXJuIHZvaWQgaGVycm9y IChjb25zdCBjaGFyICpfX3N0cikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKCgpleHRlcm4gY29uc3QgY2hhciAqaHN0cmVycm9yIChpbnQgX19lcnJfbnVt KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKc3RydWN0 IGhvc3RlbnQKewogIGNoYXIgKmhfbmFtZTsKICBjaGFyICoqaF9hbGlhc2VzOwogIGludCBo X2FkZHJ0eXBlOwogIGludCBoX2xlbmd0aDsKICBjaGFyICoqaF9hZGRyX2xpc3Q7CgoKCn07 CgoKCgoKCmV4dGVybiB2b2lkIHNldGhvc3RlbnQgKGludCBfX3N0YXlfb3Blbik7CgoKCgoK ZXh0ZXJuIHZvaWQgZW5kaG9zdGVudCAodm9pZCk7CgoKCgoKCmV4dGVybiBzdHJ1Y3QgaG9z dGVudCAqZ2V0aG9zdGVudCAodm9pZCk7CgoKCgoKCmV4dGVybiBzdHJ1Y3QgaG9zdGVudCAq Z2V0aG9zdGJ5YWRkciAoY29uc3Qgdm9pZCAqX19hZGRyLCBfX3NvY2tsZW5fdCBfX2xlbiwK ICAgICAgICAgIGludCBfX3R5cGUpOwoKCgoKCmV4dGVybiBzdHJ1Y3QgaG9zdGVudCAqZ2V0 aG9zdGJ5bmFtZSAoY29uc3QgY2hhciAqX19uYW1lKTsKIyAxNTUgIi91c3IvaW5jbHVkZS9u ZXRkYi5oIiAzIDQKZXh0ZXJuIHN0cnVjdCBob3N0ZW50ICpnZXRob3N0YnluYW1lMiAoY29u c3QgY2hhciAqX19uYW1lLCBpbnQgX19hZik7CiMgMTY3ICIvdXNyL2luY2x1ZGUvbmV0ZGIu aCIgMyA0CmV4dGVybiBpbnQgZ2V0aG9zdGVudF9yIChzdHJ1Y3QgaG9zdGVudCAqX19yZXN0 cmljdCBfX3Jlc3VsdF9idWYsCiAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3Qg X19idWZsZW4sCiAgICBzdHJ1Y3QgaG9zdGVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQsCiAg ICBpbnQgKl9fcmVzdHJpY3QgX19oX2Vycm5vcCk7CgpleHRlcm4gaW50IGdldGhvc3RieWFk ZHJfciAoY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX2FkZHIsIF9fc29ja2xlbl90IF9fbGVu LAogICAgICAgaW50IF9fdHlwZSwKICAgICAgIHN0cnVjdCBob3N0ZW50ICpfX3Jlc3RyaWN0 IF9fcmVzdWx0X2J1ZiwKICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBf X2J1ZmxlbiwKICAgICAgIHN0cnVjdCBob3N0ZW50ICoqX19yZXN0cmljdCBfX3Jlc3VsdCwK ICAgICAgIGludCAqX19yZXN0cmljdCBfX2hfZXJybm9wKTsKCmV4dGVybiBpbnQgZ2V0aG9z dGJ5bmFtZV9yIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKICAgICAgIHN0cnVj dCBob3N0ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwKICAgICAgIGNoYXIgKl9fcmVz dHJpY3QgX19idWYsIHNpemVfdCBfX2J1ZmxlbiwKICAgICAgIHN0cnVjdCBob3N0ZW50ICoq X19yZXN0cmljdCBfX3Jlc3VsdCwKICAgICAgIGludCAqX19yZXN0cmljdCBfX2hfZXJybm9w KTsKCmV4dGVybiBpbnQgZ2V0aG9zdGJ5bmFtZTJfciAoY29uc3QgY2hhciAqX19yZXN0cmlj dCBfX25hbWUsIGludCBfX2FmLAogICAgICAgIHN0cnVjdCBob3N0ZW50ICpfX3Jlc3RyaWN0 IF9fcmVzdWx0X2J1ZiwKICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3Qg X19idWZsZW4sCiAgICAgICAgc3RydWN0IGhvc3RlbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0 LAogICAgICAgIGludCAqX19yZXN0cmljdCBfX2hfZXJybm9wKTsKIyAxOTggIi91c3IvaW5j bHVkZS9uZXRkYi5oIiAzIDQKZXh0ZXJuIHZvaWQgc2V0bmV0ZW50IChpbnQgX19zdGF5X29w ZW4pOwoKCgoKCmV4dGVybiB2b2lkIGVuZG5ldGVudCAodm9pZCk7CgoKCgoKCmV4dGVybiBz dHJ1Y3QgbmV0ZW50ICpnZXRuZXRlbnQgKHZvaWQpOwoKCgoKCgpleHRlcm4gc3RydWN0IG5l dGVudCAqZ2V0bmV0YnlhZGRyICh1aW50MzJfdCBfX25ldCwgaW50IF9fdHlwZSk7CgoKCgoK ZXh0ZXJuIHN0cnVjdCBuZXRlbnQgKmdldG5ldGJ5bmFtZSAoY29uc3QgY2hhciAqX19uYW1l KTsKIyAyMzcgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAzIDQKZXh0ZXJuIGludCBnZXRuZXRl bnRfciAoc3RydWN0IG5ldGVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgIGNoYXIg Kl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2J1ZmxlbiwKICAgc3RydWN0IG5ldGVudCAq Kl9fcmVzdHJpY3QgX19yZXN1bHQsCiAgIGludCAqX19yZXN0cmljdCBfX2hfZXJybm9wKTsK CmV4dGVybiBpbnQgZ2V0bmV0YnlhZGRyX3IgKHVpbnQzMl90IF9fbmV0LCBpbnQgX190eXBl LAogICAgICBzdHJ1Y3QgbmV0ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwKICAgICAg Y2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAogICAgICBzdHJ1Y3Qg bmV0ZW50ICoqX19yZXN0cmljdCBfX3Jlc3VsdCwKICAgICAgaW50ICpfX3Jlc3RyaWN0IF9f aF9lcnJub3ApOwoKZXh0ZXJuIGludCBnZXRuZXRieW5hbWVfciAoY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX25hbWUsCiAgICAgIHN0cnVjdCBuZXRlbnQgKl9fcmVzdHJpY3QgX19yZXN1 bHRfYnVmLAogICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4s CiAgICAgIHN0cnVjdCBuZXRlbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0LAogICAgICBpbnQg Kl9fcmVzdHJpY3QgX19oX2Vycm5vcCk7CgoKCgpzdHJ1Y3Qgc2VydmVudAp7CiAgY2hhciAq c19uYW1lOwogIGNoYXIgKipzX2FsaWFzZXM7CiAgaW50IHNfcG9ydDsKICBjaGFyICpzX3By b3RvOwp9OwoKCgoKCgpleHRlcm4gdm9pZCBzZXRzZXJ2ZW50IChpbnQgX19zdGF5X29wZW4p OwoKCgoKCmV4dGVybiB2b2lkIGVuZHNlcnZlbnQgKHZvaWQpOwoKCgoKCgpleHRlcm4gc3Ry dWN0IHNlcnZlbnQgKmdldHNlcnZlbnQgKHZvaWQpOwoKCgoKCgpleHRlcm4gc3RydWN0IHNl cnZlbnQgKmdldHNlcnZieW5hbWUgKGNvbnN0IGNoYXIgKl9fbmFtZSwgY29uc3QgY2hhciAq X19wcm90byk7CgoKCgoKCmV4dGVybiBzdHJ1Y3Qgc2VydmVudCAqZ2V0c2VydmJ5cG9ydCAo aW50IF9fcG9ydCwgY29uc3QgY2hhciAqX19wcm90byk7CiMgMzA4ICIvdXNyL2luY2x1ZGUv bmV0ZGIuaCIgMyA0CmV4dGVybiBpbnQgZ2V0c2VydmVudF9yIChzdHJ1Y3Qgc2VydmVudCAq X19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBz aXplX3QgX19idWZsZW4sCiAgICBzdHJ1Y3Qgc2VydmVudCAqKl9fcmVzdHJpY3QgX19yZXN1 bHQpOwoKZXh0ZXJuIGludCBnZXRzZXJ2YnluYW1lX3IgKGNvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19uYW1lLAogICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Byb3RvLAogICAg ICAgc3RydWN0IHNlcnZlbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAogICAgICAgY2hh ciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAogICAgICAgc3RydWN0IHNl cnZlbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KTsKCmV4dGVybiBpbnQgZ2V0c2VydmJ5cG9y dF9yIChpbnQgX19wb3J0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcHJvdG8sCiAgICAg ICBzdHJ1Y3Qgc2VydmVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgICAgICBjaGFy ICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCiAgICAgICBzdHJ1Y3Qgc2Vy dmVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpOwoKCgoKc3RydWN0IHByb3RvZW50CnsKICBj aGFyICpwX25hbWU7CiAgY2hhciAqKnBfYWxpYXNlczsKICBpbnQgcF9wcm90bzsKfTsKCgoK CgoKZXh0ZXJuIHZvaWQgc2V0cHJvdG9lbnQgKGludCBfX3N0YXlfb3Blbik7CgoKCgoKZXh0 ZXJuIHZvaWQgZW5kcHJvdG9lbnQgKHZvaWQpOwoKCgoKCgpleHRlcm4gc3RydWN0IHByb3Rv ZW50ICpnZXRwcm90b2VudCAodm9pZCk7CgoKCgoKZXh0ZXJuIHN0cnVjdCBwcm90b2VudCAq Z2V0cHJvdG9ieW5hbWUgKGNvbnN0IGNoYXIgKl9fbmFtZSk7CgoKCgoKZXh0ZXJuIHN0cnVj dCBwcm90b2VudCAqZ2V0cHJvdG9ieW51bWJlciAoaW50IF9fcHJvdG8pOwojIDM3NCAiL3Vz ci9pbmNsdWRlL25ldGRiLmgiIDMgNApleHRlcm4gaW50IGdldHByb3RvZW50X3IgKHN0cnVj dCBwcm90b2VudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgICAgY2hhciAqX19yZXN0 cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAogICAgIHN0cnVjdCBwcm90b2VudCAqKl9f cmVzdHJpY3QgX19yZXN1bHQpOwoKZXh0ZXJuIGludCBnZXRwcm90b2J5bmFtZV9yIChjb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKICAgICAgICBzdHJ1Y3QgcHJvdG9lbnQgKl9f cmVzdHJpY3QgX19yZXN1bHRfYnVmLAogICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYs IHNpemVfdCBfX2J1ZmxlbiwKICAgICAgICBzdHJ1Y3QgcHJvdG9lbnQgKipfX3Jlc3RyaWN0 IF9fcmVzdWx0KTsKCmV4dGVybiBpbnQgZ2V0cHJvdG9ieW51bWJlcl9yIChpbnQgX19wcm90 bywKICAgICAgICAgIHN0cnVjdCBwcm90b2VudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYs CiAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCiAg ICAgICAgICBzdHJ1Y3QgcHJvdG9lbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KTsKIyAzOTUg Ii91c3IvaW5jbHVkZS9uZXRkYi5oIiAzIDQKZXh0ZXJuIGludCBzZXRuZXRncmVudCAoY29u c3QgY2hhciAqX19uZXRncm91cCk7CgoKCgoKCgpleHRlcm4gdm9pZCBlbmRuZXRncmVudCAo dm9pZCk7CiMgNDEyICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMyA0CmV4dGVybiBpbnQgZ2V0 bmV0Z3JlbnQgKGNoYXIgKipfX3Jlc3RyaWN0IF9faG9zdHAsCiAgIGNoYXIgKipfX3Jlc3Ry aWN0IF9fdXNlcnAsCiAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZG9tYWlucCk7CiMgNDIzICIv dXNyL2luY2x1ZGUvbmV0ZGIuaCIgMyA0CmV4dGVybiBpbnQgaW5uZXRnciAoY29uc3QgY2hh ciAqX19uZXRncm91cCwgY29uc3QgY2hhciAqX19ob3N0LAogICAgICBjb25zdCBjaGFyICpf X3VzZXIsIGNvbnN0IGNoYXIgKl9fZG9tYWluKTsKCgoKCgoKCmV4dGVybiBpbnQgZ2V0bmV0 Z3JlbnRfciAoY2hhciAqKl9fcmVzdHJpY3QgX19ob3N0cCwKICAgICBjaGFyICoqX19yZXN0 cmljdCBfX3VzZXJwLAogICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZG9tYWlucCwKICAgICBj aGFyICpfX3Jlc3RyaWN0IF9fYnVmZmVyLCBzaXplX3QgX19idWZsZW4pOwojIDQ1MSAiL3Vz ci9pbmNsdWRlL25ldGRiLmgiIDMgNApleHRlcm4gaW50IHJjbWQgKGNoYXIgKipfX3Jlc3Ry aWN0IF9fYWhvc3QsIHVuc2lnbmVkIHNob3J0IGludCBfX3Jwb3J0LAogICBjb25zdCBjaGFy ICpfX3Jlc3RyaWN0IF9fbG9jdXNlciwKICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Jl bXVzZXIsCiAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19jbWQsIGludCAqX19yZXN0cmlj dCBfX2ZkMnApOwojIDQ2MyAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMgNApleHRlcm4gaW50 IHJjbWRfYWYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fYWhvc3QsIHVuc2lnbmVkIHNob3J0IGlu dCBfX3Jwb3J0LAogICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbG9jdXNlciwKICAg ICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3JlbXVzZXIsCiAgICAgIGNvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19jbWQsIGludCAqX19yZXN0cmljdCBfX2ZkMnAsCiAgICAgIHNhX2Zh bWlseV90IF9fYWYpOwojIDQ3OSAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMgNApleHRlcm4g aW50IHJleGVjIChjaGFyICoqX19yZXN0cmljdCBfX2Fob3N0LCBpbnQgX19ycG9ydCwKICAg IGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAogICAgY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX3Bhc3MsCiAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fY21kLCBpbnQgKl9f cmVzdHJpY3QgX19mZDJwKTsKIyA0OTEgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAzIDQKZXh0 ZXJuIGludCByZXhlY19hZiAoY2hhciAqKl9fcmVzdHJpY3QgX19haG9zdCwgaW50IF9fcnBv cnQsCiAgICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKICAgICAgIGNvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19wYXNzLAogICAgICAgY29uc3QgY2hhciAqX19yZXN0cmlj dCBfX2NtZCwgaW50ICpfX3Jlc3RyaWN0IF9fZmQycCwKICAgICAgIHNhX2ZhbWlseV90IF9f YWYpOwojIDUwNSAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMgNApleHRlcm4gaW50IHJ1c2Vy b2sgKGNvbnN0IGNoYXIgKl9fcmhvc3QsIGludCBfX3N1c2VyLAogICAgICBjb25zdCBjaGFy ICpfX3JlbXVzZXIsIGNvbnN0IGNoYXIgKl9fbG9jdXNlcik7CiMgNTE1ICIvdXNyL2luY2x1 ZGUvbmV0ZGIuaCIgMyA0CmV4dGVybiBpbnQgcnVzZXJva19hZiAoY29uc3QgY2hhciAqX19y aG9zdCwgaW50IF9fc3VzZXIsCiAgICAgICAgIGNvbnN0IGNoYXIgKl9fcmVtdXNlciwgY29u c3QgY2hhciAqX19sb2N1c2VyLAogICAgICAgICBzYV9mYW1pbHlfdCBfX2FmKTsKIyA1Mjgg Ii91c3IvaW5jbHVkZS9uZXRkYi5oIiAzIDQKZXh0ZXJuIGludCBpcnVzZXJvayAodWludDMy X3QgX19yYWRkciwgaW50IF9fc3VzZXIsCiAgICAgICBjb25zdCBjaGFyICpfX3JlbXVzZXIs IGNvbnN0IGNoYXIgKl9fbG9jdXNlcik7CiMgNTM5ICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIg MyA0CmV4dGVybiBpbnQgaXJ1c2Vyb2tfYWYgKGNvbnN0IHZvaWQgKl9fcmFkZHIsIGludCBf X3N1c2VyLAogICBjb25zdCBjaGFyICpfX3JlbXVzZXIsIGNvbnN0IGNoYXIgKl9fbG9jdXNl ciwKICAgc2FfZmFtaWx5X3QgX19hZik7CiMgNTUxICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIg MyA0CmV4dGVybiBpbnQgcnJlc3Zwb3J0IChpbnQgKl9fYWxwb3J0KTsKIyA1NjAgIi91c3Iv aW5jbHVkZS9uZXRkYi5oIiAzIDQKZXh0ZXJuIGludCBycmVzdnBvcnRfYWYgKGludCAqX19h bHBvcnQsIHNhX2ZhbWlseV90IF9fYWYpOwoKCgoKCgpzdHJ1Y3QgYWRkcmluZm8KewogIGlu dCBhaV9mbGFnczsKICBpbnQgYWlfZmFtaWx5OwogIGludCBhaV9zb2NrdHlwZTsKICBpbnQg YWlfcHJvdG9jb2w7CiAgc29ja2xlbl90IGFpX2FkZHJsZW47CiAgc3RydWN0IHNvY2thZGRy ICphaV9hZGRyOwogIGNoYXIgKmFpX2Nhbm9ubmFtZTsKICBzdHJ1Y3QgYWRkcmluZm8gKmFp X25leHQ7Cn07CiMgNjYyICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMyA0CmV4dGVybiBpbnQg Z2V0YWRkcmluZm8gKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAogICBjb25zdCBj aGFyICpfX3Jlc3RyaWN0IF9fc2VydmljZSwKICAgY29uc3Qgc3RydWN0IGFkZHJpbmZvICpf X3Jlc3RyaWN0IF9fcmVxLAogICBzdHJ1Y3QgYWRkcmluZm8gKipfX3Jlc3RyaWN0IF9fcGFp KTsKCgpleHRlcm4gdm9pZCBmcmVlYWRkcmluZm8gKHN0cnVjdCBhZGRyaW5mbyAqX19haSkg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgpleHRlcm4gY29u c3QgY2hhciAqZ2FpX3N0cmVycm9yIChpbnQgX19lY29kZSkgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgpleHRlcm4gaW50IGdldG5hbWVpbmZvIChj b25zdCBzdHJ1Y3Qgc29ja2FkZHIgKl9fcmVzdHJpY3QgX19zYSwKICAgc29ja2xlbl90IF9f c2FsZW4sIGNoYXIgKl9fcmVzdHJpY3QgX19ob3N0LAogICBzb2NrbGVuX3QgX19ob3N0bGVu LCBjaGFyICpfX3Jlc3RyaWN0IF9fc2VydiwKICAgc29ja2xlbl90IF9fc2VydmxlbiwgaW50 IF9fZmxhZ3MpOwojIDcxMyAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMgNAoKIyA4MSAibWFj aGluZS5jIiAyCgojIDEgIi91c3IvaW5jbHVkZS9hcnBhL2luZXQuaCIgMSAzIDQKIyAzMCAi L3Vzci9pbmNsdWRlL2FycGEvaW5ldC5oIiAzIDQKCgoKCmV4dGVybiBpbl9hZGRyX3QgaW5l dF9hZGRyIChjb25zdCBjaGFyICpfX2NwKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpOwoKCmV4dGVybiBpbl9hZGRyX3QgaW5ldF9sbmFvZiAoc3RydWN0IGlu X2FkZHIgX19pbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK CgoKZXh0ZXJuIHN0cnVjdCBpbl9hZGRyIGluZXRfbWFrZWFkZHIgKGluX2FkZHJfdCBfX25l dCwgaW5fYWRkcl90IF9faG9zdCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpOwoKCmV4dGVybiBpbl9hZGRyX3QgaW5ldF9uZXRvZiAoc3RydWN0IGlu X2FkZHIgX19pbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK CgoKZXh0ZXJuIGluX2FkZHJfdCBpbmV0X25ldHdvcmsgKGNvbnN0IGNoYXIgKl9fY3ApIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiBjaGFy ICppbmV0X250b2EgKHN0cnVjdCBpbl9hZGRyIF9faW4pIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgpleHRlcm4gaW50IGluZXRfcHRvbiAoaW50IF9f YWYsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19jcCwKICAgICAgICB2b2lkICpfX3Jlc3Ry aWN0IF9fYnVmKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoK CgoKZXh0ZXJuIGNvbnN0IGNoYXIgKmluZXRfbnRvcCAoaW50IF9fYWYsIGNvbnN0IHZvaWQg Kl9fcmVzdHJpY3QgX19jcCwKICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc29j a2xlbl90IF9fbGVuKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSk7CgoKCgoKCmV4dGVybiBpbnQgaW5ldF9hdG9uIChjb25zdCBjaGFyICpfX2NwLCBz dHJ1Y3QgaW5fYWRkciAqX19pbnApIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSk7CgoKCmV4dGVybiBjaGFyICppbmV0X25ldGEgKGluX2FkZHJfdCBfX25ldCwg Y2hhciAqX19idWYsIHNpemVfdCBfX2xlbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKTsKCgoKCmV4dGVybiBjaGFyICppbmV0X25ldF9udG9wIChpbnQgX19h ZiwgY29uc3Qgdm9pZCAqX19jcCwgaW50IF9fYml0cywKICAgICAgIGNoYXIgKl9fYnVmLCBz aXplX3QgX19sZW4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7 CgoKCgpleHRlcm4gaW50IGluZXRfbmV0X3B0b24gKGludCBfX2FmLCBjb25zdCBjaGFyICpf X2NwLAogICAgIHZvaWQgKl9fYnVmLCBzaXplX3QgX19sZW4pIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgpleHRlcm4gdW5zaWduZWQgaW50IGluZXRf bnNhcF9hZGRyIChjb25zdCBjaGFyICpfX2NwLAogICAgICAgIHVuc2lnbmVkIGNoYXIgKl9f YnVmLCBpbnQgX19sZW4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSk7CgoKCmV4dGVybiBjaGFyICppbmV0X25zYXBfbnRvYSAoaW50IF9fbGVuLCBjb25zdCB1 bnNpZ25lZCBjaGFyICpfX2NwLAogICAgICAgIGNoYXIgKl9fYnVmKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgojIDgzICJtYWNoaW5lLmMiIDIKIyAx MzUgIm1hY2hpbmUuYyIKCiMgMTM1ICJtYWNoaW5lLmMiCnN0YXRpYyBQbExvbmcgc3RhcnRf dXNlcl90aW1lID0gMDsKc3RhdGljIFBsTG9uZyBzdGFydF9zeXN0ZW1fdGltZSA9IDA7CnN0 YXRpYyBQbExvbmcgc3RhcnRfcmVhbF90aW1lID0gMDsKCnN0YXRpYyBpbnQgY3VyX3NlZWQg PSAxOwojIDE1MCAibWFjaGluZS5jIgpzdGF0aWMgY2hhciAqSG9zdF9OYW1lX0Zyb21fQWxp YXMoc3RydWN0IGhvc3RlbnQgKmhvc3RfZW50cnkpOwojIDE2NyAibWFjaGluZS5jIgp2b2lk ClBsX0luaXRfTWFjaGluZSh2b2lkKQp7CiAgdHpzZXQoKTsKCiAgc3RhcnRfdXNlcl90aW1l ID0gUGxfTV9Vc2VyX1RpbWUoKTsKICBzdGFydF9zeXN0ZW1fdGltZSA9IFBsX01fU3lzdGVt X1RpbWUoKTsKICBzdGFydF9yZWFsX3RpbWUgPSBQbF9NX1JlYWxfVGltZSgpOwoKCiAgbWFs bG9wdCgKIyAxNzcgIm1hY2hpbmUuYyIgMyA0CiAgICAgICAgIC00CiMgMTc3ICJtYWNoaW5l LmMiCiAgICAgICAgICAgICAgICAgICAsIDApOwoKCiAgUGxfSW5pdF9NYWNoaW5lMSgpOwp9 CiMgMTkwICJtYWNoaW5lLmMiCmNoYXIgKgpQbF9NX1N5c19FcnJfU3RyaW5nKGludCByZXRf dmFsKQp7CgoKCgoKICBjaGFyICpzdHI7CiAgc3RhdGljIGNoYXIgYnVmZls2NF07CiMgMjI2 ICJtYWNoaW5lLmMiCiAgc3RyID0gc3RyZXJyb3IoCiMgMjI2ICJtYWNoaW5lLmMiIDMgNAog ICAgICAgICAgICAgICAgKCpfX2Vycm5vX2xvY2F0aW9uICgpKQojIDIyNiAibWFjaGluZS5j IgogICAgICAgICAgICAgICAgICAgICApOwoKCiAgaWYgKHN0cikKICAgIHJldHVybiBzdHI7 CgogIHNwcmludGYoYnVmZiwgIlVua25vd24gZXJyb3IgKCVkKSIsIAojIDIzMiAibWFjaGlu ZS5jIiAzIDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqX19lcnJub19s b2NhdGlvbiAoKSkKIyAyMzIgIm1hY2hpbmUuYyIKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKTsKICByZXR1cm4gYnVmZjsKfQojIDI0NCAibWFjaGluZS5jIgpQ bExvbmcKUGxfTV9Vc2VyX1RpbWUodm9pZCkKewogIFBsTG9uZyB1c2VyX3RpbWU7CgoKICBz dHJ1Y3QgcnVzYWdlIHJzcl91c2FnZTsKCiAgZ2V0cnVzYWdlKAojIDI1MiAibWFjaGluZS5j IiAzIDQKICAgICAgICAgICBSVVNBR0VfU0VMRgojIDI1MiAibWFjaGluZS5jIgogICAgICAg ICAgICAgICAgICAgICAgLCAmcnNyX3VzYWdlKTsKCiAgdXNlcl90aW1lID0gKHJzcl91c2Fn ZS5ydV91dGltZS50dl9zZWMgKiAxMDAwKSArCiAgICAocnNyX3VzYWdlLnJ1X3V0aW1lLnR2 X3VzZWMgLyAxMDAwKTsKIyAyNzUgIm1hY2hpbmUuYyIKICByZXR1cm4gdXNlcl90aW1lIC0g c3RhcnRfdXNlcl90aW1lOwp9CiMgMjg2ICJtYWNoaW5lLmMiClBsTG9uZwpQbF9NX1N5c3Rl bV9UaW1lKHZvaWQpCnsKICBQbExvbmcgc3lzdGVtX3RpbWU7CgoKICBzdHJ1Y3QgcnVzYWdl IHJzcl91c2FnZTsKCiAgZ2V0cnVzYWdlKAojIDI5NCAibWFjaGluZS5jIiAzIDQKICAgICAg ICAgICBSVVNBR0VfU0VMRgojIDI5NCAibWFjaGluZS5jIgogICAgICAgICAgICAgICAgICAg ICAgLCAmcnNyX3VzYWdlKTsKCiAgc3lzdGVtX3RpbWUgPSAocnNyX3VzYWdlLnJ1X3N0aW1l LnR2X3NlYyAqIDEwMDApICsKICAgIChyc3JfdXNhZ2UucnVfc3RpbWUudHZfdXNlYyAvIDEw MDApOwojIDMxNyAibWFjaGluZS5jIgogIHJldHVybiBzeXN0ZW1fdGltZSAtIHN0YXJ0X3N5 c3RlbV90aW1lOwp9CiMgMzI4ICJtYWNoaW5lLmMiClBsTG9uZwpQbF9NX1JlYWxfVGltZSh2 b2lkKQp7CiAgUGxMb25nIHJlYWxfdGltZTsKCgogIHN0cnVjdCB0aW1ldmFsIHR2OwoKICBn ZXR0aW1lb2ZkYXkoJnR2LCAKIyAzMzYgIm1hY2hpbmUuYyIgMyA0CiAgICAgICAgICAgICAg ICAgICAoKHZvaWQgKikwKQojIDMzNiAibWFjaGluZS5jIgogICAgICAgICAgICAgICAgICAg ICAgICk7CiAgcmVhbF90aW1lID0gKHR2LnR2X3NlYyAqIDEwMDApICsgKHR2LnR2X3VzZWMg LyAxMDAwKTsKIyAzNTAgIm1hY2hpbmUuYyIKICByZXR1cm4gcmVhbF90aW1lIC0gc3RhcnRf cmVhbF90aW1lOwp9CiMgMzY3ICJtYWNoaW5lLmMiCnZvaWQKUGxfTV9SYW5kb21pemUodm9p ZCkKewogIHN0YXRpYyBpbnQgY291bnQgPSAwOwoKCgogIHN0cnVjdCB0aW1ldmFsIHR2Owog IGludCBzZWVkOwoKICBnZXR0aW1lb2ZkYXkoJnR2LCAKIyAzNzcgIm1hY2hpbmUuYyIgMyA0 CiAgICAgICAgICAgICAgICAgICAoKHZvaWQgKikwKQojIDM3NyAibWFjaGluZS5jIgogICAg ICAgICAgICAgICAgICAgICAgICk7CiAgc2VlZCA9ICh0di50dl9zZWMgKiAxMDAwKSArICh0 di50dl91c2VjIC8gMTAwMCk7CgogIGNvdW50ID0gKGNvdW50ICsgcmFuZCgpKSAlIDB4RkZG RjsKICBzZWVkID0gc2VlZCBeIChnZXRwaWQoKSA8PCAoc2VlZCAmIDB4RkYpKTsKICBzZWVk ICo9IGNvdW50OwogIHNlZWQgPSBzZWVkICYgMHhGRkZGRkY7CgogIFBsX01fU2V0X1NlZWQo c2VlZCk7Cn0KIyAzOTUgIm1hY2hpbmUuYyIKdm9pZApQbF9NX1NldF9TZWVkKGludCBuKQp7 CiAgY3VyX3NlZWQgPSBuOwogIHNyYW5kKGN1cl9zZWVkKTsKfQojIDQwOSAibWFjaGluZS5j IgppbnQKUGxfTV9HZXRfU2VlZCh2b2lkKQp7CiAgcmV0dXJuIGN1cl9zZWVkOwp9CiMgNDIz ICJtYWNoaW5lLmMiCmludApQbF9NX1JhbmRvbV9JbnRlZ2VyKGludCBuKQp7CiAgcmV0dXJu IChpbnQpICgoZG91YmxlKSBuICogcmFuZCgpIC8gKAojIDQyNiAibWFjaGluZS5jIiAzIDQK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMTQ3NDgzNjQ3IAojIDQy NiAibWFjaGluZS5jIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsgMS4wKSk7Cn0KIyA0MzcgIm1hY2hpbmUuYyIKZG91YmxlClBsX01fUmFuZG9t X0Zsb2F0KGRvdWJsZSBuKQp7CiAgcmV0dXJuIG4gKiByYW5kKCkgLyAoCiMgNDQwICJtYWNo aW5lLmMiIDMgNAogICAgICAgICAgICAgICAgICAgICAgMjE0NzQ4MzY0NyAKIyA0NDAgIm1h Y2hpbmUuYyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgMS4wKTsKfQojIDQ1 MSAibWFjaGluZS5jIgpjaGFyICoKUGxfTV9Ib3N0X05hbWVfRnJvbV9OYW1lKGNoYXIgKmhv c3RfbmFtZSkKewogIHN0YXRpYyBjaGFyIGJ1ZmZbNDA5Nl07CgoKICBzdHJ1Y3QgaG9zdGVu dCAqaG9zdF9lbnRyeTsKCgogIGlmIChob3N0X25hbWUgPT0gCiMgNDYwICJtYWNoaW5lLmMi IDMgNAogICAgICAgICAgICAgICAgICAoKHZvaWQgKikwKQojIDQ2MCAibWFjaGluZS5jIgog ICAgICAgICAgICAgICAgICAgICAgKQogICAgewogICAgICBQbExvbmcgbGVuZ3RoID0gc2l6 ZW9mKGJ1ZmYpOwogICAgICBob3N0X25hbWUgPSBidWZmOwoKCgogICAgICBpZiAoZ2V0aG9z dG5hbWUoYnVmZiwgbGVuZ3RoKSkKCiAgICAgICAgewogICAgICAgICAgc3RyY3B5KGJ1ZmYs ICJ1bmtub3duIGhvc3QgbmFtZSIpOwogICAgICAgICAgZ290byBmaW5pc2g7CiAgICAgICAg fQogICAgfQoKICBpZiAoc3RyY2hyKGhvc3RfbmFtZSwgJy4nKSAhPSAKIyA0NzUgIm1hY2hp bmUuYyIgMyA0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHZvaWQgKikwKQoj IDQ3NSAibWFjaGluZS5jIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkK ICAgIGdvdG8gZmluaXNoOwoKCgogIGhvc3RfZW50cnkgPSBnZXRob3N0YnluYW1lKGhvc3Rf bmFtZSk7CiAgaWYgKGhvc3RfZW50cnkgPT0gCiMgNDgxICJtYWNoaW5lLmMiIDMgNAogICAg ICAgICAgICAgICAgICAgKCh2b2lkICopMCkKIyA0ODEgIm1hY2hpbmUuYyIKICAgICAgICAg ICAgICAgICAgICAgICApCiAgICBnb3RvIGZpbmlzaDsKCiAgaG9zdF9uYW1lID0gSG9zdF9O YW1lX0Zyb21fQWxpYXMoaG9zdF9lbnRyeSk7CgoKCmZpbmlzaDoKICByZXR1cm4gaG9zdF9u YW1lOwp9CiMgNDk5ICJtYWNoaW5lLmMiCmNoYXIgKgpQbF9NX0hvc3RfTmFtZV9Gcm9tX0Fk cihjaGFyICpob3N0X2FkZHJlc3MpCnsKCiAgc3RydWN0IGhvc3RlbnQgKmhvc3RfZW50cnk7 CiAgc3RydWN0IGluX2FkZHIgaWFkcjsKCgoKCgoKICBpZiAoaW5ldF9hdG9uKGhvc3RfYWRk cmVzcywgJmlhZHIpID09IDApCgogICAgcmV0dXJuIDA7CgogIGhvc3RfZW50cnkgPSBnZXRo b3N0YnlhZGRyKChjaGFyICopICZpYWRyLCBzaXplb2YoaWFkciksIAojIDUxNSAibWFjaGlu ZS5jIiAzIDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDIKIyA1MTUgIm1hY2hpbmUuYyIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogIGlmICho b3N0X2VudHJ5ID09IAojIDUxNiAibWFjaGluZS5jIiAzIDQKICAgICAgICAgICAgICAgICAg ICgodm9pZCAqKTApCiMgNTE2ICJtYWNoaW5lLmMiCiAgICAgICAgICAgICAgICAgICAgICAg KQogICAgcmV0dXJuIAojIDUxNyAibWFjaGluZS5jIiAzIDQKICAgICAgICAgICgodm9pZCAq KTApCiMgNTE3ICJtYWNoaW5lLmMiCiAgICAgICAgICAgICAgOwoKICByZXR1cm4gSG9zdF9O YW1lX0Zyb21fQWxpYXMoaG9zdF9lbnRyeSk7CgoKCn0KIyA1MzQgIm1hY2hpbmUuYyIKc3Rh dGljIGNoYXIgKgpIb3N0X05hbWVfRnJvbV9BbGlhcyhzdHJ1Y3QgaG9zdGVudCAqaG9zdF9l bnRyeSkKewogIGNoYXIgKm5hbWU7CiAgY2hhciAqKmFsaWFzOwogIGNoYXIgKnA7CgogIG5h bWUgPSAoY2hhciAqKSBob3N0X2VudHJ5LT5oX25hbWU7CiAgYWxpYXMgPSBob3N0X2VudHJ5 LT5oX2FsaWFzZXM7CiAgd2hpbGUgKChwID0gc3RyY2hyKG5hbWUsICcuJykpID09IAojIDU0 MyAibWFjaGluZS5jIiAzIDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo KHZvaWQgKikwKSAKIyA1NDMgIm1hY2hpbmUuYyIKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICYmICphbGlhcykKICAgIG5hbWUgPSAqYWxpYXMrKzsKCiAgaWYg KHApCiAgICByZXR1cm4gbmFtZTsKCiAgcmV0dXJuIChjaGFyICopIGhvc3RfZW50cnktPmhf bmFtZTsKfQojIDU2MSAibWFjaGluZS5jIgpCb29sClBsX01fU2V0X1dvcmtpbmdfRGlyKGNo YXIgKnBhdGgpCnsKICBjaGFyICpuZXdfcGF0aCA9IFBsX01fQWJzb2x1dGVfUGF0aF9OYW1l KHBhdGgpOwoKICByZXR1cm4gKG5ld19wYXRoICE9IAojIDU2NiAibWFjaGluZS5jIiAzIDQK ICAgICAgICAgICAgICAgICAgICAgKCh2b2lkICopMCkgCiMgNTY2ICJtYWNoaW5lLmMiCiAg ICAgICAgICAgICAgICAgICAgICAgICAgJiYgY2hkaXIobmV3X3BhdGgpID09IDApOwp9CiMg NTc2ICJtYWNoaW5lLmMiCmNoYXIgKgpQbF9NX0dldF9Xb3JraW5nX0Rpcih2b2lkKQp7CiAg c3RhdGljIGNoYXIgY3VyX3dvcmtfZGlyWwojIDU3OSAibWFjaGluZS5jIiAzIDQKICAgICAg ICAgICAgICAgICAgICAgICAgICA0MDk2CiMgNTc5ICJtYWNoaW5lLmMiCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF07CgogIGlmIChnZXRjd2QoY3VyX3dvcmtfZGly LCBzaXplb2YoY3VyX3dvcmtfZGlyKSAtIDEpID09IAojIDU4MSAibWFjaGluZS5jIiAzIDQK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgodm9pZCAqKTApCiMgNTgxICJtYWNoaW5lLmMiCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgc3RyY3B5KGN1cl93 b3JrX2RpciwgIi4iKTsKICByZXR1cm4gY3VyX3dvcmtfZGlyOwp9CiMgNTk0ICJtYWNoaW5l LmMiCmNoYXIgKgpQbF9NX0Fic29sdXRlX1BhdGhfTmFtZShjaGFyICpzcmMpCnsKICBzdGF0 aWMgY2hhciBidWZmWzJdWwojIDU5NyAibWFjaGluZS5jIiAzIDQKICAgICAgICAgICAgICAg ICAgICAgNDA5NgojIDU5NyAibWFjaGluZS5jIgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXTsKICBpbnQgcmVzID0gMDsKICBjaGFyICpkc3Q7CiAgY2hhciAqcCwgKnE7CiAg Y2hhciBjOwoKICBkc3QgPSBidWZmW3Jlc107CiAgd2hpbGUgKCgqZHN0KysgPSAqc3JjKSkK ICAgIHsKICAgICAgYyA9ICpzcmMrKzsKICAgICAgaWYgKGMgPT0gJyQnCgoKCiAgICAgICAg KQogICAgICAgIHsKICAgICAgICAgIHAgPSBkc3Q7CiAgICAgICAgICB3aGlsZSAoCiMgNjE0 ICJtYWNoaW5lLmMiIDMgNAogICAgICAgICAgICAgICAgKCgqX19jdHlwZV9iX2xvYyAoKSlb KGludCkgKCgKIyA2MTQgIm1hY2hpbmUuYyIKICAgICAgICAgICAgICAgICpzcmMKIyA2MTQg Im1hY2hpbmUuYyIgMyA0CiAgICAgICAgICAgICAgICApKV0gJiAodW5zaWduZWQgc2hvcnQg aW50KSBfSVNhbG51bSkgCiMgNjE0ICJtYWNoaW5lLmMiCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHx8ICpzcmMgPT0gJ18nKQogICAgICAgICAgICAqZHN0KysgPSAqc3JjKys7 CgoKCgogICAgICAgICAgKmRzdCA9ICdcMCc7CiAgICAgICAgICBxID0gZ2V0ZW52KHApOwog ICAgICAgICAgaWYgKHEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBwLS07CiAgICAg ICAgICAgICAgc3RyY3B5KHAsIHEpOwogICAgICAgICAgICAgIGRzdCA9IHAgKyBzdHJsZW4o cCk7CgoKCgogICAgICAgICAgICB9CgoKCgogICAgICAgIH0KICAgIH0KICAqZHN0ID0gJ1ww JzsKCiAgaWYgKGJ1ZmZbcmVzXVswXSA9PSAnficpCiAgICB7CiAgICAgIGlmICgoKGJ1ZmZb cmVzXVsxXSkgPT0gJy8nIHx8IChidWZmW3Jlc11bMV0pID09ICcvJykgfHwgYnVmZltyZXNd WzFdID09ICdcMCcpCiAgICAgICAgewogICBxID0gCiMgNjQ0ICJtYWNoaW5lLmMiIDMgNAog ICAgICAoKHZvaWQgKikwKQojIDY0NCAibWFjaGluZS5jIgogICAgICAgICAgOzsKICAgICAg ICAgIGlmICgocCA9IGdldGVudigiSE9NRSIpKSA9PSAKIyA2NDUgIm1hY2hpbmUuYyIgMyA0 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHZvaWQgKikwKQojIDY0 NSAibWFjaGluZS5jIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICkKICAgICB7CgoKCgoKICAgICAgIHJldHVybiAKIyA2NTIgIm1hY2hpbmUuYyIgMyA0CiAg ICAgICAgICAgICAoKHZvaWQgKikwKQojIDY1MiAibWFjaGluZS5jIgogICAgICAgICAgICAg ICAgIDsKCiAgICAgfQogICBpZiAocSA9PSAKIyA2NTUgIm1hY2hpbmUuYyIgMyA0CiAgICAg ICAgICAgKCh2b2lkICopMCkKIyA2NTUgIm1hY2hpbmUuYyIKICAgICAgICAgICAgICAgKQog ICAgIHEgPSAiIjsKICAgICAgICAgIHNwcmludGYoYnVmZlsxIC0gcmVzXSwgIiVzJXMvJXMi LCBxLCBwLCBidWZmW3Jlc10gKyAxKTsKICAgICAgICAgIHJlcyA9IDEgLSByZXM7CiAgICAg ICAgfQoKICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgIHN0cnVjdCBwYXNzd2QgKnB3 OwoKICAgICAgICAgIHAgPSBidWZmW3Jlc10gKyAxOwogICAgICAgICAgd2hpbGUgKCpwICYm ICEoKCpwKSA9PSAnLycgfHwgKCpwKSA9PSAnLycpKQogICAgICAgICAgICBwKys7CgogICAg ICAgICAgYnVmZltyZXNdWzBdID0gKnA7CiAgICAgICAgICAqcCA9ICdcMCc7CiAgICAgICAg ICBpZiAoKHB3ID0gZ2V0cHduYW0oYnVmZltyZXNdICsgMSkpID09IAojIDY3MSAibWFjaGlu ZS5jIiAzIDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoKHZvaWQgKikwKQojIDY3MSAibWFjaGluZS5jIgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHJldHVybiAKIyA2 NzIgIm1hY2hpbmUuYyIgMyA0CiAgICAgICAgICAgICAgICAgICgodm9pZCAqKTApCiMgNjcy ICJtYWNoaW5lLmMiCiAgICAgICAgICAgICAgICAgICAgICA7CgogICAgICAgICAgKnAgPSBi dWZmW3Jlc11bMF07CgogICAgICAgICAgc3ByaW50ZihidWZmWzEgLSByZXNdLCAiJXMvJXMi LCBwdy0+cHdfZGlyLCBwKTsKICAgICAgICAgIHJlcyA9IDEgLSByZXM7CiAgICAgICAgfQoK ICAgIH0KCiAgaWYgKHN0cmNtcChidWZmW3Jlc10sICJ1c2VyIikgPT0gMCkKICAgIHJldHVy biBidWZmW3Jlc107CiMgNzA2ICJtYWNoaW5lLmMiCiAgaWYgKGJ1ZmZbcmVzXVswXSAhPSAn LycpCiAgICB7CiAgICAgIHNwcmludGYoYnVmZlsxIC0gcmVzXSwgIiVzLyVzIiwgUGxfTV9H ZXRfV29ya2luZ19EaXIoKSwgYnVmZltyZXNdKTsKICAgICAgcmVzID0gMSAtIHJlczsKICAg IH0KCiAgc3JjID0gYnVmZltyZXNdOwogIHJlcyA9IDEgLSByZXM7CiAgZHN0ID0gYnVmZlty ZXNdOwoKICB3aGlsZSAoKCpkc3QrKyA9ICpzcmMpKQogICAgewogICAgICBpZiAoKnNyYysr ICE9ICcvJykKICAgICAgICBjb250aW51ZTsKCiAgICBjb2xsYXBzZToKICAgICAgd2hpbGUg KCpzcmMgPT0gJy8nKQogICAgICAgIHNyYysrOwoKICAgICAgaWYgKCpzcmMgIT0gJy4nKQog ICAgICAgIGNvbnRpbnVlOwoKICAgICAgaWYgKHNyY1sxXSA9PSAnLycgfHwgc3JjWzFdID09 ICdcMCcpCiAgICAgICAgewogICAgICAgICAgc3JjKys7CiAgICAgICAgICBnb3RvIGNvbGxh cHNlOwogICAgICAgIH0KCiAgICAgIGlmIChzcmNbMV0gIT0gJy4nIHx8IChzcmNbMl0gIT0g Jy8nICYmIHNyY1syXSAhPSAnXDAnKSkKICAgICAgICBjb250aW51ZTsKCiAgICAgIHNyYyAr PSAyOwogICAgICBwID0gZHN0IC0gMjsKICAgICAgd2hpbGUgKHAgPj0gYnVmZltyZXNdICYm ICpwICE9ICcvJykKICAgICAgICBwLS07CgogICAgICBpZiAocCA8IGJ1ZmZbcmVzXSkKICAg ICAgICByZXR1cm4gCiMgNzQzICJtYWNoaW5lLmMiIDMgNAogICAgICAgICAgICAgICgodm9p ZCAqKTApCiMgNzQzICJtYWNoaW5lLmMiCiAgICAgICAgICAgICAgICAgIDsKCiAgICAgIGRz dCA9IHA7CiAgICB9CgogIGRzdC0tOwojIDc1OSAibWFjaGluZS5jIgogIGlmIChkc3QgLSBi dWZmW3Jlc10gPiAxICYmICgoZHN0Wy0xXSkgPT0gJy8nIHx8IChkc3RbLTFdKSA9PSAnLycp KQogICAgZHN0Wy0xXSA9ICdcMCc7CgogIHJldHVybiBidWZmW3Jlc107Cn0KIyA3NzMgIm1h Y2hpbmUuYyIKQm9vbApQbF9NX0lzX0Fic29sdXRlX0ZpbGVfTmFtZShjaGFyICpwYXRoKQp7 CiAgaWYgKCgoKnBhdGgpID09ICcvJyB8fCAoKnBhdGgpID09ICcvJykpCiAgICByZXR1cm4g MTsKIyA3OTUgIm1hY2hpbmUuYyIKICByZXR1cm4gMDsKfQojIDgyOSAibWFjaGluZS5jIgpj aGFyICoKUGxfTV9EZWNvbXBvc2VfRmlsZV9OYW1lKGNoYXIgKnBhdGgsIEJvb2wgZGVsX3Ry YWlsX3NsYXNoZXMsIGNoYXIgKipiYXNlLCBjaGFyICoqc3VmZml4KQp7CiAgc3RhdGljIGNo YXIgYnVmZl9kaXJbCiMgODMyICJtYWNoaW5lLmMiIDMgNAogICAgICAgICAgICAgICAgICAg ICAgNDA5NgojIDgzMiAibWFjaGluZS5jIgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF07CiAgc3RhdGljIGNoYXIgYnVmZl9iYXNlWwojIDgzMyAibWFjaGluZS5jIiAzIDQK ICAgICAgICAgICAgICAgICAgICAgICA0MDk2CiMgODMzICJtYWNoaW5lLmMiCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF07CiAgaW50IGRpcl9zdGFydF9wb3MgPSAwOwoj IDg1MiAibWFjaGluZS5jIgogIGNoYXIgKnA7CgogIHN0cmNweShidWZmX2RpciwgcGF0aCk7 CgoKCgoKICBkbyB7IGNoYXIgKl9wdHI7IGZvcigocCkgPSAKIyA4NjAgIm1hY2hpbmUuYyIg MyA0CiAoKHZvaWQgKikwKQojIDg2MCAibWFjaGluZS5jIgogLCBfcHRyID0gKGJ1ZmZfZGly KTsgKl9wdHI7IF9wdHIrKykgaWYgKCgoKl9wdHIpID09ICcvJyB8fCAoKl9wdHIpID09ICcv JykpIChwKSA9IF9wdHI7IH0gd2hpbGUoMCk7CgogIHAgPSAocCA9PSAKIyA4NjIgIm1hY2hp bmUuYyIgMyA0CiAgICAgICAgICAgKCh2b2lkICopMCkKIyA4NjIgIm1hY2hpbmUuYyIKICAg ICAgICAgICAgICAgKSA/IGJ1ZmZfZGlyICsgZGlyX3N0YXJ0X3BvcyA6IHAgKyAxOwoKICBz dHJjcHkoYnVmZl9iYXNlLCBwKTsKICAqcCA9ICdcMCc7CgogIGlmICgocCA9IHN0cnJjaHIo YnVmZl9iYXNlLCAnLicpKSAhPSAKIyA4NjcgIm1hY2hpbmUuYyIgMyA0CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh2b2lkICopMCkKIyA4NjcgIm1hY2hpbmUu YyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgKnN1 ZmZpeCA9IHA7CiAgZWxzZQogICAgKnN1ZmZpeCA9IGJ1ZmZfYmFzZSArIHN0cmxlbihidWZm X2Jhc2UpOwoKCgogIGlmIChkZWxfdHJhaWxfc2xhc2hlcykKICAgIHsKICAgICAgaWYgKGJ1 ZmZfZGlyW2Rpcl9zdGFydF9wb3NdID09ICdcMCcpCiBzdHJjYXQoYnVmZl9kaXIsICIuIik7 CiAgICAgIGVsc2UKIHsKICAgaW50IGxlbiA9IHN0cmxlbihidWZmX2Rpcik7CiAgIHdoaWxl KC0tbGVuID49IGRpcl9zdGFydF9wb3MgJiYgKChidWZmX2RpcltsZW5dKSA9PSAnLycgfHwg KGJ1ZmZfZGlyW2xlbl0pID09ICcvJykpCiAgICAgOwoKICAgaWYgKGxlbiA8IGRpcl9zdGFy dF9wb3MpCiAgICAgbGVuID0gZGlyX3N0YXJ0X3BvczsKICAgYnVmZl9kaXJbbGVuICsgMV0g PSAnXDAnOwogfQogICAgfQoKCgoKCgogICpiYXNlID0gYnVmZl9iYXNlOwoKICByZXR1cm4g YnVmZl9kaXI7Cn0K --------------75FEE9681F67D3318494118F Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Bug-prolog mailing list [email protected] https://lists.gnu.org/mailman/listinfo/bug-prolog --------------75FEE9681F67D3318494118F--