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 DB4E6A04B5; Thu, 1 Oct 2020 00:54:51 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 972F51D5C5; Thu, 1 Oct 2020 00:54:50 +0200 (CEST) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 41B991D5C5 for ; Thu, 1 Oct 2020 00:54:47 +0200 (CEST) IronPort-SDR: hbm33TQAgLgtfdWPjUxv2phcdEEERIXUgA/v1mNF2ZvWnxsFUme8vj/EJXcFCcL7esqIHM5cd8 bEucSWbifH4w== X-IronPort-AV: E=McAfee;i="6000,8403,9760"; a="150215822" X-IronPort-AV: E=Sophos;i="5.77,322,1596524400"; d="scan'208";a="150215822" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Sep 2020 15:54:41 -0700 IronPort-SDR: HVxtE53L2jAWPwmqVO2MK0xz5Ddi1e8o6N2KEx/5Z4nxZtI/OSlUprW+t63/GLOTowmfoUecEA MCYwajzzOl2Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,322,1596524400"; d="scan'208";a="351695630" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga007.jf.intel.com with ESMTP; 30 Sep 2020 15:54:41 -0700 Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) by ORSMSX603.amr.corp.intel.com (10.22.229.16) 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 15:54:41 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX608.amr.corp.intel.com (10.22.229.21) 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 15:54:40 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx601.amr.corp.intel.com (10.22.229.14) 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 15:54:40 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.168) 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 15:54:40 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AP2xeRxOKy/4iapwgxCfI+vxHHMNplFL/5gDL7O72rUfxvqKA9Pq7oZ59N6Ne7OMbZuiGy3g/mS79HLbergmHnI1wdoO5cqUHM3qe895YG1YM6nLBwcK4z87sBuA5og80J0uGnlsO047QTPIFoVUeG/0emFT5QAEAW9QHI6QMQ76nGISjP0z6glydg9QYEBDkXw5n9QHKzaahjzKn5e+FtBA1luJSNwbM16TS/LRzEWAAkREJk1vl8TuLAw8zm+okdLYOpZGWJrDuHA/Kc0J7I0QJqevEjXpuhHW4al0vzJ6pYDjhcFisaJYp9idg19mLQNRdL0XUFJrh6esfWgb2A== 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=6fy5DzpQWmnHj4WfhSyFL+JWCCA6p2vilbdvKmZkuOw=; b=h/jKofUJkVMRbPIPix4vdKPv7FG/MrhUWJLL1KN8cnjzJh2CQeKCKH/pdZX0rKwCnjyJytRXiIZQKNnxdejKjfKkCGQ53gshdSjyKQnJVu2nC3Kww1g1Sr4sXbA9I0/QfyPpufrC34L1oIcHBlzaad5yIg9NHhFLvcAsbHNuZKSkGVRvb0TRgZ59Cf07LwMvXatfuvuAw/xmSg1WXSdO8aw3J4loeR3b3d0dhwslWO44mfH+CNwDYmVH75fKP9FbiXegnn5J7urzsHqsqkR7JtW9POJzzdQYy06KJG1cCpH43uPIN07ht6FnTO4303uidn6ySZqXYtVCaqOAfZOUgA== 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=6fy5DzpQWmnHj4WfhSyFL+JWCCA6p2vilbdvKmZkuOw=; b=MSkGjJEg2uCCln6aH/UQt7Dj9Tbua8wLRiHOhhgeL8Z9xedfLwU6rEjix6GiWt41acJ5H9vHyR5cT+3HcnIM3Yxg61B9NnV6zPdK6aQ+wnzvrnBUed6PAhGC7iJ4QCiUHDJ9hdN6QQNzUtdQ3HzSkzE8+uQdwQHkQ5C7D/cwMuM= Received: from BY5PR11MB4451.namprd11.prod.outlook.com (2603:10b6:a03:1cb::30) by BYAPR11MB3573.namprd11.prod.outlook.com (2603:10b6:a03:fe::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3433.36; Wed, 30 Sep 2020 22:54:37 +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 22:54:37 +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 10/10] baseband/acc100: add configure function Thread-Index: AQHWlffiv22Ey+zXR0yoVpCMua5GCamBnFOAgAAw/xA= Date: Wed, 30 Sep 2020 22:54:37 +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-11-git-send-email-nicolas.chautru@intel.com> <66758688-f00e-c757-0b9e-5bb365ace5de@redhat.com> In-Reply-To: <66758688-f00e-c757-0b9e-5bb365ace5de@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.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: a3ed1936-be9d-4356-58b0-08d86593ceee x-ms-traffictypediagnostic: BYAPR11MB3573: 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:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: g/+KYgLVOLlmRDOwZYpwrTr9BbRcDoG9/ssvHXFI3EASYSwGI4YSQmZfB/0VklSwweu9AN/21qwpnfJeDTV1vD5hgph9O64wM68Rk973ZQEk9Ul47W8D5Hww8XDuiX/ylHeJDV5vtghBqRjG2/tGGXirnz0lQhQXtL/+lC9TL+i6l6WP7WEwEvH7/5EykwjJNVypNLLKM2mvAvNE5ryt+XWU36WeQDvDPsQLyKq/seVDoYi1soqGFY3+fWw5bYj9cUipWvz0jwA7Tpr11Gu+Yo03WAxD5xbyT/M9RwUioM7M1Eqx0FtPmrXuQRVWjyAA 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)(39860400002)(396003)(366004)(346002)(136003)(478600001)(110136005)(54906003)(316002)(66946007)(186003)(4326008)(26005)(66476007)(55016002)(66446008)(6506007)(53546011)(8676002)(9686003)(66556008)(2906002)(19627235002)(107886003)(64756008)(86362001)(83380400001)(33656002)(30864003)(71200400001)(5660300002)(76116006)(52536014)(8936002)(7696005)(559001)(579004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: wiDR+RrBCnBFY1Xdzl3z8KkYbNDryGmPen1Dgg2y3mL4M7ERL0AwKUNO1j24/cRAxRSvwlfUdAlrVQ05zuYOGx9Ae+hVFD13dg5MX2vMxPqp/hPYwGDWtJXxl8RKAfgzZZHbbCUvdULetsEoTgbHhoxj5CLnGTmq00ZUS19UG2F9iQqD7bmcr47Dxebp5C01f5zgBrR9ia+HKU9qwANP6p6yt1/snmRAFRoQq70UrPfr1Wv8zd6zEQvp7G5UWmk3wVgIhN/MhGq85dMlFqHsXVuh/M0vk+9jX3gunWS1CpknUuZ6+/SBMp3adRtGLYRixSQPYH1cOiQmd/Cw0YxaL7LThWIQggQuPq608K+SKXJBx6CpdOeeoNsuYvDR1iTJPIAAjD74JcdNvJ5I1xzW233KxKbPZ5gjClu5vmnhSLJPntFq82PFymyrzclE1gtQ+aGnA6OkOhekgfB0Dm39d7MFswTyjXELQS5x1/65fBzzkZPyAM8zvS67meEodqIIQh9W4Fh6cFEcMpnw5rPQdDl9HUlJeufG0QyFwCdqO4x9YCPoKpsme0kTtGzxJigxMN8xl1XeYtRCqcXc58dA4SNfXfltBJ0gtD2BYP8VoOy+5h0Ezhrm42aEZtYbVCyjAht87QTqAGZqdmFhnL9Bfg== 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: a3ed1936-be9d-4356-58b0-08d86593ceee X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Sep 2020 22:54:37.6011 (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: TMtjE3J9FzFUXBAM2At/E1mzxeQp0LS0oIaz4V6nYZKnkwggX5yrM81ehd78beX3GdaHJftx4X6IyrryfCU+CmRE22ovFuQJ+9gGadC4RoE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB3573 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v9 10/10] baseband/acc100: add configure function 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+IEFkZCBjb25maWd1cmUgZnVu Y3Rpb24gdG8gY29uZmlndXJlIHRoZSBQRiBmcm9tIHdpdGhpbiB0aGUgDQo+ID4gYmJkZXYtdGVz dCBpdHNlbGYgd2l0aG91dCBleHRlcm5hbCBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uIHRoZSBk ZXZpY2UuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBOaWNvbGFzIENoYXV0cnUgPG5pY29sYXMu Y2hhdXRydUBpbnRlbC5jb20+DQo+ID4gQWNrZWQtYnk6IExpdSBUaWFuamlhbyA8VGlhbmppYW8u bGl1QGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAgYXBwL3Rlc3QtYmJkZXYvdGVzdF9iYmRldl9w ZXJmLmMgICAgICAgICAgICAgICAgICAgfCAgNzIgKysrDQo+ID4gIGRvYy9ndWlkZXMvcmVsX25v dGVzL3JlbGVhc2VfMjBfMTEucnN0ICAgICAgICAgICAgIHwgICA1ICsNCj4gPiAgZHJpdmVycy9i YXNlYmFuZC9hY2MxMDAvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgfCAgIDIgKw0KPiA+ICBk cml2ZXJzL2Jhc2ViYW5kL2FjYzEwMC9ydGVfYWNjMTAwX2NmZy5oICAgICAgICAgICB8ICAxNyAr DQo+ID4gIGRyaXZlcnMvYmFzZWJhbmQvYWNjMTAwL3J0ZV9hY2MxMDBfcG1kLmMgICAgICAgICAg IHwgNTA1DQo+ICsrKysrKysrKysrKysrKysrKysrKw0KPiA+ICAuLi4vYWNjMTAwL3J0ZV9wbWRf YmJkZXZfYWNjMTAwX3ZlcnNpb24ubWFwICAgICAgICB8ICAgNyArDQo+ID4gIDYgZmlsZXMgY2hh bmdlZCwgNjA4IGluc2VydGlvbnMoKykNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9hcHAvdGVzdC1i YmRldi90ZXN0X2JiZGV2X3BlcmYuYw0KPiA+IGIvYXBwL3Rlc3QtYmJkZXYvdGVzdF9iYmRldl9w ZXJmLmMNCj4gPiBpbmRleCA0NWMwZDYyLi4zMmYyM2ZmIDEwMDY0NA0KPiA+IC0tLSBhL2FwcC90 ZXN0LWJiZGV2L3Rlc3RfYmJkZXZfcGVyZi5jDQo+ID4gKysrIGIvYXBwL3Rlc3QtYmJkZXYvdGVz dF9iYmRldl9wZXJmLmMNCj4gPiBAQCAtNTIsNiArNTIsMTggQEANCj4gPiAgI2RlZmluZSBGTFJf NUdfVElNRU9VVCA2MTANCj4gPiAgI2VuZGlmDQo+ID4NCj4gPiArI2lmZGVmIFJURV9MSUJSVEVf UE1EX0JCREVWX0FDQzEwMA0KPiA+ICsjaW5jbHVkZSA8cnRlX2FjYzEwMF9jZmcuaD4NCj4gPiAr I2RlZmluZSBBQ0MxMDBQRl9EUklWRVJfTkFNRSAgICgiaW50ZWxfYWNjMTAwX3BmIikNCj4gPiAr I2RlZmluZSBBQ0MxMDBWRl9EUklWRVJfTkFNRSAgICgiaW50ZWxfYWNjMTAwX3ZmIikNCj4gPiAr I2RlZmluZSBBQ0MxMDBfUU1HUl9OVU1fQVFTIDE2DQo+ID4gKyNkZWZpbmUgQUNDMTAwX1FNR1Jf TlVNX1FHUyAyDQo+ID4gKyNkZWZpbmUgQUNDMTAwX1FNR1JfQVFfREVQVEggNQ0KPiA+ICsjZGVm aW5lIEFDQzEwMF9RTUdSX0lOVkFMSURfSURYIC0xDQo+ID4gKyNkZWZpbmUgQUNDMTAwX1FNR1Jf UlIgMQ0KPiA+ICsjZGVmaW5lIEFDQzEwMF9RT1NfR0JSIDANCj4gPiArI2VuZGlmDQo+ID4gKw0K PiA+ICAjZGVmaW5lIE9QU19DQUNIRV9TSVpFIDI1NlUNCj4gPiAgI2RlZmluZSBPUFNfUE9PTF9T SVpFX01JTiA1MTFVIC8qIDAuNUsgcGVyIHF1ZXVlICovDQo+ID4NCj4gPiBAQCAtNjUzLDYgKzY2 NSw2NiBAQCB0eXBlZGVmIGludCAodGVzdF9jYXNlX2Z1bmN0aW9uKShzdHJ1Y3QNCj4gYWN0aXZl X2RldmljZSAqYWQsDQo+ID4gIAkJCQlpbmZvLT5kZXZfbmFtZSk7DQo+ID4gIAl9DQo+ID4gICNl bmRpZg0KPiA+ICsjaWZkZWYgUlRFX0xJQlJURV9QTURfQkJERVZfQUNDMTAwDQo+IHNlZW1zIGxp a2UgdGhpcyBmdW5jdGlvbiB3b3VsZCBicmVhayBpZiBvbmUgb2YgdGhlIG90aGVyIGJiZGV2J3Mg d2VyZSANCj4gI2RlZmluZWQuDQoNCk5vIHRoZXNlIGFyZSBpbmRlcGVuZGVudC4gQnkgZGVmYXVs dCB0aGV5IGFyZSBhbGwgZGVmaW5lZC4gDQoNCg0KPiA+ICsJaWYgKChnZXRfaW5pdF9kZXZpY2Uo KSA9PSB0cnVlKSAmJg0KPiA+ICsJCSghc3RyY21wKGluZm8tPmRydi5kcml2ZXJfbmFtZSwNCj4g QUNDMTAwUEZfRFJJVkVSX05BTUUpKSkgew0KPiA+ICsJCXN0cnVjdCBhY2MxMDBfY29uZiBjb25m Ow0KPiA+ICsJCXVuc2lnbmVkIGludCBpOw0KPiA+ICsNCj4gPiArCQlwcmludGYoIkNvbmZpZ3Vy ZSBBQ0MxMDAgRkVDIERyaXZlciAlcyB3aXRoIGRlZmF1bHQNCj4gdmFsdWVzXG4iLA0KPiA+ICsJ CQkJaW5mby0+ZHJ2LmRyaXZlcl9uYW1lKTsNCj4gPiArDQo+ID4gKwkJLyogY2xlYXIgZGVmYXVs dCBjb25maWd1cmF0aW9uIGJlZm9yZSBpbml0aWFsaXphdGlvbiAqLw0KPiA+ICsJCW1lbXNldCgm Y29uZiwgMCwgc2l6ZW9mKHN0cnVjdCBhY2MxMDBfY29uZikpOw0KPiA+ICsNCj4gPiArCQkvKiBB bHdheXMgc2V0IGluIFBGIG1vZGUgZm9yIGJ1aWx0LWluIGNvbmZpZ3VyYXRpb24gKi8NCj4gPiAr CQljb25mLnBmX21vZGVfZW4gPSB0cnVlOw0KPiA+ICsJCWZvciAoaSA9IDA7IGkgPCBSVEVfQUND MTAwX05VTV9WRlM7ICsraSkgew0KPiA+ICsJCQljb25mLmFyYl9kbF80Z1tpXS5nYnJfdGhyZXNo b2xkMSA9DQo+IEFDQzEwMF9RT1NfR0JSOw0KPiA+ICsJCQljb25mLmFyYl9kbF80Z1tpXS5nYnJf dGhyZXNob2xkMSA9DQo+IEFDQzEwMF9RT1NfR0JSOw0KPiA+ICsJCQljb25mLmFyYl9kbF80Z1tp XS5yb3VuZF9yb2Jpbl93ZWlnaHQgPQ0KPiBBQ0MxMDBfUU1HUl9SUjsNCj4gPiArCQkJY29uZi5h cmJfdWxfNGdbaV0uZ2JyX3RocmVzaG9sZDEgPQ0KPiBBQ0MxMDBfUU9TX0dCUjsNCj4gPiArCQkJ Y29uZi5hcmJfdWxfNGdbaV0uZ2JyX3RocmVzaG9sZDEgPQ0KPiBBQ0MxMDBfUU9TX0dCUjsNCj4g PiArCQkJY29uZi5hcmJfdWxfNGdbaV0ucm91bmRfcm9iaW5fd2VpZ2h0ID0NCj4gQUNDMTAwX1FN R1JfUlI7DQo+ID4gKwkJCWNvbmYuYXJiX2RsXzVnW2ldLmdicl90aHJlc2hvbGQxID0NCj4gQUND MTAwX1FPU19HQlI7DQo+ID4gKwkJCWNvbmYuYXJiX2RsXzVnW2ldLmdicl90aHJlc2hvbGQxID0N Cj4gQUNDMTAwX1FPU19HQlI7DQo+ID4gKwkJCWNvbmYuYXJiX2RsXzVnW2ldLnJvdW5kX3JvYmlu X3dlaWdodCA9DQo+IEFDQzEwMF9RTUdSX1JSOw0KPiA+ICsJCQljb25mLmFyYl91bF81Z1tpXS5n YnJfdGhyZXNob2xkMSA9DQo+IEFDQzEwMF9RT1NfR0JSOw0KPiA+ICsJCQljb25mLmFyYl91bF81 Z1tpXS5nYnJfdGhyZXNob2xkMSA9DQo+IEFDQzEwMF9RT1NfR0JSOw0KPiA+ICsJCQljb25mLmFy Yl91bF81Z1tpXS5yb3VuZF9yb2Jpbl93ZWlnaHQgPQ0KPiBBQ0MxMDBfUU1HUl9SUjsNCj4gPiAr CQl9DQo+ID4gKw0KPiA+ICsJCWNvbmYuaW5wdXRfcG9zX2xscl8xX2JpdCA9IHRydWU7DQo+ID4g KwkJY29uZi5vdXRwdXRfcG9zX2xscl8xX2JpdCA9IHRydWU7DQo+ID4gKwkJY29uZi5udW1fdmZf YnVuZGxlcyA9IDE7IC8qKjwgTnVtYmVyIG9mIFZGIGJ1bmRsZXMgdG8NCj4gc2V0dXAgKi8NCj4g PiArDQo+ID4gKwkJY29uZi5xX3VsXzRnLm51bV9xZ3JvdXBzID0gQUNDMTAwX1FNR1JfTlVNX1FH UzsNCj4gPiArCQljb25mLnFfdWxfNGcuZmlyc3RfcWdyb3VwX2luZGV4ID0NCj4gQUNDMTAwX1FN R1JfSU5WQUxJRF9JRFg7DQo+ID4gKwkJY29uZi5xX3VsXzRnLm51bV9hcXNfcGVyX2dyb3VwcyA9 DQo+IEFDQzEwMF9RTUdSX05VTV9BUVM7DQo+ID4gKwkJY29uZi5xX3VsXzRnLmFxX2RlcHRoX2xv ZzIgPSBBQ0MxMDBfUU1HUl9BUV9ERVBUSDsNCj4gPiArCQljb25mLnFfZGxfNGcubnVtX3Fncm91 cHMgPSBBQ0MxMDBfUU1HUl9OVU1fUUdTOw0KPiA+ICsJCWNvbmYucV9kbF80Zy5maXJzdF9xZ3Jv dXBfaW5kZXggPQ0KPiBBQ0MxMDBfUU1HUl9JTlZBTElEX0lEWDsNCj4gPiArCQljb25mLnFfZGxf NGcubnVtX2Fxc19wZXJfZ3JvdXBzID0NCj4gQUNDMTAwX1FNR1JfTlVNX0FRUzsNCj4gPiArCQlj b25mLnFfZGxfNGcuYXFfZGVwdGhfbG9nMiA9IEFDQzEwMF9RTUdSX0FRX0RFUFRIOw0KPiA+ICsJ CWNvbmYucV91bF81Zy5udW1fcWdyb3VwcyA9IEFDQzEwMF9RTUdSX05VTV9RR1M7DQo+ID4gKwkJ Y29uZi5xX3VsXzVnLmZpcnN0X3Fncm91cF9pbmRleCA9DQo+IEFDQzEwMF9RTUdSX0lOVkFMSURf SURYOw0KPiA+ICsJCWNvbmYucV91bF81Zy5udW1fYXFzX3Blcl9ncm91cHMgPQ0KPiBBQ0MxMDBf UU1HUl9OVU1fQVFTOw0KPiA+ICsJCWNvbmYucV91bF81Zy5hcV9kZXB0aF9sb2cyID0gQUNDMTAw X1FNR1JfQVFfREVQVEg7DQo+ID4gKwkJY29uZi5xX2RsXzVnLm51bV9xZ3JvdXBzID0gQUNDMTAw X1FNR1JfTlVNX1FHUzsNCj4gPiArCQljb25mLnFfZGxfNWcuZmlyc3RfcWdyb3VwX2luZGV4ID0N Cj4gQUNDMTAwX1FNR1JfSU5WQUxJRF9JRFg7DQo+ID4gKwkJY29uZi5xX2RsXzVnLm51bV9hcXNf cGVyX2dyb3VwcyA9DQo+IEFDQzEwMF9RTUdSX05VTV9BUVM7DQo+ID4gKwkJY29uZi5xX2RsXzVn LmFxX2RlcHRoX2xvZzIgPSBBQ0MxMDBfUU1HUl9BUV9ERVBUSDsNCj4gPiArDQo+ID4gKwkJLyog c2V0dXAgUEYgd2l0aCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uICovDQo+ID4gKwkJcmV0ID0g YWNjMTAwX2NvbmZpZ3VyZShpbmZvLT5kZXZfbmFtZSwgJmNvbmYpOw0KPiA+ICsJCVRFU1RfQVNT RVJUX1NVQ0NFU1MocmV0LA0KPiA+ICsJCQkJIkZhaWxlZCB0byBjb25maWd1cmUgQUNDMTAwIFBG IGZvciBiYmRldg0KPiAlcyIsDQo+ID4gKwkJCQlpbmZvLT5kZXZfbmFtZSk7DQo+ID4gKwkJLyog TGV0J3MgcmVmcmVzaCB0aGlzIG5vdyB0aGlzIGlzIGNvbmZpZ3VyZWQgKi8NCj4gPiArCX0NCj4g PiArCXJ0ZV9iYmRldl9pbmZvX2dldChkZXZfaWQsIGluZm8pOw0KPiBUaGUgb3RoZXIgYmJkZXYn cyBkbyBub3QgY2FsbCBydGVfYmJkZXZfaW5mb19nZXQsIGNhbiB0aGlzIGJlIHJlbW92ZWQgPw0K DQpBY3R1YWxseSBpdCBzaG91bGQgYmUgYWRkZWQgb3V0c2lkZSBmb3IgYWxsIHZlcnNpb25zIHBv c3QtY29uZmlndXJhaW9uLiBUaGFua3MNCg0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gIAluYl9x dWV1ZXMgPSBSVEVfTUlOKHJ0ZV9sY29yZV9jb3VudCgpLCBpbmZvLSBkcnYubWF4X251bV9xdWV1 ZXMpOw0KPiA+ICAJbmJfcXVldWVzID0gUlRFX01JTihuYl9xdWV1ZXMsICh1bnNpZ25lZCBpbnQp IE1BWF9RVUVVRVMpOw0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMvcmVsX25vdGVz L3JlbGVhc2VfMjBfMTEucnN0DQo+ID4gYi9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIw XzExLnJzdA0KPiA+IGluZGV4IDczYWMwOGYuLmM4ZDA1ODYgMTAwNjQ0DQo+ID4gLS0tIGEvZG9j L2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMF8xMS5yc3QNCj4gPiArKysgYi9kb2MvZ3VpZGVz L3JlbF9ub3Rlcy9yZWxlYXNlXzIwXzExLnJzdA0KPiA+IEBAIC01NSw2ICs1NSwxMSBAQCBOZXcg RmVhdHVyZXMNCj4gPiAgICAgICBBbHNvLCBtYWtlIHN1cmUgdG8gc3RhcnQgdGhlIGFjdHVhbCB0 ZXh0IGF0IHRoZSBtYXJnaW4uDQo+ID4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+DQo+ID4gKyogKipBZGRlZCBJbnRlbCBB Q0MxMDAgYmJkZXYgUE1ELioqDQo+ID4gKw0KPiA+ICsgIEFkZGVkIGEgbmV3IGBgYWNjMTAwYGAg YmJkZXYgZHJpdmVyIGZvciB0aGUgSW50ZWxcIHxyZWd8IEFDQzEwMCANCj4gPiArIGFjY2VsZXJh dG9yICBhbHNvIGtub3duIGFzIE1vdW50IEJyeWNlLiAgU2VlIHRoZSANCj4gPiArIDpkb2M6YC4u L2JiZGV2cy9hY2MxMDBgIEJCREVWIGd1aWRlIGZvciBtb3JlIGRldGFpbHMgb24gdGhpcyBuZXcg ZHJpdmVyLg0KPiA+DQo+ID4gIFJlbW92ZWQgSXRlbXMNCj4gPiAgLS0tLS0tLS0tLS0tLQ0KPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2ViYW5kL2FjYzEwMC9tZXNvbi5idWlsZA0KPiA+IGIv ZHJpdmVycy9iYXNlYmFuZC9hY2MxMDAvbWVzb24uYnVpbGQNCj4gPiBpbmRleCA4YWZhZmMyLi43 YWM0NGRjIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvYmFzZWJhbmQvYWNjMTAwL21lc29uLmJ1 aWxkDQo+ID4gKysrIGIvZHJpdmVycy9iYXNlYmFuZC9hY2MxMDAvbWVzb24uYnVpbGQNCj4gPiBA QCAtNCwzICs0LDUgQEANCj4gPiAgZGVwcyArPSBbJ2JiZGV2JywgJ2J1c192ZGV2JywgJ3Jpbmcn LCAncGNpJywgJ2J1c19wY2knXQ0KPiA+DQo+ID4gIHNvdXJjZXMgPSBmaWxlcygncnRlX2FjYzEw MF9wbWQuYycpDQo+ID4gKw0KPiA+ICtpbnN0YWxsX2hlYWRlcnMoJ3J0ZV9hY2MxMDBfY2ZnLmgn KQ0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2ViYW5kL2FjYzEwMC9ydGVfYWNjMTAwX2Nm Zy5oDQo+ID4gYi9kcml2ZXJzL2Jhc2ViYW5kL2FjYzEwMC9ydGVfYWNjMTAwX2NmZy5oDQo+ID4g aW5kZXggNzNiYmUzNi4uN2Y1MjNiYyAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2Jhc2ViYW5k L2FjYzEwMC9ydGVfYWNjMTAwX2NmZy5oDQo+ID4gKysrIGIvZHJpdmVycy9iYXNlYmFuZC9hY2Mx MDAvcnRlX2FjYzEwMF9jZmcuaA0KPiA+IEBAIC04OSw2ICs4OSwyMyBAQCBzdHJ1Y3QgYWNjMTAw X2NvbmYgew0KPiA+ICAJc3RydWN0IHJ0ZV9hcmJpdHJhdGlvbl90IGFyYl9kbF81Z1tSVEVfQUND MTAwX05VTV9WRlNdOyAgfTsNCj4gPg0KPiA+ICsvKioNCj4gPiArICogQ29uZmlndXJlIGEgQUND MTAwIGRldmljZQ0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gZGV2X25hbWUNCj4gPiArICogICBU aGUgbmFtZSBvZiB0aGUgZGV2aWNlLiBUaGlzIGlzIHRoZSBzaG9ydCBmb3JtIG9mIFBDSSBCREYs IGUuZy4gMDA6MDEuMC4NCj4gPiArICogICBJdCBjYW4gYWxzbyBiZSByZXRyaWV2ZWQgZm9yIGEg YmJkZXYgZGV2aWNlIGZyb20gdGhlIGRldl9uYW1lIGZpZWxkIGluDQo+IHRoZQ0KPiA+ICsgKiAg IHJ0ZV9iYmRldl9pbmZvIHN0cnVjdHVyZSByZXR1cm5lZCBieSBydGVfYmJkZXZfaW5mb19nZXQo KS4NCj4gPiArICogQHBhcmFtIGNvbmYNCj4gPiArICogICBDb25maWd1cmF0aW9uIHRvIGFwcGx5 IHRvIEFDQzEwMCBIVy4NCj4gPiArICoNCj4gPiArICogQHJldHVybg0KPiA+ICsgKiAgIFplcm8g b24gc3VjY2VzcywgbmVnYXRpdmUgdmFsdWUgb24gZmFpbHVyZS4NCj4gPiArICovDQo+ID4gK19f cnRlX2V4cGVyaW1lbnRhbA0KPiA+ICtpbnQNCj4gPiArYWNjMTAwX2NvbmZpZ3VyZShjb25zdCBj aGFyICpkZXZfbmFtZSwgc3RydWN0IGFjYzEwMF9jb25mICpjb25mKTsNCj4gPiArDQo+ID4gICNp ZmRlZiBfX2NwbHVzcGx1cw0KPiA+ICB9DQo+ID4gICNlbmRpZg0KPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2Jhc2ViYW5kL2FjYzEwMC9ydGVfYWNjMTAwX3BtZC5jDQo+ID4gYi9kcml2ZXJzL2Jh c2ViYW5kL2FjYzEwMC9ydGVfYWNjMTAwX3BtZC5jDQo+ID4gaW5kZXggMzU4OTgxNC4uYjUwZGQz MiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2Jhc2ViYW5kL2FjYzEwMC9ydGVfYWNjMTAwX3Bt ZC5jDQo+ID4gKysrIGIvZHJpdmVycy9iYXNlYmFuZC9hY2MxMDAvcnRlX2FjYzEwMF9wbWQuYw0K PiA+IEBAIC04NSw2ICs4NSwyNiBAQA0KPiA+DQo+ID4gIGVudW0ge1VMXzRHID0gMCwgVUxfNUcs IERMXzRHLCBETF81RywgTlVNX0FDQ307DQo+ID4NCj4gPiArLyogUmV0dXJuIHRoZSBhY2NlbGVy YXRvciBlbnVtIGZvciBhIFF1ZXVlIEdyb3VwIEluZGV4ICovIHN0YXRpYyANCj4gPiAraW5saW5l IGludCBhY2NGcm9tUWdpZChpbnQgcWdfaWR4LCBjb25zdCBzdHJ1Y3QgYWNjMTAwX2NvbmYNCj4g PiArKmFjYzEwMF9jb25mKSB7DQo+ID4gKwlpbnQgYWNjUWdbQUNDMTAwX05VTV9RR1JQU107DQo+ ID4gKwlpbnQgTnVtUUdyb3Vwc1BlckZuW05VTV9BQ0NdOw0KPiA+ICsJaW50IGFjYywgcWdJZHgs IHFnSW5kZXggPSAwOw0KPiA+ICsJZm9yIChxZ0lkeCA9IDA7IHFnSWR4IDwgQUNDMTAwX05VTV9R R1JQUzsgcWdJZHgrKykNCj4gPiArCQlhY2NRZ1txZ0lkeF0gPSAwOw0KPiA+ICsJTnVtUUdyb3Vw c1BlckZuW1VMXzRHXSA9IGFjYzEwMF9jb25mLT5xX3VsXzRnLm51bV9xZ3JvdXBzOw0KPiA+ICsJ TnVtUUdyb3Vwc1BlckZuW1VMXzVHXSA9IGFjYzEwMF9jb25mLT5xX3VsXzVnLm51bV9xZ3JvdXBz Ow0KPiA+ICsJTnVtUUdyb3Vwc1BlckZuW0RMXzRHXSA9IGFjYzEwMF9jb25mLT5xX2RsXzRnLm51 bV9xZ3JvdXBzOw0KPiA+ICsJTnVtUUdyb3Vwc1BlckZuW0RMXzVHXSA9IGFjYzEwMF9jb25mLT5x X2RsXzVnLm51bV9xZ3JvdXBzOw0KPiA+ICsJZm9yIChhY2MgPSBVTF80RzsgIGFjYyA8IE5VTV9B Q0M7IGFjYysrKQ0KPiA+ICsJCWZvciAocWdJZHggPSAwOyBxZ0lkeCA8IE51bVFHcm91cHNQZXJG blthY2NdOyBxZ0lkeCsrKQ0KPiA+ICsJCQlhY2NRZ1txZ0luZGV4KytdID0gYWNjOw0KPiANCj4g VGhpcyBsb29rcyBpbmVmZmljaWVudCwgaXMgdGhlcmUgYSB3YXkgdGhpcyBjb3VsZCBiZSBjYWxj dWxhdGVkIA0KPiB3aXRob3V0IGZpbGxpbmcgYXJyYXlzIHRvDQo+IA0KPiBhY2Nlc3MgMSB2YWx1 ZSA/DQoNClRoYXQgaXMgbm90IHRpbWUgY3JpdGljYWwsIGFuZCB0aGUgc2FtZSBjb21tb24gY29k ZSBpcyBydW4gZWFjaCB0aW1lLiANCg0KPiANCj4gPiArCWFjYyA9IGFjY1FnW3FnX2lkeF07DQo+ ID4gKwlyZXR1cm4gYWNjOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAvKiBSZXR1cm4gdGhlIHF1ZXVl IHRvcG9sb2d5IGZvciBhIFF1ZXVlIEdyb3VwIEluZGV4ICovICBzdGF0aWMgDQo+ID4gaW5saW5l IHZvaWQgIHF0b3BGcm9tQWNjKHN0cnVjdCBydGVfcV90b3BvbG9neV90ICoqcXRvcCwgaW50IA0K PiA+IGFjY19lbnVtLCBAQCAtMTEzLDYgKzEzMywzMCBAQA0KPiA+ICAJKnF0b3AgPSBwX3F0b3A7 DQo+ID4gIH0NCj4gPg0KPiA+ICsvKiBSZXR1cm4gdGhlIEFRIGRlcHRoIGZvciBhIFF1ZXVlIEdy b3VwIEluZGV4ICovIHN0YXRpYyBpbmxpbmUgaW50IA0KPiA+ICthcURlcHRoKGludCBxZ19pZHgs IHN0cnVjdCBhY2MxMDBfY29uZiAqYWNjMTAwX2NvbmYpIHsNCj4gPiArCXN0cnVjdCBydGVfcV90 b3BvbG9neV90ICpxX3RvcCA9IE5VTEw7DQo+ID4gKwlpbnQgYWNjX2VudW0gPSBhY2NGcm9tUWdp ZChxZ19pZHgsIGFjYzEwMF9jb25mKTsNCj4gPiArCXF0b3BGcm9tQWNjKCZxX3RvcCwgYWNjX2Vu dW0sIGFjYzEwMF9jb25mKTsNCj4gPiArCWlmICh1bmxpa2VseShxX3RvcCA9PSBOVUxMKSkNCj4g PiArCQlyZXR1cm4gMDsNCj4gDQo+IFRoaXMgZXJyb3IgaXMgbm90IGhhbmRsZWQgd2VsbCBiZSB0 aGUgY2FsbGVycy4NCj4gDQo+IGFxTnVtIGlzIHNpbWlsYXIuDQoNClRoaXMgZmFpbHMgaW4gYSBj b25zaXN0ZW50IGJhc2lzLCBieSBoYXZpbmcgbm90IHF1ZXVlIGF2YWlsYWJsZSBhbmQgaGFuZGxp bmcgdGhpcyBhcyB0aGUgZGVmYXVsdCBjYXNlLg0KDQo+IA0KPiA+ICsJcmV0dXJuIHFfdG9wLT5h cV9kZXB0aF9sb2cyOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiBSZXR1cm4gdGhlIEFRIGRlcHRo IGZvciBhIFF1ZXVlIEdyb3VwIEluZGV4ICovIHN0YXRpYyBpbmxpbmUgaW50IA0KPiA+ICthcU51 bShpbnQgcWdfaWR4LCBzdHJ1Y3QgYWNjMTAwX2NvbmYgKmFjYzEwMF9jb25mKSB7DQo+ID4gKwlz dHJ1Y3QgcnRlX3FfdG9wb2xvZ3lfdCAqcV90b3AgPSBOVUxMOw0KPiA+ICsJaW50IGFjY19lbnVt ID0gYWNjRnJvbVFnaWQocWdfaWR4LCBhY2MxMDBfY29uZik7DQo+ID4gKwlxdG9wRnJvbUFjYygm cV90b3AsIGFjY19lbnVtLCBhY2MxMDBfY29uZik7DQo+ID4gKwlpZiAodW5saWtlbHkocV90b3Ag PT0gTlVMTCkpDQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKwlyZXR1cm4gcV90b3AtPm51bV9hcXNf cGVyX2dyb3VwczsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgc3RhdGljIHZvaWQNCj4gPiAgaW5pdFFU b3Aoc3RydWN0IGFjYzEwMF9jb25mICphY2MxMDBfY29uZikgIHsgQEAgLTQxNzcsMyArNDIyMSw0 NjQgDQo+ID4gQEAgc3RhdGljIGludCBhY2MxMDBfcGNpX3JlbW92ZShzdHJ1Y3QgcnRlX3BjaV9k ZXZpY2UgKnBjaV9kZXYpIA0KPiA+IFJURV9QTURfUkVHSVNURVJfUENJX1RBQkxFKEFDQzEwMFBG X0RSSVZFUl9OQU1FLA0KPiA+IHBjaV9pZF9hY2MxMDBfcGZfbWFwKTsNCj4gUlRFX1BNRF9SRUdJ U1RFUl9QQ0koQUNDMTAwVkZfRFJJVkVSX05BTUUsDQo+ID4gYWNjMTAwX3BjaV92Zl9kcml2ZXIp Ow0KPiA+IFJURV9QTURfUkVHSVNURVJfUENJX1RBQkxFKEFDQzEwMFZGX0RSSVZFUl9OQU1FLA0K PiA+IHBjaV9pZF9hY2MxMDBfdmZfbWFwKTsNCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIEltcGxl bWVudGF0aW9uIHRvIGZpeCB0aGUgcG93ZXIgb24gc3RhdHVzIG9mIHNvbWUgNUdVTCBlbmdpbmVz DQo+ID4gKyAqIFRoaXMgcmVxdWlyZXMgRE1BIHBlcm1pc3Npb24gaWYgcG9ydGVkIG91dHNpZGUg RFBESw0KPiBUaGlzIHNvdW5kcyBsaWtlIGEgd29ya2Fyb3VuZCwgY2FuIG1vcmUgZGV0YWlsIGJl IGFkZGVkIGhlcmUgPw0KDQpUaGVyZSBhcmUgY29tbWVudHMgdGhyb3VnaCB0aGUgY29kZSBJIGJl bGlldmU6DQogIC0gLyogRGV0ZWN0IGVuZ2luZXMgaW4gdW5kZWZpbmVkIHN0YXRlICovDQogIC0g LyogRm9yY2UgZWFjaCBlbmdpbmUgd2hpY2ggaXMgaW4gdW5zcGVjaWZpZWQgc3RhdGUgKi8NCiAg LSAvKiBSZXNldCBMRFBDIENvcmVzICovDQogIC0gLyogQ2hlY2sgZW5naW5lIHBvd2VyLW9uIHN0 YXR1cyBhZ2FpbiAqLyBEbyB5b3UgYmVsaWV2ZSB0aGlzIGlzIG5vdCBleHBsaWNpdCBlbm91Z2gu IFBvd2VyLW9uIHN0YXR1cyBtYXkgYmUgaW4gYW4gdW5kZWZpbmVkIHN0YXRlIGhlbmNlIHRoaXMg ZW5naW5lIGFyZSBhdnRpdmF0ZSB3aXRoIGR1bW15IHBheWxvYWQgdG8gbWFrZSBzdXJlIHRoZXkg YXJlIGluIGEgcHJlZGljYWJsZSBzdGF0ZSBvbmNlIGNvbmZpZ3VyYXRpb24gaXMgZG9uZS4gDQoN Cj4gPiArICovDQo+ID4gK3N0YXRpYyB2b2lkDQo+ID4gK3Bvd2Vyb25fY2xlYW51cChzdHJ1Y3Qg cnRlX2JiZGV2ICpiYmRldiwgc3RydWN0IGFjYzEwMF9kZXZpY2UgKmQsDQo+ID4gKwkJc3RydWN0 IGFjYzEwMF9jb25mICpjb25mKQ0KPiA+ICt7DQo+ID4gKwlpbnQgaSwgdGVtcGxhdGVfaWR4LCBx Z19pZHg7DQo+ID4gKwl1aW50MzJfdCBhZGRyZXNzLCBzdGF0dXMsIHBheWxvYWQ7DQo+ID4gKwlw cmludGYoIk5lZWQgdG8gY2xlYXIgcG93ZXItb24gNUdVTCBzdGF0dXMgaW4gaW50ZXJuYWwgbWVt b3J5XG4iKTsNCj4gPiArCS8qIFJlc2V0IExEUEMgQ29yZXMgKi8NCj4gPiArCWZvciAoaSA9IDA7 IGkgPCBBQ0MxMDBfRU5HSU5FU19NQVg7IGkrKykNCj4gPiArCQlhY2MxMDBfcmVnX3dyaXRlKGQs IEhXUGZGZWNVbDVnQ250cmxSZWcgKw0KPiA+ICsJCQkJQUNDMTAwX0VOR0lORV9PRkZTRVQgKiBp LA0KPiBBQ0MxMDBfUkVTRVRfSEkpOw0KPiA+ICsJdXNsZWVwKExPTkdfV0FJVCk7DQo+ID4gKwlm b3IgKGkgPSAwOyBpIDwgQUNDMTAwX0VOR0lORVNfTUFYOyBpKyspDQo+ID4gKwkJYWNjMTAwX3Jl Z193cml0ZShkLCBIV1BmRmVjVWw1Z0NudHJsUmVnICsNCj4gPiArCQkJCUFDQzEwMF9FTkdJTkVf T0ZGU0VUICogaSwNCj4gQUNDMTAwX1JFU0VUX0xPKTsNCj4gPiArCXVzbGVlcChMT05HX1dBSVQp Ow0KPiA+ICsJLyogUHJlcGFyZSBkdW1teSB3b3JrbG9hZCAqLw0KPiA+ICsJYWxsb2NfMng2NG1i X3N3X3JpbmdzX21lbShiYmRldiwgZCwgMCk7DQo+ID4gKwkvKiBTZXQgYmFzZSBhZGRyZXNzZXMg Ki8NCj4gPiArCXVpbnQzMl90IHBoeXNfaGlnaCA9ICh1aW50MzJfdCkoZC0+c3dfcmluZ3NfcGh5 cyA+PiAzMik7DQo+ID4gKwl1aW50MzJfdCBwaHlzX2xvdyAgPSAodWludDMyX3QpKGQtPnN3X3Jp bmdzX3BoeXMgJg0KPiA+ICsJCQl+KEFDQzEwMF9TSVpFXzY0TUJZVEUtMSkpOw0KPiA+ICsJYWNj MTAwX3JlZ193cml0ZShkLCBIV1BmRG1hRmVjNUd1bERlc2NCYXNlSGlSZWdWZiwNCj4gcGh5c19o aWdoKTsNCj4gPiArCWFjYzEwMF9yZWdfd3JpdGUoZCwgSFdQZkRtYUZlYzVHdWxEZXNjQmFzZUxv UmVnVmYsIHBoeXNfbG93KTsNCj4gPiArDQo+ID4gKwkvKiBEZXNjcmlwdG9yIGZvciBhIGR1bW15 IDVHVUwgY29kZSBibG9jayBwcm9jZXNzaW5nKi8NCj4gPiArCXVuaW9uIGFjYzEwMF9kbWFfZGVz YyAqZGVzYyA9IE5VTEw7DQo+ID4gKwlkZXNjID0gZC0+c3dfcmluZ3M7DQo+ID4gKwlkZXNjLT5y ZXEuZGF0YV9wdHJzWzBdLmFkZHJlc3MgPSBkLT5zd19yaW5nc19waHlzICsNCj4gPiArCQkJQUND MTAwX0RFU0NfRkNXX09GRlNFVDsNCj4gPiArCWRlc2MtPnJlcS5kYXRhX3B0cnNbMF0uYmxlbiA9 IEFDQzEwMF9GQ1dfTERfQkxFTjsNCj4gPiArCWRlc2MtPnJlcS5kYXRhX3B0cnNbMF0uYmxraWQg PSBBQ0MxMDBfRE1BX0JMS0lEX0ZDVzsNCj4gPiArCWRlc2MtPnJlcS5kYXRhX3B0cnNbMF0ubGFz dCA9IDA7DQo+ID4gKwlkZXNjLT5yZXEuZGF0YV9wdHJzWzBdLmRtYV9leHQgPSAwOw0KPiA+ICsJ ZGVzYy0+cmVxLmRhdGFfcHRyc1sxXS5hZGRyZXNzID0gZC0+c3dfcmluZ3NfcGh5cyArIDUxMjsN Cj4gPiArCWRlc2MtPnJlcS5kYXRhX3B0cnNbMV0uYmxraWQgPSBBQ0MxMDBfRE1BX0JMS0lEX0lO Ow0KPiA+ICsJZGVzYy0+cmVxLmRhdGFfcHRyc1sxXS5sYXN0ID0gMTsNCj4gPiArCWRlc2MtPnJl cS5kYXRhX3B0cnNbMV0uZG1hX2V4dCA9IDA7DQo+ID4gKwlkZXNjLT5yZXEuZGF0YV9wdHJzWzFd LmJsZW4gPSA0NDsNCj4gPiArCWRlc2MtPnJlcS5kYXRhX3B0cnNbMl0uYWRkcmVzcyA9IGQtPnN3 X3JpbmdzX3BoeXMgKyAxMDI0Ow0KPiA+ICsJZGVzYy0+cmVxLmRhdGFfcHRyc1syXS5ibGtpZCA9 IEFDQzEwMF9ETUFfQkxLSURfT1VUX0VOQzsNCj4gPiArCWRlc2MtPnJlcS5kYXRhX3B0cnNbMl0u bGFzdCA9IDE7DQo+ID4gKwlkZXNjLT5yZXEuZGF0YV9wdHJzWzJdLmRtYV9leHQgPSAwOw0KPiA+ ICsJZGVzYy0+cmVxLmRhdGFfcHRyc1syXS5ibGVuID0gNTsNCj4gPiArCS8qIER1bW15IEZDVyAq Lw0KPiA+ICsJZGVzYy0+cmVxLmZjd19sZC5GQ1d2ZXJzaW9uID0gQUNDMTAwX0ZDV19WRVI7DQo+ ID4gKwlkZXNjLT5yZXEuZmN3X2xkLnFtID0gMTsNCj4gPiArCWRlc2MtPnJlcS5mY3dfbGQubmZp bGxlciA9IDMwOw0KPiA+ICsJZGVzYy0+cmVxLmZjd19sZC5CRyA9IDIgLSAxOw0KPiA+ICsJZGVz Yy0+cmVxLmZjd19sZC5aYyA9IDc7DQo+ID4gKwlkZXNjLT5yZXEuZmN3X2xkLm5jYiA9IDM1MDsN Cj4gPiArCWRlc2MtPnJlcS5mY3dfbGQucm1fZSA9IDQ7DQo+ID4gKwlkZXNjLT5yZXEuZmN3X2xk Lml0bWF4ID0gMTA7DQo+ID4gKwlkZXNjLT5yZXEuZmN3X2xkLmdhaW5faSA9IDE7DQo+ID4gKwlk ZXNjLT5yZXEuZmN3X2xkLmdhaW5faCA9IDE7DQo+ID4gKw0KPiA+ICsJaW50IGVuZ2luZXNfdG9f cmVzdGFydFtTSUdfVUxfNUdfTEFTVCArIDFdID0gezB9Ow0KPiA+ICsJaW50IG51bV9mYWlsZWRf ZW5naW5lID0gMDsNCj4gPiArCS8qIERldGVjdCBlbmdpbmVzIGluIHVuZGVmaW5lZCBzdGF0ZSAq Lw0KPiA+ICsJZm9yICh0ZW1wbGF0ZV9pZHggPSBTSUdfVUxfNUc7IHRlbXBsYXRlX2lkeCA8PSBT SUdfVUxfNUdfTEFTVDsNCj4gPiArCQkJdGVtcGxhdGVfaWR4KyspIHsNCj4gPiArCQkvKiBDaGVj ayBlbmdpbmUgcG93ZXItb24gc3RhdHVzICovDQo+ID4gKwkJYWRkcmVzcyA9IEh3UGZGZWNVbDVn SWJEZWJ1Z1JlZyArDQo+ID4gKwkJCQlBQ0MxMDBfRU5HSU5FX09GRlNFVCAqIHRlbXBsYXRlX2lk eDsNCj4gPiArCQlzdGF0dXMgPSAoYWNjMTAwX3JlZ19yZWFkKGQsIGFkZHJlc3MpID4+IDQpICYg MHhGOw0KPiA+ICsJCWlmIChzdGF0dXMgPT0gMCkgew0KPiA+ICsJCQllbmdpbmVzX3RvX3Jlc3Rh cnRbbnVtX2ZhaWxlZF9lbmdpbmVdID0NCj4gdGVtcGxhdGVfaWR4Ow0KPiA+ICsJCQludW1fZmFp bGVkX2VuZ2luZSsrOw0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpbnQgbnVtUXFz QWNjID0gY29uZi0+cV91bF81Zy5udW1fcWdyb3VwczsNCj4gPiArCWludCBudW1RZ3MgPSBjb25m LT5xX3VsXzVnLm51bV9xZ3JvdXBzOw0KPiA+ICsJcGF5bG9hZCA9IDA7DQo+ID4gKwlmb3IgKHFn X2lkeCA9IG51bVFxc0FjYzsgcWdfaWR4IDwgKG51bVFncyArIG51bVFxc0FjYyk7DQo+IHFnX2lk eCsrKQ0KPiA+ICsJCXBheWxvYWQgfD0gKDEgPDwgcWdfaWR4KTsNCj4gPiArCS8qIEZvcmNlIGVh Y2ggZW5naW5lIHdoaWNoIGlzIGluIHVuc3BlY2lmaWVkIHN0YXRlICovDQo+ID4gKwlmb3IgKGkg PSAwOyBpIDwgbnVtX2ZhaWxlZF9lbmdpbmU7IGkrKykgew0KPiA+ICsJCWludCBmYWlsZWRfZW5n aW5lID0gZW5naW5lc190b19yZXN0YXJ0W2ldOw0KPiA+ICsJCXByaW50ZigiRm9yY2UgZW5naW5l ICVkXG4iLCBmYWlsZWRfZW5naW5lKTsNCj4gPiArCQlmb3IgKHRlbXBsYXRlX2lkeCA9IFNJR19V TF81RzsgdGVtcGxhdGVfaWR4IDw9DQo+IFNJR19VTF81R19MQVNUOw0KPiA+ICsJCQkJdGVtcGxh dGVfaWR4KyspIHsNCj4gPiArCQkJYWRkcmVzcyA9IEhXUGZRbWdyR3JwVG1wbGF0ZVJlZzRJbmR4 DQo+ID4gKwkJCQkJKyBCWVRFU19JTl9XT1JEICogdGVtcGxhdGVfaWR4Ow0KPiA+ICsJCQlpZiAo dGVtcGxhdGVfaWR4ID09IGZhaWxlZF9lbmdpbmUpDQo+ID4gKwkJCQlhY2MxMDBfcmVnX3dyaXRl KGQsIGFkZHJlc3MsIHBheWxvYWQpOw0KPiA+ICsJCQllbHNlDQo+ID4gKwkJCQlhY2MxMDBfcmVn X3dyaXRlKGQsIGFkZHJlc3MsIDApOw0KPiA+ICsJCX0NCj4gPiArCQkvKiBSZXNldCBkZXNjcmlw dG9yIGhlYWRlciAqLw0KPiA+ICsJCWRlc2MtPnJlcS53b3JkMCA9IEFDQzEwMF9ETUFfREVTQ19U WVBFOw0KPiA+ICsJCWRlc2MtPnJlcS53b3JkMSA9IDA7DQo+ID4gKwkJZGVzYy0+cmVxLndvcmQy ID0gMDsNCj4gPiArCQlkZXNjLT5yZXEud29yZDMgPSAwOw0KPiA+ICsJCWRlc2MtPnJlcS5udW1D QnMgPSAxOw0KPiA+ICsJCWRlc2MtPnJlcS5tMmRsZW4gPSAyOw0KPiA+ICsJCWRlc2MtPnJlcS5k Mm1sZW4gPSAxOw0KPiA+ICsJCS8qIEVucXVldWUgdGhlIGNvZGUgYmxvY2sgZm9yIHByb2Nlc3Np bmcgKi8NCj4gPiArCQl1bmlvbiBhY2MxMDBfZW5xdWV1ZV9yZWdfZm10IGVucV9yZXE7DQo+ID4g KwkJZW5xX3JlcS52YWwgPSAwOw0KPiA+ICsJCWVucV9yZXEuYWRkcl9vZmZzZXQgPSBBQ0MxMDBf REVTQ19PRkZTRVQ7DQo+ID4gKwkJZW5xX3JlcS5udW1fZWxlbSA9IDE7DQo+ID4gKwkJZW5xX3Jl cS5yZXFfZWxlbV9hZGRyID0gMDsNCj4gPiArCQlydGVfd21iKCk7DQo+ID4gKwkJYWNjMTAwX3Jl Z193cml0ZShkLCBIV1BmUW1nckluZ3Jlc3NBcSArIDB4MTAwLA0KPiBlbnFfcmVxLnZhbCk7DQo+ ID4gKwkJdXNsZWVwKExPTkdfV0FJVCAqIDEwMCk7DQo+ID4gKwkJaWYgKGRlc2MtPnJlcS53b3Jk MCAhPSAyKQ0KPiA+ICsJCQlwcmludGYoIkRNQSBSZXNwb25zZSAlIyJQUkl4MzIiXG4iLCBkZXNj LQ0KPiA+cmVxLndvcmQwKTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkvKiBSZXNldCBMRFBDIENv cmVzICovDQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgQUNDMTAwX0VOR0lORVNfTUFYOyBpKyspDQo+ ID4gKwkJYWNjMTAwX3JlZ193cml0ZShkLCBIV1BmRmVjVWw1Z0NudHJsUmVnICsNCj4gPiArCQkJ CUFDQzEwMF9FTkdJTkVfT0ZGU0VUICogaSwNCj4gQUNDMTAwX1JFU0VUX0hJKTsNCj4gPiArCXVz bGVlcChMT05HX1dBSVQpOw0KPiA+ICsJZm9yIChpID0gMDsgaSA8IEFDQzEwMF9FTkdJTkVTX01B WDsgaSsrKQ0KPiA+ICsJCWFjYzEwMF9yZWdfd3JpdGUoZCwgSFdQZkZlY1VsNWdDbnRybFJlZyAr DQo+ID4gKwkJCQlBQ0MxMDBfRU5HSU5FX09GRlNFVCAqIGksDQo+IEFDQzEwMF9SRVNFVF9MTyk7 DQo+ID4gKwl1c2xlZXAoTE9OR19XQUlUKTsNCj4gPiArCWFjYzEwMF9yZWdfd3JpdGUoZCwgSFdQ ZkhpNUdIYXJkUmVzZXRSZWcsDQo+IEFDQzEwMF9SRVNFVF9IQVJEKTsNCj4gPiArCXVzbGVlcChM T05HX1dBSVQpOw0KPiA+ICsJaW50IG51bUVuZ2luZXMgPSAwOw0KPiA+ICsJLyogQ2hlY2sgZW5n aW5lIHBvd2VyLW9uIHN0YXR1cyBhZ2FpbiAqLw0KPiA+ICsJZm9yICh0ZW1wbGF0ZV9pZHggPSBT SUdfVUxfNUc7IHRlbXBsYXRlX2lkeCA8PSBTSUdfVUxfNUdfTEFTVDsNCj4gPiArCQkJdGVtcGxh dGVfaWR4KyspIHsNCj4gPiArCQlhZGRyZXNzID0gSHdQZkZlY1VsNWdJYkRlYnVnUmVnICsNCj4g PiArCQkJCUFDQzEwMF9FTkdJTkVfT0ZGU0VUICogdGVtcGxhdGVfaWR4Ow0KPiA+ICsJCXN0YXR1 cyA9IChhY2MxMDBfcmVnX3JlYWQoZCwgYWRkcmVzcykgPj4gNCkgJiAweEY7DQo+ID4gKwkJYWRk cmVzcyA9IEhXUGZRbWdyR3JwVG1wbGF0ZVJlZzRJbmR4DQo+ID4gKwkJCQkrIEJZVEVTX0lOX1dP UkQgKiB0ZW1wbGF0ZV9pZHg7DQo+ID4gKwkJaWYgKHN0YXR1cyA9PSAxKSB7DQo+ID4gKwkJCWFj YzEwMF9yZWdfd3JpdGUoZCwgYWRkcmVzcywgcGF5bG9hZCk7DQo+ID4gKwkJCW51bUVuZ2luZXMr KzsNCj4gPiArCQl9IGVsc2UNCj4gPiArCQkJYWNjMTAwX3JlZ193cml0ZShkLCBhZGRyZXNzLCAw KTsNCj4gPiArCX0NCj4gPiArCXByaW50ZigiTnVtYmVyIG9mIDVHVUwgZW5naW5lcyAlZFxuIiwg bnVtRW5naW5lcyk7DQo+ID4gKw0KPiA+ICsJaWYgKGQtPnN3X3JpbmdzX2Jhc2UgIT0gTlVMTCkN Cj4gPiArCQlydGVfZnJlZShkLT5zd19yaW5nc19iYXNlKTsNCj4gPiArCXVzbGVlcChMT05HX1dB SVQpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiBJbml0aWFsIGNvbmZpZ3VyYXRpb24gb2YgYSBB Q0MxMDAgZGV2aWNlIHByaW9yIHRvIHJ1bm5pbmcNCj4gPiArY29uZmlndXJlKCkgKi8gaW50IGFj YzEwMF9jb25maWd1cmUoY29uc3QgY2hhciAqZGV2X25hbWUsIHN0cnVjdCANCj4gPiArYWNjMTAw X2NvbmYgKmNvbmYpIHsNCj4gPiArCXJ0ZV9iYmRldl9sb2coSU5GTywgImFjYzEwMF9jb25maWd1 cmUiKTsNCj4gPiArCXVpbnQzMl90IHBheWxvYWQsIGFkZHJlc3MsIHN0YXR1czsNCj4gDQo+IG1h eWJlIHZhbHVlIG9yIGRhdGEgd291bGQgYmUgYSBiZXR0ZXIgdmFyaWFibGUgbmFtZSB0aGFuIHBh eWxvYWQuDQo+IA0KPiB3b3VsZCBtZWFuIGNoYW5naW5nIGFjYzEwMF9yZWdfd3JpdGUNCg0KdHJh bnNwYXJlbnQgdG8gbWUsIGJ1dCBjYW4gY2hhbmdlIGdpdmVuIERQREsgdXNlcyB0ZXJtIHZhbHVl LiANCg0KDQo+IA0KPiA+ICsJaW50IHFnX2lkeCwgdGVtcGxhdGVfaWR4LCB2Zl9pZHgsIGFjYywg aTsNCj4gPiArCXN0cnVjdCBydGVfYmJkZXYgKmJiZGV2ID0gcnRlX2JiZGV2X2dldF9uYW1lZF9k ZXYoZGV2X25hbWUpOw0KPiA+ICsNCj4gPiArCS8qIENvbXBpbGUgdGltZSBjaGVja3MgKi8NCj4g PiArCVJURV9CVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBhY2MxMDBfZG1hX3JlcV9kZXNjKSAh PSAyNTYpOw0KPiA+ICsJUlRFX0JVSUxEX0JVR19PTihzaXplb2YodW5pb24gYWNjMTAwX2RtYV9k ZXNjKSAhPSAyNTYpOw0KPiA+ICsJUlRFX0JVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IGFjYzEw MF9mY3dfdGQpICE9IDI0KTsNCj4gPiArCVJURV9CVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBh Y2MxMDBfZmN3X3RlKSAhPSAzMik7DQo+ID4gKw0KPiA+ICsJaWYgKGJiZGV2ID09IE5VTEwpIHsN Cj4gPiArCQlydGVfYmJkZXZfbG9nKEVSUiwNCj4gPiArCQkiSW52YWxpZCBkZXZfbmFtZSAoJXMp LCBvciBkZXZpY2UgaXMgbm90IHlldCBpbml0aWFsaXNlZCIsDQo+ID4gKwkJZGV2X25hbWUpOw0K PiA+ICsJCXJldHVybiAtRU5PREVWOw0KPiA+ICsJfQ0KPiA+ICsJc3RydWN0IGFjYzEwMF9kZXZp Y2UgKmQgPSBiYmRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+ID4gKw0KPiA+ICsJLyogU3RvcmUg Y29uZmlndXJhdGlvbiAqLw0KPiA+ICsJcnRlX21lbWNweSgmZC0+YWNjMTAwX2NvbmYsIGNvbmYs IHNpemVvZihkLT5hY2MxMDBfY29uZikpOw0KPiA+ICsNCj4gPiArCS8qIFBDSWUgQnJpZGdlIGNv bmZpZ3VyYXRpb24gKi8NCj4gPiArCWFjYzEwMF9yZWdfd3JpdGUoZCwgSHdQZlBjaWVHcGV4QnJp ZGdlQ29udHJvbCwNCj4gQUNDMTAwX0NGR19QQ0lfQlJJREdFKTsNCj4gPiArCWZvciAoaSA9IDE7 IGkgPCAxNzsgaSsrKQ0KPiANCj4gMTcgaXMgYSBtYWdpYyBudW1iZXIsIHVzZSBhICNkZWZpbmUN Cj4gDQo+IHRoaXMgaXMgYSBnZW5lcmFsIGlzc3VlLg0KDQpUaGVzZSBhcmUgb25seSB1c2VkIG9u Y2UgYnV0IHN0aWxsIGFncmVlZC4NCg0KPiANCj4gPiArCQlhY2MxMDBfcmVnX3dyaXRlKGQsDQo+ ID4gKw0KPiAJSHdQZlBjaWVHcGV4QXhpQWRkck1hcHBpbmdXaW5kb3dQZXhCYXNlSGlnaA0KPiA+ ICsJCQkJKyBpICogMTYsIDApOw0KPiA+ICsNCj4gPiArCS8qIFBDSWUgTGluayBUcmFpbmlpbmcg YW5kIFN0YXR1cyBTdGF0ZSBNYWNoaW5lICovDQo+ID4gKwlhY2MxMDBfcmVnX3dyaXRlKGQsIEh3 UGZQY2llR3BleEx0c3NtU3RhdGVDbnRybCwgMHhERkMwMDAwMCk7DQo+ID4gKw0KPiA+ICsJLyog UHJldmVudCBibG9ja2luZyBBWEkgcmVhZCBvbiBCUkVTUCBmb3IgQVhJIFdyaXRlICovDQo+ID4g KwlhZGRyZXNzID0gSHdQZlBjaWVHcGV4QXhpUGlvQ29udHJvbDsNCj4gPiArCXBheWxvYWQgPSBB Q0MxMDBfQ0ZHX1BDSV9BWEk7DQo+ID4gKwlhY2MxMDBfcmVnX3dyaXRlKGQsIGFkZHJlc3MsIHBh eWxvYWQpOw0KPiA+ICsNCj4gPiArCS8qIDVHREwgUExMIHBoYXNlIHNoaWZ0ICovDQo+ID4gKwlh Y2MxMDBfcmVnX3dyaXRlKGQsIEhXUGZDaGFEbDVnUGxsUGhzaGZ0MCwgMHgxKTsNCj4gPiArDQo+ ID4gKwkvKiBFeHBsaWNpdGx5IHJlbGVhc2luZyBBWEkgYXMgdGhpcyBtYXkgYmUgc3RvcHBlZCBh ZnRlciBQRiBGTFIvQk1FICovDQo+ID4gKwlhZGRyZXNzID0gSFdQZkRtYUF4aUNvbnRyb2w7DQo+ ID4gKwlwYXlsb2FkID0gMTsNCj4gPiArCWFjYzEwMF9yZWdfd3JpdGUoZCwgYWRkcmVzcywgcGF5 bG9hZCk7DQo+ID4gKw0KPiA+ICsJLyogRERSIENvbmZpZ3VyYXRpb24gKi8NCj4gPiArCWFkZHJl c3MgPSBIV1BmRGRyQmNUaW02Ow0KPiA+ICsJcGF5bG9hZCA9IGFjYzEwMF9yZWdfcmVhZChkLCBh ZGRyZXNzKTsNCj4gPiArCXBheWxvYWQgJj0gMHhGRkZGRkZGQjsgLyogQml0IDIgKi8gI2lmZGVm IEFDQzEwMF9ERFJfRUNDX0VOQUJMRQ0KPiA+ICsJcGF5bG9hZCB8PSAweDQ7DQo+ID4gKyNlbmRp Zg0KPiA+ICsJYWNjMTAwX3JlZ193cml0ZShkLCBhZGRyZXNzLCBwYXlsb2FkKTsNCj4gPiArCWFk ZHJlc3MgPSBIV1BmRGRyUGh5RHFzQ291bnROdW07DQo+ID4gKyNpZmRlZiBBQ0MxMDBfRERSX0VD Q19FTkFCTEUNCj4gPiArCXBheWxvYWQgPSA5Ow0KPiA+ICsjZWxzZQ0KPiA+ICsJcGF5bG9hZCA9 IDg7DQo+ID4gKyNlbmRpZg0KPiA+ICsJYWNjMTAwX3JlZ193cml0ZShkLCBhZGRyZXNzLCBwYXls b2FkKTsNCj4gPiArDQo+ID4gKwkvKiBTZXQgZGVmYXVsdCBkZXNjcmlwdG9yIHNpZ25hdHVyZSAq Lw0KPiA+ICsJYWRkcmVzcyA9IEhXUGZEbWFEZXNjcmlwdG9yU2lnbmF0dXR1cmU7DQo+ID4gKwlw YXlsb2FkID0gMDsNCj4gPiArCWFjYzEwMF9yZWdfd3JpdGUoZCwgYWRkcmVzcywgcGF5bG9hZCk7 DQo+ID4gKw0KPiA+ICsJLyogRW5hYmxlIHRoZSBFcnJvciBEZXRlY3Rpb24gaW4gRE1BICovDQo+ ID4gKwlwYXlsb2FkID0gQUNDMTAwX0NGR19ETUFfRVJST1I7DQo+ID4gKwlhZGRyZXNzID0gSFdQ ZkRtYUVycm9yRGV0ZWN0aW9uRW47DQo+ID4gKwlhY2MxMDBfcmVnX3dyaXRlKGQsIGFkZHJlc3Ms IHBheWxvYWQpOw0KPiA+ICsNCj4gPiArCS8qIEFYSSBDYWNoZSBjb25maWd1cmF0aW9uICovDQo+ ID4gKwlwYXlsb2FkID0gQUNDMTAwX0NGR19BWElfQ0FDSEU7DQo+ID4gKwlhZGRyZXNzID0gSFdQ ZkRtYUF4Y2FjaGVSZWc7DQo+ID4gKwlhY2MxMDBfcmVnX3dyaXRlKGQsIGFkZHJlc3MsIHBheWxv YWQpOw0KPiA+ICsNCj4gPiArCS8qIERlZmF1bHQgRE1BIENvbmZpZ3VyYXRpb24gKFFtZ3IgRW5h YmxlZCkgKi8NCj4gPiArCWFkZHJlc3MgPSBIV1BmRG1hQ29uZmlnMFJlZzsNCj4gPiArCXBheWxv YWQgPSAwOw0KPiA+ICsJYWNjMTAwX3JlZ193cml0ZShkLCBhZGRyZXNzLCBwYXlsb2FkKTsNCj4g PiArCWFkZHJlc3MgPSBIV1BmRG1hUW1hbmVuOw0KPiA+ICsJcGF5bG9hZCA9IDA7DQo+ID4gKwlh Y2MxMDBfcmVnX3dyaXRlKGQsIGFkZHJlc3MsIHBheWxvYWQpOw0KPiA+ICsNCj4gPiArCS8qIERl ZmF1bHQgUkxJTS9BTEVOIGNvbmZpZ3VyYXRpb24gKi8NCj4gPiArCWFkZHJlc3MgPSBIV1BmRG1h Q29uZmlnMVJlZzsNCj4gPiArCXBheWxvYWQgPSAoMSA8PCAzMSkgKyAoMjMgPDwgOCkgKyAoMSA8 PCA2KSArIDc7DQo+ID4gKwlhY2MxMDBfcmVnX3dyaXRlKGQsIGFkZHJlc3MsIHBheWxvYWQpOw0K PiA+ICsNCj4gPiArCS8qIENvbmZpZ3VyZSBETUEgUW1hbmFnZXIgYWRkcmVzc2VzICovDQo+ID4g KwlhZGRyZXNzID0gSFdQZkRtYVFtZ3JBZGRyUmVnOw0KPiA+ICsJcGF5bG9hZCA9IEhXUGZRbWdy RWdyZXNzUXVldWVzVGVtcGxhdGU7DQo+ID4gKwlhY2MxMDBfcmVnX3dyaXRlKGQsIGFkZHJlc3Ms IHBheWxvYWQpOw0KPiA+ICsNCj4gPiArCS8qID09PT09IFFtZ3IgQ29uZmlndXJhdGlvbiA9PT09 PSAqLw0KPiA+ICsJLyogQ29uZmlndXJhdGlvbiBvZiB0aGUgQVF1ZXVlIERlcHRoIFFNR1JfR1JQ XzBfREVQVEhfTE9HMg0KPiBmb3IgVUwgKi8NCj4gPiArCWludCB0b3RhbFFncyA9IGNvbmYtPnFf dWxfNGcubnVtX3Fncm91cHMgKw0KPiA+ICsJCQljb25mLT5xX3VsXzVnLm51bV9xZ3JvdXBzICsN Cj4gPiArCQkJY29uZi0+cV9kbF80Zy5udW1fcWdyb3VwcyArDQo+ID4gKwkJCWNvbmYtPnFfZGxf NWcubnVtX3Fncm91cHM7DQo+ID4gKwlmb3IgKHFnX2lkeCA9IDA7IHFnX2lkeCA8IHRvdGFsUWdz OyBxZ19pZHgrKykgew0KPiA+ICsJCWFkZHJlc3MgPSBIV1BmUW1nckRlcHRoTG9nMkdycCArDQo+ ID4gKwkJQllURVNfSU5fV09SRCAqIHFnX2lkeDsNCj4gPiArCQlwYXlsb2FkID0gYXFEZXB0aChx Z19pZHgsIGNvbmYpOw0KPiA+ICsJCWFjYzEwMF9yZWdfd3JpdGUoZCwgYWRkcmVzcywgcGF5bG9h ZCk7DQo+ID4gKwkJYWRkcmVzcyA9IEhXUGZRbWdyVGhvbGRHcnAgKw0KPiA+ICsJCUJZVEVTX0lO X1dPUkQgKiBxZ19pZHg7DQo+ID4gKwkJcGF5bG9hZCA9ICgxIDw8IDE2KSArICgxIDw8IChhcURl cHRoKHFnX2lkeCwgY29uZikgLSAxKSk7DQo+ID4gKwkJYWNjMTAwX3JlZ193cml0ZShkLCBhZGRy ZXNzLCBwYXlsb2FkKTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkvKiBUZW1wbGF0ZSBQcmlvcml0 eSBpbiBpbmNyZW1lbnRhbCBvcmRlciAqLw0KPiA+ICsJZm9yICh0ZW1wbGF0ZV9pZHggPSAwOyB0 ZW1wbGF0ZV9pZHggPCBBQ0MxMDBfTlVNX1RNUEw7DQo+ID4gKwkJCXRlbXBsYXRlX2lkeCsrKSB7 DQo+ID4gKwkJYWRkcmVzcyA9IEhXUGZRbWdyR3JwVG1wbGF0ZVJlZzBJbmR4ICsNCj4gPiArCQlC WVRFU19JTl9XT1JEICogKHRlbXBsYXRlX2lkeCAlIDgpOw0KPiA+ICsJCXBheWxvYWQgPSBUTVBM X1BSSV8wOw0KPiA+ICsJCWFjYzEwMF9yZWdfd3JpdGUoZCwgYWRkcmVzcywgcGF5bG9hZCk7DQo+ ID4gKwkJYWRkcmVzcyA9IEhXUGZRbWdyR3JwVG1wbGF0ZVJlZzFJbmR4ICsNCj4gPiArCQlCWVRF U19JTl9XT1JEICogKHRlbXBsYXRlX2lkeCAlIDgpOw0KPiA+ICsJCXBheWxvYWQgPSBUTVBMX1BS SV8xOw0KPiA+ICsJCWFjYzEwMF9yZWdfd3JpdGUoZCwgYWRkcmVzcywgcGF5bG9hZCk7DQo+ID4g KwkJYWRkcmVzcyA9IEhXUGZRbWdyR3JwVG1wbGF0ZVJlZzJpbmR4ICsNCj4gPiArCQlCWVRFU19J Tl9XT1JEICogKHRlbXBsYXRlX2lkeCAlIDgpOw0KPiA+ICsJCXBheWxvYWQgPSBUTVBMX1BSSV8y Ow0KPiA+ICsJCWFjYzEwMF9yZWdfd3JpdGUoZCwgYWRkcmVzcywgcGF5bG9hZCk7DQo+ID4gKwkJ YWRkcmVzcyA9IEhXUGZRbWdyR3JwVG1wbGF0ZVJlZzNJbmR4ICsNCj4gPiArCQlCWVRFU19JTl9X T1JEICogKHRlbXBsYXRlX2lkeCAlIDgpOw0KPiA+ICsJCXBheWxvYWQgPSBUTVBMX1BSSV8zOw0K PiA+ICsJCWFjYzEwMF9yZWdfd3JpdGUoZCwgYWRkcmVzcywgcGF5bG9hZCk7DQo+ID4gKwl9DQo+ ID4gKw0KPiA+ICsJYWRkcmVzcyA9IEhXUGZRbWdyR3JwUHJpb3JpdHk7DQo+ID4gKwlwYXlsb2Fk ID0gQUNDMTAwX0NGR19RTUdSX0hJX1A7DQo+ID4gKwlhY2MxMDBfcmVnX3dyaXRlKGQsIGFkZHJl c3MsIHBheWxvYWQpOw0KPiA+ICsNCj4gPiArCS8qIFRlbXBsYXRlIENvbmZpZ3VyYXRpb24gKi8N Cj4gPiArCWZvciAodGVtcGxhdGVfaWR4ID0gMDsgdGVtcGxhdGVfaWR4IDwgQUNDMTAwX05VTV9U TVBMOw0KPiB0ZW1wbGF0ZV9pZHgrKykgew0KPiA+ICsJCXBheWxvYWQgPSAwOw0KPiA+ICsJCWFk ZHJlc3MgPSBIV1BmUW1nckdycFRtcGxhdGVSZWc0SW5keA0KPiA+ICsJCQkJKyBCWVRFU19JTl9X T1JEICogdGVtcGxhdGVfaWR4Ow0KPiA+ICsJCWFjYzEwMF9yZWdfd3JpdGUoZCwgYWRkcmVzcywg cGF5bG9hZCk7DQo+ID4gKwl9DQo+ID4gKwkvKiA0R1VMICovDQo+ID4gKwlpbnQgbnVtUWdzID0g Y29uZi0+cV91bF80Zy5udW1fcWdyb3VwczsNCj4gPiArCWludCBudW1RcXNBY2MgPSAwOw0KPiA+ ICsJcGF5bG9hZCA9IDA7DQo+ID4gKwlmb3IgKHFnX2lkeCA9IG51bVFxc0FjYzsgcWdfaWR4IDwg KG51bVFncyArIG51bVFxc0FjYyk7DQo+IHFnX2lkeCsrKQ0KPiA+ICsJCXBheWxvYWQgfD0gKDEg PDwgcWdfaWR4KTsNCj4gPiArCWZvciAodGVtcGxhdGVfaWR4ID0gU0lHX1VMXzRHOyB0ZW1wbGF0 ZV9pZHggPD0gU0lHX1VMXzRHX0xBU1Q7DQo+ID4gKwkJCXRlbXBsYXRlX2lkeCsrKSB7DQo+ID4g KwkJYWRkcmVzcyA9IEhXUGZRbWdyR3JwVG1wbGF0ZVJlZzRJbmR4DQo+ID4gKwkJCQkrIEJZVEVT X0lOX1dPUkQqdGVtcGxhdGVfaWR4Ow0KPiA+ICsJCWFjYzEwMF9yZWdfd3JpdGUoZCwgYWRkcmVz cywgcGF5bG9hZCk7DQo+ID4gKwl9DQo+ID4gKwkvKiA1R1VMICovDQo+ID4gKwludW1RcXNBY2Mg Kz0gbnVtUWdzOw0KPiA+ICsJbnVtUWdzCT0gY29uZi0+cV91bF81Zy5udW1fcWdyb3VwczsNCj4g PiArCXBheWxvYWQgPSAwOw0KPiA+ICsJaW50IG51bUVuZ2luZXMgPSAwOw0KPiA+ICsJZm9yIChx Z19pZHggPSBudW1RcXNBY2M7IHFnX2lkeCA8IChudW1RZ3MgKyBudW1RcXNBY2MpOw0KPiBxZ19p ZHgrKykNCj4gPiArCQlwYXlsb2FkIHw9ICgxIDw8IHFnX2lkeCk7DQo+ID4gKwlmb3IgKHRlbXBs YXRlX2lkeCA9IFNJR19VTF81RzsgdGVtcGxhdGVfaWR4IDw9IFNJR19VTF81R19MQVNUOw0KPiA+ ICsJCQl0ZW1wbGF0ZV9pZHgrKykgew0KPiA+ICsJCS8qIENoZWNrIGVuZ2luZSBwb3dlci1vbiBz dGF0dXMgKi8NCj4gPiArCQlhZGRyZXNzID0gSHdQZkZlY1VsNWdJYkRlYnVnUmVnICsNCj4gPiAr CQkJCUFDQzEwMF9FTkdJTkVfT0ZGU0VUICogdGVtcGxhdGVfaWR4Ow0KPiA+ICsJCXN0YXR1cyA9 IChhY2MxMDBfcmVnX3JlYWQoZCwgYWRkcmVzcykgPj4gNCkgJiAweEY7DQo+ID4gKwkJYWRkcmVz cyA9IEhXUGZRbWdyR3JwVG1wbGF0ZVJlZzRJbmR4DQo+ID4gKwkJCQkrIEJZVEVTX0lOX1dPUkQg KiB0ZW1wbGF0ZV9pZHg7DQo+ID4gKwkJaWYgKHN0YXR1cyA9PSAxKSB7DQo+ID4gKwkJCWFjYzEw MF9yZWdfd3JpdGUoZCwgYWRkcmVzcywgcGF5bG9hZCk7DQo+ID4gKwkJCW51bUVuZ2luZXMrKzsN Cj4gPiArCQl9IGVsc2UNCj4gPiArCQkJYWNjMTAwX3JlZ193cml0ZShkLCBhZGRyZXNzLCAwKTsN Cj4gPiArCQkjaWYgUlRFX0FDQzEwMF9TSU5HTEVfRkVDID09IDENCj4gI2lmIHNob3VsZCBiZSBh dCBzdGFydCBvZiBsaW5lDQoNCm9rDQoNCj4gPiArCQlwYXlsb2FkID0gMDsNCj4gPiArCQkjZW5k aWYNCj4gPiArCX0NCj4gPiArCXByaW50ZigiTnVtYmVyIG9mIDVHVUwgZW5naW5lcyAlZFxuIiwg bnVtRW5naW5lcyk7DQo+ID4gKwkvKiA0R0RMICovDQo+ID4gKwludW1RcXNBY2MgKz0gbnVtUWdz Ow0KPiA+ICsJbnVtUWdzCT0gY29uZi0+cV9kbF80Zy5udW1fcWdyb3VwczsNCj4gPiArCXBheWxv YWQgPSAwOw0KPiA+ICsJZm9yIChxZ19pZHggPSBudW1RcXNBY2M7IHFnX2lkeCA8IChudW1RZ3Mg KyBudW1RcXNBY2MpOw0KPiBxZ19pZHgrKykNCj4gPiArCQlwYXlsb2FkIHw9ICgxIDw8IHFnX2lk eCk7DQo+ID4gKwlmb3IgKHRlbXBsYXRlX2lkeCA9IFNJR19ETF80RzsgdGVtcGxhdGVfaWR4IDw9 IFNJR19ETF80R19MQVNUOw0KPiA+ICsJCQl0ZW1wbGF0ZV9pZHgrKykgew0KPiA+ICsJCWFkZHJl c3MgPSBIV1BmUW1nckdycFRtcGxhdGVSZWc0SW5keA0KPiA+ICsJCQkJKyBCWVRFU19JTl9XT1JE KnRlbXBsYXRlX2lkeDsNCj4gPiArCQlhY2MxMDBfcmVnX3dyaXRlKGQsIGFkZHJlc3MsIHBheWxv YWQpOw0KPiA+ICsJCSNpZiBSVEVfQUNDMTAwX1NJTkdMRV9GRUMgPT0gMQ0KPiA+ICsJCQlwYXls b2FkID0gMDsNCj4gPiArCQkjZW5kaWYNCj4gPiArCX0NCj4gPiArCS8qIDVHREwgKi8NCj4gPiAr CW51bVFxc0FjYyArPSBudW1RZ3M7DQo+ID4gKwludW1RZ3MJPSBjb25mLT5xX2RsXzVnLm51bV9x Z3JvdXBzOw0KPiA+ICsJcGF5bG9hZCA9IDA7DQo+ID4gKwlmb3IgKHFnX2lkeCA9IG51bVFxc0Fj YzsgcWdfaWR4IDwgKG51bVFncyArIG51bVFxc0FjYyk7DQo+IHFnX2lkeCsrKQ0KPiA+ICsJCXBh eWxvYWQgfD0gKDEgPDwgcWdfaWR4KTsNCj4gPiArCWZvciAodGVtcGxhdGVfaWR4ID0gU0lHX0RM XzVHOyB0ZW1wbGF0ZV9pZHggPD0gU0lHX0RMXzVHX0xBU1Q7DQo+ID4gKwkJCXRlbXBsYXRlX2lk eCsrKSB7DQo+ID4gKwkJYWRkcmVzcyA9IEhXUGZRbWdyR3JwVG1wbGF0ZVJlZzRJbmR4DQo+ID4g KwkJCQkrIEJZVEVTX0lOX1dPUkQqdGVtcGxhdGVfaWR4Ow0KPiA+ICsJCWFjYzEwMF9yZWdfd3Jp dGUoZCwgYWRkcmVzcywgcGF5bG9hZCk7DQo+ID4gKwkJI2lmIFJURV9BQ0MxMDBfU0lOR0xFX0ZF QyA9PSAxDQo+ID4gKwkJcGF5bG9hZCA9IDA7DQo+ID4gKwkJI2VuZGlmDQo+ID4gKwl9DQo+ID4g Kw0KPiA+ICsJLyogUXVldWUgR3JvdXAgRnVuY3Rpb24gbWFwcGluZyAqLw0KPiA+ICsJaW50IHFt YW5fZnVuY19pZFs1XSA9IHswLCAyLCAxLCAzLCA0fTsNCj4gPiArCWFkZHJlc3MgPSBIV1BmUW1n ckdycEZ1bmN0aW9uMDsNCj4gPiArCXBheWxvYWQgPSAwOw0KPiA+ICsJZm9yIChxZ19pZHggPSAw OyBxZ19pZHggPCA4OyBxZ19pZHgrKykgew0KPiA+ICsJCWFjYyA9IGFjY0Zyb21RZ2lkKHFnX2lk eCwgY29uZik7DQo+ID4gKwkJcGF5bG9hZCB8PSBxbWFuX2Z1bmNfaWRbYWNjXTw8KHFnX2lkeCAq IDQpOw0KPiA+ICsJfQ0KPiA+ICsJYWNjMTAwX3JlZ193cml0ZShkLCBhZGRyZXNzLCBwYXlsb2Fk KTsNCj4gPiArDQo+ID4gKwkvKiBDb25maWd1cmF0aW9uIG9mIHRoZSBBcmJpdHJhdGlvbiBRR3Jv dXAgZGVwdGggdG8gMSAqLw0KPiA+ICsJZm9yIChxZ19pZHggPSAwOyBxZ19pZHggPCB0b3RhbFFn czsgcWdfaWR4KyspIHsNCj4gPiArCQlhZGRyZXNzID0gSFdQZlFtZ3JBcmJRRGVwdGhHcnAgKw0K PiA+ICsJCUJZVEVTX0lOX1dPUkQgKiBxZ19pZHg7DQo+ID4gKwkJcGF5bG9hZCA9IDA7DQo+ID4g KwkJYWNjMTAwX3JlZ193cml0ZShkLCBhZGRyZXNzLCBwYXlsb2FkKTsNCj4gPiArCX0NCj4gPiAr DQo+ID4gKwkvKiBFbmFibGluZyBBUXVldWVzIHRocm91Z2ggdGhlIFF1ZXVlIGhpZXJhcmNoeSov DQo+ID4gKwlmb3IgKHZmX2lkeCA9IDA7IHZmX2lkeCA8IEFDQzEwMF9OVU1fVkZTOyB2Zl9pZHgr Kykgew0KPiA+ICsJCWZvciAocWdfaWR4ID0gMDsgcWdfaWR4IDwgQUNDMTAwX05VTV9RR1JQUzsg cWdfaWR4KyspIHsNCj4gPiArCQkJcGF5bG9hZCA9IDA7DQo+ID4gKwkJCWlmICh2Zl9pZHggPCBj b25mLT5udW1fdmZfYnVuZGxlcyAmJg0KPiA+ICsJCQkJCXFnX2lkeCA8IHRvdGFsUWdzKQ0KPiA+ ICsJCQkJcGF5bG9hZCA9ICgxIDw8IGFxTnVtKHFnX2lkeCwgY29uZikpIC0gMTsNCj4gPiArCQkJ YWRkcmVzcyA9IEhXUGZRbWdyQXFFbmFibGVWZg0KPiA+ICsJCQkJCSsgdmZfaWR4ICogQllURVNf SU5fV09SRDsNCj4gPiArCQkJcGF5bG9hZCArPSAocWdfaWR4IDw8IDE2KTsNCj4gPiArCQkJYWNj MTAwX3JlZ193cml0ZShkLCBhZGRyZXNzLCBwYXlsb2FkKTsNCj4gPiArCQl9DQo+ID4gKwl9DQo+ ID4gKw0KPiA+ICsJLyogVGhpcyBwb2ludGVyIHRvIEFSQU0gKDI1NmtCKSBpcyBzaGlmdGVkIGJ5 IDIgKDRCIHBlciByZWdpc3RlcikgKi8NCj4gPiArCXVpbnQzMl90IGFyYW1fYWRkcmVzcyA9IDA7 DQo+ID4gKwlmb3IgKHFnX2lkeCA9IDA7IHFnX2lkeCA8IHRvdGFsUWdzOyBxZ19pZHgrKykgew0K PiA+ICsJCWZvciAodmZfaWR4ID0gMDsgdmZfaWR4IDwgY29uZi0+bnVtX3ZmX2J1bmRsZXM7IHZm X2lkeCsrKSB7DQo+ID4gKwkJCWFkZHJlc3MgPSBIV1BmUW1nclZmQmFzZUFkZHIgKyB2Zl9pZHgN Cj4gPiArCQkJCQkqIEJZVEVTX0lOX1dPUkQgKyBxZ19pZHgNCj4gPiArCQkJCQkqIEJZVEVTX0lO X1dPUkQgKiA2NDsNCj4gPiArCQkJcGF5bG9hZCA9IGFyYW1fYWRkcmVzczsNCj4gPiArCQkJYWNj MTAwX3JlZ193cml0ZShkLCBhZGRyZXNzLCBwYXlsb2FkKTsNCj4gPiArCQkJLyogT2Zmc2V0IEFS QU0gQWRkcmVzcyBmb3IgbmV4dCBtZW1vcnkgYmFuaw0KPiA+ICsJCQkgKiAtIGluY3JlbWVudCBv ZiA0Qg0KPiA+ICsJCQkgKi8NCj4gPiArCQkJYXJhbV9hZGRyZXNzICs9IGFxTnVtKHFnX2lkeCwg Y29uZikgKg0KPiA+ICsJCQkJCSgxIDw8IGFxRGVwdGgocWdfaWR4LCBjb25mKSk7DQo+ID4gKwkJ fQ0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlmIChhcmFtX2FkZHJlc3MgPiBXT1JEU19JTl9BUkFN X1NJWkUpIHsNCj4gPiArCQlydGVfYmJkZXZfbG9nKEVSUiwgIkFSQU0gQ29uZmlndXJhdGlvbiBu b3QgZml0dGluZyAlZA0KPiAlZFxuIiwNCj4gPiArCQkJCWFyYW1fYWRkcmVzcywgV09SRFNfSU5f QVJBTV9TSVpFKTsNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCX0NCj4gPiArDQo+ID4g KwkvKiA9PT09IEhJIENvbmZpZ3VyYXRpb24gPT09PSAqLw0KPiA+ICsNCj4gPiArCS8qIFByZXZl bnQgQmxvY2sgb24gVHJhbnNtaXQgRXJyb3IgKi8NCj4gPiArCWFkZHJlc3MgPSBIV1BmSGlCbG9j a1RyYW5zbWl0T25FcnJvckVuOw0KPiA+ICsJcGF5bG9hZCA9IDA7DQo+ID4gKwlhY2MxMDBfcmVn X3dyaXRlKGQsIGFkZHJlc3MsIHBheWxvYWQpOw0KPiA+ICsJLyogUHJldmVudHMgdG8gZHJvcCBN U0kgKi8NCj4gPiArCWFkZHJlc3MgPSBIV1BmSGlNc2lEcm9wRW5hYmxlUmVnOw0KPiA+ICsJcGF5 bG9hZCA9IDA7DQo+ID4gKwlhY2MxMDBfcmVnX3dyaXRlKGQsIGFkZHJlc3MsIHBheWxvYWQpOw0K PiA+ICsJLyogU2V0IHRoZSBQRiBNb2RlIHJlZ2lzdGVyICovDQo+ID4gKwlhZGRyZXNzID0gSFdQ ZkhpUGZNb2RlOw0KPiA+ICsJcGF5bG9hZCA9IChjb25mLT5wZl9tb2RlX2VuKSA/IDIgOiAwOw0K PiA+ICsJYWNjMTAwX3JlZ193cml0ZShkLCBhZGRyZXNzLCBwYXlsb2FkKTsNCj4gPiArCS8qIEVu YWJsZSBFcnJvciBEZXRlY3Rpb24gaW4gSFcgKi8NCj4gPiArCWFkZHJlc3MgPSBIV1BmRG1hRXJy b3JEZXRlY3Rpb25FbjsNCj4gPiArCXBheWxvYWQgPSAweDNENzsNCj4gPiArCWFjYzEwMF9yZWdf d3JpdGUoZCwgYWRkcmVzcywgcGF5bG9hZCk7DQo+ID4gKw0KPiA+ICsJLyogUW9TIG92ZXJmbG93 IGluaXQgKi8NCj4gPiArCXBheWxvYWQgPSAxOw0KPiA+ICsJYWRkcmVzcyA9IEhXUGZRb3Ntb25B RXZhbE92ZXJmbG93MDsNCj4gPiArCWFjYzEwMF9yZWdfd3JpdGUoZCwgYWRkcmVzcywgcGF5bG9h ZCk7DQo+ID4gKwlhZGRyZXNzID0gSFdQZlFvc21vbkJFdmFsT3ZlcmZsb3cwOw0KPiA+ICsJYWNj MTAwX3JlZ193cml0ZShkLCBhZGRyZXNzLCBwYXlsb2FkKTsNCj4gPiArDQo+ID4gKwkvKiBIQVJR IEREUiBDb25maWd1cmF0aW9uICovDQo+ID4gKwl1bnNpZ25lZCBpbnQgZGRyU2l6ZUluTWIgPSA1 MTI7IC8qIEZpeGVkIHRvIDUxMiBNQiBwZXIgVkYgZm9yIG5vdw0KPiAqLw0KPiA+ICsJZm9yICh2 Zl9pZHggPSAwOyB2Zl9pZHggPCBjb25mLT5udW1fdmZfYnVuZGxlczsgdmZfaWR4KyspIHsNCj4g PiArCQlhZGRyZXNzID0gSFdQZkRtYVZmRGRyQmFzZVJ3ICsgdmZfaWR4DQo+ID4gKwkJCQkqIDB4 MTA7DQo+ID4gKwkJcGF5bG9hZCA9ICgodmZfaWR4ICogKGRkclNpemVJbk1iIC8gNjQpKSA8PCAx NikgKw0KPiA+ICsJCQkJKGRkclNpemVJbk1iIC0gMSk7DQo+ID4gKwkJYWNjMTAwX3JlZ193cml0 ZShkLCBhZGRyZXNzLCBwYXlsb2FkKTsNCj4gPiArCX0NCj4gPiArCXVzbGVlcChMT05HX1dBSVQp Ow0KPiBJcyBzbGVlcCBuZWVkZWQgaGVyZSA/IHRoZSByZWdfd3JpdGUgaGFzIG9uZS4NCg0KVGhp cyBvbmUgaXMgbmVlZGVkIG9uIHRvcA0KDQo+ID4gKw0KPiANCj4gU2luY2UgdGhpcyBzZWVtcyBs aWtlIGEgd29ya2Fyb3VuZCwgYWRkIGEgY29tbWVudCBoZXJlLg0KDQpmYWlyIGVub3VnaCwgb2ss IHRoYW5rcw0KDQo+IA0KPiBUb20NCj4gDQo+ID4gKwlpZiAobnVtRW5naW5lcyA8IChTSUdfVUxf NUdfTEFTVCArIDEpKQ0KPiA+ICsJCXBvd2Vyb25fY2xlYW51cChiYmRldiwgZCwgY29uZik7DQo+ ID4gKw0KPiA+ICsJcnRlX2JiZGV2X2xvZ19kZWJ1ZygiUEYgVGlwIGNvbmZpZ3VyYXRpb24gY29t cGxldGUgZm9yICVzIiwNCj4gZGV2X25hbWUpOw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4g PiBkaWZmIC0tZ2l0IA0KPiA+IGEvZHJpdmVycy9iYXNlYmFuZC9hY2MxMDAvcnRlX3BtZF9iYmRl dl9hY2MxMDBfdmVyc2lvbi5tYXANCj4gPiBiL2RyaXZlcnMvYmFzZWJhbmQvYWNjMTAwL3J0ZV9w bWRfYmJkZXZfYWNjMTAwX3ZlcnNpb24ubWFwDQo+ID4gaW5kZXggNGE3NmQxZC4uOTFjMjM0ZCAx MDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2Jhc2ViYW5kL2FjYzEwMC9ydGVfcG1kX2JiZGV2X2Fj YzEwMF92ZXJzaW9uLm1hcA0KPiA+ICsrKyBiL2RyaXZlcnMvYmFzZWJhbmQvYWNjMTAwL3J0ZV9w bWRfYmJkZXZfYWNjMTAwX3ZlcnNpb24ubWFwDQo+ID4gQEAgLTEsMyArMSwxMCBAQA0KPiA+ICBE UERLXzIxIHsNCj4gPiAgCWxvY2FsOiAqOw0KPiA+ICB9Ow0KPiA+ICsNCj4gPiArRVhQRVJJTUVO VEFMIHsNCj4gPiArCWdsb2JhbDoNCj4gPiArDQo+ID4gKwlhY2MxMDBfY29uZmlndXJlOw0KPiA+ ICsNCj4gPiArfTsNCg0K