From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4751AA0C45; Mon, 25 Oct 2021 09:35:50 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1DE8E407FF; Mon, 25 Oct 2021 09:35:50 +0200 (CEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2086.outbound.protection.outlook.com [40.107.21.86]) by mails.dpdk.org (Postfix) with ESMTP id 274A44003E for ; Mon, 25 Oct 2021 09:35:49 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VOmqYlZycH9epLF/6/CXF6e+xXJDf3B1FctsBLm7Ckqtda9+EV3iRaPPWGViFeyYjcLHaaswLgbUBR7sRcMEz+1ZdvPalBVHMqbfEi8V3n5shyLEpUsc5yeT29zHwJ9Ae/zra2MtjCyjDo0iKfuXX+Fi+3GJAoCsJevF+kYdjZmvvT4gNzTrf0ZZ1Lg3hfOk2gTt1gmb5OxfU19itAdO19J9Lrl4n8N/r+yPv4oNpETZwHkxOgCNOO9SfJ/qFQcb0/6HaHepq5ypk3LKvWmNLGCFPzjoaquvnGIY7SuKmq2Xi8QUiu+04PG7YUQwO/qS73lX0op4wbnI2ssJJUFkPA== 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=rZZ2QNTlS4GBdAmmXVwdPde+niS1JnJr6VoqivUF4eQ=; b=Pgro/JxgbX6PlzEd084S/gP89Iu+rIwqLs/V7zY2bvKvAVnZAA1gfVglVnQPVAn2Nx3AauP6U3liYPOl3dbxNV18ViUHjHdJYTLp0ZWmlgixjHPQUg7o8HyHbXh8tse2bz6YytxuJDaS57vWRAI+QPqyEXH9wNPnpJfgbhGm1UjIorx5PX5n4BW7X2bK7AHrlFiuBbxZPmL5UyWFSsxCn8lFnKndpZYv/gbuVVznJE/EPZ3Yz34NGbYTHjBg4OPv4DsD9oydKLohb/DaQN8x1yExLmO1zLNlgZqxJepuR63dAjWICaHz38ENl4nSizq+bPvKA8MhYLCowgJILkHH2Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ericsson.com; dmarc=pass action=none header.from=ericsson.com; dkim=pass header.d=ericsson.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ericsson.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rZZ2QNTlS4GBdAmmXVwdPde+niS1JnJr6VoqivUF4eQ=; b=kJMp283LqsVcTbHH6fHzusXA1WkUlH6OTNtJdEiCajbNy+IGdUOXf4ANlt6PgXnjzPpKu+k5NkyaPrZWHMlOsVwdJiWZOYyqGXiHzAFlNxl+gIJRsuQ6hNPIimyhnAef2nsuv5w0XWVkp949LHGH8EdVHRechFntCkXczbODgaw= Received: from DB7PR07MB5978.eurprd07.prod.outlook.com (2603:10a6:10:80::15) by DB7PR07MB4650.eurprd07.prod.outlook.com (2603:10a6:5:36::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.8; Mon, 25 Oct 2021 07:35:46 +0000 Received: from DB7PR07MB5978.eurprd07.prod.outlook.com ([fe80::8b2:d48f:7cb7:8b3d]) by DB7PR07MB5978.eurprd07.prod.outlook.com ([fe80::8b2:d48f:7cb7:8b3d%6]) with mapi id 15.20.4649.013; Mon, 25 Oct 2021 07:35:46 +0000 From: =?utf-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= To: "jerinj@marvell.com" , "dev@dpdk.org" CC: "thomas@monjalon.net" , "ferruh.yigit@intel.com" , "ajit.khaparde@broadcom.com" , "aboyer@pensando.io" , "andrew.rybchenko@oktetlabs.ru" , "beilei.xing@intel.com" , "bruce.richardson@intel.com" , "chas3@att.com" , "chenbo.xia@intel.com" , "ciara.loftus@intel.com" , "dsinghrawat@marvell.com" , "ed.czeck@atomicrules.com" , "evgenys@amazon.com" , "grive@u256.net" , "g.singh@nxp.com" , "zhouguoyang@huawei.com" , "haiyue.wang@intel.com" , "hkalra@marvell.com" , "heinrich.kuhn@corigine.com" , "hemant.agrawal@nxp.com" , "hyonkim@cisco.com" , "igorch@amazon.com" , "irusskikh@marvell.com" , "jgrajcia@cisco.com" , "jasvinder.singh@intel.com" , "jianwang@trustnetic.com" , "jiawenwu@trustnetic.com" , "jingjing.wu@intel.com" , "johndale@cisco.com" , "john.miller@atomicrules.com" , "linville@tuxdriver.com" , "keith.wiles@intel.com" , "kirankumark@marvell.com" , "oulijun@huawei.com" , "lironh@marvell.com" , "longli@microsoft.com" , "mw@semihalf.com" , "spinler@cesnet.cz" , "matan@nvidia.com" , "matt.peters@windriver.com" , "maxime.coquelin@redhat.com" , "mk@semihalf.com" , "humin29@huawei.com" , "pnalla@marvell.com" , "ndabilpuram@marvell.com" , "qiming.yang@intel.com" , "qi.z.zhang@intel.com" , "radhac@marvell.com" , "rahul.lakkireddy@chelsio.com" , "rmody@marvell.com" , "rosen.xu@intel.com" , "sachin.saxena@oss.nxp.com" , "skoteshwar@marvell.com" , "shshaikh@marvell.com" , "shaibran@amazon.com" , "shepard.siegel@atomicrules.com" , "asomalap@amd.com" , "somnath.kotur@broadcom.com" , "sthemmin@microsoft.com" , "steven.webster@windriver.com" , "skori@marvell.com" , "mtetsuyah@gmail.com" , "vburru@marvell.com" , "viacheslavo@nvidia.com" , "xiao.w.wang@intel.com" , "cloud.wangxiaoyun@huawei.com" , "yisen.zhuang@huawei.com" , "yongwang@vmware.com" , "xuanziyang2@huawei.com" , "pkapoor@marvell.com" , "nadavh@marvell.com" , "sburla@marvell.com" , "pathreya@marvell.com" , "gakhil@marvell.com" , "mdr@ashroe.eu" , "dmitry.kozliuk@gmail.com" , "anatoly.burakov@intel.com" , "cristian.dumitrescu@intel.com" , "honnappa.nagarahalli@arm.com" , "ruifeng.wang@arm.com" , "drc@linux.vnet.ibm.com" , "konstantin.ananyev@intel.com" , "olivier.matz@6wind.com" , "jay.jayatheerthan@intel.com" , "asekhar@marvell.com" , "pbhagavatula@marvell.com" , Elana Agostini Thread-Topic: [dpdk-dev] [RFC PATCH 0/1] Dataplane Workload Accelerator library Thread-Index: AQHXxRXN3qkU/eag4k6Wyy9Y3hOgEKvjW6uA Date: Mon, 25 Oct 2021 07:35:45 +0000 Message-ID: References: <20211019181459.1709976-1-jerinj@marvell.com> In-Reply-To: <20211019181459.1709976-1-jerinj@marvell.com> Accept-Language: en-US, sv-SE Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=ericsson.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 58bb5693-0a6d-4c7e-a0f2-08d9978a0edf x-ms-traffictypediagnostic: DB7PR07MB4650: x-ld-processed: 92e84ceb-fbfd-47ab-be52-080c6b87953f,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2958; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 3RlA+1ZWr1dB8JDiTy09QUsXEtq/ie3PEY8CrrmnGU6xGAkvNbmzacDMNV9I8J+ZxFS1poQCjNT/ONtdtfjmv/gSTcqFwFGw1Te7MPyOED0YRUX3LSJV8pXtTFLZYtzeqBNwIiaogFgdeML9gExqgFFo6A5ZDd0LrpZsBf2oi9BqZMcVDNQAEU0040Okxf4b9UgMwI30IusVaWoVrlEn1jHxfG8yW28cYpCgEfWN5Bidg/zKvnu0RQeF1Nk4byOFlksQ1qoTE7q6onyM8WJ1vc2te9TkrDekVet/NyAt6tSJ3ki4PRdxzDAFRAO0ojllaihssWxF5NTbB0M+FJwrq3e1x4kMOOeXsc8Q2ffl+wcfH/6bzxBFyRkVjoRZXwNENMN067D6MVANKpqVHGt1MHX8a+CPwxmpQ2p2G/uZbaopKqUhc7Wp5UooxjMLQYVV75A08StnlOuwr5jvV27xTi3VcAIodaSHIJ0YHYKlaO1nb6FZyu18M2kjnEJD5Fk/dNJTpNw/KT3JwKanOIl8vP8fJ48wODLhVnIlTBDEZ7se9db+lqWCUoJ1ekA6JaVmqlnjWlo2sI78RWKy/kjy4RZYUHa6q3zkmfrK06D0WIGZzrioyOxzPaA7yMU2HGEam3kp7xyI2IaWqop3+1G6HeqsEVXkrcmV0GfJuLDJnyfdR2pAtPXAIsiSi4cOJdzVDs3TUI1T77ZRxWL+uKkrzhxHXS9bUe4xoyKLy9QBs5K3//tBAYJ0lHDloTMAQBVlF6WmSZS1O1/Vv6p4lXpDyA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR07MB5978.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(66446008)(64756008)(66556008)(4001150100001)(76116006)(66476007)(6512007)(66946007)(91956017)(86362001)(8676002)(82960400001)(122000001)(5660300002)(6486002)(38100700002)(85202003)(31696002)(4326008)(8936002)(6506007)(53546011)(7366002)(7406005)(2616005)(7416002)(71200400001)(508600001)(186003)(30864003)(26005)(36756003)(7336002)(110136005)(2906002)(54906003)(83380400001)(38070700005)(316002)(31686004)(85182001)(43740500002)(45980500001)(579004)(559001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bm9WV0pYT21WNXdUTUxvaHVJYk1CZjZBcnlhclM0YkRBR0NSbVM4TlMyOENH?= =?utf-8?B?dkpRU0c4OUpHU2dlaXFoZVRnNGlWdjZqK3BZNklGbDV0VjFscWUwUkRTdnIx?= =?utf-8?B?MTZYRTk3WHlPRGFLeEZ5TUY2TWN0WUNLWm1BSmRJT3cvVFA0TXQzM1gxa1Uv?= =?utf-8?B?SXFlS1hsWi85ZGliREg0ZitVbGNzME5vc2lmdkppNHB3WCtEVnA1aUlLcEZn?= =?utf-8?B?ZnZIaWVEcEdvRWtqeEZYQVdVWCtsKzQzTCtVako1MkdkanI3a3VuejhqRDBl?= =?utf-8?B?d0RvNExCN1FrTzd6dDFtQ3Z1QmE5U1hTQkxRQWwyUEIzZDFlV3hBR2l1aGpL?= =?utf-8?B?V21VL0tzVWlMMko3c1diSm9wdC9YcWp3K1k5RFdBaVFwOXFpeEtjTVNLZVdS?= =?utf-8?B?SkwxS25nbHdLT2trVXNjVHJyc3k4N0lCNWI3RnRraDJMcmp4by9kKzZ2ZlBB?= =?utf-8?B?Yk5weTMvWTFQOWttWldvQVZidjkveUVWZzFZcFRwUHZxOUFuaE4rQkRzNkZZ?= =?utf-8?B?dmhBU1ZyZlkyUXNTSmtCODZVNGRFcjBtN2IxWjFRSkRyNHVYbHg0Z04rNkVT?= =?utf-8?B?enlvWW9CUi9IVkJicmdZYllWUk44alpKSk9tZkFSaXRsQkMrTWkyR3lFSTVt?= =?utf-8?B?RkZOQ3hrMWlqN2czSWtzb1NyclJyT3FBajdiQ1UrcXkrNFY3N0R5b3UwVHFX?= =?utf-8?B?OVRXaVI1S3FYcllPQ2RTbzBKc0liZ1pZaTZjQlQvczZpd3hUN1Z5c3UwbWR1?= =?utf-8?B?YkkxeWVRWlNYcWlZNWhXR09rZUVsUGNyODR3YXphWDVROFp5R2RXM0MxMVdl?= =?utf-8?B?UU91dlYxQmliUDNtVUh6WEpiN3FBTUxEUnNHZGw5eEhacnVDanMyOHVzMDFj?= =?utf-8?B?Rk5JeGNLOVNiTzJoOERTVTRIWXQxWXJRQUlqV1VKK2F5cmpVYytkRkdOcXhM?= =?utf-8?B?Z2RHaHZNMm5yRlhhZTZnNXJ3Q3I1QWpjUjMzbkFsd1I3YUZzWCtmcitHbXR2?= =?utf-8?B?bzNzZUF2eTg3RWFsTXpFOHhXOGlsVmtsUFArVWprdXdXVnR5cXpESXU3Zlk2?= =?utf-8?B?UFlMQlhCWTR2Y0RqaDhLemVVbUo0eWtyeG5WN084RzdsNWtHMjZVRDRqQURB?= =?utf-8?B?cGNKR1l5azA3TkFMZmh2Y2pOcXlMSUVDU2RHUDlTVnpMRHVWUE9qUEdwRXV1?= =?utf-8?B?YW9GZExaTFVIaXVESE9zL1ZHOVZTOHhFMDZzN2VIa3dXM1l1cVl6RU1CaGky?= =?utf-8?B?SG9zQUVDM3VDdG1nVS9OZmwwM202dDBudkhTNHVaSmF5ZENaRU9OOXpyaVdR?= =?utf-8?B?aDFqL3hhVjhrNTZQR2RaUWw4eGY3MWtzN3kwZ0tHR1piMjFIQlAxSFhCZW5B?= =?utf-8?B?amxwdkx4aTdFRTFVSzZMZ2ZoTHBwcm96OUFoeGFNZERVcjUzSjFpT3RrdkRr?= =?utf-8?B?MTVWV1kvQUJ2andaeU1QdldMRzJxS1VIWXhuUEl2bkx2UlFudXdBbFY3Z2VU?= =?utf-8?B?b1J1WW03SldCNHVJNmdrU0lsWm1HN3JhaVVQaHhvT1FpM1VvZ3hjdFdGc3hh?= =?utf-8?B?ZWYvM2FnSDUzWDVack5MbEZEUDVQbFpsWGhnQXNWWmZYR1VtSncxOFhUT2Qy?= =?utf-8?B?RTdpYVdjOHhPUlF5N2ZVZ1RwU283S3Uxbi9YYWRGSTcvaWY0YVFYdU9vK21O?= =?utf-8?B?WEF1UWpVaW9GcXkxeStDNGxESEx0emVvTWFzT1F3Nk1nNkZMWngxRkM3NENG?= =?utf-8?B?S1d4MTZJRlYwOFZYVG16UnV1Tm5IZEh5OG1wQ3l3WVNJMCtoSTRwUU9HdHFi?= =?utf-8?B?cUw5cmRZa2p4WHBCN1VxV1c1aHlTdzBVS0xoQ05NcFBwODc5TEtJUVdqNUFC?= =?utf-8?B?WUZ5dFJjN2htQWZhM2k3YU9Rc0xGdHMzaVBFTlRvZmR0MHREQnB4bTN6ZWVG?= =?utf-8?B?Uk56cVFoYjhWR2xxSjZRV09oVk42aEhNQzIzTUNxS21FYXVlVmhaNGFqd1E0?= =?utf-8?B?U3NIM09iQUUrc0FDRGNHN0EveFlFSC9BNHhsazZGZ0hPbmpUOEhRckRsckVU?= =?utf-8?B?VzNqYk9OcWFNZEhxSU5FV2RCbmdiNGZXeW9DcGRXc0RuNzZ0YTBqVDBKakxL?= =?utf-8?B?WXVMU0prT0UxbHZJOVNGL2JpVlpaTDNCK1ZUNVFXUngybzhBL3RGOS8zck5K?= =?utf-8?B?eS9tRmpyYnFaRXN3S25uRERhcGwrcHg1dHJsc1FLWFphZW9mNXpjS0QxREw1?= =?utf-8?B?SG1MeS80MWNtRXJ1UU1meDJCZU5nPT0=?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: ericsson.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DB7PR07MB5978.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 58bb5693-0a6d-4c7e-a0f2-08d9978a0edf X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Oct 2021 07:35:45.8394 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: l9EYOCn2OfW4HNn/pZ1cetEg5Li+XO4OPlIIPRBBswxB2oSUUYk5oMcbltzxLhvJL4Aky8+A2e2pCHXTjxVf5OGk36OF+NPXzalq9p3e3b0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR07MB4650 Subject: Re: [dpdk-dev] [RFC PATCH 0/1] Dataplane Workload Accelerator library X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" T24gMjAyMS0xMC0xOSAyMDoxNCwgamVyaW5qQG1hcnZlbGwuY29tIHdyb3RlOg0KPiBGcm9tOiBK ZXJpbiBKYWNvYiA8amVyaW5qQG1hcnZlbGwuY29tPg0KPg0KPg0KPiBEYXRhcGxhbmUgV29ya2xv YWQgQWNjZWxlcmF0b3IgbGlicmFyeQ0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KPg0KPiBEZWZpbml0aW9uIG9mIERhdGFwbGFuZSBXb3JrbG9hZCBBY2NlbGVyYXRv cg0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiBEYXRh cGxhbmUgV29ya2xvYWQgQWNjZWxlcmF0b3IoRFdBKSB0eXBpY2FsbHkgY29udGFpbnMgYSBzZXQg b2YgQ1BVcywNCj4gTmV0d29yayBjb250cm9sbGVycyBhbmQgcHJvZ3JhbW1hYmxlIGRhdGEgYWNj ZWxlcmF0aW9uIGVuZ2luZXMgZm9yDQo+IHBhY2tldCBwcm9jZXNzaW5nLCBjcnlwdG9ncmFwaHks IHJlZ2V4IGVuZ2luZXMsIGJhc2ViYW5kIHByb2Nlc3NpbmcsIGV0Yy4NCj4gVGhpcyBhbGxvd3Mg RFdBIHRvIG9mZmxvYWQgIGNvbXB1dGUvcGFja2V0IHByb2Nlc3NpbmcvYmFzZWJhbmQvDQo+IGNy eXB0b2dyYXBoeS1yZWxhdGVkIHdvcmtsb2FkIGZyb20gdGhlIGhvc3QgQ1BVIHRvIHNhdmUgdGhl IGNvc3QgYW5kIHBvd2VyLg0KPiBBbHNvIHRvIGVuYWJsZSBzY2FsaW5nIHRoZSB3b3JrbG9hZCBi eSBhZGRpbmcgRFdBcyB0byB0aGUgSG9zdCBDUFUgYXMgbmVlZGVkLg0KPg0KPiBVbmxpa2Ugb3Ro ZXIgZGV2aWNlcyBpbiBEUERLLCB0aGUgRFdBIGRldmljZSBpcyBub3QgZml4ZWQtZnVuY3Rpb24N Cj4gZHVlIHRvIHRoZSBmYWN0IHRoYXQgaXQgaGFzIENQVXMgYW5kIHByb2dyYW1tYWJsZSBIVyBh Y2NlbGVyYXRvcnMuDQoNCg0KVGhlcmUgYXJlIGFscmVhZHkgc2V2ZXJhbCBpbnN0YW5jZXMgb2Yg RFBESyBkZXZpY2VzIHdpdGggcHVyZS1zb2Z0d2FyZSANCmltcGxlbWVudGF0aW9uLiBJbiB0aGlz IHJlZ2FyZCwgYSBEUFUvU21hcnROSUMgcmVwcmVzZW50cyBub3RoaW5nIG5ldy4gDQpXaGF0J3Mg bmV3LCBpdCBzZWVtcyB0byBtZSwgaXMgYSBtdWNoLWluY3JlYXNlZCBuZWVkIHRvIA0KY29uZmln dXJlL2FycmFuZ2UgdGhlIHByb2Nlc3NpbmcgaW4gY29tcGxleCBtYW5uZXJzLCB0byBhdm9pZCBi b3VuY2luZyANCmV2ZXJ5dGhpbmcgdG8gdGhlIGhvc3QgQ1BVLiBTb21ldGhpbmcgbGlrZSBQNCBv ciBydGVfZmxvdy1iYXNlZCBob29rcyBvciANCnNvbWUgb3RoZXIga2luZCBvZiBleHRlbnNpb24u IFRoZSBldmVudGRldiBhZGFwdGVycyBzb2x2ZSB0aGUgc2FtZSANCnByb2JsZW0gKHdoZXJlIG9u IHNvbWUgc3lzdGVtcyBwYWNrZXRzIGdvIHRocm91Z2ggdGhlIGhvc3QgQ1BVIG9uIHRoZWlyIA0K d2F5IHRvIHRoZSBldmVudCBkZXZpY2UsIGFuZCBvdGhlcnMgZG8gbm90KSAtIGFsdGhvdWdoIG9u IGEgKm11Y2gqIA0Kc21hbGxlciBzY2FsZS4NCg0KDQoiTm90LWZpeGVkIGZ1bmN0aW9uIiBzZWVt cyB0byBjYWxsIGZvciBtb3JlIGhvdCBwbHVnIHN1cHBvcnQgaW4gdGhlIA0KZGV2aWNlIEFQSXMu IFN1Y2ggZnVuY3Rpb25hbGl0eSBjb3VsZCB0aGVuIGJlIHJldXNlZCBieSBhbnl0aGluZyB0aGF0 IA0KY2FuIGJlIHJlY29uZmlndXJlZCBkeW5hbWljYWxseSAoRlBHQXMsIGZpcm13YXJlLXByb2dy YW1tZWQgDQphY2NlbGVyYXRvcnMsIGV0Yy4pLCBidXQgd2hpY2ggbWF5IG5vdCBiZSBhYmxlIHRv IHNlcnZlIGFzIGEgUlBDIA0KZW5kcG9pbnQsIGxpa2UgYSBTbWFydE5JQy4NCg0KDQpEV0EgY291 bGQgYmUgc29tZSBraW5kIG9mIERQREstaW50ZXJuYWwgZnJhbWV3b3JrIGZvciBtYW5hZ2luZyBj ZXJ0YWluIA0KdHlwZSBvZiBEUFVzLCBidXQgc2hvdWxkIGl0IGJlIGV4cG9zZWQgdG8gdGhlIHVz ZXIgYXBwbGljYXRpb24/DQoNCg0KPiBUaGlzIGVuYWJsZXMgRFdBIHBlcnNvbmFsaXR5L3dvcmts b2FkIHRvIGJlIGNvbXBsZXRlbHkgcHJvZ3JhbW1hYmxlLg0KPiBUeXBpY2FsIGV4YW1wbGVzIG9m IERXQSBvZmZsb2FkcyBhcmUgRmxvdy9TZXNzaW9uIG1hbmFnZW1lbnQsDQo+IFZpcnR1YWwgc3dp dGNoLCBUTFMgb2ZmbG9hZCwgSVBzZWMgb2ZmbG9hZCwgbDNmd2Qgb2ZmbG9hZCwgZXRjLg0KPiBN b3RpdmF0aW9uIGZvciB0aGUgbmV3IGxpYnJhcnkNCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQo+IEV2ZW4gdGhvdWdoLCBhIGxvdCBvZiBzZW1pY29uZHVjdG9yIHZlbmRvcnMgb2Zm ZXJzIGEgZGlmZmVyZW50IGZvcm0gb2YgRFdBLA0KPiBzdWNoIGFzIERQVShvZnRlbiBjYWxsZWQg U21hcnQtTklDKSwgR1BVLCBJUFUsIFhQVSwgZXRjLiwNCj4gRHVlIHRvIHRoZSBsYWNrIG9mIHN0 YW5kYXJkIEFQSXMgdG8gIkRlZmluZSB0aGUgd29ya2xvYWQiIGFuZA0KPiAiQ29tbXVuaWNhdGlv biBiZXR3ZWVuIEhPU1QgYW5kIERXQSIsIGl0IGlzIGRpZmZpY3VsdCBmb3IgRFBESw0KPiBjb25z dW1lcnMgdG8gdXNlIHRoZW0gaW4gYSBwb3J0YWJsZSB3YXkgYWNyb3NzIGRpZmZlcmVudCBEV0Eg dmVuZG9ycw0KPiBhbmQgZW5hYmxlIGl0IGluIGNsb3VkIGVudmlyb25tZW50cy4NCj4NCj4NCj4g Q29udGVudHMgb2YgUkZDDQo+IC0tLS0tLS0tLS0tLS0tLS0tLQ0KPiBUaGlzIFJGQyBhdHRlbXB0 cyB0byBkZWZpbmUgc3RhbmRhcmQgQVBJcyBmb3I6DQo+DQo+IDEpIERlZmluaXRpb24gb2YgUHJv ZmlsZXMgY29ycmVzcG9uZGluZyB0byB3ZWxsIGRlZmluZWQgd29ya2xvYWRzLCB3aGljaCBpbmNs dWRlcw0KPiAgICAgYSBzZXQgb2YgVExWKE1lc3NhZ2VzKSBhcyBhIHJlcXVlc3QgIGFuZCByZXNw b25zZSBzY2hlbWUgdG8gZGVmaW5lDQo+ICAgICB0aGUgY29udHJhY3QgYmV0d2VlbiBob3N0IGFu ZCBEV0EgdG8gb2ZmbG9hZCBhIHdvcmtsb2FkLg0KPiAgICAgKFNlZSBsaWIvZHdhL3J0ZV9kd2Ff cHJvZmlsZV8qIGhlYWRlciBmaWxlcykNCj4gMikgRGlzY292ZXJ5IG9mIGEgRFdBcyBjYXBhYmls aXRpZXMgKGUuZy4gd2hpY2ggc3BlY2lmaWMgd29ya2xvYWRzIGl0IGNhbiBzdXBwb3J0KQ0KPiAg ICAgaW4gYSB2ZW5kb3IgaW5kZXBlbmRlbnQgZmFzaGlvbi4gKFNlZSBydGVfZHdhX2Rldl9kaXNj X3Byb2ZpbGVzKCkpDQo+IDMpIEF0dGFjaGluZyBhIHNldCBvZiBwcm9maWxlcyB0byBhIERXQSBk ZXZpY2UoU2VlIHJ0ZV9kd2FfZGV2X2F0dGFjaCgpKQ0KPiA0KSBBIGNvbW11bmljYXRpb24gZnJh bWV3b3JrIGJldHdlZW4gSG9zdCBhbmQgRFdBKFNlZSBydGVfZHdhX2N0cmxfb3AoKSBmb3INCj4g ICAgIGNvbnRyb2wgcGxhbmUgYW5kIHJ0ZV9kd2FfcG9ydF9ob3N0XyogZm9yIHVzZXIgcGxhbmUp DQo+IDUpIFZpcnR1YWxpemF0aW9uIG9mIERXQSBoYXJkd2FyZSBhbmQgZmlybXdhcmUgKFVzZSBz dGFuZGFyZCBEUERLIGRldmljZS9idXMgbW9kZWwpDQo+IDYpIEVuYWJsZW1lbnQgb2YgYWRtaW5p c3RyYXRpdmUgZnVuY3Rpb25zIHN1Y2ggYXMgRlcgdXBkYXRlcywNCj4gICAgIHJlc291cmNlIHBh cnRpdGlvbmluZyBpbiBhIERXQSBsaWtlIGl0ZW1zIGluIGdsb2JhbCBpbg0KPiAgICAgbmF0dXJl IHRoYXQgaXMgYXBwbGljYWJsZSBmb3IgYWxsIERXQSBkZXZpY2UgdW5kZXIgdGhlIERXQS4NCj4g ICAgIChTZWUgcnRlX2R3YV9wcm9maWxlX2FkbWluLmgpDQo+DQo+IEFsc28sIHRoaXMgUkZDIGRl ZmluZSB0aGUgTDNGV0QgcHJvZmlsZSB0byBvZmZsb2FkIEwzRldEIHdvcmtsb2FkIHRvIERXQS4N Cj4gVGhpcyBSRkMgZGVmaW5lcyBhbiBldGhlcm5ldC1zdHlsZSBob3N0IHBvcnQgZm9yIEhvc3Qg dG8gRFdBIGNvbW11bmljYXRpb24uDQo+IERpZmZlcmVudCBob3N0IHBvcnQgdHlwZXMgbWF5IGJl IHJlcXVpcmVkIHRvIGNvdmVyIHRoZSBsYXJnZSBzcGVjdHJ1bSBvZiBEV0EgdHlwZXMgYXMNCj4g dHJhbnNwb3J0cyBsaWtlIFBDSWUgRE1BLCBTaGFyZWQgTWVtb3J5LCBvciBFdGhlcm5ldCBhcmUg ZnVuZGFtZW50YWxseSBkaWZmZXJlbnQsDQo+IGFuZCBvcHRpbWFsIHBlcmZvcm1hbmNlIG5lZWQg aG9zdCBwb3J0IHNwZWNpZmljIEFQSXMuDQo+DQo+IFRoZSBmcmFtZXdvcmsgZG9lcyBub3QgZm9y Y2UgYW4gYWJzdHJhY3Qgb2YgZGlmZmVyZW50IHRyYW5zcG9ydCBpbnRlcmZhY2VzIGFzDQo+IHNp bmdsZSBBUEksIGluc3RlYWQsIGRlY291cGxlcyBUTFYgZnJvbSB0aGUgdHJhbnNwb3J0IGludGVy ZmFjZSBhbmQgZm9jdXNlcyBvbg0KPiBkZWZpbmluZyB0aGUgVExWcyBhbmQgbGVhdmluZyB2ZW5k b3JzIHRvIHNwZWNpZnkgdGhlIGhvc3QgcG9ydHMNCj4gc3BlY2lmaWMgdG8gdGhlaXIgRFdBIGFy Y2hpdGVjdHVyZS4NCj4NCj4gICAgDQo+IFJvYWRtYXANCj4gLS0tLS0tLQ0KPiAxKSBBZGRyZXNz IHRoZSBjb21tZW50cyBmb3IgdGhpcyBSRkMgYW5kIGVuYWJsZSB0aGUgY29tbW9uIGNvZGUNCj4g MikgU1cgZHJpdmVycy9pbmZyYXN0cnVjdHVyZSBmb3IgYERXQWAgYW5kIGBEV0EgZGV2aWNlYA0K PiBhcyB0d28gc2VwYXJhdGUgRFBESyBwcm9jZXNzZXMgb3ZlciBgbWVtaWZgIERQREsgZXRoZGV2 IGRyaXZlciBmb3INCj4gTDNGV0Qgb2ZmbG9hZC4gVGhpcyBpcyB0byBlbmFibGUgdGhlIGZyYW1l d29yayB3aXRob3V0IGFueSBzcGVjaWFsIEhXLg0KPiAzKSBFeGFtcGxlIERXQSBkZXZpY2UgYXBw bGljYXRpb24gZm9yIEwzRldEIHByb2ZpbGUuDQo+IDQpIE1hcnZlbGwgRFdBIERldmljZSBkcml2 ZXJzLg0KPiA1KSBCYXNlZCBvbiBjb21tdW5pdHkgaW50ZXJlc3QgbmV3IHByb2ZpbGUgY2FuIGJl IGFkZGVkIGluIHRoZSBmdXR1cmUuDQo+DQo+DQo+IERXQSBsaWJyYXJ5IGZyYW1ld29yaw0KPiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4NCj4gRFdBIGNvbXBvbmVudHM6DQo+DQo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLT4gcnRlX2R3YV9w b3J0X2hvc3RfKigpDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIChVc2VyIFBsYW5lIHRyYWZmaWMgYXMgVExWKQ0KPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ICAgICAgICAgICAgICAg ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgIHwgICArLS0tLS0tLS0tLS0tLS0t LS0tLS0rDQo+ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgIHwgICB8IERQREsgRFdBIERldmljZVswXSB8DQo+ICAgICAgICAgICAgICAgICAgIHwgICst LS0tLS0tLS0tLS0tLS0tKyAgfCAgSG9zdCBQb3J0ICB8ICstLS0tLS0tLS0tLS0tLS0tKyB8DQo+ ICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgfCAgfDw9PT09PT09PSs9PT58 IHwgICAgICAgICAgICAgICAgfCB8DQo+ICAgICAgICAgICAgICAgICAgIHwgIHwgICBQcm9maWxl IDAgICAgfCAgfCAgICAgICAgICAgICB8IHwgICBQcm9maWxlIFggICAgfCB8DQo+ICAgICAgICAg ICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICB8IHwgICAgICAg ICAgICAgICAgfCB8DQo+ICAgIDw9PT09PT09PT09PT09PnwgICstLS0tLS0tLS0tLS0tLS0tKyAg fCBDb250cm9sIFBvcnR8ICstLS0tLS0tLS0tLS0tLS0tKyB8DQo+ICAgICAgRFdBIFBvcnQwICAg IHwgICstLS0tLS0tLS0tLS0tLS0tKyAgfDw9PT09PT09PSs9PT58ICAgICAgICAgICAgICAgICAg ICB8DQo+ICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgfCAgfCAgICAgICAg IHwgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+ICAgICAgICAgICAgICAgICAgIHwgIHwgICBQ cm9maWxlIDEgICAgfCAgfCAgICAgICAgIHwNCj4gICAgICAgICAgICAgICAgICAgfCAgfCAgICAg ICAgICAgICAgICB8ICB8ICAgICAgICAgKy0tPiBydGVfZHdhX2N0cmxfb3AoKQ0KPiAgICAgICAg ICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0tLSsgIHwgICAgICAgICAoQ29udHJvbCBQbGFu ZSB0cmFmZmljIGFzIFRMVikNCj4gICAgPD09PT09PT09PT09PT0+fCAgICAgIERhdGFwbGFuZSAg ICAgICB8DQo+ICAgICAgRFdBIFBvcnQxICAgIHwgICAgICBXb3JrbG9hZCAgICAgICAgfA0KPiAg ICAgICAgICAgICAgICAgICB8ICAgICAgQWNjZWxlcmF0b3IgICAgIHwgICAgICAgICAgICAgKy0t LS0tLS0tLS0gLS0tLS0tLS0tKw0KPiAgICAgICAgICAgICAgICAgICB8ICAgICAgKEhXL0ZXL1NX KSAgICAgIHwgICAgICAgICAgICAgfCBEUERLIERXQSBEZXZpY2VbTl0gfA0KPiAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwgIEhvc3QgUG9ydCAgfCArLS0tLS0tLS0t LS0tLS0tLSsgfA0KPiAgICA8PT09PT09PT09PT09PT58ICArLS0tLS0tLS0tLS0tLS0tLSsgIHw8 PT09PT09PT09PT0+fCB8ICAgICAgICAgICAgICAgIHwgfA0KPiAgICAgIERXQSBQb3J0TiAgICB8 ICB8ICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgfCB8ICAgUHJvZmlsZSBZICAgIHwg fA0KPiAgICAgICAgICAgICAgICAgICB8ICB8ICAgIFByb2ZpbGUgTiAgIHwgIHwgICAgICAgICAg ICAgfCB8ICAgICAgICAgICBeICAgIHwgfA0KPiAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAg ICAgICAgICAgIHwgIHwgQ29udHJvbCBQb3J0fCArLS0tLS0tLS0tLS18LS0tLSsgfA0KPiAgICAg ICAgICAgICAgICAgICB8ICArLS0tLS0tLXwtLS0tLS0tLSsgIHw8PT09PT09PT09PT0+fCAgICAg ICAgICAgICB8ICAgICAgfA0KPiAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAg ICAgIHwgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS18LS0tLS0tKw0KPiAgICAgICAgICAgICAg ICAgICArLS0tLS0tLS0tLXwtLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICB8 DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4NCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tcnRlX2R3YV9k ZXZfYXR0YWNoKCkNCj4NCj4NCj4gRGF0YXBsYW5lIFdvcmtsb2FkIEFjY2VsZXJhdG9yOiBJdCBp cyBhbiBhYnN0cmFjdCBtb2RlbC4gVGhlIG1vZGVsIGlzDQo+IGNhcGFibGUgb2Ygb2ZmbG9hZGlu ZyB0aGUgZGF0YXBsYW5lIHdvcmtsb2FkIGZyb20gYXBwbGljYXRpb24gdmlhDQo+IERQREsgQVBJ IG92ZXIgaG9zdCBhbmQgY29udHJvbCBwb3J0cyBvZiBhIERXQSBkZXZpY2UuDQo+IERhdGFwbGFu ZSBXb3JrbG9hZCBBY2NlbGVyYXRvcihEV0EpIHR5cGljYWxseSBjb250YWlucyBhIHNldCBvZiBD UFVzLA0KPiBOZXR3b3JrIGNvbnRyb2xsZXJzLCBhbmQgcHJvZ3JhbW1hYmxlIGRhdGEgYWNjZWxl cmF0aW9uIGVuZ2luZXMgZm9yDQo+IHBhY2tldCBwcm9jZXNzaW5nLCBjcnlwdG9ncmFwaHksIHJl Z2V4IGVuZ2luZXMsIGJhc2UtYmFuZCBwcm9jZXNzaW5nLCBldGMuDQo+IFRoaXMgYWxsb3dzIERX QSB0byBvZmZsb2FkIGNvbXB1dGUvcGFja2V0IHByb2Nlc3NpbmcvYmFzZS1iYW5kL2NyeXB0b2dy YXBoeS1yZWxhdGVkDQo+IHdvcmtsb2FkIGZyb20gdGhlIGhvc3QgQ1BVIHRvIHNhdmUgY29zdCBh bmQgcG93ZXIuIEFsc28sDQo+IGVuYWJsZSBzY2FsaW5nIHRoZSB3b3JrbG9hZCBieSBhZGRpbmcg RFdBcyB0byB0aGUgaG9zdCBDUFUgYXMgbmVlZGVkLg0KPg0KPiBEV0EgZGV2aWNlOiBBIERXQSBj YW4gYmUgc2xpY2VkIHRvIE4gbnVtYmVyIG9mIERQREsgRFdBIGRldmljZShzKQ0KPiBiYXNlZCBv biB0aGUgcmVzb3VyY2VzIGF2YWlsYWJsZSBpbiBEV0EuDQo+IFRoZSBEUERLIEFQSSBpbnRlcmZh Y2Ugb3BlcmF0ZXMgb24gdGhlIERQREsgRFdBIGRldmljZS4NCj4gSXQgaXMgYSByZXByZXNlbnRh dGlvbiBvZiBhIHNldCBvZiByZXNvdXJjZXMgaW4gRFdBLg0KPg0KPiBUTFY6IFRMViAodGFnLWxl bmd0aC12YWx1ZSkgZW5jb2RlZCBkYXRhIHN0cmVhbSBjb250YWluIHRhZyBhcw0KPiBtZXNzYWdl IElELCBmb2xsb3dlZCBieSBtZXNzYWdlIGxlbmd0aCwgYW5kIGZpbmFsbHkgdGhlIG1lc3NhZ2Ug cGF5bG9hZC4NCj4gVGhlIDMyYml0IG1lc3NhZ2UgSUQgY29uc2lzdHMgb2YgdHdvIHBhcnRzLCAx NmJpdCBUYWcgYW5kIDE2Yml0IFN1YnRhZy4NCj4gVGhlIHRhZyByZXByZXNlbnRzIElEIG9mIHRo ZSBncm91cCBvZiB0aGUgc2ltaWxhciBtZXNzYWdlLA0KPiB3aGVyZWFzLCBzdWJ0YWcgcmVwcmVz ZW50cyBhIG1lc3NhZ2UgdGFnIElEIHVuZGVyIHRoZSBncm91cC4NCj4NCj4gQ29udHJvbCBQb3J0 OiBVc2VkIGZvciB0cmFuc2ZlcnJpbmcgdGhlIGNvbnRyb2wgcGxhbmUgVExWcy4gRXZlcnkgRFBE Sw0KPiBEV0EgZGV2aWNlIG11c3QgaGF2ZSBhIGNvbnRyb2wgcG9ydC4gT25seSBvbmUgb3V0c3Rh bmRpbmcgVExWIGNhbiBiZQ0KPiBwcm9jZXNzZWQgdmlhIHRoaXMgcG9ydCBieSBhIHNpbmdsZSBE V0EgZGV2aWNlLiBUaGlzIG1ha2VzIHRoZSBjb250cm9sDQo+IHBvcnQgc3VpdGFibGUgZm9yIHRo ZSBjb250cm9sIHBsYW5lLg0KPg0KPiBIb3N0IFBvcnQ6IFVzZWQgZm9yIHRyYW5zZmVycmluZyB0 aGUgdXNlciBwbGFuZSBUTFZzLg0KPiBFdGhlcm5ldCwgUENJZSBETUEsIFNoYXJlZCBNZW1vcnks IGV0Yy5hcmUgdGhlIGV4YW1wbGUgb2YNCj4gZGlmZmVyZW50IHRyYW5zcG9ydCBtZWNoYW5pc21z IGFic3RyYWN0ZWQgdW5kZXIgdGhlIGhvc3QgcG9ydC4NCj4gVGhlIHByaW1hcnkgcHVycG9zZSBv ZiBob3N0IHBvcnQgdG8gZGVjb3VwbGUgdGhlIHVzZXIgcGxhbmUgVExWcyB3aXRoDQo+IHVuZGVy bmVhdGggdHJhbnNwb3J0IG1lY2hhbmlzbSBkaWZmZXJlbmNlcy4NCj4gVW5saWtlIGNvbnRyb2wg cG9ydCwgbW9yZSB0aGFuIG9uZSBvdXRzdGFuZGluZyBUTFZzIGNhbiBiZSBwcm9jZXNzZWQgYnkN Cj4gYSBzaW5nbGUgRFdBIGRldmljZSB2aWEgdGhpcyBwb3J0Lg0KPiBUaGlzIG1ha2VzLCB0aGUg aG9zdCBwb3J0IHRyYW5zZmVyIHRvIGJlIGluIGFzeW5jaHJvbm91cyBuYXR1cmUsDQo+IHRvIHN1 cHBvcnQgbGFyZ2Ugdm9sdW1lcyBhbmQgbGVzcyBsYXRlbmN5IHVzZXIgcGxhbmUgdHJhZmZpYy4N Cj4NCj4gRFdBIFBvcnQ6IFVzZWQgZm9yIHRyYW5zZmVycmluZyBkYXRhIGJldHdlZW4gdGhlIGV4 dGVybmFsIHNvdXJjZSBhbmQgRFdBLg0KPiBFdGhlcm5ldCwgZUNQUkkgYXJlIGV4YW1wbGVzIG9m IERXQSBwb3J0cy4gVW5saWtlIGhvc3QgcG9ydHMsDQo+IHRoZSBob3N0IENQVSBpcyBub3QgaW52 b2x2ZWQgaW4gdHJhbnNmZXJyaW5nIHRoZSBkYXRhIHRvL2Zyb20gRFdBIHBvcnRzLg0KPiBUaGVz ZSBwb3J0cyB0eXBpY2FsbHkgY29ubmVjdGVkIHRvIHRoZSBOZXR3b3JrIGNvbnRyb2xsZXIgaW5z aWRlIHRoZQ0KPiBEV0EgdG8gdHJhbnNmZXIgdGhlIHRyYWZmaWMgZnJvbSB0aGUgZXh0ZXJuYWwg c291cmNlLg0KPg0KPiBUTFYgZGlyZWN0aW9uOiBgSG9zdCB0byBEV0FgIGFuZCBgRFdBIHRvIEhv c3RgIGFyZSB0aGUgZGlyZWN0aW9ucw0KPiBvZiBUTFYgbWVzc2FnZXMuIFRoZSBmb3JtZXIgb25l IGlzIHNwZWNpZmllZCBhcyBIMkQsIGFuZCB0aGUgbGF0ZXIgb25lIGlzDQo+IHNwZWNpZmllZCBh cyBEMkguIFRoZSBIMkQgY29udHJvbCBUTFZzLCB1c2VkIGZvciByZXF1ZXN0aW5nIERXQSB0byBw ZXJmb3JtDQo+IHNwZWNpZmljIGFjdGlvbiBhbmQgRDJIIGNvbnRyb2wgVExWcyBhcmUgdXNlZCB0 byByZXNwb25kIHRvIHRoZSByZXF1ZXN0ZWQNCj4gYWN0aW9ucy4gVGhlIEgyRCB1c2VyIHBsYW5l IG1lc3NhZ2VzIGFyZSB1c2VkIGZvciB0cmFuc2ZlcnJpbmcgZGF0YSBmcm9tIHRoZQ0KPiBob3N0 IHRvIHRoZSBEV0EuIFRoZSBEMkggdXNlciBwbGFuZSBtZXNzYWdlcyBhcmUgdXNlZCBmb3IgdHJh bnNmZXJyaW5nDQo+IGRhdGEgZnJvbSB0aGUgRFdBIHRvIHRoZSBob3N0Lg0KPg0KPiBEV0EgZGV2 aWNlIHN0YXRlczogRm9sbG93aW5nIGFyZSB0aGUgZGlmZmVyZW50IHN0YXRlcyBvZiBhIERXQSBk ZXZpY2UuDQo+IC0gUkVBRFk6IERXQSBEZXZpY2UgaXMgcmVhZHkgdG8gYXR0YWNoIHRoZSBwcm9m aWxlLg0KPiBTZWUgcnRlX2R3YV9kZXZfZGlzY19wcm9maWxlcygpIEFQSSB0byBkaXNjb3ZlciB0 aGUgcHJvZmlsZS4NCj4gLSBBVFRBQ0hFRDogRFdBIERldmljZSBhdHRhY2hlZCB0byBvbmUgb3Ig bW9yZSBwcm9maWxlcy4NCj4gU2VlIHJ0ZV9kd2FfZGV2X2F0dGFjaCgpIEFQSSB0byBhdHRhY2gg dGhlIHByb2ZpbGUocykuDQo+IC0gU1RPUFBFRDogUHJvZmlsZSBpcyBpbiB0aGUgc3RvcCBzdGF0 ZS4NCj4gVExWIHR5cGUgYFRZUEVfQVRUQUNIRURgYW5kIGBUWVBFX1NUT1BQRURgIG1lc3NhZ2Vz IGFyZSB2YWxpZCBpbiB0aGlzIHN0YXRlLg0KPiBBZnRlciBydGVfZHdhX2Rldl9hdHRhY2goKSBv ciBleHBsaWNpdGx5IGludm9raW5nIHRoZSBydGVfZHdhX3N0b3AoKSBBUEkNCj4gYnJpbmdzIGRl dmljZSB0byB0aGlzIHN0YXRlLg0KPiAtIFJVTk5JTkc6IEludm9raW5nIHJ0ZV9kd2Ffc3RhcnQo KSBicmluZ3MgdGhlIGRldmljZSB0byB0aGlzIHN0YXRlLg0KPiBUTFYgdHlwZSBgVFlQRV9TVEFS VEVEYCBhbmQgYFRZUEVfVVNFUl9QTEFORWAgYXJlIHZhbGlkIGluIHRoaXMgc3RhdGUuDQo+IC0g REVUQUNIRUQ6IEludm9raW5nIHJ0ZV9kd2FfZGV2X2RldGFjaCgpIGJyaW5ncyB0aGUgZGV2aWNl IHRvIHRoaXMgc3RhdGUuDQo+IFRoZSBkZXZpY2UgYW5kIHByb2ZpbGUgbXVzdCBiZSBpbiB0aGUg U1RPUFBFRCBzdGF0ZSBwcmlvciB0bw0KPiBpbnZva2luZyB0aGUgcnRlX2R3YV9kZXZfZGV0YWNo KCkuDQo+IC0gQ0xPU0VEOiBDbG9zZWQgYSBzdG9wcGVkL2RldGFjaGVkIERXQSBkZXZpY2UuVGhl IGRldmljZSBjYW5ub3QgYmUgcmVzdGFydGVkIS4NCj4gSW52b2tpbmcgcnRlX2R3YV9kZXZfY2xv c2UoKSBicmluZ3MgdGhlIGRldmljZSB0byB0aGlzIHN0YXRlLg0KPg0KPiBUTFYgdHlwZXM6IEZv bGxvd2luZyBhcmUgdGhlIGRpZmZlcmVudCBUTFYgdHlwZXMNCj4gLSBUWVBFX0FUVEFDSEVEOiBW YWxpZCB3aGVuIHRoZSBkZXZpY2UgaXMgaW4gYEFUVEFDSEVEYCwgYFNUT1BQRURgIGFuZCBgUlVO TklOR2Agc3RhdGUuDQo+IC0gVFlQRV9TVE9QUEVEOiBWYWxpZCB3aGVuIHRoZSBkZXZpY2UgaXMg aW4gYFNUT1BQRURgIHN0YXRlLg0KPiAtIFRZUEVfU1RBUlRFRDogVmFsaWQgd2hlbiB0aGUgZGV2 aWNlIGlzIGluIGBSVU5OSU5HYCBzdGF0ZS4NCj4gLSBUWVBFX1VTRVJfUExBTkU6IFZhbGlkIHdo ZW4gdGhlIGRldmljZSBpcyBpbiBgUlVOTklOR2Agc3RhdGUgYW5kDQo+IHVzZWQgdG8gdHJhbnNm ZXIgb25seSB1c2VyIHBsYW5lIHRyYWZmaWMuDQo+DQo+IFByb2ZpbGU6IFNwZWNpZmllcyBhIHdv cmtsb2FkIHRoYXQgZGF0YXBsYW5lIHdvcmtsb2FkIGFjY2VsZXJhdG9yDQo+IHByb2Nlc3Mgb24g YmVoYWxmIG9mIGEgRFBESyBhcHBsaWNhdGlvbiB0aHJvdWdoIGEgRFBESyBEV0EgZGV2aWNlLg0K PiBBIHByb2ZpbGUgaXMgZXhwcmVzc2VkIGFzIGEgc2V0IG9mIFRMViBtZXNzYWdlcyBmb3IgY29u dHJvbCBwbGFuZSBhbmQgdXNlciBwbGFuZQ0KPiBmdW5jdGlvbnMuIEVhY2ggVExWIG1lc3NhZ2Ug bXVzdCBoYXZlIFRhZywgU3ViVGFnLCBEaXJlY3Rpb24sIFR5cGUsIFBheWxvYWQgYXR0cmlidXRl cy4NCj4NCj4gUHJvZ3JhbW1pbmcgbW9kZWw6IFR5cGljYWwgYXBwbGljYXRpb24gcHJvZ3JhbW1p bmcgc2VxdWVuY2UgaXMgYXMgZm9sbG93cywNCj4gMSkgSW4gdGhlIEVBTCBpbml0aWFsaXphdGlv biBwaGFzZSwgdGhlIERXQSBkZXZpY2VzIHNoYWxsIGJlIHByb2JlZCwNCj4gICAgIHRoZSBhcHBs aWNhdGlvbiBjYW4gcXVlcnkgdGhlIG51bWJlciBvZiBhdmFpbGFibGUgRFdBIGRldmljZXMgd2l0 aA0KPiAgICAgcnRlX2R3YV9kZXZfY291bnQoKSBBUEkuDQo+IDIpIEFwcGxpY2F0aW9uIGRpc2Nv dmVycyB0aGUgYXZhaWxhYmxlIHByb2ZpbGUocykgaW4gYSBEV0EgZGV2aWNlIHVzaW5nDQo+ICAg ICBydGVfZHdhX2Rldl9kaXNjX3Byb2ZpbGVzKCkgQVBJLg0KPiAzKSBBcHBsaWNhdGlvbiBhdHRh Y2hlcyBvbmUgb3IgbW9yZSBwcm9maWxlKHMpIHRvIGEgRFdBIGRldmljZSB1c2luZw0KPiAgICAg cnRlX2R3YV9kZXZfYXR0YWNoKCkuDQo+IDQpIE9uY2UgdGhlIHByb2ZpbGUgaXMgYXR0YWNoZWQs IFRoZSBkZXZpY2Ugc2hhbGwgYmUgaW4gdGhlIFNUT1BQRUQgc3RhdGUuDQo+ICAgICBDb25maWd1 cmUgdGhlIHByb2ZpbGUocykgd2l0aCBgVFlQRV9BVFRBQ0hFRGBhbmQgYFRZUEVfU1RPUFBFRGAN Cj4gICAgIHR5cGUgVExWcyB1c2luZyBydGVfZHdhX2N0cmxfb3AoKSBBUEkuDQo+IDUpIE9uY2Ug dGhlIHByb2ZpbGUgaXMgY29uZmlndXJlZCwgbW92ZSB0aGUgcHJvZmlsZSB0byB0aGUgYFJVTk5J TkdgIHN0YXRlDQo+ICAgICBieSBpbnZva2luZyBydGVfZHdhX3N0YXJ0KCkgQVBJLg0KPiA2KSBP bmNlIHRoZSBwcm9maWxlIGlzIGluIHJ1bm5pbmcgc3RhdGUgYW5kIGlmIGl0IGhhcyB1c2VyIHBs YW5lIFRMViwNCj4gICAgIHRyYW5zZmVyIHRob3NlIFRMVnMgdXNpbmcgcnRlX2R3YV9wb3J0X2hv c3RfKCkgQVBJIGJhc2VkIG9uIHRoZSBhdmFpbGFibGUNCj4gICAgIGhvc3QgcG9ydCBmb3IgdGhl IGdpdmVuIHByb2ZpbGUgYXR0YWNoZWQuDQo+IDcpIEFwcGxpY2F0aW9uIGNhbiBjaGFuZ2UgdGhl IGR5bmFtaWMgY29uZmlndXJhdGlvbiBhc3BlY3RzIGluDQo+ICAgICBgUlVOTklOR2Agc3RhdGUg dXNpbmcgcnRlX2R3YV9jdHJsX29wKCkgQVBJIGJ5IGlzc3VpbmcgYFRZUEVfU1RBUlRFRGAgdHlw ZQ0KPiAgICAgb2YgVExWIG1lc3NhZ2VzLg0KPiA4KSBGaW5hbGx5LCB1c2UgcnRlX2R3YV9zdG9w KCksIHJ0ZV9kd2FfZGV2X2RldGFjaCgpLCBydGVfZHdhX2Rldl9jbG9zZSgpDQo+ICAgICBzZXF1 ZW5jZSBmb3IgdGVhci1kb3duLg0KPg0KPg0KPiBMM0ZXRCBwcm9maWxlDQo+IC0tLS0tLS0tLS0t LS0NCj4NCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tPi0t WzFdLS0tLS0tLS0tLS0tLS0rDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiAgICAgICAgICAgICAgICAgICArLS0t LS0tLS0tLS18LS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8 DQo+ICAgICAgICAgICAgICAgICAgIHwgICstLS0tLS0tLXwtLS0tLS0tKyAgfCAgICAgICAgICAg ICAgICAgICAgICAgfA0KPiAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgIHwg IHwgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gICAgICAgICAgICAgICAgICAgfCAgfCBMM0ZX RCBQcm9maWxlICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICB8DQo+ICAgICAgICBcICAgICAg ICAgIHwgIHwgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgfA0KPiAg ICA8PT09PVw9PT09PT09PT58ICArLS0tLS0tLS0tLS0tLS0tLSsgIHwgICAgICAgICAgICAgICAg ICAgICAgIHwNCj4gICAgICBEV0EgXFBvcnQwICAgfCAgICAgTG9va3VwIFRhYmxlICAgICB8ICAg ICAgICAgICAgICstLS0tLS0tLS18LS0tLS0tLS0tLSsNCj4gICAgICAgICAgIFwgICAgICAgfCAg Ky0tLS0tLS0tLS0tLS0tLS0rICB8ICAgICAgICAgICAgIHwgRFBESyBEV0F8RGV2aWNlWzBdIHwN Cj4gICAgICAgICAgICBcICAgICAgfCAgfCBJUCAgICB8IERwb3J0ICB8ICB8ICBIb3N0IFBvcnQg IHwgKy0tLS0tLS18LS0tLS0tLS0rIHwNCj4gICAgICAgICAgICAgXCAgICAgfCAgKy0tLS0tLS0t LS0tLS0tLS0rICB8PD09PT09PT09PT09PnwgfCAgICAgICB8ICAgICAgICB8IHwNCj4gICAgICAg ICAgICAgICt+WzNdfn5+fH5+fn5+fn58fn5+fn5+fn58fn5+fn5+fn5+fn5+fn5+fn4+fC0+TDNG V0QgUHJvZmlsZSB8IHwNCj4gICAgPD09PT09PT09PT09PT0+fCAgKy0tLS0tLS0tLS0tLS0tLS0r ICB8ICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICB8IHwNCj4gICAgICBEV0EgUG9ydDEg ICAgfCAgfCAgICAgICB8ICAgICAgICB8ICB8IENvbnRyb2wgUG9ydHwgKy18LS0tLS0tLS0tfC0t LS0rIHwNCj4gICAgICAgICAgICAgICAgICAgfCAgKy0tLS0tLS0tLS0tLS0tLS0rICB8PD09PT09 PT09PT09PnwgICB8ICAgICAgICAgfCAgICAgIHwNCj4gICAgICB+fn4+fn5bNV1+fn5+fH5+fH5+ fisgICB8ICAgICAgICB8ICB8ICAgICAgICAgICAgICstLS18LS0tLS0tLS0tfC0tLS0tLSsNCj4g ICAgICAgICAgICAgICAgICAgfCAgKy0tLSstLS0tLS0tLS0tLS0rICB8ICAgICAgICAgICAgICAg ICB8ICAgICAgICAgfA0KPiAgICAgIH5+fjx+fn5+fn5+fn58fn58fn5+KyAgIHwgICAgICAgIHw8 LXwtLS0tLS1bMl0tLS0tLS0tLSsgICAgICAgICB8DQo+ICAgICAgICAgICAgICAgICAgIHwgICst LS0tLS0tLS0tLS0tLS0tKzwtfC0tLS0tLVs0XS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gICAgICAg ICAgICAgICAgICAgfCAgICBEYXRhcGxhbmUgICAgICAgICB8DQo+ICAgIDw9PT09PT09PT09PT09 PnwgICAgV29ya2xvYWQgICAgICAgICAgfA0KPiAgICAgIERXQSBQb3J0TiAgICB8ICAgIEFjY2Vs ZXJhdG9yICAgICAgIHwNCj4gICAgICAgICAgICAgICAgICAgfCAgICAoSFcvRlcvU1cpICAgICAg ICB8DQo+ICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPg0KPg0K PiBMM0ZXRCBwcm9maWxlIG9mZmxvYWRzIExheWVyLTMgZm9yd2FyZGluZyBiZXR3ZWVuIHRoZSBE V0EgRXRoZXJuZXQgcG9ydHMuDQo+DQo+IFRoZSBhYm92ZSBkaWFncmFtIGRlcGljdHMgdGhlIHBy b2ZpbGUgYW5kIGFwcGxpY2F0aW9uIHByb2dyYW1taW5nIHNlcXVlbmNlLg0KPiAxKSBEV0EgZGV2 aWNlIGF0dGFjaGVzIHRoZSBMM0ZXRCBwcm9maWxlIHVzaW5nIHJ0ZV9kd2FfZGV2X2F0dGFjaCgp Lg0KPiAyKSBDb25maWd1cmUgdGhlIEwzRldEIHByb2ZpbGU6DQo+IGEpIFRoZSBhcHBsaWNhdGlv biByZXF1ZXN0cyBMM0ZXRCBwcm9maWxlIGNhcGFiaWxpdGllcyBvZiB0aGUgRFdBDQo+ICAgICBi eSB1c2luZyBSVEVfRFdBX1NUQUdfUFJPRklMRV9MM0ZXRF9IMkRfSU5GTywgT24gcmVzcG9uc2Us DQo+ICAgICB0aGUgUlRFX0RXQV9TVEFHX1BST0ZJTEVfTDNGV0RfRDJIX0lORk8gcmV0dXJucyB0 aGUgbG9va3VwIG1vZGVzDQo+ICAgICBzdXBwb3J0ZWQsIG1heCBydWxlcyBzdXBwb3J0ZWQsIGFu ZCBhdmFpbGFibGUgaG9zdCBwb3J0cyBmb3IgdGhpcyBwcm9maWxlLgkNCj4gYikgVGhlIGFwcGxp Y2F0aW9uIGNvbmZpZ3VyZXMgYSBzZXQgb2YgRFdBIHBvcnRzIHRvIHVzZSBhDQo+ICAgICBsb29r dXAgbW9kZShFTSwgTFBNLCBvciBGSUIpIHZpYSBSVEVfRFdBX1NUQUdfUFJPRklMRV9MM0ZXRF9I MkRfQ09ORklHLg0KPiBjKSBUaGUgYXBwbGljYXRpb24gY29uZmlndXJlcyBhIHZhbGlkIGhvc3Qg cG9ydCB0byByZWNlaXZlIGV4Y2VwdGlvbiBwYWNrZXRzLg0KPiAzKSBUaGUgZXhjZXB0aW9uIHRo YXQgaXMgbm90IG1hdGNoaW5nIGZvcndhcmRpbmcgdGFibGUgZW50cnkgY29tZXMgYXMNCj4gICAg IFJURV9EV0FfU1RBR19QUk9GSUxFX0wzRldEX0QySF9FWENFUFRJT05fUEFDS0VUUyBUTFYgdG8g aG9zdC4gRFdBIHN0b3JlcyB0aGUgZXhjZXB0aW9uDQo+ICAgICBwYWNrZXQgc2VuZCBiYWNrIGRl c3RpbmF0aW9uIHBvcnRzIGFmdGVyIGNvbXBsZXRpbmcgc3RlcCAoNCkuDQo+IDQpIFBhcnNlIHRo ZSBleGNlcHRpb24gcGFja2V0IGFuZCBhZGQgcnVsZXMgdG8gdGhlIEZXRCB0YWJsZSB1c2luZw0K PiAgICAgUlRFX0RXQV9TVEFHX1BST0ZJTEVfTDNGV0RfSDJEX0xPT0tVUF9BREQuIElmIHRoZSBh cHBsaWNhdGlvbiBrbm93cyB0aGUgcnVsZXMgYmVmb3JlaGFuZCwNCj4gICAgIGl0IGNhbiBhZGQg dGhlIHJ1bGVzIGluIHN0ZXAgMi4NCj4gNSkgV2hlbiBEV0EgcG9ydHMgcmVjZWl2ZSB0aGUgbWF0 Y2hpbmcgZmxvd3MgaW4gdGhlIGxvb2t1cCB0YWJsZSwgRFdBIGZvcndhcmRzDQo+ICAgICB0byBE V0EgRXRoZXJuZXQgcG9ydHMgd2l0aG91dCBob3N0IENQVSBpbnRlcnZlbnRpb24uDQo+DQo+DQo+ IEV4YW1wbGUgYXBwbGljYXRpb24gdXNhZ2Ugd2l0aCBMM0ZXRCBwcm9maWxlDQo+IC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IFRoaXMgZXhhbXBsZSBhcHBs aWNhdGlvbiBpcyB0byBkZW1vbnN0cmF0ZSB0aGUgcHJvZ3JhbW1pbmcgbW9kZWwgb2YgRFdBIGxp YnJhcnkuDQo+IFRoaXMgZXhhbXBsZSBvbWl0cyB0aGUgZXJyb3IgY2hlY2tzIHRvIHNpbXBseSB0 aGUgYXBwbGljYXRpb24uDQo+DQo+IHZvaWQNCj4gZHdhX3Byb2ZpbGVfbDNmd2RfYWRkX3J1bGUo cnRlX2R3YV9vYmpfdCBvYmogb2JqLCBzdHJ1Y3QgcnRlX21idWYgKm1idWYpDQo+IHsNCj4gCXN0 cnVjdCBydGVfZHdhX3Byb2ZpbGVfbDNmd2RfaDJkX2xvb2t1cF9hZGQgKmxvb2t1cDsNCj4gCXN0 cnVjdCBydGVfZHdhX3RsdiAqaDJkLCAqZDJoOw0KPiAJc3RydWN0IHJ0ZV9ldGhlcl9oZHIgKmV0 aF9oZHI7DQo+IAlzdHJ1Y3QgcnRlX2lwdjRfaGRyICppcHY0X2hkcjsNCj4gCXVpbnQzMl90IGlk Ow0KPiAJc2l6ZV90IGxlbjsNCj4NCj4gCWlkID0gUlRFX0RXQV9UTFZfTUtfSUQoUFJPRklMRV9M M0ZXRCwgSDJEX0xPT0tVUF9BREQpOw0KPiAJbGVuID0gc2l6ZW9mKHN0cnVjdCBydGVfZHdhX3By b2ZpbGVfbDNmd2RfaDJkX2NvbmZpZyk7DQo+IAloMmQgPSBtYWxsb2MoUlRFX0RXQV9UTFZfSERS X1NaICsgbGVuKTsNCj4NCj4gCWxvb2t1cCA9IGgyZC0+bXNnOw0KPiAgICAgICAgICAvKiBTaW1w bHkgaGFyZGNvZGUgdG8gSVB2NCBpbnN0ZWFkIG9mIGxvb2tpbmcgZm9yIFBhY2tldCB0eXBlIHRv IHNpbXBsaWZ5IGV4YW1wbGUgKi8NCj4gCWxvb2t1cC0+cnVsZV90eXBlID0gUlRFX0RXQV9QUk9G SUxFX0wzRldEX1JVTEVfVFlQRV9JUFY0Ow0KPiAJbG9va3VwLT52NF9ydWxlLnByZWZpeC5kZXB0 aCA9IDI0Ow0KPg0KPiAJZXRoX2hkciA9IHJ0ZV9wa3RtYnVmX210b2QobWJ1Ziwgc3RydWN0IHJ0 ZV9ldGhlcl9oZHIgKik7DQo+IAlpcHY0X2hkciA9IChzdHJ1Y3QgcnRlX2lwdjRfaGRyICopKGV0 aF9oZHIgKyAxKTsNCj4gCWxvb2t1cC0+djRfcnVsZS5wcmVmaXguaXBfZHN0ID0gcnRlX2JlX3Rv X2NwdV8zMihpcHY0X2hkci0+ZHN0X2FkZHIpOw0KPiAJbG9va3VwLT5ldGhfcG9ydF9kc3QgPSBt YnVmLT5wb3J0Ow0KPg0KPiAJcnRlX2R3YV90bHZfZmlsbChoMmQsIGlkLCBsZW4sIGgyZCk7DQo+ IAlkMmggPSBydGVfZHdhX2N0cmxfb3Aob2JqLCBoMmgpOw0KPiAJZnJlZShoMmQpOw0KPiAJZnJl ZShkMmgpOw0KPiB9DQo+DQo+IHZvaWQNCj4gZHdhX3Byb2ZpbGVfbDNmd2RfcG9ydF9ob3N0X2V0 aGVybmV0X3dvcmtlcihydGVfZHdhX29ial90IG9iaiwgc3RydWN0IGFwcF9jdHggKmN0eCkNCj4g ew0KPiAJc3RydWN0IHJ0ZV9kd2FfcHJvZmlsZV9sM2Z3ZF9kMmhfZXhjZXB0aW9uX3BrdHMgKm1z ZzsNCj4gCXN0cnVjdCBydGVfZHdhX3RsdiAqdGx2Ow0KPiAJdWludDE2X3QgaSwgcmMsIG5iX3Rs dnM7DQo+IAlzdHJ1Y3QgcnRlX21idWYgKm1idWY7DQo+DQo+IAl3aGlsZSAoIWN0eC0+ZG9uZSkg ew0KPiAJCXJjID0gcnRlX2R3YV9wb3J0X2hvc3RfZXRoZXJuZXRfcngob2JqLCAwLCAmdGx2LCAx KTsNCj4gCQlpZiAoIXJjKQ0KPiAJCQljb250aW51ZTsNCj4NCj4gCQkvKiBTaW5jZSBMM0ZXRCBw cm9maWxlIGhhcyBvbmx5IG9uZSBVc2VyIFBsYW5lIFRMViwgTWVzc2FnZSBtdXN0IGJlDQo+IAkg ICAgICAgICAqIFJURV9EV0FfU1RBR19QUk9GSUxFX0wzRldEX0QySF9FWENFUFRJT05fUEFDS0VU UyBtZXNzYWdlDQo+ICAgICAgICAgIAkgKi8NCj4gCQltc2cgPSAoc3RydWN0IHJ0ZV9kd2FfcHJv ZmlsZV9sM2Z3ZF9kMmhfZXhjZXB0aW9uX3BrdHMgKil0bHYtPm1zZzsNCj4gCQlmb3IgKGkgPSAw OyBpIDwgbXNnLT5uYl9wa3RzOyBpKyspIHsNCj4gCQkJCW1idWYgPSBtc2ctPnBrdHNbaV07DQo+ IAkJCQkvKiBHb3QgYSBleGNlcHRpb24gcGt0IGZyb20gRFdBLCBoYW5kbGUgaXQgYnkgYWRkaW5n IGFzIG5ldyBydWxlIGluDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGxv b2t1cCB0YWJsZSBpbiBEV0ENCj4gCQkJCSAqLyAJCQkJDQo+IAkJCQlkd2FfcHJvZmlsZV9sM2Z3 ZF9hZGRfcnVsZShvYmosIG1idWYpOw0KPiAJCQkJLyogRnJlZSB0aGUgbWJ1ZiB0byBwb29sICov DQo+IAkJCQlydGVfcGt0bWJ1Zl9mcmVlKG1idWYpOw0KPiAJCX0NCj4gCQkNCj4gCQkvKiBEb25l IHdpdGggVExWIG1idWYgY29udGFpbmVyLCBmcmVlIGl0IGJhY2sgKi8NCj4gCQlydGVfbWVtcG9v bF9vcHNfZW5xdWV1ZV9idWxrKGN0eC0+dGx2X3Bvb2wsIHRsdiwgMSk7DQo+IH0NCj4NCj4gYm9v bA0KPiBkd2FfcG9ydF9ob3N0X2V0aGVybmV0X2NvbmZpZyhydGVfZHdhX29ial90IG9iaiwgc3Ry dWN0IGFwcF9jdHggKmN0eCkNCj4gew0KPiAJc3RydWN0IHJ0ZV9kd2FfdGx2IGluZm9faDJkLCAq aW5mb19kMmgsICpoMmQgPSBOVUxMLCAqZDJoOw0KPiAJc3RydWN0IHJ0ZV9kd2FfcG9ydF9ob3N0 X2V0aGVybmV0X2QyaF9pbmZvICppbmZvOw0KPiAJaW50IHRsdl9wb29sX2VsZW1lbnRfc3o7DQo+ IAlib29sIHJjID0gZmFsc2U7DQo+IAlzaXplX3QgbGVuOw0KPg0KPiAJLyogR2V0IHRoZSBFdGhl cm5ldCBob3N0IHBvcnQgaW5mbyAqLw0KPiAJaWQgPSBSVEVfRFdBX1RMVl9NS19JRChQT1JUX0hP U1RfRVRIRVJORVQsIEgyRF9JTkZPKTsNCj4gCXJ0ZV9kd2FfdGx2X2ZpbGwoJmluZm9faDJkLCBp ZCwgMCwgTlVMTCk7DQo+IAlpbmZvX2QyaCA9IHJ0ZV9kd2FfY3RybF9vcChvYmosICZpbmZvX2gy ZCkNCj4NCj4gCWluZm8gPSBydGVfZHdhX3Rsdl9kMmhfdG9fbXNnKGluZm9fZDJoKTsNCj4gCWlm IChpbmZvID09IE5VTEwpDQo+IAkJZ290byBmYWlsOw0KPiAJLyogTmVlZCBtaW4gb25lIFJ4IHF1 ZXVlIHRvIFJlY2VpdmUgZXhjZXB0aW9uIHRyYWZmaWMgKi8NCj4gCWlmIChpbmZvLT5uYl9yeF9x dWV1ZXMgPT0gMCkNCj4gCQlnb3RvIGZhaWw7DQo+IAkvKiBEb25lIHdpdGggbWVzc2FnZSBmcm9t IERXQS4gRnJlZSBiYWNrIHRvIGltcGxlbWVudGF0aW9uICovDQo+IAlmcmVlKG9iaiwgaW5mb19k MmgpOw0KPg0KPiAJLyogQWxsb2NhdGUgZXhjZXB0aW9uIHBhY2tldCBwb29sICovDQo+IAljdHgt PnBrdF9wb29sID0gcnRlX3BrdG1idWZfcG9vbF9jcmVhdGUoImV4Y2VwdGlvbiBwb29sIiwgLyog TmFtZSAqLw0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPnBrdF9wb29s X2RlcHRoLCAvKiBOdW1iZXIgb2YgZWxlbWVudHMqLw0KPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA1MTIsIC8qIENhY2hlIHNpemUqLw0KPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAwLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVEVfTUJV Rl9ERUZBVUxUX0JVRl9TSVpFLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj dHgtPnNvY2tldF9pZCkpOw0KPg0KPg0KPiAJdGx2X3Bvb2xfZWxlbWVudF9zeiA9IERXQV9FWENF UFRJT05fUEFDS0VUU19QS1RfQlVSU1RfTUFYX1NaICogc2l6ZW9mKHJ0ZV9tYnVmICopOw0KPiAJ dGx2X3Bvb2xfZWxlbWVudF9zeiAgKz0gc2l6ZW9mKHJ0ZV9kd2FfcHJvZmlsZV9sM2Z3ZF9kMmhf ZXhjZXB0aW9uX3BrdHMpOw0KPg0KPiAJLyogQWxsb2NhdGUgVExWIHBvb2wgZm9yIFJURV9EV0Ff U1RMVl9QUk9GSUxFX0wzRldEX0QySF9FWENFUFRJT05fUEFDS0VUU19QQUNLRVRTIHRhZyAqLw0K PiAJY3R4LT50bHZfcG9vbCA9IHJ0ZV9tZW1wb29sX2NyZWF0ZSgiVExWIHBvb2wiLCAvKiBtZW1w b29sIG5hbWUgKi8NCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT50bHZf cG9vbF9kZXB0aCwgLyogTnVtYmVyIG9mIGVsZW1lbnRzKi8NCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGx2X3Bvb2xfZWxlbWVudF9zeiwgLyogRWxlbWVudCBzaXplKi8NCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTEyLCAvKiBjYWNoZSBzaXplKi8NCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgTlVMTCwgTlVMTCwgTlVMTCAvKiBP YmogY29uc3RydWN0b3IgKi8sIE5VTEwsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGN0eC0+c29ja2V0X2lkLCAwIC8qIGZsYWdzICopOw0KPg0KPg0KPiAJLyogQ29uZmlndXJl IEV0aGVybmV0IGhvc3QgcG9ydCAqLw0KPiAJaWQgPSBSVEVfRFdBX1RMVl9NS19JRChQT1JUX0hP U1RfRVRIRVJORVQsIEgyRF9DT05GSUcpOw0KPiAJbGVuID0gc2l6ZW9mKHN0cnVjdCBydGVfZHdh X3BvcnRfaG9zdF9ldGhlcm5ldF9jb25maWcpOw0KPiAJaDJkID0gbWFsbG9jKFJURV9EV0FfVExW X0hEUl9TWiArIGxlbik7DQo+DQo+IAljZmcgPSBoMmQtPm1zZzsNCj4gCS8qIFVwZGF0ZSB0aGUg RXRoZXJuZXQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzICovDQo+IAljZmctPm5iX3J4X3F1ZXVl cyA9IDE7DQo+IAljZmctPm5iX3R4X3F1ZXVlcyA9IDA7DQo+IAljZmctPm1heF9idXJzdCA9IERX QV9FWENFUFRJT05fUEFDS0VUU19QS1RfQlVSU1RfTUFYX1NaOw0KPiAJY2ZnLT5wa3RfcG9vbCA9 IGN0eC0+cGt0X3Bvb2w7DQo+IAljZmctPnRsdl9wb29sID0gY3R4LT50bHZfcG9vbDsNCj4gCXJ0 ZV9kd2FfdGx2X2ZpbGwoaDJkLCBpZCwgbGVuLCBoMmQpOw0KPiAJZDJoID0gcnRlX2R3YV9jdHJs X29wKG9iaiwgaDJkKTsNCj4gCWlmIChkMmggPT0gTlVMTCkpDQo+IAkJZ290byBmYWlsOw0KPg0K PiAJZnJlZShoMmQpOw0KPg0KPiAJLyogQ29uZmlndXJlIFJ4IHF1ZXVlIDAgcmVjZWl2ZSBleHBl Y3RhdGlvbiB0cmFmZmljICovDQo+IAlpZCA9IFJURV9EV0FfVExWX01LX0lEKFBPUlRfSE9TVF9F VEhFUk5FVCwgSDJEX1FVRVVFX0NPTkZJRyk7DQo+IAlsZW4gPSBzaXplb2Yoc3RydWN0IHJ0ZV9k d2FfcG9ydF9ob3N0X2V0aGVybmV0X3F1ZXVlX2NvbmZpZyk7DQo+IAloMmQgPSBtYWxsb2MoUlRF X0RXQV9UTFZfSERSX1NaICsgbGVuKTsNCj4NCj4gCWNmZyA9IGgyZC0+bXNnOw0KPiAJY2ZnLT5p ZCA9IDA7IC8qIDB0aCBRdWV1ZSAqLw0KPiAJY2ZnLT5lbmFibGU9IDE7DQo+IAljZmctPmlzX3R4 ID0gMDsgLyogUnggcXVldWUgKi8NCj4gCWNmZy0+ZGVwdGggPSBjdHgtPnJ4X3F1ZXVlX2RlcHRo Ow0KPiAJcnRlX2R3YV90bHZfZmlsbChoMmQsIGlkLCBsZW4sIGgyZCk7DQo+IAlkMmggPSBydGVf ZHdhX2N0cmxfb3Aob2JqLCBoMmQpOw0KPiAJaWYgKGQyaCA9PSBOVUxMKSkNCj4gCQlnb3RvIGZh aWw7DQo+DQo+IAlmcmVlKGgyZCk7DQo+DQo+IAlyZXR1cm4gdHJ1ZTsNCj4gZmFpbDoNCj4gCWlm IChoMmQpDQo+IAkJZnJlZShoMmQpOw0KPiAJcmV0dXJuIHJjOw0KPiB9DQo+DQo+IGJvb2wNCj4g ZHdhX3Byb2ZpbGVfbDNmd2RfY29uZmlnKHJ0ZV9kd2Ffb2JqX3Qgb2JqLCBzdHJ1Y3QgYXBwX2N0 eCAqY3R4KQ0KPiB7DQo+IAlzdHJ1Y3QgcnRlX2R3YV90bHYgaW5mb19oMmQsICppbmZvX2QyaCA9 IE5VTEwsICpoMmQsICpkMmggPSBOVUxMOw0KPiAJc3RydWN0IHJ0ZV9kd2FfcG9ydF9kd2FfZXRo ZXJuZXRfZDJoX2luZm8gKmluZm87DQo+IAlzdHJ1Y3QgcnRlX2R3YV9wcm9maWxlX2wzZndkX2gy ZF9jb25maWcgKmNmZzsNCj4gCWJvb2wgcmMgPSBmYWxzZTsNCj4gICAJdWludDMyX3QgaWQ7DQo+ IAlzaXplX3QgbGVuOw0KPg0KPiAJLyogR2V0IERXQSBFdGhlcm5ldCBwb3J0IGluZm8gKi8NCj4g CWlkID0gUlRFX0RXQV9UTFZfTUtfSUQoUE9SVF9EV0FfRVRIRVJORVQsIEgyRF9JTkZPKTsNCj4g CXJ0ZV9kd2FfdGx2X2ZpbGwoJmluZm9faDJkLCBpZCwgMCwgTlVMTCk7DQo+IAlpbmZvX2QyaCA9 IHJ0ZV9kd2FfY3RybF9vcChvYmosICZpbmZvX2gyZCk7DQo+DQo+IAlpbmZvID0gcnRlX2R3YV90 bHZfZDJoX3RvX21zZyhpbmZvX2QyaCk7DQo+IAlpZiAoaW5mbyA9PSBOVUxMKQ0KPiAJCWdvdG8g ZmFpbDsNCj4gCQ0KPiAJLyogTm90IGZvdW5kIGFueSBEV0EgZXRoZXJuZXQgcG9ydHMgKi8NCj4g CWlmIChpbmZvLT5uYl9wb3J0cyA9PSAwKQ0KPiAJCWdvdG8gZmFpbDsNCj4NCj4gCS8qIENvbmZp Z3VyZSBMM0ZXRCBwcm9maWxlICovDQo+IAlpZCA9IFJURV9EV0FfVExWX01LX0lEKFBST0ZJTEVf TDNGV0QsIEgyRF9DT05GSUcpOw0KPiAJbGVuID0gc2l6ZW9mKHN0cnVjdCBydGVfZHdhX3Byb2Zp bGVfbDNmd2RfaDJkX2NvbmZpZykgKyAoc2l6ZW9mKHVpbnQxNl90KSAqIGluZm8tPm5iX3BvcnRz KTsNCj4gCWgyZCA9IG1hbGxvYyhSVEVfRFdBX1RMVl9IRFJfU1ogKyBsZW4pOw0KPg0KPiAJY2Zn ID0gaDJkLT5tc2c7DQo+IAkvKiBVcGRhdGUgdGhlIEwzRldEIGNvbmZpZ3VyYXRpb24gcGFyYW1l dGVycyAqLw0KPiAJY2ZnLT5tb2RlID0gY3R4LT5tb2RlOw0KPiAJLyogQXR0YWNoIGFsbCBEV0Eg RXRoZXJuZXQgcG9ydHMgb250byBMM0ZXRCBwcm9maWxlICovDQo+IAljZmctPm5iX2V0aF9wb3J0 cyA9IGluZm8tPm5iX3BvcnRzOw0KPiAJbWVtY3B5KGNmZy0+ZXRoX3BvcnRzLCBpbmZvLT5hdmFp bF9wb3J0cywgc2l6ZW9mKHVpbnQxNl90KSAqIGluZm8tPm5iX3BvcnRzKTsNCj4NCj4gCXJ0ZV9k d2FfdGx2X2ZpbGwoaDJkLCBpZCwgbGVuLCBoMmQpOw0KPiAJZDJoID0gcnRlX2R3YV9jdHJsX29w KG9iaiwgaDJkKTsNCj4gCWZyZWUoaDJkKTsNCj4NCj4gCS8qIEFsbCBnb29kICovDQo+IAlyYyA9 IHRydWU7DQo+IGZhaWw6DQo+IAlpZiAoaW5mb19kMmgpDQo+IAkJZnJlZShvYmosIGluZm9fZDJo KTsNCj4gCWlmIChkMmgpDQo+IAkJZnJlZShvYmosIGQyaCk7DQo+DQo+IAlyZXR1cm4gcmM7DQo+ IH0NCj4NCj4gYm9vbA0KPiBkd2FfcHJvZmlsZV9sM2Z3ZF9oYXNfY2FwYShydGVfZHdhX29ial90 IG9iaiwgc3RydWN0IGFwcF9jdHggKmN0eCkNCj4gew0KPiAJc3RydWN0IHJ0ZV9kd2FfcHJvZmls ZV9sM2Z3ZF9kMmhfaW5mbyAqaW5mbzsNCj4gCXN0cnVjdCBydGVfZHdhX3RsdiBoMmQsICpkMmg7 DQo+IAlib29sIGZvdW5kID0gZmFsc2U7DQo+ICAgCXVpbnQzMl90IGlkOw0KPg0KPiAJLyogR2V0 IEwzRldEIHByb2ZpbGUgaW5mbyAqLw0KPiAJaWQgPSBSVEVfRFdBX1RMVl9NS19JRChQUk9GSUxF X0wzRldELCBIMkRfSU5GTyk7DQo+IAlydGVfZHdhX3Rsdl9maWxsKCZoMmQsIGlkLCAwLCBOVUxM KTsNCj4gCWQyaCA9IHJ0ZV9kd2FfY3RybF9vcChvYmosICZoMmQpOw0KPg0KPiAJaW5mbyA9IHJ0 ZV9kd2FfdGx2X2QyaF90b19tc2coZDJoKTsNCj4gCS8qIFJlcXVlc3QgZmFpbGVkICovDQo+IAlp ZiAoaW5mbyA9PSBOVUxMKQ0KPiAJCWdvdG8gZmFpbDsNCj4gCS8qIFJlcXVpcmVkIGxvb2t1cCBt b2RlcyBpcyBub3Qgc3VwcG9ydGVkICovDQo+IAlpZiAoIShpbmZvLT5tb2Rlc19zdXBwb3J0ZWQg JiBjdHgtPm1vZGUpKQ0KPiAJCWdvdG8gZmFpbDsNCj4NCj4gCS8qIENoZWNrIHByb2ZpbGUgc3Vw cG9ydHMgSE9TVF9FVEhFUk5FVCBwb3J0IGFzIHRoaXMgYXBwbGljYXRpb24NCj4gICAgICAgICAg ICogc3VwcG9ydHMgb25seSBob3N0IHBvcnQgYXMgRXRoZXJuZXQNCj4gICAgICAgICAgICovDQo+ IAlmb3IgKGkgPSAwOyBpIDwgaW5mby0+bmJfaG9zdF9wb3J0czsgaSsrKSB7DQo+IAkJaWYgKGlu Zm8tPmhvc3RfcG9ydHNbaV0gPT0gUlRFX0RXQV9UQUdfUE9SVF9IT1NUX0VUSEVSTkVUKTsgew0K PiAJCQlmb3VuZCA9IHRydWU7DQo+IAkJfQkNCj4gCX0NCj4NCj4gCS8qIERvbmUgd2l0aCByZXNw b25zZSwgRnJlZSB0aGUgZDJoIG1lbW9yeSBhbGxvY2F0ZWQgYnkgaW1wbGVtZW50YXRpb24gKi8N Cj4gCWZyZWUob2JqLCBkMmgpOw0KPiBmYWlsOg0KPiAJcmV0dXJuIGZvdW5kOw0KPiB9DQo+DQo+ DQo+IGJvb2wNCj4gZHdhX2hhc19wcm9maWxlKGVudW0gcnRlX2R3YV90YWdfcHJvZmlsZSBwZikN Cj4gew0KPiAJZW51bSBydGVfZHdhX3Rsdl9wcm9maWxlICpwZnMgPSBOVUxMOw0KPiAJYm9vbCBm b3VuZCA9IGZhbHNlOw0KPiAJaW50IG5iX3BmczsNCj4NCj4gCS8qIEdldCB0aGUgbnVtYmVyIG9m IHByb2ZpbGVzIG9uIHRoZSBEV0EgZGV2aWNlICovDQo+IAluYl9wZnMgPSBydGVfZHdhX2Rldl9k aXNjX3Byb2ZpbGVzKDAsIE5VTEwpOw0KPiAJcGZzID0gbWFsbG9jKHNpemVvZihlbnVtIHJ0ZV9k d2FfdGFnX3Byb2ZpbGUpICAqIG5iX3Bmcyk7DQo+IAkvKiBGZXRjaCBhbGwgdGhlIHByb2ZpbGVz ICovDQo+IAluYl9wZnMgPSBydGVfZHdhX2Rldl9kaXNjX3Byb2ZpbGVzKDAsIHBmcyk7DQo+DQo+ IAkvKiBDaGVjayB0aGUgbGlzdCBoYXMgcmVxdWVzdGVkIHByb2ZpbGUgKi8NCj4gCWZvciAoaSA9 IDA7IGkgPCBuYl9wZnM7IGkrKykgew0KPiAJCWlmIChwZnNbaV0gPT0gcGYpOw0KPiAJCQlmb3Vu ZCA9IHRydWU7DQo+IAl9DQo+IAlmcmVlKHBmcyk7DQo+DQo+DQo+IAlyZXR1cm4gZm91bmQ7DQo+ IH0NCj4NCj4NCj4gI2luY2x1ZGUgPHJ0ZV9kd2EuaD4NCj4NCj4gI2RlZmluZSBEV0FfRVhDRVBU SU9OX1BBQ0tFVFNfUEtUX0JVUlNUX01BWF9TWgkJMzINCj4NCj4gc3RydWN0IGFwcF9jdHggew0K PiAJYm9vbCBkb25lOw0KPiAJc3RydWN0IHJ0ZV9tZW1wb29sICpwa3RfcG9vbDsNCj4gCXN0cnVj dCBydGVfbWVtcG9vbCAqdGx2X3Bvb2w7DQo+IAllbnVtIHJ0ZV9kd2FfcHJvZmlsZV9sM2Z3ZF9s b29rdXBfbW9kZSBtb2RlOw0KPiAJaW50IHNvY2tldF9pZDsNCj4gCWludCBwa3RfcG9vbF9kZXB0 aDsJDQo+IAlpbnQgdGx2X3Bvb2xfZGVwdGg7DQo+IAlpbnQgcnhfcXVldWVfZGVwdGg7DQo+IH0g X19ydGVfY2FjaGVfYWxpZ25lZDsNCj4NCj4gaW50DQo+IG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQ0KPiB7DQo+IAlydGVfZHdhX29ial90IG9iaiA9IE5VTEw7DQo+IAlzdHJ1Y3QgYXBwX2N0 eCBjdHg7DQo+IAlpbnQgcmM7DQo+IAkJDQo+IAkvKiBJbml0aWFsaXplIEVBTCAqLw0KPiAJcmM9 IHJ0ZV9lYWxfaW5pdChhcmdjLCBhcmd2KTsNCj4gICAgICAgICAgaWYgKHJjIDwgMCkNCj4gICAg ICAgICAgICAgICAgcnRlX2V4aXQoRVhJVF9GQUlMVVJFLCAiSW52YWxpZCBFQUwgYXJndW1lbnRz XG4iKTsNCj4gICAgICAgICAgYXJnYyAtPSByZXQ7DQo+ICAgICAgICAgIGFyZ3YgKz0gcmV0Ow0K Pg0KPg0KPiAJbWVtc2V0KCZjdHgsIDAsIHNpemVvZihjdHgpKTsNCj4gCS8qIFNldCBhcHBsaWNh dGlvbiBkZWZhdWx0IHZhbHVlcyAqLw0KPiAJY3R4LT5tb2RlID0gUlRFX0RXQV9QUk9GSUxFX0wz RldEX01PREVfTFBNOw0KPiAJY3R4LT5zb2NrZXRfaWQgPSBTT0NLRVRfSURfQU5ZOw0KPiAJY3R4 LT5wa3RfcG9vbF9kZXB0aCA9IDEwMDAwOw0KPiAJY3R4LT50bHZfcG9vbF9kZXB0aCA9IDEwMDAw Ow0KPiAJY3R4LT5yeF9xdWV1ZV9kZXB0aCA9IDEwMDAwOw0KPg0KPiAJLyogU3RlcCAxOiBDaGVj ayBhbnkgRFdBIGRldmljZXMgcHJlc2VudCAgKi8NCj4gCXJjID0gcnRlX2R3YV9kZXZfY291bnQo KTsNCj4gCWlmIChyYyA8PSAwKQ0KPiAJCXJ0ZV9leGl0KEVYSVRfRkFJTFVSRSwgIkZhaWxlZCB0 byBmaW5kIERXQSBkZXZpY2VzXG4iKTsNCj4NCj4gCS8qIFN0ZXAgMjogQ2hlY2sgRFdBIGRldmlj ZSBoYXMgTDNGV0QgcHJvZmlsZSBvciBub3QgKi8NCj4gCWlmICghZHdhX2hhc19wcm9maWxlKFJU RV9EV0FfVEFHX1BST0ZJTEVfTDNGV0QpKQ0KPiAJCXJ0ZV9leGl0KEVYSVRfRkFJTFVSRSwgIkwz RldEIHByb2ZpbGUgbm90IGZvdW5kXG4iKTsNCj4NCj4gCS8qDQo+ICAgCSAqIFN0ZXAgMzogTm93 IHRoYXQsIHdvcmtsb2FkIGFjY2VsZXJhdG9yIGhhcyBMM0ZXRCBwcm9maWxlLA0KPiAgIAkgKiBv ZmZsb2FkIEwzRldEIHdvcmtsb2FkIHRvIGFjY2VsZXJhdG9yIGJ5IGF0dGFjaGluZyB0aGUgcHJv ZmlsZQ0KPiAJICogdG8gYWNjZWxlcmF0b3IuDQo+ICAgCSAqLw0KPiAJZW51bSBydGVfZHdhX3Rs dl9wcm9maWxlIHByb2ZpbGVbXSA9IHtSVEVfRFdBX1RBR19QUk9GSUxFX0wzRldEfTsNCj4gCW9i aiA9IHJ0ZV9kd2FfZGV2X2F0dGFjaCgwLCAibXlfY3VzdG9tX2FjY2VsZXJhdG9yX2RldmljZSIs IHByb2ZpbGUsIDEpLjsNCj4NCj4gCS8qIFN0ZXAgNDogQ2hlY2sgQXR0YWNoZWQgTDNGV0QgcHJv ZmlsZSBoYXMgcmVxdWlyZWQgY2FwYWJpbGl0eSB0byBwcm9jZWVkICovDQo+IAlpZiAoIWR3YV9w cm9maWxlX2wzZndkX2hhc19jYXBhKG9iaiwgJmN0eCkpDQo+IAkJcnRlX2V4aXQoRVhJVF9GQUlM VVJFLCAiTDNGV0QgcHJvZmlsZSBkb2VzIG5vdCBoYXZlIGVub3VnaCBjYXBhYmlsaXR5IFxuIik7 DQo+DQo+IAkvKiBTdGVwIDU6IENvbmZpZ3VyZSBsM2Z3ZCBwcm9maWxlICovDQo+IAlpZiAoIWR3 YV9wcm9maWxlX2wzZndkX2NvbmZpZyhvYmosICZjdHgpKQ0KPiAJCXJ0ZV9leGl0KEVYSVRfRkFJ TFVSRSwgIkwzRldEIHByb2ZpbGUgY29uZmlndXJlIGZhaWxlZCBcbiIpOw0KPg0KPiAJLyogU3Rl cCA2OiBDb25maWd1cmUgZXRoZXJuZXQgaG9zdCBwb3J0IHRvIHJlY2VpdmUgZXhjZXB0aW9uIHBh Y2tldHMgKi8NCj4gCWlmICghZHdhX3BvcnRfaG9zdF9ldGhlcm5ldF9jb25maWcob2JqLCAmY3R4 KSkNCj4gCQlydGVfZXhpdChFWElUX0ZBSUxVUkUsICJMM0ZXRCBwcm9maWxlIGNvbmZpZ3VyZSBm YWlsZWQgXG4iKTsNCj4NCj4gCS8qIFN0ZXAgNyA6IE1vdmUgRFdBIHByb2ZpbGVzIHRvIHN0YXJ0 IHN0YXRlICovDQo+IAlydGVfZHdhX3N0YXJ0KG9iaik7DQo+DQo+IAkvKiBTdGVwIDg6IEhhbmRs ZSBleHBlY3RhdGlvbiBwYWNrZXRzIGFuZCBhZGQgbG9va3VwIHJ1bGVzIGZvciBpdCAqLw0KPiAJ ZHdhX3Byb2ZpbGVfbDNmd2RfcG9ydF9ob3N0X2V0aGVybmV0X3dvcmtlcihvYmosICZjdHgpOw0K Pg0KPiAJLyogU3RlcCA5OiBDbGVhbiB1cCAqLw0KPiAJcnRlX2R3YV9zdG9wKG9iaik7DQo+IAly dGVfZHdhX2Rldl9kZXRhY2goMCwgb2JqKTsNCj4gCXJ0ZV9kd2FfZGV2X2Nsb3NlKDApOw0KPiAJ DQo+IAlyZXR1cm4gMDsNCj4gfQ0KPg0KPg0KPiBKZXJpbiBKYWNvYiAoMSk6DQo+ICAgIGR3YTog aW50cm9kdWNlIGRhdGFwbGFuZSB3b3JrbG9hZCBhY2NlbGVyYXRvciBzdWJzeXN0ZW0NCj4NCj4g ICBkb2MvYXBpL2RveHktYXBpLWluZGV4Lm1kICAgICAgICAgICAgfCAgMTMgKw0KPiAgIGRvYy9h cGkvZG94eS1hcGkuY29uZi5pbiAgICAgICAgICAgICB8ICAgMSArDQo+ICAgbGliL2R3YS9kd2Eu YyAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3ICsNCj4gICBsaWIvZHdhL21lc29uLmJ1aWxk ICAgICAgICAgICAgICAgICAgfCAgMTcgKysNCj4gICBsaWIvZHdhL3J0ZV9kd2EuaCAgICAgICAg ICAgICAgICAgICAgfCAxODQgKysrKysrKysrKysrKw0KPiAgIGxpYi9kd2EvcnRlX2R3YV9jb3Jl LmggICAgICAgICAgICAgICB8IDI2NCArKysrKysrKysrKysrKysrKysrDQo+ICAgbGliL2R3YS9y dGVfZHdhX2Rldi5oICAgICAgICAgICAgICAgIHwgMTU0ICsrKysrKysrKysrDQo+ICAgbGliL2R3 YS9ydGVfZHdhX3BvcnRfZHdhX2V0aGVybmV0LmggIHwgIDY4ICsrKysrDQo+ICAgbGliL2R3YS9y dGVfZHdhX3BvcnRfaG9zdF9ldGhlcm5ldC5oIHwgMTc4ICsrKysrKysrKysrKysNCj4gICBsaWIv ZHdhL3J0ZV9kd2FfcHJvZmlsZV9hZG1pbi5oICAgICAgfCAgODUgKysrKysrDQo+ICAgbGliL2R3 YS9ydGVfZHdhX3Byb2ZpbGVfbDNmd2QuaCAgICAgIHwgMzc4ICsrKysrKysrKysrKysrKysrKysr KysrKysrKw0KPiAgIGxpYi9kd2EvdmVyc2lvbi5tYXAgICAgICAgICAgICAgICAgICB8ICAgMyAr DQo+ICAgbGliL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsNCj4gICAx MyBmaWxlcyBjaGFuZ2VkLCAxMzUzIGluc2VydGlvbnMoKykNCj4gICBjcmVhdGUgbW9kZSAxMDA2 NDQgbGliL2R3YS9kd2EuYw0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvZHdhL21lc29uLmJ1 aWxkDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9kd2EvcnRlX2R3YS5oDQo+ICAgY3JlYXRl IG1vZGUgMTAwNjQ0IGxpYi9kd2EvcnRlX2R3YV9jb3JlLmgNCj4gICBjcmVhdGUgbW9kZSAxMDA2 NDQgbGliL2R3YS9ydGVfZHdhX2Rldi5oDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9kd2Ev cnRlX2R3YV9wb3J0X2R3YV9ldGhlcm5ldC5oDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9k d2EvcnRlX2R3YV9wb3J0X2hvc3RfZXRoZXJuZXQuaA0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBs aWIvZHdhL3J0ZV9kd2FfcHJvZmlsZV9hZG1pbi5oDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxp Yi9kd2EvcnRlX2R3YV9wcm9maWxlX2wzZndkLmgNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGli L2R3YS92ZXJzaW9uLm1hcA0KPg0KDQo=