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 CD7FCA0543; Thu, 7 Jul 2022 18:58:07 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6CBF3406B4; Thu, 7 Jul 2022 18:58:07 +0200 (CEST) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mails.dpdk.org (Postfix) with ESMTP id 1C5E04069D for ; Thu, 7 Jul 2022 18:58:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1657213085; x=1688749085; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=z464Gt18diW9qUBYxE4dveDsn4sh1D9E3ux9deNVjHs=; b=Lqb/24at4kAtpHHpKZBJMe3sPfif9GEWFbFvMyheULFMDpuaA1gc18OU tTjgb5R5hawxLXgS0ptcCBBwuLz2/H9B9kWXH8te8DMrm9+hC2axrhiV3 8UPYaf3JBDhp2jIHyiXCHFwWR/MTu5TS/AHtuChJFYt6zaQfmNDoMeVlP DvV09J/mXO71DZsk9YA+HoQ8JpsEPsYEtVf01u/120oCTWdM3Zu5aKfkF kFMtnWO4moAYkYw5lJe1xOxh52VwGXXFWTNmYM9A5jCTBFnZrN52YmAEF MuAIMDxvGG1jeuTYPGCgip5O6DIH0Txv9cKkAC3p7Hb/Lqdb6bJWtHHWb A==; X-IronPort-AV: E=McAfee;i="6400,9594,10401"; a="284096871" X-IronPort-AV: E=Sophos;i="5.92,253,1650956400"; d="scan'208";a="284096871" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jul 2022 09:58:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,253,1650956400"; d="scan'208";a="543889633" Received: from orsmsx604.amr.corp.intel.com ([10.22.229.17]) by orsmga003.jf.intel.com with ESMTP; 07 Jul 2022 09:58:03 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Thu, 7 Jul 2022 09:58:02 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Thu, 7 Jul 2022 09:58:02 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Thu, 7 Jul 2022 09:58:02 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.109) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Thu, 7 Jul 2022 09:58:01 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FM0D3U95cjJjvwI91d5yTlrJ8Bix/Ut9o2ND5LiVrBymUPFTmcwLe/GGp0BPr6VpHP63PX1XJt0zV8ARNHcQ+/320XPX0J+dvyVburHWN16BD7Tc/9XXm9S7YMWPsw4d+UGRpc3MdP/9gJJSmlH/6uAUS8lR7iPpsYxxbOk6Q9OlIR4QSQFdTXCD89g5SXNeSGCix1BFPTH7a1TNL60xFvUQany9URdnGBe628bZgcxwoL1hEbM/8xQV+qMdJdiv0cjZ5gkmyw20kiPrjG5vrk1coDSucrF48wpNVF8XF4p6fzfMZvNzhT+fE6lghUoJa9M6tQS/nbPIJSwu1lFJ5A== 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=z464Gt18diW9qUBYxE4dveDsn4sh1D9E3ux9deNVjHs=; b=EGNvmwrLSFW9GxkpHD1gwlwm/j6OR548nj6rxr+P9JdkVRt15WfH0OcfgLAHAX/l09YwQWRmbWFBeG+AbZqx/2Fyc3f8Bzb7lKm+YDDOuJhjTLF9yI5ImXrvpkv0gWGaP8O0hL6y3Dn6MYyN1vPCOlse/z4OrkZvSY52dS4s+L8iS1o4gTG6uBXcsCuAYLzYSOiEMC5p98yH3CwlLjcJsqZDgNs5QAp/g+/pjWXjdpSQ1NoiK4qd6jwTdCJK4UOtXZJhZ+mfPziHSyuuDg5fUqs5cgtGiUVQKlMlyaypCeWgBsxK0VLHUTCWafCm2ZF530KkFCj4qZ70fX6qoQCsuA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BY5PR11MB4451.namprd11.prod.outlook.com (2603:10b6:a03:1cb::30) by MWHPR11MB1870.namprd11.prod.outlook.com (2603:10b6:300:10f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.16; Thu, 7 Jul 2022 16:57:59 +0000 Received: from BY5PR11MB4451.namprd11.prod.outlook.com ([fe80::1df7:bcbb:7825:37fe]) by BY5PR11MB4451.namprd11.prod.outlook.com ([fe80::1df7:bcbb:7825:37fe%7]) with mapi id 15.20.5417.017; Thu, 7 Jul 2022 16:57:59 +0000 From: "Chautru, Nicolas" To: Tom Rix , "dev@dpdk.org" , "thomas@monjalon.net" , "gakhil@marvell.com" , "hemant.agrawal@nxp.com" CC: "maxime.coquelin@redhat.com" , "mdr@ashroe.eu" , "Richardson, Bruce" , "david.marchand@redhat.com" , "stephen@networkplumber.org" Subject: RE: [PATCH v4 5/7] bbdev: add new operation for FFT processing Thread-Topic: [PATCH v4 5/7] bbdev: add new operation for FFT processing Thread-Index: AQHYkNCi2j6Ng/pvZU2kMIPJhbUOY61xsC2AgAAeXWCAARV0AIAAPC6Q Date: Thu, 7 Jul 2022 16:57:59 +0000 Message-ID: References: <1655491040-183649-6-git-send-email-nicolas.chautru@intel.com> <1657067022-54373-1-git-send-email-nicolas.chautru@intel.com> <1657067022-54373-6-git-send-email-nicolas.chautru@intel.com> <0d0baa2c-3c59-ebde-b223-bb6062a814bd@redhat.com> <556dc305-1e1c-614a-0adc-9dcd7a8505c8@redhat.com> In-Reply-To: <556dc305-1e1c-614a-0adc-9dcd7a8505c8@redhat.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.500.17 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: aac2113b-5406-43b1-9d40-08da6039d8c7 x-ms-traffictypediagnostic: MWHPR11MB1870:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: XNg7GMn9GxdznYo+gZ+Ya8cPKgo6SxSd2Lxv2hl+nG8L0DkZnzYDP9hMQdKfaE0xOuQ62iGv03x8keGyngGYVvMmKsd+BEU8lcnajUx7+oW8jR02wrk7NCQ3OCNO51mkgmxeOKHLOuhEu1DA8akQUXYnsJaqN5BhUYUtNMMMrqUyAuf4nKInyM3AX9Gu8cfmffp9PkbnCEZ1eHKEFKauQ5jNHs4/7AANf+9PbquZHvuRu4JPT+WR/m4U+avO8neDXFhfnBG8nL7UWu4pSj8mRnX1il3KrcRkJiwqu5berx2YLFPjKj9PD9LtBQFEvSs5psPq0Q6jXRKq2aEx/zkRD/vol2PbviRRmjHSQ1oj8AeFQGXeNHhXZGAUCdiPd+Vp1mD8ZSZS7ciceHNUOz9wJLvaQYlgiuIYgNrTkucnndbTkxAMIWjGbsM/pvQMFNSBhvdpiA3mBbGW9kRbGHdJg9tAy3VdTxDDEd6B/pchPz/OW+V3J0bw0+czpd3jfXFe8Dx81Qj+te3KlJzZeHWOgr2qrQxG+xHe8/j0auM3/4lUQoG5TQtJrZA4KQ6IIxuZKxDhOde+ZSek9cp0mb6xx0cJiowvf8whI6xmUHp+mACJ2plEiara9cUdRFT4JJSaV4lLxrHXMMxUYeBHRQl1b7QiKwi2qfL2mtu671+EVP8o6bTJH1T1kp0juZQYSsz2Ul+nguSP21tYkOXMPEyj2llNb53XoOmahiAi3WM7b8Mb9iyy09pEuSzM+m1lIP9BQb8PElK2FFWt7Cqz/yibmymOu0N6GckX1hZsbOKJbuUCNsuT92CTF2ndedqv7y7h x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BY5PR11MB4451.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(39860400002)(376002)(346002)(396003)(136003)(366004)(71200400001)(478600001)(30864003)(2906002)(7696005)(53546011)(66556008)(26005)(66946007)(66476007)(9686003)(316002)(54906003)(110136005)(52536014)(33656002)(5660300002)(86362001)(8936002)(6506007)(8676002)(4326008)(66446008)(64756008)(186003)(83380400001)(76116006)(38100700002)(41300700001)(82960400001)(55016003)(38070700005)(122000001)(559001)(579004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?LzlvNzhzWWhjYWVRQXhUazQxQk53YkF1V3hhQmJzM3RtVmMrWi9vL2U1Sjdq?= =?utf-8?B?R2hTSmNoWFlrNUF3YmRHTEhNdDVTRlRndlhVcUl3WndtTkVzTldJNzVvRTlv?= =?utf-8?B?ZzZKd05zNzV1U2NLeUljaVFSWU5LNzlyVGx0Q0ZMY1ZYc1dWakpZREwvUWJn?= =?utf-8?B?SVFoS1VLYWdRdE5HajBseUJCMEdWNk5RRHNrWVcvTkhYeWpzVlBGOE5kUVRv?= =?utf-8?B?ejJIR3E2ajZsUm1LV2J6SGxLNlRWRUh5dVBIeExuVHp3VG0rdDNHREhPSTVz?= =?utf-8?B?aHV5M2w1SmRzeXFad1AyUjhOZFZocGVDTFhxamowTVhoNkZGRnJzZk9KSGxy?= =?utf-8?B?SzhpbkVTR0RkaUZOOXdTTDB1VUMySGtXL0NvcEd4RU1VM1RSekZiM056d0dE?= =?utf-8?B?b0tnWkdjZ0NWVloyOXZVeXgrVWUzUi9rS1hubndKWEtXUTBucmJTblVxZnkz?= =?utf-8?B?MmVacElNTWdFejR3VUxpWXFTWnY1UHh1MDlkUzNqeTVTTytaME90bUFpYlVq?= =?utf-8?B?M2g0TjNmU1orenFldHlsT0dIY3g2a2R2WVVwVWI4V3pEeDYxSVpRVERvTlEv?= =?utf-8?B?UEVLREtGYUpINW5KcFE3MEM4ZXg4RGEveURSMFR1SnZkTUU2a2QvaXk2MmFT?= =?utf-8?B?OWppdkdZaDZSRTZzSCt4Sm80d3JkTHY2U1lhZXp5ZWI2YXNEOU1reHltRFhB?= =?utf-8?B?VnVMVExPUjZaY1ZabUU4alBkQ2tWRUVobFFUZmRibVhYbmRFM2RwZzh0WnJj?= =?utf-8?B?azhnUm5WNUpYZGZLOFVMMk83a3Rnc3dRamVXZ2FKMm13VUJuQWpuQTcraVZS?= =?utf-8?B?T1d2VjlGWXNPUmtIaC95UTd5Z1V5aklhVFJNU0FjemtxelNFTXY3ZDVqU2RY?= =?utf-8?B?WEJ0RmFHdmljU1dNeVdpSThtb1FjUy80U0hENmljTmM3djlzS1hzcmxnVy9Q?= =?utf-8?B?Yk9rck85SlZ3VjAydUpQTWZKM1IzY2VFZTZRM0U0MlVCeEdXTWxYaUNtbHJG?= =?utf-8?B?bGtZSEtzckpEMFE2Qkh0OC9CRnVSZm9Yamx6bmRDVk4xSTRJa09hVXIrVHVD?= =?utf-8?B?WCtscUtIVDh0RUtzWGVUTWJ5VytXMi9mQWlZQ3RYY0FLbVpCamtIcm90UXFY?= =?utf-8?B?dmErcUZ5WlFNcFFPd3F4RlUrdjhZVy9hQnJsd2s0SkVJSUZJOFdTajVtenhj?= =?utf-8?B?SGZZMkU4cTRiQVpsZlMvNjJlVGJyZGplSzZWM0p1TTRVV3R4VUdRR3FGY01R?= =?utf-8?B?SnRMVUdWZGlJSnhGMkFhd3hUQ0ptckh0V3E1OUpEZzRmRTFUenM2akFkTDVh?= =?utf-8?B?SC9qWWNjVTVoUmJSMldOVEptcXVEb29LSlZ5T3ZOT0NkZXN3NWc0cWxtTk9P?= =?utf-8?B?WnFGZzlNY3FpWkVzejQ5eFN6blVkVHJWdng2Rk0wV3QvbmhOYnhtYThBenVy?= =?utf-8?B?NGJGM0hXd2tocjlIMmxsMy9xandrRmFwa0lvL2FLcnlvVFR3YURlTXNPZnZk?= =?utf-8?B?YlFHOXcrekw3VkRjdVlOdVBnRWViRmIvTDI2ZDlCOENJaTFocHFONVhqVTJ4?= =?utf-8?B?Z1B5aVU1a1IrUm9PN3pIekJFT2RleEZnaXJzS092T2F0L0ljOFBJSVBkQjlG?= =?utf-8?B?eG9NQ2lPM3VWNnB5WEFGKzJpa0lHbFJXRm1peW9tWTJoQVFTK1diSGJvOEZC?= =?utf-8?B?SG9POHRmWVpGTDlLcENGNlVSSURrWFA2UEtHSU9YbWNnY0RTU0tQYUNGbjJx?= =?utf-8?B?ZUV6MC9rRWZkTlMzNXNGTFF5MlRRNUZDM2tsZnBOOE55NzBqM3gzRXBiSVY4?= =?utf-8?B?azBxSGYxdTFkZWEvOGVrOVcyZzc2c0RIWnJLVUpvVEk1WVprRnEvSjUyK0NG?= =?utf-8?B?eXM2ZzZhUHk4N25rSS9ydDBYMTZqSXZ5N25EdTNEb1dmWDJEaStUUXdBMEc3?= =?utf-8?B?SzVZbkhJcGVZL05hOGtrZWNGenJqUHpEQmdOVUlnU1IxRTdab0VmQnJwb3lV?= =?utf-8?B?MjNsZ251QlBhL0N0VWNhVTBZR3hKT0Z4YXd4YzVzSFdmSm9haEdRMmlVQTll?= =?utf-8?B?ZHJLalFITUdTZzd0dUc2ek1nS2lOTDZ3NndCQm9PWHdsT3A1am1RTzVWQm1t?= =?utf-8?Q?CcLgLJnpXE3vHzciVrYTJGGjq?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY5PR11MB4451.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: aac2113b-5406-43b1-9d40-08da6039d8c7 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jul 2022 16:57:59.2553 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: eP158x6u/Kud7faSnyuycOQ1aGjvoZ8djDKRGpe6L83lgWALAwIxgCdcwJCHIXmeWK98h9q/lo/hF+inYPK8Od5wdy9mvbO2vmOZ4RLb+rU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB1870 X-OriginatorOrg: intel.com 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 SGkgVG9tLCANCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBUb20gUml4 IDx0cml4QHJlZGhhdC5jb20+DQo+IA0KPiBOaWMsDQo+IA0KPiBOb3QgYWxsIG15IGNvbW1lbnRz IHdlcmUgYWRkcmVzc2VkLg0KPiANCj4gVGhlIG9uZSBJIGFtIG1vc3QgaW50ZXJlc3RlZCBpbiBp cyB0aGUgZGVmYXVsdCB0eXBlIC8gc2l6ZSBhbmQgaG93IGl0IGludGVyYWN0cw0KPiB3aXRoIGZw MTYuDQoNCk15IGJhZCwgSSBoYWQgcmVwbGllZCB0byBhbGwgdGhhdCAoYW5kIGZpeGVkIHNvbWUg b2YgdGhlbSBpbiB0aGUgbmV3IHZlcnNpb24pIGJ1dCBJIG11c3QgaGF2ZSBOT1Qgc2VudCB0aGUg bGF0ZXN0IGRyYWZ0IG9mIHRoYXQgZW1haWwgYnkgbWlzdGFrZS4gTGV0IG1lIGdvIHRocm91Z2gg aXQgYWdhaW4gYmVsb3cgYW5kIGxldCBtZSBrbm93IGlmIHVuY2xlYXIuIA0KDQo+IA0KPiBQbGVh c2Ugc2VlIHRoZSBvdGhlcnMgYmVsb3cNCj4gDQo+IE9uIDcvNi8yMiAyOjA0IFBNLCBDaGF1dHJ1 LCBOaWNvbGFzIHdyb3RlOg0KPiA+IEhpIFRvbSwNCj4gPg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPiA+PiBGcm9tOiBUb20gUml4IDx0cml4QHJlZGhhdC5jb20+Pg0KPiA+Pg0K PiA+PiBPbiA3LzUvMjIgNToyMyBQTSwgTmljb2xhcyBDaGF1dHJ1IHdyb3RlOg0KPiA+Pj4gRXh0 ZW5zaW9uIG9mIGJiZGV2IG9wZXJhdGlvbiB0byBzdXBwb3J0IEZGVCBiYXNlZCBvcGVyYXRpb25z Lg0KPiA+Pj4NCj4gPj4+IFNpZ25lZC1vZmYtYnk6IE5pY29sYXMgQ2hhdXRydSA8bmljb2xhcy5j aGF1dHJ1QGludGVsLmNvbT4NCj4gPj4+IEFja2VkLWJ5OiBIZW1hbnQgQWdyYXdhbCA8aGVtYW50 LmFncmF3YWxAbnhwLmNvbT4NCj4gPj4+IC0tLQ0KPiA+Pj4gICAgZG9jL2d1aWRlcy9wcm9nX2d1 aWRlL2JiZGV2LnJzdCB8IDEzMA0KPiA+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKw0KPiA+Pj4gICAgbGliL2JiZGV2L3J0ZV9iYmRldi5jICAgICAgICAgICB8ICAxMSArKy0N Cj4gPj4+ICAgIGxpYi9iYmRldi9ydGVfYmJkZXYuaCAgICAgICAgICAgfCAgNzYgKysrKysrKysr KysrKysrKysrKysNCj4gPj4+ICAgIGxpYi9iYmRldi9ydGVfYmJkZXZfb3AuaCAgICAgICAgfCAx NDkNCj4gPj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+Pj4g ICAgbGliL2JiZGV2L3ZlcnNpb24ubWFwICAgICAgICAgICB8ICAgNCArKw0KPiA+Pj4gICAgNSBm aWxlcyBjaGFuZ2VkLCAzNjkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiA+Pj4NCj4g Pj4+IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvYmJkZXYucnN0DQo+ID4+PiBi L2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9iYmRldi5yc3QgaW5kZXggNzBmYTAxYS4uNGEwNTViNSAx MDA2NDQNCj4gPj4+IC0tLSBhL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9iYmRldi5yc3QNCj4gPj4+ ICsrKyBiL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9iYmRldi5yc3QNCj4gPj4+IEBAIC0xMTE4LDYg KzExMTgsMTM2IEBAIEZpZ3VyZSA6bnVtcmVmOmBmaWd1cmVfdHVyYm9fdGJfZGVjb2RlYA0KPiBh Ym92ZQ0KPiA+Pj4gICAgc2hvd2luZyB0aGUgVHVyYm8gZGVjb2Rpbmcgb2YgQ0JzIHVzaW5nIEJC REVWIGludGVyZmFjZSBpbiBUQi1tb2RlDQo+ID4+PiAgICBpcyBhbHNvIHZhbGlkIGZvciBMRFBD IGRlY29kZS4NCj4gPj4+DQo+ID4+PiArQkJERVYgRkZUIE9wZXJhdGlvbg0KPiA+Pj4gK35+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCj4gPj4+ICsNCj4gPj4+ICtUaGlzIG9wZXJhdGlvbiBh bGxvd3MgdG8gcnVuIGEgY29tYmluYXRpb24gb2YgREZUIGFuZC9vciBJREZUDQo+ID4+PiArYW5k L29yIHRpbWUtDQo+ID4+IGRvbWFpbiB3aW5kb3dpbmcuDQo+ID4+PiArVGhlc2UgY2FuIGJlIHVz ZWQgaW4gYSBtb2R1bGFyIGZhc2hpb24gKHVzaW5nIGJ5cGFzcyBtb2Rlcykgb3IgYXMgYQ0KPiA+ Pj4gK3Byb2Nlc3NpbmcgcGlwZWxpbmUgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIEZGVC1iYXNlZCBi YXNlYmFuZCBzaWduYWwNCj4gPj4gcHJvY2Vzc2luZy4NCj4gPj4+ICtJbiBtb3JlIGRldGFpbHMg aXQgYWxsb3dzIDoNCj4gPj4+ICstIHRvIHByb2Nlc3MgdGhlIGRhdGEgZmlyc3QgdGhyb3VnaCBh biBJREZUIG9mIGFkanVzdGFibGUgc2l6ZSBhbmQNCj4gPj4+ICtwYWRkaW5nOw0KPiA+Pj4gKy0g dG8gcGVyZm9ybSB0aGUgd2luZG93aW5nIGFzIGEgcHJvZ3JhbW1hYmxlIGN5Y2xpYyBzaGlmdCBv ZmZzZXQgb2YNCj4gPj4+ICt0aGUgZGF0YSBmb2xsb3dlZCBieSBhIHBvaW50d2lzZSBtdWx0aXBs aWNhdGlvbiBieSBhIHRpbWUgZG9tYWluDQo+ID4+PiArd2luZG93Ow0KPiA+Pj4gKy0gdG8gcHJv Y2VzcyB0aGUgcmVsYXRlZCBkYXRhIHRocm91Z2ggYSBERlQgb2YgYWRqdXN0YWJsZSBzaXplIGFu ZA0KPiA+Pj4gK2RlcGFkZGluZyBmb3IgZWFjaCBzdWNoIGN5Y2xpYyBzaGlmdCBvdXRwdXQuDQo+ ID4+PiArDQo+ID4+PiArQSBmbGV4aWJsZSBudW1iZXIgb2YgUnggYW50ZW5uYXMgYXJlIGJlaW5n IHByb2Nlc3NlZCBpbiBwYXJhbGxlbA0KPiA+Pj4gK3dpdGggdGhlDQo+ID4+IHNhbWUgY29uZmln dXJhdGlvbi4NCj4gPj4+ICtUaGUgQVBJIGFsbG93cyBtb3JlIGdlbmVyYWxseSBmb3IgZmxleGli aWxpdHkgaW4gd2hhdCB0aGUgUE1EIG1heQ0KPiA+Pj4gK3N1cHBvcnQgKGNhYmFiaWxpdHkgZmxh Z3MpIGFuZCBmbGV4aWJpbGl0eSB0byBhZGp1c3Qgc29tZSBvZiB0aGUNCj4gPj4+ICtwYXJhbWV0 ZXJzIG9mDQo+ID4+IHRoZSBwcm9jZXNzaW5nLg0KPiA+Pj4gKw0KPiA+Pj4gK1RoZSBvcGVyYXRp b24vY2FwYWJpbGl0eSBmbGFncyB0aGF0IGNhbiBiZSBzZXQgZm9yIGVhY2ggRkZUDQo+ID4+PiAr b3BlcmF0aW9uIGFyZQ0KPiA+PiBnaXZlbiBiZWxvdy4NCj4gPj4+ICsNCj4gPj4+ICsgICoqTk9U RToqKiBUaGUgYWN0dWFsIG9wZXJhdGlvbiBmbGFncyB0aGF0IG1heSBiZSB1c2VkIHdpdGggYQ0K PiA+Pj4gKyBzcGVjaWZpYyAgQkJERVYgUE1EIGFyZSBkZXBlbmRlbnQgb24gdGhlIGRyaXZlciBj YXBhYmlsaXRpZXMgYXMNCj4gPj4+ICsgcmVwb3J0ZWQgdmlhICBgYHJ0ZV9iYmRldl9pbmZvX2dl dCgpYGAsIGFuZCBtYXkgYmUgYSBzdWJzZXQgb2YgdGhvc2UNCj4gYmVsb3cuDQo+ID4+PiArDQo+ ID4+PiArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKw0KPiA+Pj4gK3xEZXNjcmlwdGlvbiBvZiBGRlQgY2FwYWJpbGl0 eSBmbGFncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gPj4+DQo+ID4+DQo+ ICsrPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQo+ID4+ID09PT09DQo+ID4+PiArKysNCj4gPj4+ICt8UlRFX0JCREVWX0ZGVF9X SU5ET1dJTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ ID4+PiArfCBTZXQgdG8gZW5hYmxlL3N1cHBvcnQgd2luZG93aW5nIGluIHRpbWUgZG9tYWluICAg ICAgICAgICAgICAgICAgICAgfA0KPiA+Pj4gKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gPj4+ICt8UlRFX0JC REVWX0ZGVF9DU19BREpVU1RNRU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8DQo+ID4+PiArfCBTZXQgdG8gZW5hYmxlL3N1cHBvcnQgIHRoZSBjeWNsaWMgc2hpZnQg dGltZSBvZmZzZXQgYWRqdXN0bWVudCAgICAgfA0KPiA+Pj4gKystLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gPj4+ ICt8UlRFX0JCREVWX0ZGVF9ERlRfQllQQVNTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8DQo+ID4+PiArfCBTZXQgdG8gYnlwYXNzIHRoZSBERlQgYW5kIHVzZSBk aXJlY3RseSB0aGUgSURGVCBhcyBhbiBvcHRpb24gICAgICAgfA0KPiA+Pj4gKystLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSsNCj4gPj4+ICt8UlRFX0JCREVWX0ZGVF9JREZUX0JZUEFTUyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8DQo+ID4+PiArfCBTZXQgdG8gYnlwYXNzIHRoZSBJREZU IGFuZCB1c2UgZGlyZWN0bHkgdGhlIERGVCBhcyBhbiBvcHRpb24gICAgICAgfA0KPiA+Pj4gKyst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSsNCj4gPj4+ICt8UlRFX0JCREVWX0ZGVF9XSU5ET1dJTkdfQllQQVNTICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ID4+PiArfCBTZXQgdG8gYnlwYXNz IHRoZSB0aW1lIGRvbWFpbiB3aW5kb3dpbmcgIGFzIGFuIG9wdGlvbiAgICAgICAgICAgICAgfA0K PiA+Pj4gKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gPj4+ICt8UlRFX0JCREVWX0ZGVF9QT1dFUl9NRUFTDQo+ ID4+IE90aGVyIGZsYWdzIGFyZSBub3QgdHJ1bmNhdGVkLCBzaG91bGQgYmUNCj4gPj4NCj4gPj4g UlRFX0JCREVWX0ZGVF9QT1dFUl9NRUFTVVJFTUVOVA0KPiA+Pg0KPiA+IFRoZSBpbnRlbnRpb24g ZnJvbSBEUERLIHJlY29tbWVuZGF0aW9uIGlzIGZvciB0aGVzZSB0byBiZSBrZXB0DQo+IHNob3J0 bmFtZXMsIGlzbid0IGl0Pw0KPiA+IEFib3ZlIHdlIHVzZSBtYW55IGFjcm9ueW1zIHRvIGtlZXAg aXQgc2hvcnQgKENTLCBldGMuLi4pIEV2ZW4gaW4NCj4gPiBjdXJyZW50IEJCREVWIEFQSSB3ZSB1 c2UgbWFueSB0cnVuY2F0aW9uIHRvIGtlZXAgbmFtZXMgc2hvcnQ6IE9VVCwNCj4gRU5DL0RFQywg SFEsIFJNIG9uIHRvcCBvZiBhY3Jvbnltcy4NCj4gPiBJIGJlbGlldmUgdGhpcyBpcyBzdGlsbCBz dXBlciBleHBsaWNpdCB3aXRoIHRoYXQgbmFtZT8NCj4gDQo+IFNvbWUgb2Ygb3RoZXIgaWRlbnRp ZmllciBoYXZlIGxvbmdlciBuYW1lcyB0aGFuIHRoaXMuDQo+IA0KPiBJZiB5b3Ugd2FudGVkIHRv IGtlZXAgdGhpbmdzIHNob3J0LCBkcm9wIHRoZSBsYXN0IF88d29yZD4NCj4gDQo+IEdlbmVyYWxs eSB0aGUgdXNlIG9mIGFjcm9ueW1zIHNob3VsZCBiZSBhdm9pZGVkIGJlY2F1c2UgdGhleSBhZGQg YSBsYXllciBvZg0KPiBqYXJnb24gdGhhdCBtYWtlcyB0aGUgY29kZSBsZXNzIHJlYWRhYmxlIHRv IGFsbCBidXQgd3JpdGVyLg0KDQpUbyBiZSB0b3RhbGx5IGhvbmVzdCB1c2FnZSBmb3IgYWNyb255 bSBpcyB1YmlxdWl0b3VzIGluIHN1Y2ggTDEgc2lnbmFsDQpwcm9jZXNzaW5nIChhbmQgY2FwdHVy ZWQgaW4gM0dQUCBzcGVjcyBleHBsaWNpdGx5LCBldmVyeW9uZSBrbm93cyB3aGF0IEhBUlEgb3Ig TERQQyBvciBGRlQgc3RhbmRzIGZvciwgZXRjLi4uKS4NCkkgYmVsaWV2ZSB0aGlzIGlzIGN1cnJl bnRseSBzdHJpa2luZyB0aGUgcmlnaHQgYmFsYW5jZSBpbg0KYmVpbmcgZXhwbGljaXQgdG8gZGV2 ZWxvcGVycyBmYW1pbGlhciB3aXRoIHJlbGF0ZWQgcHJvY2Vzc2luZyB3aGlsZSBub3QgYmVpbmcg dW5kdWx5IGxvbmcgbmFtZXMgd2hpY2ggY3JlYXRlIG1lc3Mgd2hlbiB0cnlpbmcgdG8gZml0IHRv IDEwMCBjb2xzLiANCg0KPiANCj4gDQo+ID4NCj4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8DQo+ID4+PiArfCBTZXQgdG8gcHJvdmlkZSBhbiBvcHRp b25hbCBwb3dlciBtZWFzdW1lbnQgb2YgdGhlIERGVCBvdXRwdXQgICAgICAgfA0KPiA+Pj4gKyst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSsNCj4gPj4gbWVhc3VyZW1lbnQNCj4gPiBPSyBUaGFua3MNCj4gPg0KPiA+Pj4g K3xSVEVfQkJERVZfRkZUX0ZQMTZfSU5QVVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwNCj4gPj4+ICt8IFNldCBpZiB0aGUgaW5wdXQgZGF0YSBzaGFsbCB1c2Ug RlAxNiBmb3JtYXQgaW5zdGVhZCBvZiBJTlQxNiAgICAgICB8DQo+ID4+PiArKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Kw0KPiA+Pj4gK3xSVEVfQkJERVZfRkZUX0ZQMTZfT1VUUFVUICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwNCj4gPj4+ICt8IFNldCBpZiB0aGUgb3V0cHV0IGRhdGEg c2hhbGwgdXNlIEZQMTYgZm9ybWF0IGluc3RlYWQgb2YgSU5UMTYgICAgICB8DQo+ID4+PiArKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKw0KPiA+Pj4gKw0KPiA+Pj4gK1RoZSBzdHJ1Y3R1cmUgcGFzc2VkIGZvciBlYWNo IEZGVCBvcGVyYXRpb24gaXMgZ2l2ZW4gYmVsb3csIHdpdGggdGhlDQo+ID4+PiArb3BlcmF0aW9u IGZsYWdzIGZvcm1pbmcgYSBiaXRtYXNrIGluIHRoZSBgYG9wX2ZsYWdzYGAgZmllbGQuDQo+ID4+ PiArDQo+ID4+PiArLi4gY29kZS1ibG9jazo6IGMNCj4gPj4+ICsNCj4gPj4+ICsgICAgc3RydWN0 IHJ0ZV9iYmRldl9vcF9mZnQgew0KPiA+Pj4gKyAgICAgICAgc3RydWN0IHJ0ZV9iYmRldl9vcF9k YXRhIGJhc2VfaW5wdXQ7DQo+ID4+PiArICAgICAgICBzdHJ1Y3QgcnRlX2JiZGV2X29wX2RhdGEg YmFzZV9vdXRwdXQ7DQo+ID4+PiArICAgICAgICBzdHJ1Y3QgcnRlX2JiZGV2X29wX2RhdGEgcG93 ZXJfbWVhc19vdXRwdXQ7DQo+ID4+IHNpbWlsYXIgdG8gYWJvdmUsIG1lYXMgLT4gbWVhc3VyZW1l bnQNCj4gPiBTZWUgYWJvdmUuIFdvdWxkIHRoYXQgcmVhbGx5IGhlbHA/IEkgZG9u4oCZdCBiZWxp ZXZlIHRoZXJlIGNhbiBiZSBhbnkNCj4gY29uZnVzaW9uLg0KPiANCj4gTmFtaW5nIGlzIGhhcmQu DQo+IA0KPiBIb3cgYWJvdXQgZHJvcHBpbmcgdGhlIF9tZWFzXyBhbmQgZ28gd2l0aCBwb3dlcl9v dXRwdXQNCg0KSSBhZ3JlZSB0aGF0IG5hbWluZyBjYW4gYmUgdHJpY2t5LiBCdXQgaW4gdGhhdCBj YXNlIEkgYmVsaWV2ZSB0aGlzIGlzIHRoZSByaWdodCBiYWxhbmNlIGFzIG1lbnRpb25lZCBhYm92 ZS4NCg0KPiANCj4gPg0KPiA+Pj4gKyAgICAgICAgdWludDMyX3Qgb3BfZmxhZ3M7DQo+ID4+PiAr ICAgICAgICB1aW50MTZfdCBpbnB1dF9zZXF1ZW5jZV9zaXplOw0KPiA+PiBDb3VsZCB0aGVzZSBi ZSBmdXR1cmUgcHJvb2ZlZCBieSBpbmNyZWFzaW5nIHNtYWxsIGludCBzaXplJ3MgdG8gdWludDMy X3QgPw0KPiA+IEl0IGlzIG5vdCBwb3NzaWJsZSB0byBiZSB0aGF0IGJpZyBmb3IgYW55IHNpZ25h bCBwcm9jZXNzaW5nIHJlbGV2YW50IHRvIHRoYXQNCj4gb3BlcmF0aW9uLg0KPiA+DQo+ID4+PiAr ICAgICAgICB1aW50MTZfdCBpbnB1dF9sZWFkaW5nX3BhZGRpbmc7DQo+ID4+PiArICAgICAgICB1 aW50MTZfdCBvdXRwdXRfc2VxdWVuY2Vfc2l6ZTsNCj4gPj4+ICsgICAgICAgIHVpbnQxNl90IG91 dHB1dF9sZWFkaW5nX2RlcGFkZGluZzsNCj4gPj4+ICsgICAgICAgIHVpbnQ4X3Qgd2luZG93X2lu ZGV4W1JURV9CQkRFVl9NQVhfQ1NfMl07DQo+ID4+PiArICAgICAgICB1aW50MTZfdCBjc19iaXRt YXA7DQo+ID4+PiArICAgICAgICB1aW50OF90IG51bV9hbnRlbm5hc19sb2cyOw0KPiA+Pj4gKyAg ICAgICAgdWludDhfdCBpZGZ0X2xvZzI7DQo+ID4+PiArICAgICAgICB1aW50OF90IGRmdF9sb2cy Ow0KPiA+PiBpcyBfbG9nMiBuZWVkZWQgaW4gdmFyaWFibGUgbmFtZSBpZiBpdCBpcyBkb2N1bWVu YXRpb24gPw0KPiA+IEkgYmVsaWV2ZSBpdCBpcyBhIGJlc3QgcHJhY3RpY2Ugd2hlbiB0aGUgdmFy aWFibGUgbmFtZSBtYXkgYmUgbWlzbGVhZGluZywgaWUuDQo+IHRoaXMgaXMgbm90IHRoZSBhY3R1 YWwgZGZ0IHNpemUgYXMgYSBuYXR1cmFsIG51bWJlciAoMjA0OCBmb3IgaW5zdGFuY2UpIGJ1dCB0 aGVyZQ0KPiBpcyBhbiBpbXBsaWVkIG1hcHBpbmcuDQo+ID4NCj4gPj4+ICsgICAgICAgIGludDhf dCBjc190aW1lX2FkanVzdG1lbnQ7DQo+ID4+PiArICAgICAgICBpbnQ4X3QgaWRmdF9zaGlmdDsN Cj4gPj4+ICsgICAgICAgIGludDhfdCBkZnRfc2hpZnQ7DQo+ID4+PiArICAgICAgICB1aW50MTZf dCBuY3NfcmVjaXByb2NhbDsNCj4gPj4+ICsgICAgICAgIHVpbnQxNl90IHBvd2VyX3NoaWZ0Ow0K PiA+Pj4gKyAgICAgICAgdWludDE2X3QgZnAxNl9leHBfYWRqdXN0Ow0KPiA+Pj4gKyAgICB9Ow0K PiA+Pj4gKw0KPiA+Pj4gK1RoZSBGRlQgcGFyYW1ldGVycyBhcmUgc2V0IG91dCBpbiB0aGUgdGFi bGUgYmVsb3cuDQo+ID4+PiArDQo+ID4+PiArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r DQo+ID4+PiArfFBhcmFtZXRlciAgICAgICAgICAgICB8RGVzY3JpcHRpb24gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ID4+Pg0KPiA+Pg0KPiAr Kz09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KPiA+PiA9PT09PQ0KPiA+Pj4gKys9PT09PT09PT09PT09PT09PSsNCj4gPj4+ICt8 YmFzZV9pbnB1dCAgICAgICAgICAgIHxpbnB1dCBkYXRhICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gPj4+ICsrLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSsNCj4gPj4+ICt8YmFzZV9vdXRwdXQgICAgICAgICAgIHxvdXRwdXQgZGF0YSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gPj4+ ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gPj4+ICt8cG93ZXJfbWVhc19vdXRw dXQgICAgIHxvcHRpb25hbCBvdXRwdXQgZGF0YSB3aXRoIHBvd2VyIG1lYXN1cmVtZW50DQo+ID4+ IG9uIERGVCBvdXRwdXQgICAgIHwNCj4gPj4+ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSsNCj4gPj4+ICt8b3BfZmxhZ3MgICAgICAgICAgICAgIHxiaXRtYXNrIG9mIGFsbCBhY3RpdmUg b3BlcmF0aW9uIGNhcGFiaWxpdGllcyAgICAgICAgICAgICAgICAgIHwNCj4gPj4+ICsrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gPj4+ICt8aW5wdXRfc2VxdWVuY2Vfc2l6ZSAgIHxz aXplIG9mIHRoZSBpbnB1dCBzZXF1ZW5jZSBpbiAzMi1iaXRzIHBvaW50cyBwZXINCj4gPj4gYW50 ZW5uYSAgICAgIHwNCj4gPj4+ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gPj4+ ICt8aW5wdXRfbGVhZGluZ19wYWRkaW5nIHxudW1iZXIgb2YgcG9pbnRzIHBhZGRlZCBhdCB0aGUg c3RhcnQgb2YgaW5wdXQNCj4gPj4gZGF0YSAgICAgICAgICAgIHwNCj4gPj4+ICsrLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gPj4+ICt8b3V0cHV0X3NlcXVlbmNlX3NpemUgIHxzaXpl IG9mIHRoZSBvdXRwdXQgc2VxdWVuY2UgcGVyIGFudGVubmEgYW5kDQo+ID4+IGN5Y2xpYyBzaGlm dCAgICAgIHwNCj4gPj4+ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gPj4+ICt8 b3V0cHV0X2RlcGFkZGluZyAgICAgIHxudW1iZXIgb2YgcG9pbnRzIGRlcGFkZGVkIGF0IHRoZSBz dGFydCBvZg0KPiBvdXRwdXQNCj4gPj4gZGF0YSAgICAgICAgIHwNCj4gPj4+ICsrLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gPj4gb3V0cHV0X2xlYWRpbmdfZGVwYWRkaW5nDQo+ID4g T0sgVGhhbmtzDQo+ID4NCj4gPj4+ICt8d2luZG93X2luZGV4ICAgICAgICAgIHxvcHRpb25hbCB3 aW5kb3dpbmcgcHJvZmlsZSBpbmRleCB1c2VkIGZvciBlYWNoDQo+IGN5Y2xpYw0KPiA+PiBzaGlm dCAgIHwNCj4gPj4+ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gPj4+ICt8Y3Nf Yml0bWFwICAgICAgICAgICAgIHxiaXRtYXAgb2YgdGhlIGN5Y2xpYyBzaGlmdCBvdXRwdXQgcmVx dWVzdGVkIChMU0IgZm9yDQo+ID4+IGluZGV4IDApIHwNCj4gPj4+ICsrLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSsNCj4gPj4+ICt8bnVtX2FudGVubmFzX2xvZzIgICAgIHxudW1iZXIgb2Yg YW50ZW5uYXMgYXMgYSBsb2cyICgxMCBtYXBzIHRvDQo+IDEwMjQuLi4pDQo+ID4+IHwNCj4gPj4+ ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gPj4+ICt8aWRmdF9sb2cyICAgICAg ICAgICAgIHxpREZUIHNpemUgYXMgYSBsb2cyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwNCj4gPj4+ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4g Pj4+ICt8ZGZ0X2xvZzIgICAgICAgICAgICAgIHxERlQgc2l6ZSBhcyBhIGxvZzIgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gPj4+ICsrLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSsNCj4gPj4+ICt8Y3NfdGltZV9hZGp1c3RtZW50ICAgIHxhZGp1c3Rt ZW50IG9mIHRpbWUgcG9zaXRpb24gb2YgYWxsIHRoZSBjeWNsaWMgc2hpZnQNCj4gPj4gb3V0cHV0 ICAgIHwNCj4gPj4+ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gPj4+ICt8aWRm dF9zaGlmdCAgICAgICAgICAgIHxzaGlmdCBkb3duIG9mIHNpZ25hbCBsZXZlbCBwb3N0IGlERlQg ICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gPj4+ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSsNCj4gPj4+ICt8ZGZ0X3NoaWZ0ICAgICAgICAgICAgIHxzaGlmdCBkb3duIG9mIHNp Z25hbCBsZXZlbCBwb3N0IERGVCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gPj4+ICsr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gPj4+ICt8bmNzX3JlY2lwcm9jYWwgICAg ICAgIHxpbnZlcnNlIG9mIG1heCBudW1iZXIgb2YgQ1Mgbm9ybWFsaXplZCB0byAxNWIgKGllLg0K PiA+PiAyMzEgZm9yIDEyKXwNCj4gPj4+ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsN Cj4gPj4+ICt8cG93ZXJfc2hpZnQgICAgICAgICAgIHxzaGlmdCBkb3duIG9mIGxldmVsIG9mIHBv d2VyIG1lYXN1cmVtZW50IHdoZW4NCj4gPj4gZW5hYmxlZCAgICAgICAgIHwNCj4gPj4+ICsrLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gPj4+ICt8ZnAxNl9leHBfYWRqdXN0ICAgICAg IHx2YWx1ZSBhZGRlZCB0byBGUDE2IGV4cG9uZW50IGF0IGNvbnZlcnNpb24gZnJvbQ0KPiA+PiBJ TlQxNiAgICAgICAgIHwNCj4gPj4+ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4g Pj4+ICsNCj4gPj4+ICtUaGUgbWJ1ZiBpbnB1dCBgYGJhc2VfaW5wdXRgYCBpcyBtYW5kYXRvcnkg Zm9yIGFsbCBCQkRFViBQTURzIGFuZCBpcw0KPiA+Pj4gK3RoZSBpbmNvbWluZyBkYXRhIGZvciB0 aGUgcHJvY2Vzc2luZy4gSXRzIHNpemUgbWF5IG5vdCBmaXQgaW50byBhbg0KPiA+Pj4gK2FjdHVh bCBtYnVmLCBidXQgdGhlIHN0cnVjdHVyZSBpcyB1c2VkIHRvIHBhc3MgaW92YSBhZGRyZXNzLg0K PiA+Pj4gK1RoZSBtYnVmIG91dHB1dCBgYG91dHB1dGBgIGlzIG1hbmRhdG9yeSBhbmQgaXMgb3V0 cHV0IG9mIHRoZSBGRlQNCj4gPj4gcHJvY2Vzc2luZyBjaGFpbi4NCj4gPj4+ICtFYWNoIHBvaW50 IGlzIGEgY29tcGxleCBudW1iZXIgb2YgMzJiaXRzIDogZWl0aGVyIGFzIDIgSU5UMTYgb3IgYXMg Mg0KPiA+Pj4gK0ZQMTYgYmFzZWQgd2hlbiB0aGUgb3B0aW9uIHN1cHBvcnRlZC4NCj4gPj4+ICtU aGUgZGF0YSBsYXlvdXQgaXMgYmFzZWQgb24gY29udGlndW91cyBjb25jYXRlbmF0aW9uIG9mIG91 dHB1dCBkYXRhDQo+ID4+PiArZmlyc3QgYnkgY3ljbGljIHNoaWZ0IHRoZW4gYnkgYW50ZW5uYS4N Cj4gPj4+DQo+ID4+PiAgICBTYW1wbGUgY29kZQ0KPiA+Pj4gICAgLS0tLS0tLS0tLS0NCj4gPj4+ IGRpZmYgLS1naXQgYS9saWIvYmJkZXYvcnRlX2JiZGV2LmMgYi9saWIvYmJkZXYvcnRlX2JiZGV2 LmMgaW5kZXgNCj4gPj4+IDU1NWJkYTkuLjI4YjEwNWQgMTAwNjQ0DQo+ID4+PiAtLS0gYS9saWIv YmJkZXYvcnRlX2JiZGV2LmMNCj4gPj4+ICsrKyBiL2xpYi9iYmRldi9ydGVfYmJkZXYuYw0KPiA+ Pj4gQEAgLTI0LDcgKzI0LDcgQEANCj4gPj4+ICAgICNkZWZpbmUgREVWX05BTUUgIkJCREVWIg0K PiA+Pj4NCj4gPj4+ICAgIC8qIE51bWJlciBvZiBzdXBwb3J0ZWQgb3BlcmF0aW9uIHR5cGVzICov IC0jZGVmaW5lDQo+ID4+PiBCQkRFVl9PUF9UWVBFX0NPVU5UIDUNCj4gPj4+ICsjZGVmaW5lIEJC REVWX09QX1RZUEVfQ09VTlQgNg0KPiA+Pj4gICAgLyogTnVtYmVyIG9mIHN1cHBvcnRlZCBkZXZp Y2Ugc3RhdHVzICovDQo+ID4+PiAgICAjZGVmaW5lIEJCREVWX0RFVl9TVEFUVVNfQ09VTlQgOQ0K PiA+Pj4NCj4gPj4+IEBAIC04NTQsNiArODU0LDkgQEAgc3RydWN0IHJ0ZV9iYmRldiAqDQo+ID4+ PiAgICAJY2FzZSBSVEVfQkJERVZfT1BfTERQQ19FTkM6DQo+ID4+PiAgICAJCXJlc3VsdCA9IHNp emVvZihzdHJ1Y3QgcnRlX2JiZGV2X2VuY19vcCk7DQo+ID4+PiAgICAJCWJyZWFrOw0KPiA+Pj4g KwljYXNlIFJURV9CQkRFVl9PUF9GRlQ6DQo+ID4+PiArCQlyZXN1bHQgPSBzaXplb2Yoc3RydWN0 IHJ0ZV9iYmRldl9mZnRfb3ApOw0KPiA+Pj4gKwkJYnJlYWs7DQo+ID4+PiAgICAJZGVmYXVsdDoN Cj4gPj4+ICAgIAkJYnJlYWs7DQo+ID4+PiAgICAJfQ0KPiA+Pj4gQEAgLTg3Nyw2ICs4ODAsMTAg QEAgc3RydWN0IHJ0ZV9iYmRldiAqDQo+ID4+PiAgICAJCXN0cnVjdCBydGVfYmJkZXZfZW5jX29w ICpvcCA9IGVsZW1lbnQ7DQo+ID4+PiAgICAJCW1lbXNldChvcCwgMCwgbWVtcG9vbC0+ZWx0X3Np emUpOw0KPiA+Pj4gICAgCQlvcC0+bWVtcG9vbCA9IG1lbXBvb2w7DQo+ID4+PiArCX0gZWxzZSBp ZiAodHlwZSA9PSBSVEVfQkJERVZfT1BfRkZUKSB7DQo+ID4+PiArCQlzdHJ1Y3QgcnRlX2JiZGV2 X2ZmdF9vcCAqb3AgPSBlbGVtZW50Ow0KPiA+Pj4gKwkJbWVtc2V0KG9wLCAwLCBtZW1wb29sLT5l bHRfc2l6ZSk7DQo+ID4+PiArCQlvcC0+bWVtcG9vbCA9IG1lbXBvb2w7DQo+ID4+PiAgICAJfQ0K PiA+Pj4gICAgfQ0KPiA+Pj4NCj4gPj4+IEBAIC0xMTI2LDYgKzExMzMsOCBAQCBzdHJ1Y3QgcnRl X21lbXBvb2wgKg0KPiA+Pj4gICAgCQkiUlRFX0JCREVWX09QX1RVUkJPX0RFQyIsDQo+ID4+PiAg ICAJCSJSVEVfQkJERVZfT1BfVFVSQk9fRU5DIiwNCj4gPj4+ICAgIAkJIlJURV9CQkRFVl9PUF9M RFBDX0RFQyIsDQo+ID4+PiArCQkiUlRFX0JCREVWX09QX0xEUENfRU5DIiwNCj4gPj4gV2h5IGxk cGNfZW5jIGxpbmUsIHRoaXMgaXMgYWxyZWFkeSBpbiBjb2RlYmFzZSA/DQo+ID4+PiArCQkiUlRF X0JCREVWX09QX0ZGVCIsDQo+ID4gVGhhbmtzLCB0aGVyZSB0aGlzIGlzIGEgcmViYXNlIGlzc3Vl IGluIHByZXZpb3VzIGNvbW1pdA0KPiA+DQo+ID4NCj4gPj4+ICAgIAl9Ow0KPiA+Pj4NCj4gPj4+ ICAgIAlpZiAob3BfdHlwZSA8IEJCREVWX09QX1RZUEVfQ09VTlQpDQo+ID4+PiBkaWZmIC0tZ2l0 IGEvbGliL2JiZGV2L3J0ZV9iYmRldi5oIGIvbGliL2JiZGV2L3J0ZV9iYmRldi5oIGluZGV4DQo+ ID4+PiBhYzk0MWQ2Li5lZDUyOGI4IDEwMDY0NA0KPiA+Pj4gLS0tIGEvbGliL2JiZGV2L3J0ZV9i YmRldi5oDQo+ID4+PiArKysgYi9saWIvYmJkZXYvcnRlX2JiZGV2LmgNCj4gPj4+IEBAIC00MDEs NiArNDAxLDEyIEBAIHR5cGVkZWYgdWludDE2X3QNCj4gPj4gKCpydGVfYmJkZXZfZW5xdWV1ZV9k ZWNfb3BzX3QpKA0KPiA+Pj4gICAgCQlzdHJ1Y3QgcnRlX2JiZGV2X2RlY19vcCAqKm9wcywNCj4g Pj4+ICAgIAkJdWludDE2X3QgbnVtKTsNCj4gPj4+DQo+ID4+PiArLyoqIEBpbnRlcm5hbCBFbnF1 ZXVlIGZmdCBvcGVyYXRpb25zIGZvciBwcm9jZXNzaW5nIG9uIHF1ZXVlIG9mIGENCj4gPj4+ICtk ZXZpY2UuICovIHR5cGVkZWYgdWludDE2X3QgKCpydGVfYmJkZXZfZW5xdWV1ZV9mZnRfb3BzX3Qp KA0KPiA+Pj4gKwkJc3RydWN0IHJ0ZV9iYmRldl9xdWV1ZV9kYXRhICpxX2RhdGEsDQo+ID4+PiAr CQlzdHJ1Y3QgcnRlX2JiZGV2X2ZmdF9vcCAqKm9wcywNCj4gPj4+ICsJCXVpbnQxNl90IG51bSk7 DQo+ID4+PiArDQo+ID4+PiAgICAvKiogQGludGVybmFsIERlcXVldWUgZW5jb2RlIG9wZXJhdGlv bnMgZnJvbSBhIHF1ZXVlIG9mIGEgZGV2aWNlLiAqLw0KPiA+Pj4gICAgdHlwZWRlZiB1aW50MTZf dCAoKnJ0ZV9iYmRldl9kZXF1ZXVlX2VuY19vcHNfdCkoDQo+ID4+PiAgICAJCXN0cnVjdCBydGVf YmJkZXZfcXVldWVfZGF0YSAqcV9kYXRhLCBAQCAtNDExLDYgKzQxNywxMQ0KPiA+PiBAQCB0eXBl ZGVmDQo+ID4+PiB1aW50MTZfdCAoKnJ0ZV9iYmRldl9kZXF1ZXVlX2RlY19vcHNfdCkoDQo+ID4+ PiAgICAJCXN0cnVjdCBydGVfYmJkZXZfcXVldWVfZGF0YSAqcV9kYXRhLA0KPiA+Pj4gICAgCQlz dHJ1Y3QgcnRlX2JiZGV2X2RlY19vcCAqKm9wcywgdWludDE2X3QgbnVtKTsNCj4gPj4+DQo+ID4+ PiArLyoqIEBpbnRlcm5hbCBEZXF1ZXVlIGZmdCBvcGVyYXRpb25zIGZyb20gYSBxdWV1ZSBvZiBh IGRldmljZS4gKi8NCj4gPj4+ICt0eXBlZGVmIHVpbnQxNl90ICgqcnRlX2JiZGV2X2RlcXVldWVf ZmZ0X29wc190KSgNCj4gPj4+ICsJCXN0cnVjdCBydGVfYmJkZXZfcXVldWVfZGF0YSAqcV9kYXRh LA0KPiA+Pj4gKwkJc3RydWN0IHJ0ZV9iYmRldl9mZnRfb3AgKipvcHMsIHVpbnQxNl90IG51bSk7 DQo+ID4+PiArDQo+ID4+PiAgICAjZGVmaW5lIFJURV9CQkRFVl9OQU1FX01BWF9MRU4gIDY0ICAv Kio8IE1heCBsZW5ndGggb2YgZGV2aWNlDQo+IG5hbWUNCj4gPj4+ICovDQo+ID4+Pg0KPiA+Pj4g ICAgLyoqDQo+ID4+PiBAQCAtNDU5LDYgKzQ3MCwxMCBAQCBzdHJ1Y3QgX19ydGVfY2FjaGVfYWxp Z25lZCBydGVfYmJkZXYgew0KPiA+Pj4gICAgCXJ0ZV9iYmRldl9kZXF1ZXVlX2VuY19vcHNfdCBk ZXF1ZXVlX2xkcGNfZW5jX29wczsNCj4gPj4+ICAgIAkvKiogRGVxdWV1ZSBkZWNvZGUgZnVuY3Rp b24gKi8NCj4gPj4+ICAgIAlydGVfYmJkZXZfZGVxdWV1ZV9kZWNfb3BzX3QgZGVxdWV1ZV9sZHBj X2RlY19vcHM7DQo+ID4+PiArCS8qKiBFbnF1ZXVlIEZGVCBmdW5jdGlvbiAqLw0KPiA+Pj4gKwly dGVfYmJkZXZfZW5xdWV1ZV9mZnRfb3BzX3QgZW5xdWV1ZV9mZnRfb3BzOw0KPiA+Pj4gKwkvKiog RGVxdWV1ZSBGRlQgZnVuY3Rpb24gKi8NCj4gPj4+ICsJcnRlX2JiZGV2X2RlcXVldWVfZmZ0X29w c190IGRlcXVldWVfZmZ0X29wczsNCj4gPj4+ICAgIAljb25zdCBzdHJ1Y3QgcnRlX2JiZGV2X29w cyAqZGV2X29wczsgIC8qKjwgRnVuY3Rpb25zIGV4cG9ydGVkIGJ5DQo+ID4+IFBNRCAqLw0KPiA+ Pj4gICAgCXN0cnVjdCBydGVfYmJkZXZfZGF0YSAqZGF0YTsgIC8qKjwgUG9pbnRlciB0byBkZXZp Y2UgZGF0YSAqLw0KPiA+Pj4gICAgCWVudW0gcnRlX2JiZGV2X3N0YXRlIHN0YXRlOyAgLyoqPCBJ ZiBkZXZpY2UgaXMgY3VycmVudGx5IHVzZWQgb3INCj4gPj4+IG5vdCAqLyBAQCAtNTkxLDYgKzYw NiwzNiBAQCBzdHJ1Y3QgX19ydGVfY2FjaGVfYWxpZ25lZCBydGVfYmJkZXYgew0KPiA+Pj4gICAg CXJldHVybiBkZXYtPmVucXVldWVfbGRwY19kZWNfb3BzKHFfZGF0YSwgb3BzLCBudW1fb3BzKTsN Cj4gPj4+ICAgIH0NCj4gPj4+DQo+ID4+PiArLyoqDQo+ID4+PiArICogRW5xdWV1ZSBhIGJ1cnN0 IG9mIGZmdCBvcGVyYXRpb25zIHRvIGEgcXVldWUgb2YgdGhlIGRldmljZS4NCj4gPj4+ICsgKiBU aGlzIGZ1bmN0aW9ucyBvbmx5IGVucXVldWVzIGFzIG1hbnkgb3BlcmF0aW9ucyBhcyBjdXJyZW50 bHkNCj4gPj4+ICtwb3NzaWJsZSBhbmQNCj4gPj4+ICsgKiBkb2VzIG5vdCBibG9jayB1bnRpbCBA cCBudW1fb3BzIGVudHJpZXMgaW4gdGhlIHF1ZXVlIGFyZSBhdmFpbGFibGUuDQo+ID4+PiArICog VGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBwcm92aWRlIGFueSBlcnJvciBub3RpZmljYXRpb24gdG8g YXZvaWQgdGhlDQo+ID4+PiArICogY29ycmVzcG9uZGluZyBvdmVyaGVhZC4NCj4gPj4+ICsgKg0K PiA+Pj4gKyAqIEBwYXJhbSBkZXZfaWQNCj4gPj4+ICsgKiAgIFRoZSBpZGVudGlmaWVyIG9mIHRo ZSBkZXZpY2UuDQo+ID4+PiArICogQHBhcmFtIHF1ZXVlX2lkDQo+ID4+PiArICogICBUaGUgaW5k ZXggb2YgdGhlIHF1ZXVlLg0KPiA+Pj4gKyAqIEBwYXJhbSBvcHMNCj4gPj4+ICsgKiAgIFBvaW50 ZXIgYXJyYXkgY29udGFpbmluZyBvcGVyYXRpb25zIHRvIGJlIGVucXVldWVkIE11c3QgaGF2ZSBh dA0KPiBsZWFzdA0KPiA+Pj4gKyAqICAgQHAgbnVtX29wcyBlbnRyaWVzDQo+ID4+PiArICogQHBh cmFtIG51bV9vcHMNCj4gPj4+ICsgKiAgIFRoZSBtYXhpbXVtIG51bWJlciBvZiBvcGVyYXRpb25z IHRvIGVucXVldWUuDQo+ID4+PiArICoNCj4gPj4+ICsgKiBAcmV0dXJuDQo+ID4+PiArICogICBU aGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgYWN0dWFsbHkgZW5xdWV1ZWQgKHRoaXMgaXMgdGhlIG51 bWJlciBvZg0KPiA+PiBwcm9jZXNzZWQNCj4gPj4+ICsgKiAgIGVudHJpZXMgaW4gdGhlIEBwIG9w cyBhcnJheSkuDQo+ID4+PiArICovDQo+ID4+PiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4+PiAr c3RhdGljIGlubGluZSB1aW50MTZfdA0KPiA+Pj4gK3J0ZV9iYmRldl9lbnF1ZXVlX2ZmdF9vcHMo dWludDE2X3QgZGV2X2lkLCB1aW50MTZfdCBxdWV1ZV9pZCwNCj4gPj4+ICsJCXN0cnVjdCBydGVf YmJkZXZfZmZ0X29wICoqb3BzLCB1aW50MTZfdCBudW1fb3BzKSB7DQo+ID4+PiArCXN0cnVjdCBy dGVfYmJkZXYgKmRldiA9ICZydGVfYmJkZXZfZGV2aWNlc1tkZXZfaWRdOw0KPiA+PiBXaG8gY2hl Y2tzIHRoZSBpbnB1dCBpcyB2YWxpZCA/DQo+IA0KPiBXaG8gY2hlY2tzIHRoZSBpbnB1dCBpcyB2 YWxpZCA/DQo+IA0KDQpUaGlzIGlzIG5vdCBzcGVjaWZpYyB0byB0aGF0IGNvbW1pdCBidXQgdG8g YW55IG9wZXJhdGlvbi4gVGhpcyBpcyB0aGVyZSBmb3IgeWVhcnMgYW5kIHNlZSB0aGUgY29tbWVu dCBhYm92ZQ0KICogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBwcm92aWRlIGFueSBlcnJvciBub3Rp ZmljYXRpb24gdG8gYXZvaWQgdGhlDQogKiBjb3JyZXNwb25kaW5nIG92ZXJoZWFkLg0KDQo+IA0K PiA+Pj4gKwlzdHJ1Y3QgcnRlX2JiZGV2X3F1ZXVlX2RhdGEgKnFfZGF0YSA9ICZkZXYtPmRhdGEt DQo+ID4+PiBxdWV1ZXNbcXVldWVfaWRdOw0KPiA+Pj4gKwlyZXR1cm4gZGV2LT5lbnF1ZXVlX2Zm dF9vcHMocV9kYXRhLCBvcHMsIG51bV9vcHMpOyB9DQo+ID4+Pg0KPiA+Pj4gICAgLyoqDQo+ID4+ PiAgICAgKiBEZXF1ZXVlIGEgYnVyc3Qgb2YgcHJvY2Vzc2VkIGVuY29kZSBvcGVyYXRpb25zIGZy b20gYSBxdWV1ZSBvZiB0aGUNCj4gPj4gZGV2aWNlLg0KPiA+Pj4gQEAgLTcxNiw2ICs3NjEsMzcg QEAgc3RydWN0IF9fcnRlX2NhY2hlX2FsaWduZWQgcnRlX2JiZGV2IHsNCj4gPj4+ICAgIAlyZXR1 cm4gZGV2LT5kZXF1ZXVlX2xkcGNfZGVjX29wcyhxX2RhdGEsIG9wcywgbnVtX29wcyk7DQo+ID4+ PiAgICB9DQo+ID4+Pg0KPiA+Pj4gKy8qKg0KPiA+Pj4gKyAqIERlcXVldWUgYSBidXJzdCBvZiBm ZnQgb3BlcmF0aW9ucyBmcm9tIGEgcXVldWUgb2YgdGhlIGRldmljZS4NCj4gPj4+ICsgKiBUaGlz IGZ1bmN0aW9ucyByZXR1cm5zIG9ubHkgdGhlIGN1cnJlbnQgY29udGVudHMgb2YgdGhlIHF1ZXVl LCBhbmQNCj4gPj4+ICtkb2VzIG5vdA0KPiA+Pj4gKyAqIGJsb2NrIHVudGlsIEAgbnVtX29wcyBp cyBhdmFpbGFibGUuDQo+ID4+PiArICogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBwcm92aWRlIGFu eSBlcnJvciBub3RpZmljYXRpb24gdG8gYXZvaWQgdGhlDQo+ID4+PiArICogY29ycmVzcG9uZGlu ZyBvdmVyaGVhZC4NCj4gPj4+ICsgKg0KPiA+Pj4gKyAqIEBwYXJhbSBkZXZfaWQNCj4gPj4+ICsg KiAgIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBkZXZpY2UuDQo+ID4+PiArICogQHBhcmFtIHF1ZXVl X2lkDQo+ID4+PiArICogICBUaGUgaW5kZXggb2YgdGhlIHF1ZXVlLg0KPiA+Pj4gKyAqIEBwYXJh bSBvcHMNCj4gPj4+ICsgKiAgIFBvaW50ZXIgYXJyYXkgd2hlcmUgb3BlcmF0aW9ucyB3aWxsIGJl IGRlcXVldWVkIHRvLiBNdXN0IGhhdmUgYXQNCj4gbGVhc3QNCj4gPj4+ICsgKiAgIEBwIG51bV9v cHMgZW50cmllcw0KPiA+Pj4gKyAqIEBwYXJhbSBudW1fb3BzDQo+ID4+PiArICogICBUaGUgbWF4 aW11bSBudW1iZXIgb2Ygb3BlcmF0aW9ucyB0byBkZXF1ZXVlLg0KPiA+Pj4gKyAqDQo+ID4+PiAr ICogQHJldHVybg0KPiA+Pj4gKyAqICAgVGhlIG51bWJlciBvZiBvcGVyYXRpb25zIGFjdHVhbGx5 IGRlcXVldWVkICh0aGlzIGlzIHRoZSBudW1iZXIgb2YNCj4gPj4gZW50cmllcw0KPiA+Pj4gKyAq ICAgY29waWVkIGludG8gdGhlIEBwIG9wcyBhcnJheSkuDQo+ID4+PiArICovDQo+ID4+PiArX19y dGVfZXhwZXJpbWVudGFsDQo+ID4+PiArc3RhdGljIGlubGluZSB1aW50MTZfdA0KPiA+Pj4gK3J0 ZV9iYmRldl9kZXF1ZXVlX2ZmdF9vcHModWludDE2X3QgZGV2X2lkLCB1aW50MTZfdCBxdWV1ZV9p ZCwNCj4gPj4+ICsJCXN0cnVjdCBydGVfYmJkZXZfZmZ0X29wICoqb3BzLCB1aW50MTZfdCBudW1f b3BzKSB7DQo+ID4+PiArCXN0cnVjdCBydGVfYmJkZXYgKmRldiA9ICZydGVfYmJkZXZfZGV2aWNl c1tkZXZfaWRdOw0KPiA+Pj4gKwlzdHJ1Y3QgcnRlX2JiZGV2X3F1ZXVlX2RhdGEgKnFfZGF0YSA9 ICZkZXYtPmRhdGEtDQo+ID4+PiBxdWV1ZXNbcXVldWVfaWRdOw0KPiA+Pj4gKwlyZXR1cm4gZGV2 LT5kZXF1ZXVlX2ZmdF9vcHMocV9kYXRhLCBvcHMsIG51bV9vcHMpOyB9DQo+ID4+PiArDQo+ID4+ PiAgICAvKiogRGVmaW5pdGlvbnMgb2YgZGV2aWNlIGV2ZW50IHR5cGVzICovDQo+ID4+PiAgICBl bnVtIHJ0ZV9iYmRldl9ldmVudF90eXBlIHsNCj4gPj4+ICAgIAlSVEVfQkJERVZfRVZFTlRfVU5L Tk9XTiwgIC8qKjwgdW5rbm93biBldmVudCB0eXBlICovIGRpZmYgLS1naXQNCj4gPj4+IGEvbGli L2JiZGV2L3J0ZV9iYmRldl9vcC5oIGIvbGliL2JiZGV2L3J0ZV9iYmRldl9vcC5oIGluZGV4DQo+ ID4+PiBjZDgyNDE4Li4zZTQ2ZjFkIDEwMDY0NA0KPiA+Pj4gLS0tIGEvbGliL2JiZGV2L3J0ZV9i YmRldl9vcC5oDQo+ID4+PiArKysgYi9saWIvYmJkZXYvcnRlX2JiZGV2X29wLmgNCj4gPj4+IEBA IC00Nyw2ICs0Nyw4IEBADQo+ID4+PiAgICAjZGVmaW5lIFJURV9CQkRFVl9UVVJCT19NQVhfQ09E RV9CTE9DS1MgKDY0KQ0KPiA+Pj4gICAgLyogTERQQzogIE1heGltdW0gbnVtYmVyIG9mIENvZGUg QmxvY2tzIGluIFRyYW5zcG9ydCBCbG9jay4qLw0KPiA+Pj4gICAgI2RlZmluZSBSVEVfQkJERVZf TERQQ19NQVhfQ09ERV9CTE9DS1MgKDI1NikNCj4gPj4+ICsvKiAxMiBDUyBtYXhpbXVtICovDQo+ ID4+PiArI2RlZmluZSBSVEVfQkJERVZfTUFYX0NTXzIgKDYpDQo+ID4+Pg0KPiA+Pj4gICAgLyoq IEZsYWdzIGZvciB0dXJibyBkZWNvZGVyIG9wZXJhdGlvbiBhbmQgY2FwYWJpbGl0eSBzdHJ1Y3R1 cmUgKi8NCj4gPj4+ICAgIGVudW0gcnRlX2JiZGV2X29wX3RkX2ZsYWdfYml0bWFza3MgeyBAQCAt MjExLDYgKzIxMywyNiBAQCBlbnVtDQo+ID4+PiBydGVfYmJkZXZfb3BfbGRwY2VuY19mbGFnX2Jp dG1hc2tzIHsNCj4gPj4+ICAgIAlSVEVfQkJERVZfTERQQ19FTkNfQ09OQ0FURU5BVElPTiA9ICgx VUxMIDw8IDcpDQo+ID4+PiAgICB9Ow0KPiA+Pj4NCj4gPj4+ICsvKiogRmxhZ3MgZm9yIERGVCBv cGVyYXRpb24gYW5kIGNhcGFiaWxpdHkgc3RydWN0dXJlICovIGVudW0NCj4gPj4+ICtydGVfYmJk ZXZfb3BfZmZ0X2ZsYWdfYml0bWFza3Mgew0KPiA+Pj4gKwkvKiogRmxleGlibGUgd2luZG93aW5n IGNhcGFiaWxpdHkgKi8NCj4gPj4+ICsJUlRFX0JCREVWX0ZGVF9XSU5ET1dJTkcgPSAoMVVMTCA8 PCAwKSwNCj4gPj4+ICsJLyoqIEZsZXhpYmxlIGFkanVzdG1lbnQgb2YgQ3ljbGljIFNoaWZ0IHRp bWUgb2Zmc2V0ICovDQo+ID4+PiArCVJURV9CQkRFVl9GRlRfQ1NfQURKVVNUTUVOVCA9ICgxVUxM IDw8IDEpLA0KPiA+Pj4gKwkvKiogU2V0IGZvciBieXBhc3MgdGhlIERGVCBhbmQgZ2V0IGRpcmVj dGx5IGludG8gaURGVCBpbnB1dCAqLw0KPiA+Pj4gKwlSVEVfQkJERVZfRkZUX0RGVF9CWVBBU1Mg PSAoMVVMTCA8PCAyKSwNCj4gPj4+ICsJLyoqIFNldCBmb3IgYnlwYXNzIHRoZSBJREZUIGFuZCBn ZXQgZGlyZWN0bHkgdGhlIERGVCBvdXRwdXQgKi8NCj4gPj4+ICsJUlRFX0JCREVWX0ZGVF9JREZU X0JZUEFTUyA9ICgxVUxMIDw8IDMpLA0KPiA+Pj4gKwkvKiogU2V0IGZvciBieXBhc3MgdGltZSBk b21haW4gd2luZG93aW5nICovDQo+ID4+PiArCVJURV9CQkRFVl9GRlRfV0lORE9XSU5HX0JZUEFT UyA9ICgxVUxMIDw8IDQpLA0KPiA+Pj4gKwkvKiogU2V0IGZvciBvcHRpb25hbCBwb3dlciBtZWFz dXJlbWVudCBvbiBERlQgb3V0cHV0ICovDQo+ID4+PiArCVJURV9CQkRFVl9GRlRfUE9XRVJfTUVB UyA9ICgxVUxMIDw8IDUpLA0KPiA+PiBNZWFzIGhlcmUgdG9vLCBjaGFuZ2UgZ2VuZXJhbGx5DQo+ ID4+PiArCS8qKiBTZXQgaWYgdGhlIGlucHV0IGRhdGEgdXNlZCBGUDE2IGZvcm1hdCAqLw0KPiA+ Pj4gKwlSVEVfQkJERVZfRkZUX0ZQMTZfSU5QVVQgPSAoMVVMTCA8PCA2KSwNCj4gPj4gV2hhdCBh cmUgdGhlIG90aGVyIGRhdGEgdHlwZShzKSA/DQo+ID4+DQo+ID4+IFRoZSBkZWZhdWx0IGlzIG5v dCBtZW50aW9uZWQsIG9yIGkgbWlzc2VkIGl0Lg0KPiA/DQoNCkRlZmF1bHQgdHlwZSBpcyBJTlQx NiBhcyBjYXB0dXJlZCBpbiBkb2MgYWJvdmUNCg0KK3xSVEVfQkJERVZfRkZUX0ZQMTZfSU5QVVQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8IFNldCBpZiB0 aGUgaW5wdXQgZGF0YSBzaGFsbCB1c2UgRlAxNiBmb3JtYXQgaW5zdGVhZCBvZiBJTlQxNiAgICAg ICB8DQorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKw0KK3xSVEVfQkJERVZfRkZUX0ZQMTZfT1VUUFVUICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8IFNldCBpZiB0aGUgb3V0cHV0 IGRhdGEgc2hhbGwgdXNlIEZQMTYgZm9ybWF0IGluc3RlYWQgb2YgSU5UMTYgICAgICB8DQorKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKw0KDQoNCg0KPiA+Pg0KPiA+Pj4gKwkvKiogIFNldCBpZiB0aGUgb3V0cHV0IGRh dGEgdXNlcyBGUDE2IGZvcm1hdCAgKi8NCj4gPj4+ICsJUlRFX0JCREVWX0ZGVF9GUDE2X09VVFBV VCA9ICgxVUxMIDw8IDcpIH07DQo+ID4+PiArDQo+ID4+PiAgICAvKiogRmxhZ3MgZm9yIHRoZSBD b2RlIEJsb2NrL1RyYW5zcG9ydCBibG9jayBtb2RlICAqLw0KPiA+Pj4gICAgZW51bSBydGVfYmJk ZXZfb3BfY2JfbW9kZSB7DQo+ID4+PiAgICAJLyoqIE9uZSBvcGVyYXRpb24gaXMgb25lIG9yIGZy YWN0aW9uIG9mIG9uZSB0cmFuc3BvcnQgYmxvY2sgICovIEBADQo+ID4+PiAtNjg5LDYgKzcxMSw1 NSBAQCBzdHJ1Y3QgcnRlX2JiZGV2X29wX2xkcGNfZW5jIHsNCj4gPj4+ICAgIAl9Ow0KPiA+Pj4g ICAgfTsNCj4gPj4+DQo+ID4+PiArLyoqIE9wZXJhdGlvbiBzdHJ1Y3R1cmUgZm9yIEZGVCBwcm9j ZXNzaW5nLg0KPiA+Pj4gKyAqDQo+ID4+PiArICogVGhlIG9wZXJhdGlvbiBwcm9jZXNzZXMgdGhl IGRhdGEgZm9yIG11bHRpcGxlIGFudGVubmFzIGluIGEgc2luZ2xlDQo+ID4+PiArY2FsbA0KPiA+ Pj4gKyAqICguaS5lIGZvciBhbGwgdGhlIFJFcyBiZWxvbmdpbmcgdG8gYSBnaXZlbiBTUlMgc2Vx dWVuY2UgZm9yDQo+ID4+PiAraW5zdGFuY2UpDQo+ID4+PiArICoNCj4gPj4+ICsgKiBUaGUgb3V0 cHV0IG1idWYgZGF0YSBzdHJ1Y3R1cmUgaXMgZXhwZWN0ZWQgdG8gYmUgYWxsb2NhdGVkIGJ5IHRo ZQ0KPiA+Pj4gKyAqIGFwcGxpY2F0aW9uIHdpdGggZW5vdWdoIHJvb20gZm9yIHRoZSBvdXRwdXQg ZGF0YS4NCj4gPj4+ICsgKi8NCj4gPj4+ICtzdHJ1Y3QgcnRlX2JiZGV2X29wX2ZmdCB7DQo+ID4+ PiArCS8qKiBJbnB1dCBkYXRhIHN0YXJ0aW5nIGZyb20gZmlyc3QgYW50ZW5uYSAqLw0KPiA+Pj4g KwlzdHJ1Y3QgcnRlX2JiZGV2X29wX2RhdGEgYmFzZV9pbnB1dDsNCj4gPj4+ICsJLyoqIE91dHB1 dCBkYXRhIHN0YXJ0aW5nIGZyb20gZmlyc3QgYW50ZW5uYSBhbmQgZmlyc3QgY3ljbGljIHNoaWZ0 ICovDQo+ID4+PiArCXN0cnVjdCBydGVfYmJkZXZfb3BfZGF0YSBiYXNlX291dHB1dDsNCj4gPj4+ ICsJLyoqIE9wdGlvbmFsIHBvd2VyIG1lYXN1cmVtZW50IG91dHB1dCBkYXRhICovDQo+ID4+PiAr CXN0cnVjdCBydGVfYmJkZXZfb3BfZGF0YSBwb3dlcl9tZWFzX291dHB1dDsNCj4gPj4+ICsJLyoq IEZsYWdzIGZyb20gcnRlX2JiZGV2X29wX2ZmdF9mbGFnX2JpdG1hc2tzICovDQo+ID4+PiArCXVp bnQzMl90IG9wX2ZsYWdzOw0KPiA+Pj4gKwkvKiogSW5wdXQgc2VxdWVuY2Ugc2l6ZSBpbiAzMi1i aXRzIHBvaW50cyAqLw0KPiA+Pj4gKwl1aW50MTZfdCBpbnB1dF9zZXF1ZW5jZV9zaXplOw0KPiA+ PiBzaXplIGlzIGJ5dGVzKjQgPyBob3cgZG9lcyB0aGlzIHdvcmsgd2l0aCBmcDE2ID8NCj4gPw0K DQpUaGlzIGlzIElRIGRhdGEsIGhlbmNlIGEgY29tcGxleCBudW1iZXIgdXNpbmcgZWl0aGVyIGlu dDE2IG9yIGZwNiB3b3VsZCBhbHdheXMgYmUgMzIgYml0cy4NCg0KDQo+ID4+PiArCS8qKiBQYWRk aW5nIGF0IHRoZSBzdGFydCBvZiB0aGUgc2VxdWVuY2UgKi8NCj4gPj4+ICsJdWludDE2X3QgaW5w dXRfbGVhZGluZ19wYWRkaW5nOw0KPiA+Pj4gKwkvKiogT3V0cHV0IHNlcXVlbmNlIHNpemUgaW4g MzItYml0cyBwb2ludHMgKi8NCj4gPj4+ICsJdWludDE2X3Qgb3V0cHV0X3NlcXVlbmNlX3NpemU7 DQo+ID4+PiArCS8qKiBEZXBhZGRpbmcgYXQgdGhlIHN0YXJ0IG9mIHRoZSBERlQgb3V0cHV0ICov DQo+ID4+PiArCXVpbnQxNl90IG91dHB1dF9sZWFkaW5nX2RlcGFkZGluZzsNCj4gPj4+ICsJLyoq IFdpbmRvdyBpbmRleCBiZWluZyB1c2VkIGZvciBlYWNoIGN5Y2xpYyBzaGlmdCBvdXRwdXQgKi8N Cj4gPj4+ICsJdWludDhfdCB3aW5kb3dfaW5kZXhbUlRFX0JCREVWX01BWF9DU18yXTsNCj4gPj4+ ICsJLyoqIEJpdG1hcCBvZiB0aGUgY3ljbGljIHNoaWZ0IG91dHB1dCByZXF1ZXN0ZWQgKi8NCj4g Pj4+ICsJdWludDE2X3QgY3NfYml0bWFwOw0KPiA+Pj4gKwkvKiogTnVtYmVyIG9mIGFudGVubmFz IGFzIGEgbG9nMiDigJMgOCB0byAxMjggKi8NCj4gPj4+ICsJdWludDhfdCBudW1fYW50ZW5uYXNf bG9nMjsNCj4gPj4+ICsJLyoqIGlERlQgc2l6ZSBhcyBhIGxvZzIgLSAzMiB0byAyMDQ4ICovDQo+ ID4+PiArCXVpbnQ4X3QgaWRmdF9sb2cyOw0KPiA+Pj4gKwkvKiogREZUIHNpemUgYXMgYSBsb2cy IC0gOCB0byAyMDQ4ICovDQo+ID4+PiArCXVpbnQ4X3QgZGZ0X2xvZzI7DQo+ID4+PiArCS8qKiBB ZGp1c3RtZW50IG9mIHBvc2l0aW9uIG9mIHRoZSBjeWNsaWMgc2hpZnRzIC0gLTMxIHRvIDMxICov DQo+ID4+PiArCWludDhfdCBjc190aW1lX2FkanVzdG1lbnQ7DQo+ID4+PiArCS8qKiBpREZUIHNo aWZ0IGRvd24gKi8NCj4gPj4+ICsJaW50OF90IGlkZnRfc2hpZnQ7DQo+ID4+PiArCS8qKiBERlQg c2hpZnQgZG93biAqLw0KPiA+Pj4gKwlpbnQ4X3QgZGZ0X3NoaWZ0Ow0KPiA+Pj4gKwkvKiogTkNT IHJlY2lwcm9jYWwgZmFjdG9yICAqLw0KPiA+Pj4gKwl1aW50MTZfdCBuY3NfcmVjaXByb2NhbDsN Cj4gPj4+ICsJLyoqIHBvd2VyIG1lYXN1cmVtZW50IG91dCBzaGlmdCBkb3duICovDQo+ID4+PiAr CXVpbnQxNl90IHBvd2VyX3NoaWZ0Ow0KPiA+Pj4gKwkvKiogQWRqdXN0IHRoZSBGUDYgZXhwb25l bnQgZm9yIElOVDwtPkZQMTYgY29udmVyc2lvbiAqLw0KPiA+Pj4gKwl1aW50MTZfdCBmcDE2X2V4 cF9hZGp1c3Q7DQo+ID4+PiArfTsNCj4gPj4+ICsNCj4gPj4+ICAgIC8qKiBMaXN0IG9mIHRoZSBj YXBhYmlsaXRpZXMgZm9yIHRoZSBUdXJibyBEZWNvZGVyICovDQo+ID4+PiAgICBzdHJ1Y3QgcnRl X2JiZGV2X29wX2NhcF90dXJib19kZWMgew0KPiA+Pj4gICAgCS8qKiBGbGFncyBmcm9tIHJ0ZV9i YmRldl9vcF90ZF9mbGFnX2JpdG1hc2tzICovIEBAIC03NDEsNiArODEyLDE2DQo+ID4+PiBAQCBz dHJ1Y3QgcnRlX2JiZGV2X29wX2NhcF9sZHBjX2VuYyB7DQo+ID4+PiAgICAJdWludDE2X3QgbnVt X2J1ZmZlcnNfZHN0Ow0KPiA+Pj4gICAgfTsNCj4gPj4+DQo+ID4+PiArLyoqIExpc3Qgb2YgdGhl IGNhcGFiaWxpdGllcyBmb3IgdGhlIEZGVCAqLyBzdHJ1Y3QNCj4gPj4+ICtydGVfYmJkZXZfb3Bf Y2FwX2ZmdCB7DQo+ID4+PiArCS8qKiBGbGFncyBmcm9tIHJ0ZV9iYmRldl9vcF9sZHBjZW5jX2Zs YWdfYml0bWFza3MgKi8NCj4gPj4geW91IG1lYW4gJ2Zyb20gcnRlX2JiZGV2X29wX2ZmdF9mbGFn X2JpdG1hc2tzJyA/DQo+ID8NCg0KVGhhbmtzLCBmaXhlZCBpbiBuZXcgY29tbWl0DQoNCj4gPj4+ ICsJdWludDMyX3QgY2FwYWJpbGl0eV9mbGFnczsNCj4gPj4+ICsJLyoqIE51bSBpbnB1dCBjb2Rl IGJsb2NrIGJ1ZmZlcnMgKi8NCj4gPj4+ICsJdWludDE2X3QgbnVtX2J1ZmZlcnNfc3JjOw0KPiA+ Pj4gKwkvKiogTnVtIG91dHB1dCBjb2RlIGJsb2NrIGJ1ZmZlcnMgKi8NCj4gPj4+ICsJdWludDE2 X3QgbnVtX2J1ZmZlcnNfZHN0Ow0KPiA+Pj4gK307DQo+ID4+PiArDQo+ID4+PiAgICAvKiogRGlm ZmVyZW50IG9wZXJhdGlvbiB0eXBlcyBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZSAqLw0KPiA+Pj4g ICAgZW51bSBydGVfYmJkZXZfb3BfdHlwZSB7DQo+ID4+PiAgICAJUlRFX0JCREVWX09QX05PTkUs ICAvKio8IER1bW15IG9wZXJhdGlvbiB0aGF0IGRvZXMgbm90aGluZyAqLw0KPiA+PiBAQA0KPiA+ Pj4gLTc0OCw2ICs4MjksNyBAQCBlbnVtIHJ0ZV9iYmRldl9vcF90eXBlIHsNCj4gPj4+ICAgIAlS VEVfQkJERVZfT1BfVFVSQk9fRU5DLCAgLyoqPCBUdXJibyBlbmNvZGUgKi8NCj4gPj4+ICAgIAlS VEVfQkJERVZfT1BfTERQQ19ERUMsICAvKio8IExEUEMgZGVjb2RlICovDQo+ID4+PiAgICAJUlRF X0JCREVWX09QX0xEUENfRU5DLCAgLyoqPCBMRFBDIGVuY29kZSAqLw0KPiA+Pj4gKwlSVEVfQkJE RVZfT1BfRkZULCAgLyoqPCBGRlQgKi8NCj4gPj4+ICAgIAlSVEVfQkJERVZfT1BfVFlQRV9QQURE RURfTUFYID0gOCwgIC8qKjwgTWF4aW11bSBvcCB0eXBlDQo+ID4+IG51bWJlciBpbmNsdWRpbmcg cGFkZGluZyAqLw0KPiA+Pj4gICAgfTsNCj4gPj4+DQo+ID4+PiBAQCAtNzkxLDYgKzg3MywxOCBA QCBzdHJ1Y3QgcnRlX2JiZGV2X2RlY19vcCB7DQo+ID4+PiAgICAJfTsNCj4gPj4+ICAgIH07DQo+ ID4+Pg0KPiA+Pj4gKy8qKiBTdHJ1Y3R1cmUgc3BlY2lmeWluZyBhIHNpbmdsZSBmZnQgb3BlcmF0 aW9uICovIHN0cnVjdA0KPiA+Pj4gK3J0ZV9iYmRldl9mZnRfb3Agew0KPiA+Pj4gKwkvKiogU3Rh dHVzIG9mIG9wZXJhdGlvbiB0aGF0IHdhcyBwZXJmb3JtZWQgKi8NCj4gPj4+ICsJaW50IHN0YXR1 czsNCj4gPj4+ICsJLyoqIE1lbXBvb2wgd2hpY2ggb3AgaW5zdGFuY2UgaXMgaW4gKi8NCj4gPj4+ ICsJc3RydWN0IHJ0ZV9tZW1wb29sICptZW1wb29sOw0KPiA+Pj4gKwkvKiogT3BhcXVlIHBvaW50 ZXIgZm9yIHVzZXIgZGF0YSAqLw0KPiA+Pj4gKwl2b2lkICpvcGFxdWVfZGF0YTsNCj4gPj4+ICsJ LyoqIENvbnRhaW5zIHR1cmJvIGRlY29kZXIgc3BlY2lmaWMgcGFyYW1ldGVycyAqLw0KPiA+Pj4g KwlzdHJ1Y3QgcnRlX2JiZGV2X29wX2ZmdCBmZnQ7DQo+ID4+PiArfTsNCj4gPj4+ICsNCj4gPj4+ ICAgIC8qKiBPcGVyYXRpb24gY2FwYWJpbGl0aWVzIHN1cHBvcnRlZCBieSBhIGRldmljZSAqLw0K PiA+Pj4gICAgc3RydWN0IHJ0ZV9iYmRldl9vcF9jYXAgew0KPiA+Pj4gICAgCWVudW0gcnRlX2Ji ZGV2X29wX3R5cGUgdHlwZTsgIC8qKjwgVHlwZSBvZiBvcGVyYXRpb24gKi8gQEAgLTc5OSw2DQo+ ID4+PiArODkzLDcgQEAgc3RydWN0IHJ0ZV9iYmRldl9vcF9jYXAgew0KPiA+Pj4gICAgCQlzdHJ1 Y3QgcnRlX2JiZGV2X29wX2NhcF90dXJib19lbmMgdHVyYm9fZW5jOw0KPiA+Pj4gICAgCQlzdHJ1 Y3QgcnRlX2JiZGV2X29wX2NhcF9sZHBjX2RlYyBsZHBjX2RlYzsNCj4gPj4+ICAgIAkJc3RydWN0 IHJ0ZV9iYmRldl9vcF9jYXBfbGRwY19lbmMgbGRwY19lbmM7DQo+ID4+PiArCQlzdHJ1Y3QgcnRl X2JiZGV2X29wX2NhcF9mZnQgZmZ0Ow0KPiA+Pj4gICAgCX0gY2FwOyAgLyoqPCBPcGVyYXRpb24t dHlwZSBzcGVjaWZpYyBjYXBhYmlsaXRpZXMgKi8NCj4gPj4+ICAgIH07DQo+ID4+Pg0KPiA+Pj4g QEAgLTkxOCw2ICsxMDEzLDQyIEBAIHN0cnVjdCBydGVfbWVtcG9vbCAqDQo+ID4+PiAgICB9DQo+ ID4+Pg0KPiA+Pj4gICAgLyoqDQo+ID4+PiArICogQnVsayBhbGxvY2F0ZSBmZnQgb3BlcmF0aW9u cyBmcm9tIGEgbWVtcG9vbCB3aXRoIHBhcmFtZXRlciBkZWZhdWx0cw0KPiA+PiByZXNldC4NCj4g Pj4+ICsgKg0KPiA+Pj4gKyAqIEBwYXJhbSBtZW1wb29sDQo+ID4+PiArICogICBPcGVyYXRpb24g bWVtcG9vbCwgY3JlYXRlZCBieSBydGVfYmJkZXZfb3BfcG9vbF9jcmVhdGUoKS4NCj4gPj4+ICsg KiBAcGFyYW0gb3BzDQo+ID4+PiArICogICBPdXRwdXQgYXJyYXkgdG8gcGxhY2UgYWxsb2NhdGVk IG9wZXJhdGlvbnMNCj4gPj4+ICsgKiBAcGFyYW0gbnVtX29wcw0KPiA+Pj4gKyAqICAgTnVtYmVy IG9mIG9wZXJhdGlvbnMgdG8gYWxsb2NhdGUNCj4gPj4+ICsgKg0KPiA+Pj4gKyAqIEByZXR1cm5z DQo+ID4+PiArICogICAtIDAgb24gc3VjY2Vzcw0KPiA+Pj4gKyAqICAgLSBFSU5WQUwgaWYgaW52 YWxpZCBtZW1wb29sIGlzIHByb3ZpZGVkDQo+ID4+PiArICovDQo+ID4+PiArX19ydGVfZXhwZXJp bWVudGFsDQo+ID4+PiArc3RhdGljIGlubGluZSBpbnQNCj4gPj4+ICtydGVfYmJkZXZfZmZ0X29w X2FsbG9jX2J1bGsoc3RydWN0IHJ0ZV9tZW1wb29sICptZW1wb29sLA0KPiA+Pj4gKwkJc3RydWN0 IHJ0ZV9iYmRldl9mZnRfb3AgKipvcHMsIHVpbnQxNl90IG51bV9vcHMpIHsNCj4gPj4+ICsJc3Ry dWN0IHJ0ZV9iYmRldl9vcF9wb29sX3ByaXZhdGUgKnByaXY7DQo+ID4+PiArCWludCByZXQ7DQo+ ID4+PiArDQo+ID4+PiArCS8qIENoZWNrIHR5cGUgKi8NCj4gPj4+ICsJcHJpdiA9IChzdHJ1Y3Qg cnRlX2JiZGV2X29wX3Bvb2xfcHJpdmF0ZSAqKQ0KPiA+Pj4gKwkJCXJ0ZV9tZW1wb29sX2dldF9w cml2KG1lbXBvb2wpOw0KPiA+Pj4gKwlpZiAodW5saWtlbHkocHJpdi0+dHlwZSAhPSBSVEVfQkJE RVZfT1BfRkZUKSkNCj4gPj4+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+Pj4gKw0KPiA+Pj4gKwkv KiBHZXQgZWxlbWVudHMgKi8NCj4gPj4+ICsJcmV0ID0gcnRlX21lbXBvb2xfZ2V0X2J1bGsobWVt cG9vbCwgKHZvaWQgKiopb3BzLCBudW1fb3BzKTsNCj4gPj4+ICsJaWYgKHVubGlrZWx5KHJldCA8 IDApKQ0KPiA+Pj4gKwkJcmV0dXJuIHJldDsNCj4gPj4gaWYtY2hlY2sgaXMgbm90IG5lZWRlZCwg anVzdA0KPiA+Pg0KPiA+PiByZXR1cm4gcmV0Ow0KPiA+Pg0KPiA+PiBhbmQgZHJvcCB0aGUgbmV4 dCBsaW5lDQo+ID8NCg0KRml4ZWQgdGhyb3VnaCBhIG5ldyBjb21taXQgaW4gbmV3IHZlcnNpb24N Cg0KPiA+Pg0KPiA+PiBUb20NCj4gPj4NCj4gPj4+ICsNCj4gPj4+ICsJcmV0dXJuIDA7DQo+ID4+ PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gKy8qKg0KPiA+Pj4gICAgICogRnJlZSBkZWNvZGUgb3BlcmF0 aW9uIHN0cnVjdHVyZXMgdGhhdCB3ZXJlIGFsbG9jYXRlZCBieQ0KPiA+Pj4gICAgICogcnRlX2Ji ZGV2X2RlY19vcF9hbGxvY19idWxrKCkuDQo+ID4+PiAgICAgKiBBbGwgc3RydWN0dXJlcyBtdXN0 IGJlbG9uZyB0byB0aGUgc2FtZSBtZW1wb29sLg0KPiA+Pj4gQEAgLTk1MSw2ICsxMDgyLDI0IEBA IHN0cnVjdCBydGVfbWVtcG9vbCAqDQo+ID4+PiAgICAJCXJ0ZV9tZW1wb29sX3B1dF9idWxrKG9w c1swXS0+bWVtcG9vbCwgKHZvaWQgKiopb3BzLA0KPiA+PiBudW1fb3BzKTsNCj4gPj4+ICAgIH0N Cj4gPj4+DQo+ID4+PiArLyoqDQo+ID4+PiArICogRnJlZSBlbmNvZGUgb3BlcmF0aW9uIHN0cnVj dHVyZXMgdGhhdCB3ZXJlIGFsbG9jYXRlZCBieQ0KPiA+Pj4gKyAqIHJ0ZV9iYmRldl9mZnRfb3Bf YWxsb2NfYnVsaygpLg0KPiA+Pj4gKyAqIEFsbCBzdHJ1Y3R1cmVzIG11c3QgYmVsb25nIHRvIHRo ZSBzYW1lIG1lbXBvb2wuDQo+ID4+PiArICoNCj4gPj4+ICsgKiBAcGFyYW0gb3BzDQo+ID4+PiAr ICogICBPcGVyYXRpb24gc3RydWN0dXJlcw0KPiA+Pj4gKyAqIEBwYXJhbSBudW1fb3BzDQo+ID4+ PiArICogICBOdW1iZXIgb2Ygc3RydWN0dXJlcw0KPiA+Pj4gKyAqLw0KPiA+Pj4gK19fcnRlX2V4 cGVyaW1lbnRhbA0KPiA+Pj4gK3N0YXRpYyBpbmxpbmUgdm9pZA0KPiA+Pj4gK3J0ZV9iYmRldl9m ZnRfb3BfZnJlZV9idWxrKHN0cnVjdCBydGVfYmJkZXZfZmZ0X29wICoqb3BzLCB1bnNpZ25lZA0K PiA+Pj4gK2ludCBudW1fb3BzKSB7DQo+ID4+PiArCWlmIChudW1fb3BzID4gMCkNCj4gPj4+ICsJ CXJ0ZV9tZW1wb29sX3B1dF9idWxrKG9wc1swXS0+bWVtcG9vbCwgKHZvaWQgKiopb3BzLA0KPiA+ PiBudW1fb3BzKTsgfQ0KPiA+Pj4gKw0KPiA+Pj4gICAgI2lmZGVmIF9fY3BsdXNwbHVzDQo+ID4+ PiAgICB9DQo+ID4+PiAgICAjZW5kaWYNCj4gPj4+IGRpZmYgLS1naXQgYS9saWIvYmJkZXYvdmVy c2lvbi5tYXAgYi9saWIvYmJkZXYvdmVyc2lvbi5tYXAgaW5kZXgNCj4gPj4+IDlhYzM2NDMuLmVm YWU1MGIgMTAwNjQ0DQo+ID4+PiAtLS0gYS9saWIvYmJkZXYvdmVyc2lvbi5tYXANCj4gPj4+ICsr KyBiL2xpYi9iYmRldi92ZXJzaW9uLm1hcA0KPiA+Pj4gQEAgLTQ0LDQgKzQ0LDggQEAgRVhQRVJJ TUVOVEFMIHsNCj4gPj4+ICAgIAlnbG9iYWw6DQo+ID4+Pg0KPiA+Pj4gICAgCXJ0ZV9iYmRldl9k ZXZpY2Vfc3RhdHVzX3N0cjsNCj4gPj4+ICsJcnRlX2JiZGV2X2VucXVldWVfZmZ0X29wczsNCj4g Pj4+ICsJcnRlX2JiZGV2X2RlcXVldWVfZmZ0X29wczsNCj4gPj4+ICsJcnRlX2JiZGV2X2ZmdF9v cF9hbGxvY19idWxrOw0KPiA+Pj4gKwlydGVfYmJkZXZfZmZ0X29wX2ZyZWVfYnVsazsNCj4gPj4+ ICAgIH07DQoNCg==