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.5 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,URIBL_BLOCKED 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 BEE01C433DF for ; Mon, 12 Oct 2020 18:41:47 +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 7149320870 for ; Mon, 12 Oct 2020 18:41:46 +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="dTI/vhGV" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7149320870 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]:44012 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kS2lV-0008Qt-Gf for qemu-devel@archiver.kernel.org; Mon, 12 Oct 2020 14:41:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39800) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kS2Z6-0003cz-QF for qemu-devel@nongnu.org; Mon, 12 Oct 2020 14:28:58 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:60991) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kS2Yx-0004AC-Th for qemu-devel@nongnu.org; Mon, 12 Oct 2020 14:28:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1602527324; 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=Q0fMOywNxPgQOxBLfyg8TRlZgL96k5SAZ6/wSNIT4/c=; b=dTI/vhGV/Jj3xXNfyUwuJ3utKCcHgMcFbWaydhWbyM5qafpnzG/yXEqVBp9DSIq8e7tHcW YrOPDLz8Hm7o1NOkWGedkowd6o2Xqth7Zd8YnEn0kf38zAebfvgccrOyEsIfMkJnsLMBBo YmVSpCkzzZ0JGdN+SQ/nXCahozt72bA= 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-204-oP95ZNJXNCu4Jv26cn-gjw-1; Mon, 12 Oct 2020 14:28:40 -0400 X-MC-Unique: oP95ZNJXNCu4Jv26cn-gjw-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 0149B802B48; Mon, 12 Oct 2020 18:28:39 +0000 (UTC) Received: from localhost (ovpn-115-4.ams2.redhat.com [10.36.115.4]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2BAE819C78; Mon, 12 Oct 2020 18:28:38 +0000 (UTC) From: Stefan Hajnoczi To: Peter Maydell , qemu-devel@nongnu.org Subject: [PULL v2 07/30] test: new qTest case to test the vhost-user-blk-server Date: Mon, 12 Oct 2020 19:27:37 +0100 Message-Id: <20201012182800.157697-8-stefanha@redhat.com> In-Reply-To: <20201012182800.157697-1-stefanha@redhat.com> References: <20201012182800.157697-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=63.128.21.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/12 02:58:41 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_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 , Laurent Vivier , Thomas Huth , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eduardo Habkost , qemu-block@nongnu.org, Markus Armbruster , Coiby Xu , Max Reitz , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Stefan Hajnoczi , Cleber Rosa , Paolo Bonzini , Fam Zheng , "Dr. David Alan Gilbert" Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" RnJvbTogQ29pYnkgWHUgPGNvaWJ5Lnh1QGdtYWlsLmNvbT4KClRoaXMgdGVzdCBjYXNlIGhhcyB0 aGUgc2FtZSB0ZXN0cyBhcyB0ZXN0cy92aXJ0aW8tYmxrLXRlc3QuYyBleGNlcHQgZm9yCnRlc3Rz IGhhdmUgYmxvY2tfcmVzaXplLiBTaW5jZSB2aG9zdC11c2VyIHNlcnZlciBjYW4gb25seSBzZXJ2 ZXIgb25lCmNsaWVudCBvbmUgdGltZSwgdHdvIGluc3RhbmNlcyBvZiB2aG9zdC11c2VyLWJsay1z ZXJ2ZXIgYXJlIHN0YXJ0ZWQgYnkKcWVtdS1zdG9yYWdlLWRhZW1vbiBmb3IgdGhlIGhvdHBsdWcg dGVzdC4KCkluIG9yZGVyIHRvIG5vdCBibG9jayBzY3JpcHRzL3RhcC1kcml2ZXIucGwsIHZob3N0 LXVzZXItYmxrLXNlcnZlciB3aWxsCnNlbmQgInF1aXQiIGNvbW1hbmQgdG8gcWVtdS1zdG9yYWdl LWRhZW1vbidzIFFNUCBtb25pdG9yLiBTbyBhIGZ1bmN0aW9uCmlzIGFkZGVkIHRvIGxpYnF0ZXN0 LmMgdG8gZXN0YWJsaXNoIHNvY2tldCBjb25uZWN0aW9uIHdpdGggc29ja2V0CnNlcnZlci4KClN1 Z2dlc3RlZC1ieTogVGhvbWFzIEh1dGggPHRodXRoQHJlZGhhdC5jb20+ClNpZ25lZC1vZmYtYnk6 IENvaWJ5IFh1IDxjb2lieS54dUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBTdGVmYW4gSGFqbm9j emkgPHN0ZWZhbmhhQHJlZGhhdC5jb20+ClJldmlld2VkLWJ5OiBNYXJjLUFuZHLDqSBMdXJlYXUg PG1hcmNhbmRyZS5sdXJlYXVAcmVkaGF0LmNvbT4KTWVzc2FnZS1pZDogMjAyMDA5MTgwODA5MTIu MzIxMjk5LTctY29pYnkueHVAZ21haWwuY29tCltVcGRhdGUgbWVzb24uYnVpbGQgdG8gb25seSB0 ZXN0IHdoZW4gQ09ORklHX1RPT0xTIGhhcyBidWlsdApxZW11LXN0b3JhZ2UtZGFlbW9uLiBUaGlz IHByZXZlbnRzIENJIGZhaWx1cmVzIHdpdGggLS1kaXNhYmxlLXRvb2xzLgotLVN0ZWZhbl0KU2ln bmVkLW9mZi1ieTogU3RlZmFuIEhham5vY3ppIDxzdGVmYW5oYUByZWRoYXQuY29tPgotLS0KIHRl c3RzL3F0ZXN0L2xpYnFvcy9saWJxdGVzdC5oICAgICAgIHwgIDE3ICsKIHRlc3RzL3F0ZXN0L2xp YnFvcy92aG9zdC11c2VyLWJsay5oIHwgIDQ4ICsrCiB0ZXN0cy9xdGVzdC9saWJxb3Mvdmhvc3Qt dXNlci1ibGsuYyB8IDEyOSArKysrKwogdGVzdHMvcXRlc3QvbGlicXRlc3QuYyAgICAgICAgICAg ICAgfCAgMzYgKy0KIHRlc3RzL3F0ZXN0L3Zob3N0LXVzZXItYmxrLXRlc3QuYyAgIHwgNzUxICsr KysrKysrKysrKysrKysrKysrKysrKysrKysKIHRlc3RzL3F0ZXN0L2xpYnFvcy9tZXNvbi5idWls ZCAgICAgIHwgICAxICsKIHRlc3RzL3F0ZXN0L21lc29uLmJ1aWxkICAgICAgICAgICAgIHwgICA0 ICstCiA3IGZpbGVzIGNoYW5nZWQsIDk4MyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL3F0ZXN0L2xpYnFvcy92aG9zdC11c2VyLWJsay5oCiBj cmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvcXRlc3QvbGlicW9zL3Zob3N0LXVzZXItYmxrLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9xdGVzdC92aG9zdC11c2VyLWJsay10ZXN0LmMKCmRpZmYg LS1naXQgYS90ZXN0cy9xdGVzdC9saWJxb3MvbGlicXRlc3QuaCBiL3Rlc3RzL3F0ZXN0L2xpYnFv cy9saWJxdGVzdC5oCmluZGV4IGE2ZWUxNjU0ZjIuLjJjMjAzODFjZWUgMTAwNjQ0Ci0tLSBhL3Rl c3RzL3F0ZXN0L2xpYnFvcy9saWJxdGVzdC5oCisrKyBiL3Rlc3RzL3F0ZXN0L2xpYnFvcy9saWJx dGVzdC5oCkBAIC0xMzIsNiArMTMyLDIzIEBAIHZvaWQgcXRlc3RfcW1wX3NlbmQoUVRlc3RTdGF0 ZSAqcywgY29uc3QgY2hhciAqZm10LCAuLi4pCiB2b2lkIHF0ZXN0X3FtcF9zZW5kX3JhdyhRVGVz dFN0YXRlICpzLCBjb25zdCBjaGFyICpmbXQsIC4uLikKICAgICBHQ0NfRk1UX0FUVFIoMiwgMyk7 CiAKKy8qKgorICogcXRlc3Rfc29ja2V0X2NsaWVudDoKKyAqIEBzZXJ2ZXJfc29ja2V0X3BhdGg6 IHRoZSBzb2NrZXQgc2VydmVyJ3MgcGF0aAorICoKKyAqIENvbm5lY3QgdG8gYSBzb2NrZXQgc2Vy dmVyLgorICovCitpbnQgcXRlc3Rfc29ja2V0X2NsaWVudChjaGFyICpzZXJ2ZXJfc29ja2V0X3Bh dGgpOworCisvKioKKyAqIHF0ZXN0X2NyZWF0ZV9zdGF0ZV93aXRoX3FtcF9mZDoKKyAqIEBmZDog c29ja2V0IGZkCisgKgorICogV3JhcCBzb2NrZXQgZmQgaW4gUVRlc3RTdGF0ZSB0byBtYWtlIHVz ZSBvZiBxdGVzdF9xbXAqCisgKiBmdW5jdGlvbnMKKyAqLworUVRlc3RTdGF0ZSAqcXRlc3RfY3Jl YXRlX3N0YXRlX3dpdGhfcW1wX2ZkKGludCBmZCk7CisKIC8qKgogICogcXRlc3RfdnFtcF9mZHM6 CiAgKiBAczogI1FUZXN0U3RhdGUgaW5zdGFuY2UgdG8gb3BlcmF0ZSBvbi4KZGlmZiAtLWdpdCBh L3Rlc3RzL3F0ZXN0L2xpYnFvcy92aG9zdC11c2VyLWJsay5oIGIvdGVzdHMvcXRlc3QvbGlicW9z L3Zob3N0LXVzZXItYmxrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u MmEwMzQ1NmE0NQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3F0ZXN0L2xpYnFvcy92aG9zdC11 c2VyLWJsay5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBsaWJxb3MgZHJpdmVyIGZyYW1ld29y aworICoKKyAqIEJhc2VkIG9uIHRlc3RzL3F0ZXN0L2xpYnFvcy92aXJ0aW8tYmxrLmMKKyAqCisg KiBDb3B5cmlnaHQgKGMpIDIwMjAgQ29pYnkgWHUgPGNvaWJ5Lnh1QGdtYWlsLmNvbT4KKyAqCisg KiBDb3B5cmlnaHQgKGMpIDIwMTggRW1hbnVlbGUgR2l1c2VwcGUgRXNwb3NpdG8gPGUuZW1hbnVl bGVnaXVzZXBwZUBnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSB2ZXJz aW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgor ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+CisgKi8KKworI2lmbmRlZiBURVNUU19MSUJRT1NfVkhPU1RfVVNFUl9CTEtfSAor I2RlZmluZSBURVNUU19MSUJRT1NfVkhPU1RfVVNFUl9CTEtfSAorCisjaW5jbHVkZSAicWdyYXBo LmgiCisjaW5jbHVkZSAidmlydGlvLmgiCisjaW5jbHVkZSAidmlydGlvLXBjaS5oIgorCit0eXBl ZGVmIHN0cnVjdCBRVmhvc3RVc2VyQmxrIFFWaG9zdFVzZXJCbGs7Cit0eXBlZGVmIHN0cnVjdCBR Vmhvc3RVc2VyQmxrUENJIFFWaG9zdFVzZXJCbGtQQ0k7Cit0eXBlZGVmIHN0cnVjdCBRVmhvc3RV c2VyQmxrRGV2aWNlIFFWaG9zdFVzZXJCbGtEZXZpY2U7CisKK3N0cnVjdCBRVmhvc3RVc2VyQmxr IHsKKyAgICBRVmlydGlvRGV2aWNlICp2ZGV2OworfTsKKworc3RydWN0IFFWaG9zdFVzZXJCbGtQ Q0kgeworICAgIFFWaXJ0aW9QQ0lEZXZpY2UgcGNpX3ZkZXY7CisgICAgUVZob3N0VXNlckJsayBi bGs7Cit9OworCitzdHJ1Y3QgUVZob3N0VXNlckJsa0RldmljZSB7CisgICAgUU9TR3JhcGhPYmpl Y3Qgb2JqOworICAgIFFWaG9zdFVzZXJCbGsgYmxrOworfTsKKworI2VuZGlmCmRpZmYgLS1naXQg YS90ZXN0cy9xdGVzdC9saWJxb3Mvdmhvc3QtdXNlci1ibGsuYyBiL3Rlc3RzL3F0ZXN0L2xpYnFv cy92aG9zdC11c2VyLWJsay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LjU4YzdlMWViNjkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9xdGVzdC9saWJxb3Mvdmhvc3Qt dXNlci1ibGsuYwpAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIGxpYnFvcyBkcml2ZXIgZnJhbWV3 b3JrCisgKgorICogQmFzZWQgb24gdGVzdHMvcXRlc3QvbGlicW9zL3ZpcnRpby1ibGsuYworICoK KyAqIENvcHlyaWdodCAoYykgMjAyMCBDb2lieSBYdSA8Y29pYnkueHVAZ21haWwuY29tPgorICoK KyAqIENvcHlyaWdodCAoYykgMjAxOCBFbWFudWVsZSBHaXVzZXBwZSBFc3Bvc2l0byA8ZS5lbWFu dWVsZWdpdXNlcHBlQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIHZl cnNpb24gMi4xIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgor ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPgorICovCisKKyNpbmNsdWRlICJxZW11L29zZGVwLmgiCisjaW5jbHVkZSAi bGlicXRlc3QuaCIKKyNpbmNsdWRlICJxZW11L21vZHVsZS5oIgorI2luY2x1ZGUgInN0YW5kYXJk LWhlYWRlcnMvbGludXgvdmlydGlvX2Jsay5oIgorI2luY2x1ZGUgInZob3N0LXVzZXItYmxrLmgi CisKKyNkZWZpbmUgUENJX1NMT1QgICAgICAgICAgICAgICAgMHgwNAorI2RlZmluZSBQQ0lfRk4g ICAgICAgICAgICAgICAgICAweDAwCisKKy8qIHZpcnRpby1ibGstZGV2aWNlICovCitzdGF0aWMg dm9pZCAqcXZob3N0X3VzZXJfYmxrX2dldF9kcml2ZXIoUVZob3N0VXNlckJsayAqdl9ibGssCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICppbnRlcmZhY2Up Cit7CisgICAgaWYgKCFnX3N0cmNtcDAoaW50ZXJmYWNlLCAidmhvc3QtdXNlci1ibGsiKSkgewor ICAgICAgICByZXR1cm4gdl9ibGs7CisgICAgfQorICAgIGlmICghZ19zdHJjbXAwKGludGVyZmFj ZSwgInZpcnRpbyIpKSB7CisgICAgICAgIHJldHVybiB2X2Jsay0+dmRldjsKKyAgICB9CisKKyAg ICBmcHJpbnRmKHN0ZGVyciwgIiVzIG5vdCBwcmVzZW50IGluIHZob3N0LXVzZXItYmxrLWRldmlj ZVxuIiwgaW50ZXJmYWNlKTsKKyAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworfQorCitzdGF0 aWMgdm9pZCAqcXZob3N0X3VzZXJfYmxrX2RldmljZV9nZXRfZHJpdmVyKHZvaWQgKm9iamVjdCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpp bnRlcmZhY2UpCit7CisgICAgUVZob3N0VXNlckJsa0RldmljZSAqdl9ibGsgPSBvYmplY3Q7Cisg ICAgcmV0dXJuIHF2aG9zdF91c2VyX2Jsa19nZXRfZHJpdmVyKCZ2X2Jsay0+YmxrLCBpbnRlcmZh Y2UpOworfQorCitzdGF0aWMgdm9pZCAqdmhvc3RfdXNlcl9ibGtfZGV2aWNlX2NyZWF0ZSh2b2lk ICp2aXJ0aW9fZGV2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRR3Vl c3RBbGxvY2F0b3IgKnRfYWxsb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZvaWQgKmFkZHIpCit7CisgICAgUVZob3N0VXNlckJsa0RldmljZSAqdmhvc3RfdXNlcl9i bGsgPSBnX25ldzAoUVZob3N0VXNlckJsa0RldmljZSwgMSk7CisgICAgUVZob3N0VXNlckJsayAq aW50ZXJmYWNlID0gJnZob3N0X3VzZXJfYmxrLT5ibGs7CisKKyAgICBpbnRlcmZhY2UtPnZkZXYg PSB2aXJ0aW9fZGV2OworCisgICAgdmhvc3RfdXNlcl9ibGstPm9iai5nZXRfZHJpdmVyID0gcXZo b3N0X3VzZXJfYmxrX2RldmljZV9nZXRfZHJpdmVyOworCisgICAgcmV0dXJuICZ2aG9zdF91c2Vy X2Jsay0+b2JqOworfQorCisvKiB2aXJ0aW8tYmxrLXBjaSAqLworc3RhdGljIHZvaWQgKnF2aG9z dF91c2VyX2Jsa19wY2lfZ2V0X2RyaXZlcih2b2lkICpvYmplY3QsIGNvbnN0IGNoYXIgKmludGVy ZmFjZSkKK3sKKyAgICBRVmhvc3RVc2VyQmxrUENJICp2X2JsayA9IG9iamVjdDsKKyAgICBpZiAo IWdfc3RyY21wMChpbnRlcmZhY2UsICJwY2ktZGV2aWNlIikpIHsKKyAgICAgICAgcmV0dXJuIHZf YmxrLT5wY2lfdmRldi5wZGV2OworICAgIH0KKyAgICByZXR1cm4gcXZob3N0X3VzZXJfYmxrX2dl dF9kcml2ZXIoJnZfYmxrLT5ibGssIGludGVyZmFjZSk7Cit9CisKK3N0YXRpYyB2b2lkICp2aG9z dF91c2VyX2Jsa19wY2lfY3JlYXRlKHZvaWQgKnBjaV9idXMsIFFHdWVzdEFsbG9jYXRvciAqdF9h bGxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYWRkcikK K3sKKyAgICBRVmhvc3RVc2VyQmxrUENJICp2aG9zdF91c2VyX2JsayA9IGdfbmV3MChRVmhvc3RV c2VyQmxrUENJLCAxKTsKKyAgICBRVmhvc3RVc2VyQmxrICppbnRlcmZhY2UgPSAmdmhvc3RfdXNl cl9ibGstPmJsazsKKyAgICBRT1NHcmFwaE9iamVjdCAqb2JqID0gJnZob3N0X3VzZXJfYmxrLT5w Y2lfdmRldi5vYmo7CisKKyAgICB2aXJ0aW9fcGNpX2luaXQoJnZob3N0X3VzZXJfYmxrLT5wY2lf dmRldiwgcGNpX2J1cywgYWRkcik7CisgICAgaW50ZXJmYWNlLT52ZGV2ID0gJnZob3N0X3VzZXJf YmxrLT5wY2lfdmRldi52ZGV2OworCisgICAgZ19hc3NlcnRfY21waGV4KGludGVyZmFjZS0+dmRl di0+ZGV2aWNlX3R5cGUsID09LCBWSVJUSU9fSURfQkxPQ0spOworCisgICAgb2JqLT5nZXRfZHJp dmVyID0gcXZob3N0X3VzZXJfYmxrX3BjaV9nZXRfZHJpdmVyOworCisgICAgcmV0dXJuIG9iajsK K30KKworc3RhdGljIHZvaWQgdmhvc3RfdXNlcl9ibGtfcmVnaXN0ZXJfbm9kZXModm9pZCkKK3sK KyAgICAvKgorICAgICAqIEZJWE1FOiBldmVyeSB0ZXN0IHVzaW5nIHRoZXNlIHR3byBub2RlcyBu ZWVkcyB0byBzZXR1cCBhCisgICAgICogLWRyaXZlLGlkPWRyaXZlMCBvdGhlcndpc2UgUUVNVSBp cyBub3QgZ29pbmcgdG8gc3RhcnQuCisgICAgICogVGhlcmVmb3JlLCB3ZSBkbyBub3QgaW5jbHVk ZSAicHJvZHVjZXMiIGVkZ2UgZm9yIHZpcnRpbworICAgICAqIGFuZCBwY2ktZGV2aWNlIHlldC4K KyAgICAgKi8KKworICAgIGNoYXIgKmFyZyA9IGdfc3RyZHVwX3ByaW50ZigiaWQ9ZHJ2MCxjaGFy ZGV2PWNoYXIxLGFkZHI9JXguJXgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ Q0lfU0xPVCwgUENJX0ZOKTsKKworICAgIFFQQ0lBZGRyZXNzIGFkZHIgPSB7CisgICAgICAgIC5k ZXZmbiA9IFFQQ0lfREVWRk4oUENJX1NMT1QsIFBDSV9GTiksCisgICAgfTsKKworICAgIFFPU0dy YXBoRWRnZU9wdGlvbnMgb3B0cyA9IHsgfTsKKworICAgIC8qIHZpcnRpby1ibGstZGV2aWNlICov CisgICAgLyoqIG9wdHMuZXh0cmFfZGV2aWNlX29wdHMgPSAiZHJpdmU9ZHJpdmUwIjsgKi8KKyAg ICBxb3Nfbm9kZV9jcmVhdGVfZHJpdmVyKCJ2aG9zdC11c2VyLWJsay1kZXZpY2UiLCB2aG9zdF91 c2VyX2Jsa19kZXZpY2VfY3JlYXRlKTsKKyAgICBxb3Nfbm9kZV9jb25zdW1lcygidmhvc3QtdXNl ci1ibGstZGV2aWNlIiwgInZpcnRpby1idXMiLCAmb3B0cyk7CisgICAgcW9zX25vZGVfcHJvZHVj ZXMoInZob3N0LXVzZXItYmxrLWRldmljZSIsICJ2aG9zdC11c2VyLWJsayIpOworCisgICAgLyog dmlydGlvLWJsay1wY2kgKi8KKyAgICBvcHRzLmV4dHJhX2RldmljZV9vcHRzID0gYXJnOworICAg IGFkZF9xcGNpX2FkZHJlc3MoJm9wdHMsICZhZGRyKTsKKyAgICBxb3Nfbm9kZV9jcmVhdGVfZHJp dmVyKCJ2aG9zdC11c2VyLWJsay1wY2kiLCB2aG9zdF91c2VyX2Jsa19wY2lfY3JlYXRlKTsKKyAg ICBxb3Nfbm9kZV9jb25zdW1lcygidmhvc3QtdXNlci1ibGstcGNpIiwgInBjaS1idXMiLCAmb3B0 cyk7CisgICAgcW9zX25vZGVfcHJvZHVjZXMoInZob3N0LXVzZXItYmxrLXBjaSIsICJ2aG9zdC11 c2VyLWJsayIpOworCisgICAgZ19mcmVlKGFyZyk7Cit9CisKK2xpYnFvc19pbml0KHZob3N0X3Vz ZXJfYmxrX3JlZ2lzdGVyX25vZGVzKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL3F0ZXN0L2xpYnF0ZXN0 LmMgYi90ZXN0cy9xdGVzdC9saWJxdGVzdC5jCmluZGV4IDU4ZjU4ZTFlY2UuLmJhMTkwMTE3Mzcg MTAwNjQ0Ci0tLSBhL3Rlc3RzL3F0ZXN0L2xpYnF0ZXN0LmMKKysrIGIvdGVzdHMvcXRlc3QvbGli cXRlc3QuYwpAQCAtNCwxMSArNCwxMyBAQAogICogQ29weXJpZ2h0IElCTSwgQ29ycC4gMjAxMgog ICogQ29weXJpZ2h0IFJlZCBIYXQsIEluYy4gMjAxMgogICogQ29weXJpZ2h0IFNVU0UgTElOVVgg UHJvZHVjdHMgR21iSCAyMDEzCisgKiBDb3B5cmlnaHQgQ29weXJpZ2h0IChjKSBDb2lieSBYdQog ICoKICAqIEF1dGhvcnM6CiAgKiAgQW50aG9ueSBMaWd1b3JpICAgPGFsaWd1b3JpQHVzLmlibS5j b20+CiAgKiAgUGFvbG8gQm9uemluaSAgICAgPHBib256aW5pQHJlZGhhdC5jb20+CiAgKiAgQW5k cmVhcyBGw6RyYmVyICAgIDxhZmFlcmJlckBzdXNlLmRlPgorICogIENvaWJ5IFh1ICAgICAgICAg IDxjb2lieS54dUBnbWFpbC5jb20+CiAgKgogICogVGhpcyB3b3JrIGlzIGxpY2Vuc2VkIHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCwgdmVyc2lvbiAyIG9yIGxhdGVyLgogICogU2VlIHRo ZSBDT1BZSU5HIGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCkBAIC01Miw4ICs1NCw3 IEBAIHR5cGVkZWYgc3RydWN0IFFUZXN0Q2xpZW50VHJhbnNwb3J0T3BzIHsKICAgICBRVGVzdFJl Y3ZGbiAgICAgcmVjdl9saW5lOyAvKiBmb3IgcmVjZWl2aW5nIHF0ZXN0IGNvbW1hbmQgcmVzcG9u c2VzICovCiB9IFFUZXN0VHJhbnNwb3J0T3BzOwogCi1zdHJ1Y3QgUVRlc3RTdGF0ZQoteworc3Ry dWN0IFFUZXN0U3RhdGUgewogICAgIGludCBmZDsKICAgICBpbnQgcW1wX2ZkOwogICAgIHBpZF90 IHFlbXVfcGlkOyAgLyogb3VyIGNoaWxkIFFFTVUgcHJvY2VzcyAqLwpAQCAtNjA4LDYgKzYwOSwz NyBAQCBRRGljdCAqcXRlc3RfcW1wX3JlY2VpdmUoUVRlc3RTdGF0ZSAqcykKICAgICByZXR1cm4g cW1wX2ZkX3JlY2VpdmUocy0+cW1wX2ZkKTsKIH0KIAorUVRlc3RTdGF0ZSAqcXRlc3RfY3JlYXRl X3N0YXRlX3dpdGhfcW1wX2ZkKGludCBmZCkKK3sKKyAgICBRVGVzdFN0YXRlICpxbXBfdGVzdF9z dGF0ZSA9IGdfbmV3MChRVGVzdFN0YXRlLCAxKTsKKyAgICBxbXBfdGVzdF9zdGF0ZS0+cW1wX2Zk ID0gZmQ7CisgICAgcmV0dXJuIHFtcF90ZXN0X3N0YXRlOworfQorCitpbnQgcXRlc3Rfc29ja2V0 X2NsaWVudChjaGFyICpzZXJ2ZXJfc29ja2V0X3BhdGgpCit7CisgICAgc3RydWN0IHNvY2thZGRy X3VuIHNlcnZfYWRkcjsKKyAgICBpbnQgc29jazsKKyAgICBpbnQgcmV0OworICAgIGludCByZXRy aWVzID0gMDsKKyAgICBzb2NrID0gc29ja2V0KFBGX1VOSVgsIFNPQ0tfU1RSRUFNLCAwKTsKKyAg ICBnX2Fzc2VydF9jbXBpbnQoc29jaywgIT0sIC0xKTsKKyAgICBzZXJ2X2FkZHIuc3VuX2ZhbWls eSA9IEFGX1VOSVg7CisgICAgc25wcmludGYoc2Vydl9hZGRyLnN1bl9wYXRoLCBzaXplb2Yoc2Vy dl9hZGRyLnN1bl9wYXRoKSwgIiVzIiwKKyAgICAgICAgICAgICBzZXJ2ZXJfc29ja2V0X3BhdGgp OworCisgICAgZm9yIChyZXRyaWVzID0gMDsgcmV0cmllcyA8IDM7IHJldHJpZXMrKykgeworICAg ICAgICByZXQgPSBjb25uZWN0KHNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2Vydl9hZGRyLCBz aXplb2Yoc2Vydl9hZGRyKSk7CisgICAgICAgIGlmIChyZXQgPT0gMCkgeworICAgICAgICAgICAg YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZ191c2xlZXAoR19VU0VDX1BFUl9TRUMpOworICAg IH0KKworICAgIGdfYXNzZXJ0X2NtcGludChyZXQsID09LCAwKTsKKyAgICByZXR1cm4gc29jazsK K30KKwogLyoqCiAgKiBBbGxvdyB1c2VycyB0byBzZW5kIGEgbWVzc2FnZSB3aXRob3V0IHdhaXRp bmcgZm9yIHRoZSByZXBseSwKICAqIGluIHRoZSBjYXNlIHRoYXQgdGhleSBjaG9vc2UgdG8gZGlz Y2FyZCBhbGwgcmVwbGllcyB1cCB1bnRpbApkaWZmIC0tZ2l0IGEvdGVzdHMvcXRlc3Qvdmhvc3Qt dXNlci1ibGstdGVzdC5jIGIvdGVzdHMvcXRlc3Qvdmhvc3QtdXNlci1ibGstdGVzdC5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmQ0Y2NhYzZiNTQKLS0tIC9kZXYvbnVs bAorKysgYi90ZXN0cy9xdGVzdC92aG9zdC11c2VyLWJsay10ZXN0LmMKQEAgLTAsMCArMSw3NTEg QEAKKy8qCisgKiBRVGVzdCB0ZXN0Y2FzZSBmb3IgVmhvc3QtdXNlciBCbG9jayBEZXZpY2UKKyAq CisgKiBCYXNlZCBvbiB0ZXN0cy9xdGVzdC8vdmlydGlvLWJsay10ZXN0LmMKKworICogQ29weXJp Z2h0IChjKSAyMDE0IFNVU0UgTElOVVggUHJvZHVjdHMgR21iSAorICogQ29weXJpZ2h0IChjKSAy MDE0IE1hcmMgTWFyw60KKyAqIENvcHlyaWdodCAoYykgMjAyMCBDb2lieSBYdQorICoKKyAqIFRo aXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHUEwsIHZlcnNp b24gMiBvciBsYXRlci4KKyAqIFNlZSB0aGUgQ09QWUlORyBmaWxlIGluIHRoZSB0b3AtbGV2ZWwg ZGlyZWN0b3J5LgorICovCisKKyNpbmNsdWRlICJxZW11L29zZGVwLmgiCisjaW5jbHVkZSAibGli cXRlc3Qtc2luZ2xlLmgiCisjaW5jbHVkZSAicWVtdS9ic3dhcC5oIgorI2luY2x1ZGUgInFlbXUv bW9kdWxlLmgiCisjaW5jbHVkZSAic3RhbmRhcmQtaGVhZGVycy9saW51eC92aXJ0aW9fYmxrLmgi CisjaW5jbHVkZSAic3RhbmRhcmQtaGVhZGVycy9saW51eC92aXJ0aW9fcGNpLmgiCisjaW5jbHVk ZSAibGlicW9zL3FncmFwaC5oIgorI2luY2x1ZGUgImxpYnFvcy92aG9zdC11c2VyLWJsay5oIgor I2luY2x1ZGUgImxpYnFvcy9saWJxb3MtcGMuaCIKKworI2RlZmluZSBURVNUX0lNQUdFX1NJWkUg ICAgICAgICAoNjQgKiAxMDI0ICogMTAyNCkKKyNkZWZpbmUgUVZJUlRJT19CTEtfVElNRU9VVF9V UyAgKDMwICogMTAwMCAqIDEwMDApCisjZGVmaW5lIFBDSV9TTE9UX0hQICAgICAgICAgICAgIDB4 MDYKKwordHlwZWRlZiBzdHJ1Y3QgUVZpcnRpb0Jsa1JlcSB7CisgICAgdWludDMyX3QgdHlwZTsK KyAgICB1aW50MzJfdCBpb3ByaW87CisgICAgdWludDY0X3Qgc2VjdG9yOworICAgIGNoYXIgKmRh dGE7CisgICAgdWludDhfdCBzdGF0dXM7Cit9IFFWaXJ0aW9CbGtSZXE7CisKKyNpZmRlZiBIT1NU X1dPUkRTX0JJR0VORElBTgorc3RhdGljIGNvbnN0IGJvb2wgaG9zdF9pc19iaWdfZW5kaWFuID0g dHJ1ZTsKKyNlbHNlCitzdGF0aWMgY29uc3QgYm9vbCBob3N0X2lzX2JpZ19lbmRpYW47IC8qIGZh bHNlICovCisjZW5kaWYKKworc3RhdGljIGlubGluZSB2b2lkIHZpcnRpb19ibGtfZml4X3JlcXVl c3QoUVZpcnRpb0RldmljZSAqZCwgUVZpcnRpb0Jsa1JlcSAqcmVxKQoreworICAgIGlmIChxdmly dGlvX2lzX2JpZ19lbmRpYW4oZCkgIT0gaG9zdF9pc19iaWdfZW5kaWFuKSB7CisgICAgICAgIHJl cS0+dHlwZSA9IGJzd2FwMzIocmVxLT50eXBlKTsKKyAgICAgICAgcmVxLT5pb3ByaW8gPSBic3dh cDMyKHJlcS0+aW9wcmlvKTsKKyAgICAgICAgcmVxLT5zZWN0b3IgPSBic3dhcDY0KHJlcS0+c2Vj dG9yKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB2aXJ0aW9fYmxrX2ZpeF9kd3pf aGRyKFFWaXJ0aW9EZXZpY2UgKmQsCisgICAgc3RydWN0IHZpcnRpb19ibGtfZGlzY2FyZF93cml0 ZV96ZXJvZXMgKmR3el9oZHIpCit7CisgICAgaWYgKHF2aXJ0aW9faXNfYmlnX2VuZGlhbihkKSAh PSBob3N0X2lzX2JpZ19lbmRpYW4pIHsKKyAgICAgICAgZHd6X2hkci0+c2VjdG9yID0gYnN3YXA2 NChkd3pfaGRyLT5zZWN0b3IpOworICAgICAgICBkd3pfaGRyLT5udW1fc2VjdG9ycyA9IGJzd2Fw MzIoZHd6X2hkci0+bnVtX3NlY3RvcnMpOworICAgICAgICBkd3pfaGRyLT5mbGFncyA9IGJzd2Fw MzIoZHd6X2hkci0+ZmxhZ3MpOworICAgIH0KK30KKworc3RhdGljIHVpbnQ2NF90IHZpcnRpb19i bGtfcmVxdWVzdChRR3Vlc3RBbGxvY2F0b3IgKmFsbG9jLCBRVmlydGlvRGV2aWNlICpkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVmlydGlvQmxrUmVxICpyZXEsIHVpbnQ2 NF90IGRhdGFfc2l6ZSkKK3sKKyAgICB1aW50NjRfdCBhZGRyOworICAgIHVpbnQ4X3Qgc3RhdHVz ID0gMHhGRjsKKyAgICBRVGVzdFN0YXRlICpxdHMgPSBnbG9iYWxfcXRlc3Q7CisKKyAgICBzd2l0 Y2ggKHJlcS0+dHlwZSkgeworICAgIGNhc2UgVklSVElPX0JMS19UX0lOOgorICAgIGNhc2UgVklS VElPX0JMS19UX09VVDoKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChkYXRhX3NpemUgJSA1MTIs ID09LCAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWSVJUSU9fQkxLX1RfRElTQ0FSRDoK KyAgICBjYXNlIFZJUlRJT19CTEtfVF9XUklURV9aRVJPRVM6CisgICAgICAgIGdfYXNzZXJ0X2Nt cHVpbnQoZGF0YV9zaXplICUKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0 IHZpcnRpb19ibGtfZGlzY2FyZF93cml0ZV96ZXJvZXMpLCA9PSwgMCk7CisgICAgICAgIGJyZWFr OworICAgIGRlZmF1bHQ6CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoZGF0YV9zaXplLCA9PSwg MCk7CisgICAgfQorCisgICAgYWRkciA9IGd1ZXN0X2FsbG9jKGFsbG9jLCBzaXplb2YoKnJlcSkg KyBkYXRhX3NpemUpOworCisgICAgdmlydGlvX2Jsa19maXhfcmVxdWVzdChkLCByZXEpOworCisg ICAgcXRlc3RfbWVtd3JpdGUocXRzLCBhZGRyLCByZXEsIDE2KTsKKyAgICBxdGVzdF9tZW13cml0 ZShxdHMsIGFkZHIgKyAxNiwgcmVxLT5kYXRhLCBkYXRhX3NpemUpOworICAgIHF0ZXN0X21lbXdy aXRlKHF0cywgYWRkciArIDE2ICsgZGF0YV9zaXplLCAmc3RhdHVzLCBzaXplb2Yoc3RhdHVzKSk7 CisKKyAgICByZXR1cm4gYWRkcjsKK30KKworLyogUmV0dXJucyB0aGUgcmVxdWVzdCB2aXJ0cXVl dWUgc28gdGhlIGNhbGxlciBjYW4gcGVyZm9ybSBmdXJ0aGVyIHRlc3RzICovCitzdGF0aWMgUVZp cnRRdWV1ZSAqdGVzdF9iYXNpYyhRVmlydGlvRGV2aWNlICpkZXYsIFFHdWVzdEFsbG9jYXRvciAq YWxsb2MpCit7CisgICAgUVZpcnRpb0Jsa1JlcSByZXE7CisgICAgdWludDY0X3QgcmVxX2FkZHI7 CisgICAgdWludDY0X3QgY2FwYWNpdHk7CisgICAgdWludDY0X3QgZmVhdHVyZXM7CisgICAgdWlu dDMyX3QgZnJlZV9oZWFkOworICAgIHVpbnQ4X3Qgc3RhdHVzOworICAgIGNoYXIgKmRhdGE7Cisg ICAgUVRlc3RTdGF0ZSAqcXRzID0gZ2xvYmFsX3F0ZXN0OworICAgIFFWaXJ0UXVldWUgKnZxOwor CisgICAgZmVhdHVyZXMgPSBxdmlydGlvX2dldF9mZWF0dXJlcyhkZXYpOworICAgIGZlYXR1cmVz ID0gZmVhdHVyZXMgJiB+KFFWSVJUSU9fRl9CQURfRkVBVFVSRSB8CisgICAgICAgICAgICAgICAg ICAgICgxdSA8PCBWSVJUSU9fUklOR19GX0lORElSRUNUX0RFU0MpIHwKKyAgICAgICAgICAgICAg ICAgICAgKDF1IDw8IFZJUlRJT19SSU5HX0ZfRVZFTlRfSURYKSB8CisgICAgICAgICAgICAgICAg ICAgICgxdSA8PCBWSVJUSU9fQkxLX0ZfU0NTSSkpOworICAgIHF2aXJ0aW9fc2V0X2ZlYXR1cmVz KGRldiwgZmVhdHVyZXMpOworCisgICAgY2FwYWNpdHkgPSBxdmlydGlvX2NvbmZpZ19yZWFkcShk ZXYsIDApOworICAgIGdfYXNzZXJ0X2NtcGludChjYXBhY2l0eSwgPT0sIFRFU1RfSU1BR0VfU0la RSAvIDUxMik7CisKKyAgICB2cSA9IHF2aXJ0cXVldWVfc2V0dXAoZGV2LCBhbGxvYywgMCk7CisK KyAgICBxdmlydGlvX3NldF9kcml2ZXJfb2soZGV2KTsKKworICAgIC8qIFdyaXRlIGFuZCByZWFk IHdpdGggMyBkZXNjcmlwdG9yIGxheW91dCAqLworICAgIC8qIFdyaXRlIHJlcXVlc3QgKi8KKyAg ICByZXEudHlwZSA9IFZJUlRJT19CTEtfVF9PVVQ7CisgICAgcmVxLmlvcHJpbyA9IDE7CisgICAg cmVxLnNlY3RvciA9IDA7CisgICAgcmVxLmRhdGEgPSBnX21hbGxvYzAoNTEyKTsKKyAgICBzdHJj cHkocmVxLmRhdGEsICJURVNUIik7CisKKyAgICByZXFfYWRkciA9IHZpcnRpb19ibGtfcmVxdWVz dChhbGxvYywgZGV2LCAmcmVxLCA1MTIpOworCisgICAgZ19mcmVlKHJlcS5kYXRhKTsKKworICAg IGZyZWVfaGVhZCA9IHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyLCAxNiwgZmFsc2Us IHRydWUpOworICAgIHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyICsgMTYsIDUxMiwg ZmFsc2UsIHRydWUpOworICAgIHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyICsgNTI4 LCAxLCB0cnVlLCBmYWxzZSk7CisKKyAgICBxdmlydHF1ZXVlX2tpY2socXRzLCBkZXYsIHZxLCBm cmVlX2hlYWQpOworCisgICAgcXZpcnRpb193YWl0X3VzZWRfZWxlbShxdHMsIGRldiwgdnEsIGZy ZWVfaGVhZCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFFWSVJUSU9fQkxLX1RJ TUVPVVRfVVMpOworICAgIHN0YXR1cyA9IHJlYWRiKHJlcV9hZGRyICsgNTI4KTsKKyAgICBnX2Fz c2VydF9jbXBpbnQoc3RhdHVzLCA9PSwgMCk7CisKKyAgICBndWVzdF9mcmVlKGFsbG9jLCByZXFf YWRkcik7CisKKyAgICAvKiBSZWFkIHJlcXVlc3QgKi8KKyAgICByZXEudHlwZSA9IFZJUlRJT19C TEtfVF9JTjsKKyAgICByZXEuaW9wcmlvID0gMTsKKyAgICByZXEuc2VjdG9yID0gMDsKKyAgICBy ZXEuZGF0YSA9IGdfbWFsbG9jMCg1MTIpOworCisgICAgcmVxX2FkZHIgPSB2aXJ0aW9fYmxrX3Jl cXVlc3QoYWxsb2MsIGRldiwgJnJlcSwgNTEyKTsKKworICAgIGdfZnJlZShyZXEuZGF0YSk7CisK KyAgICBmcmVlX2hlYWQgPSBxdmlydHF1ZXVlX2FkZChxdHMsIHZxLCByZXFfYWRkciwgMTYsIGZh bHNlLCB0cnVlKTsKKyAgICBxdmlydHF1ZXVlX2FkZChxdHMsIHZxLCByZXFfYWRkciArIDE2LCA1 MTIsIHRydWUsIHRydWUpOworICAgIHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyICsg NTI4LCAxLCB0cnVlLCBmYWxzZSk7CisKKyAgICBxdmlydHF1ZXVlX2tpY2socXRzLCBkZXYsIHZx LCBmcmVlX2hlYWQpOworCisgICAgcXZpcnRpb193YWl0X3VzZWRfZWxlbShxdHMsIGRldiwgdnEs IGZyZWVfaGVhZCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFFWSVJUSU9fQkxL X1RJTUVPVVRfVVMpOworICAgIHN0YXR1cyA9IHJlYWRiKHJlcV9hZGRyICsgNTI4KTsKKyAgICBn X2Fzc2VydF9jbXBpbnQoc3RhdHVzLCA9PSwgMCk7CisKKyAgICBkYXRhID0gZ19tYWxsb2MwKDUx Mik7CisgICAgcXRlc3RfbWVtcmVhZChxdHMsIHJlcV9hZGRyICsgMTYsIGRhdGEsIDUxMik7Cisg ICAgZ19hc3NlcnRfY21wc3RyKGRhdGEsID09LCAiVEVTVCIpOworICAgIGdfZnJlZShkYXRhKTsK KworICAgIGd1ZXN0X2ZyZWUoYWxsb2MsIHJlcV9hZGRyKTsKKworICAgIGlmIChmZWF0dXJlcyAm ICgxdSA8PCBWSVJUSU9fQkxLX0ZfV1JJVEVfWkVST0VTKSkgeworICAgICAgICBzdHJ1Y3Qgdmly dGlvX2Jsa19kaXNjYXJkX3dyaXRlX3plcm9lcyBkd3pfaGRyOworICAgICAgICB2b2lkICpleHBl Y3RlZDsKKworICAgICAgICAvKgorICAgICAgICAgKiBXUklURV9aRVJPRVMgcmVxdWVzdCBvbiB0 aGUgc2FtZSBzZWN0b3Igb2YgcHJldmlvdXMgdGVzdCB3aGVyZQorICAgICAgICAgKiB3ZSB3cm90 ZSAiVEVTVCIuCisgICAgICAgICAqLworICAgICAgICByZXEudHlwZSA9IFZJUlRJT19CTEtfVF9X UklURV9aRVJPRVM7CisgICAgICAgIHJlcS5kYXRhID0gKGNoYXIgKikgJmR3el9oZHI7CisgICAg ICAgIGR3el9oZHIuc2VjdG9yID0gMDsKKyAgICAgICAgZHd6X2hkci5udW1fc2VjdG9ycyA9IDE7 CisgICAgICAgIGR3el9oZHIuZmxhZ3MgPSAwOworCisgICAgICAgIHZpcnRpb19ibGtfZml4X2R3 el9oZHIoZGV2LCAmZHd6X2hkcik7CisKKyAgICAgICAgcmVxX2FkZHIgPSB2aXJ0aW9fYmxrX3Jl cXVlc3QoYWxsb2MsIGRldiwgJnJlcSwgc2l6ZW9mKGR3el9oZHIpKTsKKworICAgICAgICBmcmVl X2hlYWQgPSBxdmlydHF1ZXVlX2FkZChxdHMsIHZxLCByZXFfYWRkciwgMTYsIGZhbHNlLCB0cnVl KTsKKyAgICAgICAgcXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVxX2FkZHIgKyAxNiwgc2l6ZW9m KGR3el9oZHIpLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIHF2aXJ0cXVldWVfYWRkKHF0cywgdnEs IHJlcV9hZGRyICsgMTYgKyBzaXplb2YoZHd6X2hkciksIDEsIHRydWUsCisgICAgICAgICAgICAg ICAgICAgICAgIGZhbHNlKTsKKworICAgICAgICBxdmlydHF1ZXVlX2tpY2socXRzLCBkZXYsIHZx LCBmcmVlX2hlYWQpOworCisgICAgICAgIHF2aXJ0aW9fd2FpdF91c2VkX2VsZW0ocXRzLCBkZXYs IHZxLCBmcmVlX2hlYWQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVZJ UlRJT19CTEtfVElNRU9VVF9VUyk7CisgICAgICAgIHN0YXR1cyA9IHJlYWRiKHJlcV9hZGRyICsg MTYgKyBzaXplb2YoZHd6X2hkcikpOworICAgICAgICBnX2Fzc2VydF9jbXBpbnQoc3RhdHVzLCA9 PSwgMCk7CisKKyAgICAgICAgZ3Vlc3RfZnJlZShhbGxvYywgcmVxX2FkZHIpOworCisgICAgICAg IC8qIFJlYWQgcmVxdWVzdCB0byBjaGVjayBpZiB0aGUgc2VjdG9yIGNvbnRhaW5zIGFsbCB6ZXJv ZXMgKi8KKyAgICAgICAgcmVxLnR5cGUgPSBWSVJUSU9fQkxLX1RfSU47CisgICAgICAgIHJlcS5p b3ByaW8gPSAxOworICAgICAgICByZXEuc2VjdG9yID0gMDsKKyAgICAgICAgcmVxLmRhdGEgPSBn X21hbGxvYzAoNTEyKTsKKworICAgICAgICByZXFfYWRkciA9IHZpcnRpb19ibGtfcmVxdWVzdChh bGxvYywgZGV2LCAmcmVxLCA1MTIpOworCisgICAgICAgIGdfZnJlZShyZXEuZGF0YSk7CisKKyAg ICAgICAgZnJlZV9oZWFkID0gcXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVxX2FkZHIsIDE2LCBm YWxzZSwgdHJ1ZSk7CisgICAgICAgIHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9hZGRyICsg MTYsIDUxMiwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgIHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJl cV9hZGRyICsgNTI4LCAxLCB0cnVlLCBmYWxzZSk7CisKKyAgICAgICAgcXZpcnRxdWV1ZV9raWNr KHF0cywgZGV2LCB2cSwgZnJlZV9oZWFkKTsKKworICAgICAgICBxdmlydGlvX3dhaXRfdXNlZF9l bGVtKHF0cywgZGV2LCB2cSwgZnJlZV9oZWFkLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFWSVJUSU9fQkxLX1RJTUVPVVRfVVMpOworICAgICAgICBzdGF0dXMgPSByZWFk YihyZXFfYWRkciArIDUyOCk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGludChzdGF0dXMsID09LCAw KTsKKworICAgICAgICBkYXRhID0gZ19tYWxsb2MoNTEyKTsKKyAgICAgICAgZXhwZWN0ZWQgPSBn X21hbGxvYzAoNTEyKTsKKyAgICAgICAgcXRlc3RfbWVtcmVhZChxdHMsIHJlcV9hZGRyICsgMTYs IGRhdGEsIDUxMik7CisgICAgICAgIGdfYXNzZXJ0X2NtcG1lbShkYXRhLCA1MTIsIGV4cGVjdGVk LCA1MTIpOworICAgICAgICBnX2ZyZWUoZXhwZWN0ZWQpOworICAgICAgICBnX2ZyZWUoZGF0YSk7 CisKKyAgICAgICAgZ3Vlc3RfZnJlZShhbGxvYywgcmVxX2FkZHIpOworICAgIH0KKworICAgIGlm IChmZWF0dXJlcyAmICgxdSA8PCBWSVJUSU9fQkxLX0ZfRElTQ0FSRCkpIHsKKyAgICAgICAgc3Ry dWN0IHZpcnRpb19ibGtfZGlzY2FyZF93cml0ZV96ZXJvZXMgZHd6X2hkcjsKKworICAgICAgICBy ZXEudHlwZSA9IFZJUlRJT19CTEtfVF9ESVNDQVJEOworICAgICAgICByZXEuZGF0YSA9IChjaGFy ICopICZkd3pfaGRyOworICAgICAgICBkd3pfaGRyLnNlY3RvciA9IDA7CisgICAgICAgIGR3el9o ZHIubnVtX3NlY3RvcnMgPSAxOworICAgICAgICBkd3pfaGRyLmZsYWdzID0gMDsKKworICAgICAg ICB2aXJ0aW9fYmxrX2ZpeF9kd3pfaGRyKGRldiwgJmR3el9oZHIpOworCisgICAgICAgIHJlcV9h ZGRyID0gdmlydGlvX2Jsa19yZXF1ZXN0KGFsbG9jLCBkZXYsICZyZXEsIHNpemVvZihkd3pfaGRy KSk7CisKKyAgICAgICAgZnJlZV9oZWFkID0gcXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVxX2Fk ZHIsIDE2LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJl cV9hZGRyICsgMTYsIHNpemVvZihkd3pfaGRyKSwgZmFsc2UsIHRydWUpOworICAgICAgICBxdmly dHF1ZXVlX2FkZChxdHMsIHZxLCByZXFfYWRkciArIDE2ICsgc2l6ZW9mKGR3el9oZHIpLAorICAg ICAgICAgICAgICAgICAgICAgICAxLCB0cnVlLCBmYWxzZSk7CisKKyAgICAgICAgcXZpcnRxdWV1 ZV9raWNrKHF0cywgZGV2LCB2cSwgZnJlZV9oZWFkKTsKKworICAgICAgICBxdmlydGlvX3dhaXRf dXNlZF9lbGVtKHF0cywgZGV2LCB2cSwgZnJlZV9oZWFkLCBOVUxMLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFWSVJUSU9fQkxLX1RJTUVPVVRfVVMpOworICAgICAgICBzdGF0dXMg PSByZWFkYihyZXFfYWRkciArIDE2ICsgc2l6ZW9mKGR3el9oZHIpKTsKKyAgICAgICAgZ19hc3Nl cnRfY21waW50KHN0YXR1cywgPT0sIDApOworCisgICAgICAgIGd1ZXN0X2ZyZWUoYWxsb2MsIHJl cV9hZGRyKTsKKyAgICB9CisKKyAgICBpZiAoZmVhdHVyZXMgJiAoMXUgPDwgVklSVElPX0ZfQU5Z X0xBWU9VVCkpIHsKKyAgICAgICAgLyogV3JpdGUgYW5kIHJlYWQgd2l0aCAyIGRlc2NyaXB0b3Ig bGF5b3V0ICovCisgICAgICAgIC8qIFdyaXRlIHJlcXVlc3QgKi8KKyAgICAgICAgcmVxLnR5cGUg PSBWSVJUSU9fQkxLX1RfT1VUOworICAgICAgICByZXEuaW9wcmlvID0gMTsKKyAgICAgICAgcmVx LnNlY3RvciA9IDE7CisgICAgICAgIHJlcS5kYXRhID0gZ19tYWxsb2MwKDUxMik7CisgICAgICAg IHN0cmNweShyZXEuZGF0YSwgIlRFU1QiKTsKKworICAgICAgICByZXFfYWRkciA9IHZpcnRpb19i bGtfcmVxdWVzdChhbGxvYywgZGV2LCAmcmVxLCA1MTIpOworCisgICAgICAgIGdfZnJlZShyZXEu ZGF0YSk7CisKKyAgICAgICAgZnJlZV9oZWFkID0gcXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVx X2FkZHIsIDUyOCwgZmFsc2UsIHRydWUpOworICAgICAgICBxdmlydHF1ZXVlX2FkZChxdHMsIHZx LCByZXFfYWRkciArIDUyOCwgMSwgdHJ1ZSwgZmFsc2UpOworICAgICAgICBxdmlydHF1ZXVlX2tp Y2socXRzLCBkZXYsIHZxLCBmcmVlX2hlYWQpOworCisgICAgICAgIHF2aXJ0aW9fd2FpdF91c2Vk X2VsZW0ocXRzLCBkZXYsIHZxLCBmcmVlX2hlYWQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVZJUlRJT19CTEtfVElNRU9VVF9VUyk7CisgICAgICAgIHN0YXR1cyA9IHJl YWRiKHJlcV9hZGRyICsgNTI4KTsKKyAgICAgICAgZ19hc3NlcnRfY21waW50KHN0YXR1cywgPT0s IDApOworCisgICAgICAgIGd1ZXN0X2ZyZWUoYWxsb2MsIHJlcV9hZGRyKTsKKworICAgICAgICAv KiBSZWFkIHJlcXVlc3QgKi8KKyAgICAgICAgcmVxLnR5cGUgPSBWSVJUSU9fQkxLX1RfSU47Cisg ICAgICAgIHJlcS5pb3ByaW8gPSAxOworICAgICAgICByZXEuc2VjdG9yID0gMTsKKyAgICAgICAg cmVxLmRhdGEgPSBnX21hbGxvYzAoNTEyKTsKKworICAgICAgICByZXFfYWRkciA9IHZpcnRpb19i bGtfcmVxdWVzdChhbGxvYywgZGV2LCAmcmVxLCA1MTIpOworCisgICAgICAgIGdfZnJlZShyZXEu ZGF0YSk7CisKKyAgICAgICAgZnJlZV9oZWFkID0gcXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVx X2FkZHIsIDE2LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIHF2aXJ0cXVldWVfYWRkKHF0cywgdnEs IHJlcV9hZGRyICsgMTYsIDUxMywgdHJ1ZSwgZmFsc2UpOworCisgICAgICAgIHF2aXJ0cXVldWVf a2ljayhxdHMsIGRldiwgdnEsIGZyZWVfaGVhZCk7CisKKyAgICAgICAgcXZpcnRpb193YWl0X3Vz ZWRfZWxlbShxdHMsIGRldiwgdnEsIGZyZWVfaGVhZCwgTlVMTCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVklSVElPX0JMS19USU1FT1VUX1VTKTsKKyAgICAgICAgc3RhdHVzID0g cmVhZGIocmVxX2FkZHIgKyA1MjgpOworICAgICAgICBnX2Fzc2VydF9jbXBpbnQoc3RhdHVzLCA9 PSwgMCk7CisKKyAgICAgICAgZGF0YSA9IGdfbWFsbG9jMCg1MTIpOworICAgICAgICBxdGVzdF9t ZW1yZWFkKHF0cywgcmVxX2FkZHIgKyAxNiwgZGF0YSwgNTEyKTsKKyAgICAgICAgZ19hc3NlcnRf Y21wc3RyKGRhdGEsID09LCAiVEVTVCIpOworICAgICAgICBnX2ZyZWUoZGF0YSk7CisKKyAgICAg ICAgZ3Vlc3RfZnJlZShhbGxvYywgcmVxX2FkZHIpOworICAgIH0KKworICAgIHJldHVybiB2cTsK K30KKworc3RhdGljIHZvaWQgYmFzaWModm9pZCAqb2JqLCB2b2lkICpkYXRhLCBRR3Vlc3RBbGxv Y2F0b3IgKnRfYWxsb2MpCit7CisgICAgUVZob3N0VXNlckJsayAqYmxrX2lmID0gb2JqOworICAg IFFWaXJ0UXVldWUgKnZxOworCisgICAgdnEgPSB0ZXN0X2Jhc2ljKGJsa19pZi0+dmRldiwgdF9h bGxvYyk7CisgICAgcXZpcnRxdWV1ZV9jbGVhbnVwKGJsa19pZi0+dmRldi0+YnVzLCB2cSwgdF9h bGxvYyk7CisKK30KKworc3RhdGljIHZvaWQgaW5kaXJlY3Qodm9pZCAqb2JqLCB2b2lkICp1X2Rh dGEsIFFHdWVzdEFsbG9jYXRvciAqdF9hbGxvYykKK3sKKyAgICBRVmlydFF1ZXVlICp2cTsKKyAg ICBRVmhvc3RVc2VyQmxrICpibGtfaWYgPSBvYmo7CisgICAgUVZpcnRpb0RldmljZSAqZGV2ID0g YmxrX2lmLT52ZGV2OworICAgIFFWaXJ0aW9CbGtSZXEgcmVxOworICAgIFFWUmluZ0luZGlyZWN0 RGVzYyAqaW5kaXJlY3Q7CisgICAgdWludDY0X3QgcmVxX2FkZHI7CisgICAgdWludDY0X3QgY2Fw YWNpdHk7CisgICAgdWludDY0X3QgZmVhdHVyZXM7CisgICAgdWludDMyX3QgZnJlZV9oZWFkOwor ICAgIHVpbnQ4X3Qgc3RhdHVzOworICAgIGNoYXIgKmRhdGE7CisgICAgUVRlc3RTdGF0ZSAqcXRz ID0gZ2xvYmFsX3F0ZXN0OworCisgICAgZmVhdHVyZXMgPSBxdmlydGlvX2dldF9mZWF0dXJlcyhk ZXYpOworICAgIGdfYXNzZXJ0X2NtcGhleChmZWF0dXJlcyAmICgxdSA8PCBWSVJUSU9fUklOR19G X0lORElSRUNUX0RFU0MpLCAhPSwgMCk7CisgICAgZmVhdHVyZXMgPSBmZWF0dXJlcyAmIH4oUVZJ UlRJT19GX0JBRF9GRUFUVVJFIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMXUgPDwg VklSVElPX1JJTkdfRl9FVkVOVF9JRFgpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo MXUgPDwgVklSVElPX0JMS19GX1NDU0kpKTsKKyAgICBxdmlydGlvX3NldF9mZWF0dXJlcyhkZXYs IGZlYXR1cmVzKTsKKworICAgIGNhcGFjaXR5ID0gcXZpcnRpb19jb25maWdfcmVhZHEoZGV2LCAw KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoY2FwYWNpdHksID09LCBURVNUX0lNQUdFX1NJWkUgLyA1 MTIpOworCisgICAgdnEgPSBxdmlydHF1ZXVlX3NldHVwKGRldiwgdF9hbGxvYywgMCk7CisgICAg cXZpcnRpb19zZXRfZHJpdmVyX29rKGRldik7CisKKyAgICAvKiBXcml0ZSByZXF1ZXN0ICovCisg ICAgcmVxLnR5cGUgPSBWSVJUSU9fQkxLX1RfT1VUOworICAgIHJlcS5pb3ByaW8gPSAxOworICAg IHJlcS5zZWN0b3IgPSAwOworICAgIHJlcS5kYXRhID0gZ19tYWxsb2MwKDUxMik7CisgICAgc3Ry Y3B5KHJlcS5kYXRhLCAiVEVTVCIpOworCisgICAgcmVxX2FkZHIgPSB2aXJ0aW9fYmxrX3JlcXVl c3QodF9hbGxvYywgZGV2LCAmcmVxLCA1MTIpOworCisgICAgZ19mcmVlKHJlcS5kYXRhKTsKKwor ICAgIGluZGlyZWN0ID0gcXZyaW5nX2luZGlyZWN0X2Rlc2Nfc2V0dXAocXRzLCBkZXYsIHRfYWxs b2MsIDIpOworICAgIHF2cmluZ19pbmRpcmVjdF9kZXNjX2FkZChkZXYsIHF0cywgaW5kaXJlY3Qs IHJlcV9hZGRyLCA1MjgsIGZhbHNlKTsKKyAgICBxdnJpbmdfaW5kaXJlY3RfZGVzY19hZGQoZGV2 LCBxdHMsIGluZGlyZWN0LCByZXFfYWRkciArIDUyOCwgMSwgdHJ1ZSk7CisgICAgZnJlZV9oZWFk ID0gcXZpcnRxdWV1ZV9hZGRfaW5kaXJlY3QocXRzLCB2cSwgaW5kaXJlY3QpOworICAgIHF2aXJ0 cXVldWVfa2ljayhxdHMsIGRldiwgdnEsIGZyZWVfaGVhZCk7CisKKyAgICBxdmlydGlvX3dhaXRf dXNlZF9lbGVtKHF0cywgZGV2LCB2cSwgZnJlZV9oZWFkLCBOVUxMLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVZJUlRJT19CTEtfVElNRU9VVF9VUyk7CisgICAgc3RhdHVzID0gcmVhZGIo cmVxX2FkZHIgKyA1MjgpOworICAgIGdfYXNzZXJ0X2NtcGludChzdGF0dXMsID09LCAwKTsKKwor ICAgIGdfZnJlZShpbmRpcmVjdCk7CisgICAgZ3Vlc3RfZnJlZSh0X2FsbG9jLCByZXFfYWRkcik7 CisKKyAgICAvKiBSZWFkIHJlcXVlc3QgKi8KKyAgICByZXEudHlwZSA9IFZJUlRJT19CTEtfVF9J TjsKKyAgICByZXEuaW9wcmlvID0gMTsKKyAgICByZXEuc2VjdG9yID0gMDsKKyAgICByZXEuZGF0 YSA9IGdfbWFsbG9jMCg1MTIpOworICAgIHN0cmNweShyZXEuZGF0YSwgIlRFU1QiKTsKKworICAg IHJlcV9hZGRyID0gdmlydGlvX2Jsa19yZXF1ZXN0KHRfYWxsb2MsIGRldiwgJnJlcSwgNTEyKTsK KworICAgIGdfZnJlZShyZXEuZGF0YSk7CisKKyAgICBpbmRpcmVjdCA9IHF2cmluZ19pbmRpcmVj dF9kZXNjX3NldHVwKHF0cywgZGV2LCB0X2FsbG9jLCAyKTsKKyAgICBxdnJpbmdfaW5kaXJlY3Rf ZGVzY19hZGQoZGV2LCBxdHMsIGluZGlyZWN0LCByZXFfYWRkciwgMTYsIGZhbHNlKTsKKyAgICBx dnJpbmdfaW5kaXJlY3RfZGVzY19hZGQoZGV2LCBxdHMsIGluZGlyZWN0LCByZXFfYWRkciArIDE2 LCA1MTMsIHRydWUpOworICAgIGZyZWVfaGVhZCA9IHF2aXJ0cXVldWVfYWRkX2luZGlyZWN0KHF0 cywgdnEsIGluZGlyZWN0KTsKKyAgICBxdmlydHF1ZXVlX2tpY2socXRzLCBkZXYsIHZxLCBmcmVl X2hlYWQpOworCisgICAgcXZpcnRpb193YWl0X3VzZWRfZWxlbShxdHMsIGRldiwgdnEsIGZyZWVf aGVhZCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFFWSVJUSU9fQkxLX1RJTUVP VVRfVVMpOworICAgIHN0YXR1cyA9IHJlYWRiKHJlcV9hZGRyICsgNTI4KTsKKyAgICBnX2Fzc2Vy dF9jbXBpbnQoc3RhdHVzLCA9PSwgMCk7CisKKyAgICBkYXRhID0gZ19tYWxsb2MwKDUxMik7Cisg ICAgcXRlc3RfbWVtcmVhZChxdHMsIHJlcV9hZGRyICsgMTYsIGRhdGEsIDUxMik7CisgICAgZ19h c3NlcnRfY21wc3RyKGRhdGEsID09LCAiVEVTVCIpOworICAgIGdfZnJlZShkYXRhKTsKKworICAg IGdfZnJlZShpbmRpcmVjdCk7CisgICAgZ3Vlc3RfZnJlZSh0X2FsbG9jLCByZXFfYWRkcik7Cisg ICAgcXZpcnRxdWV1ZV9jbGVhbnVwKGRldi0+YnVzLCB2cSwgdF9hbGxvYyk7Cit9CisKK3N0YXRp YyB2b2lkIGlkeCh2b2lkICpvYmosIHZvaWQgKnVfZGF0YSwgUUd1ZXN0QWxsb2NhdG9yICp0X2Fs bG9jKQoreworICAgIFFWaXJ0UXVldWUgKnZxOworICAgIFFWaG9zdFVzZXJCbGtQQ0kgKmJsayA9 IG9iajsKKyAgICBRVmlydGlvUENJRGV2aWNlICpwZGV2ID0gJmJsay0+cGNpX3ZkZXY7CisgICAg UVZpcnRpb0RldmljZSAqZGV2ID0gJnBkZXYtPnZkZXY7CisgICAgUVZpcnRpb0Jsa1JlcSByZXE7 CisgICAgdWludDY0X3QgcmVxX2FkZHI7CisgICAgdWludDY0X3QgY2FwYWNpdHk7CisgICAgdWlu dDY0X3QgZmVhdHVyZXM7CisgICAgdWludDMyX3QgZnJlZV9oZWFkOworICAgIHVpbnQzMl90IHdy aXRlX2hlYWQ7CisgICAgdWludDMyX3QgZGVzY19pZHg7CisgICAgdWludDhfdCBzdGF0dXM7Cisg ICAgY2hhciAqZGF0YTsKKyAgICBRT1NHcmFwaE9iamVjdCAqYmxrX29iamVjdCA9IG9iajsKKyAg ICBRUENJRGV2aWNlICpwY2lfZGV2ID0gYmxrX29iamVjdC0+Z2V0X2RyaXZlcihibGtfb2JqZWN0 LCAicGNpLWRldmljZSIpOworICAgIFFUZXN0U3RhdGUgKnF0cyA9IGdsb2JhbF9xdGVzdDsKKwor ICAgIGlmIChxcGNpX2NoZWNrX2J1Z2d5X21zaShwY2lfZGV2KSkgeworICAgICAgICByZXR1cm47 CisgICAgfQorCisgICAgcXBjaV9tc2l4X2VuYWJsZShwZGV2LT5wZGV2KTsKKyAgICBxdmlydGlv X3BjaV9zZXRfbXNpeF9jb25maWd1cmF0aW9uX3ZlY3RvcihwZGV2LCB0X2FsbG9jLCAwKTsKKwor ICAgIGZlYXR1cmVzID0gcXZpcnRpb19nZXRfZmVhdHVyZXMoZGV2KTsKKyAgICBmZWF0dXJlcyA9 IGZlYXR1cmVzICYgfihRVklSVElPX0ZfQkFEX0ZFQVRVUkUgfAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICgxdSA8PCBWSVJUSU9fUklOR19GX0lORElSRUNUX0RFU0MpIHwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoMXUgPDwgVklSVElPX0ZfTk9USUZZX09OX0VNUFRZKSB8Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKDF1IDw8IFZJUlRJT19CTEtfRl9TQ1NJKSk7Cisg ICAgcXZpcnRpb19zZXRfZmVhdHVyZXMoZGV2LCBmZWF0dXJlcyk7CisKKyAgICBjYXBhY2l0eSA9 IHF2aXJ0aW9fY29uZmlnX3JlYWRxKGRldiwgMCk7CisgICAgZ19hc3NlcnRfY21waW50KGNhcGFj aXR5LCA9PSwgVEVTVF9JTUFHRV9TSVpFIC8gNTEyKTsKKworICAgIHZxID0gcXZpcnRxdWV1ZV9z ZXR1cChkZXYsIHRfYWxsb2MsIDApOworICAgIHF2aXJ0cXVldWVfcGNpX21zaXhfc2V0dXAocGRl diwgKFFWaXJ0UXVldWVQQ0kgKil2cSwgdF9hbGxvYywgMSk7CisKKyAgICBxdmlydGlvX3NldF9k cml2ZXJfb2soZGV2KTsKKworICAgIC8qIFdyaXRlIHJlcXVlc3QgKi8KKyAgICByZXEudHlwZSA9 IFZJUlRJT19CTEtfVF9PVVQ7CisgICAgcmVxLmlvcHJpbyA9IDE7CisgICAgcmVxLnNlY3RvciA9 IDA7CisgICAgcmVxLmRhdGEgPSBnX21hbGxvYzAoNTEyKTsKKyAgICBzdHJjcHkocmVxLmRhdGEs ICJURVNUIik7CisKKyAgICByZXFfYWRkciA9IHZpcnRpb19ibGtfcmVxdWVzdCh0X2FsbG9jLCBk ZXYsICZyZXEsIDUxMik7CisKKyAgICBnX2ZyZWUocmVxLmRhdGEpOworCisgICAgZnJlZV9oZWFk ID0gcXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVxX2FkZHIsIDE2LCBmYWxzZSwgdHJ1ZSk7Cisg ICAgcXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVxX2FkZHIgKyAxNiwgNTEyLCBmYWxzZSwgdHJ1 ZSk7CisgICAgcXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVxX2FkZHIgKyA1MjgsIDEsIHRydWUs IGZhbHNlKTsKKyAgICBxdmlydHF1ZXVlX2tpY2socXRzLCBkZXYsIHZxLCBmcmVlX2hlYWQpOwor CisgICAgcXZpcnRpb193YWl0X3VzZWRfZWxlbShxdHMsIGRldiwgdnEsIGZyZWVfaGVhZCwgTlVM TCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFFWSVJUSU9fQkxLX1RJTUVPVVRfVVMpOwor CisgICAgLyogV3JpdGUgcmVxdWVzdCAqLworICAgIHJlcS50eXBlID0gVklSVElPX0JMS19UX09V VDsKKyAgICByZXEuaW9wcmlvID0gMTsKKyAgICByZXEuc2VjdG9yID0gMTsKKyAgICByZXEuZGF0 YSA9IGdfbWFsbG9jMCg1MTIpOworICAgIHN0cmNweShyZXEuZGF0YSwgIlRFU1QiKTsKKworICAg IHJlcV9hZGRyID0gdmlydGlvX2Jsa19yZXF1ZXN0KHRfYWxsb2MsIGRldiwgJnJlcSwgNTEyKTsK KworICAgIGdfZnJlZShyZXEuZGF0YSk7CisKKyAgICAvKiBOb3RpZnkgYWZ0ZXIgcHJvY2Vzc2lu ZyB0aGUgdGhpcmQgcmVxdWVzdCAqLworICAgIHF2aXJ0cXVldWVfc2V0X3VzZWRfZXZlbnQocXRz LCB2cSwgMik7CisgICAgZnJlZV9oZWFkID0gcXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVxX2Fk ZHIsIDE2LCBmYWxzZSwgdHJ1ZSk7CisgICAgcXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwgcmVxX2Fk ZHIgKyAxNiwgNTEyLCBmYWxzZSwgdHJ1ZSk7CisgICAgcXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwg cmVxX2FkZHIgKyA1MjgsIDEsIHRydWUsIGZhbHNlKTsKKyAgICBxdmlydHF1ZXVlX2tpY2socXRz LCBkZXYsIHZxLCBmcmVlX2hlYWQpOworICAgIHdyaXRlX2hlYWQgPSBmcmVlX2hlYWQ7CisKKyAg ICAvKiBObyBub3RpZmljYXRpb24gZXhwZWN0ZWQgKi8KKyAgICBzdGF0dXMgPSBxdmlydGlvX3dh aXRfc3RhdHVzX2J5dGVfbm9faXNyKHF0cywgZGV2LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdnEsIHJlcV9hZGRyICsgNTI4LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVZJUlRJT19CTEtfVElNRU9VVF9VUyk7Cisg ICAgZ19hc3NlcnRfY21waW50KHN0YXR1cywgPT0sIDApOworCisgICAgZ3Vlc3RfZnJlZSh0X2Fs bG9jLCByZXFfYWRkcik7CisKKyAgICAvKiBSZWFkIHJlcXVlc3QgKi8KKyAgICByZXEudHlwZSA9 IFZJUlRJT19CTEtfVF9JTjsKKyAgICByZXEuaW9wcmlvID0gMTsKKyAgICByZXEuc2VjdG9yID0g MTsKKyAgICByZXEuZGF0YSA9IGdfbWFsbG9jMCg1MTIpOworCisgICAgcmVxX2FkZHIgPSB2aXJ0 aW9fYmxrX3JlcXVlc3QodF9hbGxvYywgZGV2LCAmcmVxLCA1MTIpOworCisgICAgZ19mcmVlKHJl cS5kYXRhKTsKKworICAgIGZyZWVfaGVhZCA9IHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9h ZGRyLCAxNiwgZmFsc2UsIHRydWUpOworICAgIHF2aXJ0cXVldWVfYWRkKHF0cywgdnEsIHJlcV9h ZGRyICsgMTYsIDUxMiwgdHJ1ZSwgdHJ1ZSk7CisgICAgcXZpcnRxdWV1ZV9hZGQocXRzLCB2cSwg cmVxX2FkZHIgKyA1MjgsIDEsIHRydWUsIGZhbHNlKTsKKworICAgIHF2aXJ0cXVldWVfa2ljayhx dHMsIGRldiwgdnEsIGZyZWVfaGVhZCk7CisKKyAgICAvKiBXZSBnZXQganVzdCBvbmUgbm90aWZp Y2F0aW9uIGZvciBib3RoIHJlcXVlc3RzICovCisgICAgcXZpcnRpb193YWl0X3VzZWRfZWxlbShx dHMsIGRldiwgdnEsIHdyaXRlX2hlYWQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVklSVElPX0JMS19USU1FT1VUX1VTKTsKKyAgICBnX2Fzc2VydChxdmlydHF1ZXVlX2dldF9i dWYocXRzLCB2cSwgJmRlc2NfaWR4LCBOVUxMKSk7CisgICAgZ19hc3NlcnRfY21waW50KGRlc2Nf aWR4LCA9PSwgZnJlZV9oZWFkKTsKKworICAgIHN0YXR1cyA9IHJlYWRiKHJlcV9hZGRyICsgNTI4 KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoc3RhdHVzLCA9PSwgMCk7CisKKyAgICBkYXRhID0gZ19t YWxsb2MwKDUxMik7CisgICAgcXRlc3RfbWVtcmVhZChxdHMsIHJlcV9hZGRyICsgMTYsIGRhdGEs IDUxMik7CisgICAgZ19hc3NlcnRfY21wc3RyKGRhdGEsID09LCAiVEVTVCIpOworICAgIGdfZnJl ZShkYXRhKTsKKworICAgIGd1ZXN0X2ZyZWUodF9hbGxvYywgcmVxX2FkZHIpOworCisgICAgLyog RW5kIHRlc3QgKi8KKyAgICBxcGNpX21zaXhfZGlzYWJsZShwZGV2LT5wZGV2KTsKKworICAgIHF2 aXJ0cXVldWVfY2xlYW51cChkZXYtPmJ1cywgdnEsIHRfYWxsb2MpOworfQorCitzdGF0aWMgdm9p ZCBwY2lfaG90cGx1Zyh2b2lkICpvYmosIHZvaWQgKmRhdGEsIFFHdWVzdEFsbG9jYXRvciAqdF9h bGxvYykKK3sKKyAgICBRVmlydGlvUENJRGV2aWNlICpkZXYxID0gb2JqOworICAgIFFWaXJ0aW9Q Q0lEZXZpY2UgKmRldjsKKyAgICBRVGVzdFN0YXRlICpxdHMgPSBkZXYxLT5wZGV2LT5idXMtPnF0 czsKKworICAgIC8qIHBsdWcgc2Vjb25kYXJ5IGRpc2sgKi8KKyAgICBxdGVzdF9xbXBfZGV2aWNl X2FkZChxdHMsICJ2aG9zdC11c2VyLWJsay1wY2kiLCAiZHJ2MSIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgInsnYWRkcic6ICVzLCAnY2hhcmRldic6ICdjaGFyMid9IiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJpbmdpZnkoUENJX1NMT1RfSFApICIuMCIpOworCisgICAgZGV2ID0g dmlydGlvX3BjaV9uZXcoZGV2MS0+cGRldi0+YnVzLAorICAgICAgICAgICAgICAgICAgICAgICAg ICYoUVBDSUFkZHJlc3MpIHsgLmRldmZuID0gUVBDSV9ERVZGTihQQ0lfU0xPVF9IUCwgMCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICBnX2Fzc2VydF9u b25udWxsKGRldik7CisgICAgZ19hc3NlcnRfY21waW50KGRldi0+dmRldi5kZXZpY2VfdHlwZSwg PT0sIFZJUlRJT19JRF9CTE9DSyk7CisgICAgcXZpcnRpb19wY2lfZGV2aWNlX2Rpc2FibGUoZGV2 KTsKKyAgICBxb3Nfb2JqZWN0X2Rlc3Ryb3koKFFPU0dyYXBoT2JqZWN0ICopZGV2KTsKKworICAg IC8qIHVucGx1ZyBzZWNvbmRhcnkgZGlzayAqLworICAgIHFwY2lfdW5wbHVnX2FjcGlfZGV2aWNl X3Rlc3QocXRzLCAiZHJ2MSIsIFBDSV9TTE9UX0hQKTsKK30KKworLyoKKyAqIENoZWNrIHRoYXQg c2V0dGluZyB0aGUgdnJpbmcgYWRkciBvbiBhIG5vbi1leGlzdGVudCB2aXJ0cXVldWUgZG9lcwor ICogbm90IGNyYXNoLgorICovCitzdGF0aWMgdm9pZCB0ZXN0X25vbmV4aXN0ZW50X3ZpcnRxdWV1 ZSh2b2lkICpvYmosIHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRR3Vlc3RBbGxvY2F0b3IgKnRfYWxsb2MpCit7CisgICAgUVZob3N0VXNlckJsa1BD SSAqYmxrID0gb2JqOworICAgIFFWaXJ0aW9QQ0lEZXZpY2UgKnBkZXYgPSAmYmxrLT5wY2lfdmRl djsKKyAgICBRUENJQmFyIGJhcjA7CisgICAgUVBDSURldmljZSAqZGV2OworCisgICAgZGV2ID0g cXBjaV9kZXZpY2VfZmluZChwZGV2LT5wZGV2LT5idXMsIFFQQ0lfREVWRk4oNCwgMCkpOworICAg IGdfYXNzZXJ0KGRldiAhPSBOVUxMKTsKKyAgICBxcGNpX2RldmljZV9lbmFibGUoZGV2KTsKKwor ICAgIGJhcjAgPSBxcGNpX2lvbWFwKGRldiwgMCwgTlVMTCk7CisKKyAgICBxcGNpX2lvX3dyaXRl YihkZXYsIGJhcjAsIFZJUlRJT19QQ0lfUVVFVUVfU0VMLCAyKTsKKyAgICBxcGNpX2lvX3dyaXRl bChkZXYsIGJhcjAsIFZJUlRJT19QQ0lfUVVFVUVfUEZOLCAxKTsKKworICAgIGdfZnJlZShkZXYp OworfQorCitzdGF0aWMgY29uc3QgY2hhciAqcXRlc3RfcWVtdV9zdG9yYWdlX2RhZW1vbl9iaW5h cnkodm9pZCkKK3sKKyAgICBjb25zdCBjaGFyICpxZW11X3N0b3JhZ2VfZGFlbW9uX2JpbjsKKwor ICAgIHFlbXVfc3RvcmFnZV9kYWVtb25fYmluID0gZ2V0ZW52KCJRVEVTVF9RRU1VX1NUT1JBR0Vf REFFTU9OX0JJTkFSWSIpOworICAgIGlmICghcWVtdV9zdG9yYWdlX2RhZW1vbl9iaW4pIHsKKyAg ICAgICAgZnByaW50ZihzdGRlcnIsICJFbnZpcm9ubWVudCB2YXJpYWJsZSAiCisgICAgICAgICAg ICAgICAgICAgICAgICAiUVRFU1RfUUVNVV9TVE9SQUdFX0RBRU1PTl9CSU5BUlkgcmVxdWlyZWRc biIpOworICAgICAgICBleGl0KDApOworICAgIH0KKworICAgIHJldHVybiBxZW11X3N0b3JhZ2Vf ZGFlbW9uX2JpbjsKK30KKworc3RhdGljIHZvaWQgZHJpdmVfZGVzdHJveSh2b2lkICpwYXRoKQor eworICAgIHVubGluayhwYXRoKTsKKyAgICBnX2ZyZWUocGF0aCk7CisgICAgcW9zX2ludmFsaWRh dGVfY29tbWFuZF9saW5lKCk7Cit9CisKK3N0YXRpYyBjaGFyICpkcml2ZV9jcmVhdGUodm9pZCkK K3sKKyAgICBpbnQgZmQsIHJldDsKKyAgICAvKiogdmhvc3QtdXNlci1ibGsgd29uJ3QgcmVjb2du aXplIGRyaXZlIGxvY2F0ZWQgaW4gL3RtcCAqLworICAgIGNoYXIgKnRfcGF0aCA9IGdfc3RyZHVw KCJxdGVzdC5YWFhYWFgiKTsKKworICAgIC8qKiBDcmVhdGUgYSB0ZW1wb3JhcnkgcmF3IGltYWdl ICovCisgICAgZmQgPSBta3N0ZW1wKHRfcGF0aCk7CisgICAgZ19hc3NlcnRfY21waW50KGZkLCA+ PSwgMCk7CisgICAgcmV0ID0gZnRydW5jYXRlKGZkLCBURVNUX0lNQUdFX1NJWkUpOworICAgIGdf YXNzZXJ0X2NtcGludChyZXQsID09LCAwKTsKKyAgICBjbG9zZShmZCk7CisKKyAgICBnX3Rlc3Rf cXVldWVfZGVzdHJveShkcml2ZV9kZXN0cm95LCB0X3BhdGgpOworICAgIHJldHVybiB0X3BhdGg7 Cit9CisKK3N0YXRpYyBjaGFyIHNvY2tfcGF0aF90ZW1wYXRlW10gPSAiL3RtcC9xdGVzdC52aG9z dF91c2VyX2Jsay5YWFhYWFgiOworc3RhdGljIGNoYXIgcW1wX3NvY2tfcGF0aF90ZW1wYXRlW10g PSAiL3RtcC9xdGVzdC52aG9zdF91c2VyX2Jsay5xbXAuWFhYWFhYIjsKKworc3RhdGljIHZvaWQg cXVpdF9zdG9yYWdlX2RhZW1vbih2b2lkICpxbXBfdGVzdF9zdGF0ZSkKK3sKKyAgICBjb25zdCBj aGFyIHF1aXRfc3RyW10gPSAieyAnZXhlY3V0ZSc6ICdxdWl0JyB9IjsKKworICAgIC8qIEJlZm9y ZSBxdWl0aW5nIHN0b3JhdGUtZGFlbW9uLCBxdWl0IHFlbXUgdG8gYXZvaWQgZHViaW91cyBtZXNz YWdlcyAqLworICAgIHFvYmplY3RfdW5yZWYocXRlc3RfcW1wKGdsb2JhbF9xdGVzdCwgcXVpdF9z dHIpKTsKKworICAgIC8qCisgICAgICogR2l2ZSBzdG9yYWdlLWRhZW1vbiBlbm91Z2ggdGltZSB0 byB3YWtlIHVwJnRlcm1pbmF0ZQorICAgICAqIHZ1X2NsaWVudF90cmlwIGNvcm91dGluZSBzbyB0 aGUgQ29yb3V0aW5lIG9iamVjdCBjb3VsZAorICAgICAqIGJlIGNsZWFuZWQgdXAuIE90aGVyd2lz ZSBMZWFrU2FuaXRpemVyIHdvdWxkIGNvbXBsYWluCisgICAgICogYWJvdXQgbWVtb3J5IGxlYWtz LgorICAgICAqLworICAgIGdfdXNsZWVwKDEwMDApOworCisgICAgcW9iamVjdF91bnJlZihxdGVz dF9xbXAoKFFUZXN0U3RhdGUgKilxbXBfdGVzdF9zdGF0ZSwgcXVpdF9zdHIpKTsKKyAgICBnX2Zy ZWUocW1wX3Rlc3Rfc3RhdGUpOworfQorCitzdGF0aWMgY2hhciAqc3RhcnRfdmhvc3RfdXNlcl9i bGsoR1N0cmluZyAqY21kX2xpbmUsIGludCB2dXNfaW5zdGFuY2VzKQoreworICAgIGNvbnN0IGNo YXIgKnZob3N0X3VzZXJfYmxrX2JpbiA9IHF0ZXN0X3FlbXVfc3RvcmFnZV9kYWVtb25fYmluYXJ5 KCk7CisgICAgaW50IGZkLCBxbXBfZmQsIGk7CisgICAgUVRlc3RTdGF0ZSAqcW1wX3Rlc3Rfc3Rh dGU7CisgICAgZ2NoYXIgKmltZ19wYXRoOworICAgIGNoYXIgKnNvY2tfcGF0aCA9IE5VTEw7Cisg ICAgY2hhciAqcW1wX3NvY2tfcGF0aCA9IGdfc3RyZHVwKHFtcF9zb2NrX3BhdGhfdGVtcGF0ZSk7 CisgICAgR1N0cmluZyAqc3RvcmFnZV9kYWVtb25fY29tbWFuZCA9IGdfc3RyaW5nX25ldyhOVUxM KTsKKworICAgIHFtcF9mZCA9IG1rc3RlbXAocW1wX3NvY2tfcGF0aCk7CisgICAgZ19hc3NlcnRf Y21waW50KHFtcF9mZCwgPj0sIDApOworICAgIGdfdGVzdF9xdWV1ZV9kZXN0cm95KGRyaXZlX2Rl c3Ryb3ksIHFtcF9zb2NrX3BhdGgpOworCisgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZihzdG9y YWdlX2RhZW1vbl9jb21tYW5kLAorICAgICAgICAgICAgImV4ZWMgJXMgIgorICAgICAgICAgICAg Ii0tY2hhcmRldiBzb2NrZXQsaWQ9cW1wLHBhdGg9JXMsc2VydmVyLG5vd2FpdCAtLW1vbml0b3Ig Y2hhcmRldj1xbXAgIiwKKyAgICAgICAgICAgIHZob3N0X3VzZXJfYmxrX2JpbiwgcW1wX3NvY2tf cGF0aCk7CisKKyAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKGNtZF9saW5lLAorICAgICAgICAg ICAgIiAtb2JqZWN0IG1lbW9yeS1iYWNrZW5kLW1lbWZkLGlkPW1lbSxzaXplPTEyOE0sc2hhcmU9 b24gLW51bWEgbm9kZSxtZW1kZXY9bWVtICIpOworCisgICAgZm9yIChpID0gMDsgaSA8IHZ1c19p bnN0YW5jZXM7IGkrKykgeworICAgICAgICBzb2NrX3BhdGggPSBnX3N0cmR1cChzb2NrX3BhdGhf dGVtcGF0ZSk7CisgICAgICAgIGZkID0gbWtzdGVtcChzb2NrX3BhdGgpOworICAgICAgICBnX2Fz c2VydF9jbXBpbnQoZmQsID49LCAwKTsKKyAgICAgICAgZ190ZXN0X3F1ZXVlX2Rlc3Ryb3koZHJp dmVfZGVzdHJveSwgc29ja19wYXRoKTsKKyAgICAgICAgLyogY3JlYXRlIGltYWdlIGZpbGUgKi8K KyAgICAgICAgaW1nX3BhdGggPSBkcml2ZV9jcmVhdGUoKTsKKyAgICAgICAgZ19zdHJpbmdfYXBw ZW5kX3ByaW50ZihzdG9yYWdlX2RhZW1vbl9jb21tYW5kLAorICAgICAgICAgICAgIi0tYmxvY2tk ZXYgZHJpdmVyPWZpbGUsbm9kZS1uYW1lPWRpc2slZCxmaWxlbmFtZT0lcyAiCisgICAgICAgICAg ICAiLS1vYmplY3Qgdmhvc3QtdXNlci1ibGstc2VydmVyLGlkPWRpc2slZCx1bml4LXNvY2tldD0l cywiCisgICAgICAgICAgICAibm9kZS1uYW1lPWRpc2slaSx3cml0YWJsZT1vbiAiLAorICAgICAg ICAgICAgaSwgaW1nX3BhdGgsIGksIHNvY2tfcGF0aCwgaSk7CisKKyAgICAgICAgZ19zdHJpbmdf YXBwZW5kX3ByaW50ZihjbWRfbGluZSwgIi1jaGFyZGV2IHNvY2tldCxpZD1jaGFyJWQscGF0aD0l cyAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgKyAxLCBzb2NrX3BhdGgpOwor ICAgIH0KKworICAgIGdfdGVzdF9tZXNzYWdlKCJzdGFydGluZyB2aG9zdC11c2VyIGJhY2tlbmQ6 ICVzIiwKKyAgICAgICAgICAgICAgICAgICBzdG9yYWdlX2RhZW1vbl9jb21tYW5kLT5zdHIpOwor ICAgIHBpZF90IHBpZCA9IGZvcmsoKTsKKyAgICBpZiAocGlkID09IDApIHsKKyAgICAgICAgZXhl Y2xwKCIvYmluL3NoIiwgInNoIiwgIi1jIiwgc3RvcmFnZV9kYWVtb25fY29tbWFuZC0+c3RyLCBO VUxMKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisgICAgZ19zdHJpbmdfZnJlZShzdG9yYWdl X2RhZW1vbl9jb21tYW5kLCB0cnVlKTsKKworICAgIHFtcF90ZXN0X3N0YXRlID0gcXRlc3RfY3Jl YXRlX3N0YXRlX3dpdGhfcW1wX2ZkKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdGVz dF9zb2NrZXRfY2xpZW50KHFtcF9zb2NrX3BhdGgpKTsKKyAgICAvKgorICAgICAqIEFzayBxZW11 LXN0b3JhZ2UtZGFlbW9uIHRvIHF1aXQgc28gaXQKKyAgICAgKiB3aWxsIG5vdCBibG9jayBzY3Jp cHRzL3RhcC1kcml2ZXIucGwuCisgICAgICovCisgICAgZ190ZXN0X3F1ZXVlX2Rlc3Ryb3kocXVp dF9zdG9yYWdlX2RhZW1vbiwgcW1wX3Rlc3Rfc3RhdGUpOworCisgICAgcW9iamVjdF91bnJlZihx dGVzdF9xbXAocW1wX3Rlc3Rfc3RhdGUsICJ7J2V4ZWN1dGUnOiAncW1wX2NhcGFiaWxpdGllcyd9 IikpOworICAgIHJldHVybiBzb2NrX3BhdGg7Cit9CisKK3N0YXRpYyB2b2lkICp2aG9zdF91c2Vy X2Jsa190ZXN0X3NldHVwKEdTdHJpbmcgKmNtZF9saW5lLCB2b2lkICphcmcpCit7CisgICAgc3Rh cnRfdmhvc3RfdXNlcl9ibGsoY21kX2xpbmUsIDEpOworICAgIHJldHVybiBhcmc7Cit9CisKKy8q CisgKiBTZXR1cCBmb3IgaG90cGx1Zy4KKyAqCisgKiBTaW5jZSB2aG9zdC11c2VyIHNlcnZlciBv bmx5IHNlcnZlcyBvbmUgdmhvc3QtdXNlciBjbGllbnQgb25lIHRpbWUsCisgKiBhbm90aGVyIGV4 cHJvdAorICoKKyAqLworc3RhdGljIHZvaWQgKnZob3N0X3VzZXJfYmxrX2hvdHBsdWdfdGVzdF9z ZXR1cChHU3RyaW5nICpjbWRfbGluZSwgdm9pZCAqYXJnKQoreworICAgIC8qICItY2hhcmRldiBz b2NrZXQsaWQ9Y2hhcjIiIGlzIHVzZWQgZm9yIHBjaV9ob3RwbHVnKi8KKyAgICBzdGFydF92aG9z dF91c2VyX2JsayhjbWRfbGluZSwgMik7CisgICAgcmV0dXJuIGFyZzsKK30KKworc3RhdGljIHZv aWQgcmVnaXN0ZXJfdmhvc3RfdXNlcl9ibGtfdGVzdCh2b2lkKQoreworICAgIFFPU0dyYXBoVGVz dE9wdGlvbnMgb3B0cyA9IHsKKyAgICAgICAgLmJlZm9yZSA9IHZob3N0X3VzZXJfYmxrX3Rlc3Rf c2V0dXAsCisgICAgfTsKKworICAgIC8qCisgICAgICogdGVzdHMgZm9yIHZob3N0LXVzZXItYmxr IGFuZCB2aG9zdC11c2VyLWJsay1wY2kKKyAgICAgKiBUaGUgdGVzdHMgYXJlIGJvcnJvd2VkIGZy b20gdGVzdHMvdmlydGlvLWJsay10ZXN0LmMuIEJ1dCBzb21lIHRlc3RzCisgICAgICogcmVnYXJk aW5nIGJsb2NrX3Jlc2l6ZSBkb24ndCB3b3JrIGZvciB2aG9zdC11c2VyLWJsay4KKyAgICAgKiB2 aG9zdC11c2VyLWJsayBkZXZpY2UgZG9lc24ndCBoYXZlIC1kcml2ZSwgc28gdGVzdHMgY29udGFp bmluZworICAgICAqIGJsb2NrX3Jlc2l6ZSBhcmUgYWxzbyBhYmFuZG9uZWQsCisgICAgICogIC0g Y29uZmlnCisgICAgICogIC0gcmVzaXplCisgICAgICovCisgICAgcW9zX2FkZF90ZXN0KCJiYXNp YyIsICJ2aG9zdC11c2VyLWJsayIsIGJhc2ljLCAmb3B0cyk7CisgICAgcW9zX2FkZF90ZXN0KCJp bmRpcmVjdCIsICJ2aG9zdC11c2VyLWJsayIsIGluZGlyZWN0LCAmb3B0cyk7CisgICAgcW9zX2Fk ZF90ZXN0KCJpZHgiLCAidmhvc3QtdXNlci1ibGstcGNpIiwgaWR4LCAmb3B0cyk7CisgICAgcW9z X2FkZF90ZXN0KCJueHZpcnRxIiwgInZob3N0LXVzZXItYmxrLXBjaSIsCisgICAgICAgICAgICAg ICAgIHRlc3Rfbm9uZXhpc3RlbnRfdmlydHF1ZXVlLCAmb3B0cyk7CisKKyAgICBvcHRzLmJlZm9y ZSA9IHZob3N0X3VzZXJfYmxrX2hvdHBsdWdfdGVzdF9zZXR1cDsKKyAgICBxb3NfYWRkX3Rlc3Qo ImhvdHBsdWciLCAidmhvc3QtdXNlci1ibGstcGNpIiwgcGNpX2hvdHBsdWcsICZvcHRzKTsKK30K KworbGlicW9zX2luaXQocmVnaXN0ZXJfdmhvc3RfdXNlcl9ibGtfdGVzdCk7CmRpZmYgLS1naXQg YS90ZXN0cy9xdGVzdC9saWJxb3MvbWVzb24uYnVpbGQgYi90ZXN0cy9xdGVzdC9saWJxb3MvbWVz b24uYnVpbGQKaW5kZXggMWNkZGY1YmRhYS4uMWY1YzhmMTA1MyAxMDA2NDQKLS0tIGEvdGVzdHMv cXRlc3QvbGlicW9zL21lc29uLmJ1aWxkCisrKyBiL3Rlc3RzL3F0ZXN0L2xpYnFvcy9tZXNvbi5i dWlsZApAQCAtMzIsNiArMzIsNyBAQCBsaWJxb3Nfc3JjcyA9IGZpbGVzKCcuLi9saWJxdGVzdC5j JywKICAgICAgICAgJ3ZpcnRpby05cC5jJywKICAgICAgICAgJ3ZpcnRpby1iYWxsb29uLmMnLAog ICAgICAgICAndmlydGlvLWJsay5jJywKKyAgICAgICAgJ3Zob3N0LXVzZXItYmxrLmMnLAogICAg ICAgICAndmlydGlvLW1taW8uYycsCiAgICAgICAgICd2aXJ0aW8tbmV0LmMnLAogICAgICAgICAn dmlydGlvLXBjaS5jJywKZGlmZiAtLWdpdCBhL3Rlc3RzL3F0ZXN0L21lc29uLmJ1aWxkIGIvdGVz dHMvcXRlc3QvbWVzb24uYnVpbGQKaW5kZXggMGYzMmNhMDg5NS4uNmZlMjE3MjYyYiAxMDA2NDQK LS0tIGEvdGVzdHMvcXRlc3QvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvcXRlc3QvbWVzb24uYnVp bGQKQEAgLTE5Miw2ICsxOTIsNyBAQCBxb3NfdGVzdF9zcy5hZGQoCiApCiBxb3NfdGVzdF9zcy5h ZGQod2hlbjogJ0NPTkZJR19WSVJURlMnLCBpZl90cnVlOiBmaWxlcygndmlydGlvLTlwLXRlc3Qu YycpKQogcW9zX3Rlc3Rfc3MuYWRkKHdoZW46ICdDT05GSUdfVkhPU1RfVVNFUicsIGlmX3RydWU6 IGZpbGVzKCd2aG9zdC11c2VyLXRlc3QuYycpKQorcW9zX3Rlc3Rfc3MuYWRkKHdoZW46IFsnQ09O RklHX0xJTlVYJywgJ0NPTkZJR19UT09MUyddLCBpZl90cnVlOiBmaWxlcygndmhvc3QtdXNlci1i bGstdGVzdC5jJykpCiAKIGV4dHJhX3F0ZXN0X2RlcHMgPSB7CiAgICdiaW9zLXRhYmxlcy10ZXN0 JzogW2lvXSwKQEAgLTI0MCw3ICsyNDEsOCBAQCBmb3JlYWNoIGRpciA6IHRhcmdldF9kaXJzCiAg IGVuZGlmCiAgIHF0ZXN0X2Vudi5zZXQoJ0dfVEVTVF9EQlVTX0RBRU1PTicsIG1lc29uLnNvdXJj ZV9yb290KCkgLyAndGVzdHMvZGJ1cy12bXN0YXRlLWRhZW1vbi5zaCcpCiAgIHF0ZXN0X2Vudi5z ZXQoJ1FURVNUX1FFTVVfQklOQVJZJywgJy4vcWVtdS1zeXN0ZW0tJyArIHRhcmdldF9iYXNlKQot ICAKKyAgcXRlc3RfZW52LnNldCgnUVRFU1RfUUVNVV9TVE9SQUdFX0RBRU1PTl9CSU5BUlknLCAn Li9zdG9yYWdlLWRhZW1vbi9xZW11LXN0b3JhZ2UtZGFlbW9uJykKKwogICBmb3JlYWNoIHRlc3Qg OiBxdGVzdHMKICAgICAjIEV4ZWN1dGFibGVzIGFyZSBzaGFyZWQgYWNyb3NzIHRhcmdldHMsIGRl Y2xhcmUgdGhlbSBvbmx5IHRoZSBmaXJzdCB0aW1lIHdlCiAgICAgIyBlbmNvdW50ZXIgdGhlbQot LSAKMi4yNi4yCgo=