Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp4099043rwd; Mon, 29 May 2023 23:56:49 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5Fh33D3dJPXMXz3oCkS2EG+kqAW8dllmnRAoYYD8jdm4CHPNWR9UmAZhlD3VMtlJ2R6Px1 X-Received: by 2002:a17:902:ec8b:b0:1ad:ea13:1916 with SMTP id x11-20020a170902ec8b00b001adea131916mr1725065plg.21.1685429808727; Mon, 29 May 2023 23:56:48 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1685429808; cv=pass; d=google.com; s=arc-20160816; b=BUyVwzJ5MqONJD8Cs9j0izVjZgO2AqFkq8IqGh+4jWI3CI7AczjilsLXLiVVJb5e9h O7hP7GI41n/qdW1DIWwbdTkEV4b3U5B2lH83IjLRsGZzphaTCAvkuHBZ1RlCSS5FOoJv Iuh1WAUmgyf21bdDe+goVShGmjZ5SopbVvSlovnxtjuZAjUDz1GdxJ6aFfuUoJMX+JCj gWUirXJCv3uw5/x21g27/uXjtRTA3Lav9nL91HVONPlyuXtEGMc7vMKhlFrJlc82vOrP TcMF9Kl/Rye6G8VA02ssTmrNNNsmSExXxnXGEbQBj9okDipE0khw88M9kktyqUoKinpO xEMA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:user-agent:content-language:accept-language:in-reply-to :references:message-id:date:thread-index:thread-topic:subject:cc:to :from:dkim-signature:dkim-signature; bh=/X1Vh1ZlQ8jI1GSp3gHDC3PS5prfOEVgwHZML1UdtXE=; b=KcibgGStwUuvspPhfe76VFk22nce1LUGxbgSvLF40EmbVuRMzCG0QYu7Et+7VXT/Mc 7S+sFZyRfBxixgASNyR+l8UhkA3vmsvqIDEAxQIGpXzeHPXB38357no/6le6s+FrDQ+y 9tFMtk2atHWOT7yb1YF8INmlCGWC7hfasw7NBpBTEXarSepX1QLf3inhHvuWtqpN151n lF/o2vt67bClTu7XbLKQvqhGYkGW6WxXLqstAoM14mfnb8NrW2vB8fNPtRQ2qixyyCyY iuS/S5+y/L7yFoqwBa6v9rSAwfGir8kKnTy0nq/3cM0q8Px/Hlkb9bu/MedZaW95ZTnN ihUw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=Iu+zoZMQ; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector2-microchiptechnology-onmicrosoft-com header.b=PfGrklPI; arc=pass (i=1 spf=pass spfdomain=microchip.com dkim=pass dkdomain=microchip.com dmarc=pass fromdomain=microchip.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k15-20020a170902c40f00b001a986ca38easi740654plk.15.2023.05.29.23.56.35; Mon, 29 May 2023 23:56:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=Iu+zoZMQ; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector2-microchiptechnology-onmicrosoft-com header.b=PfGrklPI; arc=pass (i=1 spf=pass spfdomain=microchip.com dkim=pass dkdomain=microchip.com dmarc=pass fromdomain=microchip.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230008AbjE3Grk (ORCPT + 99 others); Tue, 30 May 2023 02:47:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33730 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229603AbjE3Grh (ORCPT ); Tue, 30 May 2023 02:47:37 -0400 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AE1F992; Mon, 29 May 2023 23:47:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1685429252; x=1716965252; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=/X1Vh1ZlQ8jI1GSp3gHDC3PS5prfOEVgwHZML1UdtXE=; b=Iu+zoZMQ8r6DU/YieSs3mI/7X9+o4oulVmI1bdXBGa7ZIhb/UqoA3tBX B7PEy/2X5FoE7LOPK7dcj4Ts0jtE5A077DEMsxUypsrvyTMjWvUIqUhP5 qcWHcbLCrPRXqldfMH4bzEP/pmU0cgfJd0uOy09wKYdN3wP71hnf9Cmm8 dEm8Cl2dcZx/cgvL8rmI9IUU8BKYBMNHewatfxL9a/PDb+owUZHE28ODj jGq/c9TNWuFxfz/Tuo7osX7d2cBwvXd2JMocuD2229c80FI/vAdgA5YSt /+6TErUb4LV9viq7HxAmlXcNcBXTguD9b4hv5eEd3OqQ8/uTwtijqTTzB A==; X-IronPort-AV: E=Sophos;i="6.00,203,1681196400"; d="scan'208";a="213659944" X-Amp-Result: SKIPPED(no attachment in message) Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 29 May 2023 23:47:31 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Mon, 29 May 2023 23:47:28 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Mon, 29 May 2023 23:47:28 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NOJi0aLKux+Z3vATqjbGcGZLzH4ODhr4SpmxcGbnbt7x1SWhtZIcr1pHPF6fjPufql3OfAcR4ei8toR27ftF2Jr6xchbzs4MC4lLZBmhGcFMpYAMAhTw5KLp2M/JTpxPgNWXYAHCJ7y1n3R4A4nzKaYMRSXBIXJoRsheQb2ySD5bHoxeJjmu3Nr8eAlaFuwpEwQBVGqIdCZykfiW3wvCws/y026MO+qz2SW+sJPQ0nxRMKeLur6Kz9uY4zyCWHjflF9XFxUibeKcNgjOThhss2jc8mxlExKnzdWhorhIbNm60zt0UNqL/07SE2i9sSfONxPRdJ7AMrDRNmhPxS4+qQ== 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=/X1Vh1ZlQ8jI1GSp3gHDC3PS5prfOEVgwHZML1UdtXE=; b=NJJtBQyxQ9vC6zhfCNIXL76/ODGwFit1WE5nMazuXief7WUYBPCm7eTgNW+anIbqhhD/VLETTiZNauq/j8MQbjPIv3UAyfyoKvRa+drNU1lbsJTf54QDWckfxUI5Jfh68uuLzBGUVZJ9ss0u5FQhQdp9xIOHst7byZ7/ePPrtG/mRHgTENv25u0cAWzQJ/P6GqJNYtM4h/g96w/PB5Q/JvPyHLx7w8XKv+mhQlzoJ819c5l+ZUAfEktbTkCdm+HgnInGgfH+4HQyToV+f0qlShoQkk9vpZH+PSFCV96kUwnwSzHTdgaUL2eN9qal1p+QtvoOPKeBF2tYeGlDC0HhLA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/X1Vh1ZlQ8jI1GSp3gHDC3PS5prfOEVgwHZML1UdtXE=; b=PfGrklPIHjLlkrxOL/eZvopB1ziw2mapR5RFo5DZ8lRlBogFjeWpdp8IkYAaGxM9YtjcWXMRtOD9Dy9OKGSaXgsT8nM0Mc3bD1bbssQ5yOVKPy3nx5ar0y6eHn0XF8TSmuxLDNdMbgeMvVRk0ddw5BrGRCBfZ9C8KGO2VtitC/w= Received: from SJ2PR11MB7648.namprd11.prod.outlook.com (2603:10b6:a03:4c3::17) by CY8PR11MB7171.namprd11.prod.outlook.com (2603:10b6:930:92::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.23; Tue, 30 May 2023 06:47:25 +0000 Received: from SJ2PR11MB7648.namprd11.prod.outlook.com ([fe80::27bf:a69f:806f:67be]) by SJ2PR11MB7648.namprd11.prod.outlook.com ([fe80::27bf:a69f:806f:67be%5]) with mapi id 15.20.6433.020; Tue, 30 May 2023 06:47:25 +0000 From: To: , , , , , , , , , CC: , , , Subject: Re: [PATCH v5 2/3] ASoC: starfive: Add JH7110 TDM driver Thread-Topic: [PATCH v5 2/3] ASoC: starfive: Add JH7110 TDM driver Thread-Index: AQHZksKWbOi9N2ZAKkCgvv+8WuoIuQ== Date: Tue, 30 May 2023 06:47:24 +0000 Message-ID: <143e2fa2-e85d-8036-4f74-ca250c026c1b@microchip.com> References: <20230526145402.450-1-walker.chen@starfivetech.com> <20230526145402.450-3-walker.chen@starfivetech.com> In-Reply-To: <20230526145402.450-3-walker.chen@starfivetech.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microchip.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SJ2PR11MB7648:EE_|CY8PR11MB7171:EE_ x-ms-office365-filtering-correlation-id: 56c8ca7d-0774-4339-c246-08db60d9b9ea x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 0hdhhrPjXbmWKT64qYNdEJaOCW2oFnbRa2axadlhxD/ziFbg2k5vEdrKON9OYYVccBs3YIfe5Pm0wFzsS5JndryeqTI5v2xl7rq/JDZGE48y/WAMbWQgEbAkd3/cB0tHbQEyszKB4KI4bEzOwpqjpIsreVaTaV43aEDOEkN41axkpGvwhfXKZbRJ9dAftJ87nRMuSJ45f0wIhKrZaIZCKyPH4NgdZB2jvhvHWvgQL4niNU18+E9UqZRXVcUBzmXNhGLrQg/WCPmp6Thf+c9Ug0Jh/XU/RfeyPKyxkQnEwho5E+VwzaXNZ+nbqP0HTs3WdQ5z54nPEC572k5H+ulbCMlogNtNqcgrCqMlhcWHt7YR9iZAUO3FUcAWK2F1Ck5NoKWDcNzou33DcnYUFEhRR2ojNsytgpaldv3njfImN0cS8G+MRSY25Yqw3JnoXWHwW0mPV/hX6Dt67h7AKs13lIxOKh7u8mxWFumLmrNxpGIFBdm086cSM51Ofbu4JyIvpZmqe9t39hD1lOJ1AMk2YuAVxd/FjtwiFPjw8InoJg3KWUq1Na5d+rvKIjRlhHhBsJXi6oqRN1B9AZtOq0zvB3GDx9F9J2R1FJOkvN0aQ0O9rGZrtq44N6rlLp+boBoL+r034ezn153Nw7wAuM4LkJLf7rwaF9dke8AndJPZk3cDcD5OQI7/IAQ1K91uFMZI0qsCJj92Or+Ex+oXo5/JUw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR11MB7648.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(396003)(136003)(346002)(39860400002)(376002)(366004)(451199021)(36756003)(86362001)(31696002)(38070700005)(110136005)(54906003)(4326008)(316002)(91956017)(64756008)(76116006)(66946007)(66556008)(66476007)(66446008)(478600001)(6486002)(71200400001)(8936002)(8676002)(5660300002)(41300700001)(30864003)(2906002)(7416002)(38100700002)(921005)(122000001)(2616005)(53546011)(6512007)(6506007)(26005)(186003)(83380400001)(31686004)(43740500002)(45980500001)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?eEFabkRVSDVqQWdjREEwT3A2d2JBdXQvN2YxN3MrV1VpOExoeEdwcjFYcDQ3?= =?utf-8?B?cGJaUU1ZQ0FsODFLUFhORStpR1hNVDFNTHdoaGRtQWY3YkVqOUhRT3djcGRQ?= =?utf-8?B?djk0TjBJRSt2YnRYOFhIVkRiNWw1VXRQZnpQUk9CVzdzc01MVThQWUxBT2Qr?= =?utf-8?B?SXMrVkxKaTYzaEJ4a3phMzRKdmN3eUkrWjArRGxaeUFMWUZ4WGxWWXprYm5u?= =?utf-8?B?eldKbFFacGJxOUExZk9wQnZjNzZnNHlkV3ZYM3FYTUlkQXdCdnVURU5EK0xt?= =?utf-8?B?dVBweG5QNXZtbW9zaEFKY2FwbkcwYUFaaGJWbXdtWDFOSnBtdC9tamZYSkpp?= =?utf-8?B?RTVHUkthZXRZV1NRME5SKzJUR0xLQ1J6MHd3bTB4Y05sa3FPb016ejk1TWFS?= =?utf-8?B?TVpKMU1mcUY5RjM5QTdCZ2oxcWV2T2NwVjV2SkF6VkVvQkd2VmZ4cmNVa2Yx?= =?utf-8?B?ME94d05kcG14VHFqMDh0ejVCbDNHUnIwT0VxZ1RHOE41VVV2eDdlTkJUYjV4?= =?utf-8?B?SEl6MlRySVYreVNqZE55cDdIL3czUWlYZEJiOUl5NmVlUllMdXg1dDlSNjdU?= =?utf-8?B?cmN6WTFLOGNYWEo0ODFwVHhjQ0hGWWRLT3RyZm5aSHN0RXNDblhPZXM3MUhz?= =?utf-8?B?ZncwVXdQa3FsTnA0OEptcEpVbDNXQzMxMlc0ZXFMZEROY25YUWpVdXBpUnZB?= =?utf-8?B?elFXV3AvK3hnM1Bia2RkSFVBSjBQYldoUmRONXhKYU1xVkI4T1MrRGh3dG1H?= =?utf-8?B?MFJDZEg0eW5uOURxTUtjaWlCNG02SzVlWXJlLzFTUE9mSHROVm1OVXVYRjd5?= =?utf-8?B?YjEyWjJwT2NZSGgxTFR3aFVGN0MrZWwzb0pjYzhtcW8rN0I3bmhpcUJkZTNY?= =?utf-8?B?RGcyNTVEQlZLT0JWSlRNYkwwenhhR2VIRnBvQk9tQ1VMc0ZpL0JCSWR4N0ds?= =?utf-8?B?ZElzUTVqZ1lwSEd0ZjcrZmNLM3FuaWxwY0sxTldpMzFOZC8xeU16bTJ5UjBB?= =?utf-8?B?d1E4Rjl6Ym1RdU5PUk9haWdwS3dTQkpqaERPNkdXbWlvQnBlT2lqRURUekRJ?= =?utf-8?B?dDYwa1pFRWRKL3ViQ3ZUQ3BWWFNGZ2tDaS9ub0d2TDh5Q0prNmNxaWxhbWhS?= =?utf-8?B?L0lGSjJuSUxNVVN1M0xLZWNaN0tkaGpmL1YvejkxNlFuZmxWZVpISDdXVVE4?= =?utf-8?B?OXMxeVphU2JmNDR0VHY2Y0hScGN4aGNkZnF2Um1VcWQ3Y0NSSWIrVWgyM01H?= =?utf-8?B?MFRoZ25MbnE5QTVHR20yYnBRa1A0V0FLS2k1dHd3SjhZMkhUMVJhK0VhendF?= =?utf-8?B?empHcVNza0JxZkhsQklTSWl0blNDRy8yQ3JZN0lGbndXcXNER1o4ck9YelVF?= =?utf-8?B?TWVibjdxUTFXZndrRnYrZjduL2MyV3krcWRSR1hHdHo5NXV0YWswU1cyK0pG?= =?utf-8?B?SkpIU1BadnluU0oyVFI2UEtDeU83T0hLdG9MTUl6Q0hDTlRIdHpCbCtCaVRw?= =?utf-8?B?cFFnMVFsM1NYMHlQcVpwNmU2Rmw1THRYWFo3Q0UrVmg4bUE0aFhMdnE1UU1Q?= =?utf-8?B?bkpXRk45c2F5cGhMZmpmQjRaQkFzY3J0Z3U1UzV1ZmpHeHU2NHB4SGl3b3dM?= =?utf-8?B?QzVSaDFIV0xrY2h5MzJaOWtsWTlKM0cwZnpGdlVCdXIwd2VlOHNwMWg1TWpV?= =?utf-8?B?TEpMSmRaU2RLWlZFQkpaeFF4TnpaZC9Wc0ZkMWo4cy9JT3VZVG9sRGtlTmJM?= =?utf-8?B?T0FvK0wzZHNwZTVVcjdVMm54eTV1Z3ZUSDQ3anVJZWZIRW8xUHp0R2hhOTFl?= =?utf-8?B?ZTRlMlFSR3h0aDZUdXVSM2QreGFQcjZWMldwb2pHN2QyWE9tSE82Z2ZHbW9q?= =?utf-8?B?NzZNL1VvNHAzMGRNMnpWVmlBdS9FOXJ2UVAvTnZFSWlMWG9yVitvVllOUlZT?= =?utf-8?B?SWFVeHVxYlRWemJ0WHJZYndmRnFCUHJPVFRMSllqOGR4aEhnUkJNend6djcw?= =?utf-8?B?ejdDSmNNcGlsZDB1V3NpT0dlODNIdGN1UzRhV3lteSt0c2U5RUVyVWFPM1ZF?= =?utf-8?B?REFYZ01rQVpWUWQzK0YxdHVNR3pSbUZCMjlURFhhdCs5NW81UUdPSXZGSkRr?= =?utf-8?B?SHpZOVVUUjF1Qzl5YmtKc1E0TVJxenNmczAvby9tMnd4OVFacWkwWXZ6R3hI?= =?utf-8?B?WVE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ2PR11MB7648.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 56c8ca7d-0774-4339-c246-08db60d9b9ea X-MS-Exchange-CrossTenant-originalarrivaltime: 30 May 2023 06:47:24.6062 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: gmd5tG2uuZi9emJVp6py2fJafKZlFgwCcTNk7om6qtalxZJegrQriM5tIf3iH4+pspYqXoK9SacISzJ8QO/GGixEYd4TuQGisqbkz3leQUI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR11MB7171 X-Spam-Status: No, score=-4.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_MED, SPF_HELO_PASS,SPF_NONE,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gMjYuMDUuMjAyMyAxNzo1NCwgV2Fsa2VyIENoZW4gd3JvdGU6DQo+IEVYVEVSTkFMIEVNQUlM OiBEbyBub3QgY2xpY2sgbGlua3Mgb3Igb3BlbiBhdHRhY2htZW50cyB1bmxlc3MgeW91IGtub3cg dGhlIGNvbnRlbnQgaXMgc2FmZQ0KPiANCj4gQWRkIHRkbSBkcml2ZXIgc3VwcG9ydCBmb3IgdGhl IFN0YXJGaXZlIEpINzExMCBTb0MuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBXYWxrZXIgQ2hlbiA8 d2Fsa2VyLmNoZW5Ac3RhcmZpdmV0ZWNoLmNvbT4NCj4gLS0tDQo+ICBNQUlOVEFJTkVSUyAgICAg ICAgICAgICAgICAgICAgIHwgICA2ICsNCj4gIHNvdW5kL3NvYy9LY29uZmlnICAgICAgICAgICAg ICAgfCAgIDEgKw0KPiAgc291bmQvc29jL01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMSArDQo+ ICBzb3VuZC9zb2Mvc3RhcmZpdmUvS2NvbmZpZyAgICAgIHwgIDE1ICsNCj4gIHNvdW5kL3NvYy9z dGFyZml2ZS9NYWtlZmlsZSAgICAgfCAgIDIgKw0KPiAgc291bmQvc29jL3N0YXJmaXZlL2poNzEx MF90ZG0uYyB8IDY3OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAgNiBmaWxl cyBjaGFuZ2VkLCA3MDQgaW5zZXJ0aW9ucygrKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNvdW5k L3NvYy9zdGFyZml2ZS9LY29uZmlnDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc291bmQvc29jL3N0 YXJmaXZlL01ha2VmaWxlDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc291bmQvc29jL3N0YXJmaXZl L2poNzExMF90ZG0uYw0KPiANCj4gZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5F UlMNCj4gaW5kZXggMmEwNDk2NDQ4YjdmLi4wMDQ3OGQwN2E5ZjQgMTAwNjQ0DQo+IC0tLSBhL01B SU5UQUlORVJTDQo+ICsrKyBiL01BSU5UQUlORVJTDQo+IEBAIC0yMDEzMiw2ICsyMDEzMiwxMiBA QCBGOiAgICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3N0YXJmaXZl Kg0KPiAgRjogICAgIGRyaXZlcnMvc29jL3N0YXJmaXZlL2poNzF4eF9wbXUuYw0KPiAgRjogICAg IGluY2x1ZGUvZHQtYmluZGluZ3MvcG93ZXIvc3RhcmZpdmUsamg3MTEwLXBtdS5oDQo+IA0KPiAr U1RBUkZJVkUgSkg3MTEwIFRETSBEUklWRVINCj4gK006ICAgICBXYWxrZXIgQ2hlbiA8d2Fsa2Vy LmNoZW5Ac3RhcmZpdmV0ZWNoLmNvbT4NCj4gK1M6ICAgICBNYWludGFpbmVkDQo+ICtGOiAgICAg RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3N0YXJmaXZlLGpoNzExMC10 ZG0ueWFtbA0KPiArRjogICAgIHNvdW5kL3NvYy9zdGFyZml2ZS9qaDcxMTBfdGRtLmMNCj4gKw0K PiAgU1RBUkZJVkUgU09DIERSSVZFUlMNCj4gIE06ICAgICBDb25vciBEb29sZXkgPGNvbm9yQGtl cm5lbC5vcmc+DQo+ICBTOiAgICAgTWFpbnRhaW5lZA0KPiBkaWZmIC0tZ2l0IGEvc291bmQvc29j L0tjb25maWcgYi9zb3VuZC9zb2MvS2NvbmZpZw0KPiBpbmRleCA4NDhmYmFlMjZjM2IuLjhkMWQ5 NDAxZWNmMiAxMDA2NDQNCj4gLS0tIGEvc291bmQvc29jL0tjb25maWcNCj4gKysrIGIvc291bmQv c29jL0tjb25maWcNCj4gQEAgLTkxLDYgKzkxLDcgQEAgc291cmNlICJzb3VuZC9zb2Mvc2gvS2Nv bmZpZyINCj4gIHNvdXJjZSAic291bmQvc29jL3NvZi9LY29uZmlnIg0KPiAgc291cmNlICJzb3Vu ZC9zb2Mvc3BlYXIvS2NvbmZpZyINCj4gIHNvdXJjZSAic291bmQvc29jL3NwcmQvS2NvbmZpZyIN Cj4gK3NvdXJjZSAic291bmQvc29jL3N0YXJmaXZlL0tjb25maWciDQo+ICBzb3VyY2UgInNvdW5k L3NvYy9zdGkvS2NvbmZpZyINCj4gIHNvdXJjZSAic291bmQvc29jL3N0bS9LY29uZmlnIg0KPiAg c291cmNlICJzb3VuZC9zb2Mvc3VueGkvS2NvbmZpZyINCj4gZGlmZiAtLWdpdCBhL3NvdW5kL3Nv Yy9NYWtlZmlsZSBiL3NvdW5kL3NvYy9NYWtlZmlsZQ0KPiBpbmRleCA1MDdlYWVkMWQ2YTEuLjY1 YWViNGVmNDA2OCAxMDA2NDQNCj4gLS0tIGEvc291bmQvc29jL01ha2VmaWxlDQo+ICsrKyBiL3Nv dW5kL3NvYy9NYWtlZmlsZQ0KPiBAQCAtNTksNiArNTksNyBAQCBvYmotJChDT05GSUdfU05EX1NP QykgKz0gc2gvDQo+ICBvYmotJChDT05GSUdfU05EX1NPQykgICs9IHNvZi8NCj4gIG9iai0kKENP TkZJR19TTkRfU09DKSAgKz0gc3BlYXIvDQo+ICBvYmotJChDT05GSUdfU05EX1NPQykgICs9IHNw cmQvDQo+ICtvYmotJChDT05GSUdfU05EX1NPQykgICs9IHN0YXJmaXZlLw0KPiAgb2JqLSQoQ09O RklHX1NORF9TT0MpICArPSBzdGkvDQo+ICBvYmotJChDT05GSUdfU05EX1NPQykgICs9IHN0bS8N Cj4gIG9iai0kKENPTkZJR19TTkRfU09DKSAgKz0gc3VueGkvDQo+IGRpZmYgLS1naXQgYS9zb3Vu ZC9zb2Mvc3RhcmZpdmUvS2NvbmZpZyBiL3NvdW5kL3NvYy9zdGFyZml2ZS9LY29uZmlnDQo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uZmFmYjY4MWY4YzBhDQo+ IC0tLSAvZGV2L251bGwNCj4gKysrIGIvc291bmQvc29jL3N0YXJmaXZlL0tjb25maWcNCj4gQEAg LTAsMCArMSwxNSBAQA0KPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5 DQo+ICtjb25maWcgU05EX1NPQ19TVEFSRklWRQ0KPiArICAgICAgIHRyaXN0YXRlICJBdWRpbyBz dXBwb3J0IGZvciBTdGFyRml2ZSBTb0MiDQo+ICsgICAgICAgZGVwZW5kcyBvbiBDT01QSUxFX1RF U1QgfHwgQVJDSF9TVEFSRklWRQ0KPiArICAgICAgIGhlbHANCj4gKyAgICAgICAgIFNheSBZIG9y IE0gaWYgeW91IHdhbnQgdG8gYWRkIHN1cHBvcnQgZm9yIGNvZGVjcyBhdHRhY2hlZCB0bw0KPiAr ICAgICAgICAgdGhlIFN0YXJmaXZlIFNvQ3MnIEF1ZGlvIGludGVyZmFjZXMuIFlvdSB3aWxsIGFs c28gbmVlZCB0bw0KPiArICAgICAgICAgc2VsZWN0IHRoZSBhdWRpbyBpbnRlcmZhY2VzIHRvIHN1 cHBvcnQgYmVsb3cuDQo+ICsNCj4gK2NvbmZpZyBTTkRfU09DX0pINzExMF9URE0NCj4gKyAgICAg ICB0cmlzdGF0ZSAiSkg3MTEwIFRETSBkZXZpY2UgZHJpdmVyIg0KPiArICAgICAgIGRlcGVuZHMg b24gSEFWRV9DTEsgJiYgU05EX1NPQ19TVEFSRklWRQ0KPiArICAgICAgIHNlbGVjdCBTTkRfU09D X0dFTkVSSUNfRE1BRU5HSU5FX1BDTQ0KPiArICAgICAgIGhlbHANCj4gKyAgICAgICAgIFNheSBZ IG9yIE0gaWYgeW91IHdhbnQgdG8gYWRkIHN1cHBvcnQgZm9yIFN0YXJGaXZlIFRETSBkcml2ZXIu DQo+IGRpZmYgLS1naXQgYS9zb3VuZC9zb2Mvc3RhcmZpdmUvTWFrZWZpbGUgYi9zb3VuZC9zb2Mv c3RhcmZpdmUvTWFrZWZpbGUNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw MDAwMDAwLi5mN2Q5NjAyMTFkNzINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9zb3VuZC9zb2Mv c3RhcmZpdmUvTWFrZWZpbGUNCj4gQEAgLTAsMCArMSwyIEBADQo+ICsjIFN0YXJGaXZlIFBsYXRm b3JtIFN1cHBvcnQNCj4gK29iai0kKENPTkZJR19TTkRfU09DX0pINzExMF9URE0pICs9IGpoNzEx MF90ZG0ubw0KPiBkaWZmIC0tZ2l0IGEvc291bmQvc29jL3N0YXJmaXZlL2poNzExMF90ZG0uYyBi L3NvdW5kL3NvYy9zdGFyZml2ZS9qaDcxMTBfdGRtLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi45NzNiOTEwZDJkM2UNCj4gLS0tIC9kZXYvbnVsbA0KPiAr KysgYi9zb3VuZC9zb2Mvc3RhcmZpdmUvamg3MTEwX3RkbS5jDQo+IEBAIC0wLDAgKzEsNjc5IEBA DQo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiArLyoNCj4gKyAqIGpo NzExMF90ZG0uYyAtLSBTdGFyRml2ZSBKSDcxMTAgVERNIGRyaXZlcg0KPiArICoNCj4gKyAqIENv cHlyaWdodCAoQykgMjAyMyBTdGFyRml2ZSBUZWNobm9sb2d5IENvLiwgTHRkLg0KPiArICoNCj4g KyAqIEF1dGhvcjogV2Fsa2VyIENoZW4gPHdhbGtlci5jaGVuQHN0YXJmaXZldGVjaC5jb20+DQo+ ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPg0KPiArI2luY2x1ZGUgPGxpbnV4 L2RldmljZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2RtYWVuZ2luZS5oPg0KPiArI2luY2x1ZGUg PGxpbnV4L21vZHVsZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L29mX2lycS5oPg0KPiArI2luY2x1 ZGUgPGxpbnV4L29mX3BsYXRmb3JtLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5o Pg0KPiArI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3Jlc2V0 Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4NCj4gKyNpbmNsdWRlIDxzb3VuZC9kbWFl bmdpbmVfcGNtLmg+DQo+ICsjaW5jbHVkZSA8c291bmQvaW5pdHZhbC5oPg0KPiArI2luY2x1ZGUg PHNvdW5kL3BjbS5oPg0KPiArI2luY2x1ZGUgPHNvdW5kL3BjbV9wYXJhbXMuaD4NCj4gKyNpbmNs dWRlIDxzb3VuZC9zb2MuaD4NCj4gKyNpbmNsdWRlIDxzb3VuZC9zb2MtZGFpLmg+DQo+ICsNCj4g KyNkZWZpbmUgVERNX1BDTUdCQ1IgICAgICAgICAgICAgICAgICAgIDB4MDANCj4gKyAgICAgICAj ZGVmaW5lIFBDTUdCQ1JfTUFTSyAgICAgICAgICAgIDB4MWUNCg0KVGhpcyBpcyBub3QgdXNlZC4N Cg0KPiArICAgICAgICNkZWZpbmUgUENNR0JDUl9FTkFCTEUgICAgICAgICAgQklUKDApDQoNClNh bWUNCg0KPiArICAgICAgICNkZWZpbmUgUENNR0JDUl9UUklUWEVOICAgICAgICAgQklUKDQpDQoN ClRoaXMgaXMgbm90IHVzZWQNCg0KPiArICAgICAgICNkZWZpbmUgQ0xLUE9MX0JJVCAgICAgICAg ICAgICAgNQ0KPiArICAgICAgICNkZWZpbmUgVFJJVFhFTl9CSVQgICAgICAgICAgICAgNA0KPiAr ICAgICAgICNkZWZpbmUgRUxNX0JJVCAgICAgICAgICAgICAgICAgMw0KPiArICAgICAgICNkZWZp bmUgU1lOQ01fQklUICAgICAgICAgICAgICAgMg0KPiArICAgICAgICNkZWZpbmUgTVNfQklUICAg ICAgICAgICAgICAgICAgMQ0KDQpJbnN0ZWFkIG9mIHRoZXNlICpfQklUIGRlZmluZXMgYXMgcGxh aW4gbnVtYmVycyB5b3UgY2FuIGRlZmluZWQgdGhlbSB1c2luZw0KQklUKCkgbWFjcm8gYW5kIHVz ZSBtYWNyb3MgaW4gcGxhY2UgaW5zdGVhZCBvZg0KICAgICAgIGVudW0gVERNX0NMS1BPTCBjbGtw b2xpdHk7DQogICAgICAgZW51bSBURE1fRUxNICAgIGVsbTsNCiAgICAgICBlbnVtIFRETV9TWU5D TSAgc3luY207DQogICAgICAgZW51bSBURE1fTUFTVEVSX1NMQVZFX01PREUgbXNfbW9kZTsNCg0K VGhlc2UgMSB0YWIgaW5kZW50YXRpb24gaW4gZGVmaW5lcyBzZWVtcyBhIGJpdCBvZGQuDQoNCj4g KyNkZWZpbmUgVERNX1BDTVRYQ1IgICAgICAgICAgICAgICAgICAgIDB4MDQNCj4gKyAgICAgICAj ZGVmaW5lIFBDTVRYQ1JfVFhFTiAgICAgICAgICAgIEJJVCgwKQ0KPiArICAgICAgICNkZWZpbmUg SUZMX0JJVCAgICAgICAgICAgICAgICAgMTENCj4gKyAgICAgICAjZGVmaW5lIFdMX0JJVCAgICAg ICAgICAgICAgICAgIDgNCj4gKyAgICAgICAjZGVmaW5lIFNTQ0FMRV9CSVQgICAgICAgICAgICAg IDQNCj4gKyAgICAgICAjZGVmaW5lIFNMX0JJVCAgICAgICAgICAgICAgICAgIDINCj4gKyAgICAg ICAjZGVmaW5lIExSSl9CSVQgICAgICAgICAgICAgICAgIDENCj4gKyNkZWZpbmUgVERNX1BDTVJY Q1IgICAgICAgICAgICAgICAgICAgIDB4MDgNCj4gKyAgICAgICAjZGVmaW5lIFBDTVJYQ1JfUlhF TiAgICAgICAgICAgIEJJVCgwKQ0KPiArICAgICAgICNkZWZpbmUgUENNUlhDUl9SWFNMX01BU0sg ICAgICAgMHhjDQoNClRoZXNlOg0KDQo+ICsgICAgICAgI2RlZmluZSBQQ01SWENSX1JYU0xfMTZC SVQgICAgICAweDQNCj4gKyAgICAgICAjZGVmaW5lIFBDTVJYQ1JfUlhTTF8zMkJJVCAgICAgIDB4 OA0KPiArICAgICAgICNkZWZpbmUgUENNUlhDUl9TQ0FMRV9NQVNLICAgICAgMHhmMA0KPiArICAg ICAgICNkZWZpbmUgUENNUlhDUl9TQ0FMRV8xQ0ggICAgICAgMHgxMA0KDQphcmUgbm90IHVzZWQN Cg0KPiArI2RlZmluZSBURE1fUENNRElWICAgICAgICAgICAgICAgICAgICAgMHgwYw0KPiArDQo+ ICsjZGVmaW5lIEpINzExMF9URE1fRklGTyAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcwYzAw MDANCj4gKyNkZWZpbmUgSkg3MTEwX1RETV9GSUZPX0RFUFRIICAgICAgICAgIDMyDQo+ICsNCj4g K2VudW0gVERNX01BU1RFUl9TTEFWRV9NT0RFIHsNCj4gKyAgICAgICBURE1fQVNfTUFTVEVSID0g MCwNCj4gKyAgICAgICBURE1fQVNfU0xBVkUsDQo+ICt9Ow0KPiArDQo+ICtlbnVtIFRETV9DTEtQ T0wgew0KPiArICAgICAgIC8qIHR4IHJhaXNpbmcgYW5kIHJ4IGZhbGxpbmcgKi8NCj4gKyAgICAg ICBURE1fVFhfUkFTSU5HX1JYX0ZBTExJTkcgPSAwLA0KPiArICAgICAgIC8qIHR4IGZhbGxpbmcg YW5kIHJ4IHJhaXNpbmcgKi8NCj4gKyAgICAgICBURE1fVFhfRkFMTElOR19SWF9SQVNJTkcsDQo+ ICt9Ow0KPiArDQo+ICtlbnVtIFRETV9FTE0gew0KPiArICAgICAgIC8qIG9ubHkgd29yayB3aGls ZSBTWU5DTT0wICovDQo+ICsgICAgICAgVERNX0VMTV9MQVRFID0gMCwNCj4gKyAgICAgICBURE1f RUxNX0VBUkxZLA0KPiArfTsNCj4gKw0KPiArZW51bSBURE1fU1lOQ00gew0KPiArICAgICAgIC8q IHNob3J0IGZyYW1lIHN5bmMgKi8NCj4gKyAgICAgICBURE1fU1lOQ01fU0hPUlQgPSAwLA0KPiAr ICAgICAgIC8qIGxvbmcgZnJhbWUgc3luYyAqLw0KPiArICAgICAgIFRETV9TWU5DTV9MT05HLA0K PiArfTsNCj4gKw0KPiArZW51bSBURE1fSUZMIHsNCj4gKyAgICAgICAvKiBGSUZPIHRvIHNlbmQg b3IgcmVjZWl2ZWQgOiBoYWxmLTEvMiwgUXVhcnRlci0xLzQgKi8NCj4gKyAgICAgICBURE1fRklG T19IQUxGID0gMCwNCj4gKyAgICAgICBURE1fRklGT19RVUFSVEVSLA0KPiArfTsNCj4gKw0KPiAr ZW51bSBURE1fV0wgew0KPiArICAgICAgIC8qIHNlbmQgb3IgcmVjZWl2ZWQgd29yZCBsZW5ndGgg Ki8NCj4gKyAgICAgICBURE1fOEJJVF9XT1JEX0xFTiA9IDAsDQo+ICsgICAgICAgVERNXzE2QklU X1dPUkRfTEVOLA0KPiArICAgICAgIFRETV8yMEJJVF9XT1JEX0xFTiwNCj4gKyAgICAgICBURE1f MjRCSVRfV09SRF9MRU4sDQo+ICsgICAgICAgVERNXzMyQklUX1dPUkRfTEVOLA0KPiArfTsNCj4g Kw0KPiArZW51bSBURE1fU0wgew0KPiArICAgICAgIC8qIHNlbmQgb3IgcmVjZWl2ZWQgc2xvdCBs ZW5ndGggKi8NCj4gKyAgICAgICBURE1fOEJJVF9TTE9UX0xFTiA9IDAsDQo+ICsgICAgICAgVERN XzE2QklUX1NMT1RfTEVOLA0KPiArICAgICAgIFRETV8zMkJJVF9TTE9UX0xFTiwNCj4gK307DQo+ ICsNCj4gK2VudW0gVERNX0xSSiB7DQo+ICsgICAgICAgLyogbGVmdC1qdXN0aWZ5IG9yIHJpZ2h0 LWp1c3RpZnkgKi8NCj4gKyAgICAgICBURE1fUklHSFRfSlVTVElGWSA9IDAsDQo+ICsgICAgICAg VERNX0xFRlRfSlVTVElGVCwNCj4gK307DQo+ICsNCj4gK3N0cnVjdCB0ZG1fY2hhbl9jZmcgew0K PiArICAgICAgIGVudW0gVERNX0lGTCBpZmw7DQo+ICsgICAgICAgZW51bSBURE1fV0wgIHdsOw0K PiArICAgICAgIHVuc2lnbmVkIGNoYXIgc3NjYWxlOw0KPiArICAgICAgIGVudW0gVERNX1NMICBz bDsNCj4gKyAgICAgICBlbnVtIFRETV9MUkogbHJqOw0KPiArICAgICAgIHVuc2lnbmVkIGNoYXIg ZW5hYmxlOw0KPiArfTsNCj4gKw0KPiArc3RydWN0IGpoNzExMF90ZG1fZGV2IHsNCj4gKyAgICAg ICB2b2lkIF9faW9tZW0gKnRkbV9iYXNlOw0KPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldjsN Cj4gKyAgICAgICBzdHJ1Y3QgY2xrX2J1bGtfZGF0YSBjbGtzWzZdOw0KPiArICAgICAgIHN0cnVj dCByZXNldF9jb250cm9sICpyZXNldHM7DQo+ICsNCj4gKyAgICAgICBlbnVtIFRETV9DTEtQT0wg Y2xrcG9saXR5Ow0KPiArICAgICAgIGVudW0gVERNX0VMTSAgICBlbG07DQo+ICsgICAgICAgZW51 bSBURE1fU1lOQ00gIHN5bmNtOw0KPiArICAgICAgIGVudW0gVERNX01BU1RFUl9TTEFWRV9NT0RF IG1zX21vZGU7DQo+ICsNCj4gKyAgICAgICBzdHJ1Y3QgdGRtX2NoYW5fY2ZnIHR4Ow0KPiArICAg ICAgIHN0cnVjdCB0ZG1fY2hhbl9jZmcgcng7DQo+ICsNCj4gKyAgICAgICB1MTYgc3luY2RpdjsN Cj4gKyAgICAgICB1MzIgc2FtcGxlcmF0ZTsNCj4gKyAgICAgICB1MzIgcGNtY2xrOw0KPiArDQo+ ICsgICAgICAgLyogZGF0YSByZWxhdGVkIHRvIERNQSB0cmFuc2ZlcnMgYi93IHRkbSBhbmQgRE1B QyAqLw0KPiArICAgICAgIHN0cnVjdCBzbmRfZG1hZW5naW5lX2RhaV9kbWFfZGF0YSBwbGF5X2Rt YV9kYXRhOw0KPiArICAgICAgIHN0cnVjdCBzbmRfZG1hZW5naW5lX2RhaV9kbWFfZGF0YSBjYXB0 dXJlX2RtYV9kYXRhOw0KPiArICAgICAgIHUzMiBzYXZlZF9wY21nYmNyOw0KPiArICAgICAgIHUz MiBzYXZlZF9wY210eGNyOw0KPiArICAgICAgIHUzMiBzYXZlZF9wY21yeGNyOw0KPiArICAgICAg IHUzMiBzYXZlZF9wY21kaXY7DQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHUzMiBqaDcx MTBfdGRtX3JlYWRsKHN0cnVjdCBqaDcxMTBfdGRtX2RldiAqdGRtLCB1MTYgcmVnKQ0KPiArew0K PiArICAgICAgIHJldHVybiByZWFkbF9yZWxheGVkKHRkbS0+dGRtX2Jhc2UgKyByZWcpOw0KPiAr fQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgamg3MTEwX3RkbV93cml0ZWwoc3RydWN0IGpo NzExMF90ZG1fZGV2ICp0ZG0sIHUxNiByZWcsIHUzMiB2YWwpDQo+ICt7DQo+ICsgICAgICAgd3Jp dGVsX3JlbGF4ZWQodmFsLCB0ZG0tPnRkbV9iYXNlICsgcmVnKTsNCj4gK30NCj4gKw0KPiArc3Rh dGljIHZvaWQgamg3MTEwX3RkbV9zYXZlX2NvbnRleHQoc3RydWN0IGpoNzExMF90ZG1fZGV2ICp0 ZG0sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzbmRfcGNt X3N1YnN0cmVhbSAqc3Vic3RyZWFtKQ0KPiArew0KPiArICAgICAgIGlmIChzdWJzdHJlYW0tPnN0 cmVhbSA9PSBTTkRSVl9QQ01fU1RSRUFNX1BMQVlCQUNLKQ0KPiArICAgICAgICAgICAgICAgdGRt LT5zYXZlZF9wY210eGNyID0gamg3MTEwX3RkbV9yZWFkbCh0ZG0sIFRETV9QQ01UWENSKTsNCj4g KyAgICAgICBlbHNlDQo+ICsgICAgICAgICAgICAgICB0ZG0tPnNhdmVkX3BjbXJ4Y3IgPSBqaDcx MTBfdGRtX3JlYWRsKHRkbSwgVERNX1BDTVJYQ1IpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9p ZCBqaDcxMTBfdGRtX3N0YXJ0KHN0cnVjdCBqaDcxMTBfdGRtX2RldiAqdGRtLA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFt KQ0KPiArew0KPiArICAgICAgIHUzMiBkYXRhOw0KPiArDQo+ICsgICAgICAgZGF0YSA9IGpoNzEx MF90ZG1fcmVhZGwodGRtLCBURE1fUENNR0JDUik7DQo+ICsgICAgICAgamg3MTEwX3RkbV93cml0 ZWwodGRtLCBURE1fUENNR0JDUiwgZGF0YSB8IFBDTUdCQ1JfRU5BQkxFKTsNCj4gKw0KPiArICAg ICAgIC8qIHJlc3RvcmUgY29udGV4dCAqLw0KPiArICAgICAgIGlmIChzdWJzdHJlYW0tPnN0cmVh bSA9PSBTTkRSVl9QQ01fU1RSRUFNX1BMQVlCQUNLKQ0KPiArICAgICAgICAgICAgICAgamg3MTEw X3RkbV93cml0ZWwodGRtLCBURE1fUENNVFhDUiwgdGRtLT5zYXZlZF9wY210eGNyIHwgUENNVFhD Ul9UWEVOKTsNCj4gKyAgICAgICBlbHNlDQo+ICsgICAgICAgICAgICAgICBqaDcxMTBfdGRtX3dy aXRlbCh0ZG0sIFRETV9QQ01SWENSLCB0ZG0tPnNhdmVkX3BjbXJ4Y3IgfCBQQ01SWENSX1JYRU4p Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBqaDcxMTBfdGRtX3N0b3Aoc3RydWN0IGpoNzEx MF90ZG1fZGV2ICp0ZG0sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc25k X3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkNCj4gK3sNCj4gKyAgICAgICB1bnNpZ25lZCBpbnQg dmFsOw0KPiArDQo+ICsgICAgICAgaWYgKHN1YnN0cmVhbS0+c3RyZWFtID09IFNORFJWX1BDTV9T VFJFQU1fUExBWUJBQ0spIHsNCj4gKyAgICAgICAgICAgICAgIHZhbCA9IGpoNzExMF90ZG1fcmVh ZGwodGRtLCBURE1fUENNVFhDUik7DQo+ICsgICAgICAgICAgICAgICB2YWwgJj0gflBDTVRYQ1Jf VFhFTjsNCj4gKyAgICAgICAgICAgICAgIGpoNzExMF90ZG1fd3JpdGVsKHRkbSwgVERNX1BDTVRY Q1IsIHZhbCk7DQo+ICsgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgICAgIHZhbCA9IGpo NzExMF90ZG1fcmVhZGwodGRtLCBURE1fUENNUlhDUik7DQo+ICsgICAgICAgICAgICAgICB2YWwg Jj0gflBDTVJYQ1JfUlhFTjsNCj4gKyAgICAgICAgICAgICAgIGpoNzExMF90ZG1fd3JpdGVsKHRk bSwgVERNX1BDTVJYQ1IsIHZhbCk7DQo+ICsgICAgICAgfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMg aW50IGpoNzExMF90ZG1fc3luY2RpdihzdHJ1Y3Qgamg3MTEwX3RkbV9kZXYgKnRkbSkNCj4gK3sN Cj4gKyAgICAgICB1MzIgc2wsIHNzY2FsZSwgc3luY2RpdjsNCj4gKw0KPiArICAgICAgIGlmICh0 ZG0tPnJ4LnNsID49IHRkbS0+dHguc2wpDQo+ICsgICAgICAgICAgICAgICBzbCA9IHRkbS0+cngu c2w7DQo+ICsgICAgICAgZWxzZQ0KPiArICAgICAgICAgICAgICAgc2wgPSB0ZG0tPnR4LnNsOw0K PiArDQo+ICsgICAgICAgaWYgKHRkbS0+cnguc3NjYWxlID49IHRkbS0+dHguc3NjYWxlKQ0KPiAr ICAgICAgICAgICAgICAgc3NjYWxlID0gdGRtLT5yeC5zc2NhbGU7DQo+ICsgICAgICAgZWxzZQ0K PiArICAgICAgICAgICAgICAgc3NjYWxlID0gdGRtLT50eC5zc2NhbGU7DQo+ICsNCj4gKyAgICAg ICBzeW5jZGl2ID0gdGRtLT5wY21jbGsgLyB0ZG0tPnNhbXBsZXJhdGUgLSAxOw0KPiArDQo+ICsg ICAgICAgaWYgKChzeW5jZGl2ICsgMSkgPCAoc2wgKiBzc2NhbGUpKSB7DQo+ICsgICAgICAgICAg ICAgICBkZXZfZXJyKHRkbS0+ZGV2LCAiRmFpbGVkIHRvIHNldCBzeW5jZGl2IVxuIik7DQo+ICsg ICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAg ICBpZiAodGRtLT5zeW5jbSA9PSBURE1fU1lOQ01fTE9ORyAmJg0KPiArICAgICAgICAgICAodGRt LT5yeC5zc2NhbGUgPD0gMSB8fCB0ZG0tPnR4LnNzY2FsZSA8PSAxKSAmJg0KPiArICAgICAgICAg ICAoKHN5bmNkaXYgKyAxKSA8PSBzbCkpIHsNCj4gKyAgICAgICAgICAgICAgIGRldl9lcnIodGRt LT5kZXYsICJXcm9uZyBzeW5jZGl2ISBJdCBtdXN0IGJlIChzeW5jZGl2KzEpID4gbWF4W3R4LnNs LCByeC5zbF1cbiIpOw0KPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ICsgICAg ICAgfQ0KPiArDQo+ICsgICAgICAgamg3MTEwX3RkbV93cml0ZWwodGRtLCBURE1fUENNRElWLCBz eW5jZGl2KTsNCj4gKyAgICAgICByZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBq aDcxMTBfdGRtX2NvbmZpZyhzdHJ1Y3Qgamg3MTEwX3RkbV9kZXYgKnRkbSwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkN Cj4gK3sNCj4gKyAgICAgICB1MzIgZGF0YXJ4LCBkYXRhdHg7DQo+ICsgICAgICAgaW50IHJldDsN Cj4gKw0KPiArICAgICAgIHJldCA9IGpoNzExMF90ZG1fc3luY2Rpdih0ZG0pOw0KPiArICAgICAg IGlmIChyZXQpDQo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiArDQo+ICsgICAgICAg ZGF0YXJ4ID0gKHRkbS0+cnguaWZsIDw8IElGTF9CSVQpIHwNCj4gKyAgICAgICAgICAgICAgICAg KHRkbS0+cngud2wgPDwgV0xfQklUKSB8DQo+ICsgICAgICAgICAgICAgICAgICh0ZG0tPnJ4LnNz Y2FsZSA8PCBTU0NBTEVfQklUKSB8DQo+ICsgICAgICAgICAgICAgICAgICh0ZG0tPnJ4LnNsIDw8 IFNMX0JJVCkgfA0KPiArICAgICAgICAgICAgICAgICAodGRtLT5yeC5scmogPDwgTFJKX0JJVCk7 DQo+ICsNCj4gKyAgICAgICBkYXRhdHggPSAodGRtLT50eC5pZmwgPDwgSUZMX0JJVCkgfA0KPiAr ICAgICAgICAgICAgICAgICAodGRtLT50eC53bCA8PCBXTF9CSVQpIHwNCj4gKyAgICAgICAgICAg ICAgICAgKHRkbS0+dHguc3NjYWxlIDw8IFNTQ0FMRV9CSVQpIHwNCj4gKyAgICAgICAgICAgICAg ICAgKHRkbS0+dHguc2wgPDwgU0xfQklUKSB8DQo+ICsgICAgICAgICAgICAgICAgICh0ZG0tPnR4 LmxyaiA8PCBMUkpfQklUKTsNCj4gKw0KPiArICAgICAgIGlmIChzdWJzdHJlYW0tPnN0cmVhbSA9 PSBTTkRSVl9QQ01fU1RSRUFNX1BMQVlCQUNLKQ0KPiArICAgICAgICAgICAgICAgamg3MTEwX3Rk bV93cml0ZWwodGRtLCBURE1fUENNVFhDUiwgZGF0YXR4KTsNCj4gKyAgICAgICBlbHNlDQo+ICsg ICAgICAgICAgICAgICBqaDcxMTBfdGRtX3dyaXRlbCh0ZG0sIFRETV9QQ01SWENSLCBkYXRhcngp Ow0KPiArDQo+ICsgICAgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGpo NzExMF90ZG1fY2xrX2Rpc2FibGUoc3RydWN0IGpoNzExMF90ZG1fZGV2ICp0ZG0pDQo+ICt7DQo+ ICsgICAgICAgY2xrX2J1bGtfZGlzYWJsZV91bnByZXBhcmUoQVJSQVlfU0laRSh0ZG0tPmNsa3Mp LCB0ZG0tPmNsa3MpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGpoNzExMF90ZG1fY2xrX2Vu YWJsZShzdHJ1Y3Qgamg3MTEwX3RkbV9kZXYgKnRkbSkNCj4gK3sNCj4gKyAgICAgICBpbnQgcmV0 Ow0KPiArDQo+ICsgICAgICAgcmV0ID0gY2xrX2J1bGtfcHJlcGFyZV9lbmFibGUoQVJSQVlfU0la RSh0ZG0tPmNsa3MpLCB0ZG0tPmNsa3MpOw0KPiArICAgICAgIGlmIChyZXQpIHsNCj4gKyAgICAg ICAgICAgICAgIGRldl9lcnIodGRtLT5kZXYsICJGYWlsZWQgdG8gZW5hYmxlIHRkbSBjbG9ja3Nc biIpOw0KPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gKyAgICAgICB9DQo+ICsNCj4g KyAgICAgICByZXQgPSByZXNldF9jb250cm9sX2RlYXNzZXJ0KHRkbS0+cmVzZXRzKTsNCj4gKyAg ICAgICBpZiAocmV0KSB7DQo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKHRkbS0+ZGV2LCAiRmFp bGVkIHRvIGRlYXNzZXJ0IHRkbSByZXNldHNcbiIpOw0KPiArICAgICAgICAgICAgICAgZ290byBk aXNfdGRtX2NsazsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICAvKiBzZWxlY3QgdGRtX2V4 dCBjbG9jayBhcyB0aGUgY2xvY2sgc291cmNlIGZvciB0ZG0gKi8NCj4gKyAgICAgICByZXQgPSBj bGtfc2V0X3BhcmVudCh0ZG0tPmNsa3NbNV0uY2xrLCB0ZG0tPmNsa3NbNF0uY2xrKTsNCj4gKyAg ICAgICBpZiAocmV0KSB7DQo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKHRkbS0+ZGV2LCAiQ2Fu J3Qgc2V0IGV4dGVybiBjbG9jayBzb3VyY2UgZm9yIGNsa190ZG1cbiIpOw0KPiArICAgICAgICAg ICAgICAgZ290byBkaXNfdGRtX2NsazsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICByZXR1 cm4gMDsNCj4gKw0KPiArZGlzX3RkbV9jbGs6DQo+ICsgICAgICAgY2xrX2J1bGtfZGlzYWJsZV91 bnByZXBhcmUoQVJSQVlfU0laRSh0ZG0tPmNsa3MpLCB0ZG0tPmNsa3MpOw0KPiArDQo+ICsgICAg ICAgcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBqaDcxMTBfdGRtX3J1bnRp bWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0IGpo NzExMF90ZG1fZGV2ICp0ZG0gPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gKw0KPiArICAgICAg IGpoNzExMF90ZG1fY2xrX2Rpc2FibGUodGRtKTsNCj4gKyAgICAgICByZXR1cm4gMDsNCj4gK30N Cj4gKw0KPiArc3RhdGljIGludCBqaDcxMTBfdGRtX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZp Y2UgKmRldikNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3Qgamg3MTEwX3RkbV9kZXYgKnRkbSA9IGRl dl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiArDQo+ICsgICAgICAgcmV0dXJuIGpoNzExMF90ZG1fY2xr X2VuYWJsZSh0ZG0pOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGpoNzExMF90ZG1fc3lzdGVt X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBqaDcx MTBfdGRtX2RldiAqdGRtID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ICsNCj4gKyAgICAgICAv KiBzYXZlIGNvbnRleHQgKi8NCj4gKyAgICAgICB0ZG0tPnNhdmVkX3BjbWdiY3IgPSBqaDcxMTBf dGRtX3JlYWRsKHRkbSwgVERNX1BDTUdCQ1IpOw0KPiArICAgICAgIHRkbS0+c2F2ZWRfcGNtZGl2 ID0gamg3MTEwX3RkbV9yZWFkbCh0ZG0sIFRETV9QQ01ESVYpOw0KPiArDQo+ICsgICAgICAgcmV0 dXJuIHBtX3J1bnRpbWVfZm9yY2Vfc3VzcGVuZChkZXYpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMg aW50IGpoNzExMF90ZG1fc3lzdGVtX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ICt7DQo+ ICsgICAgICAgc3RydWN0IGpoNzExMF90ZG1fZGV2ICp0ZG0gPSBkZXZfZ2V0X2RydmRhdGEoZGV2 KTsNCj4gKw0KPiArICAgICAgIC8qIHJlc3RvcmUgY29udGV4dCAqLw0KPiArICAgICAgIGpoNzEx MF90ZG1fd3JpdGVsKHRkbSwgVERNX1BDTUdCQ1IsIHRkbS0+c2F2ZWRfcGNtZ2Jjcik7DQo+ICsg ICAgICAgamg3MTEwX3RkbV93cml0ZWwodGRtLCBURE1fUENNRElWLCB0ZG0tPnNhdmVkX3BjbWRp dik7DQo+ICsNCj4gKyAgICAgICByZXR1cm4gcG1fcnVudGltZV9mb3JjZV9yZXN1bWUoZGV2KTsN Cj4gK30NCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudF9kcml2 ZXIgamg3MTEwX3RkbV9jb21wb25lbnQgPSB7DQo+ICsgICAgICAgLm5hbWUgPSAiamg3MTEwLXRk bSIsDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgaW50IGpoNzExMF90ZG1fc3RhcnR1cChzdHJ1Y3Qg c25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IHNuZF9zb2NfZGFpICpjcHVfZGFpKQ0KPiArew0KPiArICAgICAgIHN0cnVj dCBzbmRfc29jX3BjbV9ydW50aW1lICpydGQgPSBhc29jX3N1YnN0cmVhbV90b19ydGQoc3Vic3Ry ZWFtKTsNCj4gKyAgICAgICBzdHJ1Y3Qgc25kX3NvY19kYWlfbGluayAqZGFpX2xpbmsgPSBydGQt PmRhaV9saW5rOw0KPiArDQo+ICsgICAgICAgZGFpX2xpbmstPnN0b3BfZG1hX2ZpcnN0ID0gMTsN Cj4gKw0KPiArICAgICAgIHJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGpoNzEx MF90ZG1faHdfcGFyYW1zKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAq cGFyYW1zLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzbmRfc29j X2RhaSAqZGFpKQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBqaDcxMTBfdGRtX2RldiAqdGRtID0g c25kX3NvY19kYWlfZ2V0X2RydmRhdGEoZGFpKTsNCj4gKyAgICAgICBpbnQgY2hhbl93bCwgY2hh bl9zbCwgY2hhbl9ucjsNCj4gKyAgICAgICB1bnNpZ25lZCBpbnQgZGF0YV93aWR0aDsNCj4gKyAg ICAgICB1bnNpZ25lZCBpbnQgZG1hX2J1c193aWR0aDsNCj4gKyAgICAgICBzdHJ1Y3Qgc25kX2Rt YWVuZ2luZV9kYWlfZG1hX2RhdGEgKmRtYV9kYXRhID0gTlVMTDsNCj4gKyAgICAgICBpbnQgcmV0 Ow0KPiArDQo+ICsgICAgICAgZGF0YV93aWR0aCA9IHBhcmFtc193aWR0aChwYXJhbXMpOw0KPiAr DQo+ICsgICAgICAgdGRtLT5zYW1wbGVyYXRlID0gcGFyYW1zX3JhdGUocGFyYW1zKTsNCj4gKyAg ICAgICB0ZG0tPnBjbWNsayA9IHBhcmFtc19jaGFubmVscyhwYXJhbXMpICogdGRtLT5zYW1wbGVy YXRlICogZGF0YV93aWR0aDsNCj4gKw0KPiArICAgICAgIHN3aXRjaCAocGFyYW1zX2Zvcm1hdChw YXJhbXMpKSB7DQo+ICsgICAgICAgY2FzZSBTTkRSVl9QQ01fRk9STUFUX1MxNl9MRToNCj4gKyAg ICAgICAgICAgICAgIGNoYW5fd2wgPSBURE1fMTZCSVRfV09SRF9MRU47DQo+ICsgICAgICAgICAg ICAgICBjaGFuX3NsID0gVERNXzE2QklUX1NMT1RfTEVOOw0KPiArICAgICAgICAgICAgICAgZG1h X2J1c193aWR0aCA9IERNQV9TTEFWRV9CVVNXSURUSF8yX0JZVEVTOw0KPiArICAgICAgICAgICAg ICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgICBjYXNlIFNORFJWX1BDTV9GT1JNQVRfUzMyX0xFOg0K PiArICAgICAgICAgICAgICAgY2hhbl93bCA9IFRETV8zMkJJVF9XT1JEX0xFTjsNCj4gKyAgICAg ICAgICAgICAgIGNoYW5fc2wgPSBURE1fMzJCSVRfU0xPVF9MRU47DQo+ICsgICAgICAgICAgICAg ICBkbWFfYnVzX3dpZHRoID0gRE1BX1NMQVZFX0JVU1dJRFRIXzRfQllURVM7DQo+ICsgICAgICAg ICAgICAgICBicmVhazsNCj4gKw0KPiArICAgICAgIGRlZmF1bHQ6DQo+ICsgICAgICAgICAgICAg ICBkZXZfZXJyKHRkbS0+ZGV2LCAidGRtOiB1bnN1cHBvcnRlZCBQQ00gZm10Iik7DQo+ICsgICAg ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICBj aGFuX25yID0gcGFyYW1zX2NoYW5uZWxzKHBhcmFtcyk7DQo+ICsgICAgICAgc3dpdGNoIChjaGFu X25yKSB7DQo+ICsgICAgICAgY2FzZSAxOg0KPiArICAgICAgIGNhc2UgMjoNCj4gKyAgICAgICBj YXNlIDQ6DQo+ICsgICAgICAgY2FzZSA2Og0KPiArICAgICAgIGNhc2UgODoNCj4gKyAgICAgICAg ICAgICAgIGJyZWFrOw0KPiArICAgICAgIGRlZmF1bHQ6DQo+ICsgICAgICAgICAgICAgICBkZXZf ZXJyKHRkbS0+ZGV2LCAiY2hhbm5lbCBub3Qgc3VwcG9ydGVkXG4iKTsNCj4gKyAgICAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOw0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIGlmIChzdWJz dHJlYW0tPnN0cmVhbSA9PSBTTkRSVl9QQ01fU1RSRUFNX1BMQVlCQUNLKSB7DQo+ICsgICAgICAg ICAgICAgICB0ZG0tPnR4LndsID0gY2hhbl93bDsNCj4gKyAgICAgICAgICAgICAgIHRkbS0+dHgu c2wgPSBjaGFuX3NsOw0KPiArICAgICAgICAgICAgICAgdGRtLT50eC5zc2NhbGUgPSBjaGFuX25y Ow0KPiArICAgICAgICAgICAgICAgdGRtLT5wbGF5X2RtYV9kYXRhLmFkZHJfd2lkdGggPSBkbWFf YnVzX3dpZHRoOw0KPiArICAgICAgICAgICAgICAgZG1hX2RhdGEgPSAmdGRtLT5wbGF5X2RtYV9k YXRhOw0KPiArICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICAgICB0ZG0tPnJ4LndsID0g Y2hhbl93bDsNCj4gKyAgICAgICAgICAgICAgIHRkbS0+cnguc2wgPSBjaGFuX3NsOw0KPiArICAg ICAgICAgICAgICAgdGRtLT5yeC5zc2NhbGUgPSBjaGFuX25yOw0KPiArICAgICAgICAgICAgICAg dGRtLT5jYXB0dXJlX2RtYV9kYXRhLmFkZHJfd2lkdGggPSBkbWFfYnVzX3dpZHRoOw0KPiArICAg ICAgICAgICAgICAgZG1hX2RhdGEgPSAmdGRtLT5jYXB0dXJlX2RtYV9kYXRhOw0KPiArICAgICAg IH0NCj4gKw0KPiArICAgICAgIHNuZF9zb2NfZGFpX3NldF9kbWFfZGF0YShkYWksIHN1YnN0cmVh bSwgZG1hX2RhdGEpOw0KPiArDQo+ICsgICAgICAgcmV0ID0gamg3MTEwX3RkbV9jb25maWcodGRt LCBzdWJzdHJlYW0pOw0KPiArICAgICAgIGlmIChyZXQpDQo+ICsgICAgICAgICAgICAgICByZXR1 cm4gcmV0Ow0KPiArDQo+ICsgICAgICAgamg3MTEwX3RkbV9zYXZlX2NvbnRleHQodGRtLCBzdWJz dHJlYW0pOw0KPiArICAgICAgIHJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGpo NzExMF90ZG1fdHJpZ2dlcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNtZCwgc3RydWN0IHNuZF9zb2NfZGFp ICpkYWkpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0IGpoNzExMF90ZG1fZGV2ICp0ZG0gPSBzbmRf c29jX2RhaV9nZXRfZHJ2ZGF0YShkYWkpOw0KPiArICAgICAgIGludCByZXQgPSAwOw0KPiArDQo+ ICsgICAgICAgc3dpdGNoIChjbWQpIHsNCj4gKyAgICAgICBjYXNlIFNORFJWX1BDTV9UUklHR0VS X1NUQVJUOg0KPiArICAgICAgIGNhc2UgU05EUlZfUENNX1RSSUdHRVJfUkVTVU1FOg0KPiArICAg ICAgIGNhc2UgU05EUlZfUENNX1RSSUdHRVJfUEFVU0VfUkVMRUFTRToNCj4gKyAgICAgICAgICAg ICAgIGpoNzExMF90ZG1fc3RhcnQodGRtLCBzdWJzdHJlYW0pOw0KPiArICAgICAgICAgICAgICAg YnJlYWs7DQo+ICsNCj4gKyAgICAgICBjYXNlIFNORFJWX1BDTV9UUklHR0VSX1NUT1A6DQo+ICsg ICAgICAgY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9TVVNQRU5EOg0KPiArICAgICAgIGNhc2UgU05E UlZfUENNX1RSSUdHRVJfUEFVU0VfUFVTSDoNCj4gKyAgICAgICAgICAgICAgIGpoNzExMF90ZG1f c3RvcCh0ZG0sIHN1YnN0cmVhbSk7DQo+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAg ICBkZWZhdWx0Og0KPiArICAgICAgICAgICAgICAgcmV0ID0gLUVJTlZBTDsNCj4gKyAgICAgICAg ICAgICAgIGJyZWFrOw0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIHJldHVybiByZXQ7DQo+ ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgamg3MTEwX3RkbV9zZXRfZGFpX2ZtdChzdHJ1Y3Qgc25k X3NvY19kYWkgKmNwdV9kYWksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgZm10KQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBqaDcxMTBfdGRtX2RldiAq dGRtID0gc25kX3NvY19kYWlfZ2V0X2RydmRhdGEoY3B1X2RhaSk7DQo+ICsgICAgICAgdW5zaWdu ZWQgaW50IGdiY3I7DQo+ICsNCj4gKyAgICAgICAvKiBzZXQgbWFzdGVyL3NsYXZlIGF1ZGlvIGlu dGVyZmFjZSAqLw0KPiArICAgICAgIHN3aXRjaCAoZm10ICYgU05EX1NPQ19EQUlGTVRfQ0xPQ0tf UFJPVklERVJfTUFTSykgew0KPiArICAgICAgIGNhc2UgU05EX1NPQ19EQUlGTVRfQlBfRlA6DQo+ ICsgICAgICAgICAgICAgICAvKiBjcHUgaXMgbWFzdGVyICovDQo+ICsgICAgICAgICAgICAgICB0 ZG0tPm1zX21vZGUgPSBURE1fQVNfTUFTVEVSOw0KPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ ICsgICAgICAgY2FzZSBTTkRfU09DX0RBSUZNVF9CQ19GQzoNCj4gKyAgICAgICAgICAgICAgIC8q IGNvZGVjIGlzIG1hc3RlciAqLw0KPiArICAgICAgICAgICAgICAgdGRtLT5tc19tb2RlID0gVERN X0FTX1NMQVZFOw0KPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgY2FzZSBTTkRf U09DX0RBSUZNVF9CQ19GUDoNCj4gKyAgICAgICBjYXNlIFNORF9TT0NfREFJRk1UX0JQX0ZDOg0K PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ICsgICAgICAgZGVmYXVsdDoNCj4g KyAgICAgICAgICAgICAgIGRldl9kYmcodGRtLT5kZXYsICJkd2MgOiBJbnZhbGlkIGNsb2NrIHBy b3ZpZGVyIGZvcm1hdFxuIik7DQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4g KyAgICAgICB9DQo+ICsNCj4gKyAgICAgICBnYmNyID0gKHRkbS0+Y2xrcG9saXR5IDw8IENMS1BP TF9CSVQpIHwNCj4gKyAgICAgICAgICAgICAgICh0ZG0tPmVsbSA8PCBFTE1fQklUKSB8DQo+ICsg ICAgICAgICAgICAgICAodGRtLT5zeW5jbSA8PCBTWU5DTV9CSVQpIHwNCj4gKyAgICAgICAgICAg ICAgICh0ZG0tPm1zX21vZGUgPDwgTVNfQklUKTsNCj4gKyAgICAgICBqaDcxMTBfdGRtX3dyaXRl bCh0ZG0sIFRETV9QQ01HQkNSLCBnYmNyKTsNCj4gKw0KPiArICAgICAgIHJldHVybiAwOw0KPiAr fQ0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfZGFpX29wcyBqaDcxMTBfdGRt X2RhaV9vcHMgPSB7DQo+ICsgICAgICAgLnN0YXJ0dXAgICAgICAgID0gamg3MTEwX3RkbV9zdGFy dHVwLA0KPiArICAgICAgIC5od19wYXJhbXMgICAgICA9IGpoNzExMF90ZG1faHdfcGFyYW1zLA0K PiArICAgICAgIC50cmlnZ2VyICAgICAgICA9IGpoNzExMF90ZG1fdHJpZ2dlciwNCj4gKyAgICAg ICAuc2V0X2ZtdCAgICAgICAgPSBqaDcxMTBfdGRtX3NldF9kYWlfZm10LA0KPiArfTsNCj4gKw0K PiArc3RhdGljIGludCBqaDcxMTBfdGRtX2RhaV9wcm9iZShzdHJ1Y3Qgc25kX3NvY19kYWkgKmRh aSkNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3Qgamg3MTEwX3RkbV9kZXYgKnRkbSA9IHNuZF9zb2Nf ZGFpX2dldF9kcnZkYXRhKGRhaSk7DQo+ICsNCj4gKyAgICAgICBzbmRfc29jX2RhaV9pbml0X2Rt YV9kYXRhKGRhaSwgJnRkbS0+cGxheV9kbWFfZGF0YSwgJnRkbS0+Y2FwdHVyZV9kbWFfZGF0YSk7 DQo+ICsgICAgICAgc25kX3NvY19kYWlfc2V0X2RydmRhdGEoZGFpLCB0ZG0pOw0KPiArICAgICAg IHJldHVybiAwOw0KPiArfQ0KPiArDQo+ICsjZGVmaW5lIEpINzExMF9URE1fUkFURVMgICAgICAg U05EUlZfUENNX1JBVEVfODAwMF80ODAwMA0KPiArDQo+ICsjZGVmaW5lIEpINzExMF9URE1fRk9S TUFUUyAgICAgKFNORFJWX1BDTV9GTVRCSVRfUzE2X0xFIHwgXA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTTkRSVl9QQ01fRk1UQklUX1MzMl9MRSkNCj4gKw0KPiArc3RhdGlj IHN0cnVjdCBzbmRfc29jX2RhaV9kcml2ZXIgamg3MTEwX3RkbV9kYWkgPSB7DQo+ICsgICAgICAg Lm5hbWUgPSAic2ZfdGRtIiwNCj4gKyAgICAgICAuaWQgPSAwLA0KPiArICAgICAgIC5wbGF5YmFj ayA9IHsNCj4gKyAgICAgICAgICAgICAgIC5zdHJlYW1fbmFtZSAgICA9ICJQbGF5YmFjayIsDQo+ ICsgICAgICAgICAgICAgICAuY2hhbm5lbHNfbWluICAgPSAxLA0KPiArICAgICAgICAgICAgICAg LmNoYW5uZWxzX21heCAgID0gOCwNCj4gKyAgICAgICAgICAgICAgIC5yYXRlcyAgICAgICAgICA9 IEpINzExMF9URE1fUkFURVMsDQo+ICsgICAgICAgICAgICAgICAuZm9ybWF0cyAgICAgICAgPSBK SDcxMTBfVERNX0ZPUk1BVFMsDQo+ICsgICAgICAgfSwNCj4gKyAgICAgICAuY2FwdHVyZSA9IHsN Cj4gKyAgICAgICAgICAgICAgIC5zdHJlYW1fbmFtZSAgICA9ICJDYXB0dXJlIiwNCj4gKyAgICAg ICAgICAgICAgIC5jaGFubmVsc19taW4gICA9IDEsDQo+ICsgICAgICAgICAgICAgICAuY2hhbm5l bHNfbWF4ICAgPSA4LA0KPiArICAgICAgICAgICAgICAgLnJhdGVzICAgICAgICAgID0gSkg3MTEw X1RETV9SQVRFUywNCj4gKyAgICAgICAgICAgICAgIC5mb3JtYXRzICAgICAgICA9IEpINzExMF9U RE1fRk9STUFUUywNCj4gKyAgICAgICB9LA0KPiArICAgICAgIC5vcHMgPSAmamg3MTEwX3RkbV9k YWlfb3BzLA0KPiArICAgICAgIC5wcm9iZSA9IGpoNzExMF90ZG1fZGFpX3Byb2JlLA0KPiArICAg ICAgIC5zeW1tZXRyaWNfcmF0ZSA9IDEsDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IHNuZF9wY21faGFyZHdhcmUgamg3MTEwX3BjbV9oYXJkd2FyZSA9IHsNCj4gKyAgICAgICAu aW5mbyAgICAgICAgICAgICAgICAgICA9IChTTkRSVl9QQ01fSU5GT19NTUFQICAgICAgICAgIHwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTkRSVl9QQ01fSU5GT19NTUFQ X1ZBTElEICAgIHwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTkRSVl9Q Q01fSU5GT19QQVVTRSAgICAgICAgIHwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTTkRSVl9QQ01fSU5GT19SRVNVTUUgICAgICAgIHwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTTkRSVl9QQ01fSU5GT19JTlRFUkxFQVZFRCAgIHwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTkRSVl9QQ01fSU5GT19CTE9DS19UUkFOU0ZF UiksDQo+ICsgICAgICAgLmJ1ZmZlcl9ieXRlc19tYXggICAgICAgPSAxOTI1MTIsDQo+ICsgICAg ICAgLnBlcmlvZF9ieXRlc19taW4gICAgICAgPSA0MDk2LA0KPiArICAgICAgIC5wZXJpb2RfYnl0 ZXNfbWF4ICAgICAgID0gMzI3NjgsDQo+ICsgICAgICAgLnBlcmlvZHNfbWluICAgICAgICAgICAg PSAxLA0KPiArICAgICAgIC5wZXJpb2RzX21heCAgICAgICAgICAgID0gNDgsDQo+ICsgICAgICAg LmZpZm9fc2l6ZSAgICAgICAgICAgICAgPSAxNiwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3Qgc25kX2RtYWVuZ2luZV9wY21fY29uZmlnIGpoNzExMF9kbWFlbmdpbmVfcGNtX2Nv bmZpZyA9IHsNCj4gKyAgICAgICAucGNtX2hhcmR3YXJlID0gJmpoNzExMF9wY21faGFyZHdhcmUs DQo+ICsgICAgICAgLnByZXBhcmVfc2xhdmVfY29uZmlnID0gc25kX2RtYWVuZ2luZV9wY21fcHJl cGFyZV9zbGF2ZV9jb25maWcsDQo+ICsgICAgICAgLnByZWFsbG9jX2J1ZmZlcl9zaXplID0gMTky NTEyLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIHZvaWQgamg3MTEwX3RkbV9pbml0X3BhcmFtcyhz dHJ1Y3Qgamg3MTEwX3RkbV9kZXYgKnRkbSkNCj4gK3sNCj4gKyAgICAgICB0ZG0tPmNsa3BvbGl0 eSA9IFRETV9UWF9SQVNJTkdfUlhfRkFMTElORzsNCj4gKyAgICAgICB0ZG0tPmVsbSA9IFRETV9F TE1fTEFURTsNCj4gKyAgICAgICB0ZG0tPnN5bmNtID0gVERNX1NZTkNNX1NIT1JUOw0KPiArDQo+ ICsgICAgICAgdGRtLT5yeC5pZmwgPSBURE1fRklGT19IQUxGOw0KPiArICAgICAgIHRkbS0+dHgu aWZsID0gVERNX0ZJRk9fSEFMRjsNCj4gKyAgICAgICB0ZG0tPnJ4LndsID0gVERNXzE2QklUX1dP UkRfTEVOOw0KPiArICAgICAgIHRkbS0+dHgud2wgPSBURE1fMTZCSVRfV09SRF9MRU47DQo+ICsg ICAgICAgdGRtLT5yeC5zc2NhbGUgPSAyOw0KPiArICAgICAgIHRkbS0+dHguc3NjYWxlID0gMjsN Cj4gKyAgICAgICB0ZG0tPnJ4LmxyaiA9IFRETV9MRUZUX0pVU1RJRlQ7DQo+ICsgICAgICAgdGRt LT50eC5scmogPSBURE1fTEVGVF9KVVNUSUZUOw0KPiArDQo+ICsgICAgICAgdGRtLT5wbGF5X2Rt YV9kYXRhLmFkZHIgPSBKSDcxMTBfVERNX0ZJRk87DQo+ICsgICAgICAgdGRtLT5wbGF5X2RtYV9k YXRhLmFkZHJfd2lkdGggPSBETUFfU0xBVkVfQlVTV0lEVEhfMl9CWVRFUzsNCj4gKyAgICAgICB0 ZG0tPnBsYXlfZG1hX2RhdGEuZmlmb19zaXplID0gSkg3MTEwX1RETV9GSUZPX0RFUFRIIC8gMjsN Cj4gKyAgICAgICB0ZG0tPnBsYXlfZG1hX2RhdGEubWF4YnVyc3QgPSAxNjsNCj4gKw0KPiArICAg ICAgIHRkbS0+Y2FwdHVyZV9kbWFfZGF0YS5hZGRyID0gSkg3MTEwX1RETV9GSUZPOw0KPiArICAg ICAgIHRkbS0+Y2FwdHVyZV9kbWFfZGF0YS5hZGRyX3dpZHRoID0gRE1BX1NMQVZFX0JVU1dJRFRI XzJfQllURVM7DQo+ICsgICAgICAgdGRtLT5jYXB0dXJlX2RtYV9kYXRhLmZpZm9fc2l6ZSA9IEpI NzExMF9URE1fRklGT19ERVBUSCAvIDI7DQo+ICsgICAgICAgdGRtLT5jYXB0dXJlX2RtYV9kYXRh Lm1heGJ1cnN0ID0gODsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBqaDcxMTBfdGRtX2Nsa19y ZXNldF9nZXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGpoNzExMF90ZG1fZGV2ICp0ZG0pDQo+ICt7DQo+ ICsgICAgICAgaW50IHJldDsNCj4gKw0KPiArICAgICAgIHRkbS0+Y2xrc1swXS5pZCA9ICJtY2xr X2lubmVyIjsNCj4gKyAgICAgICB0ZG0tPmNsa3NbMV0uaWQgPSAidGRtX2FoYiI7DQo+ICsgICAg ICAgdGRtLT5jbGtzWzJdLmlkID0gInRkbV9hcGIiOw0KPiArICAgICAgIHRkbS0+Y2xrc1szXS5p ZCA9ICJ0ZG1faW50ZXJuYWwiOw0KPiArICAgICAgIHRkbS0+Y2xrc1s0XS5pZCA9ICJ0ZG1fZXh0 IjsNCj4gKyAgICAgICB0ZG0tPmNsa3NbNV0uaWQgPSAidGRtIjsNCj4gKw0KPiArICAgICAgIHJl dCA9IGRldm1fY2xrX2J1bGtfZ2V0KCZwZGV2LT5kZXYsIEFSUkFZX1NJWkUodGRtLT5jbGtzKSwg dGRtLT5jbGtzKTsNCj4gKyAgICAgICBpZiAocmV0KSB7DQo+ICsgICAgICAgICAgICAgICBkZXZf ZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gZ2V0IHRkbSBjbG9ja3NcbiIpOw0KPiArICAgICAg ICAgICAgICAgcmV0dXJuIHJldDsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICB0ZG0tPnJl c2V0cyA9IGRldm1fcmVzZXRfY29udHJvbF9hcnJheV9nZXRfZXhjbHVzaXZlKCZwZGV2LT5kZXYp Ow0KPiArICAgICAgIGlmIChJU19FUlJfT1JfTlVMTCh0ZG0tPnJlc2V0cykpIHsNCg0KTG9va2lu ZyBpbiBkZXB0aCBvbiBkZXZtX3Jlc2V0X2NvbnRyb2xfYXJyYXlfZ2V0X2V4Y2x1c2l2ZSgpIGl0 IHNlZW1zIHRoZQ0KTlVMTCBjYW5ub3QgYmUgcmV0dXJuZWQgYnkgZGV2bV9yZXNldF9jb250cm9s X2FycmF5X2dldF9leGNsdXNpdmUoKSBhcw0Kb3B0aW5hbCBhcmd1bWVudCBpcyBmYWxzZSwgdGh1 cyB0aGUgSVNfRVJSKCkgdGhhdCB3YXMgaGVyZSBvbiBwcmV2aW91cw0KdmVyc2lvbiB3YXMgZ29v ZC4gQ291bGQgeW91IHJldHVybiBiYWNrIHRvIHRoYXQ/IFNvcnJ5IGZvciB0aGUgY29uZnVzaW9u Lg0KDQo+ICsgICAgICAgICAgICAgICByZXQgPSBQVFJfRVJSKHRkbS0+cmVzZXRzKTsNCj4gKyAg ICAgICAgICAgICAgIGRldl9lcnIoJnBkZXYtPmRldiwgIkZhaWxlZCB0byBnZXQgdGRtIHJlc2V0 cyIpOw0KPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCg0KQWxzbywgeW91IGNvdWxkIGF2 b2lkIHRoaXMgcmV0dXJuDQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgcmV0dXJuIDA7DQoN CmFuZCBkbyBoZXJlOg0KCXJldHVybiByZXQ7DQoNCk90aGVyIHRoYW4gdGhpczoNCg0KUmV2aWV3 ZWQtYnk6IENsYXVkaXUgQmV6bmVhIDxjbGF1ZGl1LmJlem5lYUBtaWNyb2NoaXAuY29tPg0KDQoN Cj4gK30NCj4gKw0KPiArc3RhdGljIGludCBqaDcxMTBfdGRtX3Byb2JlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0IGpoNzExMF90ZG1fZGV2ICp0 ZG07DQo+ICsgICAgICAgaW50IHJldDsNCj4gKw0KPiArICAgICAgIHRkbSA9IGRldm1fa3phbGxv YygmcGRldi0+ZGV2LCBzaXplb2YoKnRkbSksIEdGUF9LRVJORUwpOw0KPiArICAgICAgIGlmICgh dGRtKQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+ICsNCj4gKyAgICAgICB0 ZG0tPnRkbV9iYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApOw0K PiArICAgICAgIGlmIChJU19FUlIodGRtLT50ZG1fYmFzZSkpDQo+ICsgICAgICAgICAgICAgICBy ZXR1cm4gUFRSX0VSUih0ZG0tPnRkbV9iYXNlKTsNCj4gKw0KPiArICAgICAgIHRkbS0+ZGV2ID0g JnBkZXYtPmRldjsNCj4gKw0KPiArICAgICAgIHJldCA9IGpoNzExMF90ZG1fY2xrX3Jlc2V0X2dl dChwZGV2LCB0ZG0pOw0KPiArICAgICAgIGlmIChyZXQpIHsNCj4gKyAgICAgICAgICAgICAgIGRl dl9lcnIoJnBkZXYtPmRldiwgIkZhaWxlZCB0byBlbmFibGUgYXVkaW8tdGRtIGNsb2NrXG4iKTsN Cj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAg ICAgamg3MTEwX3RkbV9pbml0X3BhcmFtcyh0ZG0pOw0KPiArDQo+ICsgICAgICAgZGV2X3NldF9k cnZkYXRhKCZwZGV2LT5kZXYsIHRkbSk7DQo+ICsgICAgICAgcmV0ID0gZGV2bV9zbmRfc29jX3Jl Z2lzdGVyX2NvbXBvbmVudCgmcGRldi0+ZGV2LCAmamg3MTEwX3RkbV9jb21wb25lbnQsDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmamg3MTEwX3RkbV9k YWksIDEpOw0KPiArICAgICAgIGlmIChyZXQpIHsNCj4gKyAgICAgICAgICAgICAgIGRldl9lcnIo JnBkZXYtPmRldiwgIkZhaWxlZCB0byByZWdpc3RlciBkYWlcbiIpOw0KPiArICAgICAgICAgICAg ICAgcmV0dXJuIHJldDsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICByZXQgPSBkZXZtX3Nu ZF9kbWFlbmdpbmVfcGNtX3JlZ2lzdGVyKCZwZGV2LT5kZXYsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmamg3MTEwX2RtYWVuZ2luZV9wY21fY29uZmln LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05EX0RN QUVOR0lORV9QQ01fRkxBR19DT01QQVQpOw0KPiArICAgICAgIGlmIChyZXQpIHsNCj4gKyAgICAg ICAgICAgICAgIGRldl9lcnIoJnBkZXYtPmRldiwgIkNvdWxkIG5vdCByZWdpc3RlciBwY206ICVk XG4iLCByZXQpOw0KPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gKyAgICAgICB9DQo+ ICsNCj4gKyAgICAgICBwbV9ydW50aW1lX2VuYWJsZSgmcGRldi0+ZGV2KTsNCj4gKyAgICAgICBp ZiAoIXBtX3J1bnRpbWVfZW5hYmxlZCgmcGRldi0+ZGV2KSkgew0KPiArICAgICAgICAgICAgICAg cmV0ID0gamg3MTEwX3RkbV9ydW50aW1lX3Jlc3VtZSgmcGRldi0+ZGV2KTsNCj4gKyAgICAgICAg ICAgICAgIGlmIChyZXQpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyX3BtX2Rp c2FibGU7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgcmV0dXJuIDA7DQo+ICsNCj4gK2Vy cl9wbV9kaXNhYmxlOg0KPiArICAgICAgIHBtX3J1bnRpbWVfZGlzYWJsZSgmcGRldi0+ZGV2KTsN Cj4gKw0KPiArICAgICAgIHJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgamg3 MTEwX3RkbV9kZXZfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICt7DQo+ ICsgICAgICAgcG1fcnVudGltZV9kaXNhYmxlKCZwZGV2LT5kZXYpOw0KPiArICAgICAgIHJldHVy biAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBqaDcx MTBfdGRtX29mX21hdGNoW10gPSB7DQo+ICsgICAgICAgeyAuY29tcGF0aWJsZSA9ICJzdGFyZml2 ZSxqaDcxMTAtdGRtIiwgfSwNCj4gKyAgICAgICB7fQ0KPiArfTsNCj4gKw0KPiArTU9EVUxFX0RF VklDRV9UQUJMRShvZiwgamg3MTEwX3RkbV9vZl9tYXRjaCk7DQo+ICsNCj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZGV2X3BtX29wcyBqaDcxMTBfdGRtX3BtX29wcyA9IHsNCj4gKyAgICAgICBSVU5U SU1FX1BNX09QUyhqaDcxMTBfdGRtX3J1bnRpbWVfc3VzcGVuZCwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICBqaDcxMTBfdGRtX3J1bnRpbWVfcmVzdW1lLCBOVUxMKQ0KPiArICAgICAgIFNZU1RF TV9TTEVFUF9QTV9PUFMoamg3MTEwX3RkbV9zeXN0ZW1fc3VzcGVuZCwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIGpoNzExMF90ZG1fc3lzdGVtX3Jlc3VtZSkNCj4gK307DQo+ICsNCj4g K3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGpoNzExMF90ZG1fZHJpdmVyID0gew0KPiAr ICAgICAgIC5kcml2ZXIgPSB7DQo+ICsgICAgICAgICAgICAgICAubmFtZSA9ICJqaDcxMTAtdGRt IiwNCj4gKyAgICAgICAgICAgICAgIC5vZl9tYXRjaF90YWJsZSA9IGpoNzExMF90ZG1fb2ZfbWF0 Y2gsDQo+ICsgICAgICAgICAgICAgICAucG0gPSBwbV9wdHIoJmpoNzExMF90ZG1fcG1fb3BzKSwN Cj4gKyAgICAgICB9LA0KPiArICAgICAgIC5wcm9iZSA9IGpoNzExMF90ZG1fcHJvYmUsDQo+ICsg ICAgICAgLnJlbW92ZSA9IGpoNzExMF90ZG1fZGV2X3JlbW92ZSwNCj4gK307DQo+ICttb2R1bGVf cGxhdGZvcm1fZHJpdmVyKGpoNzExMF90ZG1fZHJpdmVyKTsNCj4gKw0KPiArTU9EVUxFX0RFU0NS SVBUSU9OKCJTdGFyRml2ZSBKSDcxMTAgVERNIEFTb0MgRHJpdmVyIik7DQo+ICtNT0RVTEVfQVVU SE9SKCJXYWxrZXIgQ2hlbiA8d2Fsa2VyLmNoZW5Ac3RhcmZpdmV0ZWNoLmNvbT4iKTsNCj4gK01P RFVMRV9MSUNFTlNFKCJHUEwiKTsNCj4gLS0NCj4gMi4xNy4xDQo+IA0KDQo=