From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.115; helo=mga14.intel.com; envelope-from=steven.shi@intel.com; receiver=edk2-devel@lists.01.org Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 8DDE02097F57C for ; Wed, 6 Jun 2018 19:17:47 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Jun 2018 19:17:47 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,485,1520924400"; d="scan'208";a="54616612" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by fmsmga002.fm.intel.com with ESMTP; 06 Jun 2018 19:17:47 -0700 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 6 Jun 2018 19:17:46 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.223]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.116]) with mapi id 14.03.0319.002; Thu, 7 Jun 2018 10:17:44 +0800 From: "Shi, Steven" To: "Shi, Steven" , "Gao, Liming" , Zenith432 , "edk2-devel@lists.01.org" Thread-Topic: [PATCH] BaseTools/GenFw: Add X64 GOTPCREL Support to GenFw Thread-Index: AQHT/cBb/+vlXcJYw0iZdBJY//lfZqRTfSMAgACQL+CAAAKIYA== Date: Thu, 7 Jun 2018 02:17:44 +0000 Message-ID: <06C8AB66E78EE34A949939824ABE2B313B762BC9@shsmsx102.ccr.corp.intel.com> References: <1821667922.1236806.1528308060822.ref@mail.yahoo.com> <1821667922.1236806.1528308060822@mail.yahoo.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E293CF7@SHSMSX104.ccr.corp.intel.com> <06C8AB66E78EE34A949939824ABE2B313B762B9D@shsmsx102.ccr.corp.intel.com> In-Reply-To: <06C8AB66E78EE34A949939824ABE2B313B762B9D@shsmsx102.ccr.corp.intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMDQ0YjYwMTQtMjBkMC00YTViLTk2Y2UtMDJmZWQ4MzlmZDgxIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiVmJ2RktNdmtPaXhqTFJiTmlEOFBFVmNcL2djZlJJTDhFU015a0lvTlk1RTFUcHFhc21nOUlpSmVhVlBLdml6cXAifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.200.100 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH] BaseTools/GenFw: Add X64 GOTPCREL Support to GenFw X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Jun 2018 02:17:47 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UGxlYXNlIHNlZSBtb3JlIGRldGFpbHMgaW4gaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3Jn L3Nob3dfYnVnLmNnaT9pZD05NzAgDQoNCg0KU3RldmVuIFNoaQ0KSW50ZWxcU1NHXFNUT1xVRUZJ IEZpcm13YXJlDQoNClRlbDogKzg2IDAyMS02MTE2NjUyMg0KaU5ldDogODIxLTY1MjINCg0KDQo+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGVkazItZGV2ZWwgW21haWx0bzpl ZGsyLWRldmVsLWJvdW5jZXNAbGlzdHMuMDEub3JnXSBPbiBCZWhhbGYgT2YgU2hpLA0KPiBTdGV2 ZW4NCj4gU2VudDogVGh1cnNkYXksIEp1bmUgNywgMjAxOCAxMDoxNiBBTQ0KPiBUbzogR2FvLCBM aW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPjsgWmVuaXRoNDMyDQo+IDx6ZW5pdGg0MzJAdXNl cnMuc291cmNlZm9yZ2UubmV0PjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gU3ViamVjdDog UmU6IFtlZGsyXSBbUEFUQ0hdIEJhc2VUb29scy9HZW5GdzogQWRkIFg2NCBHT1RQQ1JFTCBTdXBw b3J0DQo+IHRvIEdlbkZ3DQo+IA0KPiBZZXMuIElmIHdlIGRpc2FibGUgdGhlICcjcHJhZ21hIEdD QyB2aXNpYmlsaXR5IHB1c2ggKGhpZGRlbiknIGluDQo+IFByb2Nlc3NvckJpbmQuaCwgdGhlIEdP VFBDUkVMIHN1cHBvcnQgaXMgbWFuZGF0b3J5LiAzcmQgcGFydHkgbW9kdWxlDQo+IGJ1aWxkIG1p Z2h0IG5lZWQgaXQuIEl0J3MgbW9yZSBjb21wbGV0ZSB0byBhZGQgR09UUENSRUwgc3VwcG9ydC4N Cj4gDQo+IFRoZSBoaWRkZW4gI3ByYWdtYSBjYW4gaGlkZSBhbGwgRUxGIHN5bWJvbHMnIHZpc2li aWxpdHksIGluY2x1ZGluZyAnZXh0ZXJuJw0KPiBmdW5jdGlvbnMsIHdoaWNoIGlzIHRvIGxldCBM aW51eCBjb21waWxlcnMgYXdhcmUgdGhhdCB3ZSBkb27igJl0IG5lZWQgbG9hZGluZw0KPiBkeW5h bWljIGxpbmsgbGlicmFyeSBpbiBVZWZpIHJ1bmluZywgcGxlYXNlIG5vdCBlbWl0IHRoZSBHT1RQ Q1JFTCBiYXNlZA0KPiByZWxvY2F0aW9ucyBpbiB0aGUgb2JqIGZpbGUsIGFuZCB3ZSB3aWxsIGVu c3VyZSB0aGUgbGlua2VyIGNhbiBnZXQgYWxsIGV4dGVybg0KPiBmdW5jdGlvbnMgc3RhdGljYWxs eSBzb2x2ZWQuIFRoZSByZWFzb24gb2Ygbm90IGVtaXR0aW5nIEdPVFBDUkVMIGJhc2VkDQo+IHJl bG9jYXRpb25zIGlzIGJlY2F1c2UgaXQgaXMgaGFyZCB0byBjb252ZXJ0IHRoZSBHT1RQQ1JFTCBi YXNlZCByZWxvY2F0aW9ucw0KPiBpbiBFTEYgYmluYXJ5IHRvIFBFL0NPRkYgcmVsYXRlZCByZWxv Y2F0aW9ucywgYW5kIG91ciBjdXJyZW50IEdlbkZ3IGhhcyBub3QNCj4gc3VwcG9ydGVkIHRoZW0u IEknbSBnbGFkZSBpZiB3ZSBjYW4gYWRkIHRoZSBHT1RQQ1JFTCBzdXBwb3J0IGluIEdlbkZXIHRv DQo+IHRvdGFsbHkgc29sdmUgdGhpcyBwcm9ibGVtLg0KPiANCj4gU3RldmVuIFNoaQ0KPiBJbnRl bFxTU0dcU1RPXFVFRkkgRmlybXdhcmUNCj4gDQo+IFRlbDogKzg2IDAyMS02MTE2NjUyMg0KPiBp TmV0OiA4MjEtNjUyMg0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZy b206IEdhbywgTGltaW5nDQo+ID4gU2VudDogVGh1cnNkYXksIEp1bmUgNywgMjAxOCA5OjMyIEFN DQo+ID4gVG86IFplbml0aDQzMiA8emVuaXRoNDMyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD47IGVk azItDQo+IGRldmVsQGxpc3RzLjAxLm9yZw0KPiA+IENjOiBTaGksIFN0ZXZlbiA8c3RldmVuLnNo aUBpbnRlbC5jb20+OyBaaHUsIFlvbmdob25nDQo+ID4gPHlvbmdob25nLnpodUBpbnRlbC5jb20+ DQo+ID4gU3ViamVjdDogUkU6IFtQQVRDSF0gQmFzZVRvb2xzL0dlbkZ3OiBBZGQgWDY0IEdPVFBD UkVMIFN1cHBvcnQgdG8NCj4gPiBHZW5Gdw0KPiA+DQo+ID4gV2hhdCdzIHB1cnBvc2UgdG8gc3Vw cG9ydCBHT1RQQ1JFTCBpbiBHZW5Gdz8gQ291bGQgeW91IGludHJvZHVjZSB5b3VyDQo+ID4gdXNh Z2UgbW9kZWw/DQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBG cm9tOiBaZW5pdGg0MzIgW21haWx0bzp6ZW5pdGg0MzJAdXNlcnMuc291cmNlZm9yZ2UubmV0XQ0K PiA+ID4gU2VudDogVGh1cnNkYXksIEp1bmUgNywgMjAxOCAyOjAxIEFNDQo+ID4gPiBUbzogZWRr Mi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPiA+IENjOiBTaGksIFN0ZXZlbiA8c3RldmVuLnNoaUBp bnRlbC5jb20+OyBaaHUsIFlvbmdob25nDQo+ID4gPHlvbmdob25nLnpodUBpbnRlbC5jb20+OyBH YW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+ID4gPiBTdWJqZWN0OiBbUEFUQ0hd IEJhc2VUb29scy9HZW5GdzogQWRkIFg2NCBHT1RQQ1JFTCBTdXBwb3J0IHRvDQo+IEdlbkZ3DQo+ ID4gPg0KPiA+ID4gQWRkcyBzdXBwb3J0IGZvciB0aGUgZm9sbG93aW5nIFg2NCBFTEYgcmVsb2Nh dGlvbnMgdG8gR2VuRncNCj4gPiA+ICAgUl9YODZfNjRfR09UUENSRUwNCj4gPiA+ICAgUl9YODZf NjRfR09UUENSRUxYDQo+ID4gPiAgIFJfWDg2XzY0X1JFWF9HT1RQQ1JFTFgNCj4gPiA+DQo+ID4g PiBDQzogU2hpIFN0ZXZlbiA8c3RldmVuLnNoaUBpbnRlbC5jb20+DQo+ID4gPiBDQzogWW9uZ2hv bmcgWmh1IDx5b25naG9uZy56aHVAaW50ZWwuY29tPg0KPiA+ID4gQ0M6IExpbWluZyBHYW8gPGxp bWluZy5nYW9AaW50ZWwuY29tPg0KPiA+ID4gQ29udHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBD b250cmlidXRpb24gQWdyZWVtZW50IDEuMQ0KPiA+ID4gU2lnbmVkLW9mZi1ieTogWmVuaXRoNDMy IDx6ZW5pdGg0MzJAdXNlcnMuc291cmNlZm9yZ2UubmV0Pg0KPiA+ID4gLS0tDQo+ID4gPiAgQmFz ZVRvb2xzL1NvdXJjZS9DL0dlbkZ3L0VsZjY0Q29udmVydC5jIHwgMTY2DQo+ID4gKysrKysrKysr KysrKysrKysrKysrKystDQo+ID4gPiAgQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ3L2VsZl9jb21t b24uaCAgIHwgIDIzICsrKysNCj4gPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDE4OCBpbnNlcnRpb25z KCspLCAxIGRlbGV0aW9uKC0pDQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9T b3VyY2UvQy9HZW5Gdy9FbGY2NENvbnZlcnQuYw0KPiA+IGIvQmFzZVRvb2xzL1NvdXJjZS9DL0dl bkZ3L0VsZjY0Q29udmVydC5jDQo+ID4gPiBpbmRleCBjMzliZGZmMC4uZDJmOWJiNDYgMTAwNjQ0 DQo+ID4gPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvR2VuRncvRWxmNjRDb252ZXJ0LmMNCj4g PiA+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9HZW5Gdy9FbGY2NENvbnZlcnQuYw0KPiA+ID4g QEAgLTk0LDYgKzk0LDE1IEBAIFNUQVRJQyBFbGZfRWhkciAqbUVoZHI7DQo+ID4gPiAgU1RBVElD IEVsZl9TaGRyICptU2hkckJhc2U7DQo+ID4gPiAgU1RBVElDIEVsZl9QaGRyICptUGhkckJhc2U7 DQo+ID4gPg0KPiA+ID4gKy8vDQo+ID4gPiArLy8gR09UIGluZm9ybWF0aW9uDQo+ID4gPiArLy8N Cj4gPiA+ICtTVEFUSUMgRWxmX1NoZHIgKm1HT1RTaGRyID0gTlVMTDsNCj4gPiA+ICtTVEFUSUMg VUlOVDMyICAgbUdPVFNoaW5kZXggPSAwOw0KPiA+ID4gK1NUQVRJQyBVSU5UMzIgICAqbUdPVENv ZmZFbnRyaWVzID0gTlVMTDsNCj4gPiA+ICtTVEFUSUMgVUlOVDMyICAgbUdPVE1heENvZmZFbnRy aWVzID0gMDsNCj4gPiA+ICtTVEFUSUMgVUlOVDMyICAgbUdPVE51bUNvZmZFbnRyaWVzID0gMDsN Cj4gPiA+ICsNCj4gPiA+ICAvLw0KPiA+ID4gIC8vIENvZmYgaW5mb3JtYXRpb24NCj4gPiA+ICAv Lw0KPiA+ID4gQEAgLTMyMiw2ICszMzEsMTE3IEBAIEdldFN5bU5hbWUgKA0KPiA+ID4gICAgcmV0 dXJuIFN0cnRhYkNvbnRlbnRzICsgU3ltLT5zdF9uYW1lOw0KPiA+ID4gIH0NCj4gPiA+DQo+ID4g PiArLy8NCj4gPiA+ICsvLyBGaW5kIHRoZSBFTEYgc2VjdGlvbiBob3N0aW5nIHRoZSBHT1QgZnJv bSBhbiBFTEYgUnZhDQo+ID4gPiArLy8gICBvZiBhIHNpbmdsZSBHT1QgZW50cnkuICBOb3JtYWxs eSwgR09UIGlzIHBsYWNlZCBpbg0KPiA+ID4gKy8vICAgRUxGIC50ZXh0IHNlY3Rpb24sIHNvIGFz c3VtZSBvbmNlIHdlIGZpbmQgaW4gd2hpY2gNCj4gPiA+ICsvLyAgIHNlY3Rpb24gdGhlIEdPVCBp cywgYWxsIEdPVCBlbnRyaWVzIGFyZSB0aGVyZSwgYW5kDQo+ID4gPiArLy8gICBqdXN0IHZlcmlm eSB0aGlzLg0KPiA+ID4gKy8vDQo+ID4gPiArU1RBVElDDQo+ID4gPiArVk9JRA0KPiA+ID4gK0Zp bmRFbGZHT1RTZWN0aW9uRnJvbUdPVEVudHJ5RWxmUnZhICgNCj4gPiA+ICsgIEVsZjY0X0FkZHIg R09URW50cnlFbGZSdmENCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBVSU5UMzIgaTsN Cj4gPiA+ICsgIGlmIChtR09UU2hkciAhPSBOVUxMKSB7DQo+ID4gPiArICAgIGlmIChHT1RFbnRy eUVsZlJ2YSA+PSBtR09UU2hkci0+c2hfYWRkciAmJg0KPiA+ID4gKyAgICAgICAgR09URW50cnlF bGZSdmEgPCAgbUdPVFNoZHItPnNoX2FkZHIgKyBtR09UU2hkci0+c2hfc2l6ZSkNCj4gPiA+ICsg ICAgICByZXR1cm47DQo+ID4gPiArICAgIEVycm9yIChOVUxMLCAwLCAzMDAwLCAiVW5zdXBwb3J0 ZWQiLA0KPiA+ICJGaW5kRWxmR09UU2VjdGlvbkZyb21HT1RFbnRyeUVsZlJ2YTogR09UIGVudHJp ZXMgZm91bmQgaW4gbXVsdGlwbGUNCj4gPiBzZWN0aW9ucy4iKTsNCj4gPiA+ICsgICAgZXhpdChF WElUX0ZBSUxVUkUpOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKyAgZm9yIChpID0gMDsgaSA8IG1FaGRy LT5lX3NobnVtOyBpKyspIHsNCj4gPiA+ICsgICAgRWxmX1NoZHIgKnNoZHIgPSBHZXRTaGRyQnlJ bmRleChpKTsNCj4gPiA+ICsgICAgaWYgKEdPVEVudHJ5RWxmUnZhID49IHNoZHItPnNoX2FkZHIg JiYNCj4gPiA+ICsgICAgICAgIEdPVEVudHJ5RWxmUnZhIDwgIHNoZHItPnNoX2FkZHIgKyBzaGRy LT5zaF9zaXplKSB7DQo+ID4gPiArICAgICAgbUdPVFNoZHIgPSBzaGRyOw0KPiA+ID4gKyAgICAg IG1HT1RTaGluZGV4ID0gaTsNCj4gPiA+ICsgICAgICByZXR1cm47DQo+ID4gPiArICAgIH0NCj4g PiA+ICsgIH0NCj4gPiA+ICsgIEVycm9yIChOVUxMLCAwLCAzMDAwLCAiSW52YWxpZCIsDQo+ICJG aW5kRWxmR09UU2VjdGlvbkZyb21HT1RFbnRyeUVsZlJ2YToNCj4gPiBFbGZSdmEgMHglMDE2TFgg Zm9yIEdPVCBlbnRyeSBub3QgZm91bmQgaW4gYW55IHNlY3Rpb24uIiwNCj4gPiA+IEdPVEVudHJ5 RWxmUnZhKTsNCj4gPiA+ICsgIGV4aXQoRVhJVF9GQUlMVVJFKTsNCj4gPiA+ICt9DQo+ID4gPiAr DQo+ID4gPiArLy8NCj4gPiA+ICsvLyBTdG9yZXMgbG9jYXRpb25zIG9mIEdPVCBlbnRyaWVzIGlu IENPRkYgaW1hZ2UuDQo+ID4gPiArLy8gICBSZXR1cm5zIFRSVUUgaWYgR09UIGVudHJ5IGlzIG5l dy4NCj4gPiA+ICsvLyAgIFNpbXBsZSBpbXBsZW1lbnRhdGlvbiBhcyBudW1iZXIgb2YgR09UDQo+ ID4gPiArLy8gICBlbnRyaWVzIGlzIGV4cGVjdGVkIHRvIGJlIGxvdy4NCj4gPiA+ICsvLw0KPiA+ ID4gKw0KPiA+ID4gK1NUQVRJQw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtBY2N1bXVsYXRlQ29m ZkdPVEVudHJpZXMgKA0KPiA+ID4gKyAgVUlOVDMyIEdPVENvZmZFbnRyeQ0KPiA+ID4gKyAgKQ0K PiA+ID4gK3sNCj4gPiA+ICsgIFVJTlQzMiBpOw0KPiA+ID4gKyAgaWYgKG1HT1RDb2ZmRW50cmll cyAhPSBOVUxMKSB7DQo+ID4gPiArICAgIGZvciAoaSA9IDA7IGkgPCBtR09UTnVtQ29mZkVudHJp ZXM7IGkrKykNCj4gPiA+ICsgICAgICBpZiAobUdPVENvZmZFbnRyaWVzW2ldID09IEdPVENvZmZF bnRyeSkNCj4gPiA+ICsgICAgICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsg IGlmIChtR09UQ29mZkVudHJpZXMgPT0gTlVMTCkgew0KPiA+ID4gKyAgICBtR09UQ29mZkVudHJp ZXMgPSAoVUlOVDMyKiltYWxsb2MoNSAqIHNpemVvZiAqbUdPVENvZmZFbnRyaWVzKTsNCj4gPiA+ ICsgICAgaWYgKG1HT1RDb2ZmRW50cmllcyA9PSBOVUxMKSB7DQo+ID4gPiArICAgICAgRXJyb3Ig KE5VTEwsIDAsIDQwMDEsICJSZXNvdXJjZSIsICJtZW1vcnkgY2Fubm90IGJlIGFsbG9jYXRlZCEi KTsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKyAgICBhc3NlcnQgKG1HT1RDb2ZmRW50cmllcyAhPSBO VUxMKTsNCj4gPiA+ICsgICAgbUdPVE1heENvZmZFbnRyaWVzID0gNTsNCj4gPiA+ICsgICAgbUdP VE51bUNvZmZFbnRyaWVzID0gMDsNCj4gPiA+ICsgIH0gZWxzZSBpZiAobUdPVE51bUNvZmZFbnRy aWVzID09IG1HT1RNYXhDb2ZmRW50cmllcykgew0KPiA+ID4gKyAgICBtR09UQ29mZkVudHJpZXMg PSAoVUlOVDMyKilyZWFsbG9jKG1HT1RDb2ZmRW50cmllcywgMiAqDQo+ID4gbUdPVE1heENvZmZF bnRyaWVzICogc2l6ZW9mICptR09UQ29mZkVudHJpZXMpOw0KPiA+ID4gKyAgICBpZiAobUdPVENv ZmZFbnRyaWVzID09IE5VTEwpIHsNCj4gPiA+ICsgICAgICBFcnJvciAoTlVMTCwgMCwgNDAwMSwg IlJlc291cmNlIiwgIm1lbW9yeSBjYW5ub3QgYmUgYWxsb2NhdGVkISIpOw0KPiA+ID4gKyAgICB9 DQo+ID4gPiArICAgIGFzc2VydCAobUdPVENvZmZFbnRyaWVzICE9IE5VTEwpOw0KPiA+ID4gKyAg ICBtR09UTWF4Q29mZkVudHJpZXMgKz0gbUdPVE1heENvZmZFbnRyaWVzOw0KPiA+ID4gKyAgfQ0K PiA+ID4gKyAgbUdPVENvZmZFbnRyaWVzW21HT1ROdW1Db2ZmRW50cmllcysrXSA9IEdPVENvZmZF bnRyeTsNCj4gPiA+ICsgIHJldHVybiBUUlVFOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtT VEFUSUMNCj4gPiA+ICtpbnQNCj4gPiA+ICtfX2NvbXBhcmF0b3IgKA0KPiA+ID4gKyAgY29uc3Qg dm9pZCogbGhzLA0KPiA+ID4gKyAgY29uc3Qgdm9pZCogcmhzDQo+ID4gPiArICApDQo+ID4gPiAr ew0KPiA+ID4gKyAgaWYgKCooY29uc3QgVUlOVDMyKilsaHMgPCAqKGNvbnN0IFVJTlQzMiopcmhz KQ0KPiA+ID4gKyAgICByZXR1cm4gLTE7DQo+ID4gPiArICByZXR1cm4gKihjb25zdCBVSU5UMzIq KWxocyA+ICooY29uc3QgVUlOVDMyKilyaHM7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK1NU QVRJQw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtFbWl0R09UUmVsb2NhdGlvbnMgKA0KPiA+ID4gKyAg Vk9JRA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIFVJTlQzMiBpOw0KPiA+ID4gKyAg aWYgKG1HT1RDb2ZmRW50cmllcyA9PSBOVUxMKQ0KPiA+ID4gKyAgICByZXR1cm47DQo+ID4gPiAr ICBxc29ydCgNCj4gPiA+ICsgICAgbUdPVENvZmZFbnRyaWVzLA0KPiA+ID4gKyAgICBtR09UTnVt Q29mZkVudHJpZXMsDQo+ID4gPiArICAgIHNpemVvZiAqbUdPVENvZmZFbnRyaWVzLA0KPiA+ID4g KyAgICBfX2NvbXBhcmF0b3IpOw0KPiA+ID4gKyAgZm9yIChpID0gMDsgaSA8IG1HT1ROdW1Db2Zm RW50cmllczsgaSsrKSB7DQo+ID4gPiArICAgIFZlcmJvc2VNc2cgKCJFRklfSU1BR0VfUkVMX0JB U0VEX0RJUjY0IE9mZnNldDogMHglMDhYIiwNCj4gPiBtR09UQ29mZkVudHJpZXNbaV0pOw0KPiA+ ID4gKyAgICBDb2ZmQWRkRml4dXAoDQo+ID4gPiArICAgICAgbUdPVENvZmZFbnRyaWVzW2ldLA0K PiA+ID4gKyAgICAgIEVGSV9JTUFHRV9SRUxfQkFTRURfRElSNjQpOw0KPiA+ID4gKyAgfQ0KPiA+ ID4gKyAgZnJlZShtR09UQ29mZkVudHJpZXMpOw0KPiA+ID4gKyAgbUdPVENvZmZFbnRyaWVzID0g TlVMTDsNCj4gPiA+ICsgIG1HT1RNYXhDb2ZmRW50cmllcyA9IDA7DQo+ID4gPiArICBtR09UTnVt Q29mZkVudHJpZXMgPSAwOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICAvLw0KPiA+ID4gIC8v IEVsZiBmdW5jdGlvbnMgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uDQo+ID4gPiAgLy8NCj4gPiA+ IEBAIC02OTgsNyArODE4LDcgQEAgV3JpdGVTZWN0aW9uczY0ICgNCj4gPiA+ICAgICAgLy8gc2Vj dGlvbiB0aGF0IGFwcGxpZXMgdG8gdGhlIGVudGlyZSBiaW5hcnksIGFuZCB3aGljaCB3aWxsIGhh dmUgaXRzDQo+ID4gc2VjdGlvbg0KPiA+ID4gICAgICAvLyBpbmRleCBzZXQgdG8gIzAgKHdoaWNo IGlzIGEgTlVMTCBzZWN0aW9uIHdpdGggdGhlIFNIRl9BTExPQyBiaXQNCj4gPiBjbGVhcmVkKS4N Cj4gPiA+ICAgICAgLy8NCj4gPiA+IC0gICAgLy8gSW4gdGhlIGFic2VuY2Ugb2YgR09UIGJhc2Vk IHJlbG9jYXRpb25zICh3aGljaCB3ZSBjdXJyZW50bHkgZG9uJ3QNCj4gPiBzdXBwb3J0KSwNCj4g PiA+ICsgICAgLy8gSW4gdGhlIGFic2VuY2Ugb2YgR09UIGJhc2VkIHJlbG9jYXRpb25zLA0KPiA+ ID4gICAgICAvLyB0aGlzIFJFTEEgc2VjdGlvbiB3aWxsIGNvbnRhaW4gcmVkdW5kYW50IFJfeHh4 X1JFTEFUSVZFDQo+IHJlbG9jYXRpb25zLA0KPiA+IG9uZQ0KPiA+ID4gICAgICAvLyBmb3IgZXZl cnkgUl94eHhfeHg2NCByZWxvY2F0aW9uIGFwcGVhcmluZyBpbiB0aGUgcGVyLXNlY3Rpb24gUkVM QQ0KPiA+IHNlY3Rpb25zLg0KPiA+ID4gICAgICAvLyAoaS5lLiwgLnJlbGEudGV4dCBhbmQgLnJl bGEuZGF0YSkNCj4gPiA+IEBAIC03ODAsNiArOTAwLDcgQEAgV3JpdGVTZWN0aW9uczY0ICgNCj4g PiA+ICAgICAgICAgIC8vIERldGVybWluZSBob3cgdG8gaGFuZGxlIGVhY2ggcmVsb2NhdGlvbiB0 eXBlIGJhc2VkIG9uIHRoZQ0KPiA+IG1hY2hpbmUgdHlwZS4NCj4gPiA+ICAgICAgICAgIC8vDQo+ ID4gPiAgICAgICAgICBpZiAobUVoZHItPmVfbWFjaGluZSA9PSBFTV9YODZfNjQpIHsNCj4gPiA+ ICsgICAgICAgICAgRWxmNjRfQWRkciBHT1RFbnRyeVJ2YTsNCj4gPiA+ICAgICAgICAgICAgc3dp dGNoIChFTEZfUl9UWVBFKFJlbC0+cl9pbmZvKSkgew0KPiA+ID4gICAgICAgICAgICBjYXNlIFJf WDg2XzY0X05PTkU6DQo+ID4gPiAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gPiBAQCAtODM0LDYg Kzk1NSwzMiBAQCBXcml0ZVNlY3Rpb25zNjQgKA0KPiA+ID4gICAgICAgICAgICAgICAgLSAoU2Vj T2Zmc2V0IC0gU2VjU2hkci0+c2hfYWRkcikpOw0KPiA+ID4gICAgICAgICAgICAgIFZlcmJvc2VN c2cgKCJSZWxvY2F0aW9uOiAgMHglMDhYIiwgKihVSU5UMzIgKilUYXJnKTsNCj4gPiA+ICAgICAg ICAgICAgICBicmVhazsNCj4gPiA+ICsgICAgICAgICAgY2FzZSBSX1g4Nl82NF9HT1RQQ1JFTDoN Cj4gPiA+ICsgICAgICAgICAgY2FzZSBSX1g4Nl82NF9HT1RQQ1JFTFg6DQo+ID4gPiArICAgICAg ICAgIGNhc2UgUl9YODZfNjRfUkVYX0dPVFBDUkVMWDoNCj4gPiA+ICsgICAgICAgICAgICBWZXJi b3NlTXNnICgiUl9YODZfNjRfR09UUENSRUwgZmFtaWx5Iik7DQo+ID4gPiArICAgICAgICAgICAg VmVyYm9zZU1zZyAoIk9mZnNldDogMHglMDhYLCBBZGRlbmQ6IDB4JTA4WCIsDQo+ID4gPiArICAg ICAgICAgICAgICAoVUlOVDMyKShTZWNPZmZzZXQgKyAoUmVsLT5yX29mZnNldCAtIFNlY1NoZHIt PnNoX2FkZHIpKSwNCj4gPiA+ICsgICAgICAgICAgICAgICooVUlOVDMyICopVGFyZyk7DQo+ID4g PiArICAgICAgICAgICAgR09URW50cnlSdmEgPSBSZWwtPnJfb2Zmc2V0IC0gUmVsLT5yX2FkZGVu ZCArICooVUlOVDMyICopVGFyZzsNCj4gPiA+ICsgICAgICAgICAgICBGaW5kRWxmR09UU2VjdGlv bkZyb21HT1RFbnRyeUVsZlJ2YShHT1RFbnRyeVJ2YSk7DQo+ID4gPiArICAgICAgICAgICAgKihV SU5UMzIgKilUYXJnID0gKFVJTlQzMikgKCooVUlOVDMyICopVGFyZw0KPiA+ID4gKyAgICAgICAg ICAgICAgKyAobUNvZmZTZWN0aW9uc09mZnNldFttR09UU2hpbmRleF0gLSBtR09UU2hkci0+c2hf YWRkcikNCj4gPiA+ICsgICAgICAgICAgICAgIC0gKFNlY09mZnNldCAtIFNlY1NoZHItPnNoX2Fk ZHIpKTsNCj4gPiA+ICsgICAgICAgICAgICBWZXJib3NlTXNnICgiUmVsb2NhdGlvbjogIDB4JTA4 WCIsICooVUlOVDMyICopVGFyZyk7DQo+ID4gPiArICAgICAgICAgICAgR09URW50cnlSdmEgKz0g KG1Db2ZmU2VjdGlvbnNPZmZzZXRbbUdPVFNoaW5kZXhdIC0NCj4gbUdPVFNoZHItDQo+ID4gPnNo X2FkZHIpOyAgLy8gRUxGIFJ2YSAtPiBDT0ZGIFJ2YQ0KPiA+ID4gKyAgICAgICAgICAgIGlmIChB Y2N1bXVsYXRlQ29mZkdPVEVudHJpZXMoKFVJTlQzMilHT1RFbnRyeVJ2YSkpIHsNCj4gPiA+ICsg ICAgICAgICAgICAgIC8vDQo+ID4gPiArICAgICAgICAgICAgICAvLyBSZWxvY2F0ZSBHT1QgZW50 cnkgaWYgaXQncyB0aGUgZmlyc3QgdGltZSB3ZSBydW4gaW50byBpdA0KPiA+ID4gKyAgICAgICAg ICAgICAgLy8NCj4gPiA+ICsgICAgICAgICAgICAgIFRhcmcgPSBtQ29mZkZpbGUgKyBHT1RFbnRy eVJ2YTsNCj4gPiA+ICsgICAgICAgICAgICAgIFZlcmJvc2VNc2cgKCJPZmZzZXQ6IDB4JTA4WCwg QWRkZW5kOiAweCUwMTZMWCIsDQo+ID4gPiArICAgICAgICAgICAgICAgIChVSU5UMzIpR09URW50 cnlSdmEsDQo+ID4gPiArICAgICAgICAgICAgICAgICooVUlOVDY0ICopVGFyZyk7DQo+ID4gPiAr ICAgICAgICAgICAgICAqKFVJTlQ2NCAqKVRhcmcgPSAqKFVJTlQ2NCAqKVRhcmcgLSBTeW1TaGRy LT5zaF9hZGRyICsNCj4gPiBtQ29mZlNlY3Rpb25zT2Zmc2V0W1N5bS0+c3Rfc2huZHhdOw0KPiA+ ID4gKyAgICAgICAgICAgICAgVmVyYm9zZU1zZyAoIlJlbG9jYXRpb246ICAweCUwMTZMWCIsICoo VUlOVDY0KilUYXJnKTsNCj4gPiA+ICsgICAgICAgICAgICB9DQo+ID4gPiArICAgICAgICAgICAg YnJlYWs7DQo+ID4gPiAgICAgICAgICAgIGRlZmF1bHQ6DQo+ID4gPiAgICAgICAgICAgICAgRXJy b3IgKE5VTEwsIDAsIDMwMDAsICJJbnZhbGlkIiwgIiVzIHVuc3VwcG9ydGVkIEVMRiBFTV9YODZf NjQNCj4gPiByZWxvY2F0aW9uIDB4JXguIiwgbUluSW1hZ2VOYW1lLCAodW5zaWduZWQpDQo+ID4g PiBFTEZfUl9UWVBFKFJlbC0+cl9pbmZvKSk7DQo+ID4gPiAgICAgICAgICAgIH0NCj4gPiA+IEBA IC05NzIsNiArMTExOSw5IEBAIFdyaXRlUmVsb2NhdGlvbnM2NCAoDQo+ID4gPiAgICAgICAgICAg ICAgY2FzZSBSX1g4Nl82NF9OT05FOg0KPiA+ID4gICAgICAgICAgICAgIGNhc2UgUl9YODZfNjRf UEMzMjoNCj4gPiA+ICAgICAgICAgICAgICBjYXNlIFJfWDg2XzY0X1BMVDMyOg0KPiA+ID4gKyAg ICAgICAgICAgIGNhc2UgUl9YODZfNjRfR09UUENSRUw6DQo+ID4gPiArICAgICAgICAgICAgY2Fz ZSBSX1g4Nl82NF9HT1RQQ1JFTFg6DQo+ID4gPiArICAgICAgICAgICAgY2FzZSBSX1g4Nl82NF9S RVhfR09UUENSRUxYOg0KPiA+ID4gICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gPiAgICAgICAg ICAgICAgY2FzZSBSX1g4Nl82NF82NDoNCj4gPiA+ICAgICAgICAgICAgICAgIFZlcmJvc2VNc2cg KCJFRklfSU1BR0VfUkVMX0JBU0VEX0RJUjY0IE9mZnNldDogMHglMDhYIiwNCj4gPiA+IEBAIC0x MDQwLDEwICsxMTkwLDI0IEBAIFdyaXRlUmVsb2NhdGlvbnM2NCAoDQo+ID4gPiAgICAgICAgICAg ICAgRXJyb3IgKE5VTEwsIDAsIDMwMDAsICJOb3QgU3VwcG9ydGVkIiwgIlRoaXMgdG9vbCBkb2Vz IG5vdA0KPiBzdXBwb3J0DQo+ID4gcmVsb2NhdGlvbnMgZm9yIEVMRiB3aXRoIGVfbWFjaGluZSAl dSAocHJvY2Vzc29yDQo+ID4gPiB0eXBlKS4iLCAodW5zaWduZWQpIG1FaGRyLT5lX21hY2hpbmUp Ow0KPiA+ID4gICAgICAgICAgICB9DQo+ID4gPiAgICAgICAgICB9DQo+ID4gPiArICAgICAgICBp ZiAobUVoZHItPmVfbWFjaGluZSA9PSBFTV9YODZfNjQgJiYgUmVsU2hkci0+c2hfaW5mbyA9PQ0K PiA+IG1HT1RTaGluZGV4KSB7DQo+ID4gPiArICAgICAgICAgIC8vDQo+ID4gPiArICAgICAgICAg IC8vIFRhY2sgcmVsb2NhdGlvbnMgZm9yIEdPVCBlbnRyaWVzIGFmdGVyIG90aGVyIHJlbG9jYXRp b25zIGZvcg0KPiA+ID4gKyAgICAgICAgICAvLyAgIHRoZSBzZWN0aW9uIHRoZSBHT1QgaXMgaW4s IGFzIGl0J3MgdXN1YWxseSBmb3VuZCBhdCB0aGUgZW5kDQo+ID4gPiArICAgICAgICAgIC8vICAg b2YgdGhlIHNlY3Rpb24uDQo+ID4gPiArICAgICAgICAgIC8vDQo+ID4gPiArICAgICAgICAgIEVt aXRHT1RSZWxvY2F0aW9ucygpOw0KPiA+ID4gKyAgICAgICAgfQ0KPiA+ID4gICAgICAgIH0NCj4g PiA+ICAgICAgfQ0KPiA+ID4gICAgfQ0KPiA+ID4NCj4gPiA+ICsgIGlmIChtRWhkci0+ZV9tYWNo aW5lID09IEVNX1g4Nl82NCkgew0KPiA+ID4gKyAgICAvLw0KPiA+ID4gKyAgICAvLyBKdXN0IGlu IGNhc2UgR09UIGlzIGluIGEgc2VjdGlvbiB3aXRoIG5vIG90aGVyIHJlbG9jYXRpb25zDQo+ID4g PiArICAgIC8vDQo+ID4gPiArICAgIEVtaXRHT1RSZWxvY2F0aW9ucygpOw0KPiA+ID4gKyAgfQ0K PiA+ID4gICAgLy8NCj4gPiA+ICAgIC8vIFBhZCBieSBhZGRpbmcgZW1wdHkgZW50cmllcy4NCj4g PiA+ICAgIC8vDQo+ID4gPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ3L2Vs Zl9jb21tb24uaA0KPiA+IGIvQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ3L2VsZl9jb21tb24uaA0K PiA+ID4gaW5kZXggNzY2ZDBlNDIuLjUwYjRlMWYyIDEwMDY0NA0KPiA+ID4gLS0tIGEvQmFzZVRv b2xzL1NvdXJjZS9DL0dlbkZ3L2VsZl9jb21tb24uaA0KPiA+ID4gKysrIGIvQmFzZVRvb2xzL1Nv dXJjZS9DL0dlbkZ3L2VsZl9jb21tb24uaA0KPiA+ID4gQEAgLTU0NCw2ICs1NDQsMTIgQEAgdHlw ZWRlZiBzdHJ1Y3Qgew0KPiA+ID4gICNkZWZpbmUJUl8zODZfVExTX0RUUE1PRDMyCTM1CS8qIEdP VCBlbnRyeQ0KPiA+IGNvbnRhaW5pbmcgVExTIGluZGV4ICovDQo+ID4gPiAgI2RlZmluZQlSXzM4 Nl9UTFNfRFRQT0ZGMzIJMzYJLyogR09UIGVudHJ5IGNvbnRhaW5pbmcgVExTDQo+ID4gb2Zmc2V0 ICovDQo+ID4gPiAgI2RlZmluZQlSXzM4Nl9UTFNfVFBPRkYzMgkzNwkvKiBHT1QgZW50cnkgb2Yg LXZlIHN0YXRpYyBUTFMNCj4gPiBvZmZzZXQgKi8NCj4gPiA+ICsjZGVmaW5lCVJfMzg2X1NJWkUz MgkJMzgJLyogMzItYml0IHN5bWJvbCBzaXplICovDQo+ID4gPiArI2RlZmluZQlSXzM4Nl9UTFNf R09UREVTQwkzOQkvKiBHT1Qgb2Zmc2V0IGZvciBUTFMNCj4gPiBkZXNjcmlwdG9yLiAqLw0KPiA+ ID4gKyNkZWZpbmUJUl8zODZfVExTX0RFU0NfQ0FMTAk0MAkvKiBNYXJrZXIgb2YgY2FsbCB0aHJv dWdoIFRMUw0KPiA+IGRlc2NyaXB0b3IgZm9yIHJlbGF4YXRpb24uICovDQo+ID4gPiArI2RlZmlu ZQlSXzM4Nl9UTFNfREVTQwkJNDEJLyogVExTIGRlc2NyaXB0b3INCj4gPiBjb250YWluaW5nIHBv aW50ZXIgdG8gY29kZSBhbmQgdG8gYXJndW1lbnQsIHJldHVybmluZyB0aGUgVExTIG9mZnNldCBm b3INCj4gdGhlDQo+ID4gPiBzeW1ib2wuICovDQo+ID4gPiArI2RlZmluZQlSXzM4Nl9JUkVMQVRJ VkUJCTQyCS8qIEFkanVzdCBpbmRpcmVjdGx5IGJ5DQo+ID4gcHJvZ3JhbSBiYXNlICovDQo+ID4g PiArI2RlZmluZQlSXzM4Nl9HT1QzMlgJCTQzCS8qIExvYWQgZnJvbSAzMiBiaXQgR09UDQo+ID4g ZW50cnksIHJlbGF4YWJsZS4gKi8NCj4gPiA+DQo+ID4gPiAgLyogTnVsbCByZWxvY2F0aW9uICov DQo+ID4gPiAgI2RlZmluZQlSX0FBUkNINjRfTk9ORQkJCQkyNTYJLyoNCj4gPiBObyByZWxvY2F0 aW9uICovDQo+ID4gPiBAQCAtMTA1Miw2ICsxMDU4LDIzIEBAIHR5cGVkZWYgc3RydWN0IHsNCj4g PiA+ICAjZGVmaW5lCVJfWDg2XzY0X0RUUE9GRjMyCTIxCS8qIE9mZnNldCBpbiBUTFMgYmxvY2sg Ki8NCj4gPiA+ICAjZGVmaW5lCVJfWDg2XzY0X0dPVFRQT0ZGCTIyCS8qIFBDIHJlbGF0aXZlIG9m ZnNldCB0byBJRQ0KPiA+IEdPVCBlbnRyeSAqLw0KPiA+ID4gICNkZWZpbmUJUl9YODZfNjRfVFBP RkYzMgkyMwkvKiBPZmZzZXQgaW4gc3RhdGljIFRMUyBibG9jaw0KPiA+ICovDQo+ID4gPiArI2Rl ZmluZQlSX1g4Nl82NF9QQzY0CQkyNAkvKiBQQyByZWxhdGl2ZSA2NCBiaXQNCj4gPiAqLw0KPiA+ ID4gKyNkZWZpbmUJUl9YODZfNjRfR09UT0ZGNjQJMjUJLyogNjQgYml0IG9mZnNldCB0byBHT1Qg Ki8NCj4gPiA+ICsjZGVmaW5lCVJfWDg2XzY0X0dPVFBDMzIJMjYJLyogMzIgYml0IHNpZ25lZCBw YyByZWxhdGl2ZQ0KPiA+IG9mZnNldCB0byBHT1QgKi8NCj4gPiA+ICsjZGVmaW5lCVJfWDg2XzY0 X0dPVDY0CQkyNwkvKiA2NC1iaXQgR09UIGVudHJ5DQo+ID4gb2Zmc2V0ICovDQo+ID4gPiArI2Rl ZmluZQlSX1g4Nl82NF9HT1RQQ1JFTDY0CTI4CS8qIDY0LWJpdCBQQyByZWxhdGl2ZQ0KPiA+IG9m ZnNldCB0byBHT1QgZW50cnkgKi8NCj4gPiA+ICsjZGVmaW5lCVJfWDg2XzY0X0dPVFBDNjQJMjkJ LyogNjQtYml0IFBDIHJlbGF0aXZlIG9mZnNldCB0bw0KPiA+IEdPVCAqLw0KPiA+ID4gKyNkZWZp bmUJUl9YODZfNjRfR09UUExUNjQJMzAJLyogbGlrZSBHT1Q2NCwgc2F5cyBQTFQgZW50cnkNCj4g PiBuZWVkZWQgKi8NCj4gPiA+ICsjZGVmaW5lCVJfWDg2XzY0X1BMVE9GRjY0CTMxCS8qIDY0LWJp dCBHT1QgcmVsYXRpdmUgb2Zmc2V0DQo+ID4gdG8gUExUIGVudHJ5ICovDQo+ID4gPiArI2RlZmlu ZQlSX1g4Nl82NF9TSVpFMzIJCTMyCS8qIFNpemUgb2Ygc3ltYm9sIHBsdXMNCj4gPiAzMi1iaXQg YWRkZW5kICovDQo+ID4gPiArI2RlZmluZQlSX1g4Nl82NF9TSVpFNjQJCTMzCS8qIFNpemUgb2Yg c3ltYm9sIHBsdXMNCj4gPiA2NC1iaXQgYWRkZW5kICovDQo+ID4gPiArI2RlZmluZQlSX1g4Nl82 NF9HT1RQQzMyX1RMU0RFU0MJMzQJLyogR09UIG9mZnNldCBmb3IgVExTDQo+ID4gZGVzY3JpcHRv ci4gKi8NCj4gPiA+ICsjZGVmaW5lCVJfWDg2XzY0X1RMU0RFU0NfQ0FMTAkzNQkvKiBNYXJrZXIg Zm9yIGNhbGwNCj4gPiB0aHJvdWdoIFRMUyBkZXNjcmlwdG9yLiAqLw0KPiA+ID4gKyNkZWZpbmUJ Ul9YODZfNjRfVExTREVTQwkzNgkvKiBUTFMgZGVzY3JpcHRvci4gKi8NCj4gPiA+ICsjZGVmaW5l CVJfWDg2XzY0X0lSRUxBVElWRQkzNwkvKiBBZGp1c3QgaW5kaXJlY3RseSBieQ0KPiA+IHByb2dy YW0gYmFzZSAqLw0KPiA+ID4gKyNkZWZpbmUJUl9YODZfNjRfUkVMQVRJVkU2NAkzOAkvKiA2NC1i aXQgYWRqdXN0IGJ5IHByb2dyYW0NCj4gPiBiYXNlICovDQo+ID4gPiArI2RlZmluZQlSX1g4Nl82 NF9HT1RQQ1JFTFgJNDEJLyogTG9hZCBmcm9tIDMyIGJpdCBzaWduZWQgcGMNCj4gPiByZWxhdGl2 ZSBvZmZzZXQgdG8gR09UIGVudHJ5IHdpdGhvdXQgUkVYIHByZWZpeCwgcmVsYXhhYmxlLiAqLw0K PiA+ID4gKyNkZWZpbmUJUl9YODZfNjRfUkVYX0dPVFBDUkVMWAk0MgkvKiBMb2FkIGZyb20gMzIg Yml0DQo+ID4gc2lnbmVkIHBjIHJlbGF0aXZlIG9mZnNldCB0byBHT1QgZW50cnkgd2l0aCBSRVgg cHJlZml4LCByZWxheGFibGUuICovDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICAjZW5kaWYgLyogIV9T WVNfRUxGX0NPTU1PTl9IXyAqLw0KPiA+ID4gLS0NCj4gPiA+IDIuMTcuMQ0KPiANCj4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gZWRrMi1kZXZlbCBt YWlsaW5nIGxpc3QNCj4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gaHR0cHM6Ly9saXN0cy4w MS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVsDQo=