Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp34995826rwd; Mon, 10 Jul 2023 00:39:53 -0700 (PDT) X-Google-Smtp-Source: APBJJlGEwuJpWZNSxYC4PULKm2uK+L7JH3PjsjZP3gTWpduZXYYctJxRiQA8grm1zvdoNUESQGuX X-Received: by 2002:a17:906:73c2:b0:993:c267:3612 with SMTP id n2-20020a17090673c200b00993c2673612mr10388618ejl.12.1688974793420; Mon, 10 Jul 2023 00:39:53 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1688974793; cv=pass; d=google.com; s=arc-20160816; b=0BHoZ5Z748n/83hk9RGASMbm5hALuxh10WZ4H1sqPXNeri56TDvU+rRztBIgTf4lGj /EeP38hKhDk7ptJVw6QiuXk9oIRQ2XVzkpoIS+Id8Qf8Sr012SVGHQhbCCyDH31tWCR4 1hcgrH3kagv1HX9vl7qatDoUHBm/ZMW8Ibe/w4uLyBEl32jC7NsmONRBXfIPaE6ZdPwy gIH+AxiUETliBl7DRb5Nw64USRJ489ORVkiVUfpfmDiRMiRPAp3HB+BrkpEPeaxR0RlM l/1k79FLsHuVRV7As6yxvJwSNLbTf0YJFiYZ0RtHQbOAAXg+y8AL84BwTRM2nrnt+kM3 uzyw== 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-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=VtbnTnaqi7Xo67ssPIAQhiraPV7UgHlbIBK526G1itU=; fh=sZMUDI91KnOfndiwG6jpyKHU+AhhY9YS7b+zaYu5+OY=; b=zZpV66KbhPG6Vs5tUAQqvsgZtRX/ha4Lzwfg41M6T3QH5LuaZsIdJ+F/Cu0SWeDA4X S2chRRdd0qbKwprcU4jAGcVdAbBVruCbnW1BVhoOOtTjTodkDmBHXwUyLgo65Mz3Wc8/ PbRxnLzygUJV3YcZMYOr+2MCzM8ArnV3XEwDc9SLOPWrSWX7eXar4JoQJUBYjuzkIVIK EdY9iCnDwO+TDQdDP1r32xKgUNWdgrX1lKSCmExOpbS5dy7IeItaQSF0Mz5jyh19QKy7 3ziBQ9koPmvnHy5yhyd8h0AYRMDh/UeKSGwT5JM+5yKiewPDvE/XG0vmQkchz3FsVmnQ 93BQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=ho62usna; 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-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h7-20020a1709063c0700b0098e3c8beceasi7950870ejg.52.2023.07.10.00.39.29; Mon, 10 Jul 2023 00:39:53 -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=@nxp.com header.s=selector2 header.b=ho62usna; 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-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231224AbjGJHam (ORCPT + 99 others); Mon, 10 Jul 2023 03:30:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38324 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230496AbjGJHad (ORCPT ); Mon, 10 Jul 2023 03:30:33 -0400 Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on2071.outbound.protection.outlook.com [40.107.14.71]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 40A49FA; Mon, 10 Jul 2023 00:30:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Igjkb80Z9gR+mmxgicfd7DC+YCX2A5syrLp5pOWHq/V4fLAuUFZzy7w1q9dFqBSBhgAZQERg4Voa9ei6qTakZ25sBIDDA+VysBufhHk71f763+B/erz/f5OrV2qd80I//DvZZnFPERTb2jWKQ/BwAWBmuxYJoKhsNjbAuoNIbF3B2MVSGrLiUdpP9QGcSAuih2ojt0Ro7gWSaRFjlnjd2XfbyXBvOtf/22mhpe+0Ls1skYNkEkI3IxrNFi7QdB5z9T3A4rRWX/a9LeQXtKY/Y501VHuzt2F6ZLHFjMVIFppHi5BqcE+/gTohC4UTHtne0hAGthhkKS+8cbLBG0+Cwg== 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=VtbnTnaqi7Xo67ssPIAQhiraPV7UgHlbIBK526G1itU=; b=jwQEA4w3mYp+a6Sx0mzeJXJe5aNCLFge4dphe6/XUIlhIz3jbdcPszQ2ojMEOW41gVWM0ldNYCMAWfv62p0v33fJ2QrS5VQuNJ+T5NN0me57pSIfnkZJ/oou2hF1yVdnfFpLtNFFOOSc/AqJ116vi6cChHSmwGYZQz1fpE1SLUp12dzG1sMRTXMhZrD18W2UxrMTo+RcbEk+C8ZS05EAon10pNvmvxWjoZuaSWY4Vv0b2oj8PnpydoLXH+f+qZoBmX0pnl/LyeSAQelVi+Qok1EmJS8MwQHnZlFttbbcUVcp49hmO4uqEqEFCJaDlRwBqhPb3lBGr6032EC9BWEGrw== 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=VtbnTnaqi7Xo67ssPIAQhiraPV7UgHlbIBK526G1itU=; b=ho62usnaOHCZemsUlXsu7MmIFEekcJBkyB5wAHX26CbLTgho/9mXzFJU9ddJd3AfqQ6aFHMVfkak+PAT7+HS6M7O0LbPD2ATAbyc0g75l09ibtP0RU5E1sWqkLhNJetpEYuFg9RhoJck5A2Eqz4w6e6gCJOHC3zFIhAIF24UQMs= Received: from PAXPR04MB9448.eurprd04.prod.outlook.com (2603:10a6:102:2b1::21) by AM7PR04MB6822.eurprd04.prod.outlook.com (2603:10a6:20b:108::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6565.30; Mon, 10 Jul 2023 07:30:23 +0000 Received: from PAXPR04MB9448.eurprd04.prod.outlook.com ([fe80::8af8:59df:c8ab:ff51]) by PAXPR04MB9448.eurprd04.prod.outlook.com ([fe80::8af8:59df:c8ab:ff51%5]) with mapi id 15.20.6565.028; Mon, 10 Jul 2023 07:30:23 +0000 From: Sandor Yu To: Vinod Koul CC: "andrzej.hajda@intel.com" , "neil.armstrong@linaro.org" , "robert.foss@linaro.org" , "Laurent.pinchart@ideasonboard.com" , "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" , "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" , "kernel@pengutronix.de" , dl-linux-imx , Oliver Brown Subject: RE: [EXT] Re: [PATCH v6 8/8] phy: freescale: Add HDMI PHY driver for i.MX8MQ Thread-Topic: [EXT] Re: [PATCH v6 8/8] phy: freescale: Add HDMI PHY driver for i.MX8MQ Thread-Index: AQHZnyabM2idTpySQUepj3XgIb428a+VMNEAgB19AEA= Date: Mon, 10 Jul 2023 07:30:23 +0000 Message-ID: References: <80581808d007fbd91358a258eae078f08659442f.1686729444.git.Sandor.yu@nxp.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PAXPR04MB9448:EE_|AM7PR04MB6822:EE_ x-ms-office365-filtering-correlation-id: ff0afcae-421e-4cc1-0279-08db811785d4 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: nBCiprP/iEUvElONDi3ZNUGmMw7RSw24WT+RurxVQOaE5QSPM6OUFRPYQEfBVbHMn+dTa72ApTMAn6NvrjtO26GplhK/w/w1Wi4HvlsqFoWe79Tuk/h37evMamT/K71ls1XpRGrStavhT/5ZfhjYc8PAH7hqVe8FwgbpMg4kXvE0T+OAnTwHbpDxYYy/RpFpyRG3IeXAsh+wTr2ZDUEybb5FYKsm9/zxgxdPru5RLrZ6c2Z4H7BHOevTS/9yC4ev0Xg96L0G3WBTnePh7L67mvEFObmCEY5GvXxYKABZJr0c22km6A8Ir8Z8CSjpgfvKhIzkxI77G0AJYaJB5GR4cEByZKCOBSIyjInX2ayyEJ8XtCemhg7Fg8qCXhiNxMc14VfXlTgCaMdutaPwwloX8aoIcdLLmGAi9/izz5zHibinWmNWHL7/hwIV0+iv5av+3y74bnnXMdwp4LsQP3iAqtDcvHxv+tUdBy8m+D2Df37f+15qTm5z3WenKsoY9yK2BYG2zk+T3ieM44c5Cm06IpvmW/ZeJjBv277iM67rZfFjRfU/tBessbuLfdJXM8qeCa9+OYujt0AvcNIbn9Gp4ee69011PQp8bwrA4RdMch+F1tgFRB3aC8uWT6VUT3FN 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:(13230028)(4636009)(396003)(346002)(136003)(366004)(376002)(39860400002)(451199021)(86362001)(38100700002)(38070700005)(33656002)(71200400001)(7696005)(54906003)(76116006)(122000001)(55016003)(9686003)(53546011)(186003)(6506007)(44832011)(7416002)(5660300002)(52536014)(2906002)(66556008)(316002)(478600001)(66946007)(8936002)(66476007)(8676002)(83380400001)(4326008)(6916009)(64756008)(66446008)(30864003)(41300700001)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?gb2312?B?M2FsdERldW9tNU4rUEpuankranpTT0E5ZUVPNWtlUUFPTEFIaEozZEsxamJa?= =?gb2312?B?eXFvdUlqL1VpSVVtaTZyc3l6bDdxS0hIRk9XaTEzcDRwMmg5WUpURTlnSUsv?= =?gb2312?B?T0k3Nk0wU3BtcW44VUt3bkRXbXAxZ1pjY3FNLzRSN2I0NGVkZzRNbndFaDlE?= =?gb2312?B?MW5NZitYbG8xVXROVDh6SVFiWjhpZWpPNG1OWkFrSzlUQnVYb0RPMnFKbkdL?= =?gb2312?B?bjJVUjFHaXlDVnhHeVVjY3lKdWVJanNVRk1CelJPTlZ0WUF1aXVWWDI0Y05m?= =?gb2312?B?L2lDb3ZFUTJ4c3Boc21kYXI4RjREbmRML1NoVzNIRURGSlJZa1EvQXRVYjdo?= =?gb2312?B?UHpKRGZ0MjdkdjNBcWV5NHBPOEtadTN2czRhRkZpRS93M2NTNjNVekxRL2Nh?= =?gb2312?B?NytzTTh6RlgyUjRkazZVaUZmUitLazVESUVZeTQyUWpDbW4xc0pjb1hQdHpZ?= =?gb2312?B?RlhNR0ZnazJBWUpsUFJ0MUVKd3llL0RpNkV0bEtZUzlmL1A0U0VJbER5OVpR?= =?gb2312?B?Qm1WWDNHY243a1ljNkI5dXRiK0Q3ODBkQXd0S00vRTBUdWgzcEo0WmRWZjdh?= =?gb2312?B?Y1JtWVQySjdZVmdpa2dMRkFmUjRldHgxMmtDL3drZTM0ZTQ1N0NBVkxvMGM3?= =?gb2312?B?MUp2TmxIRksySVduU2FIT0xjZHIyelh1MXpMWGF5REo4N056TmN2ZjY3aHpl?= =?gb2312?B?M24xb3g3UEE4NDdBQS9pNFZ2aGp2eUgxdWpxNjd2aVZYeHdvMlRFWTlRRjZO?= =?gb2312?B?NFhLRnYzelpJelhValhBRU1iSGl0Y2JudTZaSXVGdE1Sb1E4Q1hIRVVnUEdp?= =?gb2312?B?K1lHUTFmd2xiOWFNeFpMSXFiRmErMUNsMlNlVmt0VWZ4M0FobklWdDRYTzRU?= =?gb2312?B?cXlCUVhJQkEvN2R4S0dTQTRVZ2FwN3lCZDVSWXFuZlNHRnVwSDB1RTBvYllP?= =?gb2312?B?YU40TDczeFBkSWN4Z1N1bU1iQUtmekJsMHpxYUI2Y0dhQjFaM25XUXV1blNi?= =?gb2312?B?S3I5QmJKVzRFM1ZJaUVBakFrV3J0SVBUNGJBM1c3ZHVkd2t3cTZXMzJWeCtM?= =?gb2312?B?eHZzWnZDbFBZMGsvdS9ZRkdTWm1XNTVmMjB4SXRnL0JVZjY0bDB1UXNYRm5D?= =?gb2312?B?TlNacGpVRVQvY0dYR2ZHdzhyaXdTWjc0YzkvWWt0c2t6T3o5TTVncGp4eWtU?= =?gb2312?B?VXJnM3NuMW9QRWNVQmRndmlWZTVEZE9pMW1xTVZ1L1RhV1BaaEZiUWZsRXpK?= =?gb2312?B?TnNmQjRLbXBhK05EQWwyZkhmTUFDbkdCdWZzMzRjbmJmNExhTjM2cHBLVjJG?= =?gb2312?B?QS9pcVltWTVxaEQzYUJhbUc0Z1J2M2FmQnQzZzF3OHdzMFZ0QXRNYnZ6aU9w?= =?gb2312?B?MFhyWWNHTXJMazRuSEJxYm0wM1JBMjdSR2FVT2Rkb05qb0VnR21NSnhjRlBZ?= =?gb2312?B?eG9xZzZLYnA5bWxIWEZRWWJGa3NMVE53aytVQmR2MGJUV3ZtNFhDUk1lZm4x?= =?gb2312?B?U210R1pJT0tVZnFzZ1ZsZmcyZ2NPTlZHNE1aYk0zUHQ2YkFYTlR5NURUN2RT?= =?gb2312?B?L0d2ZlBYQU1kM2pGZU10eVBqakxzQlJQVGR6OWdaa2hySXI0ZDlHc3FJWGd4?= =?gb2312?B?czVPYm1mRTM4TSt0OSs0Y0JRL3JoNC9abER4ZXAzSlJURHIvTXl4eHZwTTZQ?= =?gb2312?B?M2t4VFhsVFpQeThLL01nNytSNXcrdlVCeElVVUhVbURXcDRWa0N0cXIyaU1S?= =?gb2312?B?RVQrQ0NEMDQwd3BBNGw3T3E3V0pmZFQ2ZERrU0JGOUV6YmRLLytPOFNtU1lU?= =?gb2312?B?NU9sSUcxZ29zdG1Xak9Ua0tuT0V6TGVhUitVeDZIbFBseHhOSVBHZDVCOGpG?= =?gb2312?B?SVJTSlNLanppNnNIaEFubVJOWmtnV0JGTHpvTkFROWc5cmZmTkxtNjl2eXRH?= =?gb2312?B?MkJVdU5tWEVITjNvOWczZWdyNFU4SDErVS9RUG8yaEhleWdrNjV2NDFFWHVY?= =?gb2312?B?dnJDaVhzVVcwWUtKNE5aQ1hUZmF4ZUNycTkxNHlGZVloQTdrNFBRNUg1Mmk4?= =?gb2312?B?aUoxczJCaExZV1hxNnJxb2FTNEFSNHVjOS9VUT09?= Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 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: ff0afcae-421e-4cc1-0279-08db811785d4 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jul 2023 07:30:23.2524 (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: cE8+Oy75OIc4Ujsazejn9lfhd17OSNu/rCVAFCcT+n2+L5nvDaCyGcUqp/Uu8KF01lWn4szaR6wFVmMW3CKdVA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR04MB6822 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,T_SCC_BODY_TEXT_LINE 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 SGkgVmlub2QsDQoNClRoYW5rcyBmb3IgeW91ciBjb21tZW50cywNCg0KPiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBWaW5vZCBLb3VsIDx2a291bEBrZXJuZWwub3JnPg0KPiBT ZW50OiAyMDIzxOo21MIyMcjVIDE5OjU4DQo+IFRvOiBTYW5kb3IgWXUgPHNhbmRvci55dUBueHAu Y29tPg0KPiBDYzogYW5kcnplai5oYWpkYUBpbnRlbC5jb207IG5laWwuYXJtc3Ryb25nQGxpbmFy by5vcmc7DQo+IHJvYmVydC5mb3NzQGxpbmFyby5vcmc7IExhdXJlbnQucGluY2hhcnRAaWRlYXNv bmJvYXJkLmNvbTsNCj4gam9uYXNAa3dpYm9vLnNlOyBqZXJuZWouc2tyYWJlY0BnbWFpbC5jb207 IGFpcmxpZWRAZ21haWwuY29tOw0KPiBkYW5pZWxAZmZ3bGwuY2g7IHJvYmgrZHRAa2VybmVsLm9y Zzsga3J6eXN6dG9mLmtvemxvd3NraStkdEBsaW5hcm8ub3JnOw0KPiBzaGF3bmd1b0BrZXJuZWwu b3JnOyBzLmhhdWVyQHBlbmd1dHJvbml4LmRlOyBmZXN0ZXZhbUBnbWFpbC5jb207DQo+IGRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnOw0K PiBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2Vy Lmtlcm5lbC5vcmc7DQo+IGxpbnV4LXBoeUBsaXN0cy5pbmZyYWRlYWQub3JnOyBrZXJuZWxAcGVu Z3V0cm9uaXguZGU7IGRsLWxpbnV4LWlteA0KPiA8bGludXgtaW14QG54cC5jb20+OyBPbGl2ZXIg QnJvd24gPG9saXZlci5icm93bkBueHAuY29tPg0KPiBTdWJqZWN0OiBbRVhUXSBSZTogW1BBVENI IHY2IDgvOF0gcGh5OiBmcmVlc2NhbGU6IEFkZCBIRE1JIFBIWSBkcml2ZXIgZm9yDQo+IGkuTVg4 TVENCj4gDQo+IENhdXRpb246IFRoaXMgaXMgYW4gZXh0ZXJuYWwgZW1haWwuIFBsZWFzZSB0YWtl IGNhcmUgd2hlbiBjbGlja2luZyBsaW5rcyBvcg0KPiBvcGVuaW5nIGF0dGFjaG1lbnRzLiBXaGVu IGluIGRvdWJ0LCByZXBvcnQgdGhlIG1lc3NhZ2UgdXNpbmcgdGhlICdSZXBvcnQNCj4gdGhpcyBl bWFpbCcgYnV0dG9uDQo+IA0KPiANCj4gT24gMTUtMDYtMjMsIDA5OjM4LCBTYW5kb3IgWXUgd3Jv dGU6DQo+ID4gQWRkIENhZGVuY2UgSERQLVRYIEhETUkgUEhZIGRyaXZlciBmb3IgaS5NWDhNUS4N Cj4gPg0KPiA+IENhZGVuY2UgSERQLVRYIFBIWSBjb3VsZCBiZSBwdXQgaW4gZWl0aGVyIERQIG1v ZGUgb3IgSERNSSBtb2RlIGJhc2UNCj4gb24NCj4gPiB0aGUgY29uZmlndXJhdGlvbiBjaG9zZW4u DQo+ID4gSERNSSBQSFkgbW9kZSBpcyBjb25maWd1cmF0ZWQgaW4gdGhlIGRyaXZlci4NCj4gPg0K PiA+IFNpZ25lZC1vZmYtYnk6IFNhbmRvciBZdSA8U2FuZG9yLnl1QG54cC5jb20+DQo+ID4gLS0t DQo+ID4gIGRyaXZlcnMvcGh5L2ZyZWVzY2FsZS9LY29uZmlnICAgICAgICAgICAgICAgfCAgIDkg Kw0KPiA+ICBkcml2ZXJzL3BoeS9mcmVlc2NhbGUvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAx ICsNCj4gPiAgZHJpdmVycy9waHkvZnJlZXNjYWxlL3BoeS1mc2wtaW14OG1xLWhkbWkuYyB8IDg4 OQ0KPiA+ICsrKysrKysrKysrKysrKysrKysrDQo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgODk5IGlu c2VydGlvbnMoKykNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGh5L2ZyZWVzY2Fs ZS9waHktZnNsLWlteDhtcS1oZG1pLmMNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Bo eS9mcmVlc2NhbGUvS2NvbmZpZw0KPiA+IGIvZHJpdmVycy9waHkvZnJlZXNjYWxlL0tjb25maWcg aW5kZXggYTk5ZWUzNzBlZGE2Li5lMDA3ZTE1ZTUwM2ENCj4gPiAxMDA2NDQNCj4gPiAtLS0gYS9k cml2ZXJzL3BoeS9mcmVlc2NhbGUvS2NvbmZpZw0KPiA+ICsrKyBiL2RyaXZlcnMvcGh5L2ZyZWVz Y2FsZS9LY29uZmlnDQo+ID4gQEAgLTQ0LDYgKzQ0LDE1IEBAIGNvbmZpZyBQSFlfQ0FERU5DRV9E UF9QSFkNCj4gPiAgICAgICAgIEVuYWJsZSB0aGlzIHRvIHN1cHBvcnQgdGhlIENhZGVuY2UgSERQ VFggRFAgUEhZIGRyaXZlcg0KPiA+ICAgICAgICAgb24gTlhQJ3MgaS5NWDhNUSBTT0MuDQo+ID4N Cj4gPiArY29uZmlnIFBIWV9DQURFTkNFX0hETUlfUEhZDQo+ID4gKyAgICAgdHJpc3RhdGUgIkNh ZGVuY2UgSERQVFggSERNSSBQSFkgRHJpdmVyIg0KPiA+ICsgICAgIGRlcGVuZHMgb24gT0YgJiYg SEFTX0lPTUVNDQo+ID4gKyAgICAgZGVwZW5kcyBvbiBDT01NT05fQ0xLDQo+ID4gKyAgICAgc2Vs ZWN0IEdFTkVSSUNfUEhZDQo+ID4gKyAgICAgaGVscA0KPiA+ICsgICAgICAgRW5hYmxlIHRoaXMg dG8gc3VwcG9ydCB0aGUgQ2FkZW5jZSBIRFBUWCBIRE1JIFBIWSBkcml2ZXIuDQo+ID4gKyAgICAg ICBvbiBOWFAncyBpLk1YOE1RIFNPQy4NCj4gPiArDQo+ID4gIGVuZGlmDQo+ID4NCj4gPiAgY29u ZmlnIFBIWV9GU0xfTFlOWF8yOEcNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvZnJlZXNj YWxlL01ha2VmaWxlDQo+ID4gYi9kcml2ZXJzL3BoeS9mcmVlc2NhbGUvTWFrZWZpbGUgaW5kZXgg YzNiZGYzZmEyZTcyLi5kMjVmYWZkOTFjNTMNCj4gPiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJz L3BoeS9mcmVlc2NhbGUvTWFrZWZpbGUNCj4gPiArKysgYi9kcml2ZXJzL3BoeS9mcmVlc2NhbGUv TWFrZWZpbGUNCj4gPiBAQCAtNSwzICs1LDQgQEAgb2JqLSQoQ09ORklHX1BIWV9NSVhFTF9NSVBJ X0RQSFkpICAgICArPQ0KPiBwaHktZnNsLWlteDgtbWlwaS1kcGh5Lm8NCj4gPiAgb2JqLSQoQ09O RklHX1BIWV9GU0xfSU1YOE1fUENJRSkgICAgICs9IHBoeS1mc2wtaW14OG0tcGNpZS5vDQo+ID4g IG9iai0kKENPTkZJR19QSFlfRlNMX0xZTlhfMjhHKSAgICAgICAgICAgICAgICs9DQo+IHBoeS1m c2wtbHlueC0yOGcubw0KPiA+ICBvYmotJChDT05GSUdfUEhZX0NBREVOQ0VfRFBfUEhZKSAgICAg Kz0gcGh5LWZzbC1pbXg4bXEtZHAubw0KPiA+ICtvYmotJChDT05GSUdfUEhZX0NBREVOQ0VfSERN SV9QSFkpICAgKz0gcGh5LWZzbC1pbXg4bXEtaGRtaS5vDQo+IA0KPiBQbHMgc29ydCBhbHBoYWJl dGljYWxseSAoYm90aCBLY29uZmlnIGFuZCBNYWtlZmlsZSkNCk9LLCBhbmQgdGhlIG5hbWUgd2ls bCBiZSBjaGFuZ2UgdG8gQ09ORklHX1BIWV9GU0xfSU1YOE1RX0hETUlfUEhZIGFuZCBDT05GSUdf UEhZX0ZTTF9JTVg4TVFfRFBfUEhZLg0KaW4gdGhlIG5leHQgdmVyc2lvbi4NCj4gDQo+IA0KPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9mcmVlc2NhbGUvcGh5LWZzbC1pbXg4bXEtaGRtaS5j DQo+ID4gYi9kcml2ZXJzL3BoeS9mcmVlc2NhbGUvcGh5LWZzbC1pbXg4bXEtaGRtaS5jDQo+ID4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjY1YWViOTgzNWJi OQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL3BoeS9mcmVlc2NhbGUvcGh5 LWZzbC1pbXg4bXEtaGRtaS5jDQo+ID4gQEAgLTAsMCArMSw4ODkgQEANCj4gPiArLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQ0KPiA+ICsvKg0KPiA+ICsgKiBDYWRlbmNl IEhpZ2gtRGVmaW5pdGlvbiBNdWx0aW1lZGlhIEludGVyZmFjZSAoSERNSSkgUEhZIGRyaXZlcg0K PiA+ICsgKg0KPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTlhQIFNlbWljb25kdWN0b3IsIElu Yy4NCj4gPiArICovDQo+ID4gKyNpbmNsdWRlIDxhc20vdW5hbGlnbmVkLmg+DQo+ID4gKyNpbmNs dWRlIDxsaW51eC9jbGsuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0KPiA+ICsj aW5jbHVkZSA8bGludXgvcGh5L3BoeS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1f ZGV2aWNlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9pby5oPg0KPiA+ICsNCj4gPiArI2luY2x1 ZGUgPGRybS9icmlkZ2UvY2Rucy1taGRwLW1haWxib3guaD4NCj4gPiArDQo+ID4gKyNkZWZpbmUg QUREUl9QSFlfQUZFIDB4ODAwMDANCj4gPiArLyogUEhZIHJlZ2lzdGVycyAqLw0KPiA+ICsjZGVm aW5lIENNTl9TU01fQklBU19UTVIgICAgICAgICAgICAgICAgMHgwMDIyDQo+ID4gKyNkZWZpbmUg Q01OX1BMTFNNMF9VU0VSX0RFRl9DVFJMICAgICAgICAweDAwMkYNCj4gPiArI2RlZmluZSBDTU5f UFNNX0NMS19DVFJMICAgICAgICAgICAgICAgIDB4MDA2MQ0KPiA+ICsjZGVmaW5lIENNTl9DRElB R19SRUZDTEtfQ1RSTCAgICAgICAgICAgMHgwMDYyDQo+ID4gKyNkZWZpbmUgQ01OX1BMTDBfVkNP Q0FMX1NUQVJUICAgICAgICAgICAweDAwODENCj4gPiArI2RlZmluZSBDTU5fUExMMF9WQ09DQUxf SU5JVF9UTVIgICAgICAgIDB4MDA4NA0KPiA+ICsjZGVmaW5lIENNTl9QTEwwX1ZDT0NBTF9JVEVS X1RNUiAgICAgICAgMHgwMDg1DQo+ID4gKyNkZWZpbmUgQ01OX1RYUFVDQUxfQ1RSTCAgICAgICAg ICAgICAgICAweDAwRTANCj4gPiArI2RlZmluZSBDTU5fVFhQRENBTF9DVFJMICAgICAgICAgICAg ICAgIDB4MDBGMA0KPiA+ICsjZGVmaW5lIENNTl9UWFBVX0FESl9DVFJMICAgICAgICAgICAgICAg MHgwMTA4DQo+ID4gKyNkZWZpbmUgQ01OX1RYUERfQURKX0NUUkwgICAgICAgICAgICAgICAweDAx MGMNCj4gPiArI2RlZmluZSBDTU5fRElBR19QTEwwX0ZCSF9PVlJEICAgICAgICAgIDB4MDFDMA0K PiA+ICsjZGVmaW5lIENNTl9ESUFHX1BMTDBfRkJMX09WUkQgICAgICAgICAgMHgwMUMxDQo+ID4g KyNkZWZpbmUgQ01OX0RJQUdfUExMMF9PVlJEICAgICAgICAgICAgICAweDAxQzINCj4gPiArI2Rl ZmluZSBDTU5fRElBR19QTEwwX1RFU1RfTU9ERSAgICAgICAgIDB4MDFDNA0KPiA+ICsjZGVmaW5l IENNTl9ESUFHX1BMTDBfVjJJX1RVTkUgICAgICAgICAgMHgwMUM1DQo+ID4gKyNkZWZpbmUgQ01O X0RJQUdfUExMMF9DUF9UVU5FICAgICAgICAgICAweDAxQzYNCj4gPiArI2RlZmluZSBDTU5fRElB R19QTEwwX0xGX1BST0cgICAgICAgICAgIDB4MDFDNw0KPiA+ICsjZGVmaW5lIENNTl9ESUFHX1BM TDBfUFRBVElTX1RVTkUxICAgICAgMHgwMUM4DQo+ID4gKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9Q VEFUSVNfVFVORTIgICAgICAweDAxQzkNCj4gPiArI2RlZmluZSBDTU5fRElBR19QTEwwX0lOQ0xL X0NUUkwgICAgICAgIDB4MDFDQQ0KPiA+ICsjZGVmaW5lIENNTl9ESUFHX1BMTDBfUFhMX0RJVkgg ICAgICAgICAgMHgwMUNCDQo+ID4gKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9QWExfRElWTCAgICAg ICAgICAweDAxQ0MNCj4gPiArI2RlZmluZSBDTU5fRElBR19IU0NMS19TRUwgICAgICAgICAgICAg IDB4MDFFMA0KPiA+ICsjZGVmaW5lIFhDVlJfUFNNX1JDVFJMICAgICAgICAgICAgICAgICAgMHg0 MDAxDQo+ID4gKyNkZWZpbmUgVFhfVFhDQ19DQUxfU0NMUl9NVUxUXzAgICAgICAgICAweDQwNDcN Cj4gPiArI2RlZmluZSBUWF9UWENDX0NQT1NUX01VTFRfMDBfMCAgICAgICAgIDB4NDA0Qw0KPiA+ ICsjZGVmaW5lIFhDVlJfRElBR19QTExEUkNfQ1RSTCAgICAgICAgICAgMHg0MEUwDQo+ID4gKyNk ZWZpbmUgWENWUl9ESUFHX1BMTERSQ19DVFJMICAgICAgICAgICAweDQwRTANCj4gPiArI2RlZmlu ZSBYQ1ZSX0RJQUdfSFNDTEtfU0VMICAgICAgICAgICAgIDB4NDBFMQ0KPiA+ICsjZGVmaW5lIFhD VlJfRElBR19CSURJX0NUUkwgICAgICAgICAgICAgMHg0MEU4DQo+ID4gKyNkZWZpbmUgVFhfUFND X0EwICAgICAgICAgICAgICAgICAgICAgICAweDQxMDANCj4gPiArI2RlZmluZSBUWF9QU0NfQTEg ICAgICAgICAgICAgICAgICAgICAgIDB4NDEwMQ0KPiA+ICsjZGVmaW5lIFRYX1BTQ19BMiAgICAg ICAgICAgICAgICAgICAgICAgMHg0MTAyDQo+ID4gKyNkZWZpbmUgVFhfUFNDX0EzICAgICAgICAg ICAgICAgICAgICAgICAweDQxMDMNCj4gPiArI2RlZmluZSBUWF9ESUFHX1RYX0NUUkwgICAgICAg ICAgICAgICAgIDB4NDFFMA0KPiA+ICsjZGVmaW5lIFRYX0RJQUdfVFhfRFJWICAgICAgICAgICAg ICAgICAgMHg0MUUxDQo+ID4gKyNkZWZpbmUgVFhfRElBR19CR1JFRl9QUkVEUlZfREVMQVkgICAg ICAweDQxRTcNCj4gPiArI2RlZmluZSBUWF9ESUFHX0FDWUFfMCAgICAgICAgICAgICAgICAgIDB4 NDFGRg0KPiA+ICsjZGVmaW5lIFRYX0RJQUdfQUNZQV8xICAgICAgICAgICAgICAgICAgMHg0M0ZG DQo+ID4gKyNkZWZpbmUgVFhfRElBR19BQ1lBXzIgICAgICAgICAgICAgICAgICAweDQ1RkYNCj4g PiArI2RlZmluZSBUWF9ESUFHX0FDWUFfMyAgICAgICAgICAgICAgICAgIDB4NDdGRg0KPiA+ICsj ZGVmaW5lIFRYX0FOQV9DVFJMX1JFR18xICAgICAgICAgICAgICAgMHg1MDIwDQo+ID4gKyNkZWZp bmUgVFhfQU5BX0NUUkxfUkVHXzIgICAgICAgICAgICAgICAweDUwMjENCj4gPiArI2RlZmluZSBU WF9ESUdfQ1RSTF9SRUdfMiAgICAgICAgICAgICAgIDB4NTAyNA0KPiA+ICsjZGVmaW5lIFRYREFf Q1lBX0FVWERBX0NZQSAgICAgICAgICAgICAgMHg1MDI1DQo+ID4gKyNkZWZpbmUgVFhfQU5BX0NU UkxfUkVHXzMgICAgICAgICAgICAgICAweDUwMjYNCj4gPiArI2RlZmluZSBUWF9BTkFfQ1RSTF9S RUdfNCAgICAgICAgICAgICAgIDB4NTAyNw0KPiA+ICsjZGVmaW5lIFRYX0FOQV9DVFJMX1JFR181 ICAgICAgICAgICAgICAgMHg1MDI5DQo+ID4gKyNkZWZpbmUgUlhfUFNDX0EwICAgICAgICAgICAg ICAgICAgICAgICAweDgwMDANCj4gPiArI2RlZmluZSBSWF9QU0NfQ0FMICAgICAgICAgICAgICAg ICAgICAgIDB4ODAwNg0KPiA+ICsjZGVmaW5lIFBIWV9IRFBfTU9ERV9DVFJMICAgICAgICAgICAg ICAgMHhDMDA4DQo+ID4gKyNkZWZpbmUgUEhZX0hEUF9DTEtfQ1RMICAgICAgICAgICAgICAgICAw eEMwMDkNCj4gPiArI2RlZmluZSBQSFlfSVNPX0NNTl9DVFJMICAgICAgICAgICAgICAgIDB4QzAx MA0KPiA+ICsjZGVmaW5lIFBIWV9QTUFfQ01OX0NUUkwxICAgICAgICAgICAgICAgMHhDODAwDQo+ ID4gKyNkZWZpbmUgUEhZX1BNQV9JU09fQ01OX0NUUkwgICAgICAgICAgICAweEM4MTANCj4gPiAr I2RlZmluZSBQSFlfUE1BX0lTT19QTExfQ1RSTDEgICAgICAgICAgIDB4QzgxMg0KPiA+ICsjZGVm aW5lIFBIWV9QTUFfSVNPTEFUSU9OX0NUUkwgICAgICAgICAgMHhDODFGDQo+ID4gKw0KPiA+ICsj ZGVmaW5lIFJFRl9DTEtfMjdNSFogICAgICAgICAgICAgICAgMjcwMDAwMDANCj4gDQo+IFRoaXMg bG9va3Mgc2ltaWxhciB0byBwYXRjaCA3LCBob3cgZGlmZmVyZW50IGFyZSB0aGVzZSB0d28uLj8N CkluIGZhY3QsIHBhdGNoIDggYW5kIHBhdGNoIDcgYXJlIHRoZSBzYW1lIElQLCBidXQgcnVuIHRo ZSBkaWZmZXJlbnQgZmlybXdhcmUuDQpIRE1JIFBIWSBhbmQgRFAgUEhZIGFyZSBzaGFyZSBsZXNz IHJlZ2lzdGVycywgYW5kIHRvdGFsbHkgZGlmZmVyZW50IFBMTCB3b3JrIG1vZGUuDQpVc2Ugc2Vw YXJhdGUgZHJpdmVyIGZvciBIRE1JIGFuZCBEUCBQSFkgaXMgZWFzeSB0byBtYWludGFpbiB0aGUg c291cmNlIGNvZGUuDQo+IA0KPiA+ICsNCj4gPiArLyogSERNSSBUWCBjbG9jayBjb250cm9sIHNl dHRpbmdzICovDQo+ID4gK3N0cnVjdCBoZHB0eF9oZG1pX2N0cmwgew0KPiA+ICsgICAgIHUzMiBw aXhlbF9jbGtfZnJlcV9taW47DQo+ID4gKyAgICAgdTMyIHBpeGVsX2Nsa19mcmVxX21heDsNCj4g PiArICAgICB1MzIgZmVlZGJhY2tfZmFjdG9yOw0KPiA+ICsgICAgIHUzMiBkYXRhX3JhbmdlX2ti cHNfbWluOw0KPiA+ICsgICAgIHUzMiBkYXRhX3JhbmdlX2ticHNfbWF4Ow0KPiA+ICsgICAgIHUz MiBjbW5kYV9wbGwwX2lwX2RpdjsNCj4gPiArICAgICB1MzIgY21uX3JlZl9jbGtfZGlnX2RpdjsN Cj4gPiArICAgICB1MzIgcmVmX2Nsa19kaXZpZGVyX3NjYWxlcjsNCj4gPiArICAgICB1MzIgcGxs X2ZiX2Rpdl90b3RhbDsNCj4gPiArICAgICB1MzIgY21uZGFfcGxsMF9mYl9kaXZfbG93Ow0KPiA+ ICsgICAgIHUzMiBjbW5kYV9wbGwwX2ZiX2Rpdl9oaWdoOw0KPiA+ICsgICAgIHUzMiBwaXhlbF9k aXZfdG90YWw7DQo+ID4gKyAgICAgdTMyIGNtbmRhX3BsbDBfcHhkaXZfbG93Ow0KPiA+ICsgICAg IHUzMiBjbW5kYV9wbGwwX3B4ZGl2X2hpZ2g7DQo+ID4gKyAgICAgdTMyIHZjb19mcmVxX21pbjsN Cj4gPiArICAgICB1MzIgdmNvX2ZyZXFfbWF4Ow0KPiA+ICsgICAgIHUzMiB2Y29fcmluZ19zZWxl Y3Q7DQo+ID4gKyAgICAgdTMyIGNtbmRhX2hzX2Nsa18wX3NlbDsNCj4gPiArICAgICB1MzIgY21u ZGFfaHNfY2xrXzFfc2VsOw0KPiA+ICsgICAgIHUzMiBoc2Nsa19kaXZfYXRfeGN2cjsNCj4gPiAr ICAgICB1MzIgaHNjbGtfZGl2X3R4X3N1Yl9yYXRlOw0KPiA+ICsgICAgIHUzMiBjbW5kYV9wbGww X2hzX3N5bV9kaXZfc2VsOw0KPiA+ICsgICAgIHUzMiBjbW5kYV9wbGwwX2Nsa19mcmVxX21pbjsN Cj4gPiArICAgICB1MzIgY21uZGFfcGxsMF9jbGtfZnJlcV9tYXg7DQo+ID4gK307DQo+ID4gKw0K PiA+ICtzdHJ1Y3QgY2Ruc19oZHB0eF9oZG1pX3BoeSB7DQo+ID4gKyAgICAgdm9pZCBfX2lvbWVt ICpyZWdzOyAgICAgLyogRFBUWCByZWdpc3RlcnMgYmFzZSAqLw0KPiA+ICsgICAgIHN0cnVjdCBt dXRleCBtYm94X211dGV4OyAvKiBtdXRleCB0byBwcm90ZWN0IG1haWxib3ggKi8NCj4gPiArICAg ICBzdHJ1Y3QgZGV2aWNlICpkZXY7DQo+ID4gKyAgICAgc3RydWN0IHBoeSAqcGh5Ow0KPiA+ICsg ICAgIHN0cnVjdCBjbGsgKnJlZl9jbGssICphcGJfY2xrOw0KPiA+ICsgICAgIHUzMiByZWZfY2xr X3JhdGU7DQo+ID4gKyAgICAgdTMyIHBpeGVsX2Nsa19yYXRlOw0KPiA+ICsgICAgIGVudW0gaGRt aV9waHlfY29sb3JzcGFjZSBjb2xvcl9zcGFjZTsNCj4gPiArICAgICB1MzIgYnBjOw0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiArLyogSERNSSBUWCBjbG9jayBjb250cm9sIHNldHRpbmdzLCBwaXhlbCBj bG9jayBpcyBvdXRwdXQgKi8gc3RhdGljDQo+ID4gK2NvbnN0IHN0cnVjdCBoZHB0eF9oZG1pX2N0 cmwgcGl4ZWxfY2xrX291dHB1dF9jdHJsX3RhYmxlW10gPSB7DQo+ID4gKy8qTWluY2xrICBNYXhj bGsgRmRiYWsgIERSX21pbiAgIERSX21heCAgaXBfZCAgZGlnICBEUyAgICBUb3RsDQo+ICovDQo+ ID4gK3sgMjcwMDAsICAyNzAwMCwgMTAwMCwgIDI3MDAwMCwgIDI3MDAwMCwgMHgwMywgMHgxLCAw eDEsICAyNDAsIDB4MEJDLA0KPiA+ICsweDAzMCwgIDgwLCAweDAyNiwgMHgwMjYsIDIxNjAwMDAs IDIxNjAwMDAsIDAsIDIsIDIsIDIsIDQsIDB4MywNCj4gPiArMjcwMDAsICAyNzAwMH0sIHsgMjcw MDAsICAyNzAwMCwgMTI1MCwgIDMzNzUwMCwgIDMzNzUwMCwgMHgwMywgMHgxLA0KPiA+ICsweDEs ICAzMDAsIDB4MEVDLCAweDAzQywgMTAwLCAweDAzMCwgMHgwMzAsIDI3MDAwMDAsIDI3MDAwMDAs IDAsIDIsDQo+ID4gKzIsIDIsIDQsIDB4MywgIDMzNzUwLCAgMzM3NTB9LCB7IDI3MDAwLCAgMjcw MDAsIDE1MDAsICA0MDUwMDAsDQo+ID4gKzQwNTAwMCwgMHgwMywgMHgxLCAweDEsICAzNjAsIDB4 MTFDLCAweDA0OCwgMTIwLCAweDAzQSwgMHgwM0EsDQo+ID4gKzMyNDAwMDAsIDMyNDAwMDAsIDAs IDIsIDIsIDIsIDQsIDB4MywgIDQwNTAwLCAgNDA1MDB9LCB7IDI3MDAwLA0KPiA+ICsyNzAwMCwg MjAwMCwgIDU0MDAwMCwgIDU0MDAwMCwgMHgwMywgMHgxLCAweDEsICAyNDAsIDB4MEJDLCAweDAz MCwNCj4gPiArODAsIDB4MDI2LCAweDAyNiwgMjE2MDAwMCwgMjE2MDAwMCwgMCwgMiwgMiwgMiwg NCwgMHgyLCAgNTQwMDAsDQo+ID4gKzU0MDAwfSwgeyA1NDAwMCwgIDU0MDAwLCAxMDAwLCAgNTQw MDAwLCAgNTQwMDAwLCAweDAzLCAweDEsIDB4MSwNCj4gPiArNDgwLCAweDE3QywgMHgwNjAsICA4 MCwgMHgwMjYsIDB4MDI2LCA0MzIwMDAwLCA0MzIwMDAwLCAxLCAyLCAyLCAyLA0KPiA+ICs0LCAw eDMsICA1NDAwMCwgIDU0MDAwfSwgeyA1NDAwMCwgIDU0MDAwLCAxMjUwLCAgNjc1MDAwLCAgNjc1 MDAwLA0KPiA+ICsweDA0LCAweDEsIDB4MSwgIDQwMCwgMHgxM0MsIDB4MDUwLCAgNTAsIDB4MDE3 LCAweDAxNywgMjcwMDAwMCwNCj4gPiArMjcwMDAwMCwgMCwgMSwgMSwgMiwgNCwgMHgyLCAgNjc1 MDAsICA2NzUwMH0sIHsgNTQwMDAsICA1NDAwMCwgMTUwMCwNCj4gPiArODEwMDAwLCAgODEwMDAw LCAweDA0LCAweDEsIDB4MSwgIDQ4MCwgMHgxN0MsIDB4MDYwLCAgNjAsIDB4MDFDLA0KPiA+ICsw eDAxQywgMzI0MDAwMCwgMzI0MDAwMCwgMCwgMiwgMiwgMiwgMiwgMHgyLCAgODEwMDAsICA4MTAw MH0sIHsNCj4gPiArNTQwMDAsICA1NDAwMCwgMjAwMCwgMTA4MDAwMCwgMTA4MDAwMCwgMHgwMywg MHgxLCAweDEsICAyNDAsIDB4MEJDLA0KPiA+ICsweDAzMCwgIDQwLCAweDAxMiwgMHgwMTIsIDIx NjAwMDAsIDIxNjAwMDAsIDAsIDIsIDIsIDIsIDEsIDB4MSwNCj4gPiArMTA4MDAwLCAxMDgwMDB9 LCB7IDc0MjUwLCAgNzQyNTAsIDEwMDAsICA3NDI1MDAsICA3NDI1MDAsIDB4MDMsIDB4MSwNCj4g PiArMHgxLCAgNjYwLCAweDIwQywgMHgwODQsICA4MCwgMHgwMjYsIDB4MDI2LCA1OTQwMDAwLCA1 OTQwMDAwLCAxLCAyLA0KPiA+ICsyLCAyLCA0LCAweDMsICA3NDI1MCwgIDc0MjUwfSwgeyA3NDI1 MCwgIDc0MjUwLCAxMjUwLCAgOTI4MTI1LA0KPiA+ICs5MjgxMjUsIDB4MDQsIDB4MSwgMHgxLCAg NTUwLCAweDFCNCwgMHgwNkUsICA1MCwgMHgwMTcsIDB4MDE3LA0KPiA+ICszNzEyNTAwLCAzNzEy NTAwLCAxLCAxLCAxLCAyLCA0LCAweDIsICA5MjgxMiwgIDkyODEyfSwgeyA3NDI1MCwNCj4gPiAr NzQyNTAsIDE1MDAsIDExMTM3NTAsIDExMTM3NTAsIDB4MDQsIDB4MSwgMHgxLCAgNjYwLCAweDIw QywgMHgwODQsDQo+ID4gKzYwLCAweDAxQywgMHgwMUMsIDQ0NTUwMDAsIDQ0NTUwMDAsIDEsIDIs IDIsIDIsIDIsIDB4MiwgMTExMzc1LA0KPiA+ICsxMTEzNzV9LCB7IDc0MjUwLCAgNzQyNTAsIDIw MDAsIDE0ODUwMDAsIDE0ODUwMDAsIDB4MDMsIDB4MSwgMHgxLA0KPiA+ICszMzAsIDB4MTA0LCAw eDA0MiwgIDQwLCAweDAxMiwgMHgwMTIsIDI5NzAwMDAsIDI5NzAwMDAsIDAsIDIsIDIsIDIsDQo+ ID4gKzEsIDB4MSwgMTQ4NTAwLCAxNDg1MDB9LCB7IDk5MDAwLCAgOTkwMDAsIDEwMDAsICA5OTAw MDAsICA5OTAwMDAsDQo+ID4gKzB4MDMsIDB4MSwgMHgxLCAgNDQwLCAweDE1QywgMHgwNTgsICA0 MCwgMHgwMTIsIDB4MDEyLCAzOTYwMDAwLA0KPiA+ICszOTYwMDAwLCAxLCAyLCAyLCAyLCAyLCAw eDIsICA5OTAwMCwgIDk5MDAwfSwgeyA5OTAwMCwgIDk5MDAwLCAxMjUwLA0KPiA+ICsxMjM3NTAw LCAxMjM3NTAwLCAweDAzLCAweDEsIDB4MSwgIDI3NSwgMHgwRDgsIDB4MDM3LCAgMjUsIDB4MDBC LA0KPiA+ICsweDAwQSwgMjQ3NTAwMCwgMjQ3NTAwMCwgMCwgMSwgMSwgMiwgMiwgMHgxLCAxMjM3 NTAsIDEyMzc1MH0sIHsNCj4gPiArOTkwMDAsICA5OTAwMCwgMTUwMCwgMTQ4NTAwMCwgMTQ4NTAw MCwgMHgwMywgMHgxLCAweDEsICAzMzAsIDB4MTA0LA0KPiA+ICsweDA0MiwgIDMwLCAweDAwRCwg MHgwMEQsIDI5NzAwMDAsIDI5NzAwMDAsIDAsIDIsIDIsIDIsIDEsIDB4MSwNCj4gPiArMTQ4NTAw LCAxNDg1MDB9LCB7IDk5MDAwLCAgOTkwMDAsIDIwMDAsIDE5ODAwMDAsIDE5ODAwMDAsIDB4MDMs IDB4MSwNCj4gPiArMHgxLCAgNDQwLCAweDE1QywgMHgwNTgsICA0MCwgMHgwMTIsIDB4MDEyLCAz OTYwMDAwLCAzOTYwMDAwLCAxLCAyLA0KPiA+ICsyLCAyLCAxLCAweDEsIDE5ODAwMCwgMTk4MDAw fSwgezE0ODUwMCwgMTQ4NTAwLCAxMDAwLCAxNDg1MDAwLA0KPiA+ICsxNDg1MDAwLCAweDAzLCAw eDEsIDB4MSwgIDY2MCwgMHgyMEMsIDB4MDg0LCAgNDAsIDB4MDEyLCAweDAxMiwNCj4gPiArNTk0 MDAwMCwgNTk0MDAwMCwgMSwgMiwgMiwgMiwgMiwgMHgyLCAxNDg1MDAsIDE0ODUwMH0sIHsxNDg1 MDAsDQo+ID4gKzE0ODUwMCwgMTI1MCwgMTg1NjI1MCwgMTg1NjI1MCwgMHgwNCwgMHgxLCAweDEs ICA1NTAsIDB4MUI0LCAweDA2RSwNCj4gPiArMjUsIDB4MDBCLCAweDAwQSwgMzcxMjUwMCwgMzcx MjUwMCwgMSwgMSwgMSwgMiwgMiwgMHgxLCAxODU2MjUsDQo+ID4gKzE4NTYyNX0sIHsxNDg1MDAs IDE0ODUwMCwgMTUwMCwgMjIyNzUwMCwgMjIyNzUwMCwgMHgwMywgMHgxLCAweDEsDQo+ID4gKzQ5 NSwgMHgxODgsIDB4MDYzLCAgMzAsIDB4MDBELCAweDAwRCwgNDQ1NTAwMCwgNDQ1NTAwMCwgMSwg MSwgMSwgMiwNCj4gPiArMiwgMHgxLCAyMjI3NTAsIDIyMjc1MH0sIHsxNDg1MDAsIDE0ODUwMCwg MjAwMCwgMjk3MDAwMCwgMjk3MDAwMCwNCj4gPiArMHgwMywgMHgxLCAweDEsICA2NjAsIDB4MjBD LCAweDA4NCwgIDQwLCAweDAxMiwgMHgwMTIsIDU5NDAwMDAsDQo+ID4gKzU5NDAwMDAsIDEsIDIs IDIsIDIsIDEsIDB4MSwgMjk3MDAwLCAyOTcwMDB9LCB7MTk4MDAwLCAxOTgwMDAsIDEwMDAsDQo+ ID4gKzE5ODAwMDAsIDE5ODAwMDAsIDB4MDMsIDB4MSwgMHgxLCAgMjIwLCAweDBBQywgMHgwMkMs ICAxMCwgMHgwMDMsDQo+ID4gKzB4MDAzLCAxOTgwMDAwLCAxOTgwMDAwLCAwLCAxLCAxLCAyLCAx LCAweDAsIDE5ODAwMCwgMTk4MDAwfSwNCj4gPiArezE5ODAwMCwgMTk4MDAwLCAxMjUwLCAyNDc1 MDAwLCAyNDc1MDAwLCAweDAzLCAweDEsIDB4MSwgIDU1MCwgMHgxQjQsDQo+ID4gKzB4MDZFLCAg MjUsIDB4MDBCLCAweDAwQSwgNDk1MDAwMCwgNDk1MDAwMCwgMSwgMSwgMSwgMiwgMiwgMHgxLA0K PiA+ICsyNDc1MDAsIDI0NzUwMH0sIHsxOTgwMDAsIDE5ODAwMCwgMTUwMCwgMjk3MDAwMCwgMjk3 MDAwMCwgMHgwMywgMHgxLA0KPiA+ICsweDEsICAzMzAsIDB4MTA0LCAweDA0MiwgIDE1LCAweDAw NiwgMHgwMDUsIDI5NzAwMDAsIDI5NzAwMDAsIDAsIDEsDQo+ID4gKzEsIDIsIDEsIDB4MCwgMjk3 MDAwLCAyOTcwMDB9LCB7MTk4MDAwLCAxOTgwMDAsIDIwMDAsIDM5NjAwMDAsDQo+ID4gKzM5NjAw MDAsIDB4MDMsIDB4MSwgMHgxLCAgNDQwLCAweDE1QywgMHgwNTgsICAyMCwgMHgwMDgsIDB4MDA4 LA0KPiA+ICszOTYwMDAwLCAzOTYwMDAwLCAxLCAxLCAxLCAyLCAxLCAweDAsIDM5NjAwMCwgMzk2 MDAwfSwgezI5NzAwMCwNCj4gPiArMjk3MDAwLCAxMDAwLCAyOTcwMDAwLCAyOTcwMDAwLCAweDAz LCAweDEsIDB4MSwgIDMzMCwgMHgxMDQsIDB4MDQyLA0KPiA+ICsxMCwgMHgwMDMsIDB4MDAzLCAy OTcwMDAwLCAyOTcwMDAwLCAwLCAxLCAxLCAyLCAxLCAweDAsIDI5NzAwMCwNCj4gPiArMjk3MDAw fSwgezI5NzAwMCwgMjk3MDAwLCAxNTAwLCA0NDU1MDAwLCA0NDU1MDAwLCAweDAzLCAweDEsIDB4 MSwNCj4gPiArNDk1LCAweDE4OCwgMHgwNjMsICAxNSwgMHgwMDYsIDB4MDA1LCA0NDU1MDAwLCA0 NDU1MDAwLCAxLCAxLCAxLCAyLA0KPiA+ICsxLCAweDAsIDQ0NTUwMCwgNDQ1NTAwfSwgezI5NzAw MCwgMjk3MDAwLCAyMDAwLCA1OTQwMDAwLCA1OTQwMDAwLA0KPiA+ICsweDAzLCAweDEsIDB4MSwg IDY2MCwgMHgyMEMsIDB4MDg0LCAgMjAsIDB4MDA4LCAweDAwOCwgNTk0MDAwMCwNCj4gPiArNTk0 MDAwMCwgMSwgMSwgMSwgMiwgMSwgMHgwLCA1OTQwMDAsIDU5NDAwMH0sIHs1OTQwMDAsIDU5NDAw MCwgMTAwMCwNCj4gPiArNTk0MDAwMCwgNTk0MDAwMCwgMHgwMywgMHgxLCAweDEsICA2NjAsIDB4 MjBDLCAweDA4NCwgIDEwLCAweDAwMywNCj4gPiArMHgwMDMsIDU5NDAwMDAsIDU5NDAwMDAsIDEs IDEsIDEsIDIsIDEsIDB4MCwgNTk0MDAwLCA1OTQwMDB9LA0KPiA+ICt7NTk0MDAwLCA1OTQwMDAs ICA3NTAsIDQ0NTUwMDAsIDQ0NTUwMDAsIDB4MDMsIDB4MSwgMHgxLCAgNDk1LCAweDE4OCwNCj4g PiArMHgwNjMsICAxMCwgMHgwMDMsIDB4MDAzLCA0NDU1MDAwLCA0NDU1MDAwLCAxLCAxLCAxLCAy LCAxLCAweDAsDQo+ID4gKzQ0NTUwMCwgNDQ1NTAwfSwgezU5NDAwMCwgNTk0MDAwLCAgNjI1LCAz NzEyNTAwLCAzNzEyNTAwLCAweDA0LCAweDEsDQo+ID4gKzB4MSwgIDU1MCwgMHgxQjQsIDB4MDZF LCAgMTAsIDB4MDAzLCAweDAwMywgMzcxMjUwMCwgMzcxMjUwMCwgMSwgMSwNCj4gPiArMSwgMiwg MSwgMHgwLCAzNzEyNTAsIDM3MTI1MH0sIHs1OTQwMDAsIDU5NDAwMCwgIDUwMCwgMjk3MDAwMCwN Cj4gPiArMjk3MDAwMCwgMHgwMywgMHgxLCAweDEsICA2NjAsIDB4MjBDLCAweDA4NCwgIDEwLCAw eDAwMywgMHgwMDMsDQo+ID4gKzU5NDAwMDAsIDU5NDAwMDAsIDEsIDEsIDEsIDIsIDIsIDB4MSwg Mjk3MDAwLCAyOTcwMDB9LCB9Ow0KPiA+ICsNCj4gPiArLyogSERNSSBUWCBQTEwgdHVuaW5nIHNl dHRpbmdzICovDQo+ID4gK3N0cnVjdCBoZHB0eF9oZG1pX3BsbF90dW5pbmcgew0KPiA+ICsgICAg IHUzMiB2Y29fZnJlcV9iaW47DQo+ID4gKyAgICAgdTMyIHZjb19mcmVxX21pbjsNCj4gPiArICAg ICB1MzIgdmNvX2ZyZXFfbWF4Ow0KPiA+ICsgICAgIHUzMiB2b2x0X3RvX2N1cnJlbnRfY29hcnNl Ow0KPiA+ICsgICAgIHUzMiB2b2x0X3RvX2N1cnJlbnQ7DQo+ID4gKyAgICAgdTMyIG5kYWNfY3Ry bDsNCj4gPiArICAgICB1MzIgcG1vc19jdHJsOw0KPiA+ICsgICAgIHUzMiBwdGF0X25kYWNfY3Ry bDsNCj4gPiArICAgICB1MzIgZmVlZGJhY2tfZGl2X3RvdGFsOw0KPiA+ICsgICAgIHUzMiBjaGFy Z2VfcHVtcF9nYWluOw0KPiA+ICsgICAgIHUzMiBjb2Fyc2VfY29kZTsNCj4gPiArICAgICB1MzIg djJpX2NvZGU7DQo+ID4gKyAgICAgdTMyIHZjb19jYWxfY29kZTsNCj4gPiArfTsNCj4gPiArDQo+ ID4gKy8qIEhETUkgVFggUExMIHR1bmluZyBzZXR0aW5ncywgcGl4ZWwgY2xvY2sgaXMgb3V0cHV0 ICovIHN0YXRpYyBjb25zdA0KPiA+ICtzdHJ1Y3QgaGRwdHhfaGRtaV9wbGxfdHVuaW5nIHBpeGVs X2Nsa19vdXRwdXRfcGxsX3RhYmxlW10gPSB7IC8qYmluDQo+ID4gK1ZDT19mcmVxIG1pbi9tYXgg IGNvYXIgIGNvZCBOREFDICBQTU9TIFBUQVQgZGl2LVQgUC1HYWluIENvYSBWMkkNCj4gQ0FMDQo+ ID4gKyovIHsgIDEsIDE5ODAwMDAsIDE5ODAwMDAsIDB4NCwgMHgzLCAweDAsIDB4MDksIDB4MDks IDIyMCwgMHg0MiwgMTYwLA0KPiA+ICs1LCAxODMgfSwgeyAgMiwgMjE2MDAwMCwgMjE2MDAwMCwg MHg0LCAweDMsIDB4MCwgMHgwOSwgMHgwOSwgMjQwLA0KPiA+ICsweDQyLCAxNjYsIDYsIDIwOCB9 LCB7ICAzLCAyNDc1MDAwLCAyNDc1MDAwLCAweDUsIDB4MywgMHgxLCAweDAwLA0KPiA+ICsweDA3 LCAyNzUsIDB4NDIsIDE2NywgNiwgMjA5IH0sIHsgIDQsIDI3MDAwMDAsIDI3MDAwMDAsIDB4NSwg MHgzLA0KPiA+ICsweDEsIDB4MDAsIDB4MDcsIDMwMCwgMHg0MiwgMTg4LCA2LCAyMzAgfSwgeyAg NCwgMjcwMDAwMCwgMjcwMDAwMCwNCj4gPiArMHg1LCAweDMsIDB4MSwgMHgwMCwgMHgwNywgNDAw LCAweDRDLCAxODgsIDYsIDIzMCB9LCB7ICA1LCAyOTcwMDAwLA0KPiA+ICsyOTcwMDAwLCAweDYs IDB4MywgMHgxLCAweDAwLCAweDA3LCAzMzAsIDB4NDIsIDE4MywgNiwgMjI1IH0sIHsgIDYsDQo+ ID4gKzMyNDAwMDAsIDMyNDAwMDAsIDB4NiwgMHgzLCAweDEsIDB4MDAsIDB4MDcsIDM2MCwgMHg0 MiwgMjAzLCA3LCAyNTYNCj4gPiArfSwgeyAgNiwgMzI0MDAwMCwgMzI0MDAwMCwgMHg2LCAweDMs IDB4MSwgMHgwMCwgMHgwNywgNDgwLCAweDRDLCAyMDMsDQo+ID4gKzcsIDI1NiB9LCB7ICA3LCAz NzEyNTAwLCAzNzEyNTAwLCAweDQsIDB4MywgMHgwLCAweDA3LCAweDBGLCA1NTAsDQo+ID4gKzB4 NEMsIDIxMiwgNywgMjU3IH0sIHsgIDgsIDM5NjAwMDAsIDM5NjAwMDAsIDB4NSwgMHgzLCAweDAs IDB4MDcsDQo+ID4gKzB4MEYsIDQ0MCwgMHg0MiwgMTg0LCA2LCAyMjYgfSwgeyAgOSwgNDMyMDAw MCwgNDMyMDAwMCwgMHg1LCAweDMsDQo+ID4gKzB4MSwgMHgwNywgMHgwRiwgNDgwLCAweDQyLCAy MDUsIDcsIDI1OCB9LCB7IDEwLCA0NDU1MDAwLCA0NDU1MDAwLA0KPiA+ICsweDUsIDB4MywgMHgw LCAweDA3LCAweDBGLCA0OTUsIDB4NDIsIDIxOSwgNywgMjcyIH0sIHsgMTAsIDQ0NTUwMDAsDQo+ ID4gKzQ0NTUwMDAsIDB4NSwgMHgzLCAweDAsIDB4MDcsIDB4MEYsIDY2MCwgMHg0QywgMjE5LCA3 LCAyNzIgfSwgeyAxMSwNCj4gPiArNDk1MDAwMCwgNDk1MDAwMCwgMHg2LCAweDMsIDB4MSwgMHgw MCwgMHgwNywgNTUwLCAweDQyLCAyMTMsIDcsIDI1OA0KPiA+ICt9LCB7IDEyLCA1OTQwMDAwLCA1 OTQwMDAwLCAweDcsIDB4MywgMHgxLCAweDAwLCAweDA3LCA2NjAsIDB4NDIsIDI0NCwNCj4gPiAr OCwgMjkyIH0sIH07DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGNkbnNfcGh5X3JlZ193cml0ZShz dHJ1Y3QgY2Ruc19oZHB0eF9oZG1pX3BoeSAqY2Ruc19waHksDQo+ID4gK3UzMiBhZGRyLCB1MzIg dmFsKSB7DQo+ID4gKyAgICAgcmV0dXJuIGNkbnNfbWhkcF9yZWdfd3JpdGUoY2Ruc19waHksIEFE RFJfUEhZX0FGRSArIChhZGRyIDw8DQo+IDIpLA0KPiA+ICt2YWwpOyB9DQo+ID4gKw0KPiA+ICtz dGF0aWMgdTMyIGNkbnNfcGh5X3JlZ19yZWFkKHN0cnVjdCBjZG5zX2hkcHR4X2hkbWlfcGh5ICpj ZG5zX3BoeSwNCj4gPiArdTMyIGFkZHIpIHsNCj4gPiArICAgICB1MzIgcmVnMzI7DQo+ID4gKw0K PiA+ICsgICAgIGNkbnNfbWhkcF9yZWdfcmVhZChjZG5zX3BoeSwgQUREUl9QSFlfQUZFICsgKGFk ZHIgPDwgMiksDQo+ID4gKyAmcmVnMzIpOw0KPiA+ICsNCj4gPiArICAgICByZXR1cm4gcmVnMzI7 DQo+ID4gK30NCj4gPiArDQo+ID4gKyNkZWZpbmUgS0VFUF9BTElWRSAgICAgICAgICAgICAgICAg ICAweDE4DQo+ID4gK3N0YXRpYyBib29sIGhkcHR4X3BoeV9jaGVja19hbGl2ZShzdHJ1Y3QgY2Ru c19oZHB0eF9oZG1pX3BoeQ0KPiA+ICsqY2Ruc19waHkpIHsNCj4gPiArICAgICB1MzIgIGFsaXZl LCBuZXdhbGl2ZTsNCj4gPiArICAgICB1OCByZXRyaWVzX2xlZnQgPSA1MDsNCj4gPiArDQo+ID4g KyAgICAgYWxpdmUgPSByZWFkbChjZG5zX3BoeS0+cmVncyArIEtFRVBfQUxJVkUpOw0KPiA+ICsN Cj4gPiArICAgICB3aGlsZSAocmV0cmllc19sZWZ0LS0pIHsNCj4gPiArICAgICAgICAgICAgIHVk ZWxheSgyKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICBuZXdhbGl2ZSA9IHJlYWRsKGNkbnNf cGh5LT5yZWdzICsgS0VFUF9BTElWRSk7DQo+ID4gKyAgICAgICAgICAgICBpZiAoYWxpdmUgPT0g bmV3YWxpdmUpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ICsgICAg ICAgICAgICAgcmV0dXJuIHRydWU7DQo+ID4gKyAgICAgfQ0KPiA+ICsgICAgIHJldHVybiBmYWxz ZTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBoZHB0eF9oZG1pX2Nsa19lbmFibGUo c3RydWN0IGNkbnNfaGRwdHhfaGRtaV9waHkNCj4gPiArKmNkbnNfcGh5KSB7DQo+ID4gKyAgICAg c3RydWN0IGRldmljZSAqZGV2ID0gY2Ruc19waHktPmRldjsNCj4gPiArICAgICB1MzIgcmVmX2Ns a19yYXRlOw0KPiA+ICsgICAgIGludCByZXQ7DQo+ID4gKw0KPiA+ICsgICAgIGNkbnNfcGh5LT5y ZWZfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgInJlZiIpOw0KPiA+ICsgICAgIGlmIChJU19FUlIo Y2Ruc19waHktPnJlZl9jbGspKSB7DQo+ID4gKyAgICAgICAgICAgICBkZXZfZXJyKGRldiwgInBo eSByZWYgY2xvY2sgbm90IGZvdW5kXG4iKTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiBQVFJf RVJSKGNkbnNfcGh5LT5yZWZfY2xrKTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIGNk bnNfcGh5LT5hcGJfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgImFwYiIpOw0KPiA+ICsgICAgIGlm IChJU19FUlIoY2Ruc19waHktPmFwYl9jbGspKSB7DQo+ID4gKyAgICAgICAgICAgICBkZXZfZXJy KGRldiwgInBoeSBhcGIgY2xvY2sgbm90IGZvdW5kXG4iKTsNCj4gPiArICAgICAgICAgICAgIHJl dHVybiBQVFJfRVJSKGNkbnNfcGh5LT5hcGJfY2xrKTsNCj4gDQo+IG5vdCBfcHV0IGZvciByZWZf Y2xrPw0KcmVmIGNsb2NrIGlzIGVuYWJsZWQgb25seSBkcml2ZXIgcHJvYmUsIHNvIGl0IGRvbid0 IG5lZWQgdG8gZXhwbGljaXRseSBjYWxsIGRldm1fY2xrX3B1dCgpIHRvIHJlbGVhc2UgdGhlIGNs b2NrLg0KPiANCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIHJldCA9IGNsa19wcmVwYXJl X2VuYWJsZShjZG5zX3BoeS0+cmVmX2Nsayk7DQo+ID4gKyAgICAgaWYgKHJldCkgew0KPiA+ICsg ICAgICAgICAgICAgZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiRmFpbGVkIHRvIHByZXBhcmUgcmVm IGNsb2NrXG4iKTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+IA0KPiB3aGF0IGhh cHBlbnMgdG8gY2xrIHJlZnMgeW91IGhhdmUgYWxyZWFkeSB0YWtlbj8NClNhbWUgYXMgYWJvdmUg cmVhc29uLg0KPiANCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIHJlZl9jbGtfcmF0ZSA9 IGNsa19nZXRfcmF0ZShjZG5zX3BoeS0+cmVmX2Nsayk7DQo+ID4gKyAgICAgaWYgKCFyZWZfY2xr X3JhdGUpIHsNCj4gPiArICAgICAgICAgICAgIGRldl9lcnIoY2Ruc19waHktPmRldiwgIkZhaWxl ZCB0byBnZXQgcmVmIGNsb2NrIHJhdGVcbiIpOw0KPiA+ICsgICAgICAgICAgICAgZ290byBlcnJf cmVmX2NsazsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIGlmIChyZWZfY2xrX3JhdGUg PT0gUkVGX0NMS18yN01IWikNCj4gPiArICAgICAgICAgICAgIGNkbnNfcGh5LT5yZWZfY2xrX3Jh dGUgPSByZWZfY2xrX3JhdGU7DQo+ID4gKyAgICAgZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICBk ZXZfZXJyKGNkbnNfcGh5LT5kZXYsICJOb3Qgc3VwcG9ydCBSZWYgQ2xvY2sNCj4gUmF0ZSglZEh6 KVxuIiwgcmVmX2Nsa19yYXRlKTsNCj4gPiArICAgICAgICAgICAgIGdvdG8gZXJyX3JlZl9jbGs7 DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICByZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUo Y2Ruc19waHktPmFwYl9jbGspOw0KPiA+ICsgICAgIGlmIChyZXQpIHsNCj4gPiArICAgICAgICAg ICAgIGRldl9lcnIoY2Ruc19waHktPmRldiwgIkZhaWxlZCB0byBwcmVwYXJlIGFwYiBjbG9ja1xu Iik7DQo+ID4gKyAgICAgICAgICAgICBnb3RvIGVycl9yZWZfY2xrOw0KPiA+ICsgICAgIH0NCj4g PiArDQo+ID4gKyAgICAgcmV0dXJuIDA7DQo+ID4gKw0KPiA+ICtlcnJfcmVmX2NsazoNCj4gPiAr ICAgICBjbGtfZGlzYWJsZV91bnByZXBhcmUoY2Ruc19waHktPnJlZl9jbGspOw0KPiA+ICsgICAg IHJldHVybiAtRUlOVkFMOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBoZHB0eF9o ZG1pX2Nsa19kaXNhYmxlKHN0cnVjdCBjZG5zX2hkcHR4X2hkbWlfcGh5DQo+ID4gKypjZG5zX3Bo eSkgew0KPiA+ICsgICAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShjZG5zX3BoeS0+cmVmX2Nsayk7 DQo+ID4gKyAgICAgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGNkbnNfcGh5LT5hcGJfY2xrKTsNCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgaGRwdHhfaGRtaV9hcmNfY29uZmlnKHN0cnVj dCBjZG5zX2hkcHR4X2hkbWlfcGh5DQo+ID4gKypjZG5zX3BoeSkgew0KPiA+ICsgICAgIHUxNiB0 eHB1X2NhbGliX2NvZGU7DQo+ID4gKyAgICAgdTE2IHR4cGRfY2FsaWJfY29kZTsNCj4gPiArICAg ICB1MTYgdHhwdV9hZGpfY2FsaWJfY29kZTsNCj4gPiArICAgICB1MTYgdHhwZF9hZGpfY2FsaWJf Y29kZTsNCj4gPiArICAgICB1MTYgcHJldl9jYWxpYl9jb2RlOw0KPiA+ICsgICAgIHUxNiBuZXdf Y2FsaWJfY29kZTsNCj4gPiArICAgICB1MTYgcmRhdGE7DQo+ID4gKw0KPiA+ICsgICAgIC8qIFBv d2VyIEFSQyAqLw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhEQV9D WUFfQVVYREFfQ1lBLCAweDAwMDEpOw0KPiA+ICsNCj4gPiArICAgICBwcmV2X2NhbGliX2NvZGUg PSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwNCj4gVFhfRElHX0NUUkxfUkVHXzIpOw0KPiA+ ICsgICAgIHR4cHVfY2FsaWJfY29kZSA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LA0KPiBD TU5fVFhQVUNBTF9DVFJMKTsNCj4gPiArICAgICB0eHBkX2NhbGliX2NvZGUgPSBjZG5zX3BoeV9y ZWdfcmVhZChjZG5zX3BoeSwNCj4gQ01OX1RYUERDQUxfQ1RSTCk7DQo+ID4gKyAgICAgdHhwdV9h ZGpfY2FsaWJfY29kZSA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LA0KPiBDTU5fVFhQVV9B REpfQ1RSTCk7DQo+ID4gKyAgICAgdHhwZF9hZGpfY2FsaWJfY29kZSA9IGNkbnNfcGh5X3JlZ19y ZWFkKGNkbnNfcGh5LA0KPiA+ICsgQ01OX1RYUERfQURKX0NUUkwpOw0KPiA+ICsNCj4gPiArICAg ICBuZXdfY2FsaWJfY29kZSA9ICgodHhwdV9jYWxpYl9jb2RlICsgdHhwZF9jYWxpYl9jb2RlKSAv IDIpDQo+ID4gKyAgICAgICAgICAgICArIHR4cHVfYWRqX2NhbGliX2NvZGUgKyB0eHBkX2Fkal9j YWxpYl9jb2RlOw0KPiA+ICsNCj4gPiArICAgICBpZiAobmV3X2NhbGliX2NvZGUgIT0gcHJldl9j YWxpYl9jb2RlKSB7DQo+ID4gKyAgICAgICAgICAgICByZGF0YSA9IGNkbnNfcGh5X3JlZ19yZWFk KGNkbnNfcGh5LA0KPiBUWF9BTkFfQ1RSTF9SRUdfMSk7DQo+ID4gKyAgICAgICAgICAgICByZGF0 YSAmPSAweERGRkY7DQo+ID4gKyAgICAgICAgICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19w aHksIFRYX0FOQV9DVFJMX1JFR18xLA0KPiByZGF0YSk7DQo+ID4gKyAgICAgICAgICAgICBjZG5z X3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0RJR19DVFJMX1JFR18yLA0KPiBuZXdfY2FsaWJf Y29kZSk7DQo+ID4gKyAgICAgICAgICAgICBtZGVsYXkoMTApOw0KPiA+ICsgICAgICAgICAgICAg cmRhdGEgfD0gMHgyMDAwOw0KPiA+ICsgICAgICAgICAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNk bnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfMSwNCj4gcmRhdGEpOw0KPiA+ICsgICAgICAgICAgICAg dWRlbGF5KDE1MCk7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdf d3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR18yLCAweDAxMDApOw0KPiA+ICsgICAgIHVk ZWxheSgxMDApOw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5B X0NUUkxfUkVHXzIsIDB4MDMwMCk7DQo+ID4gKyAgICAgdWRlbGF5KDEwMCk7DQo+ID4gKyAgICAg Y2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfMywgMHgwMDAwKTsN Cj4gPiArICAgICB1ZGVsYXkoMTAwKTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ru c19waHksIFRYX0FOQV9DVFJMX1JFR18xLCAweDIwMDgpOw0KPiA+ICsgICAgIHVkZWxheSgxMDAp Ow0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVH XzEsIDB4MjAxOCk7DQo+ID4gKyAgICAgdWRlbGF5KDEwMCk7DQo+ID4gKyAgICAgY2Ruc19waHlf cmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfMSwgMHgyMDk4KTsNCj4gPiArICAg ICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR18yLCAweDAzMEMp Ow0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVH XzUsIDB4MDAxMCk7DQo+ID4gKyAgICAgdWRlbGF5KDEwMCk7DQo+ID4gKyAgICAgY2Ruc19waHlf cmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfNCwgMHg0MDAxKTsNCj4gPiArICAg ICBtZGVsYXkoNSk7DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9B TkFfQ1RSTF9SRUdfMSwgMHgyMTk4KTsNCj4gPiArICAgICBtZGVsYXkoNSk7DQo+ID4gKyAgICAg Y2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfMiwgMHgwMzBEKTsN Cj4gPiArICAgICB1ZGVsYXkoMTAwKTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ru c19waHksIFRYX0FOQV9DVFJMX1JFR18yLCAweDAzMEYpOyB9DQo+ID4gKw0KPiA+ICtzdGF0aWMg dm9pZCBoZHB0eF9oZG1pX3BoeV9zZXRfdnN3aW5nKHN0cnVjdCBjZG5zX2hkcHR4X2hkbWlfcGh5 DQo+ID4gKypjZG5zX3BoeSkgew0KPiA+ICsgICAgIHUzMiBrOw0KPiA+ICsgICAgIGNvbnN0IHUz MiBudW1fbGFuZXMgPSA0Ow0KPiA+ICsNCj4gPiArICAgICBmb3IgKGsgPSAwOyBrIDwgbnVtX2xh bmVzOyBrKyspIHsNCj4gPiArICAgICAgICAgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3Bo eSwgKFRYX0RJQUdfVFhfRFJWIHwgKGsgPDwNCj4gOSkpLCAweDdjMCk7DQo+ID4gKyAgICAgICAg ICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksDQo+IChUWF9UWENDX0NQT1NUX01VTFRf MDBfMCB8IChrIDw8IDkpKSwgMHgwKTsNCj4gPiArICAgICAgICAgICAgIGNkbnNfcGh5X3JlZ193 cml0ZShjZG5zX3BoeSwNCj4gKFRYX1RYQ0NfQ0FMX1NDTFJfTVVMVF8wIHwNCj4gPiArIChrIDw8 IDkpKSwgMHgxMjApOw0KPiANCj4gbWFnaWMgbnVtYmVycz8NClRoZSB2YWx1ZXMgYXJlIHRoZSBk ZWJ1ZyByZXN1bHQgZm9yIGlteDhtcSB0byBwYXNzIGhkbWkgSERNSSBDVFMuDQpBbmQgd2UgaGF2 ZW6hr3QgZm91bmQgdGhlIHZhbHVlIHNob3VsZCBiZSBtb2RpZnkgZm9yIGRpZmZlcmVudCBpbXg4 bXEgcGxhdGZvcm0uDQo+IA0KPiA+ICsgICAgIH0NCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGlj IGludCBoZHB0eF9oZG1pX2ZlZWRiYWNrX2ZhY3RvcihzdHJ1Y3QgY2Ruc19oZHB0eF9oZG1pX3Bo eQ0KPiA+ICsqY2Ruc19waHkpIHsNCj4gPiArICAgICB1MzIgZmVlZGJhY2tfZmFjdG9yOw0KPiA+ ICsNCj4gPiArICAgICBzd2l0Y2ggKGNkbnNfcGh5LT5jb2xvcl9zcGFjZSkgew0KPiA+ICsgICAg IGNhc2UgSERNSV9QSFlfQ09MT1JTUEFDRV9ZVVY0MjI6DQo+ID4gKyAgICAgICAgICAgICBmZWVk YmFja19mYWN0b3IgPSAxMDAwOw0KPiA+ICsgICAgICAgICAgICAgYnJlYWs7DQo+IA0KPiBlbXB0 eSBsaW5lIGFmdGVyIGVhY2ggY2FzZSBwbGVhc2UNCk9LLg0KPiANCj4gPiArICAgICBjYXNlIEhE TUlfUEhZX0NPTE9SU1BBQ0VfWVVWNDIwOg0KPiA+ICsgICAgICAgICAgICAgc3dpdGNoIChjZG5z X3BoeS0+YnBjKSB7DQo+ID4gKyAgICAgICAgICAgICBjYXNlIDg6DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgIGZlZWRiYWNrX2ZhY3RvciA9IDUwMDsNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICBjYXNlIDEwOg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICBmZWVkYmFja19mYWN0b3IgPSA2MjU7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg IGJyZWFrOw0KPiA+ICsgICAgICAgICAgICAgY2FzZSAxMjoNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgZmVlZGJhY2tfZmFjdG9yID0gNzUwOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBi cmVhazsNCj4gPiArICAgICAgICAgICAgIGNhc2UgMTY6DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgIGZlZWRiYWNrX2ZhY3RvciA9IDEwMDA7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOw0KPiA+ICsgICAgICAgICAgICAgZGVmYXVsdDoNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgZGV2X2RiZyhjZG5zX3BoeS0+ZGV2LCAiSW52YWxpZA0KPiBDb2xvckRlcHRoXG4iKTsNCj4g PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ID4gKyAgICAgICAgICAgICB9DQo+ ID4gKyAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICBkZWZhdWx0Og0KPiA+ICsgICAgICAg ICAgICAgLyogQXNzdW1lIFJHQi9ZVVY0NDQgKi8NCj4gPiArICAgICAgICAgICAgIHN3aXRjaCAo Y2Ruc19waHktPmJwYykgew0KPiA+ICsgICAgICAgICAgICAgY2FzZSAxMDoNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgZmVlZGJhY2tfZmFjdG9yID0gMTI1MDsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICBjYXNlIDEyOg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICBmZWVkYmFja19mYWN0b3IgPSAxNTAwOw0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgIGNhc2UgMTY6DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgIGZlZWRiYWNrX2ZhY3RvciA9IDIwMDA7DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgICAgICAgZGVmYXVsdDoNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgZmVlZGJhY2tfZmFjdG9yID0gMTAwMDsNCj4gPiArICAgICAgICAgICAgIH0N Cj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiBmZWVkYmFja19mYWN0b3I7DQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgaGRwdHhfaGRtaV9waHlfY29uZmlnKHN0cnVj dCBjZG5zX2hkcHR4X2hkbWlfcGh5ICpjZG5zX3BoeSwNCj4gPiArDQo+IGNvbnN0IHN0cnVjdCBo ZHB0eF9oZG1pX2N0cmwgKnBfY3RybF90YWJsZSwNCj4gPiArDQo+IGNvbnN0IHN0cnVjdCBoZHB0 eF9oZG1pX3BsbF90dW5pbmcgKnBfcGxsX3RhYmxlLA0KPiA+ICsNCj4gY2hhcg0KPiA+ICtwY2xr X2luKQ0KPiANCj4gdGhpcyBsb29rcyBiYWQsIHBsZWFzZSBydW4gY2hlY2twYXRjaCAtLXN0cmlj dCB0byBhbGlnbiB0aGVzZSBwcm9wZXJseQ0KT0ssIEkgd2lsbCBjaGVjayBpdCB3aXRoIC0tc3Ry aWN0Lg0KPiANCj4gPiArew0KPiA+ICsgICAgIGNvbnN0IHUzMiBudW1fbGFuZXMgPSA0Ow0KPiA+ ICsgICAgIHUzMiB2YWwsIGksIGs7DQo+ID4gKw0KPiA+ICsgICAgIC8qIGVuYWJsZSBQSFkgaXNv bGF0aW9uIG1vZGUgb25seSBmb3IgQ01OICovDQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRl KGNkbnNfcGh5LCBQSFlfUE1BX0lTT0xBVElPTl9DVFJMLA0KPiAweEQwMDApOw0KPiA+ICsNCj4g PiArICAgICAvKiBzZXQgY21uX3BsbDBfY2xrX2RhdGFydDFfZGl2L2Ntbl9wbGwwX2Nsa19kYXRh cnQwX2RpdiBkaXZpZGVycw0KPiAqLw0KPiA+ICsgICAgIHZhbCA9IGNkbnNfcGh5X3JlZ19yZWFk KGNkbnNfcGh5LCBQSFlfUE1BX0lTT19QTExfQ1RSTDEpOw0KPiA+ICsgICAgIHZhbCAmPSAweEZG MDA7DQo+IA0KPiBsb3dlcmNhc2UgaGV4IHZhbHVlcyBldmVyeXdoZXJlIHBscw0KT0ssIHdpbGwg Y2hhbmdlIGl0Lg0KPiANCj4gPiArICAgICB2YWwgfD0gMHgwMDEyOw0KPiA+ICsgICAgIGNkbnNf cGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX1BNQV9JU09fUExMX0NUUkwxLCB2YWwpOw0KPiA+ ICsNCj4gPiArICAgICAvKiBhc3NlcnQgUEhZIHJlc2V0IGZyb20gaXNvbGF0aW9uIHJlZ2lzdGVy ICovDQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBQSFlfSVNPX0NNTl9D VFJMLCAweDAwMDApOw0KPiA+ICsgICAgIC8qIGFzc2VydCBQTUEgQ01OIHJlc2V0ICovDQo+ID4g KyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBQSFlfUE1BX0lTT19DTU5fQ1RSTCwN Cj4gMHgwMDAwKTsNCj4gPiArDQo+ID4gKyAgICAgLyogcmVnaXN0ZXIgWENWUl9ESUFHX0JJRElf Q1RSTCAqLw0KPiA+ICsgICAgIGZvciAoayA9IDA7IGsgPCBudW1fbGFuZXM7IGsrKykNCj4gPiAr ICAgICAgICAgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgWENWUl9ESUFHX0JJRElf Q1RSTCB8DQo+IChrIDw8DQo+ID4gKyA5KSwgMHgwMEZGKTsNCj4gPiArDQo+ID4gKyAgICAgLyog RGVzY3JpYmluZyBUYXNrIHBoeV9jZmdfaGRwICovDQo+ID4gKw0KPiA+ICsgICAgIHZhbCA9IGNk bnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfUE1BX0NNTl9DVFJMMSk7DQo+ID4gKyAgICAg dmFsICY9IDB4RkZGNzsNCj4gPiArICAgICB2YWwgfD0gMHgwMDA4Ow0KPiA+ICsgICAgIGNkbnNf cGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX1BNQV9DTU5fQ1RSTDEsIHZhbCk7DQo+ID4gKw0K PiA+ICsgICAgIC8qIFBIWSBSZWdpc3RlcnMgKi8NCj4gPiArICAgICB2YWwgPSBjZG5zX3BoeV9y ZWdfcmVhZChjZG5zX3BoeSwgUEhZX1BNQV9DTU5fQ1RSTDEpOw0KPiA+ICsgICAgIHZhbCAmPSAw eENGRkY7DQo+ID4gKyAgICAgdmFsIHw9IHBfY3RybF90YWJsZS0+Y21uX3JlZl9jbGtfZGlnX2Rp diA8PCAxMjsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9QTUFf Q01OX0NUUkwxLCB2YWwpOw0KPiA+ICsNCj4gPiArICAgICB2YWwgPSBjZG5zX3BoeV9yZWdfcmVh ZChjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMKTsNCj4gPiArICAgICB2YWwgJj0gMHgwMEZGOw0K PiA+ICsgICAgIHZhbCB8PSAweDEyMDA7DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNk bnNfcGh5LCBQSFlfSERQX0NMS19DVEwsIHZhbCk7DQo+ID4gKw0KPiA+ICsgICAgIC8qIENvbW1v biBjb250cm9sIG1vZHVsZSBjb250cm9sIGFuZCBkaWFnbm9zdGljIHJlZ2lzdGVycyAqLw0KPiA+ ICsgICAgIHZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBDTU5fQ0RJQUdfUkVGQ0xL X0NUUkwpOw0KPiA+ICsgICAgIHZhbCAmPSAweDhGRkY7DQo+ID4gKyAgICAgdmFsIHw9IHBfY3Ry bF90YWJsZS0+cmVmX2Nsa19kaXZpZGVyX3NjYWxlciA8PCAxMjsNCj4gPiArICAgICB2YWwgfD0g MHgwMEMwOw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX0NESUFH X1JFRkNMS19DVFJMLCB2YWwpOw0KPiA+ICsNCj4gPiArICAgICAvKiBIaWdoIHNwZWVkIGNsb2Nr IHVzZWQgKi8NCj4gPiArICAgICB2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgQ01O X0RJQUdfSFNDTEtfU0VMKTsNCj4gPiArICAgICB2YWwgJj0gMHhGRjAwOw0KPiA+ICsgICAgIHZh bCB8PSAocF9jdHJsX3RhYmxlLT5jbW5kYV9oc19jbGtfMF9zZWwgPj4gMSkgPDwgMDsNCj4gPiAr ICAgICB2YWwgfD0gKHBfY3RybF90YWJsZS0+Y21uZGFfaHNfY2xrXzFfc2VsID4+IDEpIDw8IDQ7 DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fRElBR19IU0NMS19T RUwsIHZhbCk7DQo+ID4gKw0KPiA+ICsgICAgIGZvciAoayA9IDA7IGsgPCBudW1fbGFuZXM7IGsr Kykgew0KPiA+ICsgICAgICAgICAgICAgdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHks DQo+IChYQ1ZSX0RJQUdfSFNDTEtfU0VMIHwgKGsgPDwgOSkpKTsNCj4gPiArICAgICAgICAgICAg IHZhbCAmPSAweENGRkY7DQo+ID4gKyAgICAgICAgICAgICB2YWwgfD0gKHBfY3RybF90YWJsZS0+ Y21uZGFfaHNfY2xrXzBfc2VsID4+IDEpIDw8IDEyOw0KPiA+ICsgICAgICAgICAgICAgY2Ruc19w aHlfcmVnX3dyaXRlKGNkbnNfcGh5LCAoWENWUl9ESUFHX0hTQ0xLX1NFTCB8DQo+IChrIDw8IDkp KSwgdmFsKTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIC8qIFBMTCAwIGNvbnRyb2wg c3RhdGUgbWFjaGluZSByZWdpc3RlcnMgKi8NCj4gPiArICAgICB2YWwgPSBwX2N0cmxfdGFibGUt PnZjb19yaW5nX3NlbGVjdCA8PCAxMjsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ru c19waHksIENNTl9QTExTTTBfVVNFUl9ERUZfQ1RSTCwNCj4gdmFsKTsNCj4gPiArDQo+ID4gKyAg ICAgaWYgKHBjbGtfaW4gPT0gdHJ1ZSkNCj4gPiArICAgICAgICAgICAgIHZhbCA9IDB4MzBBMDsN Cj4gPiArICAgICBlbHNlIHsNCj4gPiArICAgICAgICAgICAgIHZhbCA9IGNkbnNfcGh5X3JlZ19y ZWFkKGNkbnNfcGh5LA0KPiBDTU5fUExMMF9WQ09DQUxfU1RBUlQpOw0KPiA+ICsgICAgICAgICAg ICAgdmFsICY9IDB4RkUwMDsNCj4gPiArICAgICAgICAgICAgIHZhbCB8PSBwX3BsbF90YWJsZS0+ dmNvX2NhbF9jb2RlOw0KPiA+ICsgICAgIH0NCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUo Y2Ruc19waHksIENNTl9QTEwwX1ZDT0NBTF9TVEFSVCwgdmFsKTsNCj4gPiArDQo+ID4gKyAgICAg Y2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fUExMMF9WQ09DQUxfSU5JVF9UTVIsDQo+ IDB4MDA2NCk7DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fUExM MF9WQ09DQUxfSVRFUl9UTVIsDQo+IDB4MDAwQSk7DQo+ID4gKw0KPiA+ICsgICAgIC8qIENvbW1v biBmdW5jdGlvbnMgY29udHJvbCBhbmQgZGlhZ25vc3RpY3MgcmVnaXN0ZXJzICovDQo+ID4gKyAg ICAgdmFsID0gcF9jdHJsX3RhYmxlLT5jbW5kYV9wbGwwX2hzX3N5bV9kaXZfc2VsIDw8IDg7DQo+ ID4gKyAgICAgdmFsIHw9IHBfY3RybF90YWJsZS0+Y21uZGFfcGxsMF9pcF9kaXY7DQo+ID4gKyAg ICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fRElBR19QTEwwX0lOQ0xLX0NUUkws IHZhbCk7DQo+ID4gKw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01O X0RJQUdfUExMMF9PVlJELCAweDAwMDApOw0KPiA+ICsNCj4gPiArICAgICB2YWwgPSBwX2N0cmxf dGFibGUtPmNtbmRhX3BsbDBfZmJfZGl2X2hpZ2g7DQo+ID4gKyAgICAgdmFsIHw9ICgxIDw8IDE1 KTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9ESUFHX1BMTDBf RkJIX09WUkQsIHZhbCk7DQo+ID4gKw0KPiA+ICsgICAgIHZhbCA9IHBfY3RybF90YWJsZS0+Y21u ZGFfcGxsMF9mYl9kaXZfbG93Ow0KPiA+ICsgICAgIHZhbCB8PSAoMSA8PCAxNSk7DQo+ID4gKyAg ICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fRElBR19QTEwwX0ZCTF9PVlJELCB2 YWwpOw0KPiA+ICsNCj4gPiArICAgICBpZiAocGNsa19pbiA9PSBmYWxzZSkgew0KPiA+ICsgICAg ICAgICAgICAgdmFsID0gcF9jdHJsX3RhYmxlLT5jbW5kYV9wbGwwX3B4ZGl2X2xvdzsNCj4gPiAr ICAgICAgICAgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwNCj4gQ01OX0RJQUdfUExM MF9QWExfRElWTCwNCj4gPiArIHZhbCk7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgdmFsID0g cF9jdHJsX3RhYmxlLT5jbW5kYV9wbGwwX3B4ZGl2X2hpZ2g7DQo+ID4gKyAgICAgICAgICAgICB2 YWwgfD0gKDEgPDwgMTUpOw0KPiA+ICsgICAgICAgICAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNk bnNfcGh5LA0KPiBDTU5fRElBR19QTEwwX1BYTF9ESVZILCB2YWwpOw0KPiA+ICsgICAgIH0NCj4g PiArDQo+ID4gKyAgICAgdmFsID0gcF9wbGxfdGFibGUtPnZvbHRfdG9fY3VycmVudF9jb2Fyc2U7 DQo+ID4gKyAgICAgdmFsIHw9IChwX3BsbF90YWJsZS0+dm9sdF90b19jdXJyZW50KSA8PCA0Ow0K PiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX0RJQUdfUExMMF9WMklf VFVORSwgdmFsKTsNCj4gPiArDQo+ID4gKyAgICAgdmFsID0gcF9wbGxfdGFibGUtPmNoYXJnZV9w dW1wX2dhaW47DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fRElB R19QTEwwX0NQX1RVTkUsIHZhbCk7DQo+ID4gKw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0 ZShjZG5zX3BoeSwgQ01OX0RJQUdfUExMMF9MRl9QUk9HLA0KPiAweDAwMDgpOw0KPiA+ICsNCj4g PiArICAgICB2YWwgPSBwX3BsbF90YWJsZS0+cG1vc19jdHJsOw0KPiA+ICsgICAgIHZhbCB8PSAo cF9wbGxfdGFibGUtPm5kYWNfY3RybCkgPDwgODsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3Jp dGUoY2Ruc19waHksIENNTl9ESUFHX1BMTDBfUFRBVElTX1RVTkUxLA0KPiB2YWwpOw0KPiA+ICsN Cj4gPiArICAgICB2YWwgPSBwX3BsbF90YWJsZS0+cHRhdF9uZGFjX2N0cmw7DQo+ID4gKyAgICAg Y2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fRElBR19QTEwwX1BUQVRJU19UVU5FMiwN Cj4gdmFsKTsNCj4gPiArDQo+ID4gKyAgICAgaWYgKHBjbGtfaW4gPT0gdHJ1ZSkNCj4gPiArICAg ICAgICAgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwNCj4gQ01OX0RJQUdfUExMMF9U RVNUX01PREUsIDB4MDAyMik7DQo+ID4gKyAgICAgZWxzZQ0KPiA+ICsgICAgICAgICAgICAgY2Ru c19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LA0KPiBDTU5fRElBR19QTEwwX1RFU1RfTU9ERSwNCj4g PiArIDB4MDAyMCk7DQo+ID4gKw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3Bo eSwgQ01OX1BTTV9DTEtfQ1RSTCwgMHgwMDE2KTsNCj4gPiArDQo+ID4gKyAgICAgLyogVHJhbnNj ZWl2ZXIgY29udHJvbCBhbmQgZGlhZ25vc3RpYyByZWdpc3RlcnMgKi8NCj4gPiArICAgICBmb3Ig KGsgPSAwOyBrIDwgbnVtX2xhbmVzOyBrKyspIHsNCj4gPiArICAgICAgICAgICAgIHZhbCA9IGNk bnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LA0KPiAoWENWUl9ESUFHX1BMTERSQ19DVFJMIHwgKGsg PDwgOSkpKTsNCj4gPiArICAgICAgICAgICAgIHZhbCAmPSAweEJGRkY7DQo+ID4gKyAgICAgICAg ICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksDQo+IChYQ1ZSX0RJQUdfUExMRFJDX0NU UkwgfCAoayA8PCA5KSksIHZhbCk7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBmb3Ig KGsgPSAwOyBrIDwgbnVtX2xhbmVzOyBrKyspIHsNCj4gPiArICAgICAgICAgICAgIHZhbCA9IGNk bnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCAoVFhfRElBR19UWF9DVFJMIHwNCj4gKGsgPDwgOSkp KTsNCj4gPiArICAgICAgICAgICAgIHZhbCAmPSAweEZGM0Y7DQo+ID4gKyAgICAgICAgICAgICB2 YWwgfD0gKHBfY3RybF90YWJsZS0+aHNjbGtfZGl2X3R4X3N1Yl9yYXRlID4+IDEpIDw8IDY7DQo+ ID4gKyAgICAgICAgICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIChUWF9ESUFHX1RY X0NUUkwgfCAoayA8PA0KPiA5KSksIHZhbCk7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAg ICB2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX1BNQV9DTU5fQ1RSTDEpOw0K PiA+ICsgICAgIHZhbCAmPSAweEZGOEY7DQo+ID4gKyAgICAgLyoNCj4gPiArICAgICAgKiBzaW5n bGUgZW5kZWQgcmVmZXJlbmNlIGNsb2NrICh2YWwgfD0gMHgwMDMwKTsNCj4gPiArICAgICAgKiBk aWZmZXJlbnRpYWwgY2xvY2sgICh2YWwgfD0gMHgwMDAwKTsNCj4gPiArICAgICAgKiBmb3IgZGlm ZmVyZW50aWFsIGNsb2NrIG9uIHRoZSByZWZjbGtfcCBhbmQNCj4gPiArICAgICAgKiByZWZjbGtf bSBvZmYgY2hpcCBwaW5zOiBDTU5fRElBR19BQ1lBWzhdPTEnYjENCj4gPiArICAgICAgKiBjZG5z X3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9ESUFHX0FDWUEsIDB4MDEwMCk7DQo+ID4gKyAg ICAgICovDQo+ID4gKyAgICAgdmFsIHw9IDB4MDAzMDsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdf d3JpdGUoY2Ruc19waHksIFBIWV9QTUFfQ01OX0NUUkwxLCB2YWwpOw0KPiA+ICsNCj4gPiArICAg ICAvKiBEZWFzc2VydCBQSFkgcmVzZXQgKi8NCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUo Y2Ruc19waHksIFBIWV9JU09fQ01OX0NUUkwsIDB4MDAwMSk7DQo+ID4gKyAgICAgY2Ruc19waHlf cmVnX3dyaXRlKGNkbnNfcGh5LCBQSFlfUE1BX0lTT19DTU5fQ1RSTCwNCj4gMHgwMDAzKTsNCj4g PiArDQo+ID4gKyAgICAgLyogUG93ZXIgc3RhdGUgbWFjaGluZSByZWdpc3RlcnMgKi8NCj4gPiAr ICAgICBmb3IgKGsgPSAwOyBrIDwgbnVtX2xhbmVzOyBrKyspDQo+ID4gKyAgICAgICAgICAgICBj ZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFhDVlJfUFNNX1JDVFJMIHwgKGsgPDwNCj4gOSks DQo+ID4gKyAweEZFRkMpOw0KPiA+ICsNCj4gPiArICAgICAvKiBBc3NlcnQgY21uX21hY3JvX3B3 cl9lbiAqLw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX1BNQV9J U09fQ01OX0NUUkwsDQo+IDB4MDAxMyk7DQo+ID4gKw0KPiA+ICsgICAgIC8qIHdhaXQgZm9yIGNt bl9tYWNyb19wd3JfZW5fYWNrICovDQo+ID4gKyAgICAgZm9yIChpID0gMDsgaSA8IDEwOyBpKysp IHsNCj4gPiArICAgICAgICAgICAgIHZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LA0K PiBQSFlfUE1BX0lTT19DTU5fQ1RSTCk7DQo+ID4gKyAgICAgICAgICAgICBpZiAodmFsICYgKDEg PDwgNSkpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgICAg ICAgbXNsZWVwKDIwKTsNCj4gPiArICAgICB9DQo+ID4gKyAgICAgaWYgKGkgPT0gMTApIHsNCj4g PiArICAgICAgICAgICAgIGRldl9lcnIoY2Ruc19waHktPmRldiwgIlBNQSBvdXRwdXQgbWFjcm8g cG93ZXIgdXANCj4gZmFpbGVkXG4iKTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiAtMTsNCj4g PiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIC8qIHdhaXQgZm9yIGNtbl9yZWFkeSAqLw0KPiA+ ICsgICAgIGZvciAoaSA9IDA7IGkgPCAxMDsgaSsrKSB7DQo+ID4gKyAgICAgICAgICAgICB2YWwg PSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwNCj4gUEhZX1BNQV9DTU5fQ1RSTDEpOw0KPiA+ ICsgICAgICAgICAgICAgaWYgKHZhbCAmICgxIDw8IDApKQ0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgIG1zbGVlcCgyMCk7DQo+ID4gKyAgICAgfQ0K PiA+ICsgICAgIGlmIChpID09IDEwKSB7DQo+ID4gKyAgICAgICAgICAgICBkZXZfZXJyKGNkbnNf cGh5LT5kZXYsICJQTUEgb3V0cHV0IHJlYWR5IGZhaWxlZFxuIik7DQo+ID4gKyAgICAgICAgICAg ICByZXR1cm4gLTE7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBmb3IgKGsgPSAwOyBr IDwgbnVtX2xhbmVzOyBrKyspIHsNCj4gPiArICAgICAgICAgICAgIGNkbnNfcGh5X3JlZ193cml0 ZShjZG5zX3BoeSwgVFhfUFNDX0EwIHwgKGsgPDwgOSksDQo+IDB4Njc5MSk7DQo+ID4gKyAgICAg ICAgICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX1BTQ19BMSB8IChrIDw8IDkp LA0KPiAweDY3OTApOw0KPiA+ICsgICAgICAgICAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNf cGh5LCBUWF9QU0NfQTIgfCAoayA8PCA5KSwNCj4gMHgwMDkwKTsNCj4gPiArICAgICAgICAgICAg IGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfUFNDX0EzIHwgKGsgPDwgOSksDQo+ID4g KyAweDAwOTApOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgIHZhbCA9IGNkbnNfcGh5X3JlZ19y ZWFkKGNkbnNfcGh5LCBSWF9QU0NfQ0FMIHwgKGsgPDwNCj4gOSkpOw0KPiA+ICsgICAgICAgICAg ICAgdmFsICY9IDB4RkZCQjsNCj4gPiArICAgICAgICAgICAgIGNkbnNfcGh5X3JlZ193cml0ZShj ZG5zX3BoeSwgUlhfUFNDX0NBTCB8IChrIDw8IDkpLA0KPiA+ICsgdmFsKTsNCj4gPiArDQo+ID4g KyAgICAgICAgICAgICB2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUlhfUFNDX0Ew IHwgKGsgPDwgOSkpOw0KPiA+ICsgICAgICAgICAgICAgdmFsICY9IDB4RkZCQjsNCj4gPiArICAg ICAgICAgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUlhfUFNDX0EwIHwgKGsgPDwg OSksIHZhbCk7DQo+ID4gKyAgICAgfQ0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtzdGF0aWMgaW50IGhkcHR4X2hkbWlfcGh5X2NmZyhzdHJ1Y3QgY2Ruc19oZHB0eF9o ZG1pX3BoeSAqY2Ruc19waHksDQo+ID4gK3UzMiByYXRlKSB7DQo+ID4gKyAgICAgY29uc3Qgc3Ry dWN0IGhkcHR4X2hkbWlfY3RybCAqcF9jdHJsX3RhYmxlOw0KPiA+ICsgICAgIGNvbnN0IHN0cnVj dCBoZHB0eF9oZG1pX3BsbF90dW5pbmcgKnBfcGxsX3RhYmxlOw0KPiA+ICsgICAgIGNvbnN0IHUz MiByZWZjbGtfZnJlcV9raHogPSBjZG5zX3BoeS0+cmVmX2Nsa19yYXRlIC8gMTAwMDsNCj4gPiAr ICAgICBjb25zdCB1OCBwY2xrX2luID0gZmFsc2U7DQo+ID4gKyAgICAgdTMyIHBpeGVsX2ZyZXEg PSByYXRlOw0KPiA+ICsgICAgIHUzMiB2Y29fZnJlcSwgY2hhcl9mcmVxOw0KPiA+ICsgICAgIHUz MiBkaXZfdG90YWwsIGZlZWRiYWNrX2ZhY3RvcjsNCj4gPiArICAgICB1MzIgaSwgcmV0Ow0KPiA+ ICsNCj4gPiArICAgICBmZWVkYmFja19mYWN0b3IgPSBoZHB0eF9oZG1pX2ZlZWRiYWNrX2ZhY3Rv cihjZG5zX3BoeSk7DQo+ID4gKw0KPiA+ICsgICAgIGNoYXJfZnJlcSA9IHBpeGVsX2ZyZXEgKiBm ZWVkYmFja19mYWN0b3IgLyAxMDAwOw0KPiA+ICsNCj4gPiArICAgICBkZXZfZGJnKGNkbnNfcGh5 LT5kZXYsICJQaXhlbCBjbG9jazogKCVkIEtIeiksIGNoYXJhY3RlciBjbG9jazogJWQsDQo+IGJw YyBpcyAoJTBkLWJpdClcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHBpeGVsX2ZyZXEs IGNoYXJfZnJlcSwgY2Ruc19waHktPmJwYyk7DQo+ID4gKw0KPiA+ICsgICAgIC8qIEdldCByaWdo dCByb3cgZnJvbSB0aGUgY3RybF90YWJsZSB0YWJsZS4NCj4gPiArICAgICAgKiBDaGVjayBpZiAn cGl4ZWxfZnJlcV9raHonIHZhbHVlIG1hdGNoZXMgdGhlIFBJWEVMX0NMS19GUkVRDQo+IGNvbHVt bi4NCj4gPiArICAgICAgKiBDb25zaWRlciBvbmx5IHRoZSByb3dzIHdpdGggRkVFREJBQ0tfRkFD VE9SIGNvbHVtbiBtYXRjaGluZw0KPiBmZWVkYmFja19mYWN0b3IuDQo+ID4gKyAgICAgICovDQo+ ID4gKyAgICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocGl4ZWxfY2xrX291dHB1dF9jdHJs X3RhYmxlKTsgaSsrKSB7DQo+ID4gKyAgICAgICAgICAgICBpZiAoZmVlZGJhY2tfZmFjdG9yID09 DQo+IHBpeGVsX2Nsa19vdXRwdXRfY3RybF90YWJsZVtpXS5mZWVkYmFja19mYWN0b3IgJiYNCj4g PiArICAgICAgICAgICAgICAgICAgICAgcGl4ZWxfZnJlcSA9PQ0KPiBwaXhlbF9jbGtfb3V0cHV0 X2N0cmxfdGFibGVbaV0ucGl4ZWxfY2xrX2ZyZXFfbWluKSB7DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgIHBfY3RybF90YWJsZSA9ICZwaXhlbF9jbGtfb3V0cHV0X2N0cmxfdGFibGVbaV07DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgICAgICAgfQ0KPiA+ ICsgICAgIH0NCj4gPiArICAgICBpZiAoaSA9PSBBUlJBWV9TSVpFKHBpeGVsX2Nsa19vdXRwdXRf Y3RybF90YWJsZSkpIHsNCj4gPiArICAgICAgICAgICAgIGRldl93YXJuKGNkbnNfcGh5LT5kZXYs ICJQaXhlbCBjbGsgKCVkIEtIeikgbm90DQo+IHN1cHBvcnRlZCwgYnBjIGlzICglMGQtYml0KVxu IiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbF9mcmVxLCBjZG5zX3Bo eS0+YnBjKTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiAwOw0KPiA+ICsgICAgIH0NCj4gPiAr DQo+ID4gKyAgICAgZGl2X3RvdGFsID0gcF9jdHJsX3RhYmxlLT5wbGxfZmJfZGl2X3RvdGFsOw0K PiA+ICsgICAgIHZjb19mcmVxID0gcmVmY2xrX2ZyZXFfa2h6ICogZGl2X3RvdGFsIC8NCj4gPiAr IHBfY3RybF90YWJsZS0+Y21uZGFfcGxsMF9pcF9kaXY7DQo+ID4gKw0KPiA+ICsgICAgIC8qIEdl dCByaWdodCByb3cgZnJvbSB0aGUgcGl4ZWxfY2xrX291dHB1dF9wbGxfdGFibGUgdGFibGUuDQo+ ID4gKyAgICAgICogQ2hlY2sgaWYgdmNvX2ZyZXFfa2h6IGFuZCBmZWVkYmFja19kaXZfdG90YWwN Cj4gPiArICAgICAgKiBjb2x1bW4gbWF0Y2hpbmcgd2l0aCBwaXhlbF9jbGtfb3V0cHV0X3BsbF90 YWJsZS4NCj4gPiArICAgICAgKi8NCj4gPiArICAgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0la RShwaXhlbF9jbGtfb3V0cHV0X3BsbF90YWJsZSk7IGkrKykgew0KPiA+ICsgICAgICAgICAgICAg aWYgKHZjb19mcmVxID09IHBpeGVsX2Nsa19vdXRwdXRfcGxsX3RhYmxlW2ldLnZjb19mcmVxX21p bg0KPiAmJg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBkaXZfdG90YWwgPT0NCj4gcGl4ZWxf Y2xrX291dHB1dF9wbGxfdGFibGVbaV0uZmVlZGJhY2tfZGl2X3RvdGFsKSB7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIHBfcGxsX3RhYmxlID0gJnBpeGVsX2Nsa19vdXRwdXRfcGxsX3RhYmxl W2ldOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAg IH0NCj4gPiArICAgICB9DQo+ID4gKyAgICAgaWYgKGkgPT0gQVJSQVlfU0laRShwaXhlbF9jbGtf b3V0cHV0X3BsbF90YWJsZSkpIHsNCj4gPiArICAgICAgICAgICAgIGRldl93YXJuKGNkbnNfcGh5 LT5kZXYsICJWQ08gKCVkIEtIeikgbm90DQo+IHN1cHBvcnRlZFxuIiwgdmNvX2ZyZXEpOw0KPiA+ ICsgICAgICAgICAgICAgcmV0dXJuIC0xOw0KPiA+ICsgICAgIH0NCj4gPiArICAgICBkZXZfZGJn KGNkbnNfcGh5LT5kZXYsICJWQ08gZnJlcXVlbmN5IGlzICglZCBLSHopXG4iLCB2Y29fZnJlcSk7 DQo+ID4gKw0KPiA+ICsgICAgIHJldCA9IGhkcHR4X2hkbWlfcGh5X2NvbmZpZyhjZG5zX3BoeSwg cF9jdHJsX3RhYmxlLCBwX3BsbF90YWJsZSwNCj4gcGNsa19pbik7DQo+ID4gKyAgICAgaWYgKHJl dCA8IDApDQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICsNCj4gPiArICAgICBy ZXR1cm4gY2hhcl9mcmVxOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGhkcHR4X2hk bWlfcGh5X3Bvd2VyX3VwKHN0cnVjdCBjZG5zX2hkcHR4X2hkbWlfcGh5DQo+ID4gKypjZG5zX3Bo eSkgew0KPiA+ICsgICAgIHUzMiB2YWwsIGk7DQo+ID4gKw0KPiA+ICsgICAgIC8qIHNldCBQb3dl ciBTdGF0ZSB0byBBMiAqLw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwg UEhZX0hEUF9NT0RFX0NUUkwsIDB4MDAwNCk7DQo+ID4gKw0KPiA+ICsgICAgIGNkbnNfcGh5X3Jl Z193cml0ZShjZG5zX3BoeSwgVFhfRElBR19BQ1lBXzAsIDEpOw0KPiA+ICsgICAgIGNkbnNfcGh5 X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfRElBR19BQ1lBXzEsIDEpOw0KPiA+ICsgICAgIGNkbnNf cGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfRElBR19BQ1lBXzIsIDEpOw0KPiA+ICsgICAgIGNk bnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfRElBR19BQ1lBXzMsIDEpOw0KPiA+ICsNCj4g PiArICAgICAvKiBXYWl0IGZvciBQb3dlciBTdGF0ZSBBMiBBY2sgKi8NCj4gPiArICAgICBmb3Ig KGkgPSAwOyBpIDwgMTA7IGkrKykgew0KPiA+ICsgICAgICAgICAgICAgdmFsID0gY2Ruc19waHlf cmVnX3JlYWQoY2Ruc19waHksDQo+IFBIWV9IRFBfTU9ERV9DVFJMKTsNCj4gPiArICAgICAgICAg ICAgIGlmICh2YWwgJiAoMSA8PCA2KSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 DQo+ID4gKyAgICAgICAgICAgICBtc2xlZXAoMjApOw0KPiA+ICsgICAgIH0NCj4gPiArICAgICBp ZiAoaSA9PSAxMCkgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAi V2FpdCBBMiBBY2sgZmFpbGVkXG4iKTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiAtMTsNCj4g PiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIC8qIFBvd2VyIHVwIEFSQyAqLw0KPiA+ICsgICAg IGhkcHR4X2hkbWlfYXJjX2NvbmZpZyhjZG5zX3BoeSk7DQo+ID4gKw0KPiA+ICsgICAgIC8qIENv bmZpZ3VyZSBQSFkgaW4gQTAgbW9kZSAoUEhZIG11c3QgYmUgaW4gdGhlIEEwIHBvd2VyDQo+ID4g KyAgICAgICogc3RhdGUgaW4gb3JkZXIgdG8gdHJhbnNtaXQgZGF0YSkNCj4gPiArICAgICAgKi8N Cj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9IRFBfTU9ERV9DVFJM LCAweDAwMDEpOw0KPiA+ICsNCj4gPiArICAgICAvKiBXYWl0IGZvciBQb3dlciBTdGF0ZSBBMCBB Y2sgKi8NCj4gPiArICAgICBmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgew0KPiA+ICsgICAgICAg ICAgICAgdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksDQo+IFBIWV9IRFBfTU9ERV9D VFJMKTsNCj4gPiArICAgICAgICAgICAgIGlmICh2YWwgJiAoMSA8PCA0KSkNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICBtc2xlZXAoMjApOw0KPiA+ ICsgICAgIH0NCj4gPiArICAgICBpZiAoaSA9PSAxMCkgew0KPiA+ICsgICAgICAgICAgICAgZGV2 X2VycihjZG5zX3BoeS0+ZGV2LCAiV2FpdCBBMCBBY2sgZmFpbGVkXG4iKTsNCj4gPiArICAgICAg ICAgICAgIHJldHVybiAtMTsNCj4gPiArICAgICB9DQo+ID4gKyAgICAgcmV0dXJuIDA7DQo+ID4g K30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgaGRwdHhfaGRtaV9waHlfcG93ZXJfZG93bihzdHJ1 Y3QgY2Ruc19oZHB0eF9oZG1pX3BoeQ0KPiA+ICsqY2Ruc19waHkpIHsNCj4gPiArICAgICBpbnQg dGltZW91dDsNCj4gPiArICAgICB1MzIgcmVnX3ZhbDsNCj4gPiArDQo+ID4gKyAgICAgcmVnX3Zh bCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfSERQX01PREVfQ1RSTCk7DQo+ID4g KyAgICAgcmVnX3ZhbCAmPSAweGZmZjA7DQo+ID4gKyAgICAgLyogUEhZX0RQX01PREVfQ1RMIHNl dCB0byBBMyBwb3dlciBzdGF0ZSovDQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNf cGh5LCBQSFlfSERQX01PREVfQ1RSTCwgcmVnX3ZhbCB8DQo+IDB4OCk7DQo+ID4gKw0KPiA+ICsg ICAgIC8qIFdhaXQgZm9yIEEzIGFja25vd2xlZGdlICovDQo+ID4gKyAgICAgdGltZW91dCA9IDA7 DQo+ID4gKyAgICAgZG8gew0KPiA+ICsgICAgICAgICAgICAgcmVnX3ZhbCA9IGNkbnNfcGh5X3Jl Z19yZWFkKGNkbnNfcGh5LA0KPiBQSFlfSERQX01PREVfQ1RSTCk7DQo+ID4gKyAgICAgICAgICAg ICBkZXZfZGJnKGNkbnNfcGh5LT5kZXYsICJSZWcgdmFsIGlzIDB4JTA0eFxuIiwgcmVnX3ZhbCk7 DQo+ID4gKyAgICAgICAgICAgICB0aW1lb3V0Kys7DQo+ID4gKyAgICAgICAgICAgICBtc2xlZXAo MTAwKTsNCj4gPiArICAgICB9IHdoaWxlICghKHJlZ192YWwgJiAoMHg4IDw8IDQpKSAmJiAodGlt ZW91dCA8IDEwKSk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgaW50IGNkbnNfaGRwdHhfaGRtaV9waHlfb24oc3RydWN0IHBoeSAqcGh5KSB7 DQo+ID4gKyAgICAgc3RydWN0IGNkbnNfaGRwdHhfaGRtaV9waHkgKmNkbnNfcGh5ID0gcGh5X2dl dF9kcnZkYXRhKHBoeSk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiBoZHB0eF9oZG1pX3BoeV9w b3dlcl91cChjZG5zX3BoeSk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgY2Ruc19o ZHB0eF9oZG1pX3BoeV9vZmYoc3RydWN0IHBoeSAqcGh5KSB7DQo+ID4gKyAgICAgc3RydWN0IGNk bnNfaGRwdHhfaGRtaV9waHkgKmNkbnNfcGh5ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7DQo+ID4g Kw0KPiA+ICsgICAgIGhkcHR4X2hkbWlfcGh5X3Bvd2VyX2Rvd24oY2Ruc19waHkpOw0KPiA+ICsg ICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtpbnQgIGNkbnNfaGRwdHhfaGRtaV9w aHlfdmFsaWQoc3RydWN0IHBoeSAqcGh5LCBlbnVtIHBoeV9tb2RlIG1vZGUsDQo+IGludCBzdWJt b2RlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuaW9uDQo+ID4gK3BoeV9jb25maWd1cmVfb3B0cyAqb3B0cykgew0KPiA+ICsgICAg IHUzMiByYXRlID0gb3B0cy0+aGRtaS5waXhlbF9jbGtfcmF0ZTsNCj4gPiArICAgICBpbnQgaTsN Cj4gPiArDQo+ID4gKyAgICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocGl4ZWxfY2xrX291 dHB1dF9jdHJsX3RhYmxlKTsgaSsrKQ0KPiA+ICsgICAgICAgICAgICAgaWYgKHJhdGUgPT0NCj4g cGl4ZWxfY2xrX291dHB1dF9jdHJsX3RhYmxlW2ldLnBpeGVsX2Nsa19mcmVxX21pbikNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAt RUlOVkFMOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGNkbnNfaGRwdHhfaGRtaV9w aHlfaW5pdChzdHJ1Y3QgcGh5ICpwaHkpIHsNCj4gPiArICAgICByZXR1cm4gMDsNCj4gPiArfQ0K PiA+ICsNCj4gPiArc3RhdGljIGludCBjZG5zX2hkcHR4X2hkbWlfY29uZmlndXJlKHN0cnVjdCBw aHkgKnBoeSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uIHBo eV9jb25maWd1cmVfb3B0cyAqb3B0cykNCj4gew0KPiA+ICsgICAgIHN0cnVjdCBjZG5zX2hkcHR4 X2hkbWlfcGh5ICpjZG5zX3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOw0KPiA+ICsgICAgIGlu dCByZXQ7DQo+ID4gKw0KPiA+ICsgICAgIGNkbnNfcGh5LT5waXhlbF9jbGtfcmF0ZSA9IG9wdHMt PmhkbWkucGl4ZWxfY2xrX3JhdGU7DQo+ID4gKyAgICAgY2Ruc19waHktPmNvbG9yX3NwYWNlID0g b3B0cy0+aGRtaS5jb2xvcl9zcGFjZTsNCj4gPiArICAgICBjZG5zX3BoeS0+YnBjID0gb3B0cy0+ aGRtaS5icGM7DQo+ID4gKw0KPiA+ICsgICAgIC8qIENoZWNrIEhETUkgRlcgYWxpdmUgYmVmb3Jl IEhETUkgUEhZIGluaXQgKi8NCj4gPiArICAgICByZXQgPSBoZHB0eF9waHlfY2hlY2tfYWxpdmUo Y2Ruc19waHkpOw0KPiA+ICsgICAgIGlmIChyZXQgPT0gZmFsc2UpIHsNCj4gPiArICAgICAgICAg ICAgIGRldl9lcnIoY2Ruc19waHktPmRldiwgIk5PIEhETUkgRlcgcnVubmluZ1xuIik7DQo+ID4g KyAgICAgICAgICAgICByZXR1cm4gLUVOWElPOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAg ICAgLyogQ29uZmlndXJlIFBIWSAqLw0KPiA+ICsgICAgIGlmIChoZHB0eF9oZG1pX3BoeV9jZmco Y2Ruc19waHksIGNkbnNfcGh5LT5waXhlbF9jbGtfcmF0ZSkgPCAwKSB7DQo+ID4gKyAgICAgICAg ICAgICBkZXZfZXJyKGNkbnNfcGh5LT5kZXYsICJmYWlsZWQgdG8gc2V0IHBoeSBwY2xvY2tcbiIp Ow0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKyAgICAgfQ0KPiA+ICsN Cj4gPiArICAgICByZXQgPSBoZHB0eF9oZG1pX3BoeV9wb3dlcl91cChjZG5zX3BoeSk7DQo+ID4g KyAgICAgaWYgKHJldCA8IDApDQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICsN Cj4gPiArICAgICBoZHB0eF9oZG1pX3BoeV9zZXRfdnN3aW5nKGNkbnNfcGh5KTsNCj4gPiArDQo+ ID4gKyAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgcGh5X29wcyBjZG5zX2hkcHR4X2hkbWlfcGh5X29wcyA9IHsNCj4gPiArICAgICAuaW5pdCAg ICAgICAgICAgPSBjZG5zX2hkcHR4X2hkbWlfcGh5X2luaXQsDQo+ID4gKyAgICAgLmNvbmZpZ3Vy ZSAgICAgID0gY2Ruc19oZHB0eF9oZG1pX2NvbmZpZ3VyZSwNCj4gPiArICAgICAucG93ZXJfb24g ICAgICAgPSBjZG5zX2hkcHR4X2hkbWlfcGh5X29uLA0KPiA+ICsgICAgIC5wb3dlcl9vZmYgICAg ICA9IGNkbnNfaGRwdHhfaGRtaV9waHlfb2ZmLA0KPiA+ICsgICAgIC52YWxpZGF0ZSAgID0gY2Ru c19oZHB0eF9oZG1pX3BoeV92YWxpZCwNCj4gPiArICAgICAub3duZXIgICAgICAgICAgPSBUSElT X01PRFVMRSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgY2Ruc19oZHB0eF9oZG1p X3BoeV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KSB7DQo+ID4gKyAgICAgc3Ry dWN0IGNkbnNfaGRwdHhfaGRtaV9waHkgKmNkbnNfcGh5Ow0KPiA+ICsgICAgIHN0cnVjdCBkZXZp Y2UgKmRldiA9ICZwZGV2LT5kZXY7DQo+ID4gKyAgICAgc3RydWN0IGRldmljZV9ub2RlICpub2Rl ID0gZGV2LT5vZl9ub2RlOw0KPiA+ICsgICAgIHN0cnVjdCBwaHlfcHJvdmlkZXIgKnBoeV9wcm92 aWRlcjsNCj4gPiArICAgICBzdHJ1Y3QgcmVzb3VyY2UgKnJlczsNCj4gPiArICAgICBzdHJ1Y3Qg cGh5ICpwaHk7DQo+ID4gKyAgICAgaW50IHJldDsNCj4gPiArDQo+ID4gKyAgICAgY2Ruc19waHkg PSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmNkbnNfcGh5KSwgR0ZQX0tFUk5FTCk7DQo+ID4g KyAgICAgaWYgKCFjZG5zX3BoeSkNCj4gPiArICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0K PiA+ICsNCj4gPiArICAgICBkZXZfc2V0X2RydmRhdGEoZGV2LCBjZG5zX3BoeSk7DQo+ID4gKyAg ICAgY2Ruc19waHktPmRldiA9IGRldjsNCj4gPiArICAgICBtdXRleF9pbml0KCZjZG5zX3BoeS0+ bWJveF9tdXRleCk7DQo+ID4gKw0KPiA+ICsgICAgIHJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJj ZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7DQo+ID4gKyAgICAgaWYgKCFyZXMpDQo+ID4gKyAg ICAgICAgICAgICByZXR1cm4gLUVOT0RFVjsNCj4gPiArICAgICBjZG5zX3BoeS0+cmVncyA9IGRl dm1faW9yZW1hcChkZXYsIHJlcy0+c3RhcnQsDQo+IHJlc291cmNlX3NpemUocmVzKSk7DQo+ID4g KyAgICAgaWYgKElTX0VSUihjZG5zX3BoeS0+cmVncykpDQo+ID4gKyAgICAgICAgICAgICByZXR1 cm4gUFRSX0VSUihjZG5zX3BoeS0+cmVncyk7DQo+ID4gKw0KPiA+ICsgICAgIHBoeSA9IGRldm1f cGh5X2NyZWF0ZShkZXYsIG5vZGUsICZjZG5zX2hkcHR4X2hkbWlfcGh5X29wcyk7DQo+ID4gKyAg ICAgaWYgKElTX0VSUihwaHkpKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIocGh5 KTsNCj4gPiArDQo+ID4gKyAgICAgcGh5LT5hdHRycy5tb2RlID0gUEhZX01PREVfSERNSTsNCj4g PiArDQo+ID4gKyAgICAgY2Ruc19waHktPnBoeSA9IHBoeTsNCj4gPiArICAgICBwaHlfc2V0X2Ry dmRhdGEocGh5LCBjZG5zX3BoeSk7DQo+ID4gKw0KPiA+ICsgICAgIHJldCA9IGhkcHR4X2hkbWlf Y2xrX2VuYWJsZShjZG5zX3BoeSk7DQo+ID4gKyAgICAgaWYgKHJldCkgew0KPiA+ICsgICAgICAg ICAgICAgZGV2X2VycihkZXYsICJJbml0IGNsayBmYWlsXG4iKTsNCj4gPiArICAgICAgICAgICAg IHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgcGh5X3Byb3Zp ZGVyID0gZGV2bV9vZl9waHlfcHJvdmlkZXJfcmVnaXN0ZXIoZGV2LA0KPiBvZl9waHlfc2ltcGxl X3hsYXRlKTsNCj4gPiArICAgICBpZiAoSVNfRVJSKHBoeV9wcm92aWRlcikpIHsNCj4gPiArICAg ICAgICAgICAgIHJldCA9ICBQVFJfRVJSKHBoeV9wcm92aWRlcik7DQo+ID4gKyAgICAgICAgICAg ICBnb3RvIGNsa19kaXNhYmxlOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgZGV2X2Ri ZyhkZXYsICJwcm9iZSBzdWNjZXNzIVxuIik7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0K PiA+ICsNCj4gPiArY2xrX2Rpc2FibGU6DQo+ID4gKyAgICAgaGRwdHhfaGRtaV9jbGtfZGlzYWJs ZShjZG5zX3BoeSk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgaW50IGNkbnNfaGRwdHhfaGRtaV9waHlfcmVtb3ZlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpIHsNCj4gPiArICAgICBzdHJ1Y3QgY2Ruc19oZHB0eF9oZG1p X3BoeSAqY2Ruc19waHkgPQ0KPiA+ICtwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsNCj4gPiAr DQo+ID4gKyAgICAgaGRwdHhfaGRtaV9jbGtfZGlzYWJsZShjZG5zX3BoeSk7DQo+ID4gKw0KPiA+ ICsgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IG9mX2RldmljZV9pZCBjZG5zX2hkcHR4X2hkbWlfcGh5X29mX21hdGNoW10gPSB7DQo+ID4gKyAg ICAgey5jb21wYXRpYmxlID0gImZzbCxpbXg4bXEtaGRtaS1waHkiIH0sDQo+ID4gKyAgICAgeyAv KiBzZW50aW5lbCAqLyB9DQo+ID4gK307DQo+ID4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGNk bnNfaGRwdHhfaGRtaV9waHlfb2ZfbWF0Y2gpOw0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBw bGF0Zm9ybV9kcml2ZXIgY2Ruc19oZHB0eF9oZG1pX3BoeV9kcml2ZXIgPSB7DQo+ID4gKyAgICAg LnByb2JlICA9IGNkbnNfaGRwdHhfaGRtaV9waHlfcHJvYmUsDQo+ID4gKyAgICAgLnJlbW92ZSA9 IGNkbnNfaGRwdHhfaGRtaV9waHlfcmVtb3ZlLA0KPiA+ICsgICAgIC5kcml2ZXIgPSB7DQo+ID4g KyAgICAgICAgICAgICAubmFtZSAgID0gImNkbnMtaGRwdHgtaGRtaS1waHkiLA0KPiA+ICsgICAg ICAgICAgICAgLm9mX21hdGNoX3RhYmxlID0gY2Ruc19oZHB0eF9oZG1pX3BoeV9vZl9tYXRjaCwN Cj4gPiArICAgICB9DQo+ID4gK307DQo+ID4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoY2Ruc19o ZHB0eF9oZG1pX3BoeV9kcml2ZXIpOw0KPiA+ICsNCj4gPiArTU9EVUxFX0FVVEhPUigiU2FuZG9y IFl1IDxzYW5kb3IueXVAbnhwLmNvbT4iKTsNCj4gPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJDYWRl bmNlIEhEUC1UWCBIRE1JIFBIWSBkcml2ZXIiKTsNCj4gPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIp Ow0KPiA+IC0tDQo+ID4gMi4zNC4xDQo+IA0KPiAtLQ0KPiB+Vmlub2QNCkIuUg0KU2FuZG9yDQo=