From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 173A6E7D27F for ; Tue, 26 Sep 2023 11:12:59 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ql5yx-00079u-Kz; Tue, 26 Sep 2023 07:11:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ql5ys-00074S-Ex for qemu-devel@nongnu.org; Tue, 26 Sep 2023 07:11:54 -0400 Received: from szxga02-in.huawei.com ([45.249.212.188]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ql5yn-0000vR-Jz for qemu-devel@nongnu.org; Tue, 26 Sep 2023 07:11:53 -0400 Received: from dggpemm500024.china.huawei.com (unknown [172.30.72.56]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4RvxmS670NzNmqd; Tue, 26 Sep 2023 19:07:52 +0800 (CST) Received: from lhrpeml500001.china.huawei.com (7.191.163.213) by dggpemm500024.china.huawei.com (7.185.36.203) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.31; Tue, 26 Sep 2023 19:11:41 +0800 Received: from lhrpeml500001.china.huawei.com ([7.191.163.213]) by lhrpeml500001.china.huawei.com ([7.191.163.213]) with mapi id 15.01.2507.031; Tue, 26 Sep 2023 12:11:39 +0100 To: lixianglai , David Hildenbrand , "qemu-devel@nongnu.org" CC: Salil Mehta , Xiaojuan Yang , Song Gao , "Michael S. Tsirkin" , Igor Mammedov , Ani Sinha , Paolo Bonzini , Richard Henderson , Eduardo Habkost , "Marcel Apfelbaum" , =?utf-8?B?UGhpbGlwcGUgTWF0aGlldS1EYXVkw6k=?= , "wangyanan (Y)" , =?utf-8?B?RGFuaWVsIFAuIEJlcnJhbmfDqQ==?= , Peter Xu , Bibo Mao Subject: RE: [PATCH v2 04/10] Introduce the CPU address space destruction function Thread-Topic: [PATCH v2 04/10] Introduce the CPU address space destruction function Thread-Index: AQHZ5R7Fmo7gjrU/1EmDlFadlO4IebAWsogAgAOJWgCAAAdJgIAA3/CAgBHl2UA= Date: Tue, 26 Sep 2023 11:11:39 +0000 Message-ID: References: <3a4fc2a3df4b767c3c296a7da3bc15ca9c251316.1694433326.git.lixianglai@loongson.cn> <43f04ba4-3e16-ea5c-a212-66dda73a76c4@redhat.com> <20eb8316-22a2-c812-7172-6bd9016877cc@loongson.cn> <7e0e1639-d821-fecb-b647-4a18afa600cc@loongson.cn> In-Reply-To: <7e0e1639-d821-fecb-b647-4a18afa600cc@loongson.cn> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.126.174.16] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected Received-SPF: pass client-ip=45.249.212.188; envelope-from=salil.mehta@huawei.com; helo=szxga02-in.huawei.com X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Salil Mehta From: Salil Mehta via Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org SGkgWGlhbmdsYWksDQoNCj4gRnJvbTogbGl4aWFuZ2xhaSA8bGl4aWFuZ2xhaUBsb29uZ3Nvbi5j bj4NCj4gU2VudDogRnJpZGF5LCBTZXB0ZW1iZXIgMTUsIDIwMjMgMzo0OCBBTQ0KPiBUbzogRGF2 aWQgSGlsZGVuYnJhbmQgPGRhdmlkQHJlZGhhdC5jb20+OyBxZW11LWRldmVsQG5vbmdudS5vcmc7 IFNhbGlsDQo+IE1laHRhIDxzYWxpbC5tZWh0YUBodWF3ZWkuY29tPg0KPiBDYzogU2FsaWwgTWVo dGEgPHNhbGlsLm1laHRhQG9wbnNyYy5uZXQ+OyBYaWFvanVhbiBZYW5nDQo+IDx5YW5neGlhb2p1 YW5AbG9vbmdzb24uY24+OyBTb25nIEdhbyA8Z2Fvc29uZ0Bsb29uZ3Nvbi5jbj47IE1pY2hhZWwg Uy4NCj4gVHNpcmtpbiA8bXN0QHJlZGhhdC5jb20+OyBJZ29yIE1hbW1lZG92IDxpbWFtbWVkb0By ZWRoYXQuY29tPjsgQW5pIFNpbmhhDQo+IDxhbmlzaW5oYUByZWRoYXQuY29tPjsgUGFvbG8gQm9u emluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT47IFJpY2hhcmQNCj4gSGVuZGVyc29uIDxyaWNoYXJk LmhlbmRlcnNvbkBsaW5hcm8ub3JnPjsgRWR1YXJkbyBIYWJrb3N0DQo+IDxlZHVhcmRvQGhhYmtv c3QubmV0PjsgTWFyY2VsIEFwZmVsYmF1bSA8bWFyY2VsLmFwZmVsYmF1bUBnbWFpbC5jb20+Ow0K PiBQaGlsaXBwZSBNYXRoaWV1LURhdWTDqSA8cGhpbG1kQGxpbmFyby5vcmc+OyB3YW5neWFuYW4g KFkpDQo+IDx3YW5neWFuYW41NUBodWF3ZWkuY29tPjsgRGFuaWVsIFAuIEJlcnJhbmfDqSA8YmVy cmFuZ2VAcmVkaGF0LmNvbT47IFBldGVyDQo+IFh1IDxwZXRlcnhAcmVkaGF0LmNvbT47IEJpYm8g TWFvIDxtYW9iaWJvQGxvb25nc29uLmNuPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYyIDA0LzEw XSBJbnRyb2R1Y2UgdGhlIENQVSBhZGRyZXNzIHNwYWNlIGRlc3RydWN0aW9uDQo+IGZ1bmN0aW9u DQo+IA0KPiANCj4gSGkgRGF2aWQgSGlsZGVuYnJhbmQ6DQo+ID4gT24gMTQuMDkuMjMgMTU6MDAs IGxpeGlhbmdsYWkgd3JvdGU6DQo+ID4+IEhpIERhdmlkOg0KPiA+DQo+ID4gSGkhDQo+ID4NCj4g Pj4NCj4gPj4+IE9uIDEyLjA5LjIzIDA0OjExLCB4aWFuZ2xhaSBsaSB3cm90ZToNCj4gPj4+PiBJ bnRyb2R1Y2UgbmV3IGZ1bmN0aW9uIHRvIGRlc3Ryb3kgQ1BVIGFkZHJlc3Mgc3BhY2UgcmVzb3Vy Y2VzDQo+ID4+Pj4gZm9yIGNwdSBob3QtKHVuKXBsdWcuDQo+ID4+Pj4NCj4gPj4+IEhvdyBkbyBv dGhlciBhcmNocyBoYW5kbGUgdGhhdD8gT3IgaG93IGFyZSB0aGV5IGFibGUgdG8gZ2V0IGF3YXkN Cj4gPj4+IHdpdGhvdXQgZGVzdHJveWluZz8NCj4gPj4+DQo+ID4+IFRoZXkgZG8gbm90IHJlbW92 ZSB0aGUgY3B1IGFkZHJlc3Mgc3BhY2UsIHRha2luZyB0aGUgWDg2IGFyY2hpdGVjdHVyZSBhcw0K PiA+PiBhbiBleGFtcGxlOg0KPiA+Pg0KPiA+PiAxLlN0YXJ0IHRoZSB4ODYgVk06DQo+ID4+DQo+ ID4+IC4vcWVtdS1zeXN0ZW0teDg2XzY0IFwNCj4gPj4gLW1hY2hpbmUgcTM1wqAgXA0KPiA+PiAt Y3B1IEJyb2Fkd2VsbC1JQlJTIFwNCj4gPj4gLXNtcCAxLG1heGNwdXM9MTAwLHNvY2tldHM9MTAw LGNvcmVzPTEsdGhyZWFkcz0xIFwNCj4gPj4gLW0gNEcgXA0KPiA+PiAtZHJpdmUgZmlsZT1+L2Fu b2xpcy04LjgucWNvdzLCoCBcDQo+ID4+IC1zZXJpYWwgc3RkaW/CoMKgIFwNCj4gPj4gLW1vbml0 b3IgdGVsbmV0OmxvY2FsaG9zdDo0NDk4LHNlcnZlcixub3dhaXTCoMKgIFwNCj4gPj4gLW5vZ3Jh cGhpYw0KPiA+Pg0KPiA+PiAyLkNvbm5lY3QgdGhlIHFlbXUgbW9uaXRvcg0KPiA+Pg0KPiA+PiB0 ZWxuZXQgMTI3LjAuMC4xIDQ0OTgNCj4gPj4NCj4gPj4gaW5mbyBtdHJlZQ0KPiA+Pg0KPiA+PiBh ZGRyZXNzLXNwYWNlOiBjcHUtbWVtb3J5LTANCj4gPj4gYWRkcmVzcy1zcGFjZTogbWVtb3J5DQo+ ID4+IMKgIMKgIDAwMDAwMDAwMDAwMDAwMDAtZmZmZmZmZmZmZmZmZmZmZiAocHJpbyAwLCBpL28p OiBzeXN0ZW0NCj4gPj4gwqAgwqDCoMKgIDAwMDAwMDAwMDAwMDAwMDAtMDAwMDAwMDA3ZmZmZmZm ZiAocHJpbyAwLCByYW0pOiBhbGlhcw0KPiA+PiByYW0tYmVsb3ctNGcNCj4gPj4gQHBjLnJhbSAw MDAwMDAwMDAwMDAwMDAwLTAwMDAwMDAwN2ZmZmZmZmYNCj4gPj4gwqAgwqDCoMKgIDAwMDAwMDAw MDAwMDAwMDAtZmZmZmZmZmZmZmZmZmZmZiAocHJpbyAtMSwgaS9vKTogcGNpDQo+ID4+IMKgIMKg wqDCoMKgwqAgMDAwMDAwMDAwMDBhMDAwMC0wMDAwMDAwMDAwMGJmZmZmIChwcmlvIDEsIGkvbyk6 IHZnYS1sb3dtZW0NCj4gPj4NCj4gPj4gMy5QZXJmb3JtIGNwdSBob3Qgc3dhcCBpbnQgcWVtdSBt b25pdG9yDQo+ID4+DQo+ID4+IGRldmljZV9hZGQNCj4gPj4gQnJvYWR3ZWxsLUlCUlMteDg2XzY0 LWNwdSxzb2NrZXQtaWQ9MSxjb3JlLWlkPTAsdGhyZWFkLWlkPTAsaWQ9Y3B1MQ0KPiA+PiBkZXZp Y2VfZGVsIGNwdTENCj4gPj4NCj4gPg0KPiA+IEhtLCBkb2Vzbid0IHNlZW0gdG8gd29yayBmb3Ig bWUgb24gdXBzdHJlYW0gUUVNVSBmb3Igc29tZSByZWFzb246DQo+ID4gIkVycm9yOiBhY3BpOiBk ZXZpY2UgdW5wbHVnIHJlcXVlc3QgZm9yIG5vdCBzdXBwb3J0ZWQgZGV2aWNlIHR5cGU6DQo+ID4g QnJvYWR3ZWxsLUlCUlMteDg2XzY0LWNwdSINCj4gDQo+ID4NCj4gPiBXaGF0IGhhcHBlbnMgaWYg eW91IHJlLWFkZCB0aGF0IENQVT8gV2lsbCB3ZSByZXVzZSB0aGUgcHJldmlvdXMNCj4gPiBhZGRy ZXNzIHNwYWNlPw0KPiANCj4gDQo+IEhlcmUgaXMgdGhlIG1lbW9yeSBsYXlvdXQgd2hlcmUgSSBp bnNlcnRlZCBjcHUxIGFnYWluLiBJdCBkb2VzIG5vdA0KPiBhcHBlYXIgdGhhdCB0aGUgb3JpZ2lu YWwgYWRkcmVzcyBzcGFjZSB3YXMgcmV1c2VkLCBhbmQgdGhlIGFkZHJlc3Mgc3BhY2UNCj4gaXMg bm93IGR1cGxpY2F0ZWQNCj4gDQo+IGluZm8gbXRyZWUNCj4gDQo+IGFkZHJlc3Mtc3BhY2U6IGNw dS1tZW1vcnktMA0KPiBhZGRyZXNzLXNwYWNlOiBjcHUtbWVtb3J5LTENCj4gYWRkcmVzcy1zcGFj ZTogY3B1LW1lbW9yeS0xDQo+IGFkZHJlc3Mtc3BhY2U6IG1lbW9yeQ0KPiAgwqAgMDAwMDAwMDAw MDAwMDAwMC1mZmZmZmZmZmZmZmZmZmZmIChwcmlvIDAsIGkvbyk6IHN5c3RlbQ0KPiAgwqDCoMKg IDAwMDAwMDAwMDAwMDAwMDAtMDAwMDAwMDA3ZmZmZmZmZiAocHJpbyAwLCByYW0pOiBhbGlhcyBy YW0tYmVsb3ctNGcNCj4gQHBjLnJhbSAwMDAwMDAwMDAwMDAwMDAwLTAwMDAwMDAwN2ZmZmZmZmYN Cj4gIMKgwqDCoCAwMDAwMDAwMDAwMDAwMDAwLWZmZmZmZmZmZmZmZmZmZmYgKHByaW8gLTEsIGkv byk6IHBjaQ0KPiAgwqDCoMKgwqDCoCAwMDAwMDAwMDAwMGEwMDAwLTAwMDAwMDAwMDAwYWZmZmYg KHByaW8gMiwgcmFtKTogYWxpYXMgdmdhLmNoYWluNA0KPiBAdmdhLnZyYW0gMDAwMDAwMDAwMDAw MDAwMC0wMDAwMDAwMDAwMDBmZmZmDQo+ICDCoMKgwqDCoMKgIDAwMDAwMDAwMDAwYTAwMDAtMDAw MDAwMDAwMDBiZmZmZiAocHJpbyAxLCBpL28pOiB2Z2EtbG93bWVtDQo+ICDCoMKgwqDCoMKgIDAw MDAwMDAwMDAwYzAwMDAtMDAwMDAwMDAwMDBkZmZmZiAocHJpbyAxLCByb20pOiBwYy5yb20NCj4g IMKgwqDCoMKgwqAgMDAwMDAwMDAwMDBlMDAwMC0wMDAwMDAwMDAwMGZmZmZmIChwcmlvIDEsIHJv bSk6IGFsaWFzIGlzYS1iaW9zDQo+IEBwYy5iaW9zIDAwMDAwMDAwMDAwMjAwMDAtMDAwMDAwMDAw MDAzZmZmZg0KPiAgwqDCoMKgwqDCoCAwMDAwMDAwMGZkMDAwMDAwLTAwMDAwMDAwZmRmZmZmZmYg KHByaW8gMSwgcmFtKTogdmdhLnZyYW0NCj4gDQo+IA0KPiBJbiBhZGRpdGlvbiwgSSBkbyBub3Qg ZmluZCB0aGUgY29ycmVzcG9uZGluZyByZXNvdXJjZSByZWxlYXNlIGFjdGlvbiBmb3INCj4gY3B1 LT5jcHVfYXNlcyByZXF1ZXN0ZWQgaW4gZnVuY3Rpb24gY3B1X2FkZHJlc3Nfc3BhY2VfaW5pdC4N Cj4gDQo+IEkgd29uZGVyIGlmIHRoZXJlIGlzIGEgbGVhayBpbiB0aGUgbWVtb3J5IHNwYWNlIHJl cXVlc3RlZCBoZXJlLiBNYXliZQ0KPiBxZW11IGF1dG9tYXRpY2FsbHkgcmVjbGFpbXMgbWVtb3J5 IHNwYWNlDQo+IA0KPiBvciBmcmVlcyByZXNvdXJjZXMgc29tZXdoZXJlIGVsc2UgSSBkaWRuJ3Qg ZmluZD8gSSB0aG91Z2h0IEknZCB0cnkNCj4gcnVubmluZyB0aGUgZm9sbG93aW5nIHZhbGdyaW5k IHRvIHNlZSBpZiBJIGNvdWxkIHZlcmlmeSBteSBzdXNwaWNpb25zLg0KPiANCj4gdm9pZCBjcHVf YWRkcmVzc19zcGFjZV9pbml0KENQVVN0YXRlICpjcHUsIGludCBhc2lkeCwNCj4gIMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjaGFy ICpwcmVmaXgsIE1lbW9yeVJlZ2lvbiAqbXIpDQo+IHsNCj4gDQo+IC4uLg0KPiANCj4gIMKgwqDC oCBpZiAoIWNwdS0+Y3B1X2FzZXMpIHsNCj4gIMKgwqDCoMKgwqDCoMKgIGNwdS0+Y3B1X2FzZXMg PSBnX25ldzAoQ1BVQWRkcmVzc1NwYWNlLCBjcHUtPm51bV9hc2VzKTsNCj4gIMKgwqDCoCB9DQo+ IA0KPiAuLi4NCj4gDQo+IH0NCj4gDQo+ID4NCj4gPj4gaW5mbyBtdHJlZQ0KPiA+Pg0KPiA+PiBh ZGRyZXNzLXNwYWNlOiBjcHUtbWVtb3J5LTANCj4gPj4gYWRkcmVzcy1zcGFjZTogY3B1LW1lbW9y eS0xDQo+ID4+IGFkZHJlc3Mtc3BhY2U6IG1lbW9yeQ0KPiA+PiDCoCDCoCAwMDAwMDAwMDAwMDAw MDAwLWZmZmZmZmZmZmZmZmZmZmYgKHByaW8gMCwgaS9vKTogc3lzdGVtDQo+ID4+IMKgIMKgwqDC oCAwMDAwMDAwMDAwMDAwMDAwLTAwMDAwMDAwN2ZmZmZmZmYgKHByaW8gMCwgcmFtKTogYWxpYXMN Cj4gPj4gcmFtLWJlbG93LTRnDQo+ID4+IEBwYy5yYW0gMDAwMDAwMDAwMDAwMDAwMC0wMDAwMDAw MDdmZmZmZmZmDQo+ID4+IMKgIMKgwqDCoCAwMDAwMDAwMDAwMDAwMDAwLWZmZmZmZmZmZmZmZmZm ZmYgKHByaW8gLTEsIGkvbyk6IHBjaQ0KPiA+PiDCoCDCoMKgwqDCoMKgIDAwMDAwMDAwMDAwYTAw MDAtMDAwMDAwMDAwMDBiZmZmZiAocHJpbyAxLCBpL28pOiB2Z2EtbG93bWVtDQo+ID4+DQo+ID4+ DQo+ID4+IMKgIEZyb20gdGhlIGFib3ZlIHRlc3QsIHlvdSBjYW4gc2VlIHdoZXRoZXIgdGhlIGFk ZHJlc3Mgc3BhY2Ugb2YgY3B1MSBpcw0KPiA+PiByZXNpZHVhbCBhZnRlciBhIGNwdSBob3Qgc3dh cCwgYW5kIHdoZXRoZXIgaXQgaXMgcmVhc29uYWJsZT8NCj4gPg0KPiA+DQo+ID4gUHJvYmFibHkg d2Ugc2hvdWxkIHRlYWNoIG90aGVyIGFyY2hzIHRvIGRlc3Ryb3kgdGhhdCBhZGRyZXNzIHNwYWNl IGFzDQo+ID4gd2VsbC4NCj4gPg0KPiA+IENhbiB3ZSBkbyB0aGF0IGZyb20gdGhlIGNvcmUsIGlu c3RlYWQgb2YgaGF2aW5nIHRvIGRvIHRoYXQgaW4gZWFjaCBDUFUNCj4gPiB1bnJlYWxpemUgZnVu Y3Rpb24/DQo+ID4NCj4gSSB0aGluayBpdCBjYW4gYWxzbyBiZSBkb25lIGluIHRoZSBwdWJsaWMg Y29kZSBmbG93LiBTaW5jZSBJIHJlZmVyIHRvDQo+IGFybSdzIHNjaGVtZQ0KPiANCj4gKGh0dHBz Oi8vbG9yZS5rZXJuZWwub3JnL2FsbC8yMDIwMDYxMzIxMzYyOS4yMTk4NC0xLQ0KPiBzYWxpbC5t ZWh0YUBodWF3ZWkuY29tLyksDQo+IA0KPiANCj4gYW5kIGFybSdzIHBhdGNoIHdpbGwgYmUgaXNz dWVkIHNvb24sIEkgd2lsbCBjb25kdWN0IHJlYmFzZSBiYXNlZCBvbiBhcm0NCj4gcGF0Y2ggaW4g dGhlIGZ1dHVyZS4NCg0KDQpIZXJlIGl0IGlzOg0KaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvcWVt dS1kZXZlbC8yMDIzMDkyNjEwMDQzNi4yODI4NC0xLXNhbGlsLm1laHRhQGh1YXdlaS5jb20vVC8j bTUyM2IzNzgxOWM0ODExYzc4MjczMzM5ODIwMDRlMDdhMWVmMDM4NzkNCg0KDQoNCj4gDQo+IFRo ZXJlZm9yZSwgSSB3b3VsZCBsaWtlIHRvIHNlZSBpZiBhcm0gaGFzIGFueSBnb29kIHN1Z2dlc3Rp b25zLiBJZiB0aGVyZQ0KPiBhcmUgbm8gZ29vZCBzdWdnZXN0aW9ucyBhdCB0aGlzIHN0YWdlLA0K PiANCj4gSSB0aGluayB3ZSBjYW4gc2hlbHZlIHRoaXMgcHJvYmxlbSBmb3IgdGhlIGZpcnN0IHRp bWUsIGFuZCBJIGNhbg0KPiBjb25zaWRlciBub3QgcmVmZXJlbmNpbmcgdGhpcyBmdW5jdGlvbiBm b3IgdGhlIGZpcnN0IHRpbWUsDQo+IA0KPiBhbmQgd2UgY2FuIHN1Ym1pdCBhbm90aGVyIHBhdGNo IHRvIHNvbHZlIHRoaXMgcHJvYmxlbS4NCj4gDQo+IEhpIFNhbGlsIE1laHRhOg0KPiANCj4gSXMg dGhlIGNwdV9hZGRyZXNzX3NwYWNlX2Rlc3Ryb3kgZnVuY3Rpb24gc3RpbGwgcHJlc2VudCBpbiB0 aGUgbmV3IHBhdGNoDQo+IHZlcnNpb24gb2YgYXJtPw0KDQpZZXMsIHRoaXMgaXMgcHJlc2VudCBp biB0aGUgUkZDIFYyLiBQbGVhc2UgZmluZCBpdCBoZXJlDQoNCmh0dHBzOi8vbG9yZS5rZXJuZWwu b3JnL3FlbXUtZGV2ZWwvMjAyMzA5MjYxMDA0MzYuMjgyODQtMS1zYWxpbC5tZWh0YUBodWF3ZWku Y29tL1QvI21mYjJhNTI1MDgxYzQxMjkxN2EwMDI2ZDU1OGU3MmY0ODg3NWUzODZkDQoNCg0KDQo+ IA0KPiBDYW4gd2UgcHV0IHRoaXMgZnVuY3Rpb24gb24gdGhlIHB1YmxpYyBwYXRoIG9mIGNwdSBk ZXN0cm95Pw0KDQpZZXMsIEFkZHJlc3NTcGFjZSBkZXN0cnVjdGlvbiBpcyBhbHJlYWR5IHBhcnQg b2YgdGhlIEFyY2hpdGVjdHVyZQ0KYWdub3N0aWMgcGF0Y2hlcy4gUGxlYXNlIHJlYmFzZSB5b3Ug cGF0Y2gtc2V0IGFuZCB5b3Ugd2lsbA0Kc2VlIHlvdXIgYnVncyBkaXNhcHBlYXJpbmcgOikNCg0K DQpUaGFua3MNClNhbGlsLg0K