Received: by 2002:a25:ef43:0:0:0:0:0 with SMTP id w3csp716725ybm; Fri, 29 May 2020 10:24:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy0iOmKzv8+T6v4AXIyZc6+/iLx9J+zgABFvSh9h+sYlqA3jYYkT+OxavDYG5y2/uZhmIWN X-Received: by 2002:a17:906:8684:: with SMTP id g4mr8063247ejx.431.1590773089347; Fri, 29 May 2020 10:24:49 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1590773089; cv=pass; d=google.com; s=arc-20160816; b=E3/YrlaJr/QrGj3lMRzQqXUlcctQeoNeZvZw+OzSBm6i/ZSvYWFj5C+WIPmSyOvgsF PugxOC1/0fJZNV00VRrtEeOGY7612snhVTl+mIyvYgD6x7qzh6slhKoW2xFlYCfZM5oU rjp9NQ0/1mmcO1zTmuljiWT5oouLS06SLLZUXcR+62bNb/frc1Td5Vga3UGzIuQNN/+F v7v9PrGb544oDDtkpPLTpN0h8hpgQMnGaZ2gih7dR+ZzyjuziyDw3K0Mg05LIxtgaQqK 7AfK0B6TImuP04M5cnR+/pSpyJy23znjQW4v8ltBk/rX4Pg1CoYm7Ym7pnD/0o5wsLk2 UXhw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:user-agent:content-language:accept-language:in-reply-to :references:message-id:date:thread-index:thread-topic:subject:to :from:dkim-signature:ironport-sdr:ironport-sdr; bh=uDc0uvx3da3LpgLQNE2UoGKnStnrD7riCKhgfJqfi4I=; b=b2PQ4YLuxwTqCXkxZKoBefluqvSj7MuiuOhLN8rXSTDg3NAbnQXg1BELls+Sd+3EHt HnTEp7OsjVw1i80At1JV3zWZaLd1VAXFVKWkFz8lHoc2k9o9FBDCH8hmnnOhFQm8IADf bgIPRUZVaCpdp6AcIOIcKYaHv6aP0Sp4mV0A5gxQ+TK2xzHtuxayTT8xIjq2p1MZvCb3 TZGT4paVT5oU3wohX17G6C0BlrOp2RXqpIqY6VK5BF/71fhQhWtii/fPuCAIpMNQkk8W /iy0F5kTu/shmvY+d/VVqatXXb16qLx4iEUEoUIKNZ5Q2FcbILzhd0VBhwLHS/24KLKO /sTQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=JOYT5WdZ; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.com); spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id lh18si1303991ejb.487.2020.05.29.10.24.22; Fri, 29 May 2020 10:24:49 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=JOYT5WdZ; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.com); spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726487AbgE2RXA (ORCPT + 99 others); Fri, 29 May 2020 13:23:00 -0400 Received: from mga18.intel.com ([134.134.136.126]:61139 "EHLO mga18.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725839AbgE2RWj (ORCPT ); Fri, 29 May 2020 13:22:39 -0400 IronPort-SDR: oUbtM1AvLArKWkTbYcSRgdxXyfCUkJDHSJj4POrAV+uGxUdhFuCq3fvTdxjY02U4ZJNO/bQHUE vZorfpjHgEtA== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 May 2020 10:22:38 -0700 IronPort-SDR: bXH2SnLN3kL9iGzgqIr/kZG8vuKoKLPFg0uHQVTzX5dUlc2agTjQJXFb8hK5ULven0MYfNpH4u sZTy1aZk2qwA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,449,1583222400"; d="scan'208";a="256137664" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga007.fm.intel.com with ESMTP; 29 May 2020 10:22:38 -0700 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 29 May 2020 10:22:37 -0700 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Fri, 29 May 2020 10:22:37 -0700 Received: from FMSEDG001.ED.cps.intel.com (10.1.192.133) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Fri, 29 May 2020 10:22:37 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.175) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 29 May 2020 10:22:36 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gIgFOd15QLRgGTxJtOKHmZLSeHr5nczyzO/4tzZ1QsSg2KvTMo3mjm113cSAdufYhjKac3x/hie/12QK8iEB8vYlFUamc7qQLMToRuJ0DVMj5xm5DAoMVA8191BCsr0FHhLar6dKf6DUt7Wi6GaHlBwhh1zmbQaIQpTnaimlonKu4dPkguU1sqKM/54DKEYntXtNx1Yrm59XRs3vNMWBWxHY39yEF+8O2CNhdKaNqlbbQ0xI1vTzZcGu4XAJCOPh/hChTpEiCcDiNBvkRk8aIg/9steaZXUvWhy0ZfPRNKD0Uk8htVvIs8/cex4BHWKN82DN7OooU3QJ+KB6MCvHKg== 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=uDc0uvx3da3LpgLQNE2UoGKnStnrD7riCKhgfJqfi4I=; b=WVq75xvXJtN8g2a73v/mrowviSk8+UXNLYYNoz18PM2lo9r0VF6c1SlVQUqkWkDSmEZwJLDbnxtgFWBoBYsfvHD+4NQ6GJU3yRrbOB1KfUvhBi+hPtIk0Xyyyb9sgTHMPC0z97qOrtrwEXNES7LN6GhPtPdBEX5KDnxVUbEZTXWNzmDD/SskIC72VgmfCJsUE+85wShm+NZl1zYi6qLQugRt+dlXbZbFoQ143RFD6JGshnwMuAcLvCIH+NSwfZklSfN4kgbWTxSztLXOzatP+wxWDjRxCOdc9Z5hDnOfMS39ocAiB/P0e0lvGZzOtDJGk3tmNM5rb0JC2u7Ytr02Bg== 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=uDc0uvx3da3LpgLQNE2UoGKnStnrD7riCKhgfJqfi4I=; b=JOYT5WdZJV45ujXKqgr2xiePnuwx0oioRgBDnkd9lXoDuoWL2owqWCL2vY5d6diwANBWXZC5Zp+epOQ/Bw8qSc2n37y57Is+wWBbnhBxMMrefP2dElFscYhjwNKS+UMKWEwvV6KHhOWJoEylSSOqpWiigptsabzAXXOqcl6naRk= Received: from MW3PR11MB4539.namprd11.prod.outlook.com (2603:10b6:303:2f::13) by MW3PR11MB4731.namprd11.prod.outlook.com (2603:10b6:303:2f::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3045.19; Fri, 29 May 2020 17:22:35 +0000 Received: from MW3PR11MB4539.namprd11.prod.outlook.com ([fe80::5b4:500e:f6a0:1ac0]) by MW3PR11MB4539.namprd11.prod.outlook.com ([fe80::5b4:500e:f6a0:1ac0%5]) with mapi id 15.20.3045.018; Fri, 29 May 2020 17:22:34 +0000 From: "Gix, Brian" To: "linux-bluetooth@vger.kernel.org" , "Stotland, Inga" Subject: Re: [PATCH BlueZ 2/5] mesh: Debug output clean up Thread-Topic: [PATCH BlueZ 2/5] mesh: Debug output clean up Thread-Index: AQHWNYO8PhQw7aUdkkiWryg0dirHiai/UHMA Date: Fri, 29 May 2020 17:22:34 +0000 Message-ID: References: <20200529063750.186278-1-inga.stotland@intel.com> <20200529063750.186278-3-inga.stotland@intel.com> In-Reply-To: <20200529063750.186278-3-inga.stotland@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.34.4 (3.34.4-1.fc31) authentication-results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=intel.com; x-originating-ip: [134.134.137.73] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c514df40-ff46-400e-efc1-08d803f4e0b4 x-ms-traffictypediagnostic: MW3PR11MB4731: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1122; x-forefront-prvs: 04180B6720 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: VKm+9JQySyvzQd3VVhde0yLX0rSRYjRJutgAO3XiqAlnH/Tthja70idKqfXHOrvDeXPLIxhaUT3J4iWhxGDoNj8NEtcFfXx3RIwf+QBF7ThnNbCaOuC89cgBUHz3UodiO4sc3cQFiFv1vDa6dbN6gR55YqLXuD+R3Vp9Kq4p+d0zpzY84Dog0fFD6K9mDGz2HMt0baAh+LnJLBq31FFH1GTsxiCj4qRiNNxs3YKBLOjkxrsZjTExi8fydipTFKdTYAgB5aHQAjTbjMFKv6Ty9OY+Ve19Xo2xLye2l8xnLkySR+2Ln7yJyEe+TfiY04ANw1VpeMs41vF0roes11KqYQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW3PR11MB4539.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(396003)(366004)(39860400002)(136003)(346002)(376002)(6512007)(316002)(110136005)(6636002)(83380400001)(26005)(6506007)(478600001)(186003)(2906002)(86362001)(36756003)(71200400001)(30864003)(2616005)(76116006)(5660300002)(66476007)(66556008)(64756008)(66446008)(66946007)(6486002)(8936002)(8676002)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: OqZ57Eimi4K6Hc1t4HgSc8XxtokS1LA4+qRNsQLpX6e8QMr1hS0A3etWD57xf8dNIp2Twx7rw6Hu3sLqf3xea0JHOaHFGBiFk9DZ3gIGCOUGQVDokXxKDxD8oDa05/As4DU+iyHnoTJQz7EzagkaoOzj8dklLAoqkkEa2I4MUQoYHy2E0YJhVGgjx6IMgOUrbsePM02uxViQN+HDxCT720PSHSw84wy/47ksHq8H+AwQbKeZKFrYMwutO7vNWutGv1QJIe7aHZrZFk2yR+hVNcLRdHsXyQR2ZkN93jdQ7v625SlGfWDr8SBFpgL15TQhKlEcxXINdE6L44rT7GR+4alX6lPgOxC7b0hvGtE2Fj4TN+EnuFTnyU4C60pA4WB6QUCyHMQ5+pCXd/GR42W2V+DAe/h4onrXG7SpkKWLnPeDbbqDS6RAgYzIK0GLThNZkVM7OQENL8mS7/kh6qt+s+1BmqraowY7tFlT3zWdzLocfyg8JeiWCvsouFKuAMUI Content-Type: text/plain; charset="utf-8" Content-ID: <10334E12FAB5EC478FCB93CDEF058A9B@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: c514df40-ff46-400e-efc1-08d803f4e0b4 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 May 2020 17:22:34.8916 (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: Yz+lTgNEcBb6sImxk0yM/ULcjAvxmWv3ooARHdpISybx5WGF1F0Y0+Bnf4PeK6ABvM9I/pfQk70gu9M6BvO4cA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR11MB4731 X-OriginatorOrg: intel.com Sender: linux-bluetooth-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org SGkgSW5nYSwNCg0KT24gVGh1LCAyMDIwLTA1LTI4IGF0IDIzOjM3IC0wNzAwLCBJbmdhIFN0b3Rs YW5kIHdyb3RlOg0KPiBUaGlzIGNoYW5nZXMgbF9pbmZvKCkgdG8gbF9kZWJ1ZygpIGZvciByZWN1 cnJpbmcgY2FzZXMgYW5kDQo+IHJlbW92ZXMgc29tZSBleGNlc3NpdmUgZGVidWcgb3V0cHV0Lg0K PiAtLS0NCj4gIG1lc2gvbWFuYWdlci5jICAgICAgICAgfCAgIDYgKy0NCj4gIG1lc2gvbWVzaC1p by1nZW5lcmljLmMgfCAgIDMgKy0NCj4gIG1lc2gvbW9kZWwuYyAgICAgICAgICAgfCAgMjggKy0t LS0tLS0NCj4gIG1lc2gvbmV0LmMgICAgICAgICAgICAgfCAxNTAgKysrKysrKysrKysrKystLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gIG1lc2gvcGItYWR2LmMgICAgICAgICAgfCAgIDcg Ky0NCj4gIG1lc2gvcHJvdi1pbml0aWF0b3IuYyAgfCAgIDIgKy0NCj4gIDYgZmlsZXMgY2hhbmdl ZCwgNTggaW5zZXJ0aW9ucygrKSwgMTM4IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBh L21lc2gvbWFuYWdlci5jIGIvbWVzaC9tYW5hZ2VyLmMNCj4gaW5kZXggYTczODNlNGQ1Li4yYmU0 NzEwODggMTAwNjQ0DQo+IC0tLSBhL21lc2gvbWFuYWdlci5jDQo+ICsrKyBiL21lc2gvbWFuYWdl ci5jDQo+IEBAIC0yMTksNyArMjE5LDcgQEAgc3RhdGljIHZvaWQgYWRkX3N0YXJ0KHZvaWQgKnVz ZXJfZGF0YSwgaW50IGVycikNCj4gIHsNCj4gIAlzdHJ1Y3QgbF9kYnVzX21lc3NhZ2UgKnJlcGx5 Ow0KPiAgDQo+IC0JbF9pbmZvKCJTdGFydCBjYWxsYmFjayIpOw0KPiArCWxfZGVidWcoIlN0YXJ0 IGNhbGxiYWNrIik7DQo+ICANCj4gIAlpZiAoZXJyID09IE1FU0hfRVJST1JfTk9ORSkNCj4gIAkJ cmVwbHkgPSBsX2RidXNfbWVzc2FnZV9uZXdfbWV0aG9kX3JldHVybihhZGRfcGVuZGluZy0+bXNn KTsNCj4gQEAgLTI3MCw4ICsyNzAsOCBAQCBzdGF0aWMgc3RydWN0IGxfZGJ1c19tZXNzYWdlICph ZGRfbm9kZV9jYWxsKHN0cnVjdCBsX2RidXMgKmRidXMsDQo+ICAJYWRkX3BlbmRpbmctPmFnZW50 ID0gbm9kZV9nZXRfYWdlbnQobm9kZSk7DQo+ICANCj4gIAlpZiAoIW5vZGVfaXNfcHJvdmlzaW9u ZXIobm9kZSkgfHwgKGFkZF9wZW5kaW5nLT5hZ2VudCA9PSBOVUxMKSkgew0KPiAtCQlsX2luZm8o IlByb3Zpc2lvbmVyOiAlZCIsIG5vZGVfaXNfcHJvdmlzaW9uZXIobm9kZSkpOw0KPiAtCQlsX2lu Zm8oIkFnZW50OiAlcCIsIGFkZF9wZW5kaW5nLT5hZ2VudCk7DQo+ICsJCWxfZGVidWcoIlByb3Zp c2lvbmVyOiAlZCIsIG5vZGVfaXNfcHJvdmlzaW9uZXIobm9kZSkpOw0KPiArCQlsX2RlYnVnKCJB Z2VudDogJXAiLCBhZGRfcGVuZGluZy0+YWdlbnQpOw0KPiAgCQlyZXBseSA9IGRidXNfZXJyb3Io bXNnLCBNRVNIX0VSUk9SX05PVF9BVVRIT1JJWkVELA0KPiAgCQkJCQkJCSJNaXNzaW5nIEludGVy ZmFjZXMiKTsNCj4gIAkJZ290byBmYWlsOw0KPiBkaWZmIC0tZ2l0IGEvbWVzaC9tZXNoLWlvLWdl bmVyaWMuYyBiL21lc2gvbWVzaC1pby1nZW5lcmljLmMNCj4gaW5kZXggM2FkMTMwNTY3Li43YTQw MDhiZDkgMTAwNjQ0DQo+IC0tLSBhL21lc2gvbWVzaC1pby1nZW5lcmljLmMNCj4gKysrIGIvbWVz aC9tZXNoLWlvLWdlbmVyaWMuYw0KPiBAQCAtMTczLDcgKzE3Myw3IEBAIHN0YXRpYyB2b2lkIGV2 ZW50X2NhbGxiYWNrKGNvbnN0IHZvaWQgKmJ1ZiwgdWludDhfdCBzaXplLCB2b2lkICp1c2VyX2Rh dGEpDQo+ICAJCWJyZWFrOw0KPiAgDQo+ICAJZGVmYXVsdDoNCj4gLQkJbF9pbmZvKCJPdGhlciBN ZXRhIEV2dCAtICVkIiwgZXZlbnQpOw0KPiArCQlsX2RlYnVnKCJPdGhlciBNZXRhIEV2dCAtICVk IiwgZXZlbnQpOw0KPiAgCX0NCj4gIH0NCj4gIA0KPiBAQCAtODA0LDcgKzgwNCw2IEBAIHN0YXRp YyBib29sIHJlY3ZfcmVnaXN0ZXIoc3RydWN0IG1lc2hfaW8gKmlvLCBjb25zdCB1aW50OF90ICpm aWx0ZXIsDQo+ICAJaWYgKCFjYiB8fCAhZmlsdGVyIHx8ICFsZW4pDQo+ICAJCXJldHVybiBmYWxz ZTsNCj4gIA0KPiAtCWxfaW5mbygiJXMgJTIuMngiLCBfX2Z1bmNfXywgZmlsdGVyWzBdKTsNCj4g IAlyeF9yZWcgPSBsX3F1ZXVlX3JlbW92ZV9pZihwdnQtPnJ4X3JlZ3MsIGZpbmRfYnlfZmlsdGVy LCBmaWx0ZXIpOw0KPiAgDQo+ICAJbF9mcmVlKHJ4X3JlZyk7DQo+IGRpZmYgLS1naXQgYS9tZXNo L21vZGVsLmMgYi9tZXNoL21vZGVsLmMNCj4gaW5kZXggOTQ1NTgzMzI0Li5kYzZmMjhlYjggMTAw NjQ0DQo+IC0tLSBhL21lc2gvbW9kZWwuYw0KPiArKysgYi9tZXNoL21vZGVsLmMNCj4gQEAgLTUx NCwxNSArNTE0LDggQEAgc3RhdGljIHZvaWQgY21wbHQodWludDE2X3QgcmVtb3RlLCB1aW50OF90 IHN0YXR1cywNCj4gIHsNCj4gIAlzdHJ1Y3QgdGltZXZhbCB0eF9lbmQ7DQo+ICANCj4gLQlpZiAo c3RhdHVzKQ0KPiAtCQlsX2RlYnVnKCJUeC0tPiU0LjR4ICglZCBvY3RldHMpIEZhaWxlZCAoJWQp IiwNCj4gLQkJCQlyZW1vdGUsIHNpemUsIHN0YXR1cyk7DQo+IC0JZWxzZQ0KPiAtCQlsX2RlYnVn KCJUeC0tPiU0LjR4ICglZCBvY3RldHMpIFN1Y2NlZWRlZCIsIHJlbW90ZSwgc2l6ZSk7DQo+IC0N Cj4gLQkvKiBwcmludF9wYWNrZXQoIlNlbnQgRGF0YSIsIGRhdGEsIHNpemUpOyAqLw0KPiAtDQo+ ICAJZ2V0dGltZW9mZGF5KCZ0eF9lbmQsIE5VTEwpOw0KPiArDQo+ICAJaWYgKHR4X2VuZC50dl9z ZWMgPT0gdHhfc3RhcnQudHZfc2VjKSB7DQo+ICAJCWxfZGVidWcoIkR1cmF0aW9uIDAuJTYuNmx1 IHNlY29uZHMiLA0KPiAgCQkJCXR4X2VuZC50dl91c2VjIC0gdHhfc3RhcnQudHZfdXNlYyk7DQo+ IEBAIC01ODAsMjIgKzU3MywxOCBAQCBzdGF0aWMgYm9vbCBtc2dfc2VuZChzdHJ1Y3QgbWVzaF9u b2RlICpub2RlLCBib29sIGNyZWRlbnRpYWwsIHVpbnQxNl90IHNyYywNCj4gIAkJbmV0X2lkeCA9 IGFwcGtleV9uZXRfaWR4KG5vZGVfZ2V0X25ldChub2RlKSwgYXBwX2lkeCk7DQo+ICAJfQ0KPiAg DQo+IC0JbF9kZWJ1ZygiKCV4KSAlcCIsIGFwcF9pZHgsIGtleSk7DQo+IC0JbF9kZWJ1ZygibmV0 X2lkeCAleCIsIG5ldF9pZHgpOw0KPiAtDQo+ICAJb3V0ID0gbF9tYWxsb2Mob3V0X2xlbik7DQo+ ICANCj4gIAlpdl9pbmRleCA9IG1lc2hfbmV0X2dldF9pdl9pbmRleChuZXQpOw0KPiAgDQo+ICAJ c2VxX251bSA9IG1lc2hfbmV0X25leHRfc2VxX251bShuZXQpOw0KPiArDQo+ICAJaWYgKCFtZXNo X2NyeXB0b19wYXlsb2FkX2VuY3J5cHQobGFiZWwsIG1zZywgb3V0LCBtc2dfbGVuLCBzcmMsIGRz dCwNCj4gIAkJCQlrZXlfYWlkLCBzZXFfbnVtLCBpdl9pbmRleCwgc3ptaWMsIGtleSkpIHsNCj4g IAkJbF9lcnJvcigiRmFpbGVkIHRvIEVuY3J5cHQgUGF5bG9hZCIpOw0KPiAgCQlnb3RvIGRvbmU7 DQo+ICAJfQ0KPiAgDQo+IC0JLyogcHJpbnRfcGFja2V0KCJFbmNyeXB0ZWQgd2l0aCIsIGtleSwg MTYpOyAqLw0KPiAtDQo+ICAJcmV0ID0gbWVzaF9uZXRfYXBwX3NlbmQobmV0LCBjcmVkZW50aWFs LCBzcmMsIGRzdCwga2V5X2FpZCwgbmV0X2lkeCwNCj4gIAkJCQkJdHRsLCBzZXFfbnVtLCBpdl9p bmRleCwgc2VnbWVudGVkLA0KPiAgCQkJCQlzem1pYywgb3V0LCBvdXRfbGVuLCBjbXBsdCwgTlVM TCk7DQo+IEBAIC02NDcsOCArNjM2LDYgQEAgc3RhdGljIHZvaWQgbW9kZWxfYmluZF9pZHgoc3Ry dWN0IG1lc2hfbm9kZSAqbm9kZSwgc3RydWN0IG1lc2hfbW9kZWwgKm1vZCwNCj4gIA0KPiAgCWxf cXVldWVfcHVzaF90YWlsKG1vZC0+YmluZGluZ3MsIExfVUlOVF9UT19QVFIoaWR4KSk7DQo+ICAN Cj4gLQlsX2RlYnVnKCJBZGQgJTQuNHggdG8gbW9kZWwgJTguOHgiLCBpZHgsIG1vZC0+aWQpOw0K PiAtDQoNCkkgd291bGQgbGlrZSB0byBwcmVzZXJ2ZSBkZWJ1ZyBvdXRwdXQgKG9yIHBlcmhhcHMg InJld29yayIgaXMgYSBiZXR0ZXIgd29yZCkgbW9zdCBzdGF0ZSBjaGFuZ2luZyBDb25maWcgU2Vy dmVyDQpjb21tYW5kcyBzdWNoIGFzIHRoaXMsIGFuZCBpbmNsdWRpbmc6DQoNCk1vZGVsIEJpbmQN CkFkZC9VcGRhdGUgQXBwL05ldCBLZXlzDQpTZXQgVFRML0JlYWNvbmluZy8ob3Rod2VyIGZlYXR1 cmVzKQ0KQWRkIFB1YnMvU3Vicw0KZXRjDQoNClRoZXNlIHNob3VsZCBiZSBpbmZyZXF1ZW50IGVu b3VnaCB0aGF0IHRoZXkgc2hvdWxkbid0IGJlIG5vaXN5LCBidXQgdGhleSBhbGxvdyBkZXZlbG9w ZXJzIHRvIG1ha2Ugc3VyZSBpbnRlcm5hbA0KZGFlbW9uIGZ1bmN0aW9uYWxpdHkgc3RhdGVzIGFy ZSBiZWluZyBzZXQgdXAgY29ycmVjdGx5Lg0KDQpJbiB0aGUgY2FzZSBvZiB0aGlzIG9uZSwgSSBt aWdodCBjaGFuZ2UgaXQgdG8gDQoJbF9kZWJ1ZygiQmluZCBrZXkgJTMuM3ggdG8gbW9kZWwgJTgu OHggb24gZWxlbWVudCAlNC40eCIpDQoNCg0KPiAgCWlmICghbW9kLT5jYnMpDQo+ICAJCS8qIEV4 dGVybmFsIG1vZGVsICovDQo+ICAJCWNvbmZpZ191cGRhdGVfbW9kZWxfYmluZGluZ3Mobm9kZSwg bW9kKTsNCj4gQEAgLTc4MSw3ICs3NjgsNiBAQCBzdGF0aWMgaW50IGFkZF92aXJ0X3N1YihzdHJ1 Y3QgbWVzaF9uZXQgKm5ldCwgc3RydWN0IG1lc2hfbW9kZWwgKm1vZCwNCj4gIA0KPiAgCQlsX3F1 ZXVlX3B1c2hfaGVhZChtb2QtPnZpcnR1YWxzLCB2aXJ0KTsNCj4gIAkJbWVzaF9uZXRfZHN0X3Jl ZyhuZXQsIHZpcnQtPmFkZHIpOw0KPiAtCQlsX2RlYnVnKCJBZGRlZCB2aXJ0dWFsIHN1YiBhZGRy ICU0LjR4IiwgdmlydC0+YWRkcik7DQo+ICAJfQ0KPiAgDQo+ICAJaWYgKGRzdCkNCj4gQEAgLTgw OSw3ICs3OTUsNiBAQCBzdGF0aWMgaW50IGFkZF9zdWIoc3RydWN0IG1lc2hfbmV0ICpuZXQsIHN0 cnVjdCBtZXNoX21vZGVsICptb2QsDQo+ICANCj4gIAkJbF9xdWV1ZV9wdXNoX3RhaWwobW9kLT5z dWJzLCBMX1VJTlRfVE9fUFRSKGdycCkpOw0KPiAgCQltZXNoX25ldF9kc3RfcmVnKG5ldCwgZ3Jw KTsNCj4gLQkJbF9kZWJ1ZygiQWRkZWQgZ3JvdXAgc3Vic2NyaXB0aW9uICU0LjR4IiwgZ3JwKTsN Cj4gIAl9DQo+ICANCj4gIAlyZXR1cm4gTUVTSF9TVEFUVVNfU1VDQ0VTUzsNCj4gQEAgLTkyOSw2 ICs5MTQsNyBAQCBib29sIG1lc2hfbW9kZWxfcngoc3RydWN0IG1lc2hfbm9kZSAqbm9kZSwgYm9v bCBzem1pY3QsIHVpbnQzMl90IHNlcTAsDQo+ICANCj4gIAkvKiBEb24ndCBwcm9jZXNzIGlmIGFs cmVhZHkgaW4gUlBMICovDQo+ICAJY3JwbCA9IG5vZGVfZ2V0X2NycGwobm9kZSk7DQo+ICsNCj4g IAlpZiAobmV0X21zZ19jaGVja19yZXBsYXlfY2FjaGUobmV0LCBzcmMsIGNycGwsIHNlcSwgaXZf aW5kZXgpKQ0KPiAgCQlyZXR1cm4gZmFsc2U7DQo+ICANCj4gQEAgLTEwNjQsOCArMTA1MCw2IEBA IGludCBtZXNoX21vZGVsX3B1Ymxpc2goc3RydWN0IG1lc2hfbm9kZSAqbm9kZSwgdWludDMyX3Qg bW9kX2lkLA0KPiAgCWJvb2wgcmVzdWx0Ow0KPiAgCWludCBzdGF0dXM7DQo+ICANCj4gLQkvKiBw cmludF9wYWNrZXQoIk1vZCBUeCIsIG1zZywgbXNnX2xlbik7ICovDQo+IC0NCj4gIAlpZiAoIW5l dCB8fCBtc2dfbGVuID4gMzgwKQ0KPiAgCQlyZXR1cm4gTUVTSF9FUlJPUl9JTlZBTElEX0FSR1M7 DQo+ICANCj4gQEAgLTEwOTIsOCArMTA3Niw2IEBAIGludCBtZXNoX21vZGVsX3B1Ymxpc2goc3Ry dWN0IG1lc2hfbm9kZSAqbm9kZSwgdWludDMyX3QgbW9kX2lkLA0KPiAgCWlmIChtb2QtPnB1Yi0+ dmlydCkNCj4gIAkJbGFiZWwgPSBtb2QtPnB1Yi0+dmlydC0+bGFiZWw7DQo+ICANCj4gLQlsX2Rl YnVnKCJwdWJsaXNoIGRzdD0leCIsIG1vZC0+cHViLT5hZGRyKTsNCj4gLQ0KPiAgCW5ldF9pZHgg PSBhcHBrZXlfbmV0X2lkeChuZXQsIG1vZC0+cHViLT5pZHgpOw0KPiAgDQo+ICAJcmVzdWx0ID0g bXNnX3NlbmQobm9kZSwgbW9kLT5wdWItPmNyZWRlbnRpYWwgIT0gMCwgc3JjLA0KPiBAQCAtMTEw OCw4ICsxMDkwLDYgQEAgYm9vbCBtZXNoX21vZGVsX3NlbmQoc3RydWN0IG1lc2hfbm9kZSAqbm9k ZSwgdWludDE2X3Qgc3JjLCB1aW50MTZfdCBkc3QsDQo+ICAJCQkJCXVpbnQ4X3QgdHRsLCBib29s IHNlZ21lbnRlZCwNCj4gIAkJCQkJY29uc3Qgdm9pZCAqbXNnLCB1aW50MTZfdCBtc2dfbGVuKQ0K PiAgew0KPiAtCS8qIHByaW50X3BhY2tldCgiTW9kIFR4IiwgbXNnLCBtc2dfbGVuKTsgKi8NCj4g LQ0KPiAgCS8qIElmIFNSQyBpcyAwLCB1c2UgdGhlIFByaW1hcnkgRWxlbWVudCAqLw0KPiAgCWlm IChzcmMgPT0gMCkNCj4gIAkJc3JjID0gbm9kZV9nZXRfcHJpbWFyeShub2RlKTsNCj4gQEAgLTEy NzksMTQgKzEyNTksMTIgQEAgdm9pZCBtZXNoX21vZGVsX2FwcF9rZXlfZGVsZXRlKHN0cnVjdCBt ZXNoX25vZGUgKm5vZGUsIHN0cnVjdCBsX3F1ZXVlICptb2RlbHMsDQo+ICBpbnQgbWVzaF9tb2Rl bF9iaW5kaW5nX2RlbChzdHJ1Y3QgbWVzaF9ub2RlICpub2RlLCB1aW50MTZfdCBhZGRyLCB1aW50 MzJfdCBpZCwNCj4gIAkJCQkJCXVpbnQxNl90IGFwcF9pZHgpDQo+ICB7DQo+IC0JbF9kZWJ1Zygi MHgleCwgMHgleCwgJWQiLCBhZGRyLCBpZCwgYXBwX2lkeCk7DQo+ICAJcmV0dXJuIHVwZGF0ZV9i aW5kaW5nKG5vZGUsIGFkZHIsIGlkLCBhcHBfaWR4LCB0cnVlKTsNCj4gIH0NCj4gIA0KPiAgaW50 IG1lc2hfbW9kZWxfYmluZGluZ19hZGQoc3RydWN0IG1lc2hfbm9kZSAqbm9kZSwgdWludDE2X3Qg YWRkciwgdWludDMyX3QgaWQsDQo+ICAJCQkJCQl1aW50MTZfdCBhcHBfaWR4KQ0KPiAgew0KPiAt CWxfZGVidWcoIjB4JXgsIDB4JXgsICVkIiwgYWRkciwgaWQsIGFwcF9pZHgpOw0KPiAgCXJldHVy biB1cGRhdGVfYmluZGluZyhub2RlLCBhZGRyLCBpZCwgYXBwX2lkeCwgZmFsc2UpOw0KPiAgfQ0K PiAgDQo+IGRpZmYgLS1naXQgYS9tZXNoL25ldC5jIGIvbWVzaC9uZXQuYw0KPiBpbmRleCBmMTA0 YmUwZjkuLmY5ZTdiY2U0YyAxMDA2NDQNCj4gLS0tIGEvbWVzaC9uZXQuYw0KPiArKysgYi9tZXNo L25ldC5jDQo+IEBAIC0zMDcsNyArMzA3LDcgQEAgc3RhdGljIHZvaWQgdHJpZ2dlcl9oZWFydGJl YXQoc3RydWN0IG1lc2hfbmV0ICpuZXQsIHVpbnQxNl90IGZlYXR1cmUsDQo+ICB7DQo+ICAJc3Ry dWN0IG1lc2hfbmV0X2hlYXJ0YmVhdCAqaGIgPSAmbmV0LT5oZWFydGJlYXQ7DQo+ICANCj4gLQls X2luZm8oIiVzOiAlNC40eCAtLT4gJWQiLCBfX2Z1bmNfXywgZmVhdHVyZSwgaW5fdXNlKTsNCj4g KwlsX2RlYnVnKCIlczogJTQuNHggLS0+ICVkIiwgX19mdW5jX18sIGZlYXR1cmUsIGluX3VzZSk7 DQo+ICAJaWYgKGluX3VzZSkgew0KPiAgCQlpZiAobmV0LT5oZWFydGJlYXQuZmVhdHVyZXMgJiBm ZWF0dXJlKQ0KPiAgCQkJcmV0dXJuOyAvKiBubyBjaGFuZ2UgKi8NCj4gQEAgLTM3MSw3ICszNzEs NyBAQCBzdGF0aWMgdm9pZCBmcm5kX2tyX3BoYXNlMih2b2lkICphLCB2b2lkICpiKQ0KPiAgCSAq IHJlY2VpdmVzIGl0J3MgZmlyc3QgUG9sbCB1c2luZyB0aGUgbmV3IGtleXMgKD8pDQo+ICAJICov DQo+ICANCj4gLQlsX2luZm8oIlVzZSBCb3RoIEtleVNldCAlZCAmJiAlZCBmb3IgJTQuNHgiLA0K PiArCWxfZGVidWcoIlVzZSBCb3RoIEtleVNldCAlZCAmJiAlZCBmb3IgJTQuNHgiLA0KPiAgCQkJ ZnJuZC0+bmV0X2tleV9jdXIsIGZybmQtPm5ldF9rZXlfdXBkLCBmcm5kLT5scF9hZGRyKTsNCj4g IH0NCj4gIA0KPiBAQCAtMzc5LDcgKzM3OSw3IEBAIHN0YXRpYyB2b2lkIGZybmRfa3JfcGhhc2Uz KHZvaWQgKmEsIHZvaWQgKmIpDQo+ICB7DQo+ICAJc3RydWN0IG1lc2hfZnJpZW5kICpmcm5kID0g YTsNCj4gIA0KPiAtCWxfaW5mbygiUmVwbGFjZSBLZXlTZXQgJWQgd2l0aCAlZCBmb3IgJTQuNHgi LA0KPiArCWxfZGVidWcoIlJlcGxhY2UgS2V5U2V0ICVkIHdpdGggJWQgZm9yICU0LjR4IiwNCj4g IAkJCWZybmQtPm5ldF9rZXlfY3VyLCBmcm5kLT5uZXRfa2V5X3VwZCwgZnJuZC0+bHBfYWRkcik7 DQo+ICAJbmV0X2tleV91bnJlZihmcm5kLT5uZXRfa2V5X2N1cik7DQo+ICAJZnJuZC0+bmV0X2tl eV9jdXIgPSBmcm5kLT5uZXRfa2V5X3VwZDsNCj4gQEAgLTYyNywxMCArNjI3LDYgQEAgc3RhdGlj IHZvaWQgcXVldWVfZnJpZW5kX3VwZGF0ZShzdHJ1Y3QgbWVzaF9uZXQgKm5ldCkNCj4gIAkJdXBk YXRlLnUub25lWzBdLmRhdGFbMV0gPSBmbGFnczsNCj4gIAkJbF9wdXRfYmUzMihuZXQtPml2X2lu ZGV4LCB1cGRhdGUudS5vbmVbMF0uZGF0YSArIDIpOw0KPiAgCQl1cGRhdGUudS5vbmVbMF0uZGF0 YVs2XSA9IDB4MDE7IC8qIE1vcmUgRGF0YSAqLw0KPiAtCQkvKiBwcmludF9wYWNrZXQoIkZybmQt QmVhY29uLVNSQyIsDQo+IC0JCSAqCQkJYmVhY29uX2RhdGEsIHNpemVvZihiZWFjb25fZGF0YSkp Ow0KPiAtCQkgKi8NCj4gLQkJLyogcHJpbnRfcGFja2V0KCJGcm5kLVVwZGF0ZSIsIHVwZGF0ZS51 Lm9uZVswXS5kYXRhLCA2KTsgKi8NCj4gIA0KPiAgCQlsX3F1ZXVlX2ZvcmVhY2gobmV0LT5mcmll bmRzLCBlbnF1ZXVlX3VwZGF0ZSwgJnVwZGF0ZSk7DQo+ICAJfQ0KPiBAQCAtMTU3MCw3ICsxNTY2 LDcgQEAgc3RhdGljIHZvaWQgc2VuZF9mcm5kX2FjayhzdHJ1Y3QgbWVzaF9uZXQgKm5ldCwgdWlu dDE2X3Qgc3JjLCB1aW50MTZfdCBkc3QsDQo+ICAJbF9wdXRfYmUzMihoZHIsIG1zZyk7DQo+ICAJ bF9wdXRfYmUzMihmbGFncywgbXNnICsgMyk7DQo+ICANCj4gLQlsX2luZm8oIlNlbmQgRnJpZW5k IEFDSyB0byBTZWdzOiAlOC44eCIsIGZsYWdzKTsNCj4gKwlsX2RlYnVnKCJTZW5kIEZyaWVuZCBB Q0sgdG8gU2VnczogJTguOHgiLCBmbGFncyk7DQo+ICANCj4gIAlpZiAoaXNfbHBuX2ZyaWVuZChu ZXQsIGRzdCkpIHsNCj4gIAkJLyogSWYgd2UgYXJlIGFja2luZyBvdXIgTFBOIEZyaWVuZCwgcXVl dWUsIGRvbid0IHNlbmQgKi8NCj4gQEAgLTE2MDMsNyArMTU5OSw3IEBAIHN0YXRpYyB2b2lkIHNl bmRfbmV0X2FjayhzdHJ1Y3QgbWVzaF9uZXQgKm5ldCwgc3RydWN0IG1lc2hfc2FyICpzYXIsDQo+ ICANCj4gIAlsX3B1dF9iZTMyKGhkciwgbXNnKTsNCj4gIAlsX3B1dF9iZTMyKGZsYWdzLCBtc2cg KyAzKTsNCj4gLQlsX2luZm8oIlNlbmQlcyBBQ0sgdG8gU2VnczogJTguOHgiLCBzYXItPmZybmQg PyAiIEZyaWVuZCIgOiAiIiwgZmxhZ3MpOw0KPiArCWxfZGVidWcoIlNlbmQlcyBBQ0sgdG8gU2Vn czogJTguOHgiLCBzYXItPmZybmQgPyAiIEZyaWVuZCIgOiAiIiwgZmxhZ3MpOw0KPiAgDQo+ICAJ aWYgKGlzX2xwbl9mcmllbmQobmV0LCBkc3QpKSB7DQo+ICAJCS8qIElmIHdlIGFyZSBhY2tpbmcg b3VyIExQTiBGcmllbmQsIHF1ZXVlLCBkb24ndCBzZW5kICovDQo+IEBAIC0xNjI5LDcgKzE2MjUs NyBAQCBzdGF0aWMgdm9pZCBpbnNlZ190byhzdHJ1Y3QgbF90aW1lb3V0ICpzZWdfdGltZW91dCwg dm9pZCAqdXNlcl9kYXRhKQ0KPiAgCQlyZXR1cm47DQo+ICANCj4gIAkvKiBTZW5kIE5BSyAqLw0K PiAtCWxfaW5mbygiVGltZW91dCAlcCAlMy4zeCIsIHNhciwgc2FyLT5hcHBfaWR4KTsNCj4gKwls X2RlYnVnKCJUaW1lb3V0ICVwICUzLjN4Iiwgc2FyLCBzYXItPmFwcF9pZHgpOw0KPiAgCXNlbmRf bmV0X2FjayhuZXQsIHNhciwgc2FyLT5mbGFncyk7DQo+ICANCj4gIAlzYXItPnNlZ190aW1lb3V0 ID0gbF90aW1lb3V0X2NyZWF0ZShTRUdfVE8sIGluc2VnX3RvLCBuZXQsIE5VTEwpOw0KPiBAQCAt MTY0Nyw3ICsxNjQzLDYgQEAgc3RhdGljIHZvaWQgaW5tc2dfdG8oc3RydWN0IGxfdGltZW91dCAq bXNnX3RpbWVvdXQsIHZvaWQgKnVzZXJfZGF0YSkNCj4gIA0KPiAgCXNhci0+bXNnX3RpbWVvdXQg PSBOVUxMOw0KPiAgDQo+IC0JLyogcHJpbnRfcGFja2V0KCJJbmNvbWluZyBTQVIgVGltZW91dCIs IHNhci0+YnVmLCBzYXItPmxlbik7ICovDQo+ICAJbWVzaF9zYXJfZnJlZShzYXIpOw0KPiAgfQ0K PiAgDQo+IEBAIC0xNjY4LDcgKzE2NjMsNiBAQCBzdGF0aWMgdm9pZCBvdXRtc2dfdG8oc3RydWN0 IGxfdGltZW91dCAqbXNnX3RpbWVvdXQsIHZvaWQgKnVzZXJfZGF0YSkNCj4gIAkJCQlzYXItPmJ1 Ziwgc2FyLT5sZW4gLSA0LA0KPiAgCQkJCXNhci0+dXNlcl9kYXRhKTsNCj4gIA0KPiAtCS8qIHBy aW50X3BhY2tldCgiT3V0Z29pbmcgU0FSIFRpbWVvdXQiLCBzYXItPmJ1Ziwgc2FyLT5sZW4pOyAq Lw0KPiAgCW1lc2hfc2FyX2ZyZWUoc2FyKTsNCj4gIH0NCj4gIA0KPiBAQCAtMTY5OCwxMyArMTY5 MiwxMyBAQCBzdGF0aWMgdm9pZCBhY2tfcmVjZWl2ZWQoc3RydWN0IG1lc2hfbmV0ICpuZXQsIGJv b2wgdGltZW91dCwNCj4gIAl1aW50MzJfdCBhY2tfY29weSA9IGFja19mbGFnOw0KPiAgCXVpbnQx Nl90IGk7DQo+ICANCj4gLQlsX2luZm8oIkFDSyBSeGVkICgleCkgKHRvOiVkKTogJTguOHgiLCBz ZXEwLCB0aW1lb3V0LCBhY2tfZmxhZyk7DQo+ICsJbF9kZWJ1ZygiQUNLIFJ4ZWQgKCV4KSAodG86 JWQpOiAlOC44eCIsIHNlcTAsIHRpbWVvdXQsIGFja19mbGFnKTsNCj4gIA0KPiAgCW91dGdvaW5n ID0gbF9xdWV1ZV9maW5kKG5ldC0+c2FyX291dCwgbWF0Y2hfc2FyX3NlcTAsDQo+ICAJCQkJCQkJ TF9VSU5UX1RPX1BUUihzZXEwKSk7DQo+ICANCj4gIAlpZiAoIW91dGdvaW5nKSB7DQo+IC0JCWxf aW5mbygiTm90IEZvdW5kOiAlNC40eCIsIHNlcTApOw0KPiArCQlsX2RlYnVnKCJOb3QgRm91bmQ6 ICU0LjR4Iiwgc2VxMCk7DQo+ICAJCXJldHVybjsNCj4gIAl9DQo+ICANCj4gQEAgLTE3NDMsNyAr MTczNyw3IEBAIHN0YXRpYyB2b2lkIGFja19yZWNlaXZlZChzdHJ1Y3QgbWVzaF9uZXQgKm5ldCwg Ym9vbCB0aW1lb3V0LA0KPiAgDQo+ICAJCWFja19jb3B5IHw9IHNlZ19mbGFnOw0KPiAgDQo+IC0J CWxfaW5mbygiUmVzZW5kIFNlZyAlZCBuZXQ6JXAgZHN0OiV4IGFwcF9pZHg6JTMuM3giLA0KPiAr CQlsX2RlYnVnKCJSZXNlbmQgU2VnICVkIG5ldDolcCBkc3Q6JXggYXBwX2lkeDolMy4zeCIsDQo+ ICAJCQkJaSwgbmV0LCBvdXRnb2luZy0+cmVtb3RlLCBvdXRnb2luZy0+YXBwX2lkeCk7DQo+ICAN Cj4gIAkJc2VuZF9zZWcobmV0LCBvdXRnb2luZywgaSk7DQo+IEBAIC0xOTE4LDEyICsxOTEyLDEy IEBAIHN0YXRpYyB2b2lkIGZyaWVuZF9zZWdfcnhlZChzdHJ1Y3QgbWVzaF9uZXQgKm5ldCwNCj4g IAlpZiAoc2VnTiA9PSBzZWdPKQ0KPiAgCQlmcm5kX21zZy0+bGFzdF9sZW4gPSBzaXplOw0KPiAg DQo+IC0JbF9pbmZvKCJSWGVkIFNlZyAlZCwgRmxhZ3MgJTguOHggKGNudDogJWQpIiwNCj4gKwls X2RlYnVnKCJSWGVkIFNlZyAlZCwgRmxhZ3MgJTguOHggKGNudDogJWQpIiwNCj4gIAkJCQkJCXNl Z08sIGZybmRfbXNnLT5mbGFncywgY250KTsNCj4gIA0KPiAgCS8qIEluIHJlYWxpdHksIGlmIG9u ZSBvZiB0aGVzZSBpcyB0cnVlLCB0aGVuICpib3RoKiBtdXN0IGJlIHRydWUgKi8NCj4gIAlpZiAo KGNudCA9PSBzZWdOKSB8fCAoZnJuZF9tc2ctPmZsYWdzID09IGV4cGVjdGVkKSkgew0KPiAtCQls X2luZm8oIkZ1bGwgQUNLIik7DQo+ICsJCWxfZGVidWcoIkZ1bGwgQUNLIik7DQo+ICAJCXNlbmRf ZnJuZF9hY2sobmV0LCBkc3QsIHNyYywgaGRyLCBmcm5kX21zZy0+ZmxhZ3MpOw0KPiAgDQo+ICAJ CWlmIChmcm5kX21zZy0+dHRsID4gMSkgew0KPiBAQCAtMTk0Myw3ICsxOTM3LDcgQEAgc3RhdGlj IHZvaWQgZnJpZW5kX3NlZ19yeGVkKHN0cnVjdCBtZXNoX25ldCAqbmV0LA0KPiAgDQo+ICAJLyog QWx3YXlzIEFDSyBpZiB0aGlzIGlzIHRoZSBsYXJnZXN0IG91dHN0YW5kaW5nIHNlZ21lbnQgKi8N Cj4gIAlpZiAoKGxhcmdlc3QgJiBmcm5kX21zZy0+ZmxhZ3MpID09IGxhcmdlc3QpIHsNCj4gLQkJ bF9pbmZvKCJQYXJ0aWFsIEFDSyIpOw0KPiArCQlsX2RlYnVnKCJQYXJ0aWFsIEFDSyIpOw0KPiAg CQlzZW5kX2ZybmRfYWNrKG5ldCwgZHN0LCBzcmMsIGhkciwgZnJuZF9tc2ctPmZsYWdzKTsNCj4g IAl9DQo+ICANCj4gQEAgLTE5OTcsNyArMTk5MSw3IEBAIHN0YXRpYyBib29sIHNlZ19yeGVkKHN0 cnVjdCBtZXNoX25ldCAqbmV0LCBib29sIGZybmQsIHVpbnQzMl90IGl2X2luZGV4LA0KPiAgCWV4 cGVjdGVkID0gMHhmZmZmZmZmZiA+PiAoMzEgLSBzZWdOKTsNCj4gIA0KPiAgCWlmIChzYXJfaW4p IHsNCj4gLQkJbF9pbmZvKCJSWGVkIChvbGQ6ICUwNHggJTA2eCBzaXplOiVkKSAlZCBvZiAlZCIs DQo+ICsJCWxfZGVidWcoIlJYZWQgKG9sZDogJTA0eCAlMDZ4IHNpemU6JWQpICVkIG9mICVkIiwN Cj4gIAkJCQkJc2VxWmVybywgc2VxLCBzaXplLCBzZWdPLCBzZWdOKTsNCj4gIAkJLyogU2FuaXR5 IENoZWNrLS0+IGNlcnRhaW4gdGhpbmdzIG11c3QgbWF0Y2ggKi8NCj4gIAkJaWYgKFNFR19NQVgo dHJ1ZSwgc2FyX2luLT5sZW4pICE9IHNlZ04gfHwNCj4gQEAgLTIwMTIsNyArMjAwNiw3IEBAIHN0 YXRpYyBib29sIHNlZ19yeGVkKHN0cnVjdCBtZXNoX25ldCAqbmV0LCBib29sIGZybmQsIHVpbnQz Ml90IGl2X2luZGV4LA0KPiAgCX0gZWxzZSB7DQo+ICAJCXVpbnQxNl90IGxlbiA9IE1BWF9TRUdf VE9fTEVOKHNlZ04pOw0KPiAgDQo+IC0JCWxfaW5mbygiUlhlZCAobmV3OiAlMDR4ICUwNnggc2l6 ZTogJWQgbGVuOiAlZCkgJWQgb2YgJWQiLA0KPiArCQlsX2RlYnVnKCJSWGVkIChuZXc6ICUwNHgg JTA2eCBzaXplOiAlZCBsZW46ICVkKSAlZCBvZiAlZCIsDQo+ICAJCQkJc2VxWmVybywgc2VxLCBz aXplLCBsZW4sIHNlZ08sIHNlZ04pOw0KPiAgCQlsX2RlYnVnKCJRdWV1ZSBTaXplOiAlZCIsIGxf cXVldWVfbGVuZ3RoKG5ldC0+c2FyX2luKSk7DQo+ICAJCXNhcl9pbiA9IG1lc2hfc2FyX25ldyhs ZW4pOw0KPiBAQCAtMjAzMSw3ICsyMDI1LDYgQEAgc3RhdGljIGJvb2wgc2VnX3J4ZWQoc3RydWN0 IG1lc2hfbmV0ICpuZXQsIGJvb2wgZnJuZCwgdWludDMyX3QgaXZfaW5kZXgsDQo+ICAJCWxfZGVi dWcoIkZpcnN0IFNlZyAlNC40eCIsIHNhcl9pbi0+ZmxhZ3MpOw0KPiAgCQlsX3F1ZXVlX3B1c2hf aGVhZChuZXQtPnNhcl9pbiwgc2FyX2luKTsNCj4gIAl9DQo+IC0JLyogcHJpbnRfcGFja2V0KCJT ZWciLCBkYXRhLCBzaXplKTsgKi8NCj4gIA0KPiAgCXNlZ19vZmYgPSBzZWdPICogTUFYX1NFR19M RU47DQo+ICAJbWVtY3B5KHNhcl9pbi0+YnVmICsgc2VnX29mZiwgZGF0YSwgc2l6ZSk7DQo+IEBA IC0yMDQ0LDggKzIwMzcsNiBAQCBzdGF0aWMgYm9vbCBzZWdfcnhlZChzdHJ1Y3QgbWVzaF9uZXQg Km5ldCwgYm9vbCBmcm5kLCB1aW50MzJfdCBpdl9pbmRleCwNCj4gIAlzYXJfaW4tPmZsYWdzIHw9 IHRoaXNfc2VnX2ZsYWc7DQo+ICAJc2FyX2luLT50dGwgPSB0dGw7DQo+ICANCj4gLQlsX2RlYnVn KCJIYXZlIEZyYWdzICU0LjR4Iiwgc2FyX2luLT5mbGFncyk7DQo+IC0NCj4gIAkvKiBNc2cgbGVu Z3RoIG9ubHkgZGVmaW5pdGl2ZSBvbiBsYXN0IHNlZ21lbnQgKi8NCj4gIAlpZiAoc2VnTyA9PSBz ZWdOKQ0KPiAgCQlzYXJfaW4tPmxlbiA9IHNlZ04gKiBNQVhfU0VHX0xFTiArIHNpemU7DQo+IEBA IC0yMTY2LDcgKzIxNTcsNyBAQCBzdGF0aWMgYm9vbCBjdGxfcmVjZWl2ZWQoc3RydWN0IG1lc2hf bmV0ICpuZXQsIHVpbnQxNl90IGtleV9pZCwNCj4gIAkJCQlsX3F1ZXVlX2ZpbmQobmV0LT5mcmll bmRzLA0KPiAgCQkJCQltYXRjaF9ieV9mcmllbmQsDQo+ICAJCQkJCUxfVUlOVF9UT19QVFIobF9n ZXRfYmUxNihwa3QpKSkpOw0KPiAtCQlsX2luZm8oIlJlbWFpbmluZyBGcmllbmRzOiAlZCIsIGxf cXVldWVfbGVuZ3RoKG5ldC0+ZnJpZW5kcykpOw0KPiArCQlsX2RlYnVnKCJSZW1haW5pbmcgRnJp ZW5kczogJWQiLCBsX3F1ZXVlX2xlbmd0aChuZXQtPmZyaWVuZHMpKTsNCj4gIAkJYnJlYWs7DQo+ ICANCj4gIAljYXNlIE5FVF9PUF9QUk9YWV9TVUJfQUREOg0KPiBAQCAtMjIxMiw3ICsyMjAzLDcg QEAgc3RhdGljIGJvb2wgY3RsX3JlY2VpdmVkKHN0cnVjdCBtZXNoX25ldCAqbmV0LCB1aW50MTZf dCBrZXlfaWQsDQo+ICAJCQlpZiAobmV0LT5oZWFydGJlYXQuc3ViX21heF9ob3BzIDwgaG9wcykN Cj4gIAkJCQluZXQtPmhlYXJ0YmVhdC5zdWJfbWF4X2hvcHMgPSBob3BzOw0KPiAgDQo+IC0JCQls X2luZm8oIkhCOiBjbnQ6JTQuNHggbWluOiUyLjJ4IG1heDolMi4yeCIsDQo+ICsJCQlsX2RlYnVn KCJIQjogY250OiU0LjR4IG1pbjolMi4yeCBtYXg6JTIuMngiLA0KPiAgCQkJCQluZXQtPmhlYXJ0 YmVhdC5zdWJfY291bnQsDQo+ICAJCQkJCW5ldC0+aGVhcnRiZWF0LnN1Yl9taW5faG9wcywNCj4g IAkJCQkJbmV0LT5oZWFydGJlYXQuc3ViX21heF9ob3BzKTsNCj4gQEAgLTIzODEsOCArMjM3Miw2 IEBAIHN0YXRpYyBlbnVtIF9yZWxheV9hZHZpY2UgcGFja2V0X3JlY2VpdmVkKHZvaWQgKnVzZXJf ZGF0YSwNCj4gIAlpZiAoaXNfdXMobmV0LCBuZXRfc3JjLCB0cnVlKSkNCj4gIAkJcmV0dXJuIFJF TEFZX05PTkU7DQo+ICANCj4gLQlsX2RlYnVnKCJjaGVjayAlMDh4IiwgY2FjaGVfY29va2llKTsN Cj4gLQ0KPiAgCS8qIEFzIGEgUmVsYXksIHN1cHByZXNzIHJlcGVhdHMgb2YgbGFzdCBOIHBhY2tl dHMgdGhhdCBwYXNzIHRocm91Z2ggKi8NCj4gIAkvKiBUaGUgImNhY2hlX2Nvb2tpZSIgc2hvdWxk IGJlIHVuaXF1ZSBwYXJ0IG9mIEFwcCBtZXNzYWdlICovDQo+ICAJaWYgKG1zZ19pbl9jYWNoZShu ZXQsIG5ldF9zcmMsIG5ldF9zZXEsIGNhY2hlX2Nvb2tpZSkpDQo+IEBAIC0yMzk0LDcgKzIzODMs NyBAQCBzdGF0aWMgZW51bSBfcmVsYXlfYWR2aWNlIHBhY2tldF9yZWNlaXZlZCh2b2lkICp1c2Vy X2RhdGEsDQo+ICAJaWYgKGlzX3VzKG5ldCwgbmV0X2RzdCwgZmFsc2UpIHx8DQo+ICAJCQkobmV0 X2N0bCAmJiBuZXRfb3Bjb2RlID09IE5FVF9PUF9IRUFSVEJFQVQpKSB7DQo+ICANCj4gLQkJbF9p bmZvKCJSWDogQXBwIDB4JTA0eCAtPiAweCUwNHggOiBUVEwgMHglMDJ4IDogU0VRIDB4JTA2eCIs DQo+ICsJCWxfZGVidWcoIlJYOiBBcHAgMHglMDR4IC0+IDB4JTA0eCA6IFRUTCAweCUwMnggOiBT RVEgMHglMDZ4IiwNCj4gIAkJCQkJbmV0X3NyYywgbmV0X2RzdCwgbmV0X3R0bCwgbmV0X3NlcSk7 DQo+ICANCj4gIAkJaWYgKG5ldF9jdGwpIHsNCj4gQEAgLTI0MDQsNyArMjM5Myw2IEBAIHN0YXRp YyBlbnVtIF9yZWxheV9hZHZpY2UgcGFja2V0X3JlY2VpdmVkKHZvaWQgKnVzZXJfZGF0YSwNCj4g IAkJCQlpZiAobmV0X2RzdCAmIDB4ODAwMCkNCj4gIAkJCQkJcmV0dXJuIFJFTEFZX05PTkU7DQo+ ICANCj4gLQkJCQkvKiBwcmludF9wYWNrZXQoIkdvdCBBQ0siLCBtc2csIGFwcF9tc2dfbGVuKTsg Ki8NCj4gIAkJCQkvKiBQZWRhbnRpYyBjaGVjayBmb3IgY29ycmVjdCBzaXplICovDQo+ICAJCQkJ aWYgKGFwcF9tc2dfbGVuICE9IDcpDQo+ICAJCQkJCXJldHVybiBSRUxBWV9OT05FOw0KPiBAQCAt MjU3Niw3ICsyNTY0LDcgQEAgc3RhdGljIHZvaWQgaXZfdXBkX3RvKHN0cnVjdCBsX3RpbWVvdXQg KnVwZF90aW1lb3V0LCB2b2lkICp1c2VyX2RhdGEpDQo+ICAJY2FzZSBJVl9VUERfVVBEQVRJTkc6 DQo+ICAJCWlmIChsX3F1ZXVlX2xlbmd0aChuZXQtPnNhcl9vdXQpIHx8DQo+ICAJCQkJCWxfcXVl dWVfbGVuZ3RoKG5ldC0+c2FyX3F1ZXVlKSkgew0KPiAtCQkJbF9pbmZvKCJkb24ndCBsZWF2ZSBJ ViBVcGRhdGUgdW50aWwgc2FyX291dCBlbXB0eSIpOw0KPiArCQkJbF9kZWJ1ZygiZG9uJ3QgbGVh dmUgSVYgVXBkYXRlIHVudGlsIHNhcl9vdXQgZW1wdHkiKTsNCj4gIAkJCWxfdGltZW91dF9tb2Rp ZnkobmV0LT5pdl91cGRhdGVfdGltZW91dCwgMTApOw0KPiAgCQkJYnJlYWs7DQo+ICAJCX0NCj4g QEAgLTI2MjYsNyArMjYxNCw3IEBAIHN0YXRpYyBpbnQga2V5X3JlZnJlc2hfcGhhc2VfdHdvKHN0 cnVjdCBtZXNoX25ldCAqbmV0LCB1aW50MTZfdCBpZHgpDQo+ICAJaWYgKCFzdWJuZXQgfHwgIXN1 Ym5ldC0+bmV0X2tleV91cGQpDQo+ICAJCXJldHVybiBNRVNIX1NUQVRVU19JTlZBTElEX05FVEtF WTsNCj4gIA0KPiAtCWxfaW5mbygiS2V5IHJlZnJlc2ggcHJvY2VkdXJlIHBoYXNlIDI6IHN0YXJ0 IHVzaW5nIG5ldyBuZXQgVFgga2V5cyIpOw0KPiArCWxfZGVidWcoIktleSByZWZyZXNoIHByb2Nl ZHVyZSBwaGFzZSAyOiBzdGFydCB1c2luZyBuZXcgbmV0IFRYIGtleXMiKTsNCj4gIAlzdWJuZXQt PmtleV9yZWZyZXNoID0gMTsNCj4gIAlzdWJuZXQtPm5ldF9rZXlfdHggPSBzdWJuZXQtPm5ldF9r ZXlfdXBkOw0KPiAgCS8qIFRPRE86IFByb3Zpc2lvbmVyIG1heSBuZWVkIHRvIHN0YXkgaW4gcGhh c2UgdGhyZWUgdW50aWwNCj4gQEAgLTI2NTksNyArMjY0Nyw3IEBAIHN0YXRpYyBpbnQga2V5X3Jl ZnJlc2hfZmluaXNoKHN0cnVjdCBtZXNoX25ldCAqbmV0LCB1aW50MTZfdCBpZHgpDQo+ICAJaWYg KHN1Ym5ldC0+a3JfcGhhc2UgPT0gS0VZX1JFRlJFU0hfUEhBU0VfTk9ORSkNCj4gIAkJcmV0dXJu IE1FU0hfU1RBVFVTX1NVQ0NFU1M7DQo+ICANCj4gLQlsX2luZm8oIktleSByZWZyZXNoIHBoYXNl IDM6IHVzZSBuZXcga2V5cyBvbmx5LCBkaXNjYXJkIG9sZCBvbmVzIik7DQo+ICsJbF9kZWJ1Zygi S2V5IHJlZnJlc2ggcGhhc2UgMzogdXNlIG5ldyBrZXlzIG9ubHksIGRpc2NhcmQgb2xkIG9uZXMi KTsNCj4gIA0KPiAgCS8qIFN3aXRjaCB0byB1c2luZyBuZXcga2V5cywgZGlzY2FyZCBvbGQgb25l cyAqLw0KPiAgCW5ldF9rZXlfdW5yZWYoc3VibmV0LT5uZXRfa2V5X2N1cik7DQo+IEBAIC0yNzE1 LDEyICsyNzAzLDEyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9pdl9pdnVfc3RhdGUoc3RydWN0IG1l c2hfbmV0ICpuZXQsIHVpbnQzMl90IGl2X2luZGV4LA0KPiAgCQkJICogU3RhcnRpbmcgcGVybWlz c2l2ZSBzdGF0ZSB3aWxsIGFsbG93IHVzIG1heGltdW0NCj4gIAkJCSAqICg5NiBob3VycykgdG8g cmVzeW5jDQo+ICAJCQkgKi8NCj4gLQkJCWxfaW5mbygiaXZfdXBkX3N0YXRlID0gSVZfVVBEX1VQ REFUSU5HIik7DQo+ICsJCQlsX2RlYnVnKCJpdl91cGRfc3RhdGUgPSBJVl9VUERfVVBEQVRJTkci KTsNCj4gIAkJCW5ldC0+aXZfdXBkX3N0YXRlID0gSVZfVVBEX1VQREFUSU5HOw0KPiAgCQkJbmV0 LT5pdl91cGRhdGVfdGltZW91dCA9IGxfdGltZW91dF9jcmVhdGUoDQo+ICAJCQkJSVZfSURYX1VQ RF9NSU4sIGl2X3VwZF90bywgbmV0LCBOVUxMKTsNCj4gIAkJfSBlbHNlIHsNCj4gLQkJCWxfaW5m bygiaXZfdXBkX3N0YXRlID0gSVZfVVBEX05PUk1BTCIpOw0KPiArCQkJbF9kZWJ1ZygiaXZfdXBk X3N0YXRlID0gSVZfVVBEX05PUk1BTCIpOw0KPiAgCQkJbmV0LT5pdl91cGRfc3RhdGUgPSBJVl9V UERfTk9STUFMOw0KPiAgCQl9DQo+ICAJfSBlbHNlIGlmIChpdnUpIHsNCj4gQEAgLTI3MzYsNyAr MjcyNCw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9pdl9pdnVfc3RhdGUoc3RydWN0IG1lc2hfbmV0 ICpuZXQsIHVpbnQzMl90IGl2X2luZGV4LA0KPiAgCQkJcmV0dXJuOw0KPiAgDQo+ICAJCWlmICgh bmV0LT5pdl91cGRhdGUpIHsNCj4gLQkJCWxfaW5mbygiaXZfdXBkX3N0YXRlID0gSVZfVVBEX1VQ REFUSU5HIik7DQo+ICsJCQlsX2RlYnVnKCJpdl91cGRfc3RhdGUgPSBJVl9VUERfVVBEQVRJTkci KTsNCj4gIAkJCW5ldC0+aXZfdXBkX3N0YXRlID0gSVZfVVBEX1VQREFUSU5HOw0KPiAgCQkJbmV0 LT5pdl91cGRhdGVfdGltZW91dCA9IGxfdGltZW91dF9jcmVhdGUoDQo+ICAJCQkJCUlWX0lEWF9V UERfTUlOLCBpdl91cGRfdG8sIG5ldCwgTlVMTCk7DQo+IEBAIC0yOTM3LDcgKzI5MjUsNiBAQCBi b29sIG1lc2hfbmV0X2F0dGFjaChzdHJ1Y3QgbWVzaF9uZXQgKm5ldCwgc3RydWN0IG1lc2hfaW8g KmlvKQ0KPiAgCQlpZiAoIWZhc3RfY2FjaGUpDQo+ICAJCQlmYXN0X2NhY2hlID0gbF9xdWV1ZV9u ZXcoKTsNCj4gIA0KPiAtCQlsX2luZm8oIlJlZ2lzdGVyIGlvIGNiIik7DQo+ICAJCW1lc2hfaW9f cmVnaXN0ZXJfcmVjdl9jYihpbywgc25iLCBzaXplb2Yoc25iKSwNCj4gIAkJCQkJCQliZWFjb25f cmVjdiwgTlVMTCk7DQo+ICAJCW1lc2hfaW9fcmVnaXN0ZXJfcmVjdl9jYihpbywgcGt0LCBzaXpl b2YocGt0KSwNCj4gQEAgLTI5ODEsNyArMjk2OCw3IEBAIGJvb2wgbWVzaF9uZXRfaXZfaW5kZXhf dXBkYXRlKHN0cnVjdCBtZXNoX25ldCAqbmV0KQ0KPiAgCWlmIChuZXQtPml2X3VwZF9zdGF0ZSAh PSBJVl9VUERfTk9STUFMKQ0KPiAgCQlyZXR1cm4gZmFsc2U7DQo+ICANCj4gLQlsX2luZm8oIml2 X3VwZF9zdGF0ZSA9IElWX1VQRF9VUERBVElORyIpOw0KPiArCWxfZGVidWcoIml2X3VwZF9zdGF0 ZSA9IElWX1VQRF9VUERBVElORyIpOw0KPiAgCW1lc2hfbmV0X2ZsdXNoX21zZ19xdWV1ZXMobmV0 KTsNCj4gIAlpZiAoIW1lc2hfY29uZmlnX3dyaXRlX2l2X2luZGV4KG5vZGVfY29uZmlnX2dldChu ZXQtPm5vZGUpLA0KPiAgCQkJCQkJbmV0LT5pdl9pbmRleCArIDEsIHRydWUpKQ0KPiBAQCAtMzA4 MiwyMyArMzA2OSwxOCBAQCBzdGF0aWMgYm9vbCBzZW5kX3NlZyhzdHJ1Y3QgbWVzaF9uZXQgKm5l dCwgc3RydWN0IG1lc2hfc2FyICptc2csIHVpbnQ4X3Qgc2VnTykNCj4gIAkJbWVzaF9uZXRfaXZf aW5kZXhfdXBkYXRlKG5ldCk7DQo+ICANCj4gIAlsX2RlYnVnKCJzZWdOICVkIHNlZ21lbnQgJWQg c2VnX29mZiAlZCIsIHNlZ04sIHNlZ08sIHNlZ19vZmYpOw0KPiAtCS8qIHByaW50X3BhY2tldCgi U2VuZGluZyIsIG1zZy0+YnVmICsgc2VnX29mZiwgc2VnX2xlbik7ICovDQo+IC0Jew0KPiAtCQkv KiBUT0RPOiBBcmUgd2UgUlhpbmcgb24gYW4gTFBOJ3MgYmVoYWxmPyBUaGVuIHNldCBSTFkgYml0 ICovDQo+IC0NCj4gLQkJaWYgKCFtZXNoX2NyeXB0b19wYWNrZXRfYnVpbGQoZmFsc2UsIG1zZy0+ dHRsLA0KPiAtCQkJCQlzZXFfbnVtLA0KPiAtCQkJCQltc2ctPnNyYywgbXNnLT5yZW1vdGUsDQo+ IC0JCQkJCTAsDQo+IC0JCQkJCW1zZy0+c2VnbWVudGVkLCBtc2ctPmtleV9haWQsDQo+IC0JCQkJ CW1zZy0+c3ptaWMsIGZhbHNlLCBtc2ctPnNlcVplcm8sDQo+IC0JCQkJCXNlZ08sIHNlZ04sDQo+ ICsNCj4gKwkvKiBUT0RPOiBBcmUgd2UgUlhpbmcgb24gYW4gTFBOJ3MgYmVoYWxmPyBUaGVuIHNl dCBSTFkgYml0ICovDQo+ICsJaWYgKCFtZXNoX2NyeXB0b19wYWNrZXRfYnVpbGQoZmFsc2UsIG1z Zy0+dHRsLCBzZXFfbnVtLCBtc2ctPnNyYywNCj4gKwkJCQkJbXNnLT5yZW1vdGUsIDAsIG1zZy0+ c2VnbWVudGVkLA0KPiArCQkJCQltc2ctPmtleV9haWQsIG1zZy0+c3ptaWMsIGZhbHNlLA0KPiAr CQkJCQltc2ctPnNlcVplcm8sIHNlZ08sIHNlZ04sDQo+ICAJCQkJCW1zZy0+YnVmICsgc2VnX29m Ziwgc2VnX2xlbiwNCj4gIAkJCQkJcGFja2V0ICsgMSwgJnBhY2tldF9sZW4pKSB7DQo+IC0JCQls X2Vycm9yKCJGYWlsZWQgdG8gYnVpbGQgcGFja2V0Iik7DQo+IC0JCQlyZXR1cm4gZmFsc2U7DQo+ IC0JCX0NCj4gKwkJbF9lcnJvcigiRmFpbGVkIHRvIGJ1aWxkIHBhY2tldCIpOw0KPiArCQlyZXR1 cm4gZmFsc2U7DQo+ICAJfQ0KPiArDQo+ICAJcHJpbnRfcGFja2V0KCJDbHItTmV0IFR4IiwgcGFj a2V0ICsgMSwgcGFja2V0X2xlbik7DQo+ICANCj4gIAlzdWJuZXQgPSBsX3F1ZXVlX2ZpbmQobmV0 LT5zdWJuZXRzLCBtYXRjaF9rZXlfaW5kZXgsDQo+IEBAIC0zMTEyLDIwICszMDk0LDcgQEAgc3Rh dGljIGJvb2wgc2VuZF9zZWcoc3RydWN0IG1lc2hfbmV0ICpuZXQsIHN0cnVjdCBtZXNoX3NhciAq bXNnLCB1aW50OF90IHNlZ08pDQo+ICAJCXJldHVybiBmYWxzZTsNCj4gIAl9DQo+ICANCj4gLQkv KiBwcmludF9wYWNrZXQoIlN0ZXAgNCIsIHBhY2tldCArIDEsIHBhY2tldF9sZW4pOyAqLw0KPiAt DQo+IC0Jew0KPiAtCQljaGFyICpzdHI7DQo+IC0NCj4gLQkJc2VuZF9tc2dfcGt0KG5ldCwgcGFj a2V0LCBwYWNrZXRfbGVuICsgMSk7DQo+IC0NCj4gLQkJc3RyID0gbF91dGlsX2hleHN0cmluZyhw YWNrZXQgKyAxLCBwYWNrZXRfbGVuKTsNCj4gLQkJbF9pbmZvKCJUWDogTmV0d29yayAlMDR4IC0+ ICUwNHggOiAlcyAoJXUpIDogVFRMICVkIDogU0VRICUwNngiLA0KPiAtCQkJCW1zZy0+c3JjLCBt c2ctPnJlbW90ZSwgc3RyLA0KPiAtCQkJCXBhY2tldF9sZW4sIG1zZy0+dHRsLA0KPiAtCQkJCW1z Zy0+ZnJuZCA/IG1zZy0+c2VxQXV0aCArIHNlZ08gOiBzZXFfbnVtKTsNCj4gLQkJbF9mcmVlKHN0 cik7DQo+IC0JfQ0KPiArCXNlbmRfbXNnX3BrdChuZXQsIHBhY2tldCwgcGFja2V0X2xlbiArIDEp Ow0KPiAgDQo+ICAJbXNnLT5sYXN0X3NlZyA9IHNlZ087DQo+ICANCj4gQEAgLTMxNDAsNyArMzEw OSw2IEBAIHZvaWQgbWVzaF9uZXRfc2VuZF9zZWcoc3RydWN0IG1lc2hfbmV0ICpuZXQsIHVpbnQz Ml90IG5ldF9rZXlfaWQsDQo+ICAJCQkJdWludDMyX3QgaGRyLA0KPiAgCQkJCWNvbnN0IHZvaWQg KnNlZywgdWludDE2X3Qgc2VnX2xlbikNCj4gIHsNCj4gLQljaGFyICpzdHI7DQo+ICAJdWludDhf dCBwYWNrZXRbMzBdOw0KPiAgCXVpbnQ4X3QgcGFja2V0X2xlbjsNCj4gIAlib29sIHNlZ21lbnRl ZCA9ICEhKChoZHIgPj4gU0VHX0hEUl9TSElGVCkgJiB0cnVlKTsNCj4gQEAgLTMxNzQsMTQgKzMx NDIsMTIgQEAgdm9pZCBtZXNoX25ldF9zZW5kX3NlZyhzdHJ1Y3QgbWVzaF9uZXQgKm5ldCwgdWlu dDMyX3QgbmV0X2tleV9pZCwNCj4gIAkJcmV0dXJuOw0KPiAgCX0NCj4gIA0KPiAtCS8qIHByaW50 X3BhY2tldCgiU3RlcCA0IiwgcGFja2V0ICsgMSwgcGFja2V0X2xlbik7ICovDQo+IC0NCj4gIAlz ZW5kX21zZ19wa3QobmV0LCBwYWNrZXQsIHBhY2tldF9sZW4gKyAxKTsNCj4gIA0KPiAtCXN0ciA9 IGxfdXRpbF9oZXhzdHJpbmcocGFja2V0ICsgMSwgcGFja2V0X2xlbik7DQo+IC0JbF9pbmZvKCJU WDogRnJpZW5kIFNlZy0lZCAlMDR4IC0+ICUwNHggOiAlcyAoJXUpIDogVFRMICVkIDogU0VRICUw NngiLA0KPiAtCQkJc2VnTywgc3JjLCBkc3QsIHN0ciwgcGFja2V0X2xlbiwgdHRsLCBzZXEpOw0K PiAtCWxfZnJlZShzdHIpOw0KPiArCWxfZGVidWcoIlRYOiBGcmllbmQgU2VnLSVkICUwNHggLT4g JTA0eCA6IGxlbiAldSkgOiBUVEwgJWQgOiBTRVEgJTA2eCIsDQo+ICsJCQkJCXNlZ08sIHNyYywg ZHN0LCBwYWNrZXRfbGVuLCB0dGwsIHNlcSk7DQo+ICsNCj4gKwlwcmludF9wYWNrZXQoIlRYOiBG cmllbmQiLCBwYWNrZXQgKyAxLCBwYWNrZXRfbGVuKTsNCj4gIH0NCj4gIA0KPiAgYm9vbCBtZXNo X25ldF9hcHBfc2VuZChzdHJ1Y3QgbWVzaF9uZXQgKm5ldCwgYm9vbCBmcm5kX2NyZWQsIHVpbnQx Nl90IHNyYywNCj4gQEAgLTMyMjIsNyArMzE4OCw4IEBAIGJvb2wgbWVzaF9uZXRfYXBwX3NlbmQo c3RydWN0IG1lc2hfbmV0ICpuZXQsIGJvb2wgZnJuZF9jcmVkLCB1aW50MTZfdCBzcmMsDQo+ICAJ CQkJc3ptaWMsIHNlcSAmIFNFUV9aRVJPX01BU0ssDQo+ICAJCQkJbXNnLCBtc2dfbGVuKTsNCj4g IA0KPiAtCS8qIElmIGFkZHJlc3NlZCB0byBhIHVuaWNhc3QgYWRkcmVzcyBhbmQgc3VjY2Vzc2Z1 bGx5IGVucXVldWVkLA0KPiArCS8qDQo+ICsJICogSWYgYWRkcmVzc2VkIHRvIGEgdW5pY2FzdCBh ZGRyZXNzIGFuZCBzdWNjZXNzZnVsbHkgZW5xdWV1ZWQsDQo+ICAJICogb3IgZGVsaXZlcmVkIHRv IG9uZSBvZiBvdXIgVW5pY2FzdCBhZGRyZXNzZXMgd2UgYXJlIGRvbmUNCj4gIAkgKi8NCj4gIAlp ZiAoKHJlc3VsdCAmJiBJU19VTklDQVNUKGRzdCkpIHx8IHNyYyA9PSBkc3QgfHwNCj4gQEAgLTMy NDMsNiArMzIxMCw3IEBAIGJvb2wgbWVzaF9uZXRfYXBwX3NlbmQoc3RydWN0IG1lc2hfbmV0ICpu ZXQsIGJvb2wgZnJuZF9jcmVkLCB1aW50MTZfdCBzcmMsDQo+ICAJcGF5bG9hZC0+aXZfaW5kZXgg PSBtZXNoX25ldF9nZXRfaXZfaW5kZXgobmV0KTsNCj4gIAlwYXlsb2FkLT5zZXFBdXRoID0gc2Vx Ow0KPiAgCXBheWxvYWQtPnNlZ21lbnRlZCA9IHNlZ21lbnRlZDsNCj4gKw0KPiAgCWlmIChzZWdt ZW50ZWQpIHsNCj4gIAkJcGF5bG9hZC0+ZmxhZ3MgPSAweGZmZmZmZmZmID4+ICgzMSAtIHNlZ19t YXgpOw0KPiAgCQlwYXlsb2FkLT5zZXFaZXJvID0gc2VxICYgU0VRX1pFUk9fTUFTSzsNCj4gQEAg LTMyNTYsMTMgKzMyMjQsMTQgQEAgYm9vbCBtZXNoX25ldF9hcHBfc2VuZChzdHJ1Y3QgbWVzaF9u ZXQgKm5ldCwgYm9vbCBmcm5kX2NyZWQsIHVpbnQxNl90IHNyYywNCj4gIAkJCS8qIERlbGF5IHNl bmRpbmcgT3V0Ym91bmQgU0FSIHVubGVzcyBwcmlvcg0KPiAgCQkJICogU0FSIHRvIHNhbWUgRFNU IGhhcyBjb21wbGV0ZWQgKi8NCj4gIA0KPiAtCQkJbF9pbmZvKCJPQi1RdWV1ZWQgU2VxWmVybzog JTQuNHgiLCBwYXlsb2FkLT5zZXFaZXJvKTsNCj4gKwkJCWxfZGVidWcoIk9CLVF1ZXVlZCBTZXFa ZXJvOiAlNC40eCIsIHBheWxvYWQtPnNlcVplcm8pOw0KPiAgCQkJbF9xdWV1ZV9wdXNoX3RhaWwo bmV0LT5zYXJfcXVldWUsIHBheWxvYWQpOw0KPiAgCQkJcmV0dXJuIHRydWU7DQo+ICAJCX0NCj4g IAl9DQo+ICANCj4gIAlyZXN1bHQgPSB0cnVlOw0KPiArDQo+ICAJaWYgKCFJU19VTklDQVNUKGRz dCkgJiYgc2VnbWVudGVkKSB7DQo+ICAJCWludCBpOw0KPiAgDQo+IEBAIC0zMzAzLDcgKzMyNzIs NiBAQCB2b2lkIG1lc2hfbmV0X2Fja19zZW5kKHN0cnVjdCBtZXNoX25ldCAqbmV0LCB1aW50MzJf dCBrZXlfaWQsDQo+ICAJdWludDhfdCBkYXRhWzddOw0KPiAgCXVpbnQ4X3QgcGt0X2xlbjsNCj4g IAl1aW50OF90IHBrdFszMF07DQo+IC0JY2hhciAqc3RyOw0KPiAgDQo+ICAJaGRyID0gTkVUX09Q X1NFR19BQ0tOT1dMRURHRSA8PCBPUENPREVfSERSX1NISUZUOw0KPiAgCWhkciB8PSBybHkgPDwg UkVMQVlfSERSX1NISUZUOw0KPiBAQCAtMzMzNCwxNCArMzMwMiwxMSBAQCB2b2lkIG1lc2hfbmV0 X2Fja19zZW5kKHN0cnVjdCBtZXNoX25ldCAqbmV0LCB1aW50MzJfdCBrZXlfaWQsDQo+ICAJCXJl dHVybjsNCj4gIAl9DQo+ICANCj4gLQkvKiBwcmludF9wYWNrZXQoIlN0ZXAgNCIsIHBrdCwgcGt0 X2xlbik7ICovDQo+ICAJc2VuZF9tc2dfcGt0KG5ldCwgcGt0LCBwa3RfbGVuICsgMSk7DQo+ICAN Cj4gLQlzdHIgPSBsX3V0aWxfaGV4c3RyaW5nKHBrdCArIDEsIHBrdF9sZW4pOw0KPiAtCWxfaW5m bygiVFg6IEZyaWVuZCBBQ0sgJTA0eCAtPiAlMDR4IDogJXMgKCV1KSA6IFRUTCAlZCA6IFNFUSAl MDZ4IiwNCj4gLQkJCXNyYywgZHN0LCBzdHIsIHBrdF9sZW4sDQo+IC0JCQl0dGwsIHNlcSk7DQo+ IC0JbF9mcmVlKHN0cik7DQo+ICsJbF9kZWJ1ZygiVFg6IEZyaWVuZCBBQ0sgJTA0eCAtPiAlMDR4 IDogbGVuICV1IDogVFRMICVkIDogU0VRICUwNngiLA0KPiArCQkJCQlzcmMsIGRzdCwgcGt0X2xl biwgdHRsLCBzZXEpOw0KPiArCXByaW50X3BhY2tldCgiVFg6IEZyaWVuZCBBQ0siLCBwa3QgKyAx LCBwa3RfbGVuKTsNCj4gIH0NCj4gIA0KPiAgdm9pZCBtZXNoX25ldF90cmFuc3BvcnRfc2VuZChz dHJ1Y3QgbWVzaF9uZXQgKm5ldCwgdWludDMyX3Qga2V5X2lkLA0KPiBAQCAtMzQxOSwyNiArMzM4 NCwxMyBAQCB2b2lkIG1lc2hfbmV0X3RyYW5zcG9ydF9zZW5kKHN0cnVjdCBtZXNoX25ldCAqbmV0 LCB1aW50MzJfdCBrZXlfaWQsDQo+ICAJCQkJcGt0ICsgMSwgJnBrdF9sZW4pKQ0KPiAgCQlyZXR1 cm47DQo+ICANCj4gLQkvKiBwcmludF9wYWNrZXQoIlN0ZXAgMiIsIHBrdCArIDEsIHBrdF9sZW4p OyAqLw0KPiAtDQo+ICAJaWYgKCFuZXRfa2V5X2VuY3J5cHQoa2V5X2lkLCBpdl9pbmRleCwgcGt0 ICsgMSwgcGt0X2xlbikpIHsNCj4gIAkJbF9lcnJvcigiRmFpbGVkIHRvIGVuY29kZSBwYWNrZXQi KTsNCj4gIAkJcmV0dXJuOw0KPiAgCX0NCj4gIA0KPiAtCS8qIHByaW50X3BhY2tldCgiU3RlcCA0 IiwgcGt0ICsgMSwgcGt0X2xlbik7ICovDQo+IC0NCj4gLQlpZiAoZHN0ICE9IDApIHsNCj4gLQkJ Y2hhciAqc3RyOw0KPiAtDQo+ICsJaWYgKGRzdCAhPSAwKQ0KPiAgCQlzZW5kX21zZ19wa3QobmV0 LCBwa3QsIHBrdF9sZW4gKyAxKTsNCj4gLQ0KPiAtCQlzdHIgPSBsX3V0aWxfaGV4c3RyaW5nKHBr dCArIDEsIHBrdF9sZW4pOw0KPiAtCQlsX2luZm8oIlRYOiBOZXR3b3JrICUwNHggLT4gJTA0eCA6 ICVzICgldSkgOiBUVEwgJWQgOiBTRVEgJTA2eCIsDQo+IC0JCQkJc3JjLCBkc3QsIHN0ciwgcGt0 X2xlbiwNCj4gLQkJCQl0dGwsIHVzZV9zZXEpOw0KPiAtCQlsX2ZyZWUoc3RyKTsNCj4gLQl9DQo+ ICB9DQo+ICANCj4gIHVpbnQ4X3QgbWVzaF9uZXRfa2V5X3JlZnJlc2hfcGhhc2Vfc2V0KHN0cnVj dCBtZXNoX25ldCAqbmV0LCB1aW50MTZfdCBpZHgsDQo+IEBAIC0zNTI0LDcgKzM0NzYsNyBAQCBp bnQgbWVzaF9uZXRfdXBkYXRlX2tleShzdHJ1Y3QgbWVzaF9uZXQgKm5ldCwgdWludDE2X3QgaWR4 LA0KPiAgDQo+ICAJaWYgKHN1Ym5ldC0+bmV0X2tleV91cGQpIHsNCj4gIAkJbmV0X2tleV91bnJl ZihzdWJuZXQtPm5ldF9rZXlfdXBkKTsNCj4gLQkJbF9pbmZvKCJXYXJuaW5nOiBvdmVyd3JpdGlu ZyBuZXcga2V5cyIpOw0KPiArCQlsX2RlYnVnKCJXYXJuaW5nOiBvdmVyd3JpdGluZyBuZXcga2V5 cyIpOw0KPiAgCX0NCj4gIA0KPiAgCS8qIFByZXNlcnZlIHN0YXJ0aW5nIGRhdGEgKi8NCj4gQEAg LTM1MzksNyArMzQ5MSw3IEBAIGludCBtZXNoX25ldF91cGRhdGVfa2V5KHN0cnVjdCBtZXNoX25l dCAqbmV0LCB1aW50MTZfdCBpZHgsDQo+ICAJbF9xdWV1ZV9mb3JlYWNoKG5ldC0+ZnJpZW5kcywg ZnJuZF9rcl9waGFzZTEsDQo+ICAJCQkJCUxfVUlOVF9UT19QVFIoc3VibmV0LT5uZXRfa2V5X3Vw ZCkpOw0KPiAgDQo+IC0JbF9pbmZvKCJrZXkgcmVmcmVzaCBwaGFzZSAxOiBLZXkgSUQgJWQiLCBz dWJuZXQtPm5ldF9rZXlfdXBkKTsNCj4gKwlsX2RlYnVnKCJrZXkgcmVmcmVzaCBwaGFzZSAxOiBL ZXkgSUQgJWQiLCBzdWJuZXQtPm5ldF9rZXlfdXBkKTsNCj4gIA0KPiAgCWlmICghbWVzaF9jb25m aWdfbmV0X2tleV91cGRhdGUobm9kZV9jb25maWdfZ2V0KG5ldC0+bm9kZSksIGlkeCwgdmFsdWUp KQ0KPiAgCQlyZXR1cm4gTUVTSF9TVEFUVVNfU1RPUkFHRV9GQUlMOw0KPiBAQCAtMzgxMiw5ICsz NzY0LDYgQEAgYm9vbCBuZXRfbXNnX2NoZWNrX3JlcGxheV9jYWNoZShzdHJ1Y3QgbWVzaF9uZXQg Km5ldCwgdWludDE2X3Qgc3JjLA0KPiAgCQlycGxfZ2V0X2xpc3QobmV0LT5ub2RlLCBuZXQtPnJl cGxheV9jYWNoZSk7DQo+ICAJfQ0KPiAgDQo+IC0JbF9kZWJ1ZygiVGVzdCBSZXBsYXkgc3JjOiAl NC40eCBzZXE6ICU2LjZ4IGl2OiAlOC44eCIsDQo+IC0JCQkJCQlzcmMsIHNlcSwgaXZfaW5kZXgp Ow0KPiAtDQo+ICAJcnBlID0gbF9xdWV1ZV9maW5kKG5ldC0+cmVwbGF5X2NhY2hlLCBtYXRjaF9y ZXBsYXlfY2FjaGUsDQo+ICAJCQkJCQlMX1VJTlRfVE9fUFRSKHNyYykpOw0KPiAgDQo+IEBAIC0z ODU0LDcgKzM4MDMsNiBAQCB2b2lkIG5ldF9tc2dfYWRkX3JlcGxheV9jYWNoZShzdHJ1Y3QgbWVz aF9uZXQgKm5ldCwgdWludDE2X3Qgc3JjLCB1aW50MzJfdCBzZXEsDQo+ICAJCQkJCQlMX1VJTlRf VE9fUFRSKHNyYykpOw0KPiAgDQo+ICAJaWYgKCFycGUpIHsNCj4gLQkJbF9kZWJ1ZygiTmV3IEVu dHJ5IGZvciAlNC40eCIsIHNyYyk7DQo+ICAJCXJwZSA9IGxfbmV3KHN0cnVjdCBtZXNoX3JwbCwg MSk7DQo+ICAJCXJwZS0+c3JjID0gc3JjOw0KPiAgCX0NCj4gZGlmZiAtLWdpdCBhL21lc2gvcGIt YWR2LmMgYi9tZXNoL3BiLWFkdi5jDQo+IGluZGV4IGMxMzE2ZWQxYi4uYWU1YjgxMzkxIDEwMDY0 NA0KPiAtLS0gYS9tZXNoL3BiLWFkdi5jDQo+ICsrKyBiL21lc2gvcGItYWR2LmMNCj4gQEAgLTE1 Nyw4ICsxNTcsNiBAQCBzdGF0aWMgdm9pZCBzZW5kX2Fkdl9zZWdzKHN0cnVjdCBwYl9hZHZfc2Vz c2lvbiAqc2Vzc2lvbiwgY29uc3QgdWludDhfdCAqZGF0YSwNCj4gIAkJaW5pdF9zaXplID0gc2l6 ZTsNCj4gIAl9DQo+ICANCj4gLQkvKiBwcmludF9wYWNrZXQoIkZVTEwtVFgiLCBkYXRhLCBzaXpl KTsgKi8NCj4gLQ0KPiAgCWxfZGVidWcoIlNlbmRpbmcgJXUgZnJhZ21lbnRzIGZvciAldSBvY3Rl dHMiLCBtYXhfc2VnICsgMSwgc2l6ZSk7DQo+ICANCj4gIAlidWZbNl0gPSBtYXhfc2VnIDw8IDI7 DQo+IEBAIC0xNjgsNyArMTY2LDYgQEAgc3RhdGljIHZvaWQgc2VuZF9hZHZfc2VncyhzdHJ1Y3Qg cGJfYWR2X3Nlc3Npb24gKnNlc3Npb24sIGNvbnN0IHVpbnQ4X3QgKmRhdGEsDQo+ICANCj4gIAls X2RlYnVnKCJtYXhfc2VnOiAlMi4yeCIsIG1heF9zZWcpOw0KPiAgCWxfZGVidWcoInNpemU6ICUy LjJ4LCBDUkM6ICUyLjJ4Iiwgc2l6ZSwgYnVmWzldKTsNCj4gLQkvKiBwcmludF9wYWNrZXQoIlBC LVRYIiwgYnVmICsgMSwgaW5pdF9zaXplICsgOSk7ICovDQo+ICANCj4gIAlwYl9hZHZfc2VuZChz ZXNzaW9uLCBNRVNIX0lPX1RYX0NPVU5UX1VOTElNSVRFRCwgMjAwLA0KPiAgCQkJCQkJCWJ1Ziwg aW5pdF9zaXplICsgMTApOw0KPiBAQCAtMTg2LDggKzE4Myw2IEBAIHN0YXRpYyB2b2lkIHNlbmRf YWR2X3NlZ3Moc3RydWN0IHBiX2Fkdl9zZXNzaW9uICpzZXNzaW9uLCBjb25zdCB1aW50OF90ICpk YXRhLA0KPiAgCQlidWZbNl0gPSAoaSA8PCAyKSB8IDB4MDI7DQo+ICAJCW1lbWNweShidWYgKyA3 LCBkYXRhICsgY29uc3VtZWQsIHNlZ19zaXplKTsNCj4gIA0KPiAtCQkvKiBwcmludF9wYWNrZXQo IlBCLVRYIiwgYnVmICsgMSwgc2VnX3NpemUgKyA2KTsgKi8NCj4gLQ0KPiAgCQlwYl9hZHZfc2Vu ZChzZXNzaW9uLCBNRVNIX0lPX1RYX0NPVU5UX1VOTElNSVRFRCwgMjAwLA0KPiAgCQkJCQkJCWJ1 Ziwgc2VnX3NpemUgKyA3KTsNCj4gIA0KPiBAQCAtMjI1LDcgKzIyMCw3IEBAIHN0YXRpYyB2b2lk IHR4X3RpbWVvdXQoc3RydWN0IGxfdGltZW91dCAqdGltZW91dCwgdm9pZCAqdXNlcl9kYXRhKQ0K PiAgDQo+ICAJbWVzaF9zZW5kX2NhbmNlbChmaWx0ZXIsIHNpemVvZihmaWx0ZXIpKTsNCj4gIA0K PiAtCWxfaW5mbygiVFggdGltZW91dCIpOw0KPiArCWxfZGVidWcoIlRYIHRpbWVvdXQiKTsNCj4g IAljYiA9IHNlc3Npb24tPmNsb3NlX2NiOw0KPiAgCXVzZXJfZGF0YSA9IHNlc3Npb24tPnVzZXJf ZGF0YTsNCj4gIAljYih1c2VyX2RhdGEsIDEpOw0KPiBkaWZmIC0tZ2l0IGEvbWVzaC9wcm92LWlu aXRpYXRvci5jIGIvbWVzaC9wcm92LWluaXRpYXRvci5jDQo+IGluZGV4IDRlZjMxZTk1ZC4uNGRl NGRmNjJkIDEwMDY0NA0KPiAtLS0gYS9tZXNoL3Byb3YtaW5pdGlhdG9yLmMNCj4gKysrIGIvbWVz aC9wcm92LWluaXRpYXRvci5jDQo+IEBAIC03NzAsNyArNzcwLDcgQEAgc3RhdGljIHZvaWQgaW50 X3Byb3Zfcngodm9pZCAqdXNlcl9kYXRhLCBjb25zdCB1aW50OF90ICpkYXRhLCB1aW50MTZfdCBs ZW4pDQo+ICAJCWJyZWFrOw0KPiAgDQo+ICAJY2FzZSBQUk9WX0NPTVBMRVRFOiAvKiBDb21wbGV0 ZSAqLw0KPiAtCQlsX2luZm8oIlByb3Zpc2lvbmluZyBDb21wbGV0ZSIpOw0KPiArCQlsX2RlYnVn KCJQcm92aXNpb25pbmcgQ29tcGxldGUiKTsNCj4gIAkJcHJvdi0+c3RhdGUgPSBJTlRfUFJPVl9J RExFOw0KPiAgCQlpbnRfcHJvdl9jbG9zZShwcm92LCBQUk9WX0VSUl9TVUNDRVNTKTsNCj4gIAkJ YnJlYWs7DQo=