From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgsg1.qq.com (smtpbgsg1.qq.com [54.254.200.92]) by sourceware.org (Postfix) with ESMTPS id 5ADFE385734E for ; Mon, 19 Jun 2023 21:57:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5ADFE385734E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai X-QQ-mid: bizesmtp70t1687211847t567wlzm Received: from TABLET-POE6JQHH ( [115.44.118.116]) by bizesmtp.qq.com (ESMTP) with id ; Tue, 20 Jun 2023 05:57:26 +0800 (CST) X-QQ-SSF: 01400000000000G0S000000A0000000 X-QQ-FEAT: qcKkmz/zJhxJKdSqeB3Zj3fB3bxWTMCIOjIXYZz8jsoE0BxyLzZkfxZ6RnlkN axGppnDKrkolvFHbgSwBapb1Y3P3ZuUlR+197iVEHHSt7YWRsepGa5qNmHrGntuTOfDv4v8 P1pfLOyY1R+TPtl8d1+t5BZAvEbGtuGjsaJPdxt/Rjrf2UkNn9c166Qzan9foD/FTrjWQ5U dmSEPnFjz6qB7HqgDUmJeyiWk66mxBO9zzxBdkKQY+PHmOv10OmdkdORI+mfP8cs6WuR8WG NFMai8YGjE+g71YRiGxFEHdZo2gaS6LfqWRob2BXl7dqZzVTcwLXl2Fia1Gl8gfaDZZzYVH EJmT6Nce3EfgN7L11XJNuBmi+7/5bLYLfqmqrl7+zm777CkEZFU42gH7jCE/OrNyWg/2TCT AUvd1m+3sKc= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 12084208716710859723 Date: Tue, 20 Jun 2023 05:57:27 +0800 From: =?GB2312?B?1tO+09Xc?= To: gcc-patches Cc: rguenther , richard.sandiford , "Jeff Law" , linkw Subject: Re: [PATCH] VECT: Apply LEN_MASK_{LOAD,STORE} into vectorizer References: <20230619161705.251983-1-juzhe.zhong@rivai.ai> X-Priority: 3 X-GUID: 40001939-F9B7-489B-868B-048D4CBFD7D6 X-Has-Attach: no X-Mailer: Foxmail 7.2.23.121[cn] Mime-Version: 1.0 Message-ID: <8884A7268FABF140+2023062005572673717950@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart375128544367_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-5.7 required=5.0 tests=BAYES_00,CHARSET_FARAWAY_HEADER,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,MIME_CHARSET_FARAWAY,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,TXREP,T_KAM_HTML_FONT_INVALID,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. ------=_001_NextPart375128544367_=---- Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: base64 SGksIHRoaXMgcGF0Y2ggcmVmYWN0b3JzIHRoZSBjb2RlcyBpbiB0cmVlLXZl Y3Qtc3RtdHMuY2MgaW4gY2FzZSBvZiBnaW1wbGUgSVIgZ2VuZXJhdGlvbi4N Cg0KSSByZWFsaXplIHRoZSBjb2RlcyBjaGFuZ2UgdG9vIG11Y2ggYW5kIEkg YW0gbm90IHN1cmUgd2hldGhlciB5b3UgYXJlIGhhcHB5IHdpdGggaXQuDQoN Ck9yaWdpbmFsbHksIHRoZSBjb2RlcyBhcmUgbGlrZToNCg0KaWYgKGZpbmFs X21hc2spDQogew0KICAgIGdlbmVyYXRlIElGTl9NQVNLX0xPQUQuLi4NCiB9 DQplbHNlIGlmIChsb29wX2xlbikNCnsNCiAgIGdlbmVyYXRlIElGTl9MRU5f TE9BRA0KICAgaGFuZGxlIEJJQVMuDQp9DQplbHNlDQp7IA0KTk9STUFMX0xP QUQNCn0NCg0KTm93LCBJIHJlZmFjdG9yIGl0Og0KDQppZiAoZmluYWxfbWFz ayB8fCBsb29wX2xlbikNCnsNCiAgaWYgKGdldF9sZW5fbG9hZF9zdG9yZSAo KS5leGlzaXRzICgpKQ0KICB7DQogICAgLyogTEVOX01BU0tfTE9BRCBvciBM RU5fTE9BRCAqLw0KICAgIGdldCBsZW4uLg0KICAgIGlmIChMRU5fTUFTS19M T0FEo6kNCiAgICAgew0KICAgICAgIGdldCBtYXNrLi4uDQogICAgICAgZ2Vu ZXJhdGUgSUZOX0xFTl9NQVNLX0xPQUQuLi4NCiAgICAgfQ0KICAgICBlbHNl DQogICAgICB7DQogICAgICAgIGdlbmVyYXRlIElGTl9MRU5fTE9BRC4uLg0K ICAgICAgfQ0KICAgICAgSGFuZGxlIEJJQVMuLi4uDQogIH0NCiAgZWxzZQ0K ICB7DQogICAgZ2NjX2Fzc2VydCAoZmluYWxfbWFzaykNCiAgICAvKiBNQVNL X0xPQUQgKi8NCiAgIH0NCn0NCmVsc2UgDQp7DQogTk9STUFMX0xPQUQNCn0N Cg0KVGhlIHJlYXNvbiBJIHJlZmFjdG9yIGl0IGlzIEkgZm91bmQgTEVOX01B U0tfTE9BRCBhbmQgTEVOX0xPQUQgc2hhcmUgc29tZSBjb21tb24gY29kZXMu DQpBdm9pZCBkdXBsaWNhdGUgY29kZXMgbWFrZSB0aGUgY29kZXMgbG9va3Mg cmVhc29uYWJsZS4NCg0KQm9vc3RyYXAgYW5kIFJlZ3Jlc3Npb24gaXMgb24g dGhlIHdheS4NCg0KDQpqdXpoZS56aG9uZ0ByaXZhaS5haQ0KIA0KRnJvbTog anV6aGUuemhvbmcNCkRhdGU6IDIwMjMtMDYtMjAgMDA6MTcNClRvOiBnY2Mt cGF0Y2hlcw0KQ0M6IHJndWVudGhlcjsgcmljaGFyZC5zYW5kaWZvcmQ7IEp1 LVpoZSBaaG9uZw0KU3ViamVjdDogW1BBVENIXSBWRUNUOiBBcHBseSBMRU5f TUFTS197TE9BRCxTVE9SRX0gaW50byB2ZWN0b3JpemVyDQpGcm9tOiBKdS1a aGUgWmhvbmcgPGp1emhlLnpob25nQHJpdmFpLmFpPg0KIA0KVGhpcyBwYXRj aCBpcyBhcHBseSBMRU5fTUFTS197TE9BRCxTVE9SRX0gaW50byB2ZWN0b3Jp emVyLg0KSSByZWZhY3RvciBnaW1wbGUgSVIgYnVpbGQgdG8gbWFrZSBjb2Rl cyBsb29rIGNsZWFuZXIuDQogDQpnY2MvQ2hhbmdlTG9nOg0KIA0KICAgICAg ICAqIGludGVybmFsLWZuLmNjIChleHBhbmRfcGFydGlhbF9zdG9yZV9vcHRh Yl9mbik6IEFkZCBMRU5fTUFTS197TE9BRCxTVE9SRX0gdmVjdG9yaXplciBz dXBwb3J0Lg0KICAgICAgICAoaW50ZXJuYWxfbG9hZF9mbl9wKTogRGl0dG8u DQogICAgICAgIChpbnRlcm5hbF9zdG9yZV9mbl9wKTogRGl0dG8uDQogICAg ICAgIChpbnRlcm5hbF9mbl9tYXNrX2luZGV4KTogRGl0dG8uDQogICAgICAg IChpbnRlcm5hbF9mbl9zdG9yZWRfdmFsdWVfaW5kZXgpOiBEaXR0by4NCiAg ICAgICAgKGludGVybmFsX2xlbl9sb2FkX3N0b3JlX2JpYXMpOiBEaXR0by4N CiAgICAgICAgKiBvcHRhYnMtcXVlcnkuY2MgKGNhbl92ZWNfbWFza19sb2Fk X3N0b3JlX3ApOiBEaXR0by4NCiAgICAgICAgKGdldF9sZW5fbG9hZF9zdG9y ZV9tb2RlKTogRGl0dG8uDQogICAgICAgICogdHJlZS12ZWN0LXN0bXRzLmNj IChjaGVja19sb2FkX3N0b3JlX2Zvcl9wYXJ0aWFsX3ZlY3RvcnMpOiBEaXR0 by4NCiAgICAgICAgKGdldF9hbGxfb25lc19tYXNrKTogTmV3IGZ1bmN0aW9u Lg0KICAgICAgICAodmVjdG9yaXphYmxlX3N0b3JlKTogQWRkIExFTl9NQVNL X3tMT0FELFNUT1JFfSB2ZWN0b3JpemVyIHN1cHBvcnQuDQogICAgICAgICh2 ZWN0b3JpemFibGVfbG9hZCk6IERpdHRvLg0KIA0KLS0tDQpnY2MvaW50ZXJu YWwtZm4uY2MgICAgIHwgIDM1ICsrKysrLQ0KZ2NjL29wdGFicy1xdWVyeS5j YyAgICB8ICAyNSArKystDQpnY2MvdHJlZS12ZWN0LXN0bXRzLmNjIHwgMjU5 ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tDQoz IGZpbGVzIGNoYW5nZWQsIDIxMyBpbnNlcnRpb25zKCspLCAxMDYgZGVsZXRp b25zKC0pDQogDQpkaWZmIC0tZ2l0IGEvZ2NjL2ludGVybmFsLWZuLmNjIGIv Z2NjL2ludGVybmFsLWZuLmNjDQppbmRleCBjOTExYWU3OTBjYi4uZTEwYzIx ZGU1ZjEgMTAwNjQ0DQotLS0gYS9nY2MvaW50ZXJuYWwtZm4uY2MNCisrKyBi L2djYy9pbnRlcm5hbC1mbi5jYw0KQEAgLTI5NDksNyArMjk0OSw3IEBAIGV4 cGFuZF9wYXJ0aWFsX2xvYWRfb3B0YWJfZm4gKGludGVybmFsX2ZuLCBnY2Fs bCAqc3RtdCwgY29udmVydF9vcHRhYiBvcHRhYikNCiAgKiBPUFRBQi4gICov DQpzdGF0aWMgdm9pZA0KLWV4cGFuZF9wYXJ0aWFsX3N0b3JlX29wdGFiX2Zu IChpbnRlcm5hbF9mbiwgZ2NhbGwgKnN0bXQsIGNvbnZlcnRfb3B0YWIgb3B0 YWIpDQorZXhwYW5kX3BhcnRpYWxfc3RvcmVfb3B0YWJfZm4gKGludGVybmFs X2ZuIGlmbiwgZ2NhbGwgKnN0bXQsIGNvbnZlcnRfb3B0YWIgb3B0YWIpDQp7 DQogICBjbGFzcyBleHBhbmRfb3BlcmFuZCBvcHNbNV07DQogICB0cmVlIHR5 cGUsIGxocywgcmhzLCBtYXNrdCwgYmlhc3Q7DQpAQCAtMjk1Nyw3ICsyOTU3 LDcgQEAgZXhwYW5kX3BhcnRpYWxfc3RvcmVfb3B0YWJfZm4gKGludGVybmFs X2ZuLCBnY2FsbCAqc3RtdCwgY29udmVydF9vcHRhYiBvcHRhYikNCiAgIGlu c25fY29kZSBpY29kZTsNCiAgIG1hc2t0ID0gZ2ltcGxlX2NhbGxfYXJnIChz dG10LCAyKTsNCi0gIHJocyA9IGdpbXBsZV9jYWxsX2FyZyAoc3RtdCwgMyk7 DQorICByaHMgPSBnaW1wbGVfY2FsbF9hcmcgKHN0bXQsIGludGVybmFsX2Zu X3N0b3JlZF92YWx1ZV9pbmRleCAoaWZuKSk7DQogICB0eXBlID0gVFJFRV9U WVBFIChyaHMpOw0KICAgbGhzID0gZXhwYW5kX2NhbGxfbWVtX3JlZiAodHlw ZSwgc3RtdCwgMCk7DQpAQCAtNDQzNSw2ICs0NDM1LDcgQEAgaW50ZXJuYWxf bG9hZF9mbl9wIChpbnRlcm5hbF9mbiBmbikNCiAgICAgY2FzZSBJRk5fR0FU SEVSX0xPQUQ6DQogICAgIGNhc2UgSUZOX01BU0tfR0FUSEVSX0xPQUQ6DQog ICAgIGNhc2UgSUZOX0xFTl9MT0FEOg0KKyAgICBjYXNlIElGTl9MRU5fTUFT S19MT0FEOg0KICAgICAgIHJldHVybiB0cnVlOw0KICAgICBkZWZhdWx0Og0K QEAgLTQ0NTUsNiArNDQ1Niw3IEBAIGludGVybmFsX3N0b3JlX2ZuX3AgKGlu dGVybmFsX2ZuIGZuKQ0KICAgICBjYXNlIElGTl9TQ0FUVEVSX1NUT1JFOg0K ICAgICBjYXNlIElGTl9NQVNLX1NDQVRURVJfU1RPUkU6DQogICAgIGNhc2Ug SUZOX0xFTl9TVE9SRToNCisgICAgY2FzZSBJRk5fTEVOX01BU0tfU1RPUkU6 DQogICAgICAgcmV0dXJuIHRydWU7DQogICAgIGRlZmF1bHQ6DQpAQCAtNDQ5 NCw2ICs0NDk2LDEwIEBAIGludGVybmFsX2ZuX21hc2tfaW5kZXggKGludGVy bmFsX2ZuIGZuKQ0KICAgICBjYXNlIElGTl9NQVNLX1NUT1JFX0xBTkVTOg0K ICAgICAgIHJldHVybiAyOw0KKyAgICBjYXNlIElGTl9MRU5fTUFTS19MT0FE Og0KKyAgICBjYXNlIElGTl9MRU5fTUFTS19TVE9SRToNCisgICAgICByZXR1 cm4gMzsNCisNCiAgICAgY2FzZSBJRk5fTUFTS19HQVRIRVJfTE9BRDoNCiAg ICAgY2FzZSBJRk5fTUFTS19TQ0FUVEVSX1NUT1JFOg0KICAgICAgIHJldHVy biA0Ow0KQEAgLTQ1MTksNiArNDUyNSw5IEBAIGludGVybmFsX2ZuX3N0b3Jl ZF92YWx1ZV9pbmRleCAoaW50ZXJuYWxfZm4gZm4pDQogICAgIGNhc2UgSUZO X0xFTl9TVE9SRToNCiAgICAgICByZXR1cm4gMzsNCisgICAgY2FzZSBJRk5f TEVOX01BU0tfU1RPUkU6DQorICAgICAgcmV0dXJuIDQ7DQorDQogICAgIGRl ZmF1bHQ6DQogICAgICAgcmV0dXJuIC0xOw0KICAgICB9DQpAQCAtNDU4Mywx MyArNDU5MiwzMSBAQCBpbnRlcm5hbF9sZW5fbG9hZF9zdG9yZV9iaWFzIChp bnRlcm5hbF9mbiBpZm4sIG1hY2hpbmVfbW9kZSBtb2RlKQ0Kew0KICAgb3B0 YWIgb3B0YWIgPSBkaXJlY3RfaW50ZXJuYWxfZm5fb3B0YWIgKGlmbik7DQog ICBpbnNuX2NvZGUgaWNvZGUgPSBkaXJlY3Rfb3B0YWJfaGFuZGxlciAob3B0 YWIsIG1vZGUpOw0KKyAgaW50IGJpYXNfYXJnbm8gPSAzOw0KKyAgaWYgKGlj b2RlID09IENPREVfRk9SX25vdGhpbmcpDQorICAgIHsNCisgICAgICBtYWNo aW5lX21vZGUgbWFza19tb2RlDQorID0gdGFyZ2V0bS52ZWN0b3JpemUuZ2V0 X21hc2tfbW9kZSAobW9kZSkucmVxdWlyZSAoKTsNCisgICAgICBpZiAoaWZu ID09IElGTl9MRU5fTE9BRCkNCisgew0KKyAgIC8qIFRyeSBMRU5fTUFTS19M T0FELiAgKi8NCisgICBvcHRhYiA9IGRpcmVjdF9pbnRlcm5hbF9mbl9vcHRh YiAoSUZOX0xFTl9NQVNLX0xPQUQpOw0KKyB9DQorICAgICAgZWxzZQ0KKyB7 DQorICAgLyogVHJ5IExFTl9NQVNLX1NUT1JFLiAgKi8NCisgICBvcHRhYiA9 IGRpcmVjdF9pbnRlcm5hbF9mbl9vcHRhYiAoSUZOX0xFTl9NQVNLX1NUT1JF KTsNCisgfQ0KKyAgICAgIGljb2RlID0gY29udmVydF9vcHRhYl9oYW5kbGVy IChvcHRhYiwgbW9kZSwgbWFza19tb2RlKTsNCisgICAgICBiaWFzX2FyZ25v ID0gNDsNCisgICAgfQ0KICAgaWYgKGljb2RlICE9IENPREVfRk9SX25vdGhp bmcpDQogICAgIHsNCiAgICAgICAvKiBGb3Igbm93IHdlIG9ubHkgc3VwcG9y dCBiaWFzZXMgb2YgMCBvciAtMS4gIFRyeSBib3RoIG9mIHRoZW0uICAqLw0K LSAgICAgIGlmIChpbnNuX29wZXJhbmRfbWF0Y2hlcyAoaWNvZGUsIDMsIEdF Tl9JTlQgKDApKSkNCisgICAgICBpZiAoaW5zbl9vcGVyYW5kX21hdGNoZXMg KGljb2RlLCBiaWFzX2FyZ25vLCBHRU5fSU5UICgwKSkpDQpyZXR1cm4gMDsN Ci0gICAgICBpZiAoaW5zbl9vcGVyYW5kX21hdGNoZXMgKGljb2RlLCAzLCBH RU5fSU5UICgtMSkpKQ0KKyAgICAgIGlmIChpbnNuX29wZXJhbmRfbWF0Y2hl cyAoaWNvZGUsIGJpYXNfYXJnbm8sIEdFTl9JTlQgKC0xKSkpDQpyZXR1cm4g LTE7DQogICAgIH0NCmRpZmYgLS1naXQgYS9nY2Mvb3B0YWJzLXF1ZXJ5LmNj IGIvZ2NjL29wdGFicy1xdWVyeS5jYw0KaW5kZXggMjc2Zjg0MDhkZDcuLjQz OTRkMzkxMjAwIDEwMDY0NA0KLS0tIGEvZ2NjL29wdGFicy1xdWVyeS5jYw0K KysrIGIvZ2NjL29wdGFicy1xdWVyeS5jYw0KQEAgLTU2NiwxMSArNTY2LDE0 IEBAIGNhbl92ZWNfbWFza19sb2FkX3N0b3JlX3AgKG1hY2hpbmVfbW9kZSBt b2RlLA0KICAgYm9vbCBpc19sb2FkKQ0Kew0KICAgb3B0YWIgb3AgPSBpc19s b2FkID8gbWFza2xvYWRfb3B0YWIgOiBtYXNrc3RvcmVfb3B0YWI7DQorICBv cHRhYiBsZW5fb3AgPSBpc19sb2FkID8gbGVuX21hc2tsb2FkX29wdGFiIDog bGVuX21hc2tzdG9yZV9vcHRhYjsNCiAgIG1hY2hpbmVfbW9kZSB2bW9kZTsN CiAgIC8qIElmIG1vZGUgaXMgdmVjdG9yIG1vZGUsIGNoZWNrIGl0IGRpcmVj dGx5LiAgKi8NCiAgIGlmIChWRUNUT1JfTU9ERV9QIChtb2RlKSkNCi0gICAg cmV0dXJuIGNvbnZlcnRfb3B0YWJfaGFuZGxlciAob3AsIG1vZGUsIG1hc2tf bW9kZSkgIT0gQ09ERV9GT1Jfbm90aGluZzsNCisgICAgcmV0dXJuIGNvbnZl cnRfb3B0YWJfaGFuZGxlciAob3AsIG1vZGUsIG1hc2tfbW9kZSkgIT0gQ09E RV9GT1Jfbm90aGluZw0KKyAgICB8fCBjb252ZXJ0X29wdGFiX2hhbmRsZXIg KGxlbl9vcCwgbW9kZSwgbWFza19tb2RlKQ0KKyAhPSBDT0RFX0ZPUl9ub3Ro aW5nOw0KICAgLyogT3RoZXJ3aXNlLCByZXR1cm4gdHJ1ZSBpZiB0aGVyZSBp cyBzb21lIHZlY3RvciBtb2RlIHdpdGgNCiAgICAgIHRoZSBtYXNrIGxvYWQv c3RvcmUgc3VwcG9ydGVkLiAgKi8NCkBAIC01ODQsNyArNTg3LDkgQEAgY2Fu X3ZlY19tYXNrX2xvYWRfc3RvcmVfcCAobWFjaGluZV9tb2RlIG1vZGUsDQog ICB2bW9kZSA9IHRhcmdldG0udmVjdG9yaXplLnByZWZlcnJlZF9zaW1kX21v ZGUgKHNtb2RlKTsNCiAgIGlmIChWRUNUT1JfTU9ERV9QICh2bW9kZSkNCiAg ICAgICAmJiB0YXJnZXRtLnZlY3Rvcml6ZS5nZXRfbWFza19tb2RlICh2bW9k ZSkuZXhpc3RzICgmbWFza19tb2RlKQ0KLSAgICAgICYmIGNvbnZlcnRfb3B0 YWJfaGFuZGxlciAob3AsIHZtb2RlLCBtYXNrX21vZGUpICE9IENPREVfRk9S X25vdGhpbmcpDQorICAgICAgJiYgKGNvbnZlcnRfb3B0YWJfaGFuZGxlciAo b3AsIHZtb2RlLCBtYXNrX21vZGUpICE9IENPREVfRk9SX25vdGhpbmcNCisg ICB8fCBjb252ZXJ0X29wdGFiX2hhbmRsZXIgKGxlbl9vcCwgdm1vZGUsIG1h c2tfbW9kZSkNCisgICAgICAgICE9IENPREVfRk9SX25vdGhpbmcpKQ0KICAg ICByZXR1cm4gdHJ1ZTsNCiAgIGF1dG9fdmVjdG9yX21vZGVzIHZlY3Rvcl9t b2RlczsNCkBAIC01OTIsNyArNTk3LDkgQEAgY2FuX3ZlY19tYXNrX2xvYWRf c3RvcmVfcCAobWFjaGluZV9tb2RlIG1vZGUsDQogICBmb3IgKG1hY2hpbmVf bW9kZSBiYXNlX21vZGUgOiB2ZWN0b3JfbW9kZXMpDQogICAgIGlmIChyZWxh dGVkX3ZlY3Rvcl9tb2RlIChiYXNlX21vZGUsIHNtb2RlKS5leGlzdHMgKCZ2 bW9kZSkNCiYmIHRhcmdldG0udmVjdG9yaXplLmdldF9tYXNrX21vZGUgKHZt b2RlKS5leGlzdHMgKCZtYXNrX21vZGUpDQotICYmIGNvbnZlcnRfb3B0YWJf aGFuZGxlciAob3AsIHZtb2RlLCBtYXNrX21vZGUpICE9IENPREVfRk9SX25v dGhpbmcpDQorICYmIChjb252ZXJ0X29wdGFiX2hhbmRsZXIgKG9wLCB2bW9k ZSwgbWFza19tb2RlKSAhPSBDT0RFX0ZPUl9ub3RoaW5nDQorICAgICB8fCBj b252ZXJ0X29wdGFiX2hhbmRsZXIgKGxlbl9vcCwgdm1vZGUsIG1hc2tfbW9k ZSkNCisgIT0gQ09ERV9GT1Jfbm90aGluZykpDQogICAgICAgcmV0dXJuIHRy dWU7DQogICByZXR1cm4gZmFsc2U7DQp9DQpAQCAtNjA4LDE3ICs2MTUsMjcg QEAgb3B0X21hY2hpbmVfbW9kZQ0KZ2V0X2xlbl9sb2FkX3N0b3JlX21vZGUg KG1hY2hpbmVfbW9kZSBtb2RlLCBib29sIGlzX2xvYWQpDQp7DQogICBvcHRh YiBvcCA9IGlzX2xvYWQgPyBsZW5fbG9hZF9vcHRhYiA6IGxlbl9zdG9yZV9v cHRhYjsNCisgIG9wdGFiIG1hc2tlZF9vcCA9IGlzX2xvYWQgPyBsZW5fbWFz a2xvYWRfb3B0YWIgOiBsZW5fbWFza3N0b3JlX29wdGFiOw0KICAgZ2NjX2Fz c2VydCAoVkVDVE9SX01PREVfUCAobW9kZSkpOw0KICAgLyogQ2hlY2sgaWYg bGVuZ3RoIGluIGxhbmVzIHN1cHBvcnRlZCBmb3IgdGhpcyBtb2RlIGRpcmVj dGx5LiAgKi8NCiAgIGlmIChkaXJlY3Rfb3B0YWJfaGFuZGxlciAob3AsIG1v ZGUpKQ0KICAgICByZXR1cm4gbW9kZTsNCisgIC8qIENoZWNrIGlmIGxlbmd0 aCBpbiBsYW5lcyBzdXBwb3J0ZWQgYnkgbGVuX21hc2tsb2FkL3N0b3JlLiAg Ki8NCisgIG1hY2hpbmVfbW9kZSBtYXNrX21vZGU7DQorICBpZiAodGFyZ2V0 bS52ZWN0b3JpemUuZ2V0X21hc2tfbW9kZSAobW9kZSkuZXhpc3RzICgmbWFz a19tb2RlKQ0KKyAgICAgICYmIGNvbnZlcnRfb3B0YWJfaGFuZGxlciAobWFz a2VkX29wLCBtb2RlLCBtYXNrX21vZGUpICE9IENPREVfRk9SX25vdGhpbmcp DQorICAgIHJldHVybiBtb2RlOw0KKw0KICAgLyogQ2hlY2sgaWYgbGVuZ3Ro IGluIGJ5dGVzIHN1cHBvcnRlZCBmb3Igc2FtZSB2ZWN0b3Igc2l6ZSBWblFJ LiAgKi8NCiAgIG1hY2hpbmVfbW9kZSB2bW9kZTsNCiAgIHBvbHlfdWludDY0 IG51bml0cyA9IEdFVF9NT0RFX1NJWkUgKG1vZGUpOw0KICAgaWYgKHJlbGF0 ZWRfdmVjdG9yX21vZGUgKG1vZGUsIFFJbW9kZSwgbnVuaXRzKS5leGlzdHMg KCZ2bW9kZSkNCi0gICAgICAmJiBkaXJlY3Rfb3B0YWJfaGFuZGxlciAob3As IHZtb2RlKSkNCisgICAgICAmJiAoZGlyZWN0X29wdGFiX2hhbmRsZXIgKG9w LCB2bW9kZSkNCisgICB8fCAodGFyZ2V0bS52ZWN0b3JpemUuZ2V0X21hc2tf bW9kZSAodm1vZGUpLmV4aXN0cyAoJm1hc2tfbW9kZSkNCisgICAgICAgJiYg Y29udmVydF9vcHRhYl9oYW5kbGVyIChtYXNrZWRfb3AsIHZtb2RlLCBtYXNr X21vZGUpDQorICAgICE9IENPREVfRk9SX25vdGhpbmcpKSkNCiAgICAgcmV0 dXJuIHZtb2RlOw0KICAgcmV0dXJuIG9wdF9tYWNoaW5lX21vZGUgKCk7DQpk aWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYyBiL2djYy90cmVl LXZlY3Qtc3RtdHMuY2MNCmluZGV4IDA1NmEwZWNiMmJlLi40NWJjMWU0YjVi YyAxMDA2NDQNCi0tLSBhL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MNCisrKyBi L2djYy90cmVlLXZlY3Qtc3RtdHMuY2MNCkBAIC0xODE5LDE2ICsxODE5LDE3 IEBAIGNoZWNrX2xvYWRfc3RvcmVfZm9yX3BhcnRpYWxfdmVjdG9ycyAobG9v cF92ZWNfaW5mbyBsb29wX3ZpbmZvLCB0cmVlIHZlY3R5cGUsDQogICBwb2x5 X3VpbnQ2NCBudW5pdHMgPSBUWVBFX1ZFQ1RPUl9TVUJQQVJUUyAodmVjdHlw ZSk7DQogICBwb2x5X3VpbnQ2NCB2ZiA9IExPT1BfVklORk9fVkVDVF9GQUNU T1IgKGxvb3BfdmluZm8pOw0KICAgbWFjaGluZV9tb2RlIG1hc2tfbW9kZTsN CisgIG1hY2hpbmVfbW9kZSB2bW9kZTsNCiAgIGJvb2wgdXNpbmdfcGFydGlh bF92ZWN0b3JzX3AgPSBmYWxzZTsNCiAgIGlmICh0YXJnZXRtLnZlY3Rvcml6 ZS5nZXRfbWFza19tb2RlICh2ZWNtb2RlKS5leGlzdHMgKCZtYXNrX21vZGUp DQotICAgICAgJiYgY2FuX3ZlY19tYXNrX2xvYWRfc3RvcmVfcCAodmVjbW9k ZSwgbWFza19tb2RlLCBpc19sb2FkKSkNCisgICAgICAmJiBjYW5fdmVjX21h c2tfbG9hZF9zdG9yZV9wICh2ZWNtb2RlLCBtYXNrX21vZGUsIGlzX2xvYWQp DQorICAgICAgJiYgIWdldF9sZW5fbG9hZF9zdG9yZV9tb2RlICh2ZWNtb2Rl LCBpc19sb2FkKS5leGlzdHMgKCZ2bW9kZSkpDQogICAgIHsNCiAgICAgICBu dmVjdG9ycyA9IGdyb3VwX21lbW9yeV9udmVjdG9ycyAoZ3JvdXBfc2l6ZSAq IHZmLCBudW5pdHMpOw0KICAgICAgIHZlY3RfcmVjb3JkX2xvb3BfbWFzayAo bG9vcF92aW5mbywgbWFza3MsIG52ZWN0b3JzLCB2ZWN0eXBlLCBzY2FsYXJf bWFzayk7DQogICAgICAgdXNpbmdfcGFydGlhbF92ZWN0b3JzX3AgPSB0cnVl Ow0KICAgICB9DQotICBtYWNoaW5lX21vZGUgdm1vZGU7DQogICBpZiAoZ2V0 X2xlbl9sb2FkX3N0b3JlX21vZGUgKHZlY21vZGUsIGlzX2xvYWQpLmV4aXN0 cyAoJnZtb2RlKSkNCiAgICAgew0KICAgICAgIG52ZWN0b3JzID0gZ3JvdXBf bWVtb3J5X252ZWN0b3JzIChncm91cF9zaXplICogdmYsIG51bml0cyk7DQpA QCAtMjgwOSw2ICsyODEwLDE3IEBAIHZlY3RfYnVpbGRfemVyb19tZXJnZV9h cmd1bWVudCAodmVjX2luZm8gKnZpbmZvLA0KICAgcmV0dXJuIHZlY3RfaW5p dF92ZWN0b3IgKHZpbmZvLCBzdG10X2luZm8sIG1lcmdlLCB2ZWN0eXBlLCBO VUxMKTsNCn0NCisvKiBHZXQgYWxsLW9uZXMgdmVjdG9yIG1hc2sgZm9yIGNv cnJlc3BvbmRpbmcgbWFza21vZGUuICAqLw0KKw0KK3N0YXRpYyB0cmVlDQor Z2V0X2FsbF9vbmVzX21hc2sgKG1hY2hpbmVfbW9kZSBtYXNrbW9kZSkNCit7 DQorICBwb2x5X3VpbnQ2NCBudW5pdHMgPSBHRVRfTU9ERV9OVU5JVFMgKG1h c2ttb2RlKTsNCisgIHRyZWUgbWFza3R5cGUgPSBidWlsZF90cnV0aF92ZWN0 b3JfdHlwZV9mb3JfbW9kZSAobnVuaXRzLCBtYXNrbW9kZSk7DQorICB0cmVl IG1hc2sgPSBidWlsZF9pbnRfY3N0IChUUkVFX1RZUEUgKG1hc2t0eXBlKSwg MSk7DQorICByZXR1cm4gYnVpbGRfdmVjdG9yX2Zyb21fdmFsIChtYXNrdHlw ZSwgbWFzayk7DQorfQ0KKw0KLyogQnVpbGQgYSBnYXRoZXIgbG9hZCBjYWxs IHdoaWxlIHZlY3Rvcml6aW5nIFNUTVRfSU5GTy4gIEluc2VydCBuZXcNCiAg ICBpbnN0cnVjdGlvbnMgYmVmb3JlIEdTSSBhbmQgYWRkIHRoZW0gdG8gVkVD X1NUTVQuICBHU19JTkZPIGRlc2NyaWJlcw0KICAgIHRoZSBnYXRoZXIgbG9h ZCBvcGVyYXRpb24uICBJZiB0aGUgbG9hZCBpcyBjb25kaXRpb25hbCwgTUFT SyBpcyB0aGUNCkBAIC04OTQ1LDU2ICs4OTU3LDgwIEBAIHZlY3Rvcml6YWJs ZV9zdG9yZSAodmVjX2luZm8gKnZpbmZvLA0KfQ0KICAgICAgLyogQXJndW1l bnRzIGFyZSByZWFkeS4gIENyZWF0ZSB0aGUgbmV3IHZlY3RvciBzdG10LiAg Ki8NCi0gICAgICAgaWYgKGZpbmFsX21hc2spDQorICAgICAgIGlmIChmaW5h bF9tYXNrIHx8IGxvb3BfbGVucykNCnsNCisgICBnY2FsbCAqY2FsbDsNCiAg dHJlZSBwdHIgPSBidWlsZF9pbnRfY3N0IChyZWZfdHlwZSwgYWxpZ24gKiBC SVRTX1BFUl9VTklUKTsNCi0gICBnY2FsbCAqY2FsbA0KLSAgICAgPSBnaW1w bGVfYnVpbGRfY2FsbF9pbnRlcm5hbCAoSUZOX01BU0tfU1RPUkUsIDQsDQot ICAgZGF0YXJlZl9wdHIsIHB0ciwNCi0gICBmaW5hbF9tYXNrLCB2ZWNfb3By bmQpOw0KLSAgIGdpbXBsZV9jYWxsX3NldF9ub3Rocm93IChjYWxsLCB0cnVl KTsNCi0gICB2ZWN0X2ZpbmlzaF9zdG10X2dlbmVyYXRpb24gKHZpbmZvLCBz dG10X2luZm8sIGNhbGwsIGdzaSk7DQotICAgbmV3X3N0bXQgPSBjYWxsOw0K LSB9DQotICAgICAgIGVsc2UgaWYgKGxvb3BfbGVucykNCi0gew0KICBtYWNo aW5lX21vZGUgdm1vZGUgPSBUWVBFX01PREUgKHZlY3R5cGUpOw0KLSAgIG9w dF9tYWNoaW5lX21vZGUgbmV3X292bW9kZQ0KLSAgICAgPSBnZXRfbGVuX2xv YWRfc3RvcmVfbW9kZSAodm1vZGUsIGZhbHNlKTsNCi0gICBtYWNoaW5lX21v ZGUgbmV3X3Ztb2RlID0gbmV3X292bW9kZS5yZXF1aXJlICgpOw0KLSAgIHVu c2lnbmVkIGZhY3Rvcg0KLSAgICAgPSAobmV3X292bW9kZSA9PSB2bW9kZSkg PyAxIDogR0VUX01PREVfVU5JVF9TSVpFICh2bW9kZSk7DQotICAgdHJlZSBm aW5hbF9sZW4NCi0gICAgID0gdmVjdF9nZXRfbG9vcF9sZW4gKGxvb3Bfdmlu Zm8sIGdzaSwgbG9vcF9sZW5zLA0KLSB2ZWNfbnVtICogbmNvcGllcywgdmVj dHlwZSwNCi0gdmVjX251bSAqIGogKyBpLCBmYWN0b3IpOw0KLSAgIHRyZWUg cHRyID0gYnVpbGRfaW50X2NzdCAocmVmX3R5cGUsIGFsaWduICogQklUU19Q RVJfVU5JVCk7DQotICAgLyogTmVlZCBjb252ZXJzaW9uIGlmIGl0J3Mgd3Jh cHBlZCB3aXRoIFZuUUkuICAqLw0KLSAgIGlmICh2bW9kZSAhPSBuZXdfdm1v ZGUpDQorICAgbWFjaGluZV9tb2RlIG5ld192bW9kZSA9IHZtb2RlOw0KKw0K KyAgIGlmIChnZXRfbGVuX2xvYWRfc3RvcmVfbW9kZSAodm1vZGUsIGZhbHNl KQ0KKyAuZXhpc3RzICgmbmV3X3Ztb2RlKSkNCiAgICB7DQotICAgICAgIHRy ZWUgbmV3X3Z0eXBlDQotID0gYnVpbGRfdmVjdG9yX3R5cGVfZm9yX21vZGUg KHVuc2lnbmVkX2ludFFJX3R5cGVfbm9kZSwNCi0gICAgICAgbmV3X3Ztb2Rl KTsNCi0gICAgICAgdHJlZSB2YXINCi0gPSB2ZWN0X2dldF9uZXdfc3NhX25h bWUgKG5ld192dHlwZSwgdmVjdF9zaW1wbGVfdmFyKTsNCi0gICAgICAgdmVj X29wcm5kDQotID0gYnVpbGQxIChWSUVXX0NPTlZFUlRfRVhQUiwgbmV3X3Z0 eXBlLCB2ZWNfb3BybmQpOw0KLSAgICAgICBnYXNzaWduICpuZXdfc3RtdA0K LSA9IGdpbXBsZV9idWlsZF9hc3NpZ24gKHZhciwgVklFV19DT05WRVJUX0VY UFIsDQotICAgICAgICB2ZWNfb3BybmQpOw0KLSAgICAgICB2ZWN0X2Zpbmlz aF9zdG10X2dlbmVyYXRpb24gKHZpbmZvLCBzdG10X2luZm8sIG5ld19zdG10 LA0KLSAgICBnc2kpOw0KLSAgICAgICB2ZWNfb3BybmQgPSB2YXI7DQotICAg ICB9DQorICAgICAgIHRyZWUgZmluYWxfbGVuOw0KKyAgICAgICBtYWNoaW5l X21vZGUgbWFza21vZGU7DQorICAgICAgIHVuc2lnbmVkIGZhY3RvciA9IChu ZXdfdm1vZGUgPT0gdm1vZGUpDQorICAgPyAxDQorICAgOiBHRVRfTU9ERV9V TklUX1NJWkUgKHZtb2RlKTsNCisgICAgICAgaWYgKGxvb3BfbGVucykNCisg ZmluYWxfbGVuDQorICAgPSB2ZWN0X2dldF9sb29wX2xlbiAobG9vcF92aW5m bywgZ3NpLCBsb29wX2xlbnMsDQorICAgICAgICB2ZWNfbnVtICogbmNvcGll cywgdmVjdHlwZSwNCisgICAgICAgIHZlY19udW0gKiBqICsgaSwgZmFjdG9y KTsNCisgICAgICAgZWxzZQ0KKyB7DQorICAgdHJlZSBpdl90eXBlID0gTE9P UF9WSU5GT19SR1JPVVBfSVZfVFlQRSAobG9vcF92aW5mbyk7DQorICAgZmlu YWxfbGVuDQorICAgICA9IGJ1aWxkX2ludF9jc3QgKGl2X3R5cGUsDQorICAg ICAgVFlQRV9WRUNUT1JfU1VCUEFSVFMgKHZlY3R5cGUpKTsNCisgfQ0KLSAg IHNpZ25lZCBjaGFyIGJpYXN2YWwgPQ0KLSAgICAgTE9PUF9WSU5GT19QQVJU SUFMX0xPQURfU1RPUkVfQklBUyAobG9vcF92aW5mbyk7DQorICAgICAgIC8q IE5lZWQgY29udmVyc2lvbiBpZiBpdCdzIHdyYXBwZWQgd2l0aCBWblFJLiAg Ki8NCisgICAgICAgaWYgKHZtb2RlICE9IG5ld192bW9kZSkNCisgew0KKyAg IHRyZWUgbmV3X3Z0eXBlID0gYnVpbGRfdmVjdG9yX3R5cGVfZm9yX21vZGUg KA0KKyAgICAgdW5zaWduZWRfaW50UUlfdHlwZV9ub2RlLCBuZXdfdm1vZGUp Ow0KKyAgIHRyZWUgdmFyID0gdmVjdF9nZXRfbmV3X3NzYV9uYW1lIChuZXdf dnR5cGUsDQorICAgICB2ZWN0X3NpbXBsZV92YXIpOw0KKyAgIHZlY19vcHJu ZA0KKyAgICAgPSBidWlsZDEgKFZJRVdfQ09OVkVSVF9FWFBSLCBuZXdfdnR5 cGUsIHZlY19vcHJuZCk7DQorICAgZ2Fzc2lnbiAqbmV3X3N0bXQNCisgICAg ID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAodmFyLCBWSUVXX0NPTlZFUlRfRVhQ UiwNCisgICAgdmVjX29wcm5kKTsNCisgICB2ZWN0X2ZpbmlzaF9zdG10X2dl bmVyYXRpb24gKHZpbmZvLCBzdG10X2luZm8sDQorICAgICAgICBuZXdfc3Rt dCwgZ3NpKTsNCisgICB2ZWNfb3BybmQgPSB2YXI7DQorIH0NCisgICAgICAg c2lnbmVkIGNoYXIgYmlhc3ZhbA0KKyA9IExPT1BfVklORk9fUEFSVElBTF9M T0FEX1NUT1JFX0JJQVMgKGxvb3BfdmluZm8pOw0KKw0KKyAgICAgICB0cmVl IGJpYXMgPSBidWlsZF9pbnRfY3N0IChpbnRRSV90eXBlX25vZGUsIGJpYXN2 YWwpOw0KLSAgIHRyZWUgYmlhcyA9IGJ1aWxkX2ludF9jc3QgKGludFFJX3R5 cGVfbm9kZSwgYmlhc3ZhbCk7DQotICAgZ2NhbGwgKmNhbGwNCi0gICAgID0g Z2ltcGxlX2J1aWxkX2NhbGxfaW50ZXJuYWwgKElGTl9MRU5fU1RPUkUsIDUs IGRhdGFyZWZfcHRyLA0KLSAgIHB0ciwgZmluYWxfbGVuLCB2ZWNfb3BybmQs DQotICAgYmlhcyk7DQorICAgICAgIGlmICh0YXJnZXRtLnZlY3Rvcml6ZS5n ZXRfbWFza19tb2RlICh2bW9kZSkuZXhpc3RzICgNCisgICAgICZtYXNrbW9k ZSkNCisgICAmJiBjYW5fdmVjX21hc2tfbG9hZF9zdG9yZV9wICh2bW9kZSwg bWFza21vZGUsIGZhbHNlKSkNCisgew0KKyAgIGlmICghZmluYWxfbWFzaykN CisgICAgIGZpbmFsX21hc2sgPSBnZXRfYWxsX29uZXNfbWFzayAobWFza21v ZGUpOw0KKyAgIGNhbGwNCisgICAgID0gZ2ltcGxlX2J1aWxkX2NhbGxfaW50 ZXJuYWwgKElGTl9MRU5fTUFTS19TVE9SRSwgNiwNCisgICBkYXRhcmVmX3B0 ciwgcHRyLA0KKyAgIGZpbmFsX2xlbiwgZmluYWxfbWFzaywNCisgICB2ZWNf b3BybmQsIGJpYXMpOw0KKyB9DQorICAgICAgIGVsc2UNCisgY2FsbCA9IGdp bXBsZV9idWlsZF9jYWxsX2ludGVybmFsIChJRk5fTEVOX1NUT1JFLCA1LA0K KyAgICBkYXRhcmVmX3B0ciwgcHRyLA0KKyAgICBmaW5hbF9sZW4sIHZlY19v cHJuZCwNCisgICAgYmlhcyk7DQorICAgICB9DQorICAgZWxzZQ0KKyAgICAg ew0KKyAgICAgICBnY2NfYXNzZXJ0IChmaW5hbF9tYXNrKTsNCisgICAgICAg Y2FsbCA9IGdpbXBsZV9idWlsZF9jYWxsX2ludGVybmFsIChJRk5fTUFTS19T VE9SRSwgNCwNCisgZGF0YXJlZl9wdHIsIHB0ciwNCisgZmluYWxfbWFzaywg dmVjX29wcm5kKTsNCisgICAgIH0NCiAgZ2ltcGxlX2NhbGxfc2V0X25vdGhy b3cgKGNhbGwsIHRydWUpOw0KICB2ZWN0X2ZpbmlzaF9zdG10X2dlbmVyYXRp b24gKHZpbmZvLCBzdG10X2luZm8sIGNhbGwsIGdzaSk7DQogIG5ld19zdG10 ID0gY2FsbDsNCkBAIC0xMDMwNCw2MyArMTAzNDAsOTAgQEAgdmVjdG9yaXph YmxlX2xvYWQgKHZlY19pbmZvICp2aW5mbywNCiAgICAgIGFsaWduLCBtaXNh bGlnbik7DQogICAgYWxpZ24gPSBsZWFzdF9iaXRfaHdpIChtaXNhbGlnbiB8 IGFsaWduKTsNCi0gICAgIGlmIChmaW5hbF9tYXNrKQ0KKyAgICAgaWYgKGZp bmFsX21hc2sNCisgfHwgKGxvb3BfbGVucyAmJiBtZW1vcnlfYWNjZXNzX3R5 cGUgIT0gVk1BVF9JTlZBUklBTlQpKQ0KICAgICAgew0KLSB0cmVlIHB0ciA9 IGJ1aWxkX2ludF9jc3QgKHJlZl90eXBlLA0KLSAgIGFsaWduICogQklUU19Q RVJfVU5JVCk7DQotIGdjYWxsICpjYWxsDQotICAgPSBnaW1wbGVfYnVpbGRf Y2FsbF9pbnRlcm5hbCAoSUZOX01BU0tfTE9BRCwgMywNCi0gZGF0YXJlZl9w dHIsIHB0ciwNCi0gZmluYWxfbWFzayk7DQotIGdpbXBsZV9jYWxsX3NldF9u b3Rocm93IChjYWxsLCB0cnVlKTsNCi0gbmV3X3N0bXQgPSBjYWxsOw0KLSBk YXRhX3JlZiA9IE5VTExfVFJFRTsNCi0gICAgICAgfQ0KLSAgICAgZWxzZSBp ZiAobG9vcF9sZW5zICYmIG1lbW9yeV9hY2Nlc3NfdHlwZSAhPSBWTUFUX0lO VkFSSUFOVCkNCi0gICAgICAgew0KLSBtYWNoaW5lX21vZGUgdm1vZGUgPSBU WVBFX01PREUgKHZlY3R5cGUpOw0KLSBvcHRfbWFjaGluZV9tb2RlIG5ld19v dm1vZGUNCi0gICA9IGdldF9sZW5fbG9hZF9zdG9yZV9tb2RlICh2bW9kZSwg dHJ1ZSk7DQotIG1hY2hpbmVfbW9kZSBuZXdfdm1vZGUgPSBuZXdfb3Ztb2Rl LnJlcXVpcmUgKCk7DQotIHVuc2lnbmVkIGZhY3RvciA9IChuZXdfb3Ztb2Rl ID09IHZtb2RlKQ0KLSAgICAgPyAxDQotICAgICA6IEdFVF9NT0RFX1VOSVRf U0laRSAodm1vZGUpOw0KLSB0cmVlIGZpbmFsX2xlbg0KLSAgID0gdmVjdF9n ZXRfbG9vcF9sZW4gKGxvb3BfdmluZm8sIGdzaSwgbG9vcF9sZW5zLA0KLSAg ICAgICAgdmVjX251bSAqIG5jb3BpZXMsIHZlY3R5cGUsDQotICAgICAgICB2 ZWNfbnVtICogaiArIGksIGZhY3Rvcik7DQorIGdjYWxsICpjYWxsOw0KdHJl ZSBwdHINCiAgPSBidWlsZF9pbnRfY3N0IChyZWZfdHlwZSwgYWxpZ24gKiBC SVRTX1BFUl9VTklUKTsNCisgbWFjaGluZV9tb2RlIHZtb2RlID0gVFlQRV9N T0RFICh2ZWN0eXBlKTsNCisgbWFjaGluZV9tb2RlIG5ld192bW9kZSA9IHZt b2RlOw0KKyBpZiAoZ2V0X2xlbl9sb2FkX3N0b3JlX21vZGUgKHZtb2RlLCB0 cnVlKQ0KKyAgICAgICAuZXhpc3RzICgmbmV3X3Ztb2RlKSkNCisgICB7DQor ICAgICB0cmVlIGZpbmFsX2xlbjsNCisgICAgIG1hY2hpbmVfbW9kZSBtYXNr bW9kZTsNCisgICAgIHRyZWUgcWlfdHlwZSA9IHVuc2lnbmVkX2ludFFJX3R5 cGVfbm9kZTsNCisgICAgIHNpZ25lZCBjaGFyIGJpYXN2YWwNCisgICAgICAg PSBMT09QX1ZJTkZPX1BBUlRJQUxfTE9BRF9TVE9SRV9CSUFTIChsb29wX3Zp bmZvKTsNCisgICAgIHRyZWUgYmlhcw0KKyAgICAgICA9IGJ1aWxkX2ludF9j c3QgKGludFFJX3R5cGVfbm9kZSwgYmlhc3ZhbCk7DQorICAgICB1bnNpZ25l ZCBmYWN0b3IgPSAobmV3X3Ztb2RlID09IHZtb2RlKQ0KKyA/IDENCisgOiBH RVRfTU9ERV9VTklUX1NJWkUgKHZtb2RlKTsNCisgICAgIGlmIChsb29wX2xl bnMpDQorICAgICAgIGZpbmFsX2xlbg0KKyA9IHZlY3RfZ2V0X2xvb3BfbGVu IChsb29wX3ZpbmZvLCBnc2ksIGxvb3BfbGVucywNCisgICAgICB2ZWNfbnVt ICogbmNvcGllcywgdmVjdHlwZSwNCisgICAgICB2ZWNfbnVtICogaiArIGks IGZhY3Rvcik7DQorICAgICBlbHNlDQorICAgICAgIHsNCisgdHJlZSBpdl90 eXBlDQorICAgPSBMT09QX1ZJTkZPX1JHUk9VUF9JVl9UWVBFIChsb29wX3Zp bmZvKTsNCisgZmluYWxfbGVuID0gYnVpbGRfaW50X2NzdCAoDQorICAgaXZf dHlwZSwgVFlQRV9WRUNUT1JfU1VCUEFSVFMgKHZlY3R5cGUpKTsNCisgICAg ICAgfQ0KLSB0cmVlIHFpX3R5cGUgPSB1bnNpZ25lZF9pbnRRSV90eXBlX25v ZGU7DQotDQotIHNpZ25lZCBjaGFyIGJpYXN2YWwgPQ0KLSAgIExPT1BfVklO Rk9fUEFSVElBTF9MT0FEX1NUT1JFX0JJQVMgKGxvb3BfdmluZm8pOw0KLQ0K LSB0cmVlIGJpYXMgPSBidWlsZF9pbnRfY3N0IChpbnRRSV90eXBlX25vZGUs IGJpYXN2YWwpOw0KLQ0KLSBnY2FsbCAqY2FsbA0KLSAgID0gZ2ltcGxlX2J1 aWxkX2NhbGxfaW50ZXJuYWwgKElGTl9MRU5fTE9BRCwgNCwNCi0gZGF0YXJl Zl9wdHIsIHB0ciwNCi0gZmluYWxfbGVuLCBiaWFzKTsNCi0gZ2ltcGxlX2Nh bGxfc2V0X25vdGhyb3cgKGNhbGwsIHRydWUpOw0KLSBuZXdfc3RtdCA9IGNh bGw7DQotIGRhdGFfcmVmID0gTlVMTF9UUkVFOw0KLQ0KLSAvKiBOZWVkIGNv bnZlcnNpb24gaWYgaXQncyB3cmFwcGVkIHdpdGggVm5RSS4gICovDQotIGlm ICh2bW9kZSAhPSBuZXdfdm1vZGUpDQorICAgICBpZiAodGFyZ2V0bS52ZWN0 b3JpemUuZ2V0X21hc2tfbW9kZSAodm1vZGUpLmV4aXN0cyAoDQorICAgJm1h c2ttb2RlKQ0KKyAmJiBjYW5fdmVjX21hc2tfbG9hZF9zdG9yZV9wICh2bW9k ZSwgbWFza21vZGUsDQorICAgICAgIGZhbHNlKSkNCisgICAgICAgew0KKyBp ZiAoIWZpbmFsX21hc2spDQorICAgZmluYWxfbWFzayA9IGdldF9hbGxfb25l c19tYXNrIChtYXNrbW9kZSk7DQorIGNhbGwgPSBnaW1wbGVfYnVpbGRfY2Fs bF9pbnRlcm5hbCAoDQorICAgSUZOX0xFTl9NQVNLX0xPQUQsIDUsIGRhdGFy ZWZfcHRyLCBwdHIsDQorICAgZmluYWxfbGVuLCBmaW5hbF9tYXNrLCBiaWFz KTsNCisgICAgICAgfQ0KKyAgICAgZWxzZQ0KKyAgICAgICB7DQorIGNhbGwN CisgICA9IGdpbXBsZV9idWlsZF9jYWxsX2ludGVybmFsIChJRk5fTEVOX0xP QUQsIDQsDQorIGRhdGFyZWZfcHRyLA0KKyBwdHIsIGZpbmFsX2xlbiwNCisg Ymlhcyk7DQorICAgICAgIH0NCisgICAgIGdpbXBsZV9jYWxsX3NldF9ub3Ro cm93IChjYWxsLCB0cnVlKTsNCisgICAgIG5ld19zdG10ID0gY2FsbDsNCisg ICAgIGRhdGFfcmVmID0gTlVMTF9UUkVFOw0KKyAgICAgLyogTmVlZCBjb252 ZXJzaW9uIGlmIGl0J3Mgd3JhcHBlZCB3aXRoIFZuUUkuICAqLw0KKyAgICAg aWYgKHZtb2RlICE9IG5ld192bW9kZSkNCisgICAgICAgew0KKyB0cmVlIG5l d192dHlwZQ0KKyAgID0gYnVpbGRfdmVjdG9yX3R5cGVfZm9yX21vZGUgKHFp X3R5cGUsDQorIG5ld192bW9kZSk7DQorIHRyZWUgdmFyDQorICAgPSB2ZWN0 X2dldF9uZXdfc3NhX25hbWUgKG5ld192dHlwZSwNCisgICAgdmVjdF9zaW1w bGVfdmFyKTsNCisgZ2ltcGxlX3NldF9saHMgKGNhbGwsIHZhcik7DQorIHZl Y3RfZmluaXNoX3N0bXRfZ2VuZXJhdGlvbiAodmluZm8sIHN0bXRfaW5mbywN CisgICAgICBjYWxsLCBnc2kpOw0KKyB0cmVlIG9wDQorICAgPSBidWlsZDEg KFZJRVdfQ09OVkVSVF9FWFBSLCB2ZWN0eXBlLCB2YXIpOw0KKyBuZXdfc3Rt dA0KKyAgID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAodmVjX2Rlc3QsDQorIFZJ RVdfQ09OVkVSVF9FWFBSLCBvcCk7DQorICAgICAgIH0NCisgICB9DQorIGVs c2UNCiAgew0KLSAgICAgdHJlZSBuZXdfdnR5cGUNCi0gICAgICAgPSBidWls ZF92ZWN0b3JfdHlwZV9mb3JfbW9kZSAocWlfdHlwZSwgbmV3X3Ztb2RlKTsN Ci0gICAgIHRyZWUgdmFyID0gdmVjdF9nZXRfbmV3X3NzYV9uYW1lIChuZXdf dnR5cGUsDQotICAgICAgIHZlY3Rfc2ltcGxlX3Zhcik7DQotICAgICBnaW1w bGVfc2V0X2xocyAoY2FsbCwgdmFyKTsNCi0gICAgIHZlY3RfZmluaXNoX3N0 bXRfZ2VuZXJhdGlvbiAodmluZm8sIHN0bXRfaW5mbywgY2FsbCwNCi0gZ3Np KTsNCi0gICAgIHRyZWUgb3AgPSBidWlsZDEgKFZJRVdfQ09OVkVSVF9FWFBS LCB2ZWN0eXBlLCB2YXIpOw0KLSAgICAgbmV3X3N0bXQNCi0gICAgICAgPSBn aW1wbGVfYnVpbGRfYXNzaWduICh2ZWNfZGVzdCwNCi0gICAgICBWSUVXX0NP TlZFUlRfRVhQUiwgb3ApOw0KKyAgICAgZ2NjX2Fzc2VydCAoZmluYWxfbWFz ayk7DQorICAgICBjYWxsID0gZ2ltcGxlX2J1aWxkX2NhbGxfaW50ZXJuYWwg KElGTl9NQVNLX0xPQUQsIDMsDQorICAgICAgICBkYXRhcmVmX3B0ciwgcHRy LA0KKyAgICAgICAgZmluYWxfbWFzayk7DQorICAgICBnaW1wbGVfY2FsbF9z ZXRfbm90aHJvdyAoY2FsbCwgdHJ1ZSk7DQorICAgICBuZXdfc3RtdCA9IGNh bGw7DQorICAgICBkYXRhX3JlZiA9IE5VTExfVFJFRTsNCiAgfQ0KICAgICAg fQ0KICAgIGVsc2UNCi0tIA0KMi4zNi4xDQogDQo= ------=_001_NextPart375128544367_=------