From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 6908E486AB for ; Wed, 15 May 2024 10:14:27 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 743DF68D699; Wed, 15 May 2024 13:14:24 +0300 (EEST) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1E77F68D294 for ; Wed, 15 May 2024 13:14:16 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1715768063; x=1747304063; h=from:to:subject:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version; bh=sP+b+Va/BnFi957YfyPrLchCh6b0/nQGhMsC28zt/6A=; b=DBO2jHWsYLO2xkzpTIPkxRW/0C1KNLpWApCs8XmgdWX4ZgxdGTcoWi3L 9BLYLbrJfQY5z64Uw+WtZ8Kmz+tSj4ICT4N+io7yzYFQj1I3AD+tEsgx4 MvJ6lmVkm+n4A6tVY5plUjh8PpOaiqiQJ9Ff2CmJ3kso+COS8iimX4oqz lkTimTX0fAhLF01EhtNEmXWxnd9oPhsZErYuIMfsJFlOd8x8keuvJyQaJ SnaDzaTm9NX5SYDWiQKeC0DNegwAossZBisCxtmkVDV3dINyrmpg5ZP8R jRQlFaMS29rtz7y+DIfXeD4JWeRYu/uT10jW0yWSFsKpd42Scw29lR3Qm A==; X-CSE-ConnectionGUID: 5YET6CHDQt+4q2LtLJr2Zw== X-CSE-MsgGUID: 3leQRmCmSeSGaGs/a5E1Ig== X-IronPort-AV: E=McAfee;i="6600,9927,11073"; a="29297548" X-IronPort-AV: E=Sophos;i="6.08,161,1712646000"; d="scan'208";a="29297548" Received: from fmviesa009.fm.intel.com ([10.60.135.149]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 03:14:15 -0700 X-CSE-ConnectionGUID: ao5P1FVrQNm4IP07OCJpOA== X-CSE-MsgGUID: CAXb1hqQT0CkXfboONt8fg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,161,1712646000"; d="scan'208";a="31035885" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmviesa009.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 15 May 2024 03:14:14 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 15 May 2024 03:14:13 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39 via Frontend Transport; Wed, 15 May 2024 03:14:13 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.41) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Wed, 15 May 2024 03:14:13 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Y14tPUYAnaPwsbh/xym8hOh1j+by8dKi+YLTdAQ+2m3AVeMKTsBiM5SIBGvy4MnvTH/gYISRbDMukXF8i2EMRbjtID92UwPZhKAYn8DYRf914V0md23UDq1r/x+yM7Ig8FHxBGa49N2Mlo08lVkMnh8Uh3Iqbhy81qFu8Q8R4E3fSkwWExGVG3DbPyFw/snci4tJAV76y3Zv0MO6R2/l+s6ZIlfvgyLnu61+Sx08OpJx5/orIGNofI1L73teIbyqsSDFsl3GAUvaL1JJu1yeX0TTrcQfVnsxWSSnhugRbgSBC+lPcBPhSaBPP8CnlZn0Jt7YBhW2LxbLNUpObiK/mQ== 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=sP+b+Va/BnFi957YfyPrLchCh6b0/nQGhMsC28zt/6A=; b=O2f2F2qjAWgseiCyd3T6FDO39bGt18kiBH8wIpP7Z1ywePp97AsrNzry6RGhb+HB0p+dqONKb1YeRu9w91uxe993tCTlXIbwmW+9zKeDmqkxfr5Qylw0XPMYDz0VfudtvKpgWNc7Q6A4+vMlro4A+JEwcMFvjCVVuwtpcldspaLkeS55SYlboQOaeYuWWJhpshfFiGvI+zcDgLKdemLPUtTHrjNAavj2btTYWHWuOD7IMzFch1PuD1w+A22gRCU7lJPS380wG4dwkvVR6Y/fDCmO8JpgcEltEpUAwdXPOCtZLsnAXLlWT3ba6xJ/3F02BhOl0/qZpjDb+QtJ9vOdpg== 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 CH3PR11MB8659.namprd11.prod.outlook.com (2603:10b6:610:1cf::5) by DM4PR11MB7255.namprd11.prod.outlook.com (2603:10b6:8:10d::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55; Wed, 15 May 2024 10:14:11 +0000 Received: from CH3PR11MB8659.namprd11.prod.outlook.com ([fe80::7037:678a:eb45:ac6c]) by CH3PR11MB8659.namprd11.prod.outlook.com ([fe80::7037:678a:eb45:ac6c%3]) with mapi id 15.20.7587.028; Wed, 15 May 2024 10:14:11 +0000 From: "Wu, Tong1" To: FFmpeg development discussions and patches Thread-Topic: [FFmpeg-devel] [PATCH v8 05/15] avcodec/vaapi_encode: move the dpb logic from VAAPI to base layer Thread-Index: AQHapj/UufgqRBOL9kK7kALbdlXEI7GYDGpQ Date: Wed, 15 May 2024 10:14:10 +0000 Message-ID: References: <20240418085910.547-1-tong1.wu@intel.com> <20240418085910.547-5-tong1.wu@intel.com> <371d0efe-9631-48f7-bab8-33484b7776c5@jkqxz.net> In-Reply-To: <371d0efe-9631-48f7-bab8-33484b7776c5@jkqxz.net> Accept-Language: zh-CN, 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: CH3PR11MB8659:EE_|DM4PR11MB7255:EE_ x-ms-office365-filtering-correlation-id: 22f59673-6fe6-43ac-11ae-08dc74c7c3a4 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|376005|1800799015|366007|38070700009; x-microsoft-antispam-message-info: =?utf-8?B?OW8rUWZLTnN6L2loYVNsUUpqY1lHb2FvckhNaitZZVYybVdqYUdxc0liMW5m?= =?utf-8?B?MUF3Z1oyNXBIZ05leHJveWU0dXJaVndlVXEzc0VSSVR1am5FVlNnLzQxRXdm?= =?utf-8?B?V1BQYXFyOHJWWGNPdktua3ZjbUpBRkxEK1ZMdDhnSG5IZTFSNklkUlJyeVNX?= =?utf-8?B?OUpMTGp5WWRzMUZEWTMyWjlKNndZRm5ZUEI1b0hUVDlUenhTUVNjUng4N0NT?= =?utf-8?B?MktEWGlTTDBzV0tjNlM1UkhralNJV0F2eVo4dVlrb2wvbENhVGxaTC9iMkgv?= =?utf-8?B?WHdVeEZWUGNhaTRrRkl6eE9GT1dISHNuaktKc2RCVno3ejFxRVhuQzI2R01U?= =?utf-8?B?ZzdncmM5djlLU1AyeXdqcGRyRjdFU0R6VjRQd3hieXFsMzZuYTkvaVg4RHFq?= =?utf-8?B?aVNKQTBOVkxnejVScURNUkRTYXo3TEU0UnVNQytUZHVkQjRvbWVIN1ZCKzc0?= =?utf-8?B?b0dONk5PWUxnY1lDQXlVelVUbWthRVlCa2FBWnRXWUZEVUpjUmY2MlA3d0tj?= =?utf-8?B?anMxYUZWdWNadDhRK2NnWStSSXpzeW9BU3JrOE95K0pDeGc5dTVsWUhyS1hZ?= =?utf-8?B?VnZBNXhmT1hXaC9jbmFJdTRhdkZFSTlMN0RNaW9pTWdUejZrdGVpUUJlVklB?= =?utf-8?B?TTFtRzZYSUc1RDVuekZhYTVOMEN4YWNsMEVSdzhpd3lrbit1NngwYXJxVEJP?= =?utf-8?B?VnU3Qkx3dmRLNk95NEFoRXpxYTk2cHB0MkdQOU81bG03cGVoQUF3d04wM1Az?= =?utf-8?B?cVkrd2pFSmZCY2JvKzVWWEhPQUZ6RmdaUmduS2h3cHlvU3BIYThRZ2RvM2JU?= =?utf-8?B?cXM5SjRySWVSVmJocmFRNmNhZ2QxL3B3d1g4Y1lCK1NXQnhCQSswYkE0WEN5?= =?utf-8?B?STgvb042aks0b0dZMXJ2alkrdUF5UDc5SlRrUFh3eElNN2s2WFloUExhTzZs?= =?utf-8?B?WWdsaWdQZlJneXhlcG12a0EvVVRMSDdMbWJJQ09ydkx3SnRiSUg0Q2ljQ3k3?= =?utf-8?B?T3E3Mi94WFM4bnFpTWE4K2xuZTZLcUcyWHJhTkRJbFE5K0wrczVHS0RpSnBB?= =?utf-8?B?S2ZGd1F6Qkc5TkFDN01mVGdxU0k4eVNIUVR0dEwxVkV6WTBZKytieVA3bjdz?= =?utf-8?B?ZzNPaktxdFpSYkhULzVjMzJwb1kzM3k3aGdIUUEraFNscFl0bUk4bWExMFhT?= =?utf-8?B?Y25RWGMrUWxWamM3TGVOWStoQThETW8vK1VCTk90UmVqOWFNS2Z3WEpVVFRJ?= =?utf-8?B?SnNrM2llTHBmdjVsaTJ5UXRMN0N4WnBFZVVJVGplVjliek8rcjlvajF5eThn?= =?utf-8?B?UUdTSVpvQ1FYQUNJeHp1NHYzcHN1ckVLNVYrWUVCR3ZpcnhsTnh2MWs5UVc0?= =?utf-8?B?dTZFS09Nb3N6UEpmS0xxUDFQNjJ6aDhqTS9XbWlFSngvM2Rzb2FqM1ZMQ3dO?= =?utf-8?B?aWlic3YwRmRGNEZ6OFppUTJpc0hjaXNtVXY4MkRidHVkOXY5TUFFQjYvck0z?= =?utf-8?B?SFFvd3hRMk9WS3FDb04ybXdwSzJxSWFXOUk5a0NIeC83S3RldzRDSks5K2R4?= =?utf-8?B?UGM5eG51RGhOd0JBTVJEMWwvSHp2UXlOa3RwREVKRlZKR0VaRUdidk9zMHpW?= =?utf-8?B?SGhwY2kwdHlWa0VOMUpmZzdiTEUyS1RXR2Z1R0hqMFlmc0luaXpZRXI4UEQy?= =?utf-8?B?SHVCeWZSWkVqQUo3bTQ3aXo0ZXRObjREM0cvdzFrQUxaUGpLaHp0VnpDQi9Z?= =?utf-8?B?TWtWT2dIcEc0VUh5NFNzMXNLZjNXSUMySWlVRDNmYkVBQlQvR1RxVEpLaTZX?= =?utf-8?B?Q2RiVFYvUE84ckVVcjZuUT09?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH3PR11MB8659.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(376005)(1800799015)(366007)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cFN2R1NEZDl0NjlkOVdYeDI1Ym54Q2NJY09TQWEweGtERk14SW13ayt2OG1o?= =?utf-8?B?YzBFU1c2UUNXYWZDclZ1aVZ1TUFrWDJyUmtJZHQ3Qjg2a1ZVRTd3cVhLOWVw?= =?utf-8?B?NFBINVZJQm1BSGIyamFTekFIMHQvQ1FKQ1hwQkhPejVNRzBoK2M0OFRBbkJy?= =?utf-8?B?ZFpxRmlpeW9SUURaakNodm1yTko5OHRwT0wrK3NkclNDb1p4V3Z6MElrSHlR?= =?utf-8?B?K1pkS1l6dkRHT2VlT2dkZWJKcFhuS04xTEdSK1dKUTlqSVN3MS9WdU9SRll4?= =?utf-8?B?Q1RHcTJiUDMwSStmZmFybkFFZ3hDaTRSL1hwL0IrM0xxWDFFNHJoYnpERnEx?= =?utf-8?B?MzRnMEVUSXNMNk54Y0oxOHRjWG1oOGh2eUJzeW5vYjdaVFpDZXhualNVV1pI?= =?utf-8?B?RUc5dk9DU2VLdk8rYmoxdml2MGVYZlJ2SnRGU1JnL2dMUC9tU2x5VVp1ck55?= =?utf-8?B?YXdKV242cGRwcGY4eDNUMDdHSENlSmh1V1N5ZlllNUdvZmVTNjExazQranZN?= =?utf-8?B?ZGZ2M1dORkdwc0R5VWNNaVdCblUwY0dZdFNvbitLUDY5R29WTlEzQmlaQ0Y3?= =?utf-8?B?ZjdpTGwwODZHZGhEZ2dudXRoTTcvUnRVTjRhbmVpdTQ2amlKQUsyRE5hMkhW?= =?utf-8?B?RW5LMUtVRENLdWVYSGZmQkN1V2V0R3VTaVovS0VqQzhzRUUxdS8rSGNsZjky?= =?utf-8?B?aUY4TndwYjVqSkhLb2pJMDlsbC9abWNOSy9Xdmk2QkNnSU1SNE91QzEyOXRV?= =?utf-8?B?MDVIcEtCYWlVVkc1a0p2OVovZFpEUlRxTGRRd214WHR3NTNmUzhSYWdpUkkw?= =?utf-8?B?bXlFNXZJRU1kYURFeHF5bS8yenJuaXROZWRPZU54bG4va1RDeG1HUXVWNzJn?= =?utf-8?B?aTlRQWFqSDJscHRLSndma1hWeDhJdGFtUnRjdTFOSTkzVXlEanRrMUhMV1JT?= =?utf-8?B?QzFFRFZTQnRyejJsLzhkdUpHTXJZQ012b0ZzZzloVDByTHdDQmhGYmdpNUZT?= =?utf-8?B?dzlEM3loLzVsWUlBRC9ZRkJrYUZaUnRGbzk0Qy9oVnJ4Q1hPWDRkdmVTR3BD?= =?utf-8?B?SnpwV2tBbTI4WUg1TzZ6ME9aUnd6WmJOWWdia3I3T0pRK0tZLy9iK2NJaTZO?= =?utf-8?B?eHlXdDJoL2l3QzBoZ3BWUzFuUkkxdk9OS25DcldYQU1ZZnMwSHU5QzRBVmh4?= =?utf-8?B?ZW1jb0hjcjFUc25VOEZDbUhMWUdyUDloRFJnWFB1aWtMM1MxeTd1WVErYjJN?= =?utf-8?B?MVBNQkhIeVlFblJyRi90V0dsMTMyRXBZc25hU2lrL1RDTk5XU1pkT1c0bmxR?= =?utf-8?B?cC9ueUNuWGRXZUlZSGZUY2JoUWdYR1ZScSthMUF0bC9qS0ViWk9OeHlQU29k?= =?utf-8?B?QnY4TEI2cmxRNCtNUmJWQTBHTTFYU0k5OGZMRUlRTjNPQWhhVisrWWJLRTFq?= =?utf-8?B?ZnhVYkZPeUQyREdqd2VZRWN2SnNUbVdWWTJPMStmUWsxTFBJRjRLRzZzU2w2?= =?utf-8?B?NUJLYzYwT2pBbjYwN1kxVG1PQ3JwUVFVZ2h0TXBzMUx3VWVLVkhseFFkUUlN?= =?utf-8?B?Qmc1RTcyd0xjcUJkWUZ1cVJONkJ4WnRVbUhhdFMvNG1YazlNbFpQbFVMMU93?= =?utf-8?B?RzlFREF2bWF5ZHExOHVhVmlDN0dCVWFRMzBEbWpYU2loWnhLQnprM3JGcTdr?= =?utf-8?B?Lzl5cWdBbkd2VzhHbElXdW92RXVjS2ExTHNmTERLQVMrY2pncHFXMVdMUVAr?= =?utf-8?B?Mk4xcXFLeUlWaVJPREZtV2lad1h0SElIWXVVVzl6WWN4Z0R2VzdnVmFlUjRp?= =?utf-8?B?RzdpUzhoM2hGTk1zeVhkaGRaeXpnTUhNNHlGNGNoNVh3Nkh0QXU2S2NzR1Jy?= =?utf-8?B?WTdIdmMwNTBPVFZpUmdGajJFWVR1ZHlTdk11MmdudmFaSG1Fb3pxeE1EbjRl?= =?utf-8?B?RlhrV3pCeHg4WkZONkF1WXgwQ0prcEkxM0xjSUtFSy9EU1kvUW15ZXdPQTR1?= =?utf-8?B?bWxsblc2SytMbFBDTnlJUFd0VzBrSEFTWVdYWkw2dDhyNUFYTlBoZUhwbUdJ?= =?utf-8?B?Ky85ZUx0aklScE5lNXBLUDBGR1hHbEN6TnZTMFZ1azV2OVo3WWdWMTJ6MFZL?= =?utf-8?Q?0l8M0PnBC91exu6SZy1wdazNK?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH3PR11MB8659.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 22f59673-6fe6-43ac-11ae-08dc74c7c3a4 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 10:14:10.8918 (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: 9Kz3CTffYRRpDhJO9tGdmceINOcfsWMhNfoa8WdglRP92ZxNBdIPRTQYCMuSKdNPX95kGkxOkB6wSlaqvhfzGQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB7255 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH v8 05/15] avcodec/vaapi_encode: move the dpb logic from VAAPI to base layer X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Pi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+RnJvbTogZmZtcGVnLWRldmVsIDxmZm1wZWct ZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnPiBPbiBCZWhhbGYgT2YgTWFyaw0KPlRob21wc29uDQo+ U2VudDogV2VkbmVzZGF5LCBNYXkgMTUsIDIwMjQgNDo0NyBBTQ0KPlRvOiBmZm1wZWctZGV2ZWxA ZmZtcGVnLm9yZw0KPlN1YmplY3Q6IFJlOiBbRkZtcGVnLWRldmVsXSBbUEFUQ0ggdjggMDUvMTVd IGF2Y29kZWMvdmFhcGlfZW5jb2RlOiBtb3ZlDQo+dGhlIGRwYiBsb2dpYyBmcm9tIFZBQVBJIHRv IGJhc2UgbGF5ZXINCj4NCj5PbiAxOC8wNC8yMDI0IDA5OjU4LCB0b25nMS53dS1hdC1pbnRlbC5j b21AZmZtcGVnLm9yZyB3cm90ZToNCj4+IEZyb206IFRvbmcgV3UgPHRvbmcxLnd1QGludGVsLmNv bT4NCj4+DQo+PiBNb3ZlIHJlY2VpdmVfcGFja2V0IGZ1bmN0aW9uIHRvIGJhc2UuIFRoaXMgcmVx dWlyZXMgYWRkaW5nICphbGxvYywNCj4+ICppc3N1ZSwgKm91dHB1dCwgKmZyZWUgYXMgaGFyZHdh cmUgY2FsbGJhY2tzLiBIV0Jhc2VFbmNvZGVQaWN0dXJlIGlzDQo+PiBpbnRyb2R1Y2VkIGFzIHRo ZSBiYXNlIGxheWVyIHN0cnVjdHVyZS4gVGhlIHJlbGF0ZWQgcGFyYW1ldGVycyBpbg0KPj4gVkFB UElFbmNvZGVDb250ZXh0IGFyZSBhbHNvIGV4dHJhY3RlZCB0byBIV0Jhc2VFbmNvZGVDb250ZXh0 LiBUaGVuIERQQg0KPj4gbWFuYWdlbWVudCBsb2dpYyBjYW4gYmUgZnVsbHkgZXh0cmFjdGVkIHRv IGJhc2UgbGF5ZXIgYXMtaXMuDQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTogVG9uZyBXdSA8dG9uZzEu d3VAaW50ZWwuY29tPg0KPj4gLS0tDQo+PiAgbGliYXZjb2RlYy9NYWtlZmlsZSAgICAgICAgICAg ICB8ICAgMiArLQ0KPj4gIGxpYmF2Y29kZWMvaHdfYmFzZV9lbmNvZGUuYyAgICAgfCA2MDAgKysr KysrKysrKysrKysrKysrKysrKysrDQo+PiAgbGliYXZjb2RlYy9od19iYXNlX2VuY29kZS5oICAg ICB8IDEyMyArKysrKw0KPj4gIGxpYmF2Y29kZWMvdmFhcGlfZW5jb2RlLmMgICAgICAgfCA3OTMg KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4+ICBsaWJhdmNvZGVjL3ZhYXBpX2Vu Y29kZS5oICAgICAgIHwgMTAyICstLS0NCj4+ICBsaWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9hdjEu YyAgIHwgIDUxICstDQo+PiAgbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfaDI2NC5jICB8IDE3NiAr KystLS0tDQo+PiAgbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfaDI2NS5jICB8IDEyMSArKy0tLQ0K Pj4gIGxpYmF2Y29kZWMvdmFhcGlfZW5jb2RlX21qcGVnLmMgfCAgIDcgKy0NCj4+ICBsaWJhdmNv ZGVjL3ZhYXBpX2VuY29kZV9tcGVnMi5jIHwgIDQ3ICstDQo+PiAgbGliYXZjb2RlYy92YWFwaV9l bmNvZGVfdnA4LmMgICB8ICAxOCArLQ0KPj4gIGxpYmF2Y29kZWMvdmFhcGlfZW5jb2RlX3ZwOS5j ICAgfCAgNTQgKy0tDQo+PiAgMTIgZmlsZXMgY2hhbmdlZCwgMTA5NyBpbnNlcnRpb25zKCspLCA5 OTcgZGVsZXRpb25zKC0pDQo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvaHdfYmFz ZV9lbmNvZGUuYw0KPj4NCj4+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL01ha2VmaWxlIGIvbGli YXZjb2RlYy9NYWtlZmlsZQ0KPj4gaW5kZXggN2Y2ZGU0NDcwZS4uYTIxNzRkY2IyZiAxMDA2NDQN Cj4+IC0tLSBhL2xpYmF2Y29kZWMvTWFrZWZpbGUNCj4+ICsrKyBiL2xpYmF2Y29kZWMvTWFrZWZp bGUNCj4+IEBAIC0xNjIsNyArMTYyLDcgQEAgT0JKUy0kKENPTkZJR19TVEFSVENPREUpICAgICAg ICAgICAgICAgKz0gc3RhcnRjb2RlLm8NCj4+ICBPQkpTLSQoQ09ORklHX1RFWFRVUkVEU1ApICAg ICAgICAgICAgICArPSB0ZXh0dXJlZHNwLm8NCj4+ICBPQkpTLSQoQ09ORklHX1RFWFRVUkVEU1BF TkMpICAgICAgICAgICArPSB0ZXh0dXJlZHNwZW5jLm8NCj4+ICBPQkpTLSQoQ09ORklHX1RQRUxE U1ApICAgICAgICAgICAgICAgICArPSB0cGVsZHNwLm8NCj4+IC1PQkpTLSQoQ09ORklHX1ZBQVBJ X0VOQ09ERSkgICAgICAgICAgICArPSB2YWFwaV9lbmNvZGUubw0KPj4gK09CSlMtJChDT05GSUdf VkFBUElfRU5DT0RFKSAgICAgICAgICAgICs9IHZhYXBpX2VuY29kZS5vDQo+aHdfYmFzZV9lbmNv ZGUubw0KPj4gIE9CSlMtJChDT05GSUdfQVYxX0FNRl9FTkNPREVSKSAgICAgICAgICs9IGFtZmVu Y19hdjEubw0KPj4gIE9CSlMtJChDT05GSUdfVkMxRFNQKSAgICAgICAgICAgICAgICAgICs9IHZj MWRzcC5vDQo+PiAgT0JKUy0kKENPTkZJR19WSURFT0RTUCkgICAgICAgICAgICAgICAgKz0gdmlk ZW9kc3Aubw0KPj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvaHdfYmFzZV9lbmNvZGUuYyBiL2xp YmF2Y29kZWMvaHdfYmFzZV9lbmNvZGUuYw0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGlu ZGV4IDAwMDAwMDAwMDAuLjFkOWEyNTVmNjkNCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL2xp YmF2Y29kZWMvaHdfYmFzZV9lbmNvZGUuYw0KPj4gQEAgLTAsMCArMSw2MDAgQEANCj4+ICsvKg0K Pj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4NCj4+ICsgKg0KPj4gKyAqIEZGbXBl ZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCj4+ICsg KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljDQo+PiArICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyDQo+PiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQo+PiArICoNCj4+ICsgKiBGRm1wZWcg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCj4+ICsg KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZg0KPj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUNCj5HTlUNCj4+ICsgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KPj4gKyAqDQo+PiArICogWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYw0KPj4gKyAq IExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUNCj4+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo IEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDENCj5VU0ENCj4+ICsgKi8NCj4+ICsNCj4+ICsj aW5jbHVkZSAibGliYXZ1dGlsL2F2YXNzZXJ0LmgiDQo+PiArI2luY2x1ZGUgImxpYmF2dXRpbC9j b21tb24uaCINCj4+ICsjaW5jbHVkZSAibGliYXZ1dGlsL2ludGVybmFsLmgiDQo+PiArI2luY2x1 ZGUgImxpYmF2dXRpbC9sb2cuaCINCj4+ICsjaW5jbHVkZSAibGliYXZ1dGlsL21lbS5oIg0KPj4g KyNpbmNsdWRlICJsaWJhdnV0aWwvcGl4ZGVzYy5oIg0KPj4gKw0KPj4gKyNpbmNsdWRlICJlbmNv ZGUuaCINCj4+ICsjaW5jbHVkZSAiYXZjb2RlYy5oIg0KPj4gKyNpbmNsdWRlICJod19iYXNlX2Vu Y29kZS5oIg0KPj4gKw0KPj4gLi4uDQo+DQo+RXZlcnl0aGluZyBhYm92ZSBoZXJlIGxvb2tzIGxp a2UgYSBjb3B5IG9mIHRoZSBWQUFQSSBjb2RlIHdpdGggdGhlIG5hbWVzDQo+Y2hhbmdlZCwgZ29v ZCBpZiBzby4gIChJZiBub3QgdGhlbiBwbGVhc2UgaGlnaGxpZ2h0IGFueSBkaWZmZXJlbmNlcy4p DQo+DQo+PiArDQo+PiArc3RhdGljIGludCBod19iYXNlX2VuY29kZV9zZW5kX2ZyYW1lKEFWQ29k ZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZQ0KPipmcmFtZSkNCj4+ICt7DQo+PiArICAgIEhXQmFz ZUVuY29kZUNvbnRleHQgKmN0eCA9IGF2Y3R4LT5wcml2X2RhdGE7DQo+PiArICAgIEhXQmFzZUVu Y29kZVBpY3R1cmUgKnBpYzsNCj4+ICsgICAgaW50IGVycjsNCj4+ICsNCj4+ICsgICAgaWYgKGZy YW1lKSB7DQo+PiArICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIklucHV0IGZy YW1lOiAldXgldSAoJSJQUklkNjQiKS5cbiIsDQo+PiArICAgICAgICAgICAgICAgZnJhbWUtPndp ZHRoLCBmcmFtZS0+aGVpZ2h0LCBmcmFtZS0+cHRzKTsNCj4+ICsNCj4+ICsgICAgICAgIGVyciA9 IGh3X2Jhc2VfZW5jb2RlX2NoZWNrX2ZyYW1lKGF2Y3R4LCBmcmFtZSk7DQo+PiArICAgICAgICBp ZiAoZXJyIDwgMCkNCj4+ICsgICAgICAgICAgICByZXR1cm4gZXJyOw0KPj4gKw0KPj4gKyAgICAg ICAgcGljID0gY3R4LT5vcC0+YWxsb2MoYXZjdHgsIGZyYW1lKTsNCj4+ICsgICAgICAgIGlmICgh cGljKQ0KPj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7DQo+DQo+Q2FuIHlv dSBwdXNoIHRoZSBhbGxvY2F0aW9uIG9mIHRoaXMgcGljdHVyZSBvdXQgaW50byB0aGUgYmFzZSBs YXllcj8NCj52YWFwaV9lbmNvZGVfYWxsb2MoKSBhbmQgZDNkMTJ2YV9lbmNvZGVfYWxsb2MoKSBh cmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlDQo+dHlwZXMgYW5kIHRoZSBpbnB1dF9zdXJmYWNl IHNldHRpbmcuDQoNCllvdSBzdGlsbCBuZWVkIHRvIGtub3cgdGhlIEFQSS1zcGVjaWZpYyBwaWN0 dXJlIHR5cGUgc2l6ZSBmb3IgYWxsb2NhdGlvbiByaWdodD8gSSBjb3VsZCBhZGQgYSBod19lbmNv ZGVfYWxsb2MoKSB3aGljaCBjYWxscyBBUEktc3BlY2lmaWMgYWxsb2MoKSB0byBhbGxvYyB3aXRo IHRoZSBzcGVjaWZpYyBwaWN0dXJlIHR5cGUgc2l6ZSBhbmQgbW92ZSBwcml2X2RhdGEgdG8gdGhl IGJhc2UuIE9yIHRoZSBwaWN0dXJlIHR5cGUgc2l6ZSBoYXMgdG8gYmUgcGFydCBvZiB0aGUgY2Fs bGJhY2sgc3RydWN0dXJlLg0KDQo+DQo+PiArDQo+PiArICAgICAgICBwaWMtPmlucHV0X2ltYWdl ID0gYXZfZnJhbWVfYWxsb2MoKTsNCj4+ICsgICAgICAgIGlmICghcGljLT5pbnB1dF9pbWFnZSkg ew0KPj4gKyAgICAgICAgICAgIGVyciA9IEFWRVJST1IoRU5PTUVNKTsNCj4+ICsgICAgICAgICAg ICBnb3RvIGZhaWw7DQo+PiArICAgICAgICB9DQo+PiArDQo+PiArICAgICAgICBwaWMtPnJlY29u X2ltYWdlID0gYXZfZnJhbWVfYWxsb2MoKTsNCj4+ICsgICAgICAgIGlmICghcGljLT5yZWNvbl9p bWFnZSkgew0KPj4gKyAgICAgICAgICAgIGVyciA9IEFWRVJST1IoRU5PTUVNKTsNCj4+ICsgICAg ICAgICAgICBnb3RvIGZhaWw7DQo+PiArICAgICAgICB9DQo+PiArDQo+PiArICAgICAgICBpZiAo Y3R4LT5pbnB1dF9vcmRlciA9PSAwIHx8IGZyYW1lLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9U WVBFX0kpDQo+PiArICAgICAgICAgICAgcGljLT5mb3JjZV9pZHIgPSAxOw0KPj4gKw0KPj4gKyAg ICAgICAgcGljLT5wdHMgPSBmcmFtZS0+cHRzOw0KPj4gKyAgICAgICAgcGljLT5kdXJhdGlvbiA9 IGZyYW1lLT5kdXJhdGlvbjsNCj4+ICsNCj4+ICsgICAgICAgIGlmIChhdmN0eC0+ZmxhZ3MgJiBB Vl9DT0RFQ19GTEFHX0NPUFlfT1BBUVVFKSB7DQo+PiArICAgICAgICAgICAgZXJyID0gYXZfYnVm ZmVyX3JlcGxhY2UoJnBpYy0+b3BhcXVlX3JlZiwgZnJhbWUtPm9wYXF1ZV9yZWYpOw0KPj4gKyAg ICAgICAgICAgIGlmIChlcnIgPCAwKQ0KPj4gKyAgICAgICAgICAgICAgICBnb3RvIGZhaWw7DQo+ PiArDQo+PiArICAgICAgICAgICAgcGljLT5vcGFxdWUgPSBmcmFtZS0+b3BhcXVlOw0KPj4gKyAg ICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICAgYXZfZnJhbWVfbW92ZV9yZWYocGljLT5pbnB1dF9p bWFnZSwgZnJhbWUpOw0KPj4gKw0KPj4gKyAgICAgICAgaWYgKGN0eC0+aW5wdXRfb3JkZXIgPT0g MCkNCj4+ICsgICAgICAgICAgICBjdHgtPmZpcnN0X3B0cyA9IHBpYy0+cHRzOw0KPj4gKyAgICAg ICAgaWYgKGN0eC0+aW5wdXRfb3JkZXIgPT0gY3R4LT5kZWNvZGVfZGVsYXkpDQo+PiArICAgICAg ICAgICAgY3R4LT5kdHNfcHRzX2RpZmYgPSBwaWMtPnB0cyAtIGN0eC0+Zmlyc3RfcHRzOw0KPj4g KyAgICAgICAgaWYgKGN0eC0+b3V0cHV0X2RlbGF5ID4gMCkNCj4+ICsgICAgICAgICAgICBjdHgt PnRzX3JpbmdbY3R4LT5pbnB1dF9vcmRlciAlDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAg KDMgKiBjdHgtPm91dHB1dF9kZWxheSArIGN0eC0+YXN5bmNfZGVwdGgpXSA9IHBpYy0+cHRzOw0K Pj4gKw0KPj4gKyAgICAgICAgcGljLT5kaXNwbGF5X29yZGVyID0gY3R4LT5pbnB1dF9vcmRlcjsN Cj4+ICsgICAgICAgICsrY3R4LT5pbnB1dF9vcmRlcjsNCj4+ICsNCj4+ICsgICAgICAgIGlmIChj dHgtPnBpY19zdGFydCkgew0KPj4gKyAgICAgICAgICAgIGN0eC0+cGljX2VuZC0+bmV4dCA9IHBp YzsNCj4+ICsgICAgICAgICAgICBjdHgtPnBpY19lbmQgICAgICAgPSBwaWM7DQo+PiArICAgICAg ICB9IGVsc2Ugew0KPj4gKyAgICAgICAgICAgIGN0eC0+cGljX3N0YXJ0ICAgICA9IHBpYzsNCj4+ ICsgICAgICAgICAgICBjdHgtPnBpY19lbmQgICAgICAgPSBwaWM7DQo+PiArICAgICAgICB9DQo+ PiArDQo+PiArICAgIH0gZWxzZSB7DQo+PiArICAgICAgICBjdHgtPmVuZF9vZl9zdHJlYW0gPSAx Ow0KPj4gKw0KPj4gKyAgICAgICAgLy8gRml4IHRpbWVzdGFtcHMgaWYgd2UgaGl0IGVuZC1vZi1z dHJlYW0gYmVmb3JlIHRoZSBpbml0aWFsIGRlY29kZQ0KPj4gKyAgICAgICAgLy8gZGVsYXkgaGFz IGVsYXBzZWQuDQo+PiArICAgICAgICBpZiAoY3R4LT5pbnB1dF9vcmRlciA8IGN0eC0+ZGVjb2Rl X2RlbGF5KQ0KPj4gKyAgICAgICAgICAgIGN0eC0+ZHRzX3B0c19kaWZmID0gY3R4LT5waWNfZW5k LT5wdHMgLSBjdHgtPmZpcnN0X3B0czsNCj4+ICsgICAgfQ0KPj4gKw0KPj4gKyAgICByZXR1cm4g MDsNCj4+ICsNCj4+ICtmYWlsOg0KPj4gKyAgICBjdHgtPm9wLT5mcmVlKGF2Y3R4LCBwaWMpOw0K Pg0KPk1heWJlIHNhbWUgd2l0aCBmcmVlLCBzaW5jZSBpdCBtaXhlcyB0aGUgdHdvIGxheWVycz8g IGh3X2Jhc2VfZW5jb2RlX2ZyZWUoKQ0KPmluIHRoaXMgZmlsZSBjYWxsaW5nIHRoZSBBUEktc3Bl Y2lmaWMgZnJlZSBtaWdodCBiZSBjbGVhbmVyLg0KDQpmZl9od19iYXNlX2VuY29kZV9mcmVlIHdh cyBleHRyYWN0ZWQgaW4gYSBmb2xsb3dpbmcgcGF0Y2guIEN1cnJlbnQgZGVzaWduIGlzIGxldCB2 YWFwaV9lbmNvZGVfZnJlZSBjYWxsIGZmX2h3X2Jhc2VfZW5jb2RlX2ZyZWUuIE9rIGlmIHNvIHRo ZSBpZGVhIGlzIHRoZSBvcHBvc2l0ZS4gSSBjb3VsZCBsZXQgZmZfaHdfYmFzZV9lbmNvZGVfZnJl ZSBjYWxsIEFQSS1zcGVjaWZpYyBmcmVlIGhlcmUuIEFsc28gaW4gZmZfdmFhcGlfZW5jb2RlX2Ns b3NlLCB2YWFwaV9lbmNvZGVfZnJlZSBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBmZl9od19iYXNl X2VuY29kZV9mcmVlLg0KDQo+DQo+PiArICAgIHJldHVybiBlcnI7DQo+PiArfQ0KPj4gKw0KPj4g K2ludCBmZl9od19iYXNlX2VuY29kZV9yZWNlaXZlX3BhY2tldChBVkNvZGVjQ29udGV4dCAqYXZj dHgsIEFWUGFja2V0DQo+KnBrdCkNCj4+ICt7DQo+PiArICAgIEhXQmFzZUVuY29kZUNvbnRleHQg KmN0eCA9IGF2Y3R4LT5wcml2X2RhdGE7DQo+PiArICAgIEhXQmFzZUVuY29kZVBpY3R1cmUgKnBp YyA9IE5VTEw7DQo+PiArICAgIEFWRnJhbWUgKmZyYW1lID0gY3R4LT5mcmFtZTsNCj4+ICsgICAg aW50IGVycjsNCj4+ICsNCj4+ICtzdGFydDoNCj4+ICsgICAgLyoqIGlmIG5vIEIgZnJhbWUgYmVm b3JlIHJlcGVhdCBQIGZyYW1lLCBzZW50IHJlcGVhdCBQIGZyYW1lIG91dC4gKi8NCj4+ICsgICAg aWYgKGN0eC0+dGFpbF9wa3QtPnNpemUpIHsNCj4+ICsgICAgICAgIGZvciAoSFdCYXNlRW5jb2Rl UGljdHVyZSAqdG1wID0gY3R4LT5waWNfc3RhcnQ7IHRtcDsgdG1wID0gdG1wLQ0KPj5uZXh0KSB7 DQo+PiArICAgICAgICAgICAgaWYgKHRtcC0+dHlwZSA9PSBQSUNUVVJFX1RZUEVfQiAmJiB0bXAt PnB0cyA8IGN0eC0+dGFpbF9wa3QtPnB0cykNCj4+ICsgICAgICAgICAgICAgICAgYnJlYWs7DQo+ PiArICAgICAgICAgICAgZWxzZSBpZiAoIXRtcC0+bmV4dCkgew0KPj4gKyAgICAgICAgICAgICAg ICBhdl9wYWNrZXRfbW92ZV9yZWYocGt0LCBjdHgtPnRhaWxfcGt0KTsNCj4+ICsgICAgICAgICAg ICAgICAgZ290byBlbmQ7DQo+PiArICAgICAgICAgICAgfQ0KPj4gKyAgICAgICAgfQ0KPj4gKyAg ICB9DQo+PiArDQo+PiArICAgIGVyciA9IGZmX2VuY29kZV9nZXRfZnJhbWUoYXZjdHgsIGZyYW1l KTsNCj4+ICsgICAgaWYgKGVyciA8IDAgJiYgZXJyICE9IEFWRVJST1JfRU9GKQ0KPj4gKyAgICAg ICAgcmV0dXJuIGVycjsNCj4+ICsNCj4+ICsgICAgaWYgKGVyciA9PSBBVkVSUk9SX0VPRikNCj4+ ICsgICAgICAgIGZyYW1lID0gTlVMTDsNCj4+ICsNCj4+ICsgICAgaWYgKCEoY3R4LT5vcCAmJiBj dHgtPm9wLT5hbGxvYyAmJiBjdHgtPm9wLT5pc3N1ZSAmJg0KPj4gKyAgICAgICAgICBjdHgtPm9w LT5vdXRwdXQgJiYgY3R4LT5vcC0+ZnJlZSkpIHsNCj4+ICsgICAgICAgIGVyciA9IEFWRVJST1Io RUlOVkFMKTsNCj4+ICsgICAgICAgIHJldHVybiBlcnI7DQo+PiArICAgIH0NCj4NCj5UaGlzIGNo ZWNrIGZlZWxzIGxpa2UgaXQgc2hvdWxkIGhhdmUgYmVlbiBkb25lIGVhcmxpZXI/DQo+DQo+QWxz bywgaXQgc2hvdWxkIHByb2JhYmx5IGJlIGFuIGFzc2VydCAtIEVJTlZBTCBpcyBpbmRpY2F0aW5n IHRoYXQgdGhlIGNhbGxlciBoYXMNCj5nb3Qgc29tZXRoaW5nIHdyb25nLCB3aGlsZSB0aGlzIHdv dWxkIGJlIGEgYnVnIGluIHRoaXMgY2FzZS4NCg0KR290IGl0Lg0KDQo+DQo+PiArDQo+PiArICAg IGVyciA9IGh3X2Jhc2VfZW5jb2RlX3NlbmRfZnJhbWUoYXZjdHgsIGZyYW1lKTsNCj4+ICsgICAg aWYgKGVyciA8IDApDQo+PiArICAgICAgICByZXR1cm4gZXJyOw0KPj4gKw0KPj4gKyAgICBpZiAo IWN0eC0+cGljX3N0YXJ0KSB7DQo+PiArICAgICAgICBpZiAoY3R4LT5lbmRfb2Zfc3RyZWFtKQ0K Pj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0VPRjsNCj4+ICsgICAgICAgIGVsc2UNCj4+ ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFQUdBSU4pOw0KPj4gKyAgICB9DQo+PiArDQo+ PiArICAgIGlmIChjdHgtPmFzeW5jX2VuY29kZSkgew0KPg0KPklzIGFzeW5jX2VuY29kZSBmYWxz ZSB0ZXN0ZWQgYWZ0ZXIgdGhpcyBzZXJpZXM/ICAoSSBzZWUgdGhhdCBEM0QxMiBoYXMgaXQgc2V0 DQo+dW5jb25kaXRpb25hbGx5LikNCg0KWWVzLiBBc3luY19lbmNvZGUgaXMgb25seSB1c2VkIGZv ciB2YWFwaSBjaGVjayBhbmQgdGhlIGxvZ2ljIGZvciB2YWFwaSBpcyBuZXZlciBjaGFuZ2VkLg0K DQo+DQo+PiArICAgICAgICBpZiAoYXZfZmlmb19jYW5fd3JpdGUoY3R4LT5lbmNvZGVfZmlmbykp IHsNCj4+ICsgICAgICAgICAgICBlcnIgPSBod19iYXNlX2VuY29kZV9waWNrX25leHQoYXZjdHgs ICZwaWMpOw0KPj4gKyAgICAgICAgICAgIGlmICghZXJyKSB7DQo+PiArICAgICAgICAgICAgICAg IGF2X2Fzc2VydDAocGljKTsNCj4+ICsgICAgICAgICAgICAgICAgcGljLT5lbmNvZGVfb3JkZXIg PSBjdHgtPmVuY29kZV9vcmRlciArDQo+PiArICAgICAgICAgICAgICAgICAgICBhdl9maWZvX2Nh bl9yZWFkKGN0eC0+ZW5jb2RlX2ZpZm8pOw0KPj4gKyAgICAgICAgICAgICAgICBlcnIgPSBjdHgt Pm9wLT5pc3N1ZShhdmN0eCwgcGljKTsNCj4+ICsgICAgICAgICAgICAgICAgaWYgKGVyciA8IDAp IHsNCj4+ICsgICAgICAgICAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAi RW5jb2RlIGZhaWxlZDogJWQuXG4iLCBlcnIpOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIGVycjsNCj4+ICsgICAgICAgICAgICAgICAgfQ0KPj4gKyAgICAgICAgICAgICAgICBwaWMt PmVuY29kZV9pc3N1ZWQgPSAxOw0KPj4gKyAgICAgICAgICAgICAgICBhdl9maWZvX3dyaXRlKGN0 eC0+ZW5jb2RlX2ZpZm8sICZwaWMsIDEpOw0KPj4gKyAgICAgICAgICAgIH0NCj4+ICsgICAgICAg IH0NCj4+ICsNCj4+ICsgICAgICAgIGlmICghYXZfZmlmb19jYW5fcmVhZChjdHgtPmVuY29kZV9m aWZvKSkNCj4+ICsgICAgICAgICAgICByZXR1cm4gZXJyOw0KPj4gKw0KPj4gKyAgICAgICAgLy8g TW9yZSBmcmFtZXMgY2FuIGJlIGJ1ZmZlcmVkDQo+PiArICAgICAgICBpZiAoYXZfZmlmb19jYW5f d3JpdGUoY3R4LT5lbmNvZGVfZmlmbykgJiYgIWN0eC0+ZW5kX29mX3N0cmVhbSkNCj4+ICsgICAg ICAgICAgICByZXR1cm4gQVZFUlJPUihFQUdBSU4pOw0KPj4gKw0KPj4gKyAgICAgICAgYXZfZmlm b19yZWFkKGN0eC0+ZW5jb2RlX2ZpZm8sICZwaWMsIDEpOw0KPj4gKyAgICAgICAgY3R4LT5lbmNv ZGVfb3JkZXIgPSBwaWMtPmVuY29kZV9vcmRlciArIDE7DQo+PiArICAgIH0gZWxzZSB7DQo+PiAr ICAgICAgICBlcnIgPSBod19iYXNlX2VuY29kZV9waWNrX25leHQoYXZjdHgsICZwaWMpOw0KPj4g KyAgICAgICAgaWYgKGVyciA8IDApDQo+PiArICAgICAgICAgICAgcmV0dXJuIGVycjsNCj4+ICsg ICAgICAgIGF2X2Fzc2VydDAocGljKTsNCj4+ICsNCj4+ICsgICAgICAgIHBpYy0+ZW5jb2RlX29y ZGVyID0gY3R4LT5lbmNvZGVfb3JkZXIrKzsNCj4+ICsNCj4+ICsgICAgICAgIGVyciA9IGN0eC0+ b3AtPmlzc3VlKGF2Y3R4LCBwaWMpOw0KPj4gKyAgICAgICAgaWYgKGVyciA8IDApIHsNCj4+ICsg ICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkVuY29kZSBmYWlsZWQ6ICVk LlxuIiwgZXJyKTsNCj4+ICsgICAgICAgICAgICByZXR1cm4gZXJyOw0KPj4gKyAgICAgICAgfQ0K Pj4gKw0KPj4gKyAgICAgICAgcGljLT5lbmNvZGVfaXNzdWVkID0gMTsNCj4+ICsgICAgfQ0KPj4g Kw0KPj4gKyAgICBlcnIgPSBjdHgtPm9wLT5vdXRwdXQoYXZjdHgsIHBpYywgcGt0KTsNCj4+ICsg ICAgaWYgKGVyciA8IDApIHsNCj4+ICsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9S LCAiT3V0cHV0IGZhaWxlZDogJWQuXG4iLCBlcnIpOw0KPj4gKyAgICAgICAgcmV0dXJuIGVycjsN Cj4+ICsgICAgfQ0KPj4gKw0KPj4gKyAgICBjdHgtPm91dHB1dF9vcmRlciA9IHBpYy0+ZW5jb2Rl X29yZGVyOw0KPj4gKyAgICBod19iYXNlX2VuY29kZV9jbGVhcl9vbGQoYXZjdHgpOw0KPj4gKw0K Pj4gKyAgICAvKiogbG9vcCB0byBnZXQgYW4gYXZhaWxhYmxlIHBrdCBpbiBlbmNvZGVyIGZsdXNo aW5nLiAqLw0KPj4gKyAgICBpZiAoY3R4LT5lbmRfb2Zfc3RyZWFtICYmICFwa3QtPnNpemUpDQo+ PiArICAgICAgICBnb3RvIHN0YXJ0Ow0KPj4gKw0KPj4gK2VuZDoNCj4+ICsgICAgaWYgKHBrdC0+ c2l6ZSkNCj4+ICsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAiT3V0cHV0IHBh Y2tldDogcHRzICUiUFJJZDY0IiwNCj5kdHMgJSJQUklkNjQiLCAiDQo+PiArICAgICAgICAgICAg ICAgInNpemUgJWQgYnl0ZXMuXG4iLCBwa3QtPnB0cywgcGt0LT5kdHMsIHBrdC0+c2l6ZSk7DQo+ PiArDQo+PiArICAgIHJldHVybiAwOw0KPj4gK30NCj4+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVj L2h3X2Jhc2VfZW5jb2RlLmggYi9saWJhdmNvZGVjL2h3X2Jhc2VfZW5jb2RlLmgNCj4+IGluZGV4 IGE1NzhkYjhjMDYuLmI1YjY3NmI5YTggMTAwNjQ0DQo+PiAtLS0gYS9saWJhdmNvZGVjL2h3X2Jh c2VfZW5jb2RlLmgNCj4+ICsrKyBiL2xpYmF2Y29kZWMvaHdfYmFzZV9lbmNvZGUuaA0KPj4gQEAg LTE5LDYgKzE5LDggQEANCj4+ICAjaWZuZGVmIEFWQ09ERUNfSFdfQkFTRV9FTkNPREVfSA0KPj4g ICNkZWZpbmUgQVZDT0RFQ19IV19CQVNFX0VOQ09ERV9IDQo+Pg0KPj4gKyNpbmNsdWRlICJsaWJh dnV0aWwvZmlmby5oIg0KPj4gKw0KPj4gICNkZWZpbmUgTUFYX0RQQl9TSVpFIDE2DQo+PiAgI2Rl ZmluZSBNQVhfUElDVFVSRV9SRUZFUkVOQ0VTIDINCj4+ICAjZGVmaW5lIE1BWF9SRU9SREVSX0RF TEFZIDE2DQo+PiBAQCAtNTMsMTMgKzU1LDEzNCBAQCBlbnVtIHsNCj4+ICAgICAgRkxBR19OT05f SURSX0tFWV9QSUNUVVJFUyAgPSAxIDw8IDUsDQo+PiAgfTsNCj4+DQo+PiArdHlwZWRlZiBzdHJ1 Y3QgSFdCYXNlRW5jb2RlUGljdHVyZSB7DQo+PiArICAgIHN0cnVjdCBIV0Jhc2VFbmNvZGVQaWN0 dXJlICpuZXh0Ow0KPg0KPiJuZXh0IiBkb2VzIG5vdCBzZWVtIGxpa2UgdGhlIHJpZ2h0IG5hbWUg Zm9yIHRoaXMgZmllbGQuDQoNClRoZSBmaWVsZCBpcyBjb3BpZWQgZnJvbSBWQUFQSSBhbmQgaWYg d2UgcmVuYW1lIGl0IG1vcmUgY2h1cm4gaXMgYnJvdWdodC4NCg0KPg0KPj4gKw0KPj4gKyAgICBp bnQ2NF90ICAgICAgICAgZGlzcGxheV9vcmRlcjsNCj4+ICsgICAgaW50NjRfdCAgICAgICAgIGVu Y29kZV9vcmRlcjsNCj4+ICsgICAgaW50NjRfdCAgICAgICAgIHB0czsNCj4+ICsgICAgaW50NjRf dCAgICAgICAgIGR1cmF0aW9uOw0KPj4gKyAgICBpbnQgICAgICAgICAgICAgZm9yY2VfaWRyOw0K Pj4gKw0KPj4gKyAgICB2b2lkICAgICAgICAgICAqb3BhcXVlOw0KPj4gKyAgICBBVkJ1ZmZlclJl ZiAgICAqb3BhcXVlX3JlZjsNCj4+ICsNCj4+ICsgICAgaW50ICAgICAgICAgICAgIHR5cGU7DQo+ PiArICAgIGludCAgICAgICAgICAgICBiX2RlcHRoOw0KPj4gKyAgICBpbnQgICAgICAgICAgICAg ZW5jb2RlX2lzc3VlZDsNCj4+ICsgICAgaW50ICAgICAgICAgICAgIGVuY29kZV9jb21wbGV0ZTsN Cj4+ICsNCj4+ICsgICAgQVZGcmFtZSAgICAgICAgKmlucHV0X2ltYWdlOw0KPj4gKyAgICBBVkZy YW1lICAgICAgICAqcmVjb25faW1hZ2U7DQo+PiArDQo+PiArICAgIHZvaWQgICAgICAgICAgICpw cml2X2RhdGE7DQo+PiArDQo+PiArICAgIC8vIFdoZXRoZXIgdGhpcyBwaWN0dXJlIGlzIGEgcmVm ZXJlbmNlIHBpY3R1cmUuDQo+PiArICAgIGludCAgICAgICAgICAgICBpc19yZWZlcmVuY2U7DQo+ PiArDQo+PiArICAgIC8vIFRoZSBjb250ZW50cyBvZiB0aGUgRFBCIGFmdGVyIHRoaXMgcGljdHVy ZSBoYXMgYmVlbiBkZWNvZGVkLg0KPj4gKyAgICAvLyBUaGlzIHdpbGwgY29udGFpbiB0aGUgcGlj dHVyZSBpdHNlbGYgaWYgaXQgaXMgYSByZWZlcmVuY2UgcGljdHVyZSwNCj4+ICsgICAgLy8gYnV0 IG5vdCBpZiBpdCBpc24ndC4NCj4+ICsgICAgaW50ICAgICAgICAgICAgICAgICAgICAgbmJfZHBi X3BpY3M7DQo+PiArICAgIHN0cnVjdCBIV0Jhc2VFbmNvZGVQaWN0dXJlICpkcGJbTUFYX0RQQl9T SVpFXTsNCj4+ICsgICAgLy8gVGhlIHJlZmVyZW5jZSBwaWN0dXJlcyB1c2VkIGluIGRlY29kaW5n IHRoaXMgcGljdHVyZS4gSWYgdGhleSBhcmUNCj4+ICsgICAgLy8gdXNlZCBieSBsYXRlciBwaWN0 dXJlcyB0aGV5IHdpbGwgYWxzbyBhcHBlYXIgaW4gdGhlIERQQi4gcmVmWzBdW10gZm9yDQo+PiAr ICAgIC8vIHByZXZpb3VzIHJlZmVyZW5jZSBmcmFtZXMuIHJlZlsxXVtdIGZvciBmdXR1cmUgcmVm ZXJlbmNlIGZyYW1lcy4NCj4+ICsgICAgaW50ICAgICAgICAgICAgICAgICAgICAgbmJfcmVmc1tN QVhfUkVGRVJFTkNFX0xJU1RfTlVNXTsNCj4+ICsgICAgc3RydWN0IEhXQmFzZUVuY29kZVBpY3R1 cmUNCj4qcmVmc1tNQVhfUkVGRVJFTkNFX0xJU1RfTlVNXVtNQVhfUElDVFVSRV9SRUZFUkVOQ0VT XTsNCj4+ICsgICAgLy8gVGhlIHByZXZpb3VzIHJlZmVyZW5jZSBwaWN0dXJlIGluIGVuY29kZSBv cmRlci4gIE11c3QgYmUgaW4gYXQgbGVhc3QNCj4+ICsgICAgLy8gb25lIG9mIHRoZSByZWZlcmVu Y2UgbGlzdCBhbmQgRFBCIGxpc3QuDQo+PiArICAgIHN0cnVjdCBIV0Jhc2VFbmNvZGVQaWN0dXJl ICpwcmV2Ow0KPj4gKyAgICAvLyBSZWZlcmVuY2UgY291bnQgZm9yIG90aGVyIHBpY3R1cmVzIHJl ZmVycmluZyB0byB0aGlzIG9uZSB0aHJvdWdoDQo+PiArICAgIC8vIHRoZSBhYm92ZSBwb2ludGVy cywgZGlyZWN0bHkgZnJvbSBpbmNvbXBsZXRlIHBpY3R1cmVzIGFuZCBpbmRpcmVjdGx5DQo+PiAr ICAgIC8vIHRocm91Z2ggY29tcGxldGVkIHBpY3R1cmVzLg0KPj4gKyAgICBpbnQgICAgICAgICAg ICAgcmVmX2NvdW50WzJdOw0KPj4gKyAgICBpbnQgICAgICAgICAgICAgcmVmX3JlbW92ZWRbMl07 DQo+PiArfSBIV0Jhc2VFbmNvZGVQaWN0dXJlOw0KPj4gKw0KPj4gK3R5cGVkZWYgc3RydWN0IEhX RW5jb2RlUGljdHVyZU9wZXJhdGlvbiB7DQo+PiArICAgIC8vIEFsbG9jIG1lbW9yeSBmb3IgdGhl IHBpY3R1cmUgc3RydWN0dXJlLg0KPg0KPk1heWJlIHNvbWV0aGluZyBsaWtlICJBbGxvY2F0ZSBB UEktc3BlY2lmaWMgaW50ZXJuYWxzIG9mIGEgbmV3IHBpY3R1cmUgc3RydWN0dXJlDQo+YmFzZWQg b24gdGhlIGdpdmVuIGZyYW1lLiI/DQo+DQo+KEFzc3VtaW5nIHlvdSBtb3ZlIHRoZSBhbGxvY2F0 aW9uIG9mIHRoZSBzdHJ1Y3R1cmUgaXRzZWxmIG91dCBhcyBzdWdnZXN0ZWQNCj5hYm92ZS4pDQo+ DQo+PiArICAgIEhXQmFzZUVuY29kZVBpY3R1cmUgKiAoKmFsbG9jKShBVkNvZGVjQ29udGV4dCAq YXZjdHgsIGNvbnN0IEFWRnJhbWUNCj4qZnJhbWUpOw0KPj4gKyAgICAvLyBJc3N1ZSB0aGUgcGlj dHVyZSBzdHJ1Y3R1cmUsIHdoaWNoIHdpbGwgc2VuZCB0aGUgZnJhbWUgc3VyZmFjZSB0byBIVw0K PkVuY29kZSBBUEkuDQo+PiArICAgIGludCAoKmlzc3VlKShBVkNvZGVjQ29udGV4dCAqYXZjdHgs IGNvbnN0IEhXQmFzZUVuY29kZVBpY3R1cmUNCj4qYmFzZV9waWMpOw0KPj4gKyAgICAvLyBHZXQg dGhlIG91dHB1dCBBVlBhY2tldC4NCj4+ICsgICAgaW50ICgqb3V0cHV0KShBVkNvZGVjQ29udGV4 dCAqYXZjdHgsIGNvbnN0IEhXQmFzZUVuY29kZVBpY3R1cmUNCj4qYmFzZV9waWMsIEFWUGFja2V0 ICpwa3QpOw0KPj4gKyAgICAvLyBGcmVlIHRoZSBwaWN0dXJlIHN0cnVjdHVyZS4NCj4+ICsgICAg aW50ICgqZnJlZSkoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBIV0Jhc2VFbmNvZGVQaWN0dXJlICpi YXNlX3BpYyk7DQo+PiArfSAgSFdFbmNvZGVQaWN0dXJlT3BlcmF0aW9uOw0KPj4gKw0KPj4gIHR5 cGVkZWYgc3RydWN0IEhXQmFzZUVuY29kZUNvbnRleHQgew0KPj4gICAgICBjb25zdCBBVkNsYXNz ICpjbGFzczsNCj4+DQo+PiArICAgIC8vIEhhcmR3YXJlLXNwZWNpZmljIGhvb2tzLg0KPj4gKyAg ICBjb25zdCBzdHJ1Y3QgSFdFbmNvZGVQaWN0dXJlT3BlcmF0aW9uICpvcDsNCj4+ICsNCj4+ICsg ICAgLy8gQ3VycmVudCBlbmNvZGluZyB3aW5kb3csIGluIGRpc3BsYXkgKGlucHV0KSBvcmRlci4N Cj4+ICsgICAgSFdCYXNlRW5jb2RlUGljdHVyZSAqcGljX3N0YXJ0LCAqcGljX2VuZDsNCj4+ICsg ICAgLy8gVGhlIG5leHQgcGljdHVyZSB0byB1c2UgYXMgdGhlIHByZXZpb3VzIHJlZmVyZW5jZSBw aWN0dXJlIGluDQo+PiArICAgIC8vIGVuY29kaW5nIG9yZGVyLiBPcmRlciBmcm9tIHNtYWxsIHRv IGxhcmdlIGluIGVuY29kaW5nIG9yZGVyLg0KPj4gKyAgICBIV0Jhc2VFbmNvZGVQaWN0dXJlICpu ZXh0X3ByZXZbTUFYX1BJQ1RVUkVfUkVGRVJFTkNFU107DQo+PiArICAgIGludCAgICAgICAgICAg ICAgICAgIG5iX25leHRfcHJldjsNCj4+ICsNCj4+ICsgICAgLy8gTmV4dCBpbnB1dCBvcmRlciBp bmRleCAoZGlzcGxheSBvcmRlcikuDQo+PiArICAgIGludDY0X3QgICAgICAgICBpbnB1dF9vcmRl cjsNCj4+ICsgICAgLy8gTnVtYmVyIG9mIGZyYW1lcyB0aGF0IG91dHB1dCBpcyBiZWhpbmQgaW5w dXQuDQo+PiArICAgIGludDY0X3QgICAgICAgICBvdXRwdXRfZGVsYXk7DQo+PiArICAgIC8vIE5l eHQgZW5jb2RlIG9yZGVyIGluZGV4Lg0KPj4gKyAgICBpbnQ2NF90ICAgICAgICAgZW5jb2RlX29y ZGVyOw0KPj4gKyAgICAvLyBOdW1iZXIgb2YgZnJhbWVzIGRlY29kZSBvdXRwdXQgd2lsbCBuZWVk IHRvIGJlIGRlbGF5ZWQuDQo+PiArICAgIGludDY0X3QgICAgICAgICBkZWNvZGVfZGVsYXk7DQo+ PiArICAgIC8vIE5leHQgb3V0cHV0IG9yZGVyIGluZGV4IChpbiBlbmNvZGUgb3JkZXIpLg0KPj4g KyAgICBpbnQ2NF90ICAgICAgICAgb3V0cHV0X29yZGVyOw0KPj4gKw0KPj4gKyAgICAvLyBUaW1l c3RhbXAgaGFuZGxpbmcuDQo+PiArICAgIGludDY0X3QgICAgICAgICBmaXJzdF9wdHM7DQo+PiAr ICAgIGludDY0X3QgICAgICAgICBkdHNfcHRzX2RpZmY7DQo+PiArICAgIGludDY0X3QgICAgICAg ICB0c19yaW5nW01BWF9SRU9SREVSX0RFTEFZICogMyArDQo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE1BWF9BU1lOQ19ERVBUSF07DQo+PiArDQo+PiArICAgIC8vIEZyYW1lIHR5cGUg ZGVjaXNpb24uDQo+PiArICAgIGludCBnb3Bfc2l6ZTsNCj4+ICsgICAgaW50IGNsb3NlZF9nb3A7 DQo+PiArICAgIGludCBnb3BfcGVyX2lkcjsNCj4+ICsgICAgaW50IHBfcGVyX2k7DQo+PiArICAg IGludCBtYXhfYl9kZXB0aDsNCj4+ICsgICAgaW50IGJfcGVyX3A7DQo+PiArICAgIGludCBmb3Jj ZV9pZHI7DQo+PiArICAgIGludCBpZHJfY291bnRlcjsNCj4+ICsgICAgaW50IGdvcF9jb3VudGVy Ow0KPj4gKyAgICBpbnQgZW5kX29mX3N0cmVhbTsNCj4+ICsgICAgaW50IHBfdG9fZ3BiOw0KPj4g Kw0KPj4gKyAgICAvLyBXaGV0aGVyIHRoZSBkcml2ZXIgc3VwcG9ydHMgUk9JIGF0IGFsbC4NCj4+ ICsgICAgaW50ICAgICAgICAgICAgIHJvaV9hbGxvd2VkOw0KPj4gKw0KPj4gKyAgICAvLyBUaGUg ZW5jb2RlciBkb2VzIG5vdCBzdXBwb3J0IGNyb3BwaW5nIGluZm9ybWF0aW9uLCBzbyB3YXJuIGFi b3V0DQo+PiArICAgIC8vIGl0IHRoZSBmaXJzdCB0aW1lIHdlIGVuY291bnRlciBhbnkgbm9uemVy byBjcm9wIGZpZWxkcy4NCj4+ICsgICAgaW50ICAgICAgICAgICAgIGNyb3Bfd2FybmVkOw0KPj4g KyAgICAvLyBJZiB0aGUgZHJpdmVyIGRvZXMgbm90IHN1cHBvcnQgUk9JIHRoZW4gd2FybiB0aGUg Zmlyc3QgdGltZSB3ZQ0KPj4gKyAgICAvLyBlbmNvdW50ZXIgYSBmcmFtZSB3aXRoIFJPSSBzaWRl IGRhdGEuDQo+PiArICAgIGludCAgICAgICAgICAgICByb2lfd2FybmVkOw0KPj4gKw0KPj4gKyAg ICAvLyBUaGUgZnJhbWUgdG8gYmUgZmlsbGVkIHdpdGggZGF0YS4NCj4+ICsgICAgQVZGcmFtZSAg ICAgICAgICpmcmFtZTsNCj4+ICsNCj4+ICsgICAgLy8gV2hldGhlciB0aGUgSFcgc3VwcG9ydHMg c3luYyBidWZmZXIgZnVuY3Rpb24uDQo+PiArICAgIC8vIElmIHN1cHBvcnRlZCwgZW5jb2RlX2Zp Zm8vYXN5bmNfZGVwdGggd2lsbCBiZSB1c2VkIHRvZ2V0aGVyLg0KPj4gKyAgICAvLyBVc2VkIGZv ciBvdXRwdXQgYnVmZmVyIHN5bmNocm9uaXphdGlvbi4NCj4+ICsgICAgaW50ICAgICAgICAgICAg IGFzeW5jX2VuY29kZTsNCj4+ICsNCj4+ICsgICAgLy8gU3RvcmUgYnVmZmVyZWQgcGljLg0KPj4g KyAgICBBVkZpZm8gICAgICAgICAgKmVuY29kZV9maWZvOw0KPj4gICAgICAvLyBNYXggbnVtYmVy IG9mIGZyYW1lIGJ1ZmZlcmVkIGluIGVuY29kZXIuDQo+PiAgICAgIGludCAgICAgICAgICAgICBh c3luY19kZXB0aDsNCj4+ICsNCj4+ICsgICAgLyoqIFRhaWwgZGF0YSBvZiBhIHBpYywgbm93IG9u bHkgdXNlZCBmb3IgYXYxIHJlcGVhdCBmcmFtZSBoZWFkZXIuICovDQo+PiArICAgIEFWUGFja2V0 ICAgICAgICAqdGFpbF9wa3Q7DQo+PiAgfSBIV0Jhc2VFbmNvZGVDb250ZXh0Ow0KPj4NCj4+ICtp bnQgZmZfaHdfYmFzZV9lbmNvZGVfcmVjZWl2ZV9wYWNrZXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4 LCBBVlBhY2tldA0KPipwa3QpOw0KPj4gKw0KPj4gICNkZWZpbmUgSFdfQkFTRV9FTkNPREVfQ09N TU9OX09QVElPTlMgXA0KPj4gICAgICB7ICJhc3luY19kZXB0aCIsICJNYXhpbXVtIHByb2Nlc3Np bmcgcGFyYWxsZWxpc20uICIgXA0KPj4gICAgICAgICJJbmNyZWFzZSB0aGlzIHRvIGltcHJvdmUg c2luZ2xlIGNoYW5uZWwgcGVyZm9ybWFuY2UuIiwgXA0KPj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29k ZWMvdmFhcGlfZW5jb2RlLmMgYi9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZS5jDQo+PiBpbmRleCAy MjdjY2NhZTY0Li4xODk2NjU5NmUxIDEwMDY0NA0KPj4gLS0tIGEvbGliYXZjb2RlYy92YWFwaV9l bmNvZGUuYw0KPj4gKysrIGIvbGliYXZjb2RlYy92YWFwaV9lbmNvZGUuYw0KPj4gQEAgLTEzOCwy MiArMTM4LDI2IEBAIHN0YXRpYyBpbnQNCj52YWFwaV9lbmNvZGVfbWFrZV9taXNjX3BhcmFtX2J1 ZmZlcihBVkNvZGVjQ29udGV4dCAqYXZjdHgsDQo+PiAgc3RhdGljIGludCB2YWFwaV9lbmNvZGVf d2FpdChBVkNvZGVjQ29udGV4dCAqYXZjdHgsDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBWQUFQSUVuY29kZVBpY3R1cmUgKnBpYykNCj4+ICB7DQo+PiArI2lmIFZBX0NIRUNLX1ZF UlNJT04oMSwgOSwgMCkNCj4+ICsgICAgSFdCYXNlRW5jb2RlQ29udGV4dCAqYmFzZV9jdHggPSBh dmN0eC0+cHJpdl9kYXRhOw0KPj4gKyNlbmRpZg0KPj4gICAgICBWQUFQSUVuY29kZUNvbnRleHQg KmN0eCA9IGF2Y3R4LT5wcml2X2RhdGE7DQo+PiArICAgIEhXQmFzZUVuY29kZVBpY3R1cmUgKmJh c2VfcGljID0gKEhXQmFzZUVuY29kZVBpY3R1cmUqKXBpYzsNCj4NCj5Vc2UgImJhc2VfZm9vID0g JmZvby0+YmFzZV9maWVsZCIgaW5zdGVhZCB0byBhdm9pZCBvdmVycmlkaW5nIHRoZSB0eXBlLQ0K PmNoZWNraW5nLg0KPg0KPihBbHNvIGluIG1vdmUgcGxhY2VzIGJlbG93LikNCg0KT0suDQoNCj4N Cj4+ICAgICAgVkFTdGF0dXMgdmFzOw0KPj4NCj4+IC0gICAgYXZfYXNzZXJ0MChwaWMtPmVuY29k ZV9pc3N1ZWQpOw0KPj4gKyAgICBhdl9hc3NlcnQwKGJhc2VfcGljLT5lbmNvZGVfaXNzdWVkKTsN Cj4+DQo+PiAtICAgIGlmIChwaWMtPmVuY29kZV9jb21wbGV0ZSkgew0KPj4gKyAgICBpZiAoYmFz ZV9waWMtPmVuY29kZV9jb21wbGV0ZSkgew0KPj4gICAgICAgICAgLy8gQWxyZWFkeSB3YWl0ZWQg Zm9yIHRoaXMgcGljdHVyZS4NCj4+ICAgICAgICAgIHJldHVybiAwOw0KPj4gICAgICB9DQo+Pg0K Pj4gICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIlN5bmMgdG8gcGljICUiUFJJZDY0 Ii8lIlBSSWQ2NCIgIg0KPj4gLSAgICAgICAgICAgIihpbnB1dCBzdXJmYWNlICUjeCkuXG4iLCBw aWMtPmRpc3BsYXlfb3JkZXIsDQo+PiAtICAgICAgICAgICBwaWMtPmVuY29kZV9vcmRlciwgcGlj LT5pbnB1dF9zdXJmYWNlKTsNCj4+ICsgICAgICAgICAgICIoaW5wdXQgc3VyZmFjZSAlI3gpLlxu IiwgYmFzZV9waWMtPmRpc3BsYXlfb3JkZXIsDQo+PiArICAgICAgICAgICBiYXNlX3BpYy0+ZW5j b2RlX29yZGVyLCBwaWMtPmlucHV0X3N1cmZhY2UpOw0KPj4NCj4+ICAjaWYgVkFfQ0hFQ0tfVkVS U0lPTigxLCA5LCAwKQ0KPj4gLSAgICBpZiAoY3R4LT5oYXNfc3luY19idWZmZXJfZnVuYykgew0K Pj4gKyAgICBpZiAoYmFzZV9jdHgtPmFzeW5jX2VuY29kZSkgew0KPj4gICAgICAgICAgdmFzID0g dmFTeW5jQnVmZmVyKGN0eC0+aHdjdHgtPmRpc3BsYXksDQo+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGljLT5vdXRwdXRfYnVmZmVyLA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFZBX1RJTUVPVVRfSU5GSU5JVEUpOw0KPj4gQEAgLTE3NCw5ICsxNzgsOSBAQCBzdGF0aWMg aW50IHZhYXBpX2VuY29kZV93YWl0KEFWQ29kZWNDb250ZXh0ICphdmN0eCwNCj4+ICAgICAgfQ0K Pj4NCj4+ICAgICAgLy8gSW5wdXQgaXMgZGVmaW5pdGVseSBmaW5pc2hlZCB3aXRoIG5vdy4NCj4+ IC0gICAgYXZfZnJhbWVfZnJlZSgmcGljLT5pbnB1dF9pbWFnZSk7DQo+PiArICAgIGF2X2ZyYW1l X2ZyZWUoJmJhc2VfcGljLT5pbnB1dF9pbWFnZSk7DQo+Pg0KPj4gLSAgICBwaWMtPmVuY29kZV9j b21wbGV0ZSA9IDE7DQo+PiArICAgIGJhc2VfcGljLT5lbmNvZGVfY29tcGxldGUgPSAxOw0KPj4g ICAgICByZXR1cm4gMDsNCj4+ICB9DQo+Pg0KPj4gQEAgLTI2Myw5ICsyNjcsMTEgQEAgc3RhdGlj IGludA0KPnZhYXBpX2VuY29kZV9tYWtlX3RpbGVfc2xpY2UoQVZDb2RlY0NvbnRleHQgKmF2Y3R4 LA0KPj4gIH0NCj4+DQo+PiAgc3RhdGljIGludCB2YWFwaV9lbmNvZGVfaXNzdWUoQVZDb2RlY0Nv bnRleHQgKmF2Y3R4LA0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZBQVBJRW5j b2RlUGljdHVyZSAqcGljKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IEhXQmFzZUVuY29kZVBpY3R1cmUgKmJhc2VfcGljKQ0KPj4gIHsNCj4+IC0gICAgVkFBUElFbmNv ZGVDb250ZXh0ICpjdHggPSBhdmN0eC0+cHJpdl9kYXRhOw0KPj4gKyAgICBIV0Jhc2VFbmNvZGVD b250ZXh0ICpiYXNlX2N0eCA9IGF2Y3R4LT5wcml2X2RhdGE7DQo+PiArICAgIFZBQVBJRW5jb2Rl Q29udGV4dCAgICAgICAqY3R4ID0gYXZjdHgtPnByaXZfZGF0YTsNCj4+ICsgICAgVkFBUElFbmNv ZGVQaWN0dXJlICpwaWMgPSAoVkFBUElFbmNvZGVQaWN0dXJlKiliYXNlX3BpYzsNCj4+ICAgICAg VkFBUElFbmNvZGVTbGljZSAqc2xpY2U7DQo+PiAgICAgIFZBU3RhdHVzIHZhczsNCj4+ICAgICAg aW50IGVyciwgaTsNCj4+IEBAIC0yNzQsNTIgKzI4MCw0NiBAQCBzdGF0aWMgaW50IHZhYXBpX2Vu Y29kZV9pc3N1ZShBVkNvZGVjQ29udGV4dA0KPiphdmN0eCwNCj4+ICAgICAgYXZfdW51c2VkIEFW RnJhbWVTaWRlRGF0YSAqc2Q7DQo+Pg0KPj4gICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJV RywgIklzc3VpbmcgZW5jb2RlIGZvcg0KPnBpYyAlIlBSSWQ2NCIvJSJQUklkNjQiICINCj4+IC0g ICAgICAgICAgICJhcyB0eXBlICVzLlxuIiwgcGljLT5kaXNwbGF5X29yZGVyLCBwaWMtPmVuY29k ZV9vcmRlciwNCj4+IC0gICAgICAgICAgIGZmX2h3X2Jhc2VfZW5jb2RlX2dldF9waWN0eXBlX25h bWUocGljLT50eXBlKSk7DQo+PiAtICAgIGlmIChwaWMtPm5iX3JlZnNbMF0gPT0gMCAmJiBwaWMt Pm5iX3JlZnNbMV0gPT0gMCkgew0KPj4gKyAgICAgICAgICAgImFzIHR5cGUgJXMuXG4iLCBiYXNl X3BpYy0+ZGlzcGxheV9vcmRlciwgYmFzZV9waWMtPmVuY29kZV9vcmRlciwNCj4+ICsgICAgICAg ICAgIGZmX2h3X2Jhc2VfZW5jb2RlX2dldF9waWN0eXBlX25hbWUoYmFzZV9waWMtPnR5cGUpKTsN Cj4+ICsgICAgaWYgKGJhc2VfcGljLT5uYl9yZWZzWzBdID09IDAgJiYgYmFzZV9waWMtPm5iX3Jl ZnNbMV0gPT0gMCkgew0KPj4gICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICJO byByZWZlcmVuY2UgcGljdHVyZXMuXG4iKTsNCj4+ICAgICAgfSBlbHNlIHsNCj4+ICAgICAgICAg IGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAiTDAgcmVmZXJzIHRvIik7DQo+PiAtICAgICAg ICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzWzBdOyBpKyspIHsNCj4+ICsgICAgICAgIGZv ciAoaSA9IDA7IGkgPCBiYXNlX3BpYy0+bmJfcmVmc1swXTsgaSsrKSB7DQo+PiAgICAgICAgICAg ICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICIgJSJQUklkNjQiLyUiUFJJZDY0LA0KPj4g LSAgICAgICAgICAgICAgICAgICBwaWMtPnJlZnNbMF1baV0tPmRpc3BsYXlfb3JkZXIsIHBpYy0+ cmVmc1swXVtpXS0+ZW5jb2RlX29yZGVyKTsNCj4+ICsgICAgICAgICAgICAgICAgICAgYmFzZV9w aWMtPnJlZnNbMF1baV0tPmRpc3BsYXlfb3JkZXIsIGJhc2VfcGljLT5yZWZzWzBdW2ldLQ0KPj5l bmNvZGVfb3JkZXIpOw0KPj4gICAgICAgICAgfQ0KPj4gICAgICAgICAgYXZfbG9nKGF2Y3R4LCBB Vl9MT0dfREVCVUcsICIuXG4iKTsNCj4+DQo+PiAtICAgICAgICBpZiAocGljLT5uYl9yZWZzWzFd KSB7DQo+PiArICAgICAgICBpZiAoYmFzZV9waWMtPm5iX3JlZnNbMV0pIHsNCj4+ICAgICAgICAg ICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIkwxIHJlZmVycyB0byIpOw0KPj4gLSAg ICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnNbMV07IGkrKykgew0KPj4gKyAg ICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBiYXNlX3BpYy0+bmJfcmVmc1sxXTsgaSsrKSB7DQo+ PiAgICAgICAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAiICUiUFJJZDY0 Ii8lIlBSSWQ2NCwNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgIHBpYy0+cmVmc1sxXVtpXS0+ ZGlzcGxheV9vcmRlciwgcGljLT5yZWZzWzFdW2ldLT5lbmNvZGVfb3JkZXIpOw0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgYmFzZV9waWMtPnJlZnNbMV1baV0tPmRpc3BsYXlfb3JkZXIsIGJh c2VfcGljLT5yZWZzWzFdW2ldLQ0KPj5lbmNvZGVfb3JkZXIpOw0KPj4gICAgICAgICAgICAgIH0N Cj4+ICAgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIi5cbiIpOw0KPj4g ICAgICAgICAgfQ0KPj4gICAgICB9DQo+Pg0KPj4gLSAgICBhdl9hc3NlcnQwKCFwaWMtPmVuY29k ZV9pc3N1ZWQpOw0KPj4gLSAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzWzBdOyBpKysp IHsNCj4+IC0gICAgICAgIGF2X2Fzc2VydDAocGljLT5yZWZzWzBdW2ldKTsNCj4+IC0gICAgICAg IGF2X2Fzc2VydDAocGljLT5yZWZzWzBdW2ldLT5lbmNvZGVfaXNzdWVkKTsNCj4+ICsgICAgYXZf YXNzZXJ0MCghYmFzZV9waWMtPmVuY29kZV9pc3N1ZWQpOw0KPj4gKyAgICBmb3IgKGkgPSAwOyBp IDwgYmFzZV9waWMtPm5iX3JlZnNbMF07IGkrKykgew0KPj4gKyAgICAgICAgYXZfYXNzZXJ0MChi YXNlX3BpYy0+cmVmc1swXVtpXSk7DQo+PiArICAgICAgICBhdl9hc3NlcnQwKGJhc2VfcGljLT5y ZWZzWzBdW2ldLT5lbmNvZGVfaXNzdWVkKTsNCj4+ICAgICAgfQ0KPj4gLSAgICBmb3IgKGkgPSAw OyBpIDwgcGljLT5uYl9yZWZzWzFdOyBpKyspIHsNCj4+IC0gICAgICAgIGF2X2Fzc2VydDAocGlj LT5yZWZzWzFdW2ldKTsNCj4+IC0gICAgICAgIGF2X2Fzc2VydDAocGljLT5yZWZzWzFdW2ldLT5l bmNvZGVfaXNzdWVkKTsNCj4+ICsgICAgZm9yIChpID0gMDsgaSA8IGJhc2VfcGljLT5uYl9yZWZz WzFdOyBpKyspIHsNCj4+ICsgICAgICAgIGF2X2Fzc2VydDAoYmFzZV9waWMtPnJlZnNbMV1baV0p Ow0KPj4gKyAgICAgICAgYXZfYXNzZXJ0MChiYXNlX3BpYy0+cmVmc1sxXVtpXS0+ZW5jb2RlX2lz c3VlZCk7DQo+PiAgICAgIH0NCj4+DQo+PiAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVH LCAiSW5wdXQgc3VyZmFjZSBpcyAlI3guXG4iLCBwaWMtDQo+PmlucHV0X3N1cmZhY2UpOw0KPj4N Cj4+IC0gICAgcGljLT5yZWNvbl9pbWFnZSA9IGF2X2ZyYW1lX2FsbG9jKCk7DQo+PiAtICAgIGlm ICghcGljLT5yZWNvbl9pbWFnZSkgew0KPj4gLSAgICAgICAgZXJyID0gQVZFUlJPUihFTk9NRU0p Ow0KPj4gLSAgICAgICAgZ290byBmYWlsOw0KPj4gLSAgICB9DQo+PiAtDQo+PiAtICAgIGVyciA9 IGF2X2h3ZnJhbWVfZ2V0X2J1ZmZlcihjdHgtPnJlY29uX2ZyYW1lc19yZWYsIHBpYy0+cmVjb25f aW1hZ2UsDQo+MCk7DQo+PiArICAgIGVyciA9IGF2X2h3ZnJhbWVfZ2V0X2J1ZmZlcihjdHgtPnJl Y29uX2ZyYW1lc19yZWYsIGJhc2VfcGljLQ0KPj5yZWNvbl9pbWFnZSwgMCk7DQo+PiAgICAgIGlm IChlcnIgPCAwKSB7DQo+PiAgICAgICAgICBlcnIgPSBBVkVSUk9SKEVOT01FTSk7DQo+PiAgICAg ICAgICBnb3RvIGZhaWw7DQo+PiAgICAgIH0NCj4+IC0gICAgcGljLT5yZWNvbl9zdXJmYWNlID0g KFZBU3VyZmFjZUlEKSh1aW50cHRyX3QpcGljLT5yZWNvbl9pbWFnZS0+ZGF0YVszXTsNCj4+ICsg ICAgcGljLT5yZWNvbl9zdXJmYWNlID0gKFZBU3VyZmFjZUlEKSh1aW50cHRyX3QpYmFzZV9waWMt PnJlY29uX2ltYWdlLQ0KPj5kYXRhWzNdOw0KPj4gICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19E RUJVRywgIlJlY29uIHN1cmZhY2UgaXMgJSN4LlxuIiwgcGljLQ0KPj5yZWNvbl9zdXJmYWNlKTsN Cj4+DQo+PiAgICAgIHBpYy0+b3V0cHV0X2J1ZmZlcl9yZWYgPSBmZl9yZWZzdHJ1Y3RfcG9vbF9n ZXQoY3R4LT5vdXRwdXRfYnVmZmVyX3Bvb2wpOw0KPj4gQEAgLTM0Myw3ICszNDMsNyBAQCBzdGF0 aWMgaW50IHZhYXBpX2VuY29kZV9pc3N1ZShBVkNvZGVjQ29udGV4dA0KPiphdmN0eCwNCj4+DQo+ PiAgICAgIHBpYy0+bmJfcGFyYW1fYnVmZmVycyA9IDA7DQo+Pg0KPj4gLSAgICBpZiAocGljLT50 eXBlID09IFBJQ1RVUkVfVFlQRV9JRFIgJiYgY3R4LT5jb2RlYy0NCj4+aW5pdF9zZXF1ZW5jZV9w YXJhbXMpIHsNCj4+ICsgICAgaWYgKGJhc2VfcGljLT50eXBlID09IFBJQ1RVUkVfVFlQRV9JRFIg JiYgY3R4LT5jb2RlYy0NCj4+aW5pdF9zZXF1ZW5jZV9wYXJhbXMpIHsNCj4+ICAgICAgICAgIGVy ciA9IHZhYXBpX2VuY29kZV9tYWtlX3BhcmFtX2J1ZmZlcihhdmN0eCwgcGljLA0KPj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZBRW5jU2VxdWVuY2VQYXJh bWV0ZXJCdWZmZXJUeXBlLA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGN0eC0+Y29kZWNfc2VxdWVuY2VfcGFyYW1zLA0KPj4gQEAgLTM1Miw3ICszNTIs NyBAQCBzdGF0aWMgaW50IHZhYXBpX2VuY29kZV9pc3N1ZShBVkNvZGVjQ29udGV4dA0KPiphdmN0 eCwNCj4+ICAgICAgICAgICAgICBnb3RvIGZhaWw7DQo+PiAgICAgIH0NCj4+DQo+PiAtICAgIGlm IChwaWMtPnR5cGUgPT0gUElDVFVSRV9UWVBFX0lEUikgew0KPj4gKyAgICBpZiAoYmFzZV9waWMt PnR5cGUgPT0gUElDVFVSRV9UWVBFX0lEUikgew0KPj4gICAgICAgICAgZm9yIChpID0gMDsgaSA8 IGN0eC0+bmJfZ2xvYmFsX3BhcmFtczsgaSsrKSB7DQo+PiAgICAgICAgICAgICAgZXJyID0gdmFh cGlfZW5jb2RlX21ha2VfbWlzY19wYXJhbV9idWZmZXIoYXZjdHgsIHBpYywNCj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPmdsb2Jh bF9wYXJhbXNfdHlwZVtpXSwNCj4+IEBAIC0zODksNyArMzg5LDcgQEAgc3RhdGljIGludCB2YWFw aV9lbmNvZGVfaXNzdWUoQVZDb2RlY0NvbnRleHQNCj4qYXZjdHgsDQo+PiAgICAgIH0NCj4+ICAj ZW5kaWYNCj4+DQo+PiAtICAgIGlmIChwaWMtPnR5cGUgPT0gUElDVFVSRV9UWVBFX0lEUikgew0K Pj4gKyAgICBpZiAoYmFzZV9waWMtPnR5cGUgPT0gUElDVFVSRV9UWVBFX0lEUikgew0KPj4gICAg ICAgICAgaWYgKGN0eC0+dmFfcGFja2VkX2hlYWRlcnMgJiBWQV9FTkNfUEFDS0VEX0hFQURFUl9T RVFVRU5DRQ0KPiYmDQo+PiAgICAgICAgICAgICAgY3R4LT5jb2RlYy0+d3JpdGVfc2VxdWVuY2Vf aGVhZGVyKSB7DQo+PiAgICAgICAgICAgICAgYml0X2xlbiA9IDggKiBzaXplb2YoZGF0YSk7DQo+ PiBAQCAtNTI5LDkgKzUyOSw5IEBAIHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2lzc3VlKEFWQ29k ZWNDb250ZXh0DQo+KmF2Y3R4LA0KPj4gICAgICB9DQo+Pg0KPj4gICNpZiBWQV9DSEVDS19WRVJT SU9OKDEsIDAsIDApDQo+PiAtICAgIHNkID0gYXZfZnJhbWVfZ2V0X3NpZGVfZGF0YShwaWMtPmlu cHV0X2ltYWdlLA0KPj4gKyAgICBzZCA9IGF2X2ZyYW1lX2dldF9zaWRlX2RhdGEoYmFzZV9waWMt PmlucHV0X2ltYWdlLA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZfRlJB TUVfREFUQV9SRUdJT05TX09GX0lOVEVSRVNUKTsNCj4+IC0gICAgaWYgKHNkICYmIGN0eC0+cm9p X2FsbG93ZWQpIHsNCj4+ICsgICAgaWYgKHNkICYmIGJhc2VfY3R4LT5yb2lfYWxsb3dlZCkgew0K Pj4gICAgICAgICAgY29uc3QgQVZSZWdpb25PZkludGVyZXN0ICpyb2k7DQo+PiAgICAgICAgICB1 aW50MzJfdCByb2lfc2l6ZTsNCj4+ICAgICAgICAgIFZBRW5jTWlzY1BhcmFtZXRlckJ1ZmZlclJP SSBwYXJhbV9yb2k7DQo+PiBAQCAtNTQyLDExICs1NDIsMTEgQEAgc3RhdGljIGludCB2YWFwaV9l bmNvZGVfaXNzdWUoQVZDb2RlY0NvbnRleHQNCj4qYXZjdHgsDQo+PiAgICAgICAgICBhdl9hc3Nl cnQwKHJvaV9zaXplICYmIHNkLT5zaXplICUgcm9pX3NpemUgPT0gMCk7DQo+PiAgICAgICAgICBu Yl9yb2kgPSBzZC0+c2l6ZSAvIHJvaV9zaXplOw0KPj4gICAgICAgICAgaWYgKG5iX3JvaSA+IGN0 eC0+cm9pX21heF9yZWdpb25zKSB7DQo+PiAtICAgICAgICAgICAgaWYgKCFjdHgtPnJvaV93YXJu ZWQpIHsNCj4+ICsgICAgICAgICAgICBpZiAoIWJhc2VfY3R4LT5yb2lfd2FybmVkKSB7DQo+PiAg ICAgICAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX1dBUk5JTkcsICJNb3JlIFJPSXMg c2V0IHRoYW4gIg0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnRlZCBieSBkcml2 ZXIgKCVkID4gJWQpLlxuIiwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIG5iX3JvaSwgY3R4 LT5yb2lfbWF4X3JlZ2lvbnMpOw0KPj4gLSAgICAgICAgICAgICAgICBjdHgtPnJvaV93YXJuZWQg PSAxOw0KPj4gKyAgICAgICAgICAgICAgICBiYXNlX2N0eC0+cm9pX3dhcm5lZCA9IDE7DQo+PiAg ICAgICAgICAgICAgfQ0KPj4gICAgICAgICAgICAgIG5iX3JvaSA9IGN0eC0+cm9pX21heF9yZWdp b25zOw0KPj4gICAgICAgICAgfQ0KPj4gQEAgLTYzOSw4ICs2MzksNiBAQCBzdGF0aWMgaW50IHZh YXBpX2VuY29kZV9pc3N1ZShBVkNvZGVjQ29udGV4dA0KPiphdmN0eCwNCj4+ICAgICAgICAgIH0N Cj4+ICAgICAgfQ0KPj4NCj4+IC0gICAgcGljLT5lbmNvZGVfaXNzdWVkID0gMTsNCj4+IC0NCj4+ ICAgICAgcmV0dXJuIDA7DQo+Pg0KPj4gIGZhaWxfd2l0aF9waWN0dXJlOg0KPj4gQEAgLTY1Nywx NCArNjU1LDEzIEBAIGZhaWxfYXRfZW5kOg0KPj4gICAgICBhdl9mcmVlcCgmcGljLT5wYXJhbV9i dWZmZXJzKTsNCj4+ICAgICAgYXZfZnJlZXAoJnBpYy0+c2xpY2VzKTsNCj4+ICAgICAgYXZfZnJl ZXAoJnBpYy0+cm9pKTsNCj4+IC0gICAgYXZfZnJhbWVfZnJlZSgmcGljLT5yZWNvbl9pbWFnZSk7 DQo+PiAgICAgIGZmX3JlZnN0cnVjdF91bnJlZigmcGljLT5vdXRwdXRfYnVmZmVyX3JlZik7DQo+ PiAgICAgIHBpYy0+b3V0cHV0X2J1ZmZlciA9IFZBX0lOVkFMSURfSUQ7DQo+PiAgICAgIHJldHVy biBlcnI7DQo+PiAgfQ0KPg0KPkFsbCB0aGUgY2h1cm4gaW4gdGhpcyBmdW5jdGlvbiBtYWtlcyBt ZSB3b25kZXIgd2hldGhlciBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8NCj5oYXZlIFZBQVBJRW5jb2Rl UGljdHVyZSAqdmFhcGlfcGljIGFuZCBIV0Jhc2VFbmNvZGVQaWN0dXJlICpwaWMgdG8gYXZvaWQN Cj5pdD8gIChQZXJoYXBzIG5vdCBnaXZlbiB0aGF0IGl0IHVzZXMgYm90aC4pDQoNCklmIHNvIGl0 IHdpbGwgYWxzbyBicmluZyByZW5hbWluZyBpbiBhIGRpZmZlcmVudCB3YXkgYW5kIHNlZW1zIG5v dCBhbnkgYmV0dGVyLiDimLkgSSB0aGluayBpdCdzIG5vdCBhdm9pZGFibGUuDQoNCj4NCj4+IC4u Lg0KPj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmFhcGlfZW5jb2RlX2F2MS5jIGIvbGliYXZj b2RlYy92YWFwaV9lbmNvZGVfYXYxLmMNCj4+IGluZGV4IGY0YjQ1ODY1ODMuLjM5M2I0NzlmOTkg MTAwNjQ0DQo+PiAtLS0gYS9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9hdjEuYw0KPj4gKysrIGIv bGliYXZjb2RlYy92YWFwaV9lbmNvZGVfYXYxLmMNCj4+IEBAIC0zNTcsNiArMzU3LDcgQEAgc3Rh dGljIGludA0KPnZhYXBpX2VuY29kZV9hdjFfd3JpdGVfc2VxdWVuY2VfaGVhZGVyKEFWQ29kZWND b250ZXh0ICphdmN0eCwNCj4+DQo+PiAgc3RhdGljIGludCB2YWFwaV9lbmNvZGVfYXYxX2luaXRf c2VxdWVuY2VfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCkNCj4+ICB7DQo+PiArICAgIEhX QmFzZUVuY29kZUNvbnRleHQgICAgICAgICAqYmFzZV9jdHggPSBhdmN0eC0+cHJpdl9kYXRhOw0K Pj4gICAgICBWQUFQSUVuY29kZUNvbnRleHQgICAgICAgICAgICAgICAqY3R4ID0gYXZjdHgtPnBy aXZfZGF0YTsNCj4+ICAgICAgVkFBUElFbmNvZGVBVjFDb250ZXh0ICAgICAgICAgICAqcHJpdiA9 IGF2Y3R4LT5wcml2X2RhdGE7DQo+PiAgICAgIEFWMVJhd09CVSAgICAgICAgICAgICAgICAgICAg ICpzaF9vYnUgPSAmcHJpdi0+c2g7DQo+PiBAQCAtNDM4LDggKzQzOSw4IEBAIHN0YXRpYyBpbnQN Cj52YWFwaV9lbmNvZGVfYXYxX2luaXRfc2VxdWVuY2VfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICph dmN0eCkNCj4+ICAgICAgdnNlcS0+c2VxX2xldmVsX2lkeCAgICAgICAgICAgPSBzaC0+c2VxX2xl dmVsX2lkeFswXTsNCj4+ICAgICAgdnNlcS0+c2VxX3RpZXIgICAgICAgICAgICAgICAgPSBzaC0+ c2VxX3RpZXJbMF07DQo+PiAgICAgIHZzZXEtPm9yZGVyX2hpbnRfYml0c19taW51c18xID0gc2gt Pm9yZGVyX2hpbnRfYml0c19taW51c18xOw0KPj4gLSAgICB2c2VxLT5pbnRyYV9wZXJpb2QgICAg ICAgICAgICA9IGN0eC0+Z29wX3NpemU7DQo+PiAtICAgIHZzZXEtPmlwX3BlcmlvZCAgICAgICAg ICAgICAgID0gY3R4LT5iX3Blcl9wICsgMTsNCj4+ICsgICAgdnNlcS0+aW50cmFfcGVyaW9kICAg ICAgICAgICAgPSBiYXNlX2N0eC0+Z29wX3NpemU7DQo+PiArICAgIHZzZXEtPmlwX3BlcmlvZCAg ICAgICAgICAgICAgID0gYmFzZV9jdHgtPmJfcGVyX3AgKyAxOw0KPj4NCj4+ICAgICAgdnNlcS0+ c2VxX2ZpZWxkcy5iaXRzLmVuYWJsZV9vcmRlcl9oaW50ID0gc2gtPmVuYWJsZV9vcmRlcl9oaW50 Ow0KPj4NCj4+IEBAIC00NjYsMTIgKzQ2NywxMyBAQCBzdGF0aWMgaW50DQo+dmFhcGlfZW5jb2Rl X2F2MV9pbml0X3BpY3R1cmVfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwNCj4+ICB7DQo+ PiAgICAgIFZBQVBJRW5jb2RlQ29udGV4dCAgICAgICAgICAgICAgKmN0eCA9IGF2Y3R4LT5wcml2 X2RhdGE7DQo+PiAgICAgIFZBQVBJRW5jb2RlQVYxQ29udGV4dCAgICAgICAgICAqcHJpdiA9IGF2 Y3R4LT5wcml2X2RhdGE7DQo+PiAtICAgIFZBQVBJRW5jb2RlQVYxUGljdHVyZSAgICAgICAgICAq aHBpYyA9IHBpYy0+cHJpdl9kYXRhOw0KPj4gKyAgICBIV0Jhc2VFbmNvZGVQaWN0dXJlICAgICAg ICAqYmFzZV9waWMgPSAoSFdCYXNlRW5jb2RlUGljdHVyZSAqKXBpYzsNCj4NCj5iYXNlX3BpYyBp cyBjb25zdCBoZXJlPw0KDQpPSy4NCg0KPg0KPkFsc28gY29uc2lkZXIgd2hldGhlciB0aGlzIG5h bWluZyBpcyB0aGUgYmVzdCB3YXkgYXJvdW5kLg0KPg0KPj4gKyAgICBWQUFQSUVuY29kZUFWMVBp Y3R1cmUgICAgICAgICAgKmhwaWMgPSBiYXNlX3BpYy0+cHJpdl9kYXRhOw0KPj4gICAgICBBVjFS YXdPQlUgICAgICAgICAgICAgICAgICAgICpmaF9vYnUgPSAmcHJpdi0+Zmg7DQo+PiAgICAgIEFW MVJhd0ZyYW1lSGVhZGVyICAgICAgICAgICAgICAgICpmaCA9ICZmaF9vYnUtPm9idS5mcmFtZS5o ZWFkZXI7DQo+PiAgICAgIFZBRW5jUGljdHVyZVBhcmFtZXRlckJ1ZmZlckFWMSAqdnBpYyA9IHBp Yy0+Y29kZWNfcGljdHVyZV9wYXJhbXM7DQo+PiAgICAgIENvZGVkQml0c3RyZWFtRnJhZ21lbnQg ICAgICAgICAgKm9idSA9ICZwcml2LT5jdXJyZW50X29idTsNCj4+IC0gICAgVkFBUElFbmNvZGVQ aWN0dXJlICAgICpyZWY7DQo+PiArICAgIEhXQmFzZUVuY29kZVBpY3R1cmUgICAgKnJlZjsNCj4+ ICAgICAgVkFBUElFbmNvZGVBVjFQaWN0dXJlICpocmVmOw0KPj4gICAgICBpbnQgc2xvdCwgaTsN Cj4+ICAgICAgaW50IHJldDsNCj4+IEBAIC00ODAsMjQgKzQ4MiwyNCBAQCBzdGF0aWMgaW50DQo+ dmFhcGlfZW5jb2RlX2F2MV9pbml0X3BpY3R1cmVfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0 eCwNCj4+DQo+PiAgICAgIG1lbXNldChmaF9vYnUsIDAsIHNpemVvZigqZmhfb2J1KSk7DQo+PiAg ICAgIHBpYy0+bmJfc2xpY2VzID0gcHJpdi0+dGlsZV9ncm91cHM7DQo+PiAtICAgIHBpYy0+bm9u X2luZGVwZW5kZW50X2ZyYW1lID0gcGljLT5lbmNvZGVfb3JkZXIgPCBwaWMtPmRpc3BsYXlfb3Jk ZXI7DQo+PiArICAgIHBpYy0+bm9uX2luZGVwZW5kZW50X2ZyYW1lID0gYmFzZV9waWMtPmVuY29k ZV9vcmRlciA8IGJhc2VfcGljLQ0KPj5kaXNwbGF5X29yZGVyOw0KPj4gICAgICBmaF9vYnUtPmhl YWRlci5vYnVfdHlwZSA9IEFWMV9PQlVfRlJBTUVfSEVBREVSOw0KPj4gICAgICBmaF9vYnUtPmhl YWRlci5vYnVfaGFzX3NpemVfZmllbGQgPSAxOw0KPj4NCj4+IC0gICAgc3dpdGNoIChwaWMtPnR5 cGUpIHsNCj4+ICsgICAgc3dpdGNoIChiYXNlX3BpYy0+dHlwZSkgew0KPj4gICAgICBjYXNlIFBJ Q1RVUkVfVFlQRV9JRFI6DQo+PiAtICAgICAgICBhdl9hc3NlcnQwKHBpYy0+bmJfcmVmc1swXSA9 PSAwIHx8IHBpYy0+bmJfcmVmc1sxXSk7DQo+PiArICAgICAgICBhdl9hc3NlcnQwKGJhc2VfcGlj LT5uYl9yZWZzWzBdID09IDAgfHwgYmFzZV9waWMtPm5iX3JlZnNbMV0pOw0KPj4gICAgICAgICAg ZmgtPmZyYW1lX3R5cGUgPSBBVjFfRlJBTUVfS0VZOw0KPj4gICAgICAgICAgZmgtPnJlZnJlc2hf ZnJhbWVfZmxhZ3MgPSAweEZGOw0KPj4gICAgICAgICAgZmgtPmJhc2VfcV9pZHggPSBwcml2LT5x X2lkeF9pZHI7DQo+PiAgICAgICAgICBocGljLT5zbG90ID0gMDsNCj4+IC0gICAgICAgIGhwaWMt Pmxhc3RfaWRyX2ZyYW1lID0gcGljLT5kaXNwbGF5X29yZGVyOw0KPj4gKyAgICAgICAgaHBpYy0+ bGFzdF9pZHJfZnJhbWUgPSBiYXNlX3BpYy0+ZGlzcGxheV9vcmRlcjsNCj4+ICAgICAgICAgIGJy ZWFrOw0KPj4gICAgICBjYXNlIFBJQ1RVUkVfVFlQRV9QOg0KPj4gLSAgICAgICAgYXZfYXNzZXJ0 MChwaWMtPm5iX3JlZnNbMF0pOw0KPj4gKyAgICAgICAgYXZfYXNzZXJ0MChiYXNlX3BpYy0+bmJf cmVmc1swXSk7DQo+PiAgICAgICAgICBmaC0+ZnJhbWVfdHlwZSA9IEFWMV9GUkFNRV9JTlRFUjsN Cj4+ICAgICAgICAgIGZoLT5iYXNlX3FfaWR4ID0gcHJpdi0+cV9pZHhfcDsNCj4+IC0gICAgICAg IHJlZiA9IHBpYy0+cmVmc1swXVtwaWMtPm5iX3JlZnNbMF0gLSAxXTsNCj4+ICsgICAgICAgIHJl ZiA9IGJhc2VfcGljLT5yZWZzWzBdW2Jhc2VfcGljLT5uYl9yZWZzWzBdIC0gMV07DQo+PiAgICAg ICAgICBocmVmID0gcmVmLT5wcml2X2RhdGE7DQo+PiAgICAgICAgICBocGljLT5zbG90ID0gIWhy ZWYtPnNsb3Q7DQo+PiAgICAgICAgICBocGljLT5sYXN0X2lkcl9mcmFtZSA9IGhyZWYtPmxhc3Rf aWRyX2ZyYW1lOw0KPj4gQEAgLTUxMiw4ICs1MTQsOCBAQCBzdGF0aWMgaW50DQo+dmFhcGlfZW5j b2RlX2F2MV9pbml0X3BpY3R1cmVfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwNCj4+ICAg ICAgICAgIHZwaWMtPnJlZl9mcmFtZV9jdHJsX2wwLmZpZWxkcy5zZWFyY2hfaWR4MCA9IEFWMV9S RUZfRlJBTUVfTEFTVDsNCj4+DQo+PiAgICAgICAgICAvKiogc2V0IHRoZSAybmQgbmVhcmVzdCBm cmFtZSBpbiBMMCBhcyBHb2xkZW4gZnJhbWUuICovDQo+PiAtICAgICAgICBpZiAocGljLT5uYl9y ZWZzWzBdID4gMSkgew0KPj4gLSAgICAgICAgICAgIHJlZiA9IHBpYy0+cmVmc1swXVtwaWMtPm5i X3JlZnNbMF0gLSAyXTsNCj4+ICsgICAgICAgIGlmIChiYXNlX3BpYy0+bmJfcmVmc1swXSA+IDEp IHsNCj4+ICsgICAgICAgICAgICByZWYgPSBiYXNlX3BpYy0+cmVmc1swXVtiYXNlX3BpYy0+bmJf cmVmc1swXSAtIDJdOw0KPj4gICAgICAgICAgICAgIGhyZWYgPSByZWYtPnByaXZfZGF0YTsNCj4+ ICAgICAgICAgICAgICBmaC0+cmVmX2ZyYW1lX2lkeFszXSA9IGhyZWYtPnNsb3Q7DQo+PiAgICAg ICAgICAgICAgZmgtPnJlZl9vcmRlcl9oaW50W2hyZWYtPnNsb3RdID0gcmVmLT5kaXNwbGF5X29y ZGVyIC0gaHJlZi0NCj4+bGFzdF9pZHJfZnJhbWU7DQo+PiBAQCAtNTIxLDcgKzUyMyw3IEBAIHN0 YXRpYyBpbnQNCj52YWFwaV9lbmNvZGVfYXYxX2luaXRfcGljdHVyZV9wYXJhbXMoQVZDb2RlY0Nv bnRleHQgKmF2Y3R4LA0KPj4gICAgICAgICAgfQ0KPj4gICAgICAgICAgYnJlYWs7DQo+PiAgICAg IGNhc2UgUElDVFVSRV9UWVBFX0I6DQo+PiAtICAgICAgICBhdl9hc3NlcnQwKHBpYy0+bmJfcmVm c1swXSAmJiBwaWMtPm5iX3JlZnNbMV0pOw0KPj4gKyAgICAgICAgYXZfYXNzZXJ0MChiYXNlX3Bp Yy0+bmJfcmVmc1swXSAmJiBiYXNlX3BpYy0+bmJfcmVmc1sxXSk7DQo+PiAgICAgICAgICBmaC0+ ZnJhbWVfdHlwZSA9IEFWMV9GUkFNRV9JTlRFUjsNCj4+ICAgICAgICAgIGZoLT5iYXNlX3FfaWR4 ID0gcHJpdi0+cV9pZHhfYjsNCj4+ICAgICAgICAgIGZoLT5yZWZyZXNoX2ZyYW1lX2ZsYWdzID0g MHgwOw0KPj4gQEAgLTUzNCw3ICs1MzYsNyBAQCBzdGF0aWMgaW50DQo+dmFhcGlfZW5jb2RlX2F2 MV9pbml0X3BpY3R1cmVfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwNCj4+ICAgICAgICAg IHZwaWMtPnJlZl9mcmFtZV9jdHJsX2wwLmZpZWxkcy5zZWFyY2hfaWR4MCA9IEFWMV9SRUZfRlJB TUVfTEFTVDsNCj4+ICAgICAgICAgIHZwaWMtPnJlZl9mcmFtZV9jdHJsX2wxLmZpZWxkcy5zZWFy Y2hfaWR4MCA9IEFWMV9SRUZfRlJBTUVfQldEUkVGOw0KPj4NCj4+IC0gICAgICAgIHJlZiAgICAg ICAgICAgICAgICAgICAgICAgICAgICA9IHBpYy0+cmVmc1swXVtwaWMtPm5iX3JlZnNbMF0gLSAx XTsNCj4+ICsgICAgICAgIHJlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGJhc2VfcGlj LT5yZWZzWzBdW2Jhc2VfcGljLT5uYl9yZWZzWzBdIC0gMV07DQo+PiAgICAgICAgICBocmVmICAg ICAgICAgICAgICAgICAgICAgICAgICAgPSByZWYtPnByaXZfZGF0YTsNCj4+ICAgICAgICAgIGhw aWMtPmxhc3RfaWRyX2ZyYW1lICAgICAgICAgICA9IGhyZWYtPmxhc3RfaWRyX2ZyYW1lOw0KPj4g ICAgICAgICAgZmgtPnByaW1hcnlfcmVmX2ZyYW1lICAgICAgICAgID0gaHJlZi0+c2xvdDsNCj4+ IEBAIC01NDMsNyArNTQ1LDcgQEAgc3RhdGljIGludA0KPnZhYXBpX2VuY29kZV9hdjFfaW5pdF9w aWN0dXJlX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsDQo+PiAgICAgICAgICAgICAgZmgt PnJlZl9mcmFtZV9pZHhbaV0gPSBocmVmLT5zbG90Ow0KPj4gICAgICAgICAgfQ0KPj4NCj4+IC0g ICAgICAgIHJlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBpYy0+cmVmc1sxXVtwaWMt Pm5iX3JlZnNbMV0gLSAxXTsNCj4+ICsgICAgICAgIHJlZiAgICAgICAgICAgICAgICAgICAgICAg ICAgICA9IGJhc2VfcGljLT5yZWZzWzFdW2Jhc2VfcGljLT5uYl9yZWZzWzFdIC0gMV07DQo+PiAg ICAgICAgICBocmVmICAgICAgICAgICAgICAgICAgICAgICAgICAgPSByZWYtPnByaXZfZGF0YTsN Cj4+ICAgICAgICAgIGZoLT5yZWZfb3JkZXJfaGludFtocmVmLT5zbG90XSA9IHJlZi0+ZGlzcGxh eV9vcmRlciAtIGhyZWYtDQo+Pmxhc3RfaWRyX2ZyYW1lOw0KPj4gICAgICAgICAgZm9yIChpID0g QVYxX1JFRl9GUkFNRV9HT0xERU47IGkgPCBBVjFfUkVGU19QRVJfRlJBTUU7IGkrKykgew0KPj4g QEAgLTU1NCwxMyArNTU2LDEzIEBAIHN0YXRpYyBpbnQNCj52YWFwaV9lbmNvZGVfYXYxX2luaXRf cGljdHVyZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LA0KPj4gICAgICAgICAgYXZfYXNz ZXJ0MCgwICYmICJpbnZhbGlkIHBpY3R1cmUgdHlwZSIpOw0KPj4gICAgICB9DQo+Pg0KPj4gLSAg ICBmaC0+c2hvd19mcmFtZSAgICAgICAgICAgICAgICA9IHBpYy0+ZGlzcGxheV9vcmRlciA8PSBw aWMtPmVuY29kZV9vcmRlcjsNCj4+ICsgICAgZmgtPnNob3dfZnJhbWUgICAgICAgICAgICAgICAg PSBiYXNlX3BpYy0+ZGlzcGxheV9vcmRlciA8PSBiYXNlX3BpYy0NCj4+ZW5jb2RlX29yZGVyOw0K Pj4gICAgICBmaC0+c2hvd2FibGVfZnJhbWUgICAgICAgICAgICA9IGZoLT5mcmFtZV90eXBlICE9 IEFWMV9GUkFNRV9LRVk7DQo+PiAgICAgIGZoLT5mcmFtZV93aWR0aF9taW51c18xICAgICAgID0g YXZjdHgtPndpZHRoIC0gMTsNCj4+ICAgICAgZmgtPmZyYW1lX2hlaWdodF9taW51c18xICAgICAg PSBhdmN0eC0+aGVpZ2h0IC0gMTsNCj4+ICAgICAgZmgtPnJlbmRlcl93aWR0aF9taW51c18xICAg ICAgPSBmaC0+ZnJhbWVfd2lkdGhfbWludXNfMTsNCj4+ICAgICAgZmgtPnJlbmRlcl9oZWlnaHRf bWludXNfMSAgICAgPSBmaC0+ZnJhbWVfaGVpZ2h0X21pbnVzXzE7DQo+PiAtICAgIGZoLT5vcmRl cl9oaW50ICAgICAgICAgICAgICAgID0gcGljLT5kaXNwbGF5X29yZGVyIC0gaHBpYy0+bGFzdF9p ZHJfZnJhbWU7DQo+PiArICAgIGZoLT5vcmRlcl9oaW50ICAgICAgICAgICAgICAgID0gYmFzZV9w aWMtPmRpc3BsYXlfb3JkZXIgLSBocGljLT5sYXN0X2lkcl9mcmFtZTsNCj4+ICAgICAgZmgtPnRp bGVfY29scyAgICAgICAgICAgICAgICAgPSBwcml2LT50aWxlX2NvbHM7DQo+PiAgICAgIGZoLT50 aWxlX3Jvd3MgICAgICAgICAgICAgICAgID0gcHJpdi0+dGlsZV9yb3dzOw0KPj4gICAgICBmaC0+ dGlsZV9jb2xzX2xvZzIgICAgICAgICAgICA9IHByaXYtPnRpbGVfY29sc19sb2cyOw0KPj4gQEAg LTYyNiwxMyArNjI4LDEzIEBAIHN0YXRpYyBpbnQNCj52YWFwaV9lbmNvZGVfYXYxX2luaXRfcGlj dHVyZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LA0KPj4gICAgICAgICAgdnBpYy0+cmVm ZXJlbmNlX2ZyYW1lc1tpXSA9IFZBX0lOVkFMSURfU1VSRkFDRTsNCj4+DQo+PiAgICAgIGZvciAo aSA9IDA7IGkgPCBNQVhfUkVGRVJFTkNFX0xJU1RfTlVNOyBpKyspIHsNCj4+IC0gICAgICAgIGZv ciAoaW50IGogPSAwOyBqIDwgcGljLT5uYl9yZWZzW2ldOyBqKyspIHsNCj4+IC0gICAgICAgICAg ICBWQUFQSUVuY29kZVBpY3R1cmUgKnJlZl9waWMgPSBwaWMtPnJlZnNbaV1bal07DQo+PiArICAg ICAgICBmb3IgKGludCBqID0gMDsgaiA8IGJhc2VfcGljLT5uYl9yZWZzW2ldOyBqKyspIHsNCj4+ ICsgICAgICAgICAgICBIV0Jhc2VFbmNvZGVQaWN0dXJlICpyZWZfcGljID0gYmFzZV9waWMtPnJl ZnNbaV1bal07DQo+Pg0KPj4gICAgICAgICAgICAgIHNsb3QgPSAoKFZBQVBJRW5jb2RlQVYxUGlj dHVyZSopcmVmX3BpYy0+cHJpdl9kYXRhKS0+c2xvdDsNCj4+ICAgICAgICAgICAgICBhdl9hc3Nl cnQwKHZwaWMtPnJlZmVyZW5jZV9mcmFtZXNbc2xvdF0gPT0gVkFfSU5WQUxJRF9TVVJGQUNFKTsN Cj4+DQo+PiAtICAgICAgICAgICAgdnBpYy0+cmVmZXJlbmNlX2ZyYW1lc1tzbG90XSA9IHJlZl9w aWMtPnJlY29uX3N1cmZhY2U7DQo+PiArICAgICAgICAgICAgdnBpYy0+cmVmZXJlbmNlX2ZyYW1l c1tzbG90XSA9ICgoVkFBUElFbmNvZGVQaWN0dXJlICopcmVmX3BpYyktDQo+PnJlY29uX3N1cmZh Y2U7DQo+PiAgICAgICAgICB9DQo+PiAgICAgIH0NCj4+DQo+PiBAQCAtNjUzLDcgKzY1NSw3IEBA IHN0YXRpYyBpbnQNCj52YWFwaV9lbmNvZGVfYXYxX2luaXRfcGljdHVyZV9wYXJhbXMoQVZDb2Rl Y0NvbnRleHQgKmF2Y3R4LA0KPj4gICAgICAgICAgdnBpYy0+Yml0X29mZnNldF9jZGVmX3BhcmFt cyAgICAgICAgID0gcHJpdi0+Y2RlZl9zdGFydF9vZmZzZXQ7DQo+PiAgICAgICAgICB2cGljLT5z aXplX2luX2JpdHNfY2RlZl9wYXJhbXMgICAgICAgPSBwcml2LT5jZGVmX3BhcmFtX3NpemU7DQo+ PiAgICAgICAgICB2cGljLT5zaXplX2luX2JpdHNfZnJhbWVfaGRyX29idSAgICAgPSBwcml2LT5m aF9kYXRhX2xlbjsNCj4+IC0gICAgICAgIHZwaWMtPmJ5dGVfb2Zmc2V0X2ZyYW1lX2hkcl9vYnVf c2l6ZSA9ICgoKHBpYy0+dHlwZSA9PQ0KPlBJQ1RVUkVfVFlQRV9JRFIpID8NCj4+ICsgICAgICAg IHZwaWMtPmJ5dGVfb2Zmc2V0X2ZyYW1lX2hkcl9vYnVfc2l6ZSA9ICgoKGJhc2VfcGljLT50eXBl ID09DQo+UElDVFVSRV9UWVBFX0lEUikgPw0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcHJpdi0+c2hfZGF0YV9sZW4gLyA4IDogMCkgKw0KPj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZoX29idS0+aGVh ZGVyLm9idV9leHRlbnNpb25fZmxhZyA/DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAyIDogMSkpOw0KPj4gQEAgLTY5NSwxNCArNjk3LDE1IEBAIHN0 YXRpYyBpbnQNCj52YWFwaV9lbmNvZGVfYXYxX3dyaXRlX3BpY3R1cmVfaGVhZGVyKEFWQ29kZWND b250ZXh0ICphdmN0eCwNCj4+ICAgICAgQ29kZWRCaXRzdHJlYW1BVjFDb250ZXh0ICpjYmN0eCA9 IHByaXYtPmNiYy0+cHJpdl9kYXRhOw0KPj4gICAgICBBVjFSYXdPQlUgICAgICAgICAgICAgICAq Zmhfb2J1ID0gJnByaXYtPmZoOw0KPj4gICAgICBBVjFSYXdGcmFtZUhlYWRlciAgICAgICAqcmVw X2ZoID0gJmZoX29idS0+b2J1LmZyYW1lX2hlYWRlcjsNCj4+ICsgICAgSFdCYXNlRW5jb2RlUGlj dHVyZSAgICpiYXNlX3BpYyA9IChIV0Jhc2VFbmNvZGVQaWN0dXJlICopcGljOw0KPg0KPkFsc28g Y29uc3QuDQo+DQo+PiAgICAgIFZBQVBJRW5jb2RlQVYxUGljdHVyZSAqaHJlZjsNCj4+ICAgICAg aW50IHJldCA9IDA7DQo+Pg0KPj4gICAgICBwaWMtPnRhaWxfc2l6ZSA9IDA7DQo+PiAgICAgIC8q KiBQYWNrIHJlcGVhdCBmcmFtZSBoZWFkZXIuICovDQo+PiAtICAgIGlmIChwaWMtPmRpc3BsYXlf b3JkZXIgPiBwaWMtPmVuY29kZV9vcmRlcikgew0KPj4gKyAgICBpZiAoYmFzZV9waWMtPmRpc3Bs YXlfb3JkZXIgPiBiYXNlX3BpYy0+ZW5jb2RlX29yZGVyKSB7DQo+PiAgICAgICAgICBtZW1zZXQo Zmhfb2J1LCAwLCBzaXplb2YoKmZoX29idSkpOw0KPj4gLSAgICAgICAgaHJlZiA9IHBpYy0+cmVm c1swXVtwaWMtPm5iX3JlZnNbMF0gLSAxXS0+cHJpdl9kYXRhOw0KPj4gKyAgICAgICAgaHJlZiA9 IGJhc2VfcGljLT5yZWZzWzBdW2Jhc2VfcGljLT5uYl9yZWZzWzBdIC0gMV0tPnByaXZfZGF0YTsN Cj4+ICAgICAgICAgIGZoX29idS0+aGVhZGVyLm9idV90eXBlID0gQVYxX09CVV9GUkFNRV9IRUFE RVI7DQo+PiAgICAgICAgICBmaF9vYnUtPmhlYWRlci5vYnVfaGFzX3NpemVfZmllbGQgPSAxOw0K Pj4NCj4+IEBAIC05MzcsNyArOTQwLDcgQEAgY29uc3QgRkZDb2RlYyBmZl9hdjFfdmFhcGlfZW5j b2RlciA9IHsNCj4+ICAgICAgLnAuaWQgICAgICAgICAgID0gQVZfQ09ERUNfSURfQVYxLA0KPj4g ICAgICAucHJpdl9kYXRhX3NpemUgPSBzaXplb2YoVkFBUElFbmNvZGVBVjFDb250ZXh0KSwNCj4+ ICAgICAgLmluaXQgICAgICAgICAgID0gJnZhYXBpX2VuY29kZV9hdjFfaW5pdCwNCj4+IC0gICAg RkZfQ09ERUNfUkVDRUlWRV9QQUNLRVRfQ0IoJmZmX3ZhYXBpX2VuY29kZV9yZWNlaXZlX3BhY2tl dCksDQo+PiArICAgIEZGX0NPREVDX1JFQ0VJVkVfUEFDS0VUX0NCKCZmZl9od19iYXNlX2VuY29k ZV9yZWNlaXZlX3BhY2tldCksDQo+PiAgICAgIC5jbG9zZSAgICAgICAgICA9ICZ2YWFwaV9lbmNv ZGVfYXYxX2Nsb3NlLA0KPj4gICAgICAucC5wcml2X2NsYXNzICAgPSAmdmFhcGlfZW5jb2RlX2F2 MV9jbGFzcywNCj4+ICAgICAgLnAuY2FwYWJpbGl0aWVzID0gQVZfQ09ERUNfQ0FQX0RFTEFZIHwg QVZfQ09ERUNfQ0FQX0hBUkRXQVJFIHwNCj4+IC4uLg0KPg0KPkkgZGlkbid0IGxvb2sgY2FyZWZ1 bGx5IHRocm91Z2ggdGhlIG90aGVyIGNvZGVjcyBoZXJlLg0KDQpUaGFua3MgZm9yIHRoZSByZXZp ZXcuDQoNCi1Ub25nDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0 dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJz Y3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZm bXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==