From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7803DC388F2 for ; Thu, 22 Oct 2020 11:35:21 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B91D5206F7 for ; Thu, 22 Oct 2020 11:35:20 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Nc0PCO5f" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B91D5206F7 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:42904 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kVYsJ-0004kd-Mg for qemu-devel@archiver.kernel.org; Thu, 22 Oct 2020 07:35:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36236) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVYlb-0004EW-Cb for qemu-devel@nongnu.org; Thu, 22 Oct 2020 07:28:23 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:59291) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kVYlY-00053I-2o for qemu-devel@nongnu.org; Thu, 22 Oct 2020 07:28:23 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603366099; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=O642ir5IEq3mZdjtd2xy4Gsz9ZRz0c2Uqrt3a+vhkLg=; b=Nc0PCO5fWywHZVwYsTD4k4g19t0wkEVGUjP5v0qnpTnqpinPtOBcSrqm4y8gy0bjNhXPOQ GNsez0nFe6S+qJPP+F0rIke2Ft9hOSNXzaX9BxDo/vlEvsEngzOaNtTyhxrBvQ6hnolxAx prPy69e4Z7bxi5G+TsouorsNyOAQUgQ= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-45-4MxgbuHaPTSvaWfRyj3bew-1; Thu, 22 Oct 2020 07:28:16 -0400 X-MC-Unique: 4MxgbuHaPTSvaWfRyj3bew-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 88D9E107ACF5; Thu, 22 Oct 2020 11:28:15 +0000 (UTC) Received: from localhost (ovpn-114-229.ams2.redhat.com [10.36.114.229]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1F57919C4F; Thu, 22 Oct 2020 11:28:08 +0000 (UTC) From: Stefan Hajnoczi To: qemu-devel@nongnu.org, Peter Maydell Subject: [PULL v2 06/28] block/export: vhost-user block device backend server Date: Thu, 22 Oct 2020 12:27:04 +0100 Message-Id: <20201022112726.736757-7-stefanha@redhat.com> In-Reply-To: <20201022112726.736757-1-stefanha@redhat.com> References: <20201022112726.736757-1-stefanha@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=stefanha@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Received-SPF: pass client-ip=216.205.24.124; envelope-from=stefanha@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/22 00:54:46 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eduardo Habkost , qemu-block@nongnu.org, "Dr. David Alan Gilbert" , Coiby Xu , Markus Armbruster , Stefan Hajnoczi , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Paolo Bonzini , Max Reitz Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" RnJvbTogQ29pYnkgWHUgPGNvaWJ5Lnh1QGdtYWlsLmNvbT4KCkJ5IG1ha2luZyB1c2Ugb2YgbGli dmhvc3QtdXNlciwgYmxvY2sgZGV2aWNlIGRyaXZlIGNhbiBiZSBzaGFyZWQgdG8KdGhlIGNvbm5l Y3RlZCB2aG9zdC11c2VyIGNsaWVudC4gT25seSBvbmUgY2xpZW50IGNhbiBjb25uZWN0IHRvIHRo ZQpzZXJ2ZXIgb25lIHRpbWUuCgpTaW5jZSB2aG9zdC11c2VyLXNlcnZlciBuZWVkcyBhIGJsb2Nr IGRyaXZlIHRvIGJlIGNyZWF0ZWQgZmlyc3QsIGRlbGF5CnRoZSBjcmVhdGlvbiBvZiB0aGlzIG9i amVjdC4KClN1Z2dlc3RlZC1ieTogS2V2aW4gV29sZiA8a3dvbGZAcmVkaGF0LmNvbT4KU2lnbmVk LW9mZi1ieTogU3RlZmFuIEhham5vY3ppIDxzdGVmYW5oYUByZWRoYXQuY29tPgpTaWduZWQtb2Zm LWJ5OiBDb2lieSBYdSA8Y29pYnkueHVAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogU3RlZmFuIEhh am5vY3ppIDxzdGVmYW5oYUByZWRoYXQuY29tPgpSZXZpZXdlZC1ieTogTWFyYy1BbmRyw6kgTHVy ZWF1IDxtYXJjYW5kcmUubHVyZWF1QHJlZGhhdC5jb20+Ck1lc3NhZ2UtaWQ6IDIwMjAwOTE4MDgw OTEyLjMyMTI5OS02LWNvaWJ5Lnh1QGdtYWlsLmNvbQpbU2hvcnRlbiAidmhvc3RfdXNlcl9ibGtf c2VydmVyIiBzdHJpbmcgdG8gInZob3N0X3VzZXJfYmxrIiB0byBhdm9pZCB0aGUKZm9sbG93aW5n IGNvbXBpbGVyIHdhcm5pbmc6Ci4uL2Jsb2NrL2V4cG9ydC92aG9zdC11c2VyLWJsay1zZXJ2ZXIu YzoxNzg6NTA6IGVycm9yOiDigJglc+KAmSBkaXJlY3RpdmUgb3V0cHV0IHRydW5jYXRlZCB3cml0 aW5nIDIxIGJ5dGVzIGludG8gYSByZWdpb24gb2Ygc2l6ZSAyMCBbLVdlcnJvcj1mb3JtYXQtdHJ1 bmNhdGlvbj1dCmFuZCBmaXggIkludmFsaWQgc2l6ZSAlbGQgLi4uIiBzc2l6ZV90IGZvcm1hdCBz dHJpbmcgYXJndW1lbnRzIGZvcgozMi1iaXQgaG9zdHMuCi0tU3RlZmFuXQpTaWduZWQtb2ZmLWJ5 OiBTdGVmYW4gSGFqbm9jemkgPHN0ZWZhbmhhQHJlZGhhdC5jb20+Ci0tLQogYmxvY2svZXhwb3J0 L3Zob3N0LXVzZXItYmxrLXNlcnZlci5oIHwgIDM2ICsrCiBibG9jay9leHBvcnQvdmhvc3QtdXNl ci1ibGstc2VydmVyLmMgfCA2NjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzb2Z0bW11 L3ZsLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKwogYmxvY2svbWVzb24uYnVpbGQg ICAgICAgICAgICAgICAgICAgIHwgICAxICsKIDQgZmlsZXMgY2hhbmdlZCwgNzAyIGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBibG9jay9leHBvcnQvdmhvc3QtdXNlci1ibGstc2Vy dmVyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBibG9jay9leHBvcnQvdmhvc3QtdXNlci1ibGstc2Vy dmVyLmMKCmRpZmYgLS1naXQgYS9ibG9jay9leHBvcnQvdmhvc3QtdXNlci1ibGstc2VydmVyLmgg Yi9ibG9jay9leHBvcnQvdmhvc3QtdXNlci1ibGstc2VydmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uZjA2ZjM3YzRjOAotLS0gL2Rldi9udWxsCisrKyBiL2Jsb2Nr L2V4cG9ydC92aG9zdC11c2VyLWJsay1zZXJ2ZXIuaApAQCAtMCwwICsxLDM2IEBACisvKgorICog U2hhcmluZyBRRU1VIGJsb2NrIGRldmljZXMgdmlhIHZob3N0LXVzZXIgcHJvdG9jYWwKKyAqCisg KiBDb3B5cmlnaHQgKGMpIENvaWJ5IFh1IDxjb2lieS54dUBnbWFpbC5jb20+LgorICogQ29weXJp Z2h0IChjKSAyMDIwIFJlZCBIYXQsIEluYy4KKyAqCisgKiBUaGlzIHdvcmsgaXMgbGljZW5zZWQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR1BMLCB2ZXJzaW9uIDIgb3IKKyAqIGxhdGVyLiAg U2VlIHRoZSBDT1BZSU5HIGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCisgKi8KKwor I2lmbmRlZiBWSE9TVF9VU0VSX0JMS19TRVJWRVJfSAorI2RlZmluZSBWSE9TVF9VU0VSX0JMS19T RVJWRVJfSAorI2luY2x1ZGUgInV0aWwvdmhvc3QtdXNlci1zZXJ2ZXIuaCIKKwordHlwZWRlZiBz dHJ1Y3QgVnVCbG9ja0RldiBWdUJsb2NrRGV2OworI2RlZmluZSBUWVBFX1ZIT1NUX1VTRVJfQkxL X1NFUlZFUiAidmhvc3QtdXNlci1ibGstc2VydmVyIgorI2RlZmluZSBWSE9TVF9VU0VSX0JMS19T RVJWRVIob2JqKSBcCisgICBPQkpFQ1RfQ0hFQ0soVnVCbG9ja0Rldiwgb2JqLCBUWVBFX1ZIT1NU X1VTRVJfQkxLX1NFUlZFUikKKworLyogdmhvc3QgdXNlciBibG9jayBkZXZpY2UgKi8KK3N0cnVj dCBWdUJsb2NrRGV2IHsKKyAgICBPYmplY3QgcGFyZW50X29iajsKKyAgICBjaGFyICpub2RlX25h bWU7CisgICAgU29ja2V0QWRkcmVzcyAqYWRkcjsKKyAgICBBaW9Db250ZXh0ICpjdHg7CisgICAg VnVTZXJ2ZXIgdnVfc2VydmVyOworICAgIGJvb2wgcnVubmluZzsKKyAgICB1aW50MzJfdCBibGtf c2l6ZTsKKyAgICBCbG9ja0JhY2tlbmQgKmJhY2tlbmQ7CisgICAgUUlPQ2hhbm5lbFNvY2tldCAq c2lvYzsKKyAgICBRVEFJTFFfRU5UUlkoVnVCbG9ja0RldikgbmV4dDsKKyAgICBzdHJ1Y3Qgdmly dGlvX2Jsa19jb25maWcgYmxrY2ZnOworICAgIGJvb2wgd3JpdGFibGU7Cit9OworCisjZW5kaWYg LyogVkhPU1RfVVNFUl9CTEtfU0VSVkVSX0ggKi8KZGlmZiAtLWdpdCBhL2Jsb2NrL2V4cG9ydC92 aG9zdC11c2VyLWJsay1zZXJ2ZXIuYyBiL2Jsb2NrL2V4cG9ydC92aG9zdC11c2VyLWJsay1zZXJ2 ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4yYmExNjEzY2M5Ci0t LSAvZGV2L251bGwKKysrIGIvYmxvY2svZXhwb3J0L3Zob3N0LXVzZXItYmxrLXNlcnZlci5jCkBA IC0wLDAgKzEsNjYxIEBACisvKgorICogU2hhcmluZyBRRU1VIGJsb2NrIGRldmljZXMgdmlhIHZo b3N0LXVzZXIgcHJvdG9jYWwKKyAqCisgKiBQYXJ0cyBvZiB0aGUgY29kZSBiYXNlZCBvbiBuYmQv c2VydmVyLmMuCisgKgorICogQ29weXJpZ2h0IChjKSBDb2lieSBYdSA8Y29pYnkueHVAZ21haWwu Y29tPi4KKyAqIENvcHlyaWdodCAoYykgMjAyMCBSZWQgSGF0LCBJbmMuCisgKgorICogVGhpcyB3 b3JrIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCwgdmVyc2lvbiAy IG9yCisgKiBsYXRlci4gIFNlZSB0aGUgQ09QWUlORyBmaWxlIGluIHRoZSB0b3AtbGV2ZWwgZGly ZWN0b3J5LgorICovCisjaW5jbHVkZSAicWVtdS9vc2RlcC5oIgorI2luY2x1ZGUgImJsb2NrL2Js b2NrLmgiCisjaW5jbHVkZSAidmhvc3QtdXNlci1ibGstc2VydmVyLmgiCisjaW5jbHVkZSAicWFw aS9lcnJvci5oIgorI2luY2x1ZGUgInFvbS9vYmplY3RfaW50ZXJmYWNlcy5oIgorI2luY2x1ZGUg InN5c2VtdS9ibG9jay1iYWNrZW5kLmgiCisjaW5jbHVkZSAidXRpbC9ibG9jay1oZWxwZXJzLmgi CisKK2VudW0geworICAgIFZIT1NUX1VTRVJfQkxLX01BWF9RVUVVRVMgPSAxLAorfTsKK3N0cnVj dCB2aXJ0aW9fYmxrX2luaGRyIHsKKyAgICB1bnNpZ25lZCBjaGFyIHN0YXR1czsKK307CisKK3R5 cGVkZWYgc3RydWN0IFZ1QmxvY2tSZXEgeworICAgIFZ1VmlydHFFbGVtZW50ICplbGVtOworICAg IGludDY0X3Qgc2VjdG9yX251bTsKKyAgICBzaXplX3Qgc2l6ZTsKKyAgICBzdHJ1Y3QgdmlydGlv X2Jsa19pbmhkciAqaW47CisgICAgc3RydWN0IHZpcnRpb19ibGtfb3V0aGRyIG91dDsKKyAgICBW dVNlcnZlciAqc2VydmVyOworICAgIHN0cnVjdCBWdVZpcnRxICp2cTsKK30gVnVCbG9ja1JlcTsK Kworc3RhdGljIHZvaWQgdnVfYmxvY2tfcmVxX2NvbXBsZXRlKFZ1QmxvY2tSZXEgKnJlcSkKK3sK KyAgICBWdURldiAqdnVfZGV2ID0gJnJlcS0+c2VydmVyLT52dV9kZXY7CisKKyAgICAvKiBJTyBz aXplIHdpdGggMSBleHRyYSBzdGF0dXMgYnl0ZSAqLworICAgIHZ1X3F1ZXVlX3B1c2godnVfZGV2 LCByZXEtPnZxLCByZXEtPmVsZW0sIHJlcS0+c2l6ZSArIDEpOworICAgIHZ1X3F1ZXVlX25vdGlm eSh2dV9kZXYsIHJlcS0+dnEpOworCisgICAgaWYgKHJlcS0+ZWxlbSkgeworICAgICAgICBmcmVl KHJlcS0+ZWxlbSk7CisgICAgfQorCisgICAgZ19mcmVlKHJlcSk7Cit9CisKK3N0YXRpYyBWdUJs b2NrRGV2ICpnZXRfdnVfYmxvY2tfZGV2aWNlX2J5X3NlcnZlcihWdVNlcnZlciAqc2VydmVyKQor eworICAgIHJldHVybiBjb250YWluZXJfb2Yoc2VydmVyLCBWdUJsb2NrRGV2LCB2dV9zZXJ2ZXIp OworfQorCitzdGF0aWMgaW50IGNvcm91dGluZV9mbgordnVfYmxvY2tfZGlzY2FyZF93cml0ZV96 ZXJvZXMoVnVCbG9ja1JlcSAqcmVxLCBzdHJ1Y3QgaW92ZWMgKmlvdiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90IGlvdmNudCwgdWludDMyX3QgdHlwZSkKK3sKKyAgICBz dHJ1Y3QgdmlydGlvX2Jsa19kaXNjYXJkX3dyaXRlX3plcm9lcyBkZXNjOworICAgIHNzaXplX3Qg c2l6ZSA9IGlvdl90b19idWYoaW92LCBpb3ZjbnQsIDAsICZkZXNjLCBzaXplb2YoZGVzYykpOwor ICAgIGlmICh1bmxpa2VseShzaXplICE9IHNpemVvZihkZXNjKSkpIHsKKyAgICAgICAgZXJyb3Jf cmVwb3J0KCJJbnZhbGlkIHNpemUgJXpkLCBleHBlY3QgJXp1Iiwgc2l6ZSwgc2l6ZW9mKGRlc2Mp KTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgVnVCbG9ja0RldiAqdmRl dl9ibGsgPSBnZXRfdnVfYmxvY2tfZGV2aWNlX2J5X3NlcnZlcihyZXEtPnNlcnZlcik7CisgICAg dWludDY0X3QgcmFuZ2VbMl0gPSB7IGxlNjRfdG9fY3B1KGRlc2Muc2VjdG9yKSA8PCA5LAorICAg ICAgICAgICAgICAgICAgICAgICAgICBsZTMyX3RvX2NwdShkZXNjLm51bV9zZWN0b3JzKSA8PCA5 IH07CisgICAgaWYgKHR5cGUgPT0gVklSVElPX0JMS19UX0RJU0NBUkQpIHsKKyAgICAgICAgaWYg KGJsa19jb19wZGlzY2FyZCh2ZGV2X2Jsay0+YmFja2VuZCwgcmFuZ2VbMF0sIHJhbmdlWzFdKSA9 PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAo dHlwZSA9PSBWSVJUSU9fQkxLX1RfV1JJVEVfWkVST0VTKSB7CisgICAgICAgIGlmIChibGtfY29f cHdyaXRlX3plcm9lcyh2ZGV2X2Jsay0+YmFja2VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJhbmdlWzBdLCByYW5nZVsxXSwgMCkgPT0gMCkgeworICAgICAgICAgICAgcmV0 dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gLUVJTlZBTDsKK30KKworc3Rh dGljIHZvaWQgY29yb3V0aW5lX2ZuIHZ1X2Jsb2NrX2ZsdXNoKFZ1QmxvY2tSZXEgKnJlcSkKK3sK KyAgICBWdUJsb2NrRGV2ICp2ZGV2X2JsayA9IGdldF92dV9ibG9ja19kZXZpY2VfYnlfc2VydmVy KHJlcS0+c2VydmVyKTsKKyAgICBCbG9ja0JhY2tlbmQgKmJhY2tlbmQgPSB2ZGV2X2Jsay0+YmFj a2VuZDsKKyAgICBibGtfY29fZmx1c2goYmFja2VuZCk7Cit9CisKK3N0cnVjdCByZXFfZGF0YSB7 CisgICAgVnVTZXJ2ZXIgKnNlcnZlcjsKKyAgICBWdVZpcnRxICp2cTsKKyAgICBWdVZpcnRxRWxl bWVudCAqZWxlbTsKK307CisKK3N0YXRpYyB2b2lkIGNvcm91dGluZV9mbiB2dV9ibG9ja192aXJ0 aW9fcHJvY2Vzc19yZXEodm9pZCAqb3BhcXVlKQoreworICAgIHN0cnVjdCByZXFfZGF0YSAqZGF0 YSA9IG9wYXF1ZTsKKyAgICBWdVNlcnZlciAqc2VydmVyID0gZGF0YS0+c2VydmVyOworICAgIFZ1 VmlydHEgKnZxID0gZGF0YS0+dnE7CisgICAgVnVWaXJ0cUVsZW1lbnQgKmVsZW0gPSBkYXRhLT5l bGVtOworICAgIHVpbnQzMl90IHR5cGU7CisgICAgVnVCbG9ja1JlcSAqcmVxOworCisgICAgVnVC bG9ja0RldiAqdmRldl9ibGsgPSBnZXRfdnVfYmxvY2tfZGV2aWNlX2J5X3NlcnZlcihzZXJ2ZXIp OworICAgIEJsb2NrQmFja2VuZCAqYmFja2VuZCA9IHZkZXZfYmxrLT5iYWNrZW5kOworCisgICAg c3RydWN0IGlvdmVjICppbl9pb3YgPSBlbGVtLT5pbl9zZzsKKyAgICBzdHJ1Y3QgaW92ZWMgKm91 dF9pb3YgPSBlbGVtLT5vdXRfc2c7CisgICAgdW5zaWduZWQgaW5fbnVtID0gZWxlbS0+aW5fbnVt OworICAgIHVuc2lnbmVkIG91dF9udW0gPSBlbGVtLT5vdXRfbnVtOworICAgIC8qIHJlZmVyIHRv IGh3L2Jsb2NrL3ZpcnRpb19ibGsuYyAqLworICAgIGlmIChlbGVtLT5vdXRfbnVtIDwgMSB8fCBl bGVtLT5pbl9udW0gPCAxKSB7CisgICAgICAgIGVycm9yX3JlcG9ydCgidmlydGlvLWJsayByZXF1 ZXN0IG1pc3NpbmcgaGVhZGVycyIpOworICAgICAgICBmcmVlKGVsZW0pOworICAgICAgICByZXR1 cm47CisgICAgfQorCisgICAgcmVxID0gZ19uZXcwKFZ1QmxvY2tSZXEsIDEpOworICAgIHJlcS0+ c2VydmVyID0gc2VydmVyOworICAgIHJlcS0+dnEgPSB2cTsKKyAgICByZXEtPmVsZW0gPSBlbGVt OworCisgICAgaWYgKHVubGlrZWx5KGlvdl90b19idWYob3V0X2lvdiwgb3V0X251bSwgMCwgJnJl cS0+b3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihyZXEtPm91dCkpICE9 IHNpemVvZihyZXEtPm91dCkpKSB7CisgICAgICAgIGVycm9yX3JlcG9ydCgidmlydGlvLWJsayBy ZXF1ZXN0IG91dGhkciB0b28gc2hvcnQiKTsKKyAgICAgICAgZ290byBlcnI7CisgICAgfQorCisg ICAgaW92X2Rpc2NhcmRfZnJvbnQoJm91dF9pb3YsICZvdXRfbnVtLCBzaXplb2YocmVxLT5vdXQp KTsKKworICAgIGlmIChpbl9pb3ZbaW5fbnVtIC0gMV0uaW92X2xlbiA8IHNpemVvZihzdHJ1Y3Qg dmlydGlvX2Jsa19pbmhkcikpIHsKKyAgICAgICAgZXJyb3JfcmVwb3J0KCJ2aXJ0aW8tYmxrIHJl cXVlc3QgaW5oZHIgdG9vIHNob3J0Iik7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KKworICAg IC8qIFdlIGFsd2F5cyB0b3VjaCB0aGUgbGFzdCBieXRlLCBzbyBqdXN0IHNlZSBob3cgYmlnIGlu X2lvdiBpcy4gICovCisgICAgcmVxLT5pbiA9ICh2b2lkICopaW5faW92W2luX251bSAtIDFdLmlv dl9iYXNlCisgICAgICAgICAgICAgICsgaW5faW92W2luX251bSAtIDFdLmlvdl9sZW4KKyAgICAg ICAgICAgICAgLSBzaXplb2Yoc3RydWN0IHZpcnRpb19ibGtfaW5oZHIpOworICAgIGlvdl9kaXNj YXJkX2JhY2soaW5faW92LCAmaW5fbnVtLCBzaXplb2Yoc3RydWN0IHZpcnRpb19ibGtfaW5oZHIp KTsKKworICAgIHR5cGUgPSBsZTMyX3RvX2NwdShyZXEtPm91dC50eXBlKTsKKyAgICBzd2l0Y2gg KHR5cGUgJiB+VklSVElPX0JMS19UX0JBUlJJRVIpIHsKKyAgICBjYXNlIFZJUlRJT19CTEtfVF9J TjoKKyAgICBjYXNlIFZJUlRJT19CTEtfVF9PVVQ6IHsKKyAgICAgICAgc3NpemVfdCByZXQgPSAw OworICAgICAgICBib29sIGlzX3dyaXRlID0gdHlwZSAmIFZJUlRJT19CTEtfVF9PVVQ7CisgICAg ICAgIHJlcS0+c2VjdG9yX251bSA9IGxlNjRfdG9fY3B1KHJlcS0+b3V0LnNlY3Rvcik7CisKKyAg ICAgICAgaW50NjRfdCBvZmZzZXQgPSByZXEtPnNlY3Rvcl9udW0gKiB2ZGV2X2Jsay0+YmxrX3Np emU7CisgICAgICAgIFFFTVVJT1ZlY3RvciBxaW92OworICAgICAgICBpZiAoaXNfd3JpdGUpIHsK KyAgICAgICAgICAgIHFlbXVfaW92ZWNfaW5pdF9leHRlcm5hbCgmcWlvdiwgb3V0X2lvdiwgb3V0 X251bSk7CisgICAgICAgICAgICByZXQgPSBibGtfY29fcHdyaXRldihiYWNrZW5kLCBvZmZzZXQs IHFpb3Yuc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxaW92LCAwKTsK KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHFlbXVfaW92ZWNfaW5pdF9leHRlcm5hbCgm cWlvdiwgaW5faW92LCBpbl9udW0pOworICAgICAgICAgICAgcmV0ID0gYmxrX2NvX3ByZWFkdihi YWNrZW5kLCBvZmZzZXQsIHFpb3Yuc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJnFpb3YsIDApOworICAgICAgICB9CisgICAgICAgIGlmIChyZXQgPj0gMCkgeworICAgICAg ICAgICAgcmVxLT5pbi0+c3RhdHVzID0gVklSVElPX0JMS19TX09LOworICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgcmVxLT5pbi0+c3RhdHVzID0gVklSVElPX0JMS19TX0lPRVJSOworICAg ICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFZJUlRJT19CTEtfVF9GTFVT SDoKKyAgICAgICAgdnVfYmxvY2tfZmx1c2gocmVxKTsKKyAgICAgICAgcmVxLT5pbi0+c3RhdHVz ID0gVklSVElPX0JMS19TX09LOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZJUlRJT19CTEtf VF9HRVRfSUQ6IHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBNSU4oaW92X3NpemUoJmVsZW0tPmlu X3NnWzBdLCBpbl9udW0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICBWSVJUSU9fQkxLX0lE X0JZVEVTKTsKKyAgICAgICAgc25wcmludGYoZWxlbS0+aW5fc2dbMF0uaW92X2Jhc2UsIHNpemUs ICIlcyIsICJ2aG9zdF91c2VyX2JsayIpOworICAgICAgICByZXEtPmluLT5zdGF0dXMgPSBWSVJU SU9fQkxLX1NfT0s7CisgICAgICAgIHJlcS0+c2l6ZSA9IGVsZW0tPmluX3NnWzBdLmlvdl9sZW47 CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFZJUlRJT19CTEtfVF9ESVNDQVJEOgor ICAgIGNhc2UgVklSVElPX0JMS19UX1dSSVRFX1pFUk9FUzogeworICAgICAgICBpbnQgcmM7Cisg ICAgICAgIHJjID0gdnVfYmxvY2tfZGlzY2FyZF93cml0ZV96ZXJvZXMocmVxLCAmZWxlbS0+b3V0 X3NnWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9u dW0sIHR5cGUpOworICAgICAgICBpZiAocmMgPT0gMCkgeworICAgICAgICAgICAgcmVxLT5pbi0+ c3RhdHVzID0gVklSVElPX0JMS19TX09LOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg cmVxLT5pbi0+c3RhdHVzID0gVklSVElPX0JMS19TX0lPRVJSOworICAgICAgICB9CisgICAgICAg IGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXEtPmluLT5zdGF0dXMgPSBW SVJUSU9fQkxLX1NfVU5TVVBQOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICB2dV9ibG9j a19yZXFfY29tcGxldGUocmVxKTsKKyAgICByZXR1cm47CisKK2VycjoKKyAgICBmcmVlKGVsZW0p OworICAgIGdfZnJlZShyZXEpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgdnVfYmxv Y2tfcHJvY2Vzc192cShWdURldiAqdnVfZGV2LCBpbnQgaWR4KQoreworICAgIFZ1U2VydmVyICpz ZXJ2ZXI7CisgICAgVnVWaXJ0cSAqdnE7CisgICAgc3RydWN0IHJlcV9kYXRhICpyZXFfZGF0YTsK KworICAgIHNlcnZlciA9IGNvbnRhaW5lcl9vZih2dV9kZXYsIFZ1U2VydmVyLCB2dV9kZXYpOwor ICAgIGFzc2VydChzZXJ2ZXIpOworCisgICAgdnEgPSB2dV9nZXRfcXVldWUodnVfZGV2LCBpZHgp OworICAgIGFzc2VydCh2cSk7CisgICAgVnVWaXJ0cUVsZW1lbnQgKmVsZW07CisgICAgd2hpbGUg KDEpIHsKKyAgICAgICAgZWxlbSA9IHZ1X3F1ZXVlX3BvcCh2dV9kZXYsIHZxLCBzaXplb2YoVnVW aXJ0cUVsZW1lbnQpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVv ZihWdUJsb2NrUmVxKSk7CisgICAgICAgIGlmIChlbGVtKSB7CisgICAgICAgICAgICByZXFfZGF0 YSA9IGdfbmV3MChzdHJ1Y3QgcmVxX2RhdGEsIDEpOworICAgICAgICAgICAgcmVxX2RhdGEtPnNl cnZlciA9IHNlcnZlcjsKKyAgICAgICAgICAgIHJlcV9kYXRhLT52cSA9IHZxOworICAgICAgICAg ICAgcmVxX2RhdGEtPmVsZW0gPSBlbGVtOworICAgICAgICAgICAgQ29yb3V0aW5lICpjbyA9IHFl bXVfY29yb3V0aW5lX2NyZWF0ZSh2dV9ibG9ja192aXJ0aW9fcHJvY2Vzc19yZXEsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcV9kYXRhKTsKKyAg ICAgICAgICAgIGFpb19jb19lbnRlcihzZXJ2ZXItPmlvYy0+Y3R4LCBjbyk7CisgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGlj IHZvaWQgdnVfYmxvY2tfcXVldWVfc2V0X3N0YXJ0ZWQoVnVEZXYgKnZ1X2RldiwgaW50IGlkeCwg Ym9vbCBzdGFydGVkKQoreworICAgIFZ1VmlydHEgKnZxOworCisgICAgYXNzZXJ0KHZ1X2Rldik7 CisKKyAgICB2cSA9IHZ1X2dldF9xdWV1ZSh2dV9kZXYsIGlkeCk7CisgICAgdnVfc2V0X3F1ZXVl X2hhbmRsZXIodnVfZGV2LCB2cSwgc3RhcnRlZCA/IHZ1X2Jsb2NrX3Byb2Nlc3NfdnEgOiBOVUxM KTsKK30KKworc3RhdGljIHVpbnQ2NF90IHZ1X2Jsb2NrX2dldF9mZWF0dXJlcyhWdURldiAqZGV2 KQoreworICAgIHVpbnQ2NF90IGZlYXR1cmVzOworICAgIFZ1U2VydmVyICpzZXJ2ZXIgPSBjb250 YWluZXJfb2YoZGV2LCBWdVNlcnZlciwgdnVfZGV2KTsKKyAgICBWdUJsb2NrRGV2ICp2ZGV2X2Js ayA9IGdldF92dV9ibG9ja19kZXZpY2VfYnlfc2VydmVyKHNlcnZlcik7CisgICAgZmVhdHVyZXMg PSAxdWxsIDw8IFZJUlRJT19CTEtfRl9TSVpFX01BWCB8CisgICAgICAgICAgICAgICAxdWxsIDw8 IFZJUlRJT19CTEtfRl9TRUdfTUFYIHwKKyAgICAgICAgICAgICAgIDF1bGwgPDwgVklSVElPX0JM S19GX1RPUE9MT0dZIHwKKyAgICAgICAgICAgICAgIDF1bGwgPDwgVklSVElPX0JMS19GX0JMS19T SVpFIHwKKyAgICAgICAgICAgICAgIDF1bGwgPDwgVklSVElPX0JMS19GX0ZMVVNIIHwKKyAgICAg ICAgICAgICAgIDF1bGwgPDwgVklSVElPX0JMS19GX0RJU0NBUkQgfAorICAgICAgICAgICAgICAg MXVsbCA8PCBWSVJUSU9fQkxLX0ZfV1JJVEVfWkVST0VTIHwKKyAgICAgICAgICAgICAgIDF1bGwg PDwgVklSVElPX0JMS19GX0NPTkZJR19XQ0UgfAorICAgICAgICAgICAgICAgMXVsbCA8PCBWSVJU SU9fRl9WRVJTSU9OXzEgfAorICAgICAgICAgICAgICAgMXVsbCA8PCBWSVJUSU9fUklOR19GX0lO RElSRUNUX0RFU0MgfAorICAgICAgICAgICAgICAgMXVsbCA8PCBWSVJUSU9fUklOR19GX0VWRU5U X0lEWCB8CisgICAgICAgICAgICAgICAxdWxsIDw8IFZIT1NUX1VTRVJfRl9QUk9UT0NPTF9GRUFU VVJFUzsKKworICAgIGlmICghdmRldl9ibGstPndyaXRhYmxlKSB7CisgICAgICAgIGZlYXR1cmVz IHw9IDF1bGwgPDwgVklSVElPX0JMS19GX1JPOworICAgIH0KKworICAgIHJldHVybiBmZWF0dXJl czsKK30KKworc3RhdGljIHVpbnQ2NF90IHZ1X2Jsb2NrX2dldF9wcm90b2NvbF9mZWF0dXJlcyhW dURldiAqZGV2KQoreworICAgIHJldHVybiAxdWxsIDw8IFZIT1NUX1VTRVJfUFJPVE9DT0xfRl9D T05GSUcgfAorICAgICAgICAgICAxdWxsIDw8IFZIT1NUX1VTRVJfUFJPVE9DT0xfRl9JTkZMSUdI VF9TSE1GRDsKK30KKworc3RhdGljIGludAordnVfYmxvY2tfZ2V0X2NvbmZpZyhWdURldiAqdnVf ZGV2LCB1aW50OF90ICpjb25maWcsIHVpbnQzMl90IGxlbikKK3sKKyAgICBWdVNlcnZlciAqc2Vy dmVyID0gY29udGFpbmVyX29mKHZ1X2RldiwgVnVTZXJ2ZXIsIHZ1X2Rldik7CisgICAgVnVCbG9j a0RldiAqdmRldl9ibGsgPSBnZXRfdnVfYmxvY2tfZGV2aWNlX2J5X3NlcnZlcihzZXJ2ZXIpOwor ICAgIG1lbWNweShjb25maWcsICZ2ZGV2X2Jsay0+YmxrY2ZnLCBsZW4pOworCisgICAgcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQKK3Z1X2Jsb2NrX3NldF9jb25maWcoVnVEZXYgKnZ1X2Rldiwg Y29uc3QgdWludDhfdCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgb2Zmc2V0 LCB1aW50MzJfdCBzaXplLCB1aW50MzJfdCBmbGFncykKK3sKKyAgICBWdVNlcnZlciAqc2VydmVy ID0gY29udGFpbmVyX29mKHZ1X2RldiwgVnVTZXJ2ZXIsIHZ1X2Rldik7CisgICAgVnVCbG9ja0Rl diAqdmRldl9ibGsgPSBnZXRfdnVfYmxvY2tfZGV2aWNlX2J5X3NlcnZlcihzZXJ2ZXIpOworICAg IHVpbnQ4X3Qgd2NlOworCisgICAgLyogZG9uJ3Qgc3VwcG9ydCBsaXZlIG1pZ3JhdGlvbiAqLwor ICAgIGlmIChmbGFncyAhPSBWSE9TVF9TRVRfQ09ORklHX1RZUEVfTUFTVEVSKSB7CisgICAgICAg IHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIGlmIChvZmZzZXQgIT0gb2Zmc2V0b2Yoc3Ry dWN0IHZpcnRpb19ibGtfY29uZmlnLCB3Y2UpIHx8CisgICAgICAgIHNpemUgIT0gMSkgeworICAg ICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICB3Y2UgPSAqZGF0YTsKKyAgICB2ZGV2 X2Jsay0+YmxrY2ZnLndjZSA9IHdjZTsKKyAgICBibGtfc2V0X2VuYWJsZV93cml0ZV9jYWNoZSh2 ZGV2X2Jsay0+YmFja2VuZCwgd2NlKTsKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIFdoZW4g dGhlIGNsaWVudCBkaXNjb25uZWN0cywgaXQgc2VuZHMgYSBWSE9TVF9VU0VSX05PTkUgcmVxdWVz dAorICogYW5kIHZ1X3Byb2Nlc3NfbWVzc2FnZSB3aWxsIHNpbXBsZSBjYWxsIGV4aXQgd2hpY2gg Y2F1c2UgdGhlIFZNCisgKiB0byBleGl0IGFicnVwdGx5LgorICogVG8gYXZvaWQgdGhpcyBpc3N1 ZSwgIHByb2Nlc3MgVkhPU1RfVVNFUl9OT05FIHJlcXVlc3QgYWhlYWQKKyAqIG9mIHZ1X3Byb2Nl c3NfbWVzc2FnZS4KKyAqCisgKi8KK3N0YXRpYyBpbnQgdnVfYmxvY2tfcHJvY2Vzc19tc2coVnVE ZXYgKmRldiwgVmhvc3RVc2VyTXNnICp2bXNnLCBpbnQgKmRvX3JlcGx5KQoreworICAgIGlmICh2 bXNnLT5yZXF1ZXN0ID09IFZIT1NUX1VTRVJfTk9ORSkgeworICAgICAgICBkZXYtPnBhbmljKGRl diwgImRpc2Nvbm5lY3QiKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVy biBmYWxzZTsKK30KKworc3RhdGljIGNvbnN0IFZ1RGV2SWZhY2UgdnVfYmxvY2tfaWZhY2UgPSB7 CisgICAgLmdldF9mZWF0dXJlcyAgICAgICAgICA9IHZ1X2Jsb2NrX2dldF9mZWF0dXJlcywKKyAg ICAucXVldWVfc2V0X3N0YXJ0ZWQgICAgID0gdnVfYmxvY2tfcXVldWVfc2V0X3N0YXJ0ZWQsCisg ICAgLmdldF9wcm90b2NvbF9mZWF0dXJlcyA9IHZ1X2Jsb2NrX2dldF9wcm90b2NvbF9mZWF0dXJl cywKKyAgICAuZ2V0X2NvbmZpZyAgICAgICAgICAgID0gdnVfYmxvY2tfZ2V0X2NvbmZpZywKKyAg ICAuc2V0X2NvbmZpZyAgICAgICAgICAgID0gdnVfYmxvY2tfc2V0X2NvbmZpZywKKyAgICAucHJv Y2Vzc19tc2cgICAgICAgICAgID0gdnVfYmxvY2tfcHJvY2Vzc19tc2csCit9OworCitzdGF0aWMg dm9pZCBibGtfYWlvX2F0dGFjaGVkKEFpb0NvbnRleHQgKmN0eCwgdm9pZCAqb3BhcXVlKQorewor ICAgIFZ1QmxvY2tEZXYgKnZ1Yl9kZXYgPSBvcGFxdWU7CisgICAgYWlvX2NvbnRleHRfYWNxdWly ZShjdHgpOworICAgIHZob3N0X3VzZXJfc2VydmVyX3NldF9haW9fY29udGV4dCgmdnViX2Rldi0+ dnVfc2VydmVyLCBjdHgpOworICAgIGFpb19jb250ZXh0X3JlbGVhc2UoY3R4KTsKK30KKworc3Rh dGljIHZvaWQgYmxrX2Fpb19kZXRhY2godm9pZCAqb3BhcXVlKQoreworICAgIFZ1QmxvY2tEZXYg KnZ1Yl9kZXYgPSBvcGFxdWU7CisgICAgQWlvQ29udGV4dCAqY3R4ID0gdnViX2Rldi0+dnVfc2Vy dmVyLmN0eDsKKyAgICBhaW9fY29udGV4dF9hY3F1aXJlKGN0eCk7CisgICAgdmhvc3RfdXNlcl9z ZXJ2ZXJfc2V0X2Fpb19jb250ZXh0KCZ2dWJfZGV2LT52dV9zZXJ2ZXIsIE5VTEwpOworICAgIGFp b19jb250ZXh0X3JlbGVhc2UoY3R4KTsKK30KKworc3RhdGljIHZvaWQKK3Z1X2Jsb2NrX2luaXRp YWxpemVfY29uZmlnKEJsb2NrRHJpdmVyU3RhdGUgKmJzLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IHZpcnRpb19ibGtfY29uZmlnICpjb25maWcsIHVpbnQzMl90IGJsa19zaXpl KQoreworICAgIGNvbmZpZy0+Y2FwYWNpdHkgPSBiZHJ2X2dldGxlbmd0aChicykgPj4gQkRSVl9T RUNUT1JfQklUUzsKKyAgICBjb25maWctPmJsa19zaXplID0gYmxrX3NpemU7CisgICAgY29uZmln LT5zaXplX21heCA9IDA7CisgICAgY29uZmlnLT5zZWdfbWF4ID0gMTI4IC0gMjsKKyAgICBjb25m aWctPm1pbl9pb19zaXplID0gMTsKKyAgICBjb25maWctPm9wdF9pb19zaXplID0gMTsKKyAgICBj b25maWctPm51bV9xdWV1ZXMgPSBWSE9TVF9VU0VSX0JMS19NQVhfUVVFVUVTOworICAgIGNvbmZp Zy0+bWF4X2Rpc2NhcmRfc2VjdG9ycyA9IDMyNzY4OworICAgIGNvbmZpZy0+bWF4X2Rpc2NhcmRf c2VnID0gMTsKKyAgICBjb25maWctPmRpc2NhcmRfc2VjdG9yX2FsaWdubWVudCA9IGNvbmZpZy0+ YmxrX3NpemUgPj4gOTsKKyAgICBjb25maWctPm1heF93cml0ZV96ZXJvZXNfc2VjdG9ycyA9IDMy NzY4OworICAgIGNvbmZpZy0+bWF4X3dyaXRlX3plcm9lc19zZWcgPSAxOworfQorCitzdGF0aWMg VnVCbG9ja0RldiAqdnVfYmxvY2tfaW5pdChWdUJsb2NrRGV2ICp2dV9ibG9ja19kZXZpY2UsIEVy cm9yICoqZXJycCkKK3sKKworICAgIEJsb2NrQmFja2VuZCAqYmxrOworICAgIEVycm9yICpsb2Nh bF9lcnJvciA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqbm9kZV9uYW1lID0gdnVfYmxvY2tfZGV2 aWNlLT5ub2RlX25hbWU7CisgICAgYm9vbCB3cml0YWJsZSA9IHZ1X2Jsb2NrX2RldmljZS0+d3Jp dGFibGU7CisgICAgdWludDY0X3QgcGVybSA9IEJMS19QRVJNX0NPTlNJU1RFTlRfUkVBRDsKKyAg ICBpbnQgcmV0OworCisgICAgQWlvQ29udGV4dCAqY3R4OworCisgICAgQmxvY2tEcml2ZXJTdGF0 ZSAqYnMgPSBiZHJ2X2xvb2t1cF9icyhub2RlX25hbWUsIG5vZGVfbmFtZSwgJmxvY2FsX2Vycm9y KTsKKworICAgIGlmICghYnMpIHsKKyAgICAgICAgZXJyb3JfcHJvcGFnYXRlKGVycnAsIGxvY2Fs X2Vycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGJkcnZfaXNf cmVhZF9vbmx5KGJzKSkgeworICAgICAgICB3cml0YWJsZSA9IGZhbHNlOworICAgIH0KKworICAg IGlmICh3cml0YWJsZSkgeworICAgICAgICBwZXJtIHw9IEJMS19QRVJNX1dSSVRFOworICAgIH0K KworICAgIGN0eCA9IGJkcnZfZ2V0X2Fpb19jb250ZXh0KGJzKTsKKyAgICBhaW9fY29udGV4dF9h Y3F1aXJlKGN0eCk7CisgICAgYmRydl9pbnZhbGlkYXRlX2NhY2hlKGJzLCBOVUxMKTsKKyAgICBh aW9fY29udGV4dF9yZWxlYXNlKGN0eCk7CisKKyAgICAvKgorICAgICAqIERvbid0IGFsbG93IHJl c2l6ZSB3aGlsZSB0aGUgdmhvc3QgdXNlciBzZXJ2ZXIgaXMgcnVubmluZywKKyAgICAgKiBvdGhl cndpc2Ugd2UgZG9uJ3QgY2FyZSB3aGF0IGhhcHBlbnMgd2l0aCB0aGUgbm9kZS4KKyAgICAgKi8K KyAgICBibGsgPSBibGtfbmV3KGJkcnZfZ2V0X2Fpb19jb250ZXh0KGJzKSwgcGVybSwKKyAgICAg ICAgICAgICAgICAgIEJMS19QRVJNX0NPTlNJU1RFTlRfUkVBRCB8IEJMS19QRVJNX1dSSVRFX1VO Q0hBTkdFRCB8CisgICAgICAgICAgICAgICAgICBCTEtfUEVSTV9XUklURSB8IEJMS19QRVJNX0dS QVBIX01PRCk7CisgICAgcmV0ID0gYmxrX2luc2VydF9icyhibGssIGJzLCBlcnJwKTsKKworICAg IGlmIChyZXQgPCAwKSB7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICBibGtfc2V0 X2VuYWJsZV93cml0ZV9jYWNoZShibGssIGZhbHNlKTsKKworICAgIGJsa19zZXRfYWxsb3dfYWlv X2NvbnRleHRfY2hhbmdlKGJsaywgdHJ1ZSk7CisKKyAgICB2dV9ibG9ja19kZXZpY2UtPmJsa2Nm Zy53Y2UgPSAwOworICAgIHZ1X2Jsb2NrX2RldmljZS0+YmFja2VuZCA9IGJsazsKKyAgICBpZiAo IXZ1X2Jsb2NrX2RldmljZS0+YmxrX3NpemUpIHsKKyAgICAgICAgdnVfYmxvY2tfZGV2aWNlLT5i bGtfc2l6ZSA9IEJEUlZfU0VDVE9SX1NJWkU7CisgICAgfQorICAgIHZ1X2Jsb2NrX2RldmljZS0+ YmxrY2ZnLmJsa19zaXplID0gdnVfYmxvY2tfZGV2aWNlLT5ibGtfc2l6ZTsKKyAgICBibGtfc2V0 X2d1ZXN0X2Jsb2NrX3NpemUoYmxrLCB2dV9ibG9ja19kZXZpY2UtPmJsa19zaXplKTsKKyAgICB2 dV9ibG9ja19pbml0aWFsaXplX2NvbmZpZyhicywgJnZ1X2Jsb2NrX2RldmljZS0+YmxrY2ZnLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dV9ibG9ja19kZXZpY2UtPmJsa19z aXplKTsKKyAgICByZXR1cm4gdnVfYmxvY2tfZGV2aWNlOworCitmYWlsOgorICAgIGJsa191bnJl ZihibGspOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgdm9pZCB2dV9ibG9ja19kZWlu aXQoVnVCbG9ja0RldiAqdnVfYmxvY2tfZGV2aWNlKQoreworICAgIGlmICh2dV9ibG9ja19kZXZp Y2UtPmJhY2tlbmQpIHsKKyAgICAgICAgYmxrX3JlbW92ZV9haW9fY29udGV4dF9ub3RpZmllcih2 dV9ibG9ja19kZXZpY2UtPmJhY2tlbmQsIGJsa19haW9fYXR0YWNoZWQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxrX2Fpb19kZXRhY2gsIHZ1X2Jsb2NrX2Rldmlj ZSk7CisgICAgfQorCisgICAgYmxrX3VucmVmKHZ1X2Jsb2NrX2RldmljZS0+YmFja2VuZCk7Cit9 CisKK3N0YXRpYyB2b2lkIHZob3N0X3VzZXJfYmxrX3NlcnZlcl9zdG9wKFZ1QmxvY2tEZXYgKnZ1 X2Jsb2NrX2RldmljZSkKK3sKKyAgICB2aG9zdF91c2VyX3NlcnZlcl9zdG9wKCZ2dV9ibG9ja19k ZXZpY2UtPnZ1X3NlcnZlcik7CisgICAgdnVfYmxvY2tfZGVpbml0KHZ1X2Jsb2NrX2RldmljZSk7 Cit9CisKK3N0YXRpYyB2b2lkIHZob3N0X3VzZXJfYmxrX3NlcnZlcl9zdGFydChWdUJsb2NrRGV2 ICp2dV9ibG9ja19kZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRXJyb3IgKiplcnJwKQoreworICAgIEFpb0NvbnRleHQgKmN0eDsKKyAgICBTb2NrZXRBZGRy ZXNzICphZGRyID0gdnVfYmxvY2tfZGV2aWNlLT5hZGRyOworCisgICAgaWYgKCF2dV9ibG9ja19p bml0KHZ1X2Jsb2NrX2RldmljZSwgZXJycCkpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor ICAgIGN0eCA9IGJkcnZfZ2V0X2Fpb19jb250ZXh0KGJsa19icyh2dV9ibG9ja19kZXZpY2UtPmJh Y2tlbmQpKTsKKworICAgIGlmICghdmhvc3RfdXNlcl9zZXJ2ZXJfc3RhcnQoJnZ1X2Jsb2NrX2Rl dmljZS0+dnVfc2VydmVyLCBhZGRyLCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBWSE9TVF9VU0VSX0JMS19NQVhfUVVFVUVTLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTlVMTCwgJnZ1X2Jsb2NrX2lmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZXJycCkpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBibGtf YWRkX2Fpb19jb250ZXh0X25vdGlmaWVyKHZ1X2Jsb2NrX2RldmljZS0+YmFja2VuZCwgYmxrX2Fp b19hdHRhY2hlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsa19haW9fZGV0 YWNoLCB2dV9ibG9ja19kZXZpY2UpOworICAgIHZ1X2Jsb2NrX2RldmljZS0+cnVubmluZyA9IHRy dWU7CisgICAgcmV0dXJuOworCisgZXJyb3I6CisgICAgdnVfYmxvY2tfZGVpbml0KHZ1X2Jsb2Nr X2RldmljZSk7Cit9CisKK3N0YXRpYyBib29sIHZ1X3Byb3BfbW9kaWZpYWJsZShWdUJsb2NrRGV2 ICp2dXMsIEVycm9yICoqZXJycCkKK3sKKyAgICBpZiAodnVzLT5ydW5uaW5nKSB7CisgICAgICAg ICAgICBlcnJvcl9zZXRnKGVycnAsICJUaGUgcHJvcGVydHkgY2FuJ3QgYmUgbW9kaWZpZWQgIgor ICAgICAgICAgICAgICAgICAgICAgICAid2hpbGUgdGhlIHNlcnZlciBpcyBydW5uaW5nIik7Cisg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitz dGF0aWMgdm9pZCB2dV9zZXRfbm9kZV9uYW1lKE9iamVjdCAqb2JqLCBjb25zdCBjaGFyICp2YWx1 ZSwgRXJyb3IgKiplcnJwKQoreworICAgIFZ1QmxvY2tEZXYgKnZ1cyA9IFZIT1NUX1VTRVJfQkxL X1NFUlZFUihvYmopOworCisgICAgaWYgKCF2dV9wcm9wX21vZGlmaWFibGUodnVzLCBlcnJwKSkg eworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHZ1cy0+bm9kZV9uYW1lKSB7Cisg ICAgICAgIGdfZnJlZSh2dXMtPm5vZGVfbmFtZSk7CisgICAgfQorCisgICAgdnVzLT5ub2RlX25h bWUgPSBnX3N0cmR1cCh2YWx1ZSk7Cit9CisKK3N0YXRpYyBjaGFyICp2dV9nZXRfbm9kZV9uYW1l KE9iamVjdCAqb2JqLCBFcnJvciAqKmVycnApCit7CisgICAgVnVCbG9ja0RldiAqdnVzID0gVkhP U1RfVVNFUl9CTEtfU0VSVkVSKG9iaik7CisgICAgcmV0dXJuIGdfc3RyZHVwKHZ1cy0+bm9kZV9u YW1lKTsKK30KKworc3RhdGljIHZvaWQgZnJlZV9zb2NrZXRfYWRkcihTb2NrZXRBZGRyZXNzICph ZGRyKQoreworICAgICAgICBnX2ZyZWUoYWRkci0+dS5xX3VuaXgucGF0aCk7CisgICAgICAgIGdf ZnJlZShhZGRyKTsKK30KKworc3RhdGljIHZvaWQgdnVfc2V0X3VuaXhfc29ja2V0KE9iamVjdCAq b2JqLCBjb25zdCBjaGFyICp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF cnJvciAqKmVycnApCit7CisgICAgVnVCbG9ja0RldiAqdnVzID0gVkhPU1RfVVNFUl9CTEtfU0VS VkVSKG9iaik7CisKKyAgICBpZiAoIXZ1X3Byb3BfbW9kaWZpYWJsZSh2dXMsIGVycnApKSB7Cisg ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAodnVzLT5hZGRyKSB7CisgICAgICAgIGZy ZWVfc29ja2V0X2FkZHIodnVzLT5hZGRyKTsKKyAgICB9CisKKyAgICBTb2NrZXRBZGRyZXNzICph ZGRyID0gZ19uZXcwKFNvY2tldEFkZHJlc3MsIDEpOworICAgIGFkZHItPnR5cGUgPSBTT0NLRVRf QUREUkVTU19UWVBFX1VOSVg7CisgICAgYWRkci0+dS5xX3VuaXgucGF0aCA9IGdfc3RyZHVwKHZh bHVlKTsKKyAgICB2dXMtPmFkZHIgPSBhZGRyOworfQorCitzdGF0aWMgY2hhciAqdnVfZ2V0X3Vu aXhfc29ja2V0KE9iamVjdCAqb2JqLCBFcnJvciAqKmVycnApCit7CisgICAgVnVCbG9ja0RldiAq dnVzID0gVkhPU1RfVVNFUl9CTEtfU0VSVkVSKG9iaik7CisgICAgcmV0dXJuIGdfc3RyZHVwKHZ1 cy0+YWRkci0+dS5xX3VuaXgucGF0aCk7Cit9CisKK3N0YXRpYyBib29sIHZ1X2dldF9ibG9ja193 cml0YWJsZShPYmplY3QgKm9iaiwgRXJyb3IgKiplcnJwKQoreworICAgIFZ1QmxvY2tEZXYgKnZ1 cyA9IFZIT1NUX1VTRVJfQkxLX1NFUlZFUihvYmopOworICAgIHJldHVybiB2dXMtPndyaXRhYmxl OworfQorCitzdGF0aWMgdm9pZCB2dV9zZXRfYmxvY2tfd3JpdGFibGUoT2JqZWN0ICpvYmosIGJv b2wgdmFsdWUsIEVycm9yICoqZXJycCkKK3sKKyAgICBWdUJsb2NrRGV2ICp2dXMgPSBWSE9TVF9V U0VSX0JMS19TRVJWRVIob2JqKTsKKworICAgIGlmICghdnVfcHJvcF9tb2RpZmlhYmxlKHZ1cywg ZXJycCkpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2dXMtPndyaXRhYmxl ID0gdmFsdWU7Cit9CisKK3N0YXRpYyB2b2lkIHZ1X2dldF9ibGtfc2l6ZShPYmplY3QgKm9iaiwg VmlzaXRvciAqdiwgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2b2lkICpvcGFxdWUsIEVycm9yICoqZXJycCkKK3sKKyAgICBWdUJsb2NrRGV2ICp2dXMgPSBW SE9TVF9VU0VSX0JMS19TRVJWRVIob2JqKTsKKyAgICB1aW50MzJfdCB2YWx1ZSA9IHZ1cy0+Ymxr X3NpemU7CisKKyAgICB2aXNpdF90eXBlX3VpbnQzMih2LCBuYW1lLCAmdmFsdWUsIGVycnApOwor fQorCitzdGF0aWMgdm9pZCB2dV9zZXRfYmxrX3NpemUoT2JqZWN0ICpvYmosIFZpc2l0b3IgKnYs IGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3Bh cXVlLCBFcnJvciAqKmVycnApCit7CisgICAgVnVCbG9ja0RldiAqdnVzID0gVkhPU1RfVVNFUl9C TEtfU0VSVkVSKG9iaik7CisKKyAgICBFcnJvciAqbG9jYWxfZXJyID0gTlVMTDsKKyAgICB1aW50 MzJfdCB2YWx1ZTsKKworICAgIGlmICghdnVfcHJvcF9tb2RpZmlhYmxlKHZ1cywgZXJycCkpIHsK KyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2aXNpdF90eXBlX3VpbnQzMih2LCBu YW1lLCAmdmFsdWUsICZsb2NhbF9lcnIpOworICAgIGlmIChsb2NhbF9lcnIpIHsKKyAgICAgICAg Z290byBvdXQ7CisgICAgfQorCisgICAgY2hlY2tfYmxvY2tfc2l6ZShvYmplY3RfZ2V0X3R5cGVu YW1lKG9iaiksIG5hbWUsIHZhbHVlLCAmbG9jYWxfZXJyKTsKKyAgICBpZiAobG9jYWxfZXJyKSB7 CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIHZ1cy0+YmxrX3NpemUgPSB2YWx1ZTsK Kworb3V0OgorICAgIGVycm9yX3Byb3BhZ2F0ZShlcnJwLCBsb2NhbF9lcnIpOworfQorCitzdGF0 aWMgdm9pZCB2aG9zdF91c2VyX2Jsa19zZXJ2ZXJfaW5zdGFuY2VfZmluYWxpemUoT2JqZWN0ICpv YmopCit7CisgICAgVnVCbG9ja0RldiAqdnViID0gVkhPU1RfVVNFUl9CTEtfU0VSVkVSKG9iaik7 CisKKyAgICB2aG9zdF91c2VyX2Jsa19zZXJ2ZXJfc3RvcCh2dWIpOworCisgICAgLyoKKyAgICAg KiBVbmxpa2Ugb2JqZWN0X3Byb3BlcnR5X2FkZF9zdHIsIG9iamVjdF9jbGFzc19wcm9wZXJ0eV9h ZGRfc3RyCisgICAgICogZG9lc24ndCBoYXZlIGEgcmVsZWFzZSBtZXRob2QuIFRodXMgbWFudWFs IG1lbW9yeSBmcmVlaW5nIGlzCisgICAgICogbmVlZGVkLgorICAgICAqLworICAgIGZyZWVfc29j a2V0X2FkZHIodnViLT5hZGRyKTsKKyAgICBnX2ZyZWUodnViLT5ub2RlX25hbWUpOworfQorCitz dGF0aWMgdm9pZCB2aG9zdF91c2VyX2Jsa19zZXJ2ZXJfY29tcGxldGUoVXNlckNyZWF0YWJsZSAq b2JqLCBFcnJvciAqKmVycnApCit7CisgICAgVnVCbG9ja0RldiAqdnViID0gVkhPU1RfVVNFUl9C TEtfU0VSVkVSKG9iaik7CisKKyAgICB2aG9zdF91c2VyX2Jsa19zZXJ2ZXJfc3RhcnQodnViLCBl cnJwKTsKK30KKworc3RhdGljIHZvaWQgdmhvc3RfdXNlcl9ibGtfc2VydmVyX2NsYXNzX2luaXQo T2JqZWN0Q2xhc3MgKmtsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdm9pZCAqY2xhc3NfZGF0YSkKK3sKKyAgICBVc2VyQ3JlYXRhYmxlQ2xhc3MgKnVj YyA9IFVTRVJfQ1JFQVRBQkxFX0NMQVNTKGtsYXNzKTsKKyAgICB1Y2MtPmNvbXBsZXRlID0gdmhv c3RfdXNlcl9ibGtfc2VydmVyX2NvbXBsZXRlOworCisgICAgb2JqZWN0X2NsYXNzX3Byb3BlcnR5 X2FkZF9ib29sKGtsYXNzLCAid3JpdGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2dV9nZXRfYmxvY2tfd3JpdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZ1X3NldF9ibG9ja193cml0YWJsZSk7CisKKyAgICBvYmplY3RfY2xhc3NfcHJv cGVydHlfYWRkX3N0cihrbGFzcywgIm5vZGUtbmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdnVfZ2V0X25vZGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2dV9zZXRfbm9kZV9uYW1lKTsKKworICAgIG9iamVjdF9jbGFzc19wcm9wZXJ0eV9h ZGRfc3RyKGtsYXNzLCAidW5peC1zb2NrZXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZ1X2dldF91bml4X3NvY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2dV9zZXRfdW5peF9zb2NrZXQpOworCisgICAgb2JqZWN0X2NsYXNzX3Byb3BlcnR5X2Fk ZChrbGFzcywgImxvZ2ljYWwtYmxvY2stc2l6ZSIsICJ1aW50MzIiLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdnVfZ2V0X2Jsa19zaXplLCB2dV9zZXRfYmxrX3NpemUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKK30KKworc3RhdGljIGNvbnN0IFR5 cGVJbmZvIHZob3N0X3VzZXJfYmxrX3NlcnZlcl9pbmZvID0geworICAgIC5uYW1lID0gVFlQRV9W SE9TVF9VU0VSX0JMS19TRVJWRVIsCisgICAgLnBhcmVudCA9IFRZUEVfT0JKRUNULAorICAgIC5p bnN0YW5jZV9zaXplID0gc2l6ZW9mKFZ1QmxvY2tEZXYpLAorICAgIC5pbnN0YW5jZV9maW5hbGl6 ZSA9IHZob3N0X3VzZXJfYmxrX3NlcnZlcl9pbnN0YW5jZV9maW5hbGl6ZSwKKyAgICAuY2xhc3Nf aW5pdCA9IHZob3N0X3VzZXJfYmxrX3NlcnZlcl9jbGFzc19pbml0LAorICAgIC5pbnRlcmZhY2Vz ID0gKEludGVyZmFjZUluZm9bXSkgeworICAgICAgICB7VFlQRV9VU0VSX0NSRUFUQUJMRX0sCisg ICAgICAgIHt9CisgICAgfSwKK307CisKK3N0YXRpYyB2b2lkIHZob3N0X3VzZXJfYmxrX3NlcnZl cl9yZWdpc3Rlcl90eXBlcyh2b2lkKQoreworICAgIHR5cGVfcmVnaXN0ZXJfc3RhdGljKCZ2aG9z dF91c2VyX2Jsa19zZXJ2ZXJfaW5mbyk7Cit9CisKK3R5cGVfaW5pdCh2aG9zdF91c2VyX2Jsa19z ZXJ2ZXJfcmVnaXN0ZXJfdHlwZXMpCmRpZmYgLS1naXQgYS9zb2Z0bW11L3ZsLmMgYi9zb2Z0bW11 L3ZsLmMKaW5kZXggY2I0NzZhYTcwYi4uMDVjYmZjNTc2NCAxMDA2NDQKLS0tIGEvc29mdG1tdS92 bC5jCisrKyBiL3NvZnRtbXUvdmwuYwpAQCAtMjU0MCw2ICsyNTQwLDEwIEBAIHN0YXRpYyBib29s IG9iamVjdF9jcmVhdGVfaW5pdGlhbChjb25zdCBjaGFyICp0eXBlLCBRZW11T3B0cyAqb3B0cykK ICAgICB9CiAjZW5kaWYKIAorICAgIC8qIFJlYXNvbjogdmhvc3QtdXNlci1ibGstc2VydmVyIHBy b3BlcnR5ICJub2RlLW5hbWUiICovCisgICAgaWYgKGdfc3RyX2VxdWFsKHR5cGUsICJ2aG9zdC11 c2VyLWJsay1zZXJ2ZXIiKSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIC8q CiAgICAgICogUmVhc29uOiBmaWx0ZXItKiBwcm9wZXJ0eSAibmV0ZGV2IiBldGMuCiAgICAgICov CmRpZmYgLS1naXQgYS9ibG9jay9tZXNvbi5idWlsZCBiL2Jsb2NrL21lc29uLmJ1aWxkCmluZGV4 IDc4ZThiMjUyMzIuLjZlNmMxZGM0NzkgMTAwNjQ0Ci0tLSBhL2Jsb2NrL21lc29uLmJ1aWxkCisr KyBiL2Jsb2NrL21lc29uLmJ1aWxkCkBAIC02MCw2ICs2MCw3IEBAIGJsb2NrX3NzLmFkZCh3aGVu OiAnQ09ORklHX1dJTjMyJywgaWZfdHJ1ZTogZmlsZXMoJ2ZpbGUtd2luMzIuYycsICd3aW4zMi1h aW8uYycpCiBibG9ja19zcy5hZGQod2hlbjogJ0NPTkZJR19QT1NJWCcsIGlmX3RydWU6IFtmaWxl cygnZmlsZS1wb3NpeC5jJyksIGNvcmVmLCBpb2tpdF0pCiBibG9ja19zcy5hZGQod2hlbjogJ0NP TkZJR19MSUJJU0NTSScsIGlmX3RydWU6IGZpbGVzKCdpc2NzaS1vcHRzLmMnKSkKIGJsb2NrX3Nz LmFkZCh3aGVuOiAnQ09ORklHX0xJTlVYJywgaWZfdHJ1ZTogZmlsZXMoJ252bWUuYycpKQorYmxv Y2tfc3MuYWRkKHdoZW46ICdDT05GSUdfTElOVVgnLCBpZl90cnVlOiBmaWxlcygnZXhwb3J0L3Zo b3N0LXVzZXItYmxrLXNlcnZlci5jJywgJy4uL2NvbnRyaWIvbGlidmhvc3QtdXNlci9saWJ2aG9z dC11c2VyLmMnKSkKIGJsb2NrX3NzLmFkZCh3aGVuOiAnQ09ORklHX1JFUExJQ0FUSU9OJywgaWZf dHJ1ZTogZmlsZXMoJ3JlcGxpY2F0aW9uLmMnKSkKIGJsb2NrX3NzLmFkZCh3aGVuOiAnQ09ORklH X1NIRUVQRE9HJywgaWZfdHJ1ZTogZmlsZXMoJ3NoZWVwZG9nLmMnKSkKIGJsb2NrX3NzLmFkZCh3 aGVuOiBbJ0NPTkZJR19MSU5VWF9BSU8nLCBsaWJhaW9dLCBpZl90cnVlOiBmaWxlcygnbGludXgt YWlvLmMnKSkKLS0gCjIuMjYuMgoK