From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgsg2.qq.com (smtpbgsg2.qq.com [54.254.200.128]) by sourceware.org (Postfix) with ESMTPS id 289F53858D3C for ; Fri, 23 Jun 2023 07:10:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 289F53858D3C 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: bizesmtp72t1687504213ted1r4ku Received: from TABLET-POE6JQHH ( [115.44.118.116]) by bizesmtp.qq.com (ESMTP) with id ; Fri, 23 Jun 2023 15:10:11 +0800 (CST) X-QQ-SSF: 01400000000000G0S000000A0000000 X-QQ-FEAT: 7YFKcddXagheNDEA30whpqjiQ8wRMfu0kO1Of0RYfc1Y5hNpDPZSVCxlTwYkY gN+hLOV0/9HWpAcQWHjyJvLeOI76zqi0nhyyiDD9EAujocx2E5vMeLX3bzgQYd1WADJQNGr SupG8tqdAWjIfGZC/f3inYty0ywA/DfCTaI+eJPGqO3Piu3FbV6u3lZdH4uQkSlh18aq5oW Tc9TLJIFmVlmqpX7/s6nPNYpxvwp0FILpviGns4hHZr6+I7iaglkBEvPuPQTOspPrUYNF7E sHPJ77X7swMMsAAzfzfwtU0S1H5qo1lVy6dN61doXXc4jrUA4oEkMZwfX4CRRC6Myz4rkDS upjUGLD80qupBHJy7yAPtad5V1acZg3Y/jUNtA31Tx6MCmocUpNoOx4DQiFsRgv2X1+MJop fj/vOLHKIl2QdDoMMMtTow== X-QQ-GoodBg: 2 X-BIZMAIL-ID: 8264019562559589964 Date: Fri, 23 Jun 2023 15:10:12 +0800 From: =?utf-8?B?6ZKf5bGF5ZOy?= To: rguenther Cc: gcc-patches , richard.sandiford Subject: Re: Re: [PATCH V5] VECT: Apply LEN_MASK_{LOAD,STORE} into vectorizer References: <20230622135348.160496-1-juzhe.zhong@rivai.ai>, X-Priority: 3 X-GUID: 7FFB7D63-E799-442A-A3B3-A2240F0EEB3B X-Has-Attach: no X-Mailer: Foxmail 7.2.23.121[cn] Mime-Version: 1.0 Message-ID: <2B98105379C9B7B7+2023062315101222316079@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart031826737170_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-12.8 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_FONT_LOW_CONTRAST,HTML_MESSAGE,KAM_DMARC_STATUS,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,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_NextPart031826737170_=---- Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhhbmtzIFJpY2hpIHNvIG11Y2guDQoNCkkgYW0gZ29ubmEgd2FpdCBmb3Ig UmljaGFyZCdzIGZpbmFsIGFwcHJvdmUgZm9yIFY2IGZvciA6DQpodHRwczov L2djYy5nbnUub3JnL3BpcGVybWFpbC9nY2MtcGF0Y2hlcy8yMDIzLUp1bmUv NjIyNTYwLmh0bWwgDQp3aGljaCBoYXMgc29tZSBzbWFsbCBmaXhlcyBmb3Ig aGlzIGNvbW1lbnRzIG9uIFY1Lg0KDQpBbmQgQm9vdHN0cmFwIGhhcyBwYXNz ZWQsIHJlZ3Jlc3Npb24gaXMgcnVubmluZy4gSSBhbSBnb25uYSB3YWl0IGZv ciByZWdyZXNzaW9uIHRvby4NCg0KVGhhbmtzLg0KDQoNCmp1emhlLnpob25n QHJpdmFpLmFpDQogDQpGcm9tOiBSaWNoYXJkIEJpZW5lcg0KRGF0ZTogMjAy My0wNi0yMyAxNDoyMQ0KVG86IEp1LVpoZSBaaG9uZw0KQ0M6IGdjYy1wYXRj aGVzOyByaWNoYXJkLnNhbmRpZm9yZA0KU3ViamVjdDogUmU6IFtQQVRDSCBW NV0gVkVDVDogQXBwbHkgTEVOX01BU0tfe0xPQUQsU1RPUkV9IGludG8gdmVj dG9yaXplcg0KT24gVGh1LCAyMiBKdW4gMjAyMywganV6aGUuemhvbmdAcml2 YWkuYWkgd3JvdGU6DQogDQo+IEZyb206IEp1LVpoZSBaaG9uZyA8anV6aGUu emhvbmdAcml2YWkuYWk+DQogDQpPSy4NCiANClRoYW5rcywNClJpY2hhcmQu DQogDQo+IGdjYy9DaGFuZ2VMb2c6DQo+IA0KPiAgICAgICAgICogaW50ZXJu YWwtZm4uY2MgKGV4cGFuZF9wYXJ0aWFsX3N0b3JlX29wdGFiX2ZuKTogQWRh cHQgZm9yIExFTl9NQVNLX1NUT1JFLg0KPiAgICAgICAgIChpbnRlcm5hbF9s b2FkX2ZuX3ApOiBBZGQgTEVOX01BU0tfTE9BRC4NCj4gICAgICAgICAoaW50 ZXJuYWxfc3RvcmVfZm5fcCk6IEFkZCBMRU5fTUFTS19TVE9SRS4NCj4gICAg ICAgICAoaW50ZXJuYWxfZm5fbWFza19pbmRleCk6IEFkZCBMRU5fTUFTS197 TE9BRCxTVE9SRX0uDQo+ICAgICAgICAgKGludGVybmFsX2ZuX3N0b3JlZF92 YWx1ZV9pbmRleCk6IEFkZCBMRU5fTUFTS19TVE9SRS4NCj4gICAgICAgICAo aW50ZXJuYWxfbGVuX2xvYWRfc3RvcmVfYmlhcyk6ICBBZGQgTEVOX01BU0tf e0xPQUQsU1RPUkV9Lg0KPiAgICAgICAgICogb3B0YWJzLXRyZWUuY2MgKGNh bl92ZWNfbWFza19sb2FkX3N0b3JlX3ApOiBBZGFwdCBmb3IgTEVOX01BU0tf e0xPQUQsU1RPUkV9Lg0KPiAgICAgICAgIChnZXRfbGVuX2xvYWRfc3RvcmVf bW9kZSk6IERpdHRvLg0KPiAgICAgICAgICogb3B0YWJzLXRyZWUuaCAoY2Fu X3ZlY19tYXNrX2xvYWRfc3RvcmVfcCk6IERpdHRvLg0KPiAgICAgICAgIChn ZXRfbGVuX2xvYWRfc3RvcmVfbW9kZSk6IERpdHRvLg0KPiAgICAgICAgICog dHJlZS12ZWN0LXN0bXRzLmNjIChjaGVja19sb2FkX3N0b3JlX2Zvcl9wYXJ0 aWFsX3ZlY3RvcnMpOiBEaXR0by4NCj4gICAgICAgICAoZ2V0X2FsbF9vbmVz X21hc2spOiBOZXcgZnVuY3Rpb24uDQo+ICAgICAgICAgKHZlY3Rvcml6YWJs ZV9zdG9yZSk6IEFwcGx5IExFTl9NQVNLX3tMT0FELFNUT1JFfSBpbnRvIHZl Y3Rvcml6ZXIuDQo+ICAgICAgICAgKHZlY3Rvcml6YWJsZV9sb2FkKTogRGl0 dG8uDQo+IA0KPiAtLS0NCj4gIGdjYy9pbnRlcm5hbC1mbi5jYyAgICAgfCAg MzYgKysrKysrLQ0KPiAgZ2NjL29wdGFicy10cmVlLmNjICAgICB8ICA4NSAr KysrKysrKysrKysrLS0tDQo+ICBnY2Mvb3B0YWJzLXRyZWUuaCAgICAgIHwg ICA2ICstDQo+ICBnY2MvdHJlZS12ZWN0LXN0bXRzLmNjIHwgMjIwICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tDQo+ICA0IGZp bGVzIGNoYW5nZWQsIDI2NSBpbnNlcnRpb25zKCspLCA4MiBkZWxldGlvbnMo LSkNCj4gDQo+IGRpZmYgLS1naXQgYS9nY2MvaW50ZXJuYWwtZm4uY2MgYi9n Y2MvaW50ZXJuYWwtZm4uY2MNCj4gaW5kZXggYzkxMWFlNzkwY2IuLmI5MGJk ODVkZjJjIDEwMDY0NA0KPiAtLS0gYS9nY2MvaW50ZXJuYWwtZm4uY2MNCj4g KysrIGIvZ2NjL2ludGVybmFsLWZuLmNjDQo+IEBAIC0yOTQ5LDcgKzI5NDks NyBAQCBleHBhbmRfcGFydGlhbF9sb2FkX29wdGFiX2ZuIChpbnRlcm5hbF9m biwgZ2NhbGwgKnN0bXQsIGNvbnZlcnRfb3B0YWIgb3B0YWIpDQo+ICAgKiBP UFRBQi4gICovDQo+ICANCj4gIHN0YXRpYyB2b2lkDQo+IC1leHBhbmRfcGFy dGlhbF9zdG9yZV9vcHRhYl9mbiAoaW50ZXJuYWxfZm4sIGdjYWxsICpzdG10 LCBjb252ZXJ0X29wdGFiIG9wdGFiKQ0KPiArZXhwYW5kX3BhcnRpYWxfc3Rv cmVfb3B0YWJfZm4gKGludGVybmFsX2ZuIGlmbiwgZ2NhbGwgKnN0bXQsIGNv bnZlcnRfb3B0YWIgb3B0YWIpDQo+ICB7DQo+ICAgIGNsYXNzIGV4cGFuZF9v cGVyYW5kIG9wc1s1XTsNCj4gICAgdHJlZSB0eXBlLCBsaHMsIHJocywgbWFz a3QsIGJpYXN0Ow0KPiBAQCAtMjk1Nyw3ICsyOTU3LDcgQEAgZXhwYW5kX3Bh cnRpYWxfc3RvcmVfb3B0YWJfZm4gKGludGVybmFsX2ZuLCBnY2FsbCAqc3Rt dCwgY29udmVydF9vcHRhYiBvcHRhYikNCj4gICAgaW5zbl9jb2RlIGljb2Rl Ow0KPiAgDQo+ICAgIG1hc2t0ID0gZ2ltcGxlX2NhbGxfYXJnIChzdG10LCAy KTsNCj4gLSAgcmhzID0gZ2ltcGxlX2NhbGxfYXJnIChzdG10LCAzKTsNCj4g KyAgcmhzID0gZ2ltcGxlX2NhbGxfYXJnIChzdG10LCBpbnRlcm5hbF9mbl9z dG9yZWRfdmFsdWVfaW5kZXggKGlmbikpOw0KPiAgICB0eXBlID0gVFJFRV9U WVBFIChyaHMpOw0KPiAgICBsaHMgPSBleHBhbmRfY2FsbF9tZW1fcmVmICh0 eXBlLCBzdG10LCAwKTsNCj4gIA0KPiBAQCAtNDQzNSw2ICs0NDM1LDcgQEAg aW50ZXJuYWxfbG9hZF9mbl9wIChpbnRlcm5hbF9mbiBmbikNCj4gICAgICBj YXNlIElGTl9HQVRIRVJfTE9BRDoNCj4gICAgICBjYXNlIElGTl9NQVNLX0dB VEhFUl9MT0FEOg0KPiAgICAgIGNhc2UgSUZOX0xFTl9MT0FEOg0KPiArICAg IGNhc2UgSUZOX0xFTl9NQVNLX0xPQUQ6DQo+ICAgICAgICByZXR1cm4gdHJ1 ZTsNCj4gIA0KPiAgICAgIGRlZmF1bHQ6DQo+IEBAIC00NDU1LDYgKzQ0NTYs NyBAQCBpbnRlcm5hbF9zdG9yZV9mbl9wIChpbnRlcm5hbF9mbiBmbikNCj4g ICAgICBjYXNlIElGTl9TQ0FUVEVSX1NUT1JFOg0KPiAgICAgIGNhc2UgSUZO X01BU0tfU0NBVFRFUl9TVE9SRToNCj4gICAgICBjYXNlIElGTl9MRU5fU1RP UkU6DQo+ICsgICAgY2FzZSBJRk5fTEVOX01BU0tfU1RPUkU6DQo+ICAgICAg ICByZXR1cm4gdHJ1ZTsNCj4gIA0KPiAgICAgIGRlZmF1bHQ6DQo+IEBAIC00 NDk4LDYgKzQ1MDAsMTAgQEAgaW50ZXJuYWxfZm5fbWFza19pbmRleCAoaW50 ZXJuYWxfZm4gZm4pDQo+ICAgICAgY2FzZSBJRk5fTUFTS19TQ0FUVEVSX1NU T1JFOg0KPiAgICAgICAgcmV0dXJuIDQ7DQo+ICANCj4gKyAgICBjYXNlIElG Tl9MRU5fTUFTS19MT0FEOg0KPiArICAgIGNhc2UgSUZOX0xFTl9NQVNLX1NU T1JFOg0KPiArICAgICAgcmV0dXJuIDM7DQo+ICsNCj4gICAgICBkZWZhdWx0 Og0KPiAgICAgICAgcmV0dXJuIChjb25kaXRpb25hbF9pbnRlcm5hbF9mbl9j b2RlIChmbikgIT0gRVJST1JfTUFSSw0KPiAgICAgICAgfHwgZ2V0X3VuY29u ZGl0aW9uYWxfaW50ZXJuYWxfZm4gKGZuKSAhPSBJRk5fTEFTVCA/IDAgOiAt MSk7DQo+IEBAIC00NTE5LDYgKzQ1MjUsOSBAQCBpbnRlcm5hbF9mbl9zdG9y ZWRfdmFsdWVfaW5kZXggKGludGVybmFsX2ZuIGZuKQ0KPiAgICAgIGNhc2Ug SUZOX0xFTl9TVE9SRToNCj4gICAgICAgIHJldHVybiAzOw0KPiAgDQo+ICsg ICAgY2FzZSBJRk5fTEVOX01BU0tfU1RPUkU6DQo+ICsgICAgICByZXR1cm4g NDsNCj4gKw0KPiAgICAgIGRlZmF1bHQ6DQo+ICAgICAgICByZXR1cm4gLTE7 DQo+ICAgICAgfQ0KPiBAQCAtNDU4MywxMyArNDU5MiwzMiBAQCBpbnRlcm5h bF9sZW5fbG9hZF9zdG9yZV9iaWFzIChpbnRlcm5hbF9mbiBpZm4sIG1hY2hp bmVfbW9kZSBtb2RlKQ0KPiAgew0KPiAgICBvcHRhYiBvcHRhYiA9IGRpcmVj dF9pbnRlcm5hbF9mbl9vcHRhYiAoaWZuKTsNCj4gICAgaW5zbl9jb2RlIGlj b2RlID0gZGlyZWN0X29wdGFiX2hhbmRsZXIgKG9wdGFiLCBtb2RlKTsNCj4g KyAgaW50IGJpYXNfb3BubyA9IDM7DQo+ICsNCj4gKyAgaWYgKGljb2RlID09 IENPREVfRk9SX25vdGhpbmcpDQo+ICsgICAgew0KPiArICAgICAgbWFjaGlu ZV9tb2RlIG1hc2tfbW9kZQ0KPiArID0gdGFyZ2V0bS52ZWN0b3JpemUuZ2V0 X21hc2tfbW9kZSAobW9kZSkucmVxdWlyZSAoKTsNCj4gKyAgICAgIGlmIChp Zm4gPT0gSUZOX0xFTl9MT0FEKQ0KPiArIHsNCj4gKyAgIC8qIFRyeSBMRU5f TUFTS19MT0FELiAgKi8NCj4gKyAgIG9wdGFiID0gZGlyZWN0X2ludGVybmFs X2ZuX29wdGFiIChJRk5fTEVOX01BU0tfTE9BRCk7DQo+ICsgfQ0KPiArICAg ICAgZWxzZQ0KPiArIHsNCj4gKyAgIC8qIFRyeSBMRU5fTUFTS19TVE9SRS4g ICovDQo+ICsgICBvcHRhYiA9IGRpcmVjdF9pbnRlcm5hbF9mbl9vcHRhYiAo SUZOX0xFTl9NQVNLX1NUT1JFKTsNCj4gKyB9DQo+ICsgICAgICBpY29kZSA9 IGNvbnZlcnRfb3B0YWJfaGFuZGxlciAob3B0YWIsIG1vZGUsIG1hc2tfbW9k ZSk7DQo+ICsgICAgICBiaWFzX29wbm8gPSA0Ow0KPiArICAgIH0NCj4gIA0K PiAgICBpZiAoaWNvZGUgIT0gQ09ERV9GT1Jfbm90aGluZykNCj4gICAgICB7 DQo+ICAgICAgICAvKiBGb3Igbm93IHdlIG9ubHkgc3VwcG9ydCBiaWFzZXMg b2YgMCBvciAtMS4gIFRyeSBib3RoIG9mIHRoZW0uICAqLw0KPiAtICAgICAg aWYgKGluc25fb3BlcmFuZF9tYXRjaGVzIChpY29kZSwgMywgR0VOX0lOVCAo MCkpKQ0KPiArICAgICAgaWYgKGluc25fb3BlcmFuZF9tYXRjaGVzIChpY29k ZSwgYmlhc19vcG5vLCBHRU5fSU5UICgwKSkpDQo+ICByZXR1cm4gMDsNCj4g LSAgICAgIGlmIChpbnNuX29wZXJhbmRfbWF0Y2hlcyAoaWNvZGUsIDMsIEdF Tl9JTlQgKC0xKSkpDQo+ICsgICAgICBpZiAoaW5zbl9vcGVyYW5kX21hdGNo ZXMgKGljb2RlLCBiaWFzX29wbm8sIEdFTl9JTlQgKC0xKSkpDQo+ICByZXR1 cm4gLTE7DQo+ICAgICAgfQ0KPiAgDQo+IGRpZmYgLS1naXQgYS9nY2Mvb3B0 YWJzLXRyZWUuY2MgYi9nY2Mvb3B0YWJzLXRyZWUuY2MNCj4gaW5kZXggNzdi Zjc0NWFlNDAuLmFiOTUxNGZjOGUwIDEwMDY0NA0KPiAtLS0gYS9nY2Mvb3B0 YWJzLXRyZWUuY2MNCj4gKysrIGIvZ2NjL29wdGFicy10cmVlLmNjDQo+IEBA IC01NDMsMTkgKzU0Myw0OSBAQCB0YXJnZXRfc3VwcG9ydHNfb3BfcCAodHJl ZSB0eXBlLCBlbnVtIHRyZWVfY29kZSBjb2RlLA0KPiAgICAmJiBvcHRhYl9o YW5kbGVyIChvdCwgVFlQRV9NT0RFICh0eXBlKSkgIT0gQ09ERV9GT1Jfbm90 aGluZyk7DQo+ICB9DQo+ICANCj4gLS8qIFJldHVybiB0cnVlIGlmIHRhcmdl dCBzdXBwb3J0cyB2ZWN0b3IgbWFza2VkIGxvYWQvc3RvcmUgZm9yIG1vZGUu ICAqLw0KPiArLyogUmV0dXJuIHRydWUgaWYgdGhlIHRhcmdldCBoYXMgc3Vw cG9ydCBmb3IgbWFza2VkIGxvYWQvc3RvcmUuDQo+ICsgICBXZSBjYW4gc3Vw cG9ydCBtYXNrZWQgbG9hZC9zdG9yZSBieSBlaXRoZXIgbWFza3tsb2FkLHN0 b3JlfQ0KPiArICAgb3IgbGVuX21hc2t7bG9hZCxzdG9yZX0uDQo+ICsgICBU aGlzIGhlbHBlciBmdW5jdGlvbiBjaGVja3Mgd2hldGhlciB0YXJnZXQgc3Vw cG9ydHMgbWFza2VkDQo+ICsgICBsb2FkL3N0b3JlIGFuZCByZXR1cm4gY29y cmVzcG9uZGluZyBJRk4gaW4gdGhlIGxhc3QgYXJndW1lbnQNCj4gKyAgIChJ Rk5fTUFTS197TE9BRCxTVE9SRX0gb3IgSUZOX0xFTl9NQVNLX3tMT0FELFNU T1JFfSkuICAqLw0KPiArDQo+ICtzdGF0aWMgYm9vbA0KPiArdGFyZ2V0X3N1 cHBvcnRzX21hc2tfbG9hZF9zdG9yZV9wIChtYWNoaW5lX21vZGUgbW9kZSwg bWFjaGluZV9tb2RlIG1hc2tfbW9kZSwNCj4gKyAgICBib29sIGlzX2xvYWQs IGludGVybmFsX2ZuICppZm4pDQo+ICt7DQo+ICsgIG9wdGFiIG9wID0gaXNf bG9hZCA/IG1hc2tsb2FkX29wdGFiIDogbWFza3N0b3JlX29wdGFiOw0KPiAr ICBvcHRhYiBsZW5fb3AgPSBpc19sb2FkID8gbGVuX21hc2tsb2FkX29wdGFi IDogbGVuX21hc2tzdG9yZV9vcHRhYjsNCj4gKyAgaWYgKGNvbnZlcnRfb3B0 YWJfaGFuZGxlciAob3AsIG1vZGUsIG1hc2tfbW9kZSkgIT0gQ09ERV9GT1Jf bm90aGluZykNCj4gKyAgICB7DQo+ICsgICAgICBpZiAoaWZuKQ0KPiArICpp Zm4gPSBpc19sb2FkID8gSUZOX01BU0tfTE9BRCA6IElGTl9NQVNLX1NUT1JF Ow0KPiArICAgICAgcmV0dXJuIHRydWU7DQo+ICsgICAgfQ0KPiArICBlbHNl IGlmIChjb252ZXJ0X29wdGFiX2hhbmRsZXIgKGxlbl9vcCwgbW9kZSwgbWFz a19tb2RlKSAhPSBDT0RFX0ZPUl9ub3RoaW5nKQ0KPiArICAgIHsNCj4gKyAg ICAgICppZm4gPSBpc19sb2FkID8gSUZOX0xFTl9NQVNLX0xPQUQgOiBJRk5f TEVOX01BU0tfU1RPUkU7DQo+ICsgICAgICByZXR1cm4gdHJ1ZTsNCj4gKyAg ICB9DQo+ICsgIHJldHVybiBmYWxzZTsNCj4gK30NCj4gKw0KPiArLyogUmV0 dXJuIHRydWUgaWYgdGFyZ2V0IHN1cHBvcnRzIHZlY3RvciBtYXNrZWQgbG9h ZC9zdG9yZSBmb3IgbW9kZS4NCj4gKyAgIEFuIGFkZGl0aW9uYWwgb3V0cHV0 IGluIHRoZSBsYXN0IGFyZ3VtZW5udCB3aGljaCBpcyB0aGUgSUZOIHBvaW50 ZXIuDQo+ICsgICBXZSBzZXQgSUZOIGFzIE1BU0tfe0xPQUQsU1RPUkV9IG9y IExFTl9NQVNLX3tMT0FELFNUT1JFfSBhY2NvcmRpbmcNCj4gKyAgIHdoaWNo IG9wdGFiIGlzIHN1cHBvcnRlZCBpbiB0aGUgdGFyZ2UuICAqLw0KPiAgDQo+ ICBib29sDQo+ICBjYW5fdmVjX21hc2tfbG9hZF9zdG9yZV9wIChtYWNoaW5l X21vZGUgbW9kZSwNCj4gICAgIG1hY2hpbmVfbW9kZSBtYXNrX21vZGUsDQo+ IC0gICAgYm9vbCBpc19sb2FkKQ0KPiArICAgIGJvb2wgaXNfbG9hZCwNCj4g KyAgICBpbnRlcm5hbF9mbiAqaWZuKQ0KPiAgew0KPiAtICBvcHRhYiBvcCA9 IGlzX2xvYWQgPyBtYXNrbG9hZF9vcHRhYiA6IG1hc2tzdG9yZV9vcHRhYjsN Cj4gICAgbWFjaGluZV9tb2RlIHZtb2RlOw0KPiAgDQo+ICAgIC8qIElmIG1v ZGUgaXMgdmVjdG9yIG1vZGUsIGNoZWNrIGl0IGRpcmVjdGx5LiAgKi8NCj4g ICAgaWYgKFZFQ1RPUl9NT0RFX1AgKG1vZGUpKQ0KPiAtICAgIHJldHVybiBj b252ZXJ0X29wdGFiX2hhbmRsZXIgKG9wLCBtb2RlLCBtYXNrX21vZGUpICE9 IENPREVfRk9SX25vdGhpbmc7DQo+ICsgICAgcmV0dXJuIHRhcmdldF9zdXBw b3J0c19tYXNrX2xvYWRfc3RvcmVfcCAobW9kZSwgbWFza19tb2RlLCBpc19s b2FkLCBpZm4pOw0KPiAgDQo+ICAgIC8qIE90aGVyd2lzZSwgcmV0dXJuIHRy dWUgaWYgdGhlcmUgaXMgc29tZSB2ZWN0b3IgbW9kZSB3aXRoDQo+ICAgICAg IHRoZSBtYXNrIGxvYWQvc3RvcmUgc3VwcG9ydGVkLiAgKi8NCj4gQEAgLTU2 OSw3ICs1OTksNyBAQCBjYW5fdmVjX21hc2tfbG9hZF9zdG9yZV9wIChtYWNo aW5lX21vZGUgbW9kZSwNCj4gICAgdm1vZGUgPSB0YXJnZXRtLnZlY3Rvcml6 ZS5wcmVmZXJyZWRfc2ltZF9tb2RlIChzbW9kZSk7DQo+ICAgIGlmIChWRUNU T1JfTU9ERV9QICh2bW9kZSkNCj4gICAgICAgICYmIHRhcmdldG0udmVjdG9y aXplLmdldF9tYXNrX21vZGUgKHZtb2RlKS5leGlzdHMgKCZtYXNrX21vZGUp DQo+IC0gICAgICAmJiBjb252ZXJ0X29wdGFiX2hhbmRsZXIgKG9wLCB2bW9k ZSwgbWFza19tb2RlKSAhPSBDT0RFX0ZPUl9ub3RoaW5nKQ0KPiArICAgICAg JiYgdGFyZ2V0X3N1cHBvcnRzX21hc2tfbG9hZF9zdG9yZV9wICh2bW9kZSwg bWFza19tb2RlLCBpc19sb2FkLCBpZm4pKQ0KPiAgICAgIHJldHVybiB0cnVl Ow0KPiAgDQo+ICAgIGF1dG9fdmVjdG9yX21vZGVzIHZlY3Rvcl9tb2RlczsN Cj4gQEAgLTU3NywzMyArNjA3LDY2IEBAIGNhbl92ZWNfbWFza19sb2FkX3N0 b3JlX3AgKG1hY2hpbmVfbW9kZSBtb2RlLA0KPiAgICBmb3IgKG1hY2hpbmVf bW9kZSBiYXNlX21vZGUgOiB2ZWN0b3JfbW9kZXMpDQo+ICAgICAgaWYgKHJl bGF0ZWRfdmVjdG9yX21vZGUgKGJhc2VfbW9kZSwgc21vZGUpLmV4aXN0cyAo JnZtb2RlKQ0KPiAgJiYgdGFyZ2V0bS52ZWN0b3JpemUuZ2V0X21hc2tfbW9k ZSAodm1vZGUpLmV4aXN0cyAoJm1hc2tfbW9kZSkNCj4gLSAmJiBjb252ZXJ0 X29wdGFiX2hhbmRsZXIgKG9wLCB2bW9kZSwgbWFza19tb2RlKSAhPSBDT0RF X0ZPUl9ub3RoaW5nKQ0KPiArICYmIHRhcmdldF9zdXBwb3J0c19tYXNrX2xv YWRfc3RvcmVfcCAodm1vZGUsIG1hc2tfbW9kZSwgaXNfbG9hZCwgaWZuKSkN Cj4gICAgICAgIHJldHVybiB0cnVlOw0KPiAgICByZXR1cm4gZmFsc2U7DQo+ ICB9DQo+ICANCj4gKy8qIFJldHVybiB0cnVlIGlmIHRoZSB0YXJnZXQgaGFz IHN1cHBvcnQgZm9yIGxlbiBsb2FkL3N0b3JlLg0KPiArICAgV2UgY2FuIHN1 cHBvcnQgbGVuIGxvYWQvc3RvcmUgYnkgZWl0aGVyIGxlbl97bG9hZCxzdG9y ZX0NCj4gKyAgIG9yIGxlbl9tYXNre2xvYWQsc3RvcmV9Lg0KPiArICAgVGhp cyBoZWxwZXIgZnVuY3Rpb24gY2hlY2tzIHdoZXRoZXIgdGFyZ2V0IHN1cHBv cnRzIGxlbg0KPiArICAgbG9hZC9zdG9yZSBhbmQgcmV0dXJuIGNvcnJlc3Bv bmRpbmcgSUZOIGluIHRoZSBsYXN0IGFyZ3VtZW50DQo+ICsgICAoSUZOX0xF Tl97TE9BRCxTVE9SRX0gb3IgSUZOX0xFTl9NQVNLX3tMT0FELFNUT1JFfSku ICAqLw0KPiArDQo+ICtzdGF0aWMgYm9vbA0KPiArdGFyZ2V0X3N1cHBvcnRz X2xlbl9sb2FkX3N0b3JlX3AgKG1hY2hpbmVfbW9kZSBtb2RlLCBib29sIGlz X2xvYWQsDQo+ICsgICBpbnRlcm5hbF9mbiAqaWZuKQ0KPiArew0KPiArICBv cHRhYiBvcCA9IGlzX2xvYWQgPyBsZW5fbG9hZF9vcHRhYiA6IGxlbl9zdG9y ZV9vcHRhYjsNCj4gKyAgb3B0YWIgbWFza2VkX29wID0gaXNfbG9hZCA/IGxl bl9tYXNrbG9hZF9vcHRhYiA6IGxlbl9tYXNrc3RvcmVfb3B0YWI7DQo+ICsN Cj4gKyAgaWYgKGRpcmVjdF9vcHRhYl9oYW5kbGVyIChvcCwgbW9kZSkpDQo+ ICsgICAgew0KPiArICAgICAgaWYgKGlmbikNCj4gKyAqaWZuID0gaXNfbG9h ZCA/IElGTl9MRU5fTE9BRCA6IElGTl9MRU5fU1RPUkU7DQo+ICsgICAgICBy ZXR1cm4gdHJ1ZTsNCj4gKyAgICB9DQo+ICsgIG1hY2hpbmVfbW9kZSBtYXNr X21vZGU7DQo+ICsgIGlmICh0YXJnZXRtLnZlY3Rvcml6ZS5nZXRfbWFza19t b2RlIChtb2RlKS5leGlzdHMgKCZtYXNrX21vZGUpDQo+ICsgICAgICAmJiBj b252ZXJ0X29wdGFiX2hhbmRsZXIgKG1hc2tlZF9vcCwgbW9kZSwgbWFza19t b2RlKSAhPSBDT0RFX0ZPUl9ub3RoaW5nKQ0KPiArICAgIHsNCj4gKyAgICAg IGlmIChpZm4pDQo+ICsgKmlmbiA9IGlzX2xvYWQgPyBJRk5fTEVOX01BU0tf TE9BRCA6IElGTl9MRU5fTUFTS19TVE9SRTsNCj4gKyAgICAgIHJldHVybiB0 cnVlOw0KPiArICAgIH0NCj4gKyAgcmV0dXJuIGZhbHNlOw0KPiArfQ0KPiAr DQo+ICAvKiBJZiB0YXJnZXQgc3VwcG9ydHMgdmVjdG9yIGxvYWQvc3RvcmUg d2l0aCBsZW5ndGggZm9yIHZlY3RvciBtb2RlIE1PREUsDQo+ICAgICByZXR1 cm4gdGhlIGNvcnJlc3BvbmRpbmcgdmVjdG9yIG1vZGUsIG90aGVyd2lzZSBy ZXR1cm4gb3B0X21hY2hpbmVfbW9kZSAoKS4NCj4gICAgIFRoZXJlIGFyZSB0 d28gZmxhdm9ycyBmb3IgdmVjdG9yIGxvYWQvc3RvcmUgd2l0aCBsZW5ndGgs IG9uZSBpcyB0byBtZWFzdXJlDQo+ICAgICBsZW5ndGggd2l0aCBieXRlcywg dGhlIG90aGVyIGlzIHRvIG1lYXN1cmUgbGVuZ3RoIHdpdGggbGFuZXMuDQo+ ICAgICBBcyBsZW5fe2xvYWQsc3RvcmV9IG9wdGFicyBwb2ludCBvdXQsIGZv ciB0aGUgZmxhdm9yIHdpdGggYnl0ZXMsIHdlIHVzZQ0KPiAtICAgVm5RSSB0 byB3cmFwIHRoZSBvdGhlciBzdXBwb3J0YWJsZSBzYW1lIHNpemUgdmVjdG9y IG1vZGVzLiAgKi8NCj4gKyAgIFZuUUkgdG8gd3JhcCB0aGUgb3RoZXIgc3Vw cG9ydGFibGUgc2FtZSBzaXplIHZlY3RvciBtb2Rlcy4NCj4gKyAgIEFuIGFk ZGl0aW9uYWwgb3V0cHV0IGluIHRoZSBsYXN0IGFyZ3VtZW5udCB3aGljaCBp cyB0aGUgSUZOIHBvaW50ZXIuDQo+ICsgICBXZSBzZXQgSUZOIGFzIExFTl97 TE9BRCxTVE9SRX0gb3IgTEVOX01BU0tfe0xPQUQsU1RPUkV9IGFjY29yZGlu Zw0KPiArICAgd2hpY2ggb3B0YWIgaXMgc3VwcG9ydGVkIGluIHRoZSB0YXJn ZS4gICovDQo+ICANCj4gIG9wdF9tYWNoaW5lX21vZGUNCj4gLWdldF9sZW5f bG9hZF9zdG9yZV9tb2RlIChtYWNoaW5lX21vZGUgbW9kZSwgYm9vbCBpc19s b2FkKQ0KPiArZ2V0X2xlbl9sb2FkX3N0b3JlX21vZGUgKG1hY2hpbmVfbW9k ZSBtb2RlLCBib29sIGlzX2xvYWQsIGludGVybmFsX2ZuICppZm4pDQo+ICB7 DQo+IC0gIG9wdGFiIG9wID0gaXNfbG9hZCA/IGxlbl9sb2FkX29wdGFiIDog bGVuX3N0b3JlX29wdGFiOw0KPiAgICBnY2NfYXNzZXJ0IChWRUNUT1JfTU9E RV9QIChtb2RlKSk7DQo+ICANCj4gICAgLyogQ2hlY2sgaWYgbGVuZ3RoIGlu IGxhbmVzIHN1cHBvcnRlZCBmb3IgdGhpcyBtb2RlIGRpcmVjdGx5LiAgKi8N Cj4gLSAgaWYgKGRpcmVjdF9vcHRhYl9oYW5kbGVyIChvcCwgbW9kZSkpDQo+ ICsgIGlmICh0YXJnZXRfc3VwcG9ydHNfbGVuX2xvYWRfc3RvcmVfcCAobW9k ZSwgaXNfbG9hZCwgaWZuKSkNCj4gICAgICByZXR1cm4gbW9kZTsNCj4gIA0K PiAgICAvKiBDaGVjayBpZiBsZW5ndGggaW4gYnl0ZXMgc3VwcG9ydGVkIGZv ciBzYW1lIHZlY3RvciBzaXplIFZuUUkuICAqLw0KPiAgICBtYWNoaW5lX21v ZGUgdm1vZGU7DQo+ICAgIHBvbHlfdWludDY0IG51bml0cyA9IEdFVF9NT0RF X1NJWkUgKG1vZGUpOw0KPiAgICBpZiAocmVsYXRlZF92ZWN0b3JfbW9kZSAo bW9kZSwgUUltb2RlLCBudW5pdHMpLmV4aXN0cyAoJnZtb2RlKQ0KPiAtICAg ICAgJiYgZGlyZWN0X29wdGFiX2hhbmRsZXIgKG9wLCB2bW9kZSkpDQo+ICsg ICAgICAmJiB0YXJnZXRfc3VwcG9ydHNfbGVuX2xvYWRfc3RvcmVfcCAodm1v ZGUsIGlzX2xvYWQsIGlmbikpDQo+ICAgICAgcmV0dXJuIHZtb2RlOw0KPiAg DQo+ICAgIHJldHVybiBvcHRfbWFjaGluZV9tb2RlICgpOw0KPiBkaWZmIC0t Z2l0IGEvZ2NjL29wdGFicy10cmVlLmggYi9nY2Mvb3B0YWJzLXRyZWUuaA0K PiBpbmRleCBhM2Y3OWI2YmQ0My4uZTQyMWZjMjQyODkgMTAwNjQ0DQo+IC0t LSBhL2djYy9vcHRhYnMtdHJlZS5oDQo+ICsrKyBiL2djYy9vcHRhYnMtdHJl ZS5oDQo+IEBAIC00Nyw3ICs0Nyw5IEBAIGJvb2wgZXhwYW5kX3ZlY19jb25k X2V4cHJfcCAodHJlZSwgdHJlZSwgZW51bSB0cmVlX2NvZGUpOw0KPiAgdm9p ZCBpbml0X3RyZWVfb3B0aW1pemF0aW9uX29wdGFicyAodHJlZSk7DQo+ICBi b29sIHRhcmdldF9zdXBwb3J0c19vcF9wICh0cmVlLCBlbnVtIHRyZWVfY29k ZSwNCj4gICAgIGVudW0gb3B0YWJfc3VidHlwZSA9IG9wdGFiX2RlZmF1bHQp Ow0KPiAtYm9vbCBjYW5fdmVjX21hc2tfbG9hZF9zdG9yZV9wIChtYWNoaW5l X21vZGUsIG1hY2hpbmVfbW9kZSwgYm9vbCk7DQo+IC1vcHRfbWFjaGluZV9t b2RlIGdldF9sZW5fbG9hZF9zdG9yZV9tb2RlIChtYWNoaW5lX21vZGUsIGJv b2wpOw0KPiArYm9vbCBjYW5fdmVjX21hc2tfbG9hZF9zdG9yZV9wIChtYWNo aW5lX21vZGUsIG1hY2hpbmVfbW9kZSwgYm9vbCwNCj4gKyBpbnRlcm5hbF9m biAqID0gbnVsbHB0cik7DQo+ICtvcHRfbWFjaGluZV9tb2RlIGdldF9sZW5f bG9hZF9zdG9yZV9tb2RlIChtYWNoaW5lX21vZGUsIGJvb2wsDQo+ICsgICBp bnRlcm5hbF9mbiAqID0gbnVsbHB0cik7DQo+ICANCj4gICNlbmRpZg0KPiBk aWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYyBiL2djYy90cmVl LXZlY3Qtc3RtdHMuY2MNCj4gaW5kZXggMDU2YTBlY2IyYmUuLmQ1M2M0ZTRm MmU1IDEwMDY0NA0KPiAtLS0gYS9nY2MvdHJlZS12ZWN0LXN0bXRzLmNjDQo+ ICsrKyBiL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MNCj4gQEAgLTE4MTksMTYg KzE4MTksOCBAQCBjaGVja19sb2FkX3N0b3JlX2Zvcl9wYXJ0aWFsX3ZlY3Rv cnMgKGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywgdHJlZSB2ZWN0eXBlLA0K PiAgICBwb2x5X3VpbnQ2NCBudW5pdHMgPSBUWVBFX1ZFQ1RPUl9TVUJQQVJU UyAodmVjdHlwZSk7DQo+ICAgIHBvbHlfdWludDY0IHZmID0gTE9PUF9WSU5G T19WRUNUX0ZBQ1RPUiAobG9vcF92aW5mbyk7DQo+ICAgIG1hY2hpbmVfbW9k ZSBtYXNrX21vZGU7DQo+IC0gIGJvb2wgdXNpbmdfcGFydGlhbF92ZWN0b3Jz X3AgPSBmYWxzZTsNCj4gLSAgaWYgKHRhcmdldG0udmVjdG9yaXplLmdldF9t YXNrX21vZGUgKHZlY21vZGUpLmV4aXN0cyAoJm1hc2tfbW9kZSkNCj4gLSAg ICAgICYmIGNhbl92ZWNfbWFza19sb2FkX3N0b3JlX3AgKHZlY21vZGUsIG1h c2tfbW9kZSwgaXNfbG9hZCkpDQo+IC0gICAgew0KPiAtICAgICAgbnZlY3Rv cnMgPSBncm91cF9tZW1vcnlfbnZlY3RvcnMgKGdyb3VwX3NpemUgKiB2Ziwg bnVuaXRzKTsNCj4gLSAgICAgIHZlY3RfcmVjb3JkX2xvb3BfbWFzayAobG9v cF92aW5mbywgbWFza3MsIG52ZWN0b3JzLCB2ZWN0eXBlLCBzY2FsYXJfbWFz ayk7DQo+IC0gICAgICB1c2luZ19wYXJ0aWFsX3ZlY3RvcnNfcCA9IHRydWU7 DQo+IC0gICAgfQ0KPiAtDQo+ICAgIG1hY2hpbmVfbW9kZSB2bW9kZTsNCj4g KyAgYm9vbCB1c2luZ19wYXJ0aWFsX3ZlY3RvcnNfcCA9IGZhbHNlOw0KPiAg ICBpZiAoZ2V0X2xlbl9sb2FkX3N0b3JlX21vZGUgKHZlY21vZGUsIGlzX2xv YWQpLmV4aXN0cyAoJnZtb2RlKSkNCj4gICAgICB7DQo+ICAgICAgICBudmVj dG9ycyA9IGdyb3VwX21lbW9yeV9udmVjdG9ycyAoZ3JvdXBfc2l6ZSAqIHZm LCBudW5pdHMpOw0KPiBAQCAtMTgzNyw2ICsxODI5LDEzIEBAIGNoZWNrX2xv YWRfc3RvcmVfZm9yX3BhcnRpYWxfdmVjdG9ycyAobG9vcF92ZWNfaW5mbyBs b29wX3ZpbmZvLCB0cmVlIHZlY3R5cGUsDQo+ICAgICAgICB2ZWN0X3JlY29y ZF9sb29wX2xlbiAobG9vcF92aW5mbywgbGVucywgbnZlY3RvcnMsIHZlY3R5 cGUsIGZhY3Rvcik7DQo+ICAgICAgICB1c2luZ19wYXJ0aWFsX3ZlY3RvcnNf cCA9IHRydWU7DQo+ICAgICAgfQ0KPiArICBlbHNlIGlmICh0YXJnZXRtLnZl Y3Rvcml6ZS5nZXRfbWFza19tb2RlICh2ZWNtb2RlKS5leGlzdHMgKCZtYXNr X21vZGUpDQo+ICsgICAgJiYgY2FuX3ZlY19tYXNrX2xvYWRfc3RvcmVfcCAo dmVjbW9kZSwgbWFza19tb2RlLCBpc19sb2FkKSkNCj4gKyAgICB7DQo+ICsg ICAgICBudmVjdG9ycyA9IGdyb3VwX21lbW9yeV9udmVjdG9ycyAoZ3JvdXBf c2l6ZSAqIHZmLCBudW5pdHMpOw0KPiArICAgICAgdmVjdF9yZWNvcmRfbG9v cF9tYXNrIChsb29wX3ZpbmZvLCBtYXNrcywgbnZlY3RvcnMsIHZlY3R5cGUs IHNjYWxhcl9tYXNrKTsNCj4gKyAgICAgIHVzaW5nX3BhcnRpYWxfdmVjdG9y c19wID0gdHJ1ZTsNCj4gKyAgICB9DQo+ICANCj4gICAgaWYgKCF1c2luZ19w YXJ0aWFsX3ZlY3RvcnNfcCkNCj4gICAgICB7DQo+IEBAIC0zMTc1LDYgKzMx NzQsMTcgQEAgdmVjdF9nZXRfbG9vcF92YXJpYW50X2RhdGFfcHRyX2luY3Jl bWVudCAoDQo+ICAgIHJldHVybiBidW1wOw0KPiAgfQ0KPiAgDQo+ICsvKiBH ZXQgYWxsLW9uZXMgdmVjdG9yIG1hc2sgZm9yIGNvcnJlc3BvbmRpbmcgdmVj dHlwZS4gICovDQo+ICsNCj4gK3N0YXRpYyB0cmVlDQo+ICtnZXRfYWxsX29u ZXNfbWFzayAobWFjaGluZV9tb2RlIHZtb2RlKQ0KPiArew0KPiArICBtYWNo aW5lX21vZGUgbWFza21vZGUgPSB0YXJnZXRtLnZlY3Rvcml6ZS5nZXRfbWFz a19tb2RlICh2bW9kZSkucmVxdWlyZSAoKTsNCj4gKyAgcG9seV91aW50NjQg bnVuaXRzID0gR0VUX01PREVfTlVOSVRTIChtYXNrbW9kZSk7DQo+ICsgIHRy ZWUgbWFza3R5cGUgPSBidWlsZF90cnV0aF92ZWN0b3JfdHlwZV9mb3JfbW9k ZSAobnVuaXRzLCBtYXNrbW9kZSk7DQo+ICsgIHJldHVybiBjb25zdGFudF9i b29sZWFuX25vZGUgKHRydWUsIG1hc2t0eXBlKTsNCj4gK30NCj4gKw0KPiAg LyogUmV0dXJuIHRoZSBhbW91bnQgdGhhdCBzaG91bGQgYmUgYWRkZWQgdG8g YSB2ZWN0b3IgcG9pbnRlciB0byBtb3ZlDQo+ICAgICB0byB0aGUgbmV4dCBv ciBwcmV2aW91cyBjb3B5IG9mIEFHR1JfVFlQRS4gIERSX0lORk8gaXMgdGhl IGRhdGEgcmVmZXJlbmNlDQo+ICAgICBiZWluZyB2ZWN0b3JpemVkIGFuZCBN RU1PUllfQUNDRVNTX1RZUEUgZGVzY3JpYmVzIHRoZSB0eXBlIG9mDQo+IEBA IC04OTQ0LDMwICs4OTU0LDU4IEBAIHZlY3Rvcml6YWJsZV9zdG9yZSAodmVj X2luZm8gKnZpbmZvLA0KPiAgICB2ZWNfb3BybmQgPSBuZXdfdGVtcDsNCj4g IH0NCj4gIA0KPiAtICAgICAgIC8qIEFyZ3VtZW50cyBhcmUgcmVhZHkuICBD cmVhdGUgdGhlIG5ldyB2ZWN0b3Igc3RtdC4gICovDQo+IC0gICAgICAgaWYg KGZpbmFsX21hc2spDQo+IC0gew0KPiAtICAgdHJlZSBwdHIgPSBidWlsZF9p bnRfY3N0IChyZWZfdHlwZSwgYWxpZ24gKiBCSVRTX1BFUl9VTklUKTsNCj4g LSAgIGdjYWxsICpjYWxsDQo+IC0gICAgID0gZ2ltcGxlX2J1aWxkX2NhbGxf aW50ZXJuYWwgKElGTl9NQVNLX1NUT1JFLCA0LA0KPiAtICAgZGF0YXJlZl9w dHIsIHB0ciwNCj4gLSAgIGZpbmFsX21hc2ssIHZlY19vcHJuZCk7DQo+IC0g ICBnaW1wbGVfY2FsbF9zZXRfbm90aHJvdyAoY2FsbCwgdHJ1ZSk7DQo+IC0g ICB2ZWN0X2ZpbmlzaF9zdG10X2dlbmVyYXRpb24gKHZpbmZvLCBzdG10X2lu Zm8sIGNhbGwsIGdzaSk7DQo+IC0gICBuZXdfc3RtdCA9IGNhbGw7DQo+IC0g fQ0KPiAtICAgICAgIGVsc2UgaWYgKGxvb3BfbGVucykNCj4gKyAgICAgICAv KiBDb21wdXRlIElGTiB3aGVuIExPT1BfTEVOUyBvciBmaW5hbF9tYXNrIHZh bGlkLiAgKi8NCj4gKyAgICAgICBtYWNoaW5lX21vZGUgdm1vZGUgPSBUWVBF X01PREUgKHZlY3R5cGUpOw0KPiArICAgICAgIG1hY2hpbmVfbW9kZSBuZXdf dm1vZGUgPSB2bW9kZTsNCj4gKyAgICAgICBpbnRlcm5hbF9mbiBwYXJ0aWFs X2lmbiA9IElGTl9MQVNUOw0KPiArICAgICAgIC8qIFByb2R1Y2UgJ2xlbicg YW5kICdiaWFzJyBhcmd1bWVudC4gICovDQo+ICsgICAgICAgdHJlZSBmaW5h bF9sZW4gPSBOVUxMX1RSRUU7DQo+ICsgICAgICAgdHJlZSBiaWFzID0gTlVM TF9UUkVFOw0KPiArICAgICAgIGlmIChsb29wX2xlbnMpDQo+ICB7DQo+IC0g ICBtYWNoaW5lX21vZGUgdm1vZGUgPSBUWVBFX01PREUgKHZlY3R5cGUpOw0K PiAgICBvcHRfbWFjaGluZV9tb2RlIG5ld19vdm1vZGUNCj4gICAgICA9IGdl dF9sZW5fbG9hZF9zdG9yZV9tb2RlICh2bW9kZSwgZmFsc2UpOw0KPiAtICAg bWFjaGluZV9tb2RlIG5ld192bW9kZSA9IG5ld19vdm1vZGUucmVxdWlyZSAo KTsNCj4gKyAgIG5ld192bW9kZSA9IG5ld19vdm1vZGUucmVxdWlyZSAoKTsN Cj4gICAgdW5zaWduZWQgZmFjdG9yDQo+ICAgICAgPSAobmV3X292bW9kZSA9 PSB2bW9kZSkgPyAxIDogR0VUX01PREVfVU5JVF9TSVpFICh2bW9kZSk7DQo+ IC0gICB0cmVlIGZpbmFsX2xlbg0KPiAtICAgICA9IHZlY3RfZ2V0X2xvb3Bf bGVuIChsb29wX3ZpbmZvLCBnc2ksIGxvb3BfbGVucywNCj4gLSB2ZWNfbnVt ICogbmNvcGllcywgdmVjdHlwZSwNCj4gLSB2ZWNfbnVtICogaiArIGksIGZh Y3Rvcik7DQo+ICsgICBmaW5hbF9sZW4gPSB2ZWN0X2dldF9sb29wX2xlbiAo bG9vcF92aW5mbywgZ3NpLCBsb29wX2xlbnMsDQo+ICsgdmVjX251bSAqIG5j b3BpZXMsIHZlY3R5cGUsDQo+ICsgdmVjX251bSAqIGogKyBpLCBmYWN0b3Ip Ow0KPiArIH0NCj4gKyAgICAgICBlbHNlIGlmIChmaW5hbF9tYXNrKQ0KPiAr IGNhbl92ZWNfbWFza19sb2FkX3N0b3JlX3AgKHZtb2RlLCBUWVBFX01PREUg KG1hc2tfdmVjdHlwZSksDQo+ICsgICAgZmFsc2UsICZwYXJ0aWFsX2lmbik7 DQo+ICsNCj4gKyAgICAgICBpZiAocGFydGlhbF9pZm4gPT0gSUZOX0xFTl9N QVNLX1NUT1JFKQ0KPiArIHsNCj4gKyAgIGlmICghZmluYWxfbGVuKQ0KPiAr ICAgICB7DQo+ICsgICAgICAgLyogUGFzcyBWRiB2YWx1ZSB0byAnbGVuJyBh cmd1bWVudCBvZg0KPiArICAgICAgICAqIExFTl9NQVNLX1NUT1JFIGlmIExP T1BfTEVOUyBpcyBpbnZhbGlkLiAgKi8NCj4gKyAgICAgICB0cmVlIGl2X3R5 cGUgPSBMT09QX1ZJTkZPX1JHUk9VUF9JVl9UWVBFIChsb29wX3ZpbmZvKTsN Cj4gKyAgICAgICBmaW5hbF9sZW4NCj4gKyA9IGJ1aWxkX2ludF9jc3QgKGl2 X3R5cGUsDQo+ICsgVFlQRV9WRUNUT1JfU1VCUEFSVFMgKHZlY3R5cGUpKTsN Cj4gKyAgICAgfQ0KPiArICAgaWYgKCFmaW5hbF9tYXNrKQ0KPiArICAgICB7 DQo+ICsgICAgICAgLyogUGFzcyBhbGwgb25lcyB2YWx1ZSB0byAnbWFzaycg YXJndW1lbnQgb2YNCj4gKyAgICAgICAgKiBMRU5fTUFTS19TVE9SRSBpZiBm aW5hbF9tYXNrIGlzIGludmFsaWQuICAqLw0KPiArICAgICAgIGZpbmFsX21h c2sgPSBnZXRfYWxsX29uZXNfbWFzayAodm1vZGUpOw0KPiArICAgICB9DQo+ ICsgfQ0KPiArICAgICAgIGlmIChmaW5hbF9sZW4pDQo+ICsgew0KPiArICAg c2lnbmVkIGNoYXIgYmlhc3ZhbA0KPiArICAgICA9IExPT1BfVklORk9fUEFS VElBTF9MT0FEX1NUT1JFX0JJQVMgKGxvb3BfdmluZm8pOw0KPiArDQo+ICsg ICBiaWFzID0gYnVpbGRfaW50X2NzdCAoaW50UUlfdHlwZV9ub2RlLCBiaWFz dmFsKTsNCj4gKyB9DQo+ICsNCj4gKyAgICAgICAvKiBBcmd1bWVudHMgYXJl IHJlYWR5LiAgQ3JlYXRlIHRoZSBuZXcgdmVjdG9yIHN0bXQuICAqLw0KPiAr ICAgICAgIGlmIChmaW5hbF9sZW4pDQo+ICsgew0KPiArICAgZ2NhbGwgKmNh bGw7DQo+ICAgIHRyZWUgcHRyID0gYnVpbGRfaW50X2NzdCAocmVmX3R5cGUs IGFsaWduICogQklUU19QRVJfVU5JVCk7DQo+ICAgIC8qIE5lZWQgY29udmVy c2lvbiBpZiBpdCdzIHdyYXBwZWQgd2l0aCBWblFJLiAgKi8NCj4gICAgaWYg KHZtb2RlICE9IG5ld192bW9kZSkNCj4gQEAgLTg5ODcsMTQgKzkwMjUsMjcg QEAgdmVjdG9yaXphYmxlX3N0b3JlICh2ZWNfaW5mbyAqdmluZm8sDQo+ICAg ICAgICB2ZWNfb3BybmQgPSB2YXI7DQo+ICAgICAgfQ0KPiAgDQo+IC0gICBz aWduZWQgY2hhciBiaWFzdmFsID0NCj4gLSAgICAgTE9PUF9WSU5GT19QQVJU SUFMX0xPQURfU1RPUkVfQklBUyAobG9vcF92aW5mbyk7DQo+IC0NCj4gLSAg IHRyZWUgYmlhcyA9IGJ1aWxkX2ludF9jc3QgKGludFFJX3R5cGVfbm9kZSwg Ymlhc3ZhbCk7DQo+ICsgICBpZiAocGFydGlhbF9pZm4gPT0gSUZOX0xFTl9N QVNLX1NUT1JFKQ0KPiArICAgICBjYWxsID0gZ2ltcGxlX2J1aWxkX2NhbGxf aW50ZXJuYWwgKElGTl9MRU5fTUFTS19TVE9SRSwgNiwNCj4gKyAgICAgICAg ZGF0YXJlZl9wdHIsIHB0ciwNCj4gKyAgICAgICAgZmluYWxfbGVuLCBmaW5h bF9tYXNrLA0KPiArICAgICAgICB2ZWNfb3BybmQsIGJpYXMpOw0KPiArICAg ZWxzZQ0KPiArICAgICBjYWxsDQo+ICsgICAgICAgPSBnaW1wbGVfYnVpbGRf Y2FsbF9pbnRlcm5hbCAoSUZOX0xFTl9TVE9SRSwgNSwNCj4gKyAgICAgZGF0 YXJlZl9wdHIsIHB0ciwgZmluYWxfbGVuLA0KPiArICAgICB2ZWNfb3BybmQs IGJpYXMpOw0KPiArICAgZ2ltcGxlX2NhbGxfc2V0X25vdGhyb3cgKGNhbGws IHRydWUpOw0KPiArICAgdmVjdF9maW5pc2hfc3RtdF9nZW5lcmF0aW9uICh2 aW5mbywgc3RtdF9pbmZvLCBjYWxsLCBnc2kpOw0KPiArICAgbmV3X3N0bXQg PSBjYWxsOw0KPiArIH0NCj4gKyAgICAgICBlbHNlIGlmIChmaW5hbF9tYXNr KQ0KPiArIHsNCj4gKyAgIHRyZWUgcHRyID0gYnVpbGRfaW50X2NzdCAocmVm X3R5cGUsIGFsaWduICogQklUU19QRVJfVU5JVCk7DQo+ICAgIGdjYWxsICpj YWxsDQo+IC0gICAgID0gZ2ltcGxlX2J1aWxkX2NhbGxfaW50ZXJuYWwgKElG Tl9MRU5fU1RPUkUsIDUsIGRhdGFyZWZfcHRyLA0KPiAtICAgcHRyLCBmaW5h bF9sZW4sIHZlY19vcHJuZCwNCj4gLSAgIGJpYXMpOw0KPiArICAgICA9IGdp bXBsZV9idWlsZF9jYWxsX2ludGVybmFsIChJRk5fTUFTS19TVE9SRSwgNCwN Cj4gKyAgIGRhdGFyZWZfcHRyLCBwdHIsDQo+ICsgICBmaW5hbF9tYXNrLCB2 ZWNfb3BybmQpOw0KPiAgICBnaW1wbGVfY2FsbF9zZXRfbm90aHJvdyAoY2Fs bCwgdHJ1ZSk7DQo+ICAgIHZlY3RfZmluaXNoX3N0bXRfZ2VuZXJhdGlvbiAo dmluZm8sIHN0bXRfaW5mbywgY2FsbCwgZ3NpKTsNCj4gICAgbmV3X3N0bXQg PSBjYWxsOw0KPiBAQCAtMTAzMDQsNDUgKzEwMzU1LDcyIEBAIHZlY3Rvcml6 YWJsZV9sb2FkICh2ZWNfaW5mbyAqdmluZm8sDQo+ICAgICAgICBhbGlnbiwg bWlzYWxpZ24pOw0KPiAgICAgIGFsaWduID0gbGVhc3RfYml0X2h3aSAobWlz YWxpZ24gfCBhbGlnbik7DQo+ICANCj4gLSAgICAgaWYgKGZpbmFsX21hc2sp DQo+IC0gICAgICAgew0KPiAtIHRyZWUgcHRyID0gYnVpbGRfaW50X2NzdCAo cmVmX3R5cGUsDQo+IC0gICBhbGlnbiAqIEJJVFNfUEVSX1VOSVQpOw0KPiAt IGdjYWxsICpjYWxsDQo+IC0gICA9IGdpbXBsZV9idWlsZF9jYWxsX2ludGVy bmFsIChJRk5fTUFTS19MT0FELCAzLA0KPiAtIGRhdGFyZWZfcHRyLCBwdHIs DQo+IC0gZmluYWxfbWFzayk7DQo+IC0gZ2ltcGxlX2NhbGxfc2V0X25vdGhy b3cgKGNhbGwsIHRydWUpOw0KPiAtIG5ld19zdG10ID0gY2FsbDsNCj4gLSBk YXRhX3JlZiA9IE5VTExfVFJFRTsNCj4gLSAgICAgICB9DQo+IC0gICAgIGVs c2UgaWYgKGxvb3BfbGVucyAmJiBtZW1vcnlfYWNjZXNzX3R5cGUgIT0gVk1B VF9JTlZBUklBTlQpDQo+ICsgICAgIC8qIENvbXB1dGUgSUZOIHdoZW4gTE9P UF9MRU5TIG9yIGZpbmFsX21hc2sgdmFsaWQuICAqLw0KPiArICAgICBtYWNo aW5lX21vZGUgdm1vZGUgPSBUWVBFX01PREUgKHZlY3R5cGUpOw0KPiArICAg ICBtYWNoaW5lX21vZGUgbmV3X3Ztb2RlID0gdm1vZGU7DQo+ICsgICAgIGlu dGVybmFsX2ZuIHBhcnRpYWxfaWZuID0gSUZOX0xBU1Q7DQo+ICsgICAgIC8q IFByb2R1Y2UgJ2xlbicgYW5kICdiaWFzJyBhcmd1bWVudC4gICovDQo+ICsg ICAgIHRyZWUgZmluYWxfbGVuID0gTlVMTF9UUkVFOw0KPiArICAgICB0cmVl IGJpYXMgPSBOVUxMX1RSRUU7DQo+ICsgICAgIGlmIChsb29wX2xlbnMpDQo+ ICAgICAgICB7DQo+IC0gbWFjaGluZV9tb2RlIHZtb2RlID0gVFlQRV9NT0RF ICh2ZWN0eXBlKTsNCj4gIG9wdF9tYWNoaW5lX21vZGUgbmV3X292bW9kZQ0K PiAtICAgPSBnZXRfbGVuX2xvYWRfc3RvcmVfbW9kZSAodm1vZGUsIHRydWUp Ow0KPiAtIG1hY2hpbmVfbW9kZSBuZXdfdm1vZGUgPSBuZXdfb3Ztb2RlLnJl cXVpcmUgKCk7DQo+ICsgICA9IGdldF9sZW5fbG9hZF9zdG9yZV9tb2RlICh2 bW9kZSwgZmFsc2UpOw0KPiArIG5ld192bW9kZSA9IG5ld19vdm1vZGUucmVx dWlyZSAoKTsNCj4gIHVuc2lnbmVkIGZhY3RvciA9IChuZXdfb3Ztb2RlID09 IHZtb2RlKQ0KPiAgICAgID8gMQ0KPiAgICAgIDogR0VUX01PREVfVU5JVF9T SVpFICh2bW9kZSk7DQo+IC0gdHJlZSBmaW5hbF9sZW4NCj4gKyBmaW5hbF9s ZW4NCj4gICAgPSB2ZWN0X2dldF9sb29wX2xlbiAobG9vcF92aW5mbywgZ3Np LCBsb29wX2xlbnMsDQo+ICAgICAgICAgdmVjX251bSAqIG5jb3BpZXMsIHZl Y3R5cGUsDQo+ICAgICAgICAgdmVjX251bSAqIGogKyBpLCBmYWN0b3IpOw0K PiAtIHRyZWUgcHRyDQo+IC0gICA9IGJ1aWxkX2ludF9jc3QgKHJlZl90eXBl LCBhbGlnbiAqIEJJVFNfUEVSX1VOSVQpOw0KPiAtDQo+IC0gdHJlZSBxaV90 eXBlID0gdW5zaWduZWRfaW50UUlfdHlwZV9ub2RlOw0KPiArICAgICAgIH0N Cj4gKyAgICAgZWxzZSBpZiAoZmluYWxfbWFzaykNCj4gKyAgICAgICBjYW5f dmVjX21hc2tfbG9hZF9zdG9yZV9wICh2bW9kZSwNCj4gKyBUWVBFX01PREUg KG1hc2tfdmVjdHlwZSksDQo+ICsgZmFsc2UsICZwYXJ0aWFsX2lmbik7DQo+ ICANCj4gLSBzaWduZWQgY2hhciBiaWFzdmFsID0NCj4gLSAgIExPT1BfVklO Rk9fUEFSVElBTF9MT0FEX1NUT1JFX0JJQVMgKGxvb3BfdmluZm8pOw0KPiAr ICAgICBpZiAocGFydGlhbF9pZm4gPT0gSUZOX0xFTl9NQVNLX0xPQUQpDQo+ ICsgICAgICAgew0KPiArIGlmICghZmluYWxfbGVuKQ0KPiArICAgew0KPiAr ICAgICAvKiBQYXNzIFZGIHZhbHVlIHRvICdsZW4nIGFyZ3VtZW50IG9mDQo+ ICsgICAgICAqIExFTl9NQVNLX0xPQUQgaWYgTE9PUF9MRU5TIGlzIGludmFs aWQuICAqLw0KPiArICAgICB0cmVlIGl2X3R5cGUNCj4gKyAgICAgICA9IExP T1BfVklORk9fUkdST1VQX0lWX1RZUEUgKGxvb3BfdmluZm8pOw0KPiArICAg ICBmaW5hbF9sZW4NCj4gKyAgICAgICA9IGJ1aWxkX2ludF9jc3QgKGl2X3R5 cGUsDQo+ICsgICAgICAgIFRZUEVfVkVDVE9SX1NVQlBBUlRTICh2ZWN0eXBl KSk7DQo+ICsgICB9DQo+ICsgaWYgKCFmaW5hbF9tYXNrKQ0KPiArICAgew0K PiArICAgICAvKiBQYXNzIGFsbCBvbmVzIHZhbHVlIHRvICdtYXNrJyBhcmd1 bWVudCBvZg0KPiArICAgICAgKiBMRU5fTUFTS19MT0FEIGlmIGZpbmFsX21h c2sgaXMgaW52YWxpZC4gICovDQo+ICsgICAgIGZpbmFsX21hc2sgPSBnZXRf YWxsX29uZXNfbWFzayAodm1vZGUpOw0KPiArICAgfQ0KPiArICAgICAgIH0N Cj4gKyAgICAgaWYgKGZpbmFsX2xlbikNCj4gKyAgICAgICB7DQo+ICsgc2ln bmVkIGNoYXIgYmlhc3ZhbA0KPiArICAgPSBMT09QX1ZJTkZPX1BBUlRJQUxf TE9BRF9TVE9SRV9CSUFTIChsb29wX3ZpbmZvKTsNCj4gIA0KPiAtIHRyZWUg YmlhcyA9IGJ1aWxkX2ludF9jc3QgKGludFFJX3R5cGVfbm9kZSwgYmlhc3Zh bCk7DQo+ICsgYmlhcyA9IGJ1aWxkX2ludF9jc3QgKGludFFJX3R5cGVfbm9k ZSwgYmlhc3ZhbCk7DQo+ICsgICAgICAgfQ0KPiAgDQo+IC0gZ2NhbGwgKmNh bGwNCj4gLSAgID0gZ2ltcGxlX2J1aWxkX2NhbGxfaW50ZXJuYWwgKElGTl9M RU5fTE9BRCwgNCwNCj4gLSBkYXRhcmVmX3B0ciwgcHRyLA0KPiAtIGZpbmFs X2xlbiwgYmlhcyk7DQo+ICsgICAgIGlmIChmaW5hbF9sZW4gJiYgbWVtb3J5 X2FjY2Vzc190eXBlICE9IFZNQVRfSU5WQVJJQU5UKQ0KPiArICAgICAgIHsN Cj4gKyB0cmVlIHB0cg0KPiArICAgPSBidWlsZF9pbnRfY3N0IChyZWZfdHlw ZSwgYWxpZ24gKiBCSVRTX1BFUl9VTklUKTsNCj4gKyBnY2FsbCAqY2FsbDsN Cj4gKyBpZiAocGFydGlhbF9pZm4gPT0gSUZOX0xFTl9NQVNLX0xPQUQpDQo+ ICsgICBjYWxsID0gZ2ltcGxlX2J1aWxkX2NhbGxfaW50ZXJuYWwgKElGTl9M RU5fTUFTS19MT0FELA0KPiArICAgICAgNSwgZGF0YXJlZl9wdHIsDQo+ICsg ICAgICBwdHIsIGZpbmFsX2xlbiwNCj4gKyAgICAgIGZpbmFsX21hc2ssIGJp YXMpOw0KPiArIGVsc2UNCj4gKyAgIGNhbGwgPSBnaW1wbGVfYnVpbGRfY2Fs bF9pbnRlcm5hbCAoSUZOX0xFTl9MT0FELCA0LA0KPiArICAgICAgZGF0YXJl Zl9wdHIsIHB0ciwNCj4gKyAgICAgIGZpbmFsX2xlbiwgYmlhcyk7DQo+ICBn aW1wbGVfY2FsbF9zZXRfbm90aHJvdyAoY2FsbCwgdHJ1ZSk7DQo+ICBuZXdf c3RtdCA9IGNhbGw7DQo+ICBkYXRhX3JlZiA9IE5VTExfVFJFRTsNCj4gQEAg LTEwMzUwLDggKzEwNDI4LDggQEAgdmVjdG9yaXphYmxlX2xvYWQgKHZlY19p bmZvICp2aW5mbywNCj4gIC8qIE5lZWQgY29udmVyc2lvbiBpZiBpdCdzIHdy YXBwZWQgd2l0aCBWblFJLiAgKi8NCj4gIGlmICh2bW9kZSAhPSBuZXdfdm1v ZGUpDQo+ICAgIHsNCj4gLSAgICAgdHJlZSBuZXdfdnR5cGUNCj4gLSAgICAg ICA9IGJ1aWxkX3ZlY3Rvcl90eXBlX2Zvcl9tb2RlIChxaV90eXBlLCBuZXdf dm1vZGUpOw0KPiArICAgICB0cmVlIG5ld192dHlwZSA9IGJ1aWxkX3ZlY3Rv cl90eXBlX2Zvcl9tb2RlICgNCj4gKyAgICAgICB1bnNpZ25lZF9pbnRRSV90 eXBlX25vZGUsIG5ld192bW9kZSk7DQo+ICAgICAgdHJlZSB2YXIgPSB2ZWN0 X2dldF9uZXdfc3NhX25hbWUgKG5ld192dHlwZSwNCj4gICAgICAgIHZlY3Rf c2ltcGxlX3Zhcik7DQo+ICAgICAgZ2ltcGxlX3NldF9saHMgKGNhbGwsIHZh cik7DQo+IEBAIC0xMDM2Myw2ICsxMDQ0MSwxOCBAQCB2ZWN0b3JpemFibGVf bG9hZCAodmVjX2luZm8gKnZpbmZvLA0KPiAgICAgICBWSUVXX0NPTlZFUlRf RVhQUiwgb3ApOw0KPiAgICB9DQo+ICAgICAgICB9DQo+ICsgICAgIGVsc2Ug aWYgKGZpbmFsX21hc2spDQo+ICsgICAgICAgew0KPiArIHRyZWUgcHRyID0g YnVpbGRfaW50X2NzdCAocmVmX3R5cGUsDQo+ICsgICBhbGlnbiAqIEJJVFNf UEVSX1VOSVQpOw0KPiArIGdjYWxsICpjYWxsDQo+ICsgICA9IGdpbXBsZV9i dWlsZF9jYWxsX2ludGVybmFsIChJRk5fTUFTS19MT0FELCAzLA0KPiArIGRh dGFyZWZfcHRyLCBwdHIsDQo+ICsgZmluYWxfbWFzayk7DQo+ICsgZ2ltcGxl X2NhbGxfc2V0X25vdGhyb3cgKGNhbGwsIHRydWUpOw0KPiArIG5ld19zdG10 ID0gY2FsbDsNCj4gKyBkYXRhX3JlZiA9IE5VTExfVFJFRTsNCj4gKyAgICAg ICB9DQo+ICAgICAgZWxzZQ0KPiAgICAgICAgew0KPiAgdHJlZSBsdHlwZSA9 IHZlY3R5cGU7DQo+IA0KIA0KLS0gDQpSaWNoYXJkIEJpZW5lciA8cmd1ZW50 aGVyQHN1c2UuZGU+DQpTVVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBHZXJtYW55 IEdtYkgsIEZyYW5rZW5zdHJhc3NlIDE0NiwgOTA0NjEgTnVlcm5iZXJnLA0K R2VybWFueTsgR0Y6IEl2byBUb3RldiwgQW5kcmV3IE15ZXJzLCBBbmRyZXcg TWNEb25hbGQsIEJvdWRpZW4gTW9lcm1hbjsNCkhSQiAzNjgwOSAoQUcgTnVl cm5iZXJnKQ0KIA0K ------=_001_NextPart031826737170_=------