From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8F4CD42BEF; Wed, 31 May 2023 10:20:39 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1BA9740ED7; Wed, 31 May 2023 10:20:39 +0200 (CEST) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mails.dpdk.org (Postfix) with ESMTP id 05D9B40A82 for ; Wed, 31 May 2023 10:20:31 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1685521234; x=1717057234; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=b5Pzdv72l0JMFatqqV+zDEuCLDxLgoEodpMtssHNbo0=; b=Ebn6ijH7sYPHEyLOYsgXjjMC4qEYg3vc3Jy279CTI3iQLSIjTBqt2BZs ixd3r9L429qIRIUtwuKb/9mgZ0ZWENragN53sH+2ChYunIxt+2aeSivCL 49VL8nzEH3DY5Js+2olY5bblpVqARrSYxeqbQTxXdmp0nwpMSVSiQEeSc B1YDqPA9Oyv5S8zNURNbc4L0sslA6DXcHBYLCMVCwWtfi0Zf4fv5PkGLa kd6fngO5FRBHVV+4gEaishPDfrGqWqW+gJgiLaoQLSobd0bQRDve2Q7Ik CabW7MjdEBTDu5MwZ5WJG+Ns+juFJOJxPORaSltpCmCND6aHZU7wVeN9W A==; X-IronPort-AV: E=McAfee;i="6600,9927,10726"; a="334793587" X-IronPort-AV: E=Sophos;i="6.00,205,1681196400"; d="scan'208,217";a="334793587" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2023 01:20:30 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10726"; a="881085969" X-IronPort-AV: E=Sophos;i="6.00,205,1681196400"; d="scan'208,217";a="881085969" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orsmga005.jf.intel.com with ESMTP; 31 May 2023 01:20:21 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 31 May 2023 01:20:17 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 31 May 2023 01:20:16 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Wed, 31 May 2023 01:20:16 -0700 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (104.47.56.43) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Wed, 31 May 2023 01:20:16 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KYPUNUjLrESqdq2pFc/W3sz0yWuLKoMsguWqdVr1mzNbdCRVDMTFiQ7KzlzVCwUaMh7dhO+l/w+1+I+1Xcx2l9wspa7x25fD0YIG/tRLN6Vs27WOoX3XFGY3o/P/WF6EhLuJ1UIfMK2lY0fk6JpyBP6iuNfH2K+uq5KMpy2phd1sINMUmcB7NZHyHsdhzAa/HoCTcY81wgtar+6gbajY6NHpQJDECdXMYiuH6qZAw+aEpnyP+D+8RmNH2n56+UGBnLmJK5glxhNtHuo7QaEhKU9POoJ3+gqWCGyhudP9w7+7W0GIX9kJwqNI5nFoVFmS4Hkb7lMXv86NsFR1A4L1Zg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=b5Pzdv72l0JMFatqqV+zDEuCLDxLgoEodpMtssHNbo0=; b=eErN9L/qBFp/aE+gEjN6mDQhq+4PqCsjqAfAK4EXRd/AGXGyR8l+Z0OWzPX6WhALLEE4fn+OqMmSLFIv0PKCUAvGlc8xhy3DCGyU41nyzvRNuQYuHxXDg5pbbBx6MHld/5BbQOHugrrVhf6KPV1JyAOtt9HVBuxD0l1kVaN/SqPg+Pd5DFVSxgw3xHY4bnT5zwOpwYUilBmvxmKeq6+eRC8SSBa8U/goIx4i5FejzwbSp5LAuHZjxAJH8xFHVHQtFCvaw04Up1ptlTvC6nZ/q1PorRqIyz9XBwR7THE/a5frO2ZUkPXQdI2swcfJdUTJdcr3AjMEVBlen0hOzauw4g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from CY5PR11MB6487.namprd11.prod.outlook.com (2603:10b6:930:31::17) by DM4PR11MB5407.namprd11.prod.outlook.com (2603:10b6:5:396::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.23; Wed, 31 May 2023 08:20:13 +0000 Received: from CY5PR11MB6487.namprd11.prod.outlook.com ([fe80::6dae:8e03:4c29:4143]) by CY5PR11MB6487.namprd11.prod.outlook.com ([fe80::6dae:8e03:4c29:4143%5]) with mapi id 15.20.6433.022; Wed, 31 May 2023 08:20:13 +0000 From: "Hu, Jiayu" To: kumaraparameshwaran rathinavel CC: "dev@dpdk.org" Subject: RE: [PATCH v2] gro : ipv6 changes to support GRO for TCP/ipv6 Thread-Topic: [PATCH v2] gro : ipv6 changes to support GRO for TCP/ipv6 Thread-Index: AQHY5K/jbz58PLF/HkSmDFlYkOwCka9XJyOQgAbA+4CADkUCgIAJNxEg Date: Wed, 31 May 2023 08:20:12 +0000 Message-ID: References: <20221020180717.47036-1-kumaraparmesh92@gmail.com> <20221020181425.48006-1-kumaraparmesh92@gmail.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CY5PR11MB6487:EE_|DM4PR11MB5407:EE_ x-ms-office365-filtering-correlation-id: e24da068-c7da-4d7b-4e43-08db61afdb39 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: vJETMOAPloB9Dy9dNJ8aZii7QEhBE+nVnLoBf8v2OEO/crqjyZG4R/1FTdgc0r4OYpo+dtW9kzdaaoWx9BHA0Tnffj5jEE+gLh5UTsVwxi6I2X+/5ZBMjV2tfI3GH2DNEx9tVynVnn9gbfWmI3plzMaW1e/vtpFy+UqjpC02tAtjR3VrWGMVHpdMazbkkH7dueiwYCzCq5+pW/seEVUgDWzYPO115Nh+rttW3CYDmboJydZduc8OJ8+SHk16Se6TjUNMsv2pfzlAKRE9nUMaBUvtFIQFi0kZQ1iTTeLW3r8C3oVgpvDtpf3OckIUT9Mhp9ndA5N0kpTYO2FAoakGtUfQSJCqjDzQ/n3QUfin2jYj1GfY5t4SDDSubeNUjPoYfufdlGsJlcL9ggv/kyD4vLOlnaYl88bDeVw2X5okWm2feRbzigEtHws5TMfvpbF9oHmSZbd5BPPhpah8C9MvWX3vdTRtO3hVB9RmT6IOE72XiZsqIZPd7OM9Li2WiOYcA2KjTDbR2eHMGIHOQzzZwkgLILRYFuvVwNN0DmAR0YKBjzdOKJhU/JqUQKC3Tjvmt8w0KI5s+kWMBPBc7xDPzEayXqb+aOZD2IssMoh73+wDhXTkKESZGMCE9Tf4+B7R x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CY5PR11MB6487.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(396003)(346002)(39860400002)(366004)(376002)(136003)(451199021)(6506007)(478600001)(7696005)(86362001)(83380400001)(38070700005)(33656002)(6916009)(30864003)(9686003)(82960400001)(71200400001)(53546011)(186003)(2906002)(26005)(55016003)(122000001)(38100700002)(66946007)(4326008)(5660300002)(76116006)(9326002)(8936002)(8676002)(316002)(64756008)(66476007)(66556008)(52536014)(41300700001)(66446008)(579004)(559001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RHVFVkVMWUpJdGRzSk5SY21IeWR6T0VZb0pQZkdqaU8wdjRQWTRVZ0pvY1Ux?= =?utf-8?B?T3l1ZEZidHlXR3M1S29RY3BZUXdSTElNTlpFeGVoSjZVS1R6YWswN1lEZ29D?= =?utf-8?B?SlplOUVMUkdkK0pvdFhjbUpMVDhFUVNBZW1CN2JMQlhkWHdESUFVWTZSQVZw?= =?utf-8?B?YnF1MXlRdm80WS8rZ3dtRVFJUVlNdE5uRHJQU095NVJqUHEwTzAxWDVWWCtQ?= =?utf-8?B?Y0NuSXdORGowRWV5N0dkNVpXNmVMSGoyRjFDUWlMUEhxL3RwZS8zK1liazZW?= =?utf-8?B?cnZLUTJpK3gzOFM5NEdETjRONW5ybEQ5b21NcWVtRFErbFBMRm0rSWpDTTJm?= =?utf-8?B?NXc1dXEwK1RLOEJTRlFNNVdncEJNenI0M0w3enBPMkt1Tm5sZDAwTXhBVzNL?= =?utf-8?B?MTBvTjM1NFJGdlc0cm01MTNZbDRLS1ArTEZIOUxHZGhRRHRPKzJ5cFhpTDlG?= =?utf-8?B?N1licy8xTzlaeE9JWWZTVXZ0d3FFa1dObjZaSDRvcWhvWTJObkZqeWhBT3NT?= =?utf-8?B?MjJWRGVSbGM3alJFcGhBNnVqano2djA2LzRJUnpWNUNCVTVFWUdwOCtkWFh0?= =?utf-8?B?Q0xrZjBVUmRaY09VVVRLSUhxdyt6TDN3SFV4TVlHYTNhTG1wMjhmbTJDSys2?= =?utf-8?B?Zk1NZEhRVXVSNWZaS1JzL0lNVTUyaTJSNUR3TE1peWNLWkJoK1JCSEI1cWNp?= =?utf-8?B?ZXBPQjdUdFdGU0tDcnhONGRaUjdkMng0djhSci9FOEszMThBM2xwL2dvMmti?= =?utf-8?B?Q0grSDBKMlAvTldpeGwwN1NZZXdNRFk0OFcwNnJ4bHd3U0xKN2lUN0NjMXdl?= =?utf-8?B?NU1XNHJwemxWS29jY09pN2MrcFV5MWUrRzRBVG50WjlKcDBGUGdaSTZYWkFS?= =?utf-8?B?SHMzL1MrdXhrM012Vm1lVW9xQnFlRENKK2grL2cwaWU3NEJCOFpNblpheHRU?= =?utf-8?B?K0cxMmJlSS84bGM2djRhdlBCRWRFSzFLNFFOQ0RnbzIxUnI3WEphRFJHZ1d0?= =?utf-8?B?QkpmeXhxL1VtWU4wVDRRYmpaYXNuVFpoMjUzRmk1cGE2UytwY0J6bVZqZUM2?= =?utf-8?B?SCs1NzloR1NXVG9CQ2tKYTBYWXVWbWd3TFUyd2lrZTlYMHhMM0d5WU9qYzFs?= =?utf-8?B?Y05zdU40SEF3OGFYWERhNEc1bWl5elkwS1FSTHJXRktLTkVHNVFlYXkzWWsz?= =?utf-8?B?TExQSDE4TFlLMkhnYm1CUGxpN2RWbGpLckd5RFFBWU9ZRUhwd3NOcU1EOHpW?= =?utf-8?B?RDYxVkdXNzJaWmNubFd3ZGUxOENPYkpFNDhvVEp1aFlTS1o3bU1iK3ZmT3Fk?= =?utf-8?B?b3RQZUdUcTdOQTE1ZVVCZ1FkZnFmNzVPMU9xcTZHSmtLeStZYTg0SE9tMWhw?= =?utf-8?B?SnU3c3pJblg3S1JIZit6R0NSWmQ2aXdBOS91RmhWcSt2S2xYbmY2azQwNUpa?= =?utf-8?B?UHdzVTRqd2tMdFR6L1c4b2trN2tla1hnYlNLUXBjcnZYNmFPb1NaVWN1ZU9V?= =?utf-8?B?V1doNHJSVU00QldRd0x0T0UxOWtWeVFyQmNyT0lZZlpKakM3YnlCREcyMHNh?= =?utf-8?B?UFBRT1Y3WWU1WGxFUThCL0xCQ05NcXJrUTVXZjFhN2ZFV0ZSUGI2WHp3ZVNF?= =?utf-8?B?K00rOXh4OXlUS3FBcWFsY1E1b1l2WTI1dmtvaWtXeTFIS3FsWG90ckRWK0hh?= =?utf-8?B?cFZmS2J2NXg5SnVHRzBiR2lwa2huQkMzYTlIcWhzaEZOUDY4MWVCWXBZbWpM?= =?utf-8?B?ZVRaMnlDMUJ0YzluQk84VnI3ZFdPdlA1OThOcHBneEFCWU10ZGd1cWN0cXdR?= =?utf-8?B?TWNtSDZjZEY5RDcrbjlzS2J4UW9FKzRnVG45ZXBmRVZDWVRqNlZlRkpjOHB4?= =?utf-8?B?UnpSSlB3Vk51S1dMRzZOSWU0amlUT0N5RnZwV3FuU2R0YVJZOEVJdEptaFBV?= =?utf-8?B?dkRDTjZRc2c5a3dzVnBuUklxUllJMVI0a2hhUk1oTkFxMHdCQlVkczN6c1JW?= =?utf-8?B?SzNmdzlDcmtXUmNWa1FWT09tM1d4WHZGbjlDeFlSbkV0Q3JIS3JOMWc4M2ND?= =?utf-8?B?SllvTUU3aFl5ajJZaXpqZDFzTmtRWlM0allZV3ppUTN3OWtzZnlvS1lVa3Rp?= =?utf-8?Q?QtC11TXkIolWSMvSQYAWvo0CT?= Content-Type: multipart/alternative; boundary="_000_CY5PR11MB64870A129DC1981861C7D14392489CY5PR11MB6487namp_" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY5PR11MB6487.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e24da068-c7da-4d7b-4e43-08db61afdb39 X-MS-Exchange-CrossTenant-originalarrivaltime: 31 May 2023 08:20:12.7821 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: RgQGZcBmuOcnvibcaX77jAsot2Vl2aI5jW4QKErGG7kQ9iZuO7OZT4AvvEjNN6yc1GDojh4XYczhEmNVsP/IBA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB5407 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org --_000_CY5PR11MB64870A129DC1981861C7D14392489CY5PR11MB6487namp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgS3VtYXJhLA0KDQpGb3IgdGhlIGlkZWEgeW91IHByb3Bvc2VkLCBpdOKAmXMgYmV0dGVyIHRv IHNlbmQgdGhlIHBhdGNoIGFuZCBJIGNhbiByZXZpZXcgbGF0ZXIuDQoNClRoYW5rcywNCkppYXl1 DQoNCkZyb206IGt1bWFyYXBhcmFtZXNod2FyYW4gcmF0aGluYXZlbCA8a3VtYXJhcGFyYW1lc2g5 MkBnbWFpbC5jb20+DQpTZW50OiBUaHVyc2RheSwgTWF5IDI1LCAyMDIzIDc6MjMgUE0NClRvOiBI dSwgSmlheXUgPGppYXl1Lmh1QGludGVsLmNvbT4NCkNjOiBkZXZAZHBkay5vcmcNClN1YmplY3Q6 IFJlOiBbUEFUQ0ggdjJdIGdybyA6IGlwdjYgY2hhbmdlcyB0byBzdXBwb3J0IEdSTyBmb3IgVENQ L2lwdjYNCg0KDQpPbiBUdWUsIE1heSAxNiwgMjAyMyBhdCAyOjU44oCvUE0ga3VtYXJhcGFyYW1l c2h3YXJhbiByYXRoaW5hdmVsIDxrdW1hcmFwYXJhbWVzaDkyQGdtYWlsLmNvbTxtYWlsdG86a3Vt YXJhcGFyYW1lc2g5MkBnbWFpbC5jb20+PiB3cm90ZToNCg0KDQpPbiBGcmksIE1heSAxMiwgMjAy MyBhdCA4OjE34oCvQU0gSHUsIEppYXl1IDxqaWF5dS5odUBpbnRlbC5jb208bWFpbHRvOmppYXl1 Lmh1QGludGVsLmNvbT4+IHdyb3RlOg0KSGkgS3VtYXIsDQoNCkZvciBUQ1AvSVB2NCBhbmQgVENQ L0lQdjYsIHRoZSBUQ1AgbGF5ZXIgaXMgdGhlIHNhbWUgYW5kIHRoZSBkaWZmZXJlbmNlIGlzDQp0 aGUgSVAgbGF5ZXIuIFNvIHRoZSBjb2RlIHVzZWQgZm9yIFRDUCBsYXllciBuZWVkcyB0byBiZSBz aGFyZWQgYW1vbmcgZ3JvX3RjcDYuYw0KYW5kIGdyb190Y3A0LmMuIEJ1dCB0aGVyZSBhcmUgIHRv byBtdWNoIGNvZGUgZHVwbGljYXRpb24gaW4gZ3JvX3RjcDQuYyBhbmQgZ3JvX3RjcDYuYw0KaW4g Y3VycmVudCBpbXBsZW1lbnRhdGlvbi4NCg0KU3VyZSwgd2lsbCBkbyBpdC4gSSBoYWQgZm9sbG93 ZWQgdGhlIHNhbWUgdGhhdCB3YXMgc2ltaWxhciB0byB3aGF0IHdhcyBkb25lIGluIGdyb190Y3A0 LmMgYW5kIGdyb192eGxhbl90Y3A0LmMuIEV2ZW50aG91Z2ggdGhlIFRDUCBjb3VsZCBoYXZlIGJl ZW4gcmV1c2VkIGZvciB2eGxhbiwgd2UgaGFkIGNvZGUgZHVwbGljYXRpb24uIEkgYXNzdW1lZCB0 aGF0IHRoaXMgd2FzIGJldHRlciBpbiB0ZXJtcyBvZiBwZXJmb3JtYW5jZSBldGMuDQoNCiAgSSBh bSB0aGlua2luZyB0d28gaGF2ZSB0d28gZnVuY3Rpb25zIGdyb190Y3A0X3JlYXNzZW1ibGUgYW5k IGdyb190Y3A2X3JlYXNzZW1ibGUgd2hpY2ggd291bGQgcGVyZm9ybSB0aGUgdmFsaWRhdGlvbnMg Zm9yIHRoZSByZXNwZWN0aXZlIElQIHR5cGVzLiBUaGUgR1JPIHRhYmxlIGlzIGRpZmZlcmVudCBm b3IgVjQgYW5kIFY2IGJ1dCB0aGUgaXRtZXMgYXJyYXkgaW4gdGhlIGdybyB0YWJsZSBpcyBjb21t b24gdG8gYm90aCBWNCBhbmQgVjYgYW5kIGhlbmNlIHdlIGNhbiBtb3ZlIGluc2VydF9pdGVtIGFu ZCBkZWxldGVfaXRlbSB0byBncm9fdGNwLmMvaCBmaWxlLiBJbnRyb2R1Y2UgYSBuZXcgZnVuY3Rp b24gZ3JvX3RjcF9yZWFzc2VtYmxlIHdoaWNoIHdvdWxkIHBlcmZvcm0gdGhlIGxvZ2ljIG9mIGxv b2t1cC9jcmVhdGUvbWVyZ2Ugb3BlcmF0aW9ucy4gU2luY2UgdGhlIHRhYmxlIGFuZCB0aGUga2V5 IHdvdWxkIGJlIGRpZmZlcmVudCBmb3IgVjQvVjYgaW50cm9kdWNlIGEgbmV3IHN0cnVjdHVyZSB3 aGljaCB3b3VsZCBob2xkIHRoZSBsb29rdXAvY3JlYXRlIGZsb3cgZnVuY3Rpb24gcG9pbnRlcnMg Zm9yIGVhY2ggb2YgdGhlIElQIHR5cGUuIFRoaXMgd2F5IHdlIHdvdWxkIHJlZHVjZSB0aGUgY29k ZSBkdXBsaWNhdGlvbiBpbiBncm9fdGNwNF9yZWFzc21lYmxlIGFuZCBncm9fdGNwNl9yZWFzc2Vt YmxlLiBQbGVhZSBsZXQgbWUga25vdyB5b3VyIHRob3VnaHRzLiBXZSBjYW4gZ2V0IG9uIGEgY2Fs bCBpZiByZXF1aXJlIHRvIGRpc2N1c3MgZnVydGhlci4NCg0KRm9yIGV4YW1wbGUsIHN0cnVjdCB0 Y3A2X2Zsb3dfa2V5IGFuZCBzdHJ1Y3QgdGNwNF9mbG93X2tleSBzaGFyZSBtb3N0IG9mIGZpZWxk cywgZXhjZXB0DQp0aGUgSVAgYWRkcmVzcyB0eXBlLiBJdCdzIGJldHRlciB0byBoYXZlIGEgY29t bW9uIFRDUCBmbG93IGtleSBzdHJ1Y3R1cmUgaW4gZ3JvX3RjcC5oLiBJbg0KZ3JvX3RjcDQuaCBh bmQgZ3JvX3RjcDYuaCwgd2UgaW1wbGVtZW50IHRjcDQgYW5kIHRjcDYgZmxvdyBrZXkgc3RydWN0 dXJlcyB3aXRoIHVzaW5nIHRoZQ0KY29tbW9uIHN0cnVjdHVyZS4NClRoYW5rcywNCkppYXl1DQoN Cj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogS3VtYXJhIFBhcmFtZXNod2Fy YW4gPGt1bWFyYXBhcmFtZXNoOTJAZ21haWwuY29tPG1haWx0bzprdW1hcmFwYXJhbWVzaDkyQGdt YWlsLmNvbT4+DQo+IFNlbnQ6IEZyaWRheSwgT2N0b2JlciAyMSwgMjAyMiAyOjE0IEFNDQo+IFRv OiBIdSwgSmlheXUgPGppYXl1Lmh1QGludGVsLmNvbTxtYWlsdG86amlheXUuaHVAaW50ZWwuY29t Pj4NCj4gQ2M6IGRldkBkcGRrLm9yZzxtYWlsdG86ZGV2QGRwZGsub3JnPjsgS3VtYXJhIFBhcmFt ZXNod2FyYW4NCj4gPGt1bWFyYXBhcmFtZXNoOTJAZ21haWwuY29tPG1haWx0bzprdW1hcmFwYXJh bWVzaDkyQGdtYWlsLmNvbT4+DQo+IFN1YmplY3Q6IFtQQVRDSCB2Ml0gZ3JvIDogaXB2NiBjaGFu Z2VzIHRvIHN1cHBvcnQgR1JPIGZvciBUQ1AvaXB2Ng0KPg0KPiBGcm9tOiBLdW1hcmEgUGFyYW1l c2h3YXJhbiA8a3VtYXJhcGFyYW1lc2g5MkBnbWFpbC5jb208bWFpbHRvOmt1bWFyYXBhcmFtZXNo OTJAZ21haWwuY29tPj4NCj4NCj4gVGhlIHBhdGNoIGFkZHMgR1JPIHN1cHBvcnQgZm9yIFRDUC9p cHY2IHBhY2tldHMuIFRoaXMgZG9lcyBub3QgaW5jbHVkZSB0aGUNCj4gc3VwcG9ydCBmb3Igdnhs YW4sIHVkcCBpcHY2IHBhY2tldHMuDQo+DQo+IFNpZ25lZC1vZmYtYnk6IEt1bWFyYSBQYXJhbWVz aHdhcmFuIDxrdW1hcmFwYXJhbWVzaDkyQGdtYWlsLmNvbTxtYWlsdG86a3VtYXJhcGFyYW1lc2g5 MkBnbWFpbC5jb20+Pg0KPiAtLS0NCj4gdjE6DQo+ICAgICAgICogQ2hhbmdlcyB0byBzdXBwb3J0 IEdSTyBmb3IgVENQL2lwdjYgcGFja2V0cy4gVGhpcyBkb2VzIG5vdA0KPiBpbmNsdWRlDQo+ICAg ICAgICAgdnhsYW4gY2hhbmdlcy4NCj4gICAgICAgKiBUaGUgR1JPIGlzIHBlcmZvcm1lZCBvbmx5 IGZvciBpcHY2IHBhY2tldHMgdGhhdCBkb2VzIG5vdCBjb250YWluDQo+ICAgICAgICBleHRlbnNp b24gaGVhZGVycy4NCj4gICAgICAgKiBUaGUgbG9naWMgZm9yIHRoZSBUQ1AgY29hbGVzY2luZyBy ZW1haW5zIHRoZSBzYW1lLCBpbiBpcHY2IGhlYWRlcg0KPiAgICAgICAgIHRoZSBzb3VyY2UgYWRk cmVzcywgZGVzdGluYXRpb24gYWRkcmVzcywgZmxvdyBsYWJlbCwgdmVyc2lvbiBmaWVsZHMNCj4g ICAgICAgICBhcmUgZXhwZWN0ZWQgdG8gYmUgdGhlIHNhbWUuDQo+ICAgICAgICogUmUtb3JnYW5p c2VkIHRoZSBjb2RlIHRvIHJldXNlIGNlcnRhaW4gdGNwIGZ1bmN0aW9ucyBmb3IgYm90aCBpcHY0 DQo+IGFuZA0KPiAgICAgICAgIGlwdjYgZmxvd3MuDQo+IHYyOg0KPiAgICAgICAqIEZpeCBjb21t ZW50cyBpbiBncm9fdGNwNi5oIGhlYWRlciBmaWxlLg0KPg0KPiAgbGliL2dyby9ncm9fdGNwLmgg ICAgICAgIHwgMTU1ICsrKysrKysrKysrKysrKysNCj4gIGxpYi9ncm8vZ3JvX3RjcDQuYyAgICAg ICB8ICAgNyArLQ0KPiAgbGliL2dyby9ncm9fdGNwNC5oICAgICAgIHwgMTUyICstLS0tLS0tLS0t LS0tLQ0KPiAgbGliL2dyby9ncm9fdGNwNi5jICAgICAgIHwgMzg3DQo+ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAgbGliL2dyby9ncm9fdGNwNi5oICAgICAgIHwg MTUwICsrKysrKysrKysrKysrKw0KPiAgbGliL2dyby9ncm9fdnhsYW5fdGNwNC5jIHwgICAzICst DQo+ICBsaWIvZ3JvL2dyb192eGxhbl90Y3A0LmggfCAgIDMgKy0NCj4gIGxpYi9ncm8vbWVzb24u YnVpbGQgICAgICB8ICAgMSArDQo+ICBsaWIvZ3JvL3J0ZV9ncm8uYyAgICAgICAgfCAgODMgKysr KysrKy0tDQo+ICBsaWIvZ3JvL3J0ZV9ncm8uaCAgICAgICAgfCAgIDMgKw0KPiAgMTAgZmlsZXMg Y2hhbmdlZCwgNzc0IGluc2VydGlvbnMoKyksIDE3MCBkZWxldGlvbnMoLSkgIGNyZWF0ZSBtb2Rl IDEwMDY0NA0KPiBsaWIvZ3JvL2dyb190Y3AuaCAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9ncm8v Z3JvX3RjcDYuYyAgY3JlYXRlIG1vZGUNCj4gMTAwNjQ0IGxpYi9ncm8vZ3JvX3RjcDYuaA0KPg0K PiBkaWZmIC0tZ2l0IGEvbGliL2dyby9ncm9fdGNwLmggYi9saWIvZ3JvL2dyb190Y3AuaCBuZXcg ZmlsZSBtb2RlIDEwMDY0NCBpbmRleA0KPiAwMDAwMDAwMDAwLi5jNWQyNDhhMDIyDQo+IC0tLSAv ZGV2L251bGwNCj4gKysrIGIvbGliL2dyby9ncm9fdGNwLmgNCj4gQEAgLTAsMCArMSwxNTUgQEAN Cj4gKyNpZm5kZWYgX0dST19UQ1BfSF8NCj4gKyNkZWZpbmUgX0dST19UQ1BfSF8NCj4gKw0KPiAr I2luY2x1ZGUgPHJ0ZV90Y3AuaD4NCj4gKw0KPiArLyoNCj4gKyAqIFRoZSBtYXggbGVuZ3RoIG9m IGEgSVB2NCBwYWNrZXQsIHdoaWNoIGluY2x1ZGVzIHRoZSBsZW5ndGggb2YgdGhlIEwzDQo+ICsg KiBoZWFkZXIsIHRoZSBMNCBoZWFkZXIgYW5kIHRoZSBkYXRhIHBheWxvYWQuDQo+ICsgKi8NCj4g KyNkZWZpbmUgTUFYX0lQX1BLVF9MRU5HVEggVUlOVDE2X01BWA0KPiArDQo+ICsvKiBUaGUgbWF4 aW11bSBUQ1AgaGVhZGVyIGxlbmd0aCAqLw0KPiArI2RlZmluZSBNQVhfVENQX0hMRU4gNjANCj4g KyNkZWZpbmUgSU5WQUxJRF9UQ1BfSERSTEVOKGxlbikgXA0KPiArICAgICAoKChsZW4pIDwgc2l6 ZW9mKHN0cnVjdCBydGVfdGNwX2hkcikpIHx8ICgobGVuKSA+IE1BWF9UQ1BfSExFTikpDQo+ICsN Cj4gK3N0cnVjdCBncm9fdGNwX2l0ZW0gew0KPiArICAgICAvKg0KPiArICAgICAgKiBUaGUgZmly c3QgTUJVRiBzZWdtZW50IG9mIHRoZSBwYWNrZXQuIElmIHRoZSB2YWx1ZQ0KPiArICAgICAgKiBp cyBOVUxMLCBpdCBtZWFucyB0aGUgaXRlbSBpcyBlbXB0eS4NCj4gKyAgICAgICovDQo+ICsgICAg IHN0cnVjdCBydGVfbWJ1ZiAqZmlyc3RzZWc7DQo+ICsgICAgIC8qIFRoZSBsYXN0IE1CVUYgc2Vn bWVudCBvZiB0aGUgcGFja2V0ICovDQo+ICsgICAgIHN0cnVjdCBydGVfbWJ1ZiAqbGFzdHNlZzsN Cj4gKyAgICAgLyoNCj4gKyAgICAgICogVGhlIHRpbWUgd2hlbiB0aGUgZmlyc3QgcGFja2V0IGlz IGluc2VydGVkIGludG8gdGhlIHRhYmxlLg0KPiArICAgICAgKiBUaGlzIHZhbHVlIHdvbid0IGJl IHVwZGF0ZWQsIGV2ZW4gaWYgdGhlIHBhY2tldCBpcyBtZXJnZWQNCj4gKyAgICAgICogd2l0aCBv dGhlciBwYWNrZXRzLg0KPiArICAgICAgKi8NCj4gKyAgICAgdWludDY0X3Qgc3RhcnRfdGltZTsN Cj4gKyAgICAgLyoNCj4gKyAgICAgICogbmV4dF9wa3RfaWR4IGlzIHVzZWQgdG8gY2hhaW4gdGhl IHBhY2tldHMgdGhhdA0KPiArICAgICAgKiBhcmUgaW4gdGhlIHNhbWUgZmxvdyBidXQgY2FuJ3Qg YmUgbWVyZ2VkIHRvZ2V0aGVyDQo+ICsgICAgICAqIChlLmcuIGNhdXNlZCBieSBwYWNrZXQgcmVv cmRlcmluZykuDQo+ICsgICAgICAqLw0KPiArICAgICB1aW50MzJfdCBuZXh0X3BrdF9pZHg7DQo+ ICsgICAgIC8qIFRDUCBzZXF1ZW5jZSBudW1iZXIgb2YgdGhlIHBhY2tldCAqLw0KPiArICAgICB1 aW50MzJfdCBzZW50X3NlcTsNCj4gKyAgICAgLyogSVB2NCBJRCBvZiB0aGUgcGFja2V0ICovDQo+ ICsgICAgIHVpbnQxNl90IGlwX2lkOw0KPiArICAgICAvKiB0aGUgbnVtYmVyIG9mIG1lcmdlZCBw YWNrZXRzICovDQo+ICsgICAgIHVpbnQxNl90IG5iX21lcmdlZDsNCj4gKyAgICAgLyogSW5kaWNh dGUgaWYgSVB2NCBJRCBjYW4gYmUgaWdub3JlZCAqLw0KPiArICAgICB1aW50OF90IGlzX2F0b21p YzsNCj4gK307DQo+ICsNCj4gKy8qDQo+ICsgKiBNZXJnZSB0d28gVENQIHBhY2tldHMgd2l0aG91 dCB1cGRhdGluZyBjaGVja3N1bXMuDQo+ICsgKiBJZiBjbXAgaXMgbGFyZ2VyIHRoYW4gMCwgYXBw ZW5kIHRoZSBuZXcgcGFja2V0IHRvIHRoZQ0KPiArICogb3JpZ2luYWwgcGFja2V0LiBPdGhlcndp c2UsIHByZS1wZW5kIHRoZSBuZXcgcGFja2V0IHRvDQo+ICsgKiB0aGUgb3JpZ2luYWwgcGFja2V0 Lg0KPiArICovDQo+ICtzdGF0aWMgaW5saW5lIGludA0KPiArbWVyZ2VfdHdvX3RjcF9wYWNrZXRz KHN0cnVjdCBncm9fdGNwX2l0ZW0gKml0ZW0sDQo+ICsgICAgICAgICAgICAgc3RydWN0IHJ0ZV9t YnVmICpwa3QsDQo+ICsgICAgICAgICAgICAgaW50IGNtcCwNCj4gKyAgICAgICAgICAgICB1aW50 MzJfdCBzZW50X3NlcSwNCj4gKyAgICAgICAgICAgICB1aW50MTZfdCBpcF9pZCwNCj4gKyAgICAg ICAgICAgICB1aW50MTZfdCBsMl9vZmZzZXQpDQo+ICt7DQo+ICsgICAgIHN0cnVjdCBydGVfbWJ1 ZiAqcGt0X2hlYWQsICpwa3RfdGFpbCwgKmxhc3RzZWc7DQo+ICsgICAgIHVpbnQxNl90IGhkcl9s ZW4sIGwyX2xlbjsNCj4gKw0KPiArICAgICBpZiAoY21wID4gMCkgew0KPiArICAgICAgICAgICAg IHBrdF9oZWFkID0gaXRlbS0+Zmlyc3RzZWc7DQo+ICsgICAgICAgICAgICAgcGt0X3RhaWwgPSBw a3Q7DQo+ICsgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICAgcGt0X2hlYWQgPSBwa3Q7DQo+ ICsgICAgICAgICAgICAgcGt0X3RhaWwgPSBpdGVtLT5maXJzdHNlZzsNCj4gKyAgICAgfQ0KPiAr DQo+ICsgICAgIC8qIGNoZWNrIGlmIHRoZSBJUHY0IHBhY2tldCBsZW5ndGggaXMgZ3JlYXRlciB0 aGFuIHRoZSBtYXggdmFsdWUgKi8NCj4gKyAgICAgaGRyX2xlbiA9IGwyX29mZnNldCArIHBrdF9o ZWFkLT5sMl9sZW4gKyBwa3RfaGVhZC0+bDNfbGVuICsNCj4gKyAgICAgICAgICAgICBwa3RfaGVh ZC0+bDRfbGVuOw0KPiArICAgICBsMl9sZW4gPSBsMl9vZmZzZXQgPiAwID8gcGt0X2hlYWQtPm91 dGVyX2wyX2xlbiA6IHBrdF9oZWFkLT5sMl9sZW47DQo+ICsgICAgIGlmICh1bmxpa2VseShwa3Rf aGVhZC0+cGt0X2xlbiAtIGwyX2xlbiArIHBrdF90YWlsLT5wa3RfbGVuIC0NCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaGRyX2xlbiA+IE1BWF9JUF9QS1RfTEVOR1RIKSkNCj4gKyAg ICAgICAgICAgICByZXR1cm4gMDsNCj4gKw0KPiArICAgICAvKiByZW1vdmUgdGhlIHBhY2tldCBo ZWFkZXIgZm9yIHRoZSB0YWlsIHBhY2tldCAqLw0KPiArICAgICBydGVfcGt0bWJ1Zl9hZGoocGt0 X3RhaWwsIGhkcl9sZW4pOw0KPiArDQo+ICsgICAgIC8qIGNoYWluIHR3byBwYWNrZXRzIHRvZ2V0 aGVyICovDQo+ICsgICAgIGlmIChjbXAgPiAwKSB7DQo+ICsgICAgICAgICAgICAgaXRlbS0+bGFz dHNlZy0+bmV4dCA9IHBrdDsNCj4gKyAgICAgICAgICAgICBpdGVtLT5sYXN0c2VnID0gcnRlX3Br dG1idWZfbGFzdHNlZyhwa3QpOw0KPiArICAgICAgICAgICAgIC8qIHVwZGF0ZSBJUCBJRCB0byB0 aGUgbGFyZ2VyIHZhbHVlICovDQo+ICsgICAgICAgICAgICAgaXRlbS0+aXBfaWQgPSBpcF9pZDsN Cj4gKyAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgICBsYXN0c2VnID0gcnRlX3BrdG1idWZf bGFzdHNlZyhwa3QpOw0KPiArICAgICAgICAgICAgIGxhc3RzZWctPm5leHQgPSBpdGVtLT5maXJz dHNlZzsNCj4gKyAgICAgICAgICAgICBpdGVtLT5maXJzdHNlZyA9IHBrdDsNCj4gKyAgICAgICAg ICAgICAvKiB1cGRhdGUgc2VudF9zZXEgdG8gdGhlIHNtYWxsZXIgdmFsdWUgKi8NCj4gKyAgICAg ICAgICAgICBpdGVtLT5zZW50X3NlcSA9IHNlbnRfc2VxOw0KPiArICAgICAgICAgICAgIGl0ZW0t PmlwX2lkID0gaXBfaWQ7DQo+ICsgICAgIH0NCj4gKyAgICAgaXRlbS0+bmJfbWVyZ2VkKys7DQo+ ICsNCj4gKyAgICAgLyogdXBkYXRlIE1CVUYgbWV0YWRhdGEgZm9yIHRoZSBtZXJnZWQgcGFja2V0 ICovDQo+ICsgICAgIHBrdF9oZWFkLT5uYl9zZWdzICs9IHBrdF90YWlsLT5uYl9zZWdzOw0KPiAr ICAgICBwa3RfaGVhZC0+cGt0X2xlbiArPSBwa3RfdGFpbC0+cGt0X2xlbjsNCj4gKw0KPiArICAg ICByZXR1cm4gMTsNCj4gK30NCj4gKw0KPiArLyoNCj4gKyAqIENoZWNrIGlmIHR3byBUQ1AvSVB2 NCBwYWNrZXRzIGFyZSBuZWlnaGJvcnMuDQo+ICsgKi8NCj4gK3N0YXRpYyBpbmxpbmUgaW50DQo+ ICtjaGVja19zZXFfb3B0aW9uKHN0cnVjdCBncm9fdGNwX2l0ZW0gKml0ZW0sDQo+ICsgICAgICAg ICAgICAgc3RydWN0IHJ0ZV90Y3BfaGRyICp0Y3BoLA0KPiArICAgICAgICAgICAgIHVpbnQzMl90 IHNlbnRfc2VxLA0KPiArICAgICAgICAgICAgIHVpbnQxNl90IGlwX2lkLA0KPiArICAgICAgICAg ICAgIHVpbnQxNl90IHRjcF9obCwNCj4gKyAgICAgICAgICAgICB1aW50MTZfdCB0Y3BfZGwsDQo+ ICsgICAgICAgICAgICAgdWludDE2X3QgbDJfb2Zmc2V0LA0KPiArICAgICAgICAgICAgIHVpbnQ4 X3QgaXNfYXRvbWljKQ0KPiArew0KPiArICAgICBzdHJ1Y3QgcnRlX21idWYgKnBrdF9vcmlnID0g aXRlbS0+Zmlyc3RzZWc7DQo+ICsgICAgIGNoYXIgKmlwaF9vcmlnOw0KPiArICAgICBzdHJ1Y3Qg cnRlX3RjcF9oZHIgKnRjcGhfb3JpZzsNCj4gKyAgICAgdWludDE2X3QgbGVuLCB0Y3BfaGxfb3Jp ZzsNCj4gKw0KPiArICAgICBpcGhfb3JpZyA9IChjaGFyICopKHJ0ZV9wa3RtYnVmX210b2QocGt0 X29yaWcsIGNoYXIgKikgKw0KPiArICAgICAgICAgICAgICAgICAgICAgbDJfb2Zmc2V0ICsgcGt0 X29yaWctPmwyX2xlbik7DQo+ICsgICAgIHRjcGhfb3JpZyA9IChzdHJ1Y3QgcnRlX3RjcF9oZHIg KikoaXBoX29yaWcgKyBwa3Rfb3JpZy0+bDNfbGVuKTsNCj4gKyAgICAgdGNwX2hsX29yaWcgPSBw a3Rfb3JpZy0+bDRfbGVuOw0KPiArDQo+ICsgICAgIC8qIENoZWNrIGlmIFRDUCBvcHRpb24gZmll bGRzIGVxdWFsICovDQo+ICsgICAgIGxlbiA9IFJURV9NQVgodGNwX2hsLCB0Y3BfaGxfb3JpZykg LSBzaXplb2Yoc3RydWN0IHJ0ZV90Y3BfaGRyKTsNCj4gKyAgICAgaWYgKCh0Y3BfaGwgIT0gdGNw X2hsX29yaWcpIHx8ICgobGVuID4gMCkgJiYNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG1lbWNtcCh0Y3BoICsgMSwgdGNwaF9vcmlnICsgMSwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsZW4pICE9IDApKSkNCj4gKyAgICAgICAgICAgICByZXR1cm4g MDsNCj4gKw0KPiArICAgICAvKiBEb24ndCBtZXJnZSBwYWNrZXRzIHdob3NlIERGIGJpdHMgYXJl IGRpZmZlcmVudCAqLw0KPiArICAgICBpZiAodW5saWtlbHkoaXRlbS0+aXNfYXRvbWljIF4gaXNf YXRvbWljKSkNCj4gKyAgICAgICAgICAgICByZXR1cm4gMDsNCj4gKw0KPiArICAgICAvKiBjaGVj ayBpZiB0aGUgdHdvIHBhY2tldHMgYXJlIG5laWdoYm9ycyAqLw0KPiArICAgICBsZW4gPSBwa3Rf b3JpZy0+cGt0X2xlbiAtIGwyX29mZnNldCAtIHBrdF9vcmlnLT5sMl9sZW4gLQ0KPiArICAgICAg ICAgICAgIHBrdF9vcmlnLT5sM19sZW4gLSB0Y3BfaGxfb3JpZzsNCj4gKyAgICAgaWYgKChzZW50 X3NlcSA9PSBpdGVtLT5zZW50X3NlcSArIGxlbikgJiYgKGlzX2F0b21pYyB8fA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoaXBfaWQgPT0gaXRlbS0+aXBfaWQgKyAxKSkpDQo+ICsg ICAgICAgICAgICAgLyogYXBwZW5kIHRoZSBuZXcgcGFja2V0ICovDQo+ICsgICAgICAgICAgICAg cmV0dXJuIDE7DQo+ICsgICAgIGVsc2UgaWYgKChzZW50X3NlcSArIHRjcF9kbCA9PSBpdGVtLT5z ZW50X3NlcSkgJiYgKGlzX2F0b21pYyB8fA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoaXBfaWQgKyBpdGVtLT5uYl9tZXJnZWQgPT0gaXRlbS0+aXBfaWQpKSkNCj4gKyAgICAgICAg ICAgICAvKiBwcmUtcGVuZCB0aGUgbmV3IHBhY2tldCAqLw0KPiArICAgICAgICAgICAgIHJldHVy biAtMTsNCj4gKw0KPiArICAgICByZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArI2VuZGlmDQo+IGRp ZmYgLS1naXQgYS9saWIvZ3JvL2dyb190Y3A0LmMgYi9saWIvZ3JvL2dyb190Y3A0LmMgaW5kZXgN Cj4gOGY1ZTgwMDI1MC4uZWVhMmE3MmVjZCAxMDA2NDQNCj4gLS0tIGEvbGliL2dyby9ncm9fdGNw NC5jDQo+ICsrKyBiL2xpYi9ncm8vZ3JvX3RjcDQuYw0KPiBAQCAtNyw2ICs3LDcgQEANCj4gICNp bmNsdWRlIDxydGVfZXRoZGV2Lmg+DQo+DQo+ICAjaW5jbHVkZSAiZ3JvX3RjcDQuaCINCj4gKyNp bmNsdWRlICJncm9fdGNwLmgiDQo+DQo+ICB2b2lkICoNCj4gIGdyb190Y3A0X3RibF9jcmVhdGUo dWludDE2X3Qgc29ja2V0X2lkLCBAQCAtMzAsNyArMzEsNyBAQA0KPiBncm9fdGNwNF90YmxfY3Jl YXRlKHVpbnQxNl90IHNvY2tldF9pZCwNCj4gICAgICAgaWYgKHRibCA9PSBOVUxMKQ0KPiAgICAg ICAgICAgICAgIHJldHVybiBOVUxMOw0KPg0KPiAtICAgICBzaXplID0gc2l6ZW9mKHN0cnVjdCBn cm9fdGNwNF9pdGVtKSAqIGVudHJpZXNfbnVtOw0KPiArICAgICBzaXplID0gc2l6ZW9mKHN0cnVj dCBncm9fdGNwX2l0ZW0pICogZW50cmllc19udW07DQo+ICAgICAgIHRibC0+aXRlbXMgPSBydGVf em1hbGxvY19zb2NrZXQoX19mdW5jX18sDQo+ICAgICAgICAgICAgICAgICAgICAgICBzaXplLA0K PiAgICAgICAgICAgICAgICAgICAgICAgUlRFX0NBQ0hFX0xJTkVfU0laRSwNCj4gQEAgLTE3Nyw3 ICsxNzgsNyBAQCBpbnNlcnRfbmV3X2Zsb3coc3RydWN0IGdyb190Y3A0X3RibCAqdGJsLA0KPiAg ICogdXBkYXRlIHRoZSBwYWNrZXQgbGVuZ3RoIGZvciB0aGUgZmx1c2hlZCBwYWNrZXQuDQo+ICAg Ki8NCj4gIHN0YXRpYyBpbmxpbmUgdm9pZA0KPiAtdXBkYXRlX2hlYWRlcihzdHJ1Y3QgZ3JvX3Rj cDRfaXRlbSAqaXRlbSkNCj4gK3VwZGF0ZV9oZWFkZXIoc3RydWN0IGdyb190Y3BfaXRlbSAqaXRl bSkNCj4gIHsNCj4gICAgICAgc3RydWN0IHJ0ZV9pcHY0X2hkciAqaXB2NF9oZHI7DQo+ICAgICAg IHN0cnVjdCBydGVfbWJ1ZiAqcGt0ID0gaXRlbS0+Zmlyc3RzZWc7IEBAIC0zMDIsNyArMzAzLDcg QEANCj4gZ3JvX3RjcDRfcmVhc3NlbWJsZShzdHJ1Y3QgcnRlX21idWYgKnBrdCwNCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VudF9zZXEsIGlwX2lkLCBwa3QtPmw0X2xlbiwgdGNw X2RsLCAwLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19hdG9taWMpOw0KPiAg ICAgICAgICAgICAgIGlmIChjbXApIHsNCj4gLSAgICAgICAgICAgICAgICAgICAgIGlmIChtZXJn ZV90d29fdGNwNF9wYWNrZXRzKCYodGJsLT5pdGVtc1tjdXJfaWR4XSksDQo+ICsgICAgICAgICAg ICAgICAgICAgICBpZiAobWVyZ2VfdHdvX3RjcF9wYWNrZXRzKCYodGJsLT5pdGVtc1tjdXJfaWR4 XSksDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa3Qs IGNtcCwgc2VudF9zZXEsIGlwX2lkLCAwKSkNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIDE7DQo+ICAgICAgICAgICAgICAgICAgICAgICAvKg0KPiBkaWZmIC0tZ2l0IGEv bGliL2dyby9ncm9fdGNwNC5oIGIvbGliL2dyby9ncm9fdGNwNC5oIGluZGV4DQo+IDIxMmY5N2Ew NDIuLjYzNGEyMTViOTggMTAwNjQ0DQo+IC0tLSBhL2xpYi9ncm8vZ3JvX3RjcDQuaA0KPiArKysg Yi9saWIvZ3JvL2dyb190Y3A0LmgNCj4gQEAgLTUsMjIgKzUsOSBAQA0KPiAgI2lmbmRlZiBfR1JP X1RDUDRfSF8NCj4gICNkZWZpbmUgX0dST19UQ1A0X0hfDQo+DQo+IC0jaW5jbHVkZSA8cnRlX3Rj cC5oPg0KPiAtDQo+ICAjZGVmaW5lIElOVkFMSURfQVJSQVlfSU5ERVggMHhmZmZmZmZmZlVMICAj ZGVmaW5lDQo+IEdST19UQ1A0X1RCTF9NQVhfSVRFTV9OVU0gKDEwMjRVTCAqIDEwMjRVTCkNCj4N Cj4gLS8qDQo+IC0gKiBUaGUgbWF4IGxlbmd0aCBvZiBhIElQdjQgcGFja2V0LCB3aGljaCBpbmNs dWRlcyB0aGUgbGVuZ3RoIG9mIHRoZSBMMw0KPiAtICogaGVhZGVyLCB0aGUgTDQgaGVhZGVyIGFu ZCB0aGUgZGF0YSBwYXlsb2FkLg0KPiAtICovDQo+IC0jZGVmaW5lIE1BWF9JUFY0X1BLVF9MRU5H VEggVUlOVDE2X01BWA0KPiAtDQo+IC0vKiBUaGUgbWF4aW11bSBUQ1AgaGVhZGVyIGxlbmd0aCAq Lw0KPiAtI2RlZmluZSBNQVhfVENQX0hMRU4gNjANCj4gLSNkZWZpbmUgSU5WQUxJRF9UQ1BfSERS TEVOKGxlbikgXA0KPiAtICAgICAoKChsZW4pIDwgc2l6ZW9mKHN0cnVjdCBydGVfdGNwX2hkcikp IHx8ICgobGVuKSA+IE1BWF9UQ1BfSExFTikpDQo+IC0NCj4gIC8qIEhlYWRlciBmaWVsZHMgcmVw cmVzZW50aW5nIGEgVENQL0lQdjQgZmxvdyAqLyAgc3RydWN0IHRjcDRfZmxvd19rZXkgew0KPiAg ICAgICBzdHJ1Y3QgcnRlX2V0aGVyX2FkZHIgZXRoX3NhZGRyOw0KPiBAQCAtNDIsNDIgKzI5LDEy IEBAIHN0cnVjdCBncm9fdGNwNF9mbG93IHsNCj4gICAgICAgdWludDMyX3Qgc3RhcnRfaW5kZXg7 DQo+ICB9Ow0KPg0KPiAtc3RydWN0IGdyb190Y3A0X2l0ZW0gew0KPiAtICAgICAvKg0KPiAtICAg ICAgKiBUaGUgZmlyc3QgTUJVRiBzZWdtZW50IG9mIHRoZSBwYWNrZXQuIElmIHRoZSB2YWx1ZQ0K PiAtICAgICAgKiBpcyBOVUxMLCBpdCBtZWFucyB0aGUgaXRlbSBpcyBlbXB0eS4NCj4gLSAgICAg ICovDQo+IC0gICAgIHN0cnVjdCBydGVfbWJ1ZiAqZmlyc3RzZWc7DQo+IC0gICAgIC8qIFRoZSBs YXN0IE1CVUYgc2VnbWVudCBvZiB0aGUgcGFja2V0ICovDQo+IC0gICAgIHN0cnVjdCBydGVfbWJ1 ZiAqbGFzdHNlZzsNCj4gLSAgICAgLyoNCj4gLSAgICAgICogVGhlIHRpbWUgd2hlbiB0aGUgZmly c3QgcGFja2V0IGlzIGluc2VydGVkIGludG8gdGhlIHRhYmxlLg0KPiAtICAgICAgKiBUaGlzIHZh bHVlIHdvbid0IGJlIHVwZGF0ZWQsIGV2ZW4gaWYgdGhlIHBhY2tldCBpcyBtZXJnZWQNCj4gLSAg ICAgICogd2l0aCBvdGhlciBwYWNrZXRzLg0KPiAtICAgICAgKi8NCj4gLSAgICAgdWludDY0X3Qg c3RhcnRfdGltZTsNCj4gLSAgICAgLyoNCj4gLSAgICAgICogbmV4dF9wa3RfaWR4IGlzIHVzZWQg dG8gY2hhaW4gdGhlIHBhY2tldHMgdGhhdA0KPiAtICAgICAgKiBhcmUgaW4gdGhlIHNhbWUgZmxv dyBidXQgY2FuJ3QgYmUgbWVyZ2VkIHRvZ2V0aGVyDQo+IC0gICAgICAqIChlLmcuIGNhdXNlZCBi eSBwYWNrZXQgcmVvcmRlcmluZykuDQo+IC0gICAgICAqLw0KPiAtICAgICB1aW50MzJfdCBuZXh0 X3BrdF9pZHg7DQo+IC0gICAgIC8qIFRDUCBzZXF1ZW5jZSBudW1iZXIgb2YgdGhlIHBhY2tldCAq Lw0KPiAtICAgICB1aW50MzJfdCBzZW50X3NlcTsNCj4gLSAgICAgLyogSVB2NCBJRCBvZiB0aGUg cGFja2V0ICovDQo+IC0gICAgIHVpbnQxNl90IGlwX2lkOw0KPiAtICAgICAvKiB0aGUgbnVtYmVy IG9mIG1lcmdlZCBwYWNrZXRzICovDQo+IC0gICAgIHVpbnQxNl90IG5iX21lcmdlZDsNCj4gLSAg ICAgLyogSW5kaWNhdGUgaWYgSVB2NCBJRCBjYW4gYmUgaWdub3JlZCAqLw0KPiAtICAgICB1aW50 OF90IGlzX2F0b21pYzsNCj4gLX07DQo+IC0NCj4gIC8qDQo+ICAgKiBUQ1AvSVB2NCByZWFzc2Vt Ymx5IHRhYmxlIHN0cnVjdHVyZS4NCj4gICAqLw0KPiAgc3RydWN0IGdyb190Y3A0X3RibCB7DQo+ ICAgICAgIC8qIGl0ZW0gYXJyYXkgKi8NCj4gLSAgICAgc3RydWN0IGdyb190Y3A0X2l0ZW0gKml0 ZW1zOw0KPiArICAgICBzdHJ1Y3QgZ3JvX3RjcF9pdGVtICppdGVtczsNCj4gICAgICAgLyogZmxv dyBhcnJheSAqLw0KPiAgICAgICBzdHJ1Y3QgZ3JvX3RjcDRfZmxvdyAqZmxvd3M7DQo+ICAgICAg IC8qIGN1cnJlbnQgaXRlbSBudW1iZXIgKi8NCj4gQEAgLTE5NSwxMTEgKzE1Miw0IEBAIGlzX3Nh bWVfdGNwNF9mbG93KHN0cnVjdCB0Y3A0X2Zsb3dfa2V5IGsxLCBzdHJ1Y3QNCj4gdGNwNF9mbG93 X2tleSBrMikNCj4gICAgICAgICAgICAgICAgICAgICAgIChrMS5kc3RfcG9ydCA9PSBrMi5kc3Rf cG9ydCkpOw0KPiAgfQ0KPg0KPiAtLyoNCj4gLSAqIE1lcmdlIHR3byBUQ1AvSVB2NCBwYWNrZXRz IHdpdGhvdXQgdXBkYXRpbmcgY2hlY2tzdW1zLg0KPiAtICogSWYgY21wIGlzIGxhcmdlciB0aGFu IDAsIGFwcGVuZCB0aGUgbmV3IHBhY2tldCB0byB0aGUNCj4gLSAqIG9yaWdpbmFsIHBhY2tldC4g T3RoZXJ3aXNlLCBwcmUtcGVuZCB0aGUgbmV3IHBhY2tldCB0bw0KPiAtICogdGhlIG9yaWdpbmFs IHBhY2tldC4NCj4gLSAqLw0KPiAtc3RhdGljIGlubGluZSBpbnQNCj4gLW1lcmdlX3R3b190Y3A0 X3BhY2tldHMoc3RydWN0IGdyb190Y3A0X2l0ZW0gKml0ZW0sDQo+IC0gICAgICAgICAgICAgc3Ry dWN0IHJ0ZV9tYnVmICpwa3QsDQo+IC0gICAgICAgICAgICAgaW50IGNtcCwNCj4gLSAgICAgICAg ICAgICB1aW50MzJfdCBzZW50X3NlcSwNCj4gLSAgICAgICAgICAgICB1aW50MTZfdCBpcF9pZCwN Cj4gLSAgICAgICAgICAgICB1aW50MTZfdCBsMl9vZmZzZXQpDQo+IC17DQo+IC0gICAgIHN0cnVj dCBydGVfbWJ1ZiAqcGt0X2hlYWQsICpwa3RfdGFpbCwgKmxhc3RzZWc7DQo+IC0gICAgIHVpbnQx Nl90IGhkcl9sZW4sIGwyX2xlbjsNCj4gLQ0KPiAtICAgICBpZiAoY21wID4gMCkgew0KPiAtICAg ICAgICAgICAgIHBrdF9oZWFkID0gaXRlbS0+Zmlyc3RzZWc7DQo+IC0gICAgICAgICAgICAgcGt0 X3RhaWwgPSBwa3Q7DQo+IC0gICAgIH0gZWxzZSB7DQo+IC0gICAgICAgICAgICAgcGt0X2hlYWQg PSBwa3Q7DQo+IC0gICAgICAgICAgICAgcGt0X3RhaWwgPSBpdGVtLT5maXJzdHNlZzsNCj4gLSAg ICAgfQ0KPiAtDQo+IC0gICAgIC8qIGNoZWNrIGlmIHRoZSBJUHY0IHBhY2tldCBsZW5ndGggaXMg Z3JlYXRlciB0aGFuIHRoZSBtYXggdmFsdWUgKi8NCj4gLSAgICAgaGRyX2xlbiA9IGwyX29mZnNl dCArIHBrdF9oZWFkLT5sMl9sZW4gKyBwa3RfaGVhZC0+bDNfbGVuICsNCj4gLSAgICAgICAgICAg ICBwa3RfaGVhZC0+bDRfbGVuOw0KPiAtICAgICBsMl9sZW4gPSBsMl9vZmZzZXQgPiAwID8gcGt0 X2hlYWQtPm91dGVyX2wyX2xlbiA6IHBrdF9oZWFkLT5sMl9sZW47DQo+IC0gICAgIGlmICh1bmxp a2VseShwa3RfaGVhZC0+cGt0X2xlbiAtIGwyX2xlbiArIHBrdF90YWlsLT5wa3RfbGVuIC0NCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGRyX2xlbiA+IE1BWF9JUFY0X1BLVF9MRU5H VEgpKQ0KPiAtICAgICAgICAgICAgIHJldHVybiAwOw0KPiAtDQo+IC0gICAgIC8qIHJlbW92ZSB0 aGUgcGFja2V0IGhlYWRlciBmb3IgdGhlIHRhaWwgcGFja2V0ICovDQo+IC0gICAgIHJ0ZV9wa3Rt YnVmX2Fkaihwa3RfdGFpbCwgaGRyX2xlbik7DQo+IC0NCj4gLSAgICAgLyogY2hhaW4gdHdvIHBh Y2tldHMgdG9nZXRoZXIgKi8NCj4gLSAgICAgaWYgKGNtcCA+IDApIHsNCj4gLSAgICAgICAgICAg ICBpdGVtLT5sYXN0c2VnLT5uZXh0ID0gcGt0Ow0KPiAtICAgICAgICAgICAgIGl0ZW0tPmxhc3Rz ZWcgPSBydGVfcGt0bWJ1Zl9sYXN0c2VnKHBrdCk7DQo+IC0gICAgICAgICAgICAgLyogdXBkYXRl IElQIElEIHRvIHRoZSBsYXJnZXIgdmFsdWUgKi8NCj4gLSAgICAgICAgICAgICBpdGVtLT5pcF9p ZCA9IGlwX2lkOw0KPiAtICAgICB9IGVsc2Ugew0KPiAtICAgICAgICAgICAgIGxhc3RzZWcgPSBy dGVfcGt0bWJ1Zl9sYXN0c2VnKHBrdCk7DQo+IC0gICAgICAgICAgICAgbGFzdHNlZy0+bmV4dCA9 IGl0ZW0tPmZpcnN0c2VnOw0KPiAtICAgICAgICAgICAgIGl0ZW0tPmZpcnN0c2VnID0gcGt0Ow0K PiAtICAgICAgICAgICAgIC8qIHVwZGF0ZSBzZW50X3NlcSB0byB0aGUgc21hbGxlciB2YWx1ZSAq Lw0KPiAtICAgICAgICAgICAgIGl0ZW0tPnNlbnRfc2VxID0gc2VudF9zZXE7DQo+IC0gICAgICAg ICAgICAgaXRlbS0+aXBfaWQgPSBpcF9pZDsNCj4gLSAgICAgfQ0KPiAtICAgICBpdGVtLT5uYl9t ZXJnZWQrKzsNCj4gLQ0KPiAtICAgICAvKiB1cGRhdGUgTUJVRiBtZXRhZGF0YSBmb3IgdGhlIG1l cmdlZCBwYWNrZXQgKi8NCj4gLSAgICAgcGt0X2hlYWQtPm5iX3NlZ3MgKz0gcGt0X3RhaWwtPm5i X3NlZ3M7DQo+IC0gICAgIHBrdF9oZWFkLT5wa3RfbGVuICs9IHBrdF90YWlsLT5wa3RfbGVuOw0K PiAtDQo+IC0gICAgIHJldHVybiAxOw0KPiAtfQ0KPiAtDQo+IC0vKg0KPiAtICogQ2hlY2sgaWYg dHdvIFRDUC9JUHY0IHBhY2tldHMgYXJlIG5laWdoYm9ycy4NCj4gLSAqLw0KPiAtc3RhdGljIGlu bGluZSBpbnQNCj4gLWNoZWNrX3NlcV9vcHRpb24oc3RydWN0IGdyb190Y3A0X2l0ZW0gKml0ZW0s DQo+IC0gICAgICAgICAgICAgc3RydWN0IHJ0ZV90Y3BfaGRyICp0Y3BoLA0KPiAtICAgICAgICAg ICAgIHVpbnQzMl90IHNlbnRfc2VxLA0KPiAtICAgICAgICAgICAgIHVpbnQxNl90IGlwX2lkLA0K PiAtICAgICAgICAgICAgIHVpbnQxNl90IHRjcF9obCwNCj4gLSAgICAgICAgICAgICB1aW50MTZf dCB0Y3BfZGwsDQo+IC0gICAgICAgICAgICAgdWludDE2X3QgbDJfb2Zmc2V0LA0KPiAtICAgICAg ICAgICAgIHVpbnQ4X3QgaXNfYXRvbWljKQ0KPiAtew0KPiAtICAgICBzdHJ1Y3QgcnRlX21idWYg KnBrdF9vcmlnID0gaXRlbS0+Zmlyc3RzZWc7DQo+IC0gICAgIHN0cnVjdCBydGVfaXB2NF9oZHIg KmlwaF9vcmlnOw0KPiAtICAgICBzdHJ1Y3QgcnRlX3RjcF9oZHIgKnRjcGhfb3JpZzsNCj4gLSAg ICAgdWludDE2X3QgbGVuLCB0Y3BfaGxfb3JpZzsNCj4gLQ0KPiAtICAgICBpcGhfb3JpZyA9IChz dHJ1Y3QgcnRlX2lwdjRfaGRyICopKHJ0ZV9wa3RtYnVmX210b2QocGt0X29yaWcsIGNoYXINCj4g KikgKw0KPiAtICAgICAgICAgICAgICAgICAgICAgbDJfb2Zmc2V0ICsgcGt0X29yaWctPmwyX2xl bik7DQo+IC0gICAgIHRjcGhfb3JpZyA9IChzdHJ1Y3QgcnRlX3RjcF9oZHIgKikoKGNoYXIgKilp cGhfb3JpZyArIHBrdF9vcmlnLQ0KPiA+bDNfbGVuKTsNCj4gLSAgICAgdGNwX2hsX29yaWcgPSBw a3Rfb3JpZy0+bDRfbGVuOw0KPiAtDQo+IC0gICAgIC8qIENoZWNrIGlmIFRDUCBvcHRpb24gZmll bGRzIGVxdWFsICovDQo+IC0gICAgIGxlbiA9IFJURV9NQVgodGNwX2hsLCB0Y3BfaGxfb3JpZykg LSBzaXplb2Yoc3RydWN0IHJ0ZV90Y3BfaGRyKTsNCj4gLSAgICAgaWYgKCh0Y3BfaGwgIT0gdGNw X2hsX29yaWcpIHx8ICgobGVuID4gMCkgJiYNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG1lbWNtcCh0Y3BoICsgMSwgdGNwaF9vcmlnICsgMSwNCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsZW4pICE9IDApKSkNCj4gLSAgICAgICAgICAgICByZXR1cm4g MDsNCj4gLQ0KPiAtICAgICAvKiBEb24ndCBtZXJnZSBwYWNrZXRzIHdob3NlIERGIGJpdHMgYXJl IGRpZmZlcmVudCAqLw0KPiAtICAgICBpZiAodW5saWtlbHkoaXRlbS0+aXNfYXRvbWljIF4gaXNf YXRvbWljKSkNCj4gLSAgICAgICAgICAgICByZXR1cm4gMDsNCj4gLQ0KPiAtICAgICAvKiBjaGVj ayBpZiB0aGUgdHdvIHBhY2tldHMgYXJlIG5laWdoYm9ycyAqLw0KPiAtICAgICBsZW4gPSBwa3Rf b3JpZy0+cGt0X2xlbiAtIGwyX29mZnNldCAtIHBrdF9vcmlnLT5sMl9sZW4gLQ0KPiAtICAgICAg ICAgICAgIHBrdF9vcmlnLT5sM19sZW4gLSB0Y3BfaGxfb3JpZzsNCj4gLSAgICAgaWYgKChzZW50 X3NlcSA9PSBpdGVtLT5zZW50X3NlcSArIGxlbikgJiYgKGlzX2F0b21pYyB8fA0KPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoaXBfaWQgPT0gaXRlbS0+aXBfaWQgKyAxKSkpDQo+IC0g ICAgICAgICAgICAgLyogYXBwZW5kIHRoZSBuZXcgcGFja2V0ICovDQo+IC0gICAgICAgICAgICAg cmV0dXJuIDE7DQo+IC0gICAgIGVsc2UgaWYgKChzZW50X3NlcSArIHRjcF9kbCA9PSBpdGVtLT5z ZW50X3NlcSkgJiYgKGlzX2F0b21pYyB8fA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoaXBfaWQgKyBpdGVtLT5uYl9tZXJnZWQgPT0gaXRlbS0+aXBfaWQpKSkNCj4gLSAgICAgICAg ICAgICAvKiBwcmUtcGVuZCB0aGUgbmV3IHBhY2tldCAqLw0KPiAtICAgICAgICAgICAgIHJldHVy biAtMTsNCj4gLQ0KPiAtICAgICByZXR1cm4gMDsNCj4gLX0NCj4gICNlbmRpZg0KPiBkaWZmIC0t Z2l0IGEvbGliL2dyby9ncm9fdGNwNi5jIGIvbGliL2dyby9ncm9fdGNwNi5jIG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmEzN2Q4ZTI1MTINCj4gLS0tIC9kZXYvbnVs bA0KPiArKysgYi9saWIvZ3JvL2dyb190Y3A2LmMNCj4gQEAgLTAsMCArMSwzODcgQEANCj4gKy8q IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gKyAqIENvcHlyaWdodChj KSAyMDE3IEludGVsIENvcnBvcmF0aW9uDQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgPHJ0ZV9t YWxsb2MuaD4NCj4gKyNpbmNsdWRlIDxydGVfbWJ1Zi5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9ldGhk ZXYuaD4NCj4gKw0KPiArI2luY2x1ZGUgImdyb190Y3A2LmgiDQo+ICsjaW5jbHVkZSAiZ3JvX3Rj cC5oIg0KPiArDQo+ICt2b2lkICoNCj4gK2dyb190Y3A2X3RibF9jcmVhdGUodWludDE2X3Qgc29j a2V0X2lkLA0KPiArICAgICAgICAgICAgIHVpbnQxNl90IG1heF9mbG93X251bSwNCj4gKyAgICAg ICAgICAgICB1aW50MTZfdCBtYXhfaXRlbV9wZXJfZmxvdykNCj4gK3sNCj4gKyAgICAgc3RydWN0 IGdyb190Y3A2X3RibCAqdGJsOw0KPiArICAgICBzaXplX3Qgc2l6ZTsNCj4gKyAgICAgdWludDMy X3QgZW50cmllc19udW0sIGk7DQo+ICsNCj4gKyAgICAgZW50cmllc19udW0gPSBtYXhfZmxvd19u dW0gKiBtYXhfaXRlbV9wZXJfZmxvdzsNCj4gKyAgICAgZW50cmllc19udW0gPSBSVEVfTUlOKGVu dHJpZXNfbnVtLA0KPiBHUk9fVENQNl9UQkxfTUFYX0lURU1fTlVNKTsNCj4gKw0KPiArICAgICBp ZiAoZW50cmllc19udW0gPT0gMCkNCj4gKyAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCj4gKw0K PiArICAgICB0YmwgPSBydGVfem1hbGxvY19zb2NrZXQoX19mdW5jX18sDQo+ICsgICAgICAgICAg ICAgICAgICAgICBzaXplb2Yoc3RydWN0IGdyb190Y3A2X3RibCksDQo+ICsgICAgICAgICAgICAg ICAgICAgICBSVEVfQ0FDSEVfTElORV9TSVpFLA0KPiArICAgICAgICAgICAgICAgICAgICAgc29j a2V0X2lkKTsNCj4gKyAgICAgaWYgKHRibCA9PSBOVUxMKQ0KPiArICAgICAgICAgICAgIHJldHVy biBOVUxMOw0KPiArDQo+ICsgICAgIHNpemUgPSBzaXplb2Yoc3RydWN0IGdyb190Y3BfaXRlbSkg KiBlbnRyaWVzX251bTsNCj4gKyAgICAgdGJsLT5pdGVtcyA9IHJ0ZV96bWFsbG9jX3NvY2tldChf X2Z1bmNfXywNCj4gKyAgICAgICAgICAgICAgICAgICAgIHNpemUsDQo+ICsgICAgICAgICAgICAg ICAgICAgICBSVEVfQ0FDSEVfTElORV9TSVpFLA0KPiArICAgICAgICAgICAgICAgICAgICAgc29j a2V0X2lkKTsNCj4gKyAgICAgaWYgKHRibC0+aXRlbXMgPT0gTlVMTCkgew0KPiArICAgICAgICAg ICAgIHJ0ZV9mcmVlKHRibCk7DQo+ICsgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQo+ICsgICAg IH0NCj4gKyAgICAgdGJsLT5tYXhfaXRlbV9udW0gPSBlbnRyaWVzX251bTsNCj4gKw0KPiArICAg ICBzaXplID0gc2l6ZW9mKHN0cnVjdCBncm9fdGNwNl9mbG93KSAqIGVudHJpZXNfbnVtOw0KPiAr ICAgICB0YmwtPmZsb3dzID0gcnRlX3ptYWxsb2Nfc29ja2V0KF9fZnVuY19fLA0KPiArICAgICAg ICAgICAgICAgICAgICAgc2l6ZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgIFJURV9DQUNIRV9M SU5FX1NJWkUsDQo+ICsgICAgICAgICAgICAgICAgICAgICBzb2NrZXRfaWQpOw0KPiArICAgICBp ZiAodGJsLT5mbG93cyA9PSBOVUxMKSB7DQo+ICsgICAgICAgICAgICAgcnRlX2ZyZWUodGJsLT5p dGVtcyk7DQo+ICsgICAgICAgICAgICAgcnRlX2ZyZWUodGJsKTsNCj4gKyAgICAgICAgICAgICBy ZXR1cm4gTlVMTDsNCj4gKyAgICAgfQ0KPiArICAgICAvKiBJTlZBTElEX0FSUkFZX0lOREVYIGlu ZGljYXRlcyBhbiBlbXB0eSBmbG93ICovDQo+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBlbnRyaWVz X251bTsgaSsrKQ0KPiArICAgICAgICAgICAgIHRibC0+Zmxvd3NbaV0uc3RhcnRfaW5kZXggPSBJ TlZBTElEX0FSUkFZX0lOREVYOw0KPiArICAgICB0YmwtPm1heF9mbG93X251bSA9IGVudHJpZXNf bnVtOw0KPiArDQo+ICsgICAgIHJldHVybiB0Ymw7DQo+ICt9DQo+ICsNCj4gK3ZvaWQNCj4gK2dy b190Y3A2X3RibF9kZXN0cm95KHZvaWQgKnRibCkNCj4gK3sNCj4gKyAgICAgc3RydWN0IGdyb190 Y3A2X3RibCAqdGNwX3RibCA9IHRibDsNCj4gKw0KPiArICAgICBpZiAodGNwX3RibCkgew0KPiAr ICAgICAgICAgICAgIHJ0ZV9mcmVlKHRjcF90YmwtPml0ZW1zKTsNCj4gKyAgICAgICAgICAgICBy dGVfZnJlZSh0Y3BfdGJsLT5mbG93cyk7DQo+ICsgICAgIH0NCj4gKyAgICAgcnRlX2ZyZWUodGNw X3RibCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdWludDMyX3QNCj4gK2ZpbmRfYW5f ZW1wdHlfaXRlbShzdHJ1Y3QgZ3JvX3RjcDZfdGJsICp0YmwpIHsNCj4gKyAgICAgdWludDMyX3Qg aTsNCj4gKyAgICAgdWludDMyX3QgbWF4X2l0ZW1fbnVtID0gdGJsLT5tYXhfaXRlbV9udW07DQo+ ICsNCj4gKyAgICAgZm9yIChpID0gMDsgaSA8IG1heF9pdGVtX251bTsgaSsrKQ0KPiArICAgICAg ICAgICAgIGlmICh0YmwtPml0ZW1zW2ldLmZpcnN0c2VnID09IE5VTEwpDQo+ICsgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gaTsNCj4gKyAgICAgcmV0dXJuIElOVkFMSURfQVJSQVlfSU5ERVg7 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdWludDMyX3QNCj4gK2ZpbmRfYW5fZW1wdHlf ZmxvdyhzdHJ1Y3QgZ3JvX3RjcDZfdGJsICp0YmwpIHsNCj4gKyAgICAgdWludDMyX3QgaTsNCj4g KyAgICAgdWludDMyX3QgbWF4X2Zsb3dfbnVtID0gdGJsLT5tYXhfZmxvd19udW07DQo+ICsNCj4g KyAgICAgZm9yIChpID0gMDsgaSA8IG1heF9mbG93X251bTsgaSsrKQ0KPiArICAgICAgICAgICAg IGlmICh0YmwtPmZsb3dzW2ldLnN0YXJ0X2luZGV4ID09IElOVkFMSURfQVJSQVlfSU5ERVgpDQo+ ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTsNCj4gKyAgICAgcmV0dXJuIElOVkFMSURf QVJSQVlfSU5ERVg7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdWludDMyX3QNCj4gK2lu c2VydF9uZXdfaXRlbShzdHJ1Y3QgZ3JvX3RjcDZfdGJsICp0YmwsDQo+ICsgICAgICAgICAgICAg c3RydWN0IHJ0ZV9tYnVmICpwa3QsDQo+ICsgICAgICAgICAgICAgdWludDY0X3Qgc3RhcnRfdGlt ZSwNCj4gKyAgICAgICAgICAgICB1aW50MzJfdCBwcmV2X2lkeCwNCj4gKyAgICAgICAgICAgICB1 aW50MzJfdCBzZW50X3NlcSwNCj4gKyAgICAgICAgICAgICB1aW50OF90IGlzX2F0b21pYykNCj4g K3sNCj4gKyAgICAgdWludDMyX3QgaXRlbV9pZHg7DQo+ICsNCj4gKyAgICAgaXRlbV9pZHggPSBm aW5kX2FuX2VtcHR5X2l0ZW0odGJsKTsNCj4gKyAgICAgaWYgKGl0ZW1faWR4ID09IElOVkFMSURf QVJSQVlfSU5ERVgpDQo+ICsgICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfQVJSQVlfSU5ERVg7 DQo+ICsNCj4gKyAgICAgdGJsLT5pdGVtc1tpdGVtX2lkeF0uZmlyc3RzZWcgPSBwa3Q7DQo+ICsg ICAgIHRibC0+aXRlbXNbaXRlbV9pZHhdLmxhc3RzZWcgPSBydGVfcGt0bWJ1Zl9sYXN0c2VnKHBr dCk7DQo+ICsgICAgIHRibC0+aXRlbXNbaXRlbV9pZHhdLnN0YXJ0X3RpbWUgPSBzdGFydF90aW1l Ow0KPiArICAgICB0YmwtPml0ZW1zW2l0ZW1faWR4XS5uZXh0X3BrdF9pZHggPSBJTlZBTElEX0FS UkFZX0lOREVYOw0KPiArICAgICB0YmwtPml0ZW1zW2l0ZW1faWR4XS5zZW50X3NlcSA9IHNlbnRf c2VxOw0KPiArICAgICB0YmwtPml0ZW1zW2l0ZW1faWR4XS5uYl9tZXJnZWQgPSAxOw0KPiArICAg ICB0YmwtPml0ZW1zW2l0ZW1faWR4XS5pc19hdG9taWMgPSBpc19hdG9taWM7DQo+ICsgICAgIHRi bC0+aXRlbV9udW0rKzsNCj4gKw0KPiArICAgICAvKiBpZiB0aGUgcHJldmlvdXMgcGFja2V0IGV4 aXN0cywgY2hhaW4gdGhlbSB0b2dldGhlci4gKi8NCj4gKyAgICAgaWYgKHByZXZfaWR4ICE9IElO VkFMSURfQVJSQVlfSU5ERVgpIHsNCj4gKyAgICAgICAgICAgICB0YmwtPml0ZW1zW2l0ZW1faWR4 XS5uZXh0X3BrdF9pZHggPQ0KPiArICAgICAgICAgICAgICAgICAgICAgdGJsLT5pdGVtc1twcmV2 X2lkeF0ubmV4dF9wa3RfaWR4Ow0KPiArICAgICAgICAgICAgIHRibC0+aXRlbXNbcHJldl9pZHhd Lm5leHRfcGt0X2lkeCA9IGl0ZW1faWR4Ow0KPiArICAgICB9DQo+ICsNCj4gKyAgICAgcmV0dXJu IGl0ZW1faWR4Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHVpbnQzMl90DQo+ICtkZWxl dGVfaXRlbShzdHJ1Y3QgZ3JvX3RjcDZfdGJsICp0YmwsIHVpbnQzMl90IGl0ZW1faWR4LA0KPiAr ICAgICAgICAgICAgIHVpbnQzMl90IHByZXZfaXRlbV9pZHgpDQo+ICt7DQo+ICsgICAgIHVpbnQz Ml90IG5leHRfaWR4ID0gdGJsLT5pdGVtc1tpdGVtX2lkeF0ubmV4dF9wa3RfaWR4Ow0KPiArDQo+ ICsgICAgIC8qIE5VTEwgaW5kaWNhdGVzIGFuIGVtcHR5IGl0ZW0gKi8NCj4gKyAgICAgdGJsLT5p dGVtc1tpdGVtX2lkeF0uZmlyc3RzZWcgPSBOVUxMOw0KPiArICAgICB0YmwtPml0ZW1fbnVtLS07 DQo+ICsgICAgIGlmIChwcmV2X2l0ZW1faWR4ICE9IElOVkFMSURfQVJSQVlfSU5ERVgpDQo+ICsg ICAgICAgICAgICAgdGJsLT5pdGVtc1twcmV2X2l0ZW1faWR4XS5uZXh0X3BrdF9pZHggPSBuZXh0 X2lkeDsNCj4gKw0KPiArICAgICByZXR1cm4gbmV4dF9pZHg7DQo+ICt9DQo+ICsNCj4gK3N0YXRp YyBpbmxpbmUgdWludDMyX3QNCj4gK2luc2VydF9uZXdfZmxvdyhzdHJ1Y3QgZ3JvX3RjcDZfdGJs ICp0YmwsDQo+ICsgICAgICAgICAgICAgc3RydWN0IHRjcDZfZmxvd19rZXkgKnNyYywNCj4gKyAg ICAgICAgICAgICBydGVfYmUzMl90IHZ0Y19mbG93LA0KPiArICAgICAgICAgICAgIHVpbnQzMl90 IGl0ZW1faWR4KQ0KPiArew0KPiArICAgICBzdHJ1Y3QgdGNwNl9mbG93X2tleSAqZHN0Ow0KPiAr ICAgICB1aW50MzJfdCBmbG93X2lkeDsNCj4gKw0KPiArICAgICBmbG93X2lkeCA9IGZpbmRfYW5f ZW1wdHlfZmxvdyh0YmwpOw0KPiArICAgICBpZiAodW5saWtlbHkoZmxvd19pZHggPT0gSU5WQUxJ RF9BUlJBWV9JTkRFWCkpDQo+ICsgICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfQVJSQVlfSU5E RVg7DQo+ICsNCj4gKyAgICAgZHN0ID0gJih0YmwtPmZsb3dzW2Zsb3dfaWR4XS5rZXkpOw0KPiAr DQo+ICsgICAgIHJ0ZV9ldGhlcl9hZGRyX2NvcHkoJihzcmMtPmV0aF9zYWRkciksICYoZHN0LT5l dGhfc2FkZHIpKTsNCj4gKyAgICAgcnRlX2V0aGVyX2FkZHJfY29weSgmKHNyYy0+ZXRoX2RhZGRy KSwgJihkc3QtPmV0aF9kYWRkcikpOw0KPiArICAgICBtZW1jcHkoJmRzdC0+c3JjX2FkZHJbMF0s ICZzcmMtPnNyY19hZGRyWzBdLCBzaXplb2YoZHN0LQ0KPiA+c3JjX2FkZHIpKTsNCj4gKyAgICAg bWVtY3B5KCZkc3QtPmRzdF9hZGRyWzBdLCAmc3JjLT5kc3RfYWRkclswXSwgc2l6ZW9mKGRzdC0N Cj4gPmRzdF9hZGRyKSk7DQo+ICsgICAgIGRzdC0+cmVjdl9hY2sgPSBzcmMtPnJlY3ZfYWNrOw0K PiArICAgICBkc3QtPnNyY19wb3J0ID0gc3JjLT5zcmNfcG9ydDsNCj4gKyAgICAgZHN0LT5kc3Rf cG9ydCA9IHNyYy0+ZHN0X3BvcnQ7DQo+ICsNCj4gKyAgICAgdGJsLT5mbG93c1tmbG93X2lkeF0u c3RhcnRfaW5kZXggPSBpdGVtX2lkeDsNCj4gKyAgICAgdGJsLT5mbG93X251bSsrOw0KPiArICAg ICB0YmwtPmZsb3dzLT52dGNfZmxvdyA9IHZ0Y19mbG93Ow0KPiArDQo+ICsgICAgIHJldHVybiBm bG93X2lkeDsNCj4gK30NCj4gKw0KPiArLyoNCj4gKyAqIHVwZGF0ZSB0aGUgcGFja2V0IGxlbmd0 aCBmb3IgdGhlIGZsdXNoZWQgcGFja2V0Lg0KPiArICovDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQN Cj4gK3VwZGF0ZV9oZWFkZXIoc3RydWN0IGdyb190Y3BfaXRlbSAqaXRlbSkgew0KPiArICAgICBz dHJ1Y3QgcnRlX2lwdjZfaGRyICppcHY2X2hkcjsNCj4gKyAgICAgc3RydWN0IHJ0ZV9tYnVmICpw a3QgPSBpdGVtLT5maXJzdHNlZzsNCj4gKw0KPiArICAgICBpcHY2X2hkciA9IChzdHJ1Y3QgcnRl X2lwdjZfaGRyICopKHJ0ZV9wa3RtYnVmX210b2QocGt0LCBjaGFyICopICsNCj4gKyAgICAgICAg ICAgICAgICAgICAgIHBrdC0+bDJfbGVuKTsNCj4gKyAgICAgaXB2Nl9oZHItPnBheWxvYWRfbGVu ID0gcnRlX2NwdV90b19iZV8xNihwa3QtPnBrdF9sZW4gLQ0KPiArICAgICAgICAgICAgICAgICAg ICAgcGt0LT5sMl9sZW4gLSBwa3QtPmwzX2xlbik7DQo+ICt9DQo+ICsNCj4gK2ludDMyX3QNCj4g K2dyb190Y3A2X3JlYXNzZW1ibGUoc3RydWN0IHJ0ZV9tYnVmICpwa3QsDQo+ICsgICAgICAgICAg ICAgc3RydWN0IGdyb190Y3A2X3RibCAqdGJsLA0KPiArICAgICAgICAgICAgIHVpbnQ2NF90IHN0 YXJ0X3RpbWUpDQo+ICt7DQo+ICsgICAgIHN0cnVjdCBydGVfZXRoZXJfaGRyICpldGhfaGRyOw0K PiArICAgICBzdHJ1Y3QgcnRlX2lwdjZfaGRyICppcHY2X2hkcjsNCj4gKyAgICAgc3RydWN0IHJ0 ZV90Y3BfaGRyICp0Y3BfaGRyOw0KPiArICAgICB1aW50MzJfdCBzZW50X3NlcTsNCj4gKyAgICAg aW50MzJfdCB0Y3BfZGw7DQo+ICsgICAgIHVpbnQxNl90IGlwX3RsZW47DQo+ICsgICAgIHN0cnVj dCB0Y3A2X2Zsb3dfa2V5IGtleTsNCj4gKyAgICAgdWludDMyX3QgY3VyX2lkeCwgcHJldl9pZHgs IGl0ZW1faWR4Ow0KPiArICAgICB1aW50MzJfdCBpLCBtYXhfZmxvd19udW0sIHJlbWFpbmluZ19m bG93X251bTsNCj4gKyAgICAgaW50IGNtcDsNCj4gKyAgICAgdWludDhfdCBmaW5kOw0KPiArICAg ICBydGVfYmUzMl90IHZ0Y19mbG93X2RpZmY7DQo+ICsNCj4gKyAgICAgLyoNCj4gKyAgICAgICog RG9uJ3QgcHJvY2VzcyB0aGUgcGFja2V0IHdob3NlIFRDUCBoZWFkZXIgbGVuZ3RoIGlzIGdyZWF0 ZXINCj4gKyAgICAgICogdGhhbiA2MCBieXRlcyBvciBsZXNzIHRoYW4gMjAgYnl0ZXMuDQo+ICsg ICAgICAqLw0KPiArICAgICBpZiAodW5saWtlbHkoSU5WQUxJRF9UQ1BfSERSTEVOKHBrdC0+bDRf bGVuKSkpDQo+ICsgICAgICAgICAgICAgcmV0dXJuIC0xOw0KPiArDQo+ICsgICAgIGV0aF9oZHIg PSBydGVfcGt0bWJ1Zl9tdG9kKHBrdCwgc3RydWN0IHJ0ZV9ldGhlcl9oZHIgKik7DQo+ICsgICAg IGlwdjZfaGRyID0gKHN0cnVjdCBydGVfaXB2Nl9oZHIgKikoKGNoYXIgKilldGhfaGRyICsgcGt0 LT5sMl9sZW4pOw0KPiArICAgICB0Y3BfaGRyID0gKHN0cnVjdCBydGVfdGNwX2hkciAqKSgoY2hh ciAqKWlwdjZfaGRyICsgcGt0LT5sM19sZW4pOw0KPiArDQo+ICsgICAgIC8qDQo+ICsgICAgICAq IERvbid0IHByb2Nlc3MgdGhlIHBhY2tldCB3aGljaCBoYXMgRklOLCBTWU4sIFJTVCwgUFNILCBV UkcsIEVDRQ0KPiArICAgICAgKiBvciBDV1Igc2V0Lg0KPiArICAgICAgKi8NCj4gKyAgICAgaWYg KHRjcF9oZHItPnRjcF9mbGFncyAhPSBSVEVfVENQX0FDS19GTEFHKQ0KPiArICAgICAgICAgICAg IHJldHVybiAtMTsNCj4gKw0KPiArICAgICBpcF90bGVuID0gcnRlX2JlX3RvX2NwdV8xNihpcHY2 X2hkci0+cGF5bG9hZF9sZW4pOw0KPiArICAgICAvKg0KPiArICAgICAgKiBUcmltIHRoZSB0YWls IHBhZGRpbmcgYnl0ZXMuIFRoZSBJUHY2IGhlYWRlciBpcyBmaXhlZCB0bw0KPiArICAgICAgKiA0 MCBieXRlcyB1bmxpa2UgSVB2NCB0aGF0IGlzIHZhcmlhYmxlLiBUaGUgbGVuZ3RoIGluIHRoZSBJ UHY2IGhlYWRlcg0KPiArICAgICAgKiBjb250YWlucyBvbmx5IGxlbmd0aCBvZiBUQ1AgSGVhZGVy ICsgVENQIFBheWxvYWQsIHdoZXJlYXMgSVB2NA0KPiBoZWFkZXIgY29udGFpbnMNCj4gKyAgICAg ICogbGVuZ3RoIG9mIElQIEhlYWRlciArIFRDUCBIZWFkZXIgKyBUQ1AgUGF5bG9hZA0KPiArICAg ICAgKi8NCj4gKyAgICAgaWYgKHBrdC0+cGt0X2xlbiA+ICh1aW50MzJfdCkoaXBfdGxlbiArIHBr dC0+bDJfbGVuICsgcGt0LT5sM19sZW4pKQ0KPiArICAgICAgICAgICAgIHJ0ZV9wa3RtYnVmX3Ry aW0ocGt0LCBwa3QtPnBrdF9sZW4gLSBpcF90bGVuIC0gcGt0LT5sMl9sZW4gLQ0KPiBwa3QtPmwz X2xlbik7DQo+ICsgICAgIC8qDQo+ICsgICAgICAqIERvbid0IHByb2Nlc3MgdGhlIHBhY2tldCB3 aG9zZSBwYXlsb2FkIGxlbmd0aCBpcyBsZXNzIHRoYW4gb3INCj4gKyAgICAgICogZXF1YWwgdG8g MC4NCj4gKyAgICAgICovDQo+ICsgICAgIHRjcF9kbCA9IGlwX3RsZW4gLSBwa3QtPmw0X2xlbjsN Cj4gKyAgICAgaWYgKHRjcF9kbCA8PSAwKQ0KPiArICAgICAgICAgICAgIHJldHVybiAtMTsNCj4g Kw0KPiArICAgICBzZW50X3NlcSA9IHJ0ZV9iZV90b19jcHVfMzIodGNwX2hkci0+c2VudF9zZXEp Ow0KPiArDQo+ICsgICAgIHJ0ZV9ldGhlcl9hZGRyX2NvcHkoJihldGhfaGRyLT5zcmNfYWRkciks ICYoa2V5LmV0aF9zYWRkcikpOw0KPiArICAgICBydGVfZXRoZXJfYWRkcl9jb3B5KCYoZXRoX2hk ci0+ZHN0X2FkZHIpLCAmKGtleS5ldGhfZGFkZHIpKTsNCj4gKyAgICAgbWVtY3B5KCZrZXkuc3Jj X2FkZHJbMF0sICZpcHY2X2hkci0+c3JjX2FkZHIsDQo+IHNpemVvZihrZXkuc3JjX2FkZHIpKTsN Cj4gKyAgICAgbWVtY3B5KCZrZXkuZHN0X2FkZHJbMF0sICZpcHY2X2hkci0+ZHN0X2FkZHIsDQo+ IHNpemVvZihrZXkuZHN0X2FkZHIpKTsNCj4gKyAgICAga2V5LnNyY19wb3J0ID0gdGNwX2hkci0+ c3JjX3BvcnQ7DQo+ICsgICAgIGtleS5kc3RfcG9ydCA9IHRjcF9oZHItPmRzdF9wb3J0Ow0KPiAr ICAgICBrZXkucmVjdl9hY2sgPSB0Y3BfaGRyLT5yZWN2X2FjazsNCj4gKw0KPiArICAgICAvKiBT ZWFyY2ggZm9yIGEgbWF0Y2hlZCBmbG93LiAqLw0KPiArICAgICBtYXhfZmxvd19udW0gPSB0Ymwt Pm1heF9mbG93X251bTsNCj4gKyAgICAgcmVtYWluaW5nX2Zsb3dfbnVtID0gdGJsLT5mbG93X251 bTsNCj4gKyAgICAgZmluZCA9IDA7DQo+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBtYXhfZmxvd19u dW0gJiYgcmVtYWluaW5nX2Zsb3dfbnVtOyBpKyspIHsNCj4gKyAgICAgICAgICAgICBpZiAodGJs LT5mbG93c1tpXS5zdGFydF9pbmRleCAhPSBJTlZBTElEX0FSUkFZX0lOREVYKSB7DQo+ICsgICAg ICAgICAgICAgICAgICAgICBpZiAoaXNfc2FtZV90Y3A2X2Zsb3codGJsLT5mbG93c1tpXS5rZXks IGtleSkpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICogSVAgdmVyc2lvbiAoNCkgVHJhZmZpYyBDbGFzcyAoOCkg RmxvdyBMYWJlbCAoMjApDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEFsbCBm aWVsZHMgZXhjZXB0IFRyYWZmaWMgY2xhc3Mgc2hvdWxkIGJlDQo+IHNhbWUNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICovDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHZ0Y19mbG93X2RpZmYgPSAoaXB2Nl9oZHItPnZ0Y19mbG93IF4gdGJsLQ0KPiA+Zmxvd3MtPnZ0 Y19mbG93KTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZ0Y19mbG93X2Rp ZmYgJiBodG9ubCgweEYwMEZGRkZGKSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb250aW51ZTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZCA9 IDE7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAg ICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nX2Zsb3dfbnVt LS07DQo+ICsgICAgICAgICAgICAgfQ0KPiArICAgICB9DQo+ICsNCj4gKyAgICAgLyoNCj4gKyAg ICAgICogRmFpbCB0byBmaW5kIGEgbWF0Y2hlZCBmbG93LiBJbnNlcnQgYSBuZXcgZmxvdyBhbmQg c3RvcmUgdGhlDQo+ICsgICAgICAqIHBhY2tldCBpbnRvIHRoZSBmbG93Lg0KPiArICAgICAgKi8N Cj4gKyAgICAgaWYgKGZpbmQgPT0gMCkgew0KPiArICAgICAgICAgICAgIGl0ZW1faWR4ID0gaW5z ZXJ0X25ld19pdGVtKHRibCwgcGt0LCBzdGFydF90aW1lLA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBJTlZBTElEX0FSUkFZX0lOREVYLCBzZW50X3NlcSwgdHJ1ZSk7DQo+ICsgICAg ICAgICAgICAgaWYgKGl0ZW1faWR4ID09IElOVkFMSURfQVJSQVlfSU5ERVgpDQo+ICsgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gLTE7DQo+ICsgICAgICAgICAgICAgaWYgKGluc2VydF9uZXdf Zmxvdyh0YmwsICZrZXksIGlwdjZfaGRyLT52dGNfZmxvdywgaXRlbV9pZHgpDQo+ID09DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVkFMSURfQVJSQVlfSU5ERVgpIHsNCj4gKyAg ICAgICAgICAgICAgICAgICAgIC8qDQo+ICsgICAgICAgICAgICAgICAgICAgICAgKiBGYWlsIHRv IGluc2VydCBhIG5ldyBmbG93LCBzbyBkZWxldGUgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgKiBzdG9yZWQgcGFja2V0Lg0KPiArICAgICAgICAgICAgICAgICAgICAgICovDQo+ICsgICAg ICAgICAgICAgICAgICAgICBkZWxldGVfaXRlbSh0YmwsIGl0ZW1faWR4LCBJTlZBTElEX0FSUkFZ X0lOREVYKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCj4gKyAgICAgICAg ICAgICB9DQo+ICsgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ICsgICAgIH0NCj4gKw0KPiArICAg ICAvKg0KPiArICAgICAgKiBDaGVjayBhbGwgcGFja2V0cyBpbiB0aGUgZmxvdyBhbmQgdHJ5IHRv IGZpbmQgYSBuZWlnaGJvciBmb3INCj4gKyAgICAgICogdGhlIGlucHV0IHBhY2tldC4NCj4gKyAg ICAgICovDQo+ICsgICAgIGN1cl9pZHggPSB0YmwtPmZsb3dzW2ldLnN0YXJ0X2luZGV4Ow0KPiAr ICAgICBwcmV2X2lkeCA9IGN1cl9pZHg7DQo+ICsgICAgIGRvIHsNCj4gKyAgICAgICAgICAgICBj bXAgPSBjaGVja19zZXFfb3B0aW9uKCYodGJsLT5pdGVtc1tjdXJfaWR4XSksIHRjcF9oZHIsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRfc2VxLCAwLCBwa3QtPmw0X2xlbiwg dGNwX2RsLCAwLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsNCj4gKyAg ICAgICAgICAgICBpZiAoY21wKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICBpZiAobWVyZ2Vf dHdvX3RjcF9wYWNrZXRzKCYodGJsLT5pdGVtc1tjdXJfaWR4XSksDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa3QsIGNtcCwgc2VudF9zZXEsIDAsIDAp KSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOw0KPiArICAgICAg ICAgICAgICAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgICAgICAgICAgICAgICAvKg0KPiArICAg ICAgICAgICAgICAgICAgICAgICogRmFpbCB0byBtZXJnZSB0aGUgdHdvIHBhY2tldHMsIGFzIHRo ZSBwYWNrZXQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAqIGxlbmd0aCBpcyBncmVhdGVyIHRo YW4gdGhlIG1heCB2YWx1ZS4gU3RvcmUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAqIHRoZSBw YWNrZXQgaW50byB0aGUgZmxvdy4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAqLw0KPiArICAg ICAgICAgICAgICAgICAgICAgaWYgKGluc2VydF9uZXdfaXRlbSh0YmwsIHBrdCwgc3RhcnRfdGlt ZSwgY3VyX2lkeCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbnRfc2VxLCB0cnVlKSA9PQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIElOVkFMSURfQVJSQVlfSU5ERVgpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiAtMTsNCj4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KPiArICAg ICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgICBwcmV2X2lkeCA9IGN1cl9pZHg7DQo+ICsgICAg ICAgICAgICAgY3VyX2lkeCA9IHRibC0+aXRlbXNbY3VyX2lkeF0ubmV4dF9wa3RfaWR4Ow0KPiAr ICAgICB9IHdoaWxlIChjdXJfaWR4ICE9IElOVkFMSURfQVJSQVlfSU5ERVgpOw0KPiArDQo+ICsg ICAgIC8qIEZhaWwgdG8gZmluZCBhIG5laWdoYm9yLCBzbyBzdG9yZSB0aGUgcGFja2V0IGludG8g dGhlIGZsb3cuICovDQo+ICsgICAgIGlmIChpbnNlcnRfbmV3X2l0ZW0odGJsLCBwa3QsIHN0YXJ0 X3RpbWUsIHByZXZfaWR4LCBzZW50X3NlcSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdHJ1ZSkgPT0gSU5WQUxJRF9BUlJBWV9JTkRFWCkNCj4gKyAgICAgICAgICAgICByZXR1cm4g LTE7DQo+ICsNCj4gKyAgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3VpbnQxNl90DQo+ICtn cm9fdGNwNl90YmxfdGltZW91dF9mbHVzaChzdHJ1Y3QgZ3JvX3RjcDZfdGJsICp0YmwsDQo+ICsg ICAgICAgICAgICAgdWludDY0X3QgZmx1c2hfdGltZXN0YW1wLA0KPiArICAgICAgICAgICAgIHN0 cnVjdCBydGVfbWJ1ZiAqKm91dCwNCj4gKyAgICAgICAgICAgICB1aW50MTZfdCBuYl9vdXQpDQo+ ICt7DQo+ICsgICAgIHVpbnQxNl90IGsgPSAwOw0KPiArICAgICB1aW50MzJfdCBpLCBqOw0KPiAr ICAgICB1aW50MzJfdCBtYXhfZmxvd19udW0gPSB0YmwtPm1heF9mbG93X251bTsNCj4gKw0KPiAr ICAgICBmb3IgKGkgPSAwOyBpIDwgbWF4X2Zsb3dfbnVtOyBpKyspIHsNCj4gKyAgICAgICAgICAg ICBpZiAodW5saWtlbHkodGJsLT5mbG93X251bSA9PSAwKSkNCj4gKyAgICAgICAgICAgICAgICAg ICAgIHJldHVybiBrOw0KPiArDQo+ICsgICAgICAgICAgICAgaiA9IHRibC0+Zmxvd3NbaV0uc3Rh cnRfaW5kZXg7DQo+ICsgICAgICAgICAgICAgd2hpbGUgKGogIT0gSU5WQUxJRF9BUlJBWV9JTkRF WCkgew0KPiArICAgICAgICAgICAgICAgICAgICAgaWYgKHRibC0+aXRlbXNbal0uc3RhcnRfdGlt ZSA8PSBmbHVzaF90aW1lc3RhbXApIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg b3V0W2srK10gPSB0YmwtPml0ZW1zW2pdLmZpcnN0c2VnOw0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiAodGJsLT5pdGVtc1tqXS5uYl9tZXJnZWQgPiAxKQ0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9oZWFkZXIoJih0YmwtPml0ZW1zW2pd KSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqIERlbGV0ZSB0aGUgcGFja2V0IGFuZCBnZXQgdGhlIG5leHQNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcGFja2V0IGluIHRoZSBmbG93Lg0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaiA9IGRlbGV0ZV9pdGVtKHRibCwgaiwNCj4gSU5WQUxJRF9BUlJBWV9JTkRFWCk7 DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRibC0+Zmxvd3NbaV0uc3RhcnRfaW5k ZXggPSBqOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaiA9PSBJTlZBTElE X0FSUkFZX0lOREVYKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRi bC0+Zmxvd19udW0tLTsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo dW5saWtlbHkoayA9PSBuYl9vdXQpKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBrOw0KPiArICAgICAgICAgICAgICAgICAgICAgfSBlbHNlDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8qDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqIFRoZSBsZWZ0IHBhY2tldHMgaW4gdGhpcyBmbG93IHdvbid0IGJlDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqIHRpbWVvdXQuIEdvIHRvIGNoZWNrIG90aGVyIGZsb3dz Lg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgfQ0KPiArICAgICB9DQo+ICsg ICAgIHJldHVybiBrOw0KPiArfQ0KPiArDQo+ICt1aW50MzJfdA0KPiArZ3JvX3RjcDZfdGJsX3Br dF9jb3VudCh2b2lkICp0YmwpDQo+ICt7DQo+ICsgICAgIHN0cnVjdCBncm9fdGNwNl90YmwgKmdy b190YmwgPSB0Ymw7DQo+ICsNCj4gKyAgICAgaWYgKGdyb190YmwpDQo+ICsgICAgICAgICAgICAg cmV0dXJuIGdyb190YmwtPml0ZW1fbnVtOw0KPiArDQo+ICsgICAgIHJldHVybiAwOw0KPiArfQ0K PiBkaWZmIC0tZ2l0IGEvbGliL2dyby9ncm9fdGNwNi5oIGIvbGliL2dyby9ncm9fdGNwNi5oIG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjkxMzI1YzBkYTINCj4gLS0t IC9kZXYvbnVsbA0KPiArKysgYi9saWIvZ3JvL2dyb190Y3A2LmgNCj4gQEAgLTAsMCArMSwxNTAg QEANCj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gKyAqIENv cHlyaWdodChjKSAyMDE3IEludGVsIENvcnBvcmF0aW9uDQo+ICsgKi8NCj4gKw0KPiArI2lmbmRl ZiBfR1JPX1RDUDZfSF8NCj4gKyNkZWZpbmUgX0dST19UQ1A2X0hfDQo+ICsNCj4gKyNkZWZpbmUg SU5WQUxJRF9BUlJBWV9JTkRFWCAweGZmZmZmZmZmVUwgI2RlZmluZQ0KPiArR1JPX1RDUDZfVEJM X01BWF9JVEVNX05VTSAoMTAyNFVMICogMTAyNFVMKQ0KPiArDQo+ICsvKiBIZWFkZXIgZmllbGRz IHJlcHJlc2VudGluZyBhIFRDUC9JUHY2IGZsb3cgKi8gc3RydWN0IHRjcDZfZmxvd19rZXkgew0K PiArICAgICBzdHJ1Y3QgcnRlX2V0aGVyX2FkZHIgZXRoX3NhZGRyOw0KPiArICAgICBzdHJ1Y3Qg cnRlX2V0aGVyX2FkZHIgZXRoX2RhZGRyOw0KPiArICAgICB1aW50OF90ICBzcmNfYWRkclsxNl07 DQo+ICsgICAgIHVpbnQ4X3QgIGRzdF9hZGRyWzE2XTsNCj4gKw0KPiArICAgICB1aW50MzJfdCBy ZWN2X2FjazsNCj4gKyAgICAgdWludDE2X3Qgc3JjX3BvcnQ7DQo+ICsgICAgIHVpbnQxNl90IGRz dF9wb3J0Ow0KPiArfTsNCj4gKw0KPiArc3RydWN0IGdyb190Y3A2X2Zsb3cgew0KPiArICAgICBz dHJ1Y3QgdGNwNl9mbG93X2tleSBrZXk7DQo+ICsgICAgIHJ0ZV9iZTMyX3QgdnRjX2Zsb3c7DQo+ ICsgICAgIC8qDQo+ICsgICAgICAqIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgcGFja2V0IGluIHRo ZSBmbG93Lg0KPiArICAgICAgKiBJTlZBTElEX0FSUkFZX0lOREVYIGluZGljYXRlcyBhbiBlbXB0 eSBmbG93Lg0KPiArICAgICAgKi8NCj4gKyAgICAgdWludDMyX3Qgc3RhcnRfaW5kZXg7DQo+ICt9 Ow0KPiArDQo+ICsvKg0KPiArICogVENQL0lQdjYgcmVhc3NlbWJseSB0YWJsZSBzdHJ1Y3R1cmUu DQo+ICsgKi8NCj4gK3N0cnVjdCBncm9fdGNwNl90Ymwgew0KPiArICAgICAvKiBpdGVtIGFycmF5 ICovDQo+ICsgICAgIHN0cnVjdCBncm9fdGNwX2l0ZW0gKml0ZW1zOw0KPiArICAgICAvKiBmbG93 IGFycmF5ICovDQo+ICsgICAgIHN0cnVjdCBncm9fdGNwNl9mbG93ICpmbG93czsNCj4gKyAgICAg LyogY3VycmVudCBpdGVtIG51bWJlciAqLw0KPiArICAgICB1aW50MzJfdCBpdGVtX251bTsNCj4g KyAgICAgLyogY3VycmVudCBmbG93IG51bSAqLw0KPiArICAgICB1aW50MzJfdCBmbG93X251bTsN Cj4gKyAgICAgLyogaXRlbSBhcnJheSBzaXplICovDQo+ICsgICAgIHVpbnQzMl90IG1heF9pdGVt X251bTsNCj4gKyAgICAgLyogZmxvdyBhcnJheSBzaXplICovDQo+ICsgICAgIHVpbnQzMl90IG1h eF9mbG93X251bTsNCj4gK307DQo+ICsNCj4gKy8qKg0KPiArICogVGhpcyBmdW5jdGlvbiBjcmVh dGVzIGEgVENQL0lQdjYgcmVhc3NlbWJseSB0YWJsZS4NCj4gKyAqDQo+ICsgKiBAcGFyYW0gc29j a2V0X2lkDQo+ICsgKiAgU29ja2V0IGluZGV4IGZvciBhbGxvY2F0aW5nIHRoZSBUQ1AvSVB2NiBy ZWFzc2VtYmxlIHRhYmxlDQo+ICsgKiBAcGFyYW0gbWF4X2Zsb3dfbnVtDQo+ICsgKiAgVGhlIG1h eGltdW0gbnVtYmVyIG9mIGZsb3dzIGluIHRoZSBUQ1AvSVB2NiBHUk8gdGFibGUNCj4gKyAqIEBw YXJhbSBtYXhfaXRlbV9wZXJfZmxvdw0KPiArICogIFRoZSBtYXhpbXVtIG51bWJlciBvZiBwYWNr ZXRzIHBlciBmbG93DQo+ICsgKg0KPiArICogQHJldHVybg0KPiArICogIC0gUmV0dXJuIHRoZSB0 YWJsZSBwb2ludGVyIG9uIHN1Y2Nlc3MuDQo+ICsgKiAgLSBSZXR1cm4gTlVMTCBvbiBmYWlsdXJl Lg0KPiArICovDQo+ICt2b2lkICpncm9fdGNwNl90YmxfY3JlYXRlKHVpbnQxNl90IHNvY2tldF9p ZCwNCj4gKyAgICAgICAgICAgICB1aW50MTZfdCBtYXhfZmxvd19udW0sDQo+ICsgICAgICAgICAg ICAgdWludDE2X3QgbWF4X2l0ZW1fcGVyX2Zsb3cpOw0KPiArDQo+ICsvKioNCj4gKyAqIFRoaXMg ZnVuY3Rpb24gZGVzdHJveXMgYSBUQ1AvSVB2NiByZWFzc2VtYmx5IHRhYmxlLg0KPiArICoNCj4g KyAqIEBwYXJhbSB0YmwNCj4gKyAqICBQb2ludGVyIHBvaW50aW5nIHRvIHRoZSBUQ1AvSVB2NiBy ZWFzc2VtYmx5IHRhYmxlLg0KPiArICovDQo+ICt2b2lkIGdyb190Y3A2X3RibF9kZXN0cm95KHZv aWQgKnRibCk7DQo+ICsNCj4gKy8qKg0KPiArICogVGhpcyBmdW5jdGlvbiBtZXJnZXMgYSBUQ1Av SVB2NiBwYWNrZXQuIEl0IGRvZXNuJ3QgcHJvY2VzcyB0aGUNCj4gK3BhY2tldCwNCj4gKyAqIHdo aWNoIGhhcyBTWU4sIEZJTiwgUlNULCBQU0gsIENXUiwgRUNFIG9yIFVSRyBzZXQsIG9yIGRvZXNu J3QgaGF2ZQ0KPiArICogcGF5bG9hZC4NCj4gKyAqDQo+ICsgKiBUaGlzIGZ1bmN0aW9uIGRvZXNu J3QgY2hlY2sgaWYgdGhlIHBhY2tldCBoYXMgY29ycmVjdCBjaGVja3N1bXMgYW5kDQo+ICsgKiBk b2Vzbid0IHJlLWNhbGN1bGF0ZSBjaGVja3N1bXMgZm9yIHRoZSBtZXJnZWQgcGFja2V0LiBBZGRp dGlvbmFsbHksDQo+ICsgKiBpdCBhc3N1bWVzIHRoZSBwYWNrZXRzIGFyZSBjb21wbGV0ZSAoaS5l LiwgTUY9PTAgJiYgZnJhZ19vZmY9PTApLA0KPiArICogd2hlbiBJUCBmcmFnbWVudGF0aW9uIGlz IHBvc3NpYmxlIChpLmUuLCBERj09MCkuIEl0IHJldHVybnMgdGhlDQo+ICsgKiBwYWNrZXQsIGlm IHRoZSBwYWNrZXQgaGFzIGludmFsaWQgcGFyYW1ldGVycyAoZS5nLiBTWU4gYml0IGlzIHNldCkN Cj4gKyAqIG9yIHRoZXJlIGlzIG5vIGF2YWlsYWJsZSBzcGFjZSBpbiB0aGUgdGFibGUuDQo+ICsg Kg0KPiArICogQHBhcmFtIHBrdA0KPiArICogIFBhY2tldCB0byByZWFzc2VtYmxlDQo+ICsgKiBA cGFyYW0gdGJsDQo+ICsgKiAgUG9pbnRlciBwb2ludGluZyB0byB0aGUgVENQL0lQdjYgcmVhc3Nl bWJseSB0YWJsZQ0KPiArICogQHN0YXJ0X3RpbWUNCj4gKyAqICBUaGUgdGltZSB3aGVuIHRoZSBw YWNrZXQgaXMgaW5zZXJ0ZWQgaW50byB0aGUgdGFibGUNCj4gKyAqDQo+ICsgKiBAcmV0dXJuDQo+ ICsgKiAgLSBSZXR1cm4gYSBwb3NpdGl2ZSB2YWx1ZSBpZiB0aGUgcGFja2V0IGlzIG1lcmdlZC4N Cj4gKyAqICAtIFJldHVybiB6ZXJvIGlmIHRoZSBwYWNrZXQgaXNuJ3QgbWVyZ2VkIGJ1dCBzdG9y ZWQgaW4gdGhlIHRhYmxlLg0KPiArICogIC0gUmV0dXJuIGEgbmVnYXRpdmUgdmFsdWUgZm9yIGlu dmFsaWQgcGFyYW1ldGVycyBvciBubyBhdmFpbGFibGUNCj4gKyAqICAgIHNwYWNlIGluIHRoZSB0 YWJsZS4NCj4gKyAqLw0KPiAraW50MzJfdCBncm9fdGNwNl9yZWFzc2VtYmxlKHN0cnVjdCBydGVf bWJ1ZiAqcGt0LA0KPiArICAgICAgICAgICAgIHN0cnVjdCBncm9fdGNwNl90YmwgKnRibCwNCj4g KyAgICAgICAgICAgICB1aW50NjRfdCBzdGFydF90aW1lKTsNCj4gKw0KPiArLyoqDQo+ICsgKiBU aGlzIGZ1bmN0aW9uIGZsdXNoZXMgdGltZW91dCBwYWNrZXRzIGluIGEgVENQL0lQdjYgcmVhc3Nl bWJseQ0KPiArdGFibGUsDQo+ICsgKiBhbmQgd2l0aG91dCB1cGRhdGluZyBjaGVja3N1bXMuDQo+ ICsgKg0KPiArICogQHBhcmFtIHRibA0KPiArICogIFRDUC9JUHY2IHJlYXNzZW1ibHkgdGFibGUg cG9pbnRlcg0KPiArICogQHBhcmFtIGZsdXNoX3RpbWVzdGFtcA0KPiArICogIEZsdXNoIHBhY2tl dHMgd2hpY2ggYXJlIGluc2VydGVkIGludG8gdGhlIHRhYmxlIGJlZm9yZSBvciBhdCB0aGUNCj4g KyAqICBmbHVzaF90aW1lc3RhbXAuDQo+ICsgKiBAcGFyYW0gb3V0DQo+ICsgKiAgUG9pbnRlciBh cnJheSB1c2VkIHRvIGtlZXAgZmx1c2hlZCBwYWNrZXRzDQo+ICsgKiBAcGFyYW0gbmJfb3V0DQo+ ICsgKiAgVGhlIGVsZW1lbnQgbnVtYmVyIGluICdvdXQnLiBJdCBhbHNvIGRldGVybWluZXMgdGhl IG1heGltdW0gbnVtYmVyDQo+ICtvZg0KPiArICogIHBhY2tldHMgdGhhdCBjYW4gYmUgZmx1c2hl ZCBmaW5hbGx5Lg0KPiArICoNCj4gKyAqIEByZXR1cm4NCj4gKyAqICBUaGUgbnVtYmVyIG9mIGZs dXNoZWQgcGFja2V0cw0KPiArICovDQo+ICt1aW50MTZfdCBncm9fdGNwNl90YmxfdGltZW91dF9m bHVzaChzdHJ1Y3QgZ3JvX3RjcDZfdGJsICp0YmwsDQo+ICsgICAgICAgICAgICAgdWludDY0X3Qg Zmx1c2hfdGltZXN0YW1wLA0KPiArICAgICAgICAgICAgIHN0cnVjdCBydGVfbWJ1ZiAqKm91dCwN Cj4gKyAgICAgICAgICAgICB1aW50MTZfdCBuYl9vdXQpOw0KPiArDQo+ICsvKioNCj4gKyAqIFRo aXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbnVtYmVyIG9mIHRoZSBwYWNrZXRzIGluIGEgVENQL0lQ djYNCj4gKyAqIHJlYXNzZW1ibHkgdGFibGUuDQo+ICsgKg0KPiArICogQHBhcmFtIHRibA0KPiAr ICogIFRDUC9JUHY2IHJlYXNzZW1ibHkgdGFibGUgcG9pbnRlcg0KPiArICoNCj4gKyAqIEByZXR1 cm4NCj4gKyAqICBUaGUgbnVtYmVyIG9mIHBhY2tldHMgaW4gdGhlIHRhYmxlDQo+ICsgKi8NCj4g K3VpbnQzMl90IGdyb190Y3A2X3RibF9wa3RfY291bnQodm9pZCAqdGJsKTsNCj4gKw0KPiArLyoN Cj4gKyAqIENoZWNrIGlmIHR3byBUQ1AvSVB2NiBwYWNrZXRzIGJlbG9uZyB0byB0aGUgc2FtZSBm bG93Lg0KPiArICovDQo+ICtzdGF0aWMgaW5saW5lIGludA0KPiAraXNfc2FtZV90Y3A2X2Zsb3co c3RydWN0IHRjcDZfZmxvd19rZXkgazEsIHN0cnVjdCB0Y3A2X2Zsb3dfa2V5IGsyKSB7DQo+ICsg ICAgIHJldHVybiAoIW1lbWNtcCgmazEsICZrMiwgc2l6ZW9mKHN0cnVjdCB0Y3A2X2Zsb3dfa2V5 KSkpOyB9DQo+ICsNCj4gKyNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvbGliL2dyby9ncm9fdnhsYW5f dGNwNC5jIGIvbGliL2dyby9ncm9fdnhsYW5fdGNwNC5jIGluZGV4DQo+IDNiZTRkZWI3YzcuLjU2 YjMwYjhjOTggMTAwNjQ0DQo+IC0tLSBhL2xpYi9ncm8vZ3JvX3Z4bGFuX3RjcDQuYw0KPiArKysg Yi9saWIvZ3JvL2dyb192eGxhbl90Y3A0LmMNCj4gQEAgLTcsNiArNyw3IEBADQo+ICAjaW5jbHVk ZSA8cnRlX2V0aGRldi5oPg0KPiAgI2luY2x1ZGUgPHJ0ZV91ZHAuaD4NCj4NCj4gKyNpbmNsdWRl ICJncm9fdGNwLmgiDQo+ICAjaW5jbHVkZSAiZ3JvX3Z4bGFuX3RjcDQuaCINCj4NCj4gIHZvaWQg Kg0KPiBAQCAtMjQ4LDcgKzI0OSw3IEBAIG1lcmdlX3R3b192eGxhbl90Y3A0X3BhY2tldHMoc3Ry dWN0DQo+IGdyb192eGxhbl90Y3A0X2l0ZW0gKml0ZW0sDQo+ICAgICAgICAgICAgICAgdWludDE2 X3Qgb3V0ZXJfaXBfaWQsDQo+ICAgICAgICAgICAgICAgdWludDE2X3QgaXBfaWQpDQo+ICB7DQo+ IC0gICAgIGlmIChtZXJnZV90d29fdGNwNF9wYWNrZXRzKCZpdGVtLT5pbm5lcl9pdGVtLCBwa3Qs IGNtcCwNCj4gc2VudF9zZXEsDQo+ICsgICAgIGlmIChtZXJnZV90d29fdGNwX3BhY2tldHMoJml0 ZW0tPmlubmVyX2l0ZW0sIHBrdCwgY21wLCBzZW50X3NlcSwNCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaXBfaWQsIHBrdC0+b3V0ZXJfbDJfbGVuICsNCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGt0LT5vdXRlcl9sM19sZW4pKSB7DQo+ICAgICAgICAgICAgICAgLyog VXBkYXRlIHRoZSBvdXRlciBJUHY0IElEIHRvIHRoZSBsYXJnZSB2YWx1ZS4gKi8gZGlmZiAtLWdp dA0KPiBhL2xpYi9ncm8vZ3JvX3Z4bGFuX3RjcDQuaCBiL2xpYi9ncm8vZ3JvX3Z4bGFuX3RjcDQu aCBpbmRleA0KPiA3ODMyOTQyYTY4Li5kNjhkNWZjZDViIDEwMDY0NA0KPiAtLS0gYS9saWIvZ3Jv L2dyb192eGxhbl90Y3A0LmgNCj4gKysrIGIvbGliL2dyby9ncm9fdnhsYW5fdGNwNC5oDQo+IEBA IC01LDYgKzUsNyBAQA0KPiAgI2lmbmRlZiBfR1JPX1ZYTEFOX1RDUDRfSF8NCj4gICNkZWZpbmUg X0dST19WWExBTl9UQ1A0X0hfDQo+DQo+ICsjaW5jbHVkZSAiZ3JvX3RjcC5oIg0KPiAgI2luY2x1 ZGUgImdyb190Y3A0LmgiDQo+DQo+ICAjZGVmaW5lIEdST19WWExBTl9UQ1A0X1RCTF9NQVhfSVRF TV9OVU0gKDEwMjRVTCAqIDEwMjRVTCkgQEAgLQ0KPiAzNiw3ICszNyw3IEBAIHN0cnVjdCBncm9f dnhsYW5fdGNwNF9mbG93IHsgIH07DQo+DQo+ICBzdHJ1Y3QgZ3JvX3Z4bGFuX3RjcDRfaXRlbSB7 DQo+IC0gICAgIHN0cnVjdCBncm9fdGNwNF9pdGVtIGlubmVyX2l0ZW07DQo+ICsgICAgIHN0cnVj dCBncm9fdGNwX2l0ZW0gaW5uZXJfaXRlbTsNCj4gICAgICAgLyogSVB2NCBJRCBpbiB0aGUgb3V0 ZXIgSVB2NCBoZWFkZXIgKi8NCj4gICAgICAgdWludDE2X3Qgb3V0ZXJfaXBfaWQ7DQo+ICAgICAg IC8qIEluZGljYXRlIGlmIG91dGVyIElQdjQgSUQgY2FuIGJlIGlnbm9yZWQgKi8gZGlmZiAtLWdp dA0KPiBhL2xpYi9ncm8vbWVzb24uYnVpbGQgYi9saWIvZ3JvL21lc29uLmJ1aWxkIGluZGV4IGU0 ZmEyOTU4YmQuLmRiY2UwNTIyMGQNCj4gMTAwNjQ0DQo+IC0tLSBhL2xpYi9ncm8vbWVzb24uYnVp bGQNCj4gKysrIGIvbGliL2dyby9tZXNvbi5idWlsZA0KPiBAQCAtNCw2ICs0LDcgQEANCj4gIHNv dXJjZXMgPSBmaWxlcygNCj4gICAgICAgICAgJ3J0ZV9ncm8uYycsDQo+ICAgICAgICAgICdncm9f dGNwNC5jJywNCj4gKyAgICAgICAgJ2dyb190Y3A2LmMnLA0KPiAgICAgICAgICAnZ3JvX3VkcDQu YycsDQo+ICAgICAgICAgICdncm9fdnhsYW5fdGNwNC5jJywNCj4gICAgICAgICAgJ2dyb192eGxh bl91ZHA0LmMnLA0KPiBkaWZmIC0tZ2l0IGEvbGliL2dyby9ydGVfZ3JvLmMgYi9saWIvZ3JvL3J0 ZV9ncm8uYyBpbmRleA0KPiBlMzUzOTlmZDQyLi5kODI0ZWViZDkzIDEwMDY0NA0KPiAtLS0gYS9s aWIvZ3JvL3J0ZV9ncm8uYw0KPiArKysgYi9saWIvZ3JvL3J0ZV9ncm8uYw0KPiBAQCAtOCw2ICs4 LDcgQEANCj4NCj4gICNpbmNsdWRlICJydGVfZ3JvLmgiDQo+ICAjaW5jbHVkZSAiZ3JvX3RjcDQu aCINCj4gKyNpbmNsdWRlICJncm9fdGNwNi5oIg0KPiAgI2luY2x1ZGUgImdyb191ZHA0LmgiDQo+ ICAjaW5jbHVkZSAiZ3JvX3Z4bGFuX3RjcDQuaCINCj4gICNpbmNsdWRlICJncm9fdnhsYW5fdWRw NC5oIg0KPiBAQCAtMjAsMTQgKzIxLDE2IEBAIHR5cGVkZWYgdWludDMyX3QgKCpncm9fdGJsX3Br dF9jb3VudF9mbikodm9pZCAqdGJsKTsNCj4NCj4gIHN0YXRpYyBncm9fdGJsX2NyZWF0ZV9mbiB0 YmxfY3JlYXRlX2ZuW1JURV9HUk9fVFlQRV9NQVhfTlVNXSA9IHsNCj4gICAgICAgICAgICAgICBn cm9fdGNwNF90YmxfY3JlYXRlLCBncm9fdnhsYW5fdGNwNF90YmxfY3JlYXRlLA0KPiAtICAgICAg ICAgICAgIGdyb191ZHA0X3RibF9jcmVhdGUsIGdyb192eGxhbl91ZHA0X3RibF9jcmVhdGUsIE5V TEx9Ow0KPiArICAgICAgICAgICAgIGdyb191ZHA0X3RibF9jcmVhdGUsIGdyb192eGxhbl91ZHA0 X3RibF9jcmVhdGUsDQo+IGdyb190Y3A2X3RibF9jcmVhdGUsDQo+ICtOVUxMfTsNCj4gIHN0YXRp YyBncm9fdGJsX2Rlc3Ryb3lfZm4gdGJsX2Rlc3Ryb3lfZm5bUlRFX0dST19UWVBFX01BWF9OVU1d ID0gew0KPiAgICAgICAgICAgICAgICAgICAgICAgZ3JvX3RjcDRfdGJsX2Rlc3Ryb3ksIGdyb192 eGxhbl90Y3A0X3RibF9kZXN0cm95LA0KPiAgICAgICAgICAgICAgICAgICAgICAgZ3JvX3VkcDRf dGJsX2Rlc3Ryb3ksIGdyb192eGxhbl91ZHA0X3RibF9kZXN0cm95LA0KPiArICAgICAgICAgICAg ICAgICAgICAgZ3JvX3RjcDZfdGJsX2Rlc3Ryb3ksDQo+ICAgICAgICAgICAgICAgICAgICAgICBO VUxMfTsNCj4gIHN0YXRpYyBncm9fdGJsX3BrdF9jb3VudF9mbiB0YmxfcGt0X2NvdW50X2ZuW1JU RV9HUk9fVFlQRV9NQVhfTlVNXQ0KPiA9IHsNCj4gICAgICAgICAgICAgICAgICAgICAgIGdyb190 Y3A0X3RibF9wa3RfY291bnQsDQo+IGdyb192eGxhbl90Y3A0X3RibF9wa3RfY291bnQsDQo+ICAg ICAgICAgICAgICAgICAgICAgICBncm9fdWRwNF90YmxfcGt0X2NvdW50LA0KPiBncm9fdnhsYW5f dWRwNF90YmxfcGt0X2NvdW50LA0KPiArICAgICAgICAgICAgICAgICAgICAgZ3JvX3RjcDZfdGJs X3BrdF9jb3VudCwNCj4gICAgICAgICAgICAgICAgICAgICAgIE5VTEx9Ow0KPg0KPiAgI2RlZmlu ZSBJU19JUFY0X1RDUF9QS1QocHR5cGUpIChSVEVfRVRIX0lTX0lQVjRfSERSKHB0eXBlKSAmJiBc IEBADQo+IC0zNSw2ICszOCwxMiBAQCBzdGF0aWMgZ3JvX3RibF9wa3RfY291bnRfZm4NCj4gdGJs X3BrdF9jb3VudF9mbltSVEVfR1JPX1RZUEVfTUFYX05VTV0gPSB7DQo+ICAgICAgICAgICAgICAg KChwdHlwZSAmIFJURV9QVFlQRV9MNF9GUkFHKSAhPSBSVEVfUFRZUEVfTDRfRlJBRykgJiYNCj4g XA0KPiAgICAgICAgICAgICAgIChSVEVfRVRIX0lTX1RVTk5FTF9QS1QocHR5cGUpID09IDApKQ0K Pg0KPiArLyogR1JPIHdpdGggZXh0ZW5zaW9uIGhlYWRlcnMgaXMgbm90IHN1cHBvcnRlZCAqLyAj ZGVmaW5lDQo+ICtJU19JUFY2X1RDUF9QS1QocHR5cGUpIChSVEVfRVRIX0lTX0lQVjZfSERSKHB0 eXBlKSAmJiBcDQo+ICsgICAgICAgICAgICAgKChwdHlwZSAmIFJURV9QVFlQRV9MNF9UQ1ApID09 IFJURV9QVFlQRV9MNF9UQ1ApICYmIFwNCj4gKyAgICAgICAgICAgICAoKHB0eXBlICYgUlRFX1BU WVBFX0w0X0ZSQUcpICE9IFJURV9QVFlQRV9MNF9GUkFHKSAmJg0KPiBcDQo+ICsgICAgICAgICAg ICAgKFJURV9FVEhfSVNfVFVOTkVMX1BLVChwdHlwZSkgPT0gMCkpDQo+ICsNCj4gICNkZWZpbmUg SVNfSVBWNF9VRFBfUEtUKHB0eXBlKSAoUlRFX0VUSF9JU19JUFY0X0hEUihwdHlwZSkgJiYgXA0K PiAgICAgICAgICAgICAgICgocHR5cGUgJiBSVEVfUFRZUEVfTDRfVURQKSA9PSBSVEVfUFRZUEVf TDRfVURQKSAmJiBcDQo+ICAgICAgICAgICAgICAgKFJURV9FVEhfSVNfVFVOTkVMX1BLVChwdHlw ZSkgPT0gMCkpDQo+IEBAIC0xNDcsNyArMTU2LDExIEBAIHJ0ZV9ncm9fcmVhc3NlbWJsZV9idXJz dChzdHJ1Y3QgcnRlX21idWYgKipwa3RzLA0KPiAgICAgICAvKiBhbGxvY2F0ZSBhIHJlYXNzZW1i bHkgdGFibGUgZm9yIFRDUC9JUHY0IEdSTyAqLw0KPiAgICAgICBzdHJ1Y3QgZ3JvX3RjcDRfdGJs IHRjcF90Ymw7DQo+ICAgICAgIHN0cnVjdCBncm9fdGNwNF9mbG93DQo+IHRjcF9mbG93c1tSVEVf R1JPX01BWF9CVVJTVF9JVEVNX05VTV07DQo+IC0gICAgIHN0cnVjdCBncm9fdGNwNF9pdGVtIHRj cF9pdGVtc1tSVEVfR1JPX01BWF9CVVJTVF9JVEVNX05VTV0NCj4gPSB7ezB9IH07DQo+ICsgICAg IHN0cnVjdCBncm9fdGNwX2l0ZW0gdGNwX2l0ZW1zW1JURV9HUk9fTUFYX0JVUlNUX0lURU1fTlVN XQ0KPiA9IHt7MH0gfTsNCj4gKw0KPiArICAgICBzdHJ1Y3QgZ3JvX3RjcDZfdGJsIHRjcDZfdGJs Ow0KPiArICAgICBzdHJ1Y3QgZ3JvX3RjcDZfZmxvdw0KPiB0Y3A2X2Zsb3dzW1JURV9HUk9fTUFY X0JVUlNUX0lURU1fTlVNXTsNCj4gKyAgICAgc3RydWN0IGdyb190Y3BfaXRlbSB0Y3A2X2l0ZW1z W1JURV9HUk9fTUFYX0JVUlNUX0lURU1fTlVNXQ0KPiA9IHt7MH0gfTsNCj4NCj4gICAgICAgLyog YWxsb2NhdGUgYSByZWFzc2VtYmx5IHRhYmxlIGZvciBVRFAvSVB2NCBHUk8gKi8NCj4gICAgICAg c3RydWN0IGdyb191ZHA0X3RibCB1ZHBfdGJsOw0KPiBAQCAtMTcxLDEwICsxODQsMTAgQEAgcnRl X2dyb19yZWFzc2VtYmxlX2J1cnN0KHN0cnVjdCBydGVfbWJ1ZiAqKnBrdHMsDQo+ICAgICAgIGlu dDMyX3QgcmV0Ow0KPiAgICAgICB1aW50MTZfdCBpLCB1bnByb2Nlc3NfbnVtID0gMCwgbmJfYWZ0 ZXJfZ3JvID0gbmJfcGt0czsNCj4gICAgICAgdWludDhfdCBkb190Y3A0X2dybyA9IDAsIGRvX3Z4 bGFuX3RjcF9ncm8gPSAwLCBkb191ZHA0X2dybyA9IDAsDQo+IC0gICAgICAgICAgICAgZG9fdnhs YW5fdWRwX2dybyA9IDA7DQo+ICsgICAgICAgICAgICAgZG9fdnhsYW5fdWRwX2dybyA9IDAsIGRv X3RjcDZfZ3JvID0gMDsNCj4NCj4gICAgICAgaWYgKHVubGlrZWx5KChwYXJhbS0+Z3JvX3R5cGVz ICYgKFJURV9HUk9fSVBWNF9WWExBTl9UQ1BfSVBWNA0KPiB8DQo+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUlRFX0dST19UQ1BfSVBWNCB8DQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUlRFX0dST19UQ1BfSVBWNCB8DQo+IFJURV9HUk9fVENQ X0lQVjYgfA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJURV9HUk9f SVBWNF9WWExBTl9VRFBfSVBWNCB8DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUlRFX0dST19VRFBfSVBWNCkpID09IDApKQ0KPiAgICAgICAgICAgICAgIHJldHVybiBu Yl9wa3RzOw0KPiBAQCAtMjM2LDYgKzI0OSwxOCBAQCBydGVfZ3JvX3JlYXNzZW1ibGVfYnVyc3Qo c3RydWN0IHJ0ZV9tYnVmICoqcGt0cywNCj4gICAgICAgICAgICAgICBkb191ZHA0X2dybyA9IDE7 DQo+ICAgICAgIH0NCj4NCj4gKyAgICAgaWYgKHBhcmFtLT5ncm9fdHlwZXMgJiBSVEVfR1JPX1RD UF9JUFY2KSB7DQo+ICsgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGl0ZW1fbnVtOyBpKysp DQo+ICsgICAgICAgICAgICAgICAgICAgICB0Y3A2X2Zsb3dzW2ldLnN0YXJ0X2luZGV4ID0gSU5W QUxJRF9BUlJBWV9JTkRFWDsNCj4gKw0KPiArICAgICAgICAgICAgIHRjcDZfdGJsLmZsb3dzID0g dGNwNl9mbG93czsNCj4gKyAgICAgICAgICAgICB0Y3A2X3RibC5pdGVtcyA9IHRjcDZfaXRlbXM7 DQo+ICsgICAgICAgICAgICAgdGNwNl90YmwuZmxvd19udW0gPSAwOw0KPiArICAgICAgICAgICAg IHRjcDZfdGJsLml0ZW1fbnVtID0gMDsNCj4gKyAgICAgICAgICAgICB0Y3A2X3RibC5tYXhfZmxv d19udW0gPSBpdGVtX251bTsNCj4gKyAgICAgICAgICAgICB0Y3A2X3RibC5tYXhfaXRlbV9udW0g PSBpdGVtX251bTsNCj4gKyAgICAgICAgICAgICBkb190Y3A2X2dybyA9IDE7DQo+ICsgICAgIH0N Cj4NCj4gICAgICAgZm9yIChpID0gMDsgaSA8IG5iX3BrdHM7IGkrKykgew0KPiAgICAgICAgICAg ICAgIC8qDQo+IEBAIC0yNzYsNiArMzAxLDE0IEBAIHJ0ZV9ncm9fcmVhc3NlbWJsZV9idXJzdChz dHJ1Y3QgcnRlX21idWYgKipwa3RzLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu Yl9hZnRlcl9ncm8tLTsNCj4gICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJldCA8IDAp DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucHJvY2Vzc19wa3RzW3VucHJvY2Vz c19udW0rK10gPSBwa3RzW2ldOw0KPiArICAgICAgICAgICAgIH0gZWxzZSBpZiAoSVNfSVBWNl9U Q1BfUEtUKHBrdHNbaV0tPnBhY2tldF90eXBlKSAmJg0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkb190Y3A2X2dybykgew0KPiArICAgICAgICAgICAgICAgICAgICAgcmV0ID0gZ3Jv X3RjcDZfcmVhc3NlbWJsZShwa3RzW2ldLCAmdGNwNl90YmwsIDApOw0KPiArICAgICAgICAgICAg ICAgICAgICAgaWYgKHJldCA+IDApDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q IG1lcmdlIHN1Y2Nlc3NmdWxseSAqLw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu Yl9hZnRlcl9ncm8tLTsNCj4gKyAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJldCA8IDAp DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucHJvY2Vzc19wa3RzW3VucHJvY2Vz c19udW0rK10gPSBwa3RzW2ldOw0KPiAgICAgICAgICAgICAgIH0gZWxzZQ0KPiAgICAgICAgICAg ICAgICAgICAgICAgdW5wcm9jZXNzX3BrdHNbdW5wcm9jZXNzX251bSsrXSA9IHBrdHNbaV07DQo+ ICAgICAgIH0NCj4gQEAgLTI4Myw5ICszMTYsMTcgQEAgcnRlX2dyb19yZWFzc2VtYmxlX2J1cnN0 KHN0cnVjdCBydGVfbWJ1ZiAqKnBrdHMsDQo+ICAgICAgIGlmICgobmJfYWZ0ZXJfZ3JvIDwgbmJf cGt0cykNCj4gICAgICAgICAgICAgICAgfHwgKHVucHJvY2Vzc19udW0gPCBuYl9wa3RzKSkgew0K PiAgICAgICAgICAgICAgIGkgPSAwOw0KPiArICAgICAgICAgICAgIC8qIENvcHkgdW5wcm9jZXNz ZWQgcGFja2V0cyAqLw0KPiArICAgICAgICAgICAgIGlmICh1bnByb2Nlc3NfbnVtID4gMCkgew0K PiArICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KCZwa3RzW2ldLCB1bnByb2Nlc3NfcGt0cywN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IHJ0 ZV9tYnVmICopICoNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBy b2Nlc3NfbnVtKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgIGkgPSB1bnByb2Nlc3NfbnVtOw0K PiArICAgICAgICAgICAgIH0NCj4gKw0KPiAgICAgICAgICAgICAgIC8qIEZsdXNoIGFsbCBwYWNr ZXRzIGZyb20gdGhlIHRhYmxlcyAqLw0KPiAgICAgICAgICAgICAgIGlmIChkb192eGxhbl90Y3Bf Z3JvKSB7DQo+IC0gICAgICAgICAgICAgICAgICAgICBpID0NCj4gZ3JvX3Z4bGFuX3RjcDRfdGJs X3RpbWVvdXRfZmx1c2goJnZ4bGFuX3RjcF90YmwsDQo+ICsgICAgICAgICAgICAgICAgICAgICBp ICs9DQo+IGdyb192eGxhbl90Y3A0X3RibF90aW1lb3V0X2ZsdXNoKCZ2eGxhbl90Y3BfdGJsLA0K PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHBrdHMsIG5iX3BrdHMp Ow0KPiAgICAgICAgICAgICAgIH0NCj4NCj4gQEAgLTMwNCwxMyArMzQ1LDExIEBAIHJ0ZV9ncm9f cmVhc3NlbWJsZV9idXJzdChzdHJ1Y3QgcnRlX21idWYgKipwa3RzLA0KPiAgICAgICAgICAgICAg ICAgICAgICAgaSArPSBncm9fdWRwNF90YmxfdGltZW91dF9mbHVzaCgmdWRwX3RibCwgMCwNCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGt0c1tpXSwgbmJfcGt0cyAt IGkpOw0KPiAgICAgICAgICAgICAgIH0NCj4gLSAgICAgICAgICAgICAvKiBDb3B5IHVucHJvY2Vz c2VkIHBhY2tldHMgKi8NCj4gLSAgICAgICAgICAgICBpZiAodW5wcm9jZXNzX251bSA+IDApIHsN Cj4gLSAgICAgICAgICAgICAgICAgICAgIG1lbWNweSgmcGt0c1tpXSwgdW5wcm9jZXNzX3BrdHMs DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBy dGVfbWJ1ZiAqKSAqDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5w cm9jZXNzX251bSk7DQo+ICsNCj4gKyAgICAgICAgICAgICBpZiAoZG9fdGNwNl9ncm8pIHsNCj4g KyAgICAgICAgICAgICAgICAgICAgIGkgKz0gZ3JvX3RjcDZfdGJsX3RpbWVvdXRfZmx1c2goJnRj cDZfdGJsLCAwLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwa3Rz W2ldLCBuYl9wa3RzIC0gaSk7DQo+ICAgICAgICAgICAgICAgfQ0KPiAtICAgICAgICAgICAgIG5i X2FmdGVyX2dybyA9IGkgKyB1bnByb2Nlc3NfbnVtOw0KPiAgICAgICB9DQo+DQo+ICAgICAgIHJl dHVybiBuYl9hZnRlcl9ncm87DQo+IEBAIC0zMjMsMTMgKzM2MiwxMyBAQCBydGVfZ3JvX3JlYXNz ZW1ibGUoc3RydWN0IHJ0ZV9tYnVmICoqcGt0cywgIHsNCj4gICAgICAgc3RydWN0IHJ0ZV9tYnVm ICp1bnByb2Nlc3NfcGt0c1tuYl9wa3RzXTsNCj4gICAgICAgc3RydWN0IGdyb19jdHggKmdyb19j dHggPSBjdHg7DQo+IC0gICAgIHZvaWQgKnRjcF90YmwsICp1ZHBfdGJsLCAqdnhsYW5fdGNwX3Ri bCwgKnZ4bGFuX3VkcF90Ymw7DQo+ICsgICAgIHZvaWQgKnRjcF90YmwsICp1ZHBfdGJsLCAqdnhs YW5fdGNwX3RibCwgKnZ4bGFuX3VkcF90YmwsICp0Y3A2X3RibDsNCj4gICAgICAgdWludDY0X3Qg Y3VycmVudF90aW1lOw0KPiAgICAgICB1aW50MTZfdCBpLCB1bnByb2Nlc3NfbnVtID0gMDsNCj4g LSAgICAgdWludDhfdCBkb190Y3A0X2dybywgZG9fdnhsYW5fdGNwX2dybywgZG9fdWRwNF9ncm8s DQo+IGRvX3Z4bGFuX3VkcF9ncm87DQo+ICsgICAgIHVpbnQ4X3QgZG9fdGNwNF9ncm8sIGRvX3Z4 bGFuX3RjcF9ncm8sIGRvX3VkcDRfZ3JvLA0KPiBkb192eGxhbl91ZHBfZ3JvLA0KPiArZG9fdGNw Nl9ncm87DQo+DQo+ICAgICAgIGlmICh1bmxpa2VseSgoZ3JvX2N0eC0+Z3JvX3R5cGVzICYNCj4g KFJURV9HUk9fSVBWNF9WWExBTl9UQ1BfSVBWNCB8DQo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUlRFX0dST19UQ1BfSVBWNCB8DQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUlRFX0dST19UQ1BfSVBWNCB8DQo+IFJURV9HUk9fVENQX0lQVjYg fA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJURV9HUk9fSVBWNF9W WExBTl9VRFBfSVBWNCB8DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UlRFX0dST19VRFBfSVBWNCkpID09IDApKQ0KPiAgICAgICAgICAgICAgIHJldHVybiBuYl9wa3Rz Ow0KPiBAQCAtMzM4LDYgKzM3Nyw3IEBAIHJ0ZV9ncm9fcmVhc3NlbWJsZShzdHJ1Y3QgcnRlX21i dWYgKipwa3RzLA0KPiAgICAgICB2eGxhbl90Y3BfdGJsID0gZ3JvX2N0eC0NCj4gPnRibHNbUlRF X0dST19JUFY0X1ZYTEFOX1RDUF9JUFY0X0lOREVYXTsNCj4gICAgICAgdWRwX3RibCA9IGdyb19j dHgtPnRibHNbUlRFX0dST19VRFBfSVBWNF9JTkRFWF07DQo+ICAgICAgIHZ4bGFuX3VkcF90Ymwg PSBncm9fY3R4LQ0KPiA+dGJsc1tSVEVfR1JPX0lQVjRfVlhMQU5fVURQX0lQVjRfSU5ERVhdOw0K PiArICAgICB0Y3A2X3RibCA9IGdyb19jdHgtPnRibHNbUlRFX0dST19UQ1BfSVBWNl9JTkRFWF07 DQo+DQo+ICAgICAgIGRvX3RjcDRfZ3JvID0gKGdyb19jdHgtPmdyb190eXBlcyAmIFJURV9HUk9f VENQX0lQVjQpID09DQo+ICAgICAgICAgICAgICAgUlRFX0dST19UQ1BfSVBWNDsNCj4gQEAgLTM0 Nyw2ICszODcsNyBAQCBydGVfZ3JvX3JlYXNzZW1ibGUoc3RydWN0IHJ0ZV9tYnVmICoqcGt0cywN Cj4gICAgICAgICAgICAgICBSVEVfR1JPX1VEUF9JUFY0Ow0KPiAgICAgICBkb192eGxhbl91ZHBf Z3JvID0gKGdyb19jdHgtPmdyb190eXBlcyAmDQo+IFJURV9HUk9fSVBWNF9WWExBTl9VRFBfSVBW NCkgPT0NCj4gICAgICAgICAgICAgICBSVEVfR1JPX0lQVjRfVlhMQU5fVURQX0lQVjQ7DQo+ICsg ICAgIGRvX3RjcDZfZ3JvID0gKGdyb19jdHgtPmdyb190eXBlcyAmIFJURV9HUk9fVENQX0lQVjYp ID09DQo+ICtSVEVfR1JPX1RDUF9JUFY2Ow0KPg0KPiAgICAgICBjdXJyZW50X3RpbWUgPSBydGVf cmR0c2MoKTsNCj4NCj4gQEAgLTM3MSw2ICs0MTIsMTEgQEAgcnRlX2dyb19yZWFzc2VtYmxlKHN0 cnVjdCBydGVfbWJ1ZiAqKnBrdHMsDQo+ICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvX3Vk cDRfcmVhc3NlbWJsZShwa3RzW2ldLCB1ZHBfdGJsLA0KPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF90aW1lKSA8IDApDQo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVucHJvY2Vzc19wa3RzW3VucHJvY2Vzc19udW0rK10gPSBwa3Rz W2ldOw0KPiArICAgICAgICAgICAgIH0gZWxzZSBpZiAoSVNfSVBWNl9UQ1BfUEtUKHBrdHNbaV0t PnBhY2tldF90eXBlKSAmJg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb190Y3A2 X2dybykgew0KPiArICAgICAgICAgICAgICAgICAgICAgaWYgKGdyb190Y3A2X3JlYXNzZW1ibGUo cGt0c1tpXSwgdGNwNl90YmwsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjdXJyZW50X3RpbWUpIDwgMCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5wcm9jZXNzX3BrdHNbdW5wcm9jZXNzX251bSsrXSA9IHBrdHNbaV07DQo+ICAgICAg ICAgICAgICAgfSBlbHNlDQo+ICAgICAgICAgICAgICAgICAgICAgICB1bnByb2Nlc3NfcGt0c1t1 bnByb2Nlc3NfbnVtKytdID0gcGt0c1tpXTsNCj4gICAgICAgfQ0KPiBAQCAtNDI2LDYgKzQ3Miwx NSBAQCBydGVfZ3JvX3RpbWVvdXRfZmx1c2godm9pZCAqY3R4LA0KPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBncm9fY3R4LT50YmxzW1JURV9HUk9fVURQX0lQVjRfSU5ERVhdLA0KPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbHVzaF90aW1lc3RhbXAsDQo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZvdXRbbnVtXSwgbGVmdF9uYl9vdXQpOw0KPiArICAgICAg ICAgICAgIGxlZnRfbmJfb3V0ID0gbWF4X25iX291dCAtIG51bTsNCj4gKyAgICAgfQ0KPiArDQo+ ICsgICAgIGlmICgoZ3JvX3R5cGVzICYgUlRFX0dST19UQ1BfSVBWNikgJiYgbGVmdF9uYl9vdXQg PiAwKSB7DQo+ICsgICAgICAgICAgICAgbnVtICs9IGdyb190Y3A2X3RibF90aW1lb3V0X2ZsdXNo KA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm9fY3R4LT50YmxzW1JURV9HUk9f VENQX0lQVjZfSU5ERVhdLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbHVzaF90 aW1lc3RhbXAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRbbnVtXSwgbGVm dF9uYl9vdXQpOw0KPiArDQo+ICAgICAgIH0NCj4NCj4gICAgICAgcmV0dXJuIG51bTsNCj4gZGlm ZiAtLWdpdCBhL2xpYi9ncm8vcnRlX2dyby5oIGIvbGliL2dyby9ydGVfZ3JvLmggaW5kZXgNCj4g OWY5ZWQ0OTM1YS4uYzgzZGZkOWFkMSAxMDA2NDQNCj4gLS0tIGEvbGliL2dyby9ydGVfZ3JvLmgN Cj4gKysrIGIvbGliL2dyby9ydGVfZ3JvLmgNCj4gQEAgLTM4LDYgKzM4LDkgQEAgZXh0ZXJuICJD IiB7DQo+ICAjZGVmaW5lIFJURV9HUk9fSVBWNF9WWExBTl9VRFBfSVBWNF9JTkRFWCAzICAjZGVm aW5lDQo+IFJURV9HUk9fSVBWNF9WWExBTl9VRFBfSVBWNCAoMVVMTCA8PA0KPiBSVEVfR1JPX0lQ VjRfVlhMQU5fVURQX0lQVjRfSU5ERVgpDQo+ICAvKio8IFZ4TEFOIFVEUC9JUHY0IEdSTyBmbGFn LiAqLw0KPiArI2RlZmluZSBSVEVfR1JPX1RDUF9JUFY2X0lOREVYIDQNCj4gKyNkZWZpbmUgUlRF X0dST19UQ1BfSVBWNiAoMVVMTCA8PCBSVEVfR1JPX1RDUF9JUFY2X0lOREVYKSAvKio8DQo+IFRD UC9JUHY2DQo+ICtHUk8gZmxhZy4gKi8NCj4NCj4gIC8qKg0KPiAgICogU3RydWN0dXJlIHVzZWQg dG8gY3JlYXRlIEdSTyBjb250ZXh0IG9iamVjdHMgb3IgdXNlZCB0byBwYXNzDQo+IC0tDQo+IDIu MjUuMQ0K --_000_CY5PR11MB64870A129DC1981861C7D14392489CY5PR11MB6487namp_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv VFIvUkVDLWh0bWw0MCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IkdlbmVyYXRv ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPg0KPHN0eWxl PjwhLS0NCi8qIEZvbnQgRGVmaW5pdGlvbnMgKi8NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6 IkNhbWJyaWEgTWF0aCI7DQoJcGFub3NlLTE6MiA0IDUgMyA1IDQgNiAzIDIgNDt9DQpAZm9udC1m YWNlDQoJe2ZvbnQtZmFtaWx5OkRlbmdYaWFuOw0KCXBhbm9zZS0xOjIgMSA2IDAgMyAxIDEgMSAx IDE7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseTpDYWxpYnJpOw0KCXBhbm9zZS0xOjIgMTUg NSAyIDIgMiA0IDMgMiA0O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6IlxARGVuZ1hpYW4i Ow0KCXBhbm9zZS0xOjIgMSA2IDAgMyAxIDEgMSAxIDE7fQ0KLyogU3R5bGUgRGVmaW5pdGlvbnMg Ki8NCnAuTXNvTm9ybWFsLCBsaS5Nc29Ob3JtYWwsIGRpdi5Nc29Ob3JtYWwNCgl7bWFyZ2luOjBp bjsNCglmb250LXNpemU6MTEuMHB0Ow0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5zLXNlcmlm O30NCmE6bGluaywgc3Bhbi5Nc29IeXBlcmxpbmsNCgl7bXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0K CWNvbG9yOmJsdWU7DQoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9DQpzcGFuLkVtYWlsU3R5 bGUxOQ0KCXttc28tc3R5bGUtdHlwZTpwZXJzb25hbC1jb21wb3NlOw0KCWZvbnQtZmFtaWx5OiJD YWxpYnJpIixzYW5zLXNlcmlmOw0KCWNvbG9yOndpbmRvd3RleHQ7fQ0KLk1zb0NocERlZmF1bHQN Cgl7bXNvLXN0eWxlLXR5cGU6ZXhwb3J0LW9ubHk7DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNh bnMtc2VyaWY7fQ0KQHBhZ2UgV29yZFNlY3Rpb24xDQoJe3NpemU6OC41aW4gMTEuMGluOw0KCW1h cmdpbjoxLjBpbiAxLjBpbiAxLjBpbiAxLjBpbjt9DQpkaXYuV29yZFNlY3Rpb24xDQoJe3BhZ2U6 V29yZFNlY3Rpb24xO30NCi0tPjwvc3R5bGU+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+DQo8bzpz aGFwZWRlZmF1bHRzIHY6ZXh0PSJlZGl0IiBzcGlkbWF4PSIxMDI2IiAvPg0KPC94bWw+PCFbZW5k aWZdLS0+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+DQo8bzpzaGFwZWxheW91dCB2OmV4dD0iZWRp dCI+DQo8bzppZG1hcCB2OmV4dD0iZWRpdCIgZGF0YT0iMSIgLz4NCjwvbzpzaGFwZWxheW91dD48 L3htbD48IVtlbmRpZl0tLT4NCjwvaGVhZD4NCjxib2R5IGxhbmc9IkVOLVVTIiBsaW5rPSJibHVl IiB2bGluaz0icHVycGxlIiBzdHlsZT0id29yZC13cmFwOmJyZWFrLXdvcmQiPg0KPGRpdiBjbGFz cz0iV29yZFNlY3Rpb24xIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPkhpIEt1bWFyYSw8bzpwPjwv bzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPHAg Y2xhc3M9Ik1zb05vcm1hbCI+Rm9yIHRoZSBpZGVhIHlvdSBwcm9wb3NlZCwgaXTigJlzIGJldHRl ciB0byBzZW5kIHRoZSBwYXRjaCBhbmQgSSBjYW4gcmV2aWV3IGxhdGVyLjxvOnA+PC9vOnA+PC9w Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIj5UaGFua3MsPG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5K aWF5dTxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286 cD48L3A+DQo8ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItbGVmdDpzb2xpZCBibHVlIDEu NXB0O3BhZGRpbmc6MGluIDBpbiAwaW4gNC4wcHQiPg0KPGRpdj4NCjxkaXYgc3R5bGU9ImJvcmRl cjpub25lO2JvcmRlci10b3A6c29saWQgI0UxRTFFMSAxLjBwdDtwYWRkaW5nOjMuMHB0IDBpbiAw aW4gMGluIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxiPkZyb206PC9iPiBrdW1hcmFwYXJhbWVz aHdhcmFuIHJhdGhpbmF2ZWwgJmx0O2t1bWFyYXBhcmFtZXNoOTJAZ21haWwuY29tJmd0Ow0KPGJy Pg0KPGI+U2VudDo8L2I+IFRodXJzZGF5LCBNYXkgMjUsIDIwMjMgNzoyMyBQTTxicj4NCjxiPlRv OjwvYj4gSHUsIEppYXl1ICZsdDtqaWF5dS5odUBpbnRlbC5jb20mZ3Q7PGJyPg0KPGI+Q2M6PC9i PiBkZXZAZHBkay5vcmc8YnI+DQo8Yj5TdWJqZWN0OjwvYj4gUmU6IFtQQVRDSCB2Ml0gZ3JvIDog aXB2NiBjaGFuZ2VzIHRvIHN1cHBvcnQgR1JPIGZvciBUQ1AvaXB2NjxvOnA+PC9vOnA+PC9wPg0K PC9kaXY+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9w Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPGRp dj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5PbiBUdWUsIE1heSAxNiwgMjAyMyBhdCAy OjU44oCvUE0ga3VtYXJhcGFyYW1lc2h3YXJhbiByYXRoaW5hdmVsICZsdDs8YSBocmVmPSJtYWls dG86a3VtYXJhcGFyYW1lc2g5MkBnbWFpbC5jb20iPmt1bWFyYXBhcmFtZXNoOTJAZ21haWwuY29t PC9hPiZndDsgd3JvdGU6PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxibG9ja3F1b3RlIHN0eWxl PSJib3JkZXI6bm9uZTtib3JkZXItbGVmdDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MGlu IDBpbiAwaW4gNi4wcHQ7bWFyZ2luLWxlZnQ6NC44cHQ7bWFyZ2luLXJpZ2h0OjBpbiI+DQo8ZGl2 Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9k aXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxkaXY+DQo8 ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+T24gRnJpLCBNYXkgMTIsIDIwMjMgYXQgODoxN+KA r0FNIEh1LCBKaWF5dSAmbHQ7PGEgaHJlZj0ibWFpbHRvOmppYXl1Lmh1QGludGVsLmNvbSIgdGFy Z2V0PSJfYmxhbmsiPmppYXl1Lmh1QGludGVsLmNvbTwvYT4mZ3Q7IHdyb3RlOjxvOnA+PC9vOnA+ PC9wPg0KPC9kaXY+DQo8YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLWxlZnQ6 c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjBpbiAwaW4gMGluIDYuMHB0O21hcmdpbi1sZWZ0 OjQuOHB0O21hcmdpbi1yaWdodDowaW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+SGkgS3VtYXIs PGJyPg0KPGJyPg0KRm9yIFRDUC9JUHY0IGFuZCBUQ1AvSVB2NiwgdGhlIFRDUCBsYXllciBpcyB0 aGUgc2FtZSBhbmQgdGhlIGRpZmZlcmVuY2UgaXM8YnI+DQp0aGUgSVAgbGF5ZXIuIFNvIHRoZSBj b2RlIHVzZWQgZm9yIFRDUCBsYXllciBuZWVkcyB0byBiZSBzaGFyZWQgYW1vbmcgZ3JvX3RjcDYu Yzxicj4NCmFuZCBncm9fdGNwNC5jLiBCdXQgdGhlcmUgYXJlJm5ic3A7IHRvbyBtdWNoIGNvZGUg ZHVwbGljYXRpb24gaW4gZ3JvX3RjcDQuYyBhbmQgZ3JvX3RjcDYuYzxicj4NCmluIGN1cnJlbnQg aW1wbGVtZW50YXRpb24uIDxvOnA+PC9vOnA+PC9wPg0KPC9ibG9ja3F1b3RlPg0KPGRpdj4NCjxw IGNsYXNzPSJNc29Ob3JtYWwiPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8YmxvY2tx dW90ZSBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLWxlZnQ6c29saWQgI0NDQ0NDQyAxLjBwdDtw YWRkaW5nOjBpbiAwaW4gMGluIDYuMHB0O21hcmdpbi1sZWZ0OjQuOHB0O21hcmdpbi1yaWdodDow aW4iPg0KPGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci1sZWZ0OnNvbGlkICND Q0NDQ0MgMS4wcHQ7cGFkZGluZzowaW4gMGluIDBpbiA2LjBwdDttYXJnaW4tbGVmdDo0LjhwdDtt YXJnaW4tcmlnaHQ6MGluIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPlN1cmUsIHdpbGwgZG8gaXQu IEkgaGFkIGZvbGxvd2VkIHRoZSBzYW1lIHRoYXQgd2FzIHNpbWlsYXIgdG8gd2hhdCB3YXMgZG9u ZSBpbiBncm9fdGNwNC5jIGFuZCBncm9fdnhsYW5fdGNwNC5jLiBFdmVudGhvdWdoIHRoZSBUQ1Ag Y291bGQgaGF2ZSBiZWVuIHJldXNlZCBmb3IgdnhsYW4sIHdlIGhhZCBjb2RlIGR1cGxpY2F0aW9u LiBJIGFzc3VtZWQgdGhhdCB0aGlzIHdhcyBiZXR0ZXIgaW4gdGVybXMgb2YgcGVyZm9ybWFuY2UN CiBldGMuJm5ic3A7IDxvOnA+PC9vOnA+PC9wPg0KPC9ibG9ja3F1b3RlPg0KPC9ibG9ja3F1b3Rl Pg0KPC9kaXY+DQo8L2Rpdj4NCjwvYmxvY2txdW90ZT4NCjxibG9ja3F1b3RlIHN0eWxlPSJib3Jk ZXI6bm9uZTtib3JkZXItbGVmdDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MGluIDBpbiAw aW4gNi4wcHQ7bWFyZ2luLWxlZnQ6NC44cHQ7bWFyZ2luLXJpZ2h0OjBpbiI+DQo8YmxvY2txdW90 ZSBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLWxlZnQ6c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRk aW5nOjBpbiAwaW4gMGluIDYuMHB0O21hcmdpbi1sZWZ0OjQuOHB0O21hcmdpbi1yaWdodDowaW4i Pg0KPGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci1sZWZ0OnNvbGlkICNDQ0ND Q0MgMS4wcHQ7cGFkZGluZzowaW4gMGluIDBpbiA2LjBwdDttYXJnaW4tbGVmdDo0LjhwdDttYXJn aW4tcmlnaHQ6MGluIj4NCjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItbGVm dDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MGluIDBpbiAwaW4gNi4wcHQ7bWFyZ2luLWxl ZnQ6NC44cHQ7bWFyZ2luLXJpZ2h0OjBpbiI+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+ Jm5ic3A7Jm5ic3A7IDxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8L2Jsb2NrcXVvdGU+DQo8L2Js b2NrcXVvdGU+DQo8L2Jsb2NrcXVvdGU+DQo8L2Jsb2NrcXVvdGU+DQo8YmxvY2txdW90ZSBzdHls ZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLWxlZnQ6c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjBp biAwaW4gMGluIDYuMHB0O21hcmdpbi1sZWZ0OjQuOHB0O21hcmdpbi1yaWdodDowaW4iPg0KPGJs b2NrcXVvdGUgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci1sZWZ0OnNvbGlkICNDQ0NDQ0MgMS4w cHQ7cGFkZGluZzowaW4gMGluIDBpbiA2LjBwdDttYXJnaW4tbGVmdDo0LjhwdDttYXJnaW4tcmln aHQ6MGluIj4NCjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItbGVmdDpzb2xp ZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MGluIDBpbiAwaW4gNi4wcHQ7bWFyZ2luLWxlZnQ6NC44 cHQ7bWFyZ2luLXJpZ2h0OjBpbiI+DQo8YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9y ZGVyLWxlZnQ6c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjBpbiAwaW4gMGluIDYuMHB0O21h cmdpbi1sZWZ0OjQuOHB0O21hcmdpbi1yaWdodDowaW4iPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29O b3JtYWwiPiZuYnNwOyBJIGFtIHRoaW5raW5nIHR3byBoYXZlIHR3byBmdW5jdGlvbnMgZ3JvX3Rj cDRfcmVhc3NlbWJsZSBhbmQgZ3JvX3RjcDZfcmVhc3NlbWJsZSB3aGljaCB3b3VsZCBwZXJmb3Jt IHRoZSB2YWxpZGF0aW9ucyBmb3IgdGhlIHJlc3BlY3RpdmUgSVAgdHlwZXMuIFRoZSBHUk8gdGFi bGUgaXMgZGlmZmVyZW50IGZvciBWNCBhbmQgVjYgYnV0IHRoZSBpdG1lcyBhcnJheSBpbiB0aGUg Z3JvIHRhYmxlIGlzIGNvbW1vbg0KIHRvIGJvdGggVjQgYW5kIFY2IGFuZCBoZW5jZSB3ZSBjYW4g bW92ZSBpbnNlcnRfaXRlbSBhbmQgZGVsZXRlX2l0ZW0gdG8gZ3JvX3RjcC5jL2ggZmlsZS4gSW50 cm9kdWNlIGEgbmV3IGZ1bmN0aW9uIGdyb190Y3BfcmVhc3NlbWJsZSB3aGljaCB3b3VsZCBwZXJm b3JtIHRoZSBsb2dpYyBvZiBsb29rdXAvY3JlYXRlL21lcmdlIG9wZXJhdGlvbnMuIFNpbmNlIHRo ZSB0YWJsZSBhbmQgdGhlIGtleSB3b3VsZCBiZSBkaWZmZXJlbnQgZm9yIFY0L1Y2IGludHJvZHVj ZQ0KIGEgbmV3IHN0cnVjdHVyZSB3aGljaCB3b3VsZCBob2xkIHRoZSBsb29rdXAvY3JlYXRlIGZs b3cgZnVuY3Rpb24gcG9pbnRlcnMgZm9yIGVhY2ggb2YgdGhlIElQIHR5cGUuIFRoaXMgd2F5IHdl IHdvdWxkIHJlZHVjZSB0aGUgY29kZSBkdXBsaWNhdGlvbiBpbiBncm9fdGNwNF9yZWFzc21lYmxl IGFuZCBncm9fdGNwNl9yZWFzc2VtYmxlLiBQbGVhZSBsZXQgbWUga25vdyB5b3VyIHRob3VnaHRz LiBXZSBjYW4gZ2V0IG9uIGEgY2FsbCBpZiByZXF1aXJlDQogdG8gZGlzY3VzcyBmdXJ0aGVyLiA8 bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9ibG9ja3F1b3RlPg0KPC9ibG9ja3F1b3RlPg0KPC9i bG9ja3F1b3RlPg0KPC9ibG9ja3F1b3RlPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPiZu YnNwOzxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyOm5v bmU7Ym9yZGVyLWxlZnQ6c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjBpbiAwaW4gMGluIDYu MHB0O21hcmdpbi1sZWZ0OjQuOHB0O21hcmdpbi1yaWdodDowaW4iPg0KPGJsb2NrcXVvdGUgc3R5 bGU9ImJvcmRlcjpub25lO2JvcmRlci1sZWZ0OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzow aW4gMGluIDBpbiA2LjBwdDttYXJnaW4tbGVmdDo0LjhwdDttYXJnaW4tcmlnaHQ6MGluIj4NCjxi bG9ja3F1b3RlIHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItbGVmdDpzb2xpZCAjQ0NDQ0NDIDEu MHB0O3BhZGRpbmc6MGluIDBpbiAwaW4gNi4wcHQ7bWFyZ2luLWxlZnQ6NC44cHQ7bWFyZ2luLXJp Z2h0OjBpbiI+DQo8YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLWxlZnQ6c29s aWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjBpbiAwaW4gMGluIDYuMHB0O21hcmdpbi1sZWZ0OjQu OHB0O21hcmdpbi1yaWdodDowaW4iPg0KPGRpdj4NCjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXI6 bm9uZTtib3JkZXItbGVmdDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MGluIDBpbiAwaW4g Ni4wcHQ7bWFyZ2luLWxlZnQ6NC44cHQ7bWFyZ2luLXJpZ2h0OjBpbiI+DQo8cCBjbGFzcz0iTXNv Tm9ybWFsIj5Gb3IgZXhhbXBsZSwgc3RydWN0IHRjcDZfZmxvd19rZXkgYW5kIHN0cnVjdCB0Y3A0 X2Zsb3dfa2V5IHNoYXJlIG1vc3Qgb2YgZmllbGRzLCBleGNlcHQ8YnI+DQp0aGUgSVAgYWRkcmVz cyB0eXBlLiBJdCdzIGJldHRlciB0byBoYXZlIGEgY29tbW9uIFRDUCBmbG93IGtleSBzdHJ1Y3R1 cmUgaW4gZ3JvX3RjcC5oLiBJbjxicj4NCmdyb190Y3A0LmggYW5kIGdyb190Y3A2LmgsIHdlIGlt cGxlbWVudCB0Y3A0IGFuZCB0Y3A2IGZsb3cga2V5IHN0cnVjdHVyZXMgd2l0aCB1c2luZyB0aGU8 YnI+DQpjb21tb24gc3RydWN0dXJlLiZuYnNwOyA8bzpwPjwvbzpwPjwvcD4NCjwvYmxvY2txdW90 ZT4NCjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItbGVmdDpzb2xpZCAjQ0ND Q0NDIDEuMHB0O3BhZGRpbmc6MGluIDBpbiAwaW4gNi4wcHQ7bWFyZ2luLWxlZnQ6NC44cHQ7bWFy Z2luLXJpZ2h0OjBpbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWJvdHRv bToxMi4wcHQiPlRoYW5rcyw8YnI+DQpKaWF5dTxicj4NCjxicj4NCiZndDsgLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS08YnI+DQomZ3Q7IEZyb206IEt1bWFyYSBQYXJhbWVzaHdhcmFuICZsdDs8 YSBocmVmPSJtYWlsdG86a3VtYXJhcGFyYW1lc2g5MkBnbWFpbC5jb20iIHRhcmdldD0iX2JsYW5r Ij5rdW1hcmFwYXJhbWVzaDkyQGdtYWlsLmNvbTwvYT4mZ3Q7PGJyPg0KJmd0OyBTZW50OiBGcmlk YXksIE9jdG9iZXIgMjEsIDIwMjIgMjoxNCBBTTxicj4NCiZndDsgVG86IEh1LCBKaWF5dSAmbHQ7 PGEgaHJlZj0ibWFpbHRvOmppYXl1Lmh1QGludGVsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmppYXl1 Lmh1QGludGVsLmNvbTwvYT4mZ3Q7PGJyPg0KJmd0OyBDYzogPGEgaHJlZj0ibWFpbHRvOmRldkBk cGRrLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmRldkBkcGRrLm9yZzwvYT47IEt1bWFyYSBQYXJhbWVz aHdhcmFuPGJyPg0KJmd0OyAmbHQ7PGEgaHJlZj0ibWFpbHRvOmt1bWFyYXBhcmFtZXNoOTJAZ21h aWwuY29tIiB0YXJnZXQ9Il9ibGFuayI+a3VtYXJhcGFyYW1lc2g5MkBnbWFpbC5jb208L2E+Jmd0 Ozxicj4NCiZndDsgU3ViamVjdDogW1BBVENIIHYyXSBncm8gOiBpcHY2IGNoYW5nZXMgdG8gc3Vw cG9ydCBHUk8gZm9yIFRDUC9pcHY2PGJyPg0KJmd0OyA8YnI+DQomZ3Q7IEZyb206IEt1bWFyYSBQ YXJhbWVzaHdhcmFuICZsdDs8YSBocmVmPSJtYWlsdG86a3VtYXJhcGFyYW1lc2g5MkBnbWFpbC5j b20iIHRhcmdldD0iX2JsYW5rIj5rdW1hcmFwYXJhbWVzaDkyQGdtYWlsLmNvbTwvYT4mZ3Q7PGJy Pg0KJmd0OyA8YnI+DQomZ3Q7IFRoZSBwYXRjaCBhZGRzIEdSTyBzdXBwb3J0IGZvciBUQ1AvaXB2 NiBwYWNrZXRzLiBUaGlzIGRvZXMgbm90IGluY2x1ZGUgdGhlPGJyPg0KJmd0OyBzdXBwb3J0IGZv ciB2eGxhbiwgdWRwIGlwdjYgcGFja2V0cy48YnI+DQomZ3Q7IDxicj4NCiZndDsgU2lnbmVkLW9m Zi1ieTogS3VtYXJhIFBhcmFtZXNod2FyYW4gJmx0OzxhIGhyZWY9Im1haWx0bzprdW1hcmFwYXJh bWVzaDkyQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmt1bWFyYXBhcmFtZXNoOTJAZ21haWwu Y29tPC9hPiZndDs8YnI+DQomZ3Q7IC0tLTxicj4NCiZndDsgdjE6PGJyPg0KJmd0OyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyogQ2hhbmdlcyB0byBzdXBwb3J0IEdSTyBmb3IgVENQL2lwdjYg cGFja2V0cy4gVGhpcyBkb2VzIG5vdDxicj4NCiZndDsgaW5jbHVkZTxicj4NCiZndDsmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dnhsYW4gY2hhbmdlcy48YnI+DQomZ3Q7Jm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7KiBUaGUgR1JPIGlzIHBlcmZvcm1lZCBvbmx5IGZvciBpcHY2 IHBhY2tldHMgdGhhdCBkb2VzIG5vdCBjb250YWluPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyBleHRlbnNpb24gaGVhZGVycy48YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7KiBUaGUgbG9naWMgZm9yIHRoZSBUQ1AgY29hbGVzY2luZyByZW1haW5zIHRoZSBz YW1lLCBpbiBpcHY2IGhlYWRlcjxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7dGhlIHNvdXJjZSBhZGRyZXNzLCBkZXN0aW5hdGlvbiBhZGRyZXNzLCBmbG93IGxhYmVs LCB2ZXJzaW9uIGZpZWxkczxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7YXJlIGV4cGVjdGVkIHRvIGJlIHRoZSBzYW1lLjxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsqIFJlLW9yZ2FuaXNlZCB0aGUgY29kZSB0byByZXVzZSBjZXJ0YWluIHRjcCBm dW5jdGlvbnMgZm9yIGJvdGggaXB2NDxicj4NCiZndDsgYW5kPGJyPg0KJmd0OyZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpcHY2IGZsb3dzLjxicj4NCiZndDsgdjI6PGJyPg0KJmd0 OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyogRml4IGNvbW1lbnRzIGluIGdyb190Y3A2Lmgg aGVhZGVyIGZpbGUuPGJyPg0KJmd0OyA8YnI+DQomZ3Q7Jm5ic3A7IGxpYi9ncm8vZ3JvX3RjcC5o Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgMTU1ICsrKysrKysrKysrKysrKys8YnI+DQom Z3Q7Jm5ic3A7IGxpYi9ncm8vZ3JvX3RjcDQuYyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wm bmJzcDsgJm5ic3A7NyArLTxicj4NCiZndDsmbmJzcDsgbGliL2dyby9ncm9fdGNwNC5oJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAxNTIgKy0tLS0tLS0tLS0tLS0tPGJyPg0KJmd0OyZuYnNw OyBsaWIvZ3JvL2dyb190Y3A2LmMmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IDM4Nzxicj4N CiZndDsgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrPGJyPg0KJmd0OyZu YnNwOyBsaWIvZ3JvL2dyb190Y3A2LmgmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IDE1MCAr KysrKysrKysrKysrKys8YnI+DQomZ3Q7Jm5ic3A7IGxpYi9ncm8vZ3JvX3Z4bGFuX3RjcDQuYyB8 Jm5ic3A7ICZuYnNwOzMgKy08YnI+DQomZ3Q7Jm5ic3A7IGxpYi9ncm8vZ3JvX3Z4bGFuX3RjcDQu aCB8Jm5ic3A7ICZuYnNwOzMgKy08YnI+DQomZ3Q7Jm5ic3A7IGxpYi9ncm8vbWVzb24uYnVpbGQm bmJzcDsgJm5ic3A7ICZuYnNwOyB8Jm5ic3A7ICZuYnNwOzEgKzxicj4NCiZndDsmbmJzcDsgbGli L2dyby9ydGVfZ3JvLmMmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCZuYnNwOyA4MyArKysr KysrLS08YnI+DQomZ3Q7Jm5ic3A7IGxpYi9ncm8vcnRlX2dyby5oJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7IHwmbmJzcDsgJm5ic3A7MyArPGJyPg0KJmd0OyZuYnNwOyAxMCBmaWxlcyBjaGFu Z2VkLCA3NzQgaW5zZXJ0aW9ucygrKSwgMTcwIGRlbGV0aW9ucygtKSZuYnNwOyBjcmVhdGUgbW9k ZSAxMDA2NDQ8YnI+DQomZ3Q7IGxpYi9ncm8vZ3JvX3RjcC5oJm5ic3A7IGNyZWF0ZSBtb2RlIDEw MDY0NCBsaWIvZ3JvL2dyb190Y3A2LmMmbmJzcDsgY3JlYXRlIG1vZGU8YnI+DQomZ3Q7IDEwMDY0 NCBsaWIvZ3JvL2dyb190Y3A2Lmg8YnI+DQomZ3Q7IDxicj4NCiZndDsgZGlmZiAtLWdpdCBhL2xp Yi9ncm8vZ3JvX3RjcC5oIGIvbGliL2dyby9ncm9fdGNwLmggbmV3IGZpbGUgbW9kZSAxMDA2NDQg aW5kZXg8YnI+DQomZ3Q7IDAwMDAwMDAwMDAuLmM1ZDI0OGEwMjI8YnI+DQomZ3Q7IC0tLSAvZGV2 L251bGw8YnI+DQomZ3Q7ICsrKyBiL2xpYi9ncm8vZ3JvX3RjcC5oPGJyPg0KJmd0OyBAQCAtMCww ICsxLDE1NSBAQDxicj4NCiZndDsgKyNpZm5kZWYgX0dST19UQ1BfSF88YnI+DQomZ3Q7ICsjZGVm aW5lIF9HUk9fVENQX0hfPGJyPg0KJmd0OyArPGJyPg0KJmd0OyArI2luY2x1ZGUgJmx0O3J0ZV90 Y3AuaCZndDs8YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICsvKjxicj4NCiZndDsgKyAqIFRoZSBtYXgg bGVuZ3RoIG9mIGEgSVB2NCBwYWNrZXQsIHdoaWNoIGluY2x1ZGVzIHRoZSBsZW5ndGggb2YgdGhl IEwzPGJyPg0KJmd0OyArICogaGVhZGVyLCB0aGUgTDQgaGVhZGVyIGFuZCB0aGUgZGF0YSBwYXls b2FkLjxicj4NCiZndDsgKyAqLzxicj4NCiZndDsgKyNkZWZpbmUgTUFYX0lQX1BLVF9MRU5HVEgg VUlOVDE2X01BWDxicj4NCiZndDsgKzxicj4NCiZndDsgKy8qIFRoZSBtYXhpbXVtIFRDUCBoZWFk ZXIgbGVuZ3RoICovPGJyPg0KJmd0OyArI2RlZmluZSBNQVhfVENQX0hMRU4gNjA8YnI+DQomZ3Q7 ICsjZGVmaW5lIElOVkFMSURfVENQX0hEUkxFTihsZW4pIFw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5i c3A7ICZuYnNwOygoKGxlbikgJmx0OyBzaXplb2Yoc3RydWN0IHJ0ZV90Y3BfaGRyKSkgfHwgKChs ZW4pICZndDsgTUFYX1RDUF9ITEVOKSk8YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICtzdHJ1Y3QgZ3Jv X3RjcF9pdGVtIHs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOy8qPGJyPg0KJmd0OyAr Jm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBUaGUgZmlyc3QgTUJVRiBzZWdtZW50IG9mIHRoZSBwYWNr ZXQuIElmIHRoZSB2YWx1ZTxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICogaXMgTlVM TCwgaXQgbWVhbnMgdGhlIGl0ZW0gaXMgZW1wdHkuPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAm bmJzcDsgKi88YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBydGVfbWJ1ZiAq Zmlyc3RzZWc7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBUaGUgbGFzdCBNQlVG IHNlZ21lbnQgb2YgdGhlIHBhY2tldCAqLzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7 c3RydWN0IHJ0ZV9tYnVmICpsYXN0c2VnOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7 Lyo8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAqIFRoZSB0aW1lIHdoZW4gdGhlIGZp cnN0IHBhY2tldCBpcyBpbnNlcnRlZCBpbnRvIHRoZSB0YWJsZS48YnI+DQomZ3Q7ICsmbmJzcDsg Jm5ic3A7ICZuYnNwOyAqIFRoaXMgdmFsdWUgd29uJ3QgYmUgdXBkYXRlZCwgZXZlbiBpZiB0aGUg cGFja2V0IGlzIG1lcmdlZDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICogd2l0aCBv dGhlciBwYWNrZXRzLjxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICovPGJyPg0KJmd0 OyArJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50NjRfdCBzdGFydF90aW1lOzxicj4NCiZndDsgKyZu YnNwOyAmbmJzcDsgJm5ic3A7Lyo8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAqIG5l eHRfcGt0X2lkeCBpcyB1c2VkIHRvIGNoYWluIHRoZSBwYWNrZXRzIHRoYXQ8YnI+DQomZ3Q7ICsm bmJzcDsgJm5ic3A7ICZuYnNwOyAqIGFyZSBpbiB0aGUgc2FtZSBmbG93IGJ1dCBjYW4ndCBiZSBt ZXJnZWQgdG9nZXRoZXI8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAqIChlLmcuIGNh dXNlZCBieSBwYWNrZXQgcmVvcmRlcmluZykuPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJz cDsgKi88YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMl90IG5leHRfcGt0X2lk eDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOy8qIFRDUCBzZXF1ZW5jZSBudW1iZXIg b2YgdGhlIHBhY2tldCAqLzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3Qg c2VudF9zZXE7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBJUHY0IElEIG9mIHRo ZSBwYWNrZXQgKi88YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQxNl90IGlwX2lk Ozxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7LyogdGhlIG51bWJlciBvZiBtZXJnZWQg cGFja2V0cyAqLzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDE2X3QgbmJfbWVy Z2VkOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7LyogSW5kaWNhdGUgaWYgSVB2NCBJ RCBjYW4gYmUgaWdub3JlZCAqLzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDhf dCBpc19hdG9taWM7PGJyPg0KJmd0OyArfTs8YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICsvKjxicj4N CiZndDsgKyAqIE1lcmdlIHR3byBUQ1AgcGFja2V0cyB3aXRob3V0IHVwZGF0aW5nIGNoZWNrc3Vt cy48YnI+DQomZ3Q7ICsgKiBJZiBjbXAgaXMgbGFyZ2VyIHRoYW4gMCwgYXBwZW5kIHRoZSBuZXcg cGFja2V0IHRvIHRoZTxicj4NCiZndDsgKyAqIG9yaWdpbmFsIHBhY2tldC4gT3RoZXJ3aXNlLCBw cmUtcGVuZCB0aGUgbmV3IHBhY2tldCB0bzxicj4NCiZndDsgKyAqIHRoZSBvcmlnaW5hbCBwYWNr ZXQuPGJyPg0KJmd0OyArICovPGJyPg0KJmd0OyArc3RhdGljIGlubGluZSBpbnQ8YnI+DQomZ3Q7 ICttZXJnZV90d29fdGNwX3BhY2tldHMoc3RydWN0IGdyb190Y3BfaXRlbSAqaXRlbSw8YnI+DQom Z3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJ1 Y3QgcnRlX21idWYgKnBrdCw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDtpbnQgY21wLDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMl90IHNlbnRfc2VxLDxicj4NCiZn dDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQx Nl90IGlwX2lkLDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwO3VpbnQxNl90IGwyX29mZnNldCk8YnI+DQomZ3Q7ICt7PGJyPg0KJmd0OyAr Jm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3QgcnRlX21idWYgKnBrdF9oZWFkLCAqcGt0X3RhaWws ICpsYXN0c2VnOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDE2X3QgaGRyX2xl biwgbDJfbGVuOzxicj4NCiZndDsgKzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7aWYg KGNtcCAmZ3Q7IDApIHs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDtwa3RfaGVhZCA9IGl0ZW0tJmd0O2ZpcnN0c2VnOzxicj4NCiZndDsg KyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3BrdF90YWls ID0gcGt0Ozxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7fSBlbHNlIHs8YnI+DQomZ3Q7 ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtwa3RfaGVh ZCA9IHBrdDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDtwa3RfdGFpbCA9IGl0ZW0tJmd0O2ZpcnN0c2VnOzxicj4NCiZndDsgKyZuYnNw OyAmbmJzcDsgJm5ic3A7fTxicj4NCiZndDsgKzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5i c3A7LyogY2hlY2sgaWYgdGhlIElQdjQgcGFja2V0IGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gdGhl IG1heCB2YWx1ZSAqLzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7aGRyX2xlbiA9IGwy X29mZnNldCArIHBrdF9oZWFkLSZndDtsMl9sZW4gKyBwa3RfaGVhZC0mZ3Q7bDNfbGVuICs8YnI+ DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtw a3RfaGVhZC0mZ3Q7bDRfbGVuOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7bDJfbGVu ID0gbDJfb2Zmc2V0ICZndDsgMCA/IHBrdF9oZWFkLSZndDtvdXRlcl9sMl9sZW4gOiBwa3RfaGVh ZC0mZ3Q7bDJfbGVuOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKHVubGlrZWx5 KHBrdF9oZWFkLSZndDtwa3RfbGVuIC0gbDJfbGVuICsgcGt0X3RhaWwtJmd0O3BrdF9sZW4gLTxi cj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 aGRyX2xlbiAmZ3Q7IE1BWF9JUF9QS1RfTEVOR1RIKSk8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gMDs8YnI+DQomZ3Q7ICs8 YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOy8qIHJlbW92ZSB0aGUgcGFja2V0IGhlYWRl ciBmb3IgdGhlIHRhaWwgcGFja2V0ICovPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDty dGVfcGt0bWJ1Zl9hZGoocGt0X3RhaWwsIGhkcl9sZW4pOzxicj4NCiZndDsgKzxicj4NCiZndDsg KyZuYnNwOyAmbmJzcDsgJm5ic3A7LyogY2hhaW4gdHdvIHBhY2tldHMgdG9nZXRoZXIgKi88YnI+ DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO2lmIChjbXAgJmd0OyAwKSB7PGJyPg0KJmd0OyAr Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aXRlbS0mZ3Q7 bGFzdHNlZy0mZ3Q7bmV4dCA9IHBrdDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpdGVtLSZndDtsYXN0c2VnID0gcnRlX3BrdG1idWZf bGFzdHNlZyhwa3QpOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOy8qIHVwZGF0ZSBJUCBJRCB0byB0aGUgbGFyZ2VyIHZhbHVlICovPGJy Pg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 aXRlbS0mZ3Q7aXBfaWQgPSBpcF9pZDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO30g ZWxzZSB7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7bGFzdHNlZyA9IHJ0ZV9wa3RtYnVmX2xhc3RzZWcocGt0KTs8YnI+DQomZ3Q7ICsm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtsYXN0c2VnLSZn dDtuZXh0ID0gaXRlbS0mZ3Q7Zmlyc3RzZWc7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aXRlbS0mZ3Q7Zmlyc3RzZWcgPSBwa3Q7PGJy Pg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 LyogdXBkYXRlIHNlbnRfc2VxIHRvIHRoZSBzbWFsbGVyIHZhbHVlICovPGJyPg0KJmd0OyArJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aXRlbS0mZ3Q7c2Vu dF9zZXEgPSBzZW50X3NlcTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDtpdGVtLSZndDtpcF9pZCA9IGlwX2lkOzxicj4NCiZndDsgKyZu YnNwOyAmbmJzcDsgJm5ic3A7fTxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7aXRlbS0m Z3Q7bmJfbWVyZ2VkKys7PGJyPg0KJmd0OyArPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJz cDsvKiB1cGRhdGUgTUJVRiBtZXRhZGF0YSBmb3IgdGhlIG1lcmdlZCBwYWNrZXQgKi88YnI+DQom Z3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3BrdF9oZWFkLSZndDtuYl9zZWdzICs9IHBrdF90YWls LSZndDtuYl9zZWdzOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7cGt0X2hlYWQtJmd0 O3BrdF9sZW4gKz0gcGt0X3RhaWwtJmd0O3BrdF9sZW47PGJyPg0KJmd0OyArPGJyPg0KJmd0OyAr Jm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gMTs8YnI+DQomZ3Q7ICt9PGJyPg0KJmd0OyArPGJy Pg0KJmd0OyArLyo8YnI+DQomZ3Q7ICsgKiBDaGVjayBpZiB0d28gVENQL0lQdjQgcGFja2V0cyBh cmUgbmVpZ2hib3JzLjxicj4NCiZndDsgKyAqLzxicj4NCiZndDsgK3N0YXRpYyBpbmxpbmUgaW50 PGJyPg0KJmd0OyArY2hlY2tfc2VxX29wdGlvbihzdHJ1Y3QgZ3JvX3RjcF9pdGVtICppdGVtLDxi cj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw O3N0cnVjdCBydGVfdGNwX2hkciAqdGNwaCw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzJfdCBzZW50X3NlcSw8YnI+DQomZ3Q7 ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MTZf dCBpcF9pZCw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDt1aW50MTZfdCB0Y3BfaGwsPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDE2X3QgdGNwX2RsLDxicj4NCiZndDsg KyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQxNl90 IGwyX29mZnNldCw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDt1aW50OF90IGlzX2F0b21pYyk8YnI+DQomZ3Q7ICt7PGJyPg0KJmd0OyAr Jm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3QgcnRlX21idWYgKnBrdF9vcmlnID0gaXRlbS0mZ3Q7 Zmlyc3RzZWc7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtjaGFyICppcGhfb3JpZzs8 YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBydGVfdGNwX2hkciAqdGNwaF9v cmlnOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDE2X3QgbGVuLCB0Y3BfaGxf b3JpZzs8YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO2lwaF9vcmln ID0gKGNoYXIgKikocnRlX3BrdG1idWZfbXRvZChwa3Rfb3JpZywgY2hhciAqKSArPGJyPg0KJmd0 OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwO2wyX29mZnNldCArIHBrdF9vcmlnLSZndDtsMl9sZW4pOzxi cj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dGNwaF9vcmlnID0gKHN0cnVjdCBydGVfdGNw X2hkciAqKShpcGhfb3JpZyArIHBrdF9vcmlnLSZndDtsM19sZW4pOzxicj4NCiZndDsgKyZuYnNw OyAmbmJzcDsgJm5ic3A7dGNwX2hsX29yaWcgPSBwa3Rfb3JpZy0mZ3Q7bDRfbGVuOzxicj4NCiZn dDsgKzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7LyogQ2hlY2sgaWYgVENQIG9wdGlv biBmaWVsZHMgZXF1YWwgKi88YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO2xlbiA9IFJU RV9NQVgodGNwX2hsLCB0Y3BfaGxfb3JpZykgLSBzaXplb2Yoc3RydWN0IHJ0ZV90Y3BfaGRyKTs8 YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO2lmICgodGNwX2hsICE9IHRjcF9obF9vcmln KSB8fCAoKGxlbiAmZ3Q7IDApICZhbXA7JmFtcDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyhtZW1jbXAodGNwaCArIDEsIHRjcGhfb3Jp ZyArIDEsPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7bGVuKSAhPSAwKSkpPGJyPg0KJmd0 OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJu IDA7PGJyPg0KJmd0OyArPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBEb24ndCBt ZXJnZSBwYWNrZXRzIHdob3NlIERGIGJpdHMgYXJlIGRpZmZlcmVudCAqLzxicj4NCiZndDsgKyZu YnNwOyAmbmJzcDsgJm5ic3A7aWYgKHVubGlrZWx5KGl0ZW0tJmd0O2lzX2F0b21pYyBeIGlzX2F0 b21pYykpPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7cmV0dXJuIDA7PGJyPg0KJmd0OyArPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAm bmJzcDsvKiBjaGVjayBpZiB0aGUgdHdvIHBhY2tldHMgYXJlIG5laWdoYm9ycyAqLzxicj4NCiZn dDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7bGVuID0gcGt0X29yaWctJmd0O3BrdF9sZW4gLSBsMl9v ZmZzZXQgLSBwa3Rfb3JpZy0mZ3Q7bDJfbGVuIC08YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtwa3Rfb3JpZy0mZ3Q7bDNfbGVuIC0gdGNw X2hsX29yaWc7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAoKHNlbnRfc2VxID09 IGl0ZW0tJmd0O3NlbnRfc2VxICsgbGVuKSAmYW1wOyZhbXA7IChpc19hdG9taWMgfHw8YnI+DQom Z3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyhpcF9p ZCA9PSBpdGVtLSZndDtpcF9pZCArIDEpKSk8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBhcHBlbmQgdGhlIG5ldyBwYWNrZXQgKi88 YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDtyZXR1cm4gMTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO2Vsc2UgaWYgKChzZW50 X3NlcSArIHRjcF9kbCA9PSBpdGVtLSZndDtzZW50X3NlcSkgJmFtcDsmYW1wOyAoaXNfYXRvbWlj IHx8PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsoaXBfaWQgKyBpdGVtLSZndDtuYl9tZXJnZWQgPT0gaXRlbS0mZ3Q7aXBfaWQpKSk8YnI+ DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsv KiBwcmUtcGVuZCB0aGUgbmV3IHBhY2tldCAqLzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3JldHVybiAtMTs8YnI+DQomZ3Q7ICs8YnI+ DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3JldHVybiAwOzxicj4NCiZndDsgK308YnI+DQom Z3Q7ICs8YnI+DQomZ3Q7ICsjZW5kaWY8YnI+DQomZ3Q7IGRpZmYgLS1naXQgYS9saWIvZ3JvL2dy b190Y3A0LmMgYi9saWIvZ3JvL2dyb190Y3A0LmMgaW5kZXg8YnI+DQomZ3Q7IDhmNWU4MDAyNTAu LmVlYTJhNzJlY2QgMTAwNjQ0PGJyPg0KJmd0OyAtLS0gYS9saWIvZ3JvL2dyb190Y3A0LmM8YnI+ DQomZ3Q7ICsrKyBiL2xpYi9ncm8vZ3JvX3RjcDQuYzxicj4NCiZndDsgQEAgLTcsNiArNyw3IEBA PGJyPg0KJmd0OyZuYnNwOyAjaW5jbHVkZSAmbHQ7cnRlX2V0aGRldi5oJmd0Ozxicj4NCiZndDsg PGJyPg0KJmd0OyZuYnNwOyAjaW5jbHVkZSAmcXVvdDtncm9fdGNwNC5oJnF1b3Q7PGJyPg0KJmd0 OyArI2luY2x1ZGUgJnF1b3Q7Z3JvX3RjcC5oJnF1b3Q7PGJyPg0KJmd0OyA8YnI+DQomZ3Q7Jm5i c3A7IHZvaWQgKjxicj4NCiZndDsmbmJzcDsgZ3JvX3RjcDRfdGJsX2NyZWF0ZSh1aW50MTZfdCBz b2NrZXRfaWQsIEBAIC0zMCw3ICszMSw3IEBAPGJyPg0KJmd0OyBncm9fdGNwNF90YmxfY3JlYXRl KHVpbnQxNl90IHNvY2tldF9pZCw8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 aWYgKHRibCA9PSBOVUxMKTxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIE5VTEw7PGJyPg0KJmd0OyA8YnI+DQomZ3Q7 IC0mbmJzcDsgJm5ic3A7ICZuYnNwO3NpemUgPSBzaXplb2Yoc3RydWN0IGdyb190Y3A0X2l0ZW0p ICogZW50cmllc19udW07PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtzaXplID0gc2l6 ZW9mKHN0cnVjdCBncm9fdGNwX2l0ZW0pICogZW50cmllc19udW07PGJyPg0KJmd0OyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwO3RibC0mZ3Q7aXRlbXMgPSBydGVfem1hbGxvY19zb2NrZXQoX19m dW5jX18sPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7c2l6ZSw8YnI+DQomZ3Q7 Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtSVEVfQ0FDSEVfTElORV9TSVpFLDxicj4NCiZndDsg QEAgLTE3Nyw3ICsxNzgsNyBAQCBpbnNlcnRfbmV3X2Zsb3coc3RydWN0IGdyb190Y3A0X3RibCAq dGJsLDxicj4NCiZndDsmbmJzcDsgJm5ic3A7KiB1cGRhdGUgdGhlIHBhY2tldCBsZW5ndGggZm9y IHRoZSBmbHVzaGVkIHBhY2tldC48YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyovPGJyPg0KJmd0OyZu YnNwOyBzdGF0aWMgaW5saW5lIHZvaWQ8YnI+DQomZ3Q7IC11cGRhdGVfaGVhZGVyKHN0cnVjdCBn cm9fdGNwNF9pdGVtICppdGVtKTxicj4NCiZndDsgK3VwZGF0ZV9oZWFkZXIoc3RydWN0IGdyb190 Y3BfaXRlbSAqaXRlbSk8YnI+DQomZ3Q7Jm5ic3A7IHs8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7c3RydWN0IHJ0ZV9pcHY0X2hkciAqaXB2NF9oZHI7PGJyPg0KJmd0OyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBydGVfbWJ1ZiAqcGt0ID0gaXRlbS0mZ3Q7Zmly c3RzZWc7IEBAIC0zMDIsNyArMzAzLDcgQEA8YnI+DQomZ3Q7IGdyb190Y3A0X3JlYXNzZW1ibGUo c3RydWN0IHJ0ZV9tYnVmICpwa3QsPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3NlbnRfc2VxLCBpcF9pZCwgcGt0LSZndDtsNF9s ZW4sIHRjcF9kbCwgMCw8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7aXNfYXRvbWljKTs8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lmIChjbXApIHs8YnI+DQom Z3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKG1lcmdlX3R3b190Y3A0X3BhY2tldHMoJmFtcDso dGJsLSZndDtpdGVtc1tjdXJfaWR4XSksPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lm IChtZXJnZV90d29fdGNwX3BhY2tldHMoJmFtcDsodGJsLSZndDtpdGVtc1tjdXJfaWR4XSksPGJy Pg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7cGt0LCBjbXAsIHNlbnRfc2VxLCBpcF9pZCwgMCkpPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3JldHVybiAxOzxicj4NCiZn dDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy8qPGJyPg0KJmd0OyBkaWZmIC0tZ2l0IGEvbGli L2dyby9ncm9fdGNwNC5oIGIvbGliL2dyby9ncm9fdGNwNC5oIGluZGV4PGJyPg0KJmd0OyAyMTJm OTdhMDQyLi42MzRhMjE1Yjk4IDEwMDY0NDxicj4NCiZndDsgLS0tIGEvbGliL2dyby9ncm9fdGNw NC5oPGJyPg0KJmd0OyArKysgYi9saWIvZ3JvL2dyb190Y3A0Lmg8YnI+DQomZ3Q7IEBAIC01LDIy ICs1LDkgQEA8YnI+DQomZ3Q7Jm5ic3A7ICNpZm5kZWYgX0dST19UQ1A0X0hfPGJyPg0KJmd0OyZu YnNwOyAjZGVmaW5lIF9HUk9fVENQNF9IXzxicj4NCiZndDsgPGJyPg0KJmd0OyAtI2luY2x1ZGUg Jmx0O3J0ZV90Y3AuaCZndDs8YnI+DQomZ3Q7IC08YnI+DQomZ3Q7Jm5ic3A7ICNkZWZpbmUgSU5W QUxJRF9BUlJBWV9JTkRFWCAweGZmZmZmZmZmVUwmbmJzcDsgI2RlZmluZTxicj4NCiZndDsgR1JP X1RDUDRfVEJMX01BWF9JVEVNX05VTSAoMTAyNFVMICogMTAyNFVMKTxicj4NCiZndDsgPGJyPg0K Jmd0OyAtLyo8YnI+DQomZ3Q7IC0gKiBUaGUgbWF4IGxlbmd0aCBvZiBhIElQdjQgcGFja2V0LCB3 aGljaCBpbmNsdWRlcyB0aGUgbGVuZ3RoIG9mIHRoZSBMMzxicj4NCiZndDsgLSAqIGhlYWRlciwg dGhlIEw0IGhlYWRlciBhbmQgdGhlIGRhdGEgcGF5bG9hZC48YnI+DQomZ3Q7IC0gKi88YnI+DQom Z3Q7IC0jZGVmaW5lIE1BWF9JUFY0X1BLVF9MRU5HVEggVUlOVDE2X01BWDxicj4NCiZndDsgLTxi cj4NCiZndDsgLS8qIFRoZSBtYXhpbXVtIFRDUCBoZWFkZXIgbGVuZ3RoICovPGJyPg0KJmd0OyAt I2RlZmluZSBNQVhfVENQX0hMRU4gNjA8YnI+DQomZ3Q7IC0jZGVmaW5lIElOVkFMSURfVENQX0hE UkxFTihsZW4pIFw8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOygoKGxlbikgJmx0OyBz aXplb2Yoc3RydWN0IHJ0ZV90Y3BfaGRyKSkgfHwgKChsZW4pICZndDsgTUFYX1RDUF9ITEVOKSk8 YnI+DQomZ3Q7IC08YnI+DQomZ3Q7Jm5ic3A7IC8qIEhlYWRlciBmaWVsZHMgcmVwcmVzZW50aW5n IGEgVENQL0lQdjQgZmxvdyAqLyZuYnNwOyBzdHJ1Y3QgdGNwNF9mbG93X2tleSB7PGJyPg0KJmd0 OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBydGVfZXRoZXJfYWRkciBldGhfc2Fk ZHI7PGJyPg0KJmd0OyBAQCAtNDIsNDIgKzI5LDEyIEBAIHN0cnVjdCBncm9fdGNwNF9mbG93IHs8 YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3Qgc3RhcnRfaW5kZXg7 PGJyPg0KJmd0OyZuYnNwOyB9Ozxicj4NCiZndDsgPGJyPg0KJmd0OyAtc3RydWN0IGdyb190Y3A0 X2l0ZW0gezxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7Lyo8YnI+DQomZ3Q7IC0mbmJz cDsgJm5ic3A7ICZuYnNwOyAqIFRoZSBmaXJzdCBNQlVGIHNlZ21lbnQgb2YgdGhlIHBhY2tldC4g SWYgdGhlIHZhbHVlPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBpcyBOVUxMLCBp dCBtZWFucyB0aGUgaXRlbSBpcyBlbXB0eS48YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNw OyAqLzxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0IHJ0ZV9tYnVmICpmaXJz dHNlZzs8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOy8qIFRoZSBsYXN0IE1CVUYgc2Vn bWVudCBvZiB0aGUgcGFja2V0ICovPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJ1 Y3QgcnRlX21idWYgKmxhc3RzZWc7PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsvKjxi cj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICogVGhlIHRpbWUgd2hlbiB0aGUgZmlyc3Qg cGFja2V0IGlzIGluc2VydGVkIGludG8gdGhlIHRhYmxlLjxicj4NCiZndDsgLSZuYnNwOyAmbmJz cDsgJm5ic3A7ICogVGhpcyB2YWx1ZSB3b24ndCBiZSB1cGRhdGVkLCBldmVuIGlmIHRoZSBwYWNr ZXQgaXMgbWVyZ2VkPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiB3aXRoIG90aGVy IHBhY2tldHMuPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgKi88YnI+DQomZ3Q7IC0m bmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQ2NF90IHN0YXJ0X3RpbWU7PGJyPg0KJmd0OyAtJm5ic3A7 ICZuYnNwOyAmbmJzcDsvKjxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICogbmV4dF9w a3RfaWR4IGlzIHVzZWQgdG8gY2hhaW4gdGhlIHBhY2tldHMgdGhhdDxicj4NCiZndDsgLSZuYnNw OyAmbmJzcDsgJm5ic3A7ICogYXJlIGluIHRoZSBzYW1lIGZsb3cgYnV0IGNhbid0IGJlIG1lcmdl ZCB0b2dldGhlcjxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICogKGUuZy4gY2F1c2Vk IGJ5IHBhY2tldCByZW9yZGVyaW5nKS48YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAq Lzxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3QgbmV4dF9wa3RfaWR4Ozxi cj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7LyogVENQIHNlcXVlbmNlIG51bWJlciBvZiB0 aGUgcGFja2V0ICovPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzJfdCBzZW50 X3NlcTs8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOy8qIElQdjQgSUQgb2YgdGhlIHBh Y2tldCAqLzxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDE2X3QgaXBfaWQ7PGJy Pg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiB0aGUgbnVtYmVyIG9mIG1lcmdlZCBwYWNr ZXRzICovPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MTZfdCBuYl9tZXJnZWQ7 PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBJbmRpY2F0ZSBpZiBJUHY0IElEIGNh biBiZSBpZ25vcmVkICovPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50OF90IGlz X2F0b21pYzs8YnI+DQomZ3Q7IC19Ozxicj4NCiZndDsgLTxicj4NCiZndDsmbmJzcDsgLyo8YnI+ DQomZ3Q7Jm5ic3A7ICZuYnNwOyogVENQL0lQdjQgcmVhc3NlbWJseSB0YWJsZSBzdHJ1Y3R1cmUu PGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsqLzxicj4NCiZndDsmbmJzcDsgc3RydWN0IGdyb190Y3A0 X3RibCB7PGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy8qIGl0ZW0gYXJyYXkg Ki88YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBncm9fdGNwNF9pdGVtICpp dGVtczs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBncm9fdGNwX2l0ZW0g Kml0ZW1zOzxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBmbG93IGFycmF5 ICovPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBncm9fdGNwNF9m bG93ICpmbG93czs8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LyogY3VycmVu dCBpdGVtIG51bWJlciAqLzxicj4NCiZndDsgQEAgLTE5NSwxMTEgKzE1Miw0IEBAIGlzX3NhbWVf dGNwNF9mbG93KHN0cnVjdCB0Y3A0X2Zsb3dfa2V5IGsxLCBzdHJ1Y3Q8YnI+DQomZ3Q7IHRjcDRf Zmxvd19rZXkgazIpPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7KGsxLmRzdF9w b3J0ID09IGsyLmRzdF9wb3J0KSk7PGJyPg0KJmd0OyZuYnNwOyB9PGJyPg0KJmd0OyA8YnI+DQom Z3Q7IC0vKjxicj4NCiZndDsgLSAqIE1lcmdlIHR3byBUQ1AvSVB2NCBwYWNrZXRzIHdpdGhvdXQg dXBkYXRpbmcgY2hlY2tzdW1zLjxicj4NCiZndDsgLSAqIElmIGNtcCBpcyBsYXJnZXIgdGhhbiAw LCBhcHBlbmQgdGhlIG5ldyBwYWNrZXQgdG8gdGhlPGJyPg0KJmd0OyAtICogb3JpZ2luYWwgcGFj a2V0LiBPdGhlcndpc2UsIHByZS1wZW5kIHRoZSBuZXcgcGFja2V0IHRvPGJyPg0KJmd0OyAtICog dGhlIG9yaWdpbmFsIHBhY2tldC48YnI+DQomZ3Q7IC0gKi88YnI+DQomZ3Q7IC1zdGF0aWMgaW5s aW5lIGludDxicj4NCiZndDsgLW1lcmdlX3R3b190Y3A0X3BhY2tldHMoc3RydWN0IGdyb190Y3A0 X2l0ZW0gKml0ZW0sPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7c3RydWN0IHJ0ZV9tYnVmICpwa3QsPGJyPg0KJmd0OyAtJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aW50IGNtcCw8YnI+DQomZ3Q7 IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzJf dCBzZW50X3NlcSw8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDt1aW50MTZfdCBpcF9pZCw8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MTZfdCBsMl9vZmZzZXQpPGJyPg0K Jmd0OyAtezxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0IHJ0ZV9tYnVmICpw a3RfaGVhZCwgKnBrdF90YWlsLCAqbGFzdHNlZzs8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZu YnNwO3VpbnQxNl90IGhkcl9sZW4sIGwyX2xlbjs8YnI+DQomZ3Q7IC08YnI+DQomZ3Q7IC0mbmJz cDsgJm5ic3A7ICZuYnNwO2lmIChjbXAgJmd0OyAwKSB7PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cGt0X2hlYWQgPSBpdGVtLSZndDtm aXJzdHNlZzs8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDtwa3RfdGFpbCA9IHBrdDs8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNw O30gZWxzZSB7PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7cGt0X2hlYWQgPSBwa3Q7PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cGt0X3RhaWwgPSBpdGVtLSZndDtmaXJzdHNl Zzs8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwO308YnI+DQomZ3Q7IC08YnI+DQomZ3Q7 IC0mbmJzcDsgJm5ic3A7ICZuYnNwOy8qIGNoZWNrIGlmIHRoZSBJUHY0IHBhY2tldCBsZW5ndGgg aXMgZ3JlYXRlciB0aGFuIHRoZSBtYXggdmFsdWUgKi88YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7 ICZuYnNwO2hkcl9sZW4gPSBsMl9vZmZzZXQgKyBwa3RfaGVhZC0mZ3Q7bDJfbGVuICsgcGt0X2hl YWQtJmd0O2wzX2xlbiArPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7cGt0X2hlYWQtJmd0O2w0X2xlbjs8YnI+DQomZ3Q7IC0mbmJzcDsg Jm5ic3A7ICZuYnNwO2wyX2xlbiA9IGwyX29mZnNldCAmZ3Q7IDAgPyBwa3RfaGVhZC0mZ3Q7b3V0 ZXJfbDJfbGVuIDogcGt0X2hlYWQtJmd0O2wyX2xlbjs8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7 ICZuYnNwO2lmICh1bmxpa2VseShwa3RfaGVhZC0mZ3Q7cGt0X2xlbiAtIGwyX2xlbiArIHBrdF90 YWlsLSZndDtwa3RfbGVuIC08YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwO2hkcl9sZW4gJmd0OyBNQVhfSVBWNF9QS1RfTEVOR1RIKSk8YnI+ DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDty ZXR1cm4gMDs8YnI+DQomZ3Q7IC08YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOy8qIHJl bW92ZSB0aGUgcGFja2V0IGhlYWRlciBmb3IgdGhlIHRhaWwgcGFja2V0ICovPGJyPg0KJmd0OyAt Jm5ic3A7ICZuYnNwOyAmbmJzcDtydGVfcGt0bWJ1Zl9hZGoocGt0X3RhaWwsIGhkcl9sZW4pOzxi cj4NCiZndDsgLTxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7LyogY2hhaW4gdHdvIHBh Y2tldHMgdG9nZXRoZXIgKi88YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwO2lmIChjbXAg Jmd0OyAwKSB7PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7aXRlbS0mZ3Q7bGFzdHNlZy0mZ3Q7bmV4dCA9IHBrdDs8YnI+DQomZ3Q7IC0m bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpdGVtLSZndDts YXN0c2VnID0gcnRlX3BrdG1idWZfbGFzdHNlZyhwa3QpOzxicj4NCiZndDsgLSZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy8qIHVwZGF0ZSBJUCBJRCB0byB0 aGUgbGFyZ2VyIHZhbHVlICovPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7aXRlbS0mZ3Q7aXBfaWQgPSBpcF9pZDs8YnI+DQomZ3Q7IC0m bmJzcDsgJm5ic3A7ICZuYnNwO30gZWxzZSB7PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7bGFzdHNlZyA9IHJ0ZV9wa3RtYnVmX2xhc3Rz ZWcocGt0KTs8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDtsYXN0c2VnLSZndDtuZXh0ID0gaXRlbS0mZ3Q7Zmlyc3RzZWc7PGJyPg0KJmd0 OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aXRlbS0m Z3Q7Zmlyc3RzZWcgPSBwa3Q7PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7LyogdXBkYXRlIHNlbnRfc2VxIHRvIHRoZSBzbWFsbGVyIHZh bHVlICovPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7aXRlbS0mZ3Q7c2VudF9zZXEgPSBzZW50X3NlcTs8YnI+DQomZ3Q7IC0mbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpdGVtLSZndDtpcF9pZCA9 IGlwX2lkOzxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7fTxicj4NCiZndDsgLSZuYnNw OyAmbmJzcDsgJm5ic3A7aXRlbS0mZ3Q7bmJfbWVyZ2VkKys7PGJyPg0KJmd0OyAtPGJyPg0KJmd0 OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiB1cGRhdGUgTUJVRiBtZXRhZGF0YSBmb3IgdGhlIG1l cmdlZCBwYWNrZXQgKi88YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwO3BrdF9oZWFkLSZn dDtuYl9zZWdzICs9IHBrdF90YWlsLSZndDtuYl9zZWdzOzxicj4NCiZndDsgLSZuYnNwOyAmbmJz cDsgJm5ic3A7cGt0X2hlYWQtJmd0O3BrdF9sZW4gKz0gcGt0X3RhaWwtJmd0O3BrdF9sZW47PGJy Pg0KJmd0OyAtPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gMTs8YnI+DQom Z3Q7IC19PGJyPg0KJmd0OyAtPGJyPg0KJmd0OyAtLyo8YnI+DQomZ3Q7IC0gKiBDaGVjayBpZiB0 d28gVENQL0lQdjQgcGFja2V0cyBhcmUgbmVpZ2hib3JzLjxicj4NCiZndDsgLSAqLzxicj4NCiZn dDsgLXN0YXRpYyBpbmxpbmUgaW50PGJyPg0KJmd0OyAtY2hlY2tfc2VxX29wdGlvbihzdHJ1Y3Qg Z3JvX3RjcDRfaXRlbSAqaXRlbSw8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3QgcnRlX3RjcF9oZHIgKnRjcGgsPGJyPg0KJmd0 OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMy X3Qgc2VudF9zZXEsPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7dWludDE2X3QgaXBfaWQsPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDE2X3QgdGNwX2hsLDxicj4NCiZn dDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQx Nl90IHRjcF9kbCw8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDt1aW50MTZfdCBsMl9vZmZzZXQsPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDhfdCBpc19hdG9taWMpPGJy Pg0KJmd0OyAtezxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0IHJ0ZV9tYnVm ICpwa3Rfb3JpZyA9IGl0ZW0tJmd0O2ZpcnN0c2VnOzxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsg Jm5ic3A7c3RydWN0IHJ0ZV9pcHY0X2hkciAqaXBoX29yaWc7PGJyPg0KJmd0OyAtJm5ic3A7ICZu YnNwOyAmbmJzcDtzdHJ1Y3QgcnRlX3RjcF9oZHIgKnRjcGhfb3JpZzs8YnI+DQomZ3Q7IC0mbmJz cDsgJm5ic3A7ICZuYnNwO3VpbnQxNl90IGxlbiwgdGNwX2hsX29yaWc7PGJyPg0KJmd0OyAtPGJy Pg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDtpcGhfb3JpZyA9IChzdHJ1Y3QgcnRlX2lwdjRf aGRyICopKHJ0ZV9wa3RtYnVmX210b2QocGt0X29yaWcsIGNoYXI8YnI+DQomZ3Q7ICopICs8YnI+ DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7bDJfb2Zmc2V0ICsgcGt0X29yaWctJmd0O2wyX2xl bik7PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDt0Y3BoX29yaWcgPSAoc3RydWN0IHJ0 ZV90Y3BfaGRyICopKChjaGFyICopaXBoX29yaWcgKyBwa3Rfb3JpZy08YnI+DQomZ3Q7ICZndDts M19sZW4pOzxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7dGNwX2hsX29yaWcgPSBwa3Rf b3JpZy0mZ3Q7bDRfbGVuOzxicj4NCiZndDsgLTxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5i c3A7LyogQ2hlY2sgaWYgVENQIG9wdGlvbiBmaWVsZHMgZXF1YWwgKi88YnI+DQomZ3Q7IC0mbmJz cDsgJm5ic3A7ICZuYnNwO2xlbiA9IFJURV9NQVgodGNwX2hsLCB0Y3BfaGxfb3JpZykgLSBzaXpl b2Yoc3RydWN0IHJ0ZV90Y3BfaGRyKTs8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwO2lm ICgodGNwX2hsICE9IHRjcF9obF9vcmlnKSB8fCAoKGxlbiAmZ3Q7IDApICZhbXA7JmFtcDs8YnI+ DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyht ZW1jbXAodGNwaCArIDEsIHRjcGhfb3JpZyArIDEsPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7bGVuKSAhPSAwKSkpPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIDA7PGJyPg0KJmd0OyAtPGJyPg0KJmd0OyAtJm5ic3A7 ICZuYnNwOyAmbmJzcDsvKiBEb24ndCBtZXJnZSBwYWNrZXRzIHdob3NlIERGIGJpdHMgYXJlIGRp ZmZlcmVudCAqLzxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKHVubGlrZWx5KGl0 ZW0tJmd0O2lzX2F0b21pYyBeIGlzX2F0b21pYykpPGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIDA7PGJyPg0KJmd0OyAtPGJy Pg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBjaGVjayBpZiB0aGUgdHdvIHBhY2tldHMg YXJlIG5laWdoYm9ycyAqLzxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7bGVuID0gcGt0 X29yaWctJmd0O3BrdF9sZW4gLSBsMl9vZmZzZXQgLSBwa3Rfb3JpZy0mZ3Q7bDJfbGVuIC08YnI+ DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtw a3Rfb3JpZy0mZ3Q7bDNfbGVuIC0gdGNwX2hsX29yaWc7PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNw OyAmbmJzcDtpZiAoKHNlbnRfc2VxID09IGl0ZW0tJmd0O3NlbnRfc2VxICsgbGVuKSAmYW1wOyZh bXA7IChpc19hdG9taWMgfHw8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyhpcF9pZCA9PSBpdGVtLSZndDtpcF9pZCArIDEpKSk8YnI+DQom Z3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBh cHBlbmQgdGhlIG5ldyBwYWNrZXQgKi88YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gMTs8YnI+DQomZ3Q7IC0mbmJzcDsgJm5i c3A7ICZuYnNwO2Vsc2UgaWYgKChzZW50X3NlcSArIHRjcF9kbCA9PSBpdGVtLSZndDtzZW50X3Nl cSkgJmFtcDsmYW1wOyAoaXNfYXRvbWljIHx8PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsoaXBfaWQgKyBpdGVtLSZndDtuYl9tZXJnZWQg PT0gaXRlbS0mZ3Q7aXBfaWQpKSk8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBwcmUtcGVuZCB0aGUgbmV3IHBhY2tldCAqLzxicj4N CiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3Jl dHVybiAtMTs8YnI+DQomZ3Q7IC08YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNwO3JldHVy biAwOzxicj4NCiZndDsgLX08YnI+DQomZ3Q7Jm5ic3A7ICNlbmRpZjxicj4NCiZndDsgZGlmZiAt LWdpdCBhL2xpYi9ncm8vZ3JvX3RjcDYuYyBiL2xpYi9ncm8vZ3JvX3RjcDYuYyBuZXcgZmlsZSBt b2RlIDEwMDY0NDxicj4NCiZndDsgaW5kZXggMDAwMDAwMDAwMC4uYTM3ZDhlMjUxMjxicj4NCiZn dDsgLS0tIC9kZXYvbnVsbDxicj4NCiZndDsgKysrIGIvbGliL2dyby9ncm9fdGNwNi5jPGJyPg0K Jmd0OyBAQCAtMCwwICsxLDM4NyBAQDxicj4NCiZndDsgKy8qIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBCU0QtMy1DbGF1c2U8YnI+DQomZ3Q7ICsgKiBDb3B5cmlnaHQoYykgMjAxNyBJbnRlbCBD b3Jwb3JhdGlvbjxicj4NCiZndDsgKyAqLzxicj4NCiZndDsgKzxicj4NCiZndDsgKyNpbmNsdWRl ICZsdDtydGVfbWFsbG9jLmgmZ3Q7PGJyPg0KJmd0OyArI2luY2x1ZGUgJmx0O3J0ZV9tYnVmLmgm Z3Q7PGJyPg0KJmd0OyArI2luY2x1ZGUgJmx0O3J0ZV9ldGhkZXYuaCZndDs8YnI+DQomZ3Q7ICs8 YnI+DQomZ3Q7ICsjaW5jbHVkZSAmcXVvdDtncm9fdGNwNi5oJnF1b3Q7PGJyPg0KJmd0OyArI2lu Y2x1ZGUgJnF1b3Q7Z3JvX3RjcC5oJnF1b3Q7PGJyPg0KJmd0OyArPGJyPg0KJmd0OyArdm9pZCAq PGJyPg0KJmd0OyArZ3JvX3RjcDZfdGJsX2NyZWF0ZSh1aW50MTZfdCBzb2NrZXRfaWQsPGJyPg0K Jmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWlu dDE2X3QgbWF4X2Zsb3dfbnVtLDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQxNl90IG1heF9pdGVtX3Blcl9mbG93KTxicj4NCiZn dDsgK3s8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBncm9fdGNwNl90Ymwg KnRibDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3NpemVfdCBzaXplOzxicj4NCiZn dDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3QgZW50cmllc19udW0sIGk7PGJyPg0KJmd0 OyArPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtlbnRyaWVzX251bSA9IG1heF9mbG93 X251bSAqIG1heF9pdGVtX3Blcl9mbG93Ozxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7 ZW50cmllc19udW0gPSBSVEVfTUlOKGVudHJpZXNfbnVtLDxicj4NCiZndDsgR1JPX1RDUDZfVEJM X01BWF9JVEVNX05VTSk7PGJyPg0KJmd0OyArPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJz cDtpZiAoZW50cmllc19udW0gPT0gMCk8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gTlVMTDs8YnI+DQomZ3Q7ICs8YnI+DQom Z3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3RibCA9IHJ0ZV96bWFsbG9jX3NvY2tldChfX2Z1bmNf Xyw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7c2l6ZW9mKHN0cnVjdCBncm9fdGNwNl90 YmwpLDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtSVEVfQ0FDSEVfTElORV9TSVpFLDxi cj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtzb2NrZXRfaWQpOzxicj4NCiZndDsgKyZuYnNw OyAmbmJzcDsgJm5ic3A7aWYgKHRibCA9PSBOVUxMKTxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3JldHVybiBOVUxMOzxicj4NCiZndDsg Kzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7c2l6ZSA9IHNpemVvZihzdHJ1Y3QgZ3Jv X3RjcF9pdGVtKSAqIGVudHJpZXNfbnVtOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7 dGJsLSZndDtpdGVtcyA9IHJ0ZV96bWFsbG9jX3NvY2tldChfX2Z1bmNfXyw8YnI+DQomZ3Q7ICsm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7c2l6ZSw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7UlRF X0NBQ0hFX0xJTkVfU0laRSw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7c29ja2V0X2lk KTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO2lmICh0YmwtJmd0O2l0ZW1zID09IE5V TEwpIHs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDtydGVfZnJlZSh0YmwpOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3JldHVybiBOVUxMOzxicj4NCiZndDsgKyZuYnNwOyAm bmJzcDsgJm5ic3A7fTxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dGJsLSZndDttYXhf aXRlbV9udW0gPSBlbnRyaWVzX251bTs8YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5i c3A7ICZuYnNwO3NpemUgPSBzaXplb2Yoc3RydWN0IGdyb190Y3A2X2Zsb3cpICogZW50cmllc19u dW07PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDt0YmwtJmd0O2Zsb3dzID0gcnRlX3pt YWxsb2Nfc29ja2V0KF9fZnVuY19fLDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtzaXpl LDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtSVEVfQ0FDSEVfTElORV9TSVpFLDxicj4N CiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtzb2NrZXRfaWQpOzxicj4NCiZndDsgKyZuYnNwOyAm bmJzcDsgJm5ic3A7aWYgKHRibC0mZ3Q7Zmxvd3MgPT0gTlVMTCkgezxicj4NCiZndDsgKyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3J0ZV9mcmVlKHRibC0m Z3Q7aXRlbXMpOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwO3J0ZV9mcmVlKHRibCk7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIE5VTEw7PGJyPg0KJmd0OyArJm5i c3A7ICZuYnNwOyAmbmJzcDt9PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBJTlZB TElEX0FSUkFZX0lOREVYIGluZGljYXRlcyBhbiBlbXB0eSBmbG93ICovPGJyPg0KJmd0OyArJm5i c3A7ICZuYnNwOyAmbmJzcDtmb3IgKGkgPSAwOyBpICZsdDsgZW50cmllc19udW07IGkrKyk8YnI+ DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt0 YmwtJmd0O2Zsb3dzW2ldLnN0YXJ0X2luZGV4ID0gSU5WQUxJRF9BUlJBWV9JTkRFWDs8YnI+DQom Z3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3RibC0mZ3Q7bWF4X2Zsb3dfbnVtID0gZW50cmllc19u dW07PGJyPg0KJmd0OyArPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gdGJs Ozxicj4NCiZndDsgK308YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICt2b2lkPGJyPg0KJmd0OyArZ3Jv X3RjcDZfdGJsX2Rlc3Ryb3kodm9pZCAqdGJsKTxicj4NCiZndDsgK3s8YnI+DQomZ3Q7ICsmbmJz cDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBncm9fdGNwNl90YmwgKnRjcF90YmwgPSB0Ymw7PGJyPg0K Jmd0OyArPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAodGNwX3RibCkgezxicj4N CiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3J0 ZV9mcmVlKHRjcF90YmwtJmd0O2l0ZW1zKTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtydGVfZnJlZSh0Y3BfdGJsLSZndDtmbG93cyk7 PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDt9PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNw OyAmbmJzcDtydGVfZnJlZSh0Y3BfdGJsKTs8YnI+DQomZ3Q7ICt9PGJyPg0KJmd0OyArPGJyPg0K Jmd0OyArc3RhdGljIGlubGluZSB1aW50MzJfdDxicj4NCiZndDsgK2ZpbmRfYW5fZW1wdHlfaXRl bShzdHJ1Y3QgZ3JvX3RjcDZfdGJsICp0YmwpIHs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZu YnNwO3VpbnQzMl90IGk7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzJfdCBt YXhfaXRlbV9udW0gPSB0YmwtJmd0O21heF9pdGVtX251bTs8YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7 ICsmbmJzcDsgJm5ic3A7ICZuYnNwO2ZvciAoaSA9IDA7IGkgJmx0OyBtYXhfaXRlbV9udW07IGkr Kyk8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDtpZiAodGJsLSZndDtpdGVtc1tpXS5maXJzdHNlZyA9PSBOVUxMKTxicj4NCiZndDsgKyZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gaTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNw O3JldHVybiBJTlZBTElEX0FSUkFZX0lOREVYOzxicj4NCiZndDsgK308YnI+DQomZ3Q7ICs8YnI+ DQomZ3Q7ICtzdGF0aWMgaW5saW5lIHVpbnQzMl90PGJyPg0KJmd0OyArZmluZF9hbl9lbXB0eV9m bG93KHN0cnVjdCBncm9fdGNwNl90YmwgKnRibCkgezxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsg Jm5ic3A7dWludDMyX3QgaTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMl90 IG1heF9mbG93X251bSA9IHRibC0mZ3Q7bWF4X2Zsb3dfbnVtOzxicj4NCiZndDsgKzxicj4NCiZn dDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7Zm9yIChpID0gMDsgaSAmbHQ7IG1heF9mbG93X251bTsg aSsrKTxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwO2lmICh0YmwtJmd0O2Zsb3dzW2ldLnN0YXJ0X2luZGV4ID09IElOVkFMSURfQVJSQVlf SU5ERVgpPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3JldHVybiBpOzxicj4NCiZndDsg KyZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIElOVkFMSURfQVJSQVlfSU5ERVg7PGJyPg0KJmd0 OyArfTxicj4NCiZndDsgKzxicj4NCiZndDsgK3N0YXRpYyBpbmxpbmUgdWludDMyX3Q8YnI+DQom Z3Q7ICtpbnNlcnRfbmV3X2l0ZW0oc3RydWN0IGdyb190Y3A2X3RibCAqdGJsLDxicj4NCiZndDsg KyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBy dGVfbWJ1ZiAqcGt0LDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwO3VpbnQ2NF90IHN0YXJ0X3RpbWUsPGJyPg0KJmd0OyArJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3QgcHJldl9pZHgs PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7dWludDMyX3Qgc2VudF9zZXEsPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDhfdCBpc19hdG9taWMpPGJyPg0KJmd0OyArezxi cj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3QgaXRlbV9pZHg7PGJyPg0KJmd0 OyArPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtpdGVtX2lkeCA9IGZpbmRfYW5fZW1w dHlfaXRlbSh0YmwpOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKGl0ZW1faWR4 ID09IElOVkFMSURfQVJSQVlfSU5ERVgpPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIElOVkFMSURfQVJSQVlfSU5ERVg7PGJy Pg0KJmd0OyArPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDt0YmwtJmd0O2l0ZW1zW2l0 ZW1faWR4XS5maXJzdHNlZyA9IHBrdDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3Ri bC0mZ3Q7aXRlbXNbaXRlbV9pZHhdLmxhc3RzZWcgPSBydGVfcGt0bWJ1Zl9sYXN0c2VnKHBrdCk7 PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDt0YmwtJmd0O2l0ZW1zW2l0ZW1faWR4XS5z dGFydF90aW1lID0gc3RhcnRfdGltZTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3Ri bC0mZ3Q7aXRlbXNbaXRlbV9pZHhdLm5leHRfcGt0X2lkeCA9IElOVkFMSURfQVJSQVlfSU5ERVg7 PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDt0YmwtJmd0O2l0ZW1zW2l0ZW1faWR4XS5z ZW50X3NlcSA9IHNlbnRfc2VxOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dGJsLSZn dDtpdGVtc1tpdGVtX2lkeF0ubmJfbWVyZ2VkID0gMTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7 ICZuYnNwO3RibC0mZ3Q7aXRlbXNbaXRlbV9pZHhdLmlzX2F0b21pYyA9IGlzX2F0b21pYzs8YnI+ DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3RibC0mZ3Q7aXRlbV9udW0rKzs8YnI+DQomZ3Q7 ICs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOy8qIGlmIHRoZSBwcmV2aW91cyBwYWNr ZXQgZXhpc3RzLCBjaGFpbiB0aGVtIHRvZ2V0aGVyLiAqLzxicj4NCiZndDsgKyZuYnNwOyAmbmJz cDsgJm5ic3A7aWYgKHByZXZfaWR4ICE9IElOVkFMSURfQVJSQVlfSU5ERVgpIHs8YnI+DQomZ3Q7 ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt0YmwtJmd0 O2l0ZW1zW2l0ZW1faWR4XS5uZXh0X3BrdF9pZHggPTxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDt0YmwtJmd0O2l0ZW1zW3ByZXZfaWR4XS5uZXh0X3BrdF9pZHg7PGJyPg0KJmd0OyArJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dGJsLSZndDtpdGVt c1twcmV2X2lkeF0ubmV4dF9wa3RfaWR4ID0gaXRlbV9pZHg7PGJyPg0KJmd0OyArJm5ic3A7ICZu YnNwOyAmbmJzcDt9PGJyPg0KJmd0OyArPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDty ZXR1cm4gaXRlbV9pZHg7PGJyPg0KJmd0OyArfTxicj4NCiZndDsgKzxicj4NCiZndDsgK3N0YXRp YyBpbmxpbmUgdWludDMyX3Q8YnI+DQomZ3Q7ICtkZWxldGVfaXRlbShzdHJ1Y3QgZ3JvX3RjcDZf dGJsICp0YmwsIHVpbnQzMl90IGl0ZW1faWR4LDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMl90IHByZXZfaXRlbV9pZHgpPGJy Pg0KJmd0OyArezxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3QgbmV4dF9p ZHggPSB0YmwtJmd0O2l0ZW1zW2l0ZW1faWR4XS5uZXh0X3BrdF9pZHg7PGJyPg0KJmd0OyArPGJy Pg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBOVUxMIGluZGljYXRlcyBhbiBlbXB0eSBp dGVtICovPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDt0YmwtJmd0O2l0ZW1zW2l0ZW1f aWR4XS5maXJzdHNlZyA9IE5VTEw7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDt0Ymwt Jmd0O2l0ZW1fbnVtLS07PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAocHJldl9p dGVtX2lkeCAhPSBJTlZBTElEX0FSUkFZX0lOREVYKTxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3RibC0mZ3Q7aXRlbXNbcHJldl9pdGVt X2lkeF0ubmV4dF9wa3RfaWR4ID0gbmV4dF9pZHg7PGJyPg0KJmd0OyArPGJyPg0KJmd0OyArJm5i c3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gbmV4dF9pZHg7PGJyPg0KJmd0OyArfTxicj4NCiZndDsg Kzxicj4NCiZndDsgK3N0YXRpYyBpbmxpbmUgdWludDMyX3Q8YnI+DQomZ3Q7ICtpbnNlcnRfbmV3 X2Zsb3coc3RydWN0IGdyb190Y3A2X3RibCAqdGJsLDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCB0Y3A2X2Zsb3dfa2V5ICpz cmMsPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7cnRlX2JlMzJfdCB2dGNfZmxvdyw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzJfdCBpdGVtX2lkeCk8YnI+DQomZ3Q7 ICt7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3QgdGNwNl9mbG93X2tleSAq ZHN0Ozxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3QgZmxvd19pZHg7PGJy Pg0KJmd0OyArPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtmbG93X2lkeCA9IGZpbmRf YW5fZW1wdHlfZmxvdyh0YmwpOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKHVu bGlrZWx5KGZsb3dfaWR4ID09IElOVkFMSURfQVJSQVlfSU5ERVgpKTxicj4NCiZndDsgKyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3JldHVybiBJTlZBTElE X0FSUkFZX0lOREVYOzxicj4NCiZndDsgKzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7 ZHN0ID0gJmFtcDsodGJsLSZndDtmbG93c1tmbG93X2lkeF0ua2V5KTs8YnI+DQomZ3Q7ICs8YnI+ DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3J0ZV9ldGhlcl9hZGRyX2NvcHkoJmFtcDsoc3Jj LSZndDtldGhfc2FkZHIpLCAmYW1wOyhkc3QtJmd0O2V0aF9zYWRkcikpOzxicj4NCiZndDsgKyZu YnNwOyAmbmJzcDsgJm5ic3A7cnRlX2V0aGVyX2FkZHJfY29weSgmYW1wOyhzcmMtJmd0O2V0aF9k YWRkciksICZhbXA7KGRzdC0mZ3Q7ZXRoX2RhZGRyKSk7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNw OyAmbmJzcDttZW1jcHkoJmFtcDtkc3QtJmd0O3NyY19hZGRyWzBdLCAmYW1wO3NyYy0mZ3Q7c3Jj X2FkZHJbMF0sIHNpemVvZihkc3QtPGJyPg0KJmd0OyAmZ3Q7c3JjX2FkZHIpKTs8YnI+DQomZ3Q7 ICsmbmJzcDsgJm5ic3A7ICZuYnNwO21lbWNweSgmYW1wO2RzdC0mZ3Q7ZHN0X2FkZHJbMF0sICZh bXA7c3JjLSZndDtkc3RfYWRkclswXSwgc2l6ZW9mKGRzdC08YnI+DQomZ3Q7ICZndDtkc3RfYWRk cikpOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ZHN0LSZndDtyZWN2X2FjayA9IHNy Yy0mZ3Q7cmVjdl9hY2s7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtkc3QtJmd0O3Ny Y19wb3J0ID0gc3JjLSZndDtzcmNfcG9ydDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNw O2RzdC0mZ3Q7ZHN0X3BvcnQgPSBzcmMtJmd0O2RzdF9wb3J0Ozxicj4NCiZndDsgKzxicj4NCiZn dDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dGJsLSZndDtmbG93c1tmbG93X2lkeF0uc3RhcnRfaW5k ZXggPSBpdGVtX2lkeDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3RibC0mZ3Q7Zmxv d19udW0rKzs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3RibC0mZ3Q7Zmxvd3MtJmd0 O3Z0Y19mbG93ID0gdnRjX2Zsb3c7PGJyPg0KJmd0OyArPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNw OyAmbmJzcDtyZXR1cm4gZmxvd19pZHg7PGJyPg0KJmd0OyArfTxicj4NCiZndDsgKzxicj4NCiZn dDsgKy8qPGJyPg0KJmd0OyArICogdXBkYXRlIHRoZSBwYWNrZXQgbGVuZ3RoIGZvciB0aGUgZmx1 c2hlZCBwYWNrZXQuPGJyPg0KJmd0OyArICovPGJyPg0KJmd0OyArc3RhdGljIGlubGluZSB2b2lk PGJyPg0KJmd0OyArdXBkYXRlX2hlYWRlcihzdHJ1Y3QgZ3JvX3RjcF9pdGVtICppdGVtKSB7PGJy Pg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3QgcnRlX2lwdjZfaGRyICppcHY2X2hk cjs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBydGVfbWJ1ZiAqcGt0ID0g aXRlbS0mZ3Q7Zmlyc3RzZWc7PGJyPg0KJmd0OyArPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAm bmJzcDtpcHY2X2hkciA9IChzdHJ1Y3QgcnRlX2lwdjZfaGRyICopKHJ0ZV9wa3RtYnVmX210b2Qo cGt0LCBjaGFyICopICs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cGt0LSZndDtsMl9s ZW4pOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7aXB2Nl9oZHItJmd0O3BheWxvYWRf bGVuID0gcnRlX2NwdV90b19iZV8xNihwa3QtJmd0O3BrdF9sZW4gLTxicj4NCiZndDsgKyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDtwa3QtJmd0O2wyX2xlbiAtIHBrdC0mZ3Q7bDNfbGVuKTs8YnI+DQomZ3Q7 ICt9PGJyPg0KJmd0OyArPGJyPg0KJmd0OyAraW50MzJfdDxicj4NCiZndDsgK2dyb190Y3A2X3Jl YXNzZW1ibGUoc3RydWN0IHJ0ZV9tYnVmICpwa3QsPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0IGdyb190Y3A2X3RibCAqdGJs LDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwO3VpbnQ2NF90IHN0YXJ0X3RpbWUpPGJyPg0KJmd0OyArezxicj4NCiZndDsgKyZuYnNwOyAm bmJzcDsgJm5ic3A7c3RydWN0IHJ0ZV9ldGhlcl9oZHIgKmV0aF9oZHI7PGJyPg0KJmd0OyArJm5i c3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3QgcnRlX2lwdjZfaGRyICppcHY2X2hkcjs8YnI+DQomZ3Q7 ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBydGVfdGNwX2hkciAqdGNwX2hkcjs8YnI+DQom Z3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMl90IHNlbnRfc2VxOzxicj4NCiZndDsgKyZu YnNwOyAmbmJzcDsgJm5ic3A7aW50MzJfdCB0Y3BfZGw7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNw OyAmbmJzcDt1aW50MTZfdCBpcF90bGVuOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7 c3RydWN0IHRjcDZfZmxvd19rZXkga2V5Ozxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7 dWludDMyX3QgY3VyX2lkeCwgcHJldl9pZHgsIGl0ZW1faWR4Ozxicj4NCiZndDsgKyZuYnNwOyAm bmJzcDsgJm5ic3A7dWludDMyX3QgaSwgbWF4X2Zsb3dfbnVtLCByZW1haW5pbmdfZmxvd19udW07 PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtpbnQgY21wOzxicj4NCiZndDsgKyZuYnNw OyAmbmJzcDsgJm5ic3A7dWludDhfdCBmaW5kOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5i c3A7cnRlX2JlMzJfdCB2dGNfZmxvd19kaWZmOzxicj4NCiZndDsgKzxicj4NCiZndDsgKyZuYnNw OyAmbmJzcDsgJm5ic3A7Lyo8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAqIERvbid0 IHByb2Nlc3MgdGhlIHBhY2tldCB3aG9zZSBUQ1AgaGVhZGVyIGxlbmd0aCBpcyBncmVhdGVyPGJy Pg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiB0aGFuIDYwIGJ5dGVzIG9yIGxlc3MgdGhh biAyMCBieXRlcy48YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAqLzxicj4NCiZndDsg KyZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKHVubGlrZWx5KElOVkFMSURfVENQX0hEUkxFTihwa3Qt Jmd0O2w0X2xlbikpKTxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwO3JldHVybiAtMTs8YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICsmbmJzcDsg Jm5ic3A7ICZuYnNwO2V0aF9oZHIgPSBydGVfcGt0bWJ1Zl9tdG9kKHBrdCwgc3RydWN0IHJ0ZV9l dGhlcl9oZHIgKik7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtpcHY2X2hkciA9IChz dHJ1Y3QgcnRlX2lwdjZfaGRyICopKChjaGFyICopZXRoX2hkciArIHBrdC0mZ3Q7bDJfbGVuKTs8 YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3RjcF9oZHIgPSAoc3RydWN0IHJ0ZV90Y3Bf aGRyICopKChjaGFyICopaXB2Nl9oZHIgKyBwa3QtJmd0O2wzX2xlbik7PGJyPg0KJmd0OyArPGJy Pg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsvKjxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICogRG9uJ3QgcHJvY2VzcyB0aGUgcGFja2V0IHdoaWNoIGhhcyBGSU4sIFNZTiwgUlNU LCBQU0gsIFVSRywgRUNFPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBvciBDV1Ig c2V0Ljxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICovPGJyPg0KJmd0OyArJm5ic3A7 ICZuYnNwOyAmbmJzcDtpZiAodGNwX2hkci0mZ3Q7dGNwX2ZsYWdzICE9IFJURV9UQ1BfQUNLX0ZM QUcpPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7cmV0dXJuIC0xOzxicj4NCiZndDsgKzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5i c3A7aXBfdGxlbiA9IHJ0ZV9iZV90b19jcHVfMTYoaXB2Nl9oZHItJmd0O3BheWxvYWRfbGVuKTs8 YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOy8qPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNw OyAmbmJzcDsgKiBUcmltIHRoZSB0YWlsIHBhZGRpbmcgYnl0ZXMuIFRoZSBJUHY2IGhlYWRlciBp cyBmaXhlZCB0bzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICogNDAgYnl0ZXMgdW5s aWtlIElQdjQgdGhhdCBpcyB2YXJpYWJsZS4gVGhlIGxlbmd0aCBpbiB0aGUgSVB2NiBoZWFkZXI8 YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAqIGNvbnRhaW5zIG9ubHkgbGVuZ3RoIG9m IFRDUCBIZWFkZXIgKyBUQ1AgUGF5bG9hZCwgd2hlcmVhcyBJUHY0PGJyPg0KJmd0OyBoZWFkZXIg Y29udGFpbnM8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAqIGxlbmd0aCBvZiBJUCBI ZWFkZXIgKyBUQ1AgSGVhZGVyICsgVENQIFBheWxvYWQ8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7 ICZuYnNwOyAqLzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKHBrdC0mZ3Q7cGt0 X2xlbiAmZ3Q7ICh1aW50MzJfdCkoaXBfdGxlbiArIHBrdC0mZ3Q7bDJfbGVuICsgcGt0LSZndDts M19sZW4pKTxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwO3J0ZV9wa3RtYnVmX3RyaW0ocGt0LCBwa3QtJmd0O3BrdF9sZW4gLSBpcF90bGVu IC0gcGt0LSZndDtsMl9sZW4gLTxicj4NCiZndDsgcGt0LSZndDtsM19sZW4pOzxicj4NCiZndDsg KyZuYnNwOyAmbmJzcDsgJm5ic3A7Lyo8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAq IERvbid0IHByb2Nlc3MgdGhlIHBhY2tldCB3aG9zZSBwYXlsb2FkIGxlbmd0aCBpcyBsZXNzIHRo YW4gb3I8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAqIGVxdWFsIHRvIDAuPGJyPg0K Jmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgKi88YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZu YnNwO3RjcF9kbCA9IGlwX3RsZW4gLSBwa3QtJmd0O2w0X2xlbjs8YnI+DQomZ3Q7ICsmbmJzcDsg Jm5ic3A7ICZuYnNwO2lmICh0Y3BfZGwgJmx0Oz0gMCk8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gLTE7PGJyPg0KJmd0OyAr PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtzZW50X3NlcSA9IHJ0ZV9iZV90b19jcHVf MzIodGNwX2hkci0mZ3Q7c2VudF9zZXEpOzxicj4NCiZndDsgKzxicj4NCiZndDsgKyZuYnNwOyAm bmJzcDsgJm5ic3A7cnRlX2V0aGVyX2FkZHJfY29weSgmYW1wOyhldGhfaGRyLSZndDtzcmNfYWRk ciksICZhbXA7KGtleS5ldGhfc2FkZHIpKTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNw O3J0ZV9ldGhlcl9hZGRyX2NvcHkoJmFtcDsoZXRoX2hkci0mZ3Q7ZHN0X2FkZHIpLCAmYW1wOyhr ZXkuZXRoX2RhZGRyKSk7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDttZW1jcHkoJmFt cDtrZXkuc3JjX2FkZHJbMF0sICZhbXA7aXB2Nl9oZHItJmd0O3NyY19hZGRyLDxicj4NCiZndDsg c2l6ZW9mKGtleS5zcmNfYWRkcikpOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7bWVt Y3B5KCZhbXA7a2V5LmRzdF9hZGRyWzBdLCAmYW1wO2lwdjZfaGRyLSZndDtkc3RfYWRkciw8YnI+ DQomZ3Q7IHNpemVvZihrZXkuZHN0X2FkZHIpKTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZu YnNwO2tleS5zcmNfcG9ydCA9IHRjcF9oZHItJmd0O3NyY19wb3J0Ozxicj4NCiZndDsgKyZuYnNw OyAmbmJzcDsgJm5ic3A7a2V5LmRzdF9wb3J0ID0gdGNwX2hkci0mZ3Q7ZHN0X3BvcnQ7PGJyPg0K Jmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtrZXkucmVjdl9hY2sgPSB0Y3BfaGRyLSZndDtyZWN2 X2Fjazs8YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOy8qIFNlYXJj aCBmb3IgYSBtYXRjaGVkIGZsb3cuICovPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtt YXhfZmxvd19udW0gPSB0YmwtJmd0O21heF9mbG93X251bTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5i c3A7ICZuYnNwO3JlbWFpbmluZ19mbG93X251bSA9IHRibC0mZ3Q7Zmxvd19udW07PGJyPg0KJmd0 OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtmaW5kID0gMDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7 ICZuYnNwO2ZvciAoaSA9IDA7IGkgJmx0OyBtYXhfZmxvd19udW0gJmFtcDsmYW1wOyByZW1haW5p bmdfZmxvd19udW07IGkrKykgezxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lmICh0YmwtJmd0O2Zsb3dzW2ldLnN0YXJ0X2luZGV4ICE9 IElOVkFMSURfQVJSQVlfSU5ERVgpIHs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYg KGlzX3NhbWVfdGNwNl9mbG93KHRibC0mZ3Q7Zmxvd3NbaV0ua2V5LCBrZXkpKSB7PGJyPg0KJmd0 OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsvKjxicj4N CiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICog SVAgdmVyc2lvbiAoNCkgVHJhZmZpYyBDbGFzcyAoOCkgRmxvdyBMYWJlbCAoMjApPGJyPg0KJmd0 OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBBbGwg ZmllbGRzIGV4Y2VwdCBUcmFmZmljIGNsYXNzIHNob3VsZCBiZTxicj4NCiZndDsgc2FtZTxicj4N CiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICov PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDt2dGNfZmxvd19kaWZmID0gKGlwdjZfaGRyLSZndDt2dGNfZmxvdyBeIHRibC08YnI+DQomZ3Q7 ICZndDtmbG93cy0mZ3Q7dnRjX2Zsb3cpOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKHZ0Y19mbG93X2RpZmYgJmFtcDsgaHRvbmwo MHhGMDBGRkZGRikpPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Y29udGludWU7PGJyPg0K Jmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtmaW5k ID0gMTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwO2JyZWFrOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt9PGJyPg0KJmd0OyAr Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwO3JlbWFpbmluZ19mbG93X251bS0tOzxicj4NCiZndDsgKyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO308YnI+DQomZ3Q7ICsm bmJzcDsgJm5ic3A7ICZuYnNwO308YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7 ICZuYnNwOy8qPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBGYWlsIHRvIGZpbmQg YSBtYXRjaGVkIGZsb3cuIEluc2VydCBhIG5ldyBmbG93IGFuZCBzdG9yZSB0aGU8YnI+DQomZ3Q7 ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAqIHBhY2tldCBpbnRvIHRoZSBmbG93Ljxicj4NCiZndDsg KyZuYnNwOyAmbmJzcDsgJm5ic3A7ICovPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtp ZiAoZmluZCA9PSAwKSB7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7aXRlbV9pZHggPSBpbnNlcnRfbmV3X2l0ZW0odGJsLCBwa3QsIHN0 YXJ0X3RpbWUsPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDtJTlZBTElEX0FSUkFZX0lOREVYLCBzZW50X3NlcSwgdHJ1ZSk7PGJyPg0KJmd0 OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKGl0 ZW1faWR4ID09IElOVkFMSURfQVJSQVlfSU5ERVgpPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwO3JldHVybiAtMTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDtpZiAoaW5zZXJ0X25ld19mbG93KHRibCwgJmFtcDtrZXksIGlwdjZf aGRyLSZndDt2dGNfZmxvdywgaXRlbV9pZHgpPGJyPg0KJmd0OyA9PTxicj4NCiZndDsgKyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7SU5WQUxJRF9BUlJBWV9J TkRFWCkgezxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsvKjxicj4NCiZndDsgKyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgKiBGYWlsIHRvIGluc2VydCBhIG5ldyBmbG93LCBzbyBkZWxldGUgdGhl PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAqIHN0b3JlZCBwYWNrZXQuPGJyPg0KJmd0 OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAqLzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtk ZWxldGVfaXRlbSh0YmwsIGl0ZW1faWR4LCBJTlZBTElEX0FSUkFZX0lOREVYKTs8YnI+DQomZ3Q7 ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIC0xOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO308YnI+DQomZ3Q7ICsmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gMDs8YnI+DQomZ3Q7 ICsmbmJzcDsgJm5ic3A7ICZuYnNwO308YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5i c3A7ICZuYnNwOy8qPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBDaGVjayBhbGwg cGFja2V0cyBpbiB0aGUgZmxvdyBhbmQgdHJ5IHRvIGZpbmQgYSBuZWlnaGJvciBmb3I8YnI+DQom Z3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAqIHRoZSBpbnB1dCBwYWNrZXQuPGJyPg0KJmd0OyAr Jm5ic3A7ICZuYnNwOyAmbmJzcDsgKi88YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO2N1 cl9pZHggPSB0YmwtJmd0O2Zsb3dzW2ldLnN0YXJ0X2luZGV4Ozxicj4NCiZndDsgKyZuYnNwOyAm bmJzcDsgJm5ic3A7cHJldl9pZHggPSBjdXJfaWR4Ozxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsg Jm5ic3A7ZG8gezxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwO2NtcCA9IGNoZWNrX3NlcV9vcHRpb24oJmFtcDsodGJsLSZndDtpdGVtc1tj dXJfaWR4XSksIHRjcF9oZHIsPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDtzZW50X3NlcSwgMCwgcGt0LSZndDtsNF9sZW4sIHRjcF9kbCwg MCw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwO3RydWUpOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwO2lmIChjbXApIHs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYg KG1lcmdlX3R3b190Y3BfcGFja2V0cygmYW1wOyh0YmwtJmd0O2l0ZW1zW2N1cl9pZHhdKSw8YnI+ DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cGt0 LCBjbXAsIHNlbnRfc2VxLCAwLCAwKSkgezxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIDE7PGJyPg0KJmd0OyArJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwO308YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Lyo8 YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICogRmFpbCB0byBtZXJnZSB0aGUgdHdvIHBh Y2tldHMsIGFzIHRoZSBwYWNrZXQ8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICogbGVu Z3RoIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4IHZhbHVlLiBTdG9yZTxicj4NCiZndDsgKyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgKiB0aGUgcGFja2V0IGludG8gdGhlIGZsb3cuPGJyPg0KJmd0OyArJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAqLzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAoaW5z ZXJ0X25ld19pdGVtKHRibCwgcGt0LCBzdGFydF90aW1lLCBjdXJfaWR4LDxicj4NCiZndDsgKyZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtzZW50X3NlcSwgdHJ1 ZSkgPT08YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtJTlZBTElEX0FSUkFZX0lOREVYKTxi cj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 cmV0dXJuIC0xOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gMDs8YnI+DQom Z3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt9PGJy Pg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 cHJldl9pZHggPSBjdXJfaWR4Ozxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwO2N1cl9pZHggPSB0YmwtJmd0O2l0ZW1zW2N1cl9pZHhdLm5l eHRfcGt0X2lkeDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO30gd2hpbGUgKGN1cl9p ZHggIT0gSU5WQUxJRF9BUlJBWV9JTkRFWCk7PGJyPg0KJmd0OyArPGJyPg0KJmd0OyArJm5ic3A7 ICZuYnNwOyAmbmJzcDsvKiBGYWlsIHRvIGZpbmQgYSBuZWlnaGJvciwgc28gc3RvcmUgdGhlIHBh Y2tldCBpbnRvIHRoZSBmbG93LiAqLzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7aWYg KGluc2VydF9uZXdfaXRlbSh0YmwsIHBrdCwgc3RhcnRfdGltZSwgcHJldl9pZHgsIHNlbnRfc2Vx LDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7dHJ1ZSkgPT0gSU5WQUxJRF9BUlJBWV9JTkRFWCk8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gLTE7PGJyPg0KJmd0OyAr PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gMDs8YnI+DQomZ3Q7ICt9PGJy Pg0KJmd0OyArPGJyPg0KJmd0OyArdWludDE2X3Q8YnI+DQomZ3Q7ICtncm9fdGNwNl90YmxfdGlt ZW91dF9mbHVzaChzdHJ1Y3QgZ3JvX3RjcDZfdGJsICp0YmwsPGJyPg0KJmd0OyArJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDY0X3QgZmx1c2hfdGlt ZXN0YW1wLDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwO3N0cnVjdCBydGVfbWJ1ZiAqKm91dCw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MTZfdCBuYl9vdXQpPGJyPg0K Jmd0OyArezxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDE2X3QgayA9IDA7PGJy Pg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzJfdCBpLCBqOzxicj4NCiZndDsgKyZu YnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3QgbWF4X2Zsb3dfbnVtID0gdGJsLSZndDttYXhfZmxv d19udW07PGJyPg0KJmd0OyArPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtmb3IgKGkg PSAwOyBpICZsdDsgbWF4X2Zsb3dfbnVtOyBpKyspIHs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAodW5saWtlbHkodGJsLSZndDtm bG93X251bSA9PSAwKSk8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIGs7PGJy Pg0KJmd0OyArPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7aiA9IHRibC0mZ3Q7Zmxvd3NbaV0uc3RhcnRfaW5kZXg7PGJyPg0KJmd0OyAr Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7d2hpbGUgKGog IT0gSU5WQUxJRF9BUlJBWV9JTkRFWCkgezxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtp ZiAodGJsLSZndDtpdGVtc1tqXS5zdGFydF90aW1lICZsdDs9IGZsdXNoX3RpbWVzdGFtcCkgezxi cj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 b3V0W2srK10gPSB0YmwtJmd0O2l0ZW1zW2pdLmZpcnN0c2VnOzxicj4NCiZndDsgKyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKHRibC0mZ3Q7aXRlbXNb al0ubmJfbWVyZ2VkICZndDsgMSk8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1cGRhdGVf aGVhZGVyKCZhbXA7KHRibC0mZ3Q7aXRlbXNbal0pKTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy8qPGJyPg0KJmd0OyArJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBEZWxldGUgdGhlIHBhY2tl dCBhbmQgZ2V0IHRoZSBuZXh0PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBwYWNrZXQgaW4gdGhlIGZsb3cuPGJyPg0KJmd0OyArJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKi88YnI+DQomZ3Q7 ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2ogPSBkZWxl dGVfaXRlbSh0YmwsIGosPGJyPg0KJmd0OyBJTlZBTElEX0FSUkFZX0lOREVYKTs8YnI+DQomZ3Q7 ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3RibC0mZ3Q7 Zmxvd3NbaV0uc3RhcnRfaW5kZXggPSBqOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKGogPT0gSU5WQUxJRF9BUlJBWV9JTkRFWCk8 YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt0YmwtJmd0O2Zsb3dfbnVtLS07PGJyPg0KJmd0 OyArPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDtpZiAodW5saWtlbHkoayA9PSBuYl9vdXQpKTxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwO3JldHVybiBrOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt9IGVsc2U8YnI+DQom Z3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy8qPGJy Pg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg KiBUaGUgbGVmdCBwYWNrZXRzIGluIHRoaXMgZmxvdyB3b24ndCBiZTxicj4NCiZndDsgKyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICogdGltZW91dC4gR28g dG8gY2hlY2sgb3RoZXIgZmxvd3MuPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKi88YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2JyZWFrOzxicj4NCiZndDsgKyZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO308YnI+DQomZ3Q7ICsmbmJzcDsg Jm5ic3A7ICZuYnNwO308YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3JldHVybiBrOzxi cj4NCiZndDsgK308YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICt1aW50MzJfdDxicj4NCiZndDsgK2dy b190Y3A2X3RibF9wa3RfY291bnQodm9pZCAqdGJsKTxicj4NCiZndDsgK3s8YnI+DQomZ3Q7ICsm bmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBncm9fdGNwNl90YmwgKmdyb190YmwgPSB0Ymw7PGJy Pg0KJmd0OyArPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAoZ3JvX3RibCk8YnI+ DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDty ZXR1cm4gZ3JvX3RibC0mZ3Q7aXRlbV9udW07PGJyPg0KJmd0OyArPGJyPg0KJmd0OyArJm5ic3A7 ICZuYnNwOyAmbmJzcDtyZXR1cm4gMDs8YnI+DQomZ3Q7ICt9PGJyPg0KJmd0OyBkaWZmIC0tZ2l0 IGEvbGliL2dyby9ncm9fdGNwNi5oIGIvbGliL2dyby9ncm9fdGNwNi5oIG5ldyBmaWxlIG1vZGUg MTAwNjQ0PGJyPg0KJmd0OyBpbmRleCAwMDAwMDAwMDAwLi45MTMyNWMwZGEyPGJyPg0KJmd0OyAt LS0gL2Rldi9udWxsPGJyPg0KJmd0OyArKysgYi9saWIvZ3JvL2dyb190Y3A2Lmg8YnI+DQomZ3Q7 IEBAIC0wLDAgKzEsMTUwIEBAPGJyPg0KJmd0OyArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEJTRC0zLUNsYXVzZTxicj4NCiZndDsgKyAqIENvcHlyaWdodChjKSAyMDE3IEludGVsIENvcnBv cmF0aW9uPGJyPg0KJmd0OyArICovPGJyPg0KJmd0OyArPGJyPg0KJmd0OyArI2lmbmRlZiBfR1JP X1RDUDZfSF88YnI+DQomZ3Q7ICsjZGVmaW5lIF9HUk9fVENQNl9IXzxicj4NCiZndDsgKzxicj4N CiZndDsgKyNkZWZpbmUgSU5WQUxJRF9BUlJBWV9JTkRFWCAweGZmZmZmZmZmVUwgI2RlZmluZTxi cj4NCiZndDsgK0dST19UQ1A2X1RCTF9NQVhfSVRFTV9OVU0gKDEwMjRVTCAqIDEwMjRVTCk8YnI+ DQomZ3Q7ICs8YnI+DQomZ3Q7ICsvKiBIZWFkZXIgZmllbGRzIHJlcHJlc2VudGluZyBhIFRDUC9J UHY2IGZsb3cgKi8gc3RydWN0IHRjcDZfZmxvd19rZXkgezxicj4NCiZndDsgKyZuYnNwOyAmbmJz cDsgJm5ic3A7c3RydWN0IHJ0ZV9ldGhlcl9hZGRyIGV0aF9zYWRkcjs8YnI+DQomZ3Q7ICsmbmJz cDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBydGVfZXRoZXJfYWRkciBldGhfZGFkZHI7PGJyPg0KJmd0 OyArJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50OF90Jm5ic3A7IHNyY19hZGRyWzE2XTs8YnI+DQom Z3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQ4X3QmbmJzcDsgZHN0X2FkZHJbMTZdOzxicj4N CiZndDsgKzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3QgcmVjdl9hY2s7 PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MTZfdCBzcmNfcG9ydDs8YnI+DQom Z3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQxNl90IGRzdF9wb3J0Ozxicj4NCiZndDsgK307 PGJyPg0KJmd0OyArPGJyPg0KJmd0OyArc3RydWN0IGdyb190Y3A2X2Zsb3cgezxicj4NCiZndDsg KyZuYnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0IHRjcDZfZmxvd19rZXkga2V5Ozxicj4NCiZndDsg KyZuYnNwOyAmbmJzcDsgJm5ic3A7cnRlX2JlMzJfdCB2dGNfZmxvdzs8YnI+DQomZ3Q7ICsmbmJz cDsgJm5ic3A7ICZuYnNwOy8qPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBUaGUg aW5kZXggb2YgdGhlIGZpcnN0IHBhY2tldCBpbiB0aGUgZmxvdy48YnI+DQomZ3Q7ICsmbmJzcDsg Jm5ic3A7ICZuYnNwOyAqIElOVkFMSURfQVJSQVlfSU5ERVggaW5kaWNhdGVzIGFuIGVtcHR5IGZs b3cuPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgKi88YnI+DQomZ3Q7ICsmbmJzcDsg Jm5ic3A7ICZuYnNwO3VpbnQzMl90IHN0YXJ0X2luZGV4Ozxicj4NCiZndDsgK307PGJyPg0KJmd0 OyArPGJyPg0KJmd0OyArLyo8YnI+DQomZ3Q7ICsgKiBUQ1AvSVB2NiByZWFzc2VtYmx5IHRhYmxl IHN0cnVjdHVyZS48YnI+DQomZ3Q7ICsgKi88YnI+DQomZ3Q7ICtzdHJ1Y3QgZ3JvX3RjcDZfdGJs IHs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOy8qIGl0ZW0gYXJyYXkgKi88YnI+DQom Z3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBncm9fdGNwX2l0ZW0gKml0ZW1zOzxicj4N CiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7LyogZmxvdyBhcnJheSAqLzxicj4NCiZndDsgKyZu YnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0IGdyb190Y3A2X2Zsb3cgKmZsb3dzOzxicj4NCiZndDsg KyZuYnNwOyAmbmJzcDsgJm5ic3A7LyogY3VycmVudCBpdGVtIG51bWJlciAqLzxicj4NCiZndDsg KyZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3QgaXRlbV9udW07PGJyPg0KJmd0OyArJm5ic3A7 ICZuYnNwOyAmbmJzcDsvKiBjdXJyZW50IGZsb3cgbnVtICovPGJyPg0KJmd0OyArJm5ic3A7ICZu YnNwOyAmbmJzcDt1aW50MzJfdCBmbG93X251bTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZu YnNwOy8qIGl0ZW0gYXJyYXkgc2l6ZSAqLzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7 dWludDMyX3QgbWF4X2l0ZW1fbnVtOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7Lyog ZmxvdyBhcnJheSBzaXplICovPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzJf dCBtYXhfZmxvd19udW07PGJyPg0KJmd0OyArfTs8YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICsvKio8 YnI+DQomZ3Q7ICsgKiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBUQ1AvSVB2NiByZWFzc2VtYmx5 IHRhYmxlLjxicj4NCiZndDsgKyAqPGJyPg0KJmd0OyArICogQHBhcmFtIHNvY2tldF9pZDxicj4N CiZndDsgKyAqJm5ic3A7IFNvY2tldCBpbmRleCBmb3IgYWxsb2NhdGluZyB0aGUgVENQL0lQdjYg cmVhc3NlbWJsZSB0YWJsZTxicj4NCiZndDsgKyAqIEBwYXJhbSBtYXhfZmxvd19udW08YnI+DQom Z3Q7ICsgKiZuYnNwOyBUaGUgbWF4aW11bSBudW1iZXIgb2YgZmxvd3MgaW4gdGhlIFRDUC9JUHY2 IEdSTyB0YWJsZTxicj4NCiZndDsgKyAqIEBwYXJhbSBtYXhfaXRlbV9wZXJfZmxvdzxicj4NCiZn dDsgKyAqJm5ic3A7IFRoZSBtYXhpbXVtIG51bWJlciBvZiBwYWNrZXRzIHBlciBmbG93PGJyPg0K Jmd0OyArICo8YnI+DQomZ3Q7ICsgKiBAcmV0dXJuPGJyPg0KJmd0OyArICombmJzcDsgLSBSZXR1 cm4gdGhlIHRhYmxlIHBvaW50ZXIgb24gc3VjY2Vzcy48YnI+DQomZ3Q7ICsgKiZuYnNwOyAtIFJl dHVybiBOVUxMIG9uIGZhaWx1cmUuPGJyPg0KJmd0OyArICovPGJyPg0KJmd0OyArdm9pZCAqZ3Jv X3RjcDZfdGJsX2NyZWF0ZSh1aW50MTZfdCBzb2NrZXRfaWQsPGJyPg0KJmd0OyArJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDE2X3QgbWF4X2Zsb3df bnVtLDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwO3VpbnQxNl90IG1heF9pdGVtX3Blcl9mbG93KTs8YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7 ICsvKio8YnI+DQomZ3Q7ICsgKiBUaGlzIGZ1bmN0aW9uIGRlc3Ryb3lzIGEgVENQL0lQdjYgcmVh c3NlbWJseSB0YWJsZS48YnI+DQomZ3Q7ICsgKjxicj4NCiZndDsgKyAqIEBwYXJhbSB0Ymw8YnI+ DQomZ3Q7ICsgKiZuYnNwOyBQb2ludGVyIHBvaW50aW5nIHRvIHRoZSBUQ1AvSVB2NiByZWFzc2Vt Ymx5IHRhYmxlLjxicj4NCiZndDsgKyAqLzxicj4NCiZndDsgK3ZvaWQgZ3JvX3RjcDZfdGJsX2Rl c3Ryb3kodm9pZCAqdGJsKTs8YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICsvKio8YnI+DQomZ3Q7ICsg KiBUaGlzIGZ1bmN0aW9uIG1lcmdlcyBhIFRDUC9JUHY2IHBhY2tldC4gSXQgZG9lc24ndCBwcm9j ZXNzIHRoZTxicj4NCiZndDsgK3BhY2tldCw8YnI+DQomZ3Q7ICsgKiB3aGljaCBoYXMgU1lOLCBG SU4sIFJTVCwgUFNILCBDV1IsIEVDRSBvciBVUkcgc2V0LCBvciBkb2Vzbid0IGhhdmU8YnI+DQom Z3Q7ICsgKiBwYXlsb2FkLjxicj4NCiZndDsgKyAqPGJyPg0KJmd0OyArICogVGhpcyBmdW5jdGlv biBkb2Vzbid0IGNoZWNrIGlmIHRoZSBwYWNrZXQgaGFzIGNvcnJlY3QgY2hlY2tzdW1zIGFuZDxi cj4NCiZndDsgKyAqIGRvZXNuJ3QgcmUtY2FsY3VsYXRlIGNoZWNrc3VtcyBmb3IgdGhlIG1lcmdl ZCBwYWNrZXQuIEFkZGl0aW9uYWxseSw8YnI+DQomZ3Q7ICsgKiBpdCBhc3N1bWVzIHRoZSBwYWNr ZXRzIGFyZSBjb21wbGV0ZSAoaS5lLiwgTUY9PTAgJmFtcDsmYW1wOyBmcmFnX29mZj09MCksPGJy Pg0KJmd0OyArICogd2hlbiBJUCBmcmFnbWVudGF0aW9uIGlzIHBvc3NpYmxlIChpLmUuLCBERj09 MCkuIEl0IHJldHVybnMgdGhlPGJyPg0KJmd0OyArICogcGFja2V0LCBpZiB0aGUgcGFja2V0IGhh cyBpbnZhbGlkIHBhcmFtZXRlcnMgKGUuZy4gU1lOIGJpdCBpcyBzZXQpPGJyPg0KJmd0OyArICog b3IgdGhlcmUgaXMgbm8gYXZhaWxhYmxlIHNwYWNlIGluIHRoZSB0YWJsZS48YnI+DQomZ3Q7ICsg Kjxicj4NCiZndDsgKyAqIEBwYXJhbSBwa3Q8YnI+DQomZ3Q7ICsgKiZuYnNwOyBQYWNrZXQgdG8g cmVhc3NlbWJsZTxicj4NCiZndDsgKyAqIEBwYXJhbSB0Ymw8YnI+DQomZ3Q7ICsgKiZuYnNwOyBQ b2ludGVyIHBvaW50aW5nIHRvIHRoZSBUQ1AvSVB2NiByZWFzc2VtYmx5IHRhYmxlPGJyPg0KJmd0 OyArICogQHN0YXJ0X3RpbWU8YnI+DQomZ3Q7ICsgKiZuYnNwOyBUaGUgdGltZSB3aGVuIHRoZSBw YWNrZXQgaXMgaW5zZXJ0ZWQgaW50byB0aGUgdGFibGU8YnI+DQomZ3Q7ICsgKjxicj4NCiZndDsg KyAqIEByZXR1cm48YnI+DQomZ3Q7ICsgKiZuYnNwOyAtIFJldHVybiBhIHBvc2l0aXZlIHZhbHVl IGlmIHRoZSBwYWNrZXQgaXMgbWVyZ2VkLjxicj4NCiZndDsgKyAqJm5ic3A7IC0gUmV0dXJuIHpl cm8gaWYgdGhlIHBhY2tldCBpc24ndCBtZXJnZWQgYnV0IHN0b3JlZCBpbiB0aGUgdGFibGUuPGJy Pg0KJmd0OyArICombmJzcDsgLSBSZXR1cm4gYSBuZWdhdGl2ZSB2YWx1ZSBmb3IgaW52YWxpZCBw YXJhbWV0ZXJzIG9yIG5vIGF2YWlsYWJsZTxicj4NCiZndDsgKyAqJm5ic3A7ICZuYnNwOyBzcGFj ZSBpbiB0aGUgdGFibGUuPGJyPg0KJmd0OyArICovPGJyPg0KJmd0OyAraW50MzJfdCBncm9fdGNw Nl9yZWFzc2VtYmxlKHN0cnVjdCBydGVfbWJ1ZiAqcGt0LDxicj4NCiZndDsgKyZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBncm9fdGNwNl90Ymwg KnRibCw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDt1aW50NjRfdCBzdGFydF90aW1lKTs8YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICsvKio8 YnI+DQomZ3Q7ICsgKiBUaGlzIGZ1bmN0aW9uIGZsdXNoZXMgdGltZW91dCBwYWNrZXRzIGluIGEg VENQL0lQdjYgcmVhc3NlbWJseTxicj4NCiZndDsgK3RhYmxlLDxicj4NCiZndDsgKyAqIGFuZCB3 aXRob3V0IHVwZGF0aW5nIGNoZWNrc3Vtcy48YnI+DQomZ3Q7ICsgKjxicj4NCiZndDsgKyAqIEBw YXJhbSB0Ymw8YnI+DQomZ3Q7ICsgKiZuYnNwOyBUQ1AvSVB2NiByZWFzc2VtYmx5IHRhYmxlIHBv aW50ZXI8YnI+DQomZ3Q7ICsgKiBAcGFyYW0gZmx1c2hfdGltZXN0YW1wPGJyPg0KJmd0OyArICom bmJzcDsgRmx1c2ggcGFja2V0cyB3aGljaCBhcmUgaW5zZXJ0ZWQgaW50byB0aGUgdGFibGUgYmVm b3JlIG9yIGF0IHRoZTxicj4NCiZndDsgKyAqJm5ic3A7IGZsdXNoX3RpbWVzdGFtcC48YnI+DQom Z3Q7ICsgKiBAcGFyYW0gb3V0PGJyPg0KJmd0OyArICombmJzcDsgUG9pbnRlciBhcnJheSB1c2Vk IHRvIGtlZXAgZmx1c2hlZCBwYWNrZXRzPGJyPg0KJmd0OyArICogQHBhcmFtIG5iX291dDxicj4N CiZndDsgKyAqJm5ic3A7IFRoZSBlbGVtZW50IG51bWJlciBpbiAnb3V0Jy4gSXQgYWxzbyBkZXRl cm1pbmVzIHRoZSBtYXhpbXVtIG51bWJlcjxicj4NCiZndDsgK29mPGJyPg0KJmd0OyArICombmJz cDsgcGFja2V0cyB0aGF0IGNhbiBiZSBmbHVzaGVkIGZpbmFsbHkuPGJyPg0KJmd0OyArICo8YnI+ DQomZ3Q7ICsgKiBAcmV0dXJuPGJyPg0KJmd0OyArICombmJzcDsgVGhlIG51bWJlciBvZiBmbHVz aGVkIHBhY2tldHM8YnI+DQomZ3Q7ICsgKi88YnI+DQomZ3Q7ICt1aW50MTZfdCBncm9fdGNwNl90 YmxfdGltZW91dF9mbHVzaChzdHJ1Y3QgZ3JvX3RjcDZfdGJsICp0YmwsPGJyPg0KJmd0OyArJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDY0X3QgZmx1 c2hfdGltZXN0YW1wLDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBydGVfbWJ1ZiAqKm91dCw8YnI+DQomZ3Q7ICsmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MTZfdCBuYl9vdXQp Ozxicj4NCiZndDsgKzxicj4NCiZndDsgKy8qKjxicj4NCiZndDsgKyAqIFRoaXMgZnVuY3Rpb24g cmV0dXJucyB0aGUgbnVtYmVyIG9mIHRoZSBwYWNrZXRzIGluIGEgVENQL0lQdjY8YnI+DQomZ3Q7 ICsgKiByZWFzc2VtYmx5IHRhYmxlLjxicj4NCiZndDsgKyAqPGJyPg0KJmd0OyArICogQHBhcmFt IHRibDxicj4NCiZndDsgKyAqJm5ic3A7IFRDUC9JUHY2IHJlYXNzZW1ibHkgdGFibGUgcG9pbnRl cjxicj4NCiZndDsgKyAqPGJyPg0KJmd0OyArICogQHJldHVybjxicj4NCiZndDsgKyAqJm5ic3A7 IFRoZSBudW1iZXIgb2YgcGFja2V0cyBpbiB0aGUgdGFibGU8YnI+DQomZ3Q7ICsgKi88YnI+DQom Z3Q7ICt1aW50MzJfdCBncm9fdGNwNl90YmxfcGt0X2NvdW50KHZvaWQgKnRibCk7PGJyPg0KJmd0 OyArPGJyPg0KJmd0OyArLyo8YnI+DQomZ3Q7ICsgKiBDaGVjayBpZiB0d28gVENQL0lQdjYgcGFj a2V0cyBiZWxvbmcgdG8gdGhlIHNhbWUgZmxvdy48YnI+DQomZ3Q7ICsgKi88YnI+DQomZ3Q7ICtz dGF0aWMgaW5saW5lIGludDxicj4NCiZndDsgK2lzX3NhbWVfdGNwNl9mbG93KHN0cnVjdCB0Y3A2 X2Zsb3dfa2V5IGsxLCBzdHJ1Y3QgdGNwNl9mbG93X2tleSBrMikgezxicj4NCiZndDsgKyZuYnNw OyAmbmJzcDsgJm5ic3A7cmV0dXJuICghbWVtY21wKCZhbXA7azEsICZhbXA7azIsIHNpemVvZihz dHJ1Y3QgdGNwNl9mbG93X2tleSkpKTsgfTxicj4NCiZndDsgKzxicj4NCiZndDsgKyNlbmRpZjxi cj4NCiZndDsgZGlmZiAtLWdpdCBhL2xpYi9ncm8vZ3JvX3Z4bGFuX3RjcDQuYyBiL2xpYi9ncm8v Z3JvX3Z4bGFuX3RjcDQuYyBpbmRleDxicj4NCiZndDsgM2JlNGRlYjdjNy4uNTZiMzBiOGM5OCAx MDA2NDQ8YnI+DQomZ3Q7IC0tLSBhL2xpYi9ncm8vZ3JvX3Z4bGFuX3RjcDQuYzxicj4NCiZndDsg KysrIGIvbGliL2dyby9ncm9fdnhsYW5fdGNwNC5jPGJyPg0KJmd0OyBAQCAtNyw2ICs3LDcgQEA8 YnI+DQomZ3Q7Jm5ic3A7ICNpbmNsdWRlICZsdDtydGVfZXRoZGV2LmgmZ3Q7PGJyPg0KJmd0OyZu YnNwOyAjaW5jbHVkZSAmbHQ7cnRlX3VkcC5oJmd0Ozxicj4NCiZndDsgPGJyPg0KJmd0OyArI2lu Y2x1ZGUgJnF1b3Q7Z3JvX3RjcC5oJnF1b3Q7PGJyPg0KJmd0OyZuYnNwOyAjaW5jbHVkZSAmcXVv dDtncm9fdnhsYW5fdGNwNC5oJnF1b3Q7PGJyPg0KJmd0OyA8YnI+DQomZ3Q7Jm5ic3A7IHZvaWQg Kjxicj4NCiZndDsgQEAgLTI0OCw3ICsyNDksNyBAQCBtZXJnZV90d29fdnhsYW5fdGNwNF9wYWNr ZXRzKHN0cnVjdDxicj4NCiZndDsgZ3JvX3Z4bGFuX3RjcDRfaXRlbSAqaXRlbSw8YnI+DQomZ3Q7 Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3Vp bnQxNl90IG91dGVyX2lwX2lkLDxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDE2X3QgaXBfaWQpPGJyPg0KJmd0OyZuYnNw OyB7PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAobWVyZ2VfdHdvX3RjcDRfcGFj a2V0cygmYW1wO2l0ZW0tJmd0O2lubmVyX2l0ZW0sIHBrdCwgY21wLDxicj4NCiZndDsgc2VudF9z ZXEsPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAobWVyZ2VfdHdvX3RjcF9wYWNr ZXRzKCZhbXA7aXRlbS0mZ3Q7aW5uZXJfaXRlbSwgcGt0LCBjbXAsIHNlbnRfc2VxLDxicj4NCiZn dDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtp cF9pZCwgcGt0LSZndDtvdXRlcl9sMl9sZW4gKzxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtwa3QtJmd0O291dGVyX2wzX2xlbikp IHs8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOy8qIFVwZGF0ZSB0aGUgb3V0ZXIgSVB2NCBJRCB0byB0aGUgbGFyZ2UgdmFsdWUu ICovIGRpZmYgLS1naXQ8YnI+DQomZ3Q7IGEvbGliL2dyby9ncm9fdnhsYW5fdGNwNC5oIGIvbGli L2dyby9ncm9fdnhsYW5fdGNwNC5oIGluZGV4PGJyPg0KJmd0OyA3ODMyOTQyYTY4Li5kNjhkNWZj ZDViIDEwMDY0NDxicj4NCiZndDsgLS0tIGEvbGliL2dyby9ncm9fdnhsYW5fdGNwNC5oPGJyPg0K Jmd0OyArKysgYi9saWIvZ3JvL2dyb192eGxhbl90Y3A0Lmg8YnI+DQomZ3Q7IEBAIC01LDYgKzUs NyBAQDxicj4NCiZndDsmbmJzcDsgI2lmbmRlZiBfR1JPX1ZYTEFOX1RDUDRfSF88YnI+DQomZ3Q7 Jm5ic3A7ICNkZWZpbmUgX0dST19WWExBTl9UQ1A0X0hfPGJyPg0KJmd0OyA8YnI+DQomZ3Q7ICsj aW5jbHVkZSAmcXVvdDtncm9fdGNwLmgmcXVvdDs8YnI+DQomZ3Q7Jm5ic3A7ICNpbmNsdWRlICZx dW90O2dyb190Y3A0LmgmcXVvdDs8YnI+DQomZ3Q7IDxicj4NCiZndDsmbmJzcDsgI2RlZmluZSBH Uk9fVlhMQU5fVENQNF9UQkxfTUFYX0lURU1fTlVNICgxMDI0VUwgKiAxMDI0VUwpIEBAIC08YnI+ DQomZ3Q7IDM2LDcgKzM3LDcgQEAgc3RydWN0IGdyb192eGxhbl90Y3A0X2Zsb3cgeyZuYnNwOyB9 Ozxicj4NCiZndDsgPGJyPg0KJmd0OyZuYnNwOyBzdHJ1Y3QgZ3JvX3Z4bGFuX3RjcDRfaXRlbSB7 PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3QgZ3JvX3RjcDRfaXRlbSBpbm5l cl9pdGVtOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0IGdyb190Y3BfaXRl bSBpbm5lcl9pdGVtOzxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBJUHY0 IElEIGluIHRoZSBvdXRlciBJUHY0IGhlYWRlciAqLzxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDt1aW50MTZfdCBvdXRlcl9pcF9pZDs8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7LyogSW5kaWNhdGUgaWYgb3V0ZXIgSVB2NCBJRCBjYW4gYmUgaWdub3JlZCAq LyBkaWZmIC0tZ2l0PGJyPg0KJmd0OyBhL2xpYi9ncm8vbWVzb24uYnVpbGQgYi9saWIvZ3JvL21l c29uLmJ1aWxkIGluZGV4IGU0ZmEyOTU4YmQuLmRiY2UwNTIyMGQ8YnI+DQomZ3Q7IDEwMDY0NDxi cj4NCiZndDsgLS0tIGEvbGliL2dyby9tZXNvbi5idWlsZDxicj4NCiZndDsgKysrIGIvbGliL2dy by9tZXNvbi5idWlsZDxicj4NCiZndDsgQEAgLTQsNiArNCw3IEBAPGJyPg0KJmd0OyZuYnNwOyBz b3VyY2VzID0gZmlsZXMoPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJ3J0ZV9ncm8uYycsPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJ2dyb190Y3A0LmMnLDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAn Z3JvX3RjcDYuYycsPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg J2dyb191ZHA0LmMnLDxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICdncm9fdnhsYW5fdGNwNC5jJyw8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAnZ3JvX3Z4bGFuX3VkcDQuYycsPGJyPg0KJmd0OyBkaWZmIC0tZ2l0IGEvbGliL2dy by9ydGVfZ3JvLmMgYi9saWIvZ3JvL3J0ZV9ncm8uYyBpbmRleDxicj4NCiZndDsgZTM1Mzk5ZmQ0 Mi4uZDgyNGVlYmQ5MyAxMDA2NDQ8YnI+DQomZ3Q7IC0tLSBhL2xpYi9ncm8vcnRlX2dyby5jPGJy Pg0KJmd0OyArKysgYi9saWIvZ3JvL3J0ZV9ncm8uYzxicj4NCiZndDsgQEAgLTgsNiArOCw3IEBA PGJyPg0KJmd0OyA8YnI+DQomZ3Q7Jm5ic3A7ICNpbmNsdWRlICZxdW90O3J0ZV9ncm8uaCZxdW90 Ozxicj4NCiZndDsmbmJzcDsgI2luY2x1ZGUgJnF1b3Q7Z3JvX3RjcDQuaCZxdW90Ozxicj4NCiZn dDsgKyNpbmNsdWRlICZxdW90O2dyb190Y3A2LmgmcXVvdDs8YnI+DQomZ3Q7Jm5ic3A7ICNpbmNs dWRlICZxdW90O2dyb191ZHA0LmgmcXVvdDs8YnI+DQomZ3Q7Jm5ic3A7ICNpbmNsdWRlICZxdW90 O2dyb192eGxhbl90Y3A0LmgmcXVvdDs8YnI+DQomZ3Q7Jm5ic3A7ICNpbmNsdWRlICZxdW90O2dy b192eGxhbl91ZHA0LmgmcXVvdDs8YnI+DQomZ3Q7IEBAIC0yMCwxNCArMjEsMTYgQEAgdHlwZWRl ZiB1aW50MzJfdCAoKmdyb190YmxfcGt0X2NvdW50X2ZuKSh2b2lkICp0YmwpOzxicj4NCiZndDsg PGJyPg0KJmd0OyZuYnNwOyBzdGF0aWMgZ3JvX3RibF9jcmVhdGVfZm4gdGJsX2NyZWF0ZV9mbltS VEVfR1JPX1RZUEVfTUFYX05VTV0gPSB7PGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtncm9fdGNwNF90YmxfY3JlYXRlLCBncm9f dnhsYW5fdGNwNF90YmxfY3JlYXRlLDxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2dyb191ZHA0X3RibF9jcmVhdGUsIGdyb192eGxhbl91 ZHA0X3RibF9jcmVhdGUsIE5VTEx9Ozxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2dyb191ZHA0X3RibF9jcmVhdGUsIGdyb192eGxhbl91 ZHA0X3RibF9jcmVhdGUsPGJyPg0KJmd0OyBncm9fdGNwNl90YmxfY3JlYXRlLDxicj4NCiZndDsg K05VTEx9Ozxicj4NCiZndDsmbmJzcDsgc3RhdGljIGdyb190YmxfZGVzdHJveV9mbiB0YmxfZGVz dHJveV9mbltSVEVfR1JPX1RZUEVfTUFYX05VTV0gPSB7PGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7Z3JvX3RjcDRfdGJsX2Rlc3Ryb3ksIGdyb192eGxhbl90Y3A0X3RibF9kZXN0 cm95LDxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2dyb191ZHA0X3RibF9kZXN0 cm95LCBncm9fdnhsYW5fdWRwNF90YmxfZGVzdHJveSw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7Z3JvX3RjcDZfdGJsX2Rlc3Ryb3ksPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7TlVMTH07PGJyPg0KJmd0OyZuYnNwOyBzdGF0aWMgZ3JvX3RibF9wa3RfY291bnRfZm4g dGJsX3BrdF9jb3VudF9mbltSVEVfR1JPX1RZUEVfTUFYX05VTV08YnI+DQomZ3Q7ID0gezxicj4N CiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2dyb190Y3A0X3RibF9wa3RfY291bnQsPGJy Pg0KJmd0OyBncm9fdnhsYW5fdGNwNF90YmxfcGt0X2NvdW50LDxicj4NCiZndDsmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwO2dyb191ZHA0X3RibF9wa3RfY291bnQsPGJyPg0KJmd0OyBncm9fdnhs YW5fdWRwNF90YmxfcGt0X2NvdW50LDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtncm9f dGNwNl90YmxfcGt0X2NvdW50LDxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO05V TEx9Ozxicj4NCiZndDsgPGJyPg0KJmd0OyZuYnNwOyAjZGVmaW5lIElTX0lQVjRfVENQX1BLVChw dHlwZSkgKFJURV9FVEhfSVNfSVBWNF9IRFIocHR5cGUpICZhbXA7JmFtcDsgXCBAQDxicj4NCiZn dDsgLTM1LDYgKzM4LDEyIEBAIHN0YXRpYyBncm9fdGJsX3BrdF9jb3VudF9mbjxicj4NCiZndDsg dGJsX3BrdF9jb3VudF9mbltSVEVfR1JPX1RZUEVfTUFYX05VTV0gPSB7PGJyPg0KJmd0OyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsoKHB0eXBl ICZhbXA7IFJURV9QVFlQRV9MNF9GUkFHKSAhPSBSVEVfUFRZUEVfTDRfRlJBRykgJmFtcDsmYW1w Ozxicj4NCiZndDsgXDxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7KFJURV9FVEhfSVNfVFVOTkVMX1BLVChwdHlwZSkgPT0gMCkp PGJyPg0KJmd0OyA8YnI+DQomZ3Q7ICsvKiBHUk8gd2l0aCBleHRlbnNpb24gaGVhZGVycyBpcyBu b3Qgc3VwcG9ydGVkICovICNkZWZpbmU8YnI+DQomZ3Q7ICtJU19JUFY2X1RDUF9QS1QocHR5cGUp IChSVEVfRVRIX0lTX0lQVjZfSERSKHB0eXBlKSAmYW1wOyZhbXA7IFw8YnI+DQomZ3Q7ICsmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsoKHB0eXBlICZhbXA7 IFJURV9QVFlQRV9MNF9UQ1ApID09IFJURV9QVFlQRV9MNF9UQ1ApICZhbXA7JmFtcDsgXDxicj4N CiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOygo cHR5cGUgJmFtcDsgUlRFX1BUWVBFX0w0X0ZSQUcpICE9IFJURV9QVFlQRV9MNF9GUkFHKSAmYW1w OyZhbXA7PGJyPg0KJmd0OyBcPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7KFJURV9FVEhfSVNfVFVOTkVMX1BLVChwdHlwZSkgPT0gMCkp PGJyPg0KJmd0OyArPGJyPg0KJmd0OyZuYnNwOyAjZGVmaW5lIElTX0lQVjRfVURQX1BLVChwdHlw ZSkgKFJURV9FVEhfSVNfSVBWNF9IRFIocHR5cGUpICZhbXA7JmFtcDsgXDxicj4NCiZndDsmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7KChwdHlw ZSAmYW1wOyBSVEVfUFRZUEVfTDRfVURQKSA9PSBSVEVfUFRZUEVfTDRfVURQKSAmYW1wOyZhbXA7 IFw8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyhSVEVfRVRIX0lTX1RVTk5FTF9QS1QocHR5cGUpID09IDApKTxicj4NCiZndDsg QEAgLTE0Nyw3ICsxNTYsMTEgQEAgcnRlX2dyb19yZWFzc2VtYmxlX2J1cnN0KHN0cnVjdCBydGVf bWJ1ZiAqKnBrdHMsPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy8qIGFsbG9j YXRlIGEgcmVhc3NlbWJseSB0YWJsZSBmb3IgVENQL0lQdjQgR1JPICovPGJyPg0KJmd0OyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBncm9fdGNwNF90YmwgdGNwX3RibDs8YnI+DQom Z3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0IGdyb190Y3A0X2Zsb3c8YnI+DQom Z3Q7IHRjcF9mbG93c1tSVEVfR1JPX01BWF9CVVJTVF9JVEVNX05VTV07PGJyPg0KJmd0OyAtJm5i c3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3QgZ3JvX3RjcDRfaXRlbSB0Y3BfaXRlbXNbUlRFX0dST19N QVhfQlVSU1RfSVRFTV9OVU1dPGJyPg0KJmd0OyA9IHt7MH0gfTs8YnI+DQomZ3Q7ICsmbmJzcDsg Jm5ic3A7ICZuYnNwO3N0cnVjdCBncm9fdGNwX2l0ZW0gdGNwX2l0ZW1zW1JURV9HUk9fTUFYX0JV UlNUX0lURU1fTlVNXTxicj4NCiZndDsgPSB7ezB9IH07PGJyPg0KJmd0OyArPGJyPg0KJmd0OyAr Jm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3QgZ3JvX3RjcDZfdGJsIHRjcDZfdGJsOzxicj4NCiZn dDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0IGdyb190Y3A2X2Zsb3c8YnI+DQomZ3Q7IHRj cDZfZmxvd3NbUlRFX0dST19NQVhfQlVSU1RfSVRFTV9OVU1dOzxicj4NCiZndDsgKyZuYnNwOyAm bmJzcDsgJm5ic3A7c3RydWN0IGdyb190Y3BfaXRlbSB0Y3A2X2l0ZW1zW1JURV9HUk9fTUFYX0JV UlNUX0lURU1fTlVNXTxicj4NCiZndDsgPSB7ezB9IH07PGJyPg0KJmd0OyA8YnI+DQomZ3Q7Jm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LyogYWxsb2NhdGUgYSByZWFzc2VtYmx5IHRhYmxlIGZv ciBVRFAvSVB2NCBHUk8gKi88YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7c3Ry dWN0IGdyb191ZHA0X3RibCB1ZHBfdGJsOzxicj4NCiZndDsgQEAgLTE3MSwxMCArMTg0LDEwIEBA IHJ0ZV9ncm9fcmVhc3NlbWJsZV9idXJzdChzdHJ1Y3QgcnRlX21idWYgKipwa3RzLDxicj4NCiZn dDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpbnQzMl90IHJldDs8YnI+DQomZ3Q7Jm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDE2X3QgaSwgdW5wcm9jZXNzX251bSA9IDAsIG5iX2Fm dGVyX2dybyA9IG5iX3BrdHM7PGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3Vp bnQ4X3QgZG9fdGNwNF9ncm8gPSAwLCBkb192eGxhbl90Y3BfZ3JvID0gMCwgZG9fdWRwNF9ncm8g PSAwLDxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwO2RvX3Z4bGFuX3VkcF9ncm8gPSAwOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2RvX3Z4bGFuX3VkcF9ncm8gPSAwLCBkb190 Y3A2X2dybyA9IDA7PGJyPg0KJmd0OyA8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7aWYgKHVubGlrZWx5KChwYXJhbS0mZ3Q7Z3JvX3R5cGVzICZhbXA7IChSVEVfR1JPX0lQVjRf VlhMQU5fVENQX0lQVjQ8YnI+DQomZ3Q7IHw8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtS VEVfR1JPX1RDUF9JUFY0IHw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtSVEVfR1JPX1RD UF9JUFY0IHw8YnI+DQomZ3Q7IFJURV9HUk9fVENQX0lQVjYgfDxicj4NCiZndDsmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7UlRFX0dST19JUFY0X1ZYTEFOX1VEUF9JUFY0IHw8YnI+DQomZ3Q7Jm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwO1JURV9HUk9fVURQX0lQVjQpKSA9PSAwKSk8YnI+DQomZ3Q7 Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3Jl dHVybiBuYl9wa3RzOzxicj4NCiZndDsgQEAgLTIzNiw2ICsyNDksMTggQEAgcnRlX2dyb19yZWFz c2VtYmxlX2J1cnN0KHN0cnVjdCBydGVfbWJ1ZiAqKnBrdHMsPGJyPg0KJmd0OyZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtkb191ZHA0X2dybyA9 IDE7PGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO308YnI+DQomZ3Q7IDxicj4N CiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKHBhcmFtLSZndDtncm9fdHlwZXMgJmFtcDsg UlRFX0dST19UQ1BfSVBWNikgezxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwO2ZvciAoaSA9IDA7IGkgJmx0OyBpdGVtX251bTsgaSsrKTxi cj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt0Y3A2X2Zsb3dzW2ldLnN0YXJ0X2luZGV4ID0g SU5WQUxJRF9BUlJBWV9JTkRFWDs8YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt0Y3A2X3RibC5mbG93cyA9IHRjcDZf Zmxvd3M7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7dGNwNl90YmwuaXRlbXMgPSB0Y3A2X2l0ZW1zOzxicj4NCiZndDsgKyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3RjcDZfdGJsLmZsb3dfbnVt ID0gMDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDt0Y3A2X3RibC5pdGVtX251bSA9IDA7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dGNwNl90YmwubWF4X2Zsb3dfbnVtID0g aXRlbV9udW07PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7dGNwNl90YmwubWF4X2l0ZW1fbnVtID0gaXRlbV9udW07PGJyPg0KJmd0OyAr Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ZG9fdGNwNl9n cm8gPSAxOzxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7fTxicj4NCiZndDsgPGJyPg0K Jmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2ZvciAoaSA9IDA7IGkgJmx0OyBuYl9wa3Rz OyBpKyspIHs8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOy8qPGJyPg0KJmd0OyBAQCAtMjc2LDYgKzMwMSwxNCBAQCBydGVfZ3Jv X3JlYXNzZW1ibGVfYnVyc3Qoc3RydWN0IHJ0ZV9tYnVmICoqcGt0cyw8YnI+DQomZ3Q7Jm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7bmJfYWZ0ZXJf Z3JvLS07PGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ZWxzZSBpZiAocmV0ICZs dDsgMCk8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7dW5wcm9jZXNzX3BrdHNbdW5wcm9jZXNzX251bSsrXSA9IHBrdHNbaV07PGJy Pg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 fSBlbHNlIGlmIChJU19JUFY2X1RDUF9QS1QocGt0c1tpXS0mZ3Q7cGFja2V0X3R5cGUpICZhbXA7 JmFtcDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwO2RvX3RjcDZfZ3JvKSB7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3JldCA9 IGdyb190Y3A2X3JlYXNzZW1ibGUocGt0c1tpXSwgJmFtcDt0Y3A2X3RibCwgMCk7PGJyPg0KJmd0 OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lmIChyZXQgJmd0OyAwKTxicj4NCiZndDsgKyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LyogbWVyZ2Ugc3VjY2Vzc2Z1 bGx5ICovPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDtuYl9hZnRlcl9ncm8tLTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ZWxz ZSBpZiAocmV0ICZsdDsgMCk8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwO3VucHJvY2Vzc19wa3RzW3VucHJvY2Vzc19udW0rK10gPSBwa3Rz W2ldOzxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7fSBlbHNlPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dW5w cm9jZXNzX3BrdHNbdW5wcm9jZXNzX251bSsrXSA9IHBrdHNbaV07PGJyPg0KJmd0OyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwO308YnI+DQomZ3Q7IEBAIC0yODMsOSArMzE2LDE3IEBAIHJ0ZV9n cm9fcmVhc3NlbWJsZV9idXJzdChzdHJ1Y3QgcnRlX21idWYgKipwa3RzLDxicj4NCiZndDsmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAoKG5iX2FmdGVyX2dybyAmbHQ7IG5iX3BrdHMpPGJy Pg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgfHwgKHVucHJvY2Vzc19udW0gJmx0OyBuYl9wa3RzKSkgezxicj4NCiZndDsmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aSA9IDA7PGJy Pg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 LyogQ29weSB1bnByb2Nlc3NlZCBwYWNrZXRzICovPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKHVucHJvY2Vzc19udW0gJmd0OyAw KSB7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO21lbWNweSgmYW1wO3BrdHNbaV0sIHVu cHJvY2Vzc19wa3RzLDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3NpemVvZihzdHJ1Y3Qg cnRlX21idWYgKikgKjxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VucHJvY2Vzc19udW0p Ozxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpID0gdW5wcm9jZXNzX251bTs8YnI+DQom Z3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt9PGJy Pg0KJmd0OyArPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsvKiBGbHVzaCBhbGwgcGFja2V0cyBmcm9tIHRoZSB0YWJsZXMgKi88 YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwO2lmIChkb192eGxhbl90Y3BfZ3JvKSB7PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwO2kgPTxicj4NCiZndDsgZ3JvX3Z4bGFuX3RjcDRfdGJsX3RpbWVvdXRfZmx1c2goJmFtcDt2 eGxhbl90Y3BfdGJsLDxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpICs9PGJyPg0KJmd0 OyBncm9fdnhsYW5fdGNwNF90YmxfdGltZW91dF9mbHVzaCgmYW1wO3Z4bGFuX3RjcF90YmwsPGJy Pg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDswLCBwa3RzLCBuYl9wa3RzKTs8YnI+DQom Z3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw O308YnI+DQomZ3Q7IDxicj4NCiZndDsgQEAgLTMwNCwxMyArMzQ1LDExIEBAIHJ0ZV9ncm9fcmVh c3NlbWJsZV9idXJzdChzdHJ1Y3QgcnRlX21idWYgKipwa3RzLDxicj4NCiZndDsmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwO2kgKz0gZ3JvX3VkcDRfdGJsX3RpbWVvdXRfZmx1c2goJmFtcDt1ZHBf dGJsLCAwLDxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7JmFtcDtwa3RzW2ldLCBu Yl9wa3RzIC0gaSk7PGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDt9PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LyogQ29weSB1bnByb2Nlc3NlZCBwYWNrZXRzICovPGJy Pg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 aWYgKHVucHJvY2Vzc19udW0gJmd0OyAwKSB7PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw O21lbWNweSgmYW1wO3BrdHNbaV0sIHVucHJvY2Vzc19wa3RzLDxicj4NCiZndDsgLSZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwO3NpemVvZihzdHJ1Y3QgcnRlX21idWYgKikgKjxicj4NCiZndDsgLSZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwO3VucHJvY2Vzc19udW0pOzxicj4NCiZndDsgKzxicj4NCiZndDsgKyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lmIChkb190Y3A2X2dybykg ezxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpICs9IGdyb190Y3A2X3RibF90aW1lb3V0 X2ZsdXNoKCZhbXA7dGNwNl90YmwsIDAsPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7JmFt cDtwa3RzW2ldLCBuYl9wa3RzIC0gaSk7PGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt9PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7bmJfYWZ0ZXJfZ3JvID0gaSArIHVu cHJvY2Vzc19udW07PGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO308YnI+DQom Z3Q7IDxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gbmJfYWZ0ZXJf Z3JvOzxicj4NCiZndDsgQEAgLTMyMywxMyArMzYyLDEzIEBAIHJ0ZV9ncm9fcmVhc3NlbWJsZShz dHJ1Y3QgcnRlX21idWYgKipwa3RzLCZuYnNwOyB7PGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwO3N0cnVjdCBydGVfbWJ1ZiAqdW5wcm9jZXNzX3BrdHNbbmJfcGt0c107PGJyPg0K Jmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBncm9fY3R4ICpncm9fY3R4ID0g Y3R4Ozxicj4NCiZndDsgLSZuYnNwOyAmbmJzcDsgJm5ic3A7dm9pZCAqdGNwX3RibCwgKnVkcF90 YmwsICp2eGxhbl90Y3BfdGJsLCAqdnhsYW5fdWRwX3RibDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5i c3A7ICZuYnNwO3ZvaWQgKnRjcF90YmwsICp1ZHBfdGJsLCAqdnhsYW5fdGNwX3RibCwgKnZ4bGFu X3VkcF90YmwsICp0Y3A2X3RibDs8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 dWludDY0X3QgY3VycmVudF90aW1lOzxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDt1aW50MTZfdCBpLCB1bnByb2Nlc3NfbnVtID0gMDs8YnI+DQomZ3Q7IC0mbmJzcDsgJm5ic3A7 ICZuYnNwO3VpbnQ4X3QgZG9fdGNwNF9ncm8sIGRvX3Z4bGFuX3RjcF9ncm8sIGRvX3VkcDRfZ3Jv LDxicj4NCiZndDsgZG9fdnhsYW5fdWRwX2dybzs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZu YnNwO3VpbnQ4X3QgZG9fdGNwNF9ncm8sIGRvX3Z4bGFuX3RjcF9ncm8sIGRvX3VkcDRfZ3JvLDxi cj4NCiZndDsgZG9fdnhsYW5fdWRwX2dybyw8YnI+DQomZ3Q7ICtkb190Y3A2X2dybzs8YnI+DQom Z3Q7IDxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAodW5saWtlbHkoKGdy b19jdHgtJmd0O2dyb190eXBlcyAmYW1wOzxicj4NCiZndDsgKFJURV9HUk9fSVBWNF9WWExBTl9U Q1BfSVBWNCB8PGJyPg0KJmd0OyAtJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7UlRFX0dST19UQ1BfSVBWNCB8 PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7UlRFX0dST19UQ1BfSVBWNCB8PGJyPg0KJmd0 OyBSVEVfR1JPX1RDUF9JUFY2IHw8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO1JU RV9HUk9fSVBWNF9WWExBTl9VRFBfSVBWNCB8PGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDtSVEVfR1JPX1VEUF9JUFY0KSkgPT0gMCkpPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gbmJfcGt0czs8YnI+ DQomZ3Q7IEBAIC0zMzgsNiArMzc3LDcgQEAgcnRlX2dyb19yZWFzc2VtYmxlKHN0cnVjdCBydGVf bWJ1ZiAqKnBrdHMsPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3Z4bGFuX3Rj cF90YmwgPSBncm9fY3R4LTxicj4NCiZndDsgJmd0O3RibHNbUlRFX0dST19JUFY0X1ZYTEFOX1RD UF9JUFY0X0lOREVYXTs8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWRwX3Ri bCA9IGdyb19jdHgtJmd0O3RibHNbUlRFX0dST19VRFBfSVBWNF9JTkRFWF07PGJyPg0KJmd0OyZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3Z4bGFuX3VkcF90YmwgPSBncm9fY3R4LTxicj4NCiZn dDsgJmd0O3RibHNbUlRFX0dST19JUFY0X1ZYTEFOX1VEUF9JUFY0X0lOREVYXTs8YnI+DQomZ3Q7 ICsmbmJzcDsgJm5ic3A7ICZuYnNwO3RjcDZfdGJsID0gZ3JvX2N0eC0mZ3Q7dGJsc1tSVEVfR1JP X1RDUF9JUFY2X0lOREVYXTs8YnI+DQomZ3Q7IDxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDtkb190Y3A0X2dybyA9IChncm9fY3R4LSZndDtncm9fdHlwZXMgJmFtcDsgUlRFX0dS T19UQ1BfSVBWNCkgPT08YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwO1JURV9HUk9fVENQX0lQVjQ7PGJyPg0KJmd0OyBAQCAtMzQ3 LDYgKzM4Nyw3IEBAIHJ0ZV9ncm9fcmVhc3NlbWJsZShzdHJ1Y3QgcnRlX21idWYgKipwa3RzLDxi cj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7UlRFX0dST19VRFBfSVBWNDs8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ZG9fdnhsYW5fdWRwX2dybyA9IChncm9fY3R4LSZndDtncm9fdHlwZXMgJmFtcDs8YnI+DQom Z3Q7IFJURV9HUk9fSVBWNF9WWExBTl9VRFBfSVBWNCkgPT08YnI+DQomZ3Q7Jm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO1JURV9HUk9fSVBWNF9W WExBTl9VRFBfSVBWNDs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwO2RvX3RjcDZfZ3Jv ID0gKGdyb19jdHgtJmd0O2dyb190eXBlcyAmYW1wOyBSVEVfR1JPX1RDUF9JUFY2KSA9PTxicj4N CiZndDsgK1JURV9HUk9fVENQX0lQVjY7PGJyPg0KJmd0OyA8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7Y3VycmVudF90aW1lID0gcnRlX3JkdHNjKCk7PGJyPg0KJmd0OyA8YnI+ DQomZ3Q7IEBAIC0zNzEsNiArNDEyLDExIEBAIHJ0ZV9ncm9fcmVhc3NlbWJsZShzdHJ1Y3QgcnRl X21idWYgKipwa3RzLDxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lmIChncm9f dWRwNF9yZWFzc2VtYmxlKHBrdHNbaV0sIHVkcF90YmwsPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Y3VycmVudF90aW1lKSAmbHQ7 IDApPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwO3VucHJvY2Vzc19wa3RzW3VucHJvY2Vzc19udW0rK10gPSBwa3RzW2ldOzxicj4N CiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO30g ZWxzZSBpZiAoSVNfSVBWNl9UQ1BfUEtUKHBrdHNbaV0tJmd0O3BhY2tldF90eXBlKSAmYW1wOyZh bXA7PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDtkb190Y3A2X2dybykgezxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAoZ3Jv X3RjcDZfcmVhc3NlbWJsZShwa3RzW2ldLCB0Y3A2X3RibCw8YnI+DQomZ3Q7ICsmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Y3VycmVudF90aW1lKSAmbHQ7IDAp PGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDt1bnByb2Nlc3NfcGt0c1t1bnByb2Nlc3NfbnVtKytdID0gcGt0c1tpXTs8YnI+DQomZ3Q7Jm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO30gZWxz ZTxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VucHJvY2Vzc19wa3RzW3VucHJv Y2Vzc19udW0rK10gPSBwa3RzW2ldOzxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDt9PGJyPg0KJmd0OyBAQCAtNDI2LDYgKzQ3MiwxNSBAQCBydGVfZ3JvX3RpbWVvdXRfZmx1c2go dm9pZCAqY3R4LDxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDtncm9fY3R4LSZndDt0YmxzW1JURV9HUk9fVURQX0lQVjRfSU5ERVhd LDxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDtmbHVzaF90aW1lc3RhbXAsPGJyPg0KJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZhbXA7b3V0W251bV0sIGxlZnRfbmJfb3V0 KTs8YnI+DQomZ3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDtsZWZ0X25iX291dCA9IG1heF9uYl9vdXQgLSBudW07PGJyPg0KJmd0OyArJm5ic3A7ICZu YnNwOyAmbmJzcDt9PGJyPg0KJmd0OyArPGJyPg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDtp ZiAoKGdyb190eXBlcyAmYW1wOyBSVEVfR1JPX1RDUF9JUFY2KSAmYW1wOyZhbXA7IGxlZnRfbmJf b3V0ICZndDsgMCkgezxicj4NCiZndDsgKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwO251bSArPSBncm9fdGNwNl90YmxfdGltZW91dF9mbHVzaCg8YnI+DQom Z3Q7ICsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2dyb19j dHgtJmd0O3RibHNbUlRFX0dST19UQ1BfSVBWNl9JTkRFWF0sPGJyPg0KJmd0OyArJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtmbHVzaF90aW1lc3RhbXAsPGJy Pg0KJmd0OyArJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsm YW1wO291dFtudW1dLCBsZWZ0X25iX291dCk7PGJyPg0KJmd0OyArPGJyPg0KJmd0OyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwO308YnI+DQomZ3Q7IDxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDtyZXR1cm4gbnVtOzxicj4NCiZndDsgZGlmZiAtLWdpdCBhL2xpYi9ncm8vcnRl X2dyby5oIGIvbGliL2dyby9ydGVfZ3JvLmggaW5kZXg8YnI+DQomZ3Q7IDlmOWVkNDkzNWEuLmM4 M2RmZDlhZDEgMTAwNjQ0PGJyPg0KJmd0OyAtLS0gYS9saWIvZ3JvL3J0ZV9ncm8uaDxicj4NCiZn dDsgKysrIGIvbGliL2dyby9ydGVfZ3JvLmg8YnI+DQomZ3Q7IEBAIC0zOCw2ICszOCw5IEBAIGV4 dGVybiAmcXVvdDtDJnF1b3Q7IHs8YnI+DQomZ3Q7Jm5ic3A7ICNkZWZpbmUgUlRFX0dST19JUFY0 X1ZYTEFOX1VEUF9JUFY0X0lOREVYIDMmbmJzcDsgI2RlZmluZTxicj4NCiZndDsgUlRFX0dST19J UFY0X1ZYTEFOX1VEUF9JUFY0ICgxVUxMICZsdDsmbHQ7PGJyPg0KJmd0OyBSVEVfR1JPX0lQVjRf VlhMQU5fVURQX0lQVjRfSU5ERVgpPGJyPg0KJmd0OyZuYnNwOyAvKiombHQ7IFZ4TEFOIFVEUC9J UHY0IEdSTyBmbGFnLiAqLzxicj4NCiZndDsgKyNkZWZpbmUgUlRFX0dST19UQ1BfSVBWNl9JTkRF WCA0PGJyPg0KJmd0OyArI2RlZmluZSBSVEVfR1JPX1RDUF9JUFY2ICgxVUxMICZsdDsmbHQ7IFJU RV9HUk9fVENQX0lQVjZfSU5ERVgpIC8qKiZsdDs8YnI+DQomZ3Q7IFRDUC9JUHY2PGJyPg0KJmd0 OyArR1JPIGZsYWcuICovPGJyPg0KJmd0OyA8YnI+DQomZ3Q7Jm5ic3A7IC8qKjxicj4NCiZndDsm bmJzcDsgJm5ic3A7KiBTdHJ1Y3R1cmUgdXNlZCB0byBjcmVhdGUgR1JPIGNvbnRleHQgb2JqZWN0 cyBvciB1c2VkIHRvIHBhc3M8YnI+DQomZ3Q7IC0tPGJyPg0KJmd0OyAyLjI1LjE8bzpwPjwvbzpw PjwvcD4NCjwvYmxvY2txdW90ZT4NCjwvZGl2Pg0KPC9ibG9ja3F1b3RlPg0KPC9ibG9ja3F1b3Rl Pg0KPC9ibG9ja3F1b3RlPg0KPC9ibG9ja3F1b3RlPg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0K PC9kaXY+DQo8L2JvZHk+DQo8L2h0bWw+DQo= --_000_CY5PR11MB64870A129DC1981861C7D14392489CY5PR11MB6487namp_--