From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11300 invoked by alias); 3 Feb 2007 05:44:02 -0000 Received: (qmail 11292 invoked by uid 22791); 3 Feb 2007 05:44:02 -0000 X-Spam-Check-By: sourceware.org Received: from viper.snap.net.nz (HELO viper.snap.net.nz) (202.37.101.8) by sourceware.org (qpsmtpd/0.31) with ESMTP; Sat, 03 Feb 2007 05:43:56 +0000 Received: from kahikatea.snap.net.nz (250.63.255.123.dynamic.snap.net.nz [123.255.63.250]) by viper.snap.net.nz (Postfix) with ESMTP id DD3E02F451B for ; Sat, 3 Feb 2007 18:43:48 +1300 (NZDT) Received: by kahikatea.snap.net.nz (Postfix, from userid 500) id 429774F71C; Sat, 3 Feb 2007 18:43:46 +1300 (NZDT) From: Nick Roberts MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="14cqSOJDzc" Content-Transfer-Encoding: 7bit Message-ID: <17860.8466.150801.692398@kahikatea.snap.net.nz> Date: Sat, 03 Feb 2007 05:44:00 -0000 To: gdb-patches@sources.redhat.com Subject: Formatting changes to mi-main.c X-Mailer: VM 7.19 under Emacs 22.0.93.5 X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2007-02/txt/msg00029.txt.bz2 --14cqSOJDzc Content-Type: text/plain; charset=us-ascii Content-Description: message body and .signature Content-Transfer-Encoding: 7bit Content-length: 304 Committed as obvious. -- Nick http://www.inet.net.nz/~nickrob 2007-02-03 Nick Roberts * mi/mi-main.c: Numerous formatting changes. (mi_cmd_data_write_register_values): Replace clause inadvertantly removed in my previous change. --14cqSOJDzc Content-Type: application/octet-stream Content-Description: Formatting changes to mi-main.c Content-Disposition: attachment; filename="mimain.diff" Content-Transfer-Encoding: base64 Content-length: 55368 KioqIG1pLW1haW4uYwkwMyBGZWIgMjAwNyAxMjoxNzoxNCArMTMwMAkxLjkz Ci0tLSBtaS1tYWluLmMJMDMgRmViIDIwMDcgMTg6Mzc6MDQgKzEzMDAJCioq KioqKioqKioqKioqKgoqKiogMjIsMjggKioqKgogICAgIEZvdW5kYXRpb24s IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCiAgICAg Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuICAqLwogIAohIC8qIFdvcmsg aW4gcHJvZ3Jlc3MgKi8KICAKICAjaW5jbHVkZSAiZGVmcy5oIgogICNpbmNs dWRlICJ0YXJnZXQuaCIKLS0tIDIyLDI4IC0tLS0KICAgICBGb3VuZGF0aW9u LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAogICAg IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KICAKISAvKiBXb3Jr IGluIHByb2dyZXNzLiAgKi8KICAKICAjaW5jbHVkZSAiZGVmcy5oIgogICNp bmNsdWRlICJ0YXJnZXQuaCIKKioqKioqKioqKioqKioqCioqKiA0MCw0NiAq KioqCiAgI2luY2x1ZGUgImludGVycHMuaCIKICAjaW5jbHVkZSAiZXZlbnQt bG9vcC5oIgogICNpbmNsdWRlICJldmVudC10b3AuaCIKISAjaW5jbHVkZSAi Z2RiY29yZS5oIgkJLyogZm9yIHdyaXRlX21lbW9yeSgpICovCiAgI2luY2x1 ZGUgInZhbHVlLmgiCiAgI2luY2x1ZGUgInJlZ2NhY2hlLmgiCiAgI2luY2x1 ZGUgImdkYi5oIgotLS0gNDAsNDYgLS0tLQogICNpbmNsdWRlICJpbnRlcnBz LmgiCiAgI2luY2x1ZGUgImV2ZW50LWxvb3AuaCIKICAjaW5jbHVkZSAiZXZl bnQtdG9wLmgiCiEgI2luY2x1ZGUgImdkYmNvcmUuaCIJCS8qIEZvciB3cml0 ZV9tZW1vcnkoKS4gICovCiAgI2luY2x1ZGUgInZhbHVlLmgiCiAgI2luY2x1 ZGUgInJlZ2NhY2hlLmgiCiAgI2luY2x1ZGUgImdkYi5oIgoqKioqKioqKioq KioqKiogZW51bQoqKiogNjQsNzAgKioqKgogICAgfTsKICAKICAvKiBFbnVt ZXJhdGlvbnMgb2YgdGhlIGFjdGlvbnMgdGhhdCBtYXkgcmVzdWx0IGZyb20g Y2FsbGluZwohICAgIGNhcHR1cmVkX21pX2V4ZWN1dGVfY29tbWFuZCAqLwog IAogIGVudW0gY2FwdHVyZWRfbWlfZXhlY3V0ZV9jb21tYW5kX2FjdGlvbnMK ICAgIHsKLS0tIDY0LDcwIC0tLS0KICAgIH07CiAgCiAgLyogRW51bWVyYXRp b25zIG9mIHRoZSBhY3Rpb25zIHRoYXQgbWF5IHJlc3VsdCBmcm9tIGNhbGxp bmcKISAgICBjYXB0dXJlZF9taV9leGVjdXRlX2NvbW1hbmQuICAqLwogIAog IGVudW0gY2FwdHVyZWRfbWlfZXhlY3V0ZV9jb21tYW5kX2FjdGlvbnMKICAg IHsKKioqKioqKioqKioqKioqIGVudW0gY2FwdHVyZWRfbWlfZXhlY3V0ZV9j b21tYW5kX2FjdGlvbnMKKioqIDczLDg4ICoqKioKICAgIH07CiAgCiAgLyog VGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZCB0byBwYXNzIGluZm9ybWF0aW9uIGZy b20gY2FwdHVyZWRfbWlfZXhlY3V0ZV9jb21tYW5kCiEgICAgdG8gbWlfZXhl Y3V0ZV9jb21tYW5kLiAqLwogIHN0cnVjdCBjYXB0dXJlZF9taV9leGVjdXRl X2NvbW1hbmRfYXJncwogIHsKISAgIC8qIFRoaXMgcmV0dXJuIHJlc3VsdCBv ZiB0aGUgTUkgY29tbWFuZCAob3V0cHV0KSAqLwogICAgZW51bSBtaV9jbWRf cmVzdWx0IHJjOwogIAohICAgLyogV2hhdCBhY3Rpb24gdG8gcGVyZm9ybSB3 aGVuIHRoZSBjYWxsIGlzIGZpbmlzaGVkIChvdXRwdXQpICovCiAgICBlbnVt IGNhcHR1cmVkX21pX2V4ZWN1dGVfY29tbWFuZF9hY3Rpb25zIGFjdGlvbjsK ICAKISAgIC8qIFRoZSBjb21tYW5kIGNvbnRleHQgdG8gYmUgZXhlY3V0ZWQg KGlucHV0KSAqLwogICAgc3RydWN0IG1pX3BhcnNlICpjb21tYW5kOwogIH07 CiAgCi0tLSA3Myw4OCAtLS0tCiAgICB9OwogIAogIC8qIFRoaXMgc3RydWN0 dXJlIGlzIHVzZWQgdG8gcGFzcyBpbmZvcm1hdGlvbiBmcm9tIGNhcHR1cmVk X21pX2V4ZWN1dGVfY29tbWFuZAohICAgIHRvIG1pX2V4ZWN1dGVfY29tbWFu ZC4gICovCiAgc3RydWN0IGNhcHR1cmVkX21pX2V4ZWN1dGVfY29tbWFuZF9h cmdzCiAgewohICAgLyogVGhpcyByZXR1cm4gcmVzdWx0IG9mIHRoZSBNSSBj b21tYW5kIChvdXRwdXQpLiAgKi8KICAgIGVudW0gbWlfY21kX3Jlc3VsdCBy YzsKICAKISAgIC8qIFdoYXQgYWN0aW9uIHRvIHBlcmZvcm0gd2hlbiB0aGUg Y2FsbCBpcyBmaW5pc2hlZCAob3V0cHV0KS4gICovCiAgICBlbnVtIGNhcHR1 cmVkX21pX2V4ZWN1dGVfY29tbWFuZF9hY3Rpb25zIGFjdGlvbjsKICAKISAg IC8qIFRoZSBjb21tYW5kIGNvbnRleHQgdG8gYmUgZXhlY3V0ZWQgKGlucHV0 KS4gICovCiAgICBzdHJ1Y3QgbWlfcGFyc2UgKmNvbW1hbmQ7CiAgfTsKICAK KioqKioqKioqKioqKioqIHN0YXRpYyBzdHJ1Y3QgbWlfdGltZXN0YW1wICpj dXJyZW50X2NvbW0KKioqIDk1LDEwMSAqKioqCiAgCiAgc3RhdGljIGludCBk b190aW1pbmdzID0gMDsKICAKISAvKiBUaGUgdG9rZW4gb2YgdGhlIGxhc3Qg YXN5bmNocm9ub3VzIGNvbW1hbmQgKi8KICBzdGF0aWMgY2hhciAqbGFzdF9h c3luY19jb21tYW5kOwogIHN0YXRpYyBjaGFyICpwcmV2aW91c19hc3luY19j b21tYW5kOwogIGNoYXIgKm1pX2Vycm9yX21lc3NhZ2U7Ci0tLSA5NSwxMDEg LS0tLQogIAogIHN0YXRpYyBpbnQgZG9fdGltaW5ncyA9IDA7CiAgCiEgLyog VGhlIHRva2VuIG9mIHRoZSBsYXN0IGFzeW5jaHJvbm91cyBjb21tYW5kLiAg Ki8KICBzdGF0aWMgY2hhciAqbGFzdF9hc3luY19jb21tYW5kOwogIHN0YXRp YyBjaGFyICpwcmV2aW91c19hc3luY19jb21tYW5kOwogIGNoYXIgKm1pX2Vy cm9yX21lc3NhZ2U7CioqKioqKioqKioqKioqKiBzdGF0aWMgdm9pZCBtaV9l eGVjX2FzeW5jX2NsaV9jbWRfY29udGluCioqKiAxMTMsMTIxICoqKioKICBz dGF0aWMgaW50IHJlZ2lzdGVyX2NoYW5nZWRfcCAoaW50IHJlZ251bSk7CiAg c3RhdGljIGludCBnZXRfcmVnaXN0ZXIgKGludCByZWdudW0sIGludCBmb3Jt YXQpOwogIAohIC8qIENvbW1hbmQgaW1wbGVtZW50YXRpb25zLiBGSVhNRTog SXMgdGhpcyBsaWJnZGI/IE5vLiAgVGhpcyBpcyB0aGUgTUkKICAgICBsYXll ciB0aGF0IGNhbGxzIGxpYmdkYi4gIEFueSBvcGVyYXRpb24gdXNlZCBpbiB0 aGUgYmVsb3cgc2hvdWxkIGJlCiEgICAgZm9ybWFsaXplZC4gKi8KICAKICBz dGF0aWMgdm9pZCB0aW1lc3RhbXAgKHN0cnVjdCBtaV90aW1lc3RhbXAgKnR2 KTsKICAKLS0tIDExMywxMjEgLS0tLQogIHN0YXRpYyBpbnQgcmVnaXN0ZXJf Y2hhbmdlZF9wIChpbnQgcmVnbnVtKTsKICBzdGF0aWMgaW50IGdldF9yZWdp c3RlciAoaW50IHJlZ251bSwgaW50IGZvcm1hdCk7CiAgCiEgLyogQ29tbWFu ZCBpbXBsZW1lbnRhdGlvbnMuICBGSVhNRTogSXMgdGhpcyBsaWJnZGI/ICBO by4gIFRoaXMgaXMgdGhlIE1JCiAgICAgbGF5ZXIgdGhhdCBjYWxscyBsaWJn ZGIuICBBbnkgb3BlcmF0aW9uIHVzZWQgaW4gdGhlIGJlbG93IHNob3VsZCBi ZQohICAgIGZvcm1hbGl6ZWQuICAqLwogIAogIHN0YXRpYyB2b2lkIHRpbWVz dGFtcCAoc3RydWN0IG1pX3RpbWVzdGFtcCAqdHYpOwogIAoqKioqKioqKioq KioqKiogc3RhdGljIHZvaWQgcHJpbnRfZGlmZiAoc3RydWN0IG1pX3RpbWVz dAoqKiogMTI1LDEzNiAqKioqCiAgZW51bSBtaV9jbWRfcmVzdWx0CiAgbWlf Y21kX2dkYl9leGl0IChjaGFyICpjb21tYW5kLCBjaGFyICoqYXJndiwgaW50 IGFyZ2MpCiAgewohICAgLyogV2UgaGF2ZSB0byBwcmludCBldmVyeXRoaW5n IHJpZ2h0IGhlcmUgYmVjYXVzZSB3ZSBuZXZlciByZXR1cm4gKi8KICAgIGlm IChsYXN0X2FzeW5jX2NvbW1hbmQpCiAgICAgIGZwdXRzX3VuZmlsdGVyZWQg KGxhc3RfYXN5bmNfY29tbWFuZCwgcmF3X3N0ZG91dCk7CiAgICBmcHV0c191 bmZpbHRlcmVkICgiXmV4aXRcbiIsIHJhd19zdGRvdXQpOwogICAgbWlfb3V0 X3B1dCAodWlvdXQsIHJhd19zdGRvdXQpOwohICAgLyogRklYTUU6IFRoZSBm dW5jdGlvbiBjYWxsZWQgaXMgbm90IHlldCBhIGZvcm1hbCBsaWJnZGIgZnVu Y3Rpb24gKi8KICAgIHF1aXRfZm9yY2UgKE5VTEwsIEZST01fVFRZKTsKICAg IHJldHVybiBNSV9DTURfRE9ORTsKICB9Ci0tLSAxMjUsMTM2IC0tLS0KICBl bnVtIG1pX2NtZF9yZXN1bHQKICBtaV9jbWRfZ2RiX2V4aXQgKGNoYXIgKmNv bW1hbmQsIGNoYXIgKiphcmd2LCBpbnQgYXJnYykKICB7CiEgICAvKiBXZSBo YXZlIHRvIHByaW50IGV2ZXJ5dGhpbmcgcmlnaHQgaGVyZSBiZWNhdXNlIHdl IG5ldmVyIHJldHVybi4gICovCiAgICBpZiAobGFzdF9hc3luY19jb21tYW5k KQogICAgICBmcHV0c191bmZpbHRlcmVkIChsYXN0X2FzeW5jX2NvbW1hbmQs IHJhd19zdGRvdXQpOwogICAgZnB1dHNfdW5maWx0ZXJlZCAoIl5leGl0XG4i LCByYXdfc3Rkb3V0KTsKICAgIG1pX291dF9wdXQgKHVpb3V0LCByYXdfc3Rk b3V0KTsKISAgIC8qIEZJWE1FOiBUaGUgZnVuY3Rpb24gY2FsbGVkIGlzIG5v dCB5ZXQgYSBmb3JtYWwgbGliZ2RiIGZ1bmN0aW9uLiAgKi8KICAgIHF1aXRf Zm9yY2UgKE5VTEwsIEZST01fVFRZKTsKICAgIHJldHVybiBNSV9DTURfRE9O RTsKICB9CioqKioqKioqKioqKioqKiBtaV9jbWRfZ2RiX2V4aXQgKGNoYXIg KmNvbW1hbmQsIGNoYXIgKiphCioqKiAxMzgsMTg2ICoqKioKICBlbnVtIG1p X2NtZF9yZXN1bHQKICBtaV9jbWRfZXhlY19ydW4gKGNoYXIgKmFyZ3MsIGlu dCBmcm9tX3R0eSkKICB7CiEgICAvKiBGSVhNRTogU2hvdWxkIGNhbGwgYSBs aWJnZGIgZnVuY3Rpb24sIG5vdCBhIGNsaSB3cmFwcGVyICovCiAgICByZXR1 cm4gbWlfZXhlY3V0ZV9hc3luY19jbGlfY29tbWFuZCAoInJ1biIsIGFyZ3Ms IGZyb21fdHR5KTsKICB9CiAgCiAgZW51bSBtaV9jbWRfcmVzdWx0CiAgbWlf Y21kX2V4ZWNfbmV4dCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQogIHsK ISAgIC8qIEZJWE1FOiBTaG91bGQgY2FsbCBhIGxpYmdkYiBmdW5jdGlvbiwg bm90IGEgY2xpIHdyYXBwZXIgKi8KICAgIHJldHVybiBtaV9leGVjdXRlX2Fz eW5jX2NsaV9jb21tYW5kICgibmV4dCIsIGFyZ3MsIGZyb21fdHR5KTsKICB9 CiAgCiAgZW51bSBtaV9jbWRfcmVzdWx0CiAgbWlfY21kX2V4ZWNfbmV4dF9p bnN0cnVjdGlvbiAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQogIHsKISAg IC8qIEZJWE1FOiBTaG91bGQgY2FsbCBhIGxpYmdkYiBmdW5jdGlvbiwgbm90 IGEgY2xpIHdyYXBwZXIgKi8KICAgIHJldHVybiBtaV9leGVjdXRlX2FzeW5j X2NsaV9jb21tYW5kICgibmV4dGkiLCBhcmdzLCBmcm9tX3R0eSk7CiAgfQog IAogIGVudW0gbWlfY21kX3Jlc3VsdAogIG1pX2NtZF9leGVjX3N0ZXAgKGNo YXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKICB7CiEgICAvKiBGSVhNRTogU2hv dWxkIGNhbGwgYSBsaWJnZGIgZnVuY3Rpb24sIG5vdCBhIGNsaSB3cmFwcGVy ICovCiAgICByZXR1cm4gbWlfZXhlY3V0ZV9hc3luY19jbGlfY29tbWFuZCAo InN0ZXAiLCBhcmdzLCBmcm9tX3R0eSk7CiAgfQogIAogIGVudW0gbWlfY21k X3Jlc3VsdAogIG1pX2NtZF9leGVjX3N0ZXBfaW5zdHJ1Y3Rpb24gKGNoYXIg KmFyZ3MsIGludCBmcm9tX3R0eSkKICB7CiEgICAvKiBGSVhNRTogU2hvdWxk IGNhbGwgYSBsaWJnZGIgZnVuY3Rpb24sIG5vdCBhIGNsaSB3cmFwcGVyICov CiAgICByZXR1cm4gbWlfZXhlY3V0ZV9hc3luY19jbGlfY29tbWFuZCAoInN0 ZXBpIiwgYXJncywgZnJvbV90dHkpOwogIH0KICAKICBlbnVtIG1pX2NtZF9y ZXN1bHQKICBtaV9jbWRfZXhlY19maW5pc2ggKGNoYXIgKmFyZ3MsIGludCBm cm9tX3R0eSkKICB7CiEgICAvKiBGSVhNRTogU2hvdWxkIGNhbGwgYSBsaWJn ZGIgZnVuY3Rpb24sIG5vdCBhIGNsaSB3cmFwcGVyICovCiAgICByZXR1cm4g bWlfZXhlY3V0ZV9hc3luY19jbGlfY29tbWFuZCAoImZpbmlzaCIsIGFyZ3Ms IGZyb21fdHR5KTsKICB9CiAgCiAgZW51bSBtaV9jbWRfcmVzdWx0CiAgbWlf Y21kX2V4ZWNfdW50aWwgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKICB7 CiEgICAvKiBGSVhNRTogU2hvdWxkIGNhbGwgYSBsaWJnZGIgZnVuY3Rpb24s IG5vdCBhIGNsaSB3cmFwcGVyICovCiAgICByZXR1cm4gbWlfZXhlY3V0ZV9h c3luY19jbGlfY29tbWFuZCAoInVudGlsIiwgYXJncywgZnJvbV90dHkpOwog IH0KICAKLS0tIDEzOCwxODYgLS0tLQogIGVudW0gbWlfY21kX3Jlc3VsdAog IG1pX2NtZF9leGVjX3J1biAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQog IHsKISAgIC8qIEZJWE1FOiBTaG91bGQgY2FsbCBhIGxpYmdkYiBmdW5jdGlv biwgbm90IGEgY2xpIHdyYXBwZXIuICAqLwogICAgcmV0dXJuIG1pX2V4ZWN1 dGVfYXN5bmNfY2xpX2NvbW1hbmQgKCJydW4iLCBhcmdzLCBmcm9tX3R0eSk7 CiAgfQogIAogIGVudW0gbWlfY21kX3Jlc3VsdAogIG1pX2NtZF9leGVjX25l eHQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKICB7CiEgICAvKiBGSVhN RTogU2hvdWxkIGNhbGwgYSBsaWJnZGIgZnVuY3Rpb24sIG5vdCBhIGNsaSB3 cmFwcGVyLiAgKi8KICAgIHJldHVybiBtaV9leGVjdXRlX2FzeW5jX2NsaV9j b21tYW5kICgibmV4dCIsIGFyZ3MsIGZyb21fdHR5KTsKICB9CiAgCiAgZW51 bSBtaV9jbWRfcmVzdWx0CiAgbWlfY21kX2V4ZWNfbmV4dF9pbnN0cnVjdGlv biAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQogIHsKISAgIC8qIEZJWE1F OiBTaG91bGQgY2FsbCBhIGxpYmdkYiBmdW5jdGlvbiwgbm90IGEgY2xpIHdy YXBwZXIuICAqLwogICAgcmV0dXJuIG1pX2V4ZWN1dGVfYXN5bmNfY2xpX2Nv bW1hbmQgKCJuZXh0aSIsIGFyZ3MsIGZyb21fdHR5KTsKICB9CiAgCiAgZW51 bSBtaV9jbWRfcmVzdWx0CiAgbWlfY21kX2V4ZWNfc3RlcCAoY2hhciAqYXJn cywgaW50IGZyb21fdHR5KQogIHsKISAgIC8qIEZJWE1FOiBTaG91bGQgY2Fs bCBhIGxpYmdkYiBmdW5jdGlvbiwgbm90IGEgY2xpIHdyYXBwZXIuICAqLwog ICAgcmV0dXJuIG1pX2V4ZWN1dGVfYXN5bmNfY2xpX2NvbW1hbmQgKCJzdGVw IiwgYXJncywgZnJvbV90dHkpOwogIH0KICAKICBlbnVtIG1pX2NtZF9yZXN1 bHQKICBtaV9jbWRfZXhlY19zdGVwX2luc3RydWN0aW9uIChjaGFyICphcmdz LCBpbnQgZnJvbV90dHkpCiAgewohICAgLyogRklYTUU6IFNob3VsZCBjYWxs IGEgbGliZ2RiIGZ1bmN0aW9uLCBub3QgYSBjbGkgd3JhcHBlci4gICovCiAg ICByZXR1cm4gbWlfZXhlY3V0ZV9hc3luY19jbGlfY29tbWFuZCAoInN0ZXBp IiwgYXJncywgZnJvbV90dHkpOwogIH0KICAKICBlbnVtIG1pX2NtZF9yZXN1 bHQKICBtaV9jbWRfZXhlY19maW5pc2ggKGNoYXIgKmFyZ3MsIGludCBmcm9t X3R0eSkKICB7CiEgICAvKiBGSVhNRTogU2hvdWxkIGNhbGwgYSBsaWJnZGIg ZnVuY3Rpb24sIG5vdCBhIGNsaSB3cmFwcGVyLiAgKi8KICAgIHJldHVybiBt aV9leGVjdXRlX2FzeW5jX2NsaV9jb21tYW5kICgiZmluaXNoIiwgYXJncywg ZnJvbV90dHkpOwogIH0KICAKICBlbnVtIG1pX2NtZF9yZXN1bHQKICBtaV9j bWRfZXhlY191bnRpbCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQogIHsK ISAgIC8qIEZJWE1FOiBTaG91bGQgY2FsbCBhIGxpYmdkYiBmdW5jdGlvbiwg bm90IGEgY2xpIHdyYXBwZXIuICAqLwogICAgcmV0dXJuIG1pX2V4ZWN1dGVf YXN5bmNfY2xpX2NvbW1hbmQgKCJ1bnRpbCIsIGFyZ3MsIGZyb21fdHR5KTsK ICB9CiAgCioqKioqKioqKioqKioqKiBtaV9jbWRfZXhlY19yZXR1cm4gKGNo YXIgKmFyZ3MsIGludCBmcm9tCioqKiAxOTEsMjA1ICoqKioKICAgICAgIHNw ZWNpZmllZCBudW1iZXIgb2YgZnJhbWVzLiAqLwogICAgaWYgKCphcmdzKQog ICAgICAvKiBDYWxsIHJldHVybl9jb21tYW5kIHdpdGggZnJvbV90dHkgYXJn dW1lbnQgZXF1YWwgdG8gMCBzbyBhcyB0bwohICAgICAgICBhdm9pZCBiZWlu ZyBxdWVyaWVkLiAqLwogICAgICByZXR1cm5fY29tbWFuZCAoYXJncywgMCk7 CiAgICBlbHNlCiAgICAgIC8qIENhbGwgcmV0dXJuX2NvbW1hbmQgd2l0aCBm cm9tX3R0eSBhcmd1bWVudCBlcXVhbCB0byAwIHNvIGFzIHRvCiEgICAgICAg IGF2b2lkIGJlaW5nIHF1ZXJpZWQuICovCiAgICAgIHJldHVybl9jb21tYW5k IChOVUxMLCAwKTsKICAKICAgIC8qIEJlY2F1c2Ugd2UgaGF2ZSBjYWxsZWQg cmV0dXJuX2NvbW1hbmQgd2l0aCBmcm9tX3R0eSA9IDAsIHdlIG5lZWQKISAg ICAgIHRvIHByaW50IHRoZSBmcmFtZSBoZXJlLiAqLwogICAgcHJpbnRfc3Rh Y2tfZnJhbWUgKGdldF9zZWxlY3RlZF9mcmFtZSAoTlVMTCksIDEsIExPQ19B TkRfQUREUkVTUyk7CiAgCiAgICByZXR1cm4gTUlfQ01EX0RPTkU7Ci0tLSAx OTEsMjA1IC0tLS0KICAgICAgIHNwZWNpZmllZCBudW1iZXIgb2YgZnJhbWVz LiAqLwogICAgaWYgKCphcmdzKQogICAgICAvKiBDYWxsIHJldHVybl9jb21t YW5kIHdpdGggZnJvbV90dHkgYXJndW1lbnQgZXF1YWwgdG8gMCBzbyBhcyB0 bwohICAgICAgICBhdm9pZCBiZWluZyBxdWVyaWVkLiAgKi8KICAgICAgcmV0 dXJuX2NvbW1hbmQgKGFyZ3MsIDApOwogICAgZWxzZQogICAgICAvKiBDYWxs IHJldHVybl9jb21tYW5kIHdpdGggZnJvbV90dHkgYXJndW1lbnQgZXF1YWwg dG8gMCBzbyBhcyB0bwohICAgICAgICBhdm9pZCBiZWluZyBxdWVyaWVkLiAg Ki8KICAgICAgcmV0dXJuX2NvbW1hbmQgKE5VTEwsIDApOwogIAogICAgLyog QmVjYXVzZSB3ZSBoYXZlIGNhbGxlZCByZXR1cm5fY29tbWFuZCB3aXRoIGZy b21fdHR5ID0gMCwgd2UgbmVlZAohICAgICAgdG8gcHJpbnQgdGhlIGZyYW1l IGhlcmUuICAqLwogICAgcHJpbnRfc3RhY2tfZnJhbWUgKGdldF9zZWxlY3Rl ZF9mcmFtZSAoTlVMTCksIDEsIExPQ19BTkRfQUREUkVTUyk7CiAgCiAgICBy ZXR1cm4gTUlfQ01EX0RPTkU7CioqKioqKioqKioqKioqKiBtaV9jbWRfZXhl Y19yZXR1cm4gKGNoYXIgKmFyZ3MsIGludCBmcm9tCioqKiAyMDgsMjIyICoq KioKICBlbnVtIG1pX2NtZF9yZXN1bHQKICBtaV9jbWRfZXhlY19jb250aW51 ZSAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQogIHsKISAgIC8qIEZJWE1F OiBTaG91bGQgY2FsbCBhIGxpYmdkYiBmdW5jdGlvbiwgbm90IGEgY2xpIHdy YXBwZXIgKi8KICAgIHJldHVybiBtaV9leGVjdXRlX2FzeW5jX2NsaV9jb21t YW5kICgiY29udGludWUiLCBhcmdzLCBmcm9tX3R0eSk7CiAgfQogIAohIC8q IEludGVycnVwdCB0aGUgZXhlY3V0aW9uIG9mIHRoZSB0YXJnZXQuIE5vdGUg aG93IHdlIG11c3QgcGxheSBhcm91bmQKICAgICB3aXRoIHRoZSB0b2tlbiB2 YXJpYWJsZXMsIGluIG9yZGVyIHRvIGRpc3BsYXkgdGhlIGN1cnJlbnQgdG9r ZW4gaW4KICAgICB0aGUgcmVzdWx0IG9mIHRoZSBpbnRlcnJ1cHQgY29tbWFu ZCwgYW5kIHRoZSBwcmV2aW91cyBleGVjdXRpb24KISAgICB0b2tlbiB3aGVu IHRoZSB0YXJnZXQgZmluYWxseSBzdG9wcy4gU2VlIGNvbW1lbnRzIGluCiEg ICAgbWlfY21kX2V4ZWN1dGUuICovCiAgZW51bSBtaV9jbWRfcmVzdWx0CiAg bWlfY21kX2V4ZWNfaW50ZXJydXB0IChjaGFyICphcmdzLCBpbnQgZnJvbV90 dHkpCiAgewotLS0gMjA4LDIyMiAtLS0tCiAgZW51bSBtaV9jbWRfcmVzdWx0 CiAgbWlfY21kX2V4ZWNfY29udGludWUgKGNoYXIgKmFyZ3MsIGludCBmcm9t X3R0eSkKICB7CiEgICAvKiBGSVhNRTogU2hvdWxkIGNhbGwgYSBsaWJnZGIg ZnVuY3Rpb24sIG5vdCBhIGNsaSB3cmFwcGVyLiAgKi8KICAgIHJldHVybiBt aV9leGVjdXRlX2FzeW5jX2NsaV9jb21tYW5kICgiY29udGludWUiLCBhcmdz LCBmcm9tX3R0eSk7CiAgfQogIAohIC8qIEludGVycnVwdCB0aGUgZXhlY3V0 aW9uIG9mIHRoZSB0YXJnZXQuICBOb3RlIGhvdyB3ZSBtdXN0IHBsYXkgYXJv dW5kCiAgICAgd2l0aCB0aGUgdG9rZW4gdmFyaWFibGVzLCBpbiBvcmRlciB0 byBkaXNwbGF5IHRoZSBjdXJyZW50IHRva2VuIGluCiAgICAgdGhlIHJlc3Vs dCBvZiB0aGUgaW50ZXJydXB0IGNvbW1hbmQsIGFuZCB0aGUgcHJldmlvdXMg ZXhlY3V0aW9uCiEgICAgdG9rZW4gd2hlbiB0aGUgdGFyZ2V0IGZpbmFsbHkg c3RvcHMuICBTZWUgY29tbWVudHMgaW4KISAgICBtaV9jbWRfZXhlY3V0ZS4g ICovCiAgZW51bSBtaV9jbWRfcmVzdWx0CiAgbWlfY21kX2V4ZWNfaW50ZXJy dXB0IChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCiAgewoqKioqKioqKioq KioqKiogbWlfY21kX3RocmVhZF9zZWxlY3QgKGNoYXIgKmNvbW1hbmQsIGNo YQoqKiogMjU0LDI2MCAqKioqCiAgICAgIHJjID0gZ2RiX3RocmVhZF9zZWxl Y3QgKHVpb3V0LCBhcmd2WzBdLCAmbWlfZXJyb3JfbWVzc2FnZSk7CiAgCiAg ICAvKiBSQyBpcyBlbnVtIGdkYl9yYyBpZiBpdCBpcyBzdWNjZXNzZnVsICg+ PTApCiEgICAgICBlbnVtIHJldHVybl9yZWFzb24gaWYgbm90ICg8MCkuICov CiAgICBpZiAoKGludCkgcmMgPCAwICYmIChlbnVtIHJldHVybl9yZWFzb24p IHJjID09IFJFVFVSTl9FUlJPUikKICAgICAgcmV0dXJuIE1JX0NNRF9FUlJP UjsKICAgIGVsc2UgaWYgKChpbnQpIHJjID49IDAgJiYgcmMgPT0gR0RCX1JD X0ZBSUwpCi0tLSAyNTQsMjYwIC0tLS0KICAgICAgcmMgPSBnZGJfdGhyZWFk X3NlbGVjdCAodWlvdXQsIGFyZ3ZbMF0sICZtaV9lcnJvcl9tZXNzYWdlKTsK ICAKICAgIC8qIFJDIGlzIGVudW0gZ2RiX3JjIGlmIGl0IGlzIHN1Y2Nlc3Nm dWwgKD49MCkKISAgICAgIGVudW0gcmV0dXJuX3JlYXNvbiBpZiBub3QgKDww KS4gICovCiAgICBpZiAoKGludCkgcmMgPCAwICYmIChlbnVtIHJldHVybl9y ZWFzb24pIHJjID09IFJFVFVSTl9FUlJPUikKICAgICAgcmV0dXJuIE1JX0NN RF9FUlJPUjsKICAgIGVsc2UgaWYgKChpbnQpIHJjID49IDAgJiYgcmMgPT0g R0RCX1JDX0ZBSUwpCioqKioqKioqKioqKioqKiBtaV9jbWRfZGF0YV9saXN0 X3JlZ2lzdGVyX25hbWVzIChjaGFyICpjCioqKiAyOTksMzA1ICoqKioKICAK ICAgIGNsZWFudXAgPSBtYWtlX2NsZWFudXBfdWlfb3V0X2xpc3RfYmVnaW5f ZW5kICh1aW91dCwgInJlZ2lzdGVyLW5hbWVzIik7CiAgCiEgICBpZiAoYXJn YyA9PSAwKQkJLyogTm8gYXJncywganVzdCBkbyBhbGwgdGhlIHJlZ3MgKi8K ICAgICAgewogICAgICAgIGZvciAocmVnbnVtID0gMDsKICAJICAgcmVnbnVt IDwgbnVtcmVnczsKLS0tIDI5OSwzMDUgLS0tLQogIAogICAgY2xlYW51cCA9 IG1ha2VfY2xlYW51cF91aV9vdXRfbGlzdF9iZWdpbl9lbmQgKHVpb3V0LCAi cmVnaXN0ZXItbmFtZXMiKTsKICAKISAgIGlmIChhcmdjID09IDApCQkvKiBO byBhcmdzLCBqdXN0IGRvIGFsbCB0aGUgcmVncy4gICovCiAgICAgIHsKICAg ICAgICBmb3IgKHJlZ251bSA9IDA7CiAgCSAgIHJlZ251bSA8IG51bXJlZ3M7 CioqKioqKioqKioqKioqKiBtaV9jbWRfZGF0YV9saXN0X3JlZ2lzdGVyX25h bWVzIChjaGFyICpjCioqKiAzMTMsMzE5ICoqKioKICAJfQogICAgICB9CiAg CiEgICAvKiBFbHNlLCBsaXN0IG9mIHJlZ2lzdGVyICNzLCBqdXN0IGRvIGxp c3RlZCByZWdzICovCiAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKQog ICAgICB7CiAgICAgICAgcmVnbnVtID0gYXRvaSAoYXJndltpXSk7Ci0tLSAz MTMsMzE5IC0tLS0KICAJfQogICAgICB9CiAgCiEgICAvKiBFbHNlLCBsaXN0 IG9mIHJlZ2lzdGVyICNzLCBqdXN0IGRvIGxpc3RlZCByZWdzLiAgKi8KICAg IGZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspCiAgICAgIHsKICAgICAgICBy ZWdudW0gPSBhdG9pIChhcmd2W2ldKTsKKioqKioqKioqKioqKioqIG1pX2Nt ZF9kYXRhX2xpc3RfY2hhbmdlZF9yZWdpc3RlcnMgKGNoYXIKKioqIDM1MCwz NTYgKioqKgogIAogICAgY2xlYW51cCA9IG1ha2VfY2xlYW51cF91aV9vdXRf bGlzdF9iZWdpbl9lbmQgKHVpb3V0LCAiY2hhbmdlZC1yZWdpc3RlcnMiKTsK ICAKISAgIGlmIChhcmdjID09IDApCQkvKiBObyBhcmdzLCBqdXN0IGRvIGFs bCB0aGUgcmVncyAqLwogICAgICB7CiAgICAgICAgZm9yIChyZWdudW0gPSAw OwogIAkgICByZWdudW0gPCBudW1yZWdzOwotLS0gMzUwLDM1NiAtLS0tCiAg CiAgICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwX3VpX291dF9saXN0X2JlZ2lu X2VuZCAodWlvdXQsICJjaGFuZ2VkLXJlZ2lzdGVycyIpOwogIAohICAgaWYg KGFyZ2MgPT0gMCkJCS8qIE5vIGFyZ3MsIGp1c3QgZG8gYWxsIHRoZSByZWdz LiAgKi8KICAgICAgewogICAgICAgIGZvciAocmVnbnVtID0gMDsKICAJICAg cmVnbnVtIDwgbnVtcmVnczsKKioqKioqKioqKioqKioqIG1pX2NtZF9kYXRh X2xpc3RfY2hhbmdlZF9yZWdpc3RlcnMgKGNoYXIKKioqIDM3MSwzNzcgKioq KgogIAl9CiAgICAgIH0KICAKISAgIC8qIEVsc2UsIGxpc3Qgb2YgcmVnaXN0 ZXIgI3MsIGp1c3QgZG8gbGlzdGVkIHJlZ3MgKi8KICAgIGZvciAoaSA9IDA7 IGkgPCBhcmdjOyBpKyspCiAgICAgIHsKICAgICAgICByZWdudW0gPSBhdG9p IChhcmd2W2ldKTsKLS0tIDM3MSwzNzcgLS0tLQogIAl9CiAgICAgIH0KICAK ISAgIC8qIEVsc2UsIGxpc3Qgb2YgcmVnaXN0ZXIgI3MsIGp1c3QgZG8gbGlz dGVkIHJlZ3MuICAqLwogICAgZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykK ICAgICAgewogICAgICAgIHJlZ251bSA9IGF0b2kgKGFyZ3ZbaV0pOwoqKioq KioqKioqKioqKiogcmVnaXN0ZXJfY2hhbmdlZF9wIChpbnQgcmVnbnVtKQoq KiogNDE0LDQyMCAqKioqCiAgCSAgICAgIHJlZ2lzdGVyX3NpemUgKGN1cnJl bnRfZ2RiYXJjaCwgcmVnbnVtKSkgPT0gMCkKICAgICAgcmV0dXJuIDA7CiAg CiEgICAvKiBGb3VuZCBhIGNoYW5nZWQgcmVnaXN0ZXIuIFJldHVybiAxLiAq LwogIAogICAgbWVtY3B5ICgmb2xkX3JlZ3NbREVQUkVDQVRFRF9SRUdJU1RF Ul9CWVRFIChyZWdudW0pXSwgcmF3X2J1ZmZlciwKICAJICByZWdpc3Rlcl9z aXplIChjdXJyZW50X2dkYmFyY2gsIHJlZ251bSkpOwotLS0gNDE0LDQyMCAt LS0tCiAgCSAgICAgIHJlZ2lzdGVyX3NpemUgKGN1cnJlbnRfZ2RiYXJjaCwg cmVnbnVtKSkgPT0gMCkKICAgICAgcmV0dXJuIDA7CiAgCiEgICAvKiBGb3Vu ZCBhIGNoYW5nZWQgcmVnaXN0ZXIuICBSZXR1cm4gMS4gICovCiAgCiAgICBt ZW1jcHkgKCZvbGRfcmVnc1tERVBSRUNBVEVEX1JFR0lTVEVSX0JZVEUgKHJl Z251bSldLCByYXdfYnVmZmVyLAogIAkgIHJlZ2lzdGVyX3NpemUgKGN1cnJl bnRfZ2RiYXJjaCwgcmVnbnVtKSk7CioqKioqKioqKioqKioqKiByZWdpc3Rl cl9jaGFuZ2VkX3AgKGludCByZWdudW0pCioqKiA0MjIsNDM0ICoqKioKICAg IHJldHVybiAxOwogIH0KICAKISAvKiBSZXR1cm4gYSBsaXN0IG9mIHJlZ2lz dGVyIG51bWJlciBhbmQgdmFsdWUgcGFpcnMuIFRoZSB2YWxpZAogICAgIGFy Z3VtZW50cyBleHBlY3RlZCBhcmU6IGEgbGV0dGVyIGluZGljYXRpbmcgdGhl IGZvcm1hdCBpbiB3aGljaCB0bwohICAgIGRpc3BsYXkgdGhlIHJlZ2lzdGVy cyBjb250ZW50cy4gVGhpcyBjYW4gYmUgb25lIG9mOiB4IChoZXhhZGVjaW1h bCksIGQKICAgICAoZGVjaW1hbCksIE4gKG5hdHVyYWwpLCB0IChiaW5hcnkp LCBvIChvY3RhbCksIHIgKHJhdykuICBBZnRlciB0aGUKICAgICBmb3JtYXQg YXJndW1ldG4gdGhlcmUgY2FuIGJlIGEgc2VxdWVuY2Ugb2YgbnVtYmVycywg aW5kaWNhdGluZyB3aGljaAohICAgIHJlZ2lzdGVycyB0byBmZXRjaCB0aGUg Y29udGVudCBvZi4gSWYgdGhlIGZvcm1hdCBpcyB0aGUgb25seSBhcmd1bWVu dCwKISAgICBhIGxpc3Qgb2YgYWxsIHRoZSByZWdpc3RlcnMgd2l0aCB0aGVp ciB2YWx1ZXMgaXMgcmV0dXJuZWQuICovCiAgZW51bSBtaV9jbWRfcmVzdWx0 CiAgbWlfY21kX2RhdGFfbGlzdF9yZWdpc3Rlcl92YWx1ZXMgKGNoYXIgKmNv bW1hbmQsIGNoYXIgKiphcmd2LCBpbnQgYXJnYykKICB7Ci0tLSA0MjIsNDM0 IC0tLS0KICAgIHJldHVybiAxOwogIH0KICAKISAvKiBSZXR1cm4gYSBsaXN0 IG9mIHJlZ2lzdGVyIG51bWJlciBhbmQgdmFsdWUgcGFpcnMuICBUaGUgdmFs aWQKICAgICBhcmd1bWVudHMgZXhwZWN0ZWQgYXJlOiBhIGxldHRlciBpbmRp Y2F0aW5nIHRoZSBmb3JtYXQgaW4gd2hpY2ggdG8KISAgICBkaXNwbGF5IHRo ZSByZWdpc3RlcnMgY29udGVudHMuICBUaGlzIGNhbiBiZSBvbmUgb2Y6IHgg KGhleGFkZWNpbWFsKSwgZAogICAgIChkZWNpbWFsKSwgTiAobmF0dXJhbCks IHQgKGJpbmFyeSksIG8gKG9jdGFsKSwgciAocmF3KS4gIEFmdGVyIHRoZQog ICAgIGZvcm1hdCBhcmd1bWV0biB0aGVyZSBjYW4gYmUgYSBzZXF1ZW5jZSBv ZiBudW1iZXJzLCBpbmRpY2F0aW5nIHdoaWNoCiEgICAgcmVnaXN0ZXJzIHRv IGZldGNoIHRoZSBjb250ZW50IG9mLiAgSWYgdGhlIGZvcm1hdCBpcyB0aGUg b25seSBhcmd1bWVudCwKISAgICBhIGxpc3Qgb2YgYWxsIHRoZSByZWdpc3Rl cnMgd2l0aCB0aGVpciB2YWx1ZXMgaXMgcmV0dXJuZWQuICAqLwogIGVudW0g bWlfY21kX3Jlc3VsdAogIG1pX2NtZF9kYXRhX2xpc3RfcmVnaXN0ZXJfdmFs dWVzIChjaGFyICpjb21tYW5kLCBjaGFyICoqYXJndiwgaW50IGFyZ2MpCiAg ewoqKioqKioqKioqKioqKiogbWlfY21kX2RhdGFfbGlzdF9yZWdpc3Rlcl92 YWx1ZXMgKGNoYXIgKgoqKiogNDU0LDQ2MCAqKioqCiAgCiAgICBsaXN0X2Ns ZWFudXAgPSBtYWtlX2NsZWFudXBfdWlfb3V0X2xpc3RfYmVnaW5fZW5kICh1 aW91dCwgInJlZ2lzdGVyLXZhbHVlcyIpOwogIAohICAgaWYgKGFyZ2MgPT0g MSkJCS8qIE5vIGFyZ3MsIGJlc2lkZSB0aGUgZm9ybWF0OiBkbyBhbGwgdGhl IHJlZ3MgKi8KICAgICAgewogICAgICAgIGZvciAocmVnbnVtID0gMDsKICAJ ICAgcmVnbnVtIDwgbnVtcmVnczsKLS0tIDQ1NCw0NjAgLS0tLQogIAogICAg bGlzdF9jbGVhbnVwID0gbWFrZV9jbGVhbnVwX3VpX291dF9saXN0X2JlZ2lu X2VuZCAodWlvdXQsICJyZWdpc3Rlci12YWx1ZXMiKTsKICAKISAgIGlmIChh cmdjID09IDEpCSAgICAvKiBObyBhcmdzLCBiZXNpZGUgdGhlIGZvcm1hdDog ZG8gYWxsIHRoZSByZWdzLiAgKi8KICAgICAgewogICAgICAgIGZvciAocmVn bnVtID0gMDsKICAJICAgcmVnbnVtIDwgbnVtcmVnczsKKioqKioqKioqKioq KioqIG1pX2NtZF9kYXRhX2xpc3RfcmVnaXN0ZXJfdmFsdWVzIChjaGFyICoK KioqIDQ3NSw0ODEgKioqKgogIAl9CiAgICAgIH0KICAKISAgIC8qIEVsc2Us IGxpc3Qgb2YgcmVnaXN0ZXIgI3MsIGp1c3QgZG8gbGlzdGVkIHJlZ3MgKi8K ICAgIGZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspCiAgICAgIHsKICAgICAg ICByZWdudW0gPSBhdG9pIChhcmd2W2ldKTsKLS0tIDQ3NSw0ODEgLS0tLQog IAl9CiAgICAgIH0KICAKISAgIC8qIEVsc2UsIGxpc3Qgb2YgcmVnaXN0ZXIg I3MsIGp1c3QgZG8gbGlzdGVkIHJlZ3MuICAqLwogICAgZm9yIChpID0gMTsg aSA8IGFyZ2M7IGkrKykKICAgICAgewogICAgICAgIHJlZ251bSA9IGF0b2kg KGFyZ3ZbaV0pOwoqKioqKioqKioqKioqKiogbWlfY21kX2RhdGFfbGlzdF9y ZWdpc3Rlcl92YWx1ZXMgKGNoYXIgKgoqKiogNTA2LDUxMiAqKioqCiAgICBy ZXR1cm4gTUlfQ01EX0RPTkU7CiAgfQogIAohIC8qIE91dHB1dCBvbmUgcmVn aXN0ZXIncyBjb250ZW50cyBpbiB0aGUgZGVzaXJlZCBmb3JtYXQuICovCiAg c3RhdGljIGludAogIGdldF9yZWdpc3RlciAoaW50IHJlZ251bSwgaW50IGZv cm1hdCkKICB7Ci0tLSA1MDYsNTEyIC0tLS0KICAgIHJldHVybiBNSV9DTURf RE9ORTsKICB9CiAgCiEgLyogT3V0cHV0IG9uZSByZWdpc3RlcidzIGNvbnRl bnRzIGluIHRoZSBkZXNpcmVkIGZvcm1hdC4gICovCiAgc3RhdGljIGludAog IGdldF9yZWdpc3RlciAoaW50IHJlZ251bSwgaW50IGZvcm1hdCkKICB7Cioq KioqKioqKioqKioqKiBnZXRfcmVnaXN0ZXIgKGludCByZWdudW0sIGludCBm b3JtYXQpCioqKiA1NTksNTY1ICoqKioKICB9CiAgCiAgLyogV3JpdGUgZ2l2 ZW4gdmFsdWVzIGludG8gcmVnaXN0ZXJzLiBUaGUgcmVnaXN0ZXJzIGFuZCB2 YWx1ZXMgYXJlCiEgICAgZ2l2ZW4gYXMgcGFpcnMuIFRoZSBjb3JyZXNwb25k aW5nIE1JIGNvbW1hbmQgaXMgCiAgICAgLWRhdGEtd3JpdGUtcmVnaXN0ZXIt dmFsdWVzIDxmb3JtYXQ+IFs8cmVnbnVtMT4gPHZhbHVlMT4uLi48cmVnbnVt Tj4gPHZhbHVlTj5dKi8KICBlbnVtIG1pX2NtZF9yZXN1bHQKICBtaV9jbWRf ZGF0YV93cml0ZV9yZWdpc3Rlcl92YWx1ZXMgKGNoYXIgKmNvbW1hbmQsIGNo YXIgKiphcmd2LCBpbnQgYXJnYykKLS0tIDU1OSw1NjUgLS0tLQogIH0KICAK ICAvKiBXcml0ZSBnaXZlbiB2YWx1ZXMgaW50byByZWdpc3RlcnMuIFRoZSBy ZWdpc3RlcnMgYW5kIHZhbHVlcyBhcmUKISAgICBnaXZlbiBhcyBwYWlycy4g IFRoZSBjb3JyZXNwb25kaW5nIE1JIGNvbW1hbmQgaXMgCiAgICAgLWRhdGEt d3JpdGUtcmVnaXN0ZXItdmFsdWVzIDxmb3JtYXQ+IFs8cmVnbnVtMT4gPHZh bHVlMT4uLi48cmVnbnVtTj4gPHZhbHVlTj5dKi8KICBlbnVtIG1pX2NtZF9y ZXN1bHQKICBtaV9jbWRfZGF0YV93cml0ZV9yZWdpc3Rlcl92YWx1ZXMgKGNo YXIgKmNvbW1hbmQsIGNoYXIgKiphcmd2LCBpbnQgYXJnYykKKioqKioqKioq KioqKioqIG1pX2NtZF9kYXRhX3dyaXRlX3JlZ2lzdGVyX3ZhbHVlcyAoY2hh ciAKKioqIDYxMyw2MTkgKioqKgogIAkgIC8qIEdldCB0aGUgdmFsdWUgYXMg YSBudW1iZXIuICAqLwogIAkgIHZhbHVlID0gcGFyc2VfYW5kX2V2YWxfYWRk cmVzcyAoYXJndltpICsgMV0pOwogIAohIAkgIC8qIFdyaXRlIGl0IGRvd24g Ki8KICAJICByZWdjYWNoZV9jb29rZWRfd3JpdGVfc2lnbmVkIChjdXJyZW50 X3JlZ2NhY2hlLCByZWdudW0sIHZhbHVlKTsKICAJfQogICAgICAgIGVsc2UK LS0tIDYxMyw2MTkgLS0tLQogIAkgIC8qIEdldCB0aGUgdmFsdWUgYXMgYSBu dW1iZXIuICAqLwogIAkgIHZhbHVlID0gcGFyc2VfYW5kX2V2YWxfYWRkcmVz cyAoYXJndltpICsgMV0pOwogIAohIAkgIC8qIFdyaXRlIGl0IGRvd24uICAq LwogIAkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV9zaWduZWQgKGN1cnJlbnRf cmVnY2FjaGUsIHJlZ251bSwgdmFsdWUpOwogIAl9CiAgICAgICAgZWxzZQoq KioqKioqKioqKioqKiogbWlfY21kX2RhdGFfd3JpdGVfcmVnaXN0ZXJfdmFs dWVzIChjaGFyIAoqKiogNjI2LDYzNyAqKioqCiAgfQogIAogICNpZiAwCiEg LypUaGlzIGlzIGNvbW1lbnRlZCBvdXQgYmVjYXVzZSB3ZSBkZWNpZGVkIGl0 IHdhcyBub3QgdXNlZnVsLiBJIGxlYXZlCiEgICAgaXQsIGp1c3QgaW4gY2Fz ZS4gZXphbm5vbmk6MTk5OS0xMi0wOCAqLwogIAohIC8qIEFzc2lnbiBhIHZh bHVlIHRvIGEgdmFyaWFibGUuIFRoZSBleHByZXNzaW9uIGFyZ3VtZW50IG11 c3QgYmUgaW4KISAgICB0aGUgZm9ybSBBPTIgb3IgIkEgPSAyIiAoSS5lLiBp ZiB0aGVyZSBhcmUgc3BhY2VzIGl0IG5lZWRzIHRvIGJlCiEgICAgcXVvdGVk LiAqLwogIGVudW0gbWlfY21kX3Jlc3VsdAogIG1pX2NtZF9kYXRhX2Fzc2ln biAoY2hhciAqY29tbWFuZCwgY2hhciAqKmFyZ3YsIGludCBhcmdjKQogIHsK LS0tIDYyNiw2MzcgLS0tLQogIH0KICAKICAjaWYgMAohIC8qIFRoaXMgaXMg Y29tbWVudGVkIG91dCBiZWNhdXNlIHdlIGRlY2lkZWQgaXQgd2FzIG5vdCB1 c2VmdWwuICBJIGxlYXZlCiEgICAgaXQsIGp1c3QgaW4gY2FzZS4gIGV6YW5u b25pOjE5OTktMTItMDggKi8KICAKISAvKiBBc3NpZ24gYSB2YWx1ZSB0byBh IHZhcmlhYmxlLiAgVGhlIGV4cHJlc3Npb24gYXJndW1lbnQgbXVzdCBiZSBp bgohICAgIHRoZSBmb3JtIEE9MiBvciAiQSA9IDIiIGkuZS4gaWYgdGhlcmUg YXJlIHNwYWNlcyBpdCBuZWVkcyB0byBiZQohICAgIHF1b3RlZC4gICovCiAg ZW51bSBtaV9jbWRfcmVzdWx0CiAgbWlfY21kX2RhdGFfYXNzaWduIChjaGFy ICpjb21tYW5kLCBjaGFyICoqYXJndiwgaW50IGFyZ2MpCiAgewoqKioqKioq KioqKioqKiogbWlfY21kX2RhdGFfYXNzaWduIChjaGFyICpjb21tYW5kLCBj aGFyIAoqKiogNjQ0LDY1MSAqKioqCiAgICAgICAgcmV0dXJuIE1JX0NNRF9F UlJPUjsKICAgICAgfQogIAohICAgLyogTk9URSB3aGF0IGZvbGxvd3MgaXMg YSBjbG9uZSBvZiBzZXRfY29tbWFuZCgpLiBGSVhNRTogZXphbm5vbmkKISAg ICAgIDAxLTEyLTE5OTk6IE5lZWQgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0 aCB0aGlzIGZvciBsaWJnZGIgcHVycG9zZXMuICovCiAgCiAgICBleHByID0g cGFyc2VfZXhwcmVzc2lvbiAoYXJndlswXSk7CiAgICBvbGRfY2hhaW4gPSBt YWtlX2NsZWFudXAgKGZyZWVfY3VycmVudF9jb250ZW50cywgJmV4cHIpOwot LS0gNjQ0LDY1MSAtLS0tCiAgICAgICAgcmV0dXJuIE1JX0NNRF9FUlJPUjsK ICAgICAgfQogIAohICAgLyogTk9URSB3aGF0IGZvbGxvd3MgaXMgYSBjbG9u ZSBvZiBzZXRfY29tbWFuZCgpLiAgRklYTUU6IGV6YW5ub25pCiEgICAgICAw MS0xMi0xOTk5OiBOZWVkIHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggdGhp cyBmb3IgbGliZ2RiIHB1cnBvc2VzLiAgKi8KICAKICAgIGV4cHIgPSBwYXJz ZV9leHByZXNzaW9uIChhcmd2WzBdKTsKICAgIG9sZF9jaGFpbiA9IG1ha2Vf Y2xlYW51cCAoZnJlZV9jdXJyZW50X2NvbnRlbnRzLCAmZXhwcik7CioqKioq KioqKioqKioqKiBtaV9jbWRfZGF0YV9hc3NpZ24gKGNoYXIgKmNvbW1hbmQs IGNoYXIgCioqKiA2NTUsNjYzICoqKioKICB9CiAgI2VuZGlmCiAgCiEgLyog RXZhbHVhdGUgdGhlIHZhbHVlIG9mIHRoZSBhcmd1bWVudC4gVGhlIGFyZ3Vt ZW50IGlzIGFuCiAgICAgZXhwcmVzc2lvbi4gSWYgdGhlIGV4cHJlc3Npb24g Y29udGFpbnMgc3BhY2VzIGl0IG5lZWRzIHRvIGJlCiEgICAgaW5jbHVkZWQg aW4gZG91YmxlIHF1b3Rlcy4gKi8KICBlbnVtIG1pX2NtZF9yZXN1bHQKICBt aV9jbWRfZGF0YV9ldmFsdWF0ZV9leHByZXNzaW9uIChjaGFyICpjb21tYW5k LCBjaGFyICoqYXJndiwgaW50IGFyZ2MpCiAgewotLS0gNjU1LDY2MyAtLS0t CiAgfQogICNlbmRpZgogIAohIC8qIEV2YWx1YXRlIHRoZSB2YWx1ZSBvZiB0 aGUgYXJndW1lbnQuICBUaGUgYXJndW1lbnQgaXMgYW4KICAgICBleHByZXNz aW9uLiBJZiB0aGUgZXhwcmVzc2lvbiBjb250YWlucyBzcGFjZXMgaXQgbmVl ZHMgdG8gYmUKISAgICBpbmNsdWRlZCBpbiBkb3VibGUgcXVvdGVzLiAgKi8K ICBlbnVtIG1pX2NtZF9yZXN1bHQKICBtaV9jbWRfZGF0YV9ldmFsdWF0ZV9l eHByZXNzaW9uIChjaGFyICpjb21tYW5kLCBjaGFyICoqYXJndiwgaW50IGFy Z2MpCiAgewoqKioqKioqKioqKioqKiogbWlfY21kX2RhdGFfZXZhbHVhdGVf ZXhwcmVzc2lvbiAoY2hhciAqYwoqKiogNjgwLDY4NiAqKioqCiAgCiAgICB2 YWwgPSBldmFsdWF0ZV9leHByZXNzaW9uIChleHByKTsKICAKISAgIC8qIFBy aW50IHRoZSByZXN1bHQgb2YgdGhlIGV4cHJlc3Npb24gZXZhbHVhdGlvbi4g Ki8KICAgIHZhbF9wcmludCAodmFsdWVfdHlwZSAodmFsKSwgdmFsdWVfY29u dGVudHMgKHZhbCksCiAgCSAgICAgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0ICh2 YWwpLCBWQUxVRV9BRERSRVNTICh2YWwpLAogIAkgICAgIHN0Yi0+c3RyZWFt LCAwLCAwLCAwLCAwKTsKLS0tIDY4MCw2ODYgLS0tLQogIAogICAgdmFsID0g ZXZhbHVhdGVfZXhwcmVzc2lvbiAoZXhwcik7CiAgCiEgICAvKiBQcmludCB0 aGUgcmVzdWx0IG9mIHRoZSBleHByZXNzaW9uIGV2YWx1YXRpb24uICAqLwog ICAgdmFsX3ByaW50ICh2YWx1ZV90eXBlICh2YWwpLCB2YWx1ZV9jb250ZW50 cyAodmFsKSwKICAJICAgICB2YWx1ZV9lbWJlZGRlZF9vZmZzZXQgKHZhbCks IFZBTFVFX0FERFJFU1MgKHZhbCksCiAgCSAgICAgc3RiLT5zdHJlYW0sIDAs IDAsIDAsIDApOwoqKioqKioqKioqKioqKiogbWlfY21kX3RhcmdldF9kb3du bG9hZCAoY2hhciAqYXJncywgaW50IAoqKiogNzA3LDcxMyAqKioqCiAgICBy ZXR1cm4gTUlfQ01EX0RPTkU7CiAgfQogIAohIC8qIENvbm5lY3QgdG8gdGhl IHJlbW90ZSB0YXJnZXQuICovCiAgZW51bSBtaV9jbWRfcmVzdWx0CiAgbWlf Y21kX3RhcmdldF9zZWxlY3QgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkK ICB7Ci0tLSA3MDcsNzEzIC0tLS0KICAgIHJldHVybiBNSV9DTURfRE9ORTsK ICB9CiAgCiEgLyogQ29ubmVjdCB0byB0aGUgcmVtb3RlIHRhcmdldC4gICov CiAgZW51bSBtaV9jbWRfcmVzdWx0CiAgbWlfY21kX3RhcmdldF9zZWxlY3Qg KGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKICB7CioqKioqKioqKioqKioq KiBtaV9jbWRfdGFyZ2V0X3NlbGVjdCAoY2hhciAqYXJncywgaW50IGZyCioq KiA3MTcsNzMyICoqKioKICAgIHJ1biA9IHhzdHJwcmludGYgKCJ0YXJnZXQg JXMiLCBhcmdzKTsKICAgIG9sZF9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAo eGZyZWUsIHJ1bik7CiAgCiEgICAvKiB0YXJnZXQtc2VsZWN0IGlzIGFsd2F5 cyBzeW5jaHJvbm91cy4gIG9uY2UgdGhlIGNhbGwgaGFzIHJldHVybmVkCiEg ICAgICB3ZSBrbm93IHRoYXQgd2UgYXJlIGNvbm5lY3RlZC4gKi8KICAgIC8q IE5PVEU6IEF0IHByZXNlbnQgYWxsIHRhcmdldHMgdGhhdCBhcmUgY29ubmVj dGVkIGFyZSBhbHNvCiAgICAgICAoaW1wbGljaXRseSkgdGFsa2luZyB0byBh IGhhbHRlZCB0YXJnZXQuICBJbiB0aGUgZnV0dXJlIHRoaXMgbWF5CiEgICAg ICBjaGFuZ2UuICovCiAgICBleGVjdXRlX2NvbW1hbmQgKHJ1biwgZnJvbV90 dHkpOwogIAogICAgZG9fY2xlYW51cHMgKG9sZF9jbGVhbnVwcyk7CiAgCiEg ICAvKiBJc3N1ZSB0aGUgY29tcGxldGlvbiBtZXNzYWdlIGhlcmUuICovCiAg ICBpZiAobGFzdF9hc3luY19jb21tYW5kKQogICAgICBmcHV0c191bmZpbHRl cmVkIChsYXN0X2FzeW5jX2NvbW1hbmQsIHJhd19zdGRvdXQpOwogICAgZnB1 dHNfdW5maWx0ZXJlZCAoIl5jb25uZWN0ZWQiLCByYXdfc3Rkb3V0KTsKLS0t IDcxNyw3MzIgLS0tLQogICAgcnVuID0geHN0cnByaW50ZiAoInRhcmdldCAl cyIsIGFyZ3MpOwogICAgb2xkX2NsZWFudXBzID0gbWFrZV9jbGVhbnVwICh4 ZnJlZSwgcnVuKTsKICAKISAgIC8qIHRhcmdldC1zZWxlY3QgaXMgYWx3YXlz IHN5bmNocm9ub3VzLiAgT25jZSB0aGUgY2FsbCBoYXMgcmV0dXJuZWQKISAg ICAgIHdlIGtub3cgdGhhdCB3ZSBhcmUgY29ubmVjdGVkLiAgKi8KICAgIC8q IE5PVEU6IEF0IHByZXNlbnQgYWxsIHRhcmdldHMgdGhhdCBhcmUgY29ubmVj dGVkIGFyZSBhbHNvCiAgICAgICAoaW1wbGljaXRseSkgdGFsa2luZyB0byBh IGhhbHRlZCB0YXJnZXQuICBJbiB0aGUgZnV0dXJlIHRoaXMgbWF5CiEgICAg ICBjaGFuZ2UuICAqLwogICAgZXhlY3V0ZV9jb21tYW5kIChydW4sIGZyb21f dHR5KTsKICAKICAgIGRvX2NsZWFudXBzIChvbGRfY2xlYW51cHMpOwogIAoh ICAgLyogSXNzdWUgdGhlIGNvbXBsZXRpb24gbWVzc2FnZSBoZXJlLiAgKi8K ICAgIGlmIChsYXN0X2FzeW5jX2NvbW1hbmQpCiAgICAgIGZwdXRzX3VuZmls dGVyZWQgKGxhc3RfYXN5bmNfY29tbWFuZCwgcmF3X3N0ZG91dCk7CiAgICBm cHV0c191bmZpbHRlcmVkICgiXmNvbm5lY3RlZCIsIHJhd19zdGRvdXQpOwoq KioqKioqKioqKioqKiogbWlfY21kX3RhcmdldF9zZWxlY3QgKGNoYXIgKmFy Z3MsIGludCBmcgoqKiogNzQwLDc0OCAqKioqCiAgLyogREFUQS1NRU1PUlkt UkVBRDoKICAKICAgICBBRERSOiBzdGFydCBhZGRyZXNzIG9mIGRhdGEgdG8g YmUgZHVtcGVkLgohICAgIFdPUkQtRk9STUFUOiBhIGNoYXIgaW5kaWNhdGlu ZyBmb3JtYXQgZm9yIHRoZSBgYHdvcmQnJy4gU2VlIAogICAgIHRoZSBgYHgn JyBjb21tYW5kLgohICAgIFdPUkQtU0laRTogc2l6ZSBvZiBlYWNoIGBgd29y ZCcnOyAxLDIsNCwgb3IgOCBieXRlcwogICAgIE5SX1JPVzogTnVtYmVyIG9m IHJvd3MuCiAgICAgTlJfQ09MOiBUaGUgbnVtYmVyIG9mIGNvbHVtcyAod29y ZHMgcGVyIHJvdykuCiAgICAgQVNDSEFSOiAoT1BUSU9OQUwpIEFwcGVuZCBh biBhc2NpaSBjaGFyYWN0ZXIgZHVtcCB0byBlYWNoIHJvdy4gIFVzZQotLS0g NzQwLDc0OCAtLS0tCiAgLyogREFUQS1NRU1PUlktUkVBRDoKICAKICAgICBB RERSOiBzdGFydCBhZGRyZXNzIG9mIGRhdGEgdG8gYmUgZHVtcGVkLgohICAg IFdPUkQtRk9STUFUOiBhIGNoYXIgaW5kaWNhdGluZyBmb3JtYXQgZm9yIHRo ZSBgYHdvcmQnJy4gIFNlZSAKICAgICB0aGUgYGB4JycgY29tbWFuZC4KISAg ICBXT1JELVNJWkU6IHNpemUgb2YgZWFjaCBgYHdvcmQnJzsgMSwyLDQsIG9y IDggYnl0ZXMuCiAgICAgTlJfUk9XOiBOdW1iZXIgb2Ygcm93cy4KICAgICBO Ul9DT0w6IFRoZSBudW1iZXIgb2YgY29sdW1zICh3b3JkcyBwZXIgcm93KS4K ICAgICBBU0NIQVI6IChPUFRJT05BTCkgQXBwZW5kIGFuIGFzY2lpIGNoYXJh Y3RlciBkdW1wIHRvIGVhY2ggcm93LiAgVXNlCioqKioqKioqKioqKioqKiBt aV9jbWRfZGF0YV9yZWFkX21lbW9yeSAoY2hhciAqY29tbWFuZCwgCioqKiA4 MDgsODE5ICoqKioKICAKICAgIC8qIEV4dHJhY3QgYWxsIHRoZSBhcmd1bWVu dHMuICovCiAgCiEgICAvKiBTdGFydCBhZGRyZXNzIG9mIHRoZSBtZW1vcnkg ZHVtcC4gKi8KICAgIGFkZHIgPSBwYXJzZV9hbmRfZXZhbF9hZGRyZXNzIChh cmd2WzBdKSArIG9mZnNldDsKISAgIC8qIFRoZSBmb3JtYXQgY2hhcmFjdGVy IHRvIHVzZSB3aGVuIGRpc3BsYXlpbmcgYSBtZW1vcnkgd29yZC4gU2VlCiAg ICAgICB0aGUgYGB4JycgY29tbWFuZC4gKi8KICAgIHdvcmRfZm9ybWF0ID0g YXJndlsxXVswXTsKISAgIC8qIFRoZSBzaXplIG9mIHRoZSBtZW1vcnkgd29y ZC4gKi8KICAgIHdvcmRfc2l6ZSA9IGF0b2wgKGFyZ3ZbMl0pOwogICAgc3dp dGNoICh3b3JkX3NpemUpCiAgICAgIHsKLS0tIDgwOCw4MTkgLS0tLQogIAog ICAgLyogRXh0cmFjdCBhbGwgdGhlIGFyZ3VtZW50cy4gKi8KICAKISAgIC8q IFN0YXJ0IGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSBkdW1wLiAgKi8KICAgIGFk ZHIgPSBwYXJzZV9hbmRfZXZhbF9hZGRyZXNzIChhcmd2WzBdKSArIG9mZnNl dDsKISAgIC8qIFRoZSBmb3JtYXQgY2hhcmFjdGVyIHRvIHVzZSB3aGVuIGRp c3BsYXlpbmcgYSBtZW1vcnkgd29yZC4gIFNlZQogICAgICAgdGhlIGBgeCcn IGNvbW1hbmQuICovCiAgICB3b3JkX2Zvcm1hdCA9IGFyZ3ZbMV1bMF07CiEg ICAvKiBUaGUgc2l6ZSBvZiB0aGUgbWVtb3J5IHdvcmQuICAqLwogICAgd29y ZF9zaXplID0gYXRvbCAoYXJndlsyXSk7CiAgICBzd2l0Y2ggKHdvcmRfc2l6 ZSkKICAgICAgewoqKioqKioqKioqKioqKiogbWlfY21kX2RhdGFfcmVhZF9t ZW1vcnkgKGNoYXIgKmNvbW1hbmQsIAoqKiogODM3LDg2MyAqKioqCiAgICAg ICAgd29yZF90eXBlID0gYnVpbHRpbl90eXBlX2ludDg7CiAgICAgICAgd29y ZF9hc2l6ZSA9ICdiJzsKICAgICAgfQohICAgLyogVGhlIG51bWJlciBvZiBy b3dzICovCiAgICBucl9yb3dzID0gYXRvbCAoYXJndlszXSk7CiAgICBpZiAo bnJfcm93cyA8PSAwKQogICAgICB7CiAgICAgICAgbWlfZXJyb3JfbWVzc2Fn ZSA9IHhzdHJwcmludGYgKCJtaV9jbWRfZGF0YV9yZWFkX21lbW9yeTogaW52 YWxpZCBudW1iZXIgb2Ygcm93cy4iKTsKICAgICAgICByZXR1cm4gTUlfQ01E X0VSUk9SOwogICAgICB9CiEgICAvKiBudW1iZXIgb2YgYnl0ZXMgcGVyIHJv dy4gKi8KICAgIG5yX2NvbHMgPSBhdG9sIChhcmd2WzRdKTsKICAgIGlmIChu cl9jb2xzIDw9IDApCiAgICAgIHsKICAgICAgICBtaV9lcnJvcl9tZXNzYWdl ID0geHN0cnByaW50ZiAoIm1pX2NtZF9kYXRhX3JlYWRfbWVtb3J5OiBpbnZh bGlkIG51bWJlciBvZiBjb2x1bW5zLiIpOwogICAgICAgIHJldHVybiBNSV9D TURfRVJST1I7CiAgICAgIH0KISAgIC8qIFRoZSB1bi1wcmludGFibGUgY2hh cmFjdGVyIHdoZW4gcHJpbnRpbmcgYXNjaWkuICovCiAgICBpZiAoYXJnYyA9 PSA2KQogICAgICBhc2NoYXIgPSAqYXJndls1XTsKICAgIGVsc2UKICAgICAg YXNjaGFyID0gMDsKICAKISAgIC8qIGNyZWF0ZSBhIGJ1ZmZlciBhbmQgcmVh ZCBpdCBpbi4gKi8KICAgIHRvdGFsX2J5dGVzID0gd29yZF9zaXplICogbnJf cm93cyAqIG5yX2NvbHM7CiAgICBtYnVmID0geGNhbGxvYyAodG90YWxfYnl0 ZXMsIDEpOwogICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgbWJ1Zik7Ci0tLSA4 MzcsODYzIC0tLS0KICAgICAgICB3b3JkX3R5cGUgPSBidWlsdGluX3R5cGVf aW50ODsKICAgICAgICB3b3JkX2FzaXplID0gJ2InOwogICAgICB9CiEgICAv KiBUaGUgbnVtYmVyIG9mIHJvd3MuICAqLwogICAgbnJfcm93cyA9IGF0b2wg KGFyZ3ZbM10pOwogICAgaWYgKG5yX3Jvd3MgPD0gMCkKICAgICAgewogICAg ICAgIG1pX2Vycm9yX21lc3NhZ2UgPSB4c3RycHJpbnRmICgibWlfY21kX2Rh dGFfcmVhZF9tZW1vcnk6IGludmFsaWQgbnVtYmVyIG9mIHJvd3MuIik7CiAg ICAgICAgcmV0dXJuIE1JX0NNRF9FUlJPUjsKICAgICAgfQohICAgLyogTnVt YmVyIG9mIGJ5dGVzIHBlciByb3cuICAqLwogICAgbnJfY29scyA9IGF0b2wg KGFyZ3ZbNF0pOwogICAgaWYgKG5yX2NvbHMgPD0gMCkKICAgICAgewogICAg ICAgIG1pX2Vycm9yX21lc3NhZ2UgPSB4c3RycHJpbnRmICgibWlfY21kX2Rh dGFfcmVhZF9tZW1vcnk6IGludmFsaWQgbnVtYmVyIG9mIGNvbHVtbnMuIik7 CiAgICAgICAgcmV0dXJuIE1JX0NNRF9FUlJPUjsKICAgICAgfQohICAgLyog VGhlIHVuLXByaW50YWJsZSBjaGFyYWN0ZXIgd2hlbiBwcmludGluZyBhc2Np aS4gICovCiAgICBpZiAoYXJnYyA9PSA2KQogICAgICBhc2NoYXIgPSAqYXJn dls1XTsKICAgIGVsc2UKICAgICAgYXNjaGFyID0gMDsKICAKISAgIC8qIENy ZWF0ZSBhIGJ1ZmZlciBhbmQgcmVhZCBpdCBpbi4gICovCiAgICB0b3RhbF9i eXRlcyA9IHdvcmRfc2l6ZSAqIG5yX3Jvd3MgKiBucl9jb2xzOwogICAgbWJ1 ZiA9IHhjYWxsb2MgKHRvdGFsX2J5dGVzLCAxKTsKICAgIG1ha2VfY2xlYW51 cCAoeGZyZWUsIG1idWYpOwoqKioqKioqKioqKioqKiogbWlfY21kX2RhdGFf cmVhZF9tZW1vcnkgKGNoYXIgKmNvbW1hbmQsIAoqKiogODcxLDg3NyAqKioq CiAgICAgICAgcmV0dXJuIE1JX0NNRF9FUlJPUjsKICAgICAgfQogIAohICAg Lyogb3V0cHV0IHRoZSBoZWFkZXIgaW5mb3JtYXRpb24uICovCiAgICB1aV9v dXRfZmllbGRfY29yZV9hZGRyICh1aW91dCwgImFkZHIiLCBhZGRyKTsKICAg IHVpX291dF9maWVsZF9pbnQgKHVpb3V0LCAibnItYnl0ZXMiLCBucl9ieXRl cyk7CiAgICB1aV9vdXRfZmllbGRfaW50ICh1aW91dCwgInRvdGFsLWJ5dGVz IiwgdG90YWxfYnl0ZXMpOwotLS0gODcxLDg3NyAtLS0tCiAgICAgICAgcmV0 dXJuIE1JX0NNRF9FUlJPUjsKICAgICAgfQogIAohICAgLyogT3V0cHV0IHRo ZSBoZWFkZXIgaW5mb3JtYXRpb24uICAqLwogICAgdWlfb3V0X2ZpZWxkX2Nv cmVfYWRkciAodWlvdXQsICJhZGRyIiwgYWRkcik7CiAgICB1aV9vdXRfZmll bGRfaW50ICh1aW91dCwgIm5yLWJ5dGVzIiwgbnJfYnl0ZXMpOwogICAgdWlf b3V0X2ZpZWxkX2ludCAodWlvdXQsICJ0b3RhbC1ieXRlcyIsIHRvdGFsX2J5 dGVzKTsKKioqKioqKioqKioqKioqIG1pX2NtZF9kYXRhX3JlYWRfbWVtb3J5 IChjaGFyICpjb21tYW5kLCAKKioqIDg4MCw4ODYgKioqKgogICAgdWlfb3V0 X2ZpZWxkX2NvcmVfYWRkciAodWlvdXQsICJuZXh0LXBhZ2UiLCBhZGRyICsg dG90YWxfYnl0ZXMpOwogICAgdWlfb3V0X2ZpZWxkX2NvcmVfYWRkciAodWlv dXQsICJwcmV2LXBhZ2UiLCBhZGRyIC0gdG90YWxfYnl0ZXMpOwogIAohICAg LyogQnVpbGQgdGhlIHJlc3VsdCBhcyBhIHR3byBkaW1lbnRpb25hbCB0YWJs ZS4gKi8KICAgIHsKICAgICAgc3RydWN0IHVpX3N0cmVhbSAqc3RyZWFtID0g dWlfb3V0X3N0cmVhbV9uZXcgKHVpb3V0KTsKICAgICAgc3RydWN0IGNsZWFu dXAgKmNsZWFudXBfbGlzdF9tZW1vcnk7Ci0tLSA4ODAsODg2IC0tLS0KICAg IHVpX291dF9maWVsZF9jb3JlX2FkZHIgKHVpb3V0LCAibmV4dC1wYWdlIiwg YWRkciArIHRvdGFsX2J5dGVzKTsKICAgIHVpX291dF9maWVsZF9jb3JlX2Fk ZHIgKHVpb3V0LCAicHJldi1wYWdlIiwgYWRkciAtIHRvdGFsX2J5dGVzKTsK ICAKISAgIC8qIEJ1aWxkIHRoZSByZXN1bHQgYXMgYSB0d28gZGltZW50aW9u YWwgdGFibGUuICAqLwogICAgewogICAgICBzdHJ1Y3QgdWlfc3RyZWFtICpz dHJlYW0gPSB1aV9vdXRfc3RyZWFtX25ldyAodWlvdXQpOwogICAgICBzdHJ1 Y3QgY2xlYW51cCAqY2xlYW51cF9saXN0X21lbW9yeTsKKioqKioqKioqKioq KioqIG1pX2NtZF9kYXRhX3JlYWRfbWVtb3J5IChjaGFyICpjb21tYW5kLCAK KioqIDk1MCw5NjUgKioqKgogICAgIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5p bmcgb2YgdGhlIG1lbW9yeSBncmlkIHJvdyB3aGVyZSB0aGUgY2VsbCB0bwog ICAgIGJlIHdyaXR0ZW4gaXMuCiAgICAgQUREUjogc3RhcnQgYWRkcmVzcyBv ZiB0aGUgcm93IGluIHRoZSBtZW1vcnkgZ3JpZCB3aGVyZSB0aGUgbWVtb3J5 CiEgICAgY2VsbCBpcywgaWYgT0ZGU0VUX0NPTFVNTiBpcyBzcGVjaWZpZWQu IE90aGVyd2lzZSwgdGhlIGFkZHJlc3Mgb2YKICAgICB0aGUgbG9jYXRpb24g dG8gd3JpdGUgdG8uCiEgICAgRk9STUFUOiBhIGNoYXIgaW5kaWNhdGluZyBm b3JtYXQgZm9yIHRoZSBgYHdvcmQnJy4gU2VlIAogICAgIHRoZSBgYHgnJyBj b21tYW5kLgogICAgIFdPUkRfU0laRTogc2l6ZSBvZiBlYWNoIGBgd29yZCcn OyAxLDIsNCwgb3IgOCBieXRlcwogICAgIFZBTFVFOiB2YWx1ZSB0byBiZSB3 cml0dGVuIGludG8gdGhlIG1lbW9yeSBhZGRyZXNzLgogIAogICAgIFdyaXRl cyBWQUxVRSBpbnRvIEFERFIgKyAoQ09MVU1OX09GRlNFVCAqIFdPUkRfU0la RSkuCiAgCiEgICAgUHJpbnRzIG5vdGhpbmcuICovCiAgZW51bSBtaV9jbWRf cmVzdWx0CiAgbWlfY21kX2RhdGFfd3JpdGVfbWVtb3J5IChjaGFyICpjb21t YW5kLCBjaGFyICoqYXJndiwgaW50IGFyZ2MpCiAgewotLS0gOTUwLDk2NSAt LS0tCiAgICAgb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgbWVt b3J5IGdyaWQgcm93IHdoZXJlIHRoZSBjZWxsIHRvCiAgICAgYmUgd3JpdHRl biBpcy4KICAgICBBRERSOiBzdGFydCBhZGRyZXNzIG9mIHRoZSByb3cgaW4g dGhlIG1lbW9yeSBncmlkIHdoZXJlIHRoZSBtZW1vcnkKISAgICBjZWxsIGlz LCBpZiBPRkZTRVRfQ09MVU1OIGlzIHNwZWNpZmllZC4gIE90aGVyd2lzZSwg dGhlIGFkZHJlc3Mgb2YKICAgICB0aGUgbG9jYXRpb24gdG8gd3JpdGUgdG8u CiEgICAgRk9STUFUOiBhIGNoYXIgaW5kaWNhdGluZyBmb3JtYXQgZm9yIHRo ZSBgYHdvcmQnJy4gIFNlZSAKICAgICB0aGUgYGB4JycgY29tbWFuZC4KICAg ICBXT1JEX1NJWkU6IHNpemUgb2YgZWFjaCBgYHdvcmQnJzsgMSwyLDQsIG9y IDggYnl0ZXMKICAgICBWQUxVRTogdmFsdWUgdG8gYmUgd3JpdHRlbiBpbnRv IHRoZSBtZW1vcnkgYWRkcmVzcy4KICAKICAgICBXcml0ZXMgVkFMVUUgaW50 byBBRERSICsgKENPTFVNTl9PRkZTRVQgKiBXT1JEX1NJWkUpLgogIAohICAg IFByaW50cyBub3RoaW5nLiAgKi8KICBlbnVtIG1pX2NtZF9yZXN1bHQKICBt aV9jbWRfZGF0YV93cml0ZV9tZW1vcnkgKGNoYXIgKmNvbW1hbmQsIGNoYXIg Kiphcmd2LCBpbnQgYXJnYykKICB7CioqKioqKioqKioqKioqKiBtaV9jbWRf ZGF0YV93cml0ZV9tZW1vcnkgKGNoYXIgKmNvbW1hbmQsCioqKiA5NjcsOTcz ICoqKioKICAgIGNoYXIgd29yZF9mb3JtYXQ7CiAgICBsb25nIHdvcmRfc2l6 ZTsKICAgIC8qIEZJWE1FOiBlemFubm9uaSAyMDAwLTAyLTE3IExPTkdFU1Qg Y291bGQgcG9zc2libHkgbm90IGJlIGJpZwohICAgICAgZW5vdWdoIHdoZW4g dXNpbmcgYSBjb21waWxlciBvdGhlciB0aGFuIEdDQy4gKi8KICAgIExPTkdF U1QgdmFsdWU7CiAgICB2b2lkICpidWZmZXI7CiAgICBzdHJ1Y3QgY2xlYW51 cCAqb2xkX2NoYWluOwotLS0gOTY3LDk3MyAtLS0tCiAgICBjaGFyIHdvcmRf Zm9ybWF0OwogICAgbG9uZyB3b3JkX3NpemU7CiAgICAvKiBGSVhNRTogZXph bm5vbmkgMjAwMC0wMi0xNyBMT05HRVNUIGNvdWxkIHBvc3NpYmx5IG5vdCBi ZSBiaWcKISAgICAgIGVub3VnaCB3aGVuIHVzaW5nIGEgY29tcGlsZXIgb3Ro ZXIgdGhhbiBHQ0MuICAqLwogICAgTE9OR0VTVCB2YWx1ZTsKICAgIHZvaWQg KmJ1ZmZlcjsKICAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47CioqKioq KioqKioqKioqKiBtaV9jbWRfZGF0YV93cml0ZV9tZW1vcnkgKGNoYXIgKmNv bW1hbmQsCioqKiAxMDA2LDEwMzAgKioqKgogICAgICAgIHJldHVybiBNSV9D TURfRVJST1I7CiAgICAgIH0KICAKISAgIC8qIEV4dHJhY3QgYWxsIHRoZSBh cmd1bWVudHMuICovCiEgICAvKiBTdGFydCBhZGRyZXNzIG9mIHRoZSBtZW1v cnkgZHVtcC4gKi8KICAgIGFkZHIgPSBwYXJzZV9hbmRfZXZhbF9hZGRyZXNz IChhcmd2WzBdKTsKISAgIC8qIFRoZSBmb3JtYXQgY2hhcmFjdGVyIHRvIHVz ZSB3aGVuIGRpc3BsYXlpbmcgYSBtZW1vcnkgd29yZC4gU2VlCiEgICAgICB0 aGUgYGB4JycgY29tbWFuZC4gKi8KICAgIHdvcmRfZm9ybWF0ID0gYXJndlsx XVswXTsKICAgIC8qIFRoZSBzaXplIG9mIHRoZSBtZW1vcnkgd29yZC4gKi8K ICAgIHdvcmRfc2l6ZSA9IGF0b2wgKGFyZ3ZbMl0pOwogIAohICAgLyogQ2Fs Y3VsYXRlIHRoZSByZWFsIGFkZHJlc3Mgb2YgdGhlIHdyaXRlIGRlc3RpbmF0 aW9uLiAqLwogICAgYWRkciArPSAob2Zmc2V0ICogd29yZF9zaXplKTsKICAK ISAgIC8qIEdldCB0aGUgdmFsdWUgYXMgYSBudW1iZXIgKi8KICAgIHZhbHVl ID0gcGFyc2VfYW5kX2V2YWxfYWRkcmVzcyAoYXJndlszXSk7CiEgICAvKiBH ZXQgdGhlIHZhbHVlIGludG8gYW4gYXJyYXkgKi8KICAgIGJ1ZmZlciA9IHht YWxsb2MgKHdvcmRfc2l6ZSk7CiAgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFu dXAgKHhmcmVlLCBidWZmZXIpOwogICAgc3RvcmVfc2lnbmVkX2ludGVnZXIg KGJ1ZmZlciwgd29yZF9zaXplLCB2YWx1ZSk7CiEgICAvKiBXcml0ZSBpdCBk b3duIHRvIG1lbW9yeSAqLwogICAgd3JpdGVfbWVtb3J5IChhZGRyLCBidWZm ZXIsIHdvcmRfc2l6ZSk7CiAgICAvKiBGcmVlIHRoZSBidWZmZXIuICAqLwog ICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0tLSAxMDA2LDEwMzAgLS0t LQogICAgICAgIHJldHVybiBNSV9DTURfRVJST1I7CiAgICAgIH0KICAKISAg IC8qIEV4dHJhY3QgYWxsIHRoZSBhcmd1bWVudHMuICAqLwohICAgLyogU3Rh cnQgYWRkcmVzcyBvZiB0aGUgbWVtb3J5IGR1bXAuICAqLwogICAgYWRkciA9 IHBhcnNlX2FuZF9ldmFsX2FkZHJlc3MgKGFyZ3ZbMF0pOwohICAgLyogVGhl IGZvcm1hdCBjaGFyYWN0ZXIgdG8gdXNlIHdoZW4gZGlzcGxheWluZyBhIG1l bW9yeSB3b3JkLiAgU2VlCiEgICAgICB0aGUgYGB4JycgY29tbWFuZC4gICov CiAgICB3b3JkX2Zvcm1hdCA9IGFyZ3ZbMV1bMF07CiAgICAvKiBUaGUgc2l6 ZSBvZiB0aGUgbWVtb3J5IHdvcmQuICovCiAgICB3b3JkX3NpemUgPSBhdG9s IChhcmd2WzJdKTsKICAKISAgIC8qIENhbGN1bGF0ZSB0aGUgcmVhbCBhZGRy ZXNzIG9mIHRoZSB3cml0ZSBkZXN0aW5hdGlvbi4gICovCiAgICBhZGRyICs9 IChvZmZzZXQgKiB3b3JkX3NpemUpOwogIAohICAgLyogR2V0IHRoZSB2YWx1 ZSBhcyBhIG51bWJlci4gICovCiAgICB2YWx1ZSA9IHBhcnNlX2FuZF9ldmFs X2FkZHJlc3MgKGFyZ3ZbM10pOwohICAgLyogR2V0IHRoZSB2YWx1ZSBpbnRv IGFuIGFycmF5LiAgKi8KICAgIGJ1ZmZlciA9IHhtYWxsb2MgKHdvcmRfc2l6 ZSk7CiAgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBidWZm ZXIpOwogICAgc3RvcmVfc2lnbmVkX2ludGVnZXIgKGJ1ZmZlciwgd29yZF9z aXplLCB2YWx1ZSk7CiEgICAvKiBXcml0ZSBpdCBkb3duIHRvIG1lbW9yeS4g ICovCiAgICB3cml0ZV9tZW1vcnkgKGFkZHIsIGJ1ZmZlciwgd29yZF9zaXpl KTsKICAgIC8qIEZyZWUgdGhlIGJ1ZmZlci4gICovCiAgICBkb19jbGVhbnVw cyAob2xkX2NoYWluKTsKKioqKioqKioqKioqKioqIGNhcHR1cmVkX21pX2V4 ZWN1dGVfY29tbWFuZCAoc3RydWN0IHVpX28KKioqIDEwNzYsMTA4MiAqKioq CiAgICAgIHsKICAKICAgICAgY2FzZSBNSV9DT01NQU5EOgohICAgICAgIC8q IEEgTUkgY29tbWFuZCB3YXMgcmVhZCBmcm9tIHRoZSBpbnB1dCBzdHJlYW0g Ki8KICAgICAgICBpZiAobWlfZGVidWdfcCkKICAJLyogRklYTUU6IGdkYl8/ Pz8/ICovCiAgCWZwcmludGZfdW5maWx0ZXJlZCAocmF3X3N0ZG91dCwgIiB0 b2tlbj1gJXMnIGNvbW1hbmQ9YCVzJyBhcmdzPWAlcydcbiIsCi0tLSAxMDc2 LDEwODIgLS0tLQogICAgICB7CiAgCiAgICAgIGNhc2UgTUlfQ09NTUFORDoK ISAgICAgICAvKiBBIE1JIGNvbW1hbmQgd2FzIHJlYWQgZnJvbSB0aGUgaW5w dXQgc3RyZWFtLiAgKi8KICAgICAgICBpZiAobWlfZGVidWdfcCkKICAJLyog RklYTUU6IGdkYl8/Pz8/ICovCiAgCWZwcmludGZfdW5maWx0ZXJlZCAocmF3 X3N0ZG91dCwgIiB0b2tlbj1gJXMnIGNvbW1hbmQ9YCVzJyBhcmdzPWAlcydc biIsCioqKioqKioqKioqKioqKiBjYXB0dXJlZF9taV9leGVjdXRlX2NvbW1h bmQgKHN0cnVjdCB1aV9vCioqKiAxMDg0LDEwOTAgKioqKgogICAgICAgIC8q IEZJWE1FOiBjYWduZXkvMTk5OS0wOS0yNTogUmF0aGVyIHRoYW4gdGhpcyBj b252b2x1dGVkCiAgICAgICAgICAgY29uZGl0aW9uIGV4cHJlc3Npb24sIGVh Y2ggZnVuY3Rpb24gc2hvdWxkIHJldHVybiBhbgogICAgICAgICAgIGluZGlj YXRpb24gb2Ygd2hhdCBhY3Rpb24gaXMgcmVxdWlyZWQgYW5kIHRoZW4gc3dp dGNoIG9uCiEgICAgICAgICAgdGhhdC4gKi8KICAgICAgICBhcmdzLT5hY3Rp b24gPSBFWEVDVVRFX0NPTU1BTkRfRElTUExBWV9QUk9NUFQ7CiAgCiAgICAg ICAgaWYgKGRvX3RpbWluZ3MpCi0tLSAxMDg0LDEwOTAgLS0tLQogICAgICAg IC8qIEZJWE1FOiBjYWduZXkvMTk5OS0wOS0yNTogUmF0aGVyIHRoYW4gdGhp cyBjb252b2x1dGVkCiAgICAgICAgICAgY29uZGl0aW9uIGV4cHJlc3Npb24s IGVhY2ggZnVuY3Rpb24gc2hvdWxkIHJldHVybiBhbgogICAgICAgICAgIGlu ZGljYXRpb24gb2Ygd2hhdCBhY3Rpb24gaXMgcmVxdWlyZWQgYW5kIHRoZW4g c3dpdGNoIG9uCiEgICAgICAgICAgdGhhdC4gICovCiAgICAgICAgYXJncy0+ YWN0aW9uID0gRVhFQ1VURV9DT01NQU5EX0RJU1BMQVlfUFJPTVBUOwogIAog ICAgICAgIGlmIChkb190aW1pbmdzKQoqKioqKioqKioqKioqKiogY2FwdHVy ZWRfbWlfZXhlY3V0ZV9jb21tYW5kIChzdHJ1Y3QgdWlfbwoqKiogMTA5Nywx MTAzICoqKioKICAKICAgICAgICBpZiAoIXRhcmdldF9jYW5fYXN5bmNfcCAo KSB8fCAhdGFyZ2V0X2V4ZWN1dGluZykKICAJewohIAkgIC8qIHByaW50IHRo ZSByZXN1bHQgaWYgdGhlcmUgd2VyZSBubyBlcnJvcnMKICAKICAJICAgICBS ZW1lbWJlciB0aGF0IG9uIHRoZSB3YXkgb3V0IG9mIGV4ZWN1dGluZyBhIGNv bW1hbmQsIHlvdSBoYXZlCiAgCSAgICAgdG8gZGlyZWN0bHkgdXNlIHRoZSBt aV9pbnRlcnAncyB1aW91dCwgc2luY2UgdGhlIGNvbW1hbmQgY291bGQgCi0t LSAxMDk3LDExMDMgLS0tLQogIAogICAgICAgIGlmICghdGFyZ2V0X2Nhbl9h c3luY19wICgpIHx8ICF0YXJnZXRfZXhlY3V0aW5nKQogIAl7CiEgCSAgLyog UHJpbnQgdGhlIHJlc3VsdCBpZiB0aGVyZSB3ZXJlIG5vIGVycm9ycy4KICAK ICAJICAgICBSZW1lbWJlciB0aGF0IG9uIHRoZSB3YXkgb3V0IG9mIGV4ZWN1 dGluZyBhIGNvbW1hbmQsIHlvdSBoYXZlCiAgCSAgICAgdG8gZGlyZWN0bHkg dXNlIHRoZSBtaV9pbnRlcnAncyB1aW91dCwgc2luY2UgdGhlIGNvbW1hbmQg Y291bGQgCioqKioqKioqKioqKioqKiBjYXB0dXJlZF9taV9leGVjdXRlX2Nv bW1hbmQgKHN0cnVjdCB1aV9vCioqKiAxMTMzLDExMzkgKioqKgogICAgICAg IGVsc2UgaWYgKHN5bmNfZXhlY3V0aW9uKQogIAl7CiAgCSAgLyogRG9uJ3Qg cHJpbnQgdGhlIHByb21wdC4gV2UgYXJlIGV4ZWN1dGluZyB0aGUgdGFyZ2V0 IGluCiEgCSAgICAgc3luY2hyb25vdXMgbW9kZS4gKi8KICAJICBhcmdzLT5h Y3Rpb24gPSBFWEVDVVRFX0NPTU1BTkRfU1VQUkVTU19QUk9NUFQ7CiAgCSAg cmV0dXJuOwogIAl9Ci0tLSAxMTMzLDExMzkgLS0tLQogICAgICAgIGVsc2Ug aWYgKHN5bmNfZXhlY3V0aW9uKQogIAl7CiAgCSAgLyogRG9uJ3QgcHJpbnQg dGhlIHByb21wdC4gV2UgYXJlIGV4ZWN1dGluZyB0aGUgdGFyZ2V0IGluCiEg CSAgICAgc3luY2hyb25vdXMgbW9kZS4gICovCiAgCSAgYXJncy0+YWN0aW9u ID0gRVhFQ1VURV9DT01NQU5EX1NVUFJFU1NfUFJPTVBUOwogIAkgIHJldHVy bjsKICAJfQoqKioqKioqKioqKioqKiogbWlfZXhlY3V0ZV9jb21tYW5kIChj aGFyICpjbWQsIGludCBmcm9tXwoqKiogMTE5OCwxMjA1ICoqKioKICAgIHN0 cnVjdCBjYXB0dXJlZF9taV9leGVjdXRlX2NvbW1hbmRfYXJncyBhcmdzOwog ICAgc3RydWN0IHVpX291dCAqc2F2ZWRfdWlvdXQgPSB1aW91dDsKICAKISAg IC8qIFRoaXMgaXMgdG8gaGFuZGxlIEVPRiAoXkQpLiBXZSBqdXN0IHF1aXQg Z2RiLiAqLwohICAgLyogRklYTUU6IHdlIHNob3VsZCBjYWxsIHNvbWUgQVBJ IGZ1bmN0aW9uIGhlcmUuICovCiAgICBpZiAoY21kID09IDApCiAgICAgIHF1 aXRfZm9yY2UgKE5VTEwsIGZyb21fdHR5KTsKICAKLS0tIDExOTgsMTIwNSAt LS0tCiAgICBzdHJ1Y3QgY2FwdHVyZWRfbWlfZXhlY3V0ZV9jb21tYW5kX2Fy Z3MgYXJnczsKICAgIHN0cnVjdCB1aV9vdXQgKnNhdmVkX3Vpb3V0ID0gdWlv dXQ7CiAgCiEgICAvKiBUaGlzIGlzIHRvIGhhbmRsZSBFT0YgKF5EKS4gV2Ug anVzdCBxdWl0IGdkYi4gICovCiEgICAvKiBGSVhNRTogd2Ugc2hvdWxkIGNh bGwgc29tZSBBUEkgZnVuY3Rpb24gaGVyZS4gICovCiAgICBpZiAoY21kID09 IDApCiAgICAgIHF1aXRfZm9yY2UgKE5VTEwsIGZyb21fdHR5KTsKICAKKioq KioqKioqKioqKioqIG1pX2V4ZWN1dGVfY29tbWFuZCAoY2hhciAqY21kLCBp bnQgZnJvbV8KKioqIDEyMTcsMTIyMyAqKioqCiAgCX0KICAKICAgICAgICAv KiBGSVhNRTogY2FnbmV5LzE5OTktMTEtMDQ6IENhbiB0aGlzIHVzZSBvZiBj YXRjaF9leGNlcHRpb25zIGVpdGhlcgohICAgICAgICAgIGJlIHB1c2hlZCBl dmVuIGZ1cnRoZXIgZG93biBvciBldmVuIGVsaW1pbmF0ZWQ/ICovCiAgICAg ICAgYXJncy5jb21tYW5kID0gY29tbWFuZDsKICAgICAgICByZXN1bHQgPSBj YXRjaF9leGNlcHRpb24gKHVpb3V0LCBjYXB0dXJlZF9taV9leGVjdXRlX2Nv bW1hbmQsICZhcmdzLAogIAkJCQlSRVRVUk5fTUFTS19BTEwpOwotLS0gMTIx NywxMjIzIC0tLS0KICAJfQogIAogICAgICAgIC8qIEZJWE1FOiBjYWduZXkv MTk5OS0xMS0wNDogQ2FuIHRoaXMgdXNlIG9mIGNhdGNoX2V4Y2VwdGlvbnMg ZWl0aGVyCiEgICAgICAgICAgYmUgcHVzaGVkIGV2ZW4gZnVydGhlciBkb3du IG9yIGV2ZW4gZWxpbWluYXRlZD8gICovCiAgICAgICAgYXJncy5jb21tYW5k ID0gY29tbWFuZDsKICAgICAgICByZXN1bHQgPSBjYXRjaF9leGNlcHRpb24g KHVpb3V0LCBjYXB0dXJlZF9taV9leGVjdXRlX2NvbW1hbmQsICZhcmdzLAog IAkJCQlSRVRVUk5fTUFTS19BTEwpOwoqKioqKioqKioqKioqKiogbWlfZXhl Y3V0ZV9jb21tYW5kIChjaGFyICpjbWQsIGludCBmcm9tXwoqKiogMTIyNiwx MjMyICoqKioKICAgICAgICBpZiAoYXJncy5hY3Rpb24gPT0gRVhFQ1VURV9D T01NQU5EX1NVUFJFU1NfUFJPTVBUKQogIAl7CiAgCSAgLyogVGhlIGNvbW1h bmQgaXMgZXhlY3V0aW5nIHN5bmNocm9ub3VzbHkuICBCYWlsIG91dCBlYXJs eQohIAkgICAgIHN1cHByZXNzaW5nIHRoZSBmaW5pc2hlZCBwcm9tcHQuICov CiAgCSAgbWlfcGFyc2VfZnJlZSAoY29tbWFuZCk7CiAgCSAgcmV0dXJuOwog IAl9Ci0tLSAxMjI2LDEyMzIgLS0tLQogICAgICAgIGlmIChhcmdzLmFjdGlv biA9PSBFWEVDVVRFX0NPTU1BTkRfU1VQUkVTU19QUk9NUFQpCiAgCXsKICAJ ICAvKiBUaGUgY29tbWFuZCBpcyBleGVjdXRpbmcgc3luY2hyb25vdXNseS4g IEJhaWwgb3V0IGVhcmx5CiEgCSAgICAgc3VwcHJlc3NpbmcgdGhlIGZpbmlz aGVkIHByb21wdC4gICovCiAgCSAgbWlfcGFyc2VfZnJlZSAoY29tbWFuZCk7 CiAgCSAgcmV0dXJuOwogIAl9CioqKioqKioqKioqKioqKiBtaV9leGVjdXRl X2NvbW1hbmQgKGNoYXIgKmNtZCwgaW50IGZyb21fCioqKiAxMjQ4LDEyNTQg KioqKgogIAogICAgZnB1dHNfdW5maWx0ZXJlZCAoIihnZGIpIFxuIiwgcmF3 X3N0ZG91dCk7CiAgICBnZGJfZmx1c2ggKHJhd19zdGRvdXQpOwohICAgLyog cHJpbnQgYW55IGJ1ZmZlcmVkIGhvb2sgY29kZSAqLwogICAgLyogLi4uLi4g Ki8KICB9CiAgCi0tLSAxMjQ4LDEyNTQgLS0tLQogIAogICAgZnB1dHNfdW5m aWx0ZXJlZCAoIihnZGIpIFxuIiwgcmF3X3N0ZG91dCk7CiAgICBnZGJfZmx1 c2ggKHJhd19zdGRvdXQpOwohICAgLyogUHJpbnQgYW55IGJ1ZmZlcmVkIGhv b2sgY29kZS4gICovCiAgICAvKiAuLi4uLiAqLwogIH0KICAKKioqKioqKioq KioqKioqIG1pX2NtZF9leGVjdXRlIChzdHJ1Y3QgbWlfcGFyc2UgKnBhcnNl KQoqKiogMTI2MywxMjc5ICoqKioKICAgICAgICAvKiBGSVhNRTogV2UgbmVl ZCB0byBzYXZlIHRoZSB0b2tlbiBiZWNhdXNlIHRoZSBjb21tYW5kIGV4ZWN1 dGVkCiAgICAgICAgICAgbWF5IGJlIGFzeW5jaHJvbm91cyBhbmQgbmVlZCB0 byBwcmludCB0aGUgdG9rZW4gYWdhaW4uCiAgICAgICAgICAgSW4gdGhlIGZ1 dHVyZSB3ZSBjYW4gcGFzcyB0aGUgdG9rZW4gZG93biB0byB0aGUgZnVuYwoh ICAgICAgICAgIGFuZCBnZXQgcmlkIG9mIHRoZSBsYXN0X2FzeW5jX2NvbW1h bmQgKi8KICAgICAgICAvKiBUaGUgcHJvYmxlbSBoZXJlIGlzIHRvIGtlZXAg dGhlIHRva2VuIGFyb3VuZCB3aGVuIHdlIGxhdW5jaAogICAgICAgICAgIHRo ZSB0YXJnZXQsIGFuZCB3ZSB3YW50IHRvIGludGVycnVwdCBpdCBsYXRlciBv bi4gIFRoZQogICAgICAgICAgIGludGVycnVwdCBjb21tYW5kIHdpbGwgaGF2 ZSBpdHMgb3duIHRva2VuLCBidXQgd2hlbiB0aGUKICAgICAgICAgICB0YXJn ZXQgc3RvcHMsIHdlIG11c3QgZGlzcGxheSB0aGUgdG9rZW4gY29ycmVzcG9u ZGluZyB0byB0aGUKISAgICAgICAgICBsYXN0IGV4ZWN1dGlvbiBjb21tYW5k IGdpdmVuLiBTbyB3ZSBoYXZlIGFub3RoZXIgc3RyaW5nIHdoZXJlCiAgICAg ICAgICAgd2UgY29weSB0aGUgdG9rZW4gKHByZXZpb3VzX2FzeW5jX2NvbW1h bmQpLCBpZiB0aGlzIHdhcwogICAgICAgICAgIGluZGVlZCB0aGUgdG9rZW4g b2YgYW4gZXhlY3V0aW9uIGNvbW1hbmQsIGFuZCB3aGVuIHdlIHN0b3Agd2UK ISAgICAgICAgICBwcmludCB0aGF0IG9uZS4gVGhpcyBpcyBwb3NzaWJsZSBi ZWNhdXNlIHRoZSBpbnRlcnJ1cHQKICAgICAgICAgICBjb21tYW5kLCB3aGVu IG92ZXIsIHdpbGwgY29weSB0aGF0IHRva2VuIGJhY2sgaW50byB0aGUKISAg ICAgICAgICBkZWZhdWx0IHRva2VuIHN0cmluZyAobGFzdF9hc3luY19jb21t YW5kKS4gKi8KICAKICAgICAgICBpZiAodGFyZ2V0X2V4ZWN1dGluZykKICAJ ewotLS0gMTI2MywxMjc5IC0tLS0KICAgICAgICAvKiBGSVhNRTogV2UgbmVl ZCB0byBzYXZlIHRoZSB0b2tlbiBiZWNhdXNlIHRoZSBjb21tYW5kIGV4ZWN1 dGVkCiAgICAgICAgICAgbWF5IGJlIGFzeW5jaHJvbm91cyBhbmQgbmVlZCB0 byBwcmludCB0aGUgdG9rZW4gYWdhaW4uCiAgICAgICAgICAgSW4gdGhlIGZ1 dHVyZSB3ZSBjYW4gcGFzcyB0aGUgdG9rZW4gZG93biB0byB0aGUgZnVuYwoh ICAgICAgICAgIGFuZCBnZXQgcmlkIG9mIHRoZSBsYXN0X2FzeW5jX2NvbW1h bmQuICAqLwogICAgICAgIC8qIFRoZSBwcm9ibGVtIGhlcmUgaXMgdG8ga2Vl cCB0aGUgdG9rZW4gYXJvdW5kIHdoZW4gd2UgbGF1bmNoCiAgICAgICAgICAg dGhlIHRhcmdldCwgYW5kIHdlIHdhbnQgdG8gaW50ZXJydXB0IGl0IGxhdGVy IG9uLiAgVGhlCiAgICAgICAgICAgaW50ZXJydXB0IGNvbW1hbmQgd2lsbCBo YXZlIGl0cyBvd24gdG9rZW4sIGJ1dCB3aGVuIHRoZQogICAgICAgICAgIHRh cmdldCBzdG9wcywgd2UgbXVzdCBkaXNwbGF5IHRoZSB0b2tlbiBjb3JyZXNw b25kaW5nIHRvIHRoZQohICAgICAgICAgIGxhc3QgZXhlY3V0aW9uIGNvbW1h bmQgZ2l2ZW4uICBTbyB3ZSBoYXZlIGFub3RoZXIgc3RyaW5nIHdoZXJlCiAg ICAgICAgICAgd2UgY29weSB0aGUgdG9rZW4gKHByZXZpb3VzX2FzeW5jX2Nv bW1hbmQpLCBpZiB0aGlzIHdhcwogICAgICAgICAgIGluZGVlZCB0aGUgdG9r ZW4gb2YgYW4gZXhlY3V0aW9uIGNvbW1hbmQsIGFuZCB3aGVuIHdlIHN0b3Ag d2UKISAgICAgICAgICBwcmludCB0aGF0IG9uZS4gIFRoaXMgaXMgcG9zc2li bGUgYmVjYXVzZSB0aGUgaW50ZXJydXB0CiAgICAgICAgICAgY29tbWFuZCwg d2hlbiBvdmVyLCB3aWxsIGNvcHkgdGhhdCB0b2tlbiBiYWNrIGludG8gdGhl CiEgICAgICAgICAgZGVmYXVsdCB0b2tlbiBzdHJpbmcgKGxhc3RfYXN5bmNf Y29tbWFuZCkuICAqLwogIAogICAgICAgIGlmICh0YXJnZXRfZXhlY3V0aW5n KQogIAl7CioqKioqKioqKioqKioqKiBtaV9jbWRfZXhlY3V0ZSAoc3RydWN0 IG1pX3BhcnNlICpwYXJzZSkKKioqIDEzMDAsMTMxNCAqKioqCiAgICBlbHNl IGlmIChwYXJzZS0+Y21kLT5jbGkuY21kICE9IDApCiAgICAgIHsKICAgICAg ICAvKiBGSVhNRTogREVMRVRFIFRISVMuICovCiEgICAgICAgLyogVGhlIG9w ZXJhdGlvbiBpcyBzdGlsbCBpbXBsZW1lbnRlZCBieSBhIGNsaSBjb21tYW5k ICovCiEgICAgICAgLyogTXVzdCBiZSBhIHN5bmNocm9ub3VzIG9uZSAqLwog ICAgICAgIG1pX2V4ZWN1dGVfY2xpX2NvbW1hbmQgKHBhcnNlLT5jbWQtPmNs aS5jbWQsIHBhcnNlLT5jbWQtPmNsaS5hcmdzX3AsCiAgCQkJICAgICAgcGFy c2UtPmFyZ3MpOwogICAgICAgIHJldHVybiBNSV9DTURfRE9ORTsKICAgICAg fQogICAgZWxzZQogICAgICB7CiEgICAgICAgLyogRklYTUU6IERFTEVURSBU SElTLiAqLwogICAgICAgIGZwdXRzX3VuZmlsdGVyZWQgKHBhcnNlLT50b2tl biwgcmF3X3N0ZG91dCk7CiAgICAgICAgZnB1dHNfdW5maWx0ZXJlZCAoIl5l cnJvcixtc2c9XCIiLCByYXdfc3Rkb3V0KTsKICAgICAgICBmcHV0c191bmZp bHRlcmVkICgiVW5kZWZpbmVkIG1pIGNvbW1hbmQ6ICIsIHJhd19zdGRvdXQp OwotLS0gMTMwMCwxMzE0IC0tLS0KICAgIGVsc2UgaWYgKHBhcnNlLT5jbWQt PmNsaS5jbWQgIT0gMCkKICAgICAgewogICAgICAgIC8qIEZJWE1FOiBERUxF VEUgVEhJUy4gKi8KISAgICAgICAvKiBUaGUgb3BlcmF0aW9uIGlzIHN0aWxs IGltcGxlbWVudGVkIGJ5IGEgY2xpIGNvbW1hbmQuICAqLwohICAgICAgIC8q IE11c3QgYmUgYSBzeW5jaHJvbm91cyBvbmUuICAqLwogICAgICAgIG1pX2V4 ZWN1dGVfY2xpX2NvbW1hbmQgKHBhcnNlLT5jbWQtPmNsaS5jbWQsIHBhcnNl LT5jbWQtPmNsaS5hcmdzX3AsCiAgCQkJICAgICAgcGFyc2UtPmFyZ3MpOwog ICAgICAgIHJldHVybiBNSV9DTURfRE9ORTsKICAgICAgfQogICAgZWxzZQog ICAgICB7CiEgICAgICAgLyogRklYTUU6IERFTEVURSBUSElTLiAgKi8KICAg ICAgICBmcHV0c191bmZpbHRlcmVkIChwYXJzZS0+dG9rZW4sIHJhd19zdGRv dXQpOwogICAgICAgIGZwdXRzX3VuZmlsdGVyZWQgKCJeZXJyb3IsbXNnPVwi IiwgcmF3X3N0ZG91dCk7CiAgICAgICAgZnB1dHNfdW5maWx0ZXJlZCAoIlVu ZGVmaW5lZCBtaSBjb21tYW5kOiAiLCByYXdfc3Rkb3V0KTsKKioqKioqKioq KioqKioqIG1pX2NtZF9leGVjdXRlIChzdHJ1Y3QgbWlfcGFyc2UgKnBhcnNl KQoqKiogMTMyMCwxMzI3ICoqKioKICB9CiAgCiAgLyogRklYTUU6IFRoaXMg aXMganVzdCBhIGhhY2sgc28gd2UgY2FuIGdldCBzb21lIGV4dHJhIGNvbW1h bmRzIGdvaW5nLgohICAgIFdlIGRvbid0IHdhbnQgdG8gY2hhbm5lbCB0aGlu Z3MgdGhyb3VnaCB0aGUgQ0xJLCBidXQgY2FsbCBsaWJnZGIgZGlyZWN0bHkg Ki8KISAvKiBVc2Ugb25seSBmb3Igc3luY2hyb25vdXMgY29tbWFuZHMgKi8K ICAKICB2b2lkCiAgbWlfZXhlY3V0ZV9jbGlfY29tbWFuZCAoY29uc3QgY2hh ciAqY21kLCBpbnQgYXJnc19wLCBjb25zdCBjaGFyICphcmdzKQotLS0gMTMy MCwxMzI3IC0tLS0KICB9CiAgCiAgLyogRklYTUU6IFRoaXMgaXMganVzdCBh IGhhY2sgc28gd2UgY2FuIGdldCBzb21lIGV4dHJhIGNvbW1hbmRzIGdvaW5n LgohICAgIFdlIGRvbid0IHdhbnQgdG8gY2hhbm5lbCB0aGluZ3MgdGhyb3Vn aCB0aGUgQ0xJLCBidXQgY2FsbCBsaWJnZGIgZGlyZWN0bHkuCiEgICAgVXNl IG9ubHkgZm9yIHN5bmNocm9ub3VzIGNvbW1hbmRzLiAgKi8KICAKICB2b2lk CiAgbWlfZXhlY3V0ZV9jbGlfY29tbWFuZCAoY29uc3QgY2hhciAqY21kLCBp bnQgYXJnc19wLCBjb25zdCBjaGFyICphcmdzKQoqKioqKioqKioqKioqKiog bWlfZXhlY3V0ZV9hc3luY19jbGlfY29tbWFuZCAoY2hhciAqbWksIAoqKiog MTM3MywxMzc5ICoqKioKICAgICAgewogICAgICAgIC8qIE5PVEU6IEZvciBz eW5jaHJvbm91cyB0YXJnZXRzIGFzeW5jaHJvbm91cyBiZWhhdm91ciBpcyBm YWtlZCBieQogICAgICAgICAgIHByaW50aW5nIG91dCB0aGUgR0RCIHByb21w dCBiZWZvcmUgd2UgZXZlbiB0cnkgdG8gZXhlY3V0ZSB0aGUKISAgICAgICAg ICBjb21tYW5kLiAqLwogICAgICAgIGlmIChsYXN0X2FzeW5jX2NvbW1hbmQp CiAgCWZwdXRzX3VuZmlsdGVyZWQgKGxhc3RfYXN5bmNfY29tbWFuZCwgcmF3 X3N0ZG91dCk7CiAgICAgICAgZnB1dHNfdW5maWx0ZXJlZCAoIl5ydW5uaW5n XG4iLCByYXdfc3Rkb3V0KTsKLS0tIDEzNzMsMTM3OSAtLS0tCiAgICAgIHsK ICAgICAgICAvKiBOT1RFOiBGb3Igc3luY2hyb25vdXMgdGFyZ2V0cyBhc3lu Y2hyb25vdXMgYmVoYXZvdXIgaXMgZmFrZWQgYnkKICAgICAgICAgICBwcmlu dGluZyBvdXQgdGhlIEdEQiBwcm9tcHQgYmVmb3JlIHdlIGV2ZW4gdHJ5IHRv IGV4ZWN1dGUgdGhlCiEgICAgICAgICAgY29tbWFuZC4gICovCiAgICAgICAg aWYgKGxhc3RfYXN5bmNfY29tbWFuZCkKICAJZnB1dHNfdW5maWx0ZXJlZCAo bGFzdF9hc3luY19jb21tYW5kLCByYXdfc3Rkb3V0KTsKICAgICAgICBmcHV0 c191bmZpbHRlcmVkICgiXnJ1bm5pbmdcbiIsIHJhd19zdGRvdXQpOwoqKioq KioqKioqKioqKiogbWlfZXhlY3V0ZV9hc3luY19jbGlfY29tbWFuZCAoY2hh ciAqbWksIAoqKiogMTM4NSwxMzkxICoqKioKICAgICAgICAvKiBGSVhNRTog Y2FnbmV5LzE5OTktMTEtMjk6IFByaW50aW5nIHRoaXMgbWVzc2FnZSBiZWZv cmUKICAgICAgICAgICBjYWxsaW5nIGV4ZWN1dGVfY29tbWFuZCBpcyB3cm9u Zy4gIEl0IHNob3VsZCBvbmx5IGJlIHByaW50ZWQKICAgICAgICAgICBvbmNl IGdkYiBoYXMgY29uZmlybWVkIHRoYXQgaXQgcmVhbGx5IGhhcyBtYW5hZ2Vk IHRvIHNlbmQgYQohICAgICAgICAgIHJ1biBjb21tYW5kIHRvIHRoZSB0YXJn ZXQuICovCiAgICAgICAgaWYgKGxhc3RfYXN5bmNfY29tbWFuZCkKICAJZnB1 dHNfdW5maWx0ZXJlZCAobGFzdF9hc3luY19jb21tYW5kLCByYXdfc3Rkb3V0 KTsKICAgICAgICBmcHV0c191bmZpbHRlcmVkICgiXnJ1bm5pbmdcbiIsIHJh d19zdGRvdXQpOwotLS0gMTM4NSwxMzkxIC0tLS0KICAgICAgICAvKiBGSVhN RTogY2FnbmV5LzE5OTktMTEtMjk6IFByaW50aW5nIHRoaXMgbWVzc2FnZSBi ZWZvcmUKICAgICAgICAgICBjYWxsaW5nIGV4ZWN1dGVfY29tbWFuZCBpcyB3 cm9uZy4gIEl0IHNob3VsZCBvbmx5IGJlIHByaW50ZWQKICAgICAgICAgICBv bmNlIGdkYiBoYXMgY29uZmlybWVkIHRoYXQgaXQgcmVhbGx5IGhhcyBtYW5h Z2VkIHRvIHNlbmQgYQohICAgICAgICAgIHJ1biBjb21tYW5kIHRvIHRoZSB0 YXJnZXQuICAqLwogICAgICAgIGlmIChsYXN0X2FzeW5jX2NvbW1hbmQpCiAg CWZwdXRzX3VuZmlsdGVyZWQgKGxhc3RfYXN5bmNfY29tbWFuZCwgcmF3X3N0 ZG91dCk7CiAgICAgICAgZnB1dHNfdW5maWx0ZXJlZCAoIl5ydW5uaW5nXG4i LCByYXdfc3Rkb3V0KTsKKioqKioqKioqKioqKioqIG1pX2V4ZWN1dGVfYXN5 bmNfY2xpX2NvbW1hbmQgKGNoYXIgKm1pLCAKKioqIDEzOTYsMTQwNSAqKioq CiAgICBpZiAoIXRhcmdldF9jYW5fYXN5bmNfcCAoKSkKICAgICAgewogICAg ICAgIC8qIERvIHRoaXMgYmVmb3JlIGRvaW5nIGFueSBwcmludGluZy4gIEl0 IHdvdWxkIGFwcGVhciB0aGF0IHNvbWUKISAgICAgICAgICBwcmludCBjb2Rl IGxlYXZlcyBnYXJiYWdlIGFyb3VuZCBpbiB0aGUgYnVmZmVyLiAqLwogICAg ICAgIGRvX2NsZWFudXBzIChvbGRfY2xlYW51cHMpOwogICAgICAgIC8qIElm IHRoZSB0YXJnZXQgd2FzIGRvaW5nIHRoZSBvcGVyYXRpb24gc3luY2hyb25v dXNseSB3ZSBmYWtlCiEgICAgICAgICAgdGhlIHN0b3BwZWQgbWVzc2FnZS4g Ki8KICAgICAgICBpZiAobGFzdF9hc3luY19jb21tYW5kKQogIAlmcHV0c191 bmZpbHRlcmVkIChsYXN0X2FzeW5jX2NvbW1hbmQsIHJhd19zdGRvdXQpOwog ICAgICAgIGZwdXRzX3VuZmlsdGVyZWQgKCIqc3RvcHBlZCIsIHJhd19zdGRv dXQpOwotLS0gMTM5NiwxNDA1IC0tLS0KICAgIGlmICghdGFyZ2V0X2Nhbl9h c3luY19wICgpKQogICAgICB7CiAgICAgICAgLyogRG8gdGhpcyBiZWZvcmUg ZG9pbmcgYW55IHByaW50aW5nLiAgSXQgd291bGQgYXBwZWFyIHRoYXQgc29t ZQohICAgICAgICAgIHByaW50IGNvZGUgbGVhdmVzIGdhcmJhZ2UgYXJvdW5k IGluIHRoZSBidWZmZXIuICAqLwogICAgICAgIGRvX2NsZWFudXBzIChvbGRf Y2xlYW51cHMpOwogICAgICAgIC8qIElmIHRoZSB0YXJnZXQgd2FzIGRvaW5n IHRoZSBvcGVyYXRpb24gc3luY2hyb25vdXNseSB3ZSBmYWtlCiEgICAgICAg ICAgdGhlIHN0b3BwZWQgbWVzc2FnZS4gICovCiAgICAgICAgaWYgKGxhc3Rf YXN5bmNfY29tbWFuZCkKICAJZnB1dHNfdW5maWx0ZXJlZCAobGFzdF9hc3lu Y19jb21tYW5kLCByYXdfc3Rkb3V0KTsKICAgICAgICBmcHV0c191bmZpbHRl cmVkICgiKnN0b3BwZWQiLCByYXdfc3Rkb3V0KTsK --14cqSOJDzc--