From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8280 invoked by alias); 24 Mar 2008 11:57:44 -0000 Received: (qmail 8270 invoked by uid 22791); 24 Mar 2008 11:57:44 -0000 X-Spam-Check-By: sourceware.org Received: from sohm.kpitcummins.com (HELO sohm.kpit.com) (203.197.93.231) by sourceware.org (qpsmtpd/0.31) with ESMTP; Mon, 24 Mar 2008 11:57:22 +0000 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C88DA5.F8557CA9" Subject: RE: [PATCH,SH] Add SH2A new instructions 1/6 Date: Mon, 24 Mar 2008 13:03:00 -0000 Message-ID: <78DE440C4156CC45A35FDBCBF9B830D70241DDE9@sohm.kpit.com> In-reply-to: <20080320.095719.74755385.kkojima@rr.iij4u.or.jp> From: "Naveen H.S." To: "Kaz Kojima" Cc: , "Prafulla Thakare" Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2008-03/txt/msg01385.txt.bz2 This is a multi-part message in MIME format. ------_=_NextPart_001_01C88DA5.F8557CA9 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Content-length: 2436 Hi Kaz, >> The last line should be removed and there is no diff against=20 >> extend.texi in your sh2a1.patch. The hunk was missed out in the posted patch. It has been added in=20 the present patch >> It seems that the line of that test is unneeded in the first place.=20=20 The line is removed from the testcase. Please find the revised patch attached "sh2a1.patch" as per the suggestions. ChangeLog 2008-03-24 Anil Paranjape Jayant Sonar Naveen.H.S =20=20=20=20=20=20=20=20=20=20=09=20=20=20=20=20=20=20=20=20=20=20=20 * config/sh/sh.c (SH_ATTRIBUTES): Define. (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define. (print_operand): Handle resbank in %@ operand code. (sh_encode_section_info): New. (push_regs): Add conditions for resbank. (sh_expand_epilogue): Likewise. (sh_insert_attributes): Likewise. (sh_attribute_table): Likewise. (sh_handle_resbank_handler_attribute): New. (sh2a_handle_function_vector_handler_attribute): New. (sh2a_is_function_vector_call): New. (sh2a_get_function_vector_number): New. (sh2a_function_vector_p): New. (sh_cfun_resbank_handler_p): New. * config/sh/sh.md (calli): Emit jsr/n if possible. (calli_tbr_rel): New. (calli_pcrel): Emit jsr/n if possible. (return_i): Emit rts/n if possible. (call_valuei_tbr_rel): New. (call_valuei_pcrel): Add condition for SH2A target. (call_value): Add condition for SH2A target. * config/sh/sh-protos.h (sh_cfun_resbank_handler_p): Declare. (sh2a_get_function_vector_number): Likewise. (sh2a_is_function_vector_call): Likewise. * doc/extend.texi: Document TBR relative addressing of SH2A. (resbank): Add description for SH2A. (resbank): Added description for SH2A target. =09 * gcc.target/sh/sh2a-resbank.c: New test. * gcc.target/sh/sh2a-tbr-jump.c: New test. * gcc.target/sh/sh2a-jsrn.c: New test. * gcc.target/sh/sh2a-rtsn.c: New test. Regards, Naveen.H.S. KPIT Cummins Infosystems Ltd, Pune (INDIA)=20 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=09 Free download of GNU based tool-chains for Renesas' SH, H8, R8C, M16C=09 and M32C Series. The following site also offers free technical support=09 to its users. Visit http://www.kpitgnutools.com for details.=20=09 Latest versions of KPIT GNU tools were released on February 4, 2008.=09 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=09 ------_=_NextPart_001_01C88DA5.F8557CA9 Content-Type: application/octet-stream; name="sh2a1.patch" Content-Transfer-Encoding: base64 Content-Description: sh2a1.patch Content-Disposition: attachment; filename="sh2a1.patch" Content-length: 34104 ZGlmZiAtdXByIC9ob21lL25hdmVlbmgvdGFycy9nY2MtNC40LTIwMDgwMjIy L2djYy9jb25maWcvc2gvc2guYyBnY2MvY29uZmlnL3NoL3NoLmMKLS0tIC9o b21lL25hdmVlbmgvdGFycy9nY2MtNC40LTIwMDgwMjIyL2djYy9jb25maWcv c2gvc2guYwkyMDA4LTAyLTIxIDA1OjA3OjU4LjAwMDAwMDAwMCArMDUzMAor KysgZ2NjL2NvbmZpZy9zaC9zaC5jCTIwMDgtMDMtMjQgMTI6NDM6MjEuMDAw MDAwMDAwICswNTMwCkBAIC02OSw2ICs2OSwxNCBAQCBpbnQgY29kZV9mb3Jf aW5kaXJlY3RfanVtcF9zY3JhdGNoID0gQ09ECiAjZGVmaW5lIEdFTl9BREQz ICgqKFRBUkdFVF9TSE1FRElBNjQgPyBnZW5fYWRkZGkzIDogZ2VuX2FkZHNp MykpCiAjZGVmaW5lIEdFTl9TVUIzICgqKFRBUkdFVF9TSE1FRElBNjQgPyBn ZW5fc3ViZGkzIDogZ2VuX3N1YnNpMykpCiAKKy8qIFVzZWQgdG8gc2ltcGxp ZnkgdGhlIGxvZ2ljIGJlbG93LiAgRmluZCB0aGUgYXR0cmlidXRlcyB3aGVy ZXZlcgorICAgdGhleSBtYXkgYmUuICAqLworI2RlZmluZSBTSF9BVFRSSUJV VEVTKGRlY2wpIFwKKyAgKFRZUEVfUCAoZGVjbCkpID8gVFlQRV9BVFRSSUJV VEVTIChkZWNsKSBcCisJCSAgOiBERUNMX0FUVFJJQlVURVMgKGRlY2wpIFwK KwkJICA/IChERUNMX0FUVFJJQlVURVMgKGRlY2wpKSBcCisJCSAgOiBUWVBF X0FUVFJJQlVURVMgKFRSRUVfVFlQRSAoZGVjbCkpCisKIC8qIFNldCB0byAx IGJ5IGV4cGFuZF9wcm9sb2d1ZSgpIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGFu IGludGVycnVwdCBoYW5kbGVyLiAgKi8KIGludCBjdXJyZW50X2Z1bmN0aW9u X2ludGVycnVwdDsKIApAQCAtMTg1LDYgKzE5MywxMCBAQCBzdGF0aWMgSE9T VF9XSURFX0lOVCByb3VuZGVkX2ZyYW1lX3NpemUgCiBzdGF0aWMgcnR4IG1h cmtfY29uc3RhbnRfcG9vbF91c2UgKHJ0eCk7CiBjb25zdCBzdHJ1Y3QgYXR0 cmlidXRlX3NwZWMgc2hfYXR0cmlidXRlX3RhYmxlW107CiBzdGF0aWMgdHJl ZSBzaF9oYW5kbGVfaW50ZXJydXB0X2hhbmRsZXJfYXR0cmlidXRlICh0cmVl ICosIHRyZWUsIHRyZWUsIGludCwgYm9vbCAqKTsKK3N0YXRpYyB0cmVlIHNo X2hhbmRsZV9yZXNiYW5rX2hhbmRsZXJfYXR0cmlidXRlICh0cmVlICosIHRy ZWUsCisJCQkJCQkgdHJlZSwgaW50LCBib29sICopOworc3RhdGljIHRyZWUg c2gyYV9oYW5kbGVfZnVuY3Rpb25fdmVjdG9yX2hhbmRsZXJfYXR0cmlidXRl ICh0cmVlICosIHRyZWUsCisJCQkJCQkJICAgdHJlZSwgaW50LCBib29sICop Owogc3RhdGljIHRyZWUgc2hfaGFuZGxlX3NwX3N3aXRjaF9hdHRyaWJ1dGUg KHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBib29sICopOwogc3RhdGljIHRy ZWUgc2hfaGFuZGxlX3RyYXBfZXhpdF9hdHRyaWJ1dGUgKHRyZWUgKiwgdHJl ZSwgdHJlZSwgaW50LCBib29sICopOwogc3RhdGljIHRyZWUgc2hfaGFuZGxl X3JlbmVzYXNfYXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwg Ym9vbCAqKTsKQEAgLTI1Nyw2ICsyNjksOCBAQCBzdGF0aWMgYm9vbCBzaF9j YWxsZWVfY29waWVzIChDVU1VTEFUSVZFCiBzdGF0aWMgaW50IHNoX2FyZ19w YXJ0aWFsX2J5dGVzIChDVU1VTEFUSVZFX0FSR1MgKiwgZW51bSBtYWNoaW5l X21vZGUsCiAJCQkgICAgICAgICB0cmVlLCBib29sKTsKIHN0YXRpYyBpbnQg c2hfZHdhcmZfY2FsbGluZ19jb252ZW50aW9uIChjb25zdF90cmVlKTsKK3N0 YXRpYyB2b2lkIHNoX2VuY29kZV9zZWN0aW9uX2luZm8gKHRyZWUsIHJ0eCwg aW50KTsKK3N0YXRpYyBpbnQgc2gyYV9mdW5jdGlvbl92ZWN0b3JfcCAodHJl ZSk7CiAKIAwKIC8qIEluaXRpYWxpemUgdGhlIEdDQyB0YXJnZXQgc3RydWN0 dXJlLiAgKi8KQEAgLTQ0Niw2ICs0NjAsOSBAQCBzdGF0aWMgaW50IHNoX2R3 YXJmX2NhbGxpbmdfY29udmVudGlvbiAoCiAvKiBSZXR1cm4gY3VycmVudCBy ZWdpc3RlciBwcmVzc3VyZSBmb3IgcmVnbW9kZS4gICovCiAjZGVmaW5lIENV UlJfUkVHTU9ERV9QUkVTU1VSRShNT0RFKSAJY3Vycl9yZWdtb2RlX3ByZXNz dXJlWygoTU9ERSkgPT0gU0ltb2RlKSA/IDAgOiAxXQogCisjdW5kZWYgIFRB UkdFVF9FTkNPREVfU0VDVElPTl9JTkZPCisjZGVmaW5lIFRBUkdFVF9FTkNP REVfU0VDVElPTl9JTkZPCXNoX2VuY29kZV9zZWN0aW9uX2luZm8KKwogI2lm ZGVmIFNZTUJJQU4KIAogI3VuZGVmICBUQVJHRVRfRU5DT0RFX1NFQ1RJT05f SU5GTwpAQCAtNDYwLDYgKzQ3Nyw5IEBAIHN0YXRpYyBpbnQgc2hfZHdhcmZf Y2FsbGluZ19jb252ZW50aW9uICgKICN1bmRlZiBUQVJHRVRfU0VDT05EQVJZ X1JFTE9BRAogI2RlZmluZSBUQVJHRVRfU0VDT05EQVJZX1JFTE9BRCBzaF9z ZWNvbmRhcnlfcmVsb2FkCiAKKy8qIE1hY2hpbmUtc3BlY2lmaWMgc3ltYm9s X3JlZiBmbGFncy4gICovCisjZGVmaW5lIFNZTUJPTF9GTEFHX0ZVTkNWRUNf RlVOQ1RJT04gICAgKFNZTUJPTF9GTEFHX01BQ0hfREVQIDw8IDApCisKIHN0 cnVjdCBnY2NfdGFyZ2V0IHRhcmdldG0gPSBUQVJHRVRfSU5JVElBTElaRVI7 CiAMCiAvKiBJbXBsZW1lbnQgVEFSR0VUX0hBTkRMRV9PUFRJT04uICAqLwpA QCAtNjg3LDcgKzcwNywxMSBAQCBwcmludF9vcGVyYW5kIChGSUxFICpzdHJl YW0sIHJ0eCB4LCBpbnQgCiAJZnByaW50ZiAoc3RyZWFtLCAidHJhcGEgIyVs ZCIsCiAJCSAobG9uZykgVFJFRV9JTlRfQ1NUX0xPVyAoVFJFRV9WQUxVRSAo VFJFRV9WQUxVRSAodHJhcGFfYXR0cikpKSk7CiAgICAgICBlbHNlIGlmIChz aF9jZnVuX2ludGVycnVwdF9oYW5kbGVyX3AgKCkpCi0JZnByaW50ZiAoc3Ry ZWFtLCAicnRlIik7CisJeworCSAgaWYgKHNoX2NmdW5fcmVzYmFua19oYW5k bGVyX3AgKCkpCisJICAgIGZwcmludGYgKHN0cmVhbSwgInJlc2JhbmtcbiIp OworCSAgZnByaW50ZiAoc3RyZWFtLCAicnRlIik7CisJfQogICAgICAgZWxz ZQogCWZwcmludGYgKHN0cmVhbSwgInJ0cyIpOwogICAgICAgYnJlYWs7CkBA IC0xMDE5LDYgKzEwNDMsMTkgQEAgcHJpbnRfb3BlcmFuZCAoRklMRSAqc3Ry ZWFtLCBydHggeCwgaW50IAogICAgIH0KIH0KIAwKKworLyogRW5jb2RlIHN5 bWJvbCBhdHRyaWJ1dGVzIG9mIGEgU1lNQk9MX1JFRiBpbnRvIGl0cworICAg U1lNQk9MX1JFRl9GTEFHUy4gICovCitzdGF0aWMgdm9pZAorc2hfZW5jb2Rl X3NlY3Rpb25faW5mbyAodHJlZSBkZWNsLCBydHggcnRsLCBpbnQgZmlyc3Qp Cit7CisgIGRlZmF1bHRfZW5jb2RlX3NlY3Rpb25faW5mbyAoZGVjbCwgcnRs LCBmaXJzdCk7CisKKyAgaWYgKFRSRUVfQ09ERSAoZGVjbCkgPT0gRlVOQ1RJ T05fREVDTAorICAgICAgJiYgc2gyYV9mdW5jdGlvbl92ZWN0b3JfcCAoZGVj bCkgJiYgVEFSR0VUX1NIMkEpCisgICAgU1lNQk9MX1JFRl9GTEFHUyAoWEVY UCAocnRsLCAwKSkgfD0gU1lNQk9MX0ZMQUdfRlVOQ1ZFQ19GVU5DVElPTjsK K30KKwogLyogTGlrZSBmb3JjZV9vcGVyYW5kLCBidXQgZ3VhcmFudGVlcyB0 aGF0IFZBTFVFIGVuZHMgdXAgaW4gVEFSR0VULiAgKi8KIHN0YXRpYyB2b2lk CiBmb3JjZV9pbnRvIChydHggdmFsdWUsIHJ0eCB0YXJnZXQpCkBAIC01NzY0 LDcgKzU4MDEsMTYgQEAgcHVzaF9yZWdzIChIQVJEX1JFR19TRVQgKm1hc2ss IGludCBpbnRlcgogICAgICAgaWYgKGkgIT0gUFJfUkVHCiAJICAmJiAoaSAh PSBGUFNDUl9SRUcgfHwgISBza2lwX2Zwc2NyKQogCSAgJiYgVEVTVF9IQVJE X1JFR19CSVQgKCptYXNrLCBpKSkKLQlwdXNoIChpKTsKKyAgICAgICAgICAg eworICAJLyogSWYgdGhlIElTUiBoYXMgUkVTQkFOSyBhdHRyaWJ1dGUgYXNz aWduZWQsIGRvbid0IHB1c2ggYW55IG9mCisgICAJICAgdGhlIGZvbGxvd2lu ZyByZWdpc3RlcnMgLSBSMC1SMTQsIE1BQ0gsIE1BQ0wgYW5kIEdCUi4gICov CisgICAgICBpZiAoISAoc2hfY2Z1bl9yZXNiYW5rX2hhbmRsZXJfcCAoKQor CSAgICAgJiYgKChpID49IEZJUlNUX0dFTkVSQUxfUkVHICYmIGkgPCBMQVNU X0dFTkVSQUxfUkVHKQorCQkgfHwgaSA9PSBNQUNIX1JFRworCQkgfHwgaSA9 PSBNQUNMX1JFRworCQkgfHwgaSA9PSBHQlJfUkVHKSkpCisJICBwdXNoIChp KTsKKyAgCX0KICAgICB9CiAKICAgLyogUHVzaCBiYW5rZWQgcmVnaXN0ZXJz IGxhc3QgdG8gaW1wcm92ZSBkZWxheSBzbG90IG9wcG9ydHVuaXRpZXMuICAq LwpAQCAtNTc3Myw3ICs1ODE5LDggQEAgcHVzaF9yZWdzIChIQVJEX1JFR19T RVQgKm1hc2ssIGludCBpbnRlcgogICAgICAgaWYgKFRFU1RfSEFSRF9SRUdf QklUICgqbWFzaywgaSkpCiAJcHVzaCAoaSk7CiAKLSAgaWYgKFRFU1RfSEFS RF9SRUdfQklUICgqbWFzaywgUFJfUkVHKSkKKyAgLyogRG9uJ3QgcHVzaCBQ UiByZWdpc3RlciBmb3IgYW4gSVNSIHdpdGggUkVTQkFOSyBhdHRyaWJ1dGUg YXNzaWduZWQuICAqLworICBpZiAoVEVTVF9IQVJEX1JFR19CSVQgKCptYXNr LCBQUl9SRUcpICYmICFzaF9jZnVuX3Jlc2JhbmtfaGFuZGxlcl9wICgpKQog ICAgIHB1c2ggKFBSX1JFRyk7CiB9CiAKQEAgLTY3MDIsNyArNjc0OSwxMCBA QCBzaF9leHBhbmRfZXBpbG9ndWUgKGJvb2wgc2liY2FsbF9wKQogICAgICAg aW50IGxhc3RfcmVnOwogCiAgICAgICBzYXZlX3NpemUgPSAwOwotICAgICAg aWYgKFRFU1RfSEFSRF9SRUdfQklUIChsaXZlX3JlZ3NfbWFzaywgUFJfUkVH KSkKKwkvKiBGb3IgYW4gSVNSIHdpdGggUkVTQkFOSyBhdHRyaWJ1dGUgYXNz aWduZWQsIGRvbid0IHBvcCBQUgorCSAgIHJlZ2lzdGVyLiAgKi8KKyAgICAg IGlmIChURVNUX0hBUkRfUkVHX0JJVCAobGl2ZV9yZWdzX21hc2ssIFBSX1JF RykKKwkgICYmICFzaF9jZnVuX3Jlc2JhbmtfaGFuZGxlcl9wICgpKQkKIAl7 CiAJICBpZiAoIWZyYW1lX3BvaW50ZXJfbmVlZGVkKQogCSAgICBlbWl0X2lu c24gKGdlbl9ibG9ja2FnZSAoKSk7CkBAIC02NzMwLDcgKzY3ODAsMTUgQEAg c2hfZXhwYW5kX2VwaWxvZ3VlIChib29sIHNpYmNhbGxfcCkKIAkgICAgICAm JiBoYXJkX3JlZ19zZXRfaW50ZXJzZWN0X3AgKGxpdmVfcmVnc19tYXNrLAog CQkJCQkgIHJlZ19jbGFzc19jb250ZW50c1tERl9SRUdTXSkpCiAJICAgIGZw c2NyX2RlZmVycmVkID0gMTsKLQkgIGVsc2UgaWYgKGogIT0gUFJfUkVHICYm IFRFU1RfSEFSRF9SRUdfQklUIChsaXZlX3JlZ3NfbWFzaywgaikpCisJICAv KiBGb3IgYW4gSVNSIHdpdGggUkVTQkFOSyBhdHRyaWJ1dGUgYXNzaWduZWQs IGRvbid0IHBvcAorCSAgICAgZm9sbG93aW5nIHJlZ2lzdGVycywgUjAtUjE0 LCBNQUNILCBNQUNMIGFuZCBHQlIuICAqLworCSAgZWxzZSBpZiAoaiAhPSBQ Ul9SRUcgJiYgVEVTVF9IQVJEX1JFR19CSVQgKGxpdmVfcmVnc19tYXNrLCBq KSAKKwkJICAgJiYgISAoc2hfY2Z1bl9yZXNiYW5rX2hhbmRsZXJfcCAoKQor CQkJICYmICgoaiA+PSBGSVJTVF9HRU5FUkFMX1JFRworCQkJICAgICAgJiYg aiA8IExBU1RfR0VORVJBTF9SRUcpCisJCQkgICAgICB8fCBqID09IE1BQ0hf UkVHCisJCQkgICAgICB8fCBqID09IE1BQ0xfUkVHCisJCQkgICAgICB8fCBq ID09IEdCUl9SRUcpKSkKIAkgICAgcG9wIChqKTsKIAogCSAgaWYgKGogPT0g RklSU1RfRlBfUkVHICYmIGZwc2NyX2RlZmVycmVkKQpAQCAtNzkwMSwxMSAr Nzk1OSwxMyBAQCBzaF9pbnNlcnRfYXR0cmlidXRlcyAodHJlZSBub2RlLCB0 cmVlICphCiAJICAgamF2YSBmcm9udGVuZC4gICovCiAJYXR0cnMKIAkgID0g dHJlZV9jb25zIChnZXRfaWRlbnRpZmllcigiaW50ZXJydXB0X2hhbmRsZXIi KSwgTlVMTF9UUkVFLCBhdHRycyk7Ci0gICAgICAvKiBIb3dldmVyLCBmb3Ig c3Bfc3dpdGNoLCB0cmFwX2V4aXQgYW5kIG5vc2F2ZV9sb3dfcmVncywgaWYg dGhlCi0JIGludGVycnVwdCBhdHRyaWJ1dGUgaXMgbWlzc2luZywgd2UgaWdu b3JlIHRoZSBhdHRyaWJ1dGUgYW5kIHdhcm4uICAqLworICAgICAgLyogSG93 ZXZlciwgZm9yIHNwX3N3aXRjaCwgdHJhcF9leGl0LCBub3NhdmVfbG93X3Jl Z3MgYW5kIHJlc2JhbmssCisJIGlmIHRoZSBpbnRlcnJ1cHQgYXR0cmlidXRl IGlzIG1pc3NpbmcsIHdlIGlnbm9yZSB0aGUgYXR0cmlidXRlCisJIGFuZCB3 YXJuLiAgKi8KICAgICAgIGVsc2UgaWYgKGxvb2t1cF9hdHRyaWJ1dGUgKCJz cF9zd2l0Y2giLCBhdHRycykKIAkgICAgICAgfHwgbG9va3VwX2F0dHJpYnV0 ZSAoInRyYXBfZXhpdCIsIGF0dHJzKQotCSAgICAgICB8fCBsb29rdXBfYXR0 cmlidXRlICgibm9zYXZlX2xvd19yZWdzIiwgYXR0cnMpKQorCSAgICAgICB8 fCBsb29rdXBfYXR0cmlidXRlICgibm9zYXZlX2xvd19yZWdzIiwgYXR0cnMp CisJICAgICAgIHx8IGxvb2t1cF9hdHRyaWJ1dGUgKCJyZXNiYW5rIiwgYXR0 cnMpKQogCXsKIAkgIHRyZWUgKnRhaWw7CiAKQEAgLTc5MTMsNyArNzk3Myw4 IEBAIHNoX2luc2VydF9hdHRyaWJ1dGVzICh0cmVlIG5vZGUsIHRyZWUgKmEK IAkgICAgewogCSAgICAgIGlmIChpc19hdHRyaWJ1dGVfcCAoInNwX3N3aXRj aCIsIFRSRUVfUFVSUE9TRSAoYXR0cnMpKQogCQkgIHx8IGlzX2F0dHJpYnV0 ZV9wICgidHJhcF9leGl0IiwgVFJFRV9QVVJQT1NFIChhdHRycykpCi0JCSAg fHwgaXNfYXR0cmlidXRlX3AgKCJub3NhdmVfbG93X3JlZ3MiLCBUUkVFX1BV UlBPU0UgKGF0dHJzKSkpCisJCSAgfHwgaXNfYXR0cmlidXRlX3AgKCJub3Nh dmVfbG93X3JlZ3MiLCBUUkVFX1BVUlBPU0UgKGF0dHJzKSkKKwkJICB8fCBp c19hdHRyaWJ1dGVfcCAoInJlc2JhbmsiLCBUUkVFX1BVUlBPU0UgKGF0dHJz KSkpCiAJCXdhcm5pbmcgKE9QVF9XYXR0cmlidXRlcywKIAkJCSAiJXFzIGF0 dHJpYnV0ZSBvbmx5IGFwcGxpZXMgdG8gaW50ZXJydXB0IGZ1bmN0aW9ucyIs CiAJCQkgSURFTlRJRklFUl9QT0lOVEVSIChUUkVFX1BVUlBPU0UgKGF0dHJz KSkpOwpAQCAtNzk2MCw2ICs4MDIxLDggQEAgc2hfaW5zZXJ0X2F0dHJpYnV0 ZXMgKHRyZWUgbm9kZSwgdHJlZSAqYQogICAgcmVuZXNhcyAtLSB1c2UgUmVu ZXNhcyBjYWxsaW5nL2xheW91dCBjb252ZW50aW9ucyAoZnVuY3Rpb25zIGFu ZAogICAgc3RydWN0dXJlcykuCiAKKyAgIHJlc2JhbmsgLS0gSW4gY2FzZSBv ZiBhbiBJU1IsIHVzZSBhIHJlZ2lzdGVyIGJhbmsgdG8gc2F2ZSByZWdpc3Rl cnMKKyAgIFIwLVIxNCwgTUFDSCwgTUFDTCwgR0JSIGFuZCBQUi4gIFRoaXMg aXMgdXNlZnVsIG9ubHkgb24gU0gyQSB0YXJnZXRzLgogKi8KIAogY29uc3Qg c3RydWN0IGF0dHJpYnV0ZV9zcGVjIHNoX2F0dHJpYnV0ZV90YWJsZVtdID0K QEAgLTc5NzEsNiArODAzNCw4IEBAIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVf c3BlYyBzaF9hdHRyaWJ1dGUKICAgeyAicmVuZXNhcyIsICAgICAgICAgICAw LCAwLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHNoX2hhbmRsZV9yZW5lc2FzX2F0 dHJpYnV0ZSB9LAogICB7ICJ0cmFwYV9oYW5kbGVyIiwgICAgIDAsIDAsIHRy dWUsICBmYWxzZSwgZmFsc2UsIHNoX2hhbmRsZV9pbnRlcnJ1cHRfaGFuZGxl cl9hdHRyaWJ1dGUgfSwKICAgeyAibm9zYXZlX2xvd19yZWdzIiwgICAwLCAw LCB0cnVlLCAgZmFsc2UsIGZhbHNlLCBzaF9oYW5kbGVfaW50ZXJydXB0X2hh bmRsZXJfYXR0cmlidXRlIH0sCisgIHsgInJlc2JhbmsiLCAgICAgICAgICAg MCwgMCwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgc2hfaGFuZGxlX3Jlc2Jhbmtf aGFuZGxlcl9hdHRyaWJ1dGUgfSwKKyAgeyAiZnVuY3Rpb25fdmVjdG9yIiwg ICAxLCAxLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCBzaDJhX2hhbmRsZV9mdW5j dGlvbl92ZWN0b3JfaGFuZGxlcl9hdHRyaWJ1dGUgfSwKICNpZmRlZiBTWU1C SUFOCiAgIC8qIFN5bWJpYW4gc3VwcG9ydCBhZGRzIHRocmVlIG5ldyBhdHRy aWJ1dGVzOgogICAgICBkbGxleHBvcnQgLSBmb3IgZXhwb3J0aW5nIGEgZnVu Y3Rpb24vdmFyaWFibGUgdGhhdCB3aWxsIGxpdmUgaW4gYSBkbGwKQEAgLTc5 ODUsMTggKzgwNTAsNDEgQEAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9zcGVj IHNoX2F0dHJpYnV0ZQogICB7IE5VTEwsICAgICAgICAgICAgICAgIDAsIDAs IGZhbHNlLCBmYWxzZSwgZmFsc2UsIE5VTEwgfQogfTsKIAorLyogSGFuZGxl IGEgJ3Jlc2JhbmsnIGF0dHJpYnV0ZS4gICovCitzdGF0aWMgdHJlZQorc2hf aGFuZGxlX3Jlc2JhbmtfaGFuZGxlcl9hdHRyaWJ1dGUgKHRyZWUgKiBub2Rl LCB0cmVlIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdHJlZSBhcmdzIEFUVFJJQlVURV9VTlVTRUQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzIEFUVFJJQlVU RV9VTlVTRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYm9vbCAqIG5vX2FkZF9hdHRycykKK3sKKyAgaWYgKCFUQVJHRVRfU0gy QSkKKyAgICB7CisgICAgICB3YXJuaW5nIChPUFRfV2F0dHJpYnV0ZXMsICIl cXMgYXR0cmlidXRlIGlzIHN1cHBvcnRlZCBvbmx5IGZvciBTSDJBIiwKKyAg ICAgICAgICAgICAgIElERU5USUZJRVJfUE9JTlRFUiAobmFtZSkpOworICAg ICAgKm5vX2FkZF9hdHRycyA9IHRydWU7CisgICAgfQorICBpZiAoVFJFRV9D T0RFICgqbm9kZSkgIT0gRlVOQ1RJT05fREVDTCkKKyAgICB7CisgICAgICB3 YXJuaW5nIChPUFRfV2F0dHJpYnV0ZXMsICIlcXMgYXR0cmlidXRlIG9ubHkg YXBwbGllcyB0byBmdW5jdGlvbnMiLAorICAgICAgICAgICAgICAgSURFTlRJ RklFUl9QT0lOVEVSIChuYW1lKSk7CisgICAgICAqbm9fYWRkX2F0dHJzID0g dHJ1ZTsKKyAgICB9CisKKyAgcmV0dXJuIE5VTExfVFJFRTsKK30KKwogLyog SGFuZGxlIGFuICJpbnRlcnJ1cHRfaGFuZGxlciIgYXR0cmlidXRlOyBhcmd1 bWVudHMgYXMgaW4KICAgIHN0cnVjdCBhdHRyaWJ1dGVfc3BlYy5oYW5kbGVy LiAgKi8KIHN0YXRpYyB0cmVlCiBzaF9oYW5kbGVfaW50ZXJydXB0X2hhbmRs ZXJfYXR0cmlidXRlICh0cmVlICpub2RlLCB0cmVlIG5hbWUsCi0JCQkJICAg ICAgIHRyZWUgYXJncyBBVFRSSUJVVEVfVU5VU0VELAotCQkJCSAgICAgICBp bnQgZmxhZ3MgQVRUUklCVVRFX1VOVVNFRCwKLQkJCQkgICAgICAgYm9vbCAq bm9fYWRkX2F0dHJzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdHJlZSBhcmdzIEFUVFJJQlVURV9VTlVTRUQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MgQVRU UklCVVRFX1VOVVNFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJvb2wgKm5vX2FkZF9hdHRycykKIHsKICAgaWYgKFRSRUVf Q09ERSAoKm5vZGUpICE9IEZVTkNUSU9OX0RFQ0wpCiAgICAgewogICAgICAg d2FybmluZyAoT1BUX1dhdHRyaWJ1dGVzLCAiJXFzIGF0dHJpYnV0ZSBvbmx5 IGFwcGxpZXMgdG8gZnVuY3Rpb25zIiwKLQkgICAgICAgSURFTlRJRklFUl9Q T0lOVEVSIChuYW1lKSk7CisgICAgICAgICAgICAgICBJREVOVElGSUVSX1BP SU5URVIgKG5hbWUpKTsKICAgICAgICpub19hZGRfYXR0cnMgPSB0cnVlOwog ICAgIH0KICAgZWxzZSBpZiAoVEFSR0VUX1NIQ09NUEFDVCkKQEAgLTgwMDgs NiArODA5Niw5NiBAQCBzaF9oYW5kbGVfaW50ZXJydXB0X2hhbmRsZXJfYXR0 cmlidXRlICh0CiAgIHJldHVybiBOVUxMX1RSRUU7CiB9CiAKKy8qIEhhbmRs ZSBhbiAnZnVuY3Rpb25fdmVjdG9yJyBhdHRyaWJ1dGU7IGFyZ3VtZW50cyBh cyBpbgorICAgc3RydWN0IGF0dHJpYnV0ZV9zcGVjLmhhbmRsZXIuICAqLwor c3RhdGljIHRyZWUKK3NoMmFfaGFuZGxlX2Z1bmN0aW9uX3ZlY3Rvcl9oYW5k bGVyX2F0dHJpYnV0ZSAodHJlZSAqIG5vZGUsIHRyZWUgbmFtZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJl ZSBhcmdzIEFUVFJJQlVURV9VTlVTRUQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncyBBVFRSSUJV VEVfVU5VU0VELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBib29sICogbm9fYWRkX2F0dHJzKQoreworICBpZiAo IVRBUkdFVF9TSDJBKQorICAgIHsKKyAgICAgIHdhcm5pbmcgKE9QVF9XYXR0 cmlidXRlcywgIiVxcyBhdHRyaWJ1dGUgb25seSBhcHBsaWVzIHRvIFNIMkEi LAorICAgICAgICAgICAgICAgSURFTlRJRklFUl9QT0lOVEVSIChuYW1lKSk7 CisgICAgICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsKKyAgICB9CisgIGVsc2Ug aWYgKFRSRUVfQ09ERSAoKm5vZGUpICE9IEZVTkNUSU9OX0RFQ0wpCisgICAg eworICAgICAgd2FybmluZyAoT1BUX1dhdHRyaWJ1dGVzLCAiJXFzIGF0dHJp YnV0ZSBvbmx5IGFwcGxpZXMgdG8gZnVuY3Rpb25zIiwKKyAgICAgICAgICAg ICAgIElERU5USUZJRVJfUE9JTlRFUiAobmFtZSkpOworICAgICAgKm5vX2Fk ZF9hdHRycyA9IHRydWU7CisgICAgfQorICBlbHNlIGlmIChUUkVFX0NPREUg KFRSRUVfVkFMVUUgKGFyZ3MpKSAhPSBJTlRFR0VSX0NTVCkKKyAgICB7Cisg ICAgICAvKiBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIGNvbnN0YW50IGludGVn ZXIuICAqLworICAgICAgd2FybmluZyAoT1BUX1dhdHRyaWJ1dGVzLAorICAg ICAgICAgICAgICAgImAlcycgYXR0cmlidXRlIGFyZ3VtZW50IG5vdCBhbiBp bnRlZ2VyIGNvbnN0YW50IiwKKyAgICAgICAgICAgICAgIElERU5USUZJRVJf UE9JTlRFUiAobmFtZSkpOworICAgICAgKm5vX2FkZF9hdHRycyA9IHRydWU7 CisgICAgfQorICBlbHNlIGlmIChUUkVFX0lOVF9DU1RfTE9XIChUUkVFX1ZB TFVFIChhcmdzKSkgPiAyNTUpCisgICAgeworICAgICAgLyogVGhlIGFyZ3Vt ZW50IHZhbHVlIG11c3QgYmUgYmV0d2VlbiAwIHRvIDI1NS4gICovCisgICAg ICB3YXJuaW5nIChPUFRfV2F0dHJpYnV0ZXMsCisgICAgICAgICAgICAgICAi YCVzJyBhdHRyaWJ1dGUgYXJndW1lbnQgc2hvdWxkIGJlIGJldHdlZW4gMCB0 byAyNTUiLAorICAgICAgICAgICAgICAgSURFTlRJRklFUl9QT0lOVEVSIChu YW1lKSk7CisgICAgICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsKKyAgICB9Cisg IHJldHVybiBOVUxMX1RSRUU7Cit9CisKKy8qIFJldHVybnMgMSBpZiBjdXJy ZW50IGZ1bmN0aW9uIGhhcyBiZWVuIGFzc2lnbmVkIHRoZSBhdHRyaWJ1dGUK KyAgICdmdW5jdGlvbl92ZWN0b3InLiAgKi8KK2ludAorc2gyYV9pc19mdW5j dGlvbl92ZWN0b3JfY2FsbCAocnR4IHgpCit7CisgIGlmIChHRVRfQ09ERSAo eCkgPT0gU1lNQk9MX1JFRgorICAgICAgJiYgKFNZTUJPTF9SRUZfRkxBR1Mg KHgpICYgU1lNQk9MX0ZMQUdfRlVOQ1ZFQ19GVU5DVElPTikpCisgICAgewor ICAgICAgdHJlZSB0ciA9IFNZTUJPTF9SRUZfREVDTCAoeCk7CisKKyAgICAg IGlmIChzaDJhX2Z1bmN0aW9uX3ZlY3Rvcl9wICh0cikpCisgICAgICAgIHJl dHVybiAxOworICAgIH0KKworICByZXR1cm4gMDsKK30KKworLyogUmV0dXJu cyB0aGUgZnVuY3Rpb24gdmVjdG9yIG51bWJlciwgaWYgdGhlIHRoZSBhdHRy aWJ1dGUKKyAgICdmdW5jdGlvbl92ZWN0b3InIGlzIGFzc2lnbmVkLCBvdGhl cndpc2UgcmV0dXJucyB6ZXJvLiAgKi8KK2ludAorc2gyYV9nZXRfZnVuY3Rp b25fdmVjdG9yX251bWJlciAocnR4IHgpCit7CisgIGludCBudW07CisgIHRy ZWUgbGlzdCwgdDsKKworICBpZiAoKEdFVF9DT0RFICh4KSA9PSBTWU1CT0xf UkVGKQorICAgICAgJiYgKFNZTUJPTF9SRUZfRkxBR1MgKHgpICYgU1lNQk9M X0ZMQUdfRlVOQ1ZFQ19GVU5DVElPTikpCisgICAgeworICAgICAgdCA9IFNZ TUJPTF9SRUZfREVDTCAoeCk7CisKKyAgICAgIGlmIChUUkVFX0NPREUgKHQp ICE9IEZVTkNUSU9OX0RFQ0wpCisgICAgICAgIHJldHVybiAwOworCisgICAg ICBsaXN0ID0gU0hfQVRUUklCVVRFUyAodCk7CisgICAgICB3aGlsZSAobGlz dCkKKyAgICAgICAgeworICAgICAgICAgIGlmIChpc19hdHRyaWJ1dGVfcCAo ImZ1bmN0aW9uX3ZlY3RvciIsIFRSRUVfUFVSUE9TRSAobGlzdCkpKQorICAg ICAgICAgICAgeworICAgICAgICAgICAgICBudW0gPSBUUkVFX0lOVF9DU1Rf TE9XIChUUkVFX1ZBTFVFIChUUkVFX1ZBTFVFIChsaXN0KSkpOworICAgICAg ICAgICAgICByZXR1cm4gbnVtOworICAgICAgICAgICAgfQorCisgICAgICAg ICAgbGlzdCA9IFRSRUVfQ0hBSU4gKGxpc3QpOworICAgICAgICB9CisKKyAg ICAgIHJldHVybiAwOworICAgIH0KKyAgZWxzZQorICAgIHJldHVybiAwOwor fQorCiAvKiBIYW5kbGUgYW4gInNwX3N3aXRjaCIgYXR0cmlidXRlOyBhcmd1 bWVudHMgYXMgaW4KICAgIHN0cnVjdCBhdHRyaWJ1dGVfc3BlYy5oYW5kbGVy LiAgKi8KIHN0YXRpYyB0cmVlCkBAIC04MDk4LDYgKzgyNzYsMzkgQEAgc2hf Y2Z1bl9pbnRlcnJ1cHRfaGFuZGxlcl9wICh2b2lkKQogCSAgIT0gTlVMTF9U UkVFKTsKIH0KIAorLyogUmV0dXJucyAxIGlmIEZVTkMgaGFzIGJlZW4gYXNz aWduZWQgdGhlIGF0dHJpYnV0ZQorICAgImZ1bmN0aW9uX3ZlY3RvciIuICAq LworaW50CitzaDJhX2Z1bmN0aW9uX3ZlY3Rvcl9wICh0cmVlIGZ1bmMpCit7 CisgIHRyZWUgbGlzdDsKKyAgaWYgKFRSRUVfQ09ERSAoZnVuYykgIT0gRlVO Q1RJT05fREVDTCkKKyAgICByZXR1cm4gMDsKKworICBsaXN0ID0gU0hfQVRU UklCVVRFUyAoZnVuYyk7CisgIHdoaWxlIChsaXN0KQorICAgIHsKKyAgICAg IGlmIChpc19hdHRyaWJ1dGVfcCAoImZ1bmN0aW9uX3ZlY3RvciIsIFRSRUVf UFVSUE9TRSAobGlzdCkpKQorICAgICAgICByZXR1cm4gMTsKKworICAgICAg bGlzdCA9IFRSRUVfQ0hBSU4gKGxpc3QpOworICAgIH0KKyAgcmV0dXJuIDA7 Cit9CisKKy8qIFJldHVybnMgVFJVRSBpZiBnaXZlbiB0cmVlIGhhcyB0aGUg InJlc2JhbmsiIGF0dHJpYnV0ZS4gICovCisKK2ludAorc2hfY2Z1bl9yZXNi YW5rX2hhbmRsZXJfcCAodm9pZCkKK3sKKyAgcmV0dXJuICgobG9va3VwX2F0 dHJpYnV0ZSAoInJlc2JhbmsiLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBERUNMX0FUVFJJQlVURVMgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCkp CisgICAgICAgICAgICE9IE5VTExfVFJFRSkKKyAgICAgICAgICAmJiAobG9v a3VwX2F0dHJpYnV0ZSAoImludGVycnVwdF9oYW5kbGVyIiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgREVDTF9BVFRSSUJVVEVTIChjdXJy ZW50X2Z1bmN0aW9uX2RlY2wpKQorICAgICAgICAgICAgICAhPSBOVUxMX1RS RUUpICYmIFRBUkdFVF9TSDJBKTsKK30KKwogLyogSW1wbGVtZW50IFRBUkdF VF9DSEVDS19QQ0hfVEFSR0VUX0ZMQUdTLiAgKi8KIAogc3RhdGljIGNvbnN0 IGNoYXIgKgpkaWZmIC11cHIgL2hvbWUvbmF2ZWVuaC90YXJzL2djYy00LjQt MjAwODAyMjIvZ2NjL2NvbmZpZy9zaC9zaC5tZCBnY2MvY29uZmlnL3NoL3No Lm1kCi0tLSAvaG9tZS9uYXZlZW5oL3RhcnMvZ2NjLTQuNC0yMDA4MDIyMi9n Y2MvY29uZmlnL3NoL3NoLm1kCTIwMDgtMDItMjEgMDU6MDU6NDEuMDAwMDAw MDAwICswNTMwCisrKyBnY2MvY29uZmlnL3NoL3NoLm1kCTIwMDgtMDMtMjQg MTI6NDM6MjIuMDAwMDAwMDAwICswNTMwCkBAIC03NDQzLDcgKzc0NDMsMTQg QEAgbGFiZWw6CiAgICAodXNlIChyZWc6UFNJIEZQU0NSX1JFRykpCiAgICAo Y2xvYmJlciAocmVnOlNJIFBSX1JFRykpXQogICAiVEFSR0VUX1NIMSIKLSAg ImpzcglAJTAlIyIKKyAgIioKKyAgIHsKKyAgICAgaWYgKFRBUkdFVF9TSDJB ICYmIChkYnJfc2VxdWVuY2VfbGVuZ3RoICgpID09IDApKQorCXJldHVybiBc Impzci9uXFx0QCUwXCI7CisgICAgIGVsc2UKKwlyZXR1cm4gXCJqc3JcXHRA JTAlI1wiOworICAgfSIKKwogICBbKHNldF9hdHRyICJ0eXBlIiAiY2FsbCIp CiAgICAoc2V0IChhdHRyICJmcF9tb2RlIikKIAkoaWZfdGhlbl9lbHNlIChl cV9hdHRyICJmcHVfc2luZ2xlIiAieWVzIikKQEAgLTc0NTEsNiArNzQ1OCwz MSBAQCBsYWJlbDoKICAgIChzZXRfYXR0ciAibmVlZHNfZGVsYXlfc2xvdCIg InllcyIpCiAgICAoc2V0X2F0dHIgImZwX3NldCIgInVua25vd24iKV0pCiAK Kzs7IFRoaXMgaXMgVEJSIHJlbGF0aXZlIGp1bXAgaW5zdHJ1Y3Rpb24gZm9y IFNIMkEgYXJjaGl0ZWN0dXJlLgorOzsgSXRzIHVzZSBpcyBlbmFibGVkIGFz c2lnbmluZyBhbiBhdHRyaWJ1dGUgImZ1bmN0aW9uX3ZlY3RvciIKKzs7IGFu ZCB0aGUgdmVjdG9yIG51bWJlciB0byBhIGZ1bmN0aW9uIGR1cmluZyBpdHMg ZGVjbGFyYXRpb24uCisKKyhkZWZpbmVfaW5zbiAiY2FsbGlfdGJyX3JlbCIK KyAgWyhjYWxsIChtZW0gKG1hdGNoX29wZXJhbmQ6U0kgMCAic3ltYm9sX3Jl Zl9vcGVyYW5kIiAiIikpCisJIChtYXRjaF9vcGVyYW5kIDEgIiIgIiIpKQor ICAgKHVzZSAocmVnOlBTSSBGUFNDUl9SRUcpKQorICAgKGNsb2JiZXIgKHJl ZzpTSSBQUl9SRUcpKV0KKyAgIlRBUkdFVF9TSDJBICYmIHNoMmFfaXNfZnVu Y3Rpb25fdmVjdG9yX2NhbGwgKG9wZXJhbmRzWzBdKSIKKyAgIioKK3sKKyAg dW5zaWduZWQgSE9TVF9XSURFX0lOVCB2ZWN0X251bTsKKyAgdmVjdF9udW0g PSBzaDJhX2dldF9mdW5jdGlvbl92ZWN0b3JfbnVtYmVyIChvcGVyYW5kc1sw XSk7CisgIG9wZXJhbmRzWzJdID0gR0VOX0lOVCAodmVjdF9udW0gKiA0KTsK KworICByZXR1cm4gXCJqc3IvblxcdEBAKCVPMix0YnIpXCI7Cit9IgorICBb KHNldF9hdHRyICJ0eXBlIiAiY2FsbCIpCisgICAoc2V0IChhdHRyICJmcF9t b2RlIikKKwkoaWZfdGhlbl9lbHNlIChlcV9hdHRyICJmcHVfc2luZ2xlIiAi eWVzIikKKwkJICAgICAgKGNvbnN0X3N0cmluZyAic2luZ2xlIikgKGNvbnN0 X3N0cmluZyAiZG91YmxlIikpKQorICAgKHNldF9hdHRyICJuZWVkc19kZWxh eV9zbG90IiAibm8iKQorICAgKHNldF9hdHRyICJmcF9zZXQiICJ1bmtub3du IildKQorCiA7OyBUaGlzIGlzIGEgcGMtcmVsIGNhbGwsIHVzaW5nIGJzcmYs IGZvciB1c2Ugd2l0aCBQSUMuCiAKIChkZWZpbmVfaW5zbiAiY2FsbGlfcGNy ZWwiCkBAIC03NTQ2LDcgKzc1NzgsMTMgQEAgbGFiZWw6CiAgICAodXNlIChy ZWc6UFNJIEZQU0NSX1JFRykpCiAgICAoY2xvYmJlciAocmVnOlNJIFBSX1JF RykpXQogICAiVEFSR0VUX1NIMSIKLSAgImpzcglAJTElIyIKKyAgIioKKyAg IHsKKyAgICAgaWYgKFRBUkdFVF9TSDJBICYmIChkYnJfc2VxdWVuY2VfbGVu Z3RoICgpID09IDApKQorCXJldHVybiBcImpzci9uXFx0QCUxXCI7CisgICAg IGVsc2UKKwlyZXR1cm4gXCJqc3JcXHRAJTElI1wiOworICAgfSIKICAgWyhz ZXRfYXR0ciAidHlwZSIgImNhbGwiKQogICAgKHNldCAoYXR0ciAiZnBfbW9k ZSIpCiAJKGlmX3RoZW5fZWxzZSAoZXFfYXR0ciAiZnB1X3NpbmdsZSIgInll cyIpCkBAIC03NTU0LDYgKzc1OTIsMzIgQEAgbGFiZWw6CiAgICAoc2V0X2F0 dHIgIm5lZWRzX2RlbGF5X3Nsb3QiICJ5ZXMiKQogICAgKHNldF9hdHRyICJm cF9zZXQiICJ1bmtub3duIildKQogCis7OyBUaGlzIGlzIFRCUiByZWxhdGl2 ZSBqdW1wIGluc3RydWN0aW9uIGZvciBTSDJBIGFyY2hpdGVjdHVyZS4KKzs7 IEl0cyB1c2UgaXMgZW5hYmxlZCBhc3NpZ25pbmcgYW4gYXR0cmlidXRlICJm dW5jdGlvbl92ZWN0b3IiCis7OyBhbmQgdGhlIHZlY3RvciBudW1iZXIgdG8g YSBmdW5jdGlvbiBkdXJpbmcgaXRzIGRlY2xhcmF0aW9uLgorCisoZGVmaW5l X2luc24gImNhbGxfdmFsdWVpX3Ricl9yZWwiCisgIFsoc2V0IChtYXRjaF9v cGVyYW5kIDAgIiIgIj1yZiIpCisJKGNhbGwgKG1lbTpTSSAobWF0Y2hfb3Bl cmFuZDpTSSAxICJzeW1ib2xfcmVmX29wZXJhbmQiICIiKSkKKwkgICAgICAo bWF0Y2hfb3BlcmFuZCAyICIiICIiKSkpCisgICAodXNlIChyZWc6UFNJIEZQ U0NSX1JFRykpCisgICAoY2xvYmJlciAocmVnOlNJIFBSX1JFRykpXQorICAi VEFSR0VUX1NIMkEgJiYgc2gyYV9pc19mdW5jdGlvbl92ZWN0b3JfY2FsbCAo b3BlcmFuZHNbMV0pIgorICAiKgoreworICB1bnNpZ25lZCBIT1NUX1dJREVf SU5UIHZlY3RfbnVtOworICB2ZWN0X251bSA9IHNoMmFfZ2V0X2Z1bmN0aW9u X3ZlY3Rvcl9udW1iZXIgKG9wZXJhbmRzWzFdKTsKKyAgb3BlcmFuZHNbM10g PSBHRU5fSU5UICh2ZWN0X251bSAqIDQpOworCisgIHJldHVybiBcImpzci9u XFx0QEAoJU8zLHRicilcIjsKK30iCisgIFsoc2V0X2F0dHIgInR5cGUiICJj YWxsIikKKyAgIChzZXQgKGF0dHIgImZwX21vZGUiKQorCShpZl90aGVuX2Vs c2UgKGVxX2F0dHIgImZwdV9zaW5nbGUiICJ5ZXMiKQorCQkgICAgICAoY29u c3Rfc3RyaW5nICJzaW5nbGUiKSAoY29uc3Rfc3RyaW5nICJkb3VibGUiKSkp CisgICAoc2V0X2F0dHIgIm5lZWRzX2RlbGF5X3Nsb3QiICJubyIpCisgICAo c2V0X2F0dHIgImZwX3NldCIgInVua25vd24iKV0pCisKIChkZWZpbmVfaW5z biAiY2FsbF92YWx1ZWlfcGNyZWwiCiAgIFsoc2V0IChtYXRjaF9vcGVyYW5k IDAgIiIgIj1yZiIpCiAJKGNhbGwgKG1lbTpTSSAobWF0Y2hfb3BlcmFuZDpT SSAxICJhcml0aF9yZWdfb3BlcmFuZCIgInIiKSkKQEAgLTc3MTUsNiArNzc3 OSwxNyBAQCBsYWJlbDoKICAgICAgIGVtaXRfaW5zbiAoZ2VuX3N5bUdPVFBM VDJyZWcgKHJlZywgWEVYUCAob3BlcmFuZHNbMF0sIDApKSk7CiAgICAgICBY RVhQIChvcGVyYW5kc1swXSwgMCkgPSByZWc7CiAgICAgfQorICBpZiAoIWZs YWdfcGljICYmIFRBUkdFVF9TSDJBCisgICAgICAmJiBHRVRfQ09ERSAob3Bl cmFuZHNbMF0pID09IE1FTQorICAgICAgJiYgR0VUX0NPREUgKFhFWFAgKG9w ZXJhbmRzWzBdLCAwKSkgPT0gU1lNQk9MX1JFRikKKyAgICB7CisgICAgICBp ZiAoc2gyYV9pc19mdW5jdGlvbl92ZWN0b3JfY2FsbCAoWEVYUCAob3BlcmFu ZHNbMF0sIDApKSkKKwl7CisJICBlbWl0X2NhbGxfaW5zbiAoZ2VuX2NhbGxp X3Ricl9yZWwgKFhFWFAgKG9wZXJhbmRzWzBdLCAwKSwKKwkJCQkJICAgICBv cGVyYW5kc1sxXSkpOworCSAgRE9ORTsKKwl9CisgICAgfQogICBpZiAoZmxh Z19waWMgJiYgVEFSR0VUX1NIMgogICAgICAgJiYgR0VUX0NPREUgKG9wZXJh bmRzWzBdKSA9PSBNRU0KICAgICAgICYmIEdFVF9DT0RFIChYRVhQIChvcGVy YW5kc1swXSwgMCkpID09IFNZTUJPTF9SRUYpCkBAIC03ODk4LDYgKzc5NzMs MTcgQEAgbGFiZWw6CiAgICAgICBlbWl0X2luc24gKGdlbl9zeW1HT1RQTFQy cmVnIChyZWcsIFhFWFAgKG9wZXJhbmRzWzFdLCAwKSkpOwogICAgICAgWEVY UCAob3BlcmFuZHNbMV0sIDApID0gcmVnOwogICAgIH0KKyAgaWYgKCFmbGFn X3BpYyAmJiBUQVJHRVRfU0gyQQorICAgICAgJiYgR0VUX0NPREUgKG9wZXJh bmRzWzFdKSA9PSBNRU0KKyAgICAgICYmIEdFVF9DT0RFIChYRVhQIChvcGVy YW5kc1sxXSwgMCkpID09IFNZTUJPTF9SRUYpCisgICAgeworICAgICAgaWYg KHNoMmFfaXNfZnVuY3Rpb25fdmVjdG9yX2NhbGwgKFhFWFAgKG9wZXJhbmRz WzFdLCAwKSkpCisJeworCSAgZW1pdF9jYWxsX2luc24gKGdlbl9jYWxsX3Zh bHVlaV90YnJfcmVsIChvcGVyYW5kc1swXSwKKwkJCQkgWEVYUCAob3BlcmFu ZHNbMV0sIDApLCBvcGVyYW5kc1syXSkpOworCSAgRE9ORTsKKwl9CisgICAg fQogICBpZiAoZmxhZ19waWMgJiYgVEFSR0VUX1NIMgogICAgICAgJiYgR0VU X0NPREUgKG9wZXJhbmRzWzFdKSA9PSBNRU0KICAgICAgICYmIEdFVF9DT0RF IChYRVhQIChvcGVyYW5kc1sxXSwgMCkpID09IFNZTUJPTF9SRUYpCkBAIC05 MjYyLDcgKzkzNDgsMTQgQEAgbW92LmxcXHQxZixyMFxcblxcCiAgICAmJiBy ZWxvYWRfY29tcGxldGVkCiAgICAmJiBsb29rdXBfYXR0cmlidXRlIChcInRy YXBfZXhpdFwiLAogCQkJREVDTF9BVFRSSUJVVEVTIChjdXJyZW50X2Z1bmN0 aW9uX2RlY2wpKSA9PSBOVUxMX1RSRUUiCi0gICIlQAklIyIKKyAgIioKKyAg eworICAgIGlmIChUQVJHRVRfU0gyQSAmJiAoZGJyX3NlcXVlbmNlX2xlbmd0 aCAoKSA9PSAwKQorCQkJJiYgIWN1cnJlbnRfZnVuY3Rpb25faW50ZXJydXB0 KQorICAgICAgIHJldHVybiBcInJ0cy9uXCI7CisgICAgZWxzZQorICAgICAg IHJldHVybiBcIiVACSUjXCI7CisgIH0iCiAgIFsoc2V0X2F0dHIgInR5cGUi ICJyZXR1cm4iKQogICAgKHNldF9hdHRyICJuZWVkc19kZWxheV9zbG90IiAi eWVzIildKQogCmRpZmYgLXVwciAvaG9tZS9uYXZlZW5oL3RhcnMvZ2NjLTQu NC0yMDA4MDIyMi9nY2MvY29uZmlnL3NoL3NoLXByb3Rvcy5oIGdjYy9jb25m aWcvc2gvc2gtcHJvdG9zLmgKLS0tIC9ob21lL25hdmVlbmgvdGFycy9nY2Mt NC40LTIwMDgwMjIyL2djYy9jb25maWcvc2gvc2gtcHJvdG9zLmgJMjAwNy0x Mi0wNiAxODo1NTozNy4wMDAwMDAwMDAgKzA1MzAKKysrIGdjYy9jb25maWcv c2gvc2gtcHJvdG9zLmgJMjAwOC0wMy0yNCAxMjo0MzoyMi4wMDAwMDAwMDAg KzA1MzAKQEAgLTEzNCw2ICsxMzQsNyBAQCBleHRlcm4gaW50IGluaXRpYWxf ZWxpbWluYXRpb25fb2Zmc2V0IChpCiBleHRlcm4gaW50IGZsZGlfb2sgKHZv aWQpOwogZXh0ZXJuIGludCBzaF9oYXJkX3JlZ25vX3JlbmFtZV9vayAodW5z aWduZWQgaW50LCB1bnNpZ25lZCBpbnQpOwogZXh0ZXJuIGludCBzaF9jZnVu X2ludGVycnVwdF9oYW5kbGVyX3AgKHZvaWQpOworZXh0ZXJuIGludCBzaF9j ZnVuX3Jlc2JhbmtfaGFuZGxlcl9wICh2b2lkKTsKIGV4dGVybiBpbnQgc2hf YXR0cl9yZW5lc2FzX3AgKGNvbnN0X3RyZWUpOwogZXh0ZXJuIGludCBzaF9j ZnVuX2F0dHJfcmVuZXNhc19wICh2b2lkKTsKIGV4dGVybiB2b2lkIHNoX2lu aXRpYWxpemVfdHJhbXBvbGluZSAocnR4LCBydHgsIHJ0eCk7CkBAIC0xNzAs NiArMTcxLDggQEAgc3RydWN0IHNlY29uZGFyeV9yZWxvYWRfaW5mbzsKIGV4 dGVybiBlbnVtIHJlZ19jbGFzcyBzaF9zZWNvbmRhcnlfcmVsb2FkIChib29s LCBydHgsIGVudW0gcmVnX2NsYXNzLAogCQkJCQkgICBlbnVtIG1hY2hpbmVf bW9kZSwKIAkJCQkJICAgc3RydWN0IHNlY29uZGFyeV9yZWxvYWRfaW5mbyAq KTsKK2V4dGVybiBpbnQgc2gyYV9nZXRfZnVuY3Rpb25fdmVjdG9yX251bWJl ciAocnR4KTsKK2V4dGVybiBpbnQgc2gyYV9pc19mdW5jdGlvbl92ZWN0b3Jf Y2FsbCAocnR4KTsKIAogI2VuZGlmIC8qICEgR0NDX1NIX1BST1RPU19IICov CiAKLS0tIC9ob21lL25hdmVlbmgvdGFycy9nY2MtNC40LTIwMDgwMjIyL2dj Yy9kb2MvZXh0ZW5kLnRleGkJMjAwOC0wMi0xOCAwMDoyMjowNC4wMDAwMDAw MDAgKzA1MzAKKysrIGdjYy9kb2MvZXh0ZW5kLnRleGkJMjAwOC0wMy0yNCAx Mjo0Nzo0Ni4wMDAwMDAwMDAgKzA1MzAKQEAgLTIyOTAsMTYgKzIyOTAsMzMg QEAgaXMgdXNlZC4gIEB4cmVme0MgRGlhbGVjdCBPcHRpb25zLCxPcHRpbwog Q29udHJvbGxpbmcgQyBEaWFsZWN0fS4KIAogQGl0ZW0gZnVuY3Rpb25fdmVj dG9yCi1AY2luZGV4IGNhbGxpbmcgZnVuY3Rpb25zIHRocm91Z2ggdGhlIGZ1 bmN0aW9uIHZlY3RvciBvbiBIOC8zMDAsIE0xNkMsIGFuZCBNMzJDIHByb2Nl c3NvcnMKK0BjaW5kZXggY2FsbGluZyBmdW5jdGlvbnMgdGhyb3VnaCB0aGUg ZnVuY3Rpb24gdmVjdG9yIG9uIEg4LzMwMCwgTTE2QywgTTMyQyBhbmQgU0gy QSBwcm9jZXNzb3JzCiBVc2UgdGhpcyBhdHRyaWJ1dGUgb24gdGhlIEg4LzMw MCwgSDgvMzAwSCwgYW5kIEg4UyB0byBpbmRpY2F0ZSB0aGF0IHRoZSBzcGVj aWZpZWQKIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgdGhyb3VnaCB0aGUg ZnVuY3Rpb24gdmVjdG9yLiAgQ2FsbGluZyBhCiBmdW5jdGlvbiB0aHJvdWdo IHRoZSBmdW5jdGlvbiB2ZWN0b3Igd2lsbCByZWR1Y2UgY29kZSBzaXplLCBo b3dldmVyOwogdGhlIGZ1bmN0aW9uIHZlY3RvciBoYXMgYSBsaW1pdGVkIHNp emUgKG1heGltdW0gMTI4IGVudHJpZXMgb24gdGhlIEg4LzMwMAogYW5kIDY0 IGVudHJpZXMgb24gdGhlIEg4LzMwMEggYW5kIEg4UykgYW5kIHNoYXJlcyBz cGFjZSB3aXRoIHRoZSBpbnRlcnJ1cHQgdmVjdG9yLgogCitJbiBTSDJBIHRh cmdldCwgdGhpcyBhdHRyaWJ1dGUgZGVjbGFyZXMgYSBmdW5jdGlvbiB0byBi ZSBjYWxsZWQgdXNpbmcgdGhlCitUQlIgcmVsYXRpdmUgYWRkcmVzc2luZyBt b2RlLiAgVGhlIGFyZ3VtZW50IHRvIHRoaXMgYXR0cmlidXRlIGlzIHRoZSBl bnRyeQorbnVtYmVyIG9mIHRoZSBzYW1lIGZ1bmN0aW9uIGluIGEgdmVjdG9y IHRhYmxlIGNvbnRhaW5pbmcgYWxsIHRoZSBUQlIKK3JlbGF0aXZlIGFkZHJl c3NhYmxlIGZ1bmN0aW9ucy4gIEZvciB0aGUgc3VjY2Vzc2Z1bCBqdW1wLCBy ZWdpc3RlciBUQlIKK3Nob3VsZCBjb250YWluIHRoZSBzdGFydCBhZGRyZXNz IG9mIHRoaXMgVEJSIHJlbGF0aXZlIHZlY3RvciB0YWJsZS4KK0luIHRoZSBz dGFydHVwIHJvdXRpbmUgb2YgdGhlIHVzZXIgYXBwbGljYXRpb24sIHVzZXIg bmVlZHMgdG8gY2FyZSBvZiB0aGlzCitUQlIgcmVnaXN0ZXIgaW5pdGlhbGl6 YXRpb24uICBUaGUgVEJSIHJlbGF0aXZlIHZlY3RvciB0YWJsZSBjYW4gaGF2 ZSBhdAorbWF4IDI1NiBmdW5jdGlvbiBlbnRyaWVzLiAgVGhlIGp1bXBzIHRv IHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGJlIGdlbmVyYXRlZAordXNpbmcgYSBT SDJBIHNwZWNpZmljLCBub24gZGVsYXllZCBicmFuY2ggaW5zdHJ1Y3Rpb24g IkpTUi9OIEBAKGRpc3A4LFRCUikuCiBZb3UgbXVzdCB1c2UgR0FTIGFuZCBH TEQgZnJvbSBHTlUgYmludXRpbHMgdmVyc2lvbiAyLjcgb3IgbGF0ZXIgZm9y CiB0aGlzIGF0dHJpYnV0ZSB0byB3b3JrIGNvcnJlY3RseS4KIAorUGxlYXNl IHJlZmVyIHRoZSBleGFtcGxlIG9mIE0xNkMgdGFyZ2V0LCB0byBzZWUgdGhl IHVzZSBvZiB0aGlzCithdHRyaWJ1dGUgd2hpbGUgZGVjbGFyaW5nIGEgZnVu Y3Rpb24sCisKK0luIGFuIGFwcGxpY2F0aW9uLCBmb3IgYSBmdW5jdGlvbiBi ZWluZyBjYWxsZWQgb25jZSwgdGhpcyBhdHRyaWJ1dGUgd2lsbAorc2F2ZSBh dCBsZWFzdCA4IGJ5dGVzIG9mIGNvZGU7IGFuZCBpZiBvdGhlciBzdWNjZXNz aXZlIGNhbGxzIGFyZSBiZWluZworbWFkZSB0byB0aGUgc2FtZSBmdW5jdGlv biwgaXQgd2lsbCBzYXZlIDIgYnl0ZXMgb2YgY29kZSBwZXIgZWFjaCBvZiB0 aGVzZQorY2FsbHMuCisKIE9uIE0xNkMvTTMyQyB0YXJnZXRzLCB0aGUgQGNv ZGV7ZnVuY3Rpb25fdmVjdG9yfSBhdHRyaWJ1dGUgZGVjbGFyZXMgYQogc3Bl Y2lhbCBwYWdlIHN1YnJvdXRpbmUgY2FsbCBmdW5jdGlvbi4gVXNlIG9mIHRo aXMgYXR0cmlidXRlIHJlZHVjZXMKIHRoZSBjb2RlIHNpemUgYnkgMiBieXRl cyBmb3IgZWFjaCBjYWxsIGdlbmVyYXRlZCB0byB0aGUKQEAgLTI3MTMsNiAr MjczMCwxOSBAQCBudW1iZXIgb2YgcmVnaXN0ZXJzIGF2YWlsYWJsZSBpZiB1 c2VkIGluCiBhdHRyaWJ1dGUgaXMgaW5jb21wYXRpYmxlIHdpdGggbmVzdGVk IGZ1bmN0aW9uczsgdGhpcyBpcyBjb25zaWRlcmVkIGEKIGhhcmQgZXJyb3Iu CiAKK0BpdGVtIHJlc2JhbmsKK0BjaW5kZXggQGNvZGV7cmVzYmFua30gYXR0 cmlidXRlCitPbiB0aGUgU0gyQSB0YXJnZXQsIHRoaXMgYXR0cmlidXRlIGVu YWJsZXMgdGhlIGhpZ2gtc3BlZWQgcmVnaXN0ZXIKK3NhdmluZyBhbmQgcmVz dG9yYXRpb24gdXNpbmcgYSByZWdpc3RlciBiYW5rIGZvciBAY29kZXtpbnRl cnJ1cHRfaGFuZGxlcn0KK3JvdXRpbmVzLiAgU2F2aW5nIHRvIHRoZSBiYW5r IGlzIHBlcmZvcm1lZCBhdXRvbWF0Y2lhbGx5IGFmdGVyIHRoZSBDUFUKK2Fj Y2VwdHMgYW4gaW50ZXJydXB0IHRoYXQgdXNlcyBhIHJlZ2lzdGVyIGJhbmsu CisKK1RoZSBuaW5ldGVlbiAzMi1iaXQgcmVnaXN0ZXJzIGNvbXByaXNpbmcg Z2VuZXJhbCByZWdpc3RlciBSMCB0byBSMTQsCitjb250cm9sIHJlZ2lzdGVy IEdCUiwgYW5kIHN5c3RlbSByZWdpc3RlcnMgTUFDSCwgTUFDTCwgYW5kIFBS IGFuZCB0aGUKK3ZlY3RvciB0YWJsZSBhZGRyZXNzIG9mZnNldCBhcmUgc2F2 ZWQgaW50byBhIHJlZ2lzdGVyIGJhbmsuICBSZWdpc3RlcgorYmFua3MgYXJl IHN0YWNrZWQgaW4gZmlyc3QtaW4gbGFzdC1vdXQgKEZJTE8pIHNlcXVlbmNl LiAgUmVzdG9yYXRpb24KK2Zyb20gdGhlIGJhbmsgaXMgZXhlY3V0ZWQgYnkg aXNzdWluZyBhIFJFU0JBTksgaW5zdHJ1Y3Rpb24uCisKIEBpdGVtIHJldHVy bnNfdHdpY2UKIEBjaW5kZXggQGNvZGV7cmV0dXJuc190d2ljZX0gYXR0cmli dXRlCiBUaGUgQGNvZGV7cmV0dXJuc190d2ljZX0gYXR0cmlidXRlIHRlbGxz IHRoZSBjb21waWxlciB0aGF0IGEgZnVuY3Rpb24gbWF5CmRpZmYgLXVwck4g L2hvbWUvbmF2ZWVuaC90YXJzL2djYy00LjQtMjAwODAyMjIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L3NoL3NoMmEtanNybi5jIGdjYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9zaC9zaDJhLWpzcm4uYwotLS0gL2hvbWUvbmF2ZWVuaC90 YXJzL2djYy00LjQtMjAwODAyMjIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3NoL3NoMmEtanNybi5jCTE5NzAtMDEtMDEgMDU6MzA6MDAuMDAwMDAwMDAw ICswNTMwCisrKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvc2gvc2gyYS1q c3JuLmMJMjAwOC0wMy0yNCAxMjo0MzoyMi4wMDAwMDAwMDAgKzA1MzAKQEAg LTAsMCArMSwxNiBAQAorLyogVGVzdGNhc2UgdG8gY2hlY2sgZ2VuZXJhdGlv biBvZiBhIFNIMkEgc3BlY2lmaWMgaW5zdHJ1Y3Rpb24gZm9yCisgICAnSlNS L04gQFJtJy4gICovCisvKiB7IGRnLWRvIGFzc2VtYmxlIHt0YXJnZXQgc2gq LSotKn19ICAqLworLyogeyBkZy1vcHRpb25zICItTzAiIH0gICovCisvKiB7 IGRnLXNraXAtaWYgIiIgeyAic2gqLSotKiIgfSAiKiIgIi1tMmEgLW0yYS1u b2ZwdSAtbTJhLXNpbmdsZSAtbTJhLXNpbmdsZS1vbmx5IiB9ICAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqc3IvbiJ9IH0gICovCisK K3ZvaWQgZm9vKHZvaWQpCit7Cit9CisKK3ZvaWQgYmFyKCkKK3sKKyAgZm9v KCk7Cit9CisKZGlmZiAtdXByTiAvaG9tZS9uYXZlZW5oL3RhcnMvZ2NjLTQu NC0yMDA4MDIyMi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvc2gvc2gyYS1y ZXNiYW5rLmMgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3NoL3NoMmEtcmVz YmFuay5jCi0tLSAvaG9tZS9uYXZlZW5oL3RhcnMvZ2NjLTQuNC0yMDA4MDIy Mi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvc2gvc2gyYS1yZXNiYW5rLmMJ MTk3MC0wMS0wMSAwNTozMDowMC4wMDAwMDAwMDAgKzA1MzAKKysrIGdjYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9zaC9zaDJhLXJlc2JhbmsuYwkyMDA4LTAz LTI0IDEyOjQzOjIyLjAwMDAwMDAwMCArMDUzMApAQCAtMCwwICsxLDE0IEBA CisvKiBUZXN0IGZvciByZXNiYW5rIGF0dHJpYnV0ZS4gICovCisvKiB7IGRn LWRvIGFzc2VtYmxlIHt0YXJnZXQgc2gqLSotKn19ICovCisvKiB7IGRnLXNr aXAtaWYgIiIgeyAic2gqLSotKiIgfSAiKiIgIi1tMmEgLW0yYS1ub2ZwdSAt bTJhLXNpbmdsZSAtbTJhLXNpbmdsZS1vbmx5IiB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXIgInJlc2JhbmsiIH0gfSAqLworIAorIAor ZXh0ZXJuIHZvaWQgYmFyKHZvaWQpOworIAordm9pZCBmb28odm9pZCkgX19h dHRyaWJ1dGVfXygoaW50ZXJydXB0X2hhbmRsZXIsIHJlc2JhbmspKTsKK3Zv aWQgZm9vKHZvaWQpCit7CisgIGJhcigpOworfQorCmRpZmYgLXVwck4gL2hv bWUvbmF2ZWVuaC90YXJzL2djYy00LjQtMjAwODAyMjIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L3NoL3NoMmEtcnRzbi5jIGdjYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9zaC9zaDJhLXJ0c24uYwotLS0gL2hvbWUvbmF2ZWVuaC90YXJz L2djYy00LjQtMjAwODAyMjIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3No L3NoMmEtcnRzbi5jCTE5NzAtMDEtMDEgMDU6MzA6MDAuMDAwMDAwMDAwICsw NTMwCisrKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvc2gvc2gyYS1ydHNu LmMJMjAwOC0wMy0yNCAxMjo0MzoyMi4wMDAwMDAwMDAgKzA1MzAKQEAgLTAs MCArMSwxMiBAQAorLyogVGVzdGNhc2UgdG8gY2hlY2sgZ2VuZXJhdGlvbiBv ZiBhIFNIMkEgc3BlY2lmaWMgaW5zdHJ1Y3Rpb24gZm9yCisgICAnUlRTL04n LiAgKi8KKy8qIHsgZGctZG8gYXNzZW1ibGUge3RhcmdldCBzaCotKi0qfX0g ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMCIgfSAgKi8KKy8qIHsgZGctc2tp cC1pZiAiIiB7ICJzaCotKi0qIiB9ICIqIiAiLW0yYSAtbTJhLW5vZnB1IC1t MmEtc2luZ2xlIC1tMmEtc2luZ2xlLW9ubHkiIH0gICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXIgInJ0cy9uIn0gfSAgKi8KKwordm9pZAor YmFyICh2b2lkKQoreworfQorCmRpZmYgLXVwck4gL2hvbWUvbmF2ZWVuaC90 YXJzL2djYy00LjQtMjAwODAyMjIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3NoL3NoMmEtdGJyLWp1bXAuYyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv c2gvc2gyYS10YnItanVtcC5jCi0tLSAvaG9tZS9uYXZlZW5oL3RhcnMvZ2Nj LTQuNC0yMDA4MDIyMi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvc2gvc2gy YS10YnItanVtcC5jCTE5NzAtMDEtMDEgMDU6MzA6MDAuMDAwMDAwMDAwICsw NTMwCisrKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvc2gvc2gyYS10YnIt anVtcC5jCTIwMDgtMDMtMjQgMTI6NDQ6MjQuMDAwMDAwMDAwICswNTMwCkBA IC0wLDAgKzEsMjMgQEAKKy8qIFRlc3RjYXNlIHRvIGNoZWNrIGdlbmVyYXRp b24gb2YgYSBTSDJBIHNwZWNpZmljLAorICAgVEJSIHJlbGF0aXZlIGp1bXAg aW5zdHJ1Y3Rpb24gLSAnSlNSIEBAKGRpc3A4LFRCUiknLiAgKi8KKy8qIHsg ZGctZG8gYXNzZW1ibGUge3RhcmdldCBzaCotKi0qfX0gKi8KKy8qIHsgZGct b3B0aW9ucyAiIiB9ICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAic2gqLSot KiIgfSAiKiIgIi1tMmEgLW0yYS1ub2ZwdSAtbTJhLXNpbmdsZSAtbTJhLXNp bmdsZS1vbmx5IiB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMgImpzci9uXFx0QEBcXCg0MCx0YnJcXCkiIDF9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAianNyL25cXHRA QFxcKDcyLHRiclxcKSIgMX0gfSAqLworIAorZXh0ZXJuIHZvaWQgZm9vMSAo dm9pZCkgX19hdHRyaWJ1dGVfXyAoKGZ1bmN0aW9uX3ZlY3RvcigxMCkpKTsK K2V4dGVybiB2b2lkIGZvbzIgKHZvaWQpOworZXh0ZXJuIGludCBiYXIxICh2 b2lkKSBfX2F0dHJpYnV0ZV9fICgoZnVuY3Rpb25fdmVjdG9yKDE4KSkpOwor ZXh0ZXJuIGludCBiYXIyICh2b2lkKTsKKworaW50CitiYXIoKQoreworICBm b28xKCk7CisgIGZvbzIoKTsKKworICBiYXIxKCk7CisgIGJhcjIoKTsKK30K Kwo= ------_=_NextPart_001_01C88DA5.F8557CA9--