Date: Wed, 19 Jun 1996 13:51:32 +0200 (METDST) From: Robert Hoehne To: DJGPP workers Subject: Changes for restarting a program when debugging Message-Id: Mime-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="55974162-1804928587-835185092=:16080" This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime AT docserver DOT cac DOT washington DOT edu for more info. --55974162-1804928587-835185092=:16080 Content-Type: TEXT/PLAIN; charset=US-ASCII Now I have the first changes for watching the int 0x31 done. I added some assembler code to 'dbgcom.c', so they can be used by every debugger. I have tested the code with FSDB and it works. All selectors and all the memory from child process is cleaned up by calling the new function 'cleanup_child()'. If I do it with the in RHIDE linked GDB 4.16 object files, there is one selector lost, but I don't know where. Has anyone an idea where the problem is? Robert ***************************************************************** * Robert Hoehne, Fakultaet fuer Mathematik, TU-Chemnitz-Zwickau * * Post: Am Berg 3, D-09573 Dittmannsdorf * * e-Mail: Robert DOT Hoehne AT Mathematik DOT TU-Chemnitz DOT DE * * WWW: http://www.tu-chemnitz.de/~rho * ***************************************************************** --55974162-1804928587-835185092=:16080 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="dbgcom.dif" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: KioqIGk6ZGJnY29tLmMJVGh1IEphbiAxMSAwNDozOTozMCAxOTk2DQotLS0g ZGJnY29tLmMJV2VkIEp1biAxOSAwOTowNzozOCAxOTk2DQoqKioqKioqKioq KioqKioNCioqKiAxMiwyMSAqKioqDQotLS0gMTIsMzEgLS0tLQ0KICAjaW5j bHVkZSA8c2V0am1wLmg+DQogICNpbmNsdWRlIDxkZWJ1Zy9kYmdjb20uaD4N CiAgI2luY2x1ZGUgPHN5cy9leGNlcHRuLmg+DQorICNpbmNsdWRlIDxzdHVi aW5mby5oPg0KKyAjaW5jbHVkZSA8c3lzL2ZhcnB0ci5oPg0KICANCiAgZXh0 ZXJuIGNoYXIgX19saWJkYmdfaWRlbnRfc3RyaW5nW107DQogIHN0YXRpYyBj aGFyICppZCA9IF9fbGliZGJnX2lkZW50X3N0cmluZzsNCiAgDQorICNkZWZp bmUgTUVNX0hBTkRMRV9DT1VOVAkyNTYNCisgI2RlZmluZSBERVNDUklQVE9S X0NPVU5UCTEyOA0KKyAjZGVmaW5lIERPU19ERVNDUklQVE9SX0NPVU5UCTEy OA0KKyANCisgbG9uZyBtZW1faGFuZGxlc1tNRU1fSEFORExFX0NPVU5UXTsN CisgdW5zaWduZWQgc2hvcnQgZGVzY3JpcHRvcnNbREVTQ1JJUFRPUl9DT1VO VF07DQorIHVuc2lnbmVkIHNob3J0IGRvc19kZXNjcmlwdG9yc1tET1NfREVT Q1JJUFRPUl9DT1VOVF07DQorIA0KICAvKiBBUkdTVVNFRCAqLw0KICBjaGFy ICoqDQogIF9fY3J0MF9nbG9iX2Z1bmN0aW9uKGNoYXIgKmZvbykNCioqKioq KioqKioqKioqKg0KKioqIDE0OCwxNTMgKioqKg0KLS0tIDE1OCwyNzYgLS0t LQ0KICAgIF9fZHBtaV9zZXRfcHJvdGVjdGVkX21vZGVfaW50ZXJydXB0X3Zl Y3RvcigweDMxLCAmbmV3X2ludCk7DQogIH0NCiAgDQorIC8qIENoYW5nZSBh IGhhbmRsZSBpbiB0aGUgbGlzdDogRUFYIGlzIHRoZSBvbGQgaGFuZGxlLCBF RFggaXMgdGhlIG5ldyAqLw0KKyAvKiBmb3IgY2hhbmdpbmcgYSB2YWx1ZSwg d2UgbmVlZCBvdXIgZHMsIGJlY2F1c2UgY3MgaGFzIG5vIHdyaXRlIGFjY2Vz cyAqLw0KKyBhc20oCQkJCQkJICAgICAgIAkJCSJcblwNCisgCS50ZXh0CQkJ CQkJCQlcblwNCisgCS5hbGlnbiAgMiwweDkwCQkJCQkJCVxuXA0KKyBfY2hh bmdlX2hhbmRsZToJCQkJCQkJCVxuXA0KKyAJcHVzaGwJJWVjeAkJCQkJCQlc blwNCisgCXhvcmwJJWVjeCwlZWN4CQkJCQkJXG5cDQorIENMMToJCQkJCQkJ CQlcblwNCisgCS5ieXRlCTB4MmUgCQkJCQkJCVxuXA0KKyAJY21wbAklZWF4 LF9tZW1faGFuZGxlcygsJWVjeCw0KQkJCQlcblwNCisgCWpuZQlDTDIJCQkJ CQkJXG5cDQorIAlwdXNoCSVkcwkJCQkJCQlcblwNCisgCS5ieXRlCTB4MmUJ CQkJCQkJXG5cDQorIAltb3Z3CV9teV9kcywlYXgJCQkJCQlcblwNCisgCW1v dncJJWF4LCVkcwkJCQkJCQlcblwNCisgCW1vdmwJJWVkeCxfbWVtX2hhbmRs ZXMoLCVlY3gsNCkJCQkJXG5cDQorIAlwb3AJJWRzCQkJCQkJCVxuXA0KKyAJ cG9wbAklZWN4CQkJCQkJCVxuXA0KKyAJcmV0CQkJCQkJCQlcblwNCisgQ0wy OgkJCQkJCQkJCVxuXA0KKyAJaW5jbAklZWN4CQkJCQkJCVxuXA0KKyAJY21w bAkkMjU2LCVlY3gJLyogTUVNX0hBTkRMRV9DT1VOVCAqLwkJCVxuXA0KKyAJ amwJQ0wxCQkJCQkJCVxuXA0KKyAJcG9wbAklZWN4CQkJCQkJCVxuXA0KKyAJ cmV0CQkJCQkJCQlcbiINCisgKTsNCisgDQorIC8qIENoYW5nZSBhIGRlc2Ny aXB0b3IgaW4gdGhlIGxpc3Q6IEFYIGlzIHRoZSBvbGQsIERYIGlzIHRoZSBu ZXcgKi8NCisgLyogZm9yIGNoYW5naW5nIGEgdmFsdWUsIHdlIG5lZWQgb3Vy IGRzLCBiZWNhdXNlIGNzIGhhcyBubyB3cml0ZSBhY2Nlc3MgKi8NCisgYXNt KAkJCQkJCSAgICAgICAJCQkiXG5cDQorIAkudGV4dAkJCQkJCQkJXG5cDQor IAkuYWxpZ24gIDIsMHg5MAkJCQkJCQlcblwNCisgX2NoYW5nZV9kZXNjcmlw dG9yOgkJCQkJCQlcblwNCisgCXB1c2hsCSVlY3gJCQkJCQkJXG5cDQorIAlw dXNobAklZWF4CQkJCQkJCVxuXA0KKyAJeG9ybAklZWN4LCVlY3gJCQkJCQlc blwNCisgQ0wzOgkJCQkJCQkJCVxuXA0KKyAJLmJ5dGUJMHgyZSAJCQkJCQkJ XG5cDQorIAljbXB3CSVheCxfZGVzY3JpcHRvcnMoLCVlY3gsMikJCQkJXG5c DQorIAlqbmUJQ0w0CQkJCQkJCVxuXA0KKyAJcHVzaAklZHMJCQkJCQkJXG5c DQorIAkuYnl0ZQkweDJlCQkJCQkJCVxuXA0KKyAJbW92dwlfbXlfZHMsJWF4 CQkJCQkJXG5cDQorIAltb3Z3CSVheCwlZHMJCQkJCQkJXG5cDQorIAltb3Z3 CSVkeCxfZGVzY3JpcHRvcnMoLCVlY3gsMikJCQkJXG5cDQorIAlwb3AJJWRz CQkJCQkJCVxuXA0KKyAJcG9wbAklZWF4CQkJCQkJCVxuXA0KKyAJcG9wbAkl ZWN4CQkJCQkJCVxuXA0KKyAJcmV0CQkJCQkJCQlcblwNCisgQ0w0OgkJCQkJ CQkJCVxuXA0KKyAJaW5jbAklZWN4CQkJCQkJCVxuXA0KKyAJY21wbAkkMTI4 LCVlY3gJLyogREVTQ1JJUFRPUl9DT1VOVCAqLwkJCVxuXA0KKyAJamwJQ0wz CQkJCQkJCVxuXA0KKyAJcG9wbAklZWF4CQkJCQkJCVxuXA0KKyAJcG9wbAkl ZWN4CQkJCQkJCVxuXA0KKyAJcmV0CQkJCQkJCQlcbiINCisgKTsNCisgDQor IC8qIEFkZCBkZXNjcmlwdG9ycyB0byB0aGUgbGlzdDogQVggaXMgdGhlIGZp cnN0LCBDWCBpcyB0aGUgY291bnQgKi8NCisgYXNtKAkJCQkJCQkJCSJcblwN CisgCS50ZXh0CQkJCQkJCQlcblwNCisgCS5hbGlnbiAgMiwweDkwCQkJCQkJ CVxuXA0KKyBfYWRkX2Rlc2NyaXB0b3JzOgkJCQkJCQlcblwNCisgCXB1c2hs CSVlZHgJCQkJCQkJXG5cDQorIAlwdXNobAklZWN4CQkJCQkJCVxuXA0KKyAJ cHVzaGwJJWVieAkJCQkJCQlcblwNCisgCXB1c2hsCSVlYXgJCQkJCQkJXG5c DQorIAltb3Z3CSQweDAwMDMsJWF4CQkJCQkJXG5cDQorIAlwdXNoZgkJCQkJ CQkJXG5cDQorIAkuYnl0ZQkweDJlCQkJCQkJCVxuXA0KKyAJbGNhbGwJX29s ZF9pMzEJCQkJCQlcblwNCisgCW1vdncJJWF4LCVieAkJCQkJCQlcblwNCisg CXBvcGwJJWVheAkJCQkJCQlcblwNCisgCXB1c2hsCSVlYXgJCQkJCQkJXG5c DQorIAltb3Z3CSVheCwlZHgJCQkJCQkJXG5cDQorIAl4b3J3CSVheCwlYXgJ CQkJCQkJXG5cDQorIENMNToJCQkJCQkJCQlcblwNCisgCWNhbGwJX2NoYW5n ZV9kZXNjcmlwdG9yCQkJCQlcblwNCisgCWFkZHcJJWJ4LCVkeAkJCQkJCQlc blwNCisgCWxvb3AJQ0w1CQkJCQkJCVxuXA0KKyAJcG9wbAklZWF4CQkJCQkJ CVxuXA0KKyAJcG9wbAklZWJ4CQkJCQkJCVxuXA0KKyAJcG9wbAklZWN4CQkJ CQkJCVxuXA0KKyAJcG9wbAklZWR4CQkJCQkJCVxuXA0KKyAJcmV0CQkJCQkJ CQlcbiINCisgKTsNCisgDQorIC8qIENoYW5nZSBhIGRvc19kZXNjcmlwdG9y IGluIHRoZSBsaXN0OiBBWCBpcyB0aGUgb2xkLCBEWCBpcyB0aGUgbmV3ICov DQorIC8qIGZvciBjaGFuZ2luZyBhIHZhbHVlLCB3ZSBuZWVkIG91ciBkcywg YmVjYXVzZSBjcyBoYXMgbm8gd3JpdGUgYWNjZXNzICovDQorIGFzbSgJCQkJ CQkgICAgICAgCQkJIlxuXA0KKyAJLnRleHQJCQkJCQkJCVxuXA0KKyAJLmFs aWduICAyLDB4OTAJCQkJCQkJXG5cDQorIF9jaGFuZ2VfZG9zX2Rlc2NyaXB0 b3I6CQkJCQkJCVxuXA0KKyAJeG9ybAklZWN4LCVlY3gJCQkJCQlcblwNCisg Q0w2OgkJCQkJCQkJCVxuXA0KKyAJLmJ5dGUJMHgyZSAJCQkJCQkJXG5cDQor IAljbXB3CSVheCxfZG9zX2Rlc2NyaXB0b3JzKCwlZWN4LDIpCQkJCVxuXA0K KyAJam5lCUNMNwkJCQkJCQlcblwNCisgCXB1c2gJJWRzCQkJCQkJCVxuXA0K KyAJLmJ5dGUJMHgyZQkJCQkJCQlcblwNCisgCW1vdncJX215X2RzLCVheAkJ CQkJCVxuXA0KKyAJbW92dwklYXgsJWRzCQkJCQkJCVxuXA0KKyAJbW92dwkl ZHgsX2Rvc19kZXNjcmlwdG9ycygsJWVjeCwyKQkJCQlcblwNCisgCXBvcAkl ZHMJCQkJCQkJXG5cDQorIAlyZXQJCQkJCQkJCVxuXA0KKyBDTDc6CQkJCQkJ CQkJXG5cDQorIAlpbmNsCSVlY3gJCQkJCQkJXG5cDQorIAljbXBsCSQxMjgs JWVjeAkvKiBET1NfREVTQ1JJUFRPUl9DT1VOVCAqLwkJXG5cDQorIAlqbAlD TDYJCQkJCQkJXG5cDQorIAlyZXQJCQkJCQkJCVxuIg0KKyApOw0KKyANCiAg LyogQlVHUzogV2UgaWdub3JlIHRoZSBleGNlcHRpb24gaGFuZGxlcnMgZm9y IHRoZSBjaGlsZCBwcm9jZXNzLCBzbyBzaWduYWxzDQogICAgIGRvIG5vdCB3 b3JrLiAgV2UgYWxzbyBkaXNhYmxlIHRoZSBob29raW5nIG9mIEhXIGludGVy cnVwdHMgdGhhdCBtaWdodA0KICAgICBjYXVzZSB0aGUgSFctaW50ZXJydXB0 LXRvLWxpbWl0IGV4Y2VwdGlvbnMsIHNpbmNlIHRoZXkgY2FuIG5ldmVyIGJl IGZpeGVkLg0KKioqKioqKioqKioqKioqDQoqKiogMTU2LDE2NSAqKioqDQot LS0gMjc5LDMxOSAtLS0tDQogICAgIGludGVycnVwdCBob29rcyBhbmQgdGhl biBjaGFpbiB0byB0aGVtIG9uIHRoZSBuZXh0IGV4ZWN1dGlvbi4gIFNvbWVk YXkuICovDQogIA0KICAvKiBXYXRjaCBzZXQgc2VsZWN0b3IgYmFzZSwgaWYg aXQgaXMgX19kamdwcF9hcHBfRFMgdGhlbiByZXNldCBicmVha3BvaW50cyAq Lw0KKyANCisgLyogV2F0Y2ggdGhlIGZvbGxvd2luZyBEUE1JLWZ1bmN0aW9u czogKGFkZGVkIGJ5IFJIKQ0KKyANCisgICAweDAwMDAgICA6IF9fZHBtaV9h bGxvY2F0ZV9sZHRfZGVzY3JpcHRvcnMNCisgICAweDAwMDEgICA6IF9fZHBt aV9mcmVlX2xkdF9kZXNjcmlwdG9yDQorICAgMHgwMDBBICAgOiBfX2RwbWlf Y3JlYXRlX2FsaWFzX2Rlc2NyaXB0b3INCisgICANCisgICAweDAxMDAgICA6 IF9fZHBtaV9hbGxvY2F0ZV9kb3NfbWVtb3J5DQorICAgMHgwMTAxICAgOiBf X2RwbWlfZnJlZV9kb3NfbWVtb3J5DQorICAgDQorICAgMHgwNTAxICAgOiBf X2RwbWlfYWxsb2NhdGVfbWVtb3J5DQorICAgMHgwNTAxICAgOiBfX2RwbWlf ZnJlZV9tZW1vcnkNCisgICAweDA1MDMgICA6IF9fZHBtaV9yZXNpemVfbWVt b3J5DQorICAgDQorICovIA0KICBhc20oCQkJCQkJICAgICAgIAkJCSJcblwN CiAgCS50ZXh0CQkJCQkJCQlcblwNCiAgCS5hbGlnbiAgMiwweDkwCQkJCQkJ CVxuXA0KICBfaTMxX2hvb2s6CQkJCQkJCQlcblwNCisgCWNtcHcJJDB4MDAw MCwlYXgJCQkJCQlcblwNCisgCWplCUxjMzFfYWxsb2NfZGVzY3JpcHRvcnMJ CQkJCVxuXA0KKyAJY21wdwkkMHgwMDAxLCVheAkJCQkJCVxuXA0KKyAJamUJ TGMzMV9mcmVlX2Rlc2NyaXB0b3IJCQkJCVxuXA0KKyAJY21wdwkkMHgwMDBB LCVheAkJCQkJCVxuXA0KKyAJamUJTGMzMV9jcmVhdGVfYWxpYXNfZGVzY3Jp cHRvcgkJCQlcblwNCisgCWNtcHcJJDB4MDEwMCwlYXgJCQkJCQlcblwNCisg CWplCUxjMzFfYWxsb2NhdGVfZG9zX21lbW9yeQkJCQlcblwNCisgCWNtcHcJ JDB4MDEwMSwlYXgJCQkJCQlcblwNCisgCWplCUxjMzFfZnJlZV9kb3NfbWVt b3J5CQkJCQlcblwNCisgCWNtcHcJJDB4MDUwMSwlYXgJCQkJCQlcblwNCisg CWplCUxjMzFfYWxsb2NfbWVtCQkJCQkJXG5cDQorIAljbXB3CSQweDA1MDIs JWF4CQkJCQkJXG5cDQorIAlqZQlMYzMxX2ZyZWVfbWVtCQkJCQkJXG5cDQor IAljbXB3CSQweDA1MDMsJWF4CQkJCQkJXG5cDQorIAlqZQlMYzMxX3Jlc2l6 ZV9tZW0JCQkJCQlcblwNCiAgCWNtcHcJJDB4MDIwMywlYXgJCQkJCQlcblwN CiAgCWplCUxjMzFhCQkJCQkJCVxuXA0KICAJY21wdwkkMHgwMDA3LCVheAkJ CQkJCVxuXA0KKioqKioqKioqKioqKioqDQoqKiogMTY4LDE3MyAqKioqDQot LS0gMzIyLDMzMiAtLS0tDQogIAlqZQlMYzMxZAkJCQkJCQlcblwNCiAgTGMz MWM6CS5ieXRlCTB4MmUJCQkJCQkJXG5cDQogIAlsam1wCV9vbGRfaTMxCQkJ CQkJXG5cDQorIExjMzFhXzoJcHVzaGwJJWVheAkJCQkJCQlcblwNCisgCXB1 c2hmCQkJCQkJCQlcblwNCisgCXBvcGwJJWVheAkJCQkJCQlcblwNCisgCW1v dmwJJWVheCwxMiglZXNwKQkvKiBzdG9yZSB0aGUgcmlnaHQgZmxhZ3MgZm9y IGlyZXQgKi8JXG5cDQorIAlwb3BsCSVlYXgJCQkJCQkJXG5cDQogIExjMzFh OglpcmV0CQkJCQkJCQlcblwNCiAgTGMzMWI6CS5ieXRlCTB4MmUJCQkJCQkJ XG5cDQogIAljbXB3CV9fX2RqZ3BwX2FwcF9EUywlYngJCQkJCVxuXA0KKioq KioqKioqKioqKioqDQoqKiogMTg3LDE5MiAqKioqDQotLS0gMzQ2LDQ0OSAt LS0tDQogIAljbXBiCSQweDc1LCVibAkJCQkJCVxuXA0KICAJamUJTGMzMWEJ CQkJCQkJXG5cDQogIAlqbXAJTGMzMWMJCQkJCQkJXG5cDQorIExjMzFfYWxs b2NfbWVtOgkJCQkJCQkJXG5cDQorIAlwdXNoZgkJCQkJCQkJXG5cDQorIAku Ynl0ZQkweDJlCQkJCQkJCVxuXA0KKyAJbGNhbGwJX29sZF9pMzEJCQkJCQlc blwNCisgCWpjCUxjMzFhXwkJCQkJCQlcblwNCisgCXB1c2h3CSVzaQkJCQkJ CQlcblwNCisgCXB1c2h3CSVkaQkJCQkJCQlcblwNCisgCXBvcGwJJWVkeAkJ CQkJCQlcblwNCisgCXhvcmwJJWVheCwlZWF4CQkJCQkJXG5cDQorIAljYWxs CV9jaGFuZ2VfaGFuZGxlCQkJCQkJXG5cDQorIAljbGMJCQkJCQkJCVxuXA0K KyAJam1wCUxjMzFhXwkJCQkJCQlcblwNCisgTGMzMV9mcmVlX21lbToJCQkJ CQkJCVxuXA0KKyAJcHVzaHcJJXNpCQkJCQkJCVxuXA0KKyAJcHVzaHcJJWRp CQkJCQkJCVxuXA0KKyAJcHVzaGYJCQkJCQkJCVxuXA0KKyAJLmJ5dGUJMHgy ZQkJCQkJCQlcblwNCisgCWxjYWxsCV9vbGRfaTMxCQkJCQkJXG5cDQorIAlq YwlMYzMxX3Jlc2l6ZV9tZW1fZXJyb3IJCQkJCVxuXA0KKyAJcG9wbAklZWF4 CQkJCQkJCVxuXA0KKyAJeG9ybAklZWR4LCVlZHgJCQkJCQlcblwNCisgCWNh bGwJX2NoYW5nZV9oYW5kbGUJCQkJCQlcblwNCisgCXhvcmwJJWVheCwlZWF4 CQkJCQkJXG5cDQorIAlqbXAJTGMzMWFfCQkJCQkJCVxuXA0KKyBMYzMxX3Jl c2l6ZV9tZW06CQkJCQkJCVxuXA0KKyAJcHVzaHcJJXNpCQkJCQkJCVxuXA0K KyAJcHVzaHcJJWRpCQkJCQkJCVxuXA0KKyAJcHVzaGYJCQkJCQkJCVxuXA0K KyAJLmJ5dGUJMHgyZQkJCQkJCQlcblwNCisgCWxjYWxsCV9vbGRfaTMxCQkJ CQkJXG5cDQorIAlqbmMJTGMzMV9yZXNpemVfbWVtX29rCQkJCQlcblwNCisg TGMzMV9yZXNpemVfbWVtX2Vycm9yOgkJCQkJCQlcblwNCisgCWFkZGwJJDQs JWVzcAkJCQkJCQlcblwNCisgCXN0YwkJCQkJCQkJXG5cDQorIAlqbXAJTGMz MWFfCQkJCQkJCVxuXA0KKyBMYzMxX3Jlc2l6ZV9tZW1fb2s6CQkJCQkJCVxu XA0KKyAJcG9wbAklZWF4CQkJCQkJCVxuXA0KKyAJcHVzaHcJJXNpCQkJCQkJ CVxuXA0KKyAJcHVzaHcJJWRpCQkJCQkJCVxuXA0KKyAJcG9wbAklZWR4CQkJ CQkJCVxuXA0KKyAJY2FsbAlfY2hhbmdlX2hhbmRsZQkJCQkJCVxuXA0KKyAJ eG9ybAklZWF4LCVlYXgJCQkJCQlcblwNCisgCWptcAlMYzMxYV8JCQkJCQkJ XG5cDQorIExjMzFfYWxsb2NfZGVzY3JpcHRvcnM6CQkJCQkJCVxuXA0KKyAJ cHVzaGwJJWVjeAkJCQkJCQlcblwNCisgCXB1c2hmCQkJCQkJCQlcblwNCisg CS5ieXRlCTB4MmUJCQkJCQkJXG5cDQorIAlsY2FsbAlfb2xkX2kzMQkJCQkJ CVxuXA0KKyAJcG9wbAklZWN4CQkJCQkJCVxuXA0KKyAJamMJTGMzMWFfCQkJ CQkJCVxuXA0KKyAJY2FsbAlfYWRkX2Rlc2NyaXB0b3JzCQkJCQlcblwNCisg CWNsYwkJCQkJCQkJXG5cDQorIAlqbXAJTGMzMWFfCQkJCQkJCVxuXA0KKyBM YzMxX2ZyZWVfZGVzY3JpcHRvcjoJCQkJCQkJXG5cDQorIAlwdXNobAklZWJ4 CQkJCQkJCVxuXA0KKyAJcHVzaGYJCQkJCQkJCVxuXA0KKyAJLmJ5dGUJMHgy ZQkJCQkJCQlcblwNCisgCWxjYWxsCV9vbGRfaTMxCQkJCQkJXG5cDQorIAlw b3BsCSVlZHgJCQkJCQkJXG5cDQorIAlqYwlMYzMxYV8JCQkJCQkJXG5cDQor IAl4b3J3CSVheCwlYXgJCQkJCQkJXG5cDQorIAljYWxsCV9jaGFuZ2VfZGVz Y3JpcHRvcgkJCQkJXG5cDQorIAljbGMJCQkJCQkJCVxuXA0KKyAJam1wCUxj MzFhXwkJCQkJCQlcblwNCisgTGMzMV9jcmVhdGVfYWxpYXNfZGVzY3JpcHRv cjoJCQkJCQlcblwNCisgCXB1c2hmCQkJCQkJCQlcblwNCisgCS5ieXRlCTB4 MmUJCQkJCQkJXG5cDQorIAlsY2FsbAlfb2xkX2kzMQkJCQkJCVxuXA0KKyAJ amMJTGMzMWFfCQkJCQkJCVxuXA0KKyAJcHVzaGwJJWVheAkJCQkJCQlcblwN CisgCW1vdncJJWF4LCVkeAkJCQkJCQlcblwNCisgCXhvcncJJWF4LCVheAkJ CQkJCQlcblwNCisgCWNhbGwJX2NoYW5nZV9kZXNjcmlwdG9yCQkJCQlcblwN CisgCXBvcGwJJWVheAkJCQkJCQlcblwNCisgCWNsYwkJCQkJCQkJXG5cDQor IAlqbXAJTGMzMWFfCQkJCQkJCVxuXA0KKyBMYzMxX2FsbG9jYXRlX2Rvc19t ZW1vcnk6CQkJCQkJXG5cDQorIAlwdXNoZgkJCQkJCQkJXG5cDQorIAkuYnl0 ZQkweDJlCQkJCQkJCVxuXA0KKyAJbGNhbGwJX29sZF9pMzEJCQkJCQlcblwN CisgCWpjCUxjMzFhXwkJCQkJCQlcblwNCisgCXB1c2hsCSVlYXgJCQkJCQkJ XG5cDQorIAl4b3JsCSVlYXgsJWVheAkJCQkJCVxuXA0KKyAJY2FsbAlfY2hh bmdlX2Rvc19kZXNjcmlwdG9yCQkJCQlcblwNCisgCXBvcGwJJWVheAkJCQkJ CQlcblwNCisgCWNsYwkJCQkJCQkJXG5cDQorIAlqbXAJTGMzMWFfCQkJCQkJ CVxuXA0KKyBMYzMxX2ZyZWVfZG9zX21lbW9yeToJCQkJCQkJXG5cDQorIAlw dXNobAklZWR4CQkJCQkJCVxuXA0KKyAJcHVzaGYJCQkJCQkJCVxuXA0KKyAJ LmJ5dGUJMHgyZQkJCQkJCQlcblwNCisgCWxjYWxsCV9vbGRfaTMxCQkJCQkJ XG5cDQorIAlwb3BsCSVlYXgJCQkJCQkJXG5cDQorIAlqYwlMYzMxYV8JCQkJ CQkJXG5cDQorIAl4b3J3CSVkeCwlZHgJCQkJCQkJXG5cDQorIAljYWxsCV9j aGFuZ2VfZG9zX2Rlc2NyaXB0b3IJCQkJCVxuXA0KKyAJY2xjCQkJCQkJCQlc blwNCisgCWptcAlMYzMxYV8JCQkJCQkJXG5cDQogIAkuYWxpZ24gIDIsMHg5 MAkJCQkJCQlcblwNCiAgX2kyMV9ob29rOgkJCQkJCQkJXG5cDQogIAljbXBi CSQweDRjLCVhaAkJCQkJCVxuXA0KKioqKioqKioqKioqKioqDQoqKiogMzEw LDMxNSAqKioqDQotLS0gNTY3LDU3OSAtLS0tDQogICAgcmV0dXJuIDA7DQog IH0NCiAgDQorIHN0YXRpYyBfR08zMl9TdHViSW5mbyBzaTsNCisgDQorIHN0 YXRpYyB2b2lkICgqb2xkVFJBUCkoaW50KTsNCisgc3RhdGljIHZvaWQgKCpv bGRTRUdWKShpbnQpOw0KKyBzdGF0aWMgdm9pZCAoKm9sZEZQRSkoaW50KTsN Cisgc3RhdGljIHZvaWQgKCpvbGRJTlQpKGludCk7DQorIA0KICB2b2lkIGVk aV9pbml0KGptcF9idWYgc3RhcnRfc3RhdGUpDQogIHsNCiAgICBteV9kcyA9 IDA7DQoqKioqKioqKioqKioqKioNCioqKiAzMzEsMzM4ICoqKioNCiAgICBf X2RqZ3BwX2FwcF9EUyA9IGFfdHNzLnRzc19kczsNCiAgICBhcHBfY3MgPSBh X3Rzcy50c3NfY3M7DQogICAgZWRpLmFwcF9iYXNlID0gMDsNCiEgICBzaWdu YWwoU0lHVFJBUCwgZGJnc2lnKTsNCiEgICBzaWduYWwoU0lHU0VHViwgZGJn c2lnKTsNCiEgICBzaWduYWwoU0lHRlBFLCBkYmdzaWcpOw0KISAgIHNpZ25h bChTSUdJTlQsIGRiZ3NpZyk7DQogIH0NCi0tLSA1OTUsNjUyIC0tLS0NCiAg ICBfX2RqZ3BwX2FwcF9EUyA9IGFfdHNzLnRzc19kczsNCiAgICBhcHBfY3Mg PSBhX3Rzcy50c3NfY3M7DQogICAgZWRpLmFwcF9iYXNlID0gMDsNCiEgICBv bGRUUkFQID0gc2lnbmFsKFNJR1RSQVAsIGRiZ3NpZyk7DQohICAgb2xkU0VH ViA9IHNpZ25hbChTSUdTRUdWLCBkYmdzaWcpOw0KISAgIG9sZEZQRSA9IHNp Z25hbChTSUdGUEUsIGRiZ3NpZyk7DQohICAgb2xkSU5UID0gc2lnbmFsKFNJ R0lOVCwgZGJnc2lnKTsNCiEgICBtb3ZlZGF0YShhX3Rzcy50c3NfZnMsMCxt eV9kcywodW5zaWduZWQpJnNpLHNpemVvZihzaSkpOw0KISAgIG1lbXNldCht ZW1faGFuZGxlcywwLHNpemVvZihtZW1faGFuZGxlcykpOw0KISAgIG1lbV9o YW5kbGVzWzBdID0gc2kubWVtb3J5X2hhbmRsZTsNCiEgICBtZW1zZXQoZGVz Y3JpcHRvcnMsMCxzaXplb2YoZGVzY3JpcHRvcnMpKTsNCiEgICBkZXNjcmlw dG9yc1swXSA9IHNpLmNzX3NlbGVjdG9yOw0KISAgIGRlc2NyaXB0b3JzWzFd ID0gc2kuZHNfc2VsZWN0b3I7DQohICAgZGVzY3JpcHRvcnNbMl0gPSBfX2Rq Z3BwX2FwcF9EUzsNCiEgICBkZXNjcmlwdG9yc1szXSA9IGFwcF9jczsgDQoh ICAgbWVtc2V0KGRvc19kZXNjcmlwdG9ycywwLHNpemVvZihkb3NfZGVzY3Jp cHRvcnMpKTsNCiEgICBkb3NfZGVzY3JpcHRvcnNbMF0gPSBfZmFycGVla3co c2kucHNwX3NlbGVjdG9yLDB4MmMpOw0KISAgIGRvc19kZXNjcmlwdG9yc1sx XSA9IHNpLnBzcF9zZWxlY3RvcjsgDQohIH0NCiEgDQohIHZvaWQgY2xlYW51 cF9jbGllbnQoKQ0KISB7DQohICAgaW50IGk7DQohICAgZm9yIChpPTA7aTxE T1NfREVTQ1JJUFRPUl9DT1VOVDtpKyspDQohICAgew0KISAgICAgaWYgKGRv c19kZXNjcmlwdG9yc1tpXSkNCiEgICAgIHsNCiEgI2lmZGVmIERFQlVHX0RC R0NPTQ0KISAgICAgICBmcHJpbnRmKHN0ZGVyciwiZnJlZSBkb3MgbWVtb3J5 OiAlMDh4XG4iLGRvc19kZXNjcmlwdG9yc1tpXSk7DQohICNlbmRpZg0KISAg ICAgICBfX2RwbWlfZnJlZV9kb3NfbWVtb3J5KGRvc19kZXNjcmlwdG9yc1tp XSk7DQohICAgICB9DQohICAgfQ0KISAgIGZvciAoaT0wO2k8TUVNX0hBTkRM RV9DT1VOVDtpKyspDQohICAgew0KISAgICAgaWYgKG1lbV9oYW5kbGVzW2ld KQ0KISAgICAgew0KISAjaWZkZWYgREVCVUdfREJHQ09NDQohICAgICAgIGZw cmludGYoc3RkZXJyLCJmcmVlIG1lbSA6ICUwOGx4XG4iLG1lbV9oYW5kbGVz W2ldKTsNCiEgI2VuZGlmDQohICAgICAgIF9fZHBtaV9mcmVlX21lbW9yeSht ZW1faGFuZGxlc1tpXSk7DQohICAgICB9DQohICAgfQ0KISAgIGZvciAoaT0w O2k8REVTQ1JJUFRPUl9DT1VOVDtpKyspDQohICAgew0KISAgICAgaWYgKGRl c2NyaXB0b3JzW2ldKQ0KISAgICAgew0KISAjaWZkZWYgREVCVUdfREJHQ09N DQohICAgICAgIGZwcmludGYoc3RkZXJyLCJmcmVlIGRlc2NyaXB0b3I6ICUw OHhcbiIsZGVzY3JpcHRvcnNbaV0pOw0KISAjZW5kaWYNCiEgICAgICAgX19k cG1pX2ZyZWVfbGR0X2Rlc2NyaXB0b3IoZGVzY3JpcHRvcnNbaV0pOw0KISAg ICAgfQ0KISAgIH0NCiEgICBzaWduYWwoU0lHVFJBUCwgb2xkVFJBUCk7DQoh ICAgc2lnbmFsKFNJR1NFR1YsIG9sZFNFR1YpOw0KISAgIHNpZ25hbChTSUdG UEUsIG9sZEZQRSk7DQohICAgc2lnbmFsKFNJR0lOVCwgb2xkSU5UKTsNCiAg fQ0K --55974162-1804928587-835185092=:16080--