From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 31643A04B5; Wed, 30 Sep 2020 21:54:09 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 753EA1D53A; Wed, 30 Sep 2020 21:54:07 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 1691A1D52D for ; Wed, 30 Sep 2020 21:54:04 +0200 (CEST) IronPort-SDR: dpgD/UExCE42k6V0PkE8DQVRxejBfSXbzyCL39HbiUYZx54rPK+RkJl8U+XdiymGQqa6ktgIKk 7eSnrEUrIK4A== X-IronPort-AV: E=McAfee;i="6000,8403,9760"; a="163394622" X-IronPort-AV: E=Sophos;i="5.77,322,1596524400"; d="scan'208";a="163394622" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Sep 2020 12:53:59 -0700 IronPort-SDR: 5vBdU93GQI77gOE9rEZF+YYrSYsy1zMaASHQgcCOVCnvqd/IuuZBVDVVXGWXxirq4XbPhLvXrU kQDIrpTXFn6w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,322,1596524400"; d="scan'208";a="499150535" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orsmga005.jf.intel.com with ESMTP; 30 Sep 2020 12:53:59 -0700 Received: from orsmsx609.amr.corp.intel.com (10.22.229.22) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 30 Sep 2020 12:53:57 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX609.amr.corp.intel.com (10.22.229.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 30 Sep 2020 12:53:57 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Wed, 30 Sep 2020 12:53:57 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.172) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Wed, 30 Sep 2020 12:53:56 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M0NxbOtoAmcxXKnzDutHySvHMTVSkdrPVhKXal6lda+bWZ3Itpf2SrjF+RYoOwXK87+cBsa3GHVXmkbE3hBpEN8zLP6w1c//mcV/w4U4NBMVKoO6wXgWG27x8BOhIjF+7Nn/MLtH3vHsuVbNlF9AiDsWQuwqgR+sMyF+E/B8pz8KOK57Rd3tNIf9oCsdelDWbRNA9dDcW5Qd/4XtlL2TP7qE7eTL6Evqc4mk4sJiyc0BhS6naogGVsZrsJbeY5GYAdB01zO27k+ykRSk2neAFyw1AlEhmI/PbzAqm9yKvbp6HmnDibuMYlhhXlmj6AXnhBal9pxExuS9pFQJoRhMrQ== 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-SenderADCheck; bh=gyQfIHqGScl0Tz/LY4vzTgFB+FsBWwfguh++Aurq7rY=; b=ha6HF3haSmwKOUQcFFqlYCuaOUZ6k4eKw+kYsQWlDh65tJJpqt9CK0L2T9FOqRh/TXoBX533nRyijiJj3ycPEedgEKdx+zQBEFxnecX0plZf8Ap7vKTNGX+2akZzBVZBmQQzDZ9V8UrhId3+zaD+MBE3sZoma0XzEWeLXJTXCtqLxNX0se0+g16karIxdD2l7uGvcY1G4+eblLpUSv1qtzLCYzMnqyKZDhC1JRTVuwHnKvrqrk4ayMv052zGIPKCqWx2cUEgEkQ2JYSghuj4PqL4LDZr2Dal/O33Wzn8dVjmKp+/3EW8eaopqWqCWWLnDsBMWseZnia7T4XTi6b1RQ== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gyQfIHqGScl0Tz/LY4vzTgFB+FsBWwfguh++Aurq7rY=; b=BaXvGppIXQzyjnbMNyYcR7TdV/LR6H9eDpPAY+HTjE/yeXsNEWZ7H4TTGYRak7WHaxOfU9/yAelBH5kcP1eH1uILDdvtMjD72ghM4u0LcErxSZDsWTnJ49Um9NLgCnV4w+8Pw5oz8V/rm/5tUexTGqb9EH84vC5c2zJERukPwHw= Received: from BY5PR11MB4451.namprd11.prod.outlook.com (2603:10b6:a03:1cb::30) by BY5PR11MB4136.namprd11.prod.outlook.com (2603:10b6:a03:192::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.24; Wed, 30 Sep 2020 19:53:31 +0000 Received: from BY5PR11MB4451.namprd11.prod.outlook.com ([fe80::4162:97e1:7d04:a508]) by BY5PR11MB4451.namprd11.prod.outlook.com ([fe80::4162:97e1:7d04:a508%7]) with mapi id 15.20.3412.028; Wed, 30 Sep 2020 19:53:31 +0000 From: "Chautru, Nicolas" To: Tom Rix , "dev@dpdk.org" , "akhil.goyal@nxp.com" CC: "Richardson, Bruce" , "Xu, Rosen" , "dave.burley@accelercomm.com" , "aidan.goddard@accelercomm.com" , "Yigit, Ferruh" , "Liu, Tianjiao" Thread-Topic: [dpdk-dev] [PATCH v9 09/10] baseband/acc100: add debug function to validate input Thread-Index: AQHWlffi3sXoK/iaDUujONBlZ+GcfamBkIwAgAAImsA= Date: Wed, 30 Sep 2020 19:53:30 +0000 Message-ID: References: <1597796731-57841-12-git-send-email-nicolas.chautru@intel.com> <1601339385-117424-1-git-send-email-nicolas.chautru@intel.com> <1601339385-117424-10-git-send-email-nicolas.chautru@intel.com> In-Reply-To: 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.5.1.3 authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [45.28.143.88] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 726831eb-e7fe-4c8d-6600-08d8657a81cd x-ms-traffictypediagnostic: BY5PR11MB4136: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:751; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 8+v1e1FtKKS+cjti50pjGtnPuln1qiF47KndiGMy3HdGkGe5PQf4slLsMuSFdoOjJNY1YGHCQ1EHDhrlJH0jOakTHzTPBuPheqghgztyiQuMgO3swE1+m6ougn6N4dEuQbiuy5yJwBJrRRXi7QCzuzrt84GorW02F83NtvFt0f18B5te86VVGEMo3TSXalo6PPnhqonyRLxFKQl7aIBrvHm7lV5tKxD0+C5G7aBTpknuF1dpx/0EtXI3O8N7CLsU0fw/rU9HtuN7M8Pm+zAWabC16BIgjw/Zoruz0JWLrO50jA4zslQnktklvPbcXDeS7+5vlRdwpwqMPvdW09sBs1z5zKq3eYTIFaEt/Ij37zM1l6ggV11ZQpkPNnbJD7VP 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:(4636009)(376002)(136003)(39860400002)(396003)(346002)(366004)(316002)(76116006)(8676002)(186003)(54906003)(110136005)(52536014)(66946007)(26005)(53546011)(6506007)(7696005)(8936002)(83380400001)(15650500001)(9686003)(107886003)(55016002)(2906002)(30864003)(4326008)(33656002)(86362001)(66556008)(66476007)(71200400001)(64756008)(478600001)(5660300002)(66446008); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: 2xUigIQWHPsDEA3PeD2gfJUv5W6cV0UG3FiZL0rj7Kl0w5G4lgFLsEtazWj3HAd1neZlk9j8eqvhJ8//ky9Vh2fH6XWXYUKDSm6ePyydyVuZHh97mehAQzyLtWR+plVy+ThwqkGatmEjesqIy2N1ugRdlUgtw7hujiWFn2TcDPfRR55Uj3VYmat2tGtUENiP4HAQGy37mTyYeQPb0SXgSuloK/2tKNK85hTKgnnSdh2QB+bbfAcIKEuEDCdlkV0whFv0MIVYHxtXFyUSRW/cjcSJ5ofvQ4Wa+QWMyIBGZanpMcgTx2sJWA/kvkamF69yW6cfRF5FkNVf2L3mXDyCms56Zhu1XKFnevuBZG7Je9h9BEeBjnvAvlJxfwNevpHyINLI8vdqPtBlNR+dKH1HwdLS8Jqvc671hmb9hQkxCUFLuCGIp2FnA92y202jGbWSXz2pYPvIVPjJa+3Y32hQK95UlvHiGSqfUCjJrvcBozZUEbaYdOAEABYAK9aaNL8o0h1moaGYFoQWhKsu7SyBlIfibgBhpkMoMvGy6tkqnI10wbTR+pT16RHpSdGaNBpyvVP+Coa8CNH7bfuHrA+Ku0sOIV92w/e0pV02XK4tRAYCcudsu7lHVJeO/n/i8hivGdKmA9kPd/0wSkA2/QwQuA== 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: 726831eb-e7fe-4c8d-6600-08d8657a81cd X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Sep 2020 19:53:30.8394 (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: c+BFG6LSv2Wk5YfdhRujuVuYn1uuCHyFoOlRzZI9Um9BvsY2ACtWwtLZdMZIvwkOsQ2im9+9i/eQzd/ZafluqywoEt4JhVBg0TJ5saIsKVk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR11MB4136 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v9 09/10] baseband/acc100: add debug function to validate input X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" SGkgVG9tLCANCg0KPiBGcm9tOiBUb20gUml4IDx0cml4QHJlZGhhdC5jb20+DQo+IE9uIDkvMjgv MjAgNToyOSBQTSwgTmljb2xhcyBDaGF1dHJ1IHdyb3RlOg0KPiA+IERlYnVnIGZ1bmN0aW9ucyB0 byB2YWxpZGF0ZSB0aGUgaW5wdXQgQVBJIGZyb20gdXNlciBPbmx5IGVuYWJsZWQgaW4NCj4gPiBE RUJVRyBtb2RlIGF0IGJ1aWxkIHRpbWUNCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IE5pY29sYXMg Q2hhdXRydSA8bmljb2xhcy5jaGF1dHJ1QGludGVsLmNvbT4NCj4gPiBBY2tlZC1ieTogTGl1IFRp YW5qaWFvIDxUaWFuamlhby5saXVAaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJzL2Jh c2ViYW5kL2FjYzEwMC9ydGVfYWNjMTAwX3BtZC5jIHwgNDI0DQo+ID4gKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKw0KPiA+ICAxIGZpbGUgY2hhbmdlZCwgNDI0IGluc2VydGlvbnMoKykN Cj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2ViYW5kL2FjYzEwMC9ydGVfYWNjMTAw X3BtZC5jDQo+ID4gYi9kcml2ZXJzL2Jhc2ViYW5kL2FjYzEwMC9ydGVfYWNjMTAwX3BtZC5jDQo+ ID4gaW5kZXggYjZkOWU3Yy4uMzU4OTgxNCAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2Jhc2Vi YW5kL2FjYzEwMC9ydGVfYWNjMTAwX3BtZC5jDQo+ID4gKysrIGIvZHJpdmVycy9iYXNlYmFuZC9h Y2MxMDAvcnRlX2FjYzEwMF9wbWQuYw0KPiA+IEBAIC0xOTQ1LDYgKzE5NDUsMjMxIEBADQo+ID4N Cj4gPiAgfQ0KPiA+DQo+ID4gKyNpZmRlZiBSVEVfTElCUlRFX0JCREVWX0RFQlVHDQo+ID4gKy8q IFZhbGlkYXRlcyB0dXJibyBlbmNvZGVyIHBhcmFtZXRlcnMgKi8gc3RhdGljIGlubGluZSBpbnQN Cj4gPiArdmFsaWRhdGVfZW5jX29wKHN0cnVjdCBydGVfYmJkZXZfZW5jX29wICpvcCkgew0KPiA+ ICsJc3RydWN0IHJ0ZV9iYmRldl9vcF90dXJib19lbmMgKnR1cmJvX2VuYyA9ICZvcC0+dHVyYm9f ZW5jOw0KPiA+ICsJc3RydWN0IHJ0ZV9iYmRldl9vcF9lbmNfdHVyYm9fY2JfcGFyYW1zICpjYiA9 IE5VTEw7DQo+ID4gKwlzdHJ1Y3QgcnRlX2JiZGV2X29wX2VuY190dXJib190Yl9wYXJhbXMgKnRi ID0gTlVMTDsNCj4gPiArCXVpbnQxNl90IGt3LCBrd19uZWcsIGt3X3BvczsNCj4gPiArDQo+ID4g KwlpZiAob3AtPm1lbXBvb2wgPT0gTlVMTCkgew0KPiA+ICsJCXJ0ZV9iYmRldl9sb2coRVJSLCAi SW52YWxpZCBtZW1wb29sIHBvaW50ZXIiKTsNCj4gPiArCQlyZXR1cm4gLTE7DQo+ID4gKwl9DQo+ ID4gKwlpZiAodHVyYm9fZW5jLT5pbnB1dC5kYXRhID09IE5VTEwpIHsNCj4gPiArCQlydGVfYmJk ZXZfbG9nKEVSUiwgIkludmFsaWQgaW5wdXQgcG9pbnRlciIpOw0KPiA+ICsJCXJldHVybiAtMTsN Cj4gPiArCX0NCj4gPiArCWlmICh0dXJib19lbmMtPm91dHB1dC5kYXRhID09IE5VTEwpIHsNCj4g PiArCQlydGVfYmJkZXZfbG9nKEVSUiwgIkludmFsaWQgb3V0cHV0IHBvaW50ZXIiKTsNCj4gPiAr CQlyZXR1cm4gLTE7DQo+ID4gKwl9DQo+ID4gKwlpZiAodHVyYm9fZW5jLT5ydl9pbmRleCA+IDMp IHsNCj4gPiArCQlydGVfYmJkZXZfbG9nKEVSUiwNCj4gPiArCQkJCSJydl9pbmRleCAoJXUpIGlz IG91dCBvZiByYW5nZSAwIDw9IHZhbHVlIDw9DQo+IDMiLA0KPiA+ICsJCQkJdHVyYm9fZW5jLT5y dl9pbmRleCk7DQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsJfQ0KPiA+ICsJaWYgKHR1cmJvX2Vu Yy0+Y29kZV9ibG9ja19tb2RlICE9IDAgJiYNCj4gPiArCQkJdHVyYm9fZW5jLT5jb2RlX2Jsb2Nr X21vZGUgIT0gMSkgew0KPiA+ICsJCXJ0ZV9iYmRldl9sb2coRVJSLA0KPiA+ICsJCQkJImNvZGVf YmxvY2tfbW9kZSAoJXUpIGlzIG91dCBvZiByYW5nZSAwIDw9DQo+IHZhbHVlIDw9IDEiLA0KPiA+ ICsJCQkJdHVyYm9fZW5jLT5jb2RlX2Jsb2NrX21vZGUpOw0KPiA+ICsJCXJldHVybiAtMTsNCj4g PiArCX0NCj4gPiArDQo+ID4gKwlpZiAodHVyYm9fZW5jLT5jb2RlX2Jsb2NrX21vZGUgPT0gMCkg ew0KPiA+ICsJCXRiID0gJnR1cmJvX2VuYy0+dGJfcGFyYW1zOw0KPiA+ICsJCWlmICgodGItPmtf bmVnIDwgUlRFX0JCREVWX1RVUkJPX01JTl9DQl9TSVpFDQo+ID4gKwkJCQl8fCB0Yi0+a19uZWcg Pg0KPiBSVEVfQkJERVZfVFVSQk9fTUFYX0NCX1NJWkUpDQo+ID4gKwkJCQkmJiB0Yi0+Y19uZWcg PiAwKSB7DQo+ID4gKwkJCXJ0ZV9iYmRldl9sb2coRVJSLA0KPiA+ICsJCQkJCSJrX25lZyAoJXUp IGlzIG91dCBvZiByYW5nZSAldSA8PQ0KPiB2YWx1ZSA8PSAldSIsDQo+ID4gKwkJCQkJdGItPmtf bmVnLA0KPiBSVEVfQkJERVZfVFVSQk9fTUlOX0NCX1NJWkUsDQo+ID4gKwkJCQkJUlRFX0JCREVW X1RVUkJPX01BWF9DQl9TSVpFKTsNCj4gPiArCQkJcmV0dXJuIC0xOw0KPiA+ICsJCX0NCj4gPiAr CQlpZiAodGItPmtfcG9zIDwgUlRFX0JCREVWX1RVUkJPX01JTl9DQl9TSVpFDQo+ID4gKwkJCQl8 fCB0Yi0+a19wb3MgPg0KPiBSVEVfQkJERVZfVFVSQk9fTUFYX0NCX1NJWkUpIHsNCj4gPiArCQkJ cnRlX2JiZGV2X2xvZyhFUlIsDQo+ID4gKwkJCQkJImtfcG9zICgldSkgaXMgb3V0IG9mIHJhbmdl ICV1IDw9DQo+IHZhbHVlIDw9ICV1IiwNCj4gPiArCQkJCQl0Yi0+a19wb3MsDQo+IFJURV9CQkRF Vl9UVVJCT19NSU5fQ0JfU0laRSwNCj4gPiArCQkJCQlSVEVfQkJERVZfVFVSQk9fTUFYX0NCX1NJ WkUpOw0KPiA+ICsJCQlyZXR1cm4gLTE7DQo+ID4gKwkJfQ0KPiA+ICsJCWlmICh0Yi0+Y19uZWcg PiAoUlRFX0JCREVWX1RVUkJPX01BWF9DT0RFX0JMT0NLUyAtDQo+IDEpKQ0KPiA+ICsJCQlydGVf YmJkZXZfbG9nKEVSUiwNCj4gPiArCQkJCQkiY19uZWcgKCV1KSBpcyBvdXQgb2YgcmFuZ2UgMCA8 PSB2YWx1ZQ0KPiA8PSAldSIsDQo+ID4gKwkJCQkJdGItPmNfbmVnLA0KPiA+ICsNCj4gCVJURV9C QkRFVl9UVVJCT19NQVhfQ09ERV9CTE9DS1MgLSAxKTsNCj4gPiArCQlpZiAodGItPmMgPCAxIHx8 IHRiLT5jID4NCj4gUlRFX0JCREVWX1RVUkJPX01BWF9DT0RFX0JMT0NLUykgew0KPiA+ICsJCQly dGVfYmJkZXZfbG9nKEVSUiwNCj4gPiArCQkJCQkiYyAoJXUpIGlzIG91dCBvZiByYW5nZSAxIDw9 IHZhbHVlIDw9DQo+ICV1IiwNCj4gPiArCQkJCQl0Yi0+YywNCj4gUlRFX0JCREVWX1RVUkJPX01B WF9DT0RFX0JMT0NLUyk7DQo+ID4gKwkJCXJldHVybiAtMTsNCj4gPiArCQl9DQo+ID4gKwkJaWYg KHRiLT5jYWIgPiB0Yi0+Yykgew0KPiA+ICsJCQlydGVfYmJkZXZfbG9nKEVSUiwNCj4gPiArCQkJ CQkiY2FiICgldSkgaXMgZ3JlYXRlciB0aGFuIGMgKCV1KSIsDQo+ID4gKwkJCQkJdGItPmNhYiwg dGItPmMpOw0KPiA+ICsJCQlyZXR1cm4gLTE7DQo+ID4gKwkJfQ0KPiA+ICsJCWlmICgodGItPmVh IDwgUlRFX0JCREVWX1RVUkJPX01JTl9DQl9TSVpFIHx8ICh0Yi0+ZWEgJQ0KPiAyKSkNCj4gPiAr CQkJCSYmIHRiLT5yIDwgdGItPmNhYikgew0KPiA+ICsJCQlydGVfYmJkZXZfbG9nKEVSUiwNCj4g PiArCQkJCQkiZWEgKCV1KSBpcyBsZXNzIHRoYW4gJXUgb3IgaXQgaXMgbm90DQo+IGV2ZW4iLA0K PiA+ICsJCQkJCXRiLT5lYSwNCj4gUlRFX0JCREVWX1RVUkJPX01JTl9DQl9TSVpFKTsNCj4gPiAr CQkJcmV0dXJuIC0xOw0KPiA+ICsJCX0NCj4gPiArCQlpZiAoKHRiLT5lYiA8IFJURV9CQkRFVl9U VVJCT19NSU5fQ0JfU0laRSB8fCAodGItPmViICUNCj4gMikpDQo+ID4gKwkJCQkmJiB0Yi0+YyA+ IHRiLT5jYWIpIHsNCj4gPiArCQkJcnRlX2JiZGV2X2xvZyhFUlIsDQo+ID4gKwkJCQkJImViICgl dSkgaXMgbGVzcyB0aGFuICV1IG9yIGl0IGlzIG5vdA0KPiBldmVuIiwNCj4gPiArCQkJCQl0Yi0+ ZWIsDQo+IFJURV9CQkRFVl9UVVJCT19NSU5fQ0JfU0laRSk7DQo+ID4gKwkJCXJldHVybiAtMTsN Cj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCWt3X25lZyA9IDMgKiBSVEVfQUxJR05fQ0VJTCh0Yi0+ a19uZWcgKyA0LA0KPiA+ICsJCQkJCVJURV9CQkRFVl9UVVJCT19DX1NVQkJMT0NLKTsNCj4gPiAr CQlpZiAodGItPm5jYl9uZWcgPCB0Yi0+a19uZWcgfHwgdGItPm5jYl9uZWcgPiBrd19uZWcpIHsN Cj4gPiArCQkJcnRlX2JiZGV2X2xvZyhFUlIsDQo+ID4gKwkJCQkJIm5jYl9uZWcgKCV1KSBpcyBv dXQgb2YgcmFuZ2UgKCV1KQ0KPiBrX25lZyA8PSB2YWx1ZSA8PSAoJXUpIGt3X25lZyIsDQo+ID4g KwkJCQkJdGItPm5jYl9uZWcsIHRiLT5rX25lZywga3dfbmVnKTsNCj4gPiArCQkJcmV0dXJuIC0x Ow0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJa3dfcG9zID0gMyAqIFJURV9BTElHTl9DRUlMKHRi LT5rX3BvcyArIDQsDQo+ID4gKwkJCQkJUlRFX0JCREVWX1RVUkJPX0NfU1VCQkxPQ0spOw0KPiA+ ICsJCWlmICh0Yi0+bmNiX3BvcyA8IHRiLT5rX3BvcyB8fCB0Yi0+bmNiX3BvcyA+IGt3X3Bvcykg ew0KPiA+ICsJCQlydGVfYmJkZXZfbG9nKEVSUiwNCj4gPiArCQkJCQkibmNiX3BvcyAoJXUpIGlz IG91dCBvZiByYW5nZSAoJXUpDQo+IGtfcG9zIDw9IHZhbHVlIDw9ICgldSkga3dfcG9zIiwNCj4g PiArCQkJCQl0Yi0+bmNiX3BvcywgdGItPmtfcG9zLCBrd19wb3MpOw0KPiA+ICsJCQlyZXR1cm4g LTE7DQo+ID4gKwkJfQ0KPiA+ICsJCWlmICh0Yi0+ciA+ICh0Yi0+YyAtIDEpKSB7DQo+ID4gKwkJ CXJ0ZV9iYmRldl9sb2coRVJSLA0KPiA+ICsJCQkJCSJyICgldSkgaXMgZ3JlYXRlciB0aGFuIGMg LSAxICgldSkiLA0KPiA+ICsJCQkJCXRiLT5yLCB0Yi0+YyAtIDEpOw0KPiA+ICsJCQlyZXR1cm4g LTE7DQo+ID4gKwkJfQ0KPiA+ICsJfSBlbHNlIHsNCj4gPiArCQljYiA9ICZ0dXJib19lbmMtPmNi X3BhcmFtczsNCj4gPiArCQlpZiAoY2ItPmsgPCBSVEVfQkJERVZfVFVSQk9fTUlOX0NCX1NJWkUN Cj4gPiArCQkJCXx8IGNiLT5rID4NCj4gUlRFX0JCREVWX1RVUkJPX01BWF9DQl9TSVpFKSB7DQo+ ID4gKwkJCXJ0ZV9iYmRldl9sb2coRVJSLA0KPiA+ICsJCQkJCSJrICgldSkgaXMgb3V0IG9mIHJh bmdlICV1IDw9IHZhbHVlIDw9DQo+ICV1IiwNCj4gPiArCQkJCQljYi0+aywNCj4gUlRFX0JCREVW X1RVUkJPX01JTl9DQl9TSVpFLA0KPiA+ICsJCQkJCVJURV9CQkRFVl9UVVJCT19NQVhfQ0JfU0la RSk7DQo+ID4gKwkJCXJldHVybiAtMTsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCWlmIChjYi0+ ZSA8IFJURV9CQkRFVl9UVVJCT19NSU5fQ0JfU0laRSB8fCAoY2ItPmUgJSAyKSkNCj4gew0KPiA+ ICsJCQlydGVfYmJkZXZfbG9nKEVSUiwNCj4gPiArCQkJCQkiZSAoJXUpIGlzIGxlc3MgdGhhbiAl dSBvciBpdCBpcyBub3QNCj4gZXZlbiIsDQo+ID4gKwkJCQkJY2ItPmUsDQo+IFJURV9CQkRFVl9U VVJCT19NSU5fQ0JfU0laRSk7DQo+ID4gKwkJCXJldHVybiAtMTsNCj4gPiArCQl9DQo+ID4gKw0K PiA+ICsJCWt3ID0gUlRFX0FMSUdOX0NFSUwoY2ItPmsgKyA0LA0KPiBSVEVfQkJERVZfVFVSQk9f Q19TVUJCTE9DSykgKiAzOw0KPiA+ICsJCWlmIChjYi0+bmNiIDwgY2ItPmsgfHwgY2ItPm5jYiA+ IGt3KSB7DQo+ID4gKwkJCXJ0ZV9iYmRldl9sb2coRVJSLA0KPiA+ICsJCQkJCSJuY2IgKCV1KSBp cyBvdXQgb2YgcmFuZ2UgKCV1KSBrIDw9DQo+IHZhbHVlIDw9ICgldSkga3ciLA0KPiA+ICsJCQkJ CWNiLT5uY2IsIGNiLT5rLCBrdyk7DQo+ID4gKwkJCXJldHVybiAtMTsNCj4gPiArCQl9DQo+ID4g Kwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArLyogVmFsaWRhdGVzIExE UEMgZW5jb2RlciBwYXJhbWV0ZXJzICovIHN0YXRpYyBpbmxpbmUgaW50DQo+ID4gK3ZhbGlkYXRl X2xkcGNfZW5jX29wKHN0cnVjdCBydGVfYmJkZXZfZW5jX29wICpvcCkgew0KPiA+ICsJc3RydWN0 IHJ0ZV9iYmRldl9vcF9sZHBjX2VuYyAqbGRwY19lbmMgPSAmb3AtPmxkcGNfZW5jOw0KPiA+ICsN Cj4gPiArCWlmIChvcC0+bWVtcG9vbCA9PSBOVUxMKSB7DQo+ID4gKwkJcnRlX2JiZGV2X2xvZyhF UlIsICJJbnZhbGlkIG1lbXBvb2wgcG9pbnRlciIpOw0KPiA+ICsJCXJldHVybiAtMTsNCj4gPiAr CX0NCj4gPiArCWlmIChsZHBjX2VuYy0+aW5wdXQuZGF0YSA9PSBOVUxMKSB7DQo+ID4gKwkJcnRl X2JiZGV2X2xvZyhFUlIsICJJbnZhbGlkIGlucHV0IHBvaW50ZXIiKTsNCj4gPiArCQlyZXR1cm4g LTE7DQo+ID4gKwl9DQo+ID4gKwlpZiAobGRwY19lbmMtPm91dHB1dC5kYXRhID09IE5VTEwpIHsN Cj4gPiArCQlydGVfYmJkZXZfbG9nKEVSUiwgIkludmFsaWQgb3V0cHV0IHBvaW50ZXIiKTsNCj4g PiArCQlyZXR1cm4gLTE7DQo+ID4gKwl9DQo+ID4gKwlpZiAobGRwY19lbmMtPmlucHV0Lmxlbmd0 aCA+DQo+ID4gKwkJCVJURV9CQkRFVl9MRFBDX01BWF9DQl9TSVpFID4+IDMpIHsNCj4gPiArCQly dGVfYmJkZXZfbG9nKEVSUiwgIkNCIHNpemUgKCV1KSBpcyB0b28gYmlnLCBtYXg6ICVkIiwNCj4g PiArCQkJCWxkcGNfZW5jLT5pbnB1dC5sZW5ndGgsDQo+ID4gKwkJCQlSVEVfQkJERVZfTERQQ19N QVhfQ0JfU0laRSk7DQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsJfQ0KPiA+ICsJaWYgKChsZHBj X2VuYy0+YmFzZWdyYXBoID4gMikgfHwgKGxkcGNfZW5jLT5iYXNlZ3JhcGggPT0gMCkpIHsNCj4g PiArCQlydGVfYmJkZXZfbG9nKEVSUiwNCj4gPiArCQkJCSJCRyAoJXUpIGlzIG91dCBvZiByYW5n ZSAxIDw9IHZhbHVlIDw9IDIiLA0KPiA+ICsJCQkJbGRwY19lbmMtPmJhc2VncmFwaCk7DQo+ID4g KwkJcmV0dXJuIC0xOw0KPiA+ICsJfQ0KPiA+ICsJaWYgKGxkcGNfZW5jLT5ydl9pbmRleCA+IDMp IHsNCj4gPiArCQlydGVfYmJkZXZfbG9nKEVSUiwNCj4gPiArCQkJCSJydl9pbmRleCAoJXUpIGlz IG91dCBvZiByYW5nZSAwIDw9IHZhbHVlIDw9DQo+IDMiLA0KPiA+ICsJCQkJbGRwY19lbmMtPnJ2 X2luZGV4KTsNCj4gPiArCQlyZXR1cm4gLTE7DQo+ID4gKwl9DQo+ID4gKwlpZiAobGRwY19lbmMt PmNvZGVfYmxvY2tfbW9kZSA+IDEpIHsNCj4gPiArCQlydGVfYmJkZXZfbG9nKEVSUiwNCj4gPiAr CQkJCSJjb2RlX2Jsb2NrX21vZGUgKCV1KSBpcyBvdXQgb2YgcmFuZ2UgMCA8PQ0KPiB2YWx1ZSA8 PSAxIiwNCj4gPiArCQkJCWxkcGNfZW5jLT5jb2RlX2Jsb2NrX21vZGUpOw0KPiA+ICsJCXJldHVy biAtMTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4g PiArLyogVmFsaWRhdGVzIExEUEMgZGVjb2RlciBwYXJhbWV0ZXJzICovIHN0YXRpYyBpbmxpbmUg aW50DQo+ID4gK3ZhbGlkYXRlX2xkcGNfZGVjX29wKHN0cnVjdCBydGVfYmJkZXZfZGVjX29wICpv cCkgew0KPiA+ICsJc3RydWN0IHJ0ZV9iYmRldl9vcF9sZHBjX2RlYyAqbGRwY19kZWMgPSAmb3At PmxkcGNfZGVjOw0KPiA+ICsNCj4gPiArCWlmIChvcC0+bWVtcG9vbCA9PSBOVUxMKSB7DQo+ID4g KwkJcnRlX2JiZGV2X2xvZyhFUlIsICJJbnZhbGlkIG1lbXBvb2wgcG9pbnRlciIpOw0KPiA+ICsJ CXJldHVybiAtMTsNCj4gPiArCX0NCj4gPiArCWlmICgobGRwY19kZWMtPmJhc2VncmFwaCA+IDIp IHx8IChsZHBjX2RlYy0+YmFzZWdyYXBoID09IDApKSB7DQo+ID4gKwkJcnRlX2JiZGV2X2xvZyhF UlIsDQo+ID4gKwkJCQkiQkcgKCV1KSBpcyBvdXQgb2YgcmFuZ2UgMSA8PSB2YWx1ZSA8PSAyIiwN Cj4gPiArCQkJCWxkcGNfZGVjLT5iYXNlZ3JhcGgpOw0KPiA+ICsJCXJldHVybiAtMTsNCj4gPiAr CX0NCj4gPiArCWlmIChsZHBjX2RlYy0+aXRlcl9tYXggPT0gMCkgew0KPiA+ICsJCXJ0ZV9iYmRl dl9sb2coRVJSLA0KPiA+ICsJCQkJIml0ZXJfbWF4ICgldSkgaXMgZXF1YWwgdG8gMCIsDQo+ID4g KwkJCQlsZHBjX2RlYy0+aXRlcl9tYXgpOw0KPiA+ICsJCXJldHVybiAtMTsNCj4gPiArCX0NCj4g PiArCWlmIChsZHBjX2RlYy0+cnZfaW5kZXggPiAzKSB7DQo+ID4gKwkJcnRlX2JiZGV2X2xvZyhF UlIsDQo+ID4gKwkJCQkicnZfaW5kZXggKCV1KSBpcyBvdXQgb2YgcmFuZ2UgMCA8PSB2YWx1ZSA8 PQ0KPiAzIiwNCj4gPiArCQkJCWxkcGNfZGVjLT5ydl9pbmRleCk7DQo+ID4gKwkJcmV0dXJuIC0x Ow0KPiA+ICsJfQ0KPiA+ICsJaWYgKGxkcGNfZGVjLT5jb2RlX2Jsb2NrX21vZGUgPiAxKSB7DQo+ ID4gKwkJcnRlX2JiZGV2X2xvZyhFUlIsDQo+ID4gKwkJCQkiY29kZV9ibG9ja19tb2RlICgldSkg aXMgb3V0IG9mIHJhbmdlIDAgPD0NCj4gdmFsdWUgPD0gMSIsDQo+ID4gKwkJCQlsZHBjX2RlYy0+ Y29kZV9ibG9ja19tb2RlKTsNCj4gPiArCQlyZXR1cm4gLTE7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArI2VuZGlmDQo+IENvdWxkIGhhdmUgYW4gI2Vsc2Ug d2l0aCBzdHVicyBzbyB0aGUgdXNlcnMgZG8gbm90IGhhdmUgdG8gYm90aGVyIHdpdGgNCj4gI2lm ZGVmIGRlY29yYXRpb25zDQoNCkkgc2VlIHdoYXQgeW91IG1lYW4uIERlYmF0YWJsZS4gQnV0IGdp dmVuIHRoaXMgaXMgZG9uZSB0aGUgc2FtZSB3YXkgZm9yIG90aGVyDQpiYmRldiBkcml2ZXIgSSB3 b3VsZCByYXRoZXIga2VlcCBjb25zaXN0ZW5jeS4gDQoNCj4gPiArDQo+ID4gIC8qIEVucXVldWUg b25lIGVuY29kZSBvcGVyYXRpb25zIGZvciBBQ0MxMDAgZGV2aWNlIGluIENCIG1vZGUgKi8NCj4g PiBzdGF0aWMgaW5saW5lIGludCAgZW5xdWV1ZV9lbmNfb25lX29wX2NiKHN0cnVjdCBhY2MxMDBf cXVldWUgKnEsDQo+ID4gc3RydWN0IHJ0ZV9iYmRldl9lbmNfb3AgKm9wLCBAQCAtMTk1Niw2ICsy MTgxLDE0IEBADQo+ID4gIAkJc2VnX3RvdGFsX2xlZnQ7DQo+ID4gIAlzdHJ1Y3QgcnRlX21idWYg KmlucHV0LCAqb3V0cHV0X2hlYWQsICpvdXRwdXQ7DQo+ID4NCj4gPiArI2lmZGVmIFJURV9MSUJS VEVfQkJERVZfREVCVUcNCj4gPiArCS8qIFZhbGlkYXRlIG9wIHN0cnVjdHVyZSAqLw0KPiA+ICsJ aWYgKHZhbGlkYXRlX2VuY19vcChvcCkgPT0gLTEpIHsNCj4gPiArCQlydGVfYmJkZXZfbG9nKEVS UiwgIlR1cmJvIGVuY29kZXIgdmFsaWRhdGlvbiBmYWlsZWQiKTsNCj4gPiArCQlyZXR1cm4gLUVJ TlZBTDsNCj4gPiArCX0NCj4gPiArI2VuZGlmDQo+ID4gKw0KPiA+ICAJdWludDE2X3QgZGVzY19p ZHggPSAoKHEtPnN3X3JpbmdfaGVhZCArIHRvdGFsX2VucXVldWVkX2NicykNCj4gPiAgCQkJJiBx LT5zd19yaW5nX3dyYXBfbWFzayk7DQo+ID4gIAlkZXNjID0gcS0+cmluZ19hZGRyICsgZGVzY19p ZHg7DQo+ID4gQEAgLTIwMDgsNiArMjI0MSwxNCBAQA0KPiA+ICAJdWludDE2X3QgIGluX2xlbmd0 aF9pbl9ieXRlczsNCj4gPiAgCXN0cnVjdCBydGVfYmJkZXZfb3BfbGRwY19lbmMgKmVuYyA9ICZv cHNbMF0tPmxkcGNfZW5jOw0KPiA+DQo+ID4gKyNpZmRlZiBSVEVfTElCUlRFX0JCREVWX0RFQlVH DQo+ID4gKwkvKiBWYWxpZGF0ZSBvcCBzdHJ1Y3R1cmUgKi8NCj4gPiArCWlmICh2YWxpZGF0ZV9s ZHBjX2VuY19vcChvcHNbMF0pID09IC0xKSB7DQo+ID4gKwkJcnRlX2JiZGV2X2xvZyhFUlIsICJM RFBDIGVuY29kZXIgdmFsaWRhdGlvbiBmYWlsZWQiKTsNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsN Cj4gPiArCX0NCj4gPiArI2VuZGlmDQo+ID4gKw0KPiA+ICAJdWludDE2X3QgZGVzY19pZHggPSAo KHEtPnN3X3JpbmdfaGVhZCArIHRvdGFsX2VucXVldWVkX2NicykNCj4gPiAgCQkJJiBxLT5zd19y aW5nX3dyYXBfbWFzayk7DQo+ID4gIAlkZXNjID0gcS0+cmluZ19hZGRyICsgZGVzY19pZHg7DQo+ ID4gQEAgLTIwNjUsNiArMjMwNiwxNCBAQA0KPiA+ICAJCXNlZ190b3RhbF9sZWZ0Ow0KPiA+ICAJ c3RydWN0IHJ0ZV9tYnVmICppbnB1dCwgKm91dHB1dF9oZWFkLCAqb3V0cHV0Ow0KPiA+DQo+ID4g KyNpZmRlZiBSVEVfTElCUlRFX0JCREVWX0RFQlVHDQo+ID4gKwkvKiBWYWxpZGF0ZSBvcCBzdHJ1 Y3R1cmUgKi8NCj4gPiArCWlmICh2YWxpZGF0ZV9sZHBjX2VuY19vcChvcCkgPT0gLTEpIHsNCj4g PiArCQlydGVfYmJkZXZfbG9nKEVSUiwgIkxEUEMgZW5jb2RlciB2YWxpZGF0aW9uIGZhaWxlZCIp Ow0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ ID4gIAl1aW50MTZfdCBkZXNjX2lkeCA9ICgocS0+c3dfcmluZ19oZWFkICsgdG90YWxfZW5xdWV1 ZWRfY2JzKQ0KPiA+ICAJCQkmIHEtPnN3X3Jpbmdfd3JhcF9tYXNrKTsNCj4gPiAgCWRlc2MgPSBx LT5yaW5nX2FkZHIgKyBkZXNjX2lkeDsNCj4gPiBAQCAtMjExOSw2ICsyMzY4LDE0IEBADQo+ID4g IAlzdHJ1Y3QgcnRlX21idWYgKmlucHV0LCAqb3V0cHV0X2hlYWQsICpvdXRwdXQ7DQo+ID4gIAl1 aW50MTZfdCBjdXJyZW50X2VucXVldWVkX2NicyA9IDA7DQo+ID4NCj4gPiArI2lmZGVmIFJURV9M SUJSVEVfQkJERVZfREVCVUcNCj4gPiArCS8qIFZhbGlkYXRlIG9wIHN0cnVjdHVyZSAqLw0KPiA+ ICsJaWYgKHZhbGlkYXRlX2VuY19vcChvcCkgPT0gLTEpIHsNCj4gPiArCQlydGVfYmJkZXZfbG9n KEVSUiwgIlR1cmJvIGVuY29kZXIgdmFsaWRhdGlvbiBmYWlsZWQiKTsNCj4gPiArCQlyZXR1cm4g LUVJTlZBTDsNCj4gPiArCX0NCj4gPiArI2VuZGlmDQo+ID4gKw0KPiA+ICAJdWludDE2X3QgZGVz Y19pZHggPSAoKHEtPnN3X3JpbmdfaGVhZCArIHRvdGFsX2VucXVldWVkX2NicykNCj4gPiAgCQkJ JiBxLT5zd19yaW5nX3dyYXBfbWFzayk7DQo+ID4gIAlkZXNjID0gcS0+cmluZ19hZGRyICsgZGVz Y19pZHg7DQo+ID4gQEAgLTIxOTEsNiArMjQ0OCwxNDIgQEANCj4gPiAgCXJldHVybiBjdXJyZW50 X2VucXVldWVkX2NiczsNCj4gPiAgfQ0KPiA+DQo+ID4gKyNpZmRlZiBSVEVfTElCUlRFX0JCREVW X0RFQlVHDQo+ID4gKy8qIFZhbGlkYXRlcyB0dXJibyBkZWNvZGVyIHBhcmFtZXRlcnMgKi8gc3Rh dGljIGlubGluZSBpbnQNCj4gPiArdmFsaWRhdGVfZGVjX29wKHN0cnVjdCBydGVfYmJkZXZfZGVj X29wICpvcCkgew0KPiANCj4gVGhpcyAoZ3Vlc3NpbmcpIGxhdGVyIGRlYyB2YWxpZGF0aW9uIHNo YXJlIHNpbWlsYXIgY29kZSB3aXRoIGVuYyB2YWxpZGF0aW9uLA0KPiBjb25zaWRlciBmdW5jdGlv biBmb3IgdGhlIGNvbW1vbiBwYXJ0cy4NCg0KVGhleSBoYXZlIGRpZmZlcmVudCBBUEkgcmVhbGx5 LCBhIGZldyBjaGVja3Mgb25seSBoYXZlIGNvbW1vbiByYW5nZSBjaGVja3MuDQpTbyBub3QgY29u dmluY2VkIGl0IHdvdWxkIGhlbHAgcGVyc29ubmFseS4NClRoYW5rcw0KDQo+IA0KPiBUb20NCj4g DQo+ID4gKwlzdHJ1Y3QgcnRlX2JiZGV2X29wX3R1cmJvX2RlYyAqdHVyYm9fZGVjID0gJm9wLT50 dXJib19kZWM7DQo+ID4gKwlzdHJ1Y3QgcnRlX2JiZGV2X29wX2RlY190dXJib19jYl9wYXJhbXMg KmNiID0gTlVMTDsNCj4gPiArCXN0cnVjdCBydGVfYmJkZXZfb3BfZGVjX3R1cmJvX3RiX3BhcmFt cyAqdGIgPSBOVUxMOw0KPiA+ICsNCj4gPiArCWlmIChvcC0+bWVtcG9vbCA9PSBOVUxMKSB7DQo+ ID4gKwkJcnRlX2JiZGV2X2xvZyhFUlIsICJJbnZhbGlkIG1lbXBvb2wgcG9pbnRlciIpOw0KPiA+ ICsJCXJldHVybiAtMTsNCj4gPiArCX0NCj4gPiArCWlmICh0dXJib19kZWMtPmlucHV0LmRhdGEg PT0gTlVMTCkgew0KPiA+ICsJCXJ0ZV9iYmRldl9sb2coRVJSLCAiSW52YWxpZCBpbnB1dCBwb2lu dGVyIik7DQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsJfQ0KPiA+ICsJaWYgKHR1cmJvX2RlYy0+ aGFyZF9vdXRwdXQuZGF0YSA9PSBOVUxMKSB7DQo+ID4gKwkJcnRlX2JiZGV2X2xvZyhFUlIsICJJ bnZhbGlkIGhhcmRfb3V0cHV0IHBvaW50ZXIiKTsNCj4gPiArCQlyZXR1cm4gLTE7DQo+ID4gKwl9 DQo+ID4gKwlpZiAoY2hlY2tfYml0KHR1cmJvX2RlYy0+b3BfZmxhZ3MsDQo+IFJURV9CQkRFVl9U VVJCT19TT0ZUX09VVFBVVCkgJiYNCj4gPiArCQkJdHVyYm9fZGVjLT5zb2Z0X291dHB1dC5kYXRh ID09IE5VTEwpIHsNCj4gPiArCQlydGVfYmJkZXZfbG9nKEVSUiwgIkludmFsaWQgc29mdF9vdXRw dXQgcG9pbnRlciIpOw0KPiA+ICsJCXJldHVybiAtMTsNCj4gPiArCX0NCj4gPiArCWlmICh0dXJi b19kZWMtPnJ2X2luZGV4ID4gMykgew0KPiA+ICsJCXJ0ZV9iYmRldl9sb2coRVJSLA0KPiA+ICsJ CQkJInJ2X2luZGV4ICgldSkgaXMgb3V0IG9mIHJhbmdlIDAgPD0gdmFsdWUgPD0NCj4gMyIsDQo+ ID4gKwkJCQl0dXJib19kZWMtPnJ2X2luZGV4KTsNCj4gPiArCQlyZXR1cm4gLTE7DQo+ID4gKwl9 DQo+ID4gKwlpZiAodHVyYm9fZGVjLT5pdGVyX21pbiA8IDEpIHsNCj4gPiArCQlydGVfYmJkZXZf bG9nKEVSUiwNCj4gPiArCQkJCSJpdGVyX21pbiAoJXUpIGlzIGxlc3MgdGhhbiAxIiwNCj4gPiAr CQkJCXR1cmJvX2RlYy0+aXRlcl9taW4pOw0KPiA+ICsJCXJldHVybiAtMTsNCj4gPiArCX0NCj4g PiArCWlmICh0dXJib19kZWMtPml0ZXJfbWF4IDw9IDIpIHsNCj4gPiArCQlydGVfYmJkZXZfbG9n KEVSUiwNCj4gPiArCQkJCSJpdGVyX21heCAoJXUpIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAy IiwNCj4gPiArCQkJCXR1cmJvX2RlYy0+aXRlcl9tYXgpOw0KPiA+ICsJCXJldHVybiAtMTsNCj4g PiArCX0NCj4gPiArCWlmICh0dXJib19kZWMtPml0ZXJfbWluID4gdHVyYm9fZGVjLT5pdGVyX21h eCkgew0KPiA+ICsJCXJ0ZV9iYmRldl9sb2coRVJSLA0KPiA+ICsJCQkJIml0ZXJfbWluICgldSkg aXMgZ3JlYXRlciB0aGFuIGl0ZXJfbWF4DQo+ICgldSkiLA0KPiA+ICsJCQkJdHVyYm9fZGVjLT5p dGVyX21pbiwgdHVyYm9fZGVjLT5pdGVyX21heCk7DQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsJ fQ0KPiA+ICsJaWYgKHR1cmJvX2RlYy0+Y29kZV9ibG9ja19tb2RlICE9IDAgJiYNCj4gPiArCQkJ dHVyYm9fZGVjLT5jb2RlX2Jsb2NrX21vZGUgIT0gMSkgew0KPiA+ICsJCXJ0ZV9iYmRldl9sb2co RVJSLA0KPiA+ICsJCQkJImNvZGVfYmxvY2tfbW9kZSAoJXUpIGlzIG91dCBvZiByYW5nZSAwIDw9 DQo+IHZhbHVlIDw9IDEiLA0KPiA+ICsJCQkJdHVyYm9fZGVjLT5jb2RlX2Jsb2NrX21vZGUpOw0K PiA+ICsJCXJldHVybiAtMTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAodHVyYm9fZGVjLT5j b2RlX2Jsb2NrX21vZGUgPT0gMCkgew0KPiA+ICsJCXRiID0gJnR1cmJvX2RlYy0+dGJfcGFyYW1z Ow0KPiA+ICsJCWlmICgodGItPmtfbmVnIDwgUlRFX0JCREVWX1RVUkJPX01JTl9DQl9TSVpFDQo+ ID4gKwkJCQl8fCB0Yi0+a19uZWcgPg0KPiBSVEVfQkJERVZfVFVSQk9fTUFYX0NCX1NJWkUpDQo+ ID4gKwkJCQkmJiB0Yi0+Y19uZWcgPiAwKSB7DQo+ID4gKwkJCXJ0ZV9iYmRldl9sb2coRVJSLA0K PiA+ICsJCQkJCSJrX25lZyAoJXUpIGlzIG91dCBvZiByYW5nZSAldSA8PQ0KPiB2YWx1ZSA8PSAl dSIsDQo+ID4gKwkJCQkJdGItPmtfbmVnLA0KPiBSVEVfQkJERVZfVFVSQk9fTUlOX0NCX1NJWkUs DQo+ID4gKwkJCQkJUlRFX0JCREVWX1RVUkJPX01BWF9DQl9TSVpFKTsNCj4gPiArCQkJcmV0dXJu IC0xOw0KPiA+ICsJCX0NCj4gPiArCQlpZiAoKHRiLT5rX3BvcyA8IFJURV9CQkRFVl9UVVJCT19N SU5fQ0JfU0laRQ0KPiA+ICsJCQkJfHwgdGItPmtfcG9zID4NCj4gUlRFX0JCREVWX1RVUkJPX01B WF9DQl9TSVpFKQ0KPiA+ICsJCQkJJiYgdGItPmMgPiB0Yi0+Y19uZWcpIHsNCj4gPiArCQkJcnRl X2JiZGV2X2xvZyhFUlIsDQo+ID4gKwkJCQkJImtfcG9zICgldSkgaXMgb3V0IG9mIHJhbmdlICV1 IDw9DQo+IHZhbHVlIDw9ICV1IiwNCj4gPiArCQkJCQl0Yi0+a19wb3MsDQo+IFJURV9CQkRFVl9U VVJCT19NSU5fQ0JfU0laRSwNCj4gPiArCQkJCQlSVEVfQkJERVZfVFVSQk9fTUFYX0NCX1NJWkUp Ow0KPiA+ICsJCQlyZXR1cm4gLTE7DQo+ID4gKwkJfQ0KPiA+ICsJCWlmICh0Yi0+Y19uZWcgPiAo UlRFX0JCREVWX1RVUkJPX01BWF9DT0RFX0JMT0NLUyAtDQo+IDEpKQ0KPiA+ICsJCQlydGVfYmJk ZXZfbG9nKEVSUiwNCj4gPiArCQkJCQkiY19uZWcgKCV1KSBpcyBvdXQgb2YgcmFuZ2UgMCA8PSB2 YWx1ZQ0KPiA8PSAldSIsDQo+ID4gKwkJCQkJdGItPmNfbmVnLA0KPiA+ICsNCj4gCVJURV9CQkRF Vl9UVVJCT19NQVhfQ09ERV9CTE9DS1MgLSAxKTsNCj4gPiArCQlpZiAodGItPmMgPCAxIHx8IHRi LT5jID4NCj4gUlRFX0JCREVWX1RVUkJPX01BWF9DT0RFX0JMT0NLUykgew0KPiA+ICsJCQlydGVf YmJkZXZfbG9nKEVSUiwNCj4gPiArCQkJCQkiYyAoJXUpIGlzIG91dCBvZiByYW5nZSAxIDw9IHZh bHVlIDw9DQo+ICV1IiwNCj4gPiArCQkJCQl0Yi0+YywNCj4gUlRFX0JCREVWX1RVUkJPX01BWF9D T0RFX0JMT0NLUyk7DQo+ID4gKwkJCXJldHVybiAtMTsNCj4gPiArCQl9DQo+ID4gKwkJaWYgKHRi LT5jYWIgPiB0Yi0+Yykgew0KPiA+ICsJCQlydGVfYmJkZXZfbG9nKEVSUiwNCj4gPiArCQkJCQki Y2FiICgldSkgaXMgZ3JlYXRlciB0aGFuIGMgKCV1KSIsDQo+ID4gKwkJCQkJdGItPmNhYiwgdGIt PmMpOw0KPiA+ICsJCQlyZXR1cm4gLTE7DQo+ID4gKwkJfQ0KPiA+ICsJCWlmIChjaGVja19iaXQo dHVyYm9fZGVjLT5vcF9mbGFncywNCj4gUlRFX0JCREVWX1RVUkJPX0VRVUFMSVpFUikgJiYNCj4g PiArCQkJCSh0Yi0+ZWEgPCBSVEVfQkJERVZfVFVSQk9fTUlOX0NCX1NJWkUNCj4gPiArCQkJCQkJ fHwgKHRiLT5lYSAlIDIpKQ0KPiA+ICsJCQkJJiYgdGItPmNhYiA+IDApIHsNCj4gPiArCQkJcnRl X2JiZGV2X2xvZyhFUlIsDQo+ID4gKwkJCQkJImVhICgldSkgaXMgbGVzcyB0aGFuICV1IG9yIGl0 IGlzIG5vdA0KPiBldmVuIiwNCj4gPiArCQkJCQl0Yi0+ZWEsDQo+IFJURV9CQkRFVl9UVVJCT19N SU5fQ0JfU0laRSk7DQo+ID4gKwkJCXJldHVybiAtMTsNCj4gPiArCQl9DQo+ID4gKwkJaWYgKGNo ZWNrX2JpdCh0dXJib19kZWMtPm9wX2ZsYWdzLA0KPiBSVEVfQkJERVZfVFVSQk9fRVFVQUxJWkVS KSAmJg0KPiA+ICsJCQkJKHRiLT5lYiA8IFJURV9CQkRFVl9UVVJCT19NSU5fQ0JfU0laRQ0KPiA+ ICsJCQkJCQl8fCAodGItPmViICUgMikpDQo+ID4gKwkJCQkmJiB0Yi0+YyA+IHRiLT5jYWIpIHsN Cj4gPiArCQkJcnRlX2JiZGV2X2xvZyhFUlIsDQo+ID4gKwkJCQkJImViICgldSkgaXMgbGVzcyB0 aGFuICV1IG9yIGl0IGlzIG5vdA0KPiBldmVuIiwNCj4gPiArCQkJCQl0Yi0+ZWIsDQo+IFJURV9C QkRFVl9UVVJCT19NSU5fQ0JfU0laRSk7DQo+ID4gKwkJfQ0KPiA+ICsJfSBlbHNlIHsNCj4gPiAr CQljYiA9ICZ0dXJib19kZWMtPmNiX3BhcmFtczsNCj4gPiArCQlpZiAoY2ItPmsgPCBSVEVfQkJE RVZfVFVSQk9fTUlOX0NCX1NJWkUNCj4gPiArCQkJCXx8IGNiLT5rID4NCj4gUlRFX0JCREVWX1RV UkJPX01BWF9DQl9TSVpFKSB7DQo+ID4gKwkJCXJ0ZV9iYmRldl9sb2coRVJSLA0KPiA+ICsJCQkJ CSJrICgldSkgaXMgb3V0IG9mIHJhbmdlICV1IDw9IHZhbHVlIDw9DQo+ICV1IiwNCj4gPiArCQkJ CQljYi0+aywNCj4gUlRFX0JCREVWX1RVUkJPX01JTl9DQl9TSVpFLA0KPiA+ICsJCQkJCVJURV9C QkRFVl9UVVJCT19NQVhfQ0JfU0laRSk7DQo+ID4gKwkJCXJldHVybiAtMTsNCj4gPiArCQl9DQo+ ID4gKwkJaWYgKGNoZWNrX2JpdCh0dXJib19kZWMtPm9wX2ZsYWdzLA0KPiBSVEVfQkJERVZfVFVS Qk9fRVFVQUxJWkVSKSAmJg0KPiA+ICsJCQkJKGNiLT5lIDwgUlRFX0JCREVWX1RVUkJPX01JTl9D Ql9TSVpFDQo+IHx8DQo+ID4gKwkJCQkoY2ItPmUgJSAyKSkpIHsNCj4gPiArCQkJcnRlX2JiZGV2 X2xvZyhFUlIsDQo+ID4gKwkJCQkJImUgKCV1KSBpcyBsZXNzIHRoYW4gJXUgb3IgaXQgaXMgbm90 DQo+IGV2ZW4iLA0KPiA+ICsJCQkJCWNiLT5lLA0KPiBSVEVfQkJERVZfVFVSQk9fTUlOX0NCX1NJ WkUpOw0KPiA+ICsJCQlyZXR1cm4gLTE7DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAr CXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiAgLyoqIEVucXVldWUg b25lIGRlY29kZSBvcGVyYXRpb25zIGZvciBBQ0MxMDAgZGV2aWNlIGluIENCIG1vZGUgKi8NCj4g PiBzdGF0aWMgaW5saW5lIGludCAgZW5xdWV1ZV9kZWNfb25lX29wX2NiKHN0cnVjdCBhY2MxMDBf cXVldWUgKnEsDQo+ID4gc3RydWN0IHJ0ZV9iYmRldl9kZWNfb3AgKm9wLCBAQCAtMjIwMyw2ICsy NTk2LDE0IEBADQo+ID4gIAlzdHJ1Y3QgcnRlX21idWYgKmlucHV0LCAqaF9vdXRwdXRfaGVhZCwg Kmhfb3V0cHV0LA0KPiA+ICAJCSpzX291dHB1dF9oZWFkLCAqc19vdXRwdXQ7DQo+ID4NCj4gPiAr I2lmZGVmIFJURV9MSUJSVEVfQkJERVZfREVCVUcNCj4gPiArCS8qIFZhbGlkYXRlIG9wIHN0cnVj dHVyZSAqLw0KPiA+ICsJaWYgKHZhbGlkYXRlX2RlY19vcChvcCkgPT0gLTEpIHsNCj4gPiArCQly dGVfYmJkZXZfbG9nKEVSUiwgIlR1cmJvIGRlY29kZXIgdmFsaWRhdGlvbiBmYWlsZWQiKTsNCj4g PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCX0NCj4gPiArI2VuZGlmDQo+ID4gKw0KPiA+ICAJ dWludDE2X3QgZGVzY19pZHggPSAoKHEtPnN3X3JpbmdfaGVhZCArIHRvdGFsX2VucXVldWVkX2Ni cykNCj4gPiAgCQkJJiBxLT5zd19yaW5nX3dyYXBfbWFzayk7DQo+ID4gIAlkZXNjID0gcS0+cmlu Z19hZGRyICsgZGVzY19pZHg7DQo+ID4gQEAgLTI0MjYsNiArMjgyNywxMyBAQA0KPiA+ICAJCXJl dHVybiByZXQ7DQo+ID4gIAl9DQo+ID4NCj4gPiArI2lmZGVmIFJURV9MSUJSVEVfQkJERVZfREVC VUcNCj4gPiArCS8qIFZhbGlkYXRlIG9wIHN0cnVjdHVyZSAqLw0KPiA+ICsJaWYgKHZhbGlkYXRl X2xkcGNfZGVjX29wKG9wKSA9PSAtMSkgew0KPiA+ICsJCXJ0ZV9iYmRldl9sb2coRVJSLCAiTERQ QyBkZWNvZGVyIHZhbGlkYXRpb24gZmFpbGVkIik7DQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ ID4gKwl9DQo+ID4gKyNlbmRpZg0KPiA+ICAJdW5pb24gYWNjMTAwX2RtYV9kZXNjICpkZXNjOw0K PiA+ICAJdWludDE2X3QgZGVzY19pZHggPSAoKHEtPnN3X3JpbmdfaGVhZCArIHRvdGFsX2VucXVl dWVkX2NicykNCj4gPiAgCQkJJiBxLT5zd19yaW5nX3dyYXBfbWFzayk7DQo+ID4gQEAgLTI1MjEs NiArMjkyOSwxNCBAQA0KPiA+ICAJc3RydWN0IHJ0ZV9tYnVmICppbnB1dCwgKmhfb3V0cHV0X2hl YWQsICpoX291dHB1dDsNCj4gPiAgCXVpbnQxNl90IGN1cnJlbnRfZW5xdWV1ZWRfY2JzID0gMDsN Cj4gPg0KPiA+ICsjaWZkZWYgUlRFX0xJQlJURV9CQkRFVl9ERUJVRw0KPiA+ICsJLyogVmFsaWRh dGUgb3Agc3RydWN0dXJlICovDQo+ID4gKwlpZiAodmFsaWRhdGVfbGRwY19kZWNfb3Aob3ApID09 IC0xKSB7DQo+ID4gKwkJcnRlX2JiZGV2X2xvZyhFUlIsICJMRFBDIGRlY29kZXIgdmFsaWRhdGlv biBmYWlsZWQiKTsNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCX0NCj4gPiArI2VuZGlm DQo+ID4gKw0KPiA+ICAJdWludDE2X3QgZGVzY19pZHggPSAoKHEtPnN3X3JpbmdfaGVhZCArIHRv dGFsX2VucXVldWVkX2NicykNCj4gPiAgCQkJJiBxLT5zd19yaW5nX3dyYXBfbWFzayk7DQo+ID4g IAlkZXNjID0gcS0+cmluZ19hZGRyICsgZGVzY19pZHg7DQo+ID4gQEAgLTI2MTEsNiArMzAyNywx NCBAQA0KPiA+ICAJCSpzX291dHB1dF9oZWFkLCAqc19vdXRwdXQ7DQo+ID4gIAl1aW50MTZfdCBj dXJyZW50X2VucXVldWVkX2NicyA9IDA7DQo+ID4NCj4gPiArI2lmZGVmIFJURV9MSUJSVEVfQkJE RVZfREVCVUcNCj4gPiArCS8qIFZhbGlkYXRlIG9wIHN0cnVjdHVyZSAqLw0KPiA+ICsJaWYgKHZh bGlkYXRlX2RlY19vcChvcCkgPT0gLTEpIHsNCj4gPiArCQlydGVfYmJkZXZfbG9nKEVSUiwgIlR1 cmJvIGRlY29kZXIgdmFsaWRhdGlvbiBmYWlsZWQiKTsNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsN Cj4gPiArCX0NCj4gPiArI2VuZGlmDQo+ID4gKw0KPiA+ICAJdWludDE2X3QgZGVzY19pZHggPSAo KHEtPnN3X3JpbmdfaGVhZCArIHRvdGFsX2VucXVldWVkX2NicykNCj4gPiAgCQkJJiBxLT5zd19y aW5nX3dyYXBfbWFzayk7DQo+ID4gIAlkZXNjID0gcS0+cmluZ19hZGRyICsgZGVzY19pZHg7DQoN Cg==