From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgbr1.qq.com (smtpbgbr1.qq.com [54.207.19.206]) by sourceware.org (Postfix) with ESMTPS id 62BA93857835 for ; Tue, 4 Jul 2023 11:13:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 62BA93857835 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: bizesmtp78t1688469185txqb6u53 Received: from LAPTOP-EPITNQBU ( [58.60.1.5]) by bizesmtp.qq.com (ESMTP) with id ; Tue, 04 Jul 2023 19:13:04 +0800 (CST) X-QQ-SSF: 01400000000000G0T000000A0000000 X-QQ-FEAT: +ynUkgUhZJlaJtNhBtvyzCf9WI6u9D/xfZXcpmXBQhGBxY13GKb8v1twMQ8pO hbw7F5zh+Jqfr2mOf4eabKGmoijnkZXYH3MoSheaQDQtbCdt84TvTqX9j7rwpXccWWhpiOq nO/bV2MbCQt+d9QESr7vEpLiUIjKmzKiC5clziIy8+CwV59vR0/RDy3cHrWrWhynL/kBpeu UMZlG5lfPBNAxwra5REE02l7Ldg0FtXz9DZg+44/inH/Y3cThn/v346H7HKWUi3dFCIfWOs 0kuzvx8V83AHl7MNjUVL1rBjfBXScjvphp/YTGFrrXx8fQTlgk2yVqCzCdxGVNoojEUKJz2 fKFCk6w8OXNrtd9CXt+pDupy3ttBeduQp9q/xmwQ4U0+UazIXULBecziWCxCrHksHroPTUs BXIUio6UMVL167haLhrlS+vTG+v4qqXA X-QQ-GoodBg: 2 X-BIZMAIL-ID: 192374571822625686 Date: Tue, 4 Jul 2023 19:13:04 +0800 From: "juzhe.zhong@rivai.ai" To: rguenther Cc: gcc-patches , richard.sandiford Subject: Re: Re: [PATCH V3] VECT: Apply LEN_MASK_GATHER_LOAD/SCATTER_STORE into vectorizer References: <20230704095406.3518145-1-juzhe.zhong@rivai.ai>, X-Priority: 3 X-GUID: AF1B4D3C-09B4-4554-B2A5-75249F65AC3C X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: Content-Type: multipart/alternative; boundary="----=_001_NextPart877453204083_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-11.7 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,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_NextPart877453204083_=---- Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: base64 SGksIFJpY2hpLg0KDQo+PiBFaCwgaXQncyBvYnZpb3VzIHRoYXQgd2Ugc2hv dWxkIGhhdmUgdGhlICJ2ZWN0b3JpemVkIiBmb3JtDQo+PiBhbHNvIGluIHRo ZSAnc2NhbGFyJyB2YXJpYW50LiAgSWYgeW91IHRoaW5rIHRoZXJlJ3Mgbm8g cmVhc29uYWJsZQ0KPj4gd2F5IHRvIGFkZCBhIHZhbHVlIGZvciBsZW4gb3Ig YmlhcyB0aGVuIGluc3RlYWQgcmUtb3JkZXIgdGhlDQo+PiBhcmd1bWVudHMg c28gJ21hc2snIGNvbWVzIGZpcnN0IGFuZCB0aGUgbGVuL2JpYXMgcGFpciBs YXN0Lg0KDQpJIGZvdW5kIHRoaXMgcGF0Y2ggaXMgYnVnZ3kgd2hlbiBJIGFt IHRlc3RpbmcgTEVOX01BU19HQVRIRVJfTE9BRC4NCkFuZCByZW9kZXIgJ21h c2snIGNvbWVzIGZpcnN0IGNhbiBub3QgaGVscC4NCg0KSGVyZSwgd2UgaGF2 ZSAnR0FUSEVSX0xPQUQnIGFuZCAnTUFTS19HQVRIRVJfTE9BRCcsDQpGb3Ig R0FUSEVSX0xPQUQgKChzaXpldHlwZSkgc3JjXzE4KEQpLCBfNiwgMSwgMCk7 DQpJIGNoYW5nZSBpdCBpbnRvOg0KDQpMRU5fTUFTS19HQVRIRVJfTE9BRCAo KHNpemV0eXBlKSBzcmNfMTgoRCksIF82LCAxLCAwKTsNCkluIHRoaXMgc2l0 dWF0aW9uLCAgaW50ZXJuYWxfZm5fbWFza19pbmRleCANCnNob3VsZCByZXR1 cm4gLTEuDQoNCldoZXJhcywgTUFTS19HQVRIRVJfTE9BRCAoKHNpemV0eXBl KSBfNTYsIF84LCAxLCAwLCBfMzMpOw0KSSBjaGFuZ2UgaXQgaW50byBMRU5f TUFTS19HQVRIRVJfTE9BRCAoKHNpemV0eXBlKSBfNTYsIF84LCAxLCAwLCBf MzMpOw0KaXQgc2hvdWxkIHJldHVybiB0aGUgaW5kZXggPSA0Lg0KDQpJIGNh bid0IGRpZmZlcmVudGlhdGUgdGhlbSBieSBvbmx5IHVzaW5nIExFTl9NQVNL X0dBVEhFUl9MT0FELg0KQ291bGQgSSByZXZpc2UgaW50ZXJuYWxfZm5fbWFz a19pbmRleCANCmFzIGZvbGxvd3MgPw0KDQppbnQNCmludGVybmFsX2ZuX21h c2tfaW5kZXggKGludGVybmFsX2ZuIGZuLCBpbnQgbmFyZ3MpDQp7DQogIHN3 aXRjaCAoZm4pDQogICAgew0KICAgIGNhc2UgSUZOX01BU0tfTE9BRDoNCiAg ICBjYXNlIElGTl9NQVNLX0xPQURfTEFORVM6DQogICAgY2FzZSBJRk5fTUFT S19TVE9SRToNCiAgICBjYXNlIElGTl9NQVNLX1NUT1JFX0xBTkVTOg0KICAg ICAgcmV0dXJuIDI7DQoNCiAgICBjYXNlIElGTl9NQVNLX0dBVEhFUl9MT0FE Og0KICAgIGNhc2UgSUZOX01BU0tfU0NBVFRFUl9TVE9SRToNCiAgICBjYXNl IElGTl9MRU5fTUFTS19MT0FEOg0KICAgIGNhc2UgSUZOX0xFTl9NQVNLX1NU T1JFOg0KICAgICAgcmV0dXJuIDQ7DQoNCiAgICAvKiBMRU5fTUFTS19HQVRI RVJfTE9BRC9MRU5fTUFTS19TQ0FUVEVSX1NUT1JFIGFyZSBkaWZmZXJlbnQN CiAgICAgICBvbiBhcmd1bWVudHMgYmVmb3JlIGFuZCBhZnRlciB2ZWN0b3Jp emVkLg0KDQogICAgICAgICBCZWZvcmUgdmVjdG9yaXplZDoNCiAgICAgICAg ICAgTEVOX01BU0tfR0FUSEVSX0xPQUQgKHB0ciwgYWxpZ24sIG9mZnNldCwg bWFzayk7DQoNCiAgICAgICAgIEFmdGVyIHZlY3Rvcml6ZWQ6DQogICAgICAg ICAgIExFTl9NQVNLX0dBVEhFUl9MT0FEIChwdHIsIGFsaWduLCBvZmZzZXQs IGxlbiwgYmlhcywgbWFzayk7DQogICAgKi8NCiAgICBjYXNlIElGTl9MRU5f TUFTS19HQVRIRVJfTE9BRDoNCiAgICBjYXNlIElGTl9MRU5fTUFTS19TQ0FU VEVSX1NUT1JFOg0KICAgICAgcmV0dXJuIG5hcmdzID09IDQgPyAtMSA6IG5h cmdzID09IDUgPyA0IDogNjsNCg0KICAgIGRlZmF1bHQ6DQogICAgICByZXR1 cm4gKGNvbmRpdGlvbmFsX2ludGVybmFsX2ZuX2NvZGUgKGZuKSAhPSBFUlJP Ul9NQVJLDQogICAgICAgICAgICAgIHx8IGdldF91bmNvbmRpdGlvbmFsX2lu dGVybmFsX2ZuIChmbikgIT0gSUZOX0xBU1QgPyAwIDogLTEpOw0KICAgIH0N Cn0NCg0KDQpUaGFua3MuDQoNCg0KanV6aGUuemhvbmdAcml2YWkuYWkNCiAN CkZyb206IFJpY2hhcmQgQmllbmVyDQpEYXRlOiAyMDIzLTA3LTA0IDE5OjA1 DQpUbzogSnUtWmhlIFpob25nDQpDQzogZ2NjLXBhdGNoZXM7IHJpY2hhcmQu c2FuZGlmb3JkDQpTdWJqZWN0OiBSZTogW1BBVENIIFYzXSBWRUNUOiBBcHBs eSBMRU5fTUFTS19HQVRIRVJfTE9BRC9TQ0FUVEVSX1NUT1JFIGludG8gdmVj dG9yaXplcg0KT24gVHVlLCA0IEp1bCAyMDIzLCBqdXpoZS56aG9uZ0ByaXZh aS5haSB3cm90ZToNCiANCj4gRnJvbTogSnUtWmhlIFpob25nIDxqdXpoZS56 aG9uZ0ByaXZhaS5haT4NCj4gDQo+IEhpLCBSaWNoYXJkIGFuZCBSaWNoaS4N Cj4gDQo+IEFkZHJlc3MgY29tbWVudHMgZnJvbSBSaWNoYXJkLg0KPiANCj4g TWFrZSBnc19pbmZvLmlmbiA9IExFTl9NQVNLX0dBVEhFUl9MT0FEL0xFTl9N QVNLX1NDQVRURVJfU1RPUkUuDQo+IA0KPiBTaW5jZToNCj4gICAgIC8qIExF Tl9NQVNLX0dBVEhFUl9MT0FEL0xFTl9NQVNLX1NDQVRURVJfU1RPUkUgYXJl IGRpZmZlcmVudA0KPiAgICAgICAgb24gYXJndW1lbnRzIGJlZm9yZSBhbmQg YWZ0ZXIgdmVjdG9yaXplZC4NCj4gDQo+IEJlZm9yZSB2ZWN0b3JpemVkOg0K PiAgICBMRU5fTUFTS19HQVRIRVJfTE9BRCAocHRyLCBhbGlnbiwgb2Zmc2V0 LCBtYXNrKTsNCj4gDQo+IEFmdGVyIHZlY3Rvcml6ZWQ6DQo+ICAgIExFTl9N QVNLX0dBVEhFUl9MT0FEIChwdHIsIGFsaWduLCBvZmZzZXQsIGxlbiwgYmlh cywgbWFzayk7DQo+ICAgICAqLw0KPiANCj4gSSBhZGQgInZlY3Rvcml6ZWRf cCIgZGVmYXVsdCBhcmd1bWVudCBpbnRvIGludGVybmFsX2ZuX21hc2tfaW5k ZXguDQo+IFNvIHRoYXQgd2UgY291bGQgc2ltcGxpZnkgdGhlIGNvZGVzLg0K IA0KRWgsIGl0J3Mgb2J2aW91cyB0aGF0IHdlIHNob3VsZCBoYXZlIHRoZSAi dmVjdG9yaXplZCIgZm9ybQ0KYWxzbyBpbiB0aGUgJ3NjYWxhcicgdmFyaWFu dC4gIElmIHlvdSB0aGluayB0aGVyZSdzIG5vIHJlYXNvbmFibGUNCndheSB0 byBhZGQgYSB2YWx1ZSBmb3IgbGVuIG9yIGJpYXMgdGhlbiBpbnN0ZWFkIHJl LW9yZGVyIHRoZQ0KYXJndW1lbnRzIHNvICdtYXNrJyBjb21lcyBmaXJzdCBh bmQgdGhlIGxlbi9iaWFzIHBhaXIgbGFzdC4NCiANCkJ1dCBJTUhPICJhbnki IGxlbi9iaWFzIHZhbHVlIHNob3VsZCBkbyBoZXJlLg0KIA0KVGhlIHJlc3Qg bG9va3MgT0sgbm93Lg0KIA0KVGhhbmtzLA0KUmljaGFyZC4NCiANCj4gVGhl IGxlbl9tYXNrX2dhdGhlcl9sb2FkL2xlbl9tYXNrX3NjYXR0ZXJfc3RvcmUg cGF0dGVybnMgaGF2ZSBiZWVuIGFkZGVkLg0KPiBOb3csIHRoaXMgcGF0Y2gg YXBwbGllcyB0aGVtIGludG8gdmVjdG9yaXplci4NCj4gDQo+IEhlcmUgaXMg dGhlIGV4YW1wbGU6DQo+IA0KPiB2b2lkDQo+IGYgKGludCAqcmVzdHJpY3Qg YSwNCj4gICAgaW50ICpyZXN0cmljdCBiLCBpbnQgbiwNCj4gICAgaW50IGJh c2UsIGludCBzdGVwLA0KPiAgICBpbnQgKnJlc3RyaWN0IGNvbmQpDQo+IHsN Cj4gICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkNCj4gICAgIHsNCj4g ICAgICAgaWYgKGNvbmRbaV0pDQo+ICAgICAgICAgYVtpICogNF0gPSBiW2ld Ow0KPiAgICAgfQ0KPiB9DQo+IA0KPiBHaW1wbGUgSVI6DQo+IA0KPiAgIDxi YiAzPiBbbG9jYWwgY291bnQ6IDEwNTExOTMyNF06DQo+ICAgXzU4ID0gKHVu c2lnbmVkIGxvbmcpIG5fMTMoRCk7DQo+IA0KPiAgIDxiYiA0PiBbbG9jYWwg Y291bnQ6IDYzMDcxNTk0NV06DQo+ICAgIyB2ZWN0cF9jb25kLjdfNDUgPSBQ SEkgPHZlY3RwX2NvbmQuN180Nig0KSwgY29uZF8xNChEKSgzKT4NCj4gICAj IHZlY3RwX2IuMTFfNTEgPSBQSEkgPHZlY3RwX2IuMTFfNTIoNCksIGJfMTUo RCkoMyk+DQo+ICAgIyB2ZWN0cF9hLjE0XzU1ID0gUEhJIDx2ZWN0cF9hLjE0 XzU2KDQpLCBhXzE2KEQpKDMpPg0KPiAgICMgaXZ0bXBfNTkgPSBQSEkgPGl2 dG1wXzYwKDQpLCBfNTgoMyk+DQo+ICAgXzYxID0gLlNFTEVDVF9WTCAoaXZ0 bXBfNTksIFBPTFlfSU5UX0NTVCBbMiwgMl0pOw0KPiAgIGl2dG1wXzQ0ID0g XzYxICogNDsNCj4gICB2ZWN0X180LjlfNDcgPSAuTEVOX01BU0tfTE9BRCAo dmVjdHBfY29uZC43XzQ1LCAzMkIsIF82MSwgMCwgeyAtMSwgLi4uIH0pOw0K PiAgIG1hc2tfXzI0LjEwXzQ5ID0gdmVjdF9fNC45XzQ3ICE9IHsgMCwgLi4u IH07DQo+ICAgdmVjdF9fOC4xM181MyA9IC5MRU5fTUFTS19MT0FEICh2ZWN0 cF9iLjExXzUxLCAzMkIsIF82MSwgMCwgbWFza19fMjQuMTBfNDkpOw0KPiAg IGl2dG1wXzU0ID0gXzYxICogMTY7DQo+ICAgLkxFTl9NQVNLX1NDQVRURVJf U1RPUkUgKHZlY3RwX2EuMTRfNTUsIHsgMCwgMTYsIDMyLCAuLi4gfSwgMSwg dmVjdF9fOC4xM181MywgXzYxLCAwLCBtYXNrX18yNC4xMF80OSk7DQo+ICAg dmVjdHBfY29uZC43XzQ2ID0gdmVjdHBfY29uZC43XzQ1ICsgaXZ0bXBfNDQ7 DQo+ICAgdmVjdHBfYi4xMV81MiA9IHZlY3RwX2IuMTFfNTEgKyBpdnRtcF80 NDsNCj4gICB2ZWN0cF9hLjE0XzU2ID0gdmVjdHBfYS4xNF81NSArIGl2dG1w XzU0Ow0KPiAgIGl2dG1wXzYwID0gaXZ0bXBfNTkgLSBfNjE7DQo+ICAgaWYg KGl2dG1wXzYwICE9IDApDQo+ICAgICBnb3RvIDxiYiA0PjsgWzgzLjMzJV0N Cj4gICBlbHNlDQo+ICAgICBnb3RvIDxiYiA1PjsgWzE2LjY3JV0NCj4gDQo+ IGdjYy9DaGFuZ2VMb2c6DQo+IA0KPiAgICAgICAgICogaW50ZXJuYWwtZm4u Y2MgKGludGVybmFsX2ZuX21hc2tfaW5kZXgpOiBBcHBseSBMRU5fTUFTS19H QVRIRVJfTE9BRC9TQ0FUVEVSX1NUT1JFIGludG8gdmVjdG9yaXplci4NCj4g ICAgICAgICAqIGludGVybmFsLWZuLmggKGludGVybmFsX2ZuX21hc2tfaW5k ZXgpOiBEaXR0by4NCj4gICAgICAgICAqIG9wdGFicy1xdWVyeS5jYyAoc3Vw cG9ydHNfdmVjX2dhdGhlcl9sb2FkX3ApOiBEaXR0by4NCj4gICAgICAgICAo c3VwcG9ydHNfdmVjX3NjYXR0ZXJfc3RvcmVfcCk6IERpdHRvLg0KPiAgICAg ICAgICogdHJlZS12ZWN0LWRhdGEtcmVmcy5jYyAodmVjdF9nYXRoZXJfc2Nh dHRlcl9mbl9wKTogRGl0dG8uDQo+ICAgICAgICAgKiB0cmVlLXZlY3Qtc3Rt dHMuY2MgKGV4aXN0X25vbl9pbmRleGluZ19vcGVyYW5kc19mb3JfdXNlX3Ap OiBEaXR0by4NCj4gICAgICAgICAoY2hlY2tfbG9hZF9zdG9yZV9mb3JfcGFy dGlhbF92ZWN0b3JzKTogRGl0dG8uDQo+ICAgICAgICAgKHZlY3RfZ2V0X3N0 cmlkZWRfbG9hZF9zdG9yZV9vcHMpOiBEaXR0by4NCj4gICAgICAgICAodmVj dG9yaXphYmxlX3N0b3JlKTogRGl0dG8uDQo+ICAgICAgICAgKHZlY3Rvcml6 YWJsZV9sb2FkKTogRGl0dG8uDQo+IA0KPiAtLS0NCj4gIGdjYy9pbnRlcm5h bC1mbi5jYyAgICAgICAgIHwgIDE2ICsrKystDQo+ICBnY2MvaW50ZXJuYWwt Zm4uaCAgICAgICAgICB8ICAgMiArLQ0KPiAgZ2NjL29wdGFicy1xdWVyeS5j YyAgICAgICAgfCAgIDIgKw0KPiAgZ2NjL3RyZWUtdmVjdC1kYXRhLXJlZnMu Y2MgfCAgMTggKysrKy0NCj4gIGdjYy90cmVlLXZlY3Qtc3RtdHMuY2MgICAg IHwgMTM1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0N Cj4gIDUgZmlsZXMgY2hhbmdlZCwgMTUwIGluc2VydGlvbnMoKyksIDIzIGRl bGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2djYy9pbnRlcm5hbC1m bi5jYyBiL2djYy9pbnRlcm5hbC1mbi5jYw0KPiBpbmRleCAzMDNkZjEwMmQ4 MS4uMmM3OGM4NzBkZTggMTAwNjQ0DQo+IC0tLSBhL2djYy9pbnRlcm5hbC1m bi5jYw0KPiArKysgYi9nY2MvaW50ZXJuYWwtZm4uY2MNCj4gQEAgLTQ0ODMs NyArNDQ4Myw3IEBAIGludGVybmFsX2ZuX2xlbl9pbmRleCAoaW50ZXJuYWxf Zm4gZm4pDQo+ICAgICBvdGhlcndpc2UgcmV0dXJuIC0xLiAgKi8NCj4gIA0K PiAgaW50DQo+IC1pbnRlcm5hbF9mbl9tYXNrX2luZGV4IChpbnRlcm5hbF9m biBmbikNCj4gK2ludGVybmFsX2ZuX21hc2tfaW5kZXggKGludGVybmFsX2Zu IGZuLCBib29sIHZlY3RvcmllZF9wKQ0KPiAgew0KPiAgICBzd2l0Y2ggKGZu KQ0KPiAgICAgIHsNCj4gQEAgLTQ0OTksOSArNDQ5OSwyMSBAQCBpbnRlcm5h bF9mbl9tYXNrX2luZGV4IChpbnRlcm5hbF9mbiBmbikNCj4gICAgICBjYXNl IElGTl9MRU5fTUFTS19TVE9SRToNCj4gICAgICAgIHJldHVybiA0Ow0KPiAg DQo+ICsgICAgLyogTEVOX01BU0tfR0FUSEVSX0xPQUQvTEVOX01BU0tfU0NB VFRFUl9TVE9SRSBhcmUgZGlmZmVyZW50DQo+ICsgICAgICAgb24gYXJndW1l bnRzIGJlZm9yZSBhbmQgYWZ0ZXIgdmVjdG9yaXplZC4NCj4gKw0KPiArIEJl Zm9yZSB2ZWN0b3JpemVkOg0KPiArICAgIExFTl9NQVNLX0dBVEhFUl9MT0FE IChwdHIsIGFsaWduLCBvZmZzZXQsIG1hc2spOw0KPiArDQo+ICsgQWZ0ZXIg dmVjdG9yaXplZDoNCj4gKyAgICBMRU5fTUFTS19HQVRIRVJfTE9BRCAocHRy LCBhbGlnbiwgb2Zmc2V0LCBsZW4sIGJpYXMsIG1hc2spOw0KPiArICAgICov DQo+ICAgICAgY2FzZSBJRk5fTEVOX01BU0tfR0FUSEVSX0xPQUQ6DQo+ICAg ICAgY2FzZSBJRk5fTEVOX01BU0tfU0NBVFRFUl9TVE9SRToNCj4gLSAgICAg IHJldHVybiA2Ow0KPiArICAgICAgaWYgKHZlY3RvcmllZF9wKQ0KPiArIHJl dHVybiA2Ow0KPiArICAgICAgZWxzZQ0KPiArIHJldHVybiA0Ow0KPiAgDQo+ ICAgICAgZGVmYXVsdDoNCj4gICAgICAgIHJldHVybiAoY29uZGl0aW9uYWxf aW50ZXJuYWxfZm5fY29kZSAoZm4pICE9IEVSUk9SX01BUksNCj4gZGlmZiAt LWdpdCBhL2djYy9pbnRlcm5hbC1mbi5oIGIvZ2NjL2ludGVybmFsLWZuLmgN Cj4gaW5kZXggNDIzNGJiZmVkODcuLmU5MTY4YzE2Mjk3IDEwMDY0NA0KPiAt LS0gYS9nY2MvaW50ZXJuYWwtZm4uaA0KPiArKysgYi9nY2MvaW50ZXJuYWwt Zm4uaA0KPiBAQCAtMjMzLDcgKzIzMyw3IEBAIGV4dGVybiBib29sIGNhbl9p bnRlcnByZXRfYXNfY29uZGl0aW9uYWxfb3BfcCAoZ2ltcGxlICosIHRyZWUg KiwNCj4gIGV4dGVybiBib29sIGludGVybmFsX2xvYWRfZm5fcCAoaW50ZXJu YWxfZm4pOw0KPiAgZXh0ZXJuIGJvb2wgaW50ZXJuYWxfc3RvcmVfZm5fcCAo aW50ZXJuYWxfZm4pOw0KPiAgZXh0ZXJuIGJvb2wgaW50ZXJuYWxfZ2F0aGVy X3NjYXR0ZXJfZm5fcCAoaW50ZXJuYWxfZm4pOw0KPiAtZXh0ZXJuIGludCBp bnRlcm5hbF9mbl9tYXNrX2luZGV4IChpbnRlcm5hbF9mbik7DQo+ICtleHRl cm4gaW50IGludGVybmFsX2ZuX21hc2tfaW5kZXggKGludGVybmFsX2ZuLCBi b29sID0gdHJ1ZSk7DQo+ICBleHRlcm4gaW50IGludGVybmFsX2ZuX2xlbl9p bmRleCAoaW50ZXJuYWxfZm4pOw0KPiAgZXh0ZXJuIGludCBpbnRlcm5hbF9m bl9zdG9yZWRfdmFsdWVfaW5kZXggKGludGVybmFsX2ZuKTsNCj4gIGV4dGVy biBib29sIGludGVybmFsX2dhdGhlcl9zY2F0dGVyX2ZuX3N1cHBvcnRlZF9w IChpbnRlcm5hbF9mbiwgdHJlZSwNCj4gZGlmZiAtLWdpdCBhL2djYy9vcHRh YnMtcXVlcnkuY2MgYi9nY2Mvb3B0YWJzLXF1ZXJ5LmNjDQo+IGluZGV4IDJm ZGQwZDM0MzU0Li5iZjFmNDg0ZTg3NCAxMDA2NDQNCj4gLS0tIGEvZ2NjL29w dGFicy1xdWVyeS5jYw0KPiArKysgYi9nY2Mvb3B0YWJzLXF1ZXJ5LmNjDQo+ IEBAIC02NzYsNiArNjc2LDcgQEAgc3VwcG9ydHNfdmVjX2dhdGhlcl9sb2Fk X3AgKG1hY2hpbmVfbW9kZSBtb2RlKQ0KPiAgICAgIHRoaXNfZm5fb3B0YWJz LT5zdXBwb3J0c192ZWNfZ2F0aGVyX2xvYWRbbW9kZV0NCj4gICAgICAgID0g KHN1cHBvcnRzX3ZlY19jb252ZXJ0X29wdGFiX3AgKGdhdGhlcl9sb2FkX29w dGFiLCBtb2RlKQ0KPiAgfHwgc3VwcG9ydHNfdmVjX2NvbnZlcnRfb3B0YWJf cCAobWFza19nYXRoZXJfbG9hZF9vcHRhYiwgbW9kZSkNCj4gKyB8fCBzdXBw b3J0c192ZWNfY29udmVydF9vcHRhYl9wIChsZW5fbWFza19nYXRoZXJfbG9h ZF9vcHRhYiwgbW9kZSkNCj4gID8gMSA6IC0xKTsNCj4gIA0KPiAgICByZXR1 cm4gdGhpc19mbl9vcHRhYnMtPnN1cHBvcnRzX3ZlY19nYXRoZXJfbG9hZFtt b2RlXSA+IDA7DQo+IEBAIC02OTIsNiArNjkzLDcgQEAgc3VwcG9ydHNfdmVj X3NjYXR0ZXJfc3RvcmVfcCAobWFjaGluZV9tb2RlIG1vZGUpDQo+ICAgICAg dGhpc19mbl9vcHRhYnMtPnN1cHBvcnRzX3ZlY19zY2F0dGVyX3N0b3JlW21v ZGVdDQo+ICAgICAgICA9IChzdXBwb3J0c192ZWNfY29udmVydF9vcHRhYl9w IChzY2F0dGVyX3N0b3JlX29wdGFiLCBtb2RlKQ0KPiAgfHwgc3VwcG9ydHNf dmVjX2NvbnZlcnRfb3B0YWJfcCAobWFza19zY2F0dGVyX3N0b3JlX29wdGFi LCBtb2RlKQ0KPiArIHx8IHN1cHBvcnRzX3ZlY19jb252ZXJ0X29wdGFiX3Ag KGxlbl9tYXNrX3NjYXR0ZXJfc3RvcmVfb3B0YWIsIG1vZGUpDQo+ICA/IDEg OiAtMSk7DQo+ICANCj4gICAgcmV0dXJuIHRoaXNfZm5fb3B0YWJzLT5zdXBw b3J0c192ZWNfc2NhdHRlcl9zdG9yZVttb2RlXSA+IDA7DQo+IGRpZmYgLS1n aXQgYS9nY2MvdHJlZS12ZWN0LWRhdGEtcmVmcy5jYyBiL2djYy90cmVlLXZl Y3QtZGF0YS1yZWZzLmNjDQo+IGluZGV4IGViZTkzODMyYjFlLi5hYjJhZjEw M2NiNCAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtdmVjdC1kYXRhLXJlZnMu Y2MNCj4gKysrIGIvZ2NjL3RyZWUtdmVjdC1kYXRhLXJlZnMuY2MNCj4gQEAg LTM4NzMsMTYgKzM4NzMsMjQgQEAgdmVjdF9nYXRoZXJfc2NhdHRlcl9mbl9w ICh2ZWNfaW5mbyAqdmluZm8sIGJvb2wgcmVhZF9wLCBib29sIG1hc2tlZF9w LA0KPiAgICAgIHJldHVybiBmYWxzZTsNCj4gIA0KPiAgICAvKiBXb3JrIG91 dCB3aGljaCBmdW5jdGlvbiB3ZSBuZWVkLiAgKi8NCj4gLSAgaW50ZXJuYWxf Zm4gaWZuLCBhbHRfaWZuOw0KPiArICBpbnRlcm5hbF9mbiBpZm4sIGFsdF9p Zm4sIGFsdF9pZm4yOw0KPiAgICBpZiAocmVhZF9wKQ0KPiAgICAgIHsNCj4g ICAgICAgIGlmbiA9IG1hc2tlZF9wID8gSUZOX01BU0tfR0FUSEVSX0xPQUQg OiBJRk5fR0FUSEVSX0xPQUQ7DQo+ICAgICAgICBhbHRfaWZuID0gSUZOX01B U0tfR0FUSEVSX0xPQUQ7DQo+ICsgICAgICAvKiBXaGVuIHRhcmdldCBzdXBw b3J0cyBMRU5fTUFTS19HQVRIRVJfTE9BRCwgd2UgYWx3YXlzDQo+ICsgdXNl IExFTl9NQVNLX0dBVEhFUl9MT0FEIHJlZ2FyZGxlc3Mgd2hldGhlciBsZW4g YW5kDQo+ICsgbWFzayBhcmUgdmFsaWQgb3Igbm90LiAgKi8NCj4gKyAgICAg IGFsdF9pZm4yID0gSUZOX0xFTl9NQVNLX0dBVEhFUl9MT0FEOw0KPiAgICAg IH0NCj4gICAgZWxzZQ0KPiAgICAgIHsNCj4gICAgICAgIGlmbiA9IG1hc2tl ZF9wID8gSUZOX01BU0tfU0NBVFRFUl9TVE9SRSA6IElGTl9TQ0FUVEVSX1NU T1JFOw0KPiAgICAgICAgYWx0X2lmbiA9IElGTl9NQVNLX1NDQVRURVJfU1RP UkU7DQo+ICsgICAgICAvKiBXaGVuIHRhcmdldCBzdXBwb3J0cyBMRU5fTUFT S19TQ0FUVEVSX1NUT1JFLCB3ZSBhbHdheXMNCj4gKyB1c2UgTEVOX01BU0tf U0NBVFRFUl9TVE9SRSByZWdhcmRsZXNzIHdoZXRoZXIgbGVuIGFuZA0KPiAr IG1hc2sgYXJlIHZhbGlkIG9yIG5vdC4gICovDQo+ICsgICAgICBhbHRfaWZu MiA9IElGTl9MRU5fTUFTS19TQ0FUVEVSX1NUT1JFOw0KPiAgICAgIH0NCj4g IA0KPiAgICBmb3IgKDs7KQ0KPiBAQCAtMzkwOSw2ICszOTE3LDE0IEBAIHZl Y3RfZ2F0aGVyX3NjYXR0ZXJfZm5fcCAodmVjX2luZm8gKnZpbmZvLCBib29s IHJlYWRfcCwgYm9vbCBtYXNrZWRfcCwNCj4gICAgKm9mZnNldF92ZWN0eXBl X291dCA9IG9mZnNldF92ZWN0eXBlOw0KPiAgICByZXR1cm4gdHJ1ZTsNCj4g IH0NCj4gKyAgICAgIGVsc2UgaWYgKGludGVybmFsX2dhdGhlcl9zY2F0dGVy X2ZuX3N1cHBvcnRlZF9wIChhbHRfaWZuMiwgdmVjdHlwZSwNCj4gKyAgICAg ICAgbWVtb3J5X3R5cGUsDQo+ICsgICAgICAgIG9mZnNldF92ZWN0eXBlLCBz Y2FsZSkpDQo+ICsgew0KPiArICAgKmlmbl9vdXQgPSBhbHRfaWZuMjsNCj4g KyAgICpvZmZzZXRfdmVjdHlwZV9vdXQgPSBvZmZzZXRfdmVjdHlwZTsNCj4g KyAgIHJldHVybiB0cnVlOw0KPiArIH0NCj4gIA0KPiAgICAgICAgaWYgKFRZ UEVfUFJFQ0lTSU9OIChvZmZzZXRfdHlwZSkgPj0gUE9JTlRFUl9TSVpFDQo+ ICAgICYmIFRZUEVfUFJFQ0lTSU9OIChvZmZzZXRfdHlwZSkgPj0gZWxlbWVu dF9iaXRzKQ0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1zdG10cy5j YyBiL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MNCj4gaW5kZXggYTBjMzkyNjhi ZjAuLjMzZWMzM2Y4YjhkIDEwMDY0NA0KPiAtLS0gYS9nY2MvdHJlZS12ZWN0 LXN0bXRzLmNjDQo+ICsrKyBiL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MNCj4g QEAgLTQzMyw3ICs0MzMsNyBAQCBleGlzdF9ub25faW5kZXhpbmdfb3BlcmFu ZHNfZm9yX3VzZV9wICh0cmVlIHVzZSwgc3RtdF92ZWNfaW5mbyBzdG10X2lu Zm8pDQo+ICAgICAgICBpZiAoY2FsbCAmJiBnaW1wbGVfY2FsbF9pbnRlcm5h bF9wIChjYWxsKSkNCj4gIHsNCj4gICAgaW50ZXJuYWxfZm4gaWZuID0gZ2lt cGxlX2NhbGxfaW50ZXJuYWxfZm4gKGNhbGwpOw0KPiAtICAgaW50IG1hc2tf aW5kZXggPSBpbnRlcm5hbF9mbl9tYXNrX2luZGV4IChpZm4pOw0KPiArICAg aW50IG1hc2tfaW5kZXggPSBpbnRlcm5hbF9mbl9tYXNrX2luZGV4IChpZm4s IGZhbHNlKTsNCj4gICAgaWYgKG1hc2tfaW5kZXggPj0gMA0KPiAgICAgICAg JiYgdXNlID09IGdpbXBsZV9jYWxsX2FyZyAoY2FsbCwgbWFza19pbmRleCkp DQo+ICAgICAgcmV0dXJuIHRydWU7DQo+IEBAIC0xNzcxLDYgKzE3NzEsMTgg QEAgY2hlY2tfbG9hZF9zdG9yZV9mb3JfcGFydGlhbF92ZWN0b3JzIChsb29w X3ZlY19pbmZvIGxvb3BfdmluZm8sIHRyZWUgdmVjdHlwZSwNCj4gICAgIGdz X2luZm8tPm9mZnNldF92ZWN0eXBlLA0KPiAgICAgZ3NfaW5mby0+c2NhbGUp KQ0KPiAgew0KPiArICAgaWZuID0gKGlzX2xvYWQNCj4gKyA/IElGTl9MRU5f TUFTS19HQVRIRVJfTE9BRA0KPiArIDogSUZOX0xFTl9NQVNLX1NDQVRURVJf U1RPUkUpOw0KPiArICAgaWYgKGludGVybmFsX2dhdGhlcl9zY2F0dGVyX2Zu X3N1cHBvcnRlZF9wIChpZm4sIHZlY3R5cGUsDQo+ICsgICAgICAgZ3NfaW5m by0+bWVtb3J5X3R5cGUsDQo+ICsgICAgICAgZ3NfaW5mby0+b2Zmc2V0X3Zl Y3R5cGUsDQo+ICsgICAgICAgZ3NfaW5mby0+c2NhbGUpKQ0KPiArICAgICB7 DQo+ICsgICAgICAgdmVjX2xvb3BfbGVucyAqbGVucyA9ICZMT09QX1ZJTkZP X0xFTlMgKGxvb3BfdmluZm8pOw0KPiArICAgICAgIHZlY3RfcmVjb3JkX2xv b3BfbGVuIChsb29wX3ZpbmZvLCBsZW5zLCBudmVjdG9ycywgdmVjdHlwZSwg MSk7DQo+ICsgICAgICAgcmV0dXJuOw0KPiArICAgICB9DQo+ICAgIGlmIChk dW1wX2VuYWJsZWRfcCAoKSkNCj4gICAgICBkdW1wX3ByaW50Zl9sb2MgKE1T R19NSVNTRURfT1BUSU1JWkFUSU9OLCB2ZWN0X2xvY2F0aW9uLA0KPiAgICAg ICAiY2FuJ3Qgb3BlcmF0ZSBvbiBwYXJ0aWFsIHZlY3RvcnMgYmVjYXVzZSIN Cj4gQEAgLTMxMjksMTYgKzMxNDEsMzkgQEAgdmVjdF9nZXRfZ2F0aGVyX3Nj YXR0ZXJfb3BzIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sDQo+ICBzdGF0 aWMgdm9pZA0KPiAgdmVjdF9nZXRfc3RyaWRlZF9sb2FkX3N0b3JlX29wcyAo c3RtdF92ZWNfaW5mbyBzdG10X2luZm8sDQo+ICBsb29wX3ZlY19pbmZvIGxv b3BfdmluZm8sDQo+ICsgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgKmdzaSwNCj4g IGdhdGhlcl9zY2F0dGVyX2luZm8gKmdzX2luZm8sDQo+IC0gdHJlZSAqZGF0 YXJlZl9idW1wLCB0cmVlICp2ZWNfb2Zmc2V0KQ0KPiArIHRyZWUgKmRhdGFy ZWZfYnVtcCwgdHJlZSAqdmVjX29mZnNldCwNCj4gKyB2ZWNfbG9vcF9sZW5z ICpsb29wX2xlbnMpDQo+ICB7DQo+ICAgIHN0cnVjdCBkYXRhX3JlZmVyZW5j ZSAqZHIgPSBTVE1UX1ZJTkZPX0RBVEFfUkVGIChzdG10X2luZm8pOw0KPiAg ICB0cmVlIHZlY3R5cGUgPSBTVE1UX1ZJTkZPX1ZFQ1RZUEUgKHN0bXRfaW5m byk7DQo+ICANCj4gLSAgdHJlZSBidW1wID0gc2l6ZV9iaW5vcCAoTVVMVF9F WFBSLA0KPiAtICAgZm9sZF9jb252ZXJ0IChzaXpldHlwZSwgdW5zaGFyZV9l eHByIChEUl9TVEVQIChkcikpKSwNCj4gLSAgIHNpemVfaW50IChUWVBFX1ZF Q1RPUl9TVUJQQVJUUyAodmVjdHlwZSkpKTsNCj4gLSAgKmRhdGFyZWZfYnVt cCA9IGNzZV9hbmRfZ2ltcGxpZnlfdG9fcHJlaGVhZGVyIChsb29wX3ZpbmZv LCBidW1wKTsNCj4gKyAgaWYgKExPT1BfVklORk9fVVNJTkdfU0VMRUNUX1ZM X1AgKGxvb3BfdmluZm8pKQ0KPiArICAgIHsNCj4gKyAgICAgIC8qIF8zMSA9 IC5TRUxFQ1RfVkwgKGl2dG1wXzI5LCBQT0xZX0lOVF9DU1QgWzQsIDRdKTsN Cj4gKyBpdnRtcF84ID0gXzMxICogMTYgKHN0ZXAgaW4gYnl0ZXMpOw0KPiAr IC5MRU5fTUFTS19TQ0FUVEVSX1NUT1JFICh2ZWN0cF9hLjlfNywgLi4uICk7 DQo+ICsgdmVjdHBfYS45XzI2ID0gdmVjdHBfYS45XzcgKyBpdnRtcF84OyAg Ki8NCj4gKyAgICAgIHRyZWUgbG9vcF9sZW4NCj4gKyA9IHZlY3RfZ2V0X2xv b3BfbGVuIChsb29wX3ZpbmZvLCBnc2ksIGxvb3BfbGVucywgMSwgdmVjdHlw ZSwgMCwgMCk7DQo+ICsgICAgICB0cmVlIHRtcA0KPiArID0gZm9sZF9idWls ZDIgKE1VTFRfRVhQUiwgc2l6ZXR5cGUsDQo+ICsgICAgICAgIGZvbGRfY29u dmVydCAoc2l6ZXR5cGUsIHVuc2hhcmVfZXhwciAoRFJfU1RFUCAoZHIpKSks DQo+ICsgICAgICAgIGxvb3BfbGVuKTsNCj4gKyAgICAgIHRyZWUgYnVtcCA9 IG1ha2VfdGVtcF9zc2FfbmFtZSAoc2l6ZXR5cGUsIE5VTEwsICJpdnRtcCIp Ow0KPiArICAgICAgZ2Fzc2lnbiAqYXNzaWduID0gZ2ltcGxlX2J1aWxkX2Fz c2lnbiAoYnVtcCwgdG1wKTsNCj4gKyAgICAgIGdzaV9pbnNlcnRfYmVmb3Jl IChnc2ksIGFzc2lnbiwgR1NJX1NBTUVfU1RNVCk7DQo+ICsgICAgICAqZGF0 YXJlZl9idW1wID0gYnVtcDsNCj4gKyAgICB9DQo+ICsgIGVsc2UNCj4gKyAg ICB7DQo+ICsgICAgICB0cmVlIGJ1bXANCj4gKyA9IHNpemVfYmlub3AgKE1V TFRfRVhQUiwNCj4gKyAgICAgICBmb2xkX2NvbnZlcnQgKHNpemV0eXBlLCB1 bnNoYXJlX2V4cHIgKERSX1NURVAgKGRyKSkpLA0KPiArICAgICAgIHNpemVf aW50IChUWVBFX1ZFQ1RPUl9TVUJQQVJUUyAodmVjdHlwZSkpKTsNCj4gKyAg ICAgICpkYXRhcmVmX2J1bXAgPSBjc2VfYW5kX2dpbXBsaWZ5X3RvX3ByZWhl YWRlciAobG9vcF92aW5mbywgYnVtcCk7DQo+ICsgICAgfQ0KPiAgDQo+ICAg IC8qIFRoZSBvZmZzZXQgZ2l2ZW4gaW4gR1NfSU5GTyBjYW4gaGF2ZSBwb2lu dGVyIHR5cGUsIHNvIHVzZSB0aGUgZWxlbWVudA0KPiAgICAgICB0eXBlIG9m IHRoZSB2ZWN0b3IgaW5zdGVhZC4gICovDQo+IEBAIC04MDEzLDcgKzgwNDgs NyBAQCB2ZWN0b3JpemFibGVfc3RvcmUgKHZlY19pbmZvICp2aW5mbywNCj4g ICAgcmV0dXJuIGZhbHNlOw0KPiAgfQ0KPiAgDQo+IC0gICAgICBpbnQgbWFz a19pbmRleCA9IGludGVybmFsX2ZuX21hc2tfaW5kZXggKGlmbik7DQo+ICsg ICAgICBpbnQgbWFza19pbmRleCA9IGludGVybmFsX2ZuX21hc2tfaW5kZXgg KGlmbiwgZmFsc2UpOw0KPiAgICAgICAgaWYgKG1hc2tfaW5kZXggPj0gMA0K PiAgICAmJiAhdmVjdF9jaGVja19zY2FsYXJfbWFzayAodmluZm8sIHN0bXRf aW5mbywgc2xwX25vZGUsIG1hc2tfaW5kZXgsDQo+ICAgICAgICAmbWFzaywg TlVMTCwgJm1hc2tfZHQsICZtYXNrX3ZlY3R5cGUpKQ0KPiBAQCAtODY4NSw4 ICs4NzIwLDggQEAgdmVjdG9yaXphYmxlX3N0b3JlICh2ZWNfaW5mbyAqdmlu Zm8sDQo+ICAgIGVsc2UgaWYgKG1lbW9yeV9hY2Nlc3NfdHlwZSA9PSBWTUFU X0dBVEhFUl9TQ0FUVEVSKQ0KPiAgICAgIHsNCj4gICAgICAgIGFnZ3JfdHlw ZSA9IGVsZW1fdHlwZTsNCj4gLSAgICAgIHZlY3RfZ2V0X3N0cmlkZWRfbG9h ZF9zdG9yZV9vcHMgKHN0bXRfaW5mbywgbG9vcF92aW5mbywgJmdzX2luZm8s DQo+IC0gICAgICAgICZidW1wLCAmdmVjX29mZnNldCk7DQo+ICsgICAgICB2 ZWN0X2dldF9zdHJpZGVkX2xvYWRfc3RvcmVfb3BzIChzdG10X2luZm8sIGxv b3BfdmluZm8sIGdzaSwgJmdzX2luZm8sDQo+ICsgICAgICAgICZidW1wLCAm dmVjX29mZnNldCwgbG9vcF9sZW5zKTsNCj4gICAgICB9DQo+ICAgIGVsc2UN Cj4gICAgICB7DQo+IEBAIC04OTE1LDYgKzg5NTAsOCBAQCB2ZWN0b3JpemFi bGVfc3RvcmUgKHZlY19pbmZvICp2aW5mbywNCj4gICAgICAgIHVuc2lnbmVk IEhPU1RfV0lERV9JTlQgYWxpZ247DQo+ICANCj4gICAgICAgIHRyZWUgZmlu YWxfbWFzayA9IE5VTExfVFJFRTsNCj4gKyAgICAgICB0cmVlIGZpbmFsX2xl biA9IE5VTExfVFJFRTsNCj4gKyAgICAgICB0cmVlIGJpYXMgPSBOVUxMX1RS RUU7DQo+ICAgICAgICBpZiAobG9vcF9tYXNrcykNCj4gIGZpbmFsX21hc2sg PSB2ZWN0X2dldF9sb29wX21hc2sgKGxvb3BfdmluZm8sIGdzaSwgbG9vcF9t YXNrcywNCj4gIHZlY19udW0gKiBuY29waWVzLA0KPiBAQCAtODkyOSw4ICs4 OTY2LDQxIEBAIHZlY3Rvcml6YWJsZV9zdG9yZSAodmVjX2luZm8gKnZpbmZv LA0KPiAgICBpZiAoU1RNVF9WSU5GT19HQVRIRVJfU0NBVFRFUl9QIChzdG10 X2luZm8pKQ0KPiAgICAgIHZlY19vZmZzZXQgPSB2ZWNfb2Zmc2V0c1t2ZWNf bnVtICogaiArIGldOw0KPiAgICB0cmVlIHNjYWxlID0gc2l6ZV9pbnQgKGdz X2luZm8uc2NhbGUpOw0KPiArDQo+ICsgICBpZiAoZ3NfaW5mby5pZm4gPT0g SUZOX0xFTl9NQVNLX1NDQVRURVJfU1RPUkUpDQo+ICsgICAgIHsNCj4gKyAg ICAgICBpZiAobG9vcF9sZW5zKQ0KPiArIHsNCj4gKyAgIGZpbmFsX2xlbg0K PiArICAgICA9IHZlY3RfZ2V0X2xvb3BfbGVuIChsb29wX3ZpbmZvLCBnc2ks IGxvb3BfbGVucywNCj4gKyB2ZWNfbnVtICogbmNvcGllcywgdmVjdHlwZSwN Cj4gKyB2ZWNfbnVtICogaiArIGksIDEpOw0KPiArIH0NCj4gKyAgICAgICBl bHNlDQo+ICsgew0KPiArICAgdHJlZSBpdl90eXBlID0gTE9PUF9WSU5GT19S R1JPVVBfSVZfVFlQRSAobG9vcF92aW5mbyk7DQo+ICsgICBmaW5hbF9sZW4N Cj4gKyAgICAgPSBidWlsZF9pbnRfY3N0IChpdl90eXBlLA0KPiArICAgICAg VFlQRV9WRUNUT1JfU1VCUEFSVFMgKHZlY3R5cGUpKTsNCj4gKyB9DQo+ICsg ICAgICAgc2lnbmVkIGNoYXIgYmlhc3ZhbA0KPiArID0gTE9PUF9WSU5GT19Q QVJUSUFMX0xPQURfU1RPUkVfQklBUyAobG9vcF92aW5mbyk7DQo+ICsgICAg ICAgYmlhcyA9IGJ1aWxkX2ludF9jc3QgKGludFFJX3R5cGVfbm9kZSwgYmlh c3ZhbCk7DQo+ICsgICAgICAgaWYgKCFmaW5hbF9tYXNrKQ0KPiArIHsNCj4g KyAgIG1hc2tfdmVjdHlwZSA9IHRydXRoX3R5cGVfZm9yICh2ZWN0eXBlKTsN Cj4gKyAgIGZpbmFsX21hc2sgPSBidWlsZF9taW51c19vbmVfY3N0IChtYXNr X3ZlY3R5cGUpOw0KPiArIH0NCj4gKyAgICAgfQ0KPiArDQo+ICAgIGdjYWxs ICpjYWxsOw0KPiAtICAgaWYgKGZpbmFsX21hc2spDQo+ICsgICBpZiAoZmlu YWxfbGVuICYmIGZpbmFsX2xlbikNCj4gKyAgICAgY2FsbA0KPiArICAgICAg ID0gZ2ltcGxlX2J1aWxkX2NhbGxfaW50ZXJuYWwgKElGTl9MRU5fTUFTS19T Q0FUVEVSX1NUT1JFLA0KPiArICAgICA3LCBkYXRhcmVmX3B0ciwgdmVjX29m ZnNldCwNCj4gKyAgICAgc2NhbGUsIHZlY19vcHJuZCwgZmluYWxfbGVuLA0K PiArICAgICBiaWFzLCBmaW5hbF9tYXNrKTsNCj4gKyAgIGVsc2UgaWYgKGZp bmFsX21hc2spDQo+ICAgICAgY2FsbCA9IGdpbXBsZV9idWlsZF9jYWxsX2lu dGVybmFsDQo+ICAgICAgICAoSUZOX01BU0tfU0NBVFRFUl9TVE9SRSwgNSwg ZGF0YXJlZl9wdHIsIHZlY19vZmZzZXQsDQo+ICAgICAgICAgc2NhbGUsIHZl Y19vcHJuZCwgZmluYWxfbWFzayk7DQo+IEBAIC05MDQ3LDkgKzkxMTcsNiBA QCB2ZWN0b3JpemFibGVfc3RvcmUgKHZlY19pbmZvICp2aW5mbywNCj4gICAg ICAgIG1hY2hpbmVfbW9kZSB2bW9kZSA9IFRZUEVfTU9ERSAodmVjdHlwZSk7 DQo+ICAgICAgICBtYWNoaW5lX21vZGUgbmV3X3Ztb2RlID0gdm1vZGU7DQo+ ICAgICAgICBpbnRlcm5hbF9mbiBwYXJ0aWFsX2lmbiA9IElGTl9MQVNUOw0K PiAtICAgICAgIC8qIFByb2R1Y2UgJ2xlbicgYW5kICdiaWFzJyBhcmd1bWVu dC4gICovDQo+IC0gICAgICAgdHJlZSBmaW5hbF9sZW4gPSBOVUxMX1RSRUU7 DQo+IC0gICAgICAgdHJlZSBiaWFzID0gTlVMTF9UUkVFOw0KPiAgICAgICAg aWYgKGxvb3BfbGVucykNCj4gIHsNCj4gICAgb3B0X21hY2hpbmVfbW9kZSBu ZXdfb3Ztb2RlDQo+IEBAIC0xMDE3Nyw4ICsxMDI0NCw4IEBAIHZlY3Rvcml6 YWJsZV9sb2FkICh2ZWNfaW5mbyAqdmluZm8sDQo+ICAgIGVsc2UgaWYgKG1l bW9yeV9hY2Nlc3NfdHlwZSA9PSBWTUFUX0dBVEhFUl9TQ0FUVEVSKQ0KPiAg ICAgIHsNCj4gICAgICAgIGFnZ3JfdHlwZSA9IGVsZW1fdHlwZTsNCj4gLSAg ICAgIHZlY3RfZ2V0X3N0cmlkZWRfbG9hZF9zdG9yZV9vcHMgKHN0bXRfaW5m bywgbG9vcF92aW5mbywgJmdzX2luZm8sDQo+IC0gICAgICAgICZidW1wLCAm dmVjX29mZnNldCk7DQo+ICsgICAgICB2ZWN0X2dldF9zdHJpZGVkX2xvYWRf c3RvcmVfb3BzIChzdG10X2luZm8sIGxvb3BfdmluZm8sIGdzaSwgJmdzX2lu Zm8sDQo+ICsgICAgICAgICZidW1wLCAmdmVjX29mZnNldCwgbG9vcF9sZW5z KTsNCj4gICAgICB9DQo+ICAgIGVsc2UNCj4gICAgICB7DQo+IEBAIC0xMDMz OSw2ICsxMDQwNiw4IEBAIHZlY3Rvcml6YWJsZV9sb2FkICh2ZWNfaW5mbyAq dmluZm8sDQo+ICAgIGZvciAoaSA9IDA7IGkgPCB2ZWNfbnVtOyBpKyspDQo+ ICAgICAgew0KPiAgICAgICAgdHJlZSBmaW5hbF9tYXNrID0gTlVMTF9UUkVF Ow0KPiArICAgICAgIHRyZWUgZmluYWxfbGVuID0gTlVMTF9UUkVFOw0KPiAr ICAgICAgIHRyZWUgYmlhcyA9IE5VTExfVFJFRTsNCj4gICAgICAgIGlmIChs b29wX21hc2tzDQo+ICAgICYmIG1lbW9yeV9hY2Nlc3NfdHlwZSAhPSBWTUFU X0lOVkFSSUFOVCkNCj4gIGZpbmFsX21hc2sgPSB2ZWN0X2dldF9sb29wX21h c2sgKGxvb3BfdmluZm8sIGdzaSwgbG9vcF9tYXNrcywNCj4gQEAgLTEwMzY4 LDggKzEwNDM3LDM5IEBAIHZlY3Rvcml6YWJsZV9sb2FkICh2ZWNfaW5mbyAq dmluZm8sDQo+ICAgIHZlY19vZmZzZXQgPSB2ZWNfb2Zmc2V0c1t2ZWNfbnVt ICogaiArIGldOw0KPiAgdHJlZSB6ZXJvID0gYnVpbGRfemVyb19jc3QgKHZl Y3R5cGUpOw0KPiAgdHJlZSBzY2FsZSA9IHNpemVfaW50IChnc19pbmZvLnNj YWxlKTsNCj4gKw0KPiArIGlmIChnc19pbmZvLmlmbiA9PSBJRk5fTEVOX01B U0tfR0FUSEVSX0xPQUQpDQo+ICsgICB7DQo+ICsgICAgIGlmIChsb29wX2xl bnMpDQo+ICsgICAgICAgew0KPiArIGZpbmFsX2xlbiA9IHZlY3RfZ2V0X2xv b3BfbGVuICgNCj4gKyAgIGxvb3BfdmluZm8sIGdzaSwgbG9vcF9sZW5zLCB2 ZWNfbnVtICogbmNvcGllcywNCj4gKyAgIHZlY3R5cGUsIHZlY19udW0gKiBq ICsgaSwgMSk7DQo+ICsgICAgICAgfQ0KPiArICAgICBlbHNlDQo+ICsgICAg ICAgew0KPiArIHRyZWUgaXZfdHlwZQ0KPiArICAgPSBMT09QX1ZJTkZPX1JH Uk9VUF9JVl9UWVBFIChsb29wX3ZpbmZvKTsNCj4gKyBmaW5hbF9sZW4gPSBi dWlsZF9pbnRfY3N0ICgNCj4gKyAgIGl2X3R5cGUsIFRZUEVfVkVDVE9SX1NV QlBBUlRTICh2ZWN0eXBlKSk7DQo+ICsgICAgICAgfQ0KPiArICAgICBzaWdu ZWQgY2hhciBiaWFzdmFsDQo+ICsgICAgICAgPSBMT09QX1ZJTkZPX1BBUlRJ QUxfTE9BRF9TVE9SRV9CSUFTIChsb29wX3ZpbmZvKTsNCj4gKyAgICAgYmlh cyA9IGJ1aWxkX2ludF9jc3QgKGludFFJX3R5cGVfbm9kZSwgYmlhc3ZhbCk7 DQo+ICsgICAgIGlmICghZmluYWxfbWFzaykNCj4gKyAgICAgICB7DQo+ICsg bWFza192ZWN0eXBlID0gdHJ1dGhfdHlwZV9mb3IgKHZlY3R5cGUpOw0KPiAr IGZpbmFsX21hc2sgPSBidWlsZF9taW51c19vbmVfY3N0IChtYXNrX3ZlY3R5 cGUpOw0KPiArICAgICAgIH0NCj4gKyAgIH0NCj4gKw0KPiAgZ2NhbGwgKmNh bGw7DQo+IC0gaWYgKGZpbmFsX21hc2spDQo+ICsgaWYgKGZpbmFsX2xlbiAm JiBmaW5hbF9tYXNrKQ0KPiArICAgY2FsbCA9IGdpbXBsZV9idWlsZF9jYWxs X2ludGVybmFsICgNCj4gKyAgICAgSUZOX0xFTl9NQVNLX0dBVEhFUl9MT0FE LCA3LCBkYXRhcmVmX3B0ciwNCj4gKyAgICAgdmVjX29mZnNldCwgc2NhbGUs IHplcm8sIGZpbmFsX2xlbiwgYmlhcywNCj4gKyAgICAgZmluYWxfbWFzayk7 DQo+ICsgZWxzZSBpZiAoZmluYWxfbWFzaykNCj4gICAgY2FsbCA9IGdpbXBs ZV9idWlsZF9jYWxsX2ludGVybmFsDQo+ICAgICAgKElGTl9NQVNLX0dBVEhF Ul9MT0FELCA1LCBkYXRhcmVmX3B0ciwNCj4gICAgICAgdmVjX29mZnNldCwg c2NhbGUsIHplcm8sIGZpbmFsX21hc2spOw0KPiBAQCAtMTA0NjIsOSArMTA1 NjIsNiBAQCB2ZWN0b3JpemFibGVfbG9hZCAodmVjX2luZm8gKnZpbmZvLA0K PiAgICAgIG1hY2hpbmVfbW9kZSB2bW9kZSA9IFRZUEVfTU9ERSAodmVjdHlw ZSk7DQo+ICAgICAgbWFjaGluZV9tb2RlIG5ld192bW9kZSA9IHZtb2RlOw0K PiAgICAgIGludGVybmFsX2ZuIHBhcnRpYWxfaWZuID0gSUZOX0xBU1Q7DQo+ IC0gICAgIC8qIFByb2R1Y2UgJ2xlbicgYW5kICdiaWFzJyBhcmd1bWVudC4g ICovDQo+IC0gICAgIHRyZWUgZmluYWxfbGVuID0gTlVMTF9UUkVFOw0KPiAt ICAgICB0cmVlIGJpYXMgPSBOVUxMX1RSRUU7DQo+ICAgICAgaWYgKGxvb3Bf bGVucykNCj4gICAgICAgIHsNCj4gIG9wdF9tYWNoaW5lX21vZGUgbmV3X292 bW9kZQ0KPiANCiANCi0tIA0KUmljaGFyZCBCaWVuZXIgPHJndWVudGhlckBz dXNlLmRlPg0KU1VTRSBTb2Z0d2FyZSBTb2x1dGlvbnMgR2VybWFueSBHbWJI LCBGcmFua2Vuc3RyYXNzZSAxNDYsIDkwNDYxIE51ZXJuYmVyZywNCkdlcm1h bnk7IEdGOiBJdm8gVG90ZXYsIEFuZHJldyBNeWVycywgQW5kcmV3IE1jRG9u YWxkLCBCb3VkaWVuIE1vZXJtYW47DQpIUkIgMzY4MDkgKEFHIE51ZXJuYmVy ZykNCiANCg== ------=_001_NextPart877453204083_=------