From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbguseast2.qq.com (smtpbguseast2.qq.com [54.204.34.130]) by sourceware.org (Postfix) with ESMTPS id B48DD3858D33 for ; Thu, 20 Apr 2023 08:58:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B48DD3858D33 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: bizesmtp80t1681981067tipecy4s Received: from LAPTOP-EPITNQBU ( [58.60.1.20]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 20 Apr 2023 16:57:46 +0800 (CST) X-QQ-SSF: 01400000000000F0P000000A0000000 X-QQ-FEAT: 7YFKcddXaggiiEDWvlTc7+O46obZj3lLFSNUB+aZTVgQ/UC5Tap4NTk3wnjPU h5Nm9fZibwdLIj9IqxdCkZ7pR9CtYgk9uVKysmrub8GtQhte/uG51KYwjXQDAbyCBGFGsZp eVcqrLuwt/97GopqLAb/ex/McpT8gldeUTKggj5VLpJWUQewZ6WL5JT7UsJo3hqkPXB8VgZ mxfHCVi40JXO3kcfgYuGel8y7Ofcl6wINc1kNjuqOfCKLY5Wa0og7JJTs/T675KRY9qlNmk VlMX6rk7wJad2fwIacZZTSgTZguR7sHZz+b9DuSn54ZFOaqO+PZOGoNujj89Zzk73ecInaE sw6PYBmdhSpSAU5/N5E+KYuZtNM2Pjyrp0VHZgSVkR7HMoTKTHRmJn0HLlNGfPdCu2HyfBp NtU7neq6xy8GEYsvUzPMrl+VeyMDuGP2L5n9zH5gJ3I= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 8968696626213947636 Date: Thu, 20 Apr 2023 16:57:46 +0800 From: "juzhe.zhong@rivai.ai" To: richard.sandiford Cc: gcc-patches , rguenther , jeffreyalaw Subject: Re: Re: [PATCH] VECT: Add WHILE_LEN pattern for decrement IV support for auto-vectorization References: <20230407014741.139387-1-juzhe.zhong@rivai.ai>, <5B48D6D344CE6158+202304200553419571591@rivai.ai>, X-Priority: 3 X-GUID: 6D23116D-FFB4-4AE2-B1B8-A12252EC7580 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: <0AAC8392021A279F+2023042016574579562748@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart663315328206_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvr:qybglogicsvr7 X-Spam-Status: No, score=-8.3 required=5.0 tests=BAYES_00,BODY_8BITS,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,RCVD_IN_SORBS_WEB,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_NextPart663315328206_=---- Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 VGhhbmtzIFJpY2hhcmQgcmVtaW5kaW5nIG1lLiBJIG9yaWdpbmFsbHkgdGhp bmsgY29tbXVuaXR5IGRvZXMgbm90IGFsbG93IG1lIHN1cHBvcnQgdmFyaWFi bGUgYW1vdW50IElWIGFuZCBsZXQgbWUgZG8gdGhpcyBpbiBSSVNDLVYgYmFj a2VuZC4NCkl0IHNlZW1zIHRoYXQgSSBjYW4gZG8gdGhhdCBpbiBtaWRkbGUt ZW5kLiBUaGFuayB5b3Ugc28gbXVjaC4gSSB3aWxsIHVwZGF0ZSB0aGUgcGF0 Y2guIFJlYWxseSBhcHByZWNpYXRlIGl0IQ0KDQoNCg0KanV6aGUuemhvbmdA cml2YWkuYWkNCiANCkZyb206IFJpY2hhcmQgU2FuZGlmb3JkDQpEYXRlOiAy MDIzLTA0LTIwIDE2OjUyDQpUbzog6ZKf5bGF5ZOyDQpDQzogZ2NjLXBhdGNo ZXM7IHJndWVudGhlcjsgSmVmZiBMYXcNClN1YmplY3Q6IFJlOiBbUEFUQ0hd IFZFQ1Q6IEFkZCBXSElMRV9MRU4gcGF0dGVybiBmb3IgZGVjcmVtZW50IElW IHN1cHBvcnQgZm9yIGF1dG8tdmVjdG9yaXphdGlvbg0K6ZKf5bGF5ZOyIDxq dXpoZS56aG9uZ0ByaXZhaS5haT4gd3JpdGVzOg0KPiBIaSwgUmljaGFyZHMu DQo+IFNpbmNlIEdDQyAxNCBpcyBvcGVuIGFuZCB0aGlzIHBhdGNoIGhhcyBi ZWVuIGJvb3N0cmFwZWQgJiYgdGVzdGVkIG9uIFg4Ni4NCj4gSXMgdGhpcyBw YXRjaCBzdXBwb3J0aW5nIHZhcmlhYmxlIElWIE9LIGZvciB0aGUgdHJ1bmsg Pw0KIA0KRG9lc24ndCB0aGUgcGF0Y2ggbmVlZCB1cGRhdGluZyBiYXNlZCBv biB0aGUgcHJldmlvdXMgZGlzY3Vzc2lvbj8NCkkgdGhvdWdodCB0aGUgb3V0 Y29tZSB3YXMgdGhhdCBXSElMRV9MRU4gaXNuJ3QgYSBzaW1wbGUgTUlOIG9w ZXJhdGlvbg0KKGNvbnRyYXJ5IHRvIHRoZSBkb2N1bWVudGF0aW9uIGluIHRo ZSBwYXRjaCkgYW5kIHRoYXQgcG9pbnRlciBJVnMNCndvdWxkIGFsc28gbmVl ZCB0byBiZSB1cGRhdGVkIGJ5IGEgdmFyaWFibGUgYW1vdW50LCBnaXZlbiB0 aGF0IGV2ZW4NCm5vbi1maW5hbCBpdGVyYXRpb25zIG1pZ2h0IHByb2Nlc3Mg ZmV3ZXIgdGhhbiBWRiBlbGVtZW50cy4NCiANClRoYW5rcywNClJpY2hhcmQN CiANCj4ganV6aGUuemhvbmdAcml2YWkuYWkNCj4gIA0KPiBGcm9tOiBqdXpo ZS56aG9uZw0KPiBEYXRlOiAyMDIzLTA0LTA3IDA5OjQ3DQo+IFRvOiBnY2Mt cGF0Y2hlcw0KPiBDQzogcmljaGFyZC5zYW5kaWZvcmQ7IHJndWVudGhlcjsg amVmZnJleWFsYXc7IEp1emhlLVpob25nDQo+IFN1YmplY3Q6IFtQQVRDSF0g VkVDVDogQWRkIFdISUxFX0xFTiBwYXR0ZXJuIGZvciBkZWNyZW1lbnQgSVYg c3VwcG9ydCBmb3IgYXV0by12ZWN0b3JpemF0aW9uDQo+IEZyb206IEp1emhl LVpob25nIDxqdXpoZS56aG9uZ0ByaXZhaS5haT4NCj4gIA0KPiBUaGlzIHBh dGNoIGlzIHRvIGFkZCBXSElMRV9MRU4gcGF0dGVybi4NCj4gSXQncyBpbnNw aXJlZCBieSBSVlYgSVNBIHNpbXBsZSAidnZhZGRpbnQzMi5zIiBleGFtcGxl Og0KPiBodHRwczovL2dpdGh1Yi5jb20vcmlzY3YvcmlzY3Ytdi1zcGVjL2Js b2IvbWFzdGVyL2V4YW1wbGUvdnZhZGRpbnQzMi5zDQo+ICANCj4gTW9yZSBk ZXRhaWxzIGFyZSBpbiAidmVjdF9zZXRfbG9vcF9jb250cm9sc19ieV93aGls ZV9sZW4iIGltcGxlbWVudGF0aW9uDQo+IGFuZCBjb21tZW50cy4NCj4gIA0K PiBDb25zaWRlciBzdWNoIGZvbGxvd2luZyBjYXNlOg0KPiAjZGVmaW5lIE4g MTYNCj4gaW50IHNyY1tOXTsNCj4gaW50IGRlc3RbTl07DQo+ICANCj4gdm9p ZA0KPiBmb28gKGludCBuKQ0KPiB7DQo+ICAgZm9yIChpbnQgaSA9IDA7IGkg PCBuOyBpKyspDQo+ICAgICBkZXN0W2ldID0gc3JjW2ldOw0KPiB9DQo+ICAN Cj4gLW1hcmNoPXJ2NjRnY3YgLU8zIC0tcGFyYW0gcmlzY3YtYXV0b3ZlYy1w cmVmZXJlbmNlPXNjYWxhYmxlIC1mbm8tdmVjdC1jb3N0LW1vZGVsIC1mbm8t dHJlZS1sb29wLWRpc3RyaWJ1dGUtcGF0dGVybnM6DQo+ICANCj4gZm9vOiAg ICAgICAgDQo+ICAgICAgICAgYmxlICAgICBhMCx6ZXJvLC5MMQ0KPiAgICAg ICAgIGx1aSAgICAgYTQsJWhpKC5MQU5DSE9SMCkNCj4gICAgICAgICBhZGRp ICAgIGE0LGE0LCVsbyguTEFOQ0hPUjApDQo+ICAgICAgICAgYWRkaSAgICBh MyxhNCw2NA0KPiAgICAgICAgIGNzcnIgICAgYTIsdmxlbmINCj4gLkwzOg0K PiAgICAgICAgIHZzZXR2bGkgYTUsYTAsZTMyLG0xLHRhLG1hDQo+ICAgICAg ICAgdmxlMzIudiB2MSwwKGE0KQ0KPiAgICAgICAgIHN1YiAgICAgYTAsYTAs YTUNCj4gICAgICAgICB2c2UzMi52IHYxLDAoYTMpDQo+ICAgICAgICAgYWRk ICAgICBhNCxhNCxhMg0KPiAgICAgICAgIGFkZCAgICAgYTMsYTMsYTINCj4g ICAgICAgICBibmUgICAgIGEwLHplcm8sLkwzDQo+IC5MMToNCj4gICAgICAg ICByZXQNCj4gIA0KPiBnY2MvQ2hhbmdlTG9nOg0KPiAgDQo+ICAgICAgICAg KiBkb2MvbWQudGV4aTogQWRkIFdISUxFX0xFTiBzdXBwb3J0Lg0KPiAgICAg ICAgICogaW50ZXJuYWwtZm4uY2MgKHdoaWxlX2xlbl9kaXJlY3QpOiBEaXR0 by4NCj4gICAgICAgICAoZXhwYW5kX3doaWxlX2xlbl9vcHRhYl9mbik6IERp dHRvLg0KPiAgICAgICAgIChkaXJlY3Rfd2hpbGVfbGVuX29wdGFiX3N1cHBv cnRlZF9wKTogRGl0dG8uDQo+ICAgICAgICAgKiBpbnRlcm5hbC1mbi5kZWYg KFdISUxFX0xFTik6IERpdHRvLg0KPiAgICAgICAgICogb3B0YWJzLmRlZiAo T1BUQUJfRCk6IERpdHRvLg0KPiAgICAgICAgICogdHJlZS1zc2EtbG9vcC1t YW5pcC5jYyAoY3JlYXRlX2l2KTogRGl0dG8uDQo+ICAgICAgICAgKiB0cmVl LXNzYS1sb29wLW1hbmlwLmggKGNyZWF0ZV9pdik6IERpdHRvLg0KPiAgICAg ICAgICogdHJlZS12ZWN0LWxvb3AtbWFuaXAuY2MgKHZlY3Rfc2V0X2xvb3Bf Y29udHJvbHNfYnlfd2hpbGVfbGVuKTogRGl0dG8uDQo+ICAgICAgICAgKHZl Y3Rfc2V0X2xvb3BfY29uZGl0aW9uX3BhcnRpYWxfdmVjdG9ycyk6IERpdHRv Lg0KPiAgICAgICAgICogdHJlZS12ZWN0LWxvb3AuY2MgKHZlY3RfZ2V0X2xv b3BfbGVuKTogRGl0dG8uDQo+ICAgICAgICAgKiB0cmVlLXZlY3Qtc3RtdHMu Y2MgKHZlY3Rvcml6YWJsZV9zdG9yZSk6IERpdHRvLg0KPiAgICAgICAgICh2 ZWN0b3JpemFibGVfbG9hZCk6IERpdHRvLg0KPiAgICAgICAgICogdHJlZS12 ZWN0b3JpemVyLmggKHZlY3RfZ2V0X2xvb3BfbGVuKTogRGl0dG8uDQo+ICAN Cj4gLS0tDQo+IGdjYy9kb2MvbWQudGV4aSAgICAgICAgICAgICB8ICAxNCAr KysNCj4gZ2NjL2ludGVybmFsLWZuLmNjICAgICAgICAgIHwgIDI5ICsrKysr Kw0KPiBnY2MvaW50ZXJuYWwtZm4uZGVmICAgICAgICAgfCAgIDEgKw0KPiBn Y2Mvb3B0YWJzLmRlZiAgICAgICAgICAgICAgfCAgIDEgKw0KPiBnY2MvdHJl ZS1zc2EtbG9vcC1tYW5pcC5jYyAgfCAgIDQgKy0NCj4gZ2NjL3RyZWUtc3Nh LWxvb3AtbWFuaXAuaCAgIHwgICAyICstDQo+IGdjYy90cmVlLXZlY3QtbG9v cC1tYW5pcC5jYyB8IDE4NiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0NCj4gZ2NjL3RyZWUtdmVjdC1sb29wLmNjICAgICAgIHwgIDM1 ICsrKysrLS0NCj4gZ2NjL3RyZWUtdmVjdC1zdG10cy5jYyAgICAgIHwgICA5 ICstDQo+IGdjYy90cmVlLXZlY3Rvcml6ZXIuaCAgICAgICB8ICAgNCArLQ0K PiAxMCBmaWxlcyBjaGFuZ2VkLCAyNjQgaW5zZXJ0aW9ucygrKSwgMjEgZGVs ZXRpb25zKC0pDQo+ICANCj4gZGlmZiAtLWdpdCBhL2djYy9kb2MvbWQudGV4 aSBiL2djYy9kb2MvbWQudGV4aQ0KPiBpbmRleCA4ZTMxMTM1OTlmZC4uNzIx NzhhYjAxNGMgMTAwNjQ0DQo+IC0tLSBhL2djYy9kb2MvbWQudGV4aQ0KPiAr KysgYi9nY2MvZG9jL21kLnRleGkNCj4gQEAgLTQ5NjUsNiArNDk2NSwyMCBA QCBmb3IgKGkgPSAxOyBpIDwgb3BlcmFuZDM7IGkrKykNCj4gICAgb3BlcmFu ZDBbaV0gPSBvcGVyYW5kMFtpIC0gMV0gJiYgKG9wZXJhbmQxICsgaSA8IG9w ZXJhbmQyKTsNCj4gQGVuZCBzbWFsbGV4YW1wbGUNCj4gK0BjaW5kZXggQGNv ZGV7d2hpbGVfbGVuQHZhcnttfUB2YXJ7bn19IGluc3RydWN0aW9uIHBhdHRl cm4NCj4gK0BpdGVtIEBjb2Rle3doaWxlX2xlbkB2YXJ7bX1AdmFye259fQ0K PiArU2V0IG9wZXJhbmQgMCB0byB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBlbGVt ZW50cyBpbiB2ZWN0b3Igd2lsbCBiZSB1cGRhdGVkIHZhbHVlLg0KPiArb3Bl cmFuZCAxIGlzIHRoZSB0b3RhbCBlbGVtZW50cyBuZWVkIHRvIGJlIHVwZGF0 ZWQgdmFsdWUuDQo+ICtvcGVyYW5kIDIgaXMgdGhlIHZlY3Rvcml6YXRpb24g ZmFjdG9yLg0KPiArVGhlIG9wZXJhdGlvbiBpcyBlcXVpdmFsZW50IHRvOg0K PiArDQo+ICtAc21hbGxleGFtcGxlDQo+ICtvcGVyYW5kMCA9IE1JTiAob3Bl cmFuZDEsIG9wZXJhbmQyKTsNCj4gK29wZXJhbmQyIGNhbiBiZSBjb25zdF9w b2x5X2ludCBvciBwb2x5X2ludCByZWxhdGVkIHRvIHZlY3RvciBtb2RlIHNp emUuDQo+ICtTb21lIHRhcmdldCBsaWtlIFJJU0MtViBoYXMgYSBzdGFuZGFs b25lIGluc3RydWN0aW9uIHRvIGdldCBNSU4gKG4sIE1PREUgU0laRSkgc28N Cj4gK3RoYXQgd2UgY2FuIHJlZHVjZSBhIHVzZSBvZiBnZW5lcmFsIHB1cnBv c2UgcmVnaXN0ZXIuDQo+ICtAZW5kIHNtYWxsZXhhbXBsZQ0KPiArDQo+IEBj aW5kZXggQGNvZGV7Y2hlY2tfcmF3X3B0cnNAdmFye219fSBpbnN0cnVjdGlv biBwYXR0ZXJuDQo+IEBpdGVtIEBzYW1we2NoZWNrX3Jhd19wdHJzQHZhcntt fX0NCj4gQ2hlY2sgd2hldGhlciwgZ2l2ZW4gdHdvIHBvaW50ZXJzIEB2YXJ7 YX0gYW5kIEB2YXJ7Yn0gYW5kIGEgbGVuZ3RoIEB2YXJ7bGVufSwNCj4gZGlm ZiAtLWdpdCBhL2djYy9pbnRlcm5hbC1mbi5jYyBiL2djYy9pbnRlcm5hbC1m bi5jYw0KPiBpbmRleCA2ZTgxZGMwNWUwZS4uNWY0NGRlZjkwZDMgMTAwNjQ0 DQo+IC0tLSBhL2djYy9pbnRlcm5hbC1mbi5jYw0KPiArKysgYi9nY2MvaW50 ZXJuYWwtZm4uY2MNCj4gQEAgLTEyNyw2ICsxMjcsNyBAQCBpbml0X2ludGVy bmFsX2ZucyAoKQ0KPiAjZGVmaW5lIGNvbmRfYmluYXJ5X2RpcmVjdCB7IDEs IDEsIHRydWUgfQ0KPiAjZGVmaW5lIGNvbmRfdGVybmFyeV9kaXJlY3QgeyAx LCAxLCB0cnVlIH0NCj4gI2RlZmluZSB3aGlsZV9kaXJlY3QgeyAwLCAyLCBm YWxzZSB9DQo+ICsjZGVmaW5lIHdoaWxlX2xlbl9kaXJlY3QgeyAwLCAwLCBm YWxzZSB9DQo+ICNkZWZpbmUgZm9sZF9leHRyYWN0X2RpcmVjdCB7IDIsIDIs IGZhbHNlIH0NCj4gI2RlZmluZSBmb2xkX2xlZnRfZGlyZWN0IHsgMSwgMSwg ZmFsc2UgfQ0KPiAjZGVmaW5lIG1hc2tfZm9sZF9sZWZ0X2RpcmVjdCB7IDEs IDEsIGZhbHNlIH0NCj4gQEAgLTM3MDIsNiArMzcwMywzMyBAQCBleHBhbmRf d2hpbGVfb3B0YWJfZm4gKGludGVybmFsX2ZuLCBnY2FsbCAqc3RtdCwgY29u dmVydF9vcHRhYiBvcHRhYikNCj4gICAgICBlbWl0X21vdmVfaW5zbiAobGhz X3J0eCwgb3BzWzBdLnZhbHVlKTsNCj4gfQ0KPiArLyogRXhwYW5kIFdISUxF X0xFTiBjYWxsIFNUTVQgdXNpbmcgb3B0YWIgT1BUQUIuICAqLw0KPiArc3Rh dGljIHZvaWQNCj4gK2V4cGFuZF93aGlsZV9sZW5fb3B0YWJfZm4gKGludGVy bmFsX2ZuLCBnY2FsbCAqc3RtdCwgY29udmVydF9vcHRhYiBvcHRhYikNCj4g K3sNCj4gKyAgZXhwYW5kX29wZXJhbmQgb3BzWzNdOw0KPiArICB0cmVlIHJo c190eXBlWzJdOw0KPiArDQo+ICsgIHRyZWUgbGhzID0gZ2ltcGxlX2NhbGxf bGhzIChzdG10KTsNCj4gKyAgdHJlZSBsaHNfdHlwZSA9IFRSRUVfVFlQRSAo bGhzKTsNCj4gKyAgcnR4IGxoc19ydHggPSBleHBhbmRfZXhwciAobGhzLCBO VUxMX1JUWCwgVk9JRG1vZGUsIEVYUEFORF9XUklURSk7DQo+ICsgIGNyZWF0 ZV9vdXRwdXRfb3BlcmFuZCAoJm9wc1swXSwgbGhzX3J0eCwgVFlQRV9NT0RF IChsaHNfdHlwZSkpOw0KPiArDQo+ICsgIGZvciAodW5zaWduZWQgaW50IGkg PSAwOyBpIDwgZ2ltcGxlX2NhbGxfbnVtX2FyZ3MgKHN0bXQpOyArK2kpDQo+ ICsgICAgew0KPiArICAgICAgdHJlZSByaHMgPSBnaW1wbGVfY2FsbF9hcmcg KHN0bXQsIGkpOw0KPiArICAgICAgcmhzX3R5cGVbaV0gPSBUUkVFX1RZUEUg KHJocyk7DQo+ICsgICAgICBydHggcmhzX3J0eCA9IGV4cGFuZF9ub3JtYWwg KHJocyk7DQo+ICsgICAgICBjcmVhdGVfaW5wdXRfb3BlcmFuZCAoJm9wc1tp ICsgMV0sIHJoc19ydHgsIFRZUEVfTU9ERSAocmhzX3R5cGVbaV0pKTsNCj4g KyAgICB9DQo+ICsNCj4gKyAgaW5zbl9jb2RlIGljb2RlID0gZGlyZWN0X29w dGFiX2hhbmRsZXIgKG9wdGFiLCBUWVBFX01PREUgKHJoc190eXBlWzBdKSk7 DQo+ICsNCj4gKyAgZXhwYW5kX2luc24gKGljb2RlLCAzLCBvcHMpOw0KPiAr ICBpZiAoIXJ0eF9lcXVhbF9wIChsaHNfcnR4LCBvcHNbMF0udmFsdWUpKQ0K PiArICAgIGVtaXRfbW92ZV9pbnNuIChsaHNfcnR4LCBvcHNbMF0udmFsdWUp Ow0KPiArfQ0KPiArDQo+IC8qIEV4cGFuZCBhIGNhbGwgdG8gYSBjb252ZXJ0 LWxpa2Ugb3B0YWIgdXNpbmcgdGhlIG9wZXJhbmRzIGluIFNUTVQuDQo+ICAg ICBGTiBoYXMgYSBzaW5nbGUgb3V0cHV0IG9wZXJhbmQgYW5kIE5BUkdTIGlu cHV0IG9wZXJhbmRzLiAgKi8NCj4gQEAgLTM4NDMsNiArMzg3MSw3IEBAIG11 bHRpX3ZlY3Rvcl9vcHRhYl9zdXBwb3J0ZWRfcCAoY29udmVydF9vcHRhYiBv cHRhYiwgdHJlZV9wYWlyIHR5cGVzLA0KPiAjZGVmaW5lIGRpcmVjdF9zY2F0 dGVyX3N0b3JlX29wdGFiX3N1cHBvcnRlZF9wIGNvbnZlcnRfb3B0YWJfc3Vw cG9ydGVkX3ANCj4gI2RlZmluZSBkaXJlY3RfbGVuX3N0b3JlX29wdGFiX3N1 cHBvcnRlZF9wIGRpcmVjdF9vcHRhYl9zdXBwb3J0ZWRfcA0KPiAjZGVmaW5l IGRpcmVjdF93aGlsZV9vcHRhYl9zdXBwb3J0ZWRfcCBjb252ZXJ0X29wdGFi X3N1cHBvcnRlZF9wDQo+ICsjZGVmaW5lIGRpcmVjdF93aGlsZV9sZW5fb3B0 YWJfc3VwcG9ydGVkX3AgZGlyZWN0X29wdGFiX3N1cHBvcnRlZF9wDQo+ICNk ZWZpbmUgZGlyZWN0X2ZvbGRfZXh0cmFjdF9vcHRhYl9zdXBwb3J0ZWRfcCBk aXJlY3Rfb3B0YWJfc3VwcG9ydGVkX3ANCj4gI2RlZmluZSBkaXJlY3RfZm9s ZF9sZWZ0X29wdGFiX3N1cHBvcnRlZF9wIGRpcmVjdF9vcHRhYl9zdXBwb3J0 ZWRfcA0KPiAjZGVmaW5lIGRpcmVjdF9tYXNrX2ZvbGRfbGVmdF9vcHRhYl9z dXBwb3J0ZWRfcCBkaXJlY3Rfb3B0YWJfc3VwcG9ydGVkX3ANCj4gZGlmZiAt LWdpdCBhL2djYy9pbnRlcm5hbC1mbi5kZWYgYi9nY2MvaW50ZXJuYWwtZm4u ZGVmDQo+IGluZGV4IDdmZTc0MmMyYWU3Li4zYTkzM2FiZmY1ZCAxMDA2NDQN Cj4gLS0tIGEvZ2NjL2ludGVybmFsLWZuLmRlZg0KPiArKysgYi9nY2MvaW50 ZXJuYWwtZm4uZGVmDQo+IEBAIC0xNTMsNiArMTUzLDcgQEAgREVGX0lOVEVS TkFMX09QVEFCX0ZOIChWRUNfU0VULCAwLCB2ZWNfc2V0LCB2ZWNfc2V0KQ0K PiBERUZfSU5URVJOQUxfT1BUQUJfRk4gKExFTl9TVE9SRSwgMCwgbGVuX3N0 b3JlLCBsZW5fc3RvcmUpDQo+IERFRl9JTlRFUk5BTF9PUFRBQl9GTiAoV0hJ TEVfVUxULCBFQ0ZfQ09OU1QgfCBFQ0ZfTk9USFJPVywgd2hpbGVfdWx0LCB3 aGlsZSkNCj4gK0RFRl9JTlRFUk5BTF9PUFRBQl9GTiAoV0hJTEVfTEVOLCBF Q0ZfQ09OU1QgfCBFQ0ZfTk9USFJPVywgd2hpbGVfbGVuLCB3aGlsZV9sZW4p DQo+IERFRl9JTlRFUk5BTF9PUFRBQl9GTiAoQ0hFQ0tfUkFXX1BUUlMsIEVD Rl9DT05TVCB8IEVDRl9OT1RIUk9XLA0KPiAgICAgICAgY2hlY2tfcmF3X3B0 cnMsIGNoZWNrX3B0cnMpDQo+IERFRl9JTlRFUk5BTF9PUFRBQl9GTiAoQ0hF Q0tfV0FSX1BUUlMsIEVDRl9DT05TVCB8IEVDRl9OT1RIUk9XLA0KPiBkaWZm IC0tZ2l0IGEvZ2NjL29wdGFicy5kZWYgYi9nY2Mvb3B0YWJzLmRlZg0KPiBp bmRleCA2OTVmNTkxMWIzMC4uZjU5MzhiZDJjMjQgMTAwNjQ0DQo+IC0tLSBh L2djYy9vcHRhYnMuZGVmDQo+ICsrKyBiL2djYy9vcHRhYnMuZGVmDQo+IEBA IC00NzYsMyArNDc2LDQgQEAgT1BUQUJfREMgKHZlY19zZXJpZXNfb3B0YWIs ICJ2ZWNfc2VyaWVzJGEiLCBWRUNfU0VSSUVTKQ0KPiBPUFRBQl9EICh2ZWNf c2hsX2luc2VydF9vcHRhYiwgInZlY19zaGxfaW5zZXJ0XyRhIikNCj4gT1BU QUJfRCAobGVuX2xvYWRfb3B0YWIsICJsZW5fbG9hZF8kYSIpDQo+IE9QVEFC X0QgKGxlbl9zdG9yZV9vcHRhYiwgImxlbl9zdG9yZV8kYSIpDQo+ICtPUFRB Ql9EICh3aGlsZV9sZW5fb3B0YWIsICJ3aGlsZV9sZW4kYSIpDQo+IGRpZmYg LS1naXQgYS9nY2MvdHJlZS1zc2EtbG9vcC1tYW5pcC5jYyBiL2djYy90cmVl LXNzYS1sb29wLW1hbmlwLmNjDQo+IGluZGV4IDA5YWNjMWM5NGNjLi5jZGJm MjgwZTI0OSAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtc3NhLWxvb3AtbWFu aXAuY2MNCj4gKysrIGIvZ2NjL3RyZWUtc3NhLWxvb3AtbWFuaXAuY2MNCj4g QEAgLTU5LDE0ICs1OSwxNCBAQCBzdGF0aWMgYml0bWFwX29ic3RhY2sgbG9v cF9yZW5hbWVyX29ic3RhY2s7DQo+IHZvaWQNCj4gY3JlYXRlX2l2ICh0cmVl IGJhc2UsIHRyZWUgc3RlcCwgdHJlZSB2YXIsIGNsYXNzIGxvb3AgKmxvb3As DQo+ICAgIGdpbXBsZV9zdG10X2l0ZXJhdG9yICppbmNyX3BvcywgYm9vbCBh ZnRlciwNCj4gLSAgICB0cmVlICp2YXJfYmVmb3JlLCB0cmVlICp2YXJfYWZ0 ZXIpDQo+ICsgICAgdHJlZSAqdmFyX2JlZm9yZSwgdHJlZSAqdmFyX2FmdGVy LCBlbnVtIHRyZWVfY29kZSBjb2RlKQ0KPiB7DQo+ICAgIGdhc3NpZ24gKnN0 bXQ7DQo+ICAgIGdwaGkgKnBoaTsNCj4gICAgdHJlZSBpbml0aWFsLCBzdGVw MTsNCj4gICAgZ2ltcGxlX3NlcSBzdG10czsNCj4gICAgdHJlZSB2YiwgdmE7 DQo+IC0gIGVudW0gdHJlZV9jb2RlIGluY3Jfb3AgPSBQTFVTX0VYUFI7DQo+ ICsgIGVudW0gdHJlZV9jb2RlIGluY3Jfb3AgPSBjb2RlOw0KPiAgICBlZGdl IHBlID0gbG9vcF9wcmVoZWFkZXJfZWRnZSAobG9vcCk7DQo+ICAgIGlmICh2 YXIgIT0gTlVMTF9UUkVFKQ0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3Nh LWxvb3AtbWFuaXAuaCBiL2djYy90cmVlLXNzYS1sb29wLW1hbmlwLmgNCj4g aW5kZXggZDQ5MjczYTM5ODcuLmRhNzU1MzIwYTNhIDEwMDY0NA0KPiAtLS0g YS9nY2MvdHJlZS1zc2EtbG9vcC1tYW5pcC5oDQo+ICsrKyBiL2djYy90cmVl LXNzYS1sb29wLW1hbmlwLmgNCj4gQEAgLTIzLDcgKzIzLDcgQEAgYWxvbmcg d2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUN Cj4gdHlwZWRlZiB2b2lkICgqdHJhbnNmb3JtX2NhbGxiYWNrKShjbGFzcyBs b29wICosIHZvaWQgKik7DQo+IGV4dGVybiB2b2lkIGNyZWF0ZV9pdiAodHJl ZSwgdHJlZSwgdHJlZSwgY2xhc3MgbG9vcCAqLCBnaW1wbGVfc3RtdF9pdGVy YXRvciAqLA0KPiAtICAgICAgICBib29sLCB0cmVlICosIHRyZWUgKik7DQo+ ICsgICAgICAgIGJvb2wsIHRyZWUgKiwgdHJlZSAqLCBlbnVtIHRyZWVfY29k ZSA9IFBMVVNfRVhQUik7DQo+IGV4dGVybiB2b2lkIHJld3JpdGVfaW50b19s b29wX2Nsb3NlZF9zc2EgKGJpdG1hcCwgdW5zaWduZWQpOw0KPiBleHRlcm4g dm9pZCB2ZXJpZnlfbG9vcF9jbG9zZWRfc3NhIChib29sLCBjbGFzcyBsb29w ICogPSBOVUxMKTsNCj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtbG9v cC1tYW5pcC5jYyBiL2djYy90cmVlLXZlY3QtbG9vcC1tYW5pcC5jYw0KPiBp bmRleCBmNjBmYTUwZThmNC4uZjNjZDZjNTFkMmUgMTAwNjQ0DQo+IC0tLSBh L2djYy90cmVlLXZlY3QtbG9vcC1tYW5pcC5jYw0KPiArKysgYi9nY2MvdHJl ZS12ZWN0LWxvb3AtbWFuaXAuY2MNCj4gQEAgLTY4Miw2ICs2ODIsMTczIEBA IHZlY3Rfc2V0X2xvb3BfY29udHJvbHNfZGlyZWN0bHkgKGNsYXNzIGxvb3Ag Kmxvb3AsIGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywNCj4gICAgcmV0dXJu IG5leHRfY3RybDsNCj4gfQ0KPiArLyogSGVscGVyIGZvciB2ZWN0X3NldF9s b29wX2NvbmRpdGlvbl9wYXJ0aWFsX3ZlY3RvcnMuICBHZW5lcmF0ZSBkZWZp bml0aW9ucw0KPiArICAgZm9yIGFsbCB0aGUgcmdyb3VwIGNvbnRyb2xzIGlu IFJHQyBhbmQgcmV0dXJuIGEgY29udHJvbCB0aGF0IGlzIG5vbnplcm8NCj4g KyAgIHdoZW4gdGhlIGxvb3AgbmVlZHMgdG8gaXRlcmF0ZS4gIEFkZCBhbnkg bmV3IHByZWhlYWRlciBzdGF0ZW1lbnRzIHRvDQo+ICsgICBQUkVIRUFERVJf U0VRLiAgVXNlIExPT1BfQ09ORF9HU0kgdG8gaW5zZXJ0IGNvZGUgYmVmb3Jl IHRoZSBleGl0IGdjb25kLg0KPiArDQo+ICsgICBSR0MgYmVsb25ncyB0byBs b29wIExPT1AuICBUaGUgbG9vcCBvcmlnaW5hbGx5IGl0ZXJhdGVkIE5JVEVS Uw0KPiArICAgdGltZXMgYW5kIGhhcyBiZWVuIHZlY3Rvcml6ZWQgYWNjb3Jk aW5nIHRvIExPT1BfVklORk8uDQo+ICsNCj4gKyAgIFVubGlrZSB2ZWN0X3Nl dF9sb29wX2NvbnRyb2xzX2RpcmVjdGx5IHdoaWNoIGlzIGl0ZXJhdGluZyBm cm9tIDAtYmFzZWQgSVYNCj4gKyAgIHRvIFRFU1RfTElNSVQgLSBiaWFzLg0K PiArDQo+ICsgICBJbiB2ZWN0X3NldF9sb29wX2NvbnRyb2xzX2J5X3doaWxl X2xlbiwgd2UgYXJlIGl0ZXJhdGluZyBmcm9tIHN0YXJ0IGF0DQo+ICsgICBJ ViA9IFRFU1RfTElNSVQgLSBiaWFzIGFuZCBrZWVwIHN1YnRyYWN0IElWIGJ5 IHRoZSBsZW5ndGggY2FsY3VsYXRlZCBieQ0KPiArICAgSUZOX1dISUxFX0xF TiBwYXR0ZXJuLg0KPiArDQo+ICsgICBOb3RlOiB0aGUgY29zdCBvZiB0aGUg Y29kZSBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBpcyBtb2RlbGVkDQo+ ICsgICBieSB2ZWN0X2VzdGltYXRlX21pbl9wcm9maXRhYmxlX2l0ZXJzLCBz byBjaGFuZ2VzIGhlcmUgbWF5IG5lZWQNCj4gKyAgIGNvcnJlc3BvbmRpbmcg Y2hhbmdlcyB0aGVyZS4NCj4gKw0KPiArICAgMS4gU2luZ2xlIHJncm91cCwg dGhlIEdpbXBsZSBJUiBzaG91bGQgYmU6DQo+ICsNCj4gKyA8YmIgMz4NCj4g KyBfMTkgPSAodW5zaWduZWQgbG9uZykgbl81KEQpOw0KPiArIC4uLg0KPiAr DQo+ICsgPGJiIDQ+Og0KPiArIC4uLg0KPiArICMgaXZ0bXBfMjAgPSBQSEkg PGl2dG1wXzIxKDQpLCBfMTkoMyk+DQo+ICsgLi4uDQo+ICsgXzIyID0gLldI SUxFX0xFTiAoaXZ0bXBfMjAsIHZmKTsNCj4gKyAuLi4NCj4gKyB2ZWN0b3Ig c3RhdGVtZW50ICh1c2UgXzIyKTsNCj4gKyAuLi4NCj4gKyBpdnRtcF8yMSA9 IGl2dG1wXzIwIC0gXzIyOw0KPiArIC4uLg0KPiArIGlmIChpdnRtcF8yMSAh PSAwKQ0KPiArICAgZ290byA8YmIgND47IFs3NS4wMCVdDQo+ICsgZWxzZQ0K PiArICAgZ290byA8YmIgNT47IFsyNS4wMCVdDQo+ICsNCj4gKyA8YmIgNT4N Cj4gKyByZXR1cm47DQo+ICsNCj4gKyAgIE5vdGU6IElGTl9XSElMRV9MRU4g d2lsbCBndWFyYW50ZWUgIml2dG1wXzIxID0gaXZ0bXBfMjAgLSBfMjIiIG5l dmVyDQo+ICsgICB1bmRlcmZsb3cgMC4NCj4gKw0KPiArICAgMi4gTXVsdGlw bGUgcmdyb3VwLCB0aGUgR2ltcGxlIElSIHNob3VsZCBiZToNCj4gKw0KPiAr IDxiYiAzPg0KPiArIF83MCA9ICh1bnNpZ25lZCBsb25nKSBibmQuN181MjsN Cj4gKyBfNzEgPSBfNzAgKiAyOw0KPiArIF83MiA9IE1BWF9FWFBSIDxfNzEs IDQ+Ow0KPiArIF83MyA9IF83MiArIDE4NDQ2NzQ0MDczNzA5NTUxNjEyOw0K PiArIC4uLg0KPiArDQo+ICsgPGJiIDQ+Og0KPiArIC4uLg0KPiArICMgaXZ0 bXBfNzQgPSBQSEkgPGl2dG1wXzc1KDYpLCBfNzMoMTIpPg0KPiArICMgaXZ0 bXBfNzcgPSBQSEkgPGl2dG1wXzc4KDYpLCBfNzEoMTIpPg0KPiArIF83NiA9 IC5XSElMRV9MRU4gKGl2dG1wXzc0LCB2ZiAqIG5pdGVtc19wZXJfY3RybCk7 DQo+ICsgXzc5ID0gLldISUxFX0xFTiAoaXZ0bXBfNzcsIHZmICogbml0ZW1z X3Blcl9jdHJsKTsNCj4gKyAuLi4NCj4gKyB2ZWN0b3Igc3RhdGVtZW50ICh1 c2UgXzc5KTsNCj4gKyAuLi4NCj4gKyB2ZWN0b3Igc3RhdGVtZW50ICh1c2Ug Xzc2KTsNCj4gKyAuLi4NCj4gKyBfNjUgPSBfNzkgLyAyOw0KPiArIHZlY3Rv ciBzdGF0ZW1lbnQgKHVzZSBfNjUpOw0KPiArIC4uLg0KPiArIF82OCA9IF83 NiAvIDI7DQo+ICsgdmVjdG9yIHN0YXRlbWVudCAodXNlIF82OCk7DQo+ICsg Li4uDQo+ICsgaXZ0bXBfNzggPSBpdnRtcF83NyAtIF83OTsNCj4gKyBpdnRt cF83NSA9IGl2dG1wXzc0IC0gXzc2Ow0KPiArIC4uLg0KPiArIGlmIChpdnRt cF83OCAhPSAwKQ0KPiArICAgZ290byA8YmIgND47IFs3NS4wMCVdDQo+ICsg ZWxzZQ0KPiArICAgZ290byA8YmIgNT47IFsyNS4wMCVdDQo+ICsNCj4gKyA8 YmIgNT4NCj4gKyByZXR1cm47DQo+ICsNCj4gKyovDQo+ICsNCj4gK3N0YXRp YyB0cmVlDQo+ICt2ZWN0X3NldF9sb29wX2NvbnRyb2xzX2J5X3doaWxlX2xl biAoY2xhc3MgbG9vcCAqbG9vcCwgbG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZv LA0KPiArICAgICAgZ2ltcGxlX3NlcSAqcHJlaGVhZGVyX3NlcSwNCj4gKyAg ICAgIGdpbXBsZV9zZXEgKmhlYWRlcl9zZXEsDQo+ICsgICAgICByZ3JvdXBf Y29udHJvbHMgKnJnYywgdHJlZSBuaXRlcnMpDQo+ICt7DQo+ICsgIHRyZWUg Y29tcGFyZV90eXBlID0gTE9PUF9WSU5GT19SR1JPVVBfQ09NUEFSRV9UWVBF IChsb29wX3ZpbmZvKTsNCj4gKyAgdHJlZSBpdl90eXBlID0gTE9PUF9WSU5G T19SR1JPVVBfSVZfVFlQRSAobG9vcF92aW5mbyk7DQo+ICsgIC8qIFdlIGFy ZSBub3QgYWxsb3dpbmcgbWFza2VkIGFwcHJvYWNoIGluIFdISUxFX0xFTi4g ICovDQo+ICsgIGdjY19hc3NlcnQgKCFMT09QX1ZJTkZPX0ZVTExZX01BU0tF RF9QIChsb29wX3ZpbmZvKSk7DQo+ICsNCj4gKyAgdHJlZSBjdHJsX3R5cGUg PSByZ2MtPnR5cGU7DQo+ICsgIHVuc2lnbmVkIGludCBuaXRlbXNfcGVyX2l0 ZXIgPSByZ2MtPm1heF9uc2NhbGFyc19wZXJfaXRlciAqIHJnYy0+ZmFjdG9y Ow0KPiArICBwb2x5X3VpbnQ2NCBuaXRlbXNfcGVyX2N0cmwgPSBUWVBFX1ZF Q1RPUl9TVUJQQVJUUyAoY3RybF90eXBlKSAqIHJnYy0+ZmFjdG9yOw0KPiAr ICBwb2x5X3VpbnQ2NCB2ZiA9IExPT1BfVklORk9fVkVDVF9GQUNUT1IgKGxv b3BfdmluZm8pOw0KPiArDQo+ICsgIC8qIENhbGN1bGF0ZSB0aGUgbWF4aW11 bSBudW1iZXIgb2YgaXRlbSB2YWx1ZXMgdGhhdCB0aGUgcmdyb3VwDQo+ICsg ICAgIGhhbmRsZXMgaW4gdG90YWwsIHRoZSBudW1iZXIgdGhhdCBpdCBoYW5k bGVzIGZvciBlYWNoIGl0ZXJhdGlvbg0KPiArICAgICBvZiB0aGUgdmVjdG9y IGxvb3AuICAqLw0KPiArICB0cmVlIG5pdGVtc190b3RhbCA9IG5pdGVyczsN Cj4gKyAgaWYgKG5pdGVtc19wZXJfaXRlciAhPSAxKQ0KPiArICAgIHsNCj4g KyAgICAgIC8qIFdlIGNoZWNrZWQgYmVmb3JlIHNldHRpbmcgTE9PUF9WSU5G T19VU0lOR19QQVJUSUFMX1ZFQ1RPUlNfUCB0aGF0DQo+ICsgdGhlc2UgbXVs dGlwbGljYXRpb25zIGRvbid0IG92ZXJmbG93LiAgKi8NCj4gKyAgICAgIHRy ZWUgY29tcGFyZV9mYWN0b3IgPSBidWlsZF9pbnRfY3N0IChjb21wYXJlX3R5 cGUsIG5pdGVtc19wZXJfaXRlcik7DQo+ICsgICAgICBuaXRlbXNfdG90YWwg PSBnaW1wbGVfYnVpbGQgKHByZWhlYWRlcl9zZXEsIE1VTFRfRVhQUiwgY29t cGFyZV90eXBlLA0KPiArICAgIG5pdGVtc190b3RhbCwgY29tcGFyZV9mYWN0 b3IpOw0KPiArICAgIH0NCj4gKw0KPiArICAvKiBDb252ZXJ0IHRoZSBjb21w YXJpc29uIHZhbHVlIHRvIHRoZSBJViB0eXBlIChlaXRoZXIgYSBuby1vcCBv cg0KPiArICAgICBhIHByb21vdGlvbikuICAqLw0KPiArICBuaXRlbXNfdG90 YWwgPSBnaW1wbGVfY29udmVydCAocHJlaGVhZGVyX3NlcSwgaXZfdHlwZSwg bml0ZW1zX3RvdGFsKTsNCj4gKw0KPiArICAvKiBDcmVhdGUgYW4gaW5kdWN0 aW9uIHZhcmlhYmxlIHRoYXQgY291bnRzIHRoZSBudW1iZXIgb2YgaXRlbXMN Cj4gKyAgICAgcHJvY2Vzc2VkLiAgKi8NCj4gKyAgdHJlZSBpbmRleF9iZWZv cmVfaW5jciwgaW5kZXhfYWZ0ZXJfaW5jcjsNCj4gKyAgZ2ltcGxlX3N0bXRf aXRlcmF0b3IgaW5jcl9nc2k7DQo+ICsgIGJvb2wgaW5zZXJ0X2FmdGVyOw0K PiArICBzdGFuZGFyZF9pdl9pbmNyZW1lbnRfcG9zaXRpb24gKGxvb3AsICZp bmNyX2dzaSwgJmluc2VydF9hZnRlcik7DQo+ICsNCj4gKyAgLyogVGVzdCB0 aGUgZGVjcmVtZW50ZWQgSVYsIHdoaWNoIHdpbGwgbmV2ZXIgdW5kZXJmbG93 IDAgc2luY2Ugd2UgaGF2ZQ0KPiArICAgICBJRk5fV0hJTEVfTEVOIHRvIGd1 cmFudGVlIHRoYXQuICAqLw0KPiArICB0cmVlIHRlc3RfbGltaXQgPSBuaXRl bXNfdG90YWw7DQo+ICsNCj4gKyAgLyogUHJvdmlkZSBhIGRlZmluaXRpb24g b2YgZWFjaCBjb250cm9sIGluIHRoZSBncm91cC4gICovDQo+ICsgIHRyZWUg Y3RybDsNCj4gKyAgdW5zaWduZWQgaW50IGk7DQo+ICsgIEZPUl9FQUNIX1ZF Q19FTFRfUkVWRVJTRSAocmdjLT5jb250cm9scywgaSwgY3RybCkNCj4gKyAg ICB7DQo+ICsgICAgICAvKiBQcmV2aW91cyBjb250cm9scyB3aWxsIGNvdmVy IEJJQVMgaXRlbXMuICBUaGlzIGNvbnRyb2wgY292ZXJzIHRoZQ0KPiArIG5l eHQgYmF0Y2guICAqLw0KPiArICAgICAgcG9seV91aW50NjQgYmlhcyA9IG5p dGVtc19wZXJfY3RybCAqIGk7DQo+ICsgICAgICB0cmVlIGJpYXNfdHJlZSA9 IGJ1aWxkX2ludF9jc3QgKGl2X3R5cGUsIGJpYXMpOw0KPiArDQo+ICsgICAg ICAvKiBSYXRoZXIgdGhhbiBoYXZlIGEgbmV3IElWIHRoYXQgc3RhcnRzIGF0 IFRFU1RfTElNSVQgYW5kIGdvZXMgZG93biB0bw0KPiArIEJJQVMsIHByZWZl ciB0byB1c2UgdGhlIHNhbWUgVEVTVF9MSU1JVCAtIEJJQVMgYmFzZWQgSVYg Zm9yIGVhY2gNCj4gKyBjb250cm9sIGFuZCBhZGp1c3QgdGhlIGJvdW5kIGRv d24gYnkgQklBUy4gICovDQo+ICsgICAgICB0cmVlIHRoaXNfdGVzdF9saW1p dCA9IHRlc3RfbGltaXQ7DQo+ICsgICAgICBpZiAoaSAhPSAwKQ0KPiArIHsN Cj4gKyAgIHRoaXNfdGVzdF9saW1pdCA9IGdpbXBsZV9idWlsZCAocHJlaGVh ZGVyX3NlcSwgTUFYX0VYUFIsIGl2X3R5cGUsDQo+ICsgICB0aGlzX3Rlc3Rf bGltaXQsIGJpYXNfdHJlZSk7DQo+ICsgICB0aGlzX3Rlc3RfbGltaXQgPSBn aW1wbGVfYnVpbGQgKHByZWhlYWRlcl9zZXEsIE1JTlVTX0VYUFIsIGl2X3R5 cGUsDQo+ICsgICB0aGlzX3Rlc3RfbGltaXQsIGJpYXNfdHJlZSk7DQo+ICsg fQ0KPiArDQo+ICsgICAgICAvKiBDcmVhdGUgZGVjcmVtZW50IElWLiAgKi8N Cj4gKyAgICAgIGNyZWF0ZV9pdiAodGhpc190ZXN0X2xpbWl0LCBjdHJsLCBO VUxMX1RSRUUsIGxvb3AsICZpbmNyX2dzaSwNCj4gKyBpbnNlcnRfYWZ0ZXIs ICZpbmRleF9iZWZvcmVfaW5jciwgJmluZGV4X2FmdGVyX2luY3IsDQo+ICsg TUlOVVNfRVhQUik7DQo+ICsNCj4gKyAgICAgIHBvbHlfdWludDY0IGZpbmFs X3ZmID0gdmYgKiBuaXRlbXNfcGVyX2l0ZXI7DQo+ICsgICAgICB0cmVlIHZm X3N0ZXAgPSBidWlsZF9pbnRfY3N0IChpdl90eXBlLCBmaW5hbF92Zik7DQo+ ICsgICAgICB0cmVlIHJlc19sZW4gPSBnaW1wbGVfYnVpbGQgKGhlYWRlcl9z ZXEsIElGTl9XSElMRV9MRU4sIGl2X3R5cGUsDQo+ICsgICAgaW5kZXhfYmVm b3JlX2luY3IsIHZmX3N0ZXApOw0KPiArICAgICAgZ2Fzc2lnbiAqYXNzaWdu ID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAoY3RybCwgcmVzX2xlbik7DQo+ICsg ICAgICBnaW1wbGVfc2VxX2FkZF9zdG10IChoZWFkZXJfc2VxLCBhc3NpZ24p Ow0KPiArICAgIH0NCj4gKw0KPiArICByZXR1cm4gaW5kZXhfYWZ0ZXJfaW5j cjsNCj4gK30NCj4gKw0KPiAvKiBTZXQgdXAgdGhlIGl0ZXJhdGlvbiBjb25k aXRpb24gYW5kIHJncm91cCBjb250cm9scyBmb3IgTE9PUCwgZ2l2ZW4NCj4g ICAgIHRoYXQgTE9PUF9WSU5GT19VU0lOR19QQVJUSUFMX1ZFQ1RPUlNfUCBp cyB0cnVlIGZvciB0aGUgdmVjdG9yaXplZA0KPiAgICAgbG9vcC4gIExPT1Bf VklORk8gZGVzY3JpYmVzIHRoZSB2ZWN0b3JpemF0aW9uIG9mIExPT1AuICBO SVRFUlMgaXMNCj4gQEAgLTcwMyw2ICs4NzAsNyBAQCB2ZWN0X3NldF9sb29w X2NvbmRpdGlvbl9wYXJ0aWFsX3ZlY3RvcnMgKGNsYXNzIGxvb3AgKmxvb3As DQo+ICAgIGJvb2wgdXNlX21hc2tzX3AgPSBMT09QX1ZJTkZPX0ZVTExZX01B U0tFRF9QIChsb29wX3ZpbmZvKTsNCj4gICAgdHJlZSBjb21wYXJlX3R5cGUg PSBMT09QX1ZJTkZPX1JHUk9VUF9DT01QQVJFX1RZUEUgKGxvb3BfdmluZm8p Ow0KPiArICB0cmVlIGl2X3R5cGUgPSBMT09QX1ZJTkZPX1JHUk9VUF9JVl9U WVBFIChsb29wX3ZpbmZvKTsNCj4gICAgdW5zaWduZWQgaW50IGNvbXBhcmVf cHJlY2lzaW9uID0gVFlQRV9QUkVDSVNJT04gKGNvbXBhcmVfdHlwZSk7DQo+ ICAgIHRyZWUgb3JpZ19uaXRlcnMgPSBuaXRlcnM7DQo+IEBAIC03NTcsMTIg KzkyNSwxOCBAQCB2ZWN0X3NldF9sb29wX2NvbmRpdGlvbl9wYXJ0aWFsX3Zl Y3RvcnMgKGNsYXNzIGxvb3AgKmxvb3AsDQo+IGJvb2wgbWlnaHRfd3JhcF9w ID0gdmVjdF9yZ3JvdXBfaXZfbWlnaHRfd3JhcF9wIChsb29wX3ZpbmZvLCBy Z2MpOw0KPiAvKiBTZXQgdXAgYWxsIGNvbnRyb2xzIGZvciB0aGlzIGdyb3Vw LiAgKi8NCj4gLSB0ZXN0X2N0cmwgPSB2ZWN0X3NldF9sb29wX2NvbnRyb2xz X2RpcmVjdGx5IChsb29wLCBsb29wX3ZpbmZvLA0KPiAtICAgICAgJnByZWhl YWRlcl9zZXEsDQo+IC0gICAgICAmaGVhZGVyX3NlcSwNCj4gLSAgICAgIGxv b3BfY29uZF9nc2ksIHJnYywNCj4gLSAgICAgIG5pdGVycywgbml0ZXJzX3Nr aXAsDQo+IC0gICAgICBtaWdodF93cmFwX3ApOw0KPiArIGlmIChkaXJlY3Rf aW50ZXJuYWxfZm5fc3VwcG9ydGVkX3AgKElGTl9XSElMRV9MRU4sIGl2X3R5 cGUsDQo+ICsgICAgIE9QVElNSVpFX0ZPUl9TUEVFRCkpDQo+ICsgICB0ZXN0 X2N0cmwNCj4gKyAgICAgPSB2ZWN0X3NldF9sb29wX2NvbnRyb2xzX2J5X3do aWxlX2xlbiAobG9vcCwgbG9vcF92aW5mbywNCj4gKyAgICAmcHJlaGVhZGVy X3NlcSwgJmhlYWRlcl9zZXEsDQo+ICsgICAgcmdjLCBuaXRlcnMpOw0KPiAr IGVsc2UNCj4gKyAgIHRlc3RfY3RybA0KPiArICAgICA9IHZlY3Rfc2V0X2xv b3BfY29udHJvbHNfZGlyZWN0bHkgKGxvb3AsIGxvb3BfdmluZm8sICZwcmVo ZWFkZXJfc2VxLA0KPiArICAgICAgICAmaGVhZGVyX3NlcSwgbG9vcF9jb25k X2dzaSwgcmdjLA0KPiArICAgICAgICBuaXRlcnMsIG5pdGVyc19za2lwLA0K PiArICAgICAgICBtaWdodF93cmFwX3ApOw0KPiAgICAgICAgfQ0KPiAgICAv KiBFbWl0IGFsbCBhY2N1bXVsYXRlZCBzdGF0ZW1lbnRzLiAgKi8NCj4gZGlm ZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtbG9vcC5jYyBiL2djYy90cmVlLXZl Y3QtbG9vcC5jYw0KPiBpbmRleCAxYmE5ZjE4ZDczZS4uNWJmZmQ5YTYzMjIg MTAwNjQ0DQo+IC0tLSBhL2djYy90cmVlLXZlY3QtbG9vcC5jYw0KPiArKysg Yi9nY2MvdHJlZS12ZWN0LWxvb3AuY2MNCj4gQEAgLTEwMzYwLDEyICsxMDM2 MCwxNCBAQCB2ZWN0X3JlY29yZF9sb29wX2xlbiAobG9vcF92ZWNfaW5mbyBs b29wX3ZpbmZvLCB2ZWNfbG9vcF9sZW5zICpsZW5zLA0KPiAgICAgcmdyb3Vw IHRoYXQgb3BlcmF0ZXMgb24gTlZFQ1RPUlMgdmVjdG9ycywgd2hlcmUgMCA8 PSBJTkRFWCA8IE5WRUNUT1JTLiAgKi8NCj4gdHJlZQ0KPiAtdmVjdF9nZXRf bG9vcF9sZW4gKGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywgdmVjX2xvb3Bf bGVucyAqbGVucywNCj4gLSAgICB1bnNpZ25lZCBpbnQgbnZlY3RvcnMsIHVu c2lnbmVkIGludCBpbmRleCkNCj4gK3ZlY3RfZ2V0X2xvb3BfbGVuIChnaW1w bGVfc3RtdF9pdGVyYXRvciAqZ3NpLCBsb29wX3ZlY19pbmZvIGxvb3Bfdmlu Zm8sDQo+ICsgICAgdmVjX2xvb3BfbGVucyAqbGVucywgdW5zaWduZWQgaW50 IG52ZWN0b3JzLCB0cmVlIHZlY3R5cGUsDQo+ICsgICAgdW5zaWduZWQgaW50 IGluZGV4KQ0KPiB7DQo+ICAgIHJncm91cF9jb250cm9scyAqcmdsID0gJigq bGVucylbbnZlY3RvcnMgLSAxXTsNCj4gLSAgYm9vbCB1c2VfYmlhc19hZGp1 c3RlZF9sZW4gPQ0KPiAtICAgIExPT1BfVklORk9fUEFSVElBTF9MT0FEX1NU T1JFX0JJQVMgKGxvb3BfdmluZm8pICE9IDA7DQo+ICsgIGJvb2wgdXNlX2Jp YXNfYWRqdXN0ZWRfbGVuDQo+ICsgICAgPSBMT09QX1ZJTkZPX1BBUlRJQUxf TE9BRF9TVE9SRV9CSUFTIChsb29wX3ZpbmZvKSAhPSAwOw0KPiArICB0cmVl IGl2X3R5cGUgPSBMT09QX1ZJTkZPX1JHUk9VUF9JVl9UWVBFIChsb29wX3Zp bmZvKTsNCj4gICAgLyogUG9wdWxhdGUgdGhlIHJncm91cCdzIGxlbiBhcnJh eSwgaWYgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSB3ZSd2ZQ0KPiAgICAgICB1 c2VkIGl0LiAgKi8NCj4gQEAgLTEwMzg2LDggKzEwMzg4LDggQEAgdmVjdF9n ZXRfbG9vcF9sZW4gKGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywgdmVjX2xv b3BfbGVucyAqbGVucywNCj4gICBpZiAodXNlX2JpYXNfYWRqdXN0ZWRfbGVu KQ0KPiAgICAgew0KPiAgICAgICBnY2NfYXNzZXJ0IChpID09IDApOw0KPiAt ICAgICAgIHRyZWUgYWRqdXN0ZWRfbGVuID0NCj4gLSBtYWtlX3RlbXBfc3Nh X25hbWUgKGxlbl90eXBlLCBOVUxMLCAiYWRqdXN0ZWRfbG9vcF9sZW4iKTsN Cj4gKyAgICAgICB0cmVlIGFkanVzdGVkX2xlbg0KPiArID0gbWFrZV90ZW1w X3NzYV9uYW1lIChsZW5fdHlwZSwgTlVMTCwgImFkanVzdGVkX2xvb3BfbGVu Iik7DQo+ICAgICAgIFNTQV9OQU1FX0RFRl9TVE1UIChhZGp1c3RlZF9sZW4p ID0gZ2ltcGxlX2J1aWxkX25vcCAoKTsNCj4gICAgICAgcmdsLT5iaWFzX2Fk anVzdGVkX2N0cmwgPSBhZGp1c3RlZF9sZW47DQo+ICAgICB9DQo+IEBAIC0x MDM5Niw2ICsxMDM5OCwyNyBAQCB2ZWN0X2dldF9sb29wX2xlbiAobG9vcF92 ZWNfaW5mbyBsb29wX3ZpbmZvLCB2ZWNfbG9vcF9sZW5zICpsZW5zLA0KPiAg ICBpZiAodXNlX2JpYXNfYWRqdXN0ZWRfbGVuKQ0KPiAgICAgIHJldHVybiBy Z2wtPmJpYXNfYWRqdXN0ZWRfY3RybDsNCj4gKyAgZWxzZSBpZiAoZGlyZWN0 X2ludGVybmFsX2ZuX3N1cHBvcnRlZF9wIChJRk5fV0hJTEVfTEVOLCBpdl90 eXBlLA0KPiArICAgIE9QVElNSVpFX0ZPUl9TUEVFRCkpDQo+ICsgICAgew0K PiArICAgICAgdHJlZSBsb29wX2xlbiA9IHJnbC0+Y29udHJvbHNbaW5kZXhd Ow0KPiArICAgICAgcG9seV9pbnQ2NCBudW5pdHMxID0gVFlQRV9WRUNUT1Jf U1VCUEFSVFMgKHJnbC0+dHlwZSk7DQo+ICsgICAgICBwb2x5X2ludDY0IG51 bml0czIgPSBUWVBFX1ZFQ1RPUl9TVUJQQVJUUyAodmVjdHlwZSk7DQo+ICsg ICAgICBpZiAobWF5YmVfbmUgKG51bml0czEsIG51bml0czIpKQ0KPiArIHsN Cj4gKyAgIC8qIEEgbG9vcCBsZW4gZm9yIGRhdGEgdHlwZSBYIGNhbiBiZSBy ZXVzZWQgZm9yIGRhdGEgdHlwZSBZDQo+ICsgICAgICBpZiBYIGhhcyBOIHRp bWVzIG1vcmUgZWxlbWVudHMgdGhhbiBZIGFuZCBpZiBZJ3MgZWxlbWVudHMN Cj4gKyAgICAgIGFyZSBOIHRpbWVzIGJpZ2dlciB0aGFuIFgncy4gICovDQo+ ICsgICBnY2NfYXNzZXJ0IChtdWx0aXBsZV9wIChudW5pdHMxLCBudW5pdHMy KSk7DQo+ICsgICB1bnNpZ25lZCBpbnQgZmFjdG9yID0gZXhhY3RfZGl2IChu dW5pdHMxLCBudW5pdHMyKS50b19jb25zdGFudCAoKTsNCj4gKyAgIGdpbXBs ZV9zZXEgc2VxID0gTlVMTDsNCj4gKyAgIGxvb3BfbGVuID0gZ2ltcGxlX2J1 aWxkICgmc2VxLCBSRElWX0VYUFIsIGl2X3R5cGUsIGxvb3BfbGVuLA0KPiAr ICAgIGJ1aWxkX2ludF9jc3QgKGl2X3R5cGUsIGZhY3RvcikpOw0KPiArICAg aWYgKHNlcSkNCj4gKyAgICAgZ3NpX2luc2VydF9zZXFfYmVmb3JlIChnc2ks IHNlcSwgR1NJX1NBTUVfU1RNVCk7DQo+ICsgfQ0KPiArICAgICAgcmV0dXJu IGxvb3BfbGVuOw0KPiArICAgIH0NCj4gICAgZWxzZQ0KPiAgICAgIHJldHVy biByZ2wtPmNvbnRyb2xzW2luZGV4XTsNCj4gfQ0KPiBkaWZmIC0tZ2l0IGEv Z2NjL3RyZWUtdmVjdC1zdG10cy5jYyBiL2djYy90cmVlLXZlY3Qtc3RtdHMu Y2MNCj4gaW5kZXggZWZhMmQwZGFhNTIuLjcwOGM4YTFkODA2IDEwMDY0NA0K PiAtLS0gYS9nY2MvdHJlZS12ZWN0LXN0bXRzLmNjDQo+ICsrKyBiL2djYy90 cmVlLXZlY3Qtc3RtdHMuY2MNCj4gQEAgLTg2NTMsOCArODY1Myw5IEBAIHZl Y3Rvcml6YWJsZV9zdG9yZSAodmVjX2luZm8gKnZpbmZvLA0KPiAgICAgICBl bHNlIGlmIChsb29wX2xlbnMpDQo+IHsNCj4gICB0cmVlIGZpbmFsX2xlbg0K PiAtICAgICA9IHZlY3RfZ2V0X2xvb3BfbGVuIChsb29wX3ZpbmZvLCBsb29w X2xlbnMsDQo+IC0gdmVjX251bSAqIG5jb3BpZXMsIHZlY19udW0gKiBqICsg aSk7DQo+ICsgICAgID0gdmVjdF9nZXRfbG9vcF9sZW4gKGdzaSwgbG9vcF92 aW5mbywgbG9vcF9sZW5zLA0KPiArIHZlY19udW0gKiBuY29waWVzLCB2ZWN0 eXBlLA0KPiArIHZlY19udW0gKiBqICsgaSk7DQo+ICAgdHJlZSBwdHIgPSBi dWlsZF9pbnRfY3N0IChyZWZfdHlwZSwgYWxpZ24gKiBCSVRTX1BFUl9VTklU KTsNCj4gICBtYWNoaW5lX21vZGUgdm1vZGUgPSBUWVBFX01PREUgKHZlY3R5 cGUpOw0KPiAgIG9wdF9tYWNoaW5lX21vZGUgbmV3X292bW9kZQ0KPiBAQCAt MTAwMDksOCArMTAwMTAsOCBAQCB2ZWN0b3JpemFibGVfbG9hZCAodmVjX2lu Zm8gKnZpbmZvLA0KPiAgICAgZWxzZSBpZiAobG9vcF9sZW5zICYmIG1lbW9y eV9hY2Nlc3NfdHlwZSAhPSBWTUFUX0lOVkFSSUFOVCkNCj4gICAgICAgew0K PiB0cmVlIGZpbmFsX2xlbg0KPiAtICAgPSB2ZWN0X2dldF9sb29wX2xlbiAo bG9vcF92aW5mbywgbG9vcF9sZW5zLA0KPiAtICAgICAgICB2ZWNfbnVtICog bmNvcGllcywNCj4gKyAgID0gdmVjdF9nZXRfbG9vcF9sZW4gKGdzaSwgbG9v cF92aW5mbywgbG9vcF9sZW5zLA0KPiArICAgICAgICB2ZWNfbnVtICogbmNv cGllcywgdmVjdHlwZSwNCj4gICAgICAgIHZlY19udW0gKiBqICsgaSk7DQo+ IHRyZWUgcHRyID0gYnVpbGRfaW50X2NzdCAocmVmX3R5cGUsDQo+ICAgYWxp Z24gKiBCSVRTX1BFUl9VTklUKTsNCj4gZGlmZiAtLWdpdCBhL2djYy90cmVl LXZlY3Rvcml6ZXIuaCBiL2djYy90cmVlLXZlY3Rvcml6ZXIuaA0KPiBpbmRl eCA5Y2YyZmIyM2ZlMy4uZTVjZjM4Y2FmNGIgMTAwNjQ0DQo+IC0tLSBhL2dj Yy90cmVlLXZlY3Rvcml6ZXIuaA0KPiArKysgYi9nY2MvdHJlZS12ZWN0b3Jp emVyLmgNCj4gQEAgLTIyOTMsOCArMjI5Myw4IEBAIGV4dGVybiB0cmVlIHZl Y3RfZ2V0X2xvb3BfbWFzayAoZ2ltcGxlX3N0bXRfaXRlcmF0b3IgKiwgdmVj X2xvb3BfbWFza3MgKiwNCj4gdW5zaWduZWQgaW50LCB0cmVlLCB1bnNpZ25l ZCBpbnQpOw0KPiBleHRlcm4gdm9pZCB2ZWN0X3JlY29yZF9sb29wX2xlbiAo bG9vcF92ZWNfaW5mbywgdmVjX2xvb3BfbGVucyAqLCB1bnNpZ25lZCBpbnQs DQo+ICAgdHJlZSwgdW5zaWduZWQgaW50KTsNCj4gLWV4dGVybiB0cmVlIHZl Y3RfZ2V0X2xvb3BfbGVuIChsb29wX3ZlY19pbmZvLCB2ZWNfbG9vcF9sZW5z ICosIHVuc2lnbmVkIGludCwNCj4gLSAgICAgICAgdW5zaWduZWQgaW50KTsN Cj4gK2V4dGVybiB0cmVlIHZlY3RfZ2V0X2xvb3BfbGVuIChnaW1wbGVfc3Rt dF9pdGVyYXRvciAqLCBsb29wX3ZlY19pbmZvLA0KPiArICAgICAgICB2ZWNf bG9vcF9sZW5zICosIHVuc2lnbmVkIGludCwgdHJlZSwgdW5zaWduZWQgaW50 KTsNCj4gZXh0ZXJuIGdpbXBsZV9zZXEgdmVjdF9nZW5fbGVuICh0cmVlLCB0 cmVlLCB0cmVlLCB0cmVlKTsNCj4gZXh0ZXJuIHN0bXRfdmVjX2luZm8gaW5m b19mb3JfcmVkdWN0aW9uICh2ZWNfaW5mbyAqLCBzdG10X3ZlY19pbmZvKTsN Cj4gZXh0ZXJuIGJvb2wgcmVkdWN0aW9uX2ZuX2Zvcl9zY2FsYXJfY29kZSAo Y29kZV9oZWxwZXIsIGludGVybmFsX2ZuICopOw0KIA0K ------=_001_NextPart663315328206_=------