From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbguseast3.qq.com (smtpbguseast3.qq.com [54.243.244.52]) by sourceware.org (Postfix) with ESMTPS id 00BCB3858416 for ; Tue, 6 Jun 2023 07:04:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 00BCB3858416 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: bizesmtp82t1686035067tal0d0va Received: from LAPTOP-EPITNQBU ( [58.60.1.20]) by bizesmtp.qq.com (ESMTP) with id ; Tue, 06 Jun 2023 15:04:25 +0800 (CST) X-QQ-SSF: 01400000000000F0S000000A0000000 X-QQ-FEAT: 2i+QW+6os+1Q7SdHQgNDNj76OTQvaF395S8dJnoWg8dbJ33umWj9P+SNDNPJ2 ABrGgVHc9H+VX+0C5LDdwKvPnibRah6UelF6LI/nVDAfADPFQjEX9+Q73S4t0rgZbXOyeMh p3lSMx4WclibwWOmdGZnOgXXoFvwLkO5GRpUTBOEvxbr35MqkQ7b08eSqFBdHT0vgHou16e qpw3OW5L1uhsyy6w7F3g2PVRgGXILeZJtFaH37vMRMJiin+NzrpdXtKrchV0XZszPbG+d3M lSmvLa2amnHznu42GaH9eYMm9M2o9gOWYpOnpoIF7TZXlWAsYPUAt28u23DtGFckrkLWCUC d47Lu5ZcJc22buk2GuXXuZlnKYob0zbNGwsl/J1nwuq4pq1m4371r78Nd6g6GOdJXApOCHh N/s3EfRJ07lL5Pj+QaZr1f+POEWNC4RP X-QQ-GoodBg: 2 X-BIZMAIL-ID: 11001064993481877187 Date: Tue, 6 Jun 2023 15:04:26 +0800 From: "juzhe.zhong@rivai.ai" To: "Richard Biener" Cc: gcc-patches , kito.cheng , Kito.cheng , palmer , palmer , jeffreyalaw , "Robin Dapp" , pan2.li Subject: Re: Re: [PATCH] RISC-V: Support RVV VLA SLP auto-vectorization References: <20230606041635.226494-1-juzhe.zhong@rivai.ai>, X-Priority: 3 X-GUID: 65997206-BE26-42E6-8CDE-60C649AC5E54 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: <35444968EE661734+2023060615042535162380@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart467623230100_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,KAM_SHORT,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,RCVD_IN_SORBS_WEB,SCC_10_SHORT_WORD_LINES,SCC_5_SHORT_WORD_LINES,SPF_HELO_PASS,SPF_PASS,TXREP,T_KAM_HTML_FONT_INVALID,T_SCC_BODY_TEXT_LINE,URIBL_BLACK 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_NextPart467623230100_=---- Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 SSBjb21wYXJlIHRoZSBjb2RlZ2VuIHdpdGggYWFyY2g2NDoNCmh0dHBzOi8v Z29kYm9sdC5vcmcvei94VHhQR2NZTWogDQoNCmFzbSBvZiBhYXJjaDY0Og0K ZjoNCiAgICAgICAgYWRkICAgICB4NSwgeDEsIDcNCiAgICAgICAgbW92ICAg ICB4MiwgMA0KICAgICAgICBjbnRiICAgIHg0DQogICAgICAgIHB0cnVlICAg cDcuYiwgYWxsDQogICAgICAgIGFkcnAgICAgeDMsIC5MQzANCiAgICAgICAg YWRkICAgICB4MywgeDMsIDpsbzEyOi5MQzANCiAgICAgICAgaW5kZXggICB6 MzAuYiwgIzAsICM4DQogICAgICAgIGxkMXJkICAgejI5LmQsIHA3L3osIFt4 M10NCiAgICAgICAgemlwMSAgICB6MzAuYiwgejMwLmIsIHozMC5iDQogICAg ICAgIG1vdiAgICAgeDMsIDc5Mg0KICAgICAgICB6aXAxICAgIHozMC5iLCB6 MzAuYiwgejMwLmINCiAgICAgICAgd2hpbGVsbyBwNy5iLCB4enIsIHgzDQog ICAgICAgIHppcDEgICAgejMwLmIsIHozMC5iLCB6MzAuYg0KLkwyOg0KICAg ICAgICBsZDFiICAgIHozMS5iLCBwNy96LCBbeDUsIHgyXQ0KICAgICAgICB0 YmwgICAgIHozMS5iLCB6MzEuYiwgejMwLmINCiAgICAgICAgYWRkICAgICB6 MzEuYiwgejMxLmIsIHoyOS5iDQogICAgICAgIHN0MWIgICAgejMxLmIsIHA3 LCBbeDAsIHgyXQ0KICAgICAgICBhZGQgICAgIHgyLCB4MiwgeDQNCiAgICAg ICAgd2hpbGVsbyBwNy5iLCB4MiwgeDMNCiAgICAgICAgYi5hbnkgICAuTDIN CkVwaWxvZ3VlOg0KICAgICAgICBsZHIgICAgIGIzMSwgW3gxLCA3OTldDQog ICAgICAgIGFkcnAgICAgeDEsIC5MQzENCiAgICAgICAgbGRyICAgICBkMzAs IFt4MSwgIzpsbzEyOi5MQzFdDQogICAgICAgIGR1cCAgICAgdjMxLjhiLCB2 MzEuYlswXQ0KICAgICAgICBhZGQgICAgIHYzMS44YiwgdjMxLjhiLCB2MzAu OGINCiAgICAgICAgc3RyICAgICBkMzEsIFt4MCwgNzkyXQ0KICAgICAgICBy ZXQNCg0KSGVyZSB5b3UgY2FuIHNlZSB1c2luZyBBRFZTSU1EIChORU9OKSBv ZiBhYXJjaDY0IHRvIHZlY3Rvcml6ZSB0aGUgcmVzIGNvZGVzLg0KV2l0aCB0 aGlzIHBhdGNoIG9mIFJWVjoNCj4gRXBpbG9ndWU6DQo+ICAgICAgICAgbGJ1 ICAgICBhNSw3OTkoYTEpDQo+ICAgICAgICAgYWRkaXcgICBhNCxhNSwxDQo+ ICAgICAgICAgc2IgICAgICBhNCw3OTIoYTApDQo+ICAgICAgICAgYWRkaXcg ICBhNCxhNSwyDQo+ICAgICAgICAgc2IgICAgICBhNCw3OTMoYTApDQo+ICAg ICAgICAgYWRkaXcgICBhNCxhNSw4DQo+ICAgICAgICAgc2IgICAgICBhNCw3 OTQoYTApDQo+ICAgICAgICAgYWRkaXcgICBhNCxhNSw0DQo+ICAgICAgICAg c2IgICAgICBhNCw3OTUoYTApDQo+ICAgICAgICAgYWRkaXcgICBhNCxhNSw1 DQo+ICAgICAgICAgc2IgICAgICBhNCw3OTYoYTApDQo+ICAgICAgICAgYWRk aXcgICBhNCxhNSw2DQo+ICAgICAgICAgc2IgICAgICBhNCw3OTcoYTApDQo+ ICAgICAgICAgYWRkaXcgICBhNCxhNSw3DQo+ICAgICAgICAgc2IgICAgICBh NCw3OTgoYTApDQo+ICAgICAgICAgYWRkaXcgICBhNSxhNSwzDQo+ICAgICAg ICAgc2IgICAgICBhNSw3OTkoYTApDQo+ICAgICAgICAgcmV0DQoNCklkZWFs bHksIHRoaXMgc2NhbGFyIGNvZGVzIHNob3VsZCBiZSBhYmxlIHRvIHZlY3Rv cml6ZWQgbGlrZSBhYXJjaDY0Lg0KDQoNCmp1emhlLnpob25nQHJpdmFpLmFp DQogDQpGcm9tOiBSaWNoYXJkIEJpZW5lcg0KRGF0ZTogMjAyMy0wNi0wNiAx NDo1NQ0KVG86IGp1emhlLnpob25nDQpDQzogZ2NjLXBhdGNoZXM7IGtpdG8u Y2hlbmc7IGtpdG8uY2hlbmc7IHBhbG1lcjsgcGFsbWVyOyBqZWZmcmV5YWxh dzsgcmRhcHAuZ2NjOyBwYW4yLmxpDQpTdWJqZWN0OiBSZTogW1BBVENIXSBS SVNDLVY6IFN1cHBvcnQgUlZWIFZMQSBTTFAgYXV0by12ZWN0b3JpemF0aW9u DQpPbiBUdWUsIEp1biA2LCAyMDIzIGF0IDY6MTfigK9BTSA8anV6aGUuemhv bmdAcml2YWkuYWk+IHdyb3RlOg0KPg0KPiBGcm9tOiBKdXpoZS1aaG9uZyA8 anV6aGUuemhvbmdAcml2YWkuYWk+DQo+DQo+IFRoaXMgcGF0Y2ggZW5hYmxl cyBiYXNpYyBWTEEgU0xQIGF1dG8tdmVjdG9yaXphdGlvbi4NCj4gQ29uc2lk ZXIgdGhpcyBmb2xsb3dpbmcgY2FzZToNCj4gdm9pZA0KPiBmICh1aW50OF90 ICpyZXN0cmljdCBhLCB1aW50OF90ICpyZXN0cmljdCBiKQ0KPiB7DQo+ICAg Zm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7ICsraSkNCj4gICAgIHsNCj4gICAg ICAgYVtpICogOCArIDBdID0gYltpICogOCArIDddICsgMTsNCj4gICAgICAg YVtpICogOCArIDFdID0gYltpICogOCArIDddICsgMjsNCj4gICAgICAgYVtp ICogOCArIDJdID0gYltpICogOCArIDddICsgODsNCj4gICAgICAgYVtpICog OCArIDNdID0gYltpICogOCArIDddICsgNDsNCj4gICAgICAgYVtpICogOCAr IDRdID0gYltpICogOCArIDddICsgNTsNCj4gICAgICAgYVtpICogOCArIDVd ID0gYltpICogOCArIDddICsgNjsNCj4gICAgICAgYVtpICogOCArIDZdID0g YltpICogOCArIDddICsgNzsNCj4gICAgICAgYVtpICogOCArIDddID0gYltp ICogOCArIDddICsgMzsNCj4gICAgIH0NCj4gfQ0KPg0KPiBUbyBlbmFibGUg VkxBIFNMUCBhdXRvLXZlY3Rvcml6YXRpb24sIHdlIHNob3VsZCBiZSBhYmxl IHRvIGhhbmRsZSB0aGlzIGZvbGxvd2luZyBjb25zdCB2ZWN0b3I6DQo+DQo+ IDEuIE5QQVRURVJOUyA9IDgsIE5FTFRTX1BFUl9QQVRURVJOID0gMy4NCj4g eyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4LCA4LCA4LCA4LCA4LCA4LCA4 LCA4LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIC4uLiB9DQo+ DQo+IDIuIE5QQVRURVJOUyA9IDgsIE5FTFRTX1BFUl9QQVRURVJOID0gMS4N Cj4geyAxLCAyLCA4LCA0LCA1LCA2LCA3LCAzLCAuLi4gfQ0KPg0KPiBBbmQg dGhlc2UgdmVjdG9yIGNhbiBiZSBnZW5lcmF0ZWQgYXQgcHJvbG9ndWUuDQo+ DQo+IEFmdGVyIHRoaXMgcGF0Y2gsIHdlIGVuZCB1cCB3aXRoIHRoaXMgZm9s bG93aW5nIGNvZGVnZW46DQo+DQo+IFByb2xvZ3VlOg0KPiAuLi4NCj4gICAg ICAgICB2c2V0dmxpIGE3LHplcm8sZTE2LG0yLHRhLG1hDQo+ICAgICAgICAg dmlkLnYgICB2NA0KPiAgICAgICAgIHZzcmwudmkgdjQsdjQsMw0KPiAgICAg ICAgIGxpICAgICAgYTMsOA0KPiAgICAgICAgIHZtdWwudnggdjQsdjQsYTMg ID09PT4gdjQgPSB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgsIDgsIDgs IDgsIDgsIDgsIDgsIDgsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAx NiwgLi4uIH0NCj4gLi4uDQo+ICAgICAgICAgbGkgICAgICB0MSw2NzYzMzE1 Mg0KPiAgICAgICAgIGFkZGkgICAgdDEsdDEsNTEzDQo+ICAgICAgICAgbGkg ICAgICBhMyw1MDc5MDQwMA0KPiAgICAgICAgIGFkZGkgICAgYTMsYTMsMTU0 MQ0KPiAgICAgICAgIHNsbGkgICAgYTMsYTMsMzINCj4gICAgICAgICBhZGQg ICAgIGEzLGEzLHQxDQo+ICAgICAgICAgdnNldHZsaSB0MSx6ZXJvLGU2NCxt MSx0YSxtYQ0KPiAgICAgICAgIHZtdi52LnggdjMsYTMgICA9PT0+IHYzID0g eyAxLCAyLCA4LCA0LCA1LCA2LCA3LCAzLCAuLi4gfQ0KPiAuLi4NCj4gTG9v cEJvZHk6DQo+IC4uLg0KPiAgICAgICAgIG1pbiAgICAgYTMsLi4uDQo+ICAg ICAgICAgdnNldHZsaSB6ZXJvLGEzLGU4LG0xLHRhLG1hDQo+ICAgICAgICAg dmxlOC52ICB2MiwwKGE2KQ0KPiAgICAgICAgIHZzZXR2bGkgYTcsemVybyxl OCxtMSx0YSxtYQ0KPiAgICAgICAgIHZyZ2F0aGVyZWkxNi52diB2MSx2Mix2 NA0KPiAgICAgICAgIHZhZGQudnYgdjEsdjEsdjMNCj4gICAgICAgICB2c2V0 dmxpIHplcm8sYTMsZTgsbTEsdGEsbWENCj4gICAgICAgICB2c2U4LnYgIHYx LDAoYTIpDQo+ICAgICAgICAgYWRkICAgICBhNixhNixhNA0KPiAgICAgICAg IGFkZCAgICAgYTIsYTIsYTQNCj4gICAgICAgICBtdiAgICAgIGEzLGE1DQo+ ICAgICAgICAgYWRkICAgICBhNSxhNSx0MQ0KPiAgICAgICAgIGJndHUgICAg YTMsYTQsLkwzDQo+IC4uLg0KPg0KPiBOb3RlOiB3ZSBuZWVkIHRvIHVzZSAi dnJnYXRoZXJlaTE2LnZ2IiBpbnN0ZWFkIG9mICJ2cmdhdGhlci52diIgZm9y IFNFVyA9IDggc2luY2UgInZyZ2F0aGVyZWkxNi52diIgY2FuIGNvdmVyIGxh cmdlcg0KPiAgICAgICByYW5nZSB0aGFuICJ2cmdhdGhlci52diIgKHdoaWNo IG9ubHkgY2FuIG1heGltdW0gZWxlbWVudCBpbmRleCA9IDI1NSkuDQo+IEVw aWxvZ3VlOg0KPiAgICAgICAgIGxidSAgICAgYTUsNzk5KGExKQ0KPiAgICAg ICAgIGFkZGl3ICAgYTQsYTUsMQ0KPiAgICAgICAgIHNiICAgICAgYTQsNzky KGEwKQ0KPiAgICAgICAgIGFkZGl3ICAgYTQsYTUsMg0KPiAgICAgICAgIHNi ICAgICAgYTQsNzkzKGEwKQ0KPiAgICAgICAgIGFkZGl3ICAgYTQsYTUsOA0K PiAgICAgICAgIHNiICAgICAgYTQsNzk0KGEwKQ0KPiAgICAgICAgIGFkZGl3 ICAgYTQsYTUsNA0KPiAgICAgICAgIHNiICAgICAgYTQsNzk1KGEwKQ0KPiAg ICAgICAgIGFkZGl3ICAgYTQsYTUsNQ0KPiAgICAgICAgIHNiICAgICAgYTQs Nzk2KGEwKQ0KPiAgICAgICAgIGFkZGl3ICAgYTQsYTUsNg0KPiAgICAgICAg IHNiICAgICAgYTQsNzk3KGEwKQ0KPiAgICAgICAgIGFkZGl3ICAgYTQsYTUs Nw0KPiAgICAgICAgIHNiICAgICAgYTQsNzk4KGEwKQ0KPiAgICAgICAgIGFk ZGl3ICAgYTUsYTUsMw0KPiAgICAgICAgIHNiICAgICAgYTUsNzk5KGEwKQ0K PiAgICAgICAgIHJldA0KPg0KPiBUaGVyZSBpcyBvbmUgbW9yZSBsYXN0IHRo aW5nIHdlIG5lZWQgdG8gZG8gaXMgdGhlICJFcGlsb2d1ZSBhdXRvLXZlY3Rv cml6YXRpb24iIHdoaWNoIG5lZWRzIFZMUyBtb2RlcyBzdXBwb3J0Lg0KPiBJ IHdpbGwgc3VwcG9ydCBWTFMgbW9kZXMgZm9yICJFcGlsb2d1ZSBhdXRvLXZl Y3Rvcml6YXRpb24iIGluIHRoZSBmdXR1cmUuDQogDQpXaGF0J3MgdGhlIGVw aWxvZ3VlIGdlbmVyYXRlZCBmb3I/ICBXaXRoIGEgVkxBIG1haW4gbG9vcCBi b2R5IHlvdQ0Kc2hvdWxkbid0IGhhdmUgb25lIGFwYXJ0IGZyb20NCndoZW4g dGhhdCBib2R5IGlzbid0IGVudGVyZWQgYmVjYXVzZSBvZiBjb3N0IG9yIGFs aWFzIHJlYXNvbnM/DQogDQo+DQo+IGdjYy9DaGFuZ2VMb2c6DQo+DQo+ICAg ICAgICAgKiBjb25maWcvcmlzY3YvcmlzY3YtcHJvdG9zLmggKGV4cGFuZF92 ZWNfcGVybV9jb25zdCk6IE5ldyBmdW5jdGlvbi4NCj4gICAgICAgICAqIGNv bmZpZy9yaXNjdi9yaXNjdi12LmNjIChydnZfYnVpbGRlcjo6Y2FuX2R1cGxp Y2F0ZV9yZXBlYXRpbmdfc2VxdWVuY2VfcCk6IFN1cHBvcnQgUE9MWSBoYW5k bGluZy4NCj4gICAgICAgICAocnZ2X2J1aWxkZXI6OnNpbmdsZV9zdGVwX25w YXR0ZXJuc19wKTogTmV3IGZ1bmN0aW9uLg0KPiAgICAgICAgIChydnZfYnVp bGRlcjo6bnBhdHRlcm5zX2FsbF9lcXVhbF9wKTogRGl0dG8uDQo+ICAgICAg ICAgKGNvbnN0X3ZlY19hbGxfaW5fcmFuZ2VfcCk6IFN1cHBvcnQgUE9MWSBo YW5kbGluZy4NCj4gICAgICAgICAoZ2VuX2NvbnN0X3ZlY3Rvcl9kdXApOiBE aXR0by4NCj4gICAgICAgICAoZW1pdF92bG1heF9nYXRoZXJfaW5zbik6IEFk ZCB2cmdhdGhlcmVpMTYuDQo+ICAgICAgICAgKGVtaXRfdmxtYXhfbWFza2Vk X2dhdGhlcl9tdV9pbnNuKTogRGl0dG8uDQo+ICAgICAgICAgKGV4cGFuZF9j b25zdF92ZWN0b3IpOiBBZGQgVkxBIFNMUCBjb25zdCB2ZWN0b3Igc3VwcG9y dC4NCj4gICAgICAgICAoZXhwYW5kX3ZlY19wZXJtKTogU3VwcG9ydCBQT0xZ Lg0KPiAgICAgICAgIChzdHJ1Y3QgZXhwYW5kX3ZlY19wZXJtX2QpOiBOZXcg c3RydWN0Lg0KPiAgICAgICAgIChzaHVmZmxlX2dlbmVyaWNfcGF0dGVybnMp OiBOZXcgZnVuY3Rpb24uDQo+ICAgICAgICAgKGV4cGFuZF92ZWNfcGVybV9j b25zdF8xKTogRGl0dG8uDQo+ICAgICAgICAgKGV4cGFuZF92ZWNfcGVybV9j b25zdCk6IERpdHRvLg0KPiAgICAgICAgICogY29uZmlnL3Jpc2N2L3Jpc2N2 LmNjIChyaXNjdl92ZWN0b3JpemVfdmVjX3Blcm1fY29uc3QpOiBEaXR0by4N Cj4gICAgICAgICAoVEFSR0VUX1ZFQ1RPUklaRV9WRUNfUEVSTV9DT05TVCk6 IE5ldyB0YXJnZXRob29rLg0KPg0KPiBnY2MvdGVzdHN1aXRlL0NoYW5nZUxv ZzoNCj4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92 ZWMvc2NhbGFibGUtMS5jOiBBZGFwdCB0ZXN0Y2FzZSBmb3IgVkxBIHZlY3Rv cml6ZXIuDQo+ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRv dmVjL3YtMS5jOiBEaXR0by4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlz Y3YvcnZ2L2F1dG92ZWMvenZlMzJmX3p2bDEyOGItMS5jOiBEaXR0by4NCj4g ICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvenZlMzJ4 X3p2bDEyOGItMS5jOiBEaXR0by4NCj4gICAgICAgICAqIGdjYy50YXJnZXQv cmlzY3YvcnZ2L2F1dG92ZWMvenZlNjRkLTEuYzogRGl0dG8uDQo+ICAgICAg ICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTY0ZF96dmwx MjhiLTEuYzogRGl0dG8uDQo+ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2 L3J2di9hdXRvdmVjL3p2ZTY0Zi0xLmM6IERpdHRvLg0KPiAgICAgICAgICog Z2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy96dmU2NGZfenZsMTI4Yi0x LmM6IERpdHRvLg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9ydnYv YXV0b3ZlYy96dmU2NHhfenZsMTI4Yi0xLmM6IERpdHRvLg0KPiAgICAgICAg ICogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscC0x LmM6IE5ldyB0ZXN0Lg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9y dnYvYXV0b3ZlYy9wYXJ0aWFsL3NscC0yLmM6IE5ldyB0ZXN0Lg0KPiAgICAg ICAgICogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3Ns cC0zLmM6IE5ldyB0ZXN0Lg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNj di9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscC00LmM6IE5ldyB0ZXN0Lg0KPiAg ICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFs L3NscC01LmM6IE5ldyB0ZXN0Lg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9y aXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscC02LmM6IE5ldyB0ZXN0Lg0K PiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0 aWFsL3NscC03LmM6IE5ldyB0ZXN0Lg0KPiAgICAgICAgICogZ2NjLnRhcmdl dC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tMS5jOiBOZXcg dGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92 ZWMvcGFydGlhbC9zbHBfcnVuLTIuYzogTmV3IHRlc3QuDQo+ICAgICAgICAg KiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwX3J1 bi0zLmM6IE5ldyB0ZXN0Lg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNj di9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tNC5jOiBOZXcgdGVzdC4N Cj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFy dGlhbC9zbHBfcnVuLTUuYzogTmV3IHRlc3QuDQo+ICAgICAgICAgKiBnY2Mu dGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwX3J1bi02LmM6 IE5ldyB0ZXN0Lg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9ydnYv YXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tNy5jOiBOZXcgdGVzdC4NCj4NCj4g LS0tDQo+ICBnY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXByb3Rvcy5oICAgICAg ICAgICAgICAgfCAgIDIgKw0KPiAgZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12 LmNjICAgICAgICAgICAgICAgICAgIHwgMzUyICsrKysrKysrKysrKysrKyst LQ0KPiAgZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5jYyAgICAgICAgICAgICAg ICAgICAgIHwgIDE2ICsNCj4gIC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0 aWFsL3NscC0xLmMgICAgICAgICB8ICAyMiArKw0KPiAgLi4uL3Jpc2N2L3J2 di9hdXRvdmVjL3BhcnRpYWwvc2xwLTIuYyAgICAgICAgIHwgIDIyICsrDQo+ ICAuLi4vcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAtMy5jICAgICAg ICAgfCAgMjIgKysNCj4gIC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFs L3NscC00LmMgICAgICAgICB8ICAyMiArKw0KPiAgLi4uL3Jpc2N2L3J2di9h dXRvdmVjL3BhcnRpYWwvc2xwLTUuYyAgICAgICAgIHwgIDIyICsrDQo+ICAu Li4vcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAtNi5jICAgICAgICAg fCAgMjMgKysNCj4gIC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3Ns cC03LmMgICAgICAgICB8ICAxNSArDQo+ICAuLi4vcmlzY3YvcnZ2L2F1dG92 ZWMvcGFydGlhbC9zbHBfcnVuLTEuYyAgICAgfCAgNjYgKysrKw0KPiAgLi4u L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwX3J1bi0yLmMgICAgIHwg IDY3ICsrKysNCj4gIC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3Ns cF9ydW4tMy5jICAgICB8ICA2NyArKysrDQo+ICAuLi4vcmlzY3YvcnZ2L2F1 dG92ZWMvcGFydGlhbC9zbHBfcnVuLTQuYyAgICAgfCAgNjcgKysrKw0KPiAg Li4uL3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwX3J1bi01LmMgICAg IHwgIDY3ICsrKysNCj4gIC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFs L3NscF9ydW4tNi5jICAgICB8ICA2NyArKysrDQo+ICAuLi4vcmlzY3YvcnZ2 L2F1dG92ZWMvcGFydGlhbC9zbHBfcnVuLTcuYyAgICAgfCAgNTggKysrDQo+ ICAuLi4vZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9zY2FsYWJsZS0x LmMgfCAgIDIgKy0NCj4gIC4uLi9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRv dmVjL3YtMS5jICAgICAgICB8ICAgNyArLQ0KPiAgLi4uL3Jpc2N2L3J2di9h dXRvdmVjL3p2ZTMyZl96dmwxMjhiLTEuYyAgICAgIHwgICAyICstDQo+ICAu Li4vcmlzY3YvcnZ2L2F1dG92ZWMvenZlMzJ4X3p2bDEyOGItMS5jICAgICAg fCAgIDIgKy0NCj4gIC4uLi9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVj L3p2ZTY0ZC0xLmMgICB8ICAgMiArLQ0KPiAgLi4uL3Jpc2N2L3J2di9hdXRv dmVjL3p2ZTY0ZF96dmwxMjhiLTEuYyAgICAgIHwgICAyICstDQo+ICAuLi4v Z2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy96dmU2NGYtMS5jICAgfCAg IDIgKy0NCj4gIC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy96dmU2NGZfenZsMTI4 Yi0xLmMgICAgICB8ICAgMiArLQ0KPiAgLi4uL3Jpc2N2L3J2di9hdXRvdmVj L3p2ZTY0eF96dmwxMjhiLTEuYyAgICAgIHwgICAyICstDQo+ICAyNiBmaWxl cyBjaGFuZ2VkLCA5NjMgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0p DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwLTEuYw0KPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscC0yLmMNCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1 dG92ZWMvcGFydGlhbC9zbHAtMy5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Bh cnRpYWwvc2xwLTQuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3Ns cC01LmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAtNi5jDQo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwLTcuYw0KPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9y dnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tMS5jDQo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9h dXRvdmVjL3BhcnRpYWwvc2xwX3J1bi0yLmMNCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92 ZWMvcGFydGlhbC9zbHBfcnVuLTMuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9w YXJ0aWFsL3NscF9ydW4tNC5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRp YWwvc2xwX3J1bi01LmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9z bHBfcnVuLTYuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9y dW4tNy5jDQo+DQo+IGRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jp c2N2LXByb3Rvcy5oIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1wcm90b3Mu aA0KPiBpbmRleCBkNzcwZTVlODI2ZS4uMjdlY2QxNmU0OTYgMTAwNjQ0DQo+ IC0tLSBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YtcHJvdG9zLmgNCj4gKysr IGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1wcm90b3MuaA0KPiBAQCAtMTY4 LDYgKzE2OCw4IEBAIHZvaWQgaW5pdF9idWlsdGlucyAodm9pZCk7DQo+ICBj b25zdCBjaGFyICptYW5nbGVfYnVpbHRpbl90eXBlIChjb25zdF90cmVlKTsN Cj4gICNpZmRlZiBHQ0NfVEFSR0VUX0gNCj4gIGJvb2wgdmVyaWZ5X3R5cGVf Y29udGV4dCAobG9jYXRpb25fdCwgdHlwZV9jb250ZXh0X2tpbmQsIGNvbnN0 X3RyZWUsIGJvb2wpOw0KPiArYm9vbCBleHBhbmRfdmVjX3Blcm1fY29uc3Qg KG1hY2hpbmVfbW9kZSwgbWFjaGluZV9tb2RlLCBydHgsIHJ0eCwgcnR4LA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjX3Blcm1f aW5kaWNlcyAmKTsNCj4gICNlbmRpZg0KPiAgdm9pZCBoYW5kbGVfcHJhZ21h X3ZlY3RvciAodm9pZCk7DQo+ICB0cmVlIGJ1aWx0aW5fZGVjbCAodW5zaWdu ZWQsIGJvb2wpOw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9y aXNjdi12LmNjIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12LmNjDQo+IGlu ZGV4IDgzMjc3ZmMyYzA1Li40ODY0NDI5ZWQwNiAxMDA2NDQNCj4gLS0tIGEv Z2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12LmNjDQo+ICsrKyBiL2djYy9jb25m aWcvcmlzY3YvcmlzY3Ytdi5jYw0KPiBAQCAtMjUxLDkgKzI1MSwxMiBAQCBw dWJsaWM6DQo+ICAgICAgbV9pbm5lcl9tb2RlID0gR0VUX01PREVfSU5ORVIg KG1vZGUpOw0KPiAgICAgIG1faW5uZXJfYml0c19zaXplID0gR0VUX01PREVf QklUU0laRSAobV9pbm5lcl9tb2RlKTsNCj4gICAgICBtX2lubmVyX2J5dGVz X3NpemUgPSBHRVRfTU9ERV9TSVpFIChtX2lubmVyX21vZGUpOw0KPiArICAg IG1fbWFza19tb2RlID0gZ2V0X21hc2tfbW9kZSAobW9kZSkucmVxdWlyZSAo KTsNCj4NCj4gICAgICBnY2NfYXNzZXJ0ICgNCj4gICAgICAgIGludF9tb2Rl X2Zvcl9zaXplIChpbm5lcl9iaXRzX3NpemUgKCksIDApLmV4aXN0cyAoJm1f aW5uZXJfaW50X21vZGUpKTsNCj4gKyAgICBtX2ludF9tb2RlDQo+ICsgICAg ICA9IGdldF92ZWN0b3JfbW9kZSAobV9pbm5lcl9pbnRfbW9kZSwgR0VUX01P REVfTlVOSVRTIChtb2RlKSkucmVxdWlyZSAoKTsNCj4gICAgfQ0KPg0KPiAg ICBib29sIGNhbl9kdXBsaWNhdGVfcmVwZWF0aW5nX3NlcXVlbmNlX3AgKCk7 DQo+IEBAIC0yNjIsOSArMjY1LDE0IEBAIHB1YmxpYzoNCj4gICAgYm9vbCBy ZXBlYXRpbmdfc2VxdWVuY2VfdXNlX21lcmdlX3Byb2ZpdGFibGVfcCAoKTsN Cj4gICAgcnR4IGdldF9tZXJnZV9zY2FsYXJfbWFzayAodW5zaWduZWQgaW50 KSBjb25zdDsNCj4NCj4gKyAgYm9vbCBzaW5nbGVfc3RlcF9ucGF0dGVybnNf cCAoKSBjb25zdDsNCj4gKyAgYm9vbCBucGF0dGVybnNfYWxsX2VxdWFsX3Ag KCkgY29uc3Q7DQo+ICsNCj4gICAgbWFjaGluZV9tb2RlIG5ld19tb2RlICgp IGNvbnN0IHsgcmV0dXJuIG1fbmV3X21vZGU7IH0NCj4gICAgc2NhbGFyX21v ZGUgaW5uZXJfbW9kZSAoKSBjb25zdCB7IHJldHVybiBtX2lubmVyX21vZGU7 IH0NCj4gICAgc2NhbGFyX2ludF9tb2RlIGlubmVyX2ludF9tb2RlICgpIGNv bnN0IHsgcmV0dXJuIG1faW5uZXJfaW50X21vZGU7IH0NCj4gKyAgbWFjaGlu ZV9tb2RlIG1hc2tfbW9kZSAoKSBjb25zdCB7IHJldHVybiBtX21hc2tfbW9k ZTsgfQ0KPiArICBtYWNoaW5lX21vZGUgaW50X21vZGUgKCkgY29uc3QgeyBy ZXR1cm4gbV9pbnRfbW9kZTsgfQ0KPiAgICB1bnNpZ25lZCBpbnQgaW5uZXJf Yml0c19zaXplICgpIGNvbnN0IHsgcmV0dXJuIG1faW5uZXJfYml0c19zaXpl OyB9DQo+ICAgIHVuc2lnbmVkIGludCBpbm5lcl9ieXRlc19zaXplICgpIGNv bnN0IHsgcmV0dXJuIG1faW5uZXJfYnl0ZXNfc2l6ZTsgfQ0KPg0KPiBAQCAt MjczLDYgKzI4MSw4IEBAIHByaXZhdGU6DQo+ICAgIHNjYWxhcl9pbnRfbW9k ZSBtX2lubmVyX2ludF9tb2RlOw0KPiAgICBtYWNoaW5lX21vZGUgbV9uZXdf bW9kZTsNCj4gICAgc2NhbGFyX2ludF9tb2RlIG1fbmV3X2lubmVyX21vZGU7 DQo+ICsgIG1hY2hpbmVfbW9kZSBtX21hc2tfbW9kZTsNCj4gKyAgbWFjaGlu ZV9tb2RlIG1faW50X21vZGU7DQo+ICAgIHVuc2lnbmVkIGludCBtX2lubmVy X2JpdHNfc2l6ZTsNCj4gICAgdW5zaWduZWQgaW50IG1faW5uZXJfYnl0ZXNf c2l6ZTsNCj4gIH07DQo+IEBAIC0yOTAsNyArMzAwLDkgQEAgcnZ2X2J1aWxk ZXI6OmNhbl9kdXBsaWNhdGVfcmVwZWF0aW5nX3NlcXVlbmNlX3AgKCkNCj4g ICAgICAgIHx8IEdFVF9NT0RFX1NJWkUgKG1fbmV3X2lubmVyX21vZGUpID4g VU5JVFNfUEVSX1dPUkQNCj4gICAgICAgIHx8ICFnZXRfdmVjdG9yX21vZGUg KG1fbmV3X2lubmVyX21vZGUsIG5ld19zaXplKS5leGlzdHMgKCZtX25ld19t b2RlKSkNCj4gICAgICByZXR1cm4gZmFsc2U7DQo+IC0gIHJldHVybiByZXBl YXRpbmdfc2VxdWVuY2VfcCAoMCwgZnVsbF9uZWx0cyAoKS50b19jb25zdGFu dCAoKSwgbnBhdHRlcm5zICgpKTsNCj4gKyAgaWYgKGZ1bGxfbmVsdHMgKCku aXNfY29uc3RhbnQgKCkpDQo+ICsgICAgcmV0dXJuIHJlcGVhdGluZ19zZXF1 ZW5jZV9wICgwLCBmdWxsX25lbHRzICgpLnRvX2NvbnN0YW50ICgpLCBucGF0 dGVybnMgKCkpOw0KPiArICByZXR1cm4gbmVsdHNfcGVyX3BhdHRlcm4gKCkg PT0gMTsNCj4gIH0NCj4NCj4gIC8qIFJldHVybiB0cnVlIGlmIGl0IGlzIGEg cmVwZWF0aW5nIHNlcXVlbmNlIHRoYXQgdXNpbmcNCj4gQEAgLTM5OCw2ICs0 MTAsNDggQEAgcnZ2X2J1aWxkZXI6OmdldF9tZXJnZV9zY2FsYXJfbWFzayAo dW5zaWduZWQgaW50IGluZGV4X2luX3BhdHRlcm4pIGNvbnN0DQo+ICAgIHJl dHVybiBnZW5faW50X21vZGUgKG1hc2ssIGlubmVyX2ludF9tb2RlICgpKTsN Cj4gIH0NCj4NCj4gKy8qIFJldHVybiB0cnVlIGlmIHRoZSB2YXJpYWJsZS1s ZW5ndGggdmVjdG9yIGlzIHNpbmdsZSBzdGVwLiAgKi8NCj4gK2Jvb2wNCj4g K3J2dl9idWlsZGVyOjpzaW5nbGVfc3RlcF9ucGF0dGVybnNfcCAoKSBjb25z dA0KPiArew0KPiArICBpZiAobmVsdHNfcGVyX3BhdHRlcm4gKCkgIT0gMykN Cj4gKyAgICByZXR1cm4gZmFsc2U7DQo+ICsNCj4gKyAgcG9seV9pbnQ2NCBz dGVwDQo+ICsgICAgPSBydHhfdG9fcG9seV9pbnQ2NCAoZWx0IChucGF0dGVy bnMgKCkpKSAtIHJ0eF90b19wb2x5X2ludDY0IChlbHQgKDApKTsNCj4gKyAg Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBucGF0dGVybnMgKCk7IGkr KykNCj4gKyAgICB7DQo+ICsgICAgICBwb2x5X2ludDY0IGVsZTAgPSBydHhf dG9fcG9seV9pbnQ2NCAoZWx0IChpKSk7DQo+ICsgICAgICBwb2x5X2ludDY0 IGVsZTEgPSBydHhfdG9fcG9seV9pbnQ2NCAoZWx0IChucGF0dGVybnMgKCkg KyBpKSk7DQo+ICsgICAgICBwb2x5X2ludDY0IGVsZTIgPSBydHhfdG9fcG9s eV9pbnQ2NCAoZWx0IChucGF0dGVybnMgKCkgKiAyICsgaSkpOw0KPiArICAg ICAgcG9seV9pbnQ2NCBkaWZmMSA9IGVsZTEgLSBlbGUwOw0KPiArICAgICAg cG9seV9pbnQ2NCBkaWZmMiA9IGVsZTIgLSBlbGUxOw0KPiArICAgICAgaWYg KG1heWJlX25lIChzdGVwLCBkaWZmMSkgfHwgbWF5YmVfbmUgKHN0ZXAsIGRp ZmYyKSkNCj4gKyAgICAgICByZXR1cm4gZmFsc2U7DQo+ICsgICAgfQ0KPiAr ICByZXR1cm4gdHJ1ZTsNCj4gK30NCj4gKw0KPiArLyogUmV0dXJuIHRydWUg aWYgYWxsIGVsZW1lbnRzIG9mIE5QQVRURVJOUyBhcmUgZXF1YWwuDQo+ICsN Cj4gKyAgIEUuZy4gTlBBVFRFUk5TID0gNDoNCj4gKyAgICAgeyAyLCAyLCAy LCAyLCA0LCA0LCA0LCA0LCA4LCA4LCA4LCA4LCAxNiwgMTYsIDE2LCAxNiwg Li4uIH0NCj4gKyAgIEUuZy4gTlBBVFRFUk5TID0gODoNCj4gKyAgICAgeyAy LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4 LCAuLi4gfQ0KPiArKi8NCj4gK2Jvb2wNCj4gK3J2dl9idWlsZGVyOjpucGF0 dGVybnNfYWxsX2VxdWFsX3AgKCkgY29uc3QNCj4gK3sNCj4gKyAgcG9seV9p bnQ2NCBlbGUwID0gcnR4X3RvX3BvbHlfaW50NjQgKGVsdCAoMCkpOw0KPiAr ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMTsgaSA8IG5wYXR0ZXJucyAoKTsg aSsrKQ0KPiArICAgIHsNCj4gKyAgICAgIHBvbHlfaW50NjQgZWxlID0gcnR4 X3RvX3BvbHlfaW50NjQgKGVsdCAoaSkpOw0KPiArICAgICAgaWYgKCFrbm93 bl9lcSAoZWxlLCBlbGUwKSkNCj4gKyAgICAgICByZXR1cm4gZmFsc2U7DQo+ ICsgICAgfQ0KPiArICByZXR1cm4gdHJ1ZTsNCj4gK30NCj4gKw0KPiAgc3Rh dGljIHVuc2lnbmVkDQo+ICBnZXRfc2V3IChtYWNoaW5lX21vZGUgbW9kZSkN Cj4gIHsNCj4gQEAgLTQyNSw3ICs0NzksNyBAQCBjb25zdF92ZWNfYWxsX3Nh bWVfaW5fcmFuZ2VfcCAocnR4IHgsIEhPU1RfV0lERV9JTlQgbWludmFsLA0K PiAgICAgZnV0dXJlLiAgKi8NCj4NCj4gIHN0YXRpYyBib29sDQo+IC1jb25z dF92ZWNfYWxsX2luX3JhbmdlX3AgKHJ0eCB2ZWMsIEhPU1RfV0lERV9JTlQg bWludmFsLCBIT1NUX1dJREVfSU5UIG1heHZhbCkNCj4gK2NvbnN0X3ZlY19h bGxfaW5fcmFuZ2VfcCAocnR4IHZlYywgcG9seV9pbnQ2NCBtaW52YWwsIHBv bHlfaW50NjQgbWF4dmFsKQ0KPiAgew0KPiAgICBpZiAoIUNPTlNUX1ZFQ1RP Ul9QICh2ZWMpDQo+ICAgICAgICB8fCBHRVRfTU9ERV9DTEFTUyAoR0VUX01P REUgKHZlYykpICE9IE1PREVfVkVDVE9SX0lOVCkNCj4gQEAgLTQ0MCw4ICs0 OTQsMTAgQEAgY29uc3RfdmVjX2FsbF9pbl9yYW5nZV9wIChydHggdmVjLCBI T1NUX1dJREVfSU5UIG1pbnZhbCwgSE9TVF9XSURFX0lOVCBtYXh2YWwpDQo+ ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVuaXRzOyBpKyspDQo+ICAgICAg ew0KPiAgICAgICAgcnR4IHZlY19lbGVtID0gQ09OU1RfVkVDVE9SX0VMVCAo dmVjLCBpKTsNCj4gLSAgICAgIGlmICghQ09OU1RfSU5UX1AgKHZlY19lbGVt KQ0KPiAtICAgICAgICAgfHwgIUlOX1JBTkdFIChJTlRWQUwgKHZlY19lbGVt KSwgbWludmFsLCBtYXh2YWwpKQ0KPiArICAgICAgcG9seV9pbnQ2NCB2YWx1 ZTsNCj4gKyAgICAgIGlmICghcG9seV9pbnRfcnR4X3AgKHZlY19lbGVtLCAm dmFsdWUpDQo+ICsgICAgICAgICB8fCBtYXliZV9sdCAodmFsdWUsIG1pbnZh bCkNCj4gKyAgICAgICAgIHx8IG1heWJlX2d0ICh2YWx1ZSwgbWF4dmFsKSkN Cj4gICAgICAgICByZXR1cm4gZmFsc2U7DQo+ICAgICAgfQ0KPiAgICByZXR1 cm4gdHJ1ZTsNCj4gQEAgLTQ1Myw3ICs1MDksNyBAQCBjb25zdF92ZWNfYWxs X2luX3JhbmdlX3AgKHJ0eCB2ZWMsIEhPU1RfV0lERV9JTlQgbWludmFsLCBI T1NUX1dJREVfSU5UIG1heHZhbCkNCj4gICAgIGZ1dHVyZS4gICovDQo+DQo+ ICBzdGF0aWMgcnR4DQo+IC1nZW5fY29uc3RfdmVjdG9yX2R1cCAobWFjaGlu ZV9tb2RlIG1vZGUsIEhPU1RfV0lERV9JTlQgdmFsKQ0KPiArZ2VuX2NvbnN0 X3ZlY3Rvcl9kdXAgKG1hY2hpbmVfbW9kZSBtb2RlLCBwb2x5X2ludDY0IHZh bCkNCj4gIHsNCj4gICAgcnR4IGMgPSBnZW5faW50X21vZGUgKHZhbCwgR0VU X01PREVfSU5ORVIgKG1vZGUpKTsNCj4gICAgcmV0dXJuIGdlbl9jb25zdF92 ZWNfZHVwbGljYXRlIChtb2RlLCBjKTsNCj4gQEAgLTcyNyw3ICs3ODMsMTAg QEAgZW1pdF92bG1heF9nYXRoZXJfaW5zbiAocnR4IHRhcmdldCwgcnR4IG9w LCBydHggc2VsKQ0KPiAgICBydHggZWx0Ow0KPiAgICBpbnNuX2NvZGUgaWNv ZGU7DQo+ICAgIG1hY2hpbmVfbW9kZSBkYXRhX21vZGUgPSBHRVRfTU9ERSAo dGFyZ2V0KTsNCj4gLSAgaWYgKGNvbnN0X3ZlY19kdXBsaWNhdGVfcCAoc2Vs LCAmZWx0KSkNCj4gKyAgbWFjaGluZV9tb2RlIHNlbF9tb2RlID0gR0VUX01P REUgKHNlbCk7DQo+ICsgIGlmIChtYXliZV9uZSAoR0VUX01PREVfU0laRSAo ZGF0YV9tb2RlKSwgR0VUX01PREVfU0laRSAoc2VsX21vZGUpKSkNCj4gKyAg ICBpY29kZSA9IGNvZGVfZm9yX3ByZWRfZ2F0aGVyZWkxNiAoZGF0YV9tb2Rl KTsNCj4gKyAgZWxzZSBpZiAoY29uc3RfdmVjX2R1cGxpY2F0ZV9wIChzZWws ICZlbHQpKQ0KPiAgICAgIHsNCj4gICAgICAgIGljb2RlID0gY29kZV9mb3Jf cHJlZF9nYXRoZXJfc2NhbGFyIChkYXRhX21vZGUpOw0KPiAgICAgICAgc2Vs ID0gZWx0Ow0KPiBAQCAtNzQ0LDcgKzgwMywxMCBAQCBlbWl0X3ZsbWF4X21h c2tlZF9nYXRoZXJfbXVfaW5zbiAocnR4IHRhcmdldCwgcnR4IG9wLCBydHgg c2VsLCBydHggbWFzaykNCj4gICAgcnR4IGVsdDsNCj4gICAgaW5zbl9jb2Rl IGljb2RlOw0KPiAgICBtYWNoaW5lX21vZGUgZGF0YV9tb2RlID0gR0VUX01P REUgKHRhcmdldCk7DQo+IC0gIGlmIChjb25zdF92ZWNfZHVwbGljYXRlX3Ag KHNlbCwgJmVsdCkpDQo+ICsgIG1hY2hpbmVfbW9kZSBzZWxfbW9kZSA9IEdF VF9NT0RFIChzZWwpOw0KPiArICBpZiAobWF5YmVfbmUgKEdFVF9NT0RFX1NJ WkUgKGRhdGFfbW9kZSksIEdFVF9NT0RFX1NJWkUgKHNlbF9tb2RlKSkpDQo+ ICsgICAgaWNvZGUgPSBjb2RlX2Zvcl9wcmVkX2dhdGhlcmVpMTYgKGRhdGFf bW9kZSk7DQo+ICsgIGVsc2UgaWYgKGNvbnN0X3ZlY19kdXBsaWNhdGVfcCAo c2VsLCAmZWx0KSkNCj4gICAgICB7DQo+ICAgICAgICBpY29kZSA9IGNvZGVf Zm9yX3ByZWRfZ2F0aGVyX3NjYWxhciAoZGF0YV9tb2RlKTsNCj4gICAgICAg IHNlbCA9IGVsdDsNCj4gQEAgLTg5NSwxMSArOTU3LDEzMCBAQCBleHBhbmRf Y29uc3RfdmVjdG9yIChydHggdGFyZ2V0LCBydHggc3JjKQ0KPiAgICAgICAg cmV0dXJuOw0KPiAgICAgIH0NCj4NCj4gLSAgLyogVE9ETzogV2Ugb25seSBz dXBwb3J0IGNvbnN0IGR1cGxpY2F0ZSB2ZWN0b3IgZm9yIG5vdy4gTW9yZSBj YXNlcw0KPiAtICAgICB3aWxsIGJlIHN1cHBvcnRlZCB3aGVuIHdlIHN1cHBv cnQgYXV0by12ZWN0b3JpemF0aW9uOg0KPiArICAvKiBIYW5kbGUgdmFyaWFi bGUtbGVuZ3RoIHZlY3Rvci4gICovDQo+ICsgIHVuc2lnbmVkIGludCBuZWx0 c19wZXJfcGF0dGVybiA9IENPTlNUX1ZFQ1RPUl9ORUxUU19QRVJfUEFUVEVS TiAoc3JjKTsNCj4gKyAgdW5zaWduZWQgaW50IG5wYXR0ZXJucyA9IENPTlNU X1ZFQ1RPUl9OUEFUVEVSTlMgKHNyYyk7DQo+ICsgIHJ2dl9idWlsZGVyIGJ1 aWxkZXIgKG1vZGUsIG5wYXR0ZXJucywgbmVsdHNfcGVyX3BhdHRlcm4pOw0K PiArICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG5lbHRzX3Blcl9w YXR0ZXJuOyBpKyspDQo+ICsgICAgew0KPiArICAgICAgZm9yICh1bnNpZ25l ZCBpbnQgaiA9IDA7IGogPCBucGF0dGVybnM7IGorKykNCj4gKyAgICAgICBi dWlsZGVyLnF1aWNrX3B1c2ggKENPTlNUX1ZFQ1RPUl9FTFQgKHNyYywgaSAq IG5wYXR0ZXJucyArIGopKTsNCj4gKyAgICB9DQo+ICsgIGJ1aWxkZXIuZmlu YWxpemUgKCk7DQo+DQo+IC0gICAgICAgMS4gbXVsdGlwbGUgZWx0cyBkdXBs aWNhdGUgdmVjdG9yLg0KPiAtICAgICAgIDIuIG11bHRpcGxlIHBhdHRlcm5z IHdpdGggbXVsdGlwbGUgZWx0cy4gICovDQo+ICsgIGlmIChDT05TVF9WRUNU T1JfRFVQTElDQVRFX1AgKHNyYykpDQo+ICsgICAgew0KPiArICAgICAgaWYg KGJ1aWxkZXIuY2FuX2R1cGxpY2F0ZV9yZXBlYXRpbmdfc2VxdWVuY2VfcCAo KSkNCj4gKyAgICAgICB7DQo+ICsgICAgICAgICBydHggZWxlID0gYnVpbGRl ci5nZXRfbWVyZ2VkX3JlcGVhdGluZ19zZXF1ZW5jZSAoKTsNCj4gKyAgICAg ICAgIHJ0eCBkdXAgPSBleHBhbmRfdmVjdG9yX2Jyb2FkY2FzdCAoYnVpbGRl ci5uZXdfbW9kZSAoKSwgZWxlKTsNCj4gKyAgICAgICAgIGVtaXRfbW92ZV9p bnNuICh0YXJnZXQsIGdlbl9sb3dwYXJ0IChtb2RlLCBkdXApKTsNCj4gKyAg ICAgICB9DQo+ICsgICAgICBlbHNlDQo+ICsgICAgICAgew0KPiArICAgICAg ICAgdW5zaWduZWQgaW50IG5iaXRzID0gbnBhdHRlcm5zIC0gMTsNCj4gKw0K PiArICAgICAgICAgLyogR2VuZXJhdGUgdmlkID0geyAwLCAxLCAyLCAzLCA0 LCA1LCA2LCA3LCAuLi4gfS4gICovDQo+ICsgICAgICAgICBydHggdmlkID0g Z2VuX3JlZ19ydHggKGJ1aWxkZXIuaW50X21vZGUgKCkpOw0KPiArICAgICAg ICAgcnR4IG9wW10gPSB7dmlkfTsNCj4gKyAgICAgICAgIGVtaXRfdmxtYXhf aW5zbiAoY29kZV9mb3JfcHJlZF9zZXJpZXMgKGJ1aWxkZXIuaW50X21vZGUg KCkpLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBSVlZfTUlTQ19P UCwgb3ApOw0KPiArDQo+ICsgICAgICAgICAvKiBHZW5lcmF0ZSB2aWRfcmVw ZWF0ID0geyAwLCAxLCAuLi4gbmJpdHMsIC4uLiB9ICAqLw0KPiArICAgICAg ICAgcnR4IHZpZF9yZXBlYXQgPSBnZW5fcmVnX3J0eCAoYnVpbGRlci5pbnRf bW9kZSAoKSk7DQo+ICsgICAgICAgICBydHggYW5kX29wc1tdID0ge3ZpZF9y ZXBlYXQsIHZpZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Vu X2ludF9tb2RlIChuYml0cywgYnVpbGRlci5pbm5lcl9pbnRfbW9kZSAoKSl9 Ow0KPiArICAgICAgICAgZW1pdF92bG1heF9pbnNuIChjb2RlX2Zvcl9wcmVk X3NjYWxhciAoQU5ELCBidWlsZGVyLmludF9tb2RlICgpKSwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgUlZWX0JJTk9QLCBhbmRfb3BzKTsNCj4g Kw0KPiArICAgICAgICAgcnR4IHRtcCA9IGdlbl9yZWdfcnR4IChidWlsZGVy Lm1vZGUgKCkpOw0KPiArICAgICAgICAgcnR4IGR1cF9vcHNbXSA9IHt0bXAs IGJ1aWxkZXIuZWx0ICgwKX07DQo+ICsgICAgICAgICBlbWl0X3ZsbWF4X2lu c24gKGNvZGVfZm9yX3ByZWRfYnJvYWRjYXN0IChidWlsZGVyLm1vZGUgKCkp LCBSVlZfVU5PUCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgZHVw X29wcyk7DQo+ICsgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMTsg aSA8IGJ1aWxkZXIubnBhdHRlcm5zICgpOyBpKyspDQo+ICsgICAgICAgICAg IHsNCj4gKyAgICAgICAgICAgICAvKiBHZW5lcmF0ZSBtYXNrIGFjY29yZGlu ZyB0byBpLiAgKi8NCj4gKyAgICAgICAgICAgICBydHggbWFzayA9IGdlbl9y ZWdfcnR4IChidWlsZGVyLm1hc2tfbW9kZSAoKSk7DQo+ICsgICAgICAgICAg ICAgcnR4IGNvbnN0X3ZlYyA9IGdlbl9jb25zdF92ZWN0b3JfZHVwIChidWls ZGVyLmludF9tb2RlICgpLCBpKTsNCj4gKyAgICAgICAgICAgICBleHBhbmRf dmVjX2NtcCAobWFzaywgRVEsIHZpZF9yZXBlYXQsIGNvbnN0X3ZlYyk7DQo+ ICsNCj4gKyAgICAgICAgICAgICAvKiBNZXJnZSBzY2FsYXIgdG8gZWFjaCBp LiAgKi8NCj4gKyAgICAgICAgICAgICBydHggdG1wMiA9IGdlbl9yZWdfcnR4 IChidWlsZGVyLm1vZGUgKCkpOw0KPiArICAgICAgICAgICAgIHJ0eCBtZXJn ZV9vcHNbXSA9IHt0bXAyLCB0bXAsIGJ1aWxkZXIuZWx0IChpKSwgbWFza307 DQo+ICsgICAgICAgICAgICAgaW5zbl9jb2RlIGljb2RlID0gY29kZV9mb3Jf cHJlZF9tZXJnZV9zY2FsYXIgKGJ1aWxkZXIubW9kZSAoKSk7DQo+ICsgICAg ICAgICAgICAgZW1pdF92bG1heF9tZXJnZV9pbnNuIChpY29kZSwgUlZWX01F UkdFX09QLCBtZXJnZV9vcHMpOw0KPiArICAgICAgICAgICAgIHRtcCA9IHRt cDI7DQo+ICsgICAgICAgICAgIH0NCj4gKyAgICAgICAgIGVtaXRfbW92ZV9p bnNuICh0YXJnZXQsIHRtcCk7DQo+ICsgICAgICAgfQ0KPiArICAgICAgcmV0 dXJuOw0KPiArICAgIH0NCj4gKyAgZWxzZSBpZiAoQ09OU1RfVkVDVE9SX1NU RVBQRURfUCAoc3JjKSkNCj4gKyAgICB7DQo+ICsgICAgICBnY2NfYXNzZXJ0 IChHRVRfTU9ERV9DTEFTUyAobW9kZSkgPT0gTU9ERV9WRUNUT1JfSU5UKTsN Cj4gKyAgICAgIGlmIChidWlsZGVyLnNpbmdsZV9zdGVwX25wYXR0ZXJuc19w ICgpKQ0KPiArICAgICAgIHsNCj4gKyAgICAgICAgIC8qIERlc2NyaWJlIHRo ZSBjYXNlIGJ5IGNob29zaW5nIE5QQVRURVJOUyA9IDQgYXMgYW4gZXhhbXBs ZS4gICovDQo+ICsgICAgICAgICBydHggYmFzZSwgc3RlcDsNCj4gKyAgICAg ICAgIGlmIChidWlsZGVyLm5wYXR0ZXJuc19hbGxfZXF1YWxfcCAoKSkNCj4g KyAgICAgICAgICAgew0KPiArICAgICAgICAgICAgIC8qIEdlbmVyYXRlIHRo ZSB2YXJpYWJsZS1sZW5ndGggdmVjdG9yIGFzIGJlbG93Og0KPiArICAgICAg ICAgICAgICAgIEUuZy4geyAwLCAwLCAwLCAwLCA4LCA4LCA4LCA4LCAxNiwg MTYsIDE2LCAxNiwgLi4uIH0gKi8NCj4gKyAgICAgICAgICAgICAvKiBTdGVw IDE6IEdlbmVyYXRlIGJhc2UgPSB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIC4u LiB9LiAgKi8NCj4gKyAgICAgICAgICAgICBiYXNlID0gZXhwYW5kX3ZlY3Rv cl9icm9hZGNhc3QgKGJ1aWxkZXIubW9kZSAoKSwgYnVpbGRlci5lbHQgKDAp KTsNCj4gKyAgICAgICAgICAgfQ0KPiArICAgICAgICAgZWxzZQ0KPiArICAg ICAgICAgICB7DQo+ICsgICAgICAgICAgICAgLyogR2VuZXJhdGUgdGhlIHZh cmlhYmxlLWxlbmd0aCB2ZWN0b3IgYXMgYmVsb3c6DQo+ICsgICAgICAgICAg ICAgICAgRS5nLiB7IDAsIDYsIDAsIDYsIDgsIDE0LCA4LCAxNCwgMTYsIDIy LCAxNiwgMjIsIC4uLiB9ICovDQo+ICsgICAgICAgICAgICAgLyogU3RlcCAx OiBHZW5lcmF0ZSBiYXNlID0geyAwLCA2LCAwLCA2LCAuLi4gfS4gICovDQo+ ICsgICAgICAgICAgICAgcnZ2X2J1aWxkZXIgbmV3X2J1aWxkZXIgKGJ1aWxk ZXIubW9kZSAoKSwgYnVpbGRlci5ucGF0dGVybnMgKCksDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpOw0KPiArICAgICAg ICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgYnVpbGRlci5u cGF0dGVybnMgKCk7ICsraSkNCj4gKyAgICAgICAgICAgICAgIG5ld19idWls ZGVyLnF1aWNrX3B1c2ggKGJ1aWxkZXIuZWx0IChpKSk7DQo+ICsgICAgICAg ICAgICAgcnR4IG5ld192ZWMgPSBuZXdfYnVpbGRlci5idWlsZCAoKTsNCj4g KyAgICAgICAgICAgICBiYXNlID0gZ2VuX3JlZ19ydHggKGJ1aWxkZXIubW9k ZSAoKSk7DQo+ICsgICAgICAgICAgICAgZW1pdF9tb3ZlX2luc24gKGJhc2Us IG5ld192ZWMpOw0KPiArICAgICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAg IC8qIFN0ZXAgMjogR2VuZXJhdGUgc3RlcCA9IGdlbl9pbnRfbW9kZSAoZGlm ZiwgbW9kZSkuICAqLw0KPiArICAgICAgICAgcG9seV9pbnQ2NCB2YWx1ZTEg PSBydHhfdG9fcG9seV9pbnQ2NCAoYnVpbGRlci5lbHQgKDApKTsNCj4gKyAg ICAgICAgIHBvbHlfaW50NjQgdmFsdWUyDQo+ICsgICAgICAgICAgID0gcnR4 X3RvX3BvbHlfaW50NjQgKGJ1aWxkZXIuZWx0IChidWlsZGVyLm5wYXR0ZXJu cyAoKSkpOw0KPiArICAgICAgICAgcG9seV9pbnQ2NCBkaWZmID0gdmFsdWUy IC0gdmFsdWUxOw0KPiArICAgICAgICAgc3RlcCA9IGdlbl9pbnRfbW9kZSAo ZGlmZiwgYnVpbGRlci5pbm5lcl9tb2RlICgpKTsNCj4gKw0KPiArICAgICAg ICAgLyogU3RlcCAzOiBHZW5lcmF0ZSB2aWQgPSB7IDAsIDEsIDIsIDMsIDQs IDUsIDYsIDcsIC4uLiB9LiAgKi8NCj4gKyAgICAgICAgIHJ0eCB2aWQgPSBn ZW5fcmVnX3J0eCAoYnVpbGRlci5tb2RlICgpKTsNCj4gKyAgICAgICAgIHJ0 eCBvcFtdID0ge3ZpZH07DQo+ICsgICAgICAgICBlbWl0X3ZsbWF4X2luc24g KGNvZGVfZm9yX3ByZWRfc2VyaWVzIChidWlsZGVyLm1vZGUgKCkpLCBSVlZf TUlTQ19PUCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgb3ApOw0K PiArDQo+ICsgICAgICAgICAvKiBTdGVwIDQ6IEdlbmVyYXRlIGZhY3RvciA9 IHsgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgLi4uIH0uICAqLw0KPiArICAg ICAgICAgcnR4IGZhY3RvciA9IGdlbl9yZWdfcnR4IChidWlsZGVyLm1vZGUg KCkpOw0KPiArICAgICAgICAgcnR4IHNoaWZ0X29wc1tdDQo+ICsgICAgICAg ICAgID0ge2ZhY3RvciwgdmlkLA0KPiArICAgICAgICAgICAgICBnZW5faW50 X21vZGUgKGV4YWN0X2xvZzIgKGJ1aWxkZXIubnBhdHRlcm5zICgpKSwgUG1v ZGUpfTsNCj4gKyAgICAgICAgIGVtaXRfdmxtYXhfaW5zbiAoY29kZV9mb3Jf cHJlZF9zY2FsYXIgKExTSElGVFJULCBidWlsZGVyLm1vZGUgKCkpLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICBSVlZfQklOT1AsIHNoaWZ0X29w cyk7DQo+ICsNCj4gKyAgICAgICAgIC8qIFN0ZXAgNTogR2VuZXJhdGUgYWRq dXN0ZWQgc3RlcCA9IHsgMCwgMCwgMCwgMCwgZGlmZiwgZGlmZiwgLi4uIH0g Ki8NCj4gKyAgICAgICAgIHJ0eCBhZGp1c3RlZF9zdGVwID0gZ2VuX3JlZ19y dHggKGJ1aWxkZXIubW9kZSAoKSk7DQo+ICsgICAgICAgICBydHggbXVsX29w c1tdID0ge2FkanVzdGVkX3N0ZXAsIGZhY3Rvciwgc3RlcH07DQo+ICsgICAg ICAgICBlbWl0X3ZsbWF4X2luc24gKGNvZGVfZm9yX3ByZWRfc2NhbGFyIChN VUxULCBidWlsZGVyLm1vZGUgKCkpLA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICBSVlZfQklOT1AsIG11bF9vcHMpOw0KPiArDQo+ICsgICAgICAg ICAvKiBTdGVwIDY6IEdlbmVyYXRlIHRoZSBmaW5hbCByZXN1bHQuICAqLw0K PiArICAgICAgICAgcnR4IGFkZF9vcHNbXSA9IHt0YXJnZXQsIGJhc2UsIGFk anVzdGVkX3N0ZXB9Ow0KPiArICAgICAgICAgZW1pdF92bG1heF9pbnNuIChj b2RlX2Zvcl9wcmVkIChQTFVTLCBidWlsZGVyLm1vZGUgKCkpLCBSVlZfQklO T1AsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9vcHMpOw0K PiArICAgICAgIH0NCj4gKyAgICAgIGVsc2UNCj4gKyAgICAgICAvKiBUT0RP OiBXZSB3aWxsIGVuYWJsZSBtb3JlIHZhcmlhYmxlLWxlbmd0aCB2ZWN0b3Ig aW4gdGhlIGZ1dHVyZS4gICovDQo+ICsgICAgICAgZ2NjX3VucmVhY2hhYmxl ICgpOw0KPiArICAgIH0NCj4gKyAgZWxzZQ0KPiArICAgIGdjY191bnJlYWNo YWJsZSAoKTsNCj4gIH0NCj4NCj4gIC8qIEV4cGFuZCBhIHByZS1SQSBSVlYg ZGF0YSBtb3ZlIGZyb20gU1JDIHRvIERFU1QuDQo+IEBAIC0yMDI5LDE0ICsy MjEwLDEzIEBAIGV4cGFuZF92ZWNfcGVybSAocnR4IHRhcmdldCwgcnR4IG9w MCwgcnR4IG9wMSwgcnR4IHNlbCkNCj4gIHsNCj4gICAgbWFjaGluZV9tb2Rl IGRhdGFfbW9kZSA9IEdFVF9NT0RFICh0YXJnZXQpOw0KPiAgICBtYWNoaW5l X21vZGUgc2VsX21vZGUgPSBHRVRfTU9ERSAoc2VsKTsNCj4gLQ0KPiAtICAv KiBFbmZvcmNlZCBieSB0aGUgcGF0dGVybiBjb25kaXRpb24uICAqLw0KPiAt ICBpbnQgbnVuaXRzID0gR0VUX01PREVfTlVOSVRTIChzZWxfbW9kZSkudG9f Y29uc3RhbnQgKCk7DQo+ICsgIHBvbHlfdWludDY0IG51bml0cyA9IEdFVF9N T0RFX05VTklUUyAoc2VsX21vZGUpOw0KPg0KPiAgICAvKiBDaGVjayBpZiB0 aGUgc2VsIG9ubHkgcmVmZXJlbmNlcyB0aGUgZmlyc3QgdmFsdWVzIHZlY3Rv ci4gSWYgZWFjaCBzZWxlY3QNCj4gICAgICAgaW5kZXggaXMgaW4gcmFuZ2Ug b2YgWzAsIG51bml0cyAtIDFdLiBBIHNpbmdsZSB2cmdhdGhlciBpbnN0cnVj dGlvbnMgaXMNCj4gLSAgICAgZW5vdWdoLiAgKi8NCj4gLSAgaWYgKGNvbnN0 X3ZlY19hbGxfaW5fcmFuZ2VfcCAoc2VsLCAwLCBudW5pdHMgLSAxKSkNCj4g KyAgICAgZW5vdWdoLiBTaW5jZSB3ZSB3aWxsIHVzZSB2cmdhdGhlcmVpMTYu dnYgZm9yIHZhcmlhYmxlLWxlbmd0aCB2ZWN0b3IsDQo+ICsgICAgIGl0IGlz IG5ldmVyIG91dCBvZiByYW5nZSBhbmQgd2UgZG9uJ3QgbmVlZCB0byBtb2R1 bG8gdGhlIGluZGV4LiAgKi8NCj4gKyAgaWYgKCFudW5pdHMuaXNfY29uc3Rh bnQgKCkgfHwgY29uc3RfdmVjX2FsbF9pbl9yYW5nZV9wIChzZWwsIDAsIG51 bml0cyAtIDEpKQ0KPiAgICAgIHsNCj4gICAgICAgIGVtaXRfdmxtYXhfZ2F0 aGVyX2luc24gKHRhcmdldCwgb3AwLCBzZWwpOw0KPiAgICAgICAgcmV0dXJu Ow0KPiBAQCAtMjA1NywxNCArMjIzNywyMCBAQCBleHBhbmRfdmVjX3Blcm0g KHJ0eCB0YXJnZXQsIHJ0eCBvcDAsIHJ0eCBvcDEsIHJ0eCBzZWwpDQo+ICAg ICAgICByZXR1cm47DQo+ICAgICAgfQ0KPg0KPiAtICAvKiBOb3RlOiB2ZWNf cGVybSBpbmRpY2VzIGFyZSBzdXBwb3NlZCB0byB3cmFwIHdoZW4gdGhleSBn byBiZXlvbmQgdGhlDQo+IC0gICAgIHNpemUgb2YgdGhlIHR3byB2YWx1ZSB2 ZWN0b3JzLCBpLmUuIHRoZSB1cHBlciBiaXRzIG9mIHRoZSBpbmRpY2VzDQo+ IC0gICAgIGFyZSBlZmZlY3RpdmVseSBpZ25vcmVkLiAgUlZWIHZyZ2F0aGVy IGluc3RlYWQgcHJvZHVjZXMgMCBmb3IgYW55DQo+IC0gICAgIG91dC1vZi1y YW5nZSBpbmRpY2VzLCBzbyB3ZSBuZWVkIHRvIG1vZHVsbyBhbGwgdGhlIHZl Y19wZXJtIGluZGljZXMNCj4gLSAgICAgdG8gZW5zdXJlIHRoZXkgYXJlIGFs bCBpbiByYW5nZSBvZiBbMCwgMiAqIG51bml0cyAtIDFdLiAgKi8NCj4gKyAg cnR4IHNlbF9tb2QgPSBzZWw7DQo+ICAgIHJ0eCBtYXhfc2VsID0gZ2VuX2Nv bnN0X3ZlY3Rvcl9kdXAgKHNlbF9tb2RlLCAyICogbnVuaXRzIC0gMSk7DQo+ IC0gIHJ0eCBzZWxfbW9kDQo+IC0gICAgPSBleHBhbmRfc2ltcGxlX2Jpbm9w IChzZWxfbW9kZSwgQU5ELCBzZWwsIG1heF9zZWwsIE5VTEwsIDAsIE9QVEFC X0RJUkVDVCk7DQo+ICsgIC8qIFdlIGRvbid0IG5lZWQgdG8gbW9kdWxvIGlu ZGljZXMgZm9yIFZMQSB2ZWN0b3IuDQo+ICsgICAgIFNpbmNlIHdlIHNob3Vs ZCBndXJhbnRlZSB0aGV5IGFyZW4ndCBvdXQgb2YgcmFuZ2UgYmVmb3JlLiAg Ki8NCj4gKyAgaWYgKG51bml0cy5pc19jb25zdGFudCAoKSkNCj4gKyAgICB7 DQo+ICsgICAgICAvKiBOb3RlOiB2ZWNfcGVybSBpbmRpY2VzIGFyZSBzdXBw b3NlZCB0byB3cmFwIHdoZW4gdGhleSBnbyBiZXlvbmQgdGhlDQo+ICsgICAg ICAgIHNpemUgb2YgdGhlIHR3byB2YWx1ZSB2ZWN0b3JzLCBpLmUuIHRoZSB1 cHBlciBiaXRzIG9mIHRoZSBpbmRpY2VzDQo+ICsgICAgICAgIGFyZSBlZmZl Y3RpdmVseSBpZ25vcmVkLiAgUlZWIHZyZ2F0aGVyIGluc3RlYWQgcHJvZHVj ZXMgMCBmb3IgYW55DQo+ICsgICAgICAgIG91dC1vZi1yYW5nZSBpbmRpY2Vz LCBzbyB3ZSBuZWVkIHRvIG1vZHVsbyBhbGwgdGhlIHZlY19wZXJtIGluZGlj ZXMNCj4gKyAgICAgICAgdG8gZW5zdXJlIHRoZXkgYXJlIGFsbCBpbiByYW5n ZSBvZiBbMCwgMiAqIG51bml0cyAtIDFdLiAgKi8NCj4gKyAgICAgIHNlbF9t b2QgPSBleHBhbmRfc2ltcGxlX2Jpbm9wIChzZWxfbW9kZSwgQU5ELCBzZWws IG1heF9zZWwsIE5VTEwsIDAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPUFRBQl9ESVJFQ1QpOw0KPiArICAgIH0NCj4NCj4g ICAgLyogVGhpcyBmb2xsb3dpbmcgc2VxdWVuY2UgaXMgaGFuZGxpbmcgdGhl IGNhc2UgdGhhdDoNCj4gICAgICAgX19idWlsdGluX3NodWZmbGV2ZWN0b3Ig KHZlYzEsIHZlYzIsIGluZGV4Li4uKSwgdGhlIGluZGV4IGNhbiBiZSBhbnkN Cj4gQEAgLTIwOTQsNCArMjI4MCwxMjQgQEAgZXhwYW5kX3ZlY19wZXJtIChy dHggdGFyZ2V0LCBydHggb3AwLCBydHggb3AxLCBydHggc2VsKQ0KPiAgICBl bWl0X3ZsbWF4X21hc2tlZF9nYXRoZXJfbXVfaW5zbiAodGFyZ2V0LCBvcDEs IHRtcCwgbWFzayk7DQo+ICB9DQo+DQo+ICsvKiBJbXBsZW1lbnQgVEFSR0VU X1ZFQ1RPUklaRV9WRUNfUEVSTV9DT05TVCBmb3IgUlZWLiAgKi8NCj4gKw0K PiArLyogdmVjX3Blcm0gc3VwcG9ydC4gICovDQo+ICsNCj4gK3N0cnVjdCBl eHBhbmRfdmVjX3Blcm1fZA0KPiArew0KPiArICBydHggdGFyZ2V0LCBvcDAs IG9wMTsNCj4gKyAgdmVjX3Blcm1faW5kaWNlcyBwZXJtOw0KPiArICBtYWNo aW5lX21vZGUgdm1vZGU7DQo+ICsgIG1hY2hpbmVfbW9kZSBvcF9tb2RlOw0K PiArICBib29sIG9uZV92ZWN0b3JfcDsNCj4gKyAgYm9vbCB0ZXN0aW5nX3A7 DQo+ICt9Ow0KPiArDQo+ICsvKiBSZWNvZ25pemUgdGhlIHBhdHRlcm4gdGhh dCBjYW4gYmUgc2h1ZmZsZWQgYnkgZ2VuZXJpYyBhcHByb2FjaC4gICovDQo+ ICsNCj4gK3N0YXRpYyBib29sDQo+ICtzaHVmZmxlX2dlbmVyaWNfcGF0dGVy bnMgKHN0cnVjdCBleHBhbmRfdmVjX3Blcm1fZCAqZCkNCj4gK3sNCj4gKyAg bWFjaGluZV9tb2RlIHNlbF9tb2RlID0gcmVsYXRlZF9pbnRfdmVjdG9yX21v ZGUgKGQtPnZtb2RlKS5yZXF1aXJlICgpOw0KPiArICBwb2x5X3VpbnQ2NCBu dW5pdHMgPSBHRVRfTU9ERV9OVU5JVFMgKGQtPnZtb2RlKTsNCj4gKw0KPiAr ICAvKiBGb3IgY29uc3RhbnQgc2l6ZSBpbmRpY2VzLCB3ZSBkb250J3QgbmVl ZCB0byBoYW5kbGUgaXQgaGVyZS4NCj4gKyAgICAgSnVzdCBsZWF2ZSBpdCB0 byB2ZWNfcGVybTxtb2RlPi4gICovDQo+ICsgIGlmIChkLT5wZXJtLmxlbmd0 aCAoKS5pc19jb25zdGFudCAoKSkNCj4gKyAgICByZXR1cm4gZmFsc2U7DQo+ ICsNCj4gKyAgLyogUGVybXV0aW5nIHR3byBTRVc4IHZhcmlhYmxlLWxlbmd0 aCB2ZWN0b3JzIG5lZWQgdnJnYXRoZXJlaTE2LnZ2Lg0KPiArICAgICBPdGhl cndpc2UsIGl0IGNvdWxkIG92ZXJmbG93IHRoZSBpbmRleCByYW5nZS4gICov DQo+ICsgIGlmIChHRVRfTU9ERV9JTk5FUiAoZC0+dm1vZGUpID09IFFJbW9k ZQ0KPiArICAgICAgJiYgIWdldF92ZWN0b3JfbW9kZSAoSEltb2RlLCBudW5p dHMpLmV4aXN0cyAoJnNlbF9tb2RlKSkNCj4gKyAgICByZXR1cm4gZmFsc2U7 DQo+ICsNCj4gKyAgLyogU3VjY2VzcyEgKi8NCj4gKyAgaWYgKGQtPnRlc3Rp bmdfcCkNCj4gKyAgICByZXR1cm4gdHJ1ZTsNCj4gKw0KPiArICBydHggc2Vs ID0gdmVjX3Blcm1faW5kaWNlc190b19ydHggKHNlbF9tb2RlLCBkLT5wZXJt KTsNCj4gKyAgZXhwYW5kX3ZlY19wZXJtIChkLT50YXJnZXQsIGQtPm9wMCwg ZC0+b3AxLCBmb3JjZV9yZWcgKHNlbF9tb2RlLCBzZWwpKTsNCj4gKyAgcmV0 dXJuIHRydWU7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBib29sDQo+ICtleHBh bmRfdmVjX3Blcm1fY29uc3RfMSAoc3RydWN0IGV4cGFuZF92ZWNfcGVybV9k ICpkKQ0KPiArew0KPiArICBnY2NfYXNzZXJ0IChkLT5vcF9tb2RlICE9IEVf Vk9JRG1vZGUpOw0KPiArDQo+ICsgIC8qIFRoZSBwYXR0ZXJuIG1hdGNoaW5n IGZ1bmN0aW9ucyBhYm92ZSBhcmUgd3JpdHRlbiB0byBsb29rIGZvciBhIHNt YWxsDQo+ICsgICAgIG51bWJlciB0byBiZWdpbiB0aGUgc2VxdWVuY2UgKDAs IDEsIE4vMikuICBJZiB3ZSBiZWdpbiB3aXRoIGFuIGluZGV4DQo+ICsgICAg IGZyb20gdGhlIHNlY29uZCBvcGVyYW5kLCB3ZSBjYW4gc3dhcCB0aGUgb3Bl cmFuZHMuICAqLw0KPiArICBwb2x5X2ludDY0IG5lbHQgPSBkLT5wZXJtLmxl bmd0aCAoKTsNCj4gKyAgaWYgKGtub3duX2dlIChkLT5wZXJtWzBdLCBuZWx0 KSkNCj4gKyAgICB7DQo+ICsgICAgICBkLT5wZXJtLnJvdGF0ZV9pbnB1dHMg KDEpOw0KPiArICAgICAgc3RkOjpzd2FwIChkLT5vcDAsIGQtPm9wMSk7DQo+ ICsgICAgfQ0KPiArDQo+ICsgIGlmIChrbm93bl9ndCAobmVsdCwgMSkpDQo+ ICsgICAgew0KPiArICAgICAgaWYgKGQtPnZtb2RlID09IGQtPm9wX21vZGUp DQo+ICsgICAgICAgew0KPiArICAgICAgICAgaWYgKHNodWZmbGVfZ2VuZXJp Y19wYXR0ZXJucyAoZCkpDQo+ICsgICAgICAgICAgIHJldHVybiB0cnVlOw0K PiArICAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiArICAgICAgIH0NCj4gKyAg ICAgIGVsc2UNCj4gKyAgICAgICByZXR1cm4gZmFsc2U7DQo+ICsgICAgfQ0K PiArICByZXR1cm4gZmFsc2U7DQo+ICt9DQo+ICsNCj4gK2Jvb2wNCj4gK2V4 cGFuZF92ZWNfcGVybV9jb25zdCAobWFjaGluZV9tb2RlIHZtb2RlLCBtYWNo aW5lX21vZGUgb3BfbW9kZSwgcnR4IHRhcmdldCwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICBydHggb3AwLCBydHggb3AxLCBjb25zdCB2ZWNfcGVybV9p bmRpY2VzICZzZWwpDQo+ICt7DQo+ICsgIC8qIFJWViBkb2Vzbid0IGhhdmUg TWFzayB0eXBlIHBhY2svdW5wYWNrIGluc3RydWN0aW9ucyBhbmQgd2UgZG9u J3QgdXNlDQo+ICsgICAgIG1hc2sgdG8gZG8gdGhlIGl0ZXJhdGlvbiBsb29w IGNvbnRyb2wuIEp1c3QgZGlzYWJsZSBpdCBkaXJlY3RseS4gICovDQo+ICsg IGlmIChHRVRfTU9ERV9DTEFTUyAodm1vZGUpID09IE1PREVfVkVDVE9SX0JP T0wpDQo+ICsgICAgcmV0dXJuIGZhbHNlOw0KPiArDQo+ICsgIHN0cnVjdCBl eHBhbmRfdmVjX3Blcm1fZCBkOw0KPiArDQo+ICsgIC8qIENoZWNrIHdoZXRo ZXIgdGhlIG1hc2sgY2FuIGJlIGFwcGxpZWQgdG8gYSBzaW5nbGUgdmVjdG9y LiAgKi8NCj4gKyAgaWYgKHNlbC5uaW5wdXRzICgpID09IDEgfHwgKG9wMCAm JiBydHhfZXF1YWxfcCAob3AwLCBvcDEpKSkNCj4gKyAgICBkLm9uZV92ZWN0 b3JfcCA9IHRydWU7DQo+ICsgIGVsc2UgaWYgKHNlbC5hbGxfZnJvbV9pbnB1 dF9wICgwKSkNCj4gKyAgICB7DQo+ICsgICAgICBkLm9uZV92ZWN0b3JfcCA9 IHRydWU7DQo+ICsgICAgICBvcDEgPSBvcDA7DQo+ICsgICAgfQ0KPiArICBl bHNlIGlmIChzZWwuYWxsX2Zyb21faW5wdXRfcCAoMSkpDQo+ICsgICAgew0K PiArICAgICAgZC5vbmVfdmVjdG9yX3AgPSB0cnVlOw0KPiArICAgICAgb3Aw ID0gb3AxOw0KPiArICAgIH0NCj4gKyAgZWxzZQ0KPiArICAgIGQub25lX3Zl Y3Rvcl9wID0gZmFsc2U7DQo+ICsNCj4gKyAgZC5wZXJtLm5ld192ZWN0b3Ig KHNlbC5lbmNvZGluZyAoKSwgZC5vbmVfdmVjdG9yX3AgPyAxIDogMiwNCj4g KyAgICAgICAgICAgICAgICAgICAgc2VsLm5lbHRzX3Blcl9pbnB1dCAoKSk7 DQo+ICsgIGQudm1vZGUgPSB2bW9kZTsNCj4gKyAgZC5vcF9tb2RlID0gb3Bf bW9kZTsNCj4gKyAgZC50YXJnZXQgPSB0YXJnZXQ7DQo+ICsgIGQub3AwID0g b3AwOw0KPiArICBpZiAob3AwID09IG9wMSkNCj4gKyAgICBkLm9wMSA9IGQu b3AwOw0KPiArICBlbHNlDQo+ICsgICAgZC5vcDEgPSBvcDE7DQo+ICsgIGQu dGVzdGluZ19wID0gIXRhcmdldDsNCj4gKw0KPiArICBpZiAoIWQudGVzdGlu Z19wKQ0KPiArICAgIHJldHVybiBleHBhbmRfdmVjX3Blcm1fY29uc3RfMSAo JmQpOw0KPiArDQo+ICsgIHJ0eF9pbnNuICpsYXN0ID0gZ2V0X2xhc3RfaW5z biAoKTsNCj4gKyAgYm9vbCByZXQgPSBleHBhbmRfdmVjX3Blcm1fY29uc3Rf MSAoJmQpOw0KPiArICBnY2NfYXNzZXJ0IChsYXN0ID09IGdldF9sYXN0X2lu c24gKCkpOw0KPiArDQo+ICsgIHJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4g IH0gLy8gbmFtZXNwYWNlIHJpc2N2X3ZlY3Rvcg0KPiBkaWZmIC0tZ2l0IGEv Z2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5jYyBiL2djYy9jb25maWcvcmlzY3Yv cmlzY3YuY2MNCj4gaW5kZXggY2FhNzg1OGI4NjQuLjVkMjIwMTJiNTkxIDEw MDY0NA0KPiAtLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmNjDQo+ICsr KyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YuY2MNCj4gQEAgLTc2MzEsNiAr NzYzMSwxOSBAQCByaXNjdl92ZWN0b3JpemVfcmVsYXRlZF9tb2RlIChtYWNo aW5lX21vZGUgdmVjdG9yX21vZGUsIHNjYWxhcl9tb2RlIGVsZW1lbnRfbW9k ZQ0KPiAgICByZXR1cm4gZGVmYXVsdF92ZWN0b3JpemVfcmVsYXRlZF9tb2Rl ICh2ZWN0b3JfbW9kZSwgZWxlbWVudF9tb2RlLCBudW5pdHMpOw0KPiAgfQ0K Pg0KPiArLyogSW1wbGVtZW50IFRBUkdFVF9WRUNUT1JJWkVfVkVDX1BFUk1f Q09OU1QuICAqLw0KPiArDQo+ICtzdGF0aWMgYm9vbA0KPiArcmlzY3ZfdmVj dG9yaXplX3ZlY19wZXJtX2NvbnN0IChtYWNoaW5lX21vZGUgdm1vZGUsIG1h Y2hpbmVfbW9kZSBvcF9tb2RlLA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJ0eCB0YXJnZXQsIHJ0eCBvcDAsIHJ0eCBvcDEsDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjX3Blcm1f aW5kaWNlcyAmc2VsKQ0KPiArew0KPiArICBpZiAoVEFSR0VUX1ZFQ1RPUiAm JiByaXNjdl92X2V4dF92ZWN0b3JfbW9kZV9wICh2bW9kZSkpDQo+ICsgICAg cmV0dXJuIHJpc2N2X3ZlY3Rvcjo6ZXhwYW5kX3ZlY19wZXJtX2NvbnN0ICh2 bW9kZSwgb3BfbW9kZSwgdGFyZ2V0LCBvcDAsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wMSwgc2VsKTsN Cj4gKw0KPiArICByZXR1cm4gZmFsc2U7DQo+ICt9DQo+DQo+ICAvKiBJbml0 aWFsaXplIHRoZSBHQ0MgdGFyZ2V0IHN0cnVjdHVyZS4gICovDQo+ICAjdW5k ZWYgVEFSR0VUX0FTTV9BTElHTkVEX0hJX09QDQo+IEBAIC03OTMwLDYgKzc5 NDMsOSBAQCByaXNjdl92ZWN0b3JpemVfcmVsYXRlZF9tb2RlIChtYWNoaW5l X21vZGUgdmVjdG9yX21vZGUsIHNjYWxhcl9tb2RlIGVsZW1lbnRfbW9kZQ0K PiAgI3VuZGVmIFRBUkdFVF9WRUNUT1JJWkVfUkVMQVRFRF9NT0RFDQo+ICAj ZGVmaW5lIFRBUkdFVF9WRUNUT1JJWkVfUkVMQVRFRF9NT0RFIHJpc2N2X3Zl Y3Rvcml6ZV9yZWxhdGVkX21vZGUNCj4NCj4gKyN1bmRlZiBUQVJHRVRfVkVD VE9SSVpFX1ZFQ19QRVJNX0NPTlNUDQo+ICsjZGVmaW5lIFRBUkdFVF9WRUNU T1JJWkVfVkVDX1BFUk1fQ09OU1QgcmlzY3ZfdmVjdG9yaXplX3ZlY19wZXJt X2NvbnN0DQo+ICsNCj4gIHN0cnVjdCBnY2NfdGFyZ2V0IHRhcmdldG0gPSBU QVJHRVRfSU5JVElBTElaRVI7DQo+DQo+ICAjaW5jbHVkZSAiZ3QtcmlzY3Yu aCINCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9y aXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscC0xLmMgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAt MS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAw MDAwLi5iZWZiNTE4ZTJkZA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0 aWFsL3NscC0xLmMNCj4gQEAgLTAsMCArMSwyMiBAQA0KPiArLyogeyBkZy1k byBjb21waWxlIH0gKi8NCj4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25z ICItbWFyY2g9cnYzMmdjdiAtbWFiaT1pbHAzMmQgLS1wYXJhbSByaXNjdi1h dXRvdmVjLXByZWZlcmVuY2U9c2NhbGFibGUgLWZkdW1wLXRyZWUtb3B0aW1p emVkLWRldGFpbHMiIH0gKi8NCj4gKw0KPiArI2luY2x1ZGUgPHN0ZGludC1n Y2MuaD4NCj4gKw0KPiArdm9pZCBfX2F0dHJpYnV0ZV9fICgobm9pcGEpKQ0K PiArZiAoaW50OF90ICpyZXN0cmljdCBhLCBpbnQ4X3QgKnJlc3RyaWN0IGIs IGludCBuKQ0KPiArew0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsr aSkNCj4gKyAgICB7DQo+ICsgICAgICBhW2kgKiA4ICsgMF0gPSBiW2kgKiA4 ICsgMzddICsgMTsNCj4gKyAgICAgIGFbaSAqIDggKyAxXSA9IGJbaSAqIDgg KyAzN10gKyAyOw0KPiArICAgICAgYVtpICogOCArIDJdID0gYltpICogOCAr IDM3XSArIDg7DQo+ICsgICAgICBhW2kgKiA4ICsgM10gPSBiW2kgKiA4ICsg MzddICsgNDsNCj4gKyAgICAgIGFbaSAqIDggKyA0XSA9IGJbaSAqIDggKyAz N10gKyA1Ow0KPiArICAgICAgYVtpICogOCArIDVdID0gYltpICogOCArIDM3 XSArIDY7DQo+ICsgICAgICBhW2kgKiA4ICsgNl0gPSBiW2kgKiA4ICsgMzdd ICsgNzsNCj4gKyAgICAgIGFbaSAqIDggKyA3XSA9IGJbaSAqIDggKyAzN10g KyAzOw0KPiArICAgIH0NCj4gK30NCj4gKw0KPiArLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJcLlZFQ19QRVJNIiAxICJvcHRpbWl6 ZWQiIH0gfSAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwLTIuYyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0 aWFsL3NscC0yLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgg MDAwMDAwMDAwMDAuLmFjODE3NDUxMjk1DQo+IC0tLSAvZGV2L251bGwNCj4g KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRv dmVjL3BhcnRpYWwvc2xwLTIuYw0KPiBAQCAtMCwwICsxLDIyIEBADQo+ICsv KiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiArLyogeyBkZy1hZGRpdGlvbmFs LW9wdGlvbnMgIi1tYXJjaD1ydjMyZ2N2IC1tYWJpPWlscDMyZCAtLXBhcmFt IHJpc2N2LWF1dG92ZWMtcHJlZmVyZW5jZT1zY2FsYWJsZSAtZmR1bXAtdHJl ZS1vcHRpbWl6ZWQtZGV0YWlscyIgfSAqLw0KPiArDQo+ICsjaW5jbHVkZSA8 c3RkaW50LWdjYy5oPg0KPiArDQo+ICt2b2lkIF9fYXR0cmlidXRlX18gKChu b2lwYSkpDQo+ICtmIChpbnQxNl90ICpyZXN0cmljdCBhLCBpbnQxNl90ICpy ZXN0cmljdCBiLCBpbnQgbikNCj4gK3sNCj4gKyAgZm9yIChpbnQgaSA9IDA7 IGkgPCBuOyArK2kpDQo+ICsgICAgew0KPiArICAgICAgYVtpICogOCArIDBd ID0gYltpICogOCArIDM3XSArIDE7DQo+ICsgICAgICBhW2kgKiA4ICsgMV0g PSBiW2kgKiA4ICsgMzddICsgMjsNCj4gKyAgICAgIGFbaSAqIDggKyAyXSA9 IGJbaSAqIDggKyAzN10gKyA4Ow0KPiArICAgICAgYVtpICogOCArIDNdID0g YltpICogOCArIDM3XSArIDQ7DQo+ICsgICAgICBhW2kgKiA4ICsgNF0gPSBi W2kgKiA4ICsgMzddICsgNTsNCj4gKyAgICAgIGFbaSAqIDggKyA1XSA9IGJb aSAqIDggKyAzN10gKyA2Ow0KPiArICAgICAgYVtpICogOCArIDZdID0gYltp ICogOCArIDM3XSArIDc7DQo+ICsgICAgICBhW2kgKiA4ICsgN10gPSBiW2kg KiA4ICsgMzddICsgMzsNCj4gKyAgICB9DQo+ICt9DQo+ICsNCj4gKy8qIHsg ZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiXC5WRUNfUEVSTSIg MSAib3B0aW1pemVkIiB9IH0gKi8NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3Ns cC0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1 dG92ZWMvcGFydGlhbC9zbHAtMy5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+IGluZGV4IDAwMDAwMDAwMDAwLi43Mzk2MjA1NWIwMw0KPiAtLS0gL2Rl di9udWxsDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscC0zLmMNCj4gQEAgLTAsMCArMSwy MiBAQA0KPiArLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCj4gKy8qIHsgZGct YWRkaXRpb25hbC1vcHRpb25zICItbWFyY2g9cnYzMmdjdiAtbWFiaT1pbHAz MmQgLS1wYXJhbSByaXNjdi1hdXRvdmVjLXByZWZlcmVuY2U9c2NhbGFibGUg LWZkdW1wLXRyZWUtb3B0aW1pemVkLWRldGFpbHMiIH0gKi8NCj4gKw0KPiAr I2luY2x1ZGUgPHN0ZGludC1nY2MuaD4NCj4gKw0KPiArdm9pZCBfX2F0dHJp YnV0ZV9fICgobm9pcGEpKQ0KPiArZiAoaW50OF90ICpyZXN0cmljdCBhLCBp bnQ4X3QgKnJlc3RyaWN0IGIsIGludCBuKQ0KPiArew0KPiArICBmb3IgKGlu dCBpID0gMDsgaSA8IG47ICsraSkNCj4gKyAgICB7DQo+ICsgICAgICBhW2kg KiA4XSA9IGJbaSAqIDggKyAxXSArIDE7DQo+ICsgICAgICBhW2kgKiA4ICsg MV0gPSBiW2kgKiA4ICsgN10gKyAyOw0KPiArICAgICAgYVtpICogOCArIDJd ID0gYltpICogOCArIDFdICsgMzsNCj4gKyAgICAgIGFbaSAqIDggKyAzXSA9 IGJbaSAqIDggKyA3XSArIDQ7DQo+ICsgICAgICBhW2kgKiA4ICsgNF0gPSBi W2kgKiA4ICsgMV0gKyA1Ow0KPiArICAgICAgYVtpICogOCArIDVdID0gYltp ICogOCArIDddICsgNjsNCj4gKyAgICAgIGFbaSAqIDggKyA2XSA9IGJbaSAq IDggKyAxXSArIDc7DQo+ICsgICAgICBhW2kgKiA4ICsgN10gPSBiW2kgKiA4 ICsgN10gKyA4Ow0KPiArICAgIH0NCj4gK30NCj4gKw0KPiArLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJcLlZFQ19QRVJNIiAxICJv cHRpbWl6ZWQiIH0gfSAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwLTQu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3Zl Yy9wYXJ0aWFsL3NscC00LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g aW5kZXggMDAwMDAwMDAwMDAuLmZhMjE2ZmM4YzQwDQo+IC0tLSAvZGV2L251 bGwNCj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2 di9hdXRvdmVjL3BhcnRpYWwvc2xwLTQuYw0KPiBAQCAtMCwwICsxLDIyIEBA DQo+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiArLyogeyBkZy1hZGRp dGlvbmFsLW9wdGlvbnMgIi1tYXJjaD1ydjMyZ2N2IC1tYWJpPWlscDMyZCAt LXBhcmFtIHJpc2N2LWF1dG92ZWMtcHJlZmVyZW5jZT1zY2FsYWJsZSAtZmR1 bXAtdHJlZS1vcHRpbWl6ZWQtZGV0YWlscyIgfSAqLw0KPiArDQo+ICsjaW5j bHVkZSA8c3RkaW50LWdjYy5oPg0KPiArDQo+ICt2b2lkIF9fYXR0cmlidXRl X18gKChub2lwYSkpDQo+ICtmIChpbnQxNl90ICpyZXN0cmljdCBhLCBpbnQx Nl90ICpyZXN0cmljdCBiLCBpbnQgbikNCj4gK3sNCj4gKyAgZm9yIChpbnQg aSA9IDA7IGkgPCBuOyArK2kpDQo+ICsgICAgew0KPiArICAgICAgYVtpICog OCArIDBdID0gYltpICogOCArIDFdICsgMTsNCj4gKyAgICAgIGFbaSAqIDgg KyAxXSA9IGJbaSAqIDggKyA3XSArIDI7DQo+ICsgICAgICBhW2kgKiA4ICsg Ml0gPSBiW2kgKiA4ICsgMV0gKyAzOw0KPiArICAgICAgYVtpICogOCArIDNd ID0gYltpICogOCArIDddICsgNDsNCj4gKyAgICAgIGFbaSAqIDggKyA0XSA9 IGJbaSAqIDggKyAxXSArIDU7DQo+ICsgICAgICBhW2kgKiA4ICsgNV0gPSBi W2kgKiA4ICsgN10gKyA2Ow0KPiArICAgICAgYVtpICogOCArIDZdID0gYltp ICogOCArIDFdICsgNzsNCj4gKyAgICAgIGFbaSAqIDggKyA3XSA9IGJbaSAq IDggKyA3XSArIDg7DQo+ICsgICAgfQ0KPiArfQ0KPiArDQo+ICsvKiB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIlwuVkVDX1BFUk0iIDEg Im9wdGltaXplZCIgfSB9ICovDQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAt NS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRv dmVjL3BhcnRpYWwvc2xwLTUuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiBpbmRleCAwMDAwMDAwMDAwMC4uODk5ZWQ5ZTMxMGINCj4gLS0tIC9kZXYv bnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAtNS5jDQo+IEBAIC0wLDAgKzEsMjIg QEANCj4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+ICsvKiB7IGRnLWFk ZGl0aW9uYWwtb3B0aW9ucyAiLW1hcmNoPXJ2MzJnY3YgLW1hYmk9aWxwMzJk IC0tcGFyYW0gcmlzY3YtYXV0b3ZlYy1wcmVmZXJlbmNlPXNjYWxhYmxlIC1m ZHVtcC10cmVlLW9wdGltaXplZC1kZXRhaWxzIiB9ICovDQo+ICsNCj4gKyNp bmNsdWRlIDxzdGRpbnQtZ2NjLmg+DQo+ICsNCj4gK3ZvaWQgX19hdHRyaWJ1 dGVfXyAoKG5vaXBhKSkNCj4gK2YgKGludDhfdCAqcmVzdHJpY3QgYSwgaW50 OF90ICpyZXN0cmljdCBiLCBpbnQgbikNCj4gK3sNCj4gKyAgZm9yIChpbnQg aSA9IDA7IGkgPCBuOyArK2kpDQo+ICsgICAgew0KPiArICAgICAgYVtpICog OCArIDBdID0gYltpICogOCArIDFdICsgMTsNCj4gKyAgICAgIGFbaSAqIDgg KyAxXSA9IGJbaSAqIDggKyA3XSArIDI7DQo+ICsgICAgICBhW2kgKiA4ICsg Ml0gPSBiW2kgKiA4ICsgNF0gKyAzOw0KPiArICAgICAgYVtpICogOCArIDNd ID0gYltpICogOCArIDhdICsgNDsNCj4gKyAgICAgIGFbaSAqIDggKyA0XSA9 IGJbaSAqIDggKyAxXSArIDU7DQo+ICsgICAgICBhW2kgKiA4ICsgNV0gPSBi W2kgKiA4ICsgN10gKyA2Ow0KPiArICAgICAgYVtpICogOCArIDZdID0gYltp ICogOCArIDRdICsgNzsNCj4gKyAgICAgIGFbaSAqIDggKyA3XSA9IGJbaSAq IDggKyA4XSArIDg7DQo+ICsgICAgfQ0KPiArfQ0KPiArDQo+ICsvKiB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIlwuVkVDX1BFUk0iIDEg Im9wdGltaXplZCIgfSB9ICovDQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAt Ni5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRv dmVjL3BhcnRpYWwvc2xwLTYuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiBpbmRleCAwMDAwMDAwMDAwMC4uZmI4N2NjMDBjZWENCj4gLS0tIC9kZXYv bnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAtNi5jDQo+IEBAIC0wLDAgKzEsMjMg QEANCj4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+ICsvKiB7IGRnLWFk ZGl0aW9uYWwtb3B0aW9ucyAiLW1hcmNoPXJ2MzJnY3YgLW1hYmk9aWxwMzJk IC0tcGFyYW0gcmlzY3YtYXV0b3ZlYy1wcmVmZXJlbmNlPXNjYWxhYmxlIC1m ZHVtcC10cmVlLW9wdGltaXplZC1kZXRhaWxzIiB9ICovDQo+ICsNCj4gKyNp bmNsdWRlIDxzdGRpbnQtZ2NjLmg+DQo+ICsNCj4gK3ZvaWQgX19hdHRyaWJ1 dGVfXyAoKG5vaXBhKSkNCj4gK2YgKHVpbnQ4X3QgKnJlc3RyaWN0IGEsIHVp bnQ4X3QgKnJlc3RyaWN0IGIsIGludCBuKQ0KPiArew0KPiArICBmb3IgKGlu dCBpID0gMDsgaSA8IG47ICsraSkNCj4gKyAgICB7DQo+ICsgICAgICBhW2kg KiA4ICsgMF0gPSBiW2kgKiA4ICsgMV0gKyAxOw0KPiArICAgICAgYVtpICog OCArIDFdID0gYltpICogOCArIDJdICsgMjsNCj4gKyAgICAgIGFbaSAqIDgg KyAyXSA9IGJbaSAqIDggKyA2XSArIDg7DQo+ICsgICAgICBhW2kgKiA4ICsg M10gPSBiW2kgKiA4ICsgN10gKyA0Ow0KPiArICAgICAgYVtpICogOCArIDRd ID0gYltpICogOCArIDNdICsgNTsNCj4gKyAgICAgIGFbaSAqIDggKyA1XSA9 IGJbaSAqIDggKyA0XSArIDY7DQo+ICsgICAgICBhW2kgKiA4ICsgNl0gPSBi W2kgKiA4ICsgNV0gKyA3Ow0KPiArICAgICAgYVtpICogOCArIDddID0gYltp ICogOCArIDBdICsgMzsNCj4gKyAgICB9DQo+ICt9DQo+ICsNCj4gKy8qIHsg ZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiXC5WRUNfUEVSTSIg MSAib3B0aW1pemVkIiB9IH0gKi8NCj4gKw0KPiBkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRp YWwvc2xwLTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9y dnYvYXV0b3ZlYy9wYXJ0aWFsL3NscC03LmMNCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAuLjNkZDc0NGI1ODZlDQo+IC0t LSAvZGV2L251bGwNCj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwLTcuYw0KPiBAQCAtMCww ICsxLDE1IEBADQo+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiArLyog eyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tYXJjaD1ydjMyZ2N2IC1tYWJp PWlscDMyZCAtLXBhcmFtIHJpc2N2LWF1dG92ZWMtcHJlZmVyZW5jZT1zY2Fs YWJsZSAtZmR1bXAtdHJlZS1vcHRpbWl6ZWQtZGV0YWlscyIgfSAqLw0KPiAr DQo+ICsjaW5jbHVkZSA8c3RkaW50LWdjYy5oPg0KPiArDQo+ICt2b2lkIF9f YXR0cmlidXRlX18gKChub2lwYSkpDQo+ICtmIChmbG9hdCAqX19yZXN0cmlj dCBmLCBkb3VibGUgKl9fcmVzdHJpY3QgZCwgaW50IG4pDQo+ICt7DQo+ICsg IGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKQ0KPiArICAgIHsNCj4gKyAg ICAgIGZbaSAqIDIgKyAwXSA9IDE7DQo+ICsgICAgICBmW2kgKiAyICsgMV0g PSAyOw0KPiArICAgICAgZFtpXSA9IDM7DQo+ICsgICAgfQ0KPiArfQ0KPiBk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2 di9hdXRvdmVjL3BhcnRpYWwvc2xwX3J1bi0xLmMgYi9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHBfcnVu LTEuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAw MDAwMC4uMTZmMDc4YTA0MzMNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFy dGlhbC9zbHBfcnVuLTEuYw0KPiBAQCAtMCwwICsxLDY2IEBADQo+ICsvKiB7 IGRnLWRvIHJ1biB7IHRhcmdldCB7IHJpc2N2X3ZlY3RvciB9IH0gfSAqLw0K PiArLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi0tcGFyYW0gcmlzY3Yt YXV0b3ZlYy1wcmVmZXJlbmNlPXNjYWxhYmxlIiB9ICovDQo+ICsNCj4gKyNp bmNsdWRlICJzbHAtMS5jIg0KPiArDQo+ICsjZGVmaW5lIExJTUlUIDEyOA0K PiArdm9pZCBfX2F0dHJpYnV0ZV9fICgob3B0aW1pemUgKDApKSkNCj4gK2Zf Z29sZGVuIChpbnQ4X3QgKnJlc3RyaWN0IGEsIGludDhfdCAqcmVzdHJpY3Qg YiwgaW50IG4pDQo+ICt7DQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsg KytpKQ0KPiArICAgIHsNCj4gKyAgICAgIGFbaSAqIDggKyAwXSA9IGJbaSAq IDggKyAzN10gKyAxOw0KPiArICAgICAgYVtpICogOCArIDFdID0gYltpICog OCArIDM3XSArIDI7DQo+ICsgICAgICBhW2kgKiA4ICsgMl0gPSBiW2kgKiA4 ICsgMzddICsgODsNCj4gKyAgICAgIGFbaSAqIDggKyAzXSA9IGJbaSAqIDgg KyAzN10gKyA0Ow0KPiArICAgICAgYVtpICogOCArIDRdID0gYltpICogOCAr IDM3XSArIDU7DQo+ICsgICAgICBhW2kgKiA4ICsgNV0gPSBiW2kgKiA4ICsg MzddICsgNjsNCj4gKyAgICAgIGFbaSAqIDggKyA2XSA9IGJbaSAqIDggKyAz N10gKyA3Ow0KPiArICAgICAgYVtpICogOCArIDddID0gYltpICogOCArIDM3 XSArIDM7DQo+ICsgICAgfQ0KPiArfQ0KPiArDQo+ICtpbnQNCj4gK21haW4g KHZvaWQpDQo+ICt7DQo+ICsjZGVmaW5lIFJVTihOVU0pICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiArICBpbnQ4X3QgYV8jI05VTVtOVU0gKiA4ICsgOF0gPSB7 MH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwNCj4gKyAgaW50OF90IGFfZ29sZGVuXyMjTlVNW05VTSAqIDggKyA4XSA9 IHswfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgIGludDhfdCBiXyMjTlVNW05VTSAqIDggKyAzN10gPSB7MH07ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBm b3IgKGludCBpID0gMDsgaSA8IE5VTSAqIDggKyAzNzsgaSsrKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICB7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICBpZiAoaSAl IE5VTSA9PSAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgIGJfIyNOVU1baV0g PSAoaSArIE5VTSkgJSBMSU1JVDsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXA0KPiArICAgICAgZWxzZSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCj4gKyAgICAgICBiXyMjTlVNW2ldID0gKGkgLSBOVU0p ICUgKC1MSU1JVCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCj4gKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQo+ICsgIGYgKGFfIyNOVU0sIGJfIyNOVU0sIE5VTSk7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAr ICBmX2dvbGRlbiAoYV9nb2xkZW5fIyNOVU0sIGJfIyNOVU0sIE5VTSk7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZm9y IChpbnQgaSA9IDA7IGkgPCBOVU0gKiA4ICsgODsgaSsrKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgeyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgaWYgKGFfIyNO VU1baV0gIT0gYV9nb2xkZW5fIyNOVU1baV0pICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICBfX2J1aWx0aW5fYWJv cnQgKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwNCj4gKyAgICB9DQo+ICsNCj4gKyAgUlVOICgzKTsN Cj4gKyAgUlVOICg1KTsNCj4gKyAgUlVOICgxNSk7DQo+ICsgIFJVTiAoMTYp Ow0KPiArICBSVU4gKDE3KTsNCj4gKyAgUlVOICgzMSk7DQo+ICsgIFJVTiAo MzIpOw0KPiArICBSVU4gKDMzKTsNCj4gKyAgUlVOICg2Myk7DQo+ICsgIFJV TiAoNjQpOw0KPiArICBSVU4gKDY1KTsNCj4gKyAgUlVOICgxMjcpOw0KPiAr ICBSVU4gKDEyOCk7DQo+ICsgIFJVTiAoMTI5KTsNCj4gKyAgUlVOICgyMzkp Ow0KPiArICBSVU4gKDM1OSk7DQo+ICsgIFJVTiAoNDk4KTsNCj4gKyAgUlVO ICg3OTkpOw0KPiArICBSVU4gKDk3Nyk7DQo+ICsgIFJVTiAoNTc4OSk7DQo+ ICsgIHJldHVybiAwOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xw X3J1bi0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2 L2F1dG92ZWMvcGFydGlhbC9zbHBfcnVuLTIuYw0KPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uNDFmNjg4ZjYyOGMNCj4g LS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHBfcnVuLTIuYw0KPiBA QCAtMCwwICsxLDY3IEBADQo+ICsvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCB7 IHJpc2N2X3ZlY3RvciB9IH0gfSAqLw0KPiArLyogeyBkZy1hZGRpdGlvbmFs LW9wdGlvbnMgIi0tcGFyYW0gcmlzY3YtYXV0b3ZlYy1wcmVmZXJlbmNlPXNj YWxhYmxlIiB9ICovDQo+ICsNCj4gKyNpbmNsdWRlICJzbHAtMi5jIg0KPiAr DQo+ICsjZGVmaW5lIExJTUlUIDMyNzY3DQo+ICsNCj4gK3ZvaWQgX19hdHRy aWJ1dGVfXyAoKG9wdGltaXplICgwKSkpDQo+ICtmX2dvbGRlbiAoaW50MTZf dCAqcmVzdHJpY3QgYSwgaW50MTZfdCAqcmVzdHJpY3QgYiwgaW50IG4pDQo+ ICt7DQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKQ0KPiArICAg IHsNCj4gKyAgICAgIGFbaSAqIDggKyAwXSA9IGJbaSAqIDggKyAzN10gKyAx Ow0KPiArICAgICAgYVtpICogOCArIDFdID0gYltpICogOCArIDM3XSArIDI7 DQo+ICsgICAgICBhW2kgKiA4ICsgMl0gPSBiW2kgKiA4ICsgMzddICsgODsN Cj4gKyAgICAgIGFbaSAqIDggKyAzXSA9IGJbaSAqIDggKyAzN10gKyA0Ow0K PiArICAgICAgYVtpICogOCArIDRdID0gYltpICogOCArIDM3XSArIDU7DQo+ ICsgICAgICBhW2kgKiA4ICsgNV0gPSBiW2kgKiA4ICsgMzddICsgNjsNCj4g KyAgICAgIGFbaSAqIDggKyA2XSA9IGJbaSAqIDggKyAzN10gKyA3Ow0KPiAr ICAgICAgYVtpICogOCArIDddID0gYltpICogOCArIDM3XSArIDM7DQo+ICsg ICAgfQ0KPiArfQ0KPiArDQo+ICtpbnQNCj4gK21haW4gKHZvaWQpDQo+ICt7 DQo+ICsjZGVmaW5lIFJVTihOVU0pICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAr ICBpbnQxNl90IGFfIyNOVU1bTlVNICogOCArIDhdID0gezB9OyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgaW50 MTZfdCBhX2dvbGRlbl8jI05VTVtOVU0gKiA4ICsgOF0gPSB7MH07ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGludDE2X3Qg Yl8jI05VTVtOVU0gKiA4ICsgMzddID0gezB9OyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBmb3IgKGludCBpID0g MDsgaSA8IE5VTSAqIDggKyAzNzsgaSsrKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICB7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcDQo+ICsgICAgICBpZiAoaSAlIE5VTSA9PSAwKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXA0KPiArICAgICAgIGJfIyNOVU1baV0gPSAoaSArIE5VTSkg JSBMSU1JVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXA0KPiArICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN Cj4gKyAgICAgICBiXyMjTlVNW2ldID0gKGkgLSBOVU0pICUgKC1MSU1JVCk7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAg ICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGYgKGFf IyNOVU0sIGJfIyNOVU0sIE5VTSk7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBmX2dvbGRlbiAo YV9nb2xkZW5fIyNOVU0sIGJfIyNOVU0sIE5VTSk7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZm9yIChpbnQgaSA9IDA7 IGkgPCBOVU0gKiA4ICsgODsgaSsrKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQo+ICsgICAgeyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXA0KPiArICAgICAgaWYgKGFfIyNOVU1baV0gIT0gYV9n b2xkZW5fIyNOVU1baV0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCj4gKyAgICAgICBfX2J1aWx0aW5fYWJvcnQgKCk7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwNCj4gKyAgICB9DQo+ICsNCj4gKyAgUlVOICgzKTsNCj4gKyAgUlVOICg1 KTsNCj4gKyAgUlVOICgxNSk7DQo+ICsgIFJVTiAoMTYpOw0KPiArICBSVU4g KDE3KTsNCj4gKyAgUlVOICgzMSk7DQo+ICsgIFJVTiAoMzIpOw0KPiArICBS VU4gKDMzKTsNCj4gKyAgUlVOICg2Myk7DQo+ICsgIFJVTiAoNjQpOw0KPiAr ICBSVU4gKDY1KTsNCj4gKyAgUlVOICgxMjcpOw0KPiArICBSVU4gKDEyOCk7 DQo+ICsgIFJVTiAoMTI5KTsNCj4gKyAgUlVOICgyMzkpOw0KPiArICBSVU4g KDM1OSk7DQo+ICsgIFJVTiAoNDk4KTsNCj4gKyAgUlVOICg3OTkpOw0KPiAr ICBSVU4gKDk3Nyk7DQo+ICsgIFJVTiAoNTc4OSk7DQo+ICsgIHJldHVybiAw Ow0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwX3J1bi0zLmMgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFy dGlhbC9zbHBfcnVuLTMuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBp bmRleCAwMDAwMDAwMDAwMC4uMzA5OTZjYjJjNmUNCj4gLS0tIC9kZXYvbnVs bA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2 L2F1dG92ZWMvcGFydGlhbC9zbHBfcnVuLTMuYw0KPiBAQCAtMCwwICsxLDY3 IEBADQo+ICsvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCB7IHJpc2N2X3ZlY3Rv ciB9IH0gfSAqLw0KPiArLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi0t cGFyYW0gcmlzY3YtYXV0b3ZlYy1wcmVmZXJlbmNlPXNjYWxhYmxlIiB9ICov DQo+ICsNCj4gKyNpbmNsdWRlICJzbHAtMy5jIg0KPiArDQo+ICsjZGVmaW5l IExJTUlUIDEyOA0KPiArDQo+ICt2b2lkIF9fYXR0cmlidXRlX18gKChvcHRp bWl6ZSAoMCkpKQ0KPiArZl9nb2xkZW4gKGludDhfdCAqcmVzdHJpY3QgYSwg aW50OF90ICpyZXN0cmljdCBiLCBpbnQgbikNCj4gK3sNCj4gKyAgZm9yIChp bnQgaSA9IDA7IGkgPCBuOyArK2kpDQo+ICsgICAgew0KPiArICAgICAgYVtp ICogOF0gPSBiW2kgKiA4ICsgMV0gKyAxOw0KPiArICAgICAgYVtpICogOCAr IDFdID0gYltpICogOCArIDddICsgMjsNCj4gKyAgICAgIGFbaSAqIDggKyAy XSA9IGJbaSAqIDggKyAxXSArIDM7DQo+ICsgICAgICBhW2kgKiA4ICsgM10g PSBiW2kgKiA4ICsgN10gKyA0Ow0KPiArICAgICAgYVtpICogOCArIDRdID0g YltpICogOCArIDFdICsgNTsNCj4gKyAgICAgIGFbaSAqIDggKyA1XSA9IGJb aSAqIDggKyA3XSArIDY7DQo+ICsgICAgICBhW2kgKiA4ICsgNl0gPSBiW2kg KiA4ICsgMV0gKyA3Ow0KPiArICAgICAgYVtpICogOCArIDddID0gYltpICog OCArIDddICsgODsNCj4gKyAgICB9DQo+ICt9DQo+ICsNCj4gK2ludA0KPiAr bWFpbiAodm9pZCkNCj4gK3sNCj4gKyNkZWZpbmUgUlVOKE5VTSkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcDQo+ICsgIGludDhfdCBhXyMjTlVNW05VTSAqIDggKyA4 XSA9IHswfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiArICBpbnQ4X3QgYV9nb2xkZW5fIyNOVU1bTlVNICogOCAr IDhdID0gezB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwNCj4gKyAgaW50OF90IGJfIyNOVU1bTlVNICogOCArIDhdID0gezB9OyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgTlVNICogOCArIDg7IGkrKykgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAg IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgIGlm IChpICUgTlVNID09IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICAgYl8jI05V TVtpXSA9IChpICsgTlVNKSAlIExJTUlUOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICBlbHNlICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXA0KPiArICAgICAgIGJfIyNOVU1baV0gPSAoaSAt IE5VTSkgJSAoLUxJTUlUKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXA0KPiArICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCj4gKyAgZiAoYV8jI05VTSwgYl8jI05VTSwgTlVNKTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQo+ICsgIGZfZ29sZGVuIChhX2dvbGRlbl8jI05VTSwgYl8jI05VTSwgTlVN KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAr ICBmb3IgKGludCBpID0gMDsgaSA8IE5VTSAqIDggKyA4OyBpKyspICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICB7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICBpZiAo YV8jI05VTVtpXSAhPSBhX2dvbGRlbl8jI05VTVtpXSkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgIF9fYnVpbHRp bl9hYm9ydCAoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KPiArICAgIH0NCj4gKw0KPiArICBSVU4g KDMpOw0KPiArICBSVU4gKDUpOw0KPiArICBSVU4gKDE1KTsNCj4gKyAgUlVO ICgxNik7DQo+ICsgIFJVTiAoMTcpOw0KPiArICBSVU4gKDMxKTsNCj4gKyAg UlVOICgzMik7DQo+ICsgIFJVTiAoMzMpOw0KPiArICBSVU4gKDYzKTsNCj4g KyAgUlVOICg2NCk7DQo+ICsgIFJVTiAoNjUpOw0KPiArICBSVU4gKDEyNyk7 DQo+ICsgIFJVTiAoMTI4KTsNCj4gKyAgUlVOICgxMjkpOw0KPiArICBSVU4g KDIzOSk7DQo+ICsgIFJVTiAoMzU5KTsNCj4gKyAgUlVOICg0OTgpOw0KPiAr ICBSVU4gKDc5OSk7DQo+ICsgIFJVTiAoOTc3KTsNCj4gKyAgUlVOICg1Nzg5 KTsNCj4gKyAgcmV0dXJuIDA7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlh bC9zbHBfcnVuLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tNC5jDQo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwLi4zZDQzZWYwODkw Yw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tNC5j DQo+IEBAIC0wLDAgKzEsNjcgQEANCj4gKy8qIHsgZGctZG8gcnVuIHsgdGFy Z2V0IHsgcmlzY3ZfdmVjdG9yIH0gfSB9ICovDQo+ICsvKiB7IGRnLWFkZGl0 aW9uYWwtb3B0aW9ucyAiLS1wYXJhbSByaXNjdi1hdXRvdmVjLXByZWZlcmVu Y2U9c2NhbGFibGUiIH0gKi8NCj4gKw0KPiArI2luY2x1ZGUgInNscC00LmMi DQo+ICsNCj4gKyNkZWZpbmUgTElNSVQgMzI3NjcNCj4gKw0KPiArdm9pZCBf X2F0dHJpYnV0ZV9fICgob3B0aW1pemUgKDApKSkNCj4gK2ZfZ29sZGVuIChp bnQxNl90ICpyZXN0cmljdCBhLCBpbnQxNl90ICpyZXN0cmljdCBiLCBpbnQg bikNCj4gK3sNCj4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpDQo+ ICsgICAgew0KPiArICAgICAgYVtpICogOF0gPSBiW2kgKiA4ICsgMV0gKyAx Ow0KPiArICAgICAgYVtpICogOCArIDFdID0gYltpICogOCArIDddICsgMjsN Cj4gKyAgICAgIGFbaSAqIDggKyAyXSA9IGJbaSAqIDggKyAxXSArIDM7DQo+ ICsgICAgICBhW2kgKiA4ICsgM10gPSBiW2kgKiA4ICsgN10gKyA0Ow0KPiAr ICAgICAgYVtpICogOCArIDRdID0gYltpICogOCArIDFdICsgNTsNCj4gKyAg ICAgIGFbaSAqIDggKyA1XSA9IGJbaSAqIDggKyA3XSArIDY7DQo+ICsgICAg ICBhW2kgKiA4ICsgNl0gPSBiW2kgKiA4ICsgMV0gKyA3Ow0KPiArICAgICAg YVtpICogOCArIDddID0gYltpICogOCArIDddICsgODsNCj4gKyAgICB9DQo+ ICt9DQo+ICsNCj4gK2ludA0KPiArbWFpbiAodm9pZCkNCj4gK3sNCj4gKyNk ZWZpbmUgUlVOKE5VTSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGludDE2 X3QgYV8jI05VTVtOVU0gKiA4ICsgOF0gPSB7MH07ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBpbnQxNl90IGFf Z29sZGVuXyMjTlVNW05VTSAqIDggKyA4XSA9IHswfTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgaW50MTZfdCBiXyMjTlVN W05VTSAqIDggKyA4XSA9IHswfTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwg TlVNICogOCArIDg7IGkrKykgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXA0KPiArICAgIHsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCj4gKyAgICAgIGlmIChpICUgTlVNID09IDApICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgICAgICAgYl8jI05VTVtpXSA9IChpICsgTlVNKSAlIExJTUlU OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAg ICAgIGJfIyNOVU1baV0gPSAoaSAtIE5VTSkgJSAoLUxJTUlUKTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIH0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZiAoYV8jI05VTSwg Yl8jI05VTSwgTlVNKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGZfZ29sZGVuIChhX2dvbGRl bl8jI05VTSwgYl8jI05VTSwgTlVNKTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXA0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IE5V TSAqIDggKyA4OyBpKyspICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCj4gKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQo+ICsgICAgICBpZiAoYV8jI05VTVtpXSAhPSBhX2dvbGRlbl8j I05VTVtpXSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KPiArICAgICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAr ICAgIH0NCj4gKw0KPiArICBSVU4gKDMpOw0KPiArICBSVU4gKDUpOw0KPiAr ICBSVU4gKDE1KTsNCj4gKyAgUlVOICgxNik7DQo+ICsgIFJVTiAoMTcpOw0K PiArICBSVU4gKDMxKTsNCj4gKyAgUlVOICgzMik7DQo+ICsgIFJVTiAoMzMp Ow0KPiArICBSVU4gKDYzKTsNCj4gKyAgUlVOICg2NCk7DQo+ICsgIFJVTiAo NjUpOw0KPiArICBSVU4gKDEyNyk7DQo+ICsgIFJVTiAoMTI4KTsNCj4gKyAg UlVOICgxMjkpOw0KPiArICBSVU4gKDIzOSk7DQo+ICsgIFJVTiAoMzU5KTsN Cj4gKyAgUlVOICg0OTgpOw0KPiArICBSVU4gKDc5OSk7DQo+ICsgIFJVTiAo OTc3KTsNCj4gKyAgUlVOICg1Nzg5KTsNCj4gKyAgcmV0dXJuIDA7DQo+ICt9 DQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlz Y3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHBfcnVuLTUuYyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3Ns cF9ydW4tNS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAw MDAwMDAwMDAwLi44MTQzMDhiZDdhZg0KPiAtLS0gL2Rldi9udWxsDQo+ICsr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3Zl Yy9wYXJ0aWFsL3NscF9ydW4tNS5jDQo+IEBAIC0wLDAgKzEsNjcgQEANCj4g Ky8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IHsgcmlzY3ZfdmVjdG9yIH0gfSB9 ICovDQo+ICsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLS1wYXJhbSBy aXNjdi1hdXRvdmVjLXByZWZlcmVuY2U9c2NhbGFibGUiIH0gKi8NCj4gKw0K PiArI2luY2x1ZGUgInNscC01LmMiDQo+ICsNCj4gKyNkZWZpbmUgTElNSVQg MTI4DQo+ICsNCj4gK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKG9wdGltaXplICgw KSkpDQo+ICtmX2dvbGRlbiAoaW50OF90ICpyZXN0cmljdCBhLCBpbnQ4X3Qg KnJlc3RyaWN0IGIsIGludCBuKQ0KPiArew0KPiArICBmb3IgKGludCBpID0g MDsgaSA8IG47ICsraSkNCj4gKyAgICB7DQo+ICsgICAgICBhW2kgKiA4ICsg MF0gPSBiW2kgKiA4ICsgMV0gKyAxOw0KPiArICAgICAgYVtpICogOCArIDFd ID0gYltpICogOCArIDddICsgMjsNCj4gKyAgICAgIGFbaSAqIDggKyAyXSA9 IGJbaSAqIDggKyA0XSArIDM7DQo+ICsgICAgICBhW2kgKiA4ICsgM10gPSBi W2kgKiA4ICsgOF0gKyA0Ow0KPiArICAgICAgYVtpICogOCArIDRdID0gYltp ICogOCArIDFdICsgNTsNCj4gKyAgICAgIGFbaSAqIDggKyA1XSA9IGJbaSAq IDggKyA3XSArIDY7DQo+ICsgICAgICBhW2kgKiA4ICsgNl0gPSBiW2kgKiA4 ICsgNF0gKyA3Ow0KPiArICAgICAgYVtpICogOCArIDddID0gYltpICogOCAr IDhdICsgODsNCj4gKyAgICB9DQo+ICt9DQo+ICsNCj4gK2ludA0KPiArbWFp biAodm9pZCkNCj4gK3sNCj4gKyNkZWZpbmUgUlVOKE5VTSkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+ICsgIGludDhfdCBhXyMjTlVNW05VTSAqIDggKyA4XSA9 IHswfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXA0KPiArICBpbnQ4X3QgYV9nb2xkZW5fIyNOVU1bTlVNICogOCArIDhd ID0gezB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN Cj4gKyAgaW50OF90IGJfIyNOVU1bTlVNICogOCArIDldID0gezB9OyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsg IGZvciAoaW50IGkgPSAwOyBpIDwgTlVNICogOCArIDk7IGkrKykgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIHsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgIGlmIChp ICUgTlVNID09IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICAgYl8jI05VTVtp XSA9IChpICsgTlVNKSAlIExJTUlUOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICBlbHNlICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXA0KPiArICAgICAgIGJfIyNOVU1baV0gPSAoaSAtIE5V TSkgJSAoLUxJTUlUKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiArICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwNCj4gKyAgZiAoYV8jI05VTSwgYl8jI05VTSwgTlVNKTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgIGZfZ29sZGVuIChhX2dvbGRlbl8jI05VTSwgYl8jI05VTSwgTlVNKTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBm b3IgKGludCBpID0gMDsgaSA8IE5VTSAqIDggKyA4OyBpKyspICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICB7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICBpZiAoYV8j I05VTVtpXSAhPSBhX2dvbGRlbl8jI05VTVtpXSkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgIF9fYnVpbHRpbl9h Ym9ydCAoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXA0KPiArICAgIH0NCj4gKw0KPiArICBSVU4gKDMp Ow0KPiArICBSVU4gKDUpOw0KPiArICBSVU4gKDE1KTsNCj4gKyAgUlVOICgx Nik7DQo+ICsgIFJVTiAoMTcpOw0KPiArICBSVU4gKDMxKTsNCj4gKyAgUlVO ICgzMik7DQo+ICsgIFJVTiAoMzMpOw0KPiArICBSVU4gKDYzKTsNCj4gKyAg UlVOICg2NCk7DQo+ICsgIFJVTiAoNjUpOw0KPiArICBSVU4gKDEyNyk7DQo+ ICsgIFJVTiAoMTI4KTsNCj4gKyAgUlVOICgxMjkpOw0KPiArICBSVU4gKDIz OSk7DQo+ICsgIFJVTiAoMzU5KTsNCj4gKyAgUlVOICg0OTgpOw0KPiArICBS VU4gKDc5OSk7DQo+ICsgIFJVTiAoOTc3KTsNCj4gKyAgUlVOICg1Nzg5KTsN Cj4gKyAgcmV0dXJuIDA7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9z bHBfcnVuLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9y dnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tNi5jDQo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwLi5lMzE3ZWVhYzJmMg0K PiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tNi5jDQo+ IEBAIC0wLDAgKzEsNjcgQEANCj4gKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0 IHsgcmlzY3ZfdmVjdG9yIH0gfSB9ICovDQo+ICsvKiB7IGRnLWFkZGl0aW9u YWwtb3B0aW9ucyAiLS1wYXJhbSByaXNjdi1hdXRvdmVjLXByZWZlcmVuY2U9 c2NhbGFibGUiIH0gKi8NCj4gKw0KPiArI2luY2x1ZGUgInNscC02LmMiDQo+ ICsNCj4gKyNkZWZpbmUgTElNSVQgMTI4DQo+ICsNCj4gK3ZvaWQgX19hdHRy aWJ1dGVfXyAoKG9wdGltaXplICgwKSkpDQo+ICtmX2dvbGRlbiAoaW50OF90 ICpyZXN0cmljdCBhLCBpbnQ4X3QgKnJlc3RyaWN0IGIsIGludCBuKQ0KPiAr ew0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkNCj4gKyAgICB7 DQo+ICsgICAgICBhW2kgKiA4ICsgMF0gPSBiW2kgKiA4ICsgMV0gKyAxOw0K PiArICAgICAgYVtpICogOCArIDFdID0gYltpICogOCArIDJdICsgMjsNCj4g KyAgICAgIGFbaSAqIDggKyAyXSA9IGJbaSAqIDggKyA2XSArIDg7DQo+ICsg ICAgICBhW2kgKiA4ICsgM10gPSBiW2kgKiA4ICsgN10gKyA0Ow0KPiArICAg ICAgYVtpICogOCArIDRdID0gYltpICogOCArIDNdICsgNTsNCj4gKyAgICAg IGFbaSAqIDggKyA1XSA9IGJbaSAqIDggKyA0XSArIDY7DQo+ICsgICAgICBh W2kgKiA4ICsgNl0gPSBiW2kgKiA4ICsgNV0gKyA3Ow0KPiArICAgICAgYVtp ICogOCArIDddID0gYltpICogOCArIDBdICsgMzsNCj4gKyAgICB9DQo+ICt9 DQo+ICsNCj4gK2ludA0KPiArbWFpbiAodm9pZCkNCj4gK3sNCj4gKyNkZWZp bmUgUlVOKE5VTSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGludDhfdCBh XyMjTlVNW05VTSAqIDggKyA4XSA9IHswfTsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBpbnQ4X3QgYV9nb2xk ZW5fIyNOVU1bTlVNICogOCArIDhdID0gezB9OyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgaW50OF90IGJfIyNOVU1bTlVN ICogOCArIDldID0gezB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcDQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgTlVN ICogOCArIDk7IGkrKykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXA0KPiArICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCj4gKyAgICAgIGlmIChpICUgTlVNID09IDApICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQo+ICsgICAgICAgYl8jI05VTVtpXSA9IChpICsgTlVNKSAlIExJTUlUOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsg ICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAg IGJfIyNOVU1baV0gPSAoaSAtIE5VTSkgJSAoLUxJTUlUKTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIH0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZiAoYV8jI05VTSwgYl8j I05VTSwgTlVNKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQo+ICsgIGZfZ29sZGVuIChhX2dvbGRlbl8j I05VTSwgYl8jI05VTSwgTlVNKTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXA0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IE5VTSAq IDggKyA4OyBpKyspICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCj4gKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgICAgICBpZiAoYV8jI05VTVtpXSAhPSBhX2dvbGRlbl8jI05V TVtpXSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K PiArICAgICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAg IH0NCj4gKw0KPiArICBSVU4gKDMpOw0KPiArICBSVU4gKDUpOw0KPiArICBS VU4gKDE1KTsNCj4gKyAgUlVOICgxNik7DQo+ICsgIFJVTiAoMTcpOw0KPiAr ICBSVU4gKDMxKTsNCj4gKyAgUlVOICgzMik7DQo+ICsgIFJVTiAoMzMpOw0K PiArICBSVU4gKDYzKTsNCj4gKyAgUlVOICg2NCk7DQo+ICsgIFJVTiAoNjUp Ow0KPiArICBSVU4gKDEyNyk7DQo+ICsgIFJVTiAoMTI4KTsNCj4gKyAgUlVO ICgxMjkpOw0KPiArICBSVU4gKDIzOSk7DQo+ICsgIFJVTiAoMzU5KTsNCj4g KyAgUlVOICg0OTgpOw0KPiArICBSVU4gKDc5OSk7DQo+ICsgIFJVTiAoOTc3 KTsNCj4gKyAgUlVOICg1Nzg5KTsNCj4gKyAgcmV0dXJuIDA7DQo+ICt9DQo+ IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L2F1dG92ZWMvcGFydGlhbC9zbHBfcnVuLTcuYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9y dW4tNy5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAw MDAwMDAwLi5hOGU0NzgxOTg4ZQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9w YXJ0aWFsL3NscF9ydW4tNy5jDQo+IEBAIC0wLDAgKzEsNTggQEANCj4gKy8q IHsgZGctZG8gcnVuIHsgdGFyZ2V0IHsgcmlzY3ZfdmVjdG9yIH0gfSB9ICov DQo+ICsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLS1wYXJhbSByaXNj di1hdXRvdmVjLXByZWZlcmVuY2U9c2NhbGFibGUiIH0gKi8NCj4gKw0KPiAr I2luY2x1ZGUgInNscC03LmMiDQo+ICsNCj4gK3ZvaWQNCj4gK2ZfZ29sZGVu IChmbG9hdCAqX19yZXN0cmljdCBmLCBkb3VibGUgKl9fcmVzdHJpY3QgZCwg aW50IG4pDQo+ICt7DQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytp KQ0KPiArICAgIHsNCj4gKyAgICAgIGZbaSAqIDIgKyAwXSA9IDE7DQo+ICsg ICAgICBmW2kgKiAyICsgMV0gPSAyOw0KPiArICAgICAgZFtpXSA9IDM7DQo+ ICsgICAgfQ0KPiArfQ0KPiArDQo+ICtpbnQNCj4gK21haW4gKHZvaWQpDQo+ ICt7DQo+ICsjZGVmaW5lIFJVTihOVU0pICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K PiArICBmbG9hdCBhXyMjTlVNW05VTSAqIDIgKyAyXSA9IHswfTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAg ZmxvYXQgYV9nb2xkZW5fIyNOVU1bTlVNICogMiArIDJdID0gezB9OyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGRvdWJs ZSBiXyMjTlVNW05VTV0gPSB7MH07ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBkb3VibGUgYl9n b2xkZW5fIyNOVU1bTlVNXSA9IHswfTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZiAoYV8jI05VTSwgYl8j I05VTSwgTlVNKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQo+ICsgIGZfZ29sZGVuIChhX2dvbGRlbl8j I05VTSwgYl9nb2xkZW5fIyNOVU0sIE5VTSk7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXA0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IE5VTTsg aSsrKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCj4gKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgICAgICBpZiAoYV8jI05VTVtpICogMiArIDBdICE9IGFfZ29s ZGVuXyMjTlVNW2kgKiAyICsgMF0pICAgICAgICAgICAgICAgICAgICAgXA0K PiArICAgICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAg ICAgaWYgKGFfIyNOVU1baSAqIDIgKyAxXSAhPSBhX2dvbGRlbl8jI05VTVtp ICogMiArIDFdKSAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICBf X2J1aWx0aW5fYWJvcnQgKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgIGlmIChiXyMj TlVNW2ldICE9IGJfZ29sZGVuXyMjTlVNW2ldKSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICAgX19idWlsdGluX2Fi b3J0ICgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcDQo+ICsgICAgfQ0KPiArDQo+ICsgIFJVTiAoMyk7 DQo+ICsgIFJVTiAoNSk7DQo+ICsgIFJVTiAoMTUpOw0KPiArICBSVU4gKDE2 KTsNCj4gKyAgUlVOICgxNyk7DQo+ICsgIFJVTiAoMzEpOw0KPiArICBSVU4g KDMyKTsNCj4gKyAgUlVOICgzMyk7DQo+ICsgIFJVTiAoNjMpOw0KPiArICBS VU4gKDY0KTsNCj4gKyAgUlVOICg2NSk7DQo+ICsgIFJVTiAoMTI3KTsNCj4g KyAgUlVOICgxMjgpOw0KPiArICBSVU4gKDEyOSk7DQo+ICsgIFJVTiAoMjM5 KTsNCj4gKyAgUlVOICgzNTkpOw0KPiArICBSVU4gKDQ5OCk7DQo+ICsgIFJV TiAoNzk5KTsNCj4gKyAgUlVOICg5NzcpOw0KPiArICBSVU4gKDU3ODkpOw0K PiArICByZXR1cm4gMDsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9zY2FsYWJsZS0x LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92 ZWMvc2NhbGFibGUtMS5jDQo+IGluZGV4IDUwMGIwYWRjZTY2Li4zYzAzYTg3 Mzc3ZCAxMDA2NDQNCj4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Jpc2N2L3J2di9hdXRvdmVjL3NjYWxhYmxlLTEuYw0KPiArKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvc2NhbGFi bGUtMS5jDQo+IEBAIC0xNCw0ICsxNCw0IEBAIGYgKGludDMyX3QgKl9fcmVz dHJpY3QgZiwgaW50MzJfdCAqX19yZXN0cmljdCBkLCBpbnQgbikNCj4gICAg ICB9DQo+ICB9DQo+DQo+IC0vKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtdGltZXMgInZlY3Rvcml6ZWQgMSBsb29wcyBpbiBmdW5jdGlvbiIgMCAi dmVjdCIgfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtdGltZXMgInZlY3Rvcml6ZWQgMSBsb29wcyBpbiBmdW5jdGlvbiIgMSAi dmVjdCIgfSB9ICovDQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvdi0xLmMgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvdi0xLmMNCj4gaW5k ZXggMzgzYzgyYTNiN2MuLmU2OGQwNWY1ZjQ4IDEwMDY0NA0KPiAtLS0gYS9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvdi0x LmMNCj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2 di9hdXRvdmVjL3YtMS5jDQo+IEBAIC0zLDkgKzMsNCBAQA0KPg0KPiAgI2lu Y2x1ZGUgInRlbXBsYXRlLTEuaCINCj4NCj4gLS8qIEN1cnJlbnRseSwgd2Ug ZG9uJ3Qgc3VwcG9ydCBTTFAgYXV0by12ZWN0b3JpemF0aW9uIGZvciBWTEEu IEJ1dCBpdCdzDQo+IC0gICBuZWNlc3NhcnkgdGhhdCB3ZSBhZGQgdGhpcyB0 ZXN0Y2FzZSBoZXJlIHRvIG1ha2Ugc3VyZSBzdWNoIHVuc3VwcG9ydGVkIFNM UA0KPiAtICAgYXV0by12ZWN0b3JpemF0aW9uIHdpbGwgbm90IGNhdXNlIGFu IElDRS4gV2Ugd2lsbCBlbmFibGUgInZlY3QiIGNoZWNraW5nIHdoZW4NCj4g LSAgIHdlIHN1cHBvcnQgU0xQIGF1dG8tdmVjdG9yaXphdGlvbiBmb3IgVkxB IGluIHRoZSBmdXR1cmUuICAqLw0KPiAtDQo+IC0vKiB7IGRnLWZpbmFsIHsg c2Nhbi10cmVlLWR1bXAtdGltZXMgInZlY3Rvcml6ZWQgMSBsb29wcyBpbiBm dW5jdGlvbiIgMCAidmVjdCIgfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsg c2Nhbi10cmVlLWR1bXAtdGltZXMgInZlY3Rvcml6ZWQgMSBsb29wcyBpbiBm dW5jdGlvbiIgNSAidmVjdCIgfSB9ICovDQo+IGRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvenZlMzJm X3p2bDEyOGItMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2 L3J2di9hdXRvdmVjL3p2ZTMyZl96dmwxMjhiLTEuYw0KPiBpbmRleCAyM2Nj MWM4NjUxZi4uZWNmZGE3OWUxOWEgMTAwNjQ0DQo+IC0tLSBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy96dmUzMmZfenZs MTI4Yi0xLmMNCj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jp c2N2L3J2di9hdXRvdmVjL3p2ZTMyZl96dmwxMjhiLTEuYw0KPiBAQCAtMyw0 ICszLDQgQEANCj4NCj4gICNpbmNsdWRlICJ0ZW1wbGF0ZS0xLmgiDQo+DQo+ IC0vKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgInZlY3Rv cml6ZWQgMSBsb29wcyBpbiBmdW5jdGlvbiIgMCAidmVjdCIgfSB9ICovDQo+ ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgInZlY3Rv cml6ZWQgMSBsb29wcyBpbiBmdW5jdGlvbiIgMyAidmVjdCIgfSB9ICovDQo+ IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L2F1dG92ZWMvenZlMzJ4X3p2bDEyOGItMS5jIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTMyeF96dmwxMjhi LTEuYw0KPiBpbmRleCA0ZjEzMGYwMmY2Ny4uMTM5NGYwOGYyYjkgMTAwNjQ0 DQo+IC0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYv YXV0b3ZlYy96dmUzMnhfenZsMTI4Yi0xLmMNCj4gKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTMyeF96dmwx MjhiLTEuYw0KPiBAQCAtMyw0ICszLDQgQEANCj4NCj4gICNpbmNsdWRlICJ0 ZW1wbGF0ZS0xLmgiDQo+DQo+IC0vKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAtdGltZXMgInZlY3Rvcml6ZWQgMSBsb29wcyBpbiBmdW5jdGlvbiIg MCAidmVjdCIgfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAtdGltZXMgInZlY3Rvcml6ZWQgMSBsb29wcyBpbiBmdW5jdGlvbiIg MiAidmVjdCIgfSB9ICovDQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvenZlNjRkLTEuYyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy96dmU2 NGQtMS5jDQo+IGluZGV4IDgyM2Q1MWEwM2NiLi5jNWU4OTk5NmZhNCAxMDA2 NDQNCj4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2 di9hdXRvdmVjL3p2ZTY0ZC0xLmMNCj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTY0ZC0xLmMNCj4gQEAg LTMsNCArMyw0IEBADQo+DQo+ICAjaW5jbHVkZSAidGVtcGxhdGUtMS5oIg0K Pg0KPiAtLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJ2 ZWN0b3JpemVkIDEgbG9vcHMgaW4gZnVuY3Rpb24iIDIgInZlY3QiIH0gfSAq Lw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJ2 ZWN0b3JpemVkIDEgbG9vcHMgaW4gZnVuY3Rpb24iIDMgInZlY3QiIH0gfSAq Lw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jp c2N2L3J2di9hdXRvdmVjL3p2ZTY0ZF96dmwxMjhiLTEuYyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy96dmU2NGRfenZs MTI4Yi0xLmMNCj4gaW5kZXggNWVhZDIyNzQ2ZDMuLjZiMzIwY2E2ZjM4IDEw MDY0NA0KPiAtLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L2F1dG92ZWMvenZlNjRkX3p2bDEyOGItMS5jDQo+ICsrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy96dmU2NGRf enZsMTI4Yi0xLmMNCj4gQEAgLTMsNCArMyw0IEBADQo+DQo+ICAjaW5jbHVk ZSAidGVtcGxhdGUtMS5oIg0KPg0KPiAtLyogeyBkZy1maW5hbCB7IHNjYW4t dHJlZS1kdW1wLXRpbWVzICJ2ZWN0b3JpemVkIDEgbG9vcHMgaW4gZnVuY3Rp b24iIDAgInZlY3QiIH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4t dHJlZS1kdW1wLXRpbWVzICJ2ZWN0b3JpemVkIDEgbG9vcHMgaW4gZnVuY3Rp b24iIDUgInZlY3QiIH0gfSAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTY0Zi0xLmMg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMv enZlNjRmLTEuYw0KPiBpbmRleCBlMDNkMWI0NGNhNi4uNmMyYTAwMmRlOWMg MTAwNjQ0DQo+IC0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYvYXV0b3ZlYy96dmU2NGYtMS5jDQo+ICsrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy96dmU2NGYtMS5jDQo+ IEBAIC0zLDQgKzMsNCBAQA0KPg0KPiAgI2luY2x1ZGUgInRlbXBsYXRlLTEu aCINCj4NCj4gLS8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1l cyAidmVjdG9yaXplZCAxIGxvb3BzIGluIGZ1bmN0aW9uIiAyICJ2ZWN0IiB9 IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1l cyAidmVjdG9yaXplZCAxIGxvb3BzIGluIGZ1bmN0aW9uIiAzICJ2ZWN0IiB9 IH0gKi8NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9yaXNjdi9ydnYvYXV0b3ZlYy96dmU2NGZfenZsMTI4Yi0xLmMgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvenZlNjRm X3p2bDEyOGItMS5jDQo+IGluZGV4IDViYjJkOWQ5NmZhLi5hZTNmMDY2NDc3 YyAxMDA2NDQNCj4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jp c2N2L3J2di9hdXRvdmVjL3p2ZTY0Zl96dmwxMjhiLTEuYw0KPiArKysgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvenZl NjRmX3p2bDEyOGItMS5jDQo+IEBAIC0zLDQgKzMsNCBAQA0KPg0KPiAgI2lu Y2x1ZGUgInRlbXBsYXRlLTEuaCINCj4NCj4gLS8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcC10aW1lcyAidmVjdG9yaXplZCAxIGxvb3BzIGluIGZ1 bmN0aW9uIiAwICJ2ZWN0IiB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcC10aW1lcyAidmVjdG9yaXplZCAxIGxvb3BzIGluIGZ1 bmN0aW9uIiA0ICJ2ZWN0IiB9IH0gKi8NCj4gZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy96dmU2NHhf enZsMTI4Yi0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L2F1dG92ZWMvenZlNjR4X3p2bDEyOGItMS5jDQo+IGluZGV4IDcxODIw ZWNlNGIyLi5mYzY3NmEzODY1ZSAxMDA2NDQNCj4gLS0tIGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTY0eF96dmwx MjhiLTEuYw0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlz Y3YvcnZ2L2F1dG92ZWMvenZlNjR4X3p2bDEyOGItMS5jDQo+IEBAIC0zLDQg KzMsNCBAQA0KPg0KPiAgI2luY2x1ZGUgInRlbXBsYXRlLTEuaCINCj4NCj4g LS8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAidmVjdG9y aXplZCAxIGxvb3BzIGluIGZ1bmN0aW9uIiAwICJ2ZWN0IiB9IH0gKi8NCj4g Ky8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAidmVjdG9y aXplZCAxIGxvb3BzIGluIGZ1bmN0aW9uIiAzICJ2ZWN0IiB9IH0gKi8NCj4g LS0NCj4gMi4zNi4xDQo+DQogDQo= ------=_001_NextPart467623230100_=------