From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from xry111.site (xry111.site [89.208.246.23]) by sourceware.org (Postfix) with ESMTPS id 52C7D3858C5F for ; Sat, 22 Jul 2023 07:49:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 52C7D3858C5F Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=xry111.site Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=xry111.site DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=xry111.site; s=default; t=1690012172; bh=nP0FK2gvxkk5dC1M7lZjm7cr9pshs26upeGZ5WiNPFM=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=IxDj4maw/JEyFcE63Bgw2SjgbKAF5KPybaTHRlPxe5JQVOPCmeOiN/6vNKIwiKIAa n7eigcjAL3gA0ZZ5pWN1ALtaXSSsEGtnqAd35kykGLMr33ps14LaktIwlOti/xmL3T sSA3NACCQ7FqjjVCA9NZ/14FJ4oY9hCVExKyQh/0= Received: from [192.168.3.30] (unknown [36.44.139.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature ECDSA (P-384)) (Client did not present a certificate) (Authenticated sender: xry111@xry111.site) by xry111.site (Postfix) with ESMTPSA id E50F56599C; Sat, 22 Jul 2023 03:49:30 -0400 (EDT) Message-ID: <971354976c344d5ec087e8cce962cdbe7710faff.camel@xry111.site> Subject: Re: [PATCH 2/2] LoongArch: Fix immediate overflow check bug From: Xi Ruoyao To: mengqinggang , binutils@sourceware.org, Nick Clifton Cc: xuchenghua@loongson.cn, chenglulu@loongson.cn, liuzhensong@loongson.cn, i.swmail@xen0n.name, maskray@google.com, hejinyang@loongson.cn Date: Sat, 22 Jul 2023 15:47:59 +0800 In-Reply-To: <9f523a9f-8414-49d2-b3db-303171bcc389@loongson.cn> References: <20230717082229.2149099-1-mengqinggang@loongson.cn> <20230717082229.2149099-2-mengqinggang@loongson.cn> <9f523a9f-8414-49d2-b3db-303171bcc389@loongson.cn> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.48.4 MIME-Version: 1.0 X-Spam-Status: No, score=-7.4 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,LIKELY_SPAM_FROM,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: T24gRnJpLCAyMDIzLTA3LTIxIGF0IDExOjU2ICswODAwLCBtZW5ncWluZ2dhbmcgd3JvdGU6Cj4g SGkKPiAKPiBUaGVzZSB0d28gcGF0Y2hlcyBhbHNvIG5lZWQgdG8gYmUgbWVyZ2VkIGludG8gdGhl IDIuNDEgYnJhbmNoLiBUaGFua3MuCgorTmljayB0b28uCgpGb3IgMS8yIGl0IHNob3VsZCBiZSBP SyB0byBiYWNrcG9ydC4gIEZvciAyLzIgdGhlIHN1YmplY3QgYW5kIHRoZSBjb21taXQKbWVzc2Fn ZSBkbyBub3QgYWRkIHVwOiB0aGUgc3ViamVjdCBzYXlzICJGaXggaW1tZWRpYXRlIG92ZXJmbG93 IGNoZWNrCmJ1ZyIsIGJ1dCB0aGUgbWVzc2FnZSBzYXlzICJmb3IgZWFzaWVyIHVuZGVyc3RhbmQi LiAgU28gZG9lcyAyLzIgcmVhbGx5CmZpeCBhIGJ1Zz8gIElmIHRydWUgd2Ugc2hvdWxkIGJhY2tw b3J0IGl0LCBvdGhlcndpc2Ugd2Ugc2hvdWxkIG5vdC4KCj4g5ZyoIDIwMjMvNy8xNyDkuIvljYg0 OjIyLCBtZW5ncWluZ2dhbmcg5YaZ6YGTOgo+ID4gRm9yIEIxNi9CMjEvQjI2L1BDUkVMMjBfUzIg cmVsb2NhdGlvbnMsIGlmIGltbWVkaWF0ZSBvdmVyZmxvdyBjaGVjayBhZnRlcgo+ID4gcmlnaHRz aGlmdCwgYW5kIHRoZSBtYXNrIG5lZWQgdG8gaW5jbHVkZSBzaWduIGJpdC4KPiA+IAo+ID4gTm93 LCB0aGUgaW1tZWRpYXRlIG92ZXJmbG93IGNoZWNrIGJlZm9yZSByaWdodHNoaWZ0IGZvciBlYXNp ZXIgdW5kZXJzdGFuZC4KPiA+IAo+ID4gYmZkL0NoYW5nZUxvZzoKPiA+IAo+ID4gwqDCoMKgwqDC oMKgwqDCoCogZWxmeHgtbG9vbmdhcmNoLmMgKHJlbG9jX2JpdHNfcGNyZWwyMF9zMik6IERlbGV0 ZS4KPiA+IMKgwqDCoMKgwqDCoMKgwqAocmVsb2NfYml0c19iMTYpOiBEZWxldGUuCj4gPiDCoMKg wqDCoMKgwqDCoMKgKHJlbG9jX2JpdHNfYjIxKTogRGVsZXRlLgo+ID4gwqDCoMKgwqDCoMKgwqDC oChyZWxvY19iaXRzX2IyNik6IERlbGV0ZS4KPiA+IMKgwqDCoMKgwqDCoMKgwqAocmVsb2Nfc2ln bl9iaXRzKTogTmV3Lgo+ID4gLS0tCj4gPiDCoCBiZmQvZWxmeHgtbG9vbmdhcmNoLmMgfCAxNjAg KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiDCoCAxIGZpbGUg Y2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgMTI4IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZm IC0tZ2l0IGEvYmZkL2VsZnh4LWxvb25nYXJjaC5jIGIvYmZkL2VsZnh4LWxvb25nYXJjaC5jCj4g PiBpbmRleCBkYTQ0MGQ1NWMzYy4uMmQyOTkwNTBjMTIgMTAwNjQ0Cj4gPiAtLS0gYS9iZmQvZWxm eHgtbG9vbmdhcmNoLmMKPiA+ICsrKyBiL2JmZC9lbGZ4eC1sb29uZ2FyY2guYwo+ID4gQEAgLTU0 LDEzICs1NCw3IEBAIHR5cGVkZWYgc3RydWN0IGxvb25nYXJjaF9yZWxvY19ob3d0b190eXBlX3N0 cnVjdAo+ID4gwqAgc3RhdGljIGJvb2wKPiA+IMKgIHJlbG9jX2JpdHMgKGJmZCAqYWJmZCwgcmVs b2NfaG93dG9fdHlwZSAqaG93dG8sIGJmZF92bWEgKnZhbCk7Cj4gPiDCoCBzdGF0aWMgYm9vbAo+ ID4gLXJlbG9jX2JpdHNfcGNyZWwyMF9zMiAoYmZkICphYmZkLCByZWxvY19ob3d0b190eXBlICpo b3d0bywgYmZkX3ZtYSAqZml4X3ZhbCk7Cj4gPiAtc3RhdGljIGJvb2wKPiA+IC1yZWxvY19iaXRz X2IxNiAoYmZkICphYmZkLCByZWxvY19ob3d0b190eXBlICpob3d0bywgYmZkX3ZtYSAqZml4X3Zh bCk7Cj4gPiAtc3RhdGljIGJvb2wKPiA+IC1yZWxvY19iaXRzX2IyMSAoYmZkICphYmZkLCByZWxv Y19ob3d0b190eXBlICpob3d0bywgYmZkX3ZtYSAqZml4X3ZhbCk7Cj4gPiAtc3RhdGljIGJvb2wK PiA+IC1yZWxvY19iaXRzX2IyNiAoYmZkICphYmZkLCByZWxvY19ob3d0b190eXBlICpob3d0bywg YmZkX3ZtYSAqdmFsKTsKPiA+ICtyZWxvY19zaWduX2JpdHMgKGJmZCAqYWJmZCwgcmVsb2NfaG93 dG9fdHlwZSAqaG93dG8sIGJmZF92bWEgKmZpeF92YWwpOwo+ID4gwqAgCj4gPiDCoCBzdGF0aWMg YmZkX3JlbG9jX3N0YXR1c190eXBlCj4gPiDCoCBsb29uZ2FyY2hfZWxmX2FkZF9zdWJfcmVsb2Mg KGJmZCAqLCBhcmVsZW50ICosIGFzeW1ib2wgKiwgdm9pZCAqLAo+ID4gQEAgLTQ1Nyw3ICs0NTEs NyBAQCBzdGF0aWMgbG9vbmdhcmNoX3JlbG9jX2hvd3RvX3R5cGUgbG9vbmdhcmNoX2hvd3RvX3Rh YmxlW10gPQo+ID4gwqDCoMKgwqDCoMKgwqDCoCAweDNmZmZjMDAswqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIGRzdF9tYXNrICov Cj4gPiDCoMKgwqDCoMKgwqDCoMKgIGZhbHNlLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIHBjcmVsX29mZnNldCAq Lwo+ID4gwqDCoMKgwqDCoMKgwqDCoCBCRkRfUkVMT0NfTEFSQ0hfU09QX1BPUF8zMl9TXzEwXzE2 X1MyLMKgwqAgLyogYmZkX3JlbG9jX2NvZGVfcmVhbF90eXBlICovCj4gPiAtwqDCoMKgwqDCoMKg wqAgcmVsb2NfYml0c19iMTYswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgLyogYWRqdXN0X3JlbG9jX2JpdHMgKi8KPiA+ICvCoMKgwqDCoMKgwqDCoCBy ZWxvY19zaWduX2JpdHMswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC8qIGFkanVzdF9yZWxvY19iaXRzICovCj4gPiDCoMKgwqDCoMKgwqDCoMKgIE5VTEwp LMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIC8qIGxhcmNoX3JlbG9jX3R5cGVfbmFtZSAqLwo+ID4gwqAgCj4gPiDCoMKg wqAgTE9PTkdBUkNIX0hPV1RPIChSX0xBUkNIX1NPUF9QT1BfMzJfU181XzIwLMKgwqAgLyogdHlw ZSAoNDMpLsKgICovCj4gPiBAQCAtNDkzLDcgKzQ4Nyw3IEBAIHN0YXRpYyBsb29uZ2FyY2hfcmVs b2NfaG93dG9fdHlwZSBsb29uZ2FyY2hfaG93dG9fdGFibGVbXSA9Cj4gPiDCoMKgwqDCoMKgwqDC oMKgIGZhbHNlLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIHBjcmVsX29mZnNldCAqLwo+ID4gwqDCoMKgwqDCoMKg wqDCoCBCRkRfUkVMT0NfTEFSQ0hfU09QX1BPUF8zMl9TXzBfNV8xMF8xNl9TMiwKPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIGJmZF9yZWxvY19jb2RlX3Jl YWxfdHlwZSAqLwo+ID4gLcKgwqDCoMKgwqDCoMKgIHJlbG9jX2JpdHNfYjIxLMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIGFkanVzdF9yZWxvY19i aXRzICovCj4gPiArwqDCoMKgwqDCoMKgwqAgcmVsb2Nfc2lnbl9iaXRzLMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBhZGp1c3RfcmVsb2NfYml0cyAq Lwo+ID4gwqDCoMKgwqDCoMKgwqDCoCBOVUxMKSzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBsYXJjaF9yZWxvY190 eXBlX25hbWUgKi8KPiA+IMKgIAo+ID4gwqDCoMKgIExPT05HQVJDSF9IT1dUTyAoUl9MQVJDSF9T T1BfUE9QXzMyX1NfMF8xMF8xMF8xNl9TMizCoMKgwqDCoMKgwqDCoMKgLyogdHlwZSAoNDUpLsKg ICovCj4gPiBAQCAtNTExLDcgKzUwNSw3IEBAIHN0YXRpYyBsb29uZ2FyY2hfcmVsb2NfaG93dG9f dHlwZSBsb29uZ2FyY2hfaG93dG9fdGFibGVbXSA9Cj4gPiDCoMKgwqDCoMKgwqDCoMKgIGZhbHNl LMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoC8qIHBjcmVsX29mZnNldCAqLwo+ID4gwqDCoMKgwqDCoMKgwqDCoCBCRkRfUkVM T0NfTEFSQ0hfU09QX1BPUF8zMl9TXzBfMTBfMTBfMTZfUzIsCj4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBiZmRfcmVsb2NfY29kZV9yZWFsX3R5cGUgKi8KPiA+ IC3CoMKgwqDCoMKgwqDCoCByZWxvY19iaXRzX2IyNizCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBhZGp1c3RfcmVsb2NfYml0cyAqLwo+ID4gK8KgwqDC oMKgwqDCoMKgIHJlbG9jX3NpZ25fYml0cyzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgLyogYWRqdXN0X3JlbG9jX2JpdHMgKi8KPiA+IMKgwqDCoMKgwqDCoMKg wqAgTlVMTCkswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgLyogbGFyY2hfcmVsb2NfdHlwZV9uYW1lICovCj4gPiDCoCAKPiA+ IMKgwqDCoCBMT09OR0FSQ0hfSE9XVE8gKFJfTEFSQ0hfU09QX1BPUF8zMl9VLMKgwqDCoMKgwqDC oC8qIHR5cGUgKDQ2KS7CoCAqLwo+ID4gQEAgLTc2Niw3ICs3NjAsNyBAQCBzdGF0aWMgbG9vbmdh cmNoX3JlbG9jX2hvd3RvX3R5cGUgbG9vbmdhcmNoX2hvd3RvX3RhYmxlW10gPQo+ID4gwqDCoMKg wqDCoMKgwqDCoCAweDNmZmZjMDAswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGRzdF9tYXNrLsKgICovCj4gPiDCoMKgwqDCoMKgwqDC oMKgIGZhbHNlLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoC8qIHBjcmVsX29mZnNldC7CoCAqLwo+ID4gwqDCoMKgwqDCoMKg wqDCoCBCRkRfUkVMT0NfTEFSQ0hfQjE2LMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgLyogYmZkX3JlbG9jX2NvZGVfcmVhbF90eXBlLsKgICovCj4gPiAtwqDCoMKgwqDCoMKg wqAgcmVsb2NfYml0c19iMTYswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgLyogYWRqdXN0X3JlbG9jX2JpdHMuwqAgKi8KPiA+ICvCoMKgwqDCoMKgwqDCoCBy ZWxvY19zaWduX2JpdHMswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoC8qIGFkanVzdF9yZWxvY19iaXRzLsKgICovCj4gPiDCoMKgwqDCoMKgwqDCoMKgICJiMTYi KSzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgLyogbGFyY2hfcmVsb2NfdHlwZV9uYW1lLsKgICovCj4gPiDCoCAKPiA+IMKgwqDC oCBMT09OR0FSQ0hfSE9XVE8gKFJfTEFSQ0hfQjIxLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAvKiB0eXBlICg2NSkuwqAgKi8KPiA+IEBAIC03ODMsNyArNzc3 LDcgQEAgc3RhdGljIGxvb25nYXJjaF9yZWxvY19ob3d0b190eXBlIGxvb25nYXJjaF9ob3d0b190 YWJsZVtdID0KPiA+IMKgwqDCoMKgwqDCoMKgwqAgMHgzZmZmYzFmLMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBkc3RfbWFzay7CoCAq Lwo+ID4gwqDCoMKgwqDCoMKgwqDCoCBmYWxzZSzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBwY3JlbF9vZmZzZXQuwqAg Ki8KPiA+IMKgwqDCoMKgwqDCoMKgwqAgQkZEX1JFTE9DX0xBUkNIX0IyMSzCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGJmZF9yZWxvY19jb2RlX3JlYWxfdHlwZS7CoCAq Lwo+ID4gLcKgwqDCoMKgwqDCoMKgIHJlbG9jX2JpdHNfYjIxLMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGFkanVzdF9yZWxvY19iaXRzLsKgICovCj4g PiArwqDCoMKgwqDCoMKgwqAgcmVsb2Nfc2lnbl9iaXRzLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBhZGp1c3RfcmVsb2NfYml0cy7CoCAqLwo+ID4gwqDC oMKgwqDCoMKgwqDCoCAiYjIxIikswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGxhcmNoX3JlbG9jX3R5cGVfbmFtZS7CoCAq Lwo+ID4gwqAgCj4gPiDCoMKgwqAgTE9PTkdBUkNIX0hPV1RPIChSX0xBUkNIX0IyNizCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogdHlwZSAoNjYpLsKgICov Cj4gPiBAQCAtODAwLDcgKzc5NCw3IEBAIHN0YXRpYyBsb29uZ2FyY2hfcmVsb2NfaG93dG9fdHlw ZSBsb29uZ2FyY2hfaG93dG9fdGFibGVbXSA9Cj4gPiDCoMKgwqDCoMKgwqDCoMKgIDB4MDNmZmZm ZmYswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAvKiBkc3RfbWFzay7CoCAqLwo+ID4gwqDCoMKgwqDCoMKgwqDCoCBmYWxzZSzCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAv KiBwY3JlbF9vZmZzZXQuwqAgKi8KPiA+IMKgwqDCoMKgwqDCoMKgwqAgQkZEX1JFTE9DX0xBUkNI X0IyNizCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGJmZF9yZWxvY19j b2RlX3JlYWxfdHlwZS7CoCAqLwo+ID4gLcKgwqDCoMKgwqDCoMKgIHJlbG9jX2JpdHNfYjI2LMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGFkanVzdF9y ZWxvY19iaXRzLsKgICovCj4gPiArwqDCoMKgwqDCoMKgwqAgcmVsb2Nfc2lnbl9iaXRzLMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBhZGp1c3RfcmVsb2Nf Yml0cy7CoCAqLwo+ID4gwqDCoMKgwqDCoMKgwqDCoCAiYjI2IikswqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGxhcmNoX3Jl bG9jX3R5cGVfbmFtZS7CoCAqLwo+ID4gwqAgCj4gPiDCoMKgwqAgTE9PTkdBUkNIX0hPV1RPIChS X0xBUkNIX0FCU19ISTIwLMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogdHlwZSAoNjcpLsKgICovCj4g PiBAQCAtMTQzNiw3ICsxNDMwLDcgQEAgc3RhdGljIGxvb25nYXJjaF9yZWxvY19ob3d0b190eXBl IGxvb25nYXJjaF9ob3d0b190YWJsZVtdID0KPiA+IMKgwqDCoMKgwqDCoMKgwqAgMHgxZmZmZmUw LMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAvKiBkc3RfbWFzay7CoCAqLwo+ID4gwqDCoMKgwqDCoMKgwqDCoCBmYWxzZSzCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAv KiBwY3JlbF9vZmZzZXQuwqAgKi8KPiA+IMKgwqDCoMKgwqDCoMKgwqAgQkZEX1JFTE9DX0xBUkNI X1BDUkVMMjBfUzIswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogYmZkX3JlbG9jX2NvZGVfcmVh bF90eXBlLsKgICovCj4gPiAtwqDCoMKgwqDCoMKgwqAgcmVsb2NfYml0c19wY3JlbDIwX3MyLMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBhZGp1c3RfcmVsb2NfYml0cy7CoCAq Lwo+ID4gK8KgwqDCoMKgwqDCoMKgIHJlbG9jX3NpZ25fYml0cyzCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogYWRqdXN0X3JlbG9jX2JpdHMuwqAgKi8KPiA+ IMKgwqDCoMKgwqDCoMKgwqAgTlVMTCkswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogbGFyY2hfcmVsb2NfdHlwZV9uYW1l LsKgICovCj4gPiDCoCAKPiA+IMKgwqDCoCAvKiBDYW5vbmljYWwgRnJhbWUgQWRkcmVzcy7CoCAq Lwo+ID4gQEAgLTE2NzcsMTIgKzE2NzEsMTQgQEAgcmVsb2NfYml0cyAoYmZkICphYmZkIEFUVFJJ QlVURV9VTlVTRUQsCj4gPiDCoCB9Cj4gPiDCoCAKPiA+IMKgIHN0YXRpYyBib29sCj4gPiAtcmVs b2NfYml0c19wY3JlbDIwX3MyIChiZmQgKmFiZmQsIHJlbG9jX2hvd3RvX3R5cGUgKmhvd3RvLCBi ZmRfdm1hICpmaXhfdmFsKQo+ID4gK3JlbG9jX3NpZ25fYml0cyAoYmZkICphYmZkLCByZWxvY19o b3d0b190eXBlICpob3d0bywgYmZkX3ZtYSAqZml4X3ZhbCkKPiA+IMKgIHsKPiA+ICvCoCBpZiAo aG93dG8tPmNvbXBsYWluX29uX292ZXJmbG93ICE9IGNvbXBsYWluX292ZXJmbG93X3NpZ25lZCkK PiA+ICvCoMKgwqAgcmV0dXJuIGZhbHNlOwo+ID4gKwo+ID4gwqDCoMKgIGJmZF9zaWduZWRfdm1h IHZhbCA9IChiZmRfc2lnbmVkX3ZtYSkoKmZpeF92YWwpOwo+ID4gLcKgIGJmZF9zaWduZWRfdm1h IG1hc2sgPSAoKGJmZF9zaWduZWRfdm1hKTB4MSA8PCBob3d0by0+Yml0c2l6ZSkgLSAxOwo+ID4g wqAgCj4gPiAtwqAgLyogQ2hlY2sgcmlnaHRzaGlmdC7CoCAqLwo+ID4gK8KgIC8qIENoZWNrIGFs aWdubWVudC4gRklYTUU6IGlmIHJpZ2h0c2hpZnQgaXMgbm90IGFsaW5nbWVudC7CoCAqLwo+ID4g wqDCoMKgIGlmIChob3d0by0+cmlnaHRzaGlmdAo+ID4gwqDCoMKgwqDCoMKgwqAgJiYgKHZhbCAm ICgoKChiZmRfc2lnbmVkX3ZtYSkgMSkgPDwgaG93dG8tPnJpZ2h0c2hpZnQpIC0gMSkpKQo+ID4g wqDCoMKgwqDCoCB7Cj4gPiBAQCAtMTY5Miw4ICsxNjg4LDEyIEBAIHJlbG9jX2JpdHNfcGNyZWwy MF9zMiAoYmZkICphYmZkLCByZWxvY19ob3d0b190eXBlICpob3d0bywgYmZkX3ZtYSAqZml4X3Zh bCkKPiA+IMKgwqDCoMKgwqDCoMKgIHJldHVybiBmYWxzZTsKPiA+IMKgwqDCoMKgwqAgfQo+ID4g wqAgCj4gPiAtwqAgdmFsID0gdmFsID4+IGhvd3RvLT5yaWdodHNoaWZ0Owo+ID4gK8KgIGJmZF9z aWduZWRfdm1hIG1hc2sgPSAoKGJmZF9zaWduZWRfdm1hKTB4MSA8PCAoaG93dG8tPmJpdHNpemUK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKyBo b3d0by0+cmlnaHRzaGlmdCAtIDEpKSAtIDE7Cj4gPiDCoCAKPiA+ICvCoCAvKiBQb3NpdGl2ZSBu dW1iZXI6IGhpZ2ggcGFydCBpcyBhbGwgMDsKPiA+ICvCoMKgwqDCoCBOZWdhdGl2ZSBudW1iZXI6 IGlmIGhpZ2ggcGFydCBpcyBub3QgYWxsIDAsIGhpZ2ggcGFydCBtdXN0IGJlIGFsbCAxLgo+ID4g K8KgwqDCoMKgIGhpZ2ggcGFydDogZnJvbSBzaWduIGJpdCB0byBoaWdoZXN0IGJpdC7CoCAqLwo+ ID4gwqDCoMKgIGlmICgodmFsICYgfm1hc2spICYmICgodmFsICYgfm1hc2spICE9IH5tYXNrKSkK PiA+IMKgwqDCoMKgwqAgewo+ID4gwqDCoMKgwqDCoMKgwqAgKCpfYmZkX2Vycm9yX2hhbmRsZXIp IChfKCIlcEI6IHJlbG9jYXRpb24gJXMgb3ZlcmZsb3cgMHglbHgiKSwKPiA+IEBAIC0xNzAyLDEy MyArMTcwMiwyNyBAQCByZWxvY19iaXRzX3BjcmVsMjBfczIgKGJmZCAqYWJmZCwgcmVsb2NfaG93 dG9fdHlwZSAqaG93dG8sIGJmZF92bWEgKmZpeF92YWwpCj4gPiDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gZmFsc2U7Cj4gPiDCoMKgwqDCoMKgIH0KPiA+IMKgIAo+ID4gLcKgIC8qIFBlcmZvcm0gaW5z biBiaXRzIGZpZWxkLsKgICovCj4gPiAtwqAgdmFsID0gdmFsICYgbWFzazsKPiA+IC3CoCB2YWwg PDw9IGhvd3RvLT5iaXRwb3M7Cj4gPiAtCj4gPiAtwqAgKmZpeF92YWwgPSAoYmZkX3ZtYSl2YWw7 Cj4gPiAtCj4gPiAtwqAgcmV0dXJuIHRydWU7Cj4gPiAtfQo+ID4gLQo+ID4gLQo+ID4gLS8qIEFk anVzdCB2YWwgdG8gcGVyZm9ybSBpbnNuCj4gPiAtwqDCoCBSX0xBUkNIX1NPUF9QT1BfMzJfU18x MF8xNl9TMgo+ID4gLcKgwqAgUl9MQVJDSF9CMTYuwqAgKi8KPiA+IC1zdGF0aWMgYm9vbAo+ID4g LXJlbG9jX2JpdHNfYjE2IChiZmQgKmFiZmQsIHJlbG9jX2hvd3RvX3R5cGUgKmhvd3RvLCBiZmRf dm1hICpmaXhfdmFsKQo+ID4gLXsKPiA+IC3CoCBiZmRfc2lnbmVkX3ZtYSB2YWwgPSAqZml4X3Zh bDsKPiA+IC3CoCBiZmRfc2lnbmVkX3ZtYSBtYXNrID0gKChiZmRfc2lnbmVkX3ZtYSkweDEgPDwg aG93dG8tPmJpdHNpemUpIC0gMTsKPiA+IC0KPiA+IC3CoCBpZiAoaG93dG8tPmNvbXBsYWluX29u X292ZXJmbG93ICE9IGNvbXBsYWluX292ZXJmbG93X3NpZ25lZCkKPiA+IC3CoMKgwqAgcmV0dXJu IGZhbHNlOwo+ID4gLQo+ID4gLcKgIC8qIEp1ZGdlIHdoZXRoZXIgNCBieXRlcyBhbGlnbi7CoCAq Lwo+ID4gLcKgIGlmICh2YWwgJiAoKDB4MVVMIDw8IGhvd3RvLT5yaWdodHNoaWZ0KSAtIDEpKQo+ ID4gLcKgwqDCoCByZXR1cm4gZmFsc2U7Cj4gPiAtCj4gPiAtwqAgdmFsID0gdmFsID4+IGhvd3Rv LT5yaWdodHNoaWZ0Owo+ID4gLQo+ID4gLcKgIGlmICgodmFsICYgfm1hc2spICYmICgodmFsICYg fm1hc2spICE9IH5tYXNrKSkKPiA+IC3CoMKgwqAgewo+ID4gLcKgwqDCoMKgwqAgKCpfYmZkX2Vy cm9yX2hhbmRsZXIpIChfKCIlcEI6IHJlbG9jYXRpb24gJXMgb3ZlcmZsb3cgMHglbHgiKSwKPiA+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg YWJmZCwgaG93dG8tPm5hbWUsIChsb25nKSB2YWwpOwo+ID4gLcKgwqDCoMKgwqAgYmZkX3NldF9l cnJvciAoYmZkX2Vycm9yX2JhZF92YWx1ZSk7Cj4gPiAtwqDCoMKgwqDCoCByZXR1cm4gZmFsc2U7 Cj4gPiAtwqDCoMKgIH0KPiA+IC0KPiA+IC3CoCAvKiBQZXJmb3JtIGluc24gYml0cyBmaWVsZC7C oCAqLwo+ID4gLcKgIHZhbCA9IHZhbCAmIG1hc2s7Cj4gPiAtwqAgdmFsIDw8PSBob3d0by0+Yml0 cG9zOwo+ID4gLQo+ID4gLcKgICpmaXhfdmFsID0gdmFsOwo+ID4gLQo+ID4gLcKgIHJldHVybiB0 cnVlOwo+ID4gLX0KPiA+IC0KPiA+IC0vKiBSZWxvYyB0eXBlIDoKPiA+IC3CoMKgIFJfTEFSQ0hf U09QX1BPUF8zMl9TXzBfNV8xMF8xNl9TMgo+ID4gLcKgwqAgUl9MQVJDSF9CMjEuwqAgKi8KPiA+ IC1zdGF0aWMgYm9vbAo+ID4gLXJlbG9jX2JpdHNfYjIxIChiZmQgKmFiZmQsIHJlbG9jX2hvd3Rv X3R5cGUgKmhvd3RvLCBiZmRfdm1hICpmaXhfdmFsKQo+ID4gLXsKPiA+IC3CoCBiZmRfc2lnbmVk X3ZtYSB2YWwgPSAqZml4X3ZhbDsKPiA+IC3CoCBiZmRfc2lnbmVkX3ZtYSBtYXNrID0gKChiZmRf c2lnbmVkX3ZtYSkweDEgPDwgaG93dG8tPmJpdHNpemUpIC0gMTsKPiA+IC0KPiA+IC3CoCBpZiAo aG93dG8tPmNvbXBsYWluX29uX292ZXJmbG93ICE9IGNvbXBsYWluX292ZXJmbG93X3NpZ25lZCkK PiA+IC3CoMKgwqAgcmV0dXJuIGZhbHNlOwo+ID4gLQo+ID4gLcKgIC8qIEp1ZGdlIHdoZXRoZXIg NCBieXRlcyBhbGlnbi7CoCAqLwo+ID4gLcKgIGlmICh2YWwgJiAoKDB4MVVMIDw8IGhvd3RvLT5y aWdodHNoaWZ0KSAtIDEpKQo+ID4gLcKgwqDCoCByZXR1cm4gZmFsc2U7Cj4gPiAtCj4gPiDCoMKg wqAgdmFsID0gdmFsID4+IGhvd3RvLT5yaWdodHNoaWZ0Owo+ID4gLQo+ID4gLcKgIGlmICgodmFs ICYgfm1hc2spICYmICgodmFsICYgfm1hc2spICE9IH5tYXNrKSkKPiA+IC3CoMKgwqAgewo+ID4g LcKgwqDCoMKgwqAgKCpfYmZkX2Vycm9yX2hhbmRsZXIpIChfKCIlcEI6IHJlbG9jYXRpb24gJXMg b3ZlcmZsb3cgMHglbHgiKSwKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgYWJmZCwgaG93dG8tPm5hbWUsIChsb25nKSB2YWwpOwo+ID4g LcKgwqDCoMKgwqAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX2JhZF92YWx1ZSk7Cj4gPiAtwqDC oMKgwqDCoCByZXR1cm4gZmFsc2U7Cj4gPiAtwqDCoMKgIH0KPiA+IC0KPiA+IC3CoCAvKiBQZXJm b3JtIGluc24gYml0cyBmaWVsZC7CoCAqLwo+ID4gK8KgIC8qIGNhbiBkZWxldGU/ICovCj4gPiAr wqAgbWFzayA9ICgoYmZkX3NpZ25lZF92bWEpMHgxIDw8IGhvd3RvLT5iaXRzaXplKSAtIDE7Cj4g PiDCoMKgwqAgdmFsID0gdmFsICYgbWFzazsKPiA+IMKgIAo+ID4gLcKgIC8qIFBlcmZvcm0gaW5z biBiaXRzIGZpZWxkLsKgIDE1OjA8PDEwLCAyMDoxNj4+MTYuwqAgKi8KPiA+IC3CoCB2YWwgPSAo KHZhbCAmIDB4ZmZmZikgPDwgMTApIHwgKCh2YWwgPj4gMTYpICYgMHgxZik7Cj4gPiAtCj4gPiAt wqAgKmZpeF92YWwgPSB2YWw7Cj4gPiAtCj4gPiAtwqAgcmV0dXJuIHRydWU7Cj4gPiAtfQo+ID4g LQo+ID4gLS8qIFJlbG9jIHR5cGU6Cj4gPiAtwqDCoCBSX0xBUkNIX1NPUF9QT1BfMzJfU18wXzEw XzEwXzE2X1MyCj4gPiAtwqDCoCBSX0xBUkNIX0IyNi7CoCAqLwo+ID4gLXN0YXRpYyBib29sCj4g PiAtcmVsb2NfYml0c19iMjYgKGJmZCAqYWJmZCwgcmVsb2NfaG93dG9fdHlwZSAqaG93dG8sIGJm ZF92bWEgKmZpeF92YWwpCj4gPiAtewo+ID4gLcKgIGJmZF9zaWduZWRfdm1hIHZhbCA9ICpmaXhf dmFsOwo+ID4gLcKgIGJmZF9zaWduZWRfdm1hIG1hc2sgPSAoKGJmZF9zaWduZWRfdm1hKTB4MSA8 PCBob3d0by0+Yml0c2l6ZSkgLSAxOwo+ID4gLQo+ID4gLcKgIGlmIChob3d0by0+Y29tcGxhaW5f b25fb3ZlcmZsb3cgIT0gY29tcGxhaW5fb3ZlcmZsb3dfc2lnbmVkKQo+ID4gLcKgwqDCoCByZXR1 cm4gZmFsc2U7Cj4gPiAtCj4gPiAtwqAgLyogSnVkZ2Ugd2hldGhlciA0IGJ5dGVzIGFsaWduLsKg ICovCj4gPiAtwqAgaWYgKHZhbCAmICgoMHgxVUwgPDwgaG93dG8tPnJpZ2h0c2hpZnQpIC0gMSkp Cj4gPiAtwqDCoMKgIHJldHVybiBmYWxzZTsKPiA+IC0KPiA+IC3CoCB2YWwgPSB2YWwgPj4gaG93 dG8tPnJpZ2h0c2hpZnQ7Cj4gPiAtCj4gPiAtwqAgaWYgKCh2YWwgJiB+bWFzaykgJiYgKCh2YWwg JiB+bWFzaykgIT0gfm1hc2spKQo+ID4gK8KgIHN3aXRjaCAoaG93dG8tPnR5cGUpCj4gPiDCoMKg wqDCoMKgIHsKPiA+IC3CoMKgwqDCoMKgICgqX2JmZF9lcnJvcl9oYW5kbGVyKSAoXygiJXBCOiBy ZWxvY2F0aW9uICVzIG92ZXJmbG93IDB4JWx4IiksCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFiZmQsIGhvd3RvLT5uYW1lLCAobG9u ZykgdmFsKTsKPiA+IC3CoMKgwqDCoMKgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9iYWRfdmFs dWUpOwo+ID4gLcKgwqDCoMKgwqAgcmV0dXJuIGZhbHNlOwo+ID4gK8KgwqDCoCBjYXNlIFJfTEFS Q0hfU09QX1BPUF8zMl9TXzBfMTBfMTBfMTZfUzI6Cj4gPiArwqDCoMKgIGNhc2UgUl9MQVJDSF9C MjY6Cj4gPiArwqDCoMKgwqDCoCAvKiBQZXJmb3JtIGluc24gYml0cyBmaWVsZC7CoCAyNToxNj4+ MTYsIDE1OjA8PDEwLsKgICovCj4gPiArwqDCoMKgwqDCoCB2YWwgPSAoKHZhbCAmIDB4ZmZmZikg PDwgMTApIHwgKCh2YWwgPj4gMTYpICYgMHgzZmYpOwo+ID4gK8KgwqDCoMKgwqAgYnJlYWs7Cj4g PiArwqDCoMKgIGNhc2UgUl9MQVJDSF9CMjE6Cj4gPiArwqDCoMKgwqDCoCB2YWwgPSAoKHZhbCAm IDB4ZmZmZikgPDwgMTApIHwgKCh2YWwgPj4gMTYpICYgMHgxZik7Cj4gPiArwqDCoMKgwqDCoCBi cmVhazsKPiA+ICvCoMKgwqAgZGVmYXVsdDoKPiA+ICvCoMKgwqDCoMKgIHZhbCA8PD0gaG93dG8t PmJpdHBvczsKPiA+ICvCoMKgwqDCoMKgIGJyZWFrOwo+ID4gwqDCoMKgwqDCoCB9Cj4gPiDCoCAK PiA+IC0KPiA+IC3CoCAvKiBQZXJmb3JtIGluc24gYml0cyBmaWVsZC7CoCAqLwo+ID4gLcKgIHZh bCA9IHZhbCAmIG1hc2s7Cj4gPiAtCj4gPiAtwqAgLyogUGVyZm9ybSBpbnNuIGJpdHMgZmllbGQu wqAgMjU6MTY+PjE2LCAxNTowPDwxMC7CoCAqLwo+ID4gLcKgIHZhbCA9ICgodmFsICYgMHhmZmZm KSA8PCAxMCkgfCAoKHZhbCA+PiAxNikgJiAweDNmZik7Cj4gPiAtCj4gPiDCoMKgwqAgKmZpeF92 YWwgPSB2YWw7Cj4gPiAtCj4gPiDCoMKgwqAgcmV0dXJuIHRydWU7Cj4gPiDCoCB9Cj4gPiDCoCAK PiAKCi0tIApYaSBSdW95YW8gPHhyeTExMUB4cnkxMTEuc2l0ZT4KU2Nob29sIG9mIEFlcm9zcGFj ZSBTY2llbmNlIGFuZCBUZWNobm9sb2d5LCBYaWRpYW4gVW5pdmVyc2l0eQo=