Received: by 2002:ab2:69cc:0:b0:1fd:c486:4f03 with SMTP id n12csp45104lqp; Mon, 10 Jun 2024 17:49:33 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCV7T/H3OQOY2M75ClAhbvcDGhVSWAh6I9AReUimaf+VdJr2chrBIItsrDs1Im+BvDKL86MoJ8fzjU3f18eaLLfY904PP1bUSnv66vUckQ== X-Google-Smtp-Source: AGHT+IGTz47TFvg2xN/GuehXy3Sv4HU61KbcgyOHf8YSWiLtvBob52pMt8G1UCjZhpoSwOw+9aIx X-Received: by 2002:a50:99c9:0:b0:578:6901:7454 with SMTP id 4fb4d7f45d1cf-57c5089a10amr6798270a12.15.1718066973340; Mon, 10 Jun 2024 17:49:33 -0700 (PDT) Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id 4fb4d7f45d1cf-57c7d855c63si1966476a12.330.2024.06.10.17.49.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Jun 2024 17:49:33 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-209135-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@toshiba.co.jp header.s=key2.smx header.b=oGXh8i82; arc=fail (signature failed); spf=pass (google.com: domain of linux-kernel+bounces-209135-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-209135-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=toshiba.co.jp Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 604E51F22C16 for ; Tue, 11 Jun 2024 00:49:32 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 5260279C8; Tue, 11 Jun 2024 00:49:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=toshiba.co.jp header.i=yuji2.ishikawa@toshiba.co.jp header.b="oGXh8i82" Received: from mo-csw-fb.securemx.jp (mo-csw-fb1800.securemx.jp [210.130.202.159]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5A45215A5; Tue, 11 Jun 2024 00:49:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=210.130.202.159 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718066954; cv=fail; b=SOJprCu91JNCMSJ4CYxXgbZeB6qCKlb8P4tvjMflVFktCHYQhaxuybj8nJO03iXNclE+L7fSzPeFuJiXsRmSrAbrYQepeTM0rLjsnk3bc4Ku96pZT1icINeJVKeR4X+Lw30EfqzJ/RYbNm/FQMVNxFighJ+m4itmlv15hzSfcLM= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718066954; c=relaxed/simple; bh=jmG4a3qvLEElpwAjgPABwLpUDdSDAg36eLoXCzooNWo=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=ZvmbiOgQIXFA1tSORl6CoExTsVggbUYs7SuUwOoWjK3QeohOwDL1XVMOWsEV0dICtJN0g5rDpRfndA2ZnagEpydtYnEn24tj8ccUT7ZvV1xws8t6kczHkcpQ2HKi985F8Ji3iia0UutINHRi82bW8BceXh8Ylpq9uAr0hnU1Lfo= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=toshiba.co.jp; spf=pass smtp.mailfrom=toshiba.co.jp; dkim=pass (2048-bit key) header.d=toshiba.co.jp header.i=yuji2.ishikawa@toshiba.co.jp header.b=oGXh8i82; arc=fail smtp.client-ip=210.130.202.159 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=toshiba.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=toshiba.co.jp Received: by mo-csw-fb.securemx.jp (mx-mo-csw-fb1800) id 45B00kpP3693662; Tue, 11 Jun 2024 09:00:46 +0900 DKIM-Signature: v=1;a=rsa-sha256;c=relaxed/simple;d=toshiba.co.jp;h=From:To:CC :Subject:Date:Message-ID:References:In-Reply-To:Content-Type: Content-Transfer-Encoding:MIME-Version;i=yuji2.ishikawa@toshiba.co.jp;s= key2.smx;t=1718064009;x=1719273609;bh=jmG4a3qvLEElpwAjgPABwLpUDdSDAg36eLoXCzo oNWo=;b=oGXh8i82sG6b4fMocs6pPzCjbHT/r6A6dzgO0DHWlak8IaehmcTzJ2kngC8Q6VN3FUzPq EfuaGqCPrvR52iJnUIEdAxMSajcg88IHo2mM2Jmmxi5t9SpZUe5G2Y7o02qT7py1taDzLBaAZY4Hz +yMWvD78nH0ATBTOrnyCxo1o32qwP0rSN/cJMzf4aXfmi78R+AAGopp6AGyeBJKYeeh5qQz6zWxkX Dl9XEbBoabSuXEk2Hlg9ktChPGzZgEridrnN6gSW6AfFrilqiTUJMXgdRQGsAWCMszCTyqDS8DoqE UpUbZtB1TaB6+rrvpSuD6ZoPFQWIWYO3Qhk5yGR4Zg==; Received: by mo-csw.securemx.jp (mx-mo-csw1802) id 45B007mc111429; Tue, 11 Jun 2024 09:00:07 +0900 X-Iguazu-Qid: 2yAblVO8F7bzMh1Nw9 X-Iguazu-QSIG: v=2; s=0; t=1718064006; q=2yAblVO8F7bzMh1Nw9; m=qH1KoX1fNIq8sJfsvXC7pzA1FiMGZDM7WxE78SCg/UY= Received: from imx12-a.toshiba.co.jp ([38.106.60.135]) by relay.securemx.jp (mx-mr1803) id 45B005bL2378970 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 11 Jun 2024 09:00:05 +0900 X-SA-MID: 22951520 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B11dLarhPUYFoGL7EYJNFtwKsJ39VcpKlM+0EqkAp2va4qdAjdkkGBL0MI6KcIHQ6LrG1J36ySateuEi1QigyUCoUcqcF8489aXOMhKizok6C82N8c76JxpGSXOOVhlxjV+M8FlbjHImtXd/rCuoGAyubGK6CLYLIlAZClFZnDEsEQ8otCu7y3UJqaPFUJSpvHyAPIGaHRbt+OXraBkYqz2oQDWZk8uB2FNwYqx7yxWt9TG0hMbfdyVb/BbzRaCJx3DEETJM+LKuWozyz8/FaZSyGhmMaknzr6p3ige+sOkHY44+keJiy7Io8nf2u/i7CsEUjfaep4PLfG/1Nuv3kw== 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=jmG4a3qvLEElpwAjgPABwLpUDdSDAg36eLoXCzooNWo=; b=it6Iri2nUroh52B4syPsg1aZRHGIdW4kC+1jv1NbkoYepXWJkPPWku7WPQsov3DL0WoRApzrHuF2hEhyJB8HdlArEH5VCFpSNKRTWPQUCok4RjzcLRHlhzL3Hym9phqNpSLPBhZiGwjUAsFAlMZdcuLfy2JGMgkPoB55jDqwHMjLZq/WZH6eIoZ1AInQdszbPRKSsdwxgb/GR0+0WZtgo6YNxk/oJHe5Vc7VBPPCunr3T3jgjR2Nv9jPw4F9XuPs57kHL9m0T8562bH0zLrzsBQH2MZnLuPuwhu9jNT5QYOEcbUsDe3THf7HggrZEyZxDyXr02md2ORl5Dk38u2IWw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=toshiba.co.jp; dmarc=pass action=none header.from=toshiba.co.jp; dkim=pass header.d=toshiba.co.jp; arc=none From: To: , , , , , , , CC: , , , Subject: RE: [PATCH v10 4/6] media: platform: visconti: add streaming interface for ISP parameters and status Thread-Topic: [PATCH v10 4/6] media: platform: visconti: add streaming interface for ISP parameters and status Thread-Index: AQHalfEQ7h8nj+5cmEGi8Q3dca7jobGxZ3oAgBCPblA= Date: Mon, 10 Jun 2024 23:54:58 +0000 X-TSB-HOP2: ON Message-ID: References: <20240424024215.1624299-1-yuji2.ishikawa@toshiba.co.jp> <20240424024215.1624299-5-yuji2.ishikawa@toshiba.co.jp> <72bf0aef-e9a1-416c-a537-61892fb8dfa3@xs4all.nl> In-Reply-To: <72bf0aef-e9a1-416c-a537-61892fb8dfa3@xs4all.nl> Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=toshiba.co.jp; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OSZPR01MB9427:EE_|TYWPR01MB11361:EE_ x-ms-office365-filtering-correlation-id: 2991eb4f-f26d-4296-ed09-08dc89a8bc3f x-ld-processed: f109924e-fb71-4ba0-b2cc-65dcdf6fbe4f,ExtAddr,ExtFwd x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230031|376005|366007|7416005|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?B?SDE2VU9pWThHdkJKTkhoNTlNemhKVm10dnNTYWREMHB2SVpGUU1ZYzJiVG5H?= =?utf-8?B?U21peTlicnk1Z0dqY3NUa3BDYnRKa0JtZ21lSzVCZlV6RVlrK3FtcThWVlpU?= =?utf-8?B?NmhQVCt2aDlydnhhNjFWUUhYY3YxdzIwdHowTlRUeWttS2luT2lWeUtRS0Nw?= =?utf-8?B?SUdvcy9RMmtWL2thRUhLTTRjWDRyY1dLL0Q5akRVdktkSDYxNGdQMC9zZHl1?= =?utf-8?B?ZWVJdXBvVmI2ZzJHbGVPK1ExcnU4ejU4VHczOEhkYUZOZUVDYVdQZlRoYWRT?= =?utf-8?B?RXZ6Q0FDWndzaEljYUFBaUdvdVFISWhHTHRIWWcvbVI4K2s0K3FDdkgzTHh2?= =?utf-8?B?c3h6ZVpKOWdwMVljelN6WEdycEdSL2hQTTJnUE91MmkyeVFnU0NWWU1WTHMy?= =?utf-8?B?VmxBcEdLbGVGSlJ1NlNack5PTWZZWUwxKytiSDlqU1YyWW5BZWszMXJ0L0wz?= =?utf-8?B?SEptanhFS05MdThJY3lXM0k5YmVZNXp1MjNBV2grdnBuSjJuZkl3NVJ6VVRD?= =?utf-8?B?WmtQYVhSVFU5Vmp4Sm41enJ0NEIvY24zNDJuVFh0RFc4Yy81c2J6dGJvOExh?= =?utf-8?B?R1J6VFo1K0dqc2hkL3NxOHB3VG5SbTJwQlFIWHVpbFBhczZ0cCtVNkdGMlJt?= =?utf-8?B?allUa1VCZWcxN0NwM0pRRDdCUXg0cnJRZFFLN1owbTRUcC9PZWs1QTR5TlFM?= =?utf-8?B?aUEvbzRjSTd6RnRTS0djcHpYbGp5OVBQY1lQeEdSa2hSMFBlTW92YkpUSkJL?= =?utf-8?B?Qk1QSlYvYjAxcnQyd3VOKzYrYjRRK0NORVZVWk52Yno0b2lUSFlmTEFERFps?= =?utf-8?B?dStPQ2htZy8wS1FvRlo3Y3FxQ2x6amdHdVhVdG1xTCtPYUVCM2UrMUcxODNH?= =?utf-8?B?ZlhuUzhYQndqMFA4MzNUNkE2cm1RSE1tczFidzZlUUR1MWdRWkJFTlJzV1Yz?= =?utf-8?B?dU1RbmFyVU5tL25JUFR3SkRoRnAvZk9qVzhLYUovb0RsNzhCd05LcU16OU1u?= =?utf-8?B?eW5ybVBvdTVKSE9kN2JnQUR1Y0NjYUs5UTVTWml1RjVlZFN1MzNrTml4aFVC?= =?utf-8?B?WHpoemJqUWhCTVRvZEpBVXdXNWw3NEFnTWEzeG02S2dhdUlIdVVZSm1XMlBr?= =?utf-8?B?Z0h5Ym9ZODArRTlhakhDMEl2TThMVzFVdjJsOWphcEJzWVJWMk1BVWthenJj?= =?utf-8?B?STdEcE5BVE94YWZnL2h0S2hrWGpsalpJSTljL0V4Q2tMY3FQNFNmR3pyRnVF?= =?utf-8?B?eU15amFJWGxtbGFuVksvVmcyQ29Rd25TUm41clg3QmQ3R1hIVVEzdXhXRlZ5?= =?utf-8?B?NTFxeTlFalh4Y0p4WTRGTlo3OUtyWHVBK21hZVh5alpPaUtjTDdKTFZjTU1w?= =?utf-8?B?NzltZk13OGdINHFHbFNIZXo4SHBmQittUnRzUkpjbWc2RnF5TVAydWg4TWRs?= =?utf-8?B?RGZaSVp6TjZLR29nNmhaRTFOeE15WDJnUUJJMVBaYTR0c3pYUFdaZFlzcmZn?= =?utf-8?B?dEhldnNRUmJlZDcwcWZxVHRXZTFZUi9HYWw2SnNsREVkUy9hNjJyNjdNWjNv?= =?utf-8?B?WC9vcnFUYWRINzkvTlVQaHgwM2J6eUsvK29ERVNzalVrSjRhYTZNRVhYUGJt?= =?utf-8?B?Z28vK3VwRkc4ODc3ZCtaMzZLYmZuQWlYQXF5QzNxcFpVeXJ5TmRkVVAwZzR2?= =?utf-8?B?RWhZYXBnTDNRM1BiQS9Zc0FqR3VxTDd3TEhhT3hOeHRRSFFmeDQ2MExVQVlx?= =?utf-8?B?aUMweEtEVVFwV2VMMVlWMVQrc3JOSDhsVTFUbTcrMWI5VXp1QmlFbDV4dThD?= =?utf-8?Q?aS+OCdDMb389TFnE7piDD8sJrSQVOkRRqEJ2c=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:ja;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OSZPR01MB9427.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376005)(366007)(7416005)(1800799015)(38070700009);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dTJDaGx4NGYrNWRYNW43V2tHWWpuWTRrR3RKbkpycTRRT0Ewc3FzbG4ya3l1?= =?utf-8?B?WXo2OTBxT3MwNzA1SHRQZlZ5d1JkeTNncDhQTHFNUVBmZnhVQmNUbVJDQ3FO?= =?utf-8?B?V25YdEJiTFNpZWMvdWNjVDNOVHlBc3EzV3FGTkczaGJ1ekJjbHhaamRPS2hX?= =?utf-8?B?NThFb2xyZ0NJNDBIYmFZb25NNWtuNHpCSnRVSnJPQnJIVmJQRFRRNlBPQkFX?= =?utf-8?B?QUw5ZEVUTkI1MDJoNWRMaW56cmk2azQ1MlBTUHpGUzBCbWdXQUJoOHc0UlMw?= =?utf-8?B?V1F2MFdDVXAyTjY3L2FGQ1lUUlEvTWxpZUZzUEdIT0REZzh1TGZJVldGY0hQ?= =?utf-8?B?UDdETjJsSjF6ZmxWQXVYdEhBMlE0RjlmNU1qSEh4V2lIZjg4R3RaVzc2MVVo?= =?utf-8?B?cEZONDhhUnIrMGxUUGMvcGxIZU9ucFBJdmljY1UzY3lxTTM5UFN5M3BrWUEy?= =?utf-8?B?ZXNXRHVuQklLUUg2dldHaEhVeXV5RjIvdGRpL0l5YXRZZVp3WktoTWRwY1gx?= =?utf-8?B?UHp0dWpuMnJIejBxZ0VmTjBtRGQzWmxldldyMnI5UldiUWlOaGdFRFNwczlJ?= =?utf-8?B?Q2dEWkw0OE9jUnQyMFBuZU9HdW9jd2J3M2ZGM1krWFdpd1FOaHFwMW9YYXFi?= =?utf-8?B?c0pFSkJUSm9aaVgxSkYxVFQrOEUxQ3dpYWVrSWE4Y1VDSkFUYVNPcnZ4WEVo?= =?utf-8?B?YlNMcTFidExualIzYmFyM3hPYkJSNmJWeVJaUnA0a2srOTVVbzNRa0wwWE5D?= =?utf-8?B?WHF3Zk5nTHR6M3RPTkduY2ZVbzdvTnBkYzQ4WlpPWmJsUnFoU20vVWJCTzY1?= =?utf-8?B?MjFJV01hZE1Va1ArZURlS2hiMGZOS0JJeFRZVGJwOUZkRTFJcS90RktjNlBH?= =?utf-8?B?NFFwRUo2OXZZVUxvOUppVWllcWZmZnBWTzhENEY0UGNkaHQvdDFiN2ZFaGVU?= =?utf-8?B?bGl0QmNERjRBUVpwTWRYRFhKRjVSWGthaldmcm9MNVFMWFozZTNxN3JGQjVK?= =?utf-8?B?QUYzR2wwYjRacmRqUDdHNGtLWjd6anpadUtXdFhmVFgvQU5JZlVhamV0NGlL?= =?utf-8?B?aFpzZ3o5TEZVanA5YVhXeWdPVFVGZWM0emFsRE10TmVqM0EvbmJTWkVKdXEx?= =?utf-8?B?RWJPcThFWEMvU01tY3RGVkx2U1p2UUFEaHZUbTdhZ1RIUGdjVmNQcS9SdEhN?= =?utf-8?B?akc4dlo3THl3S2VuMWkwS2NCVWxiNW1IcVlnZWVDT0xvOGpySEx1VWUzWVBU?= =?utf-8?B?eWRma2pLYmlVSkViMHNUM1pISXU0TXBuOFpJZ2RwZWovM0dHaEZicmx2MGJn?= =?utf-8?B?SWxaSStnSEpPN3VFcCt1TkYxM3JBUFJhY3ZySHpKZ1htc0h5bzE3ZEZOcGJD?= =?utf-8?B?Rk9UUkF6UnVabTdXMllqSWpTVE13ZUlrUkNNZXJ2MG1jOTVnbnp2dUcwMGR0?= =?utf-8?B?b0pWOXVRTWpMUExMSTF0eHRTUHFkS1BBak9nTzdJTEZWTU5La2N4ZEs0VThp?= =?utf-8?B?a2Y4ZzZGaW9RaFQxNXJoSnhUbkdMTXBKMWU3MTRQUTROSzhUSEZkWU1ydVVa?= =?utf-8?B?aWs3NEZJWEI4aXZRZXV2cEJLNWdVM0xxV1ZPU1dpaWtiMUdPWlA0dm9tVXky?= =?utf-8?B?YzVtTy9FZ0svZjF2Zlh0cjdZT0FXUHFwSGxzazRoKzM1Yy9LaFJaT2lJMzUx?= =?utf-8?B?ajM0eW52S0hoUmNwWjB4bjVyZ0VVZ0NRcnZ2c3FoWVFMT3IvZDE5Y2RnNlJ3?= =?utf-8?B?OFZ2ekNNbGVWK3RWbUhDTXR5MURNQ3p0VnlKdWNreGRodExDcVlvMDRpSWgw?= =?utf-8?B?UWNBMXFZeTBJM01pZTZKbDlkOEQxb1pGVE1GYzk4QW5MUm5ad1k2WUpuMXNB?= =?utf-8?B?SExpWnZoWGttM1FnZTRYWTV1Q3V4dDl5bzhwMDFHQnU1MDFDMWFrU1p0aHlT?= =?utf-8?B?aTZoNHo2bDFLNVNkb0xLTEJ4OXdGZ2hiRE1vVjJpaWptY25Yd1RyVGd6NG45?= =?utf-8?B?N1c4dkZaaEdSRVVTekZUK2lTYjFRRFJUdUZpaEdTTmpJTGU0RXB1bVdhUVht?= =?utf-8?B?TTB0aU0vaDBvQTY4TE91Zjl5SkhXUmpzdDNuUHQxR2k5WUp3U3VVbm43RjBB?= =?utf-8?B?WjFBcGpEam9GWXNCVGUyb2oxTWc1SEpDTG5RZElCR1lXK2ZtSDZuQjhseG5k?= =?utf-8?B?V3c9PQ==?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: toshiba.co.jp X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OSZPR01MB9427.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2991eb4f-f26d-4296-ed09-08dc89a8bc3f X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2024 23:54:58.5468 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f109924e-fb71-4ba0-b2cc-65dcdf6fbe4f X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: +WQNw+76Eeg24vLA3500uQ2W7kDYAkQSR+i1Xt+U+PkoNTYzoJytc1nt6FrXD8TRrX8Tp96YQFwpVjywlwd3uM9AhMGex1ZBBxIpzCt1dO0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWPR01MB11361 SGVsbG8gSGFucywNCg0KVGhhbmsgeW91IGZvciB5b3VyIHJldmlldy4NCg0KPiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBIYW5zIFZlcmt1aWwgPGh2ZXJrdWlsQHhzNGFsbC5u bD4NCj4gU2VudDogRnJpZGF5LCBNYXkgMzEsIDIwMjQgODowMCBQTQ0KPiBUbzogaXNoaWthd2Eg eXVqaSjnn7Plt50g5oKg5Y+4IOKXi++8su+8pO+8o+KWoe+8oe+8qe+8tO+8o+KXi++8pe+8oemW iykNCj4gPHl1amkyLmlzaGlrYXdhQHRvc2hpYmEuY28uanA+OyBMYXVyZW50IFBpbmNoYXJ0DQo+ IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+OyBNYXVybyBDYXJ2YWxobyBDaGVo YWINCj4gPG1jaGVoYWJAa2VybmVsLm9yZz47IFJvYiBIZXJyaW5nIDxyb2JoQGtlcm5lbC5vcmc+ OyBLcnp5c3p0b2YgS296bG93c2tpDQo+IDxrcnprK2R0QGtlcm5lbC5vcmc+OyBDb25vciBEb29s ZXkgPGNvbm9yK2R0QGtlcm5lbC5vcmc+OyBSYWZhZWwgSiAuDQo+IFd5c29ja2kgPHJhZmFlbC5q Lnd5c29ja2lAaW50ZWwuY29tPjsgaXdhbWF0c3Ugbm9idWhpcm8o5bKp5p2+IOS/oea0iyDil4vv vKTvvKkNCj4g77y077yj4pah77yk77yp77y04peL77yv77yz77y0KSA8bm9idWhpcm8xLml3YW1h dHN1QHRvc2hpYmEuY28uanA+DQo+IENjOiBsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmc7IGRl dmljZXRyZWVAdmdlci5rZXJuZWwub3JnOw0KPiBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJh ZGVhZC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcNCj4gU3ViamVjdDogUmU6IFtQ QVRDSCB2MTAgNC82XSBtZWRpYTogcGxhdGZvcm06IHZpc2NvbnRpOiBhZGQgc3RyZWFtaW5nDQo+ IGludGVyZmFjZSBmb3IgSVNQIHBhcmFtZXRlcnMgYW5kIHN0YXR1cw0KPiANCj4gSGkgWXVqaSwN Cj4gDQo+IFNvbWUgc21hbGwgY29tbWVudHM6DQo+IA0KPiBPbiAyNC8wNC8yMDI0IDA0OjQyLCBZ dWppIElzaGlrYXdhIHdyb3RlOg0KPiA+IEFkZCBzdXBwb3J0IHRvIEltYWdlIFNpZ25hbCBQcm9j ZXNzb3JzIG9mIFZpc2NvbnRpJ3MgVmlkZW8gSW5wdXQgSW50ZXJmYWNlLg0KPiA+IFRoaXMgcGF0 Y2ggYWRkcyB0d28gc3RyZWFtaW5nIGludGVyZmFjZXM7IG9uZSBmb3IgcGFzc2luZyBwYXJhbWV0 ZXJzDQo+ID4gdG8gdGhlIHNpZ25hbCBwcm9jZXNzb3IsIHRoZSBvdGhlciBmb3IgcmVjZWl2aW5n IHN0YXR1cy4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFl1amkgSXNoaWthd2EgPHl1amkyLmlz aGlrYXdhQHRvc2hpYmEuY28uanA+DQo+ID4gLS0tDQo+ID4gQ2hhbmdlbG9nIHYyOg0KPiA+IC0g UmVzZW5kIHYxIGJlY2F1c2UgYSBwYXRjaCBleGNlZWRzIHNpemUgbGltaXQuDQo+ID4NCj4gPiBD aGFuZ2Vsb2cgdjM6DQo+ID4gLSBBZGFwdGVkIHRvIG1lZGlhIGNvbnRyb2wgZnJhbWV3b3JrDQo+ ID4gLSBJbnRyb2R1Y2VkIElTUCBzdWJkZXZpY2UsIGNhcHR1cmUgZGV2aWNlDQo+ID4gLSBSZW1v dmUgcHJpdmF0ZSBJT0NUTHMgYW5kIGFkZCB2ZW5kb3Igc3BlY2lmaWMgVjRMMiBjb250cm9scw0K PiA+IC0gQ2hhbmdlIGZ1bmN0aW9uIG5hbWUgYXZvaWRpbmcgY2FtZWxjYXNlIGFuZCB1cHBlcmNh c2UgbGV0dGVycw0KPiA+DQo+ID4gQ2hhbmdlbG9nIHY0Og0KPiA+IC0gU3BsaXQgcGF0Y2hlcyBi ZWNhdXNlIHRoZSB2MyBwYXRjaCBleGNlZWRzIHNpemUgbGltaXQNCj4gPiAtIFN0b3AgdXNpbmcg SUQgbnVtYmVyIHRvIGlkZW50aWZ5IGRyaXZlciBpbnN0YW5jZToNCj4gPiAgIC0gVXNlIGR5bmFt aWNhbGx5IGFsbG9jYXRlZCBzdHJ1Y3R1cmUgdG8gaG9sZCBIVyBzcGVjaWZpYyBjb250ZXh0LA0K PiA+ICAgICBpbnN0ZWFkIG9mIHN0YXRpYyBvbmUuDQo+ID4gICAtIENhbGwgSFcgbGF5ZXIgZnVu Y3Rpb25zIHdpdGggdGhlIGNvbnRleHQgc3RydWN0dXJlIGluc3RlYWQgb2YgSUQNCj4gPiBudW1i ZXINCj4gPg0KPiA+IENoYW5nZWxvZyB2NToNCj4gPiAtIG5vIGNoYW5nZQ0KPiA+DQo+ID4gQ2hh bmdlbG9nIHY2Og0KPiA+IC0gcmVtb3ZlIHVudXNlZCBtYWNyb3MNCj4gPiAtIHJlbW92ZWQgaHdk XyBhbmQgSFdEXyBwcmVmaXgNCj4gPiAtIHVwZGF0ZSBzb3VyY2UgY29kZSBkb2N1bWVudGF0aW9u DQo+ID4gLSBTdWdnZXN0aW9uIGZyb20gSGFucyBWZXJrdWlsDQo+ID4gICAtIHBvaW50ZXIgdG8g dXNlcmxhbmQgbWVtb3J5IGlzIHJlbW92ZWQgZnJvbSB1QVBJIGFyZ3VtZW50cw0KPiA+ICAgICAt IHN0eWxlIG9mIHN0cnVjdHVyZSBpcyBub3cgIm5lc3RlZCIgaW5zdGVhZCBvZiAiY2hhaW5lZCBi eSBwb2ludGVyIjsNCj4gPiAgIC0gdXNlIGRpdjY0X3U2NCBmb3IgNjRiaXQgZGl2aXNpb24NCj4g PiAgIC0gdmVuZG9yIHNwZWNpZmljIGNvbnRyb2xzIHN1cHBvcnQgVFJZX0VYVF9DVFJMUw0KPiA+ ICAgLSBhZGQgUkVBRF9PTkxZIGZsYWcgdG8gR0VUX0NBTElCUkFUSU9OX1NUQVRVUyBjb250cm9s IGFuZCBzaW1pbGFyDQo+IG9uZXMNCj4gPiAgIC0gaHVtYW4gZnJpZW5kcnkgY29udHJvbCBuYW1l cyBmb3IgdmVuZG9yIHNwZWNpZmljIGNvbnRyb2xzDQo+ID4gICAtIGFkZCBpbml0aWFsIHZhbHVl IHRvIGVhY2ggdmVuZG9yIHNwZWNpZmljIGNvbnRyb2wNCj4gPiAgIC0gR0VUX0xBU1RfQ0FQVFVS RV9TVEFUVVMgY29udHJvbCBpcyB1cGRhdGVkIGFzeW5jbm91c2x5IGZyb20NCj4gd29ya3F1ZXVl DQo+ID4gICAtIHJlbW92ZSBFWEVDVVRFX09OX1dSSVRFIGZsYWcgb2YgdmVuZG9yIHNwZWNpZmlj IGNvbnRyb2wNCj4gPiAgIC0gdUFQSTogcmV0dXJuIHZhbHVlIG9mIEdFVF9DQUxJQlJBVElPTl9T VEFUVVMgZm9sbG93cyBjb21tb24gcnVsZXMNCj4gb2YgZXJyb3IgY29kZXMNCj4gPiAgIC0gYXBw bGllZCB2NGwyLWNvbXBsaWFuY2UNCj4gPiAtIFN1Z2dlc3Rpb24gZnJvbSBTYWthcmkgQWlsdXMN Cj4gPiAgIC0gdXNlIGRpdjY0X3U2NCBmb3IgNjRiaXQgZGl2aXNpb24NCj4gPiAgIC0gdXBkYXRl IGNvcHlyaWdodCdzIHllYXINCj4gPiAgIC0gcmVtb3ZlIHJlZGFuZHVudCBjYXN0DQo+ID4gICAt IHVzZSBib29sIGluc3RlYWQgb2YgSFdEX1ZJSUZfRU5BQkxFL0RJU0FCTEUNCj4gPiAgIC0gc2lt cGxpZnkgY29tcGFyaXNvbiB0byAwDQo+ID4gICAtIHNpbXBsaWZ5IHN0YXRlbWVudHMgd2l0aCB0 cmlncmFtIG9wZXJhdG9yDQo+ID4gICAtIHJlbW92ZSByZWR1bmRhbnQgbG9jYWwgdmFyaWFibGVz DQo+ID4gICAtIHVzZSBnZW5lcmFsIGludGVnZXIgdHlwZXMgaW5zdGVhZCBvZiB1MzIvczMyDQo+ ID4gLSBTdWdnZXN0aW9uIGZyb20gTGF1cmVudCBQaW5jaGFydA0KPiA+ICAgLSBtb3ZlZCBWSUlG IGRyaXZlciB0byBkcml2ZXIvcGxhdGZvcm0vdG9zaGliYS92aXNjb250aQ0KPiA+ICAgLSBjaGFu Z2UgcmVnaXN0ZXIgYWNjZXNzOiBzdHJ1Y3Qtc3R5bGUgdG8gbWFjcm8tc3R5bGUNCj4gPiAgIC0g cmVtb3ZlIHVudXNlZCB0eXBlIGRlZmluaXRpb25zDQo+ID4gICAtIGRlZmluZSBlbnVtcyBpbnN0 ZWFkIG9mIHN1Y2Nlc3NpdmUgbWFjcm8gY29uc3RhbnRzDQo+ID4gICAtIHJlbW92ZSByZWR1bmRh bnQgcGFyZW50aGVzaXMgb2YgbWFjcm8gY29uc3RhbnQNCj4gPiAgIC0gZW1iZWQgc3RydWN0IGh3 ZF9yZXMgaW50byBzdHJ1Y3QgdmlpZl9kZXZpY2UNCj4gPiAgIC0gdXNlIHh4eF9kbWEgaW5zdGVh ZCBvZiB4eHhfcGFkZHIgZm9yIHZhcmlhYmxlIG5hbWVzIG9mIElPVkENCj4gPiAgIC0gbGl0ZXJh bCB2YWx1ZToganVzdCAwIGluc3RlYWQgb2YgMHgwDQo+ID4gICAtIHVzZSBsaXRlcmFsIDEgb3Ig MCBpbnN0ZWFkIG9mIEhXRF9WSUlGX0VOQUJMRSwgRElTQUJMRSBmb3IgcmVnaXN0ZXINCj4gYWNj ZXNzDQo+ID4gICAtIHVzZSB0cnVlIG9yIGZhbHNlIGluc3RlYWQgb2YgSFdEX1ZJSUZfRU5BQkxF LCBESVNBQkxFIGZvciBmdW5jdGlvbg0KPiBjYWxscw0KPiA+ICAgLSB1QVBJOiByZXR1cm4gdmFs dWUgb2YgR0VUX0NBTElCUkFUSU9OX1NUQVRVUyBmb2xsb3dzIGNvbW1vbiBydWxlcw0KPiA+IG9m IGVycm9yIGNvZGVzDQo+ID4NCj4gPiBDaGFuZ2Vsb2cgdjc6DQo+ID4gLSByZW1vdmUgdW51c2Vk IHZhcmlhYmxlcw0KPiA+IC0gc3BsaXQgbG9uZyBzdGF0ZW1lbnRzIHdoaWNoIGhhdmUgbXVsdGlw bGUgbG9naWNhbC1PUiBhbmQgdHJpZ3JhbQ0KPiA+IG9wZXJhdG9ycw0KPiA+DQo+ID4gQ2hhbmdl bG9nIHY4Og0KPiA+IC0gZGVmaW5lIGNvbnN0YW50IFY0TDJfQ1RSTF9UWVBFX1ZJU0NPTlRJX0lT UCBmb3IgZGF0YXR5cGUNCj4gPiAgIG9mIFZpc2NvbnRpIHNwZWNpZmljIGNvbnRyb2xzDQo+ID4g LSBTdWdnZXN0aW9uIGZyb20gSGFucyBWZXJrdWlsDQo+ID4gICAtIHJlbW92ZSBwcl9pbmZvKCkN Cj4gPiAgIC0gdXNlIHBtX3J1bnRpbWVfZ2V0X2lmX2luX3VzZSgpIHRvIGdldCBwb3dlciBzdGF0 dXMNCj4gPg0KPiA+IENoYW5nZWxvZyB2OToNCj4gPiAtIGZpeCB3YXJuaW5nIGZvciBjYXN0IGJl dHdlZW4gcHRyIGFuZCBkbWFfYWRkcl90DQo+ID4NCj4gPiBDaGFuZ2Vsb2cgdjEwOg0KPiA+IC0g dXNlIHBhcmFtZXRlciBidWZmZXIgaW5zdGVhZCBvZiB2ZW5kb3Igc3BlY2lmaWMgY29tcG91bmQg Y29udHJvbHMNCj4gPiAgIC0gYWRkIHZpaWZfcGFyYW1zIGludGVyZmFjZSBmb3IgcGFzc2luZyBJ U1AgcGFyYW1ldGVycw0KPiA+ICAgLSBhZGQgdmlpZl9zdGF0cyBpbnRlcmZhY2UgZm9yIHBhc3Np bmcgSVNQIHN0YXR1cw0KPiA+IC0gcmVtb3ZlIHBhcmFtZXRlciB2YWxpZGF0aW9uIHJvdXRpbmU7 IG1vdmVkIHRvIHVzZXJsYW5kIGxpYnJhcnkNCj4gPg0KPiA+ICAuLi4vbWVkaWEvcGxhdGZvcm0v dG9zaGliYS92aXNjb250aS9NYWtlZmlsZSAgfCAgICAyICstDQo+ID4gIC4uLi9tZWRpYS9wbGF0 Zm9ybS90b3NoaWJhL3Zpc2NvbnRpL3ZpaWYuYyAgICB8ICAgMjggKy0NCj4gPiAgLi4uL3BsYXRm b3JtL3Rvc2hpYmEvdmlzY29udGkvdmlpZl9pc3AuYyAgICAgIHwgICAgNyArDQo+ID4gIC4uLi9w bGF0Zm9ybS90b3NoaWJhL3Zpc2NvbnRpL3ZpaWZfcGFyYW1zLmMgICB8IDIwMjYNCj4gKysrKysr KysrKysrKysrKysNCj4gPiAgLi4uL3BsYXRmb3JtL3Rvc2hpYmEvdmlzY29udGkvdmlpZl9wYXJh bXMuaCAgIHwgICAxOSArDQo+ID4gIC4uLi9wbGF0Zm9ybS90b3NoaWJhL3Zpc2NvbnRpL3ZpaWZf c3RhdHMuYyAgICB8ICAzMzQgKysrDQo+ID4gIC4uLi9wbGF0Zm9ybS90b3NoaWJhL3Zpc2NvbnRp L3ZpaWZfc3RhdHMuaCAgICB8ICAgMTQgKw0KPiA+ICA3IGZpbGVzIGNoYW5nZWQsIDI0MjcgaW5z ZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkgIGNyZWF0ZSBtb2RlDQo+ID4gMTAwNjQ0IGRyaXZl cnMvbWVkaWEvcGxhdGZvcm0vdG9zaGliYS92aXNjb250aS92aWlmX3BhcmFtcy5jDQo+ID4gIGNy ZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdG9zaGliYS92aXNj b250aS92aWlmX3BhcmFtcy5oDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IGRyaXZlcnMv bWVkaWEvcGxhdGZvcm0vdG9zaGliYS92aXNjb250aS92aWlmX3N0YXRzLmMNCj4gPiAgY3JlYXRl IG1vZGUgMTAwNjQ0DQo+ID4gZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS90b3NoaWJhL3Zpc2NvbnRp L3ZpaWZfc3RhdHMuaA0KPiA+DQo+IA0KPiA8c25pcD4NCj4gDQo+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWVkaWEvcGxhdGZvcm0vdG9zaGliYS92aXNjb250aS92aWlmX3BhcmFtcy5jDQo+ID4g Yi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Rvc2hpYmEvdmlzY29udGkvdmlpZl9wYXJhbXMuYw0K PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uNTE3MGQzNzFj Mg0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Rv c2hpYmEvdmlzY29udGkvdmlpZl9wYXJhbXMuYw0KPiA+IEBAIC0wLDAgKzEsMjAyNiBAQA0KPiAN Cj4gPHNuaXA+DQo+IA0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHZpaWZfbDFfaGRyY19jb25m aWcNCj4gPiArCWRlZnZhbF9sMV9zZXRfaGRyYyA9IHsgLmVuYWJsZSA9IDEsDQo+ID4gKwkJCSAg ICAgICAucGFyYW0gPSB7DQo+ID4gKwkJCQkgICAgICAgLmhkcmNfcmF0aW8gPSAweDBFICsNCj4g VklJRl9MMV9IRFJDX1JBVElPX09GRlNFVCwNCj4gPiArCQkJCSAgICAgICAuaGRyY19wdF9yYXRp byA9IDcsDQo+ID4gKwkJCQkgICAgICAgLmhkcmNfcHRfc2F0ID0gMHhGRkMwLA0KPiA+ICsJCQkJ ICAgICAgIC5oZHJjX3RuX3R5cGUgPSAxLA0KPiA+ICsJCQkgICAgICAgfSB9Ow0KPiANCj4gU3Ry YW5nZSBsYXlvdXQsIGNhbiB5b3Ugd3JpdGUgdGhpcyBsaWtlIGFsbW9zdCBhbGwgb3RoZXIgc3Ry dWN0cz8NCj4gDQo+IHN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlpZl9sMV9oZHJjX2NvbmZpZyBkZWZ2 YWxfbDFfc2V0X2hkcmMgPSB7DQo+IAkuZW5hYmxlID0gMSwNCj4gICAgICAgICAucGFyYW0gPSB7 DQo+IAkgICAgICAgLmhkcmNfcmF0aW8gPSAweDBFICsgVklJRl9MMV9IRFJDX1JBVElPX09GRlNF VCwNCj4gCSAgICAgICAuaGRyY19wdF9yYXRpbyA9IDcsDQo+IAkgICAgICAgLmhkcmNfcHRfc2F0 ID0gMHhGRkMwLA0KPiAJICAgICAgIC5oZHJjX3RuX3R5cGUgPSAxLA0KPiAJfQ0KPiB9Ow0KPiAN Cg0KSSdsbCBmaXggdGhpcyBzdHJhbmdlIGxheW91dCBhcyB3ZWxsIGFzIG90aGVycy4NCkFsc28g SSdsbCBjaGVjayBzZXR0aW5ncyBvZiBjbGFuZy1mb3JtYXQuDQoNCj4gPiArDQo+ID4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgdmlpZl9sMV9oZHJjX2x0bV9jb25maWcgZGVmdmFsX2wxX3NldF9oZHJj X2x0bSA9IHsNCj4gPiArCS50bnBfbWF4ID0gMHgzRkZGRkYsDQo+ID4gKwkudG5wX21hZyA9IDB4 NDAsDQo+ID4gKwkudG5wX2ZpbCA9IHsgMHg4OCwgMHg4NCwgMHg3QSwgMHg2QSwgMHg1NCB9LCB9 Ow0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCB2aWlmX2wxX2dhbW1hX2NvbmZpZyBk ZWZ2YWxfbDFfc2V0X2dhbW1hID0gew0KPiA+ICsJLmVuYWJsZSA9IDEsDQo+ID4gKwkucGFyYW0g PSB7DQo+ID4gKwkJLmdhbV9wID0gew0KPiA+ICsJCQkweDAyRiwgMHgwMUIsIDB4MDJBLCAweDAy MywgMHgwMjAsIDB4MDM3LCAweDAzMSwNCj4gMHgwNTcsIDB4MDRELCAweDA4OCwNCj4gPiArCQkJ MHgwNzgsIDB4MEQ2LCAweDBCRCwgMHgxNEYsIDB4MTJBLCAweDIwRCwgMHgxRDMsDQo+IDB4MUFC LCAweDE4RCwgMHgyREMsDQo+ID4gKwkJCTB4MjlFLCAweDI3MSwgMHg0N0MsIDB4NDFCLCAweDNE NCwgMHg3MEEsIDB4NjcyLA0KPiAweDYwMSwgMHhCMEMsIDB4QTFELA0KPiA+ICsJCQkweDk2Qywg MHg4RTIsIDB4ODc0LCAweEZERCwgMHhFQzksIDB4REYyLCAweEQ0MiwNCj4gMHhDQjEsIDB4QzM1 LCAweEJDOSwNCj4gPiArCQkJMHhCNkEsIDB4QjE2LCAweEFDQiwgMHhBODZ9LA0KPiA+ICsJCS5i bGthZGogPSAweDEwMDAsDQo+ID4gKwl9LA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGNv bnN0IHN0cnVjdCB2aWlmX2wxX2ltZ19xdWFsaXR5X2FkanVzdG1lbnRfY29uZmlnDQo+IGRlZnZh bF9sMV9zZXRfaW1nX3F1YWxpdHlfYWRqdXN0bWVudCA9IHsNCj4gPiArCS5lbmFibGUgPSAwLA0K PiA+ICsJLmNvZWZfY2IgPSAweDkwNzgsDQo+ID4gKwkuY29lZl9jciA9IDB4QjY5OSwNCj4gPiAr CS5icmlnaHRuZXNzID0gMCwNCj4gPiArCS5saW5lYXJfY29udHJhc3QgPSAxMjgsDQo+ID4gK307 DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHZpaWZfbDFfYXZnX2x1bV9nZW5lcmF0 aW9uX2NvbmZpZw0KPiBkZWZ2YWxfbDFfc2V0X2F2Z19sdW1fZ2VuZXJhdGlvbiA9IHsNCj4gPiAr CS5lbmFibGUgPSAwDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHZp aWZfbDJfdW5kaXN0X2NvbmZpZyBkZWZ2YWxfbDJfc2V0X3VuZGlzdCA9IHsgLnBhcmFtID0gew0K PiA+ICsNCj4gCSAgIC50aHJvdWdoX21vZGUgPSAxLA0KPiA+ICsNCj4gCSAgIC5yb2lfbW9kZSA9 IHsgMCwgMCB9LA0KPiA+ICsNCj4gCSAgIC5ncmlkX25vZGVfbnVtX2ggPSAweDEwLA0KPiA+ICsN Cj4gCSAgIC5ncmlkX25vZGVfbnVtX3YgPSAweDEwLA0KPiA+ICsJCQkJCQkJCSAgIH0gfTsNCj4g DQo+IEFub3RoZXIgd2VpcmQgbGF5b3V0Lg0KPiANCg0KSSdsbCBmaXggdGhlIGxheW91dC4NCg0K PiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCB2aWlmX2wyX3JvaV9jb25maWcgZGVmdmFs X2wyX3NldF9yb2kgPSB7DQo+ID4gKwkucm9pX251bSA9IDEsDQo+ID4gKwkucm9pX3NjYWxlID0g eyA2NTUzNiwgNjU1MzYgfSwNCj4gPiArCS5yb2lfc2NhbGVfaW52ID0geyA2NTUzNiwgNjU1MzYg fSwNCj4gPiArCS5jb3JyZWN0ZWRfd29fc2NhbGVfaHNpemUgPSB7IDB4ODAsIDB4ODAgfSwNCj4g PiArCS5jb3JyZWN0ZWRfaHNpemUgPSB7IDB4ODAsIDB4ODAgfSwNCj4gPiArCS5jb3JyZWN0ZWRf d29fc2NhbGVfdnNpemUgPSB7IDB4ODAsIDB4ODAgfSwNCj4gPiArCS5jb3JyZWN0ZWRfdnNpemUg PSB7IDB4ODAsIDB4ODAgfSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgdmlpZl9sMl9nYW1tYV9jb25maWcgZGVmdmFsX2wyX3NldF9nYW1tYSA9IHsgMCB9Ow0KPiA+ ICsNCj4gPiArc3RhdGljIHZvaWQgdmlpZl9hcHBseV9kZWZhdWx0X3BhcmFtZXRlcihzdHJ1Y3Qg dmlpZl9kZXZpY2UNCj4gPiArKnZpaWZfZGV2KSB7DQo+ID4gKwl2aWlmX2wxX3NldF9pbnB1dF9t b2RlKHZpaWZfZGV2LCAmZGVmdmFsX2wxX3NldF9pbnB1dF9tb2RlKTsNCj4gPiArCXZpaWZfbDFf c2V0X3JnYl90b195X2NvZWYodmlpZl9kZXYsICZkZWZ2YWxfbDFfc2V0X3JnYl90b195X2NvZWYp Ow0KPiA+ICsJdmlpZl9sMV9zZXRfYWdfbW9kZSh2aWlmX2RldiwgJmRlZnZhbF9sMV9zZXRfYWdf bW9kZSk7DQo+ID4gKwl2aWlmX2wxX3NldF9hZyh2aWlmX2RldiwgJmRlZnZhbF9sMV9zZXRfYWcp Ow0KPiA+ICsJdmlpZl9sMV9zZXRfaGRyZSh2aWlmX2RldiwgJmRlZnZhbF9sMV9zZXRfaGRyZSk7 DQo+ID4gKwl2aWlmX2wxX3NldF9pbWdfZXh0cmFjdGlvbih2aWlmX2RldiwgJmRlZnZhbF9sMV9z ZXRfaW1nX2V4dHJhY3Rpb24pOw0KPiA+ICsJdmlpZl9sMV9zZXRfZHBjKHZpaWZfZGV2LCAmZGVm dmFsX2wxX3NldF9kcGMpOw0KPiA+ICsJdmlpZl9sMV9zZXRfcHJlc2V0X3doaXRlX2JhbGFuY2Uo dmlpZl9kZXYsDQo+ICZkZWZ2YWxfbDFfc2V0X3ByZXNldF93aGl0ZV9iYWxhbmNlKTsNCj4gPiAr CXZpaWZfbDFfc2V0X3Jhd19jb2xvcl9ub2lzZV9yZWR1Y3Rpb24odmlpZl9kZXYsDQo+ICZkZWZ2 YWxfbDFfc2V0X3Jhd19jb2xvcl9ub2lzZV9yZWR1Y3Rpb24pOw0KPiA+ICsJdmlpZl9sMV9zZXRf aGRycyh2aWlmX2RldiwgJmRlZnZhbF9sMV9zZXRfaGRycyk7DQo+ID4gKwl2aWlmX2wxX3NldF9i bGFja19sZXZlbF9jb3JyZWN0aW9uKHZpaWZfZGV2LA0KPiAmZGVmdmFsX2wxX3NldF9ibGFja19s ZXZlbF9jb3JyZWN0aW9uKTsNCj4gPiArCXZpaWZfbDFfc2V0X2xzYyh2aWlmX2RldiwgJmRlZnZh bF9sMV9zZXRfbHNjKTsNCj4gPiArCXZpaWZfbDFfc2V0X21haW5fcHJvY2Vzcyh2aWlmX2Rldiwg JmRlZnZhbF9sMV9zZXRfbWFpbl9wcm9jZXNzKTsNCj4gPiArCXZpaWZfbDFfc2V0X2F3Yih2aWlm X2RldiwgJmRlZnZhbF9sMV9zZXRfYXdiKTsNCj4gPiArCXZpaWZfbDFfbG9ja19hd2JfZ2Fpbih2 aWlmX2RldiwgJmRlZnZhbF9sMV9sb2NrX2F3Yl9nYWluKTsNCj4gPiArCXZpaWZfbDFfc2V0X2hk cmModmlpZl9kZXYsICZkZWZ2YWxfbDFfc2V0X2hkcmMpOw0KPiA+ICsJdmlpZl9sMV9zZXRfaGRy Y19sdG0odmlpZl9kZXYsICZkZWZ2YWxfbDFfc2V0X2hkcmNfbHRtKTsNCj4gPiArCXZpaWZfbDFf c2V0X2dhbW1hKHZpaWZfZGV2LCAmZGVmdmFsX2wxX3NldF9nYW1tYSk7DQo+ID4gKwl2aWlmX2wx X3NldF9pbWdfcXVhbGl0eV9hZGp1c3RtZW50KHZpaWZfZGV2LA0KPiAmZGVmdmFsX2wxX3NldF9p bWdfcXVhbGl0eV9hZGp1c3RtZW50KTsNCj4gPiArCXZpaWZfbDFfc2V0X2F2Z19sdW1fZ2VuZXJh dGlvbih2aWlmX2RldiwNCj4gJmRlZnZhbF9sMV9zZXRfYXZnX2x1bV9nZW5lcmF0aW9uKTsNCj4g PiArCXZpaWZfbDJfc2V0X3VuZGlzdCh2aWlmX2RldiwgJmRlZnZhbF9sMl9zZXRfdW5kaXN0KTsN Cj4gPiArCXZpaWZfbDJfc2V0X3JvaV93cmFwKHZpaWZfZGV2LCAmZGVmdmFsX2wyX3NldF9yb2kp Ow0KPiA+ICsJdmlpZl9sMl9zZXRfZ2FtbWEodmlpZl9kZXYsIENBUFRVUkVfUEFUSF9NQUlOX1BP U1QwLA0KPiAmZGVmdmFsX2wyX3NldF9nYW1tYSk7DQo+ID4gKwl2aWlmX2wyX3NldF9nYW1tYSh2 aWlmX2RldiwgQ0FQVFVSRV9QQVRIX01BSU5fUE9TVDEsDQo+ID4gKyZkZWZ2YWxfbDJfc2V0X2dh bW1hKTsgfQ0KPiA+ICsNCj4gPg0KPiArLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQ0KPiA9PT09PT09PT09PT09PT09PT09PQ0KPiA+ICs9PT09Ki8NCj4g PiArLyogcGFyYW1ldGVyIGJ1ZmZlciBzdHJlYW1pbmcgaW50ZXJmYWNlICovDQo+ID4NCj4gKy8q PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPT09PT09 PT09PT09PT09PT09PT0NCj4gPiArPT09PSovDQo+ID4gK3N0cnVjdCB2aWlmX2J1ZmZlciB7DQo+ ID4gKwlzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyIHZiOw0KPiA+ICsJc3RydWN0IGxpc3RfaGVhZCBx dWV1ZTsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBib29sIHZpaWZfcGFyYW1zX2dldF9i dWZmZXIoc3RydWN0IHBhcmFtc19kZXYgKnBhcmFtc19kZXYsIHN0cnVjdA0KPiB2aWlmX2J1ZmZl ciAqKmJ1ZiwNCj4gPiArCQkJCSAgIHN0cnVjdCB2aXNjb250aV92aWlmX2lzcF9jb25maWcgKipj ZmcpIHsNCj4gPiArCWlmIChsaXN0X2VtcHR5KCZwYXJhbXNfZGV2LT5wYXJhbXNfcXVldWUpKQ0K PiA+ICsJCXJldHVybiBmYWxzZTsNCj4gPiArDQo+ID4gKwkqYnVmID0gbGlzdF9maXJzdF9lbnRy eSgmcGFyYW1zX2Rldi0+cGFyYW1zX3F1ZXVlLCBzdHJ1Y3QNCj4gdmlpZl9idWZmZXIsIHF1ZXVl KTsNCj4gPiArCSpjZmcgPSB2YjJfcGxhbmVfdmFkZHIoJigqYnVmKS0+dmIudmIyX2J1ZiwgMCk7 DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHRydWU7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBp bnQgdmlpZl9hcHBseV9xdWV1ZWRfcGFyYW1ldGVyKHN0cnVjdCB2aWlmX2RldmljZSAqdmlpZl9k ZXYsDQo+ID4gK2Jvb2wgaW5pdGlhbF9jZmcpIHsNCj4gPiArCXN0cnVjdCBwYXJhbXNfZGV2ICpw YXJhbXNfZGV2ID0gJnZpaWZfZGV2LT5wYXJhbXNfZGV2Ow0KPiA+ICsJc3RydWN0IHZpc2NvbnRp X3ZpaWZfaXNwX2NvbmZpZyAqbmV3X3BhcmFtczsNCj4gPiArCXN0cnVjdCB2aWlmX2J1ZmZlciAq Y3VyX2J1ZjsNCj4gPiArCWludCByZXQgPSAwOw0KPiA+ICsNCj4gPiArCXNwaW5fbG9jaygmcGFy YW1zX2Rldi0+cGFyYW1zX2xvY2spOw0KPiA+ICsNCj4gPiArCWlmICghdmlpZl9wYXJhbXNfZ2V0 X2J1ZmZlcihwYXJhbXNfZGV2LCAmY3VyX2J1ZiwgJm5ld19wYXJhbXMpKSB7DQo+ID4gKwkJcmV0 ID0gMTsNCj4gPiArCQlnb3RvIHVubG9jazsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkvKiBldmFs dWF0ZSBuZXdfcGFyYW1zICovDQo+ID4gKwlpZiAoaW5pdGlhbF9jZmcpIHsNCj4gPiArCQlpZiAo bmV3X3BhcmFtcy0+dXBkYXRlX2NmZyAmDQo+IFZJU0NPTlRJX1ZJSUZfQ0ZHX0lTUF9MMV9JTlBV VF9NT0RFKQ0KPiA+ICsJCQl2aWlmX2wxX3NldF9pbnB1dF9tb2RlKHZpaWZfZGV2LA0KPiAmbmV3 X3BhcmFtcy0+bDFfaW5wdXRfbW9kZSk7DQo+ID4gKwl9DQo+ID4gKwlpZiAobmV3X3BhcmFtcy0+ dXBkYXRlX2NmZyAmDQo+IFZJU0NPTlRJX1ZJSUZfQ0ZHX0lTUF9MMV9SR0JfVE9fWV9DT0VGKQ0K PiA+ICsJCXZpaWZfbDFfc2V0X3JnYl90b195X2NvZWYodmlpZl9kZXYsDQo+ICZuZXdfcGFyYW1z LT5sMV9yZ2JfdG9feV9jb2VmKTsNCj4gPiArCWlmIChuZXdfcGFyYW1zLT51cGRhdGVfY2ZnICYN Cj4gVklTQ09OVElfVklJRl9DRkdfSVNQX0wxX0FHX01PREUpDQo+ID4gKwkJdmlpZl9sMV9zZXRf YWdfbW9kZSh2aWlmX2RldiwgJm5ld19wYXJhbXMtPmwxX2FnX21vZGUpOw0KPiA+ICsJaWYgKG5l d19wYXJhbXMtPnVwZGF0ZV9jZmcgJiBWSVNDT05USV9WSUlGX0NGR19JU1BfTDFfQUcpDQo+ID4g KwkJdmlpZl9sMV9zZXRfYWcodmlpZl9kZXYsICZuZXdfcGFyYW1zLT5sMV9hZyk7DQo+ID4gKwlp ZiAobmV3X3BhcmFtcy0+dXBkYXRlX2NmZyAmIFZJU0NPTlRJX1ZJSUZfQ0ZHX0lTUF9MMV9IRFJF KQ0KPiA+ICsJCXZpaWZfbDFfc2V0X2hkcmUodmlpZl9kZXYsICZuZXdfcGFyYW1zLT5sMV9oZHJl KTsNCj4gPiArCWlmIChuZXdfcGFyYW1zLT51cGRhdGVfY2ZnICYNCj4gVklTQ09OVElfVklJRl9D RkdfSVNQX0wxX0lNR19FWFRSQUNUSU9OKQ0KPiA+ICsJCXZpaWZfbDFfc2V0X2ltZ19leHRyYWN0 aW9uKHZpaWZfZGV2LA0KPiAmbmV3X3BhcmFtcy0+bDFfaW1nX2V4dHJhY3Rpb24pOw0KPiA+ICsJ aWYgKG5ld19wYXJhbXMtPnVwZGF0ZV9jZmcgJiBWSVNDT05USV9WSUlGX0NGR19JU1BfTDFfRFBD KQ0KPiA+ICsJCXZpaWZfbDFfc2V0X2RwYyh2aWlmX2RldiwgJm5ld19wYXJhbXMtPmwxX2RwYyk7 DQo+ID4gKwlpZiAobmV3X3BhcmFtcy0+dXBkYXRlX2NmZyAmDQo+IFZJU0NPTlRJX1ZJSUZfQ0ZH X0lTUF9MMV9QUkVTRVRfV0hJVEVfQkFMQU5DRSkNCj4gPiArCQl2aWlmX2wxX3NldF9wcmVzZXRf d2hpdGVfYmFsYW5jZSh2aWlmX2RldiwNCj4gJm5ld19wYXJhbXMtPmwxX3ByZXNldF93aGl0ZV9i YWxhbmNlKTsNCj4gPiArCWlmIChuZXdfcGFyYW1zLT51cGRhdGVfY2ZnICYNCj4gVklTQ09OVElf VklJRl9DRkdfSVNQX0wxX1JBV19DT0xPUl9OT0lTRV9SRURVQ1RJT04pDQo+ID4gKwkJdmlpZl9s MV9zZXRfcmF3X2NvbG9yX25vaXNlX3JlZHVjdGlvbih2aWlmX2RldiwNCj4gPiArDQo+ICZuZXdf cGFyYW1zLT5sMV9yYXdfY29sb3Jfbm9pc2VfcmVkdWN0aW9uKTsNCj4gPiArCWlmIChuZXdfcGFy YW1zLT51cGRhdGVfY2ZnICYgVklTQ09OVElfVklJRl9DRkdfSVNQX0wxX0hEUlMpDQo+ID4gKwkJ dmlpZl9sMV9zZXRfaGRycyh2aWlmX2RldiwgJm5ld19wYXJhbXMtPmwxX2hkcnMpOw0KPiA+ICsJ aWYgKG5ld19wYXJhbXMtPnVwZGF0ZV9jZmcgJg0KPiBWSVNDT05USV9WSUlGX0NGR19JU1BfTDFf QkxBQ0tfTEVWRUxfQ09SUkVDVElPTikNCj4gPiArCQl2aWlmX2wxX3NldF9ibGFja19sZXZlbF9j b3JyZWN0aW9uKHZpaWZfZGV2LA0KPiA+ICsNCj4gJm5ld19wYXJhbXMtPmwxX2JsYWNrX2xldmVs X2NvcnJlY3Rpb24pOw0KPiA+ICsJaWYgKG5ld19wYXJhbXMtPnVwZGF0ZV9jZmcgJiBWSVNDT05U SV9WSUlGX0NGR19JU1BfTDFfTFNDKQ0KPiA+ICsJCXZpaWZfbDFfc2V0X2xzYyh2aWlmX2Rldiwg Jm5ld19wYXJhbXMtPmwxX2xzYyk7DQo+ID4gKwlpZiAobmV3X3BhcmFtcy0+dXBkYXRlX2NmZyAm DQo+IFZJU0NPTlRJX1ZJSUZfQ0ZHX0lTUF9MMV9NQUlOX1BST0NFU1MpDQo+ID4gKwkJdmlpZl9s MV9zZXRfbWFpbl9wcm9jZXNzKHZpaWZfZGV2LA0KPiAmbmV3X3BhcmFtcy0+bDFfbWFpbl9wcm9j ZXNzKTsNCj4gPiArCWlmIChuZXdfcGFyYW1zLT51cGRhdGVfY2ZnICYgVklTQ09OVElfVklJRl9D RkdfSVNQX0wxX0FXQikNCj4gPiArCQl2aWlmX2wxX3NldF9hd2IodmlpZl9kZXYsICZuZXdfcGFy YW1zLT5sMV9hd2IpOw0KPiA+ICsJaWYgKG5ld19wYXJhbXMtPnVwZGF0ZV9jZmcgJg0KPiBWSVND T05USV9WSUlGX0NGR19JU1BfTDFfTE9DS19BV0JfR0FJTikNCj4gPiArCQl2aWlmX2wxX2xvY2tf YXdiX2dhaW4odmlpZl9kZXYsDQo+ICZuZXdfcGFyYW1zLT5sb2NrX2F3Yl9nYWluKTsNCj4gPiAr CWlmIChuZXdfcGFyYW1zLT51cGRhdGVfY2ZnICYgVklTQ09OVElfVklJRl9DRkdfSVNQX0wxX0hE UkMpDQo+ID4gKwkJdmlpZl9sMV9zZXRfaGRyYyh2aWlmX2RldiwgJm5ld19wYXJhbXMtPmwxX2hk cmMpOw0KPiA+ICsJaWYgKG5ld19wYXJhbXMtPnVwZGF0ZV9jZmcgJg0KPiBWSVNDT05USV9WSUlG X0NGR19JU1BfTDFfSERSQ19MVE0pDQo+ID4gKwkJdmlpZl9sMV9zZXRfaGRyY19sdG0odmlpZl9k ZXYsICZuZXdfcGFyYW1zLT5sMV9oZHJjX2x0bSk7DQo+ID4gKwlpZiAobmV3X3BhcmFtcy0+dXBk YXRlX2NmZyAmIFZJU0NPTlRJX1ZJSUZfQ0ZHX0lTUF9MMV9HQU1NQSkNCj4gPiArCQl2aWlmX2wx X3NldF9nYW1tYSh2aWlmX2RldiwgJm5ld19wYXJhbXMtPmwxX2dhbW1hKTsNCj4gPiArCWlmIChu ZXdfcGFyYW1zLT51cGRhdGVfY2ZnICYNCj4gVklTQ09OVElfVklJRl9DRkdfSVNQX0wxX0lNR19R VUFMSVRZX0FESlVTVE1FTlQpDQo+ID4gKwkJdmlpZl9sMV9zZXRfaW1nX3F1YWxpdHlfYWRqdXN0 bWVudCh2aWlmX2RldiwNCj4gPiArDQo+ICZuZXdfcGFyYW1zLT5sMV9pbWdfcXVhbGl0eV9hZGp1 c3RtZW50KTsNCj4gPiArCWlmIChuZXdfcGFyYW1zLT51cGRhdGVfY2ZnICYNCj4gVklTQ09OVElf VklJRl9DRkdfSVNQX0wxX0FWR19MVU1fR0VORVJBVElPTikNCj4gPiArCQl2aWlmX2wxX3NldF9h dmdfbHVtX2dlbmVyYXRpb24odmlpZl9kZXYsDQo+ICZuZXdfcGFyYW1zLT5sMV9hdmdfbHVtX2dl bmVyYXRpb24pOw0KPiA+ICsJaWYgKG5ld19wYXJhbXMtPnVwZGF0ZV9jZmcgJiBWSVNDT05USV9W SUlGX0NGR19JU1BfTDJfVU5ESVNUKQ0KPiA+ICsJCXZpaWZfbDJfc2V0X3VuZGlzdCh2aWlmX2Rl diwgJm5ld19wYXJhbXMtPmwyX3VuZGlzdCk7DQo+ID4gKwlpZiAobmV3X3BhcmFtcy0+dXBkYXRl X2NmZyAmIFZJU0NPTlRJX1ZJSUZfQ0ZHX0lTUF9MMl9ST0kpDQo+ID4gKwkJdmlpZl9sMl9zZXRf cm9pX3dyYXAodmlpZl9kZXYsICZuZXdfcGFyYW1zLT5sMl9yb2kpOw0KPiA+ICsJaWYgKG5ld19w YXJhbXMtPnVwZGF0ZV9jZmcgJg0KPiBWSVNDT05USV9WSUlGX0NGR19JU1BfTDJfR0FNTUFfUE9T VDApDQo+ID4gKwkJdmlpZl9sMl9zZXRfZ2FtbWEodmlpZl9kZXYsIENBUFRVUkVfUEFUSF9NQUlO X1BPU1QwLA0KPiAmbmV3X3BhcmFtcy0+bDJfZ2FtbWFfcG9zdDApOw0KPiA+ICsJaWYgKG5ld19w YXJhbXMtPnVwZGF0ZV9jZmcgJg0KPiBWSVNDT05USV9WSUlGX0NGR19JU1BfTDJfR0FNTUFfUE9T VDEpDQo+ID4gKwkJdmlpZl9sMl9zZXRfZ2FtbWEodmlpZl9kZXYsIENBUFRVUkVfUEFUSF9NQUlO X1BPU1QxLA0KPiA+ICsmbmV3X3BhcmFtcy0+bDJfZ2FtbWFfcG9zdDEpOw0KPiA+ICsNCj4gPiAr CS8qIHJlbGVhc2UgYnVmZmVyICovDQo+ID4gKwlsaXN0X2RlbCgmY3VyX2J1Zi0+cXVldWUpOw0K PiA+ICsJY3VyX2J1Zi0+dmIuc2VxdWVuY2UgPSAwOw0KPiA+ICsJdmIyX2J1ZmZlcl9kb25lKCZj dXJfYnVmLT52Yi52YjJfYnVmLCBWQjJfQlVGX1NUQVRFX0RPTkUpOw0KPiA+ICsNCj4gPiArdW5s b2NrOg0KPiA+ICsJc3Bpbl91bmxvY2soJnBhcmFtc19kZXYtPnBhcmFtc19sb2NrKTsNCj4gPiAr CXJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3ZvaWQgdmlzY29udGlfdmlpZl9wYXJh bXNfaXNyKHN0cnVjdCB2aWlmX2RldmljZSAqdmlpZl9kZXYpIHsNCj4gPiArCXZpaWZfYXBwbHlf cXVldWVkX3BhcmFtZXRlcih2aWlmX2RldiwgZmFsc2UpOyB9DQo+ID4gKw0KPiA+ICt2b2lkIHZp c2NvbnRpX3ZpaWZfcGFyYW1zX2V2YWxfcXVldWUoc3RydWN0IHZpaWZfZGV2aWNlICp2aWlmX2Rl dikgew0KPiA+ICsJaWYgKHZpaWZfYXBwbHlfcXVldWVkX3BhcmFtZXRlcih2aWlmX2RldiwgdHJ1 ZSkpDQo+ID4gKwkJdmlpZl9hcHBseV9kZWZhdWx0X3BhcmFtZXRlcih2aWlmX2Rldik7DQo+ID4g K30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgdmlpZl9wYXJhbXNfZW51bV9mbXRfbWV0YV9vdXQo c3RydWN0IGZpbGUgKmZpbGUsIHZvaWQNCj4gPiArKnByaXYsIHN0cnVjdCB2NGwyX2ZtdGRlc2Mg KmYpIHsNCj4gPiArCXN0cnVjdCB2aWRlb19kZXZpY2UgKnZkZXYgPSB2aWRlb19kZXZkYXRhKGZp bGUpOw0KPiA+ICsNCj4gPiArCWlmIChmLT5pbmRleCA+IDAgfHwgZi0+dHlwZSAhPSB2ZGV2LT5x dWV1ZS0+dHlwZSkNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKwlmLT5waXhl bGZvcm1hdCA9IFY0TDJfTUVUQV9GTVRfVklTQ09OVElfVklJRl9QQVJBTVM7DQo+ID4gKw0KPiA+ ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgdmlpZl9wYXJhbXNf Z19mbXRfbWV0YV9vdXQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLA0KPiA+ICtzdHJ1Y3Qg djRsMl9mb3JtYXQgKmYpIHsNCj4gPiArCXN0cnVjdCB2aWRlb19kZXZpY2UgKnZkZXYgPSB2aWRl b19kZXZkYXRhKGZpbGUpOw0KPiA+ICsJc3RydWN0IHY0bDJfbWV0YV9mb3JtYXQgKm1ldGEgPSAm Zi0+Zm10Lm1ldGE7DQo+ID4gKw0KPiA+ICsJaWYgKGYtPnR5cGUgIT0gdmRldi0+cXVldWUtPnR5 cGUpDQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJbWVtc2V0KG1ldGEsIDAs IHNpemVvZigqbWV0YSkpOw0KPiA+ICsJbWV0YS0+ZGF0YWZvcm1hdCA9IFY0TDJfTUVUQV9GTVRf VklTQ09OVElfVklJRl9QQVJBTVM7DQo+ID4gKwltZXRhLT5idWZmZXJzaXplID0gc2l6ZW9mKHN0 cnVjdCB2aXNjb250aV92aWlmX2lzcF9jb25maWcpOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHZpaWZfcGFyYW1zX3F1ZXJ5Y2FwKHN0cnVj dCBmaWxlICpmaWxlLCB2b2lkICpwcml2LCBzdHJ1Y3QNCj4gPiArdjRsMl9jYXBhYmlsaXR5ICpj YXApIHsNCj4gPiArCXN0cnVjdCB2aWRlb19kZXZpY2UgKnZkZXYgPSB2aWRlb19kZXZkYXRhKGZp bGUpOw0KPiA+ICsNCj4gPiArCXN0cnNjcHkoY2FwLT5kcml2ZXIsIFZJSUZfRFJJVkVSX05BTUUs IHNpemVvZihjYXAtPmRyaXZlcikpOw0KPiA+ICsJc3Ryc2NweShjYXAtPmNhcmQsIHZkZXYtPm5h bWUsIHNpemVvZihjYXAtPmNhcmQpKTsNCj4gPiArCXN0cnNjcHkoY2FwLT5idXNfaW5mbywgVklJ Rl9CVVNfSU5GT19CQVNFICItMCIsDQo+ID4gK3NpemVvZihjYXAtPmJ1c19pbmZvKSk7DQo+ID4g Kw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgdjRsMl9pb2N0bF9vcHMgdmlpZl9wYXJhbXNfaW9jdGwgPSB7DQo+ID4gKwkudmlkaW9jX3Jl cWJ1ZnMgPSB2YjJfaW9jdGxfcmVxYnVmcywNCj4gPiArCS52aWRpb2NfcXVlcnlidWYgPSB2YjJf aW9jdGxfcXVlcnlidWYsDQo+ID4gKwkudmlkaW9jX2NyZWF0ZV9idWZzID0gdmIyX2lvY3RsX2Ny ZWF0ZV9idWZzLA0KPiA+ICsJLnZpZGlvY19xYnVmID0gdmIyX2lvY3RsX3FidWYsDQo+ID4gKwku dmlkaW9jX2RxYnVmID0gdmIyX2lvY3RsX2RxYnVmLA0KPiA+ICsJLnZpZGlvY19wcmVwYXJlX2J1 ZiA9IHZiMl9pb2N0bF9wcmVwYXJlX2J1ZiwNCj4gPiArCS52aWRpb2NfZXhwYnVmID0gdmIyX2lv Y3RsX2V4cGJ1ZiwNCj4gPiArCS52aWRpb2Nfc3RyZWFtb24gPSB2YjJfaW9jdGxfc3RyZWFtb24s DQo+ID4gKwkudmlkaW9jX3N0cmVhbW9mZiA9IHZiMl9pb2N0bF9zdHJlYW1vZmYsDQo+ID4gKwku dmlkaW9jX2VudW1fZm10X21ldGFfb3V0ID0gdmlpZl9wYXJhbXNfZW51bV9mbXRfbWV0YV9vdXQs DQo+ID4gKwkudmlkaW9jX2dfZm10X21ldGFfb3V0ID0gdmlpZl9wYXJhbXNfZ19mbXRfbWV0YV9v dXQsDQo+ID4gKwkudmlkaW9jX3NfZm10X21ldGFfb3V0ID0gdmlpZl9wYXJhbXNfZ19mbXRfbWV0 YV9vdXQsDQo+ID4gKwkudmlkaW9jX3RyeV9mbXRfbWV0YV9vdXQgPSB2aWlmX3BhcmFtc19nX2Zt dF9tZXRhX291dCwNCj4gPiArCS52aWRpb2NfcXVlcnljYXAgPSB2aWlmX3BhcmFtc19xdWVyeWNh cCwNCj4gPiArCS52aWRpb2Nfc3Vic2NyaWJlX2V2ZW50ID0gdjRsMl9jdHJsX3N1YnNjcmliZV9l dmVudCwNCj4gPiArCS52aWRpb2NfdW5zdWJzY3JpYmVfZXZlbnQgPSB2NGwyX2V2ZW50X3Vuc3Vi c2NyaWJlLCB9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2ZpbGVfb3Bl cmF0aW9ucyB2aWlmX3BhcmFtc19mb3BzID0geyAubW1hcCA9DQo+IHZiMl9mb3BfbW1hcCwNCj4g PiArDQo+IAkgICAgICAudW5sb2NrZWRfaW9jdGwgPSB2aWRlb19pb2N0bDIsDQo+ID4gKwkJCQkJ CQkgICAgICAucG9sbCA9DQo+IHZiMl9mb3BfcG9sbCwNCj4gPiArCQkJCQkJCSAgICAgIC5vcGVu ID0NCj4gdjRsMl9maF9vcGVuLA0KPiA+ICsJCQkJCQkJICAgICAgLnJlbGVhc2UgPQ0KPiB2YjJf Zm9wX3JlbGVhc2UgfTsNCj4gDQo+IFdlaXJkIGxheW91dC4NCj4gDQoNCkknbGwgZml4IHRoZSBs YXlvdXQuDQoNCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgdmlpZl9wYXJhbXNfdmIyX3F1ZXVlX3Nl dHVwKHN0cnVjdCB2YjJfcXVldWUgKnEsIHVuc2lnbmVkIGludA0KPiAqbnVtX2J1ZmZlcnMsDQo+ ID4gKwkJCQkgICAgICAgdW5zaWduZWQgaW50ICpudW1fcGxhbmVzLCB1bnNpZ25lZA0KPiBpbnQg c2l6ZXNbXSwNCj4gPiArCQkJCSAgICAgICBzdHJ1Y3QgZGV2aWNlICphbGxvY19kZXZzW10pIHsN Cj4gPiArCSpudW1fYnVmZmVycyA9IGNsYW1wX3QodTMyLCAqbnVtX2J1ZmZlcnMsIDIsIDgpOw0K PiA+ICsJKm51bV9wbGFuZXMgPSAxOw0KPiA+ICsJc2l6ZXNbMF0gPSBzaXplb2Yoc3RydWN0IHZp c2NvbnRpX3ZpaWZfaXNwX2NvbmZpZyk7DQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgdmlpZl9idWZmZXIgKnZiMl90b192aWlmKHN0cnVj dCB2YjJfdjRsMl9idWZmZXINCj4gPiArKnZidWYpIHsNCj4gPiArCXJldHVybiBjb250YWluZXJf b2YodmJ1Ziwgc3RydWN0IHZpaWZfYnVmZmVyLCB2Yik7IH0NCj4gPiArDQo+ID4gK3N0YXRpYyBp bmxpbmUgc3RydWN0IHBhcmFtc19kZXYgKnZiMnF1ZXVlX3RvX3BhcmFtc2RldihzdHJ1Y3QNCj4g PiArdmIyX3F1ZXVlICp2cSkgew0KPiA+ICsJcmV0dXJuIChzdHJ1Y3QgcGFyYW1zX2RldiAqKXZi Ml9nZXRfZHJ2X3ByaXYodnEpOyB9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCB2aWlmX3BhcmFt c192YjJfYnVmX3F1ZXVlKHN0cnVjdCB2YjJfYnVmZmVyICp2Yikgew0KPiA+ICsJc3RydWN0IHBh cmFtc19kZXYgKnBhcmFtc19kZXYgPQ0KPiB2YjJxdWV1ZV90b19wYXJhbXNkZXYodmItPnZiMl9x dWV1ZSk7DQo+ID4gKwlzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyICp2YnVmID0gdG9fdmIyX3Y0bDJf YnVmZmVyKHZiKTsNCj4gPiArCXN0cnVjdCB2aWlmX2J1ZmZlciAqYnVmID0gdmIyX3RvX3ZpaWYo dmJ1Zik7DQo+ID4gKw0KPiA+ICsJc3Bpbl9sb2NrX2lycSgmcGFyYW1zX2Rldi0+cGFyYW1zX2xv Y2spOw0KPiA+ICsJbGlzdF9hZGRfdGFpbCgmYnVmLT5xdWV1ZSwgJnBhcmFtc19kZXYtPnBhcmFt c19xdWV1ZSk7DQo+ID4gKwlzcGluX3VubG9ja19pcnEoJnBhcmFtc19kZXYtPnBhcmFtc19sb2Nr KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCB2aWlmX3BhcmFtc192YjJfYnVmX3By ZXBhcmUoc3RydWN0IHZiMl9idWZmZXIgKnZiKSB7DQo+ID4gKwlpZiAodmIyX3BsYW5lX3NpemUo dmIsIDApIDwgc2l6ZW9mKHN0cnVjdCB2aXNjb250aV92aWlmX2lzcF9jb25maWcpKQ0KPiA+ICsJ CXJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArCXZiMl9zZXRfcGxhbmVfcGF5bG9hZCh2Yiwg MCwgc2l6ZW9mKHN0cnVjdCB2aXNjb250aV92aWlmX2lzcF9jb25maWcpKTsNCj4gPiArCXJldHVy biAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHZpaWZfcGFyYW1zX3ZiMl9zdGFy dF9zdHJlYW1pbmcoc3RydWN0IHZiMl9xdWV1ZSAqcSwNCj4gPiArdW5zaWduZWQgaW50IGFyZykg ew0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIHZpaWZf cGFyYW1zX3ZiMl9zdG9wX3N0cmVhbWluZyhzdHJ1Y3QgdmIyX3F1ZXVlICpxKSB7DQo+ID4gKwlz dHJ1Y3QgcGFyYW1zX2RldiAqcGFyYW1zX2RldiA9IHZiMnF1ZXVlX3RvX3BhcmFtc2RldihxKTsN Cj4gPiArCXN0cnVjdCB2aWlmX2J1ZmZlciAqYnVmOw0KPiA+ICsJTElTVF9IRUFEKHRtcF9saXN0 KTsNCj4gPiArDQo+ID4gKwlzcGluX2xvY2tfaXJxKCZwYXJhbXNfZGV2LT5wYXJhbXNfbG9jayk7 DQo+ID4gKwlsaXN0X3NwbGljZV9pbml0KCZwYXJhbXNfZGV2LT5wYXJhbXNfcXVldWUsICZ0bXBf bGlzdCk7DQo+ID4gKwlzcGluX3VubG9ja19pcnEoJnBhcmFtc19kZXYtPnBhcmFtc19sb2NrKTsN Cj4gPiArDQo+ID4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJ1ZiwgJnRtcF9saXN0LCBxdWV1ZSkN Cj4gPiArCQl2YjJfYnVmZmVyX2RvbmUoJmJ1Zi0+dmIudmIyX2J1ZiwNCj4gVkIyX0JVRl9TVEFU RV9FUlJPUik7IH0NCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdmIyX29wcyB2aWlm X3BhcmFtc192YjJfb3BzID0gew0KPiA+ICsJLnF1ZXVlX3NldHVwID0gdmlpZl9wYXJhbXNfdmIy X3F1ZXVlX3NldHVwLA0KPiA+ICsJLndhaXRfcHJlcGFyZSA9IHZiMl9vcHNfd2FpdF9wcmVwYXJl LA0KPiA+ICsJLndhaXRfZmluaXNoID0gdmIyX29wc193YWl0X2ZpbmlzaCwNCj4gPiArCS5idWZf cXVldWUgPSB2aWlmX3BhcmFtc192YjJfYnVmX3F1ZXVlLA0KPiA+ICsJLmJ1Zl9wcmVwYXJlID0g dmlpZl9wYXJhbXNfdmIyX2J1Zl9wcmVwYXJlLA0KPiA+ICsJLnN0YXJ0X3N0cmVhbWluZyA9IHZp aWZfcGFyYW1zX3ZiMl9zdGFydF9zdHJlYW1pbmcsDQo+ID4gKwkuc3RvcF9zdHJlYW1pbmcgPSB2 aWlmX3BhcmFtc192YjJfc3RvcF9zdHJlYW1pbmcsIH07DQo+ID4gKw0KPiA+ICtpbnQgdmlzY29u dGlfdmlpZl9wYXJhbXNfcmVnaXN0ZXIoc3RydWN0IHZpaWZfZGV2aWNlICp2aWlmX2Rldikgew0K PiA+ICsJc3RydWN0IHBhcmFtc19kZXYgKnBhcmFtc19kZXYgPSAmdmlpZl9kZXYtPnBhcmFtc19k ZXY7DQo+ID4gKwlzdHJ1Y3QgdmlkZW9fZGV2aWNlICp2ZGV2ID0gJnBhcmFtc19kZXYtPnZkZXY7 DQo+ID4gKwlzdHJ1Y3QgdmIyX3F1ZXVlICpxID0gJnBhcmFtc19kZXYtPnZiMl92cTsNCj4gPiAr CWludCByZXQ7DQo+ID4gKw0KPiA+ICsJbXV0ZXhfaW5pdCgmcGFyYW1zX2Rldi0+dmxvY2spOw0K PiA+ICsJSU5JVF9MSVNUX0hFQUQoJnBhcmFtc19kZXYtPnBhcmFtc19xdWV1ZSk7DQo+ID4gKwlz cGluX2xvY2tfaW5pdCgmcGFyYW1zX2Rldi0+cGFyYW1zX2xvY2spOw0KPiA+ICsNCj4gPiArCXN0 cnNjcHkodmRldi0+bmFtZSwgInZpaWZfcGFyYW1zIiwgc2l6ZW9mKHZkZXYtPm5hbWUpKTsNCj4g PiArDQo+ID4gKwkvKiBSZWdpc3RlciB0aGUgdmlkZW8gZGV2aWNlICovDQo+ID4gKwl2aWRlb19z ZXRfZHJ2ZGF0YSh2ZGV2LCBwYXJhbXNfZGV2KTsNCj4gPiArCXZkZXYtPmlvY3RsX29wcyA9ICZ2 aWlmX3BhcmFtc19pb2N0bDsNCj4gPiArCXZkZXYtPmZvcHMgPSAmdmlpZl9wYXJhbXNfZm9wczsN Cj4gPiArCXZkZXYtPnJlbGVhc2UgPSB2aWRlb19kZXZpY2VfcmVsZWFzZV9lbXB0eTsNCj4gPiAr CXZkZXYtPmxvY2sgPSAmcGFyYW1zX2Rldi0+dmxvY2s7DQo+ID4gKwl2ZGV2LT52NGwyX2RldiA9 ICZ2aWlmX2Rldi0+djRsMl9kZXY7DQo+ID4gKwl2ZGV2LT5xdWV1ZSA9ICZwYXJhbXNfZGV2LT52 YjJfdnE7DQo+ID4gKwl2ZGV2LT5kZXZpY2VfY2FwcyA9IFY0TDJfQ0FQX1NUUkVBTUlORyB8DQo+ IFY0TDJfQ0FQX01FVEFfT1VUUFVUOw0KPiA+ICsJdmRldi0+dmZsX2RpciA9IFZGTF9ESVJfVFg7 DQo+ID4gKw0KPiA+ICsJLyogSW5pdGlhbGl6ZSB2YjIgcXVldWUgKi8NCj4gPiArCXEtPnR5cGUg PSBWNEwyX0JVRl9UWVBFX01FVEFfT1VUUFVUOw0KPiA+ICsJcS0+aW9fbW9kZXMgPSBWQjJfTU1B UCB8IFZCMl9VU0VSUFRSIHwgVkIyX0RNQUJVRjsNCj4gDQo+IFdoeSBkbyB5b3Ugd2FudCB0byBz dXBwb3J0IFZCMl9VU0VSUFRSPyBXaGlsZSBub3Qgb2ZmaWNpYWxseSBkZXByZWNhdGVkLA0KPiB3 ZSBkbyBkaXNjb3VyYWdlIGl0IGZvciBuZXcgZHJpdmVycy4NCj4gDQoNCkknbGwgcmVtb3ZlIFZC Ml9VU0VSUFRSLg0KV2UgZG8gbm90IGhhdmUgc3BlY2lmaWMgdXNlY2FzZSBvZiB0aGlzIGZsYWcg Zm9yIG91ciBkcml2ZXIuDQoNCj4gPiArCXEtPmRydl9wcml2ID0gcGFyYW1zX2RldjsNCj4gPiAr CXEtPm9wcyA9ICZ2aWlmX3BhcmFtc192YjJfb3BzOw0KPiA+ICsJcS0+bWVtX29wcyA9ICZ2YjJf dm1hbGxvY19tZW1vcHM7DQo+ID4gKwlxLT5idWZfc3RydWN0X3NpemUgPSBzaXplb2Yoc3RydWN0 IHZpaWZfYnVmZmVyKTsNCj4gPiArCXEtPnRpbWVzdGFtcF9mbGFncyA9IFY0TDJfQlVGX0ZMQUdf VElNRVNUQU1QX01PTk9UT05JQzsNCj4gPiArCXEtPmxvY2sgPSAmcGFyYW1zX2Rldi0+dmxvY2s7 DQo+ID4gKwlxLT5kZXYgPSB2aWlmX2Rldi0+djRsMl9kZXYuZGV2Ow0KPiA+ICsNCj4gPiArCXJl dCA9IHZiMl9xdWV1ZV9pbml0KHEpOw0KPiA+ICsJaWYgKHJldCkNCj4gPiArCQlyZXR1cm4gcmV0 Ow0KPiA+ICsNCj4gPiArCXBhcmFtc19kZXYtPnBhcmFtc19wYWQuZmxhZ3MgPSBNRURJQV9QQURf RkxfU09VUkNFOw0KPiA+ICsJcmV0ID0gbWVkaWFfZW50aXR5X3BhZHNfaW5pdCgmdmRldi0+ZW50 aXR5LCBWSUlGX1BBUkFNU19QQURfTlVNLA0KPiAmcGFyYW1zX2Rldi0+cGFyYW1zX3BhZCk7DQo+ ID4gKwlpZiAocmV0KQ0KPiA+ICsJCWdvdG8gZXJyb3I7DQo+ID4gKw0KPiA+ICsJcmV0ID0gdmlk ZW9fcmVnaXN0ZXJfZGV2aWNlKHZkZXYsIFZGTF9UWVBFX1ZJREVPLCAtMSk7DQo+ID4gKwlpZiAo cmV0KSB7DQo+ID4gKwkJZGV2X2Vycih2aWlmX2Rldi0+djRsMl9kZXYuZGV2LCAidmlkZW9fcmVn aXN0ZXJfZGV2aWNlDQo+IGZhaWxlZDogJWRcbiIsIHJldCk7DQo+ID4gKwkJZ290byBlcnJvcjsN Cj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArDQo+ID4gK2Vycm9yOg0KPiA+ ICsJbWVkaWFfZW50aXR5X2NsZWFudXAoJnZkZXYtPmVudGl0eSk7DQo+ID4gKwltdXRleF9kZXN0 cm95KCZwYXJhbXNfZGV2LT52bG9jayk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArdm9pZCB2aXNjb250aV92aWlmX3BhcmFtc191bnJlZ2lzdGVyKHN0cnVj dCB2aWlmX2RldmljZSAqdmlpZl9kZXYpIHsNCj4gPiArCXN0cnVjdCBwYXJhbXNfZGV2ICpwYXJh bXMgPSAmdmlpZl9kZXYtPnBhcmFtc19kZXY7DQo+ID4gKwlzdHJ1Y3QgdmlkZW9fZGV2aWNlICp2 ZGV2ID0gJnBhcmFtcy0+dmRldjsNCj4gPiArDQo+ID4gKwlpZiAoIXZpZGVvX2lzX3JlZ2lzdGVy ZWQodmRldikpDQo+ID4gKwkJcmV0dXJuOw0KPiA+ICsNCj4gPiArCXZiMl92aWRlb191bnJlZ2lz dGVyX2RldmljZSh2ZGV2KTsNCj4gPiArCW1lZGlhX2VudGl0eV9jbGVhbnVwKCZ2ZGV2LT5lbnRp dHkpOw0KPiA+ICsJbXV0ZXhfZGVzdHJveSgmcGFyYW1zLT52bG9jayk7DQo+ID4gK30NCj4gDQo+ IDxzbmlwPg0KPiANCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS90b3No aWJhL3Zpc2NvbnRpL3ZpaWZfc3RhdHMuYw0KPiA+IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS90 b3NoaWJhL3Zpc2NvbnRpL3ZpaWZfc3RhdHMuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ ID4gaW5kZXggMDAwMDAwMDAwMC4uMjhjZDg3OWI1Zg0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiAr KysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Rvc2hpYmEvdmlzY29udGkvdmlpZl9zdGF0cy5j DQo+ID4gQEAgLTAsMCArMSwzMzQgQEANCj4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAgT1IgQlNELTItQ2xhdXNlDQo+ID4gKy8qIFRvc2hpYmEgVmlzY29udGkgVmlkZW8g Q2FwdHVyZSBTdXBwb3J0DQo+ID4gKyAqDQo+ID4gKyAqIChDKSBDb3B5cmlnaHQgMjAyMyBUT1NI SUJBIENPUlBPUkFUSU9ODQo+ID4gKyAqIChDKSBDb3B5cmlnaHQgMjAyMyBUb3NoaWJhIEVsZWN0 cm9uaWMgRGV2aWNlcyAmIFN0b3JhZ2UNCj4gPiArQ29ycG9yYXRpb24gICovDQo+ID4gKw0KPiA+ ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRp bWUuaD4NCj4gPiArI2luY2x1ZGUgPG1lZGlhL3Y0bDItY29tbW9uLmg+DQo+ID4gKyNpbmNsdWRl IDxtZWRpYS92NGwyLXN1YmRldi5oPg0KPiA+ICsjaW5jbHVkZSA8bWVkaWEvdmlkZW9idWYyLXZt YWxsb2MuaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlICJ2aWlmLmgiDQo+ID4gKyNpbmNsdWRlICJ2 aWlmX2NzaTJyeC5oIg0KPiA+ICsjaW5jbHVkZSAidmlpZl9pc3AuaCINCj4gPiArI2luY2x1ZGUg InZpaWZfY29tbW9uLmgiDQo+ID4gKyNpbmNsdWRlICJ2aWlmX3JlZ3MuaCINCj4gPiArI2luY2x1 ZGUgInZpaWZfc3RhdHMuaCINCj4gPiArDQo+ID4gK3N0cnVjdCB2aWlmX2J1ZmZlciB7DQo+ID4g KwlzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyIHZiOw0KPiA+ICsJc3RydWN0IGxpc3RfaGVhZCBxdWV1 ZTsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIHJlYWRfaXNwX2NhcHR1cmVfcmVn cyhzdHJ1Y3QgdmlpZl9sMV9pbmZvICpsMV9pbmZvLA0KPiA+ICtzdHJ1Y3QgdmlpZl9kZXZpY2Ug KnZpaWZfZGV2KSB7DQo+ID4gKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOw0KPiA+ICsJaW50IGks IGo7DQo+ID4gKwl1MzIgdmFsOw0KPiA+ICsNCj4gPiArCXNwaW5fbG9ja19pcnFzYXZlKCZ2aWlm X2Rldi0+cmVnYnVmX2xvY2ssIGlycWZsYWdzKTsNCj4gPiArCWh3ZF92aWlmX2lzcF9ndWFyZF9z dGFydCh2aWlmX2Rldik7DQo+ID4gKw0KPiA+ICsJLyogY2hhbmdlIHJlZ2lzdGVyIGJ1ZmZlciB0 byByZWdidWYwIHdoZXJlIGRyaXZlciBnZXRzIGluZm9ybWF0aW9uICovDQo+ID4gKwl2aWlmX2Nh cHR1cmVfd3JpdGUodmlpZl9kZXYsIFJFR19MMV9DUkdCRl9BQ0NfQ09ORiwNCj4gPiArVkFMX0wx X0NSR0JGX0FDQ19DT05GX01PREVfQlVGRkVSMCk7DQo+ID4gKw0KPiA+ICsJLyogZ2V0IEFXQiBp bmZvICovDQo+ID4gKwlsMV9pbmZvLT5hd2JfYXZlX3UgPSB2aWlmX2NhcHR1cmVfcmVhZCh2aWlm X2RldiwNCj4gUkVHX0wxX0FXSEJfQVZFX1VTSUcpOw0KPiA+ICsJbDFfaW5mby0+YXdiX2F2ZV92 ID0gdmlpZl9jYXB0dXJlX3JlYWQodmlpZl9kZXYsDQo+IFJFR19MMV9BV0hCX0FWRV9WU0lHKTsN Cj4gPiArCWwxX2luZm8tPmF3Yl9hY2N1bXVsYXRlZF9waXhlbCA9IHZpaWZfY2FwdHVyZV9yZWFk KHZpaWZfZGV2LA0KPiBSRUdfTDFfQVdIQl9OVU1fVVZPTik7DQo+ID4gKwlsMV9pbmZvLT5hd2Jf Z2Fpbl9yID0gdmlpZl9jYXB0dXJlX3JlYWQodmlpZl9kZXYsDQo+IFJFR19MMV9BV0hCX0FXQkdB SU5SKTsNCj4gPiArCWwxX2luZm8tPmF3Yl9nYWluX2cgPSB2aWlmX2NhcHR1cmVfcmVhZCh2aWlm X2RldiwNCj4gUkVHX0wxX0FXSEJfQVdCR0FJTkcpOw0KPiA+ICsJbDFfaW5mby0+YXdiX2dhaW5f YiA9IHZpaWZfY2FwdHVyZV9yZWFkKHZpaWZfZGV2LA0KPiBSRUdfTDFfQVdIQl9BV0JHQUlOQik7 DQo+ID4gKwl2YWwgPSB2aWlmX2NhcHR1cmVfcmVhZCh2aWlmX2RldiwgUkVHX0wxX0FXSEJfUl9D VFJfU1RPUCk7DQo+ID4gKwlsMV9pbmZvLT5hd2Jfc3RhdHVzX3UgPSAoRklFTERfR0VUKEJJVCgx KSwgdmFsKSAhPSAwKTsNCj4gPiArCWwxX2luZm8tPmF3Yl9zdGF0dXNfdiA9IChGSUVMRF9HRVQo QklUKDApLCB2YWwpICE9IDApOw0KPiA+ICsNCj4gPiArCS8qIGdldCBhdmVyYWdlIGx1bWluYW5j ZSBpbmZvICovDQo+ID4gKwlsMV9pbmZvLT5hdmdfbHVtX3dlaWdodCA9IHZpaWZfY2FwdHVyZV9y ZWFkKHZpaWZfZGV2LA0KPiBSRUdfTDFfQUVYUF9SRVNVTFRfQVZFKTsNCj4gPiArCXZhbCA9IHZp aWZfY2FwdHVyZV9yZWFkKHZpaWZfZGV2LA0KPiBSRUdfTDFfQUVYUF9TQVRVUl9CTEFDS19QSVhO VU0pOw0KPiA+ICsJbDFfaW5mby0+YXZnX3NhdHVyX3BpeG51bSA9IEZJRUxEX0dFVChHRU5NQVNL KDMxLCAxNiksIHZhbCk7DQo+ID4gKwlsMV9pbmZvLT5hdmdfYmxhY2tfcGl4bnVtID0gRklFTERf R0VUKEdFTk1BU0soMTUsIDApLCB2YWwpOw0KPiA+ICsJZm9yIChpID0gMDsgaSA8IDg7IGkrKykg ew0KPiA+ICsJCWZvciAoaiA9IDA7IGogPCA4OyBqKyspIHsNCj4gPiArCQkJbDFfaW5mby0+YXZn X2x1bV9ibG9ja1tpXVtqXSA9DQo+ID4gKwkJCQl2aWlmX2NhcHR1cmVfcmVhZCh2aWlmX2RldiwN Cj4gUkVHX0wxX0FFWFBfQVZFKGksIGopKTsNCj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gKwlsMV9p bmZvLT5hdmdfbHVtX2ZvdXJfbGluZV9sdW1bMF0gPSB2aWlmX2NhcHR1cmVfcmVhZCh2aWlmX2Rl diwNCj4gUkVHX0wxX0FFWFBfQVZFNExJTkVTMCk7DQo+ID4gKwlsMV9pbmZvLT5hdmdfbHVtX2Zv dXJfbGluZV9sdW1bMV0gPSB2aWlmX2NhcHR1cmVfcmVhZCh2aWlmX2RldiwNCj4gUkVHX0wxX0FF WFBfQVZFNExJTkVTMSk7DQo+ID4gKwlsMV9pbmZvLT5hdmdfbHVtX2ZvdXJfbGluZV9sdW1bMl0g PSB2aWlmX2NhcHR1cmVfcmVhZCh2aWlmX2RldiwNCj4gUkVHX0wxX0FFWFBfQVZFNExJTkVTMik7 DQo+ID4gKwlsMV9pbmZvLT5hdmdfbHVtX2ZvdXJfbGluZV9sdW1bM10gPSB2aWlmX2NhcHR1cmVf cmVhZCh2aWlmX2RldiwNCj4gPiArUkVHX0wxX0FFWFBfQVZFNExJTkVTMyk7DQo+ID4gKw0KPiA+ ICsJLyogcmV2ZXJ0IHRvIHJlZ2lzdGVyIGFjY2VzcyBmcm9tIHJlZ2lzdGVyIGJ1ZmZlciBhY2Nl c3MgKi8NCj4gPiArCXZpaWZfY2FwdHVyZV93cml0ZSh2aWlmX2RldiwgUkVHX0wxX0NSR0JGX0FD Q19DT05GLA0KPiA+ICtWQUxfTDFfQ1JHQkZfQUNDX0NPTkZfTU9ERV9CWVBBU1MpOw0KPiA+ICsN Cj4gPiArCWh3ZF92aWlmX2lzcF9ndWFyZF9lbmQodmlpZl9kZXYpOw0KPiA+ICsJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmdmlpZl9kZXYtPnJlZ2J1Zl9sb2NrLCBpcnFmbGFncyk7IH0NCj4gPiAr DQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdmlpZl9jc2kycnhfZHBoeV9jYWxpYnJhdGlvbl9z dGF0dXMNCj4gY2FsaWJfc3RhdHVzX25vdF9zdHJlYW1pbmcgPSB7DQo+ID4gKwkudGVybV9jYWxf d2l0aF9yZXh0ID0gLUVBR0FJTiwNCj4gPiArCS5jbG9ja19sYW5lX29mZnNldF9jYWwgPSAtRUFH QUlOLA0KPiA+ICsJLmRhdGFfbGFuZTBfb2Zmc2V0X2NhbCA9IC1FQUdBSU4sDQo+ID4gKwkuZGF0 YV9sYW5lMV9vZmZzZXRfY2FsID0gLUVBR0FJTiwNCj4gPiArCS5kYXRhX2xhbmUyX29mZnNldF9j YWwgPSAtRUFHQUlOLA0KPiA+ICsJLmRhdGFfbGFuZTNfb2Zmc2V0X2NhbCA9IC1FQUdBSU4sDQo+ ID4gKwkuZGF0YV9sYW5lMF9kZGxfdHVuaW5nX2NhbCA9IC1FQUdBSU4sDQo+ID4gKwkuZGF0YV9s YW5lMV9kZGxfdHVuaW5nX2NhbCA9IC1FQUdBSU4sDQo+ID4gKwkuZGF0YV9sYW5lMl9kZGxfdHVu aW5nX2NhbCA9IC1FQUdBSU4sDQo+ID4gKwkuZGF0YV9sYW5lM19kZGxfdHVuaW5nX2NhbCA9IC1F QUdBSU4sIH07DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHZpaWZfY3NpMnJ4X2Vy cl9zdGF0dXMgY3NpX2Vycl9ub3Rfc3RyZWFtaW5nOw0KPiA+ICsNCj4gPiArdm9pZCB2aXNjb250 aV92aWlmX3N0YXRzX2lzcihzdHJ1Y3QgdmlpZl9kZXZpY2UgKnZpaWZfZGV2LCB1bnNpZ25lZA0K PiA+ICtpbnQgc2VxdWVuY2UsIHU2NCB0aW1lc3RhbXApIHsNCj4gPiArCXN0cnVjdCB2aXNjb250 aV92aWlmX2lzcF9zdGF0ICpjdXJfc3RhdF9idWY7DQo+ID4gKwlzdHJ1Y3Qgc3RhdHNfZGV2ICpz dGF0c19kZXYgPSAmdmlpZl9kZXYtPnN0YXRzX2RldjsNCj4gPiArCXN0cnVjdCB2aWlmX2J1ZmZl ciAqY3VyX2J1ZjsNCj4gPiArDQo+ID4gKwlzcGluX2xvY2soJnN0YXRzX2Rldi0+c3RhdHNfbG9j ayk7DQo+ID4gKw0KPiA+ICsJaWYgKGxpc3RfZW1wdHkoJnN0YXRzX2Rldi0+c3RhdHNfcXVldWUp KQ0KPiA+ICsJCWdvdG8gZG9uZTsNCj4gPiArDQo+ID4gKwljdXJfYnVmID0gbGlzdF9maXJzdF9l bnRyeSgmc3RhdHNfZGV2LT5zdGF0c19xdWV1ZSwgc3RydWN0IHZpaWZfYnVmZmVyLA0KPiBxdWV1 ZSk7DQo+ID4gKwlsaXN0X2RlbCgmY3VyX2J1Zi0+cXVldWUpOw0KPiA+ICsJY3VyX3N0YXRfYnVm ID0gKHN0cnVjdCB2aXNjb250aV92aWlmX2lzcF9zdGF0DQo+ID4gKyopdmIyX3BsYW5lX3ZhZGRy KCZjdXJfYnVmLT52Yi52YjJfYnVmLCAwKTsNCj4gPiArDQo+ID4gKwlpZiAoIXZiMl9zdGFydF9z dHJlYW1pbmdfY2FsbGVkKCZ2aWlmX2Rldi0+Y2FwX2RldjAudmIyX3ZxKSkgew0KPiA+ICsJCWN1 cl9zdGF0X2J1Zi0+Y3NpMnJ4X2RwaHlfY2FsaWJyYXRpb24gPQ0KPiBjYWxpYl9zdGF0dXNfbm90 X3N0cmVhbWluZzsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJdmlzY29udGlfdmlpZl9jc2kycnhf Z2V0X2NhbGlicmF0aW9uX3N0YXR1cyh2aWlmX2RldiwNCj4gPiArDQo+ICZjdXJfc3RhdF9idWYt PmNzaTJyeF9kcGh5X2NhbGlicmF0aW9uKTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAoIXZi Ml9pc19zdHJlYW1pbmcoJnZpaWZfZGV2LT5jYXBfZGV2MC52YjJfdnEpKQ0KPiA+ICsJCWN1cl9z dGF0X2J1Zi0+Y3NpMnJ4X2VyciA9IGNzaV9lcnJfbm90X3N0cmVhbWluZzsNCj4gPiArCWVsc2UN Cj4gPiArCQl2aXNjb250aV92aWlmX2NzaTJyeF9nZXRfZXJyX3N0YXR1cyh2aWlmX2RldiwNCj4g PiArJmN1cl9zdGF0X2J1Zi0+Y3NpMnJ4X2Vycik7DQo+ID4gKw0KPiA+ICsJcmVhZF9pc3BfY2Fw dHVyZV9yZWdzKCZjdXJfc3RhdF9idWYtPmlzcF9jYXB0dXJlLmwxX2luZm8sIHZpaWZfZGV2KTsN Cj4gPiArDQo+ID4gKwljdXJfc3RhdF9idWYtPmVycm9ycy5tYWluID0gdmlpZl9kZXYtPnJlcG9y dGVkX2Vycl9tYWluOw0KPiA+ICsJY3VyX3N0YXRfYnVmLT5lcnJvcnMuc3ViID0gdmlpZl9kZXYt PnJlcG9ydGVkX2Vycl9zdWI7DQo+ID4gKwljdXJfc3RhdF9idWYtPmVycm9ycy5jc2kycnggPSB2 aWlmX2Rldi0+cmVwb3J0ZWRfZXJyX2NzaTJyeDsNCj4gPiArCXZpaWZfZGV2LT5yZXBvcnRlZF9l cnJfbWFpbiA9IDA7DQo+ID4gKwl2aWlmX2Rldi0+cmVwb3J0ZWRfZXJyX3N1YiA9IDA7DQo+ID4g Kwl2aWlmX2Rldi0+cmVwb3J0ZWRfZXJyX2NzaTJyeCA9IDA7DQo+ID4gKw0KPiA+ICsJdmIyX3Nl dF9wbGFuZV9wYXlsb2FkKCZjdXJfYnVmLT52Yi52YjJfYnVmLCAwLCBzaXplb2Yoc3RydWN0DQo+ ID4gK3Zpc2NvbnRpX3ZpaWZfaXNwX3N0YXQpKTsNCj4gPiArDQo+ID4gKwljdXJfYnVmLT52Yi5z ZXF1ZW5jZSA9IHNlcXVlbmNlOw0KPiA+ICsJY3VyX2J1Zi0+dmIudmIyX2J1Zi50aW1lc3RhbXAg PSB0aW1lc3RhbXA7DQo+ID4gKwl2YjJfYnVmZmVyX2RvbmUoJmN1cl9idWYtPnZiLnZiMl9idWYs IFZCMl9CVUZfU1RBVEVfRE9ORSk7DQo+ID4gKw0KPiA+ICtkb25lOg0KPiA+ICsJc3Bpbl91bmxv Y2soJnN0YXRzX2Rldi0+c3RhdHNfbG9jayk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBp bnQgdmlpZl9zdGF0c19lbnVtX2ZtdF9tZXRhX2NhcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZA0K PiA+ICsqcHJpdiwgc3RydWN0IHY0bDJfZm10ZGVzYyAqZikgew0KPiA+ICsJc3RydWN0IHZpZGVv X2RldmljZSAqdmRldiA9IHZpZGVvX2RldmRhdGEoZmlsZSk7DQo+ID4gKw0KPiA+ICsJaWYgKGYt PmluZGV4ID4gMCB8fCBmLT50eXBlICE9IHZkZXYtPnF1ZXVlLT50eXBlKQ0KPiA+ICsJCXJldHVy biAtRUlOVkFMOw0KPiA+ICsNCj4gPiArCWYtPnBpeGVsZm9ybWF0ID0gVjRMMl9NRVRBX0ZNVF9W SVNDT05USV9WSUlGX1NUQVRTOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtzdGF0aWMgaW50IHZpaWZfc3RhdHNfZ19mbXRfbWV0YV9jYXAoc3RydWN0IGZpbGUg KmZpbGUsIHZvaWQgKnByaXYsDQo+ID4gK3N0cnVjdCB2NGwyX2Zvcm1hdCAqZikgew0KPiA+ICsJ c3RydWN0IHZpZGVvX2RldmljZSAqdmRldiA9IHZpZGVvX2RldmRhdGEoZmlsZSk7DQo+ID4gKwlz dHJ1Y3QgdjRsMl9tZXRhX2Zvcm1hdCAqbWV0YSA9ICZmLT5mbXQubWV0YTsNCj4gPiArDQo+ID4g KwlpZiAoZi0+dHlwZSAhPSB2ZGV2LT5xdWV1ZS0+dHlwZSkNCj4gPiArCQlyZXR1cm4gLUVJTlZB TDsNCj4gPiArDQo+ID4gKwltZW1zZXQobWV0YSwgMCwgc2l6ZW9mKCptZXRhKSk7DQo+ID4gKwlt ZXRhLT5kYXRhZm9ybWF0ID0gVjRMMl9NRVRBX0ZNVF9WSVNDT05USV9WSUlGX1NUQVRTOw0KPiA+ ICsJbWV0YS0+YnVmZmVyc2l6ZSA9IHNpemVvZihzdHJ1Y3QgdmlzY29udGlfdmlpZl9pc3Bfc3Rh dCk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBp bnQgdmlpZl9zdGF0c19xdWVyeWNhcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwgc3Ry dWN0DQo+ID4gK3Y0bDJfY2FwYWJpbGl0eSAqY2FwKSB7DQo+ID4gKwlzdHJ1Y3QgdmlkZW9fZGV2 aWNlICp2ZGV2ID0gdmlkZW9fZGV2ZGF0YShmaWxlKTsNCj4gPiArDQo+ID4gKwlzdHJzY3B5KGNh cC0+ZHJpdmVyLCBWSUlGX0RSSVZFUl9OQU1FLCBzaXplb2YoY2FwLT5kcml2ZXIpKTsNCj4gPiAr CXN0cnNjcHkoY2FwLT5jYXJkLCB2ZGV2LT5uYW1lLCBzaXplb2YoY2FwLT5jYXJkKSk7DQo+ID4g KwlzdHJzY3B5KGNhcC0+YnVzX2luZm8sIFZJSUZfQlVTX0lORk9fQkFTRSAiLTAiLA0KPiA+ICtz aXplb2YoY2FwLT5idXNfaW5mbykpOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfaW9jdGxfb3BzIHZpaWZfc3RhdHNf aW9jdGwgPSB7DQo+ID4gKwkudmlkaW9jX3JlcWJ1ZnMgPSB2YjJfaW9jdGxfcmVxYnVmcywNCj4g PiArCS52aWRpb2NfcXVlcnlidWYgPSB2YjJfaW9jdGxfcXVlcnlidWYsDQo+ID4gKwkudmlkaW9j X2NyZWF0ZV9idWZzID0gdmIyX2lvY3RsX2NyZWF0ZV9idWZzLA0KPiA+ICsJLnZpZGlvY19xYnVm ID0gdmIyX2lvY3RsX3FidWYsDQo+ID4gKwkudmlkaW9jX2RxYnVmID0gdmIyX2lvY3RsX2RxYnVm LA0KPiA+ICsJLnZpZGlvY19wcmVwYXJlX2J1ZiA9IHZiMl9pb2N0bF9wcmVwYXJlX2J1ZiwNCj4g PiArCS52aWRpb2NfZXhwYnVmID0gdmIyX2lvY3RsX2V4cGJ1ZiwNCj4gPiArCS52aWRpb2Nfc3Ry ZWFtb24gPSB2YjJfaW9jdGxfc3RyZWFtb24sDQo+ID4gKwkudmlkaW9jX3N0cmVhbW9mZiA9IHZi Ml9pb2N0bF9zdHJlYW1vZmYsDQo+ID4gKwkudmlkaW9jX2VudW1fZm10X21ldGFfY2FwID0gdmlp Zl9zdGF0c19lbnVtX2ZtdF9tZXRhX2NhcCwNCj4gPiArCS52aWRpb2NfZ19mbXRfbWV0YV9jYXAg PSB2aWlmX3N0YXRzX2dfZm10X21ldGFfY2FwLA0KPiA+ICsJLnZpZGlvY19zX2ZtdF9tZXRhX2Nh cCA9IHZpaWZfc3RhdHNfZ19mbXRfbWV0YV9jYXAsDQo+ID4gKwkudmlkaW9jX3RyeV9mbXRfbWV0 YV9jYXAgPSB2aWlmX3N0YXRzX2dfZm10X21ldGFfY2FwLA0KPiA+ICsJLnZpZGlvY19xdWVyeWNh cCA9IHZpaWZfc3RhdHNfcXVlcnljYXAsDQo+ID4gKwkudmlkaW9jX3N1YnNjcmliZV9ldmVudCA9 IHY0bDJfY3RybF9zdWJzY3JpYmVfZXZlbnQsDQo+ID4gKwkudmlkaW9jX3Vuc3Vic2NyaWJlX2V2 ZW50ID0gdjRsMl9ldmVudF91bnN1YnNjcmliZSwgfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgdjRsMl9maWxlX29wZXJhdGlvbnMgdmlpZl9zdGF0c19mb3BzID0geyAubW1hcCA9 DQo+IHZiMl9mb3BfbW1hcCwNCj4gPiArCQkJCQkJCSAgICAgLnVubG9ja2VkX2lvY3RsDQo+ID0g dmlkZW9faW9jdGwyLA0KPiA+ICsJCQkJCQkJICAgICAucG9sbCA9DQo+IHZiMl9mb3BfcG9sbCwN Cj4gPiArCQkJCQkJCSAgICAgLm9wZW4gPQ0KPiB2NGwyX2ZoX29wZW4sDQo+ID4gKwkJCQkJCQkg ICAgIC5yZWxlYXNlID0NCj4gdmIyX2ZvcF9yZWxlYXNlIH07DQo+IA0KPiBXZWlyZCBsYXlvdXQu DQo+IA0KDQpJJ2xsIGZpeCB0aGUgbGF5b3V0Lg0KDQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHZp aWZfc3RhdHNfdmIyX3F1ZXVlX3NldHVwKHN0cnVjdCB2YjJfcXVldWUgKnZxLCB1bnNpZ25lZCBp bnQNCj4gKm51bV9idWZmZXJzLA0KPiA+ICsJCQkJICAgICAgdW5zaWduZWQgaW50ICpudW1fcGxh bmVzLCB1bnNpZ25lZA0KPiBpbnQgc2l6ZXNbXSwNCj4gPiArCQkJCSAgICAgIHN0cnVjdCBkZXZp Y2UgKmFsbG9jX2RldnNbXSkgew0KPiA+ICsJKm51bV9wbGFuZXMgPSAxOw0KPiA+ICsJKm51bV9i dWZmZXJzID0gY2xhbXBfdCh1MzIsICpudW1fYnVmZmVycywgMiwgOCk7DQo+ID4gKwlzaXplc1sw XSA9IHNpemVvZihzdHJ1Y3QgdmlzY29udGlfdmlpZl9pc3Bfc3RhdCk7DQo+ID4gKw0KPiA+ICsJ cmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHZpaWZf YnVmZmVyICp2YjJfdG9fdmlpZihzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyDQo+ID4gKyp2YnVmKSB7 DQo+ID4gKwlyZXR1cm4gY29udGFpbmVyX29mKHZidWYsIHN0cnVjdCB2aWlmX2J1ZmZlciwgdmIp OyB9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBzdGF0c19kZXYgKnZiMnF1ZXVl X3RvX3N0YXRzZGV2KHN0cnVjdCB2YjJfcXVldWUNCj4gPiArKnEpIHsNCj4gPiArCXJldHVybiAo c3RydWN0IHN0YXRzX2RldiAqKXZiMl9nZXRfZHJ2X3ByaXYocSk7IH0NCj4gPiArDQo+ID4gK3N0 YXRpYyB2b2lkIHZpaWZfc3RhdHNfdmIyX2J1Zl9xdWV1ZShzdHJ1Y3QgdmIyX2J1ZmZlciAqdmIp IHsNCj4gPiArCXN0cnVjdCBzdGF0c19kZXYgKnN0YXRzX2RldiA9IHZiMnF1ZXVlX3RvX3N0YXRz ZGV2KHZiLT52YjJfcXVldWUpOw0KPiA+ICsJc3RydWN0IHZiMl92NGwyX2J1ZmZlciAqdmJ1ZiA9 IHRvX3ZiMl92NGwyX2J1ZmZlcih2Yik7DQo+ID4gKwlzdHJ1Y3QgdmlpZl9idWZmZXIgKmJ1ZiA9 IHZiMl90b192aWlmKHZidWYpOw0KPiA+ICsNCj4gPiArCXNwaW5fbG9ja19pcnEoJnN0YXRzX2Rl di0+c3RhdHNfbG9jayk7DQo+ID4gKwlsaXN0X2FkZF90YWlsKCZidWYtPnF1ZXVlLCAmc3RhdHNf ZGV2LT5zdGF0c19xdWV1ZSk7DQo+ID4gKwlzcGluX3VubG9ja19pcnEoJnN0YXRzX2Rldi0+c3Rh dHNfbG9jayk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgdmlpZl9zdGF0c192YjJf YnVmX3ByZXBhcmUoc3RydWN0IHZiMl9idWZmZXIgKnZiKSB7DQo+ID4gKwlpZiAodmIyX3BsYW5l X3NpemUodmIsIDApIDwgc2l6ZW9mKHN0cnVjdCB2aXNjb250aV92aWlmX2lzcF9zdGF0KSkNCj4g PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKwl2YjJfc2V0X3BsYW5lX3BheWxvYWQo dmIsIDAsIHNpemVvZihzdHJ1Y3QgdmlzY29udGlfdmlpZl9pc3Bfc3RhdCkpOw0KPiA+ICsNCj4g PiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCB2aWlmX3N0YXRz X3ZiMl9zdG9wX3N0cmVhbWluZyhzdHJ1Y3QgdmIyX3F1ZXVlICpxKSB7DQo+ID4gKwlzdHJ1Y3Qg c3RhdHNfZGV2ICpzdGF0c19kZXYgPSB2YjJxdWV1ZV90b19zdGF0c2RldihxKTsNCj4gPiArCXN0 cnVjdCB2aWlmX2J1ZmZlciAqYnVmOw0KPiA+ICsJdW5zaWduZWQgaW50IGk7DQo+ID4gKw0KPiA+ ICsJc3Bpbl9sb2NrX2lycSgmc3RhdHNfZGV2LT5zdGF0c19sb2NrKTsNCj4gPiArCWZvciAoaSA9 IDA7IGkgPCA4OyBpKyspIHsNCj4gPiArCQlpZiAobGlzdF9lbXB0eSgmc3RhdHNfZGV2LT5zdGF0 c19xdWV1ZSkpDQo+ID4gKwkJCWJyZWFrOw0KPiA+ICsJCWJ1ZiA9IGxpc3RfZmlyc3RfZW50cnko JnN0YXRzX2Rldi0+c3RhdHNfcXVldWUsIHN0cnVjdA0KPiB2aWlmX2J1ZmZlciwgcXVldWUpOw0K PiA+ICsJCWxpc3RfZGVsKCZidWYtPnF1ZXVlKTsNCj4gPiArCQl2YjJfYnVmZmVyX2RvbmUoJmJ1 Zi0+dmIudmIyX2J1ZiwNCj4gVkIyX0JVRl9TVEFURV9FUlJPUik7DQo+ID4gKwl9DQo+ID4gKwlz cGluX3VubG9ja19pcnEoJnN0YXRzX2Rldi0+c3RhdHNfbG9jayk7DQo+ID4gK30NCj4gPiArDQo+ ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdmIyX29wcyB2aWlmX3N0YXRzX3ZiMl9vcHMgPSB7DQo+ ID4gKwkucXVldWVfc2V0dXAgPSB2aWlmX3N0YXRzX3ZiMl9xdWV1ZV9zZXR1cCwNCj4gPiArCS53 YWl0X3ByZXBhcmUgPSB2YjJfb3BzX3dhaXRfcHJlcGFyZSwNCj4gPiArCS53YWl0X2ZpbmlzaCA9 IHZiMl9vcHNfd2FpdF9maW5pc2gsDQo+ID4gKwkuYnVmX3F1ZXVlID0gdmlpZl9zdGF0c192YjJf YnVmX3F1ZXVlLA0KPiA+ICsJLmJ1Zl9wcmVwYXJlID0gdmlpZl9zdGF0c192YjJfYnVmX3ByZXBh cmUsDQo+ID4gKwkuc3RvcF9zdHJlYW1pbmcgPSB2aWlmX3N0YXRzX3ZiMl9zdG9wX3N0cmVhbWlu ZywgfTsNCj4gPiArDQo+ID4gK2ludCB2aXNjb250aV92aWlmX3N0YXRzX3JlZ2lzdGVyKHN0cnVj dCB2aWlmX2RldmljZSAqdmlpZl9kZXYpIHsNCj4gPiArCXN0cnVjdCBzdGF0c19kZXYgKnN0YXRz X2RldiA9ICZ2aWlmX2Rldi0+c3RhdHNfZGV2Ow0KPiA+ICsJc3RydWN0IHZpZGVvX2RldmljZSAq dmRldiA9ICZzdGF0c19kZXYtPnZkZXY7DQo+ID4gKwlzdHJ1Y3QgdmIyX3F1ZXVlICpxID0gJnN0 YXRzX2Rldi0+dmIyX3ZxOw0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4gKwltdXRleF9pbml0 KCZzdGF0c19kZXYtPnZsb2NrKTsNCj4gPiArCUlOSVRfTElTVF9IRUFEKCZzdGF0c19kZXYtPnN0 YXRzX3F1ZXVlKTsNCj4gPiArCXNwaW5fbG9ja19pbml0KCZzdGF0c19kZXYtPnN0YXRzX2xvY2sp Ow0KPiA+ICsNCj4gPiArCXN0cnNjcHkodmRldi0+bmFtZSwgInZpaWZfc3RhdHMiLCBzaXplb2Yo dmRldi0+bmFtZSkpOw0KPiA+ICsNCj4gPiArCS8qIFJlZ2lzdGVyIHRoZSB2aWRlbyBkZXZpY2Ug Ki8NCj4gPiArCXZpZGVvX3NldF9kcnZkYXRhKHZkZXYsIHN0YXRzX2Rldik7DQo+ID4gKwl2ZGV2 LT5pb2N0bF9vcHMgPSAmdmlpZl9zdGF0c19pb2N0bDsNCj4gPiArCXZkZXYtPmZvcHMgPSAmdmlp Zl9zdGF0c19mb3BzOw0KPiA+ICsJdmRldi0+cmVsZWFzZSA9IHZpZGVvX2RldmljZV9yZWxlYXNl X2VtcHR5Ow0KPiA+ICsJdmRldi0+bG9jayA9ICZzdGF0c19kZXYtPnZsb2NrOw0KPiA+ICsJdmRl di0+djRsMl9kZXYgPSAmdmlpZl9kZXYtPnY0bDJfZGV2Ow0KPiA+ICsJdmRldi0+cXVldWUgPSAm c3RhdHNfZGV2LT52YjJfdnE7DQo+ID4gKwl2ZGV2LT5kZXZpY2VfY2FwcyA9IFY0TDJfQ0FQX01F VEFfQ0FQVFVSRSB8DQo+IFY0TDJfQ0FQX1NUUkVBTUlORzsNCj4gPiArCXZkZXYtPnZmbF9kaXIg PSBWRkxfRElSX1JYOw0KPiA+ICsNCj4gPiArCS8qIEluaXRpYWxpemUgdmIyIHF1ZXVlICovDQo+ ID4gKwlxLT50eXBlID0gVjRMMl9CVUZfVFlQRV9NRVRBX0NBUFRVUkU7DQo+ID4gKwlxLT5pb19t b2RlcyA9IFZCMl9NTUFQIHwgVkIyX1VTRVJQVFIgfCBWQjJfRE1BQlVGOw0KPiANCj4gU2FtZSBx dWVzdGlvbiByZWdhcmRpbmcgVkIyX1VTRVJQVFI6IGRvIHlvdSByZWFsbHkgbmVlZCB0aGlzPw0K PiANCg0KSSdsbCByZW1vdmUgVkIyX1VTRVJQVFIuDQoNCj4gPiArCXEtPmRydl9wcml2ID0gc3Rh dHNfZGV2Ow0KPiA+ICsJcS0+b3BzID0gJnZpaWZfc3RhdHNfdmIyX29wczsNCj4gPiArCXEtPm1l bV9vcHMgPSAmdmIyX3ZtYWxsb2NfbWVtb3BzOw0KPiA+ICsJcS0+YnVmX3N0cnVjdF9zaXplID0g c2l6ZW9mKHN0cnVjdCB2aWlmX2J1ZmZlcik7DQo+ID4gKwlxLT50aW1lc3RhbXBfZmxhZ3MgPSBW NEwyX0JVRl9GTEFHX1RJTUVTVEFNUF9NT05PVE9OSUM7DQo+ID4gKwlxLT5sb2NrID0gJnN0YXRz X2Rldi0+dmxvY2s7DQo+ID4gKwlxLT5kZXYgPSB2aWlmX2Rldi0+djRsMl9kZXYuZGV2Ow0KPiA+ ICsNCj4gPiArCXJldCA9IHZiMl9xdWV1ZV9pbml0KHEpOw0KPiA+ICsJaWYgKHJldCkNCj4gPiAr CQlyZXR1cm4gcmV0Ow0KPiA+ICsNCj4gPiArCXN0YXRzX2Rldi0+c3RhdHNfcGFkLmZsYWdzID0g TUVESUFfUEFEX0ZMX1NJTks7DQo+ID4gKwlyZXQgPSBtZWRpYV9lbnRpdHlfcGFkc19pbml0KCZ2 ZGV2LT5lbnRpdHksIFZJSUZfU1RBVFNfUEFEX05VTSwNCj4gJnN0YXRzX2Rldi0+c3RhdHNfcGFk KTsNCj4gPiArCWlmIChyZXQpDQo+ID4gKwkJZ290byBlcnJvcjsNCj4gPiArDQo+ID4gKwlyZXQg PSB2aWRlb19yZWdpc3Rlcl9kZXZpY2UodmRldiwgVkZMX1RZUEVfVklERU8sIC0xKTsNCj4gPiAr CWlmIChyZXQpIHsNCj4gPiArCQlkZXZfZXJyKHZpaWZfZGV2LT52NGwyX2Rldi5kZXYsICJ2aWRl b19yZWdpc3Rlcl9kZXZpY2UNCj4gZmFpbGVkOiAlZFxuIiwgcmV0KTsNCj4gPiArCQlnb3RvIGVy cm9yOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICsNCj4gPiArZXJyb3I6 DQo+ID4gKwltZWRpYV9lbnRpdHlfY2xlYW51cCgmdmRldi0+ZW50aXR5KTsNCj4gPiArCW11dGV4 X2Rlc3Ryb3koJnN0YXRzX2Rldi0+dmxvY2spOw0KPiA+ICsNCj4gPiArCXJldHVybiByZXQ7DQo+ ID4gK30NCj4gPiArDQo+ID4gK3ZvaWQgdmlzY29udGlfdmlpZl9zdGF0c191bnJlZ2lzdGVyKHN0 cnVjdCB2aWlmX2RldmljZSAqdmlpZl9kZXYpIHsNCj4gPiArCXN0cnVjdCBzdGF0c19kZXYgKnN0 YXRzX2RldiA9ICZ2aWlmX2Rldi0+c3RhdHNfZGV2Ow0KPiA+ICsJc3RydWN0IHZpZGVvX2Rldmlj ZSAqdmRldiA9ICZzdGF0c19kZXYtPnZkZXY7DQo+ID4gKw0KPiA+ICsJaWYgKCF2aWRlb19pc19y ZWdpc3RlcmVkKHZkZXYpKQ0KPiA+ICsJCXJldHVybjsNCj4gPiArDQo+ID4gKwl2YjJfdmlkZW9f dW5yZWdpc3Rlcl9kZXZpY2UodmRldik7DQo+ID4gKwltZWRpYV9lbnRpdHlfY2xlYW51cCgmdmRl di0+ZW50aXR5KTsNCj4gPiArCW11dGV4X2Rlc3Ryb3koJnN0YXRzX2Rldi0+dmxvY2spOw0KPiA+ ICt9DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdG9zaGliYS92aXNj b250aS92aWlmX3N0YXRzLmgNCj4gPiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdG9zaGliYS92 aXNjb250aS92aWlmX3N0YXRzLmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4 IDAwMDAwMDAwMDAuLjNmNzc4YzU4ZWYNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS90b3NoaWJhL3Zpc2NvbnRpL3ZpaWZfc3RhdHMuaA0KPiA+IEBA IC0wLDAgKzEsMTQgQEANCj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAg T1IgQlNELTItQ2xhdXNlICovDQo+ID4gKy8qIFRvc2hpYmEgVmlzY29udGkgVmlkZW8gQ2FwdHVy ZSBTdXBwb3J0DQo+ID4gKyAqDQo+ID4gKyAqIChDKSBDb3B5cmlnaHQgMjAyMyBUT1NISUJBIENP UlBPUkFUSU9ODQo+ID4gKyAqIChDKSBDb3B5cmlnaHQgMjAyMyBUb3NoaWJhIEVsZWN0cm9uaWMg RGV2aWNlcyAmIFN0b3JhZ2UNCj4gPiArQ29ycG9yYXRpb24gICovDQo+ID4gKw0KPiA+ICsjaWZu ZGVmIFZJSUZfU1RBVFNfSA0KPiA+ICsjZGVmaW5lIFZJSUZfU1RBVFNfSA0KPiA+ICsNCj4gPiAr dm9pZCB2aXNjb250aV92aWlmX3N0YXRzX2lzcihzdHJ1Y3QgdmlpZl9kZXZpY2UgKnZpaWZfZGV2 LCB1bnNpZ25lZA0KPiA+ICtpbnQgc2VxdWVuY2UsIHU2NCB0aW1lc3RhbXApOyBpbnQgdmlzY29u dGlfdmlpZl9zdGF0c19yZWdpc3RlcihzdHJ1Y3QNCj4gPiArdmlpZl9kZXZpY2UgKnZpaWZfZGV2 KTsgdm9pZCB2aXNjb250aV92aWlmX3N0YXRzX3VucmVnaXN0ZXIoc3RydWN0DQo+ID4gK3ZpaWZf ZGV2aWNlICp2aWlmX2Rldik7ICNlbmRpZiAvKiBWSUlGX1NUQVRTX0ggKi8NCj4gDQo+IFJlZ2Fy ZHMsDQo+IA0KPiAJSGFucw0KDQpCZXN0IFJlZ2FyZHMsDQpZdWppDQo=