From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbg150.qq.com (smtpbg150.qq.com [18.132.163.193]) by sourceware.org (Postfix) with ESMTPS id A24463858421 for ; Thu, 22 Jun 2023 22:52:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A24463858421 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: bizesmtp85t1687474357tpghr32b Received: from TABLET-POE6JQHH ( [115.44.118.116]) by bizesmtp.qq.com (ESMTP) with id ; Fri, 23 Jun 2023 06:52:36 +0800 (CST) X-QQ-SSF: 01400000002000G0S000B00A0000000 X-QQ-FEAT: qcKkmz/zJhxJKdSqeB3Zj+GVqMCyMUdZPqdOE/m5A7Jrf6lwuo0L8DDuL8iqS I6b8Z2nN6K7medpUBXasvHAjRgCmclDpVKPjsGFzC3QNDUnvDQZUtum9f4StcbXfDHiRGTa PGS61MRYmyzGCCZuwOaUEOM6jghmicSKgI2s59PU9haYXoLQrpiFWovq/o4PsmeeLvUJJkg i6kQbZNFis2sx+6bD96Z00nsFJbQc1Eu2D2Y6al961QSbcs5oon+vWcKPJ/jzefWfTQK4ig sQBQ/SJk1IQZkUOfi2w4DhJ1NgW9pwPTJROPL4ZXAdhx0YXsW1nmB3qqcrm2WtQK/jVNEOw OzIcHu7CAHOtBTReJdR6UqSR651zltuUEL2XTW1Mtc8I82QgBinofLAmB5U5qLKa7ZKcSAz 0Wfx2aGZFO4= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 11564982698317841308 Date: Fri, 23 Jun 2023 06:52:37 +0800 From: =?UTF-8?B?6ZKf5bGF5ZOy?= To: richard.sandiford Cc: gcc-patches , rguenther 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: BF1D2F73-54A1-4CA0-8E18-C8C336BE64E1 X-Has-Attach: no X-Mailer: Foxmail 7.2.23.121[cn] Mime-Version: 1.0 Message-ID: <8151D5AF6A7E1623+2023062306523654960774@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart578177681478_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP,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_NextPart578177681478_=---- Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 VGhhbmtzIFJpY2hhcmQhIFdpbGwgc2VuZCBWNiBwYXRjaCB0byBhZGRyZXNz IHlvdXIgY29tbWVudHMuDQoNCg0KDQpqdXpoZS56aG9uZ0ByaXZhaS5haQ0K IA0KRnJvbTogUmljaGFyZCBTYW5kaWZvcmQNCkRhdGU6IDIwMjMtMDYtMjMg MDI6MjcNClRvOiBqdXpoZS56aG9uZw0KQ0M6IGdjYy1wYXRjaGVzOyByZ3Vl bnRoZXINClN1YmplY3Q6IFJlOiBbUEFUQ0ggVjVdIFZFQ1Q6IEFwcGx5IExF Tl9NQVNLX3tMT0FELFNUT1JFfSBpbnRvIHZlY3Rvcml6ZXINCmp1emhlLnpo b25nQHJpdmFpLmFpIHdyaXRlczoNCj4gRnJvbTogSnUtWmhlIFpob25nIDxq dXpoZS56aG9uZ0ByaXZhaS5haT4NCj4NCj4gZ2NjL0NoYW5nZUxvZzoNCj4N Cj4gICAgICAgICAqIGludGVybmFsLWZuLmNjIChleHBhbmRfcGFydGlhbF9z dG9yZV9vcHRhYl9mbik6IEFkYXB0IGZvciBMRU5fTUFTS19TVE9SRS4NCj4g ICAgICAgICAoaW50ZXJuYWxfbG9hZF9mbl9wKTogQWRkIExFTl9NQVNLX0xP QUQuDQo+ICAgICAgICAgKGludGVybmFsX3N0b3JlX2ZuX3ApOiBBZGQgTEVO X01BU0tfU1RPUkUuDQo+ICAgICAgICAgKGludGVybmFsX2ZuX21hc2tfaW5k ZXgpOiBBZGQgTEVOX01BU0tfe0xPQUQsU1RPUkV9Lg0KPiAgICAgICAgIChp bnRlcm5hbF9mbl9zdG9yZWRfdmFsdWVfaW5kZXgpOiBBZGQgTEVOX01BU0tf U1RPUkUuDQo+ICAgICAgICAgKGludGVybmFsX2xlbl9sb2FkX3N0b3JlX2Jp YXMpOiAgQWRkIExFTl9NQVNLX3tMT0FELFNUT1JFfS4NCj4gICAgICAgICAq IG9wdGFicy10cmVlLmNjIChjYW5fdmVjX21hc2tfbG9hZF9zdG9yZV9wKTog QWRhcHQgZm9yIExFTl9NQVNLX3tMT0FELFNUT1JFfS4NCj4gICAgICAgICAo Z2V0X2xlbl9sb2FkX3N0b3JlX21vZGUpOiBEaXR0by4NCj4gICAgICAgICAq IG9wdGFicy10cmVlLmggKGNhbl92ZWNfbWFza19sb2FkX3N0b3JlX3ApOiBE aXR0by4NCj4gICAgICAgICAoZ2V0X2xlbl9sb2FkX3N0b3JlX21vZGUpOiBE aXR0by4NCj4gICAgICAgICAqIHRyZWUtdmVjdC1zdG10cy5jYyAoY2hlY2tf bG9hZF9zdG9yZV9mb3JfcGFydGlhbF92ZWN0b3JzKTogRGl0dG8uDQo+ICAg ICAgICAgKGdldF9hbGxfb25lc19tYXNrKTogTmV3IGZ1bmN0aW9uLg0KPiAg ICAgICAgICh2ZWN0b3JpemFibGVfc3RvcmUpOiBBcHBseSBMRU5fTUFTS197 TE9BRCxTVE9SRX0gaW50byB2ZWN0b3JpemVyLg0KPiAgICAgICAgICh2ZWN0 b3JpemFibGVfbG9hZCk6IERpdHRvLg0KPg0KPiAtLS0NCj4gIGdjYy9pbnRl cm5hbC1mbi5jYyAgICAgfCAgMzYgKysrKysrLQ0KPiAgZ2NjL29wdGFicy10 cmVlLmNjICAgICB8ICA4NSArKysrKysrKysrKysrLS0tDQo+ICBnY2Mvb3B0 YWJzLXRyZWUuaCAgICAgIHwgICA2ICstDQo+ICBnY2MvdHJlZS12ZWN0LXN0 bXRzLmNjIHwgMjIwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tDQo+ICA0IGZpbGVzIGNoYW5nZWQsIDI2NSBpbnNlcnRpb25z KCspLCA4MiBkZWxldGlvbnMoLSkNCj4NCj4gZGlmZiAtLWdpdCBhL2djYy9p bnRlcm5hbC1mbi5jYyBiL2djYy9pbnRlcm5hbC1mbi5jYw0KPiBpbmRleCBj OTExYWU3OTBjYi4uYjkwYmQ4NWRmMmMgMTAwNjQ0DQo+IC0tLSBhL2djYy9p bnRlcm5hbC1mbi5jYw0KPiArKysgYi9nY2MvaW50ZXJuYWwtZm4uY2MNCj4g QEAgLTI5NDksNyArMjk0OSw3IEBAIGV4cGFuZF9wYXJ0aWFsX2xvYWRfb3B0 YWJfZm4gKGludGVybmFsX2ZuLCBnY2FsbCAqc3RtdCwgY29udmVydF9vcHRh YiBvcHRhYikNCj4gICAqIE9QVEFCLiAgKi8NCj4gIA0KPiAgc3RhdGljIHZv aWQNCj4gLWV4cGFuZF9wYXJ0aWFsX3N0b3JlX29wdGFiX2ZuIChpbnRlcm5h bF9mbiwgZ2NhbGwgKnN0bXQsIGNvbnZlcnRfb3B0YWIgb3B0YWIpDQo+ICtl eHBhbmRfcGFydGlhbF9zdG9yZV9vcHRhYl9mbiAoaW50ZXJuYWxfZm4gaWZu LCBnY2FsbCAqc3RtdCwgY29udmVydF9vcHRhYiBvcHRhYikNCj4gIHsNCj4g ICAgY2xhc3MgZXhwYW5kX29wZXJhbmQgb3BzWzVdOw0KPiAgICB0cmVlIHR5 cGUsIGxocywgcmhzLCBtYXNrdCwgYmlhc3Q7DQo+IEBAIC0yOTU3LDcgKzI5 NTcsNyBAQCBleHBhbmRfcGFydGlhbF9zdG9yZV9vcHRhYl9mbiAoaW50ZXJu YWxfZm4sIGdjYWxsICpzdG10LCBjb252ZXJ0X29wdGFiIG9wdGFiKQ0KPiAg ICBpbnNuX2NvZGUgaWNvZGU7DQo+ICANCj4gICAgbWFza3QgPSBnaW1wbGVf Y2FsbF9hcmcgKHN0bXQsIDIpOw0KPiAtICByaHMgPSBnaW1wbGVfY2FsbF9h cmcgKHN0bXQsIDMpOw0KPiArICByaHMgPSBnaW1wbGVfY2FsbF9hcmcgKHN0 bXQsIGludGVybmFsX2ZuX3N0b3JlZF92YWx1ZV9pbmRleCAoaWZuKSk7DQo+ ICAgIHR5cGUgPSBUUkVFX1RZUEUgKHJocyk7DQo+ICAgIGxocyA9IGV4cGFu ZF9jYWxsX21lbV9yZWYgKHR5cGUsIHN0bXQsIDApOw0KPiAgDQo+IEBAIC00 NDM1LDYgKzQ0MzUsNyBAQCBpbnRlcm5hbF9sb2FkX2ZuX3AgKGludGVybmFs X2ZuIGZuKQ0KPiAgICAgIGNhc2UgSUZOX0dBVEhFUl9MT0FEOg0KPiAgICAg IGNhc2UgSUZOX01BU0tfR0FUSEVSX0xPQUQ6DQo+ICAgICAgY2FzZSBJRk5f TEVOX0xPQUQ6DQo+ICsgICAgY2FzZSBJRk5fTEVOX01BU0tfTE9BRDoNCj4g ICAgICAgIHJldHVybiB0cnVlOw0KPiAgDQo+ICAgICAgZGVmYXVsdDoNCj4g QEAgLTQ0NTUsNiArNDQ1Niw3IEBAIGludGVybmFsX3N0b3JlX2ZuX3AgKGlu dGVybmFsX2ZuIGZuKQ0KPiAgICAgIGNhc2UgSUZOX1NDQVRURVJfU1RPUkU6 DQo+ICAgICAgY2FzZSBJRk5fTUFTS19TQ0FUVEVSX1NUT1JFOg0KPiAgICAg IGNhc2UgSUZOX0xFTl9TVE9SRToNCj4gKyAgICBjYXNlIElGTl9MRU5fTUFT S19TVE9SRToNCj4gICAgICAgIHJldHVybiB0cnVlOw0KPiAgDQo+ICAgICAg ZGVmYXVsdDoNCj4gQEAgLTQ0OTgsNiArNDUwMCwxMCBAQCBpbnRlcm5hbF9m bl9tYXNrX2luZGV4IChpbnRlcm5hbF9mbiBmbikNCj4gICAgICBjYXNlIElG Tl9NQVNLX1NDQVRURVJfU1RPUkU6DQo+ICAgICAgICByZXR1cm4gNDsNCj4g IA0KPiArICAgIGNhc2UgSUZOX0xFTl9NQVNLX0xPQUQ6DQo+ICsgICAgY2Fz ZSBJRk5fTEVOX01BU0tfU1RPUkU6DQo+ICsgICAgICByZXR1cm4gMzsNCj4g Kw0KPiAgICAgIGRlZmF1bHQ6DQo+ICAgICAgICByZXR1cm4gKGNvbmRpdGlv bmFsX2ludGVybmFsX2ZuX2NvZGUgKGZuKSAhPSBFUlJPUl9NQVJLDQo+ICAg ICAgICB8fCBnZXRfdW5jb25kaXRpb25hbF9pbnRlcm5hbF9mbiAoZm4pICE9 IElGTl9MQVNUID8gMCA6IC0xKTsNCj4gQEAgLTQ1MTksNiArNDUyNSw5IEBA IGludGVybmFsX2ZuX3N0b3JlZF92YWx1ZV9pbmRleCAoaW50ZXJuYWxfZm4g Zm4pDQo+ICAgICAgY2FzZSBJRk5fTEVOX1NUT1JFOg0KPiAgICAgICAgcmV0 dXJuIDM7DQo+ICANCj4gKyAgICBjYXNlIElGTl9MRU5fTUFTS19TVE9SRToN Cj4gKyAgICAgIHJldHVybiA0Ow0KPiArDQo+ICAgICAgZGVmYXVsdDoNCj4g ICAgICAgIHJldHVybiAtMTsNCj4gICAgICB9DQo+IEBAIC00NTgzLDEzICs0 NTkyLDMyIEBAIGludGVybmFsX2xlbl9sb2FkX3N0b3JlX2JpYXMgKGludGVy bmFsX2ZuIGlmbiwgbWFjaGluZV9tb2RlIG1vZGUpDQo+ICB7DQo+ICAgIG9w dGFiIG9wdGFiID0gZGlyZWN0X2ludGVybmFsX2ZuX29wdGFiIChpZm4pOw0K PiAgICBpbnNuX2NvZGUgaWNvZGUgPSBkaXJlY3Rfb3B0YWJfaGFuZGxlciAo b3B0YWIsIG1vZGUpOw0KPiArICBpbnQgYmlhc19vcG5vID0gMzsNCj4gKw0K PiArICBpZiAoaWNvZGUgPT0gQ09ERV9GT1Jfbm90aGluZykNCj4gKyAgICB7 DQo+ICsgICAgICBtYWNoaW5lX21vZGUgbWFza19tb2RlDQo+ICsgPSB0YXJn ZXRtLnZlY3Rvcml6ZS5nZXRfbWFza19tb2RlIChtb2RlKS5yZXF1aXJlICgp Ow0KIA0KV2UgY2FuJ3QgcmVxdWlyZSB0aGlzIHRvIHN1Y2NlZWQsIHNpbmNl IHRoZSBxdWVyeSBpcyBzcGVjdWxhdGl2ZS4NCkkgdGhpbmsgaXQgc2hvdWxk IGluc3RlYWQgYmU6DQogDQogICAgICBtYWNoaW5lX21vZGUgbWFza19tb2Rl DQogICAgICBpZiAoIXRhcmdldG0udmVjdG9yaXplLmdldF9tYXNrX21vZGUg KG1vZGUpLmV4aXN0cyAoJm1hc2tfbW9kZSkpDQogICAgICAgIHJldHVybiBW RUNUX1BBUlRJQUxfQklBU19VTlNVUFBPUlRFRDsNCiANCj4gKyAgICAgIGlm IChpZm4gPT0gSUZOX0xFTl9MT0FEKQ0KPiArIHsNCj4gKyAgIC8qIFRyeSBM RU5fTUFTS19MT0FELiAgKi8NCj4gKyAgIG9wdGFiID0gZGlyZWN0X2ludGVy bmFsX2ZuX29wdGFiIChJRk5fTEVOX01BU0tfTE9BRCk7DQo+ICsgfQ0KPiAr ICAgICAgZWxzZQ0KPiArIHsNCj4gKyAgIC8qIFRyeSBMRU5fTUFTS19TVE9S RS4gICovDQo+ICsgICBvcHRhYiA9IGRpcmVjdF9pbnRlcm5hbF9mbl9vcHRh YiAoSUZOX0xFTl9NQVNLX1NUT1JFKTsNCj4gKyB9DQo+ICsgICAgICBpY29k ZSA9IGNvbnZlcnRfb3B0YWJfaGFuZGxlciAob3B0YWIsIG1vZGUsIG1hc2tf bW9kZSk7DQo+ICsgICAgICBiaWFzX29wbm8gPSA0Ow0KPiArICAgIH0NCj4g IA0KPiAgICBpZiAoaWNvZGUgIT0gQ09ERV9GT1Jfbm90aGluZykNCj4gICAg ICB7DQo+ICAgICAgICAvKiBGb3Igbm93IHdlIG9ubHkgc3VwcG9ydCBiaWFz ZXMgb2YgMCBvciAtMS4gIFRyeSBib3RoIG9mIHRoZW0uICAqLw0KPiAtICAg ICAgaWYgKGluc25fb3BlcmFuZF9tYXRjaGVzIChpY29kZSwgMywgR0VOX0lO VCAoMCkpKQ0KPiArICAgICAgaWYgKGluc25fb3BlcmFuZF9tYXRjaGVzIChp Y29kZSwgYmlhc19vcG5vLCBHRU5fSU5UICgwKSkpDQo+ICByZXR1cm4gMDsN Cj4gLSAgICAgIGlmIChpbnNuX29wZXJhbmRfbWF0Y2hlcyAoaWNvZGUsIDMs IEdFTl9JTlQgKC0xKSkpDQo+ICsgICAgICBpZiAoaW5zbl9vcGVyYW5kX21h dGNoZXMgKGljb2RlLCBiaWFzX29wbm8sIEdFTl9JTlQgKC0xKSkpDQo+ICBy ZXR1cm4gLTE7DQo+ICAgICAgfQ0KPiAgDQo+IGRpZmYgLS1naXQgYS9nY2Mv b3B0YWJzLXRyZWUuY2MgYi9nY2Mvb3B0YWJzLXRyZWUuY2MNCj4gaW5kZXgg NzdiZjc0NWFlNDAuLmFiOTUxNGZjOGUwIDEwMDY0NA0KPiAtLS0gYS9nY2Mv b3B0YWJzLXRyZWUuY2MNCj4gKysrIGIvZ2NjL29wdGFicy10cmVlLmNjDQo+ IEBAIC01NDMsMTkgKzU0Myw0OSBAQCB0YXJnZXRfc3VwcG9ydHNfb3BfcCAo dHJlZSB0eXBlLCBlbnVtIHRyZWVfY29kZSBjb2RlLA0KPiAgICAmJiBvcHRh Yl9oYW5kbGVyIChvdCwgVFlQRV9NT0RFICh0eXBlKSkgIT0gQ09ERV9GT1Jf bm90aGluZyk7DQo+ICB9DQo+ICANCj4gLS8qIFJldHVybiB0cnVlIGlmIHRh cmdldCBzdXBwb3J0cyB2ZWN0b3IgbWFza2VkIGxvYWQvc3RvcmUgZm9yIG1v ZGUuICAqLw0KPiArLyogUmV0dXJuIHRydWUgaWYgdGhlIHRhcmdldCBoYXMg c3VwcG9ydCBmb3IgbWFza2VkIGxvYWQvc3RvcmUuDQo+ICsgICBXZSBjYW4g c3VwcG9ydCBtYXNrZWQgbG9hZC9zdG9yZSBieSBlaXRoZXIgbWFza3tsb2Fk LHN0b3JlfQ0KPiArICAgb3IgbGVuX21hc2t7bG9hZCxzdG9yZX0uDQo+ICsg ICBUaGlzIGhlbHBlciBmdW5jdGlvbiBjaGVja3Mgd2hldGhlciB0YXJnZXQg c3VwcG9ydHMgbWFza2VkDQo+ICsgICBsb2FkL3N0b3JlIGFuZCByZXR1cm4g Y29ycmVzcG9uZGluZyBJRk4gaW4gdGhlIGxhc3QgYXJndW1lbnQNCj4gKyAg IChJRk5fTUFTS197TE9BRCxTVE9SRX0gb3IgSUZOX0xFTl9NQVNLX3tMT0FE LFNUT1JFfSkuICAqLw0KPiArDQo+ICtzdGF0aWMgYm9vbA0KPiArdGFyZ2V0 X3N1cHBvcnRzX21hc2tfbG9hZF9zdG9yZV9wIChtYWNoaW5lX21vZGUgbW9k ZSwgbWFjaGluZV9tb2RlIG1hc2tfbW9kZSwNCj4gKyAgICBib29sIGlzX2xv YWQsIGludGVybmFsX2ZuICppZm4pDQo+ICt7DQo+ICsgIG9wdGFiIG9wID0g aXNfbG9hZCA/IG1hc2tsb2FkX29wdGFiIDogbWFza3N0b3JlX29wdGFiOw0K PiArICBvcHRhYiBsZW5fb3AgPSBpc19sb2FkID8gbGVuX21hc2tsb2FkX29w dGFiIDogbGVuX21hc2tzdG9yZV9vcHRhYjsNCj4gKyAgaWYgKGNvbnZlcnRf b3B0YWJfaGFuZGxlciAob3AsIG1vZGUsIG1hc2tfbW9kZSkgIT0gQ09ERV9G T1Jfbm90aGluZykNCj4gKyAgICB7DQo+ICsgICAgICBpZiAoaWZuKQ0KPiAr ICppZm4gPSBpc19sb2FkID8gSUZOX01BU0tfTE9BRCA6IElGTl9NQVNLX1NU T1JFOw0KPiArICAgICAgcmV0dXJuIHRydWU7DQo+ICsgICAgfQ0KPiArICBl bHNlIGlmIChjb252ZXJ0X29wdGFiX2hhbmRsZXIgKGxlbl9vcCwgbW9kZSwg bWFza19tb2RlKSAhPSBDT0RFX0ZPUl9ub3RoaW5nKQ0KPiArICAgIHsNCj4g KyAgICAgICppZm4gPSBpc19sb2FkID8gSUZOX0xFTl9NQVNLX0xPQUQgOiBJ Rk5fTEVOX01BU0tfU1RPUkU7DQogDQpJIGFncmVlIHdpdGggQmVybmhhcmQn cyBjb21tZW50IGhlcmUuDQogDQo+ICsgICAgICByZXR1cm4gdHJ1ZTsNCj4g KyAgICB9DQo+ICsgIHJldHVybiBmYWxzZTsNCj4gK30NCj4gKw0KPiArLyog UmV0dXJuIHRydWUgaWYgdGFyZ2V0IHN1cHBvcnRzIHZlY3RvciBtYXNrZWQg bG9hZC9zdG9yZSBmb3IgbW9kZS4NCj4gKyAgIEFuIGFkZGl0aW9uYWwgb3V0 cHV0IGluIHRoZSBsYXN0IGFyZ3VtZW5udCB3aGljaCBpcyB0aGUgSUZOIHBv aW50ZXIuDQo+ICsgICBXZSBzZXQgSUZOIGFzIE1BU0tfe0xPQUQsU1RPUkV9 IG9yIExFTl9NQVNLX3tMT0FELFNUT1JFfSBhY2NvcmRpbmcNCj4gKyAgIHdo aWNoIG9wdGFiIGlzIHN1cHBvcnRlZCBpbiB0aGUgdGFyZ2UuICAqLw0KPiAg DQo+ICBib29sDQo+ICBjYW5fdmVjX21hc2tfbG9hZF9zdG9yZV9wIChtYWNo aW5lX21vZGUgbW9kZSwNCj4gICAgIG1hY2hpbmVfbW9kZSBtYXNrX21vZGUs DQo+IC0gICAgYm9vbCBpc19sb2FkKQ0KPiArICAgIGJvb2wgaXNfbG9hZCwN Cj4gKyAgICBpbnRlcm5hbF9mbiAqaWZuKQ0KPiAgew0KPiAtICBvcHRhYiBv cCA9IGlzX2xvYWQgPyBtYXNrbG9hZF9vcHRhYiA6IG1hc2tzdG9yZV9vcHRh YjsNCj4gICAgbWFjaGluZV9tb2RlIHZtb2RlOw0KPiAgDQo+ICAgIC8qIElm IG1vZGUgaXMgdmVjdG9yIG1vZGUsIGNoZWNrIGl0IGRpcmVjdGx5LiAgKi8N Cj4gICAgaWYgKFZFQ1RPUl9NT0RFX1AgKG1vZGUpKQ0KPiAtICAgIHJldHVy biBjb252ZXJ0X29wdGFiX2hhbmRsZXIgKG9wLCBtb2RlLCBtYXNrX21vZGUp ICE9IENPREVfRk9SX25vdGhpbmc7DQo+ICsgICAgcmV0dXJuIHRhcmdldF9z dXBwb3J0c19tYXNrX2xvYWRfc3RvcmVfcCAobW9kZSwgbWFza19tb2RlLCBp c19sb2FkLCBpZm4pOw0KPiAgDQo+ICAgIC8qIE90aGVyd2lzZSwgcmV0dXJu IHRydWUgaWYgdGhlcmUgaXMgc29tZSB2ZWN0b3IgbW9kZSB3aXRoDQo+ICAg ICAgIHRoZSBtYXNrIGxvYWQvc3RvcmUgc3VwcG9ydGVkLiAgKi8NCj4gQEAg LTU2OSw3ICs1OTksNyBAQCBjYW5fdmVjX21hc2tfbG9hZF9zdG9yZV9wICht YWNoaW5lX21vZGUgbW9kZSwNCj4gICAgdm1vZGUgPSB0YXJnZXRtLnZlY3Rv cml6ZS5wcmVmZXJyZWRfc2ltZF9tb2RlIChzbW9kZSk7DQo+ICAgIGlmIChW RUNUT1JfTU9ERV9QICh2bW9kZSkNCj4gICAgICAgICYmIHRhcmdldG0udmVj dG9yaXplLmdldF9tYXNrX21vZGUgKHZtb2RlKS5leGlzdHMgKCZtYXNrX21v ZGUpDQo+IC0gICAgICAmJiBjb252ZXJ0X29wdGFiX2hhbmRsZXIgKG9wLCB2 bW9kZSwgbWFza19tb2RlKSAhPSBDT0RFX0ZPUl9ub3RoaW5nKQ0KPiArICAg ICAgJiYgdGFyZ2V0X3N1cHBvcnRzX21hc2tfbG9hZF9zdG9yZV9wICh2bW9k ZSwgbWFza19tb2RlLCBpc19sb2FkLCBpZm4pKQ0KPiAgICAgIHJldHVybiB0 cnVlOw0KPiAgDQo+ICAgIGF1dG9fdmVjdG9yX21vZGVzIHZlY3Rvcl9tb2Rl czsNCj4gQEAgLTU3NywzMyArNjA3LDY2IEBAIGNhbl92ZWNfbWFza19sb2Fk X3N0b3JlX3AgKG1hY2hpbmVfbW9kZSBtb2RlLA0KPiAgICBmb3IgKG1hY2hp bmVfbW9kZSBiYXNlX21vZGUgOiB2ZWN0b3JfbW9kZXMpDQo+ICAgICAgaWYg KHJlbGF0ZWRfdmVjdG9yX21vZGUgKGJhc2VfbW9kZSwgc21vZGUpLmV4aXN0 cyAoJnZtb2RlKQ0KPiAgJiYgdGFyZ2V0bS52ZWN0b3JpemUuZ2V0X21hc2tf bW9kZSAodm1vZGUpLmV4aXN0cyAoJm1hc2tfbW9kZSkNCj4gLSAmJiBjb252 ZXJ0X29wdGFiX2hhbmRsZXIgKG9wLCB2bW9kZSwgbWFza19tb2RlKSAhPSBD T0RFX0ZPUl9ub3RoaW5nKQ0KPiArICYmIHRhcmdldF9zdXBwb3J0c19tYXNr X2xvYWRfc3RvcmVfcCAodm1vZGUsIG1hc2tfbW9kZSwgaXNfbG9hZCwgaWZu KSkNCj4gICAgICAgIHJldHVybiB0cnVlOw0KPiAgICByZXR1cm4gZmFsc2U7 DQo+ICB9DQo+ICANCj4gKy8qIFJldHVybiB0cnVlIGlmIHRoZSB0YXJnZXQg aGFzIHN1cHBvcnQgZm9yIGxlbiBsb2FkL3N0b3JlLg0KPiArICAgV2UgY2Fu IHN1cHBvcnQgbGVuIGxvYWQvc3RvcmUgYnkgZWl0aGVyIGxlbl97bG9hZCxz dG9yZX0NCj4gKyAgIG9yIGxlbl9tYXNre2xvYWQsc3RvcmV9Lg0KPiArICAg VGhpcyBoZWxwZXIgZnVuY3Rpb24gY2hlY2tzIHdoZXRoZXIgdGFyZ2V0IHN1 cHBvcnRzIGxlbg0KPiArICAgbG9hZC9zdG9yZSBhbmQgcmV0dXJuIGNvcnJl c3BvbmRpbmcgSUZOIGluIHRoZSBsYXN0IGFyZ3VtZW50DQo+ICsgICAoSUZO X0xFTl97TE9BRCxTVE9SRX0gb3IgSUZOX0xFTl9NQVNLX3tMT0FELFNUT1JF fSkuICAqLw0KPiArDQo+ICtzdGF0aWMgYm9vbA0KPiArdGFyZ2V0X3N1cHBv cnRzX2xlbl9sb2FkX3N0b3JlX3AgKG1hY2hpbmVfbW9kZSBtb2RlLCBib29s IGlzX2xvYWQsDQo+ICsgICBpbnRlcm5hbF9mbiAqaWZuKQ0KPiArew0KPiAr ICBvcHRhYiBvcCA9IGlzX2xvYWQgPyBsZW5fbG9hZF9vcHRhYiA6IGxlbl9z dG9yZV9vcHRhYjsNCj4gKyAgb3B0YWIgbWFza2VkX29wID0gaXNfbG9hZCA/ IGxlbl9tYXNrbG9hZF9vcHRhYiA6IGxlbl9tYXNrc3RvcmVfb3B0YWI7DQo+ ICsNCj4gKyAgaWYgKGRpcmVjdF9vcHRhYl9oYW5kbGVyIChvcCwgbW9kZSkp DQo+ICsgICAgew0KPiArICAgICAgaWYgKGlmbikNCj4gKyAqaWZuID0gaXNf bG9hZCA/IElGTl9MRU5fTE9BRCA6IElGTl9MRU5fU1RPUkU7DQo+ICsgICAg ICByZXR1cm4gdHJ1ZTsNCj4gKyAgICB9DQo+ICsgIG1hY2hpbmVfbW9kZSBt YXNrX21vZGU7DQo+ICsgIGlmICh0YXJnZXRtLnZlY3Rvcml6ZS5nZXRfbWFz a19tb2RlIChtb2RlKS5leGlzdHMgKCZtYXNrX21vZGUpDQo+ICsgICAgICAm JiBjb252ZXJ0X29wdGFiX2hhbmRsZXIgKG1hc2tlZF9vcCwgbW9kZSwgbWFz a19tb2RlKSAhPSBDT0RFX0ZPUl9ub3RoaW5nKQ0KPiArICAgIHsNCj4gKyAg ICAgIGlmIChpZm4pDQo+ICsgKmlmbiA9IGlzX2xvYWQgPyBJRk5fTEVOX01B U0tfTE9BRCA6IElGTl9MRU5fTUFTS19TVE9SRTsNCj4gKyAgICAgIHJldHVy biB0cnVlOw0KPiArICAgIH0NCj4gKyAgcmV0dXJuIGZhbHNlOw0KPiArfQ0K PiArDQo+ICAvKiBJZiB0YXJnZXQgc3VwcG9ydHMgdmVjdG9yIGxvYWQvc3Rv cmUgd2l0aCBsZW5ndGggZm9yIHZlY3RvciBtb2RlIE1PREUsDQo+ICAgICBy ZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgdmVjdG9yIG1vZGUsIG90aGVyd2lz ZSByZXR1cm4gb3B0X21hY2hpbmVfbW9kZSAoKS4NCj4gICAgIFRoZXJlIGFy ZSB0d28gZmxhdm9ycyBmb3IgdmVjdG9yIGxvYWQvc3RvcmUgd2l0aCBsZW5n dGgsIG9uZSBpcyB0byBtZWFzdXJlDQo+ICAgICBsZW5ndGggd2l0aCBieXRl cywgdGhlIG90aGVyIGlzIHRvIG1lYXN1cmUgbGVuZ3RoIHdpdGggbGFuZXMu DQo+ICAgICBBcyBsZW5fe2xvYWQsc3RvcmV9IG9wdGFicyBwb2ludCBvdXQs IGZvciB0aGUgZmxhdm9yIHdpdGggYnl0ZXMsIHdlIHVzZQ0KPiAtICAgVm5R SSB0byB3cmFwIHRoZSBvdGhlciBzdXBwb3J0YWJsZSBzYW1lIHNpemUgdmVj dG9yIG1vZGVzLiAgKi8NCj4gKyAgIFZuUUkgdG8gd3JhcCB0aGUgb3RoZXIg c3VwcG9ydGFibGUgc2FtZSBzaXplIHZlY3RvciBtb2Rlcy4NCj4gKyAgIEFu IGFkZGl0aW9uYWwgb3V0cHV0IGluIHRoZSBsYXN0IGFyZ3VtZW5udCB3aGlj aCBpcyB0aGUgSUZOIHBvaW50ZXIuDQo+ICsgICBXZSBzZXQgSUZOIGFzIExF Tl97TE9BRCxTVE9SRX0gb3IgTEVOX01BU0tfe0xPQUQsU1RPUkV9IGFjY29y ZGluZw0KPiArICAgd2hpY2ggb3B0YWIgaXMgc3VwcG9ydGVkIGluIHRoZSB0 YXJnZS4gICovDQo+ICANCj4gIG9wdF9tYWNoaW5lX21vZGUNCj4gLWdldF9s ZW5fbG9hZF9zdG9yZV9tb2RlIChtYWNoaW5lX21vZGUgbW9kZSwgYm9vbCBp c19sb2FkKQ0KPiArZ2V0X2xlbl9sb2FkX3N0b3JlX21vZGUgKG1hY2hpbmVf bW9kZSBtb2RlLCBib29sIGlzX2xvYWQsIGludGVybmFsX2ZuICppZm4pDQo+ ICB7DQo+IC0gIG9wdGFiIG9wID0gaXNfbG9hZCA/IGxlbl9sb2FkX29wdGFi IDogbGVuX3N0b3JlX29wdGFiOw0KPiAgICBnY2NfYXNzZXJ0IChWRUNUT1Jf TU9ERV9QIChtb2RlKSk7DQo+ICANCj4gICAgLyogQ2hlY2sgaWYgbGVuZ3Ro IGluIGxhbmVzIHN1cHBvcnRlZCBmb3IgdGhpcyBtb2RlIGRpcmVjdGx5LiAg Ki8NCj4gLSAgaWYgKGRpcmVjdF9vcHRhYl9oYW5kbGVyIChvcCwgbW9kZSkp DQo+ICsgIGlmICh0YXJnZXRfc3VwcG9ydHNfbGVuX2xvYWRfc3RvcmVfcCAo bW9kZSwgaXNfbG9hZCwgaWZuKSkNCj4gICAgICByZXR1cm4gbW9kZTsNCj4g IA0KPiAgICAvKiBDaGVjayBpZiBsZW5ndGggaW4gYnl0ZXMgc3VwcG9ydGVk IGZvciBzYW1lIHZlY3RvciBzaXplIFZuUUkuICAqLw0KPiAgICBtYWNoaW5l X21vZGUgdm1vZGU7DQo+ICAgIHBvbHlfdWludDY0IG51bml0cyA9IEdFVF9N T0RFX1NJWkUgKG1vZGUpOw0KPiAgICBpZiAocmVsYXRlZF92ZWN0b3JfbW9k ZSAobW9kZSwgUUltb2RlLCBudW5pdHMpLmV4aXN0cyAoJnZtb2RlKQ0KPiAt ICAgICAgJiYgZGlyZWN0X29wdGFiX2hhbmRsZXIgKG9wLCB2bW9kZSkpDQo+ ICsgICAgICAmJiB0YXJnZXRfc3VwcG9ydHNfbGVuX2xvYWRfc3RvcmVfcCAo dm1vZGUsIGlzX2xvYWQsIGlmbikpDQo+ICAgICAgcmV0dXJuIHZtb2RlOw0K PiAgDQo+ICAgIHJldHVybiBvcHRfbWFjaGluZV9tb2RlICgpOw0KPiBkaWZm IC0tZ2l0IGEvZ2NjL29wdGFicy10cmVlLmggYi9nY2Mvb3B0YWJzLXRyZWUu aA0KPiBpbmRleCBhM2Y3OWI2YmQ0My4uZTQyMWZjMjQyODkgMTAwNjQ0DQo+ IC0tLSBhL2djYy9vcHRhYnMtdHJlZS5oDQo+ICsrKyBiL2djYy9vcHRhYnMt dHJlZS5oDQo+IEBAIC00Nyw3ICs0Nyw5IEBAIGJvb2wgZXhwYW5kX3ZlY19j b25kX2V4cHJfcCAodHJlZSwgdHJlZSwgZW51bSB0cmVlX2NvZGUpOw0KPiAg dm9pZCBpbml0X3RyZWVfb3B0aW1pemF0aW9uX29wdGFicyAodHJlZSk7DQo+ ICBib29sIHRhcmdldF9zdXBwb3J0c19vcF9wICh0cmVlLCBlbnVtIHRyZWVf Y29kZSwNCj4gICAgIGVudW0gb3B0YWJfc3VidHlwZSA9IG9wdGFiX2RlZmF1 bHQpOw0KPiAtYm9vbCBjYW5fdmVjX21hc2tfbG9hZF9zdG9yZV9wIChtYWNo aW5lX21vZGUsIG1hY2hpbmVfbW9kZSwgYm9vbCk7DQo+IC1vcHRfbWFjaGlu ZV9tb2RlIGdldF9sZW5fbG9hZF9zdG9yZV9tb2RlIChtYWNoaW5lX21vZGUs IGJvb2wpOw0KPiArYm9vbCBjYW5fdmVjX21hc2tfbG9hZF9zdG9yZV9wICht YWNoaW5lX21vZGUsIG1hY2hpbmVfbW9kZSwgYm9vbCwNCj4gKyBpbnRlcm5h bF9mbiAqID0gbnVsbHB0cik7DQo+ICtvcHRfbWFjaGluZV9tb2RlIGdldF9s ZW5fbG9hZF9zdG9yZV9tb2RlIChtYWNoaW5lX21vZGUsIGJvb2wsDQo+ICsg ICBpbnRlcm5hbF9mbiAqID0gbnVsbHB0cik7DQo+ICANCj4gICNlbmRpZg0K PiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYyBiL2djYy90 cmVlLXZlY3Qtc3RtdHMuY2MNCj4gaW5kZXggMDU2YTBlY2IyYmUuLmQ1M2M0 ZTRmMmU1IDEwMDY0NA0KPiAtLS0gYS9nY2MvdHJlZS12ZWN0LXN0bXRzLmNj DQo+ICsrKyBiL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MNCj4gQEAgLTE4MTks MTYgKzE4MTksOCBAQCBjaGVja19sb2FkX3N0b3JlX2Zvcl9wYXJ0aWFsX3Zl Y3RvcnMgKGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywgdHJlZSB2ZWN0eXBl LA0KPiAgICBwb2x5X3VpbnQ2NCBudW5pdHMgPSBUWVBFX1ZFQ1RPUl9TVUJQ QVJUUyAodmVjdHlwZSk7DQo+ICAgIHBvbHlfdWludDY0IHZmID0gTE9PUF9W SU5GT19WRUNUX0ZBQ1RPUiAobG9vcF92aW5mbyk7DQo+ICAgIG1hY2hpbmVf bW9kZSBtYXNrX21vZGU7DQo+IC0gIGJvb2wgdXNpbmdfcGFydGlhbF92ZWN0 b3JzX3AgPSBmYWxzZTsNCj4gLSAgaWYgKHRhcmdldG0udmVjdG9yaXplLmdl dF9tYXNrX21vZGUgKHZlY21vZGUpLmV4aXN0cyAoJm1hc2tfbW9kZSkNCj4g LSAgICAgICYmIGNhbl92ZWNfbWFza19sb2FkX3N0b3JlX3AgKHZlY21vZGUs IG1hc2tfbW9kZSwgaXNfbG9hZCkpDQo+IC0gICAgew0KPiAtICAgICAgbnZl Y3RvcnMgPSBncm91cF9tZW1vcnlfbnZlY3RvcnMgKGdyb3VwX3NpemUgKiB2 ZiwgbnVuaXRzKTsNCj4gLSAgICAgIHZlY3RfcmVjb3JkX2xvb3BfbWFzayAo bG9vcF92aW5mbywgbWFza3MsIG52ZWN0b3JzLCB2ZWN0eXBlLCBzY2FsYXJf bWFzayk7DQo+IC0gICAgICB1c2luZ19wYXJ0aWFsX3ZlY3RvcnNfcCA9IHRy dWU7DQo+IC0gICAgfQ0KPiAtDQo+ICAgIG1hY2hpbmVfbW9kZSB2bW9kZTsN Cj4gKyAgYm9vbCB1c2luZ19wYXJ0aWFsX3ZlY3RvcnNfcCA9IGZhbHNlOw0K PiAgICBpZiAoZ2V0X2xlbl9sb2FkX3N0b3JlX21vZGUgKHZlY21vZGUsIGlz X2xvYWQpLmV4aXN0cyAoJnZtb2RlKSkNCj4gICAgICB7DQo+ICAgICAgICBu dmVjdG9ycyA9IGdyb3VwX21lbW9yeV9udmVjdG9ycyAoZ3JvdXBfc2l6ZSAq IHZmLCBudW5pdHMpOw0KPiBAQCAtMTgzNyw2ICsxODI5LDEzIEBAIGNoZWNr X2xvYWRfc3RvcmVfZm9yX3BhcnRpYWxfdmVjdG9ycyAobG9vcF92ZWNfaW5m byBsb29wX3ZpbmZvLCB0cmVlIHZlY3R5cGUsDQo+ICAgICAgICB2ZWN0X3Jl Y29yZF9sb29wX2xlbiAobG9vcF92aW5mbywgbGVucywgbnZlY3RvcnMsIHZl Y3R5cGUsIGZhY3Rvcik7DQo+ICAgICAgICB1c2luZ19wYXJ0aWFsX3ZlY3Rv cnNfcCA9IHRydWU7DQo+ICAgICAgfQ0KPiArICBlbHNlIGlmICh0YXJnZXRt LnZlY3Rvcml6ZS5nZXRfbWFza19tb2RlICh2ZWNtb2RlKS5leGlzdHMgKCZt YXNrX21vZGUpDQo+ICsgICAgJiYgY2FuX3ZlY19tYXNrX2xvYWRfc3RvcmVf cCAodmVjbW9kZSwgbWFza19tb2RlLCBpc19sb2FkKSkNCj4gKyAgICB7DQo+ ICsgICAgICBudmVjdG9ycyA9IGdyb3VwX21lbW9yeV9udmVjdG9ycyAoZ3Jv dXBfc2l6ZSAqIHZmLCBudW5pdHMpOw0KPiArICAgICAgdmVjdF9yZWNvcmRf bG9vcF9tYXNrIChsb29wX3ZpbmZvLCBtYXNrcywgbnZlY3RvcnMsIHZlY3R5 cGUsIHNjYWxhcl9tYXNrKTsNCj4gKyAgICAgIHVzaW5nX3BhcnRpYWxfdmVj dG9yc19wID0gdHJ1ZTsNCj4gKyAgICB9DQo+ICANCj4gICAgaWYgKCF1c2lu Z19wYXJ0aWFsX3ZlY3RvcnNfcCkNCj4gICAgICB7DQo+IEBAIC0zMTc1LDYg KzMxNzQsMTcgQEAgdmVjdF9nZXRfbG9vcF92YXJpYW50X2RhdGFfcHRyX2lu Y3JlbWVudCAoDQo+ICAgIHJldHVybiBidW1wOw0KPiAgfQ0KPiAgDQo+ICsv KiBHZXQgYWxsLW9uZXMgdmVjdG9yIG1hc2sgZm9yIGNvcnJlc3BvbmRpbmcg dmVjdHlwZS4gICovDQo+ICsNCj4gK3N0YXRpYyB0cmVlDQo+ICtnZXRfYWxs X29uZXNfbWFzayAobWFjaGluZV9tb2RlIHZtb2RlKQ0KPiArew0KPiArICBt YWNoaW5lX21vZGUgbWFza21vZGUgPSB0YXJnZXRtLnZlY3Rvcml6ZS5nZXRf bWFza19tb2RlICh2bW9kZSkucmVxdWlyZSAoKTsNCj4gKyAgcG9seV91aW50 NjQgbnVuaXRzID0gR0VUX01PREVfTlVOSVRTIChtYXNrbW9kZSk7DQo+ICsg IHRyZWUgbWFza3R5cGUgPSBidWlsZF90cnV0aF92ZWN0b3JfdHlwZV9mb3Jf bW9kZSAobnVuaXRzLCBtYXNrbW9kZSk7DQo+ICsgIHJldHVybiBjb25zdGFu dF9ib29sZWFuX25vZGUgKHRydWUsIG1hc2t0eXBlKTsNCj4gK30NCj4gKw0K IA0KSSB0aGluayB0aGlzIGlzIGdvaW5nIGFnYWluc3QgYSBwcmV2aW91cyBj b21tZW50LCBzb3JyeSwgYnV0IEZXSVc6DQp0aGUgV0hJTEVfVUxUIGNvZGUg dXNlcyBidWlsZF9taW51c19vbmVfY3N0ICh0eXBlKSBmb3IgdGhpcy4NCiAN CldoeSBkbyB3ZSBwYXNzIHRoZSBtb2RlIHJhdGhlciB0aGFuIHRoZSB0eXBl IHRvIGdldF9hbGxfb25lc19tYXNrPw0KSXQgbG9va3MgbGlrZSB0aGUgbW9k ZSBjb21lcyBkaXJlY3RseSBmcm9tIHZlY3R5cGUuDQogDQpJZiB3ZSBkaWQg cGFzcyB0aGUgdmVjdHlwZSwgSSB0aGluayB0aGlzIGNvdWxkIGJlOg0KIA0K ICByZXR1cm4gYnVpbGRfbWludXNfb25lX2NzdCAoYnVpbGRfdHJ1dGhfdmVj dG9yX3R5cGVfZm9yICh2ZWN0eXBlKSk7DQogDQo+ICAvKiBSZXR1cm4gdGhl IGFtb3VudCB0aGF0IHNob3VsZCBiZSBhZGRlZCB0byBhIHZlY3RvciBwb2lu dGVyIHRvIG1vdmUNCj4gICAgIHRvIHRoZSBuZXh0IG9yIHByZXZpb3VzIGNv cHkgb2YgQUdHUl9UWVBFLiAgRFJfSU5GTyBpcyB0aGUgZGF0YSByZWZlcmVu Y2UNCj4gICAgIGJlaW5nIHZlY3Rvcml6ZWQgYW5kIE1FTU9SWV9BQ0NFU1Nf VFlQRSBkZXNjcmliZXMgdGhlIHR5cGUgb2YNCj4gQEAgLTg5NDQsMzAgKzg5 NTQsNTggQEAgdmVjdG9yaXphYmxlX3N0b3JlICh2ZWNfaW5mbyAqdmluZm8s DQo+ICAgIHZlY19vcHJuZCA9IG5ld190ZW1wOw0KPiAgfQ0KPiAgDQo+IC0g ICAgICAgLyogQXJndW1lbnRzIGFyZSByZWFkeS4gIENyZWF0ZSB0aGUgbmV3 IHZlY3RvciBzdG10LiAgKi8NCj4gLSAgICAgICBpZiAoZmluYWxfbWFzaykN Cj4gLSB7DQo+IC0gICB0cmVlIHB0ciA9IGJ1aWxkX2ludF9jc3QgKHJlZl90 eXBlLCBhbGlnbiAqIEJJVFNfUEVSX1VOSVQpOw0KPiAtICAgZ2NhbGwgKmNh bGwNCj4gLSAgICAgPSBnaW1wbGVfYnVpbGRfY2FsbF9pbnRlcm5hbCAoSUZO X01BU0tfU1RPUkUsIDQsDQo+IC0gICBkYXRhcmVmX3B0ciwgcHRyLA0KPiAt ICAgZmluYWxfbWFzaywgdmVjX29wcm5kKTsNCj4gLSAgIGdpbXBsZV9jYWxs X3NldF9ub3Rocm93IChjYWxsLCB0cnVlKTsNCj4gLSAgIHZlY3RfZmluaXNo X3N0bXRfZ2VuZXJhdGlvbiAodmluZm8sIHN0bXRfaW5mbywgY2FsbCwgZ3Np KTsNCj4gLSAgIG5ld19zdG10ID0gY2FsbDsNCj4gLSB9DQo+IC0gICAgICAg ZWxzZSBpZiAobG9vcF9sZW5zKQ0KPiArICAgICAgIC8qIENvbXB1dGUgSUZO IHdoZW4gTE9PUF9MRU5TIG9yIGZpbmFsX21hc2sgdmFsaWQuICAqLw0KPiAr ICAgICAgIG1hY2hpbmVfbW9kZSB2bW9kZSA9IFRZUEVfTU9ERSAodmVjdHlw ZSk7DQo+ICsgICAgICAgbWFjaGluZV9tb2RlIG5ld192bW9kZSA9IHZtb2Rl Ow0KPiArICAgICAgIGludGVybmFsX2ZuIHBhcnRpYWxfaWZuID0gSUZOX0xB U1Q7DQo+ICsgICAgICAgLyogUHJvZHVjZSAnbGVuJyBhbmQgJ2JpYXMnIGFy Z3VtZW50LiAgKi8NCj4gKyAgICAgICB0cmVlIGZpbmFsX2xlbiA9IE5VTExf VFJFRTsNCj4gKyAgICAgICB0cmVlIGJpYXMgPSBOVUxMX1RSRUU7DQo+ICsg ICAgICAgaWYgKGxvb3BfbGVucykNCj4gIHsNCj4gLSAgIG1hY2hpbmVfbW9k ZSB2bW9kZSA9IFRZUEVfTU9ERSAodmVjdHlwZSk7DQo+ICAgIG9wdF9tYWNo aW5lX21vZGUgbmV3X292bW9kZQ0KPiAgICAgID0gZ2V0X2xlbl9sb2FkX3N0 b3JlX21vZGUgKHZtb2RlLCBmYWxzZSk7DQo+IC0gICBtYWNoaW5lX21vZGUg bmV3X3Ztb2RlID0gbmV3X292bW9kZS5yZXF1aXJlICgpOw0KPiArICAgbmV3 X3Ztb2RlID0gbmV3X292bW9kZS5yZXF1aXJlICgpOw0KPiAgICB1bnNpZ25l ZCBmYWN0b3INCj4gICAgICA9IChuZXdfb3Ztb2RlID09IHZtb2RlKSA/IDEg OiBHRVRfTU9ERV9VTklUX1NJWkUgKHZtb2RlKTsNCj4gLSAgIHRyZWUgZmlu YWxfbGVuDQo+IC0gICAgID0gdmVjdF9nZXRfbG9vcF9sZW4gKGxvb3Bfdmlu Zm8sIGdzaSwgbG9vcF9sZW5zLA0KPiAtIHZlY19udW0gKiBuY29waWVzLCB2 ZWN0eXBlLA0KPiAtIHZlY19udW0gKiBqICsgaSwgZmFjdG9yKTsNCj4gKyAg IGZpbmFsX2xlbiA9IHZlY3RfZ2V0X2xvb3BfbGVuIChsb29wX3ZpbmZvLCBn c2ksIGxvb3BfbGVucywNCj4gKyB2ZWNfbnVtICogbmNvcGllcywgdmVjdHlw ZSwNCj4gKyB2ZWNfbnVtICogaiArIGksIGZhY3Rvcik7DQo+ICsgfQ0KPiAr ICAgICAgIGVsc2UgaWYgKGZpbmFsX21hc2spDQo+ICsgY2FuX3ZlY19tYXNr X2xvYWRfc3RvcmVfcCAodm1vZGUsIFRZUEVfTU9ERSAobWFza192ZWN0eXBl KSwNCj4gKyAgICBmYWxzZSwgJnBhcnRpYWxfaWZuKTsNCiANCkkgdGhpbmsg dGhpcyBzaG91bGQgdGVzdCB0aGUgcmVzdWx0IGFuZCBkbyBnY2NfdW5yZWFj aGFibGUgKCkgaWYgaXQncyBmYWxzZS4NCiANCj4gKw0KPiArICAgICAgIGlm IChwYXJ0aWFsX2lmbiA9PSBJRk5fTEVOX01BU0tfU1RPUkUpDQo+ICsgew0K PiArICAgaWYgKCFmaW5hbF9sZW4pDQo+ICsgICAgIHsNCj4gKyAgICAgICAv KiBQYXNzIFZGIHZhbHVlIHRvICdsZW4nIGFyZ3VtZW50IG9mDQo+ICsgICAg ICAgICogTEVOX01BU0tfU1RPUkUgaWYgTE9PUF9MRU5TIGlzIGludmFsaWQu ICAqLw0KPiArICAgICAgIHRyZWUgaXZfdHlwZSA9IExPT1BfVklORk9fUkdS T1VQX0lWX1RZUEUgKGxvb3BfdmluZm8pOw0KPiArICAgICAgIGZpbmFsX2xl bg0KPiArID0gYnVpbGRfaW50X2NzdCAoaXZfdHlwZSwNCj4gKyBUWVBFX1ZF Q1RPUl9TVUJQQVJUUyAodmVjdHlwZSkpOw0KPiArICAgICB9DQo+ICsgICBp ZiAoIWZpbmFsX21hc2spDQo+ICsgICAgIHsNCj4gKyAgICAgICAvKiBQYXNz IGFsbCBvbmVzIHZhbHVlIHRvICdtYXNrJyBhcmd1bWVudCBvZg0KPiArICAg ICAgICAqIExFTl9NQVNLX1NUT1JFIGlmIGZpbmFsX21hc2sgaXMgaW52YWxp ZC4gICovDQogDQpOaXQ6IHNob3VsZCBiZSBubyBsZWFkaW5nIOKAnCrigJ0g b24gdGhpcyBsaW5lLiAgU2FtZSBmb3IgdGhlIGxhdGVyIGNvcHkuDQogDQpU aGFua3MsDQpSaWNoYXJkDQogDQo+ICsgICAgICAgZmluYWxfbWFzayA9IGdl dF9hbGxfb25lc19tYXNrICh2bW9kZSk7DQo+ICsgICAgIH0NCj4gKyB9DQo+ ICsgICAgICAgaWYgKGZpbmFsX2xlbikNCj4gKyB7DQo+ICsgICBzaWduZWQg Y2hhciBiaWFzdmFsDQo+ICsgICAgID0gTE9PUF9WSU5GT19QQVJUSUFMX0xP QURfU1RPUkVfQklBUyAobG9vcF92aW5mbyk7DQo+ICsNCj4gKyAgIGJpYXMg PSBidWlsZF9pbnRfY3N0IChpbnRRSV90eXBlX25vZGUsIGJpYXN2YWwpOw0K PiArIH0NCj4gKw0KPiArICAgICAgIC8qIEFyZ3VtZW50cyBhcmUgcmVhZHku ICBDcmVhdGUgdGhlIG5ldyB2ZWN0b3Igc3RtdC4gICovDQo+ICsgICAgICAg aWYgKGZpbmFsX2xlbikNCj4gKyB7DQo+ICsgICBnY2FsbCAqY2FsbDsNCj4g ICAgdHJlZSBwdHIgPSBidWlsZF9pbnRfY3N0IChyZWZfdHlwZSwgYWxpZ24g KiBCSVRTX1BFUl9VTklUKTsNCj4gICAgLyogTmVlZCBjb252ZXJzaW9uIGlm IGl0J3Mgd3JhcHBlZCB3aXRoIFZuUUkuICAqLw0KPiAgICBpZiAodm1vZGUg IT0gbmV3X3Ztb2RlKQ0KPiBAQCAtODk4NywxNCArOTAyNSwyNyBAQCB2ZWN0 b3JpemFibGVfc3RvcmUgKHZlY19pbmZvICp2aW5mbywNCj4gICAgICAgIHZl Y19vcHJuZCA9IHZhcjsNCj4gICAgICB9DQo+ICANCj4gLSAgIHNpZ25lZCBj aGFyIGJpYXN2YWwgPQ0KPiAtICAgICBMT09QX1ZJTkZPX1BBUlRJQUxfTE9B RF9TVE9SRV9CSUFTIChsb29wX3ZpbmZvKTsNCj4gLQ0KPiAtICAgdHJlZSBi aWFzID0gYnVpbGRfaW50X2NzdCAoaW50UUlfdHlwZV9ub2RlLCBiaWFzdmFs KTsNCj4gKyAgIGlmIChwYXJ0aWFsX2lmbiA9PSBJRk5fTEVOX01BU0tfU1RP UkUpDQo+ICsgICAgIGNhbGwgPSBnaW1wbGVfYnVpbGRfY2FsbF9pbnRlcm5h bCAoSUZOX0xFTl9NQVNLX1NUT1JFLCA2LA0KPiArICAgICAgICBkYXRhcmVm X3B0ciwgcHRyLA0KPiArICAgICAgICBmaW5hbF9sZW4sIGZpbmFsX21hc2ss DQo+ICsgICAgICAgIHZlY19vcHJuZCwgYmlhcyk7DQo+ICsgICBlbHNlDQo+ ICsgICAgIGNhbGwNCj4gKyAgICAgICA9IGdpbXBsZV9idWlsZF9jYWxsX2lu dGVybmFsIChJRk5fTEVOX1NUT1JFLCA1LA0KPiArICAgICBkYXRhcmVmX3B0 ciwgcHRyLCBmaW5hbF9sZW4sDQo+ICsgICAgIHZlY19vcHJuZCwgYmlhcyk7 DQo+ICsgICBnaW1wbGVfY2FsbF9zZXRfbm90aHJvdyAoY2FsbCwgdHJ1ZSk7 DQo+ICsgICB2ZWN0X2ZpbmlzaF9zdG10X2dlbmVyYXRpb24gKHZpbmZvLCBz dG10X2luZm8sIGNhbGwsIGdzaSk7DQo+ICsgICBuZXdfc3RtdCA9IGNhbGw7 DQo+ICsgfQ0KPiArICAgICAgIGVsc2UgaWYgKGZpbmFsX21hc2spDQo+ICsg ew0KPiArICAgdHJlZSBwdHIgPSBidWlsZF9pbnRfY3N0IChyZWZfdHlwZSwg YWxpZ24gKiBCSVRTX1BFUl9VTklUKTsNCj4gICAgZ2NhbGwgKmNhbGwNCj4g LSAgICAgPSBnaW1wbGVfYnVpbGRfY2FsbF9pbnRlcm5hbCAoSUZOX0xFTl9T VE9SRSwgNSwgZGF0YXJlZl9wdHIsDQo+IC0gICBwdHIsIGZpbmFsX2xlbiwg dmVjX29wcm5kLA0KPiAtICAgYmlhcyk7DQo+ICsgICAgID0gZ2ltcGxlX2J1 aWxkX2NhbGxfaW50ZXJuYWwgKElGTl9NQVNLX1NUT1JFLCA0LA0KPiArICAg ZGF0YXJlZl9wdHIsIHB0ciwNCj4gKyAgIGZpbmFsX21hc2ssIHZlY19vcHJu ZCk7DQo+ICAgIGdpbXBsZV9jYWxsX3NldF9ub3Rocm93IChjYWxsLCB0cnVl KTsNCj4gICAgdmVjdF9maW5pc2hfc3RtdF9nZW5lcmF0aW9uICh2aW5mbywg c3RtdF9pbmZvLCBjYWxsLCBnc2kpOw0KPiAgICBuZXdfc3RtdCA9IGNhbGw7 DQo+IEBAIC0xMDMwNCw0NSArMTAzNTUsNzIgQEAgdmVjdG9yaXphYmxlX2xv YWQgKHZlY19pbmZvICp2aW5mbywNCj4gICAgICAgIGFsaWduLCBtaXNhbGln bik7DQo+ICAgICAgYWxpZ24gPSBsZWFzdF9iaXRfaHdpIChtaXNhbGlnbiB8 IGFsaWduKTsNCj4gIA0KPiAtICAgICBpZiAoZmluYWxfbWFzaykNCj4gLSAg ICAgICB7DQo+IC0gdHJlZSBwdHIgPSBidWlsZF9pbnRfY3N0IChyZWZfdHlw ZSwNCj4gLSAgIGFsaWduICogQklUU19QRVJfVU5JVCk7DQo+IC0gZ2NhbGwg KmNhbGwNCj4gLSAgID0gZ2ltcGxlX2J1aWxkX2NhbGxfaW50ZXJuYWwgKElG Tl9NQVNLX0xPQUQsIDMsDQo+IC0gZGF0YXJlZl9wdHIsIHB0ciwNCj4gLSBm aW5hbF9tYXNrKTsNCj4gLSBnaW1wbGVfY2FsbF9zZXRfbm90aHJvdyAoY2Fs bCwgdHJ1ZSk7DQo+IC0gbmV3X3N0bXQgPSBjYWxsOw0KPiAtIGRhdGFfcmVm ID0gTlVMTF9UUkVFOw0KPiAtICAgICAgIH0NCj4gLSAgICAgZWxzZSBpZiAo bG9vcF9sZW5zICYmIG1lbW9yeV9hY2Nlc3NfdHlwZSAhPSBWTUFUX0lOVkFS SUFOVCkNCj4gKyAgICAgLyogQ29tcHV0ZSBJRk4gd2hlbiBMT09QX0xFTlMg b3IgZmluYWxfbWFzayB2YWxpZC4gICovDQo+ICsgICAgIG1hY2hpbmVfbW9k ZSB2bW9kZSA9IFRZUEVfTU9ERSAodmVjdHlwZSk7DQo+ICsgICAgIG1hY2hp bmVfbW9kZSBuZXdfdm1vZGUgPSB2bW9kZTsNCj4gKyAgICAgaW50ZXJuYWxf Zm4gcGFydGlhbF9pZm4gPSBJRk5fTEFTVDsNCj4gKyAgICAgLyogUHJvZHVj ZSAnbGVuJyBhbmQgJ2JpYXMnIGFyZ3VtZW50LiAgKi8NCj4gKyAgICAgdHJl ZSBmaW5hbF9sZW4gPSBOVUxMX1RSRUU7DQo+ICsgICAgIHRyZWUgYmlhcyA9 IE5VTExfVFJFRTsNCj4gKyAgICAgaWYgKGxvb3BfbGVucykNCj4gICAgICAg IHsNCj4gLSBtYWNoaW5lX21vZGUgdm1vZGUgPSBUWVBFX01PREUgKHZlY3R5 cGUpOw0KPiAgb3B0X21hY2hpbmVfbW9kZSBuZXdfb3Ztb2RlDQo+IC0gICA9 IGdldF9sZW5fbG9hZF9zdG9yZV9tb2RlICh2bW9kZSwgdHJ1ZSk7DQo+IC0g bWFjaGluZV9tb2RlIG5ld192bW9kZSA9IG5ld19vdm1vZGUucmVxdWlyZSAo KTsNCj4gKyAgID0gZ2V0X2xlbl9sb2FkX3N0b3JlX21vZGUgKHZtb2RlLCBm YWxzZSk7DQo+ICsgbmV3X3Ztb2RlID0gbmV3X292bW9kZS5yZXF1aXJlICgp Ow0KPiAgdW5zaWduZWQgZmFjdG9yID0gKG5ld19vdm1vZGUgPT0gdm1vZGUp DQo+ICAgICAgPyAxDQo+ICAgICAgOiBHRVRfTU9ERV9VTklUX1NJWkUgKHZt b2RlKTsNCj4gLSB0cmVlIGZpbmFsX2xlbg0KPiArIGZpbmFsX2xlbg0KPiAg ICA9IHZlY3RfZ2V0X2xvb3BfbGVuIChsb29wX3ZpbmZvLCBnc2ksIGxvb3Bf bGVucywNCj4gICAgICAgICB2ZWNfbnVtICogbmNvcGllcywgdmVjdHlwZSwN Cj4gICAgICAgICB2ZWNfbnVtICogaiArIGksIGZhY3Rvcik7DQo+IC0gdHJl ZSBwdHINCj4gLSAgID0gYnVpbGRfaW50X2NzdCAocmVmX3R5cGUsIGFsaWdu ICogQklUU19QRVJfVU5JVCk7DQo+IC0NCj4gLSB0cmVlIHFpX3R5cGUgPSB1 bnNpZ25lZF9pbnRRSV90eXBlX25vZGU7DQo+ICsgICAgICAgfQ0KPiArICAg ICBlbHNlIGlmIChmaW5hbF9tYXNrKQ0KPiArICAgICAgIGNhbl92ZWNfbWFz a19sb2FkX3N0b3JlX3AgKHZtb2RlLA0KPiArIFRZUEVfTU9ERSAobWFza192 ZWN0eXBlKSwNCj4gKyBmYWxzZSwgJnBhcnRpYWxfaWZuKTsNCj4gIA0KPiAt IHNpZ25lZCBjaGFyIGJpYXN2YWwgPQ0KPiAtICAgTE9PUF9WSU5GT19QQVJU SUFMX0xPQURfU1RPUkVfQklBUyAobG9vcF92aW5mbyk7DQo+ICsgICAgIGlm IChwYXJ0aWFsX2lmbiA9PSBJRk5fTEVOX01BU0tfTE9BRCkNCj4gKyAgICAg ICB7DQo+ICsgaWYgKCFmaW5hbF9sZW4pDQo+ICsgICB7DQo+ICsgICAgIC8q IFBhc3MgVkYgdmFsdWUgdG8gJ2xlbicgYXJndW1lbnQgb2YNCj4gKyAgICAg ICogTEVOX01BU0tfTE9BRCBpZiBMT09QX0xFTlMgaXMgaW52YWxpZC4gICov DQo+ICsgICAgIHRyZWUgaXZfdHlwZQ0KPiArICAgICAgID0gTE9PUF9WSU5G T19SR1JPVVBfSVZfVFlQRSAobG9vcF92aW5mbyk7DQo+ICsgICAgIGZpbmFs X2xlbg0KPiArICAgICAgID0gYnVpbGRfaW50X2NzdCAoaXZfdHlwZSwNCj4g KyAgICAgICAgVFlQRV9WRUNUT1JfU1VCUEFSVFMgKHZlY3R5cGUpKTsNCj4g KyAgIH0NCj4gKyBpZiAoIWZpbmFsX21hc2spDQo+ICsgICB7DQo+ICsgICAg IC8qIFBhc3MgYWxsIG9uZXMgdmFsdWUgdG8gJ21hc2snIGFyZ3VtZW50IG9m DQo+ICsgICAgICAqIExFTl9NQVNLX0xPQUQgaWYgZmluYWxfbWFzayBpcyBp bnZhbGlkLiAgKi8NCj4gKyAgICAgZmluYWxfbWFzayA9IGdldF9hbGxfb25l c19tYXNrICh2bW9kZSk7DQo+ICsgICB9DQo+ICsgICAgICAgfQ0KPiArICAg ICBpZiAoZmluYWxfbGVuKQ0KPiArICAgICAgIHsNCj4gKyBzaWduZWQgY2hh ciBiaWFzdmFsDQo+ICsgICA9IExPT1BfVklORk9fUEFSVElBTF9MT0FEX1NU T1JFX0JJQVMgKGxvb3BfdmluZm8pOw0KPiAgDQo+IC0gdHJlZSBiaWFzID0g YnVpbGRfaW50X2NzdCAoaW50UUlfdHlwZV9ub2RlLCBiaWFzdmFsKTsNCj4g KyBiaWFzID0gYnVpbGRfaW50X2NzdCAoaW50UUlfdHlwZV9ub2RlLCBiaWFz dmFsKTsNCj4gKyAgICAgICB9DQo+ICANCj4gLSBnY2FsbCAqY2FsbA0KPiAt ICAgPSBnaW1wbGVfYnVpbGRfY2FsbF9pbnRlcm5hbCAoSUZOX0xFTl9MT0FE LCA0LA0KPiAtIGRhdGFyZWZfcHRyLCBwdHIsDQo+IC0gZmluYWxfbGVuLCBi aWFzKTsNCj4gKyAgICAgaWYgKGZpbmFsX2xlbiAmJiBtZW1vcnlfYWNjZXNz X3R5cGUgIT0gVk1BVF9JTlZBUklBTlQpDQo+ICsgICAgICAgew0KPiArIHRy ZWUgcHRyDQo+ICsgICA9IGJ1aWxkX2ludF9jc3QgKHJlZl90eXBlLCBhbGln biAqIEJJVFNfUEVSX1VOSVQpOw0KPiArIGdjYWxsICpjYWxsOw0KPiArIGlm IChwYXJ0aWFsX2lmbiA9PSBJRk5fTEVOX01BU0tfTE9BRCkNCj4gKyAgIGNh bGwgPSBnaW1wbGVfYnVpbGRfY2FsbF9pbnRlcm5hbCAoSUZOX0xFTl9NQVNL X0xPQUQsDQo+ICsgICAgICA1LCBkYXRhcmVmX3B0ciwNCj4gKyAgICAgIHB0 ciwgZmluYWxfbGVuLA0KPiArICAgICAgZmluYWxfbWFzaywgYmlhcyk7DQo+ ICsgZWxzZQ0KPiArICAgY2FsbCA9IGdpbXBsZV9idWlsZF9jYWxsX2ludGVy bmFsIChJRk5fTEVOX0xPQUQsIDQsDQo+ICsgICAgICBkYXRhcmVmX3B0ciwg cHRyLA0KPiArICAgICAgZmluYWxfbGVuLCBiaWFzKTsNCj4gIGdpbXBsZV9j YWxsX3NldF9ub3Rocm93IChjYWxsLCB0cnVlKTsNCj4gIG5ld19zdG10ID0g Y2FsbDsNCj4gIGRhdGFfcmVmID0gTlVMTF9UUkVFOw0KPiBAQCAtMTAzNTAs OCArMTA0MjgsOCBAQCB2ZWN0b3JpemFibGVfbG9hZCAodmVjX2luZm8gKnZp bmZvLA0KPiAgLyogTmVlZCBjb252ZXJzaW9uIGlmIGl0J3Mgd3JhcHBlZCB3 aXRoIFZuUUkuICAqLw0KPiAgaWYgKHZtb2RlICE9IG5ld192bW9kZSkNCj4g ICAgew0KPiAtICAgICB0cmVlIG5ld192dHlwZQ0KPiAtICAgICAgID0gYnVp bGRfdmVjdG9yX3R5cGVfZm9yX21vZGUgKHFpX3R5cGUsIG5ld192bW9kZSk7 DQo+ICsgICAgIHRyZWUgbmV3X3Z0eXBlID0gYnVpbGRfdmVjdG9yX3R5cGVf Zm9yX21vZGUgKA0KPiArICAgICAgIHVuc2lnbmVkX2ludFFJX3R5cGVfbm9k ZSwgbmV3X3Ztb2RlKTsNCj4gICAgICB0cmVlIHZhciA9IHZlY3RfZ2V0X25l d19zc2FfbmFtZSAobmV3X3Z0eXBlLA0KPiAgICAgICAgdmVjdF9zaW1wbGVf dmFyKTsNCj4gICAgICBnaW1wbGVfc2V0X2xocyAoY2FsbCwgdmFyKTsNCj4g QEAgLTEwMzYzLDYgKzEwNDQxLDE4IEBAIHZlY3Rvcml6YWJsZV9sb2FkICh2 ZWNfaW5mbyAqdmluZm8sDQo+ICAgICAgIFZJRVdfQ09OVkVSVF9FWFBSLCBv cCk7DQo+ICAgIH0NCj4gICAgICAgIH0NCj4gKyAgICAgZWxzZSBpZiAoZmlu YWxfbWFzaykNCj4gKyAgICAgICB7DQo+ICsgdHJlZSBwdHIgPSBidWlsZF9p bnRfY3N0IChyZWZfdHlwZSwNCj4gKyAgIGFsaWduICogQklUU19QRVJfVU5J VCk7DQo+ICsgZ2NhbGwgKmNhbGwNCj4gKyAgID0gZ2ltcGxlX2J1aWxkX2Nh bGxfaW50ZXJuYWwgKElGTl9NQVNLX0xPQUQsIDMsDQo+ICsgZGF0YXJlZl9w dHIsIHB0ciwNCj4gKyBmaW5hbF9tYXNrKTsNCj4gKyBnaW1wbGVfY2FsbF9z ZXRfbm90aHJvdyAoY2FsbCwgdHJ1ZSk7DQo+ICsgbmV3X3N0bXQgPSBjYWxs Ow0KPiArIGRhdGFfcmVmID0gTlVMTF9UUkVFOw0KPiArICAgICAgIH0NCj4g ICAgICBlbHNlDQo+ICAgICAgICB7DQo+ICB0cmVlIGx0eXBlID0gdmVjdHlw ZTsNCiANCg== ------=_001_NextPart578177681478_=------