From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 45380 invoked by alias); 7 Jul 2015 13:22:42 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 45370 invoked by uid 89); 7 Jul 2015 13:22:42 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.5 required=5.0 tests=AWL,BAYES_00,MIME_BASE64_BLANKS,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 X-HELO: na01-by2-obe.outbound.protection.outlook.com Received: from mail-by2on0063.outbound.protection.outlook.com (HELO na01-by2-obe.outbound.protection.outlook.com) (207.46.100.63) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA256 encrypted) ESMTPS; Tue, 07 Jul 2015 13:22:33 +0000 Received: from BN1AFFO11OLC004.protection.gbl (10.58.52.34) by BN1AFFO11HUB014.protection.gbl (10.58.52.124) with Microsoft SMTP Server (TLS) id 15.1.201.10; Tue, 7 Jul 2015 13:22:30 +0000 Authentication-Results: spf=pass (sender IP is 149.199.60.83) smtp.mailfrom=xilinx.com; gcc.gnu.org; dkim=none (message not signed) header.d=none; Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.60.83 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.83; helo=xsj-pvapsmtpgw01; Received: from xsj-pvapsmtpgw01 (149.199.60.83) by BN1AFFO11OLC004.mail.protection.outlook.com (10.58.53.75) with Microsoft SMTP Server (TLS) id 15.1.213.8 via Frontend Transport; Tue, 7 Jul 2015 13:22:28 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66] helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw01 with esmtp (Exim 4.63) (envelope-from ) id 1ZCSpP-0001X4-JN; Tue, 07 Jul 2015 06:22:27 -0700 Received: from [127.0.0.1] (helo=xsj-smtp-dlp1.xlnx.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1ZCSpP-0006fD-DY; Tue, 07 Jul 2015 06:22:27 -0700 Received: from xsj-pvapsmtp01 (xsj-mail.xilinx.com [149.199.38.66]) by xsj-smtp-dlp1.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id t67DM1x0009968; Tue, 7 Jul 2015 06:22:01 -0700 Received: from [172.22.159.25] (helo=XAP-PVEXCAS01.xlnx.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1ZCSpN-0006f2-TQ; Tue, 07 Jul 2015 06:22:26 -0700 Received: from XAP-PVEXMBX02.xlnx.xilinx.com ([fe80::6c95:7dae:8014:5ca1]) by XAP-PVEXCAS01.xlnx.xilinx.com ([::1]) with mapi id 14.03.0195.001; Tue, 7 Jul 2015 21:22:24 +0800 From: Ajit Kumar Agarwal To: Richard Biener CC: "law@redhat.com" , GCC Patches , Vinod Kathail , Shail Aditya Gupta , Vidhumouli Hunsigida , Nagaraju Mekala Subject: RE: [Patch,tree-optimization]: Add new path Splitting pass on tree ssa representation Date: Tue, 07 Jul 2015 13:22:00 -0000 Message-ID: <37378DC5BCD0EE48BA4B082E0B55DFAA41F42541@XAP-PVEXMBX02.xlnx.xilinx.com> References: <37378DC5BCD0EE48BA4B082E0B55DFAA41F3F56C@XAP-PVEXMBX02.xlnx.xilinx.com> <37378DC5BCD0EE48BA4B082E0B55DFAA41F41150@XAP-PVEXMBX02.xlnx.xilinx.com> In-Reply-To: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-RCIS-Action: ALLOW X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11OLC004;1:V4fO+3HxW6oRWXvqh+PvVolSz5p+WhlWwQcvUE6OvyWc86vXUJzY6jBb8GS9uuPufJzOvMxAiDxESqE5+vFj17AVOv5UeodSZYJFU8+lkqyQJnfy7LfQP2CBW2UJgrwK8ZBO698PXceoS+DRAA7PUGwM40gfTBmBJzLPpvESKUYLsI3DM6yA+U/mhHYF+0Zr7JJDKm8wOvXP8y8GNtlh9pIGx7QtRyuhi18vdxDLxhQoLCqfyL2AtgCNBt9uRYAD2rkbAa9FzlhNN4L3C6h73VstZfuTL07wLwvElsEnKDCIlliOIl16IaQ1zpO0B7EjMWK8OYqmuOHBZChD0lI2x3pPml7bJUx920/EIpjuEg56z4yQJ3ZoJRio9fqlIHH69478xThav3P6O+toYzJu55COChrqzhHSBvEUcaqgIwM= X-Forefront-Antispam-Report: CIP:149.199.60.83;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(438002)(199003)(189002)(13464003)(377454003)(24454002)(51704005)(164054003)(54094003)(377424004)(47776003)(33656002)(106466001)(93886004)(92566002)(76176999)(50986999)(54356999)(62966003)(77156002)(5001960100002)(107886002)(5003600100002)(6806004)(189998001)(110136002)(50466002)(575784001)(86362001)(2656002)(55846006)(19580395003)(19580405001)(2920100001)(2900100001)(46102003)(63266004)(15975445007)(5890100001)(102836002)(2950100001)(87936001)(5250100002)(23676002)(107986001)(142933001)(4001430100001);DIR:OUT;SFP:1101;SCL:1;SRVR:BN1AFFO11HUB014;H:xsj-pvapsmtpgw01;FPR:;SPF:Pass;MLV:sfv;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11HUB014;2:BjM40XPkg8jXK8gKzjht7oYvbHY6Plr4hOkBnp5fs9r2zjj3VoOiFhVyvwv2P5Vj;3:9Xu9xB/bjgHEtz/c4+osyRELsPYQFFS6EGI0xGHQ/aecPenrv9QP6rb26BtAZjR2oSbDvfCvS1u7fuP1GN4UzHKp0WeS61kgfPkRvYXeDpI0grbaAS2RwwwEQi/+JjptD7ogoQim4zXrlF6EmJp1ZhkTj/xbifXkXq7AiojtWEBTxkN1AfZI5jM903VgzySFpyx1pYAMaKP3lzXfzu+VVrbXiU1c6+rpl1yAGEx08Gs=;20:hpgJCN52o/Tfj/RK/vn1oX2HInddELH3G6LZJsmI0Ac78xr8iV3tUIDYmWyM2G+gNeAhfLnbQESZJzngOk9FbL3vun3T7tRa+Pb0s6Eg2EBhQSpdGJqsEnbE8l6pAzzwIi5g/Xbmwxw4/UrG2b5yZqqBvNLiIgvW8iPhX5oaa4REsmfxUCEACivZpa745soXbnM4wMkUZaKasA1RYCXDy22Ja7BOABrCXX11/UDPiIisT+MzpDMmabSj2EqOPkrCgbPjqc3iKszmZKgxtL9BMOienCdWmsoO3M6lKbzrFsW5us+ibFpifC6XmUqKkO0IhRBfyklM7M0qpYUAcZ4ChtJc9b1ZqYf1A9ArhICy5wruEgqc5rVQEjsNCluoTISxNmUQwu3fQPxx7gApq/CDb5fQescsIpr7lEMJXtqPAlC25mqBz5N7DutLMR/OUY2NjtM0qbg+iPEtBZYACvZvyYSdlpSEBRGjyznBtCA/K+ecnb3fvvv5nXuKdnFOYxdK X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN1AFFO11HUB014; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(3002001);SRVR:BN1AFFO11HUB014;BCL:0;PCL:0;RULEID:;SRVR:BN1AFFO11HUB014; X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11HUB014;4:Od61FEO+T4UmYoeEgWPOzmNbD9G7NlrnHjnHEaRb+iik/lc+IwC8GQus3sS8XwhZYwmT0flT4lPOqwSHUssBAdE0lFJkQxF5DK2tf1yn5WYbMA9snpNWP1GP+jXbqDvMEHYKPJyGEdlBB5p1i4zL0E54iHKbFe4bpsHO73lGAg22oDtwdxKZ/jiRJj2XI4RRy5Z8Cx1AVBgUEj+7DGwFBG2OUkposy/oogLqABPYgIU+nhSjeX0cvh03zPfVcWIOdPOJ0CTBu/NCJVkL7UPcWy7YQ2cO59D3Vg+nkeE/eCM= X-Forefront-PRVS: 0630013541 X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTjFBRkZPMTFIVUIwMTQ7MjM6dEhLaHZjaEhWK1l1NzVVZE1qSDV6RFhi?= =?utf-8?B?TjlyTnhVMERzMjdwakNOcUpsendDUi9tNUMvT2lLbjZVZW0rdU1hbFBSbVpK?= =?utf-8?B?WkY4N3F4K0xRTDdvb3I1TENWblpXZE1aSkVYV1BCdTl0WEdUazhXczFYVWIy?= =?utf-8?B?emFpTy9mN2N3alFKdHFzNjZNejZZcWFVMlJQQThPbGRCVk1xVVB1ekV4RVh4?= =?utf-8?B?cmYwV1hBd21acUQ3WmxDZEovTlVyZnY4TnZZMncxOFNRQS9vWlF5RGJMZkZO?= =?utf-8?B?bG4rdzdpR2doQ2FGWjJKZFlYUzBlZUpkUWgwZWR5WGlVQ01sakJUUzI1cnYx?= =?utf-8?B?OThaTnNIRU5KTnF2NjRVc0doNFRDbmYzeTByUmZyOVNMM0l2WXBoMC9NVnpT?= =?utf-8?B?SlZCdTNwSEtEK3R0NEVnUmdMZ2lSWDNtYjVrTldTZ0gzc2xud1p5RnEyN01L?= =?utf-8?B?WjNsYkdiVEFJTlBRaTVZTXBGT1VaYXhiekdFU3hlVVIvMU9yMjJGZ2F0Rk1X?= =?utf-8?B?Q25HakFvaUIvOW5YbWJnaGlTRk9RN3hzMmwvUnNNVjRMZ2xpaFlHSUUzcHBY?= =?utf-8?B?cGVJQ1pVZnQ2SGFJS0c4ZlVycmg5ODBFU0FDZ09qQkxuZWxUcmsxeTFDNGxB?= =?utf-8?B?Z1VHYUJTYldMNm5VOUdDUzgwNlJiU29yV3o3TDl1cmxzbVRWU2YyL2JZZVN2?= =?utf-8?B?N2lzVGpxREFkMGw1b1BoQ0pLQUprMEpCZVhhdzNRVlh5dWF0Y1RrSzBxem94?= =?utf-8?B?Sk5MYXpHVUtha0VUVElzaUE3Q05UWlhVcTRBaGRXRkZzeng3ZlJCbUJIVU00?= =?utf-8?B?QnFOYytlMWp1SlE2eUE0WEZzcGRrOVRJWkwrZjFjNTZzM21MVGJQMWtERjRM?= =?utf-8?B?SXhPc29UM0N2eFlBRjJPdnZRWHVYUjRRM0wxUU14RTBqaVA4bTFZZThBT1Jo?= =?utf-8?B?MVpBZG5oUS9nM1l5YUYxMHNhbUxscDRseVkyYmhlYUpmRjlMUjdDUjZrVHRP?= =?utf-8?B?ekUyaG5tOXdPSVJyYS91Yno2N2pIeXROYU9NemJWODFJakRaaVFSTldhb0FE?= =?utf-8?B?YmlNQ0Y5K1Y3U0JvVUtJUUF0SGVscWY3TlVYeTJ6ZWF1ZnVCcmlXNXlSNUNp?= =?utf-8?B?aURXSEs4NkVhTC92aFlYZFZpMWE2eE9odk9VZHNjTmRDN3RxaU1QS0d3N2tx?= =?utf-8?B?VDR3WFdOSmFySlpvUnd3QWhHMTQ2U1F4Ris0ZjE3SjZ0SWZrQzFXSVNVWUo4?= =?utf-8?B?SkF0NURzRG5mZWJ6eGtzckcyR2hqR1p5dnZaNm0vdllzdUxYUG9qRXUrVHk0?= =?utf-8?B?aWJRMzFoMmNYaG5CY0FWZE9qbXFPSjljTzFGcDA1ckR2L2xWTzV6cGx6S3BK?= =?utf-8?B?NmhsZDkzbGh2YlVkelpsT0twYWNWb2lPQ0tZUVdFWi9qa2pDeGw5RitKaHlK?= =?utf-8?B?SllTRGEvYjZHMGc5WmpxVmlCeWxuS0FFUGxPSkRGWHZqWGV5MU0wQkwyZ3BU?= =?utf-8?B?MGVsT1lta0x6VGxuMEhIYkNVOWJjS3JYSXdXVkl0MzYvQnRsVnY5TStvb3dm?= =?utf-8?B?eElGSVZrK1BjV3JTcXpEaDJOeVhlTHN4TFpIUksyOWR0dzIvVUxyZGFnQkhS?= =?utf-8?B?UURidkt5ZVBqWFpzbng5M2JBT0ltRG5YODNWWmZsbTFERHdJdkdURGI1b3pi?= =?utf-8?Q?52xZZJBn/UYMJ2NccJ5uPrzyPbNdd5cWfxRONCW++?= X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11HUB014;5:+oxO/rsF9bDh/rzdc8qLrOf40aNOBbgom0RKnCc1MTTRuDn3nvps2rnCEbxFzLNEgxTr9Q7dz7dgRGxgMHdTk+TA471yZuqcXK8SlSvDonnaJzWlApSU2QgazJSIN49y70eqSEt6v82RedgiLkpscQ==;24:dwEthi5lHoBoUfcdpjuXINppJxd1L75/qFic9KSFAEsg2llyyDqcXjLg3a2/9Q4XBCOZV9wCEU3wdITEGHQlllzF22JgbYx1CLsm5OXA/vQ= X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2015 13:22:28.8717 (UTC) X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c;Ip=[149.199.60.83];Helo=[xsj-pvapsmtpgw01] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1AFFO11HUB014 X-SW-Source: 2015-07/txt/msg00499.txt.bz2 DQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBSaWNoYXJk IEJpZW5lciBbbWFpbHRvOnJpY2hhcmQuZ3VlbnRoZXJAZ21haWwuY29tXSAN ClNlbnQ6IFR1ZXNkYXksIEp1bHkgMDcsIDIwMTUgMjoyMSBQTQ0KVG86IEFq aXQgS3VtYXIgQWdhcndhbA0KQ2M6IGxhd0ByZWRoYXQuY29tOyBHQ0MgUGF0 Y2hlczsgVmlub2QgS2F0aGFpbDsgU2hhaWwgQWRpdHlhIEd1cHRhOyBWaWRo dW1vdWxpIEh1bnNpZ2lkYTsgTmFnYXJhanUgTWVrYWxhDQpTdWJqZWN0OiBS ZTogW1BhdGNoLHRyZWUtb3B0aW1pemF0aW9uXTogQWRkIG5ldyBwYXRoIFNw bGl0dGluZyBwYXNzIG9uIHRyZWUgc3NhIHJlcHJlc2VudGF0aW9uDQoNCk9u IFNhdCwgSnVsIDQsIDIwMTUgYXQgMjozOSBQTSwgQWppdCBLdW1hciBBZ2Fy d2FsIDxhaml0Lmt1bWFyLmFnYXJ3YWxAeGlsaW54LmNvbT4gd3JvdGU6DQo+ DQo+DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFJp Y2hhcmQgQmllbmVyIFttYWlsdG86cmljaGFyZC5ndWVudGhlckBnbWFpbC5j b21dDQo+IFNlbnQ6IFR1ZXNkYXksIEp1bmUgMzAsIDIwMTUgNDo0MiBQTQ0K PiBUbzogQWppdCBLdW1hciBBZ2Fyd2FsDQo+IENjOiBsYXdAcmVkaGF0LmNv bTsgR0NDIFBhdGNoZXM7IFZpbm9kIEthdGhhaWw7IFNoYWlsIEFkaXR5YSBH dXB0YTsgDQo+IFZpZGh1bW91bGkgSHVuc2lnaWRhOyBOYWdhcmFqdSBNZWth bGENCj4gU3ViamVjdDogUmU6IFtQYXRjaCx0cmVlLW9wdGltaXphdGlvbl06 IEFkZCBuZXcgcGF0aCBTcGxpdHRpbmcgcGFzcyBvbiANCj4gdHJlZSBzc2Eg cmVwcmVzZW50YXRpb24NCj4NCj4gT24gVHVlLCBKdW4gMzAsIDIwMTUgYXQg MTA6MTYgQU0sIEFqaXQgS3VtYXIgQWdhcndhbCA8YWppdC5rdW1hci5hZ2Fy d2FsQHhpbGlueC5jb20+IHdyb3RlOg0KPj4gQWxsOg0KPj4NCj4+IFRoZSBi ZWxvdyBwYXRjaCBhZGRlZCBhIG5ldyBwYXRoIFNwbGl0dGluZyBvcHRpbWl6 YXRpb24gcGFzcyBvbiBTU0EgDQo+PiByZXByZXNlbnRhdGlvbi4gVGhlIFBh dGggU3BsaXR0aW5nIG9wdGltaXphdGlvbiBQYXNzIG1vdmVzIHRoZSBqb2lu IA0KPj4gYmxvY2sgb2YgaWYtdGhlbi1lbHNlIHNhbWUgYXMgbG9vcCBsYXRj aCB0byBpdHMgcHJlZGVjZXNzb3JzIGFuZCBnZXQgbWVyZ2VkIHdpdGggdGhl IHByZWRlY2Vzc29ycyBQcmVzZXJ2aW5nIHRoZSBTU0EgcmVwcmVzZW50YXRp b24uDQo+Pg0KPj4gVGhlIHBhdGNoIGlzIHRlc3RlZCBmb3IgTWljcm9ibGF6 ZSBhbmQgaTM4NiB0YXJnZXQuIFRoZSBFRU1CQy9NaWJlbmNoIA0KPj4gYmVu Y2htYXJrcyBpcyBydW4gd2l0aCB0aGUgTWljcm9ibGF6ZSB0YXJnZXQgQW5k IHRoZSBwZXJmb3JtYW5jZSBnYWluIA0KPj4gb2YgOS4xNSUgYW5kIHJnYmNt eTAxX2xpdGUoRUVNQkMgYmVuY2htYXJrcykuIFRoZSBEZWphIEdOVSB0ZXN0 cyBpcyBydW4gZm9yIE1pcmNyb2JsYXplIFRhcmdldCBhbmQgbm8gcmVncmVz c2lvbiBpcyBzZWVuIGZvciBNaWNyb2JsYXplIHRhcmdldCBhbmQgdGhlIG5l dyB0ZXN0Y2FzZSBhdHRhY2hlZCBhcmUgcGFzc2VkLg0KPj4NCj4+IEZvciBp Mzg2IGJvb3RzdHJhcHBpbmcgZ29lcyB0aHJvdWdoIGZpbmUgYW5kIHRoZSBT cGVjIGNwdTIwMDAgDQo+PiBiZW5jaG1hcmtzIGlzIHJ1biB3aXRoIHRoaXMg cGF0Y2guIEZvbGxvd2luZyBvYnNlcnZhdGlvbiB3ZXJlIHNlZW4gd2l0aCBz cGVjIGNwdTIwMDAgYmVuY2htYXJrcy4NCj4+DQo+PiBSYXRpbyBvZiBwYXRo IHNwbGl0dGluZyBjaGFuZ2UgdnMgUmF0aW8gb2Ygbm90IGhhdmluZyBwYXRo IHNwbGl0dGluZyBjaGFuZ2UgaXMgMzY1My4zNTMgdnMgMzY1Mi4xNCBmb3Ig SU5UIGJlbmNobWFya3MuDQo+PiBSYXRpbyBvZiBwYXRoIHNwbGl0dGluZyBj aGFuZ2UgdnMgUmF0aW8gb2Ygbm90IGhhdmluZyBwYXRoIHNwbGl0dGluZyBj aGFuZ2UgaXMgIDQzNTMuODEyIHZzIDQzNDUuMzUxIGZvciBGUCBiZW5jaG1h cmtzLg0KPj4NCj4+IEJhc2VkIG9uIGNvbW1lbnRzIGZyb20gUkZDIHBhdGNo IGZvbGxvd2luZyBjaGFuZ2VzIHdlcmUgZG9uZS4NCj4+DQo+PiAxLiBBZGRl ZCBhIG5ldyBwYXNzIGZvciBwYXRoIHNwbGl0dGluZyBjaGFuZ2VzLg0KPj4g Mi4gUGxhY2VkIHRoZSBuZXcgcGF0aCAgU3BsaXR0aW5nIE9wdGltaXphdGlv biBwYXNzIGJlZm9yZSB0aGUgY29weSBwcm9wYWdhdGlvbiBwYXNzLg0KPj4g My4gVGhlIGpvaW4gYmxvY2sgc2FtZSBhcyB0aGUgTG9vcCBsYXRjaCBpcyB3 aXJlZCBpbnRvIGl0cyANCj4+IHByZWRlY2Vzc29ycyBzbyB0aGF0IHRoZSBD RkcgQ2xlYW51cCBwYXNzIHdpbGwgbWVyZ2UgdGhlIGJsb2NrcyBXaXJlZCB0 b2dldGhlci4NCj4+IDQuIENvcHkgcHJvcGFnYXRpb24gcm91dGluZXMgYWRk ZWQgZm9yIHBhdGggc3BsaXR0aW5nIGNoYW5nZXMgaXMgbm90IA0KPj4gbmVl ZGVkIGFzIHN1Z2dlc3RlZCBieSBKZWZmLiBUaGV5IGFyZSByZW1vdmVkIGlu IHRoZSBwYXRjaCBhcyBUaGUgY29weSBwcm9wYWdhdGlvbiBpbiB0aGUgY29w aWVkIGpvaW4gYmxvY2tzIHdpbGwgYmUgZG9uZSBieSB0aGUgZXhpc3Rpbmcg Y29weSBwcm9wYWdhdGlvbiBwYXNzIGFuZCB0aGUgdXBkYXRlIHNzYSBwYXNz Lg0KPj4gNS4gT25seSB0aGUgcHJvcGFnYXRpb24gb2YgcGhpIHJlc3VsdHMg b2YgdGhlIGpvaW4gYmxvY2sgd2l0aCB0aGUgcGhpIA0KPj4gYXJndW1lbnQg aXMgZG9uZSB3aGljaCB3aWxsIG5vdCBiZSBkb25lIGJ5IHRoZSBleGlzdGlu ZyB1cGRhdGVfc3NhIE9yIGNvcHkgcHJvcGFnYXRpb24gcGFzcyBvbiB0cmVl IHNzYSByZXByZXNlbnRhdGlvbi4NCj4+IDYuIEFkZGVkIDIgdGVzdHMuDQo+ PiAgICAgYSkgY29tcGlsYXRpb24gY2hlY2sgIHRlc3RzLg0KPj4gICAgYikg ZXhlY3V0aW9uIHRlc3RzLg0KPj4gNy4gUmVmYWN0b3Jpbmcgb2YgdGhlIGNv ZGUgZm9yIHRoZSBmZWFzaWJpbGl0eSBjaGVjayBhbmQgZmluZGluZyB0aGUg am9pbiBibG9jayBzYW1lIGFzIGxvb3AgbGF0Y2ggbm9kZS4NCj4+DQo+PiAg ICAgW1BhdGNoLHRyZWUtb3B0aW1pemF0aW9uXTogQWRkIG5ldyBwYXRoIFNw bGl0dGluZyBwYXNzIG9uIHRyZWUgc3NhIHJlcHJlc2VudGF0aW9uLg0KPj4N Cj4+ICAgICBBZGRlZCBhIG5ldyBwYXNzIG9uIHBhdGggc3BsaXR0aW5nIG9u IHRyZWUgU1NBIHJlcHJlc2VudGF0aW9uLiBUaGUgcGF0aA0KPj4gICAgIHNw bGl0dGluZyBvcHRpbWl6YXRpb24gZG9lcyB0aGUgQ0ZHIHRyYW5zZm9ybWF0 aW9uIG9mIGpvaW4gYmxvY2sgb2YgdGhlDQo+PiAgICAgaWYtdGhlbi1lbHNl IHNhbWUgYXMgdGhlIGxvb3AgbGF0Y2ggbm9kZSBpcyBtb3ZlZCBhbmQgbWVy Z2VkIHdpdGggdGhlDQo+PiAgICAgcHJlZGVjZXNzb3IgYmxvY2tzIGFmdGVy IHByZXNlcnZpbmcgdGhlIFNTQSByZXByZXNlbnRhdGlvbi4NCj4+DQo+PiAg ICAgQ2hhbmdlTG9nOg0KPj4gICAgIDIwMTUtMDYtMzAgIEFqaXQgQWdhcndh bCAgPGFqaXRrdW1AeGlsaW54LmNvbT4NCj4+DQo+PiAgICAgICAgICogZ2Nj L01ha2VmaWxlLmluOiBBZGQgdGhlIGJ1aWxkIG9mIHRoZSBuZXcgZmlsZQ0K Pj4gICAgICAgICB0cmVlLXNzYS1wYXRoLXNwbGl0LmMNCj4+ICAgICAgICAg KiBnY2MvY29tbW9uLm9wdDogQWRkIHRoZSBuZXcgZmxhZyBmdHJlZS1wYXRo LXNwbGl0Lg0KPj4gICAgICAgICAqIGdjYy9vcHRzLmM6IEFkZCBhbiBlbnRy eSBmb3IgUGF0aCBzcGxpdHRpbmcgcGFzcw0KPj4gICAgICAgICB3aXRoIG9w dGltaXphdGlvbiBmbGFnIGdyZWF0ZXIgYW5kIGVxdWFsIHRvIE8yLg0KPj4g ICAgICAgICAqIGdjYy9wYXNzZXMuZGVmOiBFbmFibGUgYW5kIGFkZCBuZXcg cGFzcyBwYXRoIHNwbGl0dGluZy4NCj4+ICAgICAgICAgKiBnY2MvdGltZXZh ci5kZWY6IEFkZCB0aGUgbmV3IGVudHJ5IGZvciBUVl9UUkVFX1BBVEhfU1BM SVQuDQo+PiAgICAgICAgICogZ2NjL3RyZWUtcGFzcy5oOiBFeHRlcm4gRGVj bGFyYXRpb24gb2YgbWFrZV9wYXNzX3BhdGhfc3BsaXQuDQo+PiAgICAgICAg ICogZ2NjL3RyZWUtc3NhLXBhdGgtc3BsaXQuYzogTmV3IGZpbGUgZm9yIHBh dGggc3BsaXR0aW5nIHBhc3MuDQo+PiAgICAgICAgICogZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdHJlZS1zc2EvcGF0aC1zcGxpdC0yLmM6IE5ldyB0ZXN0Y2Fz ZS4NCj4+ICAgICAgICAgKiBnY2MvdGVzdHN1aXRlL2djYy5kZy9wYXRoLXNw bGl0LTEuYzogTmV3IHRlc3RjYXNlLg0KPg0KPj4+SSdtIG5vdCAxMDAlIHN1 cmUgSSB1bmRlcnN0YW5kIHRoZSB0cmFuc2Zvcm0gYnV0IHdoYXQgSSBzZWUg ZnJvbSB0aGUgdGVzdGNhc2VzIGl0IHRhaWwtZHVwbGljYXRlcyBmcm9tIGEg Y29uZGl0aW9uYWwgdXAgdG8gYSBsb29wIGxhdGNoIGJsb2NrIChub3Qgc3Vy ZSBpZiBpdCA+PmluY2x1ZGVzIGl0IGFuZCB0aHVzIGVuZHMgdXAgY3JlYXRp bmcgYSBsb29wIG5lc3Qgb3Igbm90KS4NCj4NCj4+PkFuIG9ic2VydmF0aW9u IEkgaGF2ZSBpcyB0aGF0IHRoZSBwYXNzIHNob3VsZCBhdCBsZWFzdCBzaGFy ZSB0aGUgdHJhbnNmb3JtIHN0YWdlIHRvIHNvbWUgZXh0ZW50IHdpdGggdGhl IGV4aXN0aW5nIHRyYWNlciBwYXNzICh0cmFjZXIuYykgd2hpY2ggZXNzZW50 aWFsbHkgZG9lcyA+PnRoZSBzYW1lIGJ1dCBub3QgcmVzdHJpY3RlZCB0byBs b29wcyBpbiBhbnkgd2F5Lg0KPg0KPiBUaGUgZm9sbG93aW5nIHBpZWNlIG9m IGNvZGUgZnJvbSB0cmFjZXIuYyBjYW4gYmUgc2hhcmVkIHdpdGggdGhlIGV4 aXN0aW5nIHBhdGggc3BsaXR0aW5nIHBhc3MuDQo+DQo+IHsNCj4gICAgICAg ICAgICAgIGUgPSBmaW5kX2VkZ2UgKGJiLCBiYjIpOw0KPg0KPiAgICAgICAg ICAgICAgIGNvcHkgPSBkdXBsaWNhdGVfYmxvY2sgKGJiMiwgZSwgYmIpOw0K PiAgICAgICAgICAgICAgIGZsdXNoX3BlbmRpbmdfc3RtdHMgKGUpOw0KPg0K PiAgICAgICAgICAgICAgIGFkZF9waGlfYXJnc19hZnRlcl9jb3B5ICgmY29w eSwgMSwgTlVMTCk7IH0NCj4NCj4gU2hhcmluZyB0aGUgYWJvdmUgY29kZSBv ZiB0aGUgdHJhbnNmb3JtIHN0YWdlIG9mIHRyYWNlci5jIHdpdGggdGhlIHBh dGggc3BsaXR0aW5nIHBhc3MgaGFzIHRoZSBmb2xsb3dpbmcgbGltaXRhdGlv bi4NCj4NCj4gMS4gVGhlIGR1cGxpY2F0ZWQgbG9vcCBsYXRjaCBub2RlIGlz IHdpcmVkIHRvIGl0cyBwcmVkZWNlc3NvcnMgYW5kIHRoZSANCj4gZXhpc3Rp bmcgcGhpIG5vZGUgaW4gdGhlIGxvb3AgbGF0Y2ggbm9kZSB3aXRoIHRoZSBQ aGkgYXJndW1lbnRzIGZyb20gDQo+IGl0cyBjb3JyZXNwb25kaW5nIHByZWRl Y2Vzc29ycyBpcyBtb3ZlZCB0byB0aGUgZHVwbGljYXRlZCBsb29wIGxhdGNo IG5vZGUgdGhhdCBpcyB3aXJlZCBpbnRvIGl0cyBwcmVkZWNlc3NvcnMuIER1 ZSBUbyB0aGlzLCB0aGUgZHVwbGljYXRlZCBsb29wIGxhdGNoIG5vZGVzIHdp cmVkIGludG8gaXRzIHByZWRlY2Vzc29ycyB3aWxsIG5vdCBiZSBtZXJnZWQg d2l0aCB0aGUgb3JpZ2luYWwgcHJlZGVjZXNzb3JzIGJ5IENGRyBjbGVhbnVw IHBoYXNlIC4NCj4NCj4+PiBTbyBJIHdvbmRlciBpZiB5b3VyIHBhc3MgY291 bGQgYmUgc2ltcGx5IGFub3RoZXIgaGV1cmlzdGljIHRvIGNvbXB1dGUgcGF0 aHMgdG8gdHJhY2UgaW4gdGhlIGV4aXN0aW5nIHRyYWNlciBwYXNzLg0KPg0K PiBTb3JyeSwgSSBhbSBub3QgdmVyeSBjbGVhciB3aGVuIHlvdSBzYXkgdGhl IGFib3ZlLiAgSSBhbSB0cnlpbmcgdG8gDQo+IGZpZ3VyZSBvdXQgd2hldGhl ciB5b3UgZXhwZWN0IHRoZSBleGlzdGluZyBwYXNzIG9mIHRyYWNlci5jIHNo b3VsZCBiZSBtb2RpZmllZCBPciB0aGUgcGF0aCBzcGxpdHRpbmcgcGFzcyBz aG91bGQgY29leGlzdC4NCg0KPj5ZZXMsIEkgd2FzIHdvbmRlcmluZyB3aGV0 aGVyIHRyYWNlci5jIGNvdWxkIGJlIHNpbXBseSBtb2RpZmllZC4gIEJvdGgg dHJhbnNmb3JtcyBhcmUgZG9pbmcgc29tZXRoaW5nIHZlcnkgc2ltaWxhci4N Cj4+WWVzLCB5b3VyIHBhc3Mgd291bGQgc2ltcGx5IGNvbXB1dGUgZXh0cmEg dHJhY2VzIGJhc2VkIG9uIHRoZSBuZXcgaGV1cmlzdGljLg0KDQpJIGhhdmUg b2JzZXJ2ZWQgdGhlIGZvbGxvd2luZyB3aXRoIHRoZSB0cmFjZXIgcGFzcyBv cHRpbWl6YXRpb24uDQoNClRyYWNlciBQYXNzOg0KDQoxLiBUaGUgdHJhY2Vy IHBhc3MgaXMgRkRPIG9wdGltaXphdGlvbnMgIGFuZCBpcyBub3QgZW5hYmxl ZCBieSBkZWZhdWx0IGF0IE8yLiBUaGlzIG9wdGltaXphdGlvbiBpcyBlbmFi bGVkIHdpdGggLWZwcm9maWxlLXVzZS4NCjIuIFRoZSAtZnRyYWNlciBmbGFn IGlzIHVzZWQgdG8gZW5hYmxlIHRoZSBvcHRpbWl6YXRpb24gZXhwbGljaXRs eSBpbiB0aGUgYWJzZW5jZSBvZiBGRE8gb3B0aW1pemF0aW9uLg0KMy4gVGhl IHRyYWNlciBwYXNzIG9wdGltaXphdGlvbnMgaXMgcGxhY2VkIGF0IG9ubHkg cGxhY2UgYmVmb3JlIHRoZSBkb21pbmF0b3JfcGFzcy4gTW92aW5nIHRoZSB0 cmFjZXIgcGFzcyBiZWZvcmUgY29weV9wcm9wDQpQYXNzIGdpdmVzIHRoZSBm b2xsb3dpbmcgZXJyb3IuICIgRXJyb3IgOiBwYXNzIHRyYWNlciBkb2VzIG5v dCBzdXBwb3J0IGNsb25pbmciLg0KNC4gVGhlIGNvZGUgZm9yIHRyYWNlciBw YXNzIGlzIHRvdGFsbHkgYmFzZWQgb24gdGhlIEZETyByZWxhdGVkIGluZm9y bWF0aW9uIGFuZCB0aGUgbG9naWMgaXMgYmFzZWQgb24gdGhlIHByb2ZpbGUg ZGF0YS4NCg0KUGF0aCBTcGxpaXRpbmcgcGFzczoNCg0KMS4gSGF2aW5nIHRo ZSBwYXRoIHNwbGl0dGluZyBhcyBhIHNlcGFyYXRlIHBhc3MgaXMgZW5hYmxl ZCBieSBkZWZhdWx0IGF0ICA+PSBPMi4NCjIuIE5vIEZETyBpbmZvcm1hdGlv biBpcyByZXF1aXJlZCBpbiB0aGUgcGF0aCBzcGxpdHRpbmcgcGFzcy4NCjMu IFRoZSBQYXRoIFNwbGl0dGluZyBwYXNzIGNhbiBiZSBwbGFjZWQgYW55d2hl cmUgd2VsbCBiZWZvcmUgYW55IG9wdGltaXphdGlvbnMgcGFzcy4gSSBoYXZl IHBsYWNlZCB0aGUgcGF0aCBzcGxpdHRpbmcgcGFzcyBiZWZvcmUNCkNvcHlf cHJvcCBhbmQgaXQgd29ya3MuIEFsc28gcGxhY2luZyBiZWZvcmUgdGhlIGRv bWluYXRvciBhbHNvIHdvcmtzIGZpbmUuDQo0LiBUaGUgY29kZSBmb3IgcGF0 aCBzcGxpdHRpbmcgYXMgYSBzZXBhcmF0ZSBwYXNzIGlzIHB1cmVseSBiYXNl ZCBvbiBub24gcHJvZmlsZSBhbmQgTm9uIEZETyBkYXRhLg0KNS4gUGxhY2lu ZyB0aGUgcGF0aCBzcGxpdHRpbmcgcGFzcyBhcyBhIHNlcGFyYXRlIHBhc3Mg IGNhbiBiZSBwbGFjZWQgYW55d2hlcmUgaW4gdGhlIG9wdGltaXphdGlvbnMu IFRoZSBvcHRpbWl6YXRpb25zIHRoYXQgZ290IGJlbmVmaXR0ZWQgd2l0aCB0 aGUNClBhdGggc3BsaXR0aW5nIHBhc3MgYXJlIFBSRSAsIENDUCwgRENFIGFu ZCBjYW4gYmUgcGxhY2VkIHdlbGwgYmVmb3JlIHRoZSBvcHRpbWl6YXRpb25z Lg0KNi4gQXQgdGhlIGZpcnN0IHBoYXNlIG9mIHBhdGggc3BsaXR0aW5nIHBh c3MgSSBhbSBkdXBsaWNhdGluZyB0aGUgbG9vcCBsYXRjaCBub2RlIHRvIGl0 cyBwcmVkZWNlc3NvciBhbmQgbWFrZSBpdCBTU0EgYW5kIGxvb3Agc3RydWN0 dXJlDQpQcmVzZXJ2ZWQuIE1ha2luZyB0aGUgcGF0aCBzcGxpdHRpbmcgYXMg c2VwYXJhdGUgcGFzcyBJIHdvdWxkIGxpa2UgdG8gZXh0ZW5kIHRoaXMgcGFz cyB0byB0aGUgbXVsdGlwbGUgbGF0Y2ggbm9kZSB3aXRoIGEgZm9yd2FyZGlu ZyBibG9jaw0KYW5kIHRoZSBtdWx0aXBsZSBsYXRjaCBub2RlcyBhcmUgZWRn ZWQgdG93YXJkcyB0aGUgZm9yd2FyZGVyIGJsb2NrIG1ha2luZyBpdCBvbmUg TG9vcCBsYXRjaCBlZGdlLg0KDQpXaXRoIHRoZSBhYm92ZSBvYnNlcnZhdGlv biwgRG8geW91IHRoaW5rIHRoZSBleGlzdGluZyB0cmFjZXIgcGFzcyBzaG91 bGQgYmUgbW9kaWZpZWQgYW5kIHRoZSBwYXRoIHNwbGl0dGluZyBwYXNzIHNo b3VsZCBiZSBpbmNvcnBvcmF0ZWQNCk9uIHRvcCBvZiB0aGUgZXhpc3Rpbmcg dHJhY2VyIHBhc3MuDQoNCktpbmRseSBnaXZlIHlvdXIgZmVlZGJhY2suDQoN ClRoYW5rcyAmIFJlZ2FyZHMNCkFqaXQNCg0KUmljaGFyZC4NCg0KPiBUaGFu a3MgJiBSZWdhcmRzDQo+IEFqaXQNCj4NCj4gVGhhbmtzLA0KPiBSaWNoYXJk Lg0KPg0KPj4gICAgIFNpZ25lZC1vZmYtYnk6QWppdCBBZ2Fyd2FsIGFqaXRr dW1AeGlsaW54LmNvbS4NCj4+DQo+PiBnY2MvTWFrZWZpbGUuaW4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArDQo+PiAgZ2NjL2NvbW1v bi5vcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKw0K Pj4gIGdjYy9vcHRzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAxICsNCj4+ICBnY2MvcGFzc2VzLmRlZiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMSArDQo+PiAgZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvcGF0aC1zcGxpdC0xLmMgICAgICAgICAgfCAgNjUgKysrKw0KPj4g IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3BhdGgtc3BsaXQtMi5j IHwgIDYyICsrKysNCj4+ICBnY2MvdGltZXZhci5kZWYgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMSArDQo+PiAgZ2NjL3RyZWUtcGFzcy5o ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KPj4gIGdj Yy90cmVlLXNzYS1wYXRoLXNwbGl0LmMgICAgICAgICAgICAgICAgICAgIHwg NDYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPj4gIDkgZmlsZXMg Y2hhbmdlZCwgNTk4IGluc2VydGlvbnMoKykNCj4+ICBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcGF0aC1zcGxpdC0xLmMNCj4+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJl ZS1zc2EvcGF0aC1zcGxpdC0yLmMNCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQg Z2NjL3RyZWUtc3NhLXBhdGgtc3BsaXQuYw0KPj4NCj4+IGRpZmYgLS1naXQg YS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4gaW5kZXggNWY5 MjYxZi4uMzVhYzM2Mw0KPj4gMTAwNjQ0DQo+PiAtLS0gYS9nY2MvTWFrZWZp bGUuaW4NCj4+ICsrKyBiL2djYy9NYWtlZmlsZS5pbg0KPj4gQEAgLTE0NzYs NiArMTQ3Niw3IEBAIE9CSlMgPSBcDQo+PiAgICAgICAgIHRyZWUtdmVjdC1z bHAubyBcDQo+PiAgICAgICAgIHRyZWUtdmVjdG9yaXplci5vIFwNCj4+ICAg ICAgICAgdHJlZS12cnAubyBcDQo+PiArICAgICAgICB0cmVlLXNzYS1wYXRo LXNwbGl0Lm8gXA0KPj4gICAgICAgICB0cmVlLm8gXA0KPj4gICAgICAgICB2 YWx0cmFjay5vIFwNCj4+ICAgICAgICAgdmFsdWUtcHJvZi5vIFwNCj4+IGRp ZmYgLS1naXQgYS9nY2MvY29tbW9uLm9wdCBiL2djYy9jb21tb24ub3B0IGlu ZGV4IGUxMDQyNjkuLmM2M2IxMDANCj4+IDEwMDY0NA0KPj4gLS0tIGEvZ2Nj L2NvbW1vbi5vcHQNCj4+ICsrKyBiL2djYy9jb21tb24ub3B0DQo+PiBAQCAt MjMyOCw2ICsyMzI4LDEwIEBAIGZ0cmVlLXZycA0KPj4gIENvbW1vbiBSZXBv cnQgVmFyKGZsYWdfdHJlZV92cnApIEluaXQoMCkgT3B0aW1pemF0aW9uICBQ ZXJmb3JtIFZhbHVlIA0KPj4gUmFuZ2UgUHJvcGFnYXRpb24gb24gdHJlZXMN Cj4+DQo+PiArZnRyZWUtcGF0aC1zcGxpdA0KPj4gK0NvbW1vbiBSZXBvcnQg VmFyKGZsYWdfdHJlZV9wYXRoX3NwbGl0KSBJbml0KDApIE9wdGltaXphdGlv biBQZXJmb3JtIA0KPj4gK1BhdGggU3BsaXR0aW5nDQo+PiArDQo+PiAgZnVu aXQtYXQtYS10aW1lDQo+PiAgQ29tbW9uIFJlcG9ydCBWYXIoZmxhZ191bml0 X2F0X2FfdGltZSkgSW5pdCgxKSBPcHRpbWl6YXRpb24gIENvbXBpbGUgDQo+ PiB3aG9sZSBjb21waWxhdGlvbiB1bml0IGF0IGEgdGltZSBkaWZmIC0tZ2l0 IGEvZ2NjL29wdHMuYyBiL2djYy9vcHRzLmMgDQo+PiBpbmRleCA4YTE2MTE2 Li4zMTk0N2ZmIDEwMDY0NA0KPj4gLS0tIGEvZ2NjL29wdHMuYw0KPj4gKysr IGIvZ2NjL29wdHMuYw0KPj4gQEAgLTUwOCw2ICs1MDgsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGRlZmF1bHRfb3B0aW9ucyBkZWZhdWx0X29wdGlvbnNf dGFibGVbXSA9DQo+PiAgICAgIHsgT1BUX0xFVkVMU18yX1BMVVMsIE9QVF9m aXNvbGF0ZV9lcnJvbmVvdXNfcGF0aHNfZGVyZWZlcmVuY2UsIE5VTEwsIDEg fSwNCj4+ICAgICAgeyBPUFRfTEVWRUxTXzJfUExVUywgT1BUX2ZpcGFfcmEs IE5VTEwsIDEgfSwNCj4+ICAgICAgeyBPUFRfTEVWRUxTXzJfUExVUywgT1BU X2ZscmFfcmVtYXQsIE5VTEwsIDEgfSwNCj4+ICsgICAgeyBPUFRfTEVWRUxT XzJfUExVUywgT1BUX2Z0cmVlX3BhdGhfc3BsaXQsIE5VTEwsIDEgfSwNCj4+ DQo+PiAgICAgIC8qIC1PMyBvcHRpbWl6YXRpb25zLiAgKi8NCj4+ICAgICAg eyBPUFRfTEVWRUxTXzNfUExVUywgT1BUX2Z0cmVlX2xvb3BfZGlzdHJpYnV0 ZV9wYXR0ZXJucywgTlVMTCwgMSANCj4+IH0sIGRpZmYgLS1naXQgYS9nY2Mv cGFzc2VzLmRlZiBiL2djYy9wYXNzZXMuZGVmIGluZGV4IA0KPj4gYzBkZGVl NC4uNDM2MThlYg0KPj4gMTAwNjQ0DQo+PiAtLS0gYS9nY2MvcGFzc2VzLmRl Zg0KPj4gKysrIGIvZ2NjL3Bhc3Nlcy5kZWYNCj4+IEBAIC0xNTUsNiArMTU1 LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4g IElmIG5vdCBzZWUNCj4+ICAgICAgICBORVhUX1BBU1MgKHBhc3NfY2NwKTsN Cj4+ICAgICAgICAvKiBBZnRlciBDQ1Agd2UgcmV3cml0ZSBubyBsb25nZXIg YWRkcmVzc2VkIGxvY2FscyBpbnRvIFNTQQ0KPj4gICAgICAgICAgZm9ybSBp ZiBwb3NzaWJsZS4gICovDQo+PiArICAgICAgTkVYVF9QQVNTIChwYXNzX3Bh dGhfc3BsaXQpOw0KPj4gICAgICAgIE5FWFRfUEFTUyAocGFzc19jb3B5X3By b3ApOw0KPj4gICAgICAgIE5FWFRfUEFTUyAocGFzc19jb21wbGV0ZV91bnJv bGxpKTsNCj4+ICAgICAgICBORVhUX1BBU1MgKHBhc3NfcGhpcHJvcCk7DQo+ PiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcGF0aC1zcGxp dC0xLmMNCj4+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcGF0aC1zcGxpdC0x LmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAw Li4wNzVkYzg3DQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9nY2MvdGVz dHN1aXRlL2djYy5kZy9wYXRoLXNwbGl0LTEuYw0KPj4gQEAgLTAsMCArMSw2 NSBAQA0KPj4gKy8qIHsgZGctZG8gcnVuIH0gKi8NCj4+ICsvKiB7IGRnLW9w dGlvbnMgIi1PMiAiIH0gKi8NCj4+ICsNCj4+ICsjaW5jbHVkZSA8c3RkaW8u aD4NCj4+ICsjaW5jbHVkZSA8c3RkbGliLmg+DQo+PiArDQo+PiArI2RlZmlu ZSBSR0JNQVggMjU1DQo+PiArDQo+PiAraW50DQo+PiArdGVzdCgpDQo+PiAr ew0KPj4gKyAgaW50IGksIFBlbHM7DQo+PiArICB1bnNpZ25lZCBjaGFyIHN1 bSA9IDA7DQo+PiArICB1bnNpZ25lZCBjaGFyIHhyLCB4ZywgeGI7DQo+PiAr ICB1bnNpZ25lZCBjaGFyIHhjLCB4bSwgeHksIHhrOw0KPj4gKyAgdW5zaWdu ZWQgY2hhciAqUmVhZFB0ciwgKkVyaXRlUHRyOw0KPj4gKw0KPj4gKyAgUmVh ZFB0ciA9ICggdW5zaWduZWQgY2hhciAqKSBtYWxsb2MgKHNpemVvZiAodW5z aWduZWQgY2hhcikgKiANCj4+ICsgMTAwKTsgRXJpdGVQdHIgPSAoIHVuc2ln bmVkIGNoYXIgKikgbWFsbG9jIChzaXplb2YgKHVuc2lnbmVkIGNoYXIpIA0K Pj4gKyAqIDEwMCk7DQo+PiArDQo+PiArICBmb3IgKGkgPSAwOyBpIDwgMTAw O2krKykNCj4+ICsgICAgIHsNCj4+ICsgICAgICAgUmVhZFB0cltpXSA9IDEw MCAtIGk7DQo+PiArICAgICB9DQo+PiArDQo+PiArICBmb3IgKGkgPSAwOyBp IDwgMTAwOyBpKyspDQo+PiArICAgICB7DQo+PiArICAgICAgIHhyID0gKlJl YWRQdHIrKzsNCj4+ICsgICAgICAgeGcgPSAqUmVhZFB0cisrOw0KPj4gKyAg ICAgICB4YiA9ICpSZWFkUHRyKys7DQo+PiArDQo+PiArICAgICAgIHhjID0g KHVuc2lnbmVkIGNoYXIpIChSR0JNQVggLSB4cik7DQo+PiArICAgICAgIHht ID0gKHVuc2lnbmVkIGNoYXIpIChSR0JNQVggLSB4Zyk7DQo+PiArICAgICAg IHh5ID0gKHVuc2lnbmVkIGNoYXIpIChSR0JNQVggLSB4Yik7DQo+PiArDQo+ PiArICAgICAgIGlmICh4YyA8IHhtKQ0KPj4gKyAgICAgICAgIHsNCj4+ICsg ICAgICAgICAgIHhrID0gKHVuc2lnbmVkIGNoYXIpICh4YyA8IHh5ID8geGMg OiB4eSk7DQo+PiArICAgICAgICAgfQ0KPj4gKyAgICAgICBlbHNlDQo+PiAr ICAgICAgICB7DQo+PiArICAgICAgICAgIHhrID0gKHVuc2lnbmVkIGNoYXIp ICh4bSA8IHh5ID8geG0gOiB4eSk7DQo+PiArICAgICAgICB9DQo+PiArDQo+ PiArICAgICAgIHhjID0gKHVuc2lnbmVkIGNoYXIpICh4YyAtIHhrKTsNCj4+ ICsgICAgICAgeG0gPSAodW5zaWduZWQgY2hhcikgKHhtIC0geGspOw0KPj4g KyAgICAgICB4eSA9ICh1bnNpZ25lZCBjaGFyKSAoeHkgLSB4ayk7DQo+PiAr DQo+PiArICAgICAgICpFcml0ZVB0cisrID0geGM7DQo+PiArICAgICAgICpF cml0ZVB0cisrID0geG07DQo+PiArICAgICAgICpFcml0ZVB0cisrID0geHk7 DQo+PiArICAgICAgICpFcml0ZVB0cisrID0geGs7DQo+PiArICAgICAgIHN1 bSArPSAqRXJpdGVQdHI7DQo+PiArICAgIH0NCj4+ICsgIHJldHVybiBzdW07 DQo+PiArfQ0KPj4gKw0KPj4gK2ludA0KPj4gK21haW4oKQ0KPj4gK3sNCj4+ ICsgIGlmICh0ZXN0KCkgIT0gMzMpDQo+PiArICAgIGFib3J0KCk7DQo+PiAr DQo+PiArICByZXR1cm4gMDsNCj4+ICt9DQo+PiBkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvcGF0aC1zcGxpdC0yLmMNCj4+ IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvcGF0aC1zcGxpdC0y LmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAw Li4xOWYyNzdjDQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9nY2MvdGVz dHN1aXRlL2djYy5kZy90cmVlLXNzYS9wYXRoLXNwbGl0LTIuYw0KPj4gQEAg LTAsMCArMSw2MiBAQA0KPj4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+ PiArLyogeyBkZy1vcHRpb25zICItTzIgLWZkdW1wLXRyZWUtcGF0aF9zcGxp dCIgfSAqLw0KPj4gKw0KPj4gKyNpbmNsdWRlIDxzdGRpby5oPg0KPj4gKyNp bmNsdWRlIDxzdGRsaWIuaD4NCj4+ICsNCj4+ICsjZGVmaW5lIFJHQk1BWCAy NTUNCj4+ICsNCj4+ICtpbnQNCj4+ICt0ZXN0KCkNCj4+ICt7DQo+PiArICBp bnQgaSwgUGVsczsNCj4+ICsgIHVuc2lnbmVkIGNoYXIgc3VtID0gMDsNCj4+ ICsgIHVuc2lnbmVkIGNoYXIgeHIsIHhnLCB4YjsNCj4+ICsgIHVuc2lnbmVk IGNoYXIgeGMsIHhtLCB4eSwgeGs7DQo+PiArICB1bnNpZ25lZCBjaGFyICpS ZWFkUHRyLCAqRXJpdGVQdHI7DQo+PiArDQo+PiArICBSZWFkUHRyID0gKHVu c2lnbmVkIGNoYXIgKikgbWFsbG9jIChzaXplb2YgKHVuc2lnbmVkIGNoYXIp ICogMTAwKTsgDQo+PiArIEVyaXRlUHRyID0gKCB1bnNpZ25lZCBjaGFyICop IG1hbGxvYyAoc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSAqIA0KPj4gKyAxMDAp Ow0KPj4gKw0KPj4gKyAgZm9yIChpID0gMDsgaSA8IDEwMDtpKyspDQo+PiAr ICAgICB7DQo+PiArICAgICAgIFJlYWRQdHJbaV0gPSAxMDAgLSBpOw0KPj4g KyAgICAgfQ0KPj4gKw0KPj4gKyAgZm9yIChpID0gMDsgaSA8IDEwMDsgaSsr KQ0KPj4gKyAgICAgew0KPj4gKyAgICAgICB4ciA9ICpSZWFkUHRyKys7DQo+ PiArICAgICAgIHhnID0gKlJlYWRQdHIrKzsNCj4+ICsgICAgICAgeGIgPSAq UmVhZFB0cisrOw0KPj4gKw0KPj4gKyAgICAgICB4YyA9ICggdW5zaWduZWQg Y2hhcikgKFJHQk1BWCAtIHhyKTsNCj4+ICsgICAgICAgeG0gPSAoIHVuc2ln bmVkIGNoYXIpIChSR0JNQVggLSB4Zyk7DQo+PiArICAgICAgIHh5ID0gKCB1 bnNpZ25lZCBjaGFyKSAoUkdCTUFYIC0geGIpOw0KPj4gKw0KPj4gKyAgICAg ICBpZiAoeGMgPCB4bSkNCj4+ICsgICAgICAgICB7DQo+PiArICAgICAgICAg ICB4ayA9ICggdW5zaWduZWQgY2hhcikgKHhjIDwgeHkgPyB4YyA6IHh5KTsN Cj4+ICsgICAgICAgICB9DQo+PiArICAgICAgIGVsc2UNCj4+ICsgICAgICAg ICB7DQo+PiArICAgICAgICAgICB4ayA9ICggdW5zaWduZWQgY2hhcikgKHht IDwgeHkgPyB4bSA6IHh5KTsNCj4+ICsgICAgICAgICB9DQo+PiArDQo+PiAr ICAgICAgIHhjID0gKHVuc2lnbmVkIGNoYXIpICh4YyAtIHhrKTsNCj4+ICsg ICAgICAgeG0gPSAodW5zaWduZWQgY2hhcikgKHhtIC0geGspOw0KPj4gKyAg ICAgICB4eSA9ICh1bnNpZ25lZCBjaGFyKSAoeHkgLSB4ayk7DQo+PiArDQo+ PiArICAgICAgICpFcml0ZVB0cisrID0geGM7DQo+PiArICAgICAgICpFcml0 ZVB0cisrID0geG07DQo+PiArICAgICAgICpFcml0ZVB0cisrID0geHk7DQo+ PiArICAgICAgICpFcml0ZVB0cisrID0geGs7DQo+PiArICAgICAgIHN1bSAr PSAqRXJpdGVQdHI7DQo+PiArICAgIH0NCj4+ICsgIHJldHVybiBzdW07DQo+ PiArfQ0KPj4gKw0KPj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cCAieGNfWzAtOV1bMC05XSogLT4geyB4Y19bMC05XVswLTldKiB9Ig0KPj4g KyJwYXRoX3NwbGl0In0gfSAqLw0KPj4gKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcCAieG1fWzAtOV1bMC05XSogLT4geyB4bV9bMC05XVswLTld KiB9Ig0KPj4gKyJwYXRoX3NwbGl0In0gfSAqLw0KPj4gKy8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcCAieHlfWzAtOV1bMC05XSogLT4geyB4eV9b MC05XVswLTldKiB9Ig0KPj4gKyJwYXRoX3NwbGl0In0gfSAqLw0KPj4gKy8q IHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiTWVyZ2luZyBibG9ja3Mi ICJwYXRoX3NwbGl0In0gfSAqLw0KPj4gKy8qIHsgZGctZmluYWwgeyBjbGVh bnVwLXRyZWUtZHVtcCAicGF0aF9zcGxpdCIgfSB9ICovDQo+PiBkaWZmIC0t Z2l0IGEvZ2NjL3RpbWV2YXIuZGVmIGIvZ2NjL3RpbWV2YXIuZGVmIGluZGV4 IDcxMWJiZWQuLjYyMTdhOGUNCj4+IDEwMDY0NA0KPj4gLS0tIGEvZ2NjL3Rp bWV2YXIuZGVmDQo+PiArKysgYi9nY2MvdGltZXZhci5kZWYNCj4+IEBAIC0y ODgsMyArMjg4LDQgQEAgREVGVElNRVZBUiAoVFZfSklUX1JFUExBWSAgICAg ICAgLCAicmVwbGF5IG9mIEpJVCBjbGllbnQgYWN0aXZpdHkiKQ0KPj4gIERF RlRJTUVWQVIgKFRWX0FTU0VNQkxFICAgICAgICAgICAgICwgImFzc2VtYmxl IEpJVCBjb2RlIikNCj4+ICBERUZUSU1FVkFSIChUVl9MSU5LICAgICAgICAg ICAgICAgICAsICJsaW5rIEpJVCBjb2RlIikNCj4+ICBERUZUSU1FVkFSIChU Vl9MT0FEICAgICAgICAgICAgICAgICAsICJsb2FkIEpJVCByZXN1bHQiKQ0K Pj4gK0RFRlRJTUVWQVIgKFRWX1RSRUVfUEFUSF9TUExJVCAgLCAidHJlZSBw YXRoX3NwbGl0IikNCj4+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS1wYXNzLmgg Yi9nY2MvdHJlZS1wYXNzLmggaW5kZXggMzk4YWI4My4uZTAwNjM5ZQ0KPj4g MTAwNjQ0DQo+PiAtLS0gYS9nY2MvdHJlZS1wYXNzLmgNCj4+ICsrKyBiL2dj Yy90cmVlLXBhc3MuaA0KPj4gQEAgLTM3OSw2ICszNzksNyBAQCBleHRlcm4g Z2ltcGxlX29wdF9wYXNzICptYWtlX3Bhc3NfaXZfb3B0aW1pemUgDQo+PiAo Z2NjOjpjb250ZXh0ICpjdHh0KTsgIGV4dGVybiBnaW1wbGVfb3B0X3Bhc3Mg DQo+PiAqbWFrZV9wYXNzX3RyZWVfbG9vcF9kb25lIChnY2M6OmNvbnRleHQg KmN0eHQpOyAgZXh0ZXJuIA0KPj4gZ2ltcGxlX29wdF9wYXNzICptYWtlX3Bh c3NfY2ggKGdjYzo6Y29udGV4dCAqY3R4dCk7ICBleHRlcm4gDQo+PiBnaW1w bGVfb3B0X3Bhc3MgKm1ha2VfcGFzc19jY3AgKGdjYzo6Y29udGV4dCAqY3R4 dCk7DQo+PiArZXh0ZXJuIGdpbXBsZV9vcHRfcGFzcyAqbWFrZV9wYXNzX3Bh dGhfc3BsaXQgKGdjYzo6Y29udGV4dCAqY3R4dCk7DQo+PiAgZXh0ZXJuIGdp bXBsZV9vcHRfcGFzcyAqbWFrZV9wYXNzX3BoaV9vbmx5X2Nwcm9wIChnY2M6 OmNvbnRleHQgDQo+PiAqY3R4dCk7ICBleHRlcm4gZ2ltcGxlX29wdF9wYXNz ICptYWtlX3Bhc3NfYnVpbGRfc3NhIChnY2M6OmNvbnRleHQgDQo+PiAqY3R4 dCk7ICBleHRlcm4gZ2ltcGxlX29wdF9wYXNzICptYWtlX3Bhc3NfYnVpbGRf YWxpYXMgKGdjYzo6Y29udGV4dCANCj4+ICpjdHh0KTsgZGlmZiAtLWdpdCBh L2djYy90cmVlLXNzYS1wYXRoLXNwbGl0LmMgDQo+PiBiL2djYy90cmVlLXNz YS1wYXRoLXNwbGl0LmMgbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXgNCj4+ IDAwMDAwMDAuLjNkYTc3OTENCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBi L2djYy90cmVlLXNzYS1wYXRoLXNwbGl0LmMNCj4+IEBAIC0wLDAgKzEsNDYy IEBADQo+PiArLyogU3VwcG9ydCByb3V0aW5lcyBmb3IgUGF0aCBTcGxpdHRp bmcuDQo+PiArICAgQ29weXJpZ2h0IChDKSAyMDE1IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLg0KPj4gKyAgIENvbnRyaWJ1dGVkIGJ5IEFqaXQg S3VtYXIgQWdhcndhbCA8YWppdGt1bUB4aWxpbnguY29tPi4NCj4+ICsNCj4+ ICsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0NDLg0KPj4gKw0KPj4gKyBHQ0Mg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeSBpdCANCj4+ICsgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgDQo+ PiArIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikgDQo+PiArIGFueSBsYXRlciB2 ZXJzaW9uLg0KPj4gKw0KPj4gK0dDQyBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCANCj4+ ICtBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgDQo+PiArb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyANCj4+ICtMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQo+PiArDQo+ PiArWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgDQo+PiArYWxvbmcgd2l0aCBHQ0M7 IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUgDQo+PiArPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8NCj4+ICsNCj4+ICsj aW5jbHVkZSAiY29uZmlnLmgiDQo+PiArI2luY2x1ZGUgInN5c3RlbS5oIg0K Pj4gKyNpbmNsdWRlICJjb3JldHlwZXMuaCINCj4+ICsjaW5jbHVkZSAidG0u aCINCj4+ICsjaW5jbHVkZSAiZmxhZ3MuaCINCj4+ICsjaW5jbHVkZSAidHJl ZS5oIg0KPj4gKyNpbmNsdWRlICJzdG9yLWxheW91dC5oIg0KPj4gKyNpbmNs dWRlICJjYWxscy5oIg0KPj4gKyNpbmNsdWRlICJwcmVkaWN0LmgiDQo+PiAr I2luY2x1ZGUgInZlYy5oIg0KPj4gKyNpbmNsdWRlICJoYXNodGFiLmgiDQo+ PiArI2luY2x1ZGUgImhhc2gtc2V0LmgiDQo+PiArI2luY2x1ZGUgIm1hY2ht b2RlLmgiDQo+PiArI2luY2x1ZGUgImhhcmQtcmVnLXNldC5oIg0KPj4gKyNp bmNsdWRlICJpbnB1dC5oIg0KPj4gKyNpbmNsdWRlICJmdW5jdGlvbi5oIg0K Pj4gKyNpbmNsdWRlICJkb21pbmFuY2UuaCINCj4+ICsjaW5jbHVkZSAiY2Zn LmgiDQo+PiArI2luY2x1ZGUgImNmZ2FuYWwuaCINCj4+ICsjaW5jbHVkZSAi YmFzaWMtYmxvY2suaCINCj4+ICsjaW5jbHVkZSAidHJlZS1zc2EtYWxpYXMu aCINCj4+ICsjaW5jbHVkZSAiaW50ZXJuYWwtZm4uaCINCj4+ICsjaW5jbHVk ZSAiZ2ltcGxlLWZvbGQuaCINCj4+ICsjaW5jbHVkZSAidHJlZS1laC5oIg0K Pj4gKyNpbmNsdWRlICJnaW1wbGUtZXhwci5oIg0KPj4gKyNpbmNsdWRlICJp cy1hLmgiDQo+PiArI2luY2x1ZGUgImdpbXBsZS5oIg0KPj4gKyNpbmNsdWRl ICJnaW1wbGUtaXRlcmF0b3IuaCINCj4+ICsjaW5jbHVkZSAiZ2ltcGxlLXdh bGsuaCINCj4+ICsjaW5jbHVkZSAiZ2ltcGxlLXNzYS5oIg0KPj4gKyNpbmNs dWRlICJ0cmVlLWNmZy5oIg0KPj4gKyNpbmNsdWRlICJ0cmVlLXBoaW5vZGVz LmgiDQo+PiArI2luY2x1ZGUgInNzYS1pdGVyYXRvcnMuaCINCj4+ICsjaW5j bHVkZSAic3RyaW5ncG9vbC5oIg0KPj4gKyNpbmNsdWRlICJ0cmVlLXNzYW5h bWVzLmgiDQo+PiArI2luY2x1ZGUgInRyZWUtc3NhLWxvb3AtbWFuaXAuaCIN Cj4+ICsjaW5jbHVkZSAidHJlZS1zc2EtbG9vcC1uaXRlci5oIg0KPj4gKyNp bmNsdWRlICJ0cmVlLXNzYS1sb29wLmgiDQo+PiArI2luY2x1ZGUgInRyZWUt aW50by1zc2EuaCINCj4+ICsjaW5jbHVkZSAidHJlZS1zc2EuaCINCj4+ICsj aW5jbHVkZSAidHJlZS1wYXNzLmgiDQo+PiArI2luY2x1ZGUgInRyZWUtZHVt cC5oIg0KPj4gKyNpbmNsdWRlICJnaW1wbGUtcHJldHR5LXByaW50LmgiDQo+ PiArI2luY2x1ZGUgImRpYWdub3N0aWMtY29yZS5oIg0KPj4gKyNpbmNsdWRl ICJpbnRsLmgiDQo+PiArI2luY2x1ZGUgImNmZ2xvb3AuaCINCj4+ICsjaW5j bHVkZSAidHJlZS1zY2FsYXItZXZvbHV0aW9uLmgiDQo+PiArI2luY2x1ZGUg InRyZWUtc3NhLXByb3BhZ2F0ZS5oIg0KPj4gKyNpbmNsdWRlICJ0cmVlLWNo cmVjLmgiDQo+PiArI2luY2x1ZGUgInRyZWUtc3NhLXRocmVhZHVwZGF0ZS5o Ig0KPj4gKyNpbmNsdWRlICJleHByLmgiDQo+PiArI2luY2x1ZGUgImluc24t Y29kZXMuaCINCj4+ICsjaW5jbHVkZSAib3B0YWJzLmgiDQo+PiArI2luY2x1 ZGUgInRyZWUtc3NhLXRocmVhZGVkZ2UuaCINCj4+ICsjaW5jbHVkZSAid2lk ZS1pbnQuaCINCj4+ICsNCj4+ICsvKiBSZXBsYWNlX3VzZXNfcGhpIGZ1bmN0 aW9uIHByb3BhZ2F0ZXMgdGhlIHBoaSByZXN1bHRzIHdpdGggdGhlDQo+PiAr ICAgZmlyc3QgcGhpIGFyZ3VtZW50IGludG8gZWFjaCBvZiB0aGUgY29waWVk IGpvaW4gYmxvY2tzIHdpcmVkIGludG8NCj4+ICsgICBpdHMgcHJlZGVjZXNz b3JzLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSByZXBsYWNl X3VzZXNfcGhpDQo+PiArICAgdG8gcmVwbGFjZSB0aGUgdXNlcyBvZiBmaXJz dCBwaGkgYXJndW1lbnRzIHdpdGggdGhlIHNlY29uZA0KPj4gKyAgIHBoaSBh cmd1bWVudHMgaW4gdGhlIG5leHQgY29weSBvZiBqb2luIGJsb2NrLiAgKi8N Cj4+ICsNCj4+ICtzdGF0aWMgdm9pZA0KPj4gK3JlcGxhY2VfdXNlX3BoaV9v cGVyYW5kMV93aXRoX29wZXJhbmQyIChiYXNpY19ibG9jayBiLA0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVlIHVz ZTEsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRyZWUgdXNlMikgew0KPj4gKyAgdXNlX29wZXJhbmRfcCB1c2U7DQo+ PiArICBzc2Ffb3BfaXRlciBpdGVyOw0KPj4gKyAgZ2ltcGxlX3N0bXRfaXRl cmF0b3IgZ3NpOw0KPj4gKw0KPj4gKyAgZm9yIChnc2kgPSBnc2lfc3RhcnRf YmIgKGIpOyAhZ3NpX2VuZF9wIChnc2kpOykNCj4+ICsgICAgIHsNCj4+ICsg ICAgICAgZ2ltcGxlIHN0bXQgPSBnc2lfc3RtdCAoZ3NpKTsNCj4+ICsgICAg ICAgRk9SX0VBQ0hfU1NBX1VTRV9PUEVSQU5EICh1c2UsIHN0bXQsIGl0ZXIs IFNTQV9PUF9VU0UpDQo+PiArICAgICAgIHsNCj4+ICsgICAgICAgICB0cmVl IHR1c2UgPSBVU0VfRlJPTV9QVFIgKHVzZSk7DQo+PiArICAgICAgICAgIGlm ICh1c2UxID09IHR1c2UgfHwgdXNlMSA9PSBOVUxMX1RSRUUpDQo+PiArICAg ICAgICAgICAgew0KPj4gKyAgICAgICAgICAgICAgcHJvcGFnYXRlX3ZhbHVl ICh1c2UsIHVzZTIpOw0KPj4gKyAgICAgICAgICAgICAgdXBkYXRlX3N0bXQo c3RtdCk7DQo+PiArICAgICAgICAgICAgfQ0KPj4gKyAgICAgICAgfQ0KPj4g KyAgICAgICBnc2lfbmV4dCgmZ3NpKTsNCj4+ICsgICAgIH0NCj4+ICt9DQo+ PiArDQo+PiArLyogVGhpcyBmdW5jdGlvbiBwcm9wYWdhdGVzIHRoZSBwaGkg cmVzdWx0IGludG8gdGhlIHVzZSBwb2ludHMgd2l0aA0KPj4gKyAgIHRoZSBw aGkgYXJndW1lbnRzLiBUaGUgam9pbiBibG9jayBpcyBjb3BpZWQgYW5kIHdp cmVkIGludG8gdGhlDQo+PiArICAgcHJlZGVjZXNzb3JzLiBTaW5jZSB0aGUg dXNlIHBvaW50cyBvZiB0aGUgcGhpIHJlc3VsdHMgd2lsbCBiZSBzYW1lDQo+ PiArICAgaW4gdGhlIGVhY2ggb2YgdGhlIGNvcHkgam9pbiBibG9ja3MgaW4g dGhlICBwcmVkZWNlc3NvcnMsIGl0DQo+PiArICAgcHJvcGFnYXRlcyB0aGUg cGhpIGFyZ3VtZW50cyBpbiB0aGUgY29weSBvZiB0aGUgam9pbiBibG9ja3Mg d2lyZWQNCj4+ICsgICBpbnRvIGl0cyBwcmVkZWNlc3Nvci4gICovDQo+PiAr DQo+PiArc3RhdGljDQo+PiArdm9pZCByZXBsYWNlX3VzZXNfcGhpIChiYXNp Y19ibG9jayBiLCBiYXNpY19ibG9jayB0ZW1wX2JiKSB7DQo+PiArICBnaW1w bGVfc2VxIHBoaXMgPSBwaGlfbm9kZXMgKGIpOw0KPj4gKyAgZ2ltcGxlIHBo aSA9IGdpbXBsZV9zZXFfZmlyc3Rfc3RtdCAocGhpcyk7DQo+PiArICB0cmVl IGRlZiA9IGdpbXBsZV9waGlfcmVzdWx0IChwaGkpLCB1c2UgPSBnaW1wbGVf cGhpX2FyZ19kZWYgDQo+PiArKHBoaSwwKTsNCj4+ICsgIHRyZWUgdXNlMiA9 IGdpbXBsZV9waGlfYXJnX2RlZiAocGhpLDEpOw0KPj4gKw0KPj4gKyAgaWYg KHZpcnR1YWxfb3BlcmFuZF9wIChkZWYpKQ0KPj4gKyAgICB7DQo+PiArICAg ICAgaW1tX3VzZV9pdGVyYXRvciBpdGVyOw0KPj4gKyAgICAgIHVzZV9vcGVy YW5kX3AgdXNlX3A7DQo+PiArICAgICAgZ2ltcGxlIHN0bXQ7DQo+PiArDQo+ PiArICAgICAgRk9SX0VBQ0hfSU1NX1VTRV9TVE1UIChzdG10LCBpdGVyLCBk ZWYpDQo+PiArICAgICAgICBGT1JfRUFDSF9JTU1fVVNFX09OX1NUTVQgKHVz ZV9wLCBpdGVyKQ0KPj4gKyAgICAgICAgICBTRVRfVVNFICh1c2VfcCwgdXNl KTsNCj4+ICsgICAgICBpZiAoU1NBX05BTUVfT0NDVVJTX0lOX0FCTk9STUFM X1BISSAoZGVmKSkNCj4+ICsgICAgICAgIFNTQV9OQU1FX09DQ1VSU19JTl9B Qk5PUk1BTF9QSEkgKHVzZSkgPSAxOw0KPj4gKyAgICB9DQo+PiArICAgZWxz ZQ0KPj4gKyAgICAgcmVwbGFjZV91c2VzX2J5IChkZWYsIHVzZSk7DQo+PiAr ICAgcmVwbGFjZV91c2VfcGhpX29wZXJhbmQxX3dpdGhfb3BlcmFuZDIgKHRl bXBfYmIsIHVzZSwgdXNlMik7IH0NCj4+ICsNCj4+ICsvKiBSZXR1cm5zIHRy dWUgaWYgdGhlIGJsb2NrIGJiIGhhcyBsYWJlbCBvciBjYWxsIHN0YXRlbWVu dHMuDQo+PiArICAgT3RoZXJ3aXNlIHJldHVybiBmYWxzZS4gICovDQo+PiAr DQo+PiArc3RhdGljIGJvb2wNCj4+ICtpc19ibG9ja19oYXNfbGFiZWxfY2Fs bCAoYmFzaWNfYmxvY2sgYmIpIHsNCj4+ICsgIGdpbXBsZV9zdG10X2l0ZXJh dG9yIGdzaTsNCj4+ICsNCj4+ICsgIGZvciAoZ3NpID0gZ3NpX3N0YXJ0X2Ji IChiYik7ICFnc2lfZW5kX3AgKGdzaSk7IGdzaV9uZXh0ICgmZ3NpKSkNCj4+ ICsgICAgIHsNCj4+ICsgICAgICAgZ2ltcGxlIHN0bXQgPSBnc2lfc3RtdChn c2kpOw0KPj4gKyAgICAgICBpZiAoZHluX2Nhc3QgPGdsYWJlbCAqPiAoc3Rt dCkpDQo+PiArICAgICAgICAgew0KPj4gKyAgICAgICAgICAgcmV0dXJuIHRy dWU7DQo+PiArICAgICAgICAgfQ0KPj4gKyAgICAgICBpZiAoaXNfZ2ltcGxl X2NhbGwgKHN0bXQpKQ0KPj4gKyAgICAgICAgIHJldHVybiB0cnVlOw0KPj4g KyAgICAgfQ0KPj4gKyAgcmV0dXJuIGZhbHNlOw0KPj4gK30NCj4+ICsNCj4+ ICsvKiBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIHRoZSBmZWFzaWJpbGl0eSB0 ZXN0cyBmb3IgcGF0aCBzcGxpdHRpbmcNCj4+ICsgICB0byBwZXJmb3JtLiBS ZXR1cm4gZmFsc2UgaWYgdGhlIGZlYXNpYmlsaXR5IGZvciBwYXRoIHNwbGl0 dGluZw0KPj4gKyAgIGlzIG5vdCBkb25lIGFuZCByZXR1cm5zIHRydWUgaWYg dGhlIGZlYXNiaWxpdHkgZm9yIHBhdGggc3BsaXR0aW5nDQo+PiArICAgaXMg ZG9uZS4gRm9sbG93aW5nIGZlYXNpYmlsaXR5IHRlc3RzIGFyZSBwZXJmb3Jt ZWQuDQo+PiArDQo+PiArICAgMS4gUmV0dXJuIGZhbHNlIGlmIHRoZSBqb2lu IGJsb2NrIGhhcyBjYWxsIGdpbXBsZSBzdGF0ZW1lbnRzLg0KPj4gKyAgIDIu IFJldHVybiBmYWxzZSBpZiB0aGUgam9pbiBibG9jayBoYXMgcmhzIGNhc3Rp bmcgZm9yIGFzc2lnbg0KPj4gKyAgICAgIGdpbXBsZSBzdGF0ZW1lbnRzLg0K Pj4gKyAgIDMuIElmIHRoZSBudW1iZXIgb2YgcGhpcyBpcyBncmVhdGVyIHRo YW4gMSBvciB0aGUgcGhpIG5vZGUgaW4NCj4+ICsgICAgICB0aGUgam9pbiBi bG9jayBoYXMgdmlydHVhbCBvcGVyYW5kIHJldHVybiBmYWxzZS4NCj4+ICsg ICA0LiBSZXR1cm4gZmFsc2UgaWYgdGhlIG51bWJlciBvZiBzZXF1ZW50aWFs IHN0YXRlbWVudHMgaXMNCj4+ICsgICAgICBncmVhdGVyIHRoYW4gMi4NCj4+ ICsgICA1LiBJZiB0aGUgcHJlZGVjZXNzb3JzIGJsb2NrcyBoYXMgbGFiZWxz IGFuZCBjYWxsIHN0YXRlbWVudHMNCj4+ICsgICAgICByZXR1cm4gZmFsc2Uu DQo+PiArICAgNi4gSWYgdGhlIHBoaSByZXN1bHQgaW4gdGhlIHBoaSBub2Rl IG9mIHRoZSBqb2luIGJsb2NrIGlzIG5vdA0KPj4gKyAgICAgIHVzZWQgaW5z aWRlIHRoZSBzYW1lIGpvaW4gYmxvY2sgcmV0dXJuIGZhbHNlLg0KPj4gKyAg IDcuIE90aGVyd2lzZSByZXR1cm5zIHRydWUuICAqLw0KPj4gKw0KPj4gK3N0 YXRpYyBib29sDQo+PiAraXNfZmVhc2libGVfcGF0aF9zcGxpdHRpbmcgKGJh c2ljX2Jsb2NrIGpvaW5fbm9kZSwgYmFzaWNfYmxvY2sgcHJlZDEsDQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzaWNfYmxvY2sgcHJlZDIp IHsNCj4+ICsgIGludCBudW1fc3RtdCA9IDAsIG51bV9waGlzID0gMDsNCj4+ ICsgIGdpbXBsZV9zdG10X2l0ZXJhdG9yIHBzaSwgZ3NpOw0KPj4gKw0KPj4g KyAgZm9yIChnc2kgPSBnc2lfc3RhcnRfYmIgKGpvaW5fbm9kZSk7ICFnc2lf ZW5kX3AgKGdzaSk7IGdzaV9uZXh0ICgmZ3NpKSkNCj4+ICsgICAgIHsNCj4+ ICsgICAgICAgZ2ltcGxlIHN0bXQgPSBnc2lfc3RtdChnc2kpOw0KPj4gKw0K Pj4gKyAgICAgICBpZiAoZ2ltcGxlX2Fzc2lnbl9jYXN0X3AgKHN0bXQpKQ0K Pj4gKyAgICAgICAgIHJldHVybiBmYWxzZTsNCj4+ICsNCj4+ICsgICAgICAg aWYgKGlzX2dpbXBsZV9jYWxsIChzdG10KSkNCj4+ICsgICAgICAgICByZXR1 cm4gZmFsc2U7DQo+PiArDQo+PiArICAgICAgIGlmICghaXNfZ2ltcGxlX2Rl YnVnKHN0bXQpKQ0KPj4gKyAgICAgICAgIHsNCj4+ICsgICAgICAgICAgIG51 bV9zdG10Kys7DQo+PiArICAgICAgICAgfQ0KPj4gKyAgICAgfQ0KPj4gKw0K Pj4gKyAgIGlmIChwcmVkMSAmJiBwcmVkMiAmJiAobnVtX3N0bXQgPiAyKSkN Cj4+ICsgICAgIHsNCj4+ICsgICAgICAgYm9vbCBmb3VuZF92aXJ0dWFsX3Jl c3VsdCA9IGZhbHNlOw0KPj4gKw0KPj4gKyAgICAgICBmb3IgKHBzaSA9IGdz aV9zdGFydF9waGlzIChqb2luX25vZGUpOyAhZ3NpX2VuZF9wIChwc2kpOyAp DQo+PiArICAgICAgICAgIHsNCj4+ICsgICAgICAgICAgICB1c2Vfb3BlcmFu ZF9wIHVzZV9wOw0KPj4gKyAgICAgICAgICAgIGltbV91c2VfaXRlcmF0b3Ig aXRlcjsNCj4+ICsgICAgICAgICAgICBnaW1wbGUgc3RtdCA9IGdzaV9zdG10 KHBzaSk7DQo+PiArDQo+PiArICAgICAgICAgICAgaWYgKCF2aXJ0dWFsX29w ZXJhbmRfcCAoZ2ltcGxlX3BoaV9yZXN1bHQgKHN0bXQpKSkNCj4+ICsgICAg ICAgICAgICAgIG51bV9waGlzKys7DQo+PiArICAgICAgICAgICAgZWxzZQ0K Pj4gKyAgICAgICAgICAgICAgZm91bmRfdmlydHVhbF9yZXN1bHQgPSB0cnVl Ow0KPj4gKw0KPj4gKyAgICAgICAgICAgIEZPUl9FQUNIX0lNTV9VU0VfRkFT VCAodXNlX3AsIGl0ZXIsIGdpbXBsZV9waGlfcmVzdWx0IChzdG10KSkNCj4+ ICsgICAgICAgICAgICB7DQo+PiArICAgICAgICAgICAgICBnaW1wbGUgdXNl X3N0bXQgPSBVU0VfU1RNVCAodXNlX3ApOw0KPj4gKw0KPj4gKyAgICAgICAg ICAgICAgaWYgKGdpbXBsZV9iYiAodXNlX3N0bXQpICE9IGpvaW5fbm9kZSkN Cj4+ICsgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KPj4gKyAgICAg ICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgICAgICBnc2lfbmV4dCgmcHNp KTsNCj4+ICsgICAgICAgICB9DQo+PiArDQo+PiArICAgICAgIGlmICgobnVt X3BoaXMgPjEpIHx8IGZvdW5kX3ZpcnR1YWxfcmVzdWx0KQ0KPj4gKyAgICAg ICAgICByZXR1cm4gZmFsc2U7DQo+PiArDQo+PiArICAgICAgIGlmKGlzX2Js b2NrX2hhc19sYWJlbF9jYWxsKHByZWQxKSB8fCBpc19ibG9ja19oYXNfbGFi ZWxfY2FsbChwcmVkMikpDQo+PiArICAgICAgICAgcmV0dXJuIGZhbHNlOw0K Pj4gKw0KPj4gKyAgICAgICByZXR1cm4gdHJ1ZTsNCj4+ICsgICAgfQ0KPj4g KyAgcmV0dXJuIGZhbHNlOw0KPj4gK30NCj4+ICsNCj4+ICsvKiBVcGRhdGUg dGhlIHN0YXRlbWVudHMgaW4gdGhlIGJhc2ljIGJsb2NrIHdpdGggdGhlIGJh c2ljDQo+PiArICAgYmFzaWMgYmxvY2suICAqLw0KPj4gKw0KPj4gK3N0YXRp YyB2b2lkDQo+PiArdXBkYXRlX3N0bXRfYmIoYmFzaWNfYmxvY2sgYikNCj4+ ICt7DQo+PiArICBnaW1wbGVfc3RtdF9pdGVyYXRvciBnc2k7DQo+PiArICBm b3IoZ3NpID0gZ3NpX3N0YXJ0X2JiKGIpOyAhZ3NpX2VuZF9wKGdzaSk7IGdz aV9uZXh0KCZnc2kpKQ0KPj4gKyAgIHsNCj4+ICsgICAgIGdpbXBsZSBzdG10 ID0gZ3NpX3N0bXQoZ3NpKTsNCj4+ICsgICAgIGdpbXBsZV9zZXRfYmIoc3Rt dCxiKTsNCj4+ICsgICB9DQo+PiArfQ0KPj4gKw0KPj4gKy8qIFRoaXMgZnVu Y3Rpb24gZ2V0cyB0aGUgam9pbiBibG9ja3Mgc2FtZSBhcyB0aGUgc291cmNl DQo+PiArICAgbm9kZSBvZiB0aGUgbG9vcCBsYXRjaCBub2RlcyBhbmQgdGhl IHByZWRlY2Vzc29ycyBvZg0KPj4gKyAgIHRoZSBqb2luIGJsb2NrIGlzIHVw ZGF0ZWQgaW4gdGhlIHByZWQxIGFuZCBwcmVkMiBwYXNzZWQNCj4+ICsgICBh cyB0aGUgcmVmZXJlbmNlIGFyZ3VtZW50cyBpbnRvIHRoZSBmdW5jdGlvbi4g UmV0dXJuDQo+PiArICAgdGhlIGpvaW4gYmxvY2suICAqLw0KPj4gKw0KPj4g K3N0YXRpYyBiYXNpY19ibG9jaw0KPj4gK2dldF9qb2luX2Jsa19zYW1lX2Fz X2xvb3BfbGF0Y2ggKGJhc2ljX2Jsb2NrIGJiLA0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJhc2ljX2Jsb2NrICZwcmVkMSwNCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNpY19ibG9j ayAmcHJlZDIpIHsNCj4+ICsgIHZlYzxiYXNpY19ibG9jaz4gYmJzOw0KPj4g KyAgYmFzaWNfYmxvY2sgYmIxOw0KPj4gKyAgdW5zaWduZWQgaW50IGk7DQo+ PiArICBlZGdlX2l0ZXJhdG9yIGVpOw0KPj4gKyAgZWRnZSBlMTsNCj4+ICsg IGJvb2wgZm91bmQgPSBmYWxzZSAsZm91bmQxOw0KPj4gKyAgYmJzID0gZ2V0 X2FsbF9kb21pbmF0ZWRfYmxvY2tzIChDRElfRE9NSU5BVE9SUywNCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmIgKTsNCj4+ICsg IEZPUl9FQUNIX1ZFQ19FTFQgKGJicywgaSwgYmIxKQ0KPj4gKyAgew0KPj4g KyAgICBmb3VuZDEgPSBmYWxzZTsNCj4+ICsgICAgRk9SX0VBQ0hfRURHRSAo ZTEsIGVpLCBiYi0+c3VjY3MpDQo+PiArICAgIHsNCj4+ICsgICAgICBpZiAo IGJiMSA9PSBlMS0+ZGVzdCkNCj4+ICsgICAgICAgIHsNCj4+ICsgICAgICAg ICAgZm91bmQgPSB0cnVlOw0KPj4gKyAgICAgICAgICBmb3VuZDEgPSB0cnVl Ow0KPj4gKyAgICAgICAgfQ0KPj4gKyAgICB9DQo+PiArICAgIGlmICghZm91 bmQxICYmIGZvdW5kKQ0KPj4gKyAgICAgIHsNCj4+ICsgICAgICAgIGZvdW5k ID0gZmFsc2U7DQo+PiArICAgICAgICBGT1JfRUFDSF9FREdFIChlMSwgZWks IGJiMS0+c3VjY3MpDQo+PiArICAgICAgICB7DQo+PiArICAgICAgICAgIGlm IChlMS0+ZmxhZ3MgJiAoRURHRV9ERlNfQkFDSykpDQo+PiArICAgICAgICAg ICAgZm91bmQgPSB0cnVlOw0KPj4gKyAgICAgICAgfQ0KPj4gKw0KPj4gKyAg ICAgICAgaWYgKGZvdW5kICYmIEVER0VfQ09VTlQoYmIxLT5wcmVkcykgPT0g MikNCj4+ICsgICAgICAgICAgew0KPj4gKyAgICAgICAgICAgIHVuc2lnbmVk IGludCBrID0gMDsNCj4+ICsgICAgICAgICAgICBGT1JfRUFDSF9FREdFIChl MSwgZWksIGJiMS0+cHJlZHMpDQo+PiArICAgICAgICAgICAgew0KPj4gKyAg ICAgICAgICAgICAgaWYgKChlMS0+ZmxhZ3MgJiAoRURHRV9ERlNfQkFDSykp KQ0KPj4gKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCj4+ICsNCj4+ICsg ICAgICAgICAgICAgIGlmICggayA9PSAxKQ0KPj4gKyAgICAgICAgICAgICAg ICB7DQo+PiArICAgICAgICAgICAgICAgICAgaWYgKHNpbmdsZV9zdWNjX3Ao ZTEtPnNyYykgJiYNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgc2luZ2xl X3N1Y2NfZWRnZSAoZTEtPnNyYyktPmZsYWdzICYgRURHRV9GQUxMVEhSVSkN Cj4+ICsgICAgICAgICAgICAgICAgICAgIHsNCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgcHJlZDIgPSBlMS0+c3JjOw0KPj4gKyAgICAgICAgICAgICAg ICAgICAgfQ0KPj4gKyAgICAgICAgICAgICAgICB9DQo+PiArICAgICAgICAg ICAgICAgIGVsc2UNCj4+ICsgICAgICAgICAgICAgICAgICB7DQo+PiArICAg ICAgICAgICAgICAgICAgICBpZiAoc2luZ2xlX3N1Y2NfcChlMS0+c3JjKSAm Jg0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZV9zdWNjX2Vk Z2UgKGUxLT5zcmMpLT5mbGFncyAmIEVER0VfRkFMTFRIUlUpDQo+PiArICAg ICAgICAgICAgICAgICAgICAgIHsNCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICBwcmVkMSA9IGUxLT5zcmM7DQo+PiArICAgICAgICAgICAgICAgICAg ICAgIH0NCj4+ICsgICAgICAgICAgICAgICAgICB9DQo+PiArICAgICAgICAg ICAgICAgIGsrKzsNCj4+ICsgICAgICAgICAgICB9DQo+PiArICAgICAgICAg ICAgYmJzLnJlbGVhc2UoKTsNCj4+ICsgICAgICAgICAgICByZXR1cm4gYmIx Ow0KPj4gKyAgICAgICAgICB9DQo+PiArICAgICAgIH0NCj4+ICsgICB9DQo+ PiArICAgYmJzLnJlbGVhc2UoKTsNCj4+ICsgICByZXR1cm4gTlVMTDsNCj4+ ICt9DQo+PiArDQo+PiArLyogVGhpcyBpcyB0aGUgY29yZSBmdW5jdGlvbiB0 byBwZXJmb3JtIHBhdGggc3BsaXR0aW5nLiBUaGUgam9pbg0KPj4gKyAgIHNh bWUgYXMgdGhlIHNvdXJjZSBvZiB0aGUgbG9vcCBsYXRjaCBub2RlIGlzIGlk ZW50aWZpZWQgYWxvbmcNCj4+ICsgICB3aXRoIHRoZWlyIHByZWRlY2Vzc29y cy4gQmFzZWQgb24gdGhlIGZlYXNpYmlsaXR5IHRlc3RzIGZvcg0KPj4gKyAg IHBhdGggc3BsaXR0aW5nIHRoZSBwYXRoIHNwbGl0dGluZyBpcyBwZXJmb3Jt ZWQgYnkgd2lyaW5nIHRoZQ0KPj4gKyAgIGNvcHkgb2Ygam9pbiBibG9ja3Mg aW50byB0aGUgcHJlZGVjZXNzb3JzIGFuZCBwcm9wYWdhdGluZyB0aGUgcGhp DQo+PiArICAgcmVzdWx0IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgcGhpIGFy Z3VtZW50cyBpbnRvIGVhY2ggb2YgdGhlIGNvcHkNCj4+ICsgICBvZiBqb2lu IGJsb2NrcyB3aXJlZCB3aXRoIHRoZSBvcmlnaW5hbCBwcmVkZWNlc3NvcnMg b2YgdGhlIGpvaW4NCj4+ICsgICBibG9jay4NCj4+ICsNCj4+ICsgICBUaGUg IHRyZWUtY2ZnLWNsZWFudXAgd2lsbCBtZXJnZSB0aGUgYmxvY2tzIGluIHRo ZSBwcmVkZWNlc3NvcnMNCj4+ICsgICBwYXRoIGFuZCB0aGUgdXBkYXRlLXNz YSB3aWxsIHVwZGF0ZSB0aGUgc3NhIHJlcHJlc2VudGF0aW9uIGFmdGVyDQo+ PiArICAgdGhlIHBhdGggc3BsaXR0aW5nIGlzIHBlcmZvcm1lZC4gICovDQo+ PiArDQo+PiArc3RhdGljIHZvaWQNCj4+ICtwZXJmb3JtX3BhdGhfc3BsaXR0 aW5nIChiYXNpY19ibG9jayBiYikgew0KPj4gKyAgYmFzaWNfYmxvY2sgcHJl ZDEgPSBOVUxMLCBwcmVkMiA9IE5VTEwsIGpvaW5fYmxvY2sgPSBOVUxMOw0K Pj4gKw0KPj4gKyAgam9pbl9ibG9jayA9IGdldF9qb2luX2Jsa19zYW1lX2Fz X2xvb3BfbGF0Y2ggKGJiLCBwcmVkMSwgcHJlZDIpOw0KPj4gKw0KPj4gKyAg aWYgKGpvaW5fYmxvY2sgICYmDQo+PiArICAgICAgaXNfZmVhc2libGVfcGF0 aF9zcGxpdHRpbmcgKGpvaW5fYmxvY2ssIHByZWQxLCBwcmVkMikpDQo+PiAr ICAgIHsNCj4+ICsgICAgICBiYXNpY19ibG9jayBuZXdfYmIxID0gTlVMTCwg bmV3X2JiMiA9IE5VTEw7DQo+PiArICAgICAgZ2ltcGxlX3N0bXRfaXRlcmF0 b3IgbGFzdDsNCj4+ICsgICAgICBiYXNpY19ibG9jayB0ZW1wX2JiID0gTlVM TDsNCj4+ICsgICAgICBlZGdlX2l0ZXJhdG9yIGVpOw0KPj4gKyAgICAgIGVk Z2UgZTE7DQo+PiArDQo+PiArICAgICAgdGVtcF9iYiA9IGR1cGxpY2F0ZV9i bG9jayAoam9pbl9ibG9jaywgTlVMTCwgTlVMTCk7DQo+PiArDQo+PiArICAg ICAgRk9SX0VBQ0hfRURHRSAoZTEsIGVpLCBwcmVkMS0+c3VjY3MpDQo+PiAr ICAgICAgICBuZXdfYmIxID0gc3BsaXRfZWRnZSAoZTEpOw0KPj4gKw0KPj4g KyAgICAgIEZPUl9FQUNIX0VER0UgKGUxLCBlaSwgcHJlZDItPnN1Y2NzKQ0K Pj4gKyAgICAgICAgbmV3X2JiMiA9IHNwbGl0X2VkZ2UgKGUxKTsNCj4+ICsN Cj4+ICsgICAgICBsYXN0ID0gZ3NpX3N0YXJ0X2JiIChuZXdfYmIxKTsNCj4+ ICsgICAgICBnc2lfaW5zZXJ0X3NlcV9hZnRlciAoJmxhc3QsIGJiX3NlcSAo am9pbl9ibG9jayksIEdTSV9ORVdfU1RNVCk7DQo+PiArICAgICAgbGFzdCA9 IGdzaV9zdGFydF9iYiAobmV3X2JiMik7DQo+PiArICAgICAgZ3NpX2luc2Vy dF9zZXFfYWZ0ZXIgKCZsYXN0LCBiYl9zZXEgKHRlbXBfYmIpLCBHU0lfTkVX X1NUTVQpOw0KPj4gKyAgICAgIHVwZGF0ZV9zdG10X2JiIChuZXdfYmIxKTsN Cj4+ICsgICAgICB1cGRhdGVfc3RtdF9iYiAobmV3X2JiMik7DQo+PiArDQo+ PiArICAgICAgcmVwbGFjZV91c2VzX3BoaSAoam9pbl9ibG9jaywgbmV3X2Ji Mik7DQo+PiArDQo+PiArICAgICAgc2V0X2JiX3NlcSAoam9pbl9ibG9jaywg TlVMTCk7DQo+PiArICAgICAgc2V0X2JiX3NlcSh0ZW1wX2JiLE5VTEwpOw0K Pj4gKyAgICAgIGRlbGV0ZV9iYXNpY19ibG9jayAodGVtcF9iYik7DQo+PiAr ICAgICAgcmV0dXJuOw0KPj4gKyAgICB9DQo+PiArfQ0KPj4gKw0KPj4gK3N0 YXRpYyB1bnNpZ25lZCBpbnQNCj4+ICtleGVjdXRlX3BhdGhfc3BsaXQgKHZv aWQpDQo+PiArew0KPj4gKyAgYmFzaWNfYmxvY2sgYmI7DQo+PiArDQo+PiAr ICBsb29wX29wdGltaXplcl9pbml0IChMT09QU19OT1JNQUwgfCBMT09QU19I QVZFX1JFQ09SREVEX0VYSVRTKTsgDQo+PiArIGluaXRpYWxpemVfb3JpZ2lu YWxfY29weV90YWJsZXMoKTsNCj4+ICsNCj4+ICsgIGNhbGN1bGF0ZV9kb21p bmFuY2VfaW5mbyAoQ0RJX0RPTUlOQVRPUlMpOyANCj4+ICsgY2FsY3VsYXRl X2RvbWluYW5jZV9pbmZvIChDRElfUE9TVF9ET01JTkFUT1JTKTsNCj4+ICsN Cj4+ICsgIG1hcmtfZGZzX2JhY2tfZWRnZXMgKCk7DQo+PiArDQo+PiArICBG T1JfRUFDSF9CQl9GTiAoYmIsIGNmdW4pDQo+PiArICB7DQo+PiArICAgIGdp bXBsZSBsYXN0Ow0KPj4gKw0KPj4gKyAgICAvKiBXZSBvbmx5IGNhcmUgYWJv dXQgYmxvY2tzIGVuZGluZyBpbiBhIENPTkRfRVhQUi4gKi8NCj4+ICsNCj4+ ICsgICAgbGFzdCA9IGdzaV9zdG10IChnc2lfbGFzdF9iYiAoYmIpKTsNCj4+ ICsNCj4+ICsgICAgLyogV2UncmUgYmFzaWNhbGx5IGxvb2tpbmcgZm9yIGEg c3dpdGNoIG9yIGFueSBraW5kIG9mIGNvbmRpdGlvbmFsIHdpdGgNCj4+ICsg ICAgICAgaW50ZWdyYWwgb3IgcG9pbnRlciB0eXBlIGFyZ3VtZW50cy4gIE5v dGUgdGhlIHR5cGUgb2YgdGhlIHNlY29uZA0KPj4gKyAgICAgICBhcmd1bWVu dCB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBmaXJzdCBhcmd1bWVudCwgc28g bm8gbmVlZCB0bw0KPj4gKyAgICAgICBjaGVjayBpdCBleHBsaWNpdGx5LiAg Ki8NCj4+ICsgICAgaWYgKChsYXN0ICYmIChnaW1wbGVfY29kZSAobGFzdCkg PT0gR0lNUExFX0NPTkQNCj4+ICsgICAgICAgICAgICAmJiBUUkVFX0NPREUg KGdpbXBsZV9jb25kX2xocyAobGFzdCkpID09IFNTQV9OQU1FDQo+PiArICAg ICAgICAgICAgJiYgKElOVEVHUkFMX1RZUEVfUCAoVFJFRV9UWVBFIChnaW1w bGVfY29uZF9saHMgKGxhc3QpKSkNCj4+ICsgICAgICAgICAgICB8fCBQT0lO VEVSX1RZUEVfUCAoVFJFRV9UWVBFIChnaW1wbGVfY29uZF9saHMgKGxhc3Qp KSkpDQo+PiArICAgICAgICAgICAgJiYgKFRSRUVfQ09ERSAoZ2ltcGxlX2Nv bmRfcmhzIChsYXN0KSkgPT0gU1NBX05BTUUNCj4+ICsgICAgICAgICAgICB8 fCBpc19naW1wbGVfbWluX2ludmFyaWFudCAoZ2ltcGxlX2NvbmRfcmhzIChs YXN0KSkpKSkpDQo+PiArICAgICAgew0KPj4gKw0KPj4gKyAgICAgICAgIGlm IChnaW1wbGVfY29kZShsYXN0KSA9PSBHSU1QTEVfQ09ORCkNCj4+ICsgICAg ICAgICAgIHsNCj4+ICsgICAgICAgICAgICAgIHBlcmZvcm1fcGF0aF9zcGxp dHRpbmcgKGJiKTsNCj4+ICsgICAgICAgICAgIH0NCj4+ICsgICAgICB9DQo+ PiArICAgfQ0KPj4gKw0KPj4gKyAgIGxvb3Bfb3B0aW1pemVyX2ZpbmFsaXpl ICgpOw0KPj4gKyAgIGZyZWVfb3JpZ2luYWxfY29weV90YWJsZXMgKCk7DQo+ PiArICAgZnJlZV9kb21pbmFuY2VfaW5mbyAoQ0RJX0RPTUlOQVRPUlMpOw0K Pj4gKyAgIGZyZWVfZG9taW5hbmNlX2luZm8gKENESV9QT1NUX0RPTUlOQVRP UlMpOw0KPj4gKyAgIHJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtuYW1l c3BhY2Ugew0KPj4gKw0KPj4gK2NvbnN0IHBhc3NfZGF0YSBwYXNzX2RhdGFf cGF0aF9zcGxpdCA9IHsNCj4+ICsgICBHSU1QTEVfUEFTUywgLyogdHlwZSAq Lw0KPj4gKyAgICJwYXRoX3NwbGl0IiwgLyogbmFtZSAqLw0KPj4gKyAgICBP UFRHUk9VUF9OT05FLCAvKiBvcHRpbmZvX2ZsYWdzICovDQo+PiArICAgIFRW X1RSRUVfUEFUSF9TUExJVCwgLyogdHZfaWQgKi8NCj4+ICsgICAgUFJPUF9z c2EsIC8qIHByb3BlcnRpZXNfcmVxdWlyZWQgKi8NCj4+ICsgICAgMCwgLyog cHJvcGVydGllc19wcm92aWRlZCAqLw0KPj4gKyAgICAwLCAvKiBwcm9wZXJ0 aWVzX2Rlc3Ryb3llZCAqLw0KPj4gKyAgICAwLCAvKiB0b2RvX2ZsYWdzX3N0 YXJ0ICovDQo+PiArICAgICggVE9ET19jbGVhbnVwX2NmZyB8IFRPRE9fdXBk YXRlX3NzYSApLCAvKiB0b2RvX2ZsYWdzX2ZpbmlzaCAqLyANCj4+ICt9Ow0K Pj4gKw0KPj4gK2NsYXNzIHBhc3NfcGF0aF9zcGxpdCA6IHB1YmxpYyBnaW1w bGVfb3B0X3Bhc3Mgew0KPj4gKyAgIHB1YmxpYzoNCj4+ICsgICAgcGFzc19w YXRoX3NwbGl0IChnY2M6OmNvbnRleHQgKmN0eHQpDQo+PiArICAgICAgOiBn aW1wbGVfb3B0X3Bhc3MgKHBhc3NfZGF0YV9wYXRoX3NwbGl0LCBjdHh0KQ0K Pj4gKyAgICB7fQ0KPj4gKw0KPj4gKyAgIC8qIG9wdF9wYXNzIG1ldGhvZHM6 ICovDQo+PiArICAgb3B0X3Bhc3MgKiBjbG9uZSAoKSB7IHJldHVybiBuZXcg cGFzc19wYXRoX3NwbGl0IChtX2N0eHQpOyB9DQo+PiArICAgdmlydHVhbCBi b29sIGdhdGUgKGZ1bmN0aW9uICopIHsgcmV0dXJuIGZsYWdfdHJlZV9wYXRo X3NwbGl0ICE9IDA7IH0NCj4+ICsgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBl eGVjdXRlIChmdW5jdGlvbiAqKSB7IHJldHVybiANCj4+ICsgZXhlY3V0ZV9w YXRoX3NwbGl0ICgpOyB9DQo+PiArDQo+PiArfTsgLy8gY2xhc3MgcGFzc19w YXRoX3NwbGl0DQo+PiArDQo+PiArfSAvLyBhbm9uIG5hbWVzcGFjZQ0KPj4g Kw0KPj4gK2dpbXBsZV9vcHRfcGFzcyAqDQo+PiArbWFrZV9wYXNzX3BhdGhf c3BsaXQgKGdjYzo6Y29udGV4dCAqY3R4dCkgew0KPj4gKyAgcmV0dXJuIG5l dyBwYXNzX3BhdGhfc3BsaXQgKGN0eHQpOyB9DQo+PiAtLQ0KPj4gMS44LjIu MQ0KPj4NCj4+IFRoYW5rcyAmIFJlZ2FyZHMNCj4+IEFqaXQNCg==