Received: by 2002:a05:7412:b995:b0:f9:9502:5bb8 with SMTP id it21csp8082539rdb; Thu, 4 Jan 2024 19:21:52 -0800 (PST) X-Google-Smtp-Source: AGHT+IHpWGtptaaPSmpbxiRbp0/5To8HU43wnAimxEErD/BjD6NYp1v+FLl/bK+aSuk+Boyx9QEP X-Received: by 2002:a17:902:8649:b0:1d3:efef:d84b with SMTP id y9-20020a170902864900b001d3efefd84bmr1539203plt.70.1704424911983; Thu, 04 Jan 2024 19:21:51 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1704424911; cv=pass; d=google.com; s=arc-20160816; b=WGmdI/GIHV4SOpgxX1A+/tAiuiKU/Vl7KGHxx0FWUKKGae9nf1iu37QH9cYG8DDitw 33MNxXVqHMBAr8sEkrJzJSVnLLSp4L5yNAp+AN6IgZo5zehKrQjJq8RhSPNLqTetwpPo BQSjRDvsOUwxeYEpRZnJNE3Cr6HYEcWVsig/UMrvxjmUM0BRPd56tDPKK8hnnRRlouGC NCPwvM+TsC/SYIdeC8ByxyNDXjvZr6iateRtsIokQgIGqk0oiJEQXUFjQwF/Zyovwe/q dvxRngHHLrMtofe4UBQpJbqie1Ig22zijmcEWvA56WE3TtC5A4RkpzpQ4tfbsNO2ruPm CsUQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:list-unsubscribe:list-subscribe:list-id:precedence :content-transfer-encoding:content-language:accept-language :in-reply-to:references:message-id:date:thread-index:thread-topic :subject:cc:to:from:dkim-signature; bh=rgosZsUvH4tkIH1rggxV1z2mINHHa7+apFKsBNMKOvY=; fh=bdXshtPnQpuJkmpGlK/Hostb00N1Unv8bxum3uaZV9E=; b=DqJE1xVOyVDHauOhdOBrD1IIoLnB6v9D0eAZY/+87GelyO5Vz8+9GZPBsgvg37Nrxv taPiGlrLZq9Nmq3zYGi7Weo4kOI2lf6u3OPmeYRK2/6CQIEqzfciE8sVLFY5ztfCAEWH ZsyirEBowIQIfzNyn0lnQM3gOURgB/75rdzYhOfG4ErNzgtY81RoXWqicIPNMOnoMPGM HZ16D9HaUN16V/xUK/J5bD7k2RGi5gdZdtTdrwbvG/+7US6O/Uj9TVQXwNk9ah87ZrPd kqtzj+nW31vE+9ExYPbc/+/Q6dis5HUMBOSFxd6Dt9nu9uU0eZOKxQuITXbqn8NHrLBO RYYQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=NhVH4wJZ; arc=pass (i=1 spf=pass spfdomain=nxp.com dkim=pass dkdomain=nxp.com dmarc=pass fromdomain=nxp.com); spf=pass (google.com: domain of linux-kernel+bounces-17450-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-17450-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id f3-20020a170902e98300b001d33c368c1bsi500384plb.126.2024.01.04.19.21.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jan 2024 19:21:51 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-17450-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=NhVH4wJZ; arc=pass (i=1 spf=pass spfdomain=nxp.com dkim=pass dkdomain=nxp.com dmarc=pass fromdomain=nxp.com); spf=pass (google.com: domain of linux-kernel+bounces-17450-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-17450-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com 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 sv.mirrors.kernel.org (Postfix) with ESMTPS id 8ED66286574 for ; Fri, 5 Jan 2024 03:21:51 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1FEA119BC2; Fri, 5 Jan 2024 03:20:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="NhVH4wJZ" X-Original-To: linux-kernel@vger.kernel.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on2062.outbound.protection.outlook.com [40.107.6.62]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 44DAF612F; Fri, 5 Jan 2024 03:20:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IIwww8VZxTWiLVIXsmtFrgvl2tvS9BFknDlGMuOlkk9dm3+HvB28EqYrAJPC5xGNYvL/vvgl+gGwxatqMTjpUEZExaAnGhoK3qLjgjb8NukD2Hax7Wkf6vecHhA3XEVUMCYo9foyHH69tF8c8zkRAJocxRNPMVJZwqQnDwFjHHX/1XCQ6wMR6lolgI/PWLLzOFRv4OniblBF9hYOifcd5iHd3VE9qsOMDrwJseMxChStn0qutCcswJO6QrFRLzEPViP2uGGOeymxqNmsTOlMZJOCbaZI3aisSn2usNl2Sz3hXcMA4mkj5+92lml2K18hD0Sdns5N1e9eUjcDS12YxQ== 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=rgosZsUvH4tkIH1rggxV1z2mINHHa7+apFKsBNMKOvY=; b=ftHez/qYoq9dxL/VqmpY9Yn1NOvR55KEgx3CA7ANs+boTyBE+wdnIndE14VIIRZep8/vGWsqyaKZuFyCW375pzz/b3h3LZ4UC1KO9Wn91q9M5OV57KChPxzwxWvS/30ViU4CviBjOTxLYgUBZmSKxHEzCGtSENgJkvjAjGpn7v+SfFwvgsYd3/YWPRqx5hw/uKtF1uPHhHg9WN509CBy+ACKoTkLdIcCum9eAAs/UWdNfPHTjzmkhl4/VJnRFon0cVyjCcJOVuzYo6A+nprgjMnhTiEo0+PaGPq7sPLo/TutQEXMCNISehYNbOS4e0Nqvz51ugNH592+vkOs6szVew== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rgosZsUvH4tkIH1rggxV1z2mINHHa7+apFKsBNMKOvY=; b=NhVH4wJZSw8/Laztp/QmCRhdN7mA0tBhtiMz/PrNoTQG42gyvkJLjVtkCcy3U4C30QzGFqH7qq9Bi707B3CRL0tZYNTWYCXA9QKwNsB/U9d0F37+4hcykjskYhzeYDsGts88An2SKMFfadhSjI91KFUVXktU7yGx000rZ7x5bUY= Received: from PAXPR04MB9448.eurprd04.prod.outlook.com (2603:10a6:102:2b1::21) by DB9PR04MB8445.eurprd04.prod.outlook.com (2603:10a6:10:2cf::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.16; Fri, 5 Jan 2024 03:20:33 +0000 Received: from PAXPR04MB9448.eurprd04.prod.outlook.com ([fe80::e6e0:d026:3089:17d5]) by PAXPR04MB9448.eurprd04.prod.outlook.com ([fe80::e6e0:d026:3089:17d5%5]) with mapi id 15.20.7159.013; Fri, 5 Jan 2024 03:20:33 +0000 From: Sandor Yu To: Alexander Stein , "dmitry.baryshkov@linaro.org" , "andrzej.hajda@intel.com" , "neil.armstrong@linaro.org" , Laurent Pinchart , "jonas@kwiboo.se" , "jernej.skrabec@gmail.com" , "airlied@gmail.com" , "daniel@ffwll.ch" , "robh+dt@kernel.org" , "krzysztof.kozlowski+dt@linaro.org" , "shawnguo@kernel.org" , "s.hauer@pengutronix.de" , "festevam@gmail.com" , "vkoul@kernel.org" , "dri-devel@lists.freedesktop.org" , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "linux-phy@lists.infradead.org" CC: "kernel@pengutronix.de" , dl-linux-imx , Oliver Brown , "sam@ravnborg.org" Subject: RE: [EXT] Re: [PATCH v11 7/7] phy: freescale: Add HDMI PHY driver for i.MX8MQ Thread-Topic: [EXT] Re: [PATCH v11 7/7] phy: freescale: Add HDMI PHY driver for i.MX8MQ Thread-Index: AQHaAMdM9GRFCKUIk0mcXvqWPSMxLbBN9t0AgHz+5QA= Date: Fri, 5 Jan 2024 03:20:33 +0000 Message-ID: References: <3572518.LM0AJKV5NW@steina-w> In-Reply-To: <3572518.LM0AJKV5NW@steina-w> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PAXPR04MB9448:EE_|DB9PR04MB8445:EE_ x-ms-office365-filtering-correlation-id: d5d982b4-b4c8-4374-dffc-08dc0d9d4750 x-ld-processed: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: pMV+14CzN5fBguyWB4LBWu4dNQwAudaquXPyemVfGWse6tEaNdAONA8APDEPSEyOFr2KCw1exWZY2AAUdIbJvhxN/86nV0onS54wHAaJpECf1+zM0hh7S8t4V8bvF0kWQ/FeTcSD8y6ikqsgexWzeTIjTxAcpYrKNLroe6u7srn/ozrsKVoAQsIN7UBYKv+Y3Vpfr/2ZomiiB96AuA+5Xs15Ww96y8oUCanxRTDmhFKFWCMxBy9w1C8+cbOuAXorhTUijlWlHEw7ZjRsxCCnxd9dLSMszlL1Rb2rj13CIByq5iC/iveudRJgpl5sdFsw8C/HaxAE4tlLdw3Ifj0chd7p5yCVMts/jk6OXqXjQRrNW+Wcywylsujl2MWX8eJaCAMUHSkXNxLDgH7qPN8NMaikpMx3Szpuf8wG8CtvUqUNrVNq+mwdAZcIZax6zf/DalBiNXtQyiN8U3ffLUSu+6iUIUOTYAzUdhg5bZ0S8S0NL2rdtqJg50f6e3f+p/aIIRRYPg4sEIvrpzclpgfY3AiWymb8drzmhsgvorRo6QdFng9ai7c2LMH1PhWqvzcDq9SbYbaEFEbnSyM9FQtLvRkmyeYTVYORB0/Ta6MWZc3lnqvO+rH1fGqsUheA7iWYqFb2CiYfJbFP9CDkbumJWiieTYpzEQbNH22zmbkZyeI= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB9448.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(136003)(346002)(396003)(39860400002)(376002)(230173577357003)(230922051799003)(230273577357003)(451199024)(186009)(1800799012)(64100799003)(26005)(7696005)(45080400002)(71200400001)(53546011)(6506007)(9686003)(86362001)(55016003)(66574015)(83380400001)(8676002)(4326008)(52536014)(8936002)(316002)(54906003)(7416002)(30864003)(2906002)(5660300002)(44832011)(110136005)(33656002)(966005)(478600001)(76116006)(66946007)(64756008)(66446008)(66476007)(66556008)(122000001)(38100700002)(41300700001)(921011)(38070700009)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WjhzcmwvOWVqS2hNL0NxTVhRNkZxN3FrWUZEc0tOc3dXY0E3Z3NPckE2YTla?= =?utf-8?B?WGlPc3B1cWFFdGx0SlNSazVMV0JqVjc1dGMxaVh0ZWNEV2l2UDNCNjk2c3hl?= =?utf-8?B?d0puZGZ1b2ljRGtlR0cwcWlMZHVFVE42WmxsbTZKdmROR3FZVjZveTlEYXVG?= =?utf-8?B?TVVZVEg2Z1QyUnhkVDc3Wmc5LzhkbzNKVVFzeXhRZUFLd2trWmN4LzNoOURD?= =?utf-8?B?UlhKRnBnRExLa2FaRVcxWTZ2NTVoMXRyWk9kODBlQWFmL2MxM04xYUZ4Z0E2?= =?utf-8?B?em1OTEs3N0F4WWUzMmpnT0J2bUpHQnJDWFo2cUp1NmsyS2M5RG5HemtxZzFi?= =?utf-8?B?eTJuWCs0Skl1R21GVzhIRnArQlJXU3gzckIyRUVvRmRpT0FOZnhvWnB1cjNB?= =?utf-8?B?bHp6YnFIWWg3ZTRYUENSVW1nRUt1ZDZkNlk1MDA2U2xvYjZwWm82Y1A1SXc4?= =?utf-8?B?M0FFUjNLZFBQbUI2bWR6Q3VjcW5iYjFhUDlyOGJtRll6RzZMbjI4MjB4aTZK?= =?utf-8?B?MjZsakhGZmhjaDVFL2pUUFp1WFE3bXdCVkloTlVWdXE0bEI2N0JmMjljSERC?= =?utf-8?B?UVM0RzhSTkhFaHFCaE5zeWw5NzlNVnpXN254MG8zRXpCUjRqTzc0SzVieWRs?= =?utf-8?B?bkpYZFBmVHUyeXpCMmRRUGxHd0tvN2JEUXBsOTRlL3lmeS90T0t2bjlyYUdU?= =?utf-8?B?eUFMTnVQcjZ2Z2xpZkljKy9tQzhNWnlSblQxOEJ2cTZlRTJFV0w2Yk5BMmxX?= =?utf-8?B?WlF3MVdhNzNJOW9Vbkc3Mmd5dHMrWXpHN0dHRlQ4UVFML1NEamJPdEpoa21C?= =?utf-8?B?enl2clZBMVlrRnZHOEhoUC9tT0dDZkhoUmNuOUxLNjVJaGF3THpRY2JFcUFz?= =?utf-8?B?S0tBYjNtSXc1OFc5UC9BTVNIV3NJa1NoaUZPa0dSQU1IZEtnbmw1MkF4bDQy?= =?utf-8?B?TTlkVzFzSldHbEJKL1pkQWRDMzNobHoxbXBKWnBKM1V6OEhNaTE1NjlCZ0Yz?= =?utf-8?B?dlp0eU5wQ2hrWUJ4SFdqTEQvdFZXWkdPL2laeEZYY09KZHVHNE9ac0t1RTl1?= =?utf-8?B?b2ZieDlOa3Z1Q2FkUWVySmRvR1RyM2tnZ2dpOG5JcmhLWkhxRHFPTzNFUGxl?= =?utf-8?B?SXdPdm1zaTZzTHF2QWRjWU5WYXJSTUtXQ0hqbnYwcDJkaW13dDIxY0YxS3Rh?= =?utf-8?B?UzVMK3F2LzcwTm4zSktSOXFtR3lpSSswcUY0dkNjRVB5OGVvRGlFN3djaGRZ?= =?utf-8?B?cVYwTFJYRTcrYnNTSnltWFFSUWdrb2llY01TL09ybGJ6bEtUbWFUS2JTRTVC?= =?utf-8?B?bUVnWDBPcXpPekNQVk40Mkp5YnN4d1Baakt5MDV5TDR5aFdoRGJFci9HcnpV?= =?utf-8?B?Q0EvaCtXN1pTYVJsOGQrUHZ5dzZEN2tvMUVONnF6anJQZ0hHK0xGUlZCZUpM?= =?utf-8?B?ZDV4VERyb0dXLzZvTXc2TzF2d3R6R0RWWnFNQ3BSVmd0YitQTG5oTzBLMklM?= =?utf-8?B?bWo0SWt4ZkpTREc0T0VzWlVuTUpDMFRTMnYxT05MK05sdEZCa3Y5TGV2bEJk?= =?utf-8?B?SHV6Vko0cmlNMjFpQmFvdkYrajRWRkliVUwzOHdqaFlVdnhIbXBHQ1JRTVpl?= =?utf-8?B?SXhGcjBtRlY4dm5kSzJuMUJHNmpGMnI3b1BoU21rNlNpeWduVWpkNlB5M2c0?= =?utf-8?B?RjI1aWNDK1BZdTVicTg5UEFMdjhFTnl3Q1FFRGhQYUNVZFBPUVd3UmY3VUIv?= =?utf-8?B?SGR0S2E5NStnRXg3UG5HV0lpaW5jUzQyTmI2Ry9ubWVTK2g4NkpFRFpvZ216?= =?utf-8?B?RHdRdjlxM1lBMENrSFFWeTBOY09RYVNYd1p3R1F0cDdkQ0FyWE8rY3J1STY5?= =?utf-8?B?M0VIbkxVNkdacENnWE9KcVViR1JhU1NYc01pK21ZbWhxNy9mTTRCQ2JBa2pn?= =?utf-8?B?KzN0UUpEMmlrYWh5bW1aYVB6YUt5ckpueGkySG1ZRlYyVHpJTlV1UWhWRHNU?= =?utf-8?B?czlIZUpkcm5rdlhLUmhRbGxXM2tiay9ocGY1aEpteXBxcmVyemQvNlU1dFhl?= =?utf-8?B?bElBU29hWm4remdPb1JYL1dwK21SVzQxNFB3aUNQQ3VUaUFsT2hFN0xkU2xQ?= =?utf-8?Q?wWCM=3D?= 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: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9448.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d5d982b4-b4c8-4374-dffc-08dc0d9d4750 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jan 2024 03:20:33.6877 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: AURUlED8uXbrqeah2sJdXtJXuZNSjJ9wfBcVym+2ej0ZmF5Bpaa8iPhjZQF3vJ6tcA0xJkaNwcd62kJhyo2nQw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB8445 SGkgQWxleGFuZGVyLA0KDQpUaGFua3MgZm9yIHlvdXIgY29tbWVudHMsDQoNCj4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQWxleGFuZGVyIFN0ZWluIDxhbGV4YW5kZXIuc3Rl aW5AZXcudHEtZ3JvdXAuY29tPg0KPiBTZW50OiAyMDIz5bm0MTDmnIgxN+aXpSAyMToxNw0KPiBU bzogZG1pdHJ5LmJhcnlzaGtvdkBsaW5hcm8ub3JnOyBhbmRyemVqLmhhamRhQGludGVsLmNvbTsN Cj4gbmVpbC5hcm1zdHJvbmdAbGluYXJvLm9yZzsgTGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9h cmQuY29tOw0KPiBqb25hc0Brd2lib28uc2U7IGplcm5lai5za3JhYmVjQGdtYWlsLmNvbTsgYWly bGllZEBnbWFpbC5jb207DQo+IGRhbmllbEBmZndsbC5jaDsgcm9iaCtkdEBrZXJuZWwub3JnOyBr cnp5c3p0b2Yua296bG93c2tpK2R0QGxpbmFyby5vcmc7DQo+IHNoYXduZ3VvQGtlcm5lbC5vcmc7 IHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU7IGZlc3RldmFtQGdtYWlsLmNvbTsNCj4gdmtvdWxAa2Vy bmVsLm9yZzsgZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsNCj4gZGV2aWNldHJlZUB2 Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZzsNCj4g bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgbGludXgtcGh5QGxpc3RzLmluZnJhZGVhZC5v cmc7IFNhbmRvciBZdQ0KPiA8c2FuZG9yLnl1QG54cC5jb20+DQo+IENjOiBrZXJuZWxAcGVuZ3V0 cm9uaXguZGU7IGRsLWxpbnV4LWlteCA8bGludXgtaW14QG54cC5jb20+OyBTYW5kb3IgWXUNCj4g PHNhbmRvci55dUBueHAuY29tPjsgT2xpdmVyIEJyb3duIDxvbGl2ZXIuYnJvd25AbnhwLmNvbT47 DQo+IHNhbUByYXZuYm9yZy5vcmcNCj4gU3ViamVjdDogW0VYVF0gUmU6IFtQQVRDSCB2MTEgNy83 XSBwaHk6IGZyZWVzY2FsZTogQWRkIEhETUkgUEhZIGRyaXZlciBmb3INCj4gaS5NWDhNUQ0KPg0K PiBDYXV0aW9uOiBUaGlzIGlzIGFuIGV4dGVybmFsIGVtYWlsLiBQbGVhc2UgdGFrZSBjYXJlIHdo ZW4gY2xpY2tpbmcgbGlua3Mgb3INCj4gb3BlbmluZyBhdHRhY2htZW50cy4gV2hlbiBpbiBkb3Vi dCwgcmVwb3J0IHRoZSBtZXNzYWdlIHVzaW5nIHRoZSAnUmVwb3J0DQo+IHRoaXMgZW1haWwnIGJ1 dHRvbg0KPg0KPg0KPiBIaSBTYW5kb3IsDQo+DQo+IHRoYW5rcyBmb3IgdGhlIHBhdGNoLg0KPg0K PiBBbSBEaWVuc3RhZywgMTcuIE9rdG9iZXIgMjAyMywgMDk6MDQ6MDMgQ0VTVCBzY2hyaWViIFNh bmRvciBZdToNCj4gPiBBZGQgQ2FkZW5jZSBIRFAtVFggSERNSSBQSFkgZHJpdmVyIGZvciBpLk1Y OE1RLg0KPiA+DQo+ID4gQ2FkZW5jZSBIRFAtVFggUEhZIGNvdWxkIGJlIHB1dCBpbiBlaXRoZXIg RFAgbW9kZSBvciBIRE1JIG1vZGUgYmFzZQ0KPiBvbg0KPiA+IHRoZSBjb25maWd1cmF0aW9uIGNo b3Nlbi4NCj4gPiBIRE1JIFBIWSBtb2RlIGlzIGNvbmZpZ3VyYXRlZCBpbiB0aGUgZHJpdmVyLg0K PiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogU2FuZG9yIFl1IDxTYW5kb3IueXVAbnhwLmNvbT4NCj4g PiBUZXN0ZWQtYnk6IEFsZXhhbmRlciBTdGVpbiA8YWxleGFuZGVyLnN0ZWluQGV3LnRxLWdyb3Vw LmNvbT4NCj4gPiAtLS0NCj4gPiB2OS0+djExOg0KPiA+ICAqTm8gY2hhbmdlLg0KPiA+DQo+ID4g IGRyaXZlcnMvcGh5L2ZyZWVzY2FsZS9LY29uZmlnICAgICAgICAgICAgICAgfCAgMTAgKw0KPiA+ ICBkcml2ZXJzL3BoeS9mcmVlc2NhbGUvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAxICsNCj4g PiAgZHJpdmVycy9waHkvZnJlZXNjYWxlL3BoeS1mc2wtaW14OG1xLWhkbWkuYyB8IDk2MQ0KPiA+ ICsrKysrKysrKysrKysrKysrKysrDQo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgOTcyIGluc2VydGlv bnMoKykNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGh5L2ZyZWVzY2FsZS9waHkt ZnNsLWlteDhtcS1oZG1pLmMNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9mcmVl c2NhbGUvS2NvbmZpZw0KPiA+IGIvZHJpdmVycy9waHkvZnJlZXNjYWxlL0tjb25maWcgaW5kZXgg YzM5NzA5ZmQ3MDBhYy4uMTRmNDdiN2NjNzdhYg0KPiA+IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZl cnMvcGh5L2ZyZWVzY2FsZS9LY29uZmlnDQo+ID4gKysrIGIvZHJpdmVycy9waHkvZnJlZXNjYWxl L0tjb25maWcNCj4gPiBAQCAtNDUsNiArNDUsMTYgQEAgY29uZmlnIFBIWV9GU0xfSU1YOE1RX0RQ DQo+ID4gICAgICAgICBFbmFibGUgdGhpcyB0byBzdXBwb3J0IHRoZSBDYWRlbmNlIEhEUFRYIERQ IFBIWSBkcml2ZXINCj4gPiAgICAgICAgIG9uIGkuTVg4TVEgU09DLg0KPiA+DQo+ID4gK2NvbmZp ZyBQSFlfRlNMX0lNWDhNUV9IRE1JDQo+ID4gKyAgICAgdHJpc3RhdGUgIkZyZWVzY2FsZSBpLk1Y OE1RIEhETUkgUEhZIHN1cHBvcnQiDQo+ID4gKyAgICAgZGVwZW5kcyBvbiBPRiAmJiBIQVNfSU9N RU0NCj4gPiArICAgICBkZXBlbmRzIG9uIENPTU1PTl9DTEsNCj4gPiArICAgICBzZWxlY3QgR0VO RVJJQ19QSFkNCj4gPiArICAgICBzZWxlY3QgQ0ROU19NSERQX0hFTFBFUg0KPiA+ICsgICAgIGhl bHANCj4gPiArICAgICAgIEVuYWJsZSB0aGlzIHRvIHN1cHBvcnQgdGhlIENhZGVuY2UgSERQVFgg SERNSSBQSFkgZHJpdmVyDQo+ID4gKyAgICAgICBvbiBpLk1YOE1RIFNPQy4NCj4gPiArDQo+ID4g IGVuZGlmDQo+ID4NCj4gPiAgY29uZmlnIFBIWV9GU0xfTFlOWF8yOEcNCj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9waHkvZnJlZXNjYWxlL01ha2VmaWxlDQo+ID4gYi9kcml2ZXJzL3BoeS9mcmVl c2NhbGUvTWFrZWZpbGUgaW5kZXggNDdlNTI4NTIwOWZhOC4uMTM4MGFjMzFjMmVhZA0KPiA+IDEw MDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9NYWtlZmlsZQ0KPiA+ICsrKyBi L2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9NYWtlZmlsZQ0KPiA+IEBAIC0xLDUgKzEsNiBAQA0KPiA+ ICAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkNCj4gPiAgb2JqLSQoQ09O RklHX1BIWV9GU0xfSU1YOE1RX0RQKSAgICAgICAgICAgICAgKz0NCj4gcGh5LWZzbC1pbXg4bXEt ZHAubw0KPiA+ICtvYmotJChDT05GSUdfUEhZX0ZTTF9JTVg4TVFfSERNSSkgICAgKz0gcGh5LWZz bC1pbXg4bXEtaGRtaS5vDQo+ID4gIG9iai0kKENPTkZJR19QSFlfRlNMX0lNWDhNUV9VU0IpICAg ICArPSBwaHktZnNsLWlteDhtcS11c2Iubw0KPiA+ICBvYmotJChDT05GSUdfUEhZX01JWEVMX0xW RFNfUEhZKSAgICAgKz0NCj4gcGh5LWZzbC1pbXg4cW0tbHZkcy1waHkubw0KPiA+ICBvYmotJChD T05GSUdfUEhZX01JWEVMX01JUElfRFBIWSkgICAgKz0gcGh5LWZzbC1pbXg4LW1pcGktZHBoeS5v DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9waHktZnNsLWlteDhtcS1o ZG1pLmMNCj4gPiBiL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9waHktZnNsLWlteDhtcS1oZG1pLmMg bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAwLi45NzIyYjVlMTgw M2M3DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9w aHktZnNsLWlteDhtcS1oZG1pLmMNCj4gPiBAQCAtMCwwICsxLDk2MSBAQA0KPiA+ICsvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5DQo+ID4gKy8qDQo+ID4gKyAqIENhZGVu Y2UgSGlnaC1EZWZpbml0aW9uIE11bHRpbWVkaWEgSW50ZXJmYWNlIChIRE1JKSBQSFkgZHJpdmVy DQo+ID4gKyAqDQo+ID4gKyAqIENvcHlyaWdodCAoQykgMjAyMiwyMDIzIE5YUCBTZW1pY29uZHVj dG9yLCBJbmMuDQo+ID4gKyAqLw0KPiA+ICsjaW5jbHVkZSA8YXNtL3VuYWxpZ25lZC5oPg0KPiA+ ICsjaW5jbHVkZSA8ZHJtL2JyaWRnZS9jZG5zLW1oZHAtaGVscGVyLmg+ICNpbmNsdWRlIDxsaW51 eC9jbGsuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPiAjaW5jbHVkZSA8bGludXgv cGh5L3BoeS5oPiAjaW5jbHVkZQ0KPiA+ICs8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+ICNpbmNs dWRlIDxsaW51eC9pby5oPg0KPiA+ICsNCj4gPiArI2RlZmluZSBBRERSX1BIWV9BRkUgMHg4MDAw MA0KPiA+ICsNCj4gPiArLyogUEhZIHJlZ2lzdGVycyAqLw0KPiA+ICsjZGVmaW5lIENNTl9TU01f QklBU19UTVIgICAgICAgICAgICAgICAgICAgICAweDAwMjINCj4gPiArI2RlZmluZSBDTU5fUExM U00wX1VTRVJfREVGX0NUUkwgICAgICAgICAgICAgMHgwMDJmDQo+ID4gKyNkZWZpbmUgQ01OX1BT TV9DTEtfQ1RSTCAgICAgICAgICAgICAgICAgICAgIDB4MDA2MQ0KPiA+ICsjZGVmaW5lIENNTl9D RElBR19SRUZDTEtfQ1RSTCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA2Mg0KPiA+ICsjZGVm aW5lIENNTl9QTEwwX1ZDT0NBTF9TVEFSVCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA4MQ0K PiA+ICsjZGVmaW5lIENNTl9QTEwwX1ZDT0NBTF9JTklUX1RNUiAgICAgICAgICAgICAweDAwODQN Cj4gPiArI2RlZmluZSBDTU5fUExMMF9WQ09DQUxfSVRFUl9UTVIgICAgICAgICAgICAgMHgwMDg1 DQo+ID4gKyNkZWZpbmUgQ01OX1RYUFVDQUxfQ1RSTCAgICAgICAgICAgICAgICAgICAgIDB4MDBl MA0KPiA+ICsjZGVmaW5lIENNTl9UWFBEQ0FMX0NUUkwgICAgICAgICAgICAgICAgICAgICAweDAw ZjANCj4gPiArI2RlZmluZSBDTU5fVFhQVV9BREpfQ1RSTCAgICAgICAgICAgICAgICAgICAgMHgw MTA4DQo+ID4gKyNkZWZpbmUgQ01OX1RYUERfQURKX0NUUkwgICAgICAgICAgICAgICAgICAgIDB4 MDEwYw0KPiA+ICsjZGVmaW5lIENNTl9ESUFHX1BMTDBfRkJIX09WUkQgICAgICAgICAgICAgICAg ICAgICAgIDB4MDFjMA0KPiA+ICsjZGVmaW5lIENNTl9ESUFHX1BMTDBfRkJMX09WUkQgICAgICAg ICAgICAgICAgICAgICAgIDB4MDFjMQ0KPiA+ICsjZGVmaW5lIENNTl9ESUFHX1BMTDBfT1ZSRCAg ICAgICAgICAgICAgICAgICAweDAxYzINCj4gPiArI2RlZmluZSBDTU5fRElBR19QTEwwX1RFU1Rf TU9ERSAgICAgICAgICAgICAgICAgICAgICAweDAxYzQNCj4gPiArI2RlZmluZSBDTU5fRElBR19Q TEwwX1YySV9UVU5FICAgICAgICAgICAgICAgICAgICAgICAweDAxYzUNCj4gPiArI2RlZmluZSBD TU5fRElBR19QTEwwX0NQX1RVTkUgICAgICAgICAgICAgICAgICAgICAgICAweDAxYzYNCj4gPiAr I2RlZmluZSBDTU5fRElBR19QTEwwX0xGX1BST0cgICAgICAgICAgICAgICAgICAgICAgICAweDAx YzcNCj4gPiArI2RlZmluZSBDTU5fRElBR19QTEwwX1BUQVRJU19UVU5FMSAgICAgICAgICAgMHgw MWM4DQo+ID4gKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9QVEFUSVNfVFVORTIgICAgICAgICAgIDB4 MDFjOQ0KPiA+ICsjZGVmaW5lIENNTl9ESUFHX1BMTDBfSU5DTEtfQ1RSTCAgICAgICAgICAgICAw eDAxY2ENCj4gPiArI2RlZmluZSBDTU5fRElBR19QTEwwX1BYTF9ESVZIICAgICAgICAgICAgICAg ICAgICAgICAweDAxY2INCj4gPiArI2RlZmluZSBDTU5fRElBR19QTEwwX1BYTF9ESVZMICAgICAg ICAgICAgICAgICAgICAgICAweDAxY2MNCj4gPiArI2RlZmluZSBDTU5fRElBR19IU0NMS19TRUwg ICAgICAgICAgICAgICAgICAgMHgwMWUwDQo+ID4gKyNkZWZpbmUgWENWUl9QU01fUkNUUkwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAxDQo+ID4gKyNkZWZpbmUgVFhfVFhDQ19D QUxfU0NMUl9NVUxUXzAgICAgICAgICAgICAgICAgICAgICAgMHg0MDQ3DQo+ID4gKyNkZWZpbmUg VFhfVFhDQ19DUE9TVF9NVUxUXzAwXzAgICAgICAgICAgICAgICAgICAgICAgMHg0MDRjDQo+ID4g KyNkZWZpbmUgWENWUl9ESUFHX1BMTERSQ19DVFJMICAgICAgICAgICAgICAgICAgICAgICAgMHg0 MGUwDQo+ID4gKyNkZWZpbmUgWENWUl9ESUFHX1BMTERSQ19DVFJMICAgICAgICAgICAgICAgICAg ICAgICAgMHg0MGUwDQo+ID4gKyNkZWZpbmUgWENWUl9ESUFHX0hTQ0xLX1NFTCAgICAgICAgICAg ICAgICAgIDB4NDBlMQ0KPiA+ICsjZGVmaW5lIFhDVlJfRElBR19CSURJX0NUUkwgICAgICAgICAg ICAgICAgICAweDQwZTgNCj4gPiArI2RlZmluZSBUWF9QU0NfQTAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHg0MTAwDQo+ID4gKyNkZWZpbmUgVFhfUFNDX0ExICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4NDEwMQ0KPiA+ICsjZGVmaW5lIFRYX1BTQ19BMiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDQxMDINCj4gPiArI2RlZmluZSBUWF9QU0NfQTMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMHg0MTAzDQo+ID4gKyNkZWZpbmUgVFhfRElBR19UWF9DVFJMICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHg0MWUwDQo+ID4gKyNkZWZpbmUgVFhfRElBR19UWF9EUlYg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MWUxDQo+ID4gKyNkZWZpbmUgVFhfRElB R19CR1JFRl9QUkVEUlZfREVMQVkgICAgICAgICAgIDB4NDFlNw0KPiA+ICsjZGVmaW5lIFRYX0RJ QUdfQUNZQV8wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDFmZg0KPiA+ICsjZGVm aW5lIFRYX0RJQUdfQUNZQV8xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDNmZg0K PiA+ICsjZGVmaW5lIFRYX0RJQUdfQUNZQV8yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4NDVmZg0KPiA+ICsjZGVmaW5lIFRYX0RJQUdfQUNZQV8zICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4NDdmZg0KPiA+ICsjZGVmaW5lIFRYX0FOQV9DVFJMX1JFR18xICAgICAgICAg ICAgICAgICAgICAweDUwMjANCj4gPiArI2RlZmluZSBUWF9BTkFfQ1RSTF9SRUdfMiAgICAgICAg ICAgICAgICAgICAgMHg1MDIxDQo+ID4gKyNkZWZpbmUgVFhfRElHX0NUUkxfUkVHXzIgICAgICAg ICAgICAgICAgICAgIDB4NTAyNA0KPiA+ICsjZGVmaW5lIFRYREFfQ1lBX0FVWERBX0NZQSAgICAg ICAgICAgICAgICAgICAweDUwMjUNCj4gPiArI2RlZmluZSBUWF9BTkFfQ1RSTF9SRUdfMyAgICAg ICAgICAgICAgICAgICAgMHg1MDI2DQo+ID4gKyNkZWZpbmUgVFhfQU5BX0NUUkxfUkVHXzQgICAg ICAgICAgICAgICAgICAgIDB4NTAyNw0KPiA+ICsjZGVmaW5lIFRYX0FOQV9DVFJMX1JFR181ICAg ICAgICAgICAgICAgICAgICAweDUwMjkNCj4gPiArI2RlZmluZSBSWF9QU0NfQTAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMHg4MDAwDQo+ID4gKyNkZWZpbmUgUlhfUFNDX0NBTCAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4ODAwNg0KPiA+ICsjZGVmaW5lIFBIWV9IRFBfTU9ERV9DVFJM ICAgICAgICAgICAgICAgICAgICAweGMwMDgNCj4gPiArI2RlZmluZSBQSFlfSERQX0NMS19DVEwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwMDkNCj4gPiArI2RlZmluZSBQSFlfSVNP X0NNTl9DVFJMICAgICAgICAgICAgICAgICAgICAgMHhjMDEwDQo+ID4gKyNkZWZpbmUgUEhZX1BN QV9DTU5fQ1RSTDEgICAgICAgICAgICAgICAgICAgIDB4YzgwMA0KPiA+ICsjZGVmaW5lIFBIWV9Q TUFfSVNPX0NNTl9DVFJMICAgICAgICAgICAgICAgICAweGM4MTANCj4gPiArI2RlZmluZSBQSFlf UE1BX0lTT19QTExfQ1RSTDEgICAgICAgICAgICAgICAgICAgICAgICAweGM4MTINCj4gPiArI2Rl ZmluZSBQSFlfUE1BX0lTT0xBVElPTl9DVFJMICAgICAgICAgICAgICAgICAgICAgICAweGM4MWYN Cj4gPiArDQo+ID4gKy8qIFBIWV9IRFBfQ0xLX0NUTCAqLw0KPiA+ICsjZGVmaW5lIFBMTF9EQVRB X1JBVEVfQ0xLX0RJVl9NQVNLICAgICAgICAgICBHRU5NQVNLKDE1LCA4KQ0KPiA+ICsjZGVmaW5l IFBMTF9EQVRBX1JBVEVfQ0xLX0RJVl9IQlIgICAgICAgICAgICAweDI0DQo+ID4gKyNkZWZpbmUg UExMX0RBVEFfUkFURV9DTEtfRElWX0hCUjIgICAgICAgICAgIDB4MTINCj4gPiArI2RlZmluZSBQ TExfQ0xLX0VOX0FDS19FTiAgICAgICAgICAgICAgICAgICAgQklUKDMpDQo+ID4gKyNkZWZpbmUg UExMX0NMS19FTiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJJVCgyKQ0KPiA+ICsjZGVmaW5l IFBMTF9SRUFEWSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoMSkNCj4gPiArI2RlZmlu ZSBQTExfRU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoMCkNCj4g PiArDQo+ID4gKy8qIFBIWV9QTUFfQ01OX0NUUkwxICovDQo+ID4gKyNkZWZpbmUgQ01BX1JFRl9D TEtfRElHX0RJVl9NQVNLICAgICAgICAgICAgIEdFTk1BU0soMTMsIDEyKQ0KPiA+ICsjZGVmaW5l IENNQV9SRUZfQ0xLX1NFTF9NQVNLICAgICAgICAgICAgICAgICBHRU5NQVNLKDYsIDQpDQo+ID4g KyNkZWZpbmUgQ01BX1JFRl9DTEtfUkNWX0VOX01BU0sgICAgICAgICAgICAgICAgICAgICAgQklU KDMpDQo+ID4gKyNkZWZpbmUgQ01BX1JFRl9DTEtfUkNWX0VOICAgICAgICAgICAgICAgICAgIDEN Cj4gPiArI2RlZmluZSBDTU5fUkVBRFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgQklUKDAp DQo+ID4gKw0KPiA+ICsvKiBQSFlfUE1BX0lTT19QTExfQ1RSTDEgKi8NCj4gPiArI2RlZmluZSBD TU5fUExMMF9DTEtfREFUQVJUX0RJVl9NQVNLICAgICAgICAgR0VOTUFTSyg3LCAwKQ0KPiA+ICsN Cj4gPiArLyogVFhfRElBR19UWF9EUlYgKi8NCj4gPiArI2RlZmluZSBUWF9EUklWRVJfUFJPR19C T09TVF9FTkFCTEUgICAgICAgICAgQklUKDEwKQ0KPiA+ICsjZGVmaW5lIFRYX0RSSVZFUl9QUk9H X0JPT1NUX0xFVkVMX01BU0sNCj4gR0VOTUFTSyg5LCA4KQ0KPiA+ICsjZGVmaW5lIFRYX0RSSVZF Ul9MRE9fQkdfREVQRU5ERU5UX1JFRl9FTkFCTEUgICAgICAgIEJJVCg3KQ0KPiA+ICsjZGVmaW5l IFRYX0RSSVZFUl9MRE9fQkFOREdBUF9SRUZfRU5BQkxFICAgICBCSVQoNikNCj4gPiArDQo+ID4g Ky8qIFRYX1RYQ0NfQ0FMX1NDTFJfTVVMVF8wICovDQo+ID4gKyNkZWZpbmUgU0NBTEVEX1JFU0lT VE9SX0NBTElCUkFUSU9OX0NPREVfQUREIEJJVCg4KQ0KPiA+ICsjZGVmaW5lIFJFU0lTVE9SX0NB TF9NVUxUX1ZBTF8zMl8xMjggICAgICAgICBCSVQoNSkNCj4gPiArDQo+ID4gKy8qIENNTl9DRElB R19SRUZDTEtfQ1RSTCAqLw0KPiA+ICsjZGVmaW5lIERJR19SRUZfQ0xLX0RJVl9TQ0FMRVJfTUFT SyAgICAgICAgICBHRU5NQVNLKDE0LCAxMikNCj4gPiArI2RlZmluZSBSRUZDTEtfVEVSTUlOQVRJ T05fRU5fT1ZFUlJJREVfRU4gICAgQklUKDcpDQo+ID4gKyNkZWZpbmUgUkVGQ0xLX1RFUk1JTkFU SU9OX0VOX09WRVJSSURFICAgICAgICAgICAgICAgQklUKDYpDQo+ID4gKw0KPiA+ICsvKiBDTU5f RElBR19IU0NMS19TRUwgKi8NCj4gPiArI2RlZmluZSBIU0NMSzFfU0VMX01BU0sNCj4gR0VOTUFT Syg1LCA0KQ0KPiA+ICsjZGVmaW5lIEhTQ0xLMF9TRUxfTUFTSw0KPiBHRU5NQVNLKDEsIDApDQo+ ID4gKw0KPiA+ICsvKiBYQ1ZSX0RJQUdfSFNDTEtfU0VMICovDQo+ID4gKyNkZWZpbmUgSFNDTEtf U0VMX01PREUzX01BU0sgICAgICAgICAgICAgICAgIEdFTk1BU0soMTMsIDEyKQ0KPiA+ICsjZGVm aW5lIEhTQ0xLX1NFTF9NT0RFM19IU0NMSzEgICAgICAgICAgICAgICAgICAgICAgIDENCj4gPiAr DQo+ID4gKy8qIENNTl9QTEwwX1ZDT0NBTF9TVEFSVCAqLw0KPiA+ICsjZGVmaW5lIFZDT19DQUxJ Ql9DT0RFX1NUQVJUX1BPSU5UX1ZBTF9NQVNLICBHRU5NQVNLKDgsIDApDQo+ID4gKw0KPiA+ICsv KiBDTU5fRElBR19QTEwwX0ZCSF9PVlJEICovDQo+ID4gKyNkZWZpbmUgUExMX0ZFRURCQUNLX0RJ Vl9ISV9PVkVSUklERV9FTiAgICAgICAgICAgICAgQklUKDE1KQ0KPiA+ICsNCj4gPiArLyogQ01O X0RJQUdfUExMMF9GQkxfT1ZSRCAqLw0KPiA+ICsjZGVmaW5lIFBMTF9GRUVEQkFDS19ESVZfTE9f T1ZFUlJJREVfRU4gICAgICAgICAgICAgIEJJVCgxNSkNCj4gPiArDQo+ID4gKy8qIENNTl9ESUFH X1BMTDBfUFhMX0RJVkggKi8NCj4gPiArI2RlZmluZSBQTExfUENMS19ESVZfRU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBCSVQoMTUpDQo+ID4gKw0KPiA+ICsvKiBYQ1ZSX0RJQUdfUExM RFJDX0NUUkwgKi8NCj4gPiArI2RlZmluZSBEUExMX0NMS19TRUxfTU9ERTMgICAgICAgICAgICAg ICAgICAgQklUKDE0KQ0KPiA+ICsNCj4gPiArLyogVFhfRElBR19UWF9DVFJMICovDQo+ID4gKyNk ZWZpbmUgVFhfSUZfU1VCUkFURV9NT0RFM19NQVNLICAgICAgICAgICAgIEdFTk1BU0soNywgNikN Cj4gPiArDQo+ID4gKy8qIFBIWV9IRFBfTU9ERV9DVFJMICovDQo+ID4gKyNkZWZpbmUgUE9XRVJf U1RBVEVfQTNfQUNLICAgICAgICAgICAgICAgICAgIEJJVCg3KQ0KPiA+ICsjZGVmaW5lIFBPV0VS X1NUQVRFX0EyX0FDSyAgICAgICAgICAgICAgICAgICBCSVQoNikNCj4gPiArI2RlZmluZSBQT1dF Ul9TVEFURV9BMV9BQ0sgICAgICAgICAgICAgICAgICAgQklUKDUpDQo+ID4gKyNkZWZpbmUgUE9X RVJfU1RBVEVfQTBfQUNLICAgICAgICAgICAgICAgICAgIEJJVCg0KQ0KPiA+ICsjZGVmaW5lIFBP V0VSX1NUQVRFX0EzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJJVCgzKQ0KPiA+ICsj ZGVmaW5lIFBPV0VSX1NUQVRFX0EyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJJVCgy KQ0KPiA+ICsjZGVmaW5lIFBPV0VSX1NUQVRFX0ExICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEJJVCgxKQ0KPiA+ICsjZGVmaW5lIFBPV0VSX1NUQVRFX0EwICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEJJVCgwKQ0KPiA+ICsNCj4gPiArLyogUEhZX1BNQV9JU09fQ01OX0NUUkwg Ki8NCj4gPiArI2RlZmluZSBDTU5fTUFDUk9fUFdSX0VOX0FDSyAgICAgICAgICAgICAgICAgQklU KDUpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIEtFRVBfQUxJVkUgICAgICAgICAgIDB4MTgNCj4gPiAr DQo+ID4gKyNkZWZpbmUgUkVGX0NMS18yN01IWiAgICAgICAgICAgICAgICAyNzAwMDAwMA0KPiA+ ICsNCj4gPiArLyogSERNSSBUWCBjbG9jayBjb250cm9sIHNldHRpbmdzICovDQo+ID4gK3N0cnVj dCBoZHB0eF9oZG1pX2N0cmwgew0KPiA+ICsgICAgIHUzMiBwaXhlbF9jbGtfZnJlcV9taW47DQo+ ID4gKyAgICAgdTMyIHBpeGVsX2Nsa19mcmVxX21heDsNCj4gPiArICAgICB1MzIgZmVlZGJhY2tf ZmFjdG9yOw0KPiA+ICsgICAgIHUzMiBkYXRhX3JhbmdlX2ticHNfbWluOw0KPiA+ICsgICAgIHUz MiBkYXRhX3JhbmdlX2ticHNfbWF4Ow0KPiA+ICsgICAgIHUzMiBjbW5kYV9wbGwwX2lwX2RpdjsN Cj4gPiArICAgICB1MzIgY21uX3JlZl9jbGtfZGlnX2RpdjsNCj4gPiArICAgICB1MzIgcmVmX2Ns a19kaXZpZGVyX3NjYWxlcjsNCj4gPiArICAgICB1MzIgcGxsX2ZiX2Rpdl90b3RhbDsNCj4gPiAr ICAgICB1MzIgY21uZGFfcGxsMF9mYl9kaXZfbG93Ow0KPiA+ICsgICAgIHUzMiBjbW5kYV9wbGww X2ZiX2Rpdl9oaWdoOw0KPiA+ICsgICAgIHUzMiBwaXhlbF9kaXZfdG90YWw7DQo+ID4gKyAgICAg dTMyIGNtbmRhX3BsbDBfcHhkaXZfbG93Ow0KPiA+ICsgICAgIHUzMiBjbW5kYV9wbGwwX3B4ZGl2 X2hpZ2g7DQo+ID4gKyAgICAgdTMyIHZjb19mcmVxX21pbjsNCj4gPiArICAgICB1MzIgdmNvX2Zy ZXFfbWF4Ow0KPiA+ICsgICAgIHUzMiB2Y29fcmluZ19zZWxlY3Q7DQo+ID4gKyAgICAgdTMyIGNt bmRhX2hzX2Nsa18wX3NlbDsNCj4gPiArICAgICB1MzIgY21uZGFfaHNfY2xrXzFfc2VsOw0KPiA+ ICsgICAgIHUzMiBoc2Nsa19kaXZfYXRfeGN2cjsNCj4gPiArICAgICB1MzIgaHNjbGtfZGl2X3R4 X3N1Yl9yYXRlOw0KPiA+ICsgICAgIHUzMiBjbW5kYV9wbGwwX2hzX3N5bV9kaXZfc2VsOw0KPiA+ ICsgICAgIHUzMiBjbW5kYV9wbGwwX2Nsa19mcmVxX21pbjsNCj4gPiArICAgICB1MzIgY21uZGFf cGxsMF9jbGtfZnJlcV9tYXg7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgY2Ruc19oZHB0 eF9oZG1pX3BoeSB7DQo+ID4gKyAgICAgc3RydWN0IGNkbnNfbWhkcF9iYXNlIGJhc2U7DQo+ID4g Kw0KPiA+ICsgICAgIHZvaWQgX19pb21lbSAqcmVnczsgICAgIC8qIERQVFggcmVnaXN0ZXJzIGJh c2UgKi8NCj4gPiArICAgICBzdHJ1Y3QgbXV0ZXggbWJveF9tdXRleDsgLyogbXV0ZXggdG8gcHJv dGVjdCBtYWlsYm94ICovDQo+ID4gKyAgICAgc3RydWN0IGRldmljZSAqZGV2Ow0KPiA+ICsgICAg IHN0cnVjdCBwaHkgKnBoeTsNCj4gPiArICAgICBzdHJ1Y3QgY2xrICpyZWZfY2xrLCAqYXBiX2Ns azsNCj4gPiArICAgICB1MzIgcmVmX2Nsa19yYXRlOw0KPiA+ICsgICAgIHUzMiBwaXhlbF9jbGtf cmF0ZTsNCj4gPiArICAgICBlbnVtIGhkbWlfY29sb3JzcGFjZSBjb2xvcl9zcGFjZTsNCj4gPiAr ICAgICB1MzIgYnBjOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyogSERNSSBUWCBjbG9jayBjb250 cm9sIHNldHRpbmdzLCBwaXhlbCBjbG9jayBpcyBvdXRwdXQgKi8gc3RhdGljDQo+ID4gK2NvbnN0 IHN0cnVjdCBoZHB0eF9oZG1pX2N0cmwgcGl4ZWxfY2xrX291dHB1dF9jdHJsX3RhYmxlW10gPSB7 DQo+ID4gKy8qTWluY2xrICBNYXhjbGsgRmRiYWsgIERSX21pbiAgIERSX21heCAgaXBfZCAgZGln ICBEUyAgICBUb3RsDQo+ICovDQo+ID4gK3sgMjcwMDAsICAyNzAwMCwgMTAwMCwgIDI3MDAwMCwg IDI3MDAwMCwgMHgwMywgMHgxLCAweDEsICAyNDAsIDB4MGJjLA0KPiA+IDB4MDMwLCAgODAsIDB4 MDI2LCAweDAyNiwgMjE2MDAwMCwgMjE2MDAwMCwgMCwgMiwgMiwgMiwgNCwgMHgzLA0KPiA+IDI3 MDAwLCAyNzAwMH0sICt7IDI3MDAwLCAgMjcwMDAsIDEyNTAsICAzMzc1MDAsICAzMzc1MDAsIDB4 MDMsIDB4MSwNCj4gPiAweDEsICAzMDAsIDB4MGVjLCAweDAzYywgMTAwLCAweDAzMCwgMHgwMzAs IDI3MDAwMDAsIDI3MDAwMDAsIDAsIDIsIDIsDQo+ID4gMiwgNCwgMHgzLCAzMzc1MCwgIDMzNzUw fSwgK3sgMjcwMDAsICAyNzAwMCwgMTUwMCwgIDQwNTAwMCwgIDQwNTAwMCwNCj4gPiAweDAzLCAw eDEsIDB4MSwgMzYwLCAweDExYywgMHgwNDgsIDEyMCwgMHgwM2EsIDB4MDNhLCAzMjQwMDAwLA0K PiA+IDMyNDAwMDAsIDAsIDIsIDIsIDIsIDQsIDB4MywgIDQwNTAwLCAgNDA1MDB9LCAreyAyNzAw MCwgIDI3MDAwLCAyMDAwLA0KPiA+IDU0MDAwMCwgIDU0MDAwMCwgMHgwMywgMHgxLCAweDEsIDI0 MCwgMHgwYmMsIDB4MDMwLCAgODAsIDB4MDI2LCAweDAyNiwNCj4gPiAyMTYwMDAwLCAyMTYwMDAw LCAwLCAyLCAyLCAyLCA0LCAweDIsICA1NDAwMCwgIDU0MDAwfSwgK3sgNTQwMDAsDQo+ID4gNTQw MDAsIDEwMDAsICA1NDAwMDAsICA1NDAwMDAsIDB4MDMsIDB4MSwgMHgxLCA0ODAsIDB4MTdjLCAw eDA2MCwgIDgwLA0KPiA+IDB4MDI2LCAweDAyNiwgNDMyMDAwMCwgNDMyMDAwMCwgMSwgMiwgMiwg MiwgNCwgMHgzLCAgNTQwMDAsICA1NDAwMH0sDQo+ID4gK3sgNTQwMDAsICA1NDAwMCwgMTI1MCwg IDY3NTAwMCwgIDY3NTAwMCwgMHgwNCwgMHgxLCAweDEsIDQwMCwgMHgxM2MsDQo+ID4gMHgwNTAs ICA1MCwgMHgwMTcsIDB4MDE3LCAyNzAwMDAwLCAyNzAwMDAwLCAwLCAxLCAxLCAyLCA0LCAweDIs DQo+ID4gNjc1MDAsICA2NzUwMH0sICt7IDU0MDAwLCAgNTQwMDAsIDE1MDAsICA4MTAwMDAsICA4 MTAwMDAsIDB4MDQsIDB4MSwNCj4gPiAweDEsIDQ4MCwgMHgxN2MsIDB4MDYwLCAgNjAsIDB4MDFj LCAweDAxYywgMzI0MDAwMCwgMzI0MDAwMCwgMCwgMiwgMiwNCj4gPiAyLCAyLCAweDIsICA4MTAw MCwgIDgxMDAwfSwgK3sgNTQwMDAsICA1NDAwMCwgMjAwMCwgMTA4MDAwMCwgMTA4MDAwMCwNCj4g PiAweDAzLCAweDEsIDB4MSwgMjQwLCAweDBiYywgMHgwMzAsICA0MCwgMHgwMTIsIDB4MDEyLCAy MTYwMDAwLA0KPiA+IDIxNjAwMDAsIDAsIDIsIDIsIDIsIDEsIDB4MSwgMTA4MDAwLCAxMDgwMDB9 LCAreyA3NDI1MCwgIDc0MjUwLCAxMDAwLA0KPiA+IDc0MjUwMCwgIDc0MjUwMCwgMHgwMywgMHgx LCAweDEsIDY2MCwgMHgyMGMsIDB4MDg0LCAgODAsIDB4MDI2LCAweDAyNiwNCj4gPiA1OTQwMDAw LCA1OTQwMDAwLCAxLCAyLCAyLCAyLCA0LCAweDMsICA3NDI1MCwgIDc0MjUwfSwgK3sgNzQyNTAs DQo+ID4gNzQyNTAsIDEyNTAsICA5MjgxMjUsICA5MjgxMjUsIDB4MDQsIDB4MSwgMHgxLCA1NTAs IDB4MWI0LCAweDA2ZSwgIDUwLA0KPiA+IDB4MDE3LCAweDAxNywgMzcxMjUwMCwgMzcxMjUwMCwg MSwgMSwgMSwgMiwgNCwgMHgyLCAgOTI4MTIsICA5MjgxMn0sDQo+ID4gK3sgNzQyNTAsICA3NDI1 MCwgMTUwMCwgMTExMzc1MCwgMTExMzc1MCwgMHgwNCwgMHgxLCAweDEsIDY2MCwgMHgyMGMsDQo+ ID4gMHgwODQsICA2MCwgMHgwMWMsIDB4MDFjLCA0NDU1MDAwLCA0NDU1MDAwLCAxLCAyLCAyLCAy LCAyLCAweDIsDQo+ID4gMTExMzc1LCAxMTEzNzV9LCAreyA3NDI1MCwgIDc0MjUwLCAyMDAwLCAx NDg1MDAwLCAxNDg1MDAwLCAweDAzLCAweDEsDQo+ID4gMHgxLCAzMzAsIDB4MTA0LCAweDA0Miwg IDQwLCAweDAxMiwgMHgwMTIsIDI5NzAwMDAsIDI5NzAwMDAsIDAsIDIsIDIsDQo+ID4gMiwgMSwg MHgxLCAxNDg1MDAsIDE0ODUwMH0sICt7IDk5MDAwLCAgOTkwMDAsIDEwMDAsICA5OTAwMDAsICA5 OTAwMDAsDQo+ID4gMHgwMywgMHgxLCAweDEsIDQ0MCwgMHgxNWMsIDB4MDU4LCAgNDAsIDB4MDEy LCAweDAxMiwgMzk2MDAwMCwNCj4gPiAzOTYwMDAwLCAxLCAyLCAyLCAyLCAyLCAweDIsICA5OTAw MCwgIDk5MDAwfSwgK3sgOTkwMDAsICA5OTAwMCwgMTI1MCwNCj4gPiAxMjM3NTAwLCAxMjM3NTAw LCAweDAzLCAweDEsIDB4MSwgMjc1LCAweDBkOCwgMHgwMzcsICAyNSwgMHgwMGIsDQo+ID4gMHgw MGEsIDI0NzUwMDAsIDI0NzUwMDAsIDAsIDEsIDEsIDIsIDIsIDB4MSwgMTIzNzUwLCAxMjM3NTB9 LCArew0KPiA+IDk5MDAwLCAgOTkwMDAsIDE1MDAsIDE0ODUwMDAsIDE0ODUwMDAsIDB4MDMsIDB4 MSwgMHgxLCAzMzAsIDB4MTA0LA0KPiA+IDB4MDQyLCAgMzAsIDB4MDBkLCAweDAwZCwgMjk3MDAw MCwgMjk3MDAwMCwgMCwgMiwgMiwgMiwgMSwgMHgxLA0KPiA+IDE0ODUwMCwgMTQ4NTAwfSwgK3sg OTkwMDAsICA5OTAwMCwgMjAwMCwgMTk4MDAwMCwgMTk4MDAwMCwgMHgwMywgMHgxLA0KPiA+IDB4 MSwgNDQwLCAweDE1YywgMHgwNTgsICA0MCwgMHgwMTIsIDB4MDEyLCAzOTYwMDAwLCAzOTYwMDAw LCAxLCAyLCAyLA0KPiA+IDIsIDEsIDB4MSwgMTk4MDAwLCAxOTgwMDB9LCArezE0ODUwMCwgMTQ4 NTAwLCAxMDAwLCAxNDg1MDAwLCAxNDg1MDAwLA0KPiA+IDB4MDMsIDB4MSwgMHgxLCA2NjAsIDB4 MjBjLCAweDA4NCwgIDQwLCAweDAxMiwgMHgwMTIsIDU5NDAwMDAsDQo+ID4gNTk0MDAwMCwgMSwg MiwgMiwgMiwgMiwgMHgyLCAxNDg1MDAsIDE0ODUwMH0sICt7MTQ4NTAwLCAxNDg1MDAsIDEyNTAs DQo+ID4gMTg1NjI1MCwgMTg1NjI1MCwgMHgwNCwgMHgxLCAweDEsIDU1MCwgMHgxYjQsIDB4MDZl LCAgMjUsIDB4MDBiLA0KPiA+IDB4MDBhLCAzNzEyNTAwLCAzNzEyNTAwLCAxLCAxLCAxLCAyLCAy LCAweDEsIDE4NTYyNSwgMTg1NjI1fSwNCj4gPiArezE0ODUwMCwgMTQ4NTAwLCAxNTAwLCAyMjI3 NTAwLCAyMjI3NTAwLCAweDAzLCAweDEsIDB4MSwgNDk1LCAweDE4OCwNCj4gPiAweDA2MywgIDMw LCAweDAwZCwgMHgwMGQsIDQ0NTUwMDAsIDQ0NTUwMDAsIDEsIDEsIDEsIDIsIDIsIDB4MSwNCj4g PiAyMjI3NTAsIDIyMjc1MH0sICt7MTQ4NTAwLCAxNDg1MDAsIDIwMDAsIDI5NzAwMDAsIDI5NzAw MDAsIDB4MDMsIDB4MSwNCj4gPiAweDEsIDY2MCwgMHgyMGMsIDB4MDg0LCAgNDAsIDB4MDEyLCAw eDAxMiwgNTk0MDAwMCwgNTk0MDAwMCwgMSwgMiwgMiwNCj4gPiAyLCAxLCAweDEsIDI5NzAwMCwg Mjk3MDAwfSwgK3sxOTgwMDAsIDE5ODAwMCwgMTAwMCwgMTk4MDAwMCwgMTk4MDAwMCwNCj4gPiAw eDAzLCAweDEsIDB4MSwgMjIwLCAweDBhYywgMHgwMmMsICAxMCwgMHgwMDMsIDB4MDAzLCAxOTgw MDAwLA0KPiA+IDE5ODAwMDAsIDAsIDEsIDEsIDIsIDEsIDB4MCwgMTk4MDAwLCAxOTgwMDB9LCAr ezE5ODAwMCwgMTk4MDAwLCAxMjUwLA0KPiA+IDI0NzUwMDAsIDI0NzUwMDAsIDB4MDMsIDB4MSwg MHgxLCA1NTAsIDB4MWI0LCAweDA2ZSwgIDI1LCAweDAwYiwNCj4gPiAweDAwYSwgNDk1MDAwMCwg NDk1MDAwMCwgMSwgMSwgMSwgMiwgMiwgMHgxLCAyNDc1MDAsIDI0NzUwMH0sDQo+ID4gK3sxOTgw MDAsIDE5ODAwMCwgMTUwMCwgMjk3MDAwMCwgMjk3MDAwMCwgMHgwMywgMHgxLCAweDEsIDMzMCwg MHgxMDQsDQo+ID4gMHgwNDIsICAxNSwgMHgwMDYsIDB4MDA1LCAyOTcwMDAwLCAyOTcwMDAwLCAw LCAxLCAxLCAyLCAxLCAweDAsDQo+ID4gMjk3MDAwLCAyOTcwMDB9LCArezE5ODAwMCwgMTk4MDAw LCAyMDAwLCAzOTYwMDAwLCAzOTYwMDAwLCAweDAzLCAweDEsDQo+ID4gMHgxLCA0NDAsIDB4MTVj LCAweDA1OCwgIDIwLCAweDAwOCwgMHgwMDgsIDM5NjAwMDAsIDM5NjAwMDAsIDEsIDEsIDEsDQo+ ID4gMiwgMSwgMHgwLCAzOTYwMDAsIDM5NjAwMH0sICt7Mjk3MDAwLCAyOTcwMDAsIDEwMDAsIDI5 NzAwMDAsIDI5NzAwMDAsDQo+ID4gMHgwMywgMHgxLCAweDEsIDMzMCwgMHgxMDQsIDB4MDQyLCAg MTAsIDB4MDAzLCAweDAwMywgMjk3MDAwMCwNCj4gPiAyOTcwMDAwLCAwLCAxLCAxLCAyLCAxLCAw eDAsIDI5NzAwMCwgMjk3MDAwfSwgK3syOTcwMDAsIDI5NzAwMCwgMTUwMCwNCj4gPiA0NDU1MDAw LCA0NDU1MDAwLCAweDAzLCAweDEsIDB4MSwgNDk1LCAweDE4OCwgMHgwNjMsICAxNSwgMHgwMDYs DQo+ID4gMHgwMDUsIDQ0NTUwMDAsIDQ0NTUwMDAsIDEsIDEsIDEsIDIsIDEsIDB4MCwgNDQ1NTAw LCA0NDU1MDB9LA0KPiA+ICt7Mjk3MDAwLCAyOTcwMDAsIDIwMDAsIDU5NDAwMDAsIDU5NDAwMDAs IDB4MDMsIDB4MSwgMHgxLCA2NjAsIDB4MjBjLA0KPiA+IDB4MDg0LCAgMjAsIDB4MDA4LCAweDAw OCwgNTk0MDAwMCwgNTk0MDAwMCwgMSwgMSwgMSwgMiwgMSwgMHgwLA0KPiA+IDU5NDAwMCwgNTk0 MDAwfSwgK3s1OTQwMDAsIDU5NDAwMCwgMTAwMCwgNTk0MDAwMCwgNTk0MDAwMCwgMHgwMywgMHgx LA0KPiA+IDB4MSwgNjYwLCAweDIwYywgMHgwODQsICAxMCwgMHgwMDMsIDB4MDAzLCA1OTQwMDAw LCA1OTQwMDAwLCAxLCAxLCAxLA0KPiA+IDIsIDEsIDB4MCwgNTk0MDAwLCA1OTQwMDB9LCArezU5 NDAwMCwgNTk0MDAwLCAgNzUwLCA0NDU1MDAwLCA0NDU1MDAwLA0KPiA+IDB4MDMsIDB4MSwgMHgx LCA0OTUsIDB4MTg4LCAweDA2MywgIDEwLCAweDAwMywgMHgwMDMsIDQ0NTUwMDAsDQo+ID4gNDQ1 NTAwMCwgMSwgMSwgMSwgMiwgMSwgMHgwLCA0NDU1MDAsIDQ0NTUwMH0sICt7NTk0MDAwLCA1OTQw MDAsICA2MjUsDQo+ID4gMzcxMjUwMCwgMzcxMjUwMCwgMHgwNCwgMHgxLCAweDEsIDU1MCwgMHgx YjQsIDB4MDZlLCAgMTAsIDB4MDAzLA0KPiA+IDB4MDAzLCAzNzEyNTAwLCAzNzEyNTAwLCAxLCAx LCAxLCAyLCAxLCAweDAsIDM3MTI1MCwgMzcxMjUwfSwNCj4gPiArezU5NDAwMCwgNTk0MDAwLCAg NTAwLCAyOTcwMDAwLCAyOTcwMDAwLCAweDAzLCAweDEsIDB4MSwgNjYwLCAweDIwYywNCj4gPiAw eDA4NCwgIDEwLCAweDAwMywgMHgwMDMsIDU5NDAwMDAsIDU5NDAwMDAsIDEsIDEsIDEsIDIsIDIs IDB4MSwNCj4gPiAyOTcwMDAsIDI5NzAwMH0sICt9Ow0KPiA+ICsNCj4gPiArLyogSERNSSBUWCBQ TEwgdHVuaW5nIHNldHRpbmdzICovDQo+ID4gK3N0cnVjdCBoZHB0eF9oZG1pX3BsbF90dW5pbmcg ew0KPiA+ICsgICAgIHUzMiB2Y29fZnJlcV9iaW47DQo+ID4gKyAgICAgdTMyIHZjb19mcmVxX21p bjsNCj4gPiArICAgICB1MzIgdmNvX2ZyZXFfbWF4Ow0KPiA+ICsgICAgIHUzMiB2b2x0X3RvX2N1 cnJlbnRfY29hcnNlOw0KPiA+ICsgICAgIHUzMiB2b2x0X3RvX2N1cnJlbnQ7DQo+ID4gKyAgICAg dTMyIG5kYWNfY3RybDsNCj4gPiArICAgICB1MzIgcG1vc19jdHJsOw0KPiA+ICsgICAgIHUzMiBw dGF0X25kYWNfY3RybDsNCj4gPiArICAgICB1MzIgZmVlZGJhY2tfZGl2X3RvdGFsOw0KPiA+ICsg ICAgIHUzMiBjaGFyZ2VfcHVtcF9nYWluOw0KPiA+ICsgICAgIHUzMiBjb2Fyc2VfY29kZTsNCj4g PiArICAgICB1MzIgdjJpX2NvZGU7DQo+ID4gKyAgICAgdTMyIHZjb19jYWxfY29kZTsNCj4gPiAr fTsNCj4gPiArDQo+ID4gKy8qIEhETUkgVFggUExMIHR1bmluZyBzZXR0aW5ncywgcGl4ZWwgY2xv Y2sgaXMgb3V0cHV0ICovIHN0YXRpYyBjb25zdA0KPiA+ICtzdHJ1Y3QgaGRwdHhfaGRtaV9wbGxf dHVuaW5nIHBpeGVsX2Nsa19vdXRwdXRfcGxsX3RhYmxlW10gPSB7IC8qYmluDQo+ID4gK1ZDT19m cmVxIG1pbi9tYXggIGNvYXIgIGNvZCBOREFDICBQTU9TIFBUQVQgZGl2LVQgUC1HYWluIENvYSBW MkkNCj4gQ0FMDQo+ID4gKi8gK3sgIDEsIDE5ODAwMDAsIDE5ODAwMDAsIDB4NCwgMHgzLCAweDAs IDB4MDksIDB4MDksIDIyMCwgMHg0MiwgMTYwLA0KPiA+IDUsDQo+ID4gMTgzIH0sICt7ICAyLCAy MTYwMDAwLCAyMTYwMDAwLCAweDQsIDB4MywgMHgwLCAweDA5LCAweDA5LCAyNDAsIDB4NDIsDQo+ ID4gMTY2LCA2LCAyMDggfSwgK3sgIDMsIDI0NzUwMDAsIDI0NzUwMDAsIDB4NSwgMHgzLCAweDEs IDB4MDAsIDB4MDcsDQo+ID4gMjc1LCAweDQyLCAxNjcsIDYsIDIwOSB9LCAreyAgNCwgMjcwMDAw MCwgMjcwMDAwMCwgMHg1LCAweDMsIDB4MSwNCj4gPiAweDAwLCAweDA3LCAzMDAsIDB4NDIsIDE4 OCwgNiwgMjMwIH0sICt7ICA0LCAyNzAwMDAwLCAyNzAwMDAwLCAweDUsDQo+ID4gMHgzLCAweDEs IDB4MDAsIDB4MDcsIDQwMCwgMHg0YywgMTg4LCA2LCAyMzAgfSwgK3sgIDUsIDI5NzAwMDAsDQo+ ID4gMjk3MDAwMCwgMHg2LCAweDMsIDB4MSwgMHgwMCwgMHgwNywgMzMwLCAweDQyLCAxODMsIDYs IDIyNSB9LCAreyAgNiwNCj4gPiAzMjQwMDAwLCAzMjQwMDAwLCAweDYsIDB4MywgMHgxLCAweDAw LCAweDA3LCAzNjAsIDB4NDIsIDIwMywgNywgMjU2IH0sDQo+ID4gK3sgIDYsIDMyNDAwMDAsIDMy NDAwMDAsIDB4NiwgMHgzLCAweDEsIDB4MDAsIDB4MDcsIDQ4MCwgMHg0YywgMjAzLCA3LA0KPiA+ IDI1NiB9LCAreyAgNywgMzcxMjUwMCwgMzcxMjUwMCwgMHg0LCAweDMsIDB4MCwgMHgwNywgMHgw RiwgNTUwLCAweDRjLA0KPiA+IDIxMiwgNywgMjU3IH0sICt7ICA4LCAzOTYwMDAwLCAzOTYwMDAw LCAweDUsIDB4MywgMHgwLCAweDA3LCAweDBGLA0KPiA+IDQ0MCwgMHg0MiwgMTg0LCA2LCAyMjYg fSwgK3sgIDksIDQzMjAwMDAsIDQzMjAwMDAsIDB4NSwgMHgzLCAweDEsDQo+ID4gMHgwNywgMHgw RiwgNDgwLCAweDQyLCAyMDUsIDcsIDI1OCB9LCAreyAxMCwgNDQ1NTAwMCwgNDQ1NTAwMCwgMHg1 LA0KPiA+IDB4MywgMHgwLCAweDA3LCAweDBGLCA0OTUsIDB4NDIsIDIxOSwgNywgMjcyIH0sICt7 IDEwLCA0NDU1MDAwLA0KPiA+IDQ0NTUwMDAsIDB4NSwgMHgzLCAweDAsIDB4MDcsIDB4MEYsIDY2 MCwgMHg0YywgMjE5LCA3LCAyNzIgfSwNCj4gPiAreyAxMSwgNDk1MDAwMCwgNDk1MDAwMCwgMHg2 LCAweDMsIDB4MSwgMHgwMCwgMHgwNywgNTUwLCAweDQyLCAyMTMsIDcsDQo+ID4gKzI1OA0KPiA+ IH0sICt7IDEyLCA1OTQwMDAwLCA1OTQwMDAwLCAweDcsIDB4MywgMHgxLCAweDAwLCAweDA3LCA2 NjAsIDB4NDIsIDI0NCwNCj4gPiA4LA0KPiA+IDI5MiB9LCArfTsNCj4gPiArDQo+ID4gK3N0YXRp YyBpbnQgY2Ruc19waHlfcmVnX3dyaXRlKHN0cnVjdCBjZG5zX2hkcHR4X2hkbWlfcGh5ICpjZG5z X3BoeSwNCj4gPiArdTMyDQo+ID4gYWRkciwgdTMyIHZhbCkgK3sNCj4gPiArICAgICByZXR1cm4g Y2Ruc19taGRwX3JlZ193cml0ZSgmY2Ruc19waHktPmJhc2UsIEFERFJfUEhZX0FGRSArDQo+IChh ZGRyDQo+ID4gKyA8PA0KPiAyKSwNCj4gPiB2YWwpOyArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHUz MiBjZG5zX3BoeV9yZWdfcmVhZChzdHJ1Y3QgY2Ruc19oZHB0eF9oZG1pX3BoeSAqY2Ruc19waHks DQo+ID4gK3UzMg0KPiA+IGFkZHIpICt7DQo+ID4gKyAgICAgdTMyIHJlZzMyOw0KPiA+ICsNCj4g PiArICAgICBjZG5zX21oZHBfcmVnX3JlYWQoJmNkbnNfcGh5LT5iYXNlLCBBRERSX1BIWV9BRkUg KyAoYWRkciA8PA0KPiAyKSwNCj4gJnJlZzMyKTsNCj4gPiArDQo+ID4gKyAgICAgcmV0dXJuIHJl ZzMyOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHdhaXRfZm9yX2FjayhzdHJ1Y3Qg Y2Ruc19oZHB0eF9oZG1pX3BoeSAqY2Ruc19waHksIHUzMg0KPiA+ICtyZWcsIHUzMg0KPiA+IG1h c2ssICsgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycl9tc2cpDQo+ID4gK3sN Cj4gPiArICAgICB1MzIgdmFsLCBpOw0KPiA+ICsNCj4gPiArICAgICBmb3IgKGkgPSAwOyBpIDwg MTA7IGkrKykgew0KPiA+ICsgICAgICAgICAgICAgdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ru c19waHksIHJlZyk7DQo+ID4gKyAgICAgICAgICAgICBpZiAodmFsICYgbWFzaykNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ID4gKyAgICAgICAgICAgICBtc2xlZXAoMjAp Ow0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAi JXNcbiIsIGVycl9tc2cpOw0KPiA+ICsgICAgIHJldHVybiAtMTsNCj4NCj4gcmV0dXJuIC1FVElN RURPVVQ/DQoNCk9LLg0KDQo+DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBib29sIGhkcHR4 X3BoeV9jaGVja19hbGl2ZShzdHJ1Y3QgY2Ruc19oZHB0eF9oZG1pX3BoeQ0KPiA+ICsqY2Ruc19w aHkpIHsNCj4gPiArICAgICB1MzIgIGFsaXZlLCBuZXdhbGl2ZTsNCj4gPiArICAgICB1OCByZXRy aWVzX2xlZnQgPSA1MDsNCj4gPiArDQo+ID4gKyAgICAgYWxpdmUgPSByZWFkbChjZG5zX3BoeS0+ cmVncyArIEtFRVBfQUxJVkUpOw0KPiA+ICsNCj4gPiArICAgICB3aGlsZSAocmV0cmllc19sZWZ0 LS0pIHsNCj4gPiArICAgICAgICAgICAgIHVkZWxheSgyKTsNCj4gPiArDQo+ID4gKyAgICAgICAg ICAgICBuZXdhbGl2ZSA9IHJlYWRsKGNkbnNfcGh5LT5yZWdzICsgS0VFUF9BTElWRSk7DQo+ID4g KyAgICAgICAgICAgICBpZiAoYWxpdmUgPT0gbmV3YWxpdmUpDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgIGNvbnRpbnVlOw0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQo+ID4gKyAg ICAgfQ0KPiA+ICsgICAgIHJldHVybiBmYWxzZTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGlj IGludCBoZHB0eF9oZG1pX2Nsa19lbmFibGUoc3RydWN0IGNkbnNfaGRwdHhfaGRtaV9waHkNCj4g PiArKmNkbnNfcGh5KSB7DQo+ID4gKyAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gY2Ruc19waHkt PmRldjsNCj4gPiArICAgICB1MzIgcmVmX2Nsa19yYXRlOw0KPiA+ICsgICAgIGludCByZXQ7DQo+ ID4gKw0KPiA+ICsgICAgIGNkbnNfcGh5LT5yZWZfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgInJl ZiIpOw0KPiA+ICsgICAgIGlmIChJU19FUlIoY2Ruc19waHktPnJlZl9jbGspKSB7DQo+ID4gKyAg ICAgICAgICAgICBkZXZfZXJyKGRldiwgInBoeSByZWYgY2xvY2sgbm90IGZvdW5kXG4iKTsNCj4g PiArICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGNkbnNfcGh5LT5yZWZfY2xrKTsNCj4gPiAr ICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIGNkbnNfcGh5LT5hcGJfY2xrID0gZGV2bV9jbGtfZ2V0 KGRldiwgImFwYiIpOw0KPiA+ICsgICAgIGlmIChJU19FUlIoY2Ruc19waHktPmFwYl9jbGspKSB7 DQo+ID4gKyAgICAgICAgICAgICBkZXZfZXJyKGRldiwgInBoeSBhcGIgY2xvY2sgbm90IGZvdW5k XG4iKTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGNkbnNfcGh5LT5hcGJfY2xr KTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIHJldCA9IGNsa19wcmVwYXJlX2VuYWJs ZShjZG5zX3BoeS0+cmVmX2Nsayk7DQo+ID4gKyAgICAgaWYgKHJldCkgew0KPiA+ICsgICAgICAg ICAgICAgZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiRmFpbGVkIHRvIHByZXBhcmUgcmVmIGNsb2Nr XG4iKTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gKyAgICAgfQ0KPiA+ICsN Cj4gPiArICAgICByZWZfY2xrX3JhdGUgPSBjbGtfZ2V0X3JhdGUoY2Ruc19waHktPnJlZl9jbGsp Ow0KPiA+ICsgICAgIGlmICghcmVmX2Nsa19yYXRlKSB7DQo+ID4gKyAgICAgICAgICAgICBkZXZf ZXJyKGNkbnNfcGh5LT5kZXYsICJGYWlsZWQgdG8gZ2V0IHJlZiBjbG9jayByYXRlXG4iKTsNCj4g PiArICAgICAgICAgICAgIGdvdG8gZXJyX3JlZl9jbGs7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4g PiArICAgICBpZiAocmVmX2Nsa19yYXRlID09IFJFRl9DTEtfMjdNSFopIHsNCj4gPiArICAgICAg ICAgICAgIGNkbnNfcGh5LT5yZWZfY2xrX3JhdGUgPSByZWZfY2xrX3JhdGU7DQo+ID4gKyAgICAg fSBlbHNlIHsNCj4gPiArICAgICAgICAgICAgIGRldl9lcnIoY2Ruc19waHktPmRldiwgIk5vdCBz dXBwb3J0IFJlZiBDbG9jaw0KPiBSYXRlKCVkSHopDQo+IFxuIiwNCj4gPiByZWZfY2xrX3JhdGUp OyArICAgICAgICAgICAgICBnb3RvIGVycl9yZWZfY2xrOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ ID4gKyAgICAgcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGNkbnNfcGh5LT5hcGJfY2xrKTsNCj4g PiArICAgICBpZiAocmV0KSB7DQo+ID4gKyAgICAgICAgICAgICBkZXZfZXJyKGNkbnNfcGh5LT5k ZXYsICJGYWlsZWQgdG8gcHJlcGFyZSBhcGIgY2xvY2tcbiIpOw0KPiA+ICsgICAgICAgICAgICAg Z290byBlcnJfcmVmX2NsazsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAw Ow0KPiA+ICsNCj4gPiArZXJyX3JlZl9jbGs6DQo+ID4gKyAgICAgY2xrX2Rpc2FibGVfdW5wcmVw YXJlKGNkbnNfcGh5LT5yZWZfY2xrKTsNCj4gPiArICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgaGRwdHhfaGRtaV9jbGtfZGlzYWJsZShzdHJ1Y3Qg Y2Ruc19oZHB0eF9oZG1pX3BoeQ0KPiA+ICsqY2Ruc19waHkpIHsNCj4gPiArICAgICBjbGtfZGlz YWJsZV91bnByZXBhcmUoY2Ruc19waHktPnJlZl9jbGspOw0KPiA+ICsgICAgIGNsa19kaXNhYmxl X3VucHJlcGFyZShjZG5zX3BoeS0+YXBiX2Nsayk7DQo+DQo+IFNob3VsZG4ndCB0aGUgY2xvY2tz IGJlIGRpc2FibGVkIGluIHJldmVyc2Ugb3JkZXIgdG8gZW5hYmxpbmcgcGF0aD8NCg0KT0ssIEkg d2lsbCBjaGFuZ2UgaXQuDQoNCj4NCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgaGRw dHhfaGRtaV9hcmNfY29uZmlnKHN0cnVjdCBjZG5zX2hkcHR4X2hkbWlfcGh5DQo+ID4gKypjZG5z X3BoeSkgew0KPiA+ICsgICAgIHUxNiB0eHB1X2NhbGliX2NvZGU7DQo+ID4gKyAgICAgdTE2IHR4 cGRfY2FsaWJfY29kZTsNCj4gPiArICAgICB1MTYgdHhwdV9hZGpfY2FsaWJfY29kZTsNCj4gPiAr ICAgICB1MTYgdHhwZF9hZGpfY2FsaWJfY29kZTsNCj4gPiArICAgICB1MTYgcHJldl9jYWxpYl9j b2RlOw0KPiA+ICsgICAgIHUxNiBuZXdfY2FsaWJfY29kZTsNCj4gPiArICAgICB1MTYgcmRhdGE7 DQo+ID4gKw0KPiA+ICsgICAgIC8qIFBvd2VyIEFSQyAqLw0KPiA+ICsgICAgIGNkbnNfcGh5X3Jl Z193cml0ZShjZG5zX3BoeSwgVFhEQV9DWUFfQVVYREFfQ1lBLCAweDAwMDEpOw0KPiA+ICsNCj4g PiArICAgICBwcmV2X2NhbGliX2NvZGUgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwNCj4g VFhfRElHX0NUUkxfUkVHXzIpOw0KPiA+ICsgICAgIHR4cHVfY2FsaWJfY29kZSA9IGNkbnNfcGh5 X3JlZ19yZWFkKGNkbnNfcGh5LA0KPiBDTU5fVFhQVUNBTF9DVFJMKTsNCj4gPiArICAgICB0eHBk X2NhbGliX2NvZGUgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwNCj4gQ01OX1RYUERDQUxf Q1RSTCk7DQo+ID4gKyAgICAgdHhwdV9hZGpfY2FsaWJfY29kZSA9IGNkbnNfcGh5X3JlZ19yZWFk KGNkbnNfcGh5LA0KPiBDTU5fVFhQVV9BREpfQ1RSTCk7DQo+ID4gKyAgICAgdHhwZF9hZGpfY2Fs aWJfY29kZSA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LA0KPiBDTU5fVFhQRF9BREpfQ1RS TCk7DQo+ID4gKw0KPiA+ICsgICAgIG5ld19jYWxpYl9jb2RlID0gKCh0eHB1X2NhbGliX2NvZGUg KyB0eHBkX2NhbGliX2NvZGUpIC8gMikNCj4gPiArICAgICAgICAgICAgICsgdHhwdV9hZGpfY2Fs aWJfY29kZSArIHR4cGRfYWRqX2NhbGliX2NvZGU7DQo+ID4gKw0KPiA+ICsgICAgIGlmIChuZXdf Y2FsaWJfY29kZSAhPSBwcmV2X2NhbGliX2NvZGUpIHsNCj4gPiArICAgICAgICAgICAgIHJkYXRh ID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksDQo+IFRYX0FOQV9DVFJMX1JFR18xKTsNCj4g PiArICAgICAgICAgICAgIHJkYXRhICY9IDB4ZGZmZjsNCj4gPiArICAgICAgICAgICAgIGNkbnNf cGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzEsDQo+IHJkYXRhKTsNCj4g PiArICAgICAgICAgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfRElHX0NUUkxf UkVHXzIsDQo+IG5ld19jYWxpYl9jb2RlKTsNCj4gPiArICAgICAgICAgICAgIG1kZWxheSgxMCk7 DQo+ID4gKyAgICAgICAgICAgICByZGF0YSB8PSAweDIwMDA7DQo+ID4gKyAgICAgICAgICAgICBj ZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR18xLA0KPiByZGF0YSk7 DQo+ID4gKyAgICAgICAgICAgICB1c2xlZXBfcmFuZ2UoMTUwLCAyNTApOw0KPiA+ICsgICAgIH0N Cj4gPiArDQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RS TF9SRUdfMiwgMHgwMTAwKTsNCj4gPiArICAgICB1c2xlZXBfcmFuZ2UoMTAwLCAyMDApOw0KPiA+ ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzIsIDB4 MDMwMCk7DQo+ID4gKyAgICAgdXNsZWVwX3JhbmdlKDEwMCwgMjAwKTsNCj4gPiArICAgICBjZG5z X3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR18zLCAweDAwMDApOw0KPiA+ ICsgICAgIHVzbGVlcF9yYW5nZSgxMDAsIDIwMCk7DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dy aXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfMSwgMHgyMDA4KTsNCj4gPiArICAgICB1c2xl ZXBfcmFuZ2UoMTAwLCAyMDApOw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3Bo eSwgVFhfQU5BX0NUUkxfUkVHXzEsIDB4MjAxOCk7DQo+ID4gKyAgICAgdXNsZWVwX3JhbmdlKDEw MCwgMjAwKTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9D VFJMX1JFR18xLCAweDIwOTgpOw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3Bo eSwgVFhfQU5BX0NUUkxfUkVHXzIsIDB4MDMwYyk7DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dy aXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfNSwgMHgwMDEwKTsNCj4gPiArICAgICB1c2xl ZXBfcmFuZ2UoMTAwLCAyMDApOw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3Bo eSwgVFhfQU5BX0NUUkxfUkVHXzQsIDB4NDAwMSk7DQo+ID4gKyAgICAgbWRlbGF5KDUpOw0KPiA+ ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzEsIDB4 MjE5OCk7DQo+ID4gKyAgICAgbWRlbGF5KDUpOw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0 ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzIsIDB4MDMwZCk7DQo+ID4gKyAgICAgdXNsZWVw X3JhbmdlKDEwMCwgMjAwKTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHks IFRYX0FOQV9DVFJMX1JFR18yLCAweDAzMGYpOyB9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBo ZHB0eF9oZG1pX3BoeV9zZXRfdnN3aW5nKHN0cnVjdCBjZG5zX2hkcHR4X2hkbWlfcGh5DQo+ID4g KypjZG5zX3BoeSkgew0KPiA+ICsgICAgIHUzMiBrOw0KPiA+ICsgICAgIGNvbnN0IHUzMiBudW1f bGFuZXMgPSA0Ow0KPiA+ICsNCj4gPiArICAgICBmb3IgKGsgPSAwOyBrIDwgbnVtX2xhbmVzOyBr KyspIHsNCj4gPiArICAgICAgICAgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFRY X0RJQUdfVFhfRFJWIHwgKGsgPDwNCj4gOSkpLA0KPiA+ICsNCj4gVFhfRFJJVkVSX1BST0dfQk9P U1RfRU5BQkxFIHwNCj4gPiArDQo+IEZJRUxEX1BSRVAoVFhfRFJJVkVSX1BST0dfQk9PU1RfTEVW RUxfTUFTSywgMykgfA0KPiA+ICsNCj4gVFhfRFJJVkVSX0xET19CR19ERVBFTkRFTlRfUkVGX0VO QUJMRSB8DQo+ID4gKw0KPiBUWF9EUklWRVJfTERPX0JBTkRHQVBfUkVGX0VOQUJMRSk7DQo+ID4g KyAgICAgICAgICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksDQo+IChUWF9UWENDX0NQ T1NUX01VTFRfMDBfMCB8DQo+ID4gKyAoaw0KPiA8PCA5KSksIDB4MCk7DQo+ID4gKyAgICAgICAg ICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksDQo+IChUWF9UWENDX0NBTF9TQ0xSX01V TFRfMCB8DQo+ID4gKyAoaw0KPiA8PCA5KSksDQo+ID4gKw0KPiBTQ0FMRURfUkVTSVNUT1JfQ0FM SUJSQVRJT05fQ09ERV9BREQgfA0KPiA+ICsNCj4gUkVTSVNUT1JfQ0FMX01VTFRfVkFMXzMyXzEy OCk7DQo+ID4gKyAgICAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGhkcHR4X2hk bWlfZmVlZGJhY2tfZmFjdG9yKHN0cnVjdCBjZG5zX2hkcHR4X2hkbWlfcGh5DQo+ID4gKypjZG5z X3BoeSkgew0KPiA+ICsgICAgIHUzMiBmZWVkYmFja19mYWN0b3I7DQo+ID4gKw0KPiA+ICsgICAg IHN3aXRjaCAoY2Ruc19waHktPmNvbG9yX3NwYWNlKSB7DQo+ID4gKyAgICAgY2FzZSBIRE1JX0NP TE9SU1BBQ0VfWVVWNDIyOg0KPiA+ICsgICAgICAgICAgICAgZmVlZGJhY2tfZmFjdG9yID0gMTAw MDsNCj4gPiArICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsNCj4gPiArICAgICBjYXNlIEhETUlf Q09MT1JTUEFDRV9ZVVY0MjA6DQo+ID4gKyAgICAgICAgICAgICBzd2l0Y2ggKGNkbnNfcGh5LT5i cGMpIHsNCj4gPiArICAgICAgICAgICAgIGNhc2UgODoNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgZmVlZGJhY2tfZmFjdG9yID0gNTAwOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBicmVh azsNCj4gPiArICAgICAgICAgICAgIGNhc2UgMTA6DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg IGZlZWRiYWNrX2ZhY3RvciA9IDYyNTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 DQo+ID4gKyAgICAgICAgICAgICBjYXNlIDEyOg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBm ZWVkYmFja19mYWN0b3IgPSA3NTA7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0K PiA+ICsgICAgICAgICAgICAgY2FzZSAxNjoNCj4gPiArICAgICAgICAgICAgICAgICAgICAgZmVl ZGJhY2tfZmFjdG9yID0gMTAwMDsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ ID4gKyAgICAgICAgICAgICBkZWZhdWx0Og0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBkZXZf ZGJnKGNkbnNfcGh5LT5kZXYsICJJbnZhbGlkDQo+IENvbG9yRGVwdGhcbiIpOw0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4gPiArICAgICAgICAgICAgIH0NCj4gPiArICAg ICAgICAgICAgIGJyZWFrOw0KPiA+ICsNCj4gPiArICAgICBkZWZhdWx0Og0KPiA+ICsgICAgICAg ICAgICAgLyogQXNzdW1lIFJHQi9ZVVY0NDQgKi8NCj4gPiArICAgICAgICAgICAgIHN3aXRjaCAo Y2Ruc19waHktPmJwYykgew0KPiA+ICsgICAgICAgICAgICAgY2FzZSAxMDoNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgZmVlZGJhY2tfZmFjdG9yID0gMTI1MDsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICBjYXNlIDEyOg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICBmZWVkYmFja19mYWN0b3IgPSAxNTAwOw0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgIGNhc2UgMTY6DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgIGZlZWRiYWNrX2ZhY3RvciA9IDIwMDA7DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgICAgICAgZGVmYXVsdDoNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgZmVlZGJhY2tfZmFjdG9yID0gMTAwMDsNCj4gPiArICAgICAgICAgICAgIH0N Cj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiBmZWVkYmFja19mYWN0b3I7DQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgaGRwdHhfaGRtaV9waHlfY29uZmlnKHN0cnVj dCBjZG5zX2hkcHR4X2hkbWlfcGh5ICpjZG5zX3BoeSwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RydWN0IGhkcHR4X2hkbWlfY3RybA0KPiAqcF9jdHJsX3RhYmxl LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaGRwdHhf aGRtaV9wbGxfdHVuaW5nDQo+ICpwX3BsbF90YWJsZSwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2hhciBwY2xrX2luKQ0KPg0KPiBib29sIHBjbGtfaW4NCg0KT0suDQoNCj4N Cj4gPiArew0KPiA+ICsgICAgIGNvbnN0IHUzMiBudW1fbGFuZXMgPSA0Ow0KPiA+ICsgICAgIHUz MiB2YWwsIGs7DQo+ID4gKw0KPiA+ICsgICAgIC8qIGVuYWJsZSBQSFkgaXNvbGF0aW9uIG1vZGUg b25seSBmb3IgQ01OICovDQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBQ SFlfUE1BX0lTT0xBVElPTl9DVFJMLA0KPiAweGQwMDApOw0KPiA+ICsNCj4gPiArICAgICAvKiBz ZXQgY21uX3BsbDBfY2xrX2RhdGFydDFfZGl2L2Ntbl9wbGwwX2Nsa19kYXRhcnQwX2RpdiBkaXZp ZGVycw0KPiAqLw0KPiA+ICsgICAgIHZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQ SFlfUE1BX0lTT19QTExfQ1RSTDEpOw0KPiA+ICsgICAgIHZhbCAmPSB+Q01OX1BMTDBfQ0xLX0RB VEFSVF9ESVZfTUFTSzsNCj4gPiArICAgICB2YWwgfD0gRklFTERfUFJFUChDTU5fUExMMF9DTEtf REFUQVJUX0RJVl9NQVNLLCAweDEyKTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ru c19waHksIFBIWV9QTUFfSVNPX1BMTF9DVFJMMSwgdmFsKTsNCj4gPiArDQo+ID4gKyAgICAgLyog YXNzZXJ0IFBIWSByZXNldCBmcm9tIGlzb2xhdGlvbiByZWdpc3RlciAqLw0KPiA+ICsgICAgIGNk bnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX0lTT19DTU5fQ1RSTCwgMHgwMDAwKTsNCj4g PiArICAgICAvKiBhc3NlcnQgUE1BIENNTiByZXNldCAqLw0KPiA+ICsgICAgIGNkbnNfcGh5X3Jl Z193cml0ZShjZG5zX3BoeSwgUEhZX1BNQV9JU09fQ01OX0NUUkwsDQo+IDB4MDAwMCk7DQo+ID4g Kw0KPiA+ICsgICAgIC8qIHJlZ2lzdGVyIFhDVlJfRElBR19CSURJX0NUUkwgKi8NCj4gPiArICAg ICBmb3IgKGsgPSAwOyBrIDwgbnVtX2xhbmVzOyBrKyspDQo+ID4gKyAgICAgICAgICAgICBjZG5z X3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFhDVlJfRElBR19CSURJX0NUUkwgfA0KPiAoayA8PA0K PiA5KSwgMHgwMGZmKTsNCj4gPiArDQo+ID4gKyAgICAgLyogRGVzY3JpYmluZyBUYXNrIHBoeV9j ZmdfaGRwICovDQo+ID4gKyAgICAgdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFBI WV9QTUFfQ01OX0NUUkwxKTsNCj4gPiArICAgICB2YWwgJj0gfkNNQV9SRUZfQ0xLX1JDVl9FTl9N QVNLOw0KPiA+ICsgICAgIHZhbCB8PSBGSUVMRF9QUkVQKENNQV9SRUZfQ0xLX1JDVl9FTl9NQVNL LA0KPiBDTUFfUkVGX0NMS19SQ1ZfRU4pOw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShj ZG5zX3BoeSwgUEhZX1BNQV9DTU5fQ1RSTDEsIHZhbCk7DQo+ID4gKw0KPiA+ICsgICAgIC8qIFBI WSBSZWdpc3RlcnMgKi8NCj4gPiArICAgICB2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3Bo eSwgUEhZX1BNQV9DTU5fQ1RSTDEpOw0KPiA+ICsgICAgIHZhbCAmPSB+Q01BX1JFRl9DTEtfRElH X0RJVl9NQVNLOw0KPiA+ICsgICAgIHZhbCB8PSBGSUVMRF9QUkVQKENNQV9SRUZfQ0xLX0RJR19E SVZfTUFTSywNCj4gPiBwX2N0cmxfdGFibGUtPmNtbl9yZWZfY2xrX2RpZ19kaXYpOyArIGNkbnNf cGh5X3JlZ193cml0ZShjZG5zX3BoeSwNCj4gPiBQSFlfUE1BX0NNTl9DVFJMMSwgdmFsKTsNCj4g PiArDQo+ID4gKyAgICAgdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFBIWV9IRFBf Q0xLX0NUTCk7DQo+ID4gKyAgICAgdmFsICY9IH5QTExfREFUQV9SQVRFX0NMS19ESVZfTUFTSzsN Cj4gPiArICAgICB2YWwgfD0gRklFTERfUFJFUChQTExfREFUQV9SQVRFX0NMS19ESVZfTUFTSywN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBQTExfREFUQV9SQVRFX0NMS19ESVZfSEJSMik7 DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEws IHZhbCk7DQo+ID4gKw0KPiA+ICsgICAgIC8qIENvbW1vbiBjb250cm9sIG1vZHVsZSBjb250cm9s IGFuZCBkaWFnbm9zdGljIHJlZ2lzdGVycyAqLw0KPiA+ICsgICAgIHZhbCA9IGNkbnNfcGh5X3Jl Z19yZWFkKGNkbnNfcGh5LCBDTU5fQ0RJQUdfUkVGQ0xLX0NUUkwpOw0KPiA+ICsgICAgIHZhbCAm PSB+RElHX1JFRl9DTEtfRElWX1NDQUxFUl9NQVNLOw0KPiA+ICsgICAgIHZhbCB8PSBGSUVMRF9Q UkVQKERJR19SRUZfQ0xLX0RJVl9TQ0FMRVJfTUFTSywNCj4gPiBwX2N0cmxfdGFibGUtPnJlZl9j bGtfZGl2aWRlcl9zY2FsZXIpOyArICAgICAgdmFsIHw9DQo+ID4gUkVGQ0xLX1RFUk1JTkFUSU9O X0VOX09WRVJSSURFX0VOIHwNCj4gUkVGQ0xLX1RFUk1JTkFUSU9OX0VOX09WRVJSSURFOw0KPiA+ ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX0NESUFHX1JFRkNMS19DVFJM LCB2YWwpOw0KPiA+ICsNCj4gPiArICAgICAvKiBIaWdoIHNwZWVkIGNsb2NrIHVzZWQgKi8NCj4g PiArICAgICB2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgQ01OX0RJQUdfSFNDTEtf U0VMKTsNCj4gPiArICAgICB2YWwgJj0gfihIU0NMSzFfU0VMX01BU0sgfCBIU0NMSzBfU0VMX01B U0spOw0KPiA+ICsgICAgIHZhbCB8PSBGSUVMRF9QUkVQKEhTQ0xLMV9TRUxfTUFTSywNCj4gPiAr IChwX2N0cmxfdGFibGUtPmNtbmRhX2hzX2Nsa18xX3NlbA0KPiA+Pg0KPiA+IDEpKTsgKyAgICAg ICAgdmFsIHw9IEZJRUxEX1BSRVAoSFNDTEswX1NFTF9NQVNLLA0KPiAocF9jdHJsX3RhYmxlLT5j bW5kYV9oc19jbGtfMF9zZWwNCj4gPiA+PiAxKSk7ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShj ZG5zX3BoeSwgQ01OX0RJQUdfSFNDTEtfU0VMLCB2YWwpOw0KPiA+ICsNCj4gPiArICAgICBmb3Ig KGsgPSAwOyBrIDwgbnVtX2xhbmVzOyBrKyspIHsNCj4gPiArICAgICAgICAgICAgIHZhbCA9IGNk bnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LA0KPiAoWENWUl9ESUFHX0hTQ0xLX1NFTCB8DQo+IChr IDw8IDkpKSk7DQo+ID4gKyAgICAgICAgICAgICB2YWwgJj0gfkhTQ0xLX1NFTF9NT0RFM19NQVNL Ow0KPiA+ICsgICAgICAgICAgICAgdmFsIHw9IEZJRUxEX1BSRVAoSFNDTEtfU0VMX01PREUzX01B U0ssDQo+ID4gKw0KPiAocF9jdHJsX3RhYmxlLT5jbW5kYV9oc19jbGtfMF9zZWwgPj4NCj4gMSkp Ow0KPiA+ICsgICAgICAgICAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCAoWENWUl9E SUFHX0hTQ0xLX1NFTCB8DQo+IChrDQo+ID4gKyA8PA0KPiA5KSksIHZhbCk7DQo+ID4gKyAgICAg fQ0KPiA+ICsNCj4gPiArICAgICAvKiBQTEwgMCBjb250cm9sIHN0YXRlIG1hY2hpbmUgcmVnaXN0 ZXJzICovDQo+ID4gKyAgICAgdmFsID0gcF9jdHJsX3RhYmxlLT52Y29fcmluZ19zZWxlY3QgPDwg MTI7DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fUExMU00wX1VT RVJfREVGX0NUUkwsDQo+IHZhbCk7DQo+ID4gKw0KPiA+ICsgICAgIGlmIChwY2xrX2luKSB7DQo+ ID4gKyAgICAgICAgICAgICB2YWwgPSAweDMwYTA7DQo+ID4gKyAgICAgfSBlbHNlIHsNCj4gPiAr ICAgICAgICAgICAgIHZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LA0KPiBDTU5fUExM MF9WQ09DQUxfU1RBUlQpOw0KPiA+ICsgICAgICAgICAgICAgdmFsICY9IH5WQ09fQ0FMSUJfQ09E RV9TVEFSVF9QT0lOVF9WQUxfTUFTSzsNCj4gPiArICAgICAgICAgICAgIHZhbCB8PQ0KPiBGSUVM RF9QUkVQKFZDT19DQUxJQl9DT0RFX1NUQVJUX1BPSU5UX1ZBTF9NQVNLLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcF9wbGxfdGFibGUtPnZjb19jYWxfY29kZSk7DQo+ID4g KyAgICAgfQ0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1BMTDBf VkNPQ0FMX1NUQVJULCB2YWwpOw0KPiA+ICsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUo Y2Ruc19waHksIENNTl9QTEwwX1ZDT0NBTF9JTklUX1RNUiwNCj4gMHgwMDY0KTsNCj4gPiArICAg ICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9QTEwwX1ZDT0NBTF9JVEVSX1RNUiwN Cj4gMHgwMDBhKTsNCj4gPiArDQo+ID4gKyAgICAgLyogQ29tbW9uIGZ1bmN0aW9ucyBjb250cm9s IGFuZCBkaWFnbm9zdGljcyByZWdpc3RlcnMgKi8NCj4gPiArICAgICB2YWwgPSBwX2N0cmxfdGFi bGUtPmNtbmRhX3BsbDBfaHNfc3ltX2Rpdl9zZWwgPDwgODsNCj4gPiArICAgICB2YWwgfD0gcF9j dHJsX3RhYmxlLT5jbW5kYV9wbGwwX2lwX2RpdjsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3Jp dGUoY2Ruc19waHksIENNTl9ESUFHX1BMTDBfSU5DTEtfQ1RSTCwgdmFsKTsNCj4gPiArDQo+ID4g KyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fRElBR19QTEwwX09WUkQsIDB4 MDAwMCk7DQo+ID4gKw0KPiA+ICsgICAgIHZhbCA9IHBfY3RybF90YWJsZS0+Y21uZGFfcGxsMF9m Yl9kaXZfaGlnaDsNCj4gPiArICAgICB2YWwgfD0gUExMX0ZFRURCQUNLX0RJVl9ISV9PVkVSUklE RV9FTjsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9ESUFHX1BM TDBfRkJIX09WUkQsIHZhbCk7DQo+ID4gKw0KPiA+ICsgICAgIHZhbCA9IHBfY3RybF90YWJsZS0+ Y21uZGFfcGxsMF9mYl9kaXZfbG93Ow0KPiA+ICsgICAgIHZhbCB8PSBQTExfRkVFREJBQ0tfRElW X0xPX09WRVJSSURFX0VOOw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwg Q01OX0RJQUdfUExMMF9GQkxfT1ZSRCwgdmFsKTsNCj4gPiArDQo+ID4gKyAgICAgaWYgKCFwY2xr X2luKSB7DQo+ID4gKyAgICAgICAgICAgICB2YWwgPSBwX2N0cmxfdGFibGUtPmNtbmRhX3BsbDBf cHhkaXZfbG93Ow0KPiA+ICsgICAgICAgICAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5 LA0KPiBDTU5fRElBR19QTEwwX1BYTF9ESVZMLA0KPiA+ICsgdmFsKTsNCj4gPiArDQo+ID4gKyAg ICAgICAgICAgICB2YWwgPSBwX2N0cmxfdGFibGUtPmNtbmRhX3BsbDBfcHhkaXZfaGlnaDsNCj4g PiArICAgICAgICAgICAgIHZhbCB8PSBQTExfUENMS19ESVZfRU47DQo+ID4gKyAgICAgICAgICAg ICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksDQo+IENNTl9ESUFHX1BMTDBfUFhMX0RJVkgs IHZhbCk7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICB2YWwgPSBwX3BsbF90YWJsZS0+ dm9sdF90b19jdXJyZW50X2NvYXJzZTsNCj4gPiArICAgICB2YWwgfD0gKHBfcGxsX3RhYmxlLT52 b2x0X3RvX2N1cnJlbnQpIDw8IDQ7DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNf cGh5LCBDTU5fRElBR19QTEwwX1YySV9UVU5FLCB2YWwpOw0KPiA+ICsNCj4gPiArICAgICB2YWwg PSBwX3BsbF90YWJsZS0+Y2hhcmdlX3B1bXBfZ2FpbjsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdf d3JpdGUoY2Ruc19waHksIENNTl9ESUFHX1BMTDBfQ1BfVFVORSwgdmFsKTsNCj4gPiArDQo+ID4g KyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fRElBR19QTEwwX0xGX1BST0cs DQo+IDB4MDAwOCk7DQo+ID4gKw0KPiA+ICsgICAgIHZhbCA9IHBfcGxsX3RhYmxlLT5wbW9zX2N0 cmw7DQo+ID4gKyAgICAgdmFsIHw9IChwX3BsbF90YWJsZS0+bmRhY19jdHJsKSA8PCA4Ow0KPiA+ ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX0RJQUdfUExMMF9QVEFUSVNf VFVORTEsDQo+IHZhbCk7DQo+ID4gKw0KPiA+ICsgICAgIHZhbCA9IHBfcGxsX3RhYmxlLT5wdGF0 X25kYWNfY3RybDsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9E SUFHX1BMTDBfUFRBVElTX1RVTkUyLA0KPiB2YWwpOw0KPiA+ICsNCj4gPiArICAgICBpZiAocGNs a19pbikNCj4gPiArICAgICAgICAgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwNCj4g Q01OX0RJQUdfUExMMF9URVNUX01PREUsDQo+IDB4MDAyMik7DQo+ID4gKyAgICAgZWxzZQ0KPiA+ ICsgICAgICAgICAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LA0KPiBDTU5fRElBR19Q TEwwX1RFU1RfTU9ERSwNCj4gMHgwMDIwKTsNCj4gPiArDQo+ID4gKyAgICAgY2Ruc19waHlfcmVn X3dyaXRlKGNkbnNfcGh5LCBDTU5fUFNNX0NMS19DVFJMLCAweDAwMTYpOw0KPiA+ICsNCj4gPiAr ICAgICAvKiBUcmFuc2NlaXZlciBjb250cm9sIGFuZCBkaWFnbm9zdGljIHJlZ2lzdGVycyAqLw0K PiA+ICsgICAgIGZvciAoayA9IDA7IGsgPCBudW1fbGFuZXM7IGsrKykgew0KPiA+ICsgICAgICAg ICAgICAgdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksDQo+IChYQ1ZSX0RJQUdfUExM RFJDX0NUUkwNCj4gPiArIHwNCj4gKGsgPDwgOSkpKTsNCj4gPiArICAgICAgICAgICAgIHZhbCAm PSB+RFBMTF9DTEtfU0VMX01PREUzOw0KPiA+ICsgICAgICAgICAgICAgY2Ruc19waHlfcmVnX3dy aXRlKGNkbnNfcGh5LA0KPiAoWENWUl9ESUFHX1BMTERSQ19DVFJMIHwgKGsNCj4gPDwgOSkpLCB2 YWwpOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgZm9yIChrID0gMDsgayA8IG51bV9s YW5lczsgaysrKSB7DQo+ID4gKyAgICAgICAgICAgICB2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChj ZG5zX3BoeSwgKFRYX0RJQUdfVFhfQ1RSTCB8DQo+IChrDQo+ID4gKyA8PA0KPiA5KSkpOw0KPiA+ ICsgICAgICAgICAgICAgdmFsICY9IH5UWF9JRl9TVUJSQVRFX01PREUzX01BU0s7DQo+ID4gKyAg ICAgICAgICAgICB2YWwgfD0gRklFTERfUFJFUChUWF9JRl9TVUJSQVRFX01PREUzX01BU0ssDQo+ ID4gKw0KPiAocF9jdHJsX3RhYmxlLT5oc2Nsa19kaXZfdHhfc3ViX3JhdGUNCj4gPj4gMSkpOw0K PiA+ICsgICAgICAgICAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCAoVFhfRElBR19U WF9DVFJMIHwgKGsgPDwNCj4gPiArIDkpKSwNCj4gdmFsKTsNCj4gPiArICAgICB9DQo+ID4gKw0K PiA+ICsgICAgIHZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfUE1BX0NNTl9D VFJMMSk7DQo+ID4gKyAgICAgdmFsICY9IH5DTUFfUkVGX0NMS19TRUxfTUFTSzsNCj4gPiArICAg ICAvKg0KPiA+ICsgICAgICAqIHNpbmdsZSBlbmRlZCByZWZlcmVuY2UgY2xvY2sgKHZhbCB8PSAw eDAwMzApOw0KPiA+ICsgICAgICAqIGRpZmZlcmVudGlhbCBjbG9jayAgKHZhbCB8PSAweDAwMDAp Ow0KPiA+ICsgICAgICAqIGZvciBkaWZmZXJlbnRpYWwgY2xvY2sgb24gdGhlIHJlZmNsa19wIGFu ZA0KPiA+ICsgICAgICAqIHJlZmNsa19tIG9mZiBjaGlwIHBpbnM6IENNTl9ESUFHX0FDWUFbOF09 MSdiMQ0KPiA+ICsgICAgICAqIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX0RJQUdf QUNZQSwgMHgwMTAwKTsNCj4gPiArICAgICAgKi8NCj4gPiArICAgICB2YWwgfD0gRklFTERfUFJF UChDTUFfUkVGX0NMS19TRUxfTUFTSywgMyk7DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRl KGNkbnNfcGh5LCBQSFlfUE1BX0NNTl9DVFJMMSwgdmFsKTsNCj4gPiArDQo+ID4gKyAgICAgLyog RGVhc3NlcnQgUEhZIHJlc2V0ICovDQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNf cGh5LCBQSFlfSVNPX0NNTl9DVFJMLCAweDAwMDEpOw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193 cml0ZShjZG5zX3BoeSwgUEhZX1BNQV9JU09fQ01OX0NUUkwsDQo+IDB4MDAwMyk7DQo+ID4gKw0K PiA+ICsgICAgIC8qIFBvd2VyIHN0YXRlIG1hY2hpbmUgcmVnaXN0ZXJzICovDQo+ID4gKyAgICAg Zm9yIChrID0gMDsgayA8IG51bV9sYW5lczsgaysrKQ0KPiA+ICsgICAgICAgICAgICAgY2Ruc19w aHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBYQ1ZSX1BTTV9SQ1RSTCB8IChrIDw8DQo+IDkpLA0KPiAw eGZlZmMpOw0KPiA+ICsNCj4gPiArICAgICAvKiBBc3NlcnQgY21uX21hY3JvX3B3cl9lbiAqLw0K PiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX1BNQV9JU09fQ01OX0NU UkwsDQo+IDB4MDAxMyk7DQo+ID4gKw0KPiA+ICsgICAgIC8qIHdhaXQgZm9yIGNtbl9tYWNyb19w d3JfZW5fYWNrICovDQo+ID4gKyAgICAgaWYgKHdhaXRfZm9yX2FjayhjZG5zX3BoeSwgUEhZX1BN QV9JU09fQ01OX0NUUkwsDQo+IENNTl9NQUNST19QV1JfRU5fQUNLLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIk1BIG91dHB1dCBtYWNybyBwb3dlciB1cCBmYWlsZWQiKSkNCj4gPiArICAg ICAgICAgICAgIHJldHVybiAtMTsNCj4NCj4gUmV0dXJuIHRoZSBlcnJvciB2YWx1ZSBvZiB3YWl0 X2Zvcl9hY2suDQoNCk9LLg0KDQo+DQo+ID4gKyAgICAgLyogd2FpdCBmb3IgY21uX3JlYWR5ICov DQo+ID4gKyAgICAgaWYgKHdhaXRfZm9yX2FjayhjZG5zX3BoeSwgUEhZX1BNQV9DTU5fQ1RSTDEs IENNTl9SRUFEWSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICJQTUEgb3V0cHV0IHJlYWR5 IGZhaWxlZCIpKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC0xOw0KPg0KPiBSZXR1cm4gdGhl IGVycm9yIHZhbHVlIG9mIHdhaXRfZm9yX2Fjay4NCg0KT0suDQoNCj4NCj4gPiArICAgICBmb3Ig KGsgPSAwOyBrIDwgbnVtX2xhbmVzOyBrKyspIHsNCj4gPiArICAgICAgICAgICAgIGNkbnNfcGh5 X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfUFNDX0EwIHwgKGsgPDwgOSksDQo+IDB4Njc5MSk7DQo+ ID4gKyAgICAgICAgICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX1BTQ19BMSB8 IChrIDw8IDkpLA0KPiAweDY3OTApOw0KPiA+ICsgICAgICAgICAgICAgY2Ruc19waHlfcmVnX3dy aXRlKGNkbnNfcGh5LCBUWF9QU0NfQTIgfCAoayA8PCA5KSwNCj4gMHgwMDkwKTsNCj4gPiArICAg ICAgICAgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfUFNDX0EzIHwgKGsgPDwg OSksDQo+IDB4MDA5MCk7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgdmFsID0gY2Ruc19waHlf cmVnX3JlYWQoY2Ruc19waHksIFJYX1BTQ19DQUwgfCAoayA8PA0KPiA5KSk7DQo+ID4gKyAgICAg ICAgICAgICB2YWwgJj0gMHhmZmJiOw0KPiA+ICsgICAgICAgICAgICAgY2Ruc19waHlfcmVnX3dy aXRlKGNkbnNfcGh5LCBSWF9QU0NfQ0FMIHwgKGsgPDwgOSksDQo+ID4gKyB2YWwpOw0KPiA+ICsN Cj4gPiArICAgICAgICAgICAgIHZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBSWF9Q U0NfQTAgfCAoayA8PCA5KSk7DQo+ID4gKyAgICAgICAgICAgICB2YWwgJj0gMHhmZmJiOw0KPiA+ ICsgICAgICAgICAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBSWF9QU0NfQTAgfCAo ayA8PCA5KSwgdmFsKTsNCj4gPiArICAgICB9DQo+ID4gKyAgICAgcmV0dXJuIDA7DQo+ID4gK30N Cj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgaGRwdHhfaGRtaV9waHlfY2ZnKHN0cnVjdCBjZG5zX2hk cHR4X2hkbWlfcGh5ICpjZG5zX3BoeSwNCj4gPiArdTMyDQo+ID4gcmF0ZSkgK3sNCj4gPiArICAg ICBjb25zdCBzdHJ1Y3QgaGRwdHhfaGRtaV9jdHJsICpwX2N0cmxfdGFibGU7DQo+ID4gKyAgICAg Y29uc3Qgc3RydWN0IGhkcHR4X2hkbWlfcGxsX3R1bmluZyAqcF9wbGxfdGFibGU7DQo+ID4gKyAg ICAgY29uc3QgdTMyIHJlZmNsa19mcmVxX2toeiA9IGNkbnNfcGh5LT5yZWZfY2xrX3JhdGUgLyAx MDAwOw0KPiA+ICsgICAgIGNvbnN0IHU4IHBjbGtfaW4gPSBmYWxzZTsNCj4NCj4gY29uc3QgYm9v bCBwY2xrX2luID0gZmFsc2U7DQoNCk9LLg0KDQo+DQo+ID4gKyAgICAgdTMyIHBpeGVsX2ZyZXEg PSByYXRlOw0KPiA+ICsgICAgIHUzMiB2Y29fZnJlcSwgY2hhcl9mcmVxOw0KPiA+ICsgICAgIHUz MiBkaXZfdG90YWwsIGZlZWRiYWNrX2ZhY3RvcjsNCj4gPiArICAgICB1MzIgaSwgcmV0Ow0KPiA+ ICsNCj4gPiArICAgICBmZWVkYmFja19mYWN0b3IgPSBoZHB0eF9oZG1pX2ZlZWRiYWNrX2ZhY3Rv cihjZG5zX3BoeSk7DQo+ID4gKw0KPiA+ICsgICAgIGNoYXJfZnJlcSA9IHBpeGVsX2ZyZXEgKiBm ZWVkYmFja19mYWN0b3IgLyAxMDAwOw0KPiA+ICsNCj4gPiArICAgICBkZXZfZGJnKGNkbnNfcGh5 LT5kZXYsDQo+ID4gKyAgICAgICAgICAgICAiUGl4ZWwgY2xvY2s6ICglZCBLSHopLCBjaGFyYWN0 ZXIgY2xvY2s6ICVkLCBicGMgaXMNCj4gPiArICglMGQtDQo+IGJpdClcbiIsDQo+ID4gKyAgICAg ICAgICAgICBwaXhlbF9mcmVxLCBjaGFyX2ZyZXEsIGNkbnNfcGh5LT5icGMpOw0KPiA+ICsNCj4g PiArICAgICAvKiBHZXQgcmlnaHQgcm93IGZyb20gdGhlIGN0cmxfdGFibGUgdGFibGUuDQo+ID4g KyAgICAgICogQ2hlY2sgaWYgJ3BpeGVsX2ZyZXFfa2h6JyB2YWx1ZSBtYXRjaGVzIHRoZSBQSVhF TF9DTEtfRlJFUQ0KPiBjb2x1bW4uDQo+ID4gKyAgICAgICogQ29uc2lkZXIgb25seSB0aGUgcm93 cyB3aXRoIEZFRURCQUNLX0ZBQ1RPUiBjb2x1bW4gbWF0Y2hpbmcNCj4gPiBmZWVkYmFja19mYWN0 b3IuICsgICAgICovDQo+ID4gKyAgICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocGl4ZWxf Y2xrX291dHB1dF9jdHJsX3RhYmxlKTsgaSsrKSB7DQo+ID4gKyAgICAgICAgICAgICBpZiAoZmVl ZGJhY2tfZmFjdG9yID09DQo+IHBpeGVsX2Nsa19vdXRwdXRfY3RybF90YWJsZVtpXS5mZWVkYmFj a19mYWN0b3IgJiYNCj4gPiArICAgICAgICAgICAgICAgICBwaXhlbF9mcmVxID09DQo+IHBpeGVs X2Nsa19vdXRwdXRfY3RybF90YWJsZVtpXS5waXhlbF9jbGtfZnJlcV9taW4pIHsNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgcF9jdHJsX3RhYmxlID0gJnBpeGVsX2Nsa19vdXRwdXRfY3RybF90 YWJsZVtpXTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAg ICAgICB9DQo+ID4gKyAgICAgfQ0KPiA+ICsgICAgIGlmIChpID09IEFSUkFZX1NJWkUocGl4ZWxf Y2xrX291dHB1dF9jdHJsX3RhYmxlKSkgew0KPiA+ICsgICAgICAgICAgICAgZGV2X3dhcm4oY2Ru c19waHktPmRldiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICJQaXhlbCBjbGsgKCVkIEtI eikgbm90IHN1cHBvcnRlZCwgYnBjIGlzICglMGQtDQo+IGJpdClcbiIsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICBwaXhlbF9mcmVxLCBjZG5zX3BoeS0+YnBjKTsNCj4gPiArICAgICAgICAg ICAgIHJldHVybiAwOw0KPg0KPiBSZXR1cm5pbmcgMCBkb2Vzbid0IHNlZW0gY29ycmVjdC4gVGhl IGNhbGxlciBjaGVja3MgZm9yIHNtYWxsIHRoYW4gMC4gSSBzdWdnZXN0DQo+IHJldHVybmluZyAw IGlmIGNvbmZpZ3VyYXRpb24gd2FzIHN1Y2Nlc3NmdWwsIGFuZCBzb21lIGVycm9yIGNvZGUgb3Ro ZXJ3aXNlLg0KDQpPSywgaXQgc2hvdWxkIGJlIGNoYW5nZSB0byByZXR1cm4gZXJyb3IgY29kZS4N Cg0KPg0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgZGl2X3RvdGFsID0gcF9jdHJsX3Rh YmxlLT5wbGxfZmJfZGl2X3RvdGFsOw0KPiA+ICsgICAgIHZjb19mcmVxID0gcmVmY2xrX2ZyZXFf a2h6ICogZGl2X3RvdGFsIC8gcF9jdHJsX3RhYmxlLQ0KPiA+Y21uZGFfcGxsMF9pcF9kaXY7DQo+ ID4gKw0KPiA+ICsgICAgIC8qIEdldCByaWdodCByb3cgZnJvbSB0aGUgcGl4ZWxfY2xrX291dHB1 dF9wbGxfdGFibGUgdGFibGUuDQo+ID4gKyAgICAgICogQ2hlY2sgaWYgdmNvX2ZyZXFfa2h6IGFu ZCBmZWVkYmFja19kaXZfdG90YWwNCj4gPiArICAgICAgKiBjb2x1bW4gbWF0Y2hpbmcgd2l0aCBw aXhlbF9jbGtfb3V0cHV0X3BsbF90YWJsZS4NCj4gPiArICAgICAgKi8NCj4gPiArICAgICBmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRShwaXhlbF9jbGtfb3V0cHV0X3BsbF90YWJsZSk7IGkrKykg ew0KPiA+ICsgICAgICAgICAgICAgaWYgKHZjb19mcmVxID09DQo+ID4gKyBwaXhlbF9jbGtfb3V0 cHV0X3BsbF90YWJsZVtpXS52Y29fZnJlcV9taW4NCj4gJiYNCj4gPiArICAgICAgICAgICAgICAg ICBkaXZfdG90YWwgPT0NCj4gcGl4ZWxfY2xrX291dHB1dF9wbGxfdGFibGVbaV0uZmVlZGJhY2tf ZGl2X3RvdGFsKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHBfcGxsX3RhYmxlID0gJnBp eGVsX2Nsa19vdXRwdXRfcGxsX3RhYmxlW2ldOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBi cmVhazsNCj4gPiArICAgICAgICAgICAgIH0NCj4gPiArICAgICB9DQo+ID4gKyAgICAgaWYgKGkg PT0gQVJSQVlfU0laRShwaXhlbF9jbGtfb3V0cHV0X3BsbF90YWJsZSkpIHsNCj4gPiArICAgICAg ICAgICAgIGRldl93YXJuKGNkbnNfcGh5LT5kZXYsICJWQ08gKCVkIEtIeikgbm90DQo+IHN1cHBv cnRlZFxuIiwNCj4gdmNvX2ZyZXEpOw0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC0xOw0KPg0K PiByZXR1cm4gLUVJTlZBTD8NCg0KT0suDQoNCj4NCj4gPiArICAgICB9DQo+ID4gKyAgICAgZGV2 X2RiZyhjZG5zX3BoeS0+ZGV2LCAiVkNPIGZyZXF1ZW5jeSBpcyAoJWQgS0h6KVxuIiwgdmNvX2Zy ZXEpOw0KPiA+ICsNCj4gPiArICAgICByZXQgPSBoZHB0eF9oZG1pX3BoeV9jb25maWcoY2Ruc19w aHksIHBfY3RybF90YWJsZSwgcF9wbGxfdGFibGUsDQo+IHBjbGtfaW4pOw0KPiA+ICsgICAgIGlm IChyZXQgPCAwKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArDQo+ID4gKyAg ICAgcmV0dXJuIGNoYXJfZnJlcTsNCj4NCj4gU2VlIGFib3ZlLiBUaGVyZSBpcyBubyBuZWVkIHRv IHJldHVybiB0aGUgY2hhcmFjdGVyIGNsb2NrIGhlcmUuDQoNCk9LLg0KDQo+DQo+ID4gK30NCj4g PiArDQo+ID4gK3N0YXRpYyBpbnQgaGRwdHhfaGRtaV9waHlfcG93ZXJfdXAoc3RydWN0IGNkbnNf aGRwdHhfaGRtaV9waHkNCj4gPiArKmNkbnNfcGh5KSB7DQo+ID4gKyAgICAgLyogc2V0IFBvd2Vy IFN0YXRlIHRvIEEyICovDQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBQ SFlfSERQX01PREVfQ1RSTCwNCj4gUE9XRVJfU1RBVEVfQTIpOw0KPiA+ICsNCj4gPiArICAgICBj ZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0RJQUdfQUNZQV8wLCAxKTsNCj4gPiArICAg ICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0RJQUdfQUNZQV8xLCAxKTsNCj4gPiAr ICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0RJQUdfQUNZQV8yLCAxKTsNCj4g PiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0RJQUdfQUNZQV8zLCAxKTsN Cj4gPiArDQo+ID4gKyAgICAgaWYgKHdhaXRfZm9yX2FjayhjZG5zX3BoeSwgUEhZX0hEUF9NT0RF X0NUUkwsDQo+IFBPV0VSX1NUQVRFX0EyX0FDSywNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICJXYWl0IEEyIEFjayBmYWlsZWQiKSkNCj4gPiArICAgICAgICAgICAgIHJldHVybiAtMTsNCj4N Cj4gUmV0dXJuIHRoZSBlcnJvciB2YWx1ZSBvZiB3YWl0X2Zvcl9hY2suDQoNCk9LLg0KDQo+DQo+ ID4gKw0KPiA+ICsgICAgIC8qIFBvd2VyIHVwIEFSQyAqLw0KPiA+ICsgICAgIGhkcHR4X2hkbWlf YXJjX2NvbmZpZyhjZG5zX3BoeSk7DQo+ID4gKw0KPiA+ICsgICAgIC8qIENvbmZpZ3VyZSBQSFkg aW4gQTAgbW9kZSAoUEhZIG11c3QgYmUgaW4gdGhlIEEwIHBvd2VyDQo+ID4gKyAgICAgICogc3Rh dGUgaW4gb3JkZXIgdG8gdHJhbnNtaXQgZGF0YSkNCj4gPiArICAgICAgKi8NCj4gPiArICAgICBj ZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9IRFBfTU9ERV9DVFJMLA0KPiBQT1dFUl9T VEFURV9BMCk7DQo+ID4gKyAgICAgaWYgKHdhaXRfZm9yX2FjayhjZG5zX3BoeSwgUEhZX0hEUF9N T0RFX0NUUkwsDQo+IFBPV0VSX1NUQVRFX0EwX0FDSywNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICJXYWl0IEEwIEFjayBmYWlsZWQiKSkNCj4gPiArICAgICAgICAgICAgIHJldHVybiAtMTsN Cj4NCj4gUmV0dXJuIHRoZSBlcnJvciB2YWx1ZSBvZiB3YWl0X2Zvcl9hY2suDQoNCk9LLg0KDQo+ DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMg aW50IGhkcHR4X2hkbWlfcGh5X3Bvd2VyX2Rvd24oc3RydWN0IGNkbnNfaGRwdHhfaGRtaV9waHkN Cj4gPiArKmNkbnNfcGh5KSB7DQo+ID4gKyAgICAgdTMyIHZhbDsNCj4gPiArDQo+ID4gKyAgICAg dmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFBIWV9IRFBfTU9ERV9DVFJMKTsNCj4g PiArICAgICB2YWwgJj0gfihQT1dFUl9TVEFURV9BMCB8IFBPV0VSX1NUQVRFX0ExIHwNCj4gUE9X RVJfU1RBVEVfQTIgfA0KPiA+IFBPV0VSX1NUQVRFX0EzKTsgKyAgICAvKiBQSFlfRFBfTU9ERV9D VEwgc2V0IHRvIEEzIHBvd2VyIHN0YXRlICovDQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRl KGNkbnNfcGh5LCBQSFlfSERQX01PREVfQ1RSTCwgdmFsIHwNCj4gUE9XRVJfU1RBVEVfQTMpOw0K PiA+ICsNCj4gPiArICAgICBpZiAod2FpdF9mb3JfYWNrKGNkbnNfcGh5LCBQSFlfSERQX01PREVf Q1RSTCwNCj4gUE9XRVJfU1RBVEVfQTNfQUNLLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IldhaXQgQTMgQWNrIGZhaWxlZCIpKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC0xOw0KPg0K PiBSZXR1cm4gdGhlIGVycm9yIHZhbHVlIG9mIHdhaXRfZm9yX2Fjay4NCg0KT0suDQoNCj4NCj4g PiArDQo+ID4gKyAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQg Y2Ruc19oZHB0eF9oZG1pX3BoeV9vbihzdHJ1Y3QgcGh5ICpwaHkpIHsNCj4gPiArICAgICBzdHJ1 Y3QgY2Ruc19oZHB0eF9oZG1pX3BoeSAqY2Ruc19waHkgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsN Cj4gPiArDQo+ID4gKyAgICAgcmV0dXJuIGhkcHR4X2hkbWlfcGh5X3Bvd2VyX3VwKGNkbnNfcGh5 KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBjZG5zX2hkcHR4X2hkbWlfcGh5X29m ZihzdHJ1Y3QgcGh5ICpwaHkpIHsNCj4gPiArICAgICBzdHJ1Y3QgY2Ruc19oZHB0eF9oZG1pX3Bo eSAqY2Ruc19waHkgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsNCj4gPiArDQo+ID4gKyAgICAgaGRw dHhfaGRtaV9waHlfcG93ZXJfZG93bihjZG5zX3BoeSk7DQo+ID4gKyAgICAgcmV0dXJuIDA7DQo+ ID4gK30NCj4gPiArDQo+ID4gK2ludCBjZG5zX2hkcHR4X2hkbWlfcGh5X3ZhbGlkKHN0cnVjdCBw aHkgKnBoeSwgZW51bSBwaHlfbW9kZSBtb2RlLA0KPiA+ICtpbnQNCj4gPiBzdWJtb2RlLCArICAg ICAgICAgICAgICAgICAgICAgICAgICB1bmlvbiBwaHlfY29uZmlndXJlX29wdHMNCj4gKm9wdHMp DQo+ID4gK3sNCj4gPiArICAgICB1MzIgcmF0ZSA9IG9wdHMtPmhkbWkucGl4ZWxfY2xrX3JhdGU7 DQo+ID4gKyAgICAgaW50IGk7DQo+ID4gKw0KPiA+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBBUlJB WV9TSVpFKHBpeGVsX2Nsa19vdXRwdXRfY3RybF90YWJsZSk7IGkrKykNCj4gPiArICAgICAgICAg ICAgIGlmIChyYXRlID09DQo+IHBpeGVsX2Nsa19vdXRwdXRfY3RybF90YWJsZVtpXS5waXhlbF9j bGtfZnJlcV9taW4pDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KPiA+ICsN Cj4gPiArICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGlu dCBjZG5zX2hkcHR4X2hkbWlfcGh5X2luaXQoc3RydWN0IHBoeSAqcGh5KSB7DQo+ID4gKyAgICAg cmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgY2Ruc19oZHB0eF9oZG1p X2NvbmZpZ3VyZShzdHJ1Y3QgcGh5ICpwaHksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bmlvbiBwaHlfY29uZmlndXJlX29wdHMgKm9wdHMpDQo+IHsNCj4gPiArICAg ICBzdHJ1Y3QgY2Ruc19oZHB0eF9oZG1pX3BoeSAqY2Ruc19waHkgPSBwaHlfZ2V0X2RydmRhdGEo cGh5KTsNCj4gPiArICAgICBpbnQgcmV0Ow0KPiA+ICsNCj4gPiArICAgICBjZG5zX3BoeS0+cGl4 ZWxfY2xrX3JhdGUgPSBvcHRzLT5oZG1pLnBpeGVsX2Nsa19yYXRlOw0KPiA+ICsgICAgIGNkbnNf cGh5LT5jb2xvcl9zcGFjZSA9IG9wdHMtPmhkbWkuY29sb3Jfc3BhY2U7DQo+ID4gKyAgICAgY2Ru c19waHktPmJwYyA9IG9wdHMtPmhkbWkuYnBjOw0KPiA+ICsNCj4gPiArICAgICAvKiBDaGVjayBI RE1JIEZXIGFsaXZlIGJlZm9yZSBIRE1JIFBIWSBpbml0ICovDQo+ID4gKyAgICAgcmV0ID0gaGRw dHhfcGh5X2NoZWNrX2FsaXZlKGNkbnNfcGh5KTsNCj4gPiArICAgICBpZiAoIXJldCkgew0KPiA+ ICsgICAgICAgICAgICAgZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiTk8gSERNSSBGVyBydW5uaW5n XG4iKTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiAtRU5YSU87DQo+ID4gKyAgICAgfQ0KPiA+ ICsNCj4gPiArICAgICAvKiBDb25maWd1cmUgUEhZICovDQo+ID4gKyAgICAgaWYgKGhkcHR4X2hk bWlfcGh5X2NmZyhjZG5zX3BoeSwgY2Ruc19waHktPnBpeGVsX2Nsa19yYXRlKSA8IDApIHsNCj4g PiArICAgICAgICAgICAgIGRldl9lcnIoY2Ruc19waHktPmRldiwgImZhaWxlZCB0byBzZXQgcGh5 IHBjbG9ja1xuIik7DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArICAg ICB9DQo+ID4gKw0KPiA+ICsgICAgIHJldCA9IGhkcHR4X2hkbWlfcGh5X3Bvd2VyX3VwKGNkbnNf cGh5KTsNCj4gPiArICAgICBpZiAocmV0IDwgMCkNCj4gPiArICAgICAgICAgICAgIHJldHVybiBy ZXQ7DQo+ID4gKw0KPiA+ICsgICAgIGhkcHR4X2hkbWlfcGh5X3NldF92c3dpbmcoY2Ruc19waHkp Ow0KPiA+ICsNCj4gPiArICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBwaHlfb3BzIGNkbnNfaGRwdHhfaGRtaV9waHlfb3BzID0gew0KPiA+ICsg ICAgIC5pbml0ID0gY2Ruc19oZHB0eF9oZG1pX3BoeV9pbml0LA0KPiA+ICsgICAgIC5jb25maWd1 cmUgPSBjZG5zX2hkcHR4X2hkbWlfY29uZmlndXJlLA0KPiA+ICsgICAgIC5wb3dlcl9vbiA9IGNk bnNfaGRwdHhfaGRtaV9waHlfb24sDQo+ID4gKyAgICAgLnBvd2VyX29mZiA9IGNkbnNfaGRwdHhf aGRtaV9waHlfb2ZmLA0KPiA+ICsgICAgIC52YWxpZGF0ZSA9IGNkbnNfaGRwdHhfaGRtaV9waHlf dmFsaWQsDQo+ID4gKyAgICAgLm93bmVyID0gVEhJU19NT0RVTEUsDQo+ID4gK307DQo+ID4gKw0K PiA+ICtzdGF0aWMgaW50IGNkbnNfaGRwdHhfaGRtaV9waHlfcHJvYmUoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqcGRldikgew0KPiA+ICsgICAgIHN0cnVjdCBjZG5zX2hkcHR4X2hkbWlfcGh5ICpj ZG5zX3BoeTsNCj4gPiArICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Ow0KPiA+ ICsgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IGRldi0+b2Zfbm9kZTsNCj4gPiArICAg ICBzdHJ1Y3QgcGh5X3Byb3ZpZGVyICpwaHlfcHJvdmlkZXI7DQo+ID4gKyAgICAgc3RydWN0IHJl c291cmNlICpyZXM7DQo+ID4gKyAgICAgc3RydWN0IHBoeSAqcGh5Ow0KPiA+ICsgICAgIGludCBy ZXQ7DQo+ID4gKw0KPiA+ICsgICAgIGNkbnNfcGh5ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9m KCpjZG5zX3BoeSksIEdGUF9LRVJORUwpOw0KPiA+ICsgICAgIGlmICghY2Ruc19waHkpDQo+ID4g KyAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4gPiArDQo+ID4gKyAgICAgZGV2X3NldF9k cnZkYXRhKGRldiwgY2Ruc19waHkpOw0KPiA+ICsgICAgIGNkbnNfcGh5LT5kZXYgPSBkZXY7DQo+ ID4gKyAgICAgbXV0ZXhfaW5pdCgmY2Ruc19waHktPm1ib3hfbXV0ZXgpOw0KPiA+ICsNCj4gPiAr ICAgICByZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDAp Ow0KPiA+ICsgICAgIGlmICghcmVzKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FTk9ERVY7 DQo+ID4gKyAgICAgY2Ruc19waHktPnJlZ3MgPSBkZXZtX2lvcmVtYXAoZGV2LCByZXMtPnN0YXJ0 LA0KPiByZXNvdXJjZV9zaXplKHJlcykpOw0KPiA+ICsgICAgIGlmIChJU19FUlIoY2Ruc19waHkt PnJlZ3MpKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoY2Ruc19waHktPnJlZ3Mp Ow0KPiA+ICsNCj4gPiArICAgICBwaHkgPSBkZXZtX3BoeV9jcmVhdGUoZGV2LCBub2RlLCAmY2Ru c19oZHB0eF9oZG1pX3BoeV9vcHMpOw0KPiA+ICsgICAgIGlmIChJU19FUlIocGh5KSkNCj4gPiAr ICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKHBoeSk7DQo+ID4gKw0KPiA+ICsgICAgIHBoeS0+ YXR0cnMubW9kZSA9IFBIWV9NT0RFX0hETUk7DQo+ID4gKw0KPiA+ICsgICAgIGNkbnNfcGh5LT5w aHkgPSBwaHk7DQo+ID4gKyAgICAgcGh5X3NldF9kcnZkYXRhKHBoeSwgY2Ruc19waHkpOw0KPiA+ ICsNCj4gPiArICAgICAvKiBpbml0IGJhc2Ugc3RydWN0IGZvciBhY2Nlc3MgbWhkcCBtYWlsYm94 ICovDQo+ID4gKyAgICAgY2Ruc19waHktPmJhc2UuZGV2ID0gY2Ruc19waHktPmRldjsNCj4gPiAr ICAgICBjZG5zX3BoeS0+YmFzZS5yZWdzID0gY2Ruc19waHktPnJlZ3M7DQo+ID4gKyAgICAgY2Ru c19waHktPmJhc2UubWJveF9tdXRleCA9ICZjZG5zX3BoeS0+bWJveF9tdXRleDsNCj4NCj4gVGhl IHNhbWUgYXMgZm9yIHRoZSBEUCBQSFkgZHJpdmVyIGFwcGxpZXMgaGVyZS4NCg0KU2FtZSBhcyBy ZXBseSBpbiBEUCBQSFkgZHJpdmVyLg0KDQpCZXN0LCByZWdhcmRzLA0KU2FuZG9yDQoNCj4NCj4g QmVzdCByZWdhcmRzLA0KPiBBbGV4YW5kZXINCj4NCj4gPiArDQo+ID4gKyAgICAgcmV0ID0gaGRw dHhfaGRtaV9jbGtfZW5hYmxlKGNkbnNfcGh5KTsNCj4gPiArICAgICBpZiAocmV0KSB7DQo+ID4g KyAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIkluaXQgY2xrIGZhaWxcbiIpOw0KPiA+ICsgICAg ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBw aHlfcHJvdmlkZXIgPSBkZXZtX29mX3BoeV9wcm92aWRlcl9yZWdpc3RlcihkZXYsDQo+IG9mX3Bo eV9zaW1wbGVfeGxhdGUpOw0KPiA+ICsgICAgIGlmIChJU19FUlIocGh5X3Byb3ZpZGVyKSkgew0K PiA+ICsgICAgICAgICAgICAgcmV0ID0gUFRSX0VSUihwaHlfcHJvdmlkZXIpOw0KPiA+ICsgICAg ICAgICAgICAgZ290byBjbGtfZGlzYWJsZTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAg IGRldl9kYmcoZGV2LCAicHJvYmUgc3VjY2VzcyFcbiIpOw0KPiA+ICsNCj4gPiArICAgICByZXR1 cm4gMDsNCj4gPiArDQo+ID4gK2Nsa19kaXNhYmxlOg0KPiA+ICsgICAgIGhkcHR4X2hkbWlfY2xr X2Rpc2FibGUoY2Ruc19waHkpOw0KPiA+ICsNCj4gPiArICAgICByZXR1cm4gLUVJTlZBTDsNCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBjZG5zX2hkcHR4X2hkbWlfcGh5X3JlbW92ZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KSB7DQo+ID4gKyAgICAgc3RydWN0IGNkbnNfaGRw dHhfaGRtaV9waHkgKmNkbnNfcGh5ID0NCj4gPiArcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7 DQo+ID4gKw0KPiA+ICsgICAgIGhkcHR4X2hkbWlfY2xrX2Rpc2FibGUoY2Ruc19waHkpOw0KPiA+ ICsNCj4gPiArICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0 IHN0cnVjdCBvZl9kZXZpY2VfaWQgY2Ruc19oZHB0eF9oZG1pX3BoeV9vZl9tYXRjaFtdID0gew0K PiA+ICsgICAgIHsuY29tcGF0aWJsZSA9ICJmc2wsaW14OG1xLWhkbWktcGh5IiB9LA0KPiA+ICsg ICAgIHsgLyogc2VudGluZWwgKi8gfQ0KPiA+ICt9Ow0KPiA+ICtNT0RVTEVfREVWSUNFX1RBQkxF KG9mLCBjZG5zX2hkcHR4X2hkbWlfcGh5X29mX21hdGNoKTsNCj4gPiArDQo+ID4gK3N0YXRpYyBz dHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGNkbnNfaGRwdHhfaGRtaV9waHlfZHJpdmVyID0gew0KPiA+ ICsgICAgIC5wcm9iZSA9IGNkbnNfaGRwdHhfaGRtaV9waHlfcHJvYmUsDQo+ID4gKyAgICAgLnJl bW92ZSA9IGNkbnNfaGRwdHhfaGRtaV9waHlfcmVtb3ZlLA0KPiA+ICsgICAgIC5kcml2ZXIgPSB7 DQo+ID4gKyAgICAgICAgICAgICAubmFtZSAgID0gImNkbnMtaGRwdHgtaGRtaS1waHkiLA0KPiA+ ICsgICAgICAgICAgICAgLm9mX21hdGNoX3RhYmxlID0gY2Ruc19oZHB0eF9oZG1pX3BoeV9vZl9t YXRjaCwNCj4gPiArICAgICB9DQo+ID4gK307DQo+ID4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIo Y2Ruc19oZHB0eF9oZG1pX3BoeV9kcml2ZXIpOw0KPiA+ICsNCj4gPiArTU9EVUxFX0FVVEhPUigi U2FuZG9yIFl1IDxzYW5kb3IueXVAbnhwLmNvbT4iKTsNCj4gPiArTU9EVUxFX0RFU0NSSVBUSU9O KCJDYWRlbmNlIEhEUC1UWCBIRE1JIFBIWSBkcml2ZXIiKTsNCj4gPiArTU9EVUxFX0xJQ0VOU0Uo IkdQTCIpOw0KPg0KPg0KPiAtLQ0KPiBUUS1TeXN0ZW1zIEdtYkggfCBNw7xobHN0cmHDn2UgMiwg R3V0IERlbGxpbmcgfCA4MjIyOSBTZWVmZWxkLCBHZXJtYW55DQo+IEFtdHNnZXJpY2h0IE3DvG5j aGVuLCBIUkIgMTA1MDE4DQo+IEdlc2Now6RmdHNmw7xocmVyOiBEZXRsZWYgU2NobmVpZGVyLCBS w7xkaWdlciBTdGFobCwgU3RlZmFuIFNjaG5laWRlcg0KPiBodHRwOi8vd3d3LnRxLw0KPiAtZ3Jv dXAuY29tJTJGJmRhdGE9MDUlN0MwMSU3Q1NhbmRvci55dSU0MG54cC5jb20lN0MyZDRhYjdjODJl NA0KPiA5NDc2OWU2M2EwOGRiY2YxMzVhOTglN0M2ODZlYTFkM2JjMmI0YzZmYTkyY2Q5OWM1YzMw MTYzNSU3QzAlNw0KPiBDMCU3QzYzODMzMTQ1NDI2NDUxMjU1NyU3Q1Vua25vd24lN0NUV0ZwYkda c2IzZDhleUpXSWpvaU1DNA0KPiB3TGpBd01EQWlMQ0pRSWpvaVYybHVNeklpTENKQlRpSTZJazFo YVd3aUxDSlhWQ0k2TW4wJTNEJTdDMzAwMCUNCj4gN0MlN0MlN0Mmc2RhdGE9YiUyRiUyRnYzV2Jv N1pSZkRXUjNiYXUlMkJEclNRdTNYaUNwVzdyMTJaRw0KPiBUNWwxaFElM0QmcmVzZXJ2ZWQ9MA0K Pg0KDQo=