Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp1955378rwr; Fri, 21 Apr 2023 01:59:55 -0700 (PDT) X-Google-Smtp-Source: AKy350YKWzECSEXm8iL5PlktQtk1MAoqObtDr0PIyEOgPXavqziO+tQWW/SuP8K9qFiFuyv5vbSP X-Received: by 2002:a05:6a20:12d6:b0:ef:a31b:af8c with SMTP id v22-20020a056a2012d600b000efa31baf8cmr6566528pzg.26.1682067595059; Fri, 21 Apr 2023 01:59:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682067595; cv=none; d=google.com; s=arc-20160816; b=Mrgq9x7TT5CaqIQhvA9d4DH6dphjTCmhym05C3lrORL3fBROuMGRMoWALm0g0SVLOB mwzDdKMCWeDQ1wE6QPOesdOau4qzzv4vMUbmSJ5i59/G7AClIuK+3VxDjKDeNsLzhyve 3GXW9uqMYacIfSdQ33b9x3okPfisy9A6BK7jpm1rK/6MfKywHohIaLPRdxK8dQtdwz1f VnaiLv2I46CvO3zoQ4E8ZvjlWzpUzlMYJRAgY/rhk2jW5Njr9SzPOP4DnBd0/r/XPLSM yjyYjCzqQm1gHAyZVOFwreg781UV45cU88fidDoStlaHNNfgwkQiW3aGDEa83tUwED8l +Faw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent :content-transfer-encoding:references:in-reply-to:date:cc:to:from :subject:message-id:dkim-signature; bh=tOxdMweqEhzzQd6U0UFjOD8V2exqXtME9rvBuP7V5XA=; b=MGa+iyAECoNARvvdBx9/Vmf7W6u/pwciVOqgbcXou25gJ1brR4RzNf25abr4LwePnb hskly+xZv4yxvoCclPbqpK8kUDAY16BIkBzOl8ZERjD1g05k8Z6rbwoJ51qWa33yedW8 qb7s/0tuH5S3LYJnUpqApa/DQdvsF5inU25QShKV0mCOA1xlGLTXFdXcpQ/j/ciUa0cq hY5vfKPTWfl1agkoMbJL6nvVOPs8mlCSwmzjmuGE/iJdw3QJ+IiqLeP1fSkxXJ6y9Mfb 73BSyj99k/8U+nh0POe1L8zNO4XjNDqlc1ws5sB7O9UnS0bYuBoAraJJzTH3XtkT61qv di8A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sipsolutions.net header.s=mail header.b=vSW3Swd5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=sipsolutions.net Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 33-20020a631361000000b00503059b8b2fsi3843786pgt.220.2023.04.21.01.59.43; Fri, 21 Apr 2023 01:59:55 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@sipsolutions.net header.s=mail header.b=vSW3Swd5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=sipsolutions.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230507AbjDUIw0 (ORCPT + 99 others); Fri, 21 Apr 2023 04:52:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42648 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231128AbjDUIwP (ORCPT ); Fri, 21 Apr 2023 04:52:15 -0400 Received: from sipsolutions.net (s3.sipsolutions.net [IPv6:2a01:4f8:191:4433::2]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C9FED49C2; Fri, 21 Apr 2023 01:52:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sipsolutions.net; s=mail; h=MIME-Version:Content-Transfer-Encoding: Content-Type:References:In-Reply-To:Date:Cc:To:From:Subject:Message-ID:Sender :Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-To: Resent-Cc:Resent-Message-ID; bh=tOxdMweqEhzzQd6U0UFjOD8V2exqXtME9rvBuP7V5XA=; t=1682067134; x=1683276734; b=vSW3Swd5fU4OhP+pubbeSgZnF6NB1Sm/0pHXb01/1jjjekR T6axdU1n0WDw1v0CNyac3Fh+l73PWajuPLESk0kfjhctGaSiimzjlghtisbtOa8au1y3ORxjrkQZ0 9xWpjGdT9z9MgxLZPD3hc1NjYRmb7zMLYVm7/m7tEt9TmuIPPfnju2vqUdDJZbO60rcBZlLyTqlCW S6GT9p51yqAQyDuqISr+wDZeryrcA/6uBFUYlgM3Usg+IhWZddDIS3rrpma1/+XRmfyzhfd3rBjZu lbga9crMALWZv4W5Vro9CcDPGD7LY9PAi/z898mS3/iiugyvGXQaT47wQyb1NCXg==; Received: by sipsolutions.net with esmtpsa (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.96) (envelope-from ) id 1ppmUx-004MaO-2n; Fri, 21 Apr 2023 10:52:08 +0200 Message-ID: <6478bd117b17e004df371bd84342c2e378adf566.camel@sipsolutions.net> Subject: Re: [PATCH v3 1/4] kunit: Always run cleanup from a test kthread From: Benjamin Berg To: David Gow , Brendan Higgins , Shuah Khan , Rae Moar , Daniel Latypov Cc: maxime@cerno.tech, Stephen Boyd , kunit-dev@googlegroups.com, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Sadiya Kazi Date: Fri, 21 Apr 2023 10:52:06 +0200 In-Reply-To: <20230421040218.2156548-1-davidgow@google.com> References: <20230421040218.2156548-1-davidgow@google.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.46.4 (3.46.4-1.fc37) MIME-Version: 1.0 X-malware-bazaar: not-scanned X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGksCgpPbiBGcmksIDIwMjMtMDQtMjEgYXQgMTI6MDIgKzA4MDAsIERhdmlkIEdvdyB3cm90ZToK PiBLVW5pdCB0ZXN0cyBydW4gaW4gYSBrdGhyZWFkLCB3aXRoIHRoZSBjdXJyZW50LT5rdW5pdF90 ZXN0IHBvaW50ZXIgc2V0Cj4gdG8gdGhlIHRlc3QncyBjb250ZXh0LiBUaGlzIGFsbG93cyB0aGUg a3VuaXRfZ2V0X2N1cnJlbnRfdGVzdCgpIGFuZAo+IGt1bml0X2ZhaWxfY3VycmVudF90ZXN0KCkg bWFjcm9zIHRvIHdvcmsuIE5vcm1hbGx5LCB0aGlzIHBvaW50ZXIgaXMKPiBzdGlsbCB2YWxpZCBk dXJpbmcgdGVzdCBzaHV0ZG93biAoaS5lLiwgdGhlIHN1aXRlLT5leGl0IGZ1bmN0aW9uLCBhbmQK PiBhbnkgcmVzb3VyY2UgY2xlYW51cCkuIEhvd2V2ZXIsIGlmIHRoZSB0ZXN0IGhhcyBleGl0ZWQg ZWFybHkgKGUuZy4sIGR1ZQo+IHRvIGEgZmFpbGVkIGFzc2VydGlvbiksIHRoZSBjbGVhbnVwIGlz IGRvbmUgaW4gdGhlIHBhcmVudCBLVW5pdCB0aHJlYWQsCj4gd2hpY2ggZG9lcyBub3QgaGF2ZSBh biBhY3RpdmUgY29udGV4dC4KPiAKPiBJbnN0ZWFkLCBpbiB0aGUgZXZlbnQgdGVzdCB0ZXJtaW5h dGVzIGVhcmx5LCBydW4gdGhlIHRlc3QgZXhpdCBhbmQKPiBjbGVhbnVwIGZyb20gYSBuZXcgJ2Ns ZWFudXAnIGt0aHJlYWQsIHdoaWNoIHNldHMgY3VycmVudC0+a3VuaXRfdGVzdCwKPiBhbmQgYmV0 dGVyIGlzb2xhdGVzIHRoZSByZXN0IG9mIEtVbml0IGZyb20gaXNzdWVzIHdoaWNoIGFyaXNlIGlu IHRlc3QKPiBjbGVhbnVwLgo+IAo+IElmIGEgdGVzdCBjbGVhbnVwIGZ1bmN0aW9uIGl0c2VsZiBh Ym9ydHMgKGUuZy4sIGR1ZSB0byBhbiBhc3NlcnRpb24KPiBmYWlsaW5nKSwgdGhlcmUgd2lsbCBi ZSBubyBmdXJ0aGVyIGF0dGVtcHRzIHRvIGNsZWFuIHVwOiBhbiBlcnJvciB3aWxsCj4gYmUgbG9n Z2VkIGFuZCB0aGUgdGVzdCBmYWlsZWQuIEZvciBleGFtcGxlOgo+IMKgwqDCoMKgwqDCoMKgwqAg IyBleGFtcGxlX3NpbXBsZV90ZXN0OiB0ZXN0IGFib3J0ZWQgZHVyaW5nIGNsZWFudXAuIGNvbnRp bnVpbmcgd2l0aG91dCBjbGVhbmluZyB1cAo+IAo+IFRoaXMgc2hvdWxkIGFsc28gbWFrZSBpdCBl YXNpZXIgdG8gZ2V0IGFjY2VzcyB0byB0aGUgS1VuaXQgY29udGV4dCwKPiBwYXJ0aWN1bGFybHkg ZnJvbSB3aXRoaW4gcmVzb3VyY2UgY2xlYW51cCBmdW5jdGlvbnMsIHdoaWNoIG1heSwgZm9yCj4g ZXhhbXBsZSwgbmVlZCBhY2Nlc3MgdG8gZGF0YSBpbiB0ZXN0LT5wcml2Lgo+IAo+IFNpZ25lZC1v ZmYtYnk6IERhdmlkIEdvdyA8ZGF2aWRnb3dAZ29vZ2xlLmNvbT4KCkdyZWF0ISBMb29rcyBnb29k IHRvIG1lLgoKUmV2aWV3ZWQtYnk6IEJlbmphbWluIEJlcmcgPGJlbmphbWluLmJlcmdAaW50ZWwu Y29tPgoKPiAtLS0KPiAKPiBUaGlzIGlzIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiAvIHJlcGxhY2Vt ZW50IG9mICJrdW5pdDogU2V0IHRoZSBjdXJyZW50Cj4gS1VuaXQgY29udGV4dCB3aGVuIGNsZWFu aW5nIHVwIiwgd2hpY2ggaW5zdGVhZCBjcmVhdGVzIGEgbmV3IGt0aHJlYWQKPiBmb3IgY2xlYW51 cCB0YXNrcyBpZiB0aGUgb3JpZ2luYWwgdGVzdCBrdGhyZWFkIGlzIGFib3J0ZWQuIFRoaXMgcHJv dGVjdHMKPiB1cyBmcm9tIGZhaWxlZCBhc3NlcnRpb25zIGR1cmluZyBjbGVhbnVwLCBpZiB0aGUg dGVzdCBleGl0ZWQgZWFybHkuCj4gCj4gQ2hhbmdlcyBzaW5jZSB2MjoKPiBodHRwczovL2xvcmUu a2VybmVsLm9yZy9saW51eC1rc2VsZnRlc3QvMjAyMzA0MTkwODU0MjYuMTY3MTcwMy0xLWRhdmlk Z293QGdvb2dsZS5jb20vCj4gLSBBbHdheXMgcnVuIGNsZWFudXAgaW4gaXRzIG93biBrdGhyZWFk Cj4gwqAgLSBUaGVyZWZvcmUsIG5ldmVyIGF0dGVtcHQgdG8gcmUtcnVuIGl0IGlmIGl0IGV4aXRz Cj4gwqAgLSBUaGFua3MsIEJlbmphbWluLgo+IENoYW5nZXMgc2luY2UgdjE6Cj4gaHR0cHM6Ly9s b3JlLmtlcm5lbC5vcmcvbGludXgta3NlbGZ0ZXN0LzIwMjMwNDE1MDkxNDAxLjY4MTM5NS0xLWRh dmlkZ293QGdvb2dsZS5jb20vCj4gLSBNb3ZlIGNsZWFudXAgZXhlY3V0aW9uIHRvIGFub3RoZXIg a3RocmVhZAo+IMKgIC0gKFRoYW5rcywgQmVuamFtaW4sIGZvciBwb2ludGluZyBvdXQgdGhlIGFz c2VydGlvbiBpc3N1ZXMpCj4gCj4gLS0tCj4gwqBsaWIva3VuaXQvdGVzdC5jIHwgNTUgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCj4gwqAxIGZpbGUgY2hh bmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEv bGliL2t1bml0L3Rlc3QuYyBiL2xpYi9rdW5pdC90ZXN0LmMKPiBpbmRleCBlMjkxMGIyNjExMTIu LjIwMjVlNTE5NDFlNiAxMDA2NDQKPiAtLS0gYS9saWIva3VuaXQvdGVzdC5jCj4gKysrIGIvbGli L2t1bml0L3Rlc3QuYwo+IEBAIC00MTksMTAgKzQxOSw1MCBAQCBzdGF0aWMgdm9pZCBrdW5pdF90 cnlfcnVuX2Nhc2Uodm9pZCAqZGF0YSkKPiDCoMKgwqDCoMKgwqDCoMKgICogdGhyZWFkIHdpbGwg cmVzdW1lIGNvbnRyb2wgYW5kIGhhbmRsZSBhbnkgbmVjZXNzYXJ5IGNsZWFuIHVwLgo+IMKgwqDC oMKgwqDCoMKgwqAgKi8KPiDCoMKgwqDCoMKgwqDCoMKga3VuaXRfcnVuX2Nhc2VfaW50ZXJuYWwo dGVzdCwgc3VpdGUsIHRlc3RfY2FzZSk7Cj4gLcKgwqDCoMKgwqDCoMKgLyogVGhpcyBsaW5lIG1h eSBuZXZlciBiZSByZWFjaGVkLiAqLwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBrdW5pdF90cnlf cnVuX2Nhc2VfY2xlYW51cCh2b2lkICpkYXRhKQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0 IGt1bml0X3RyeV9jYXRjaF9jb250ZXh0ICpjdHggPSBkYXRhOwo+ICvCoMKgwqDCoMKgwqDCoHN0 cnVjdCBrdW5pdCAqdGVzdCA9IGN0eC0+dGVzdDsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qga3Vu aXRfc3VpdGUgKnN1aXRlID0gY3R4LT5zdWl0ZTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgY3VycmVu dC0+a3VuaXRfdGVzdCA9IHRlc3Q7Cj4gKwo+IMKgwqDCoMKgwqDCoMKgwqBrdW5pdF9ydW5fY2Fz ZV9jbGVhbnVwKHRlc3QsIHN1aXRlKTsKPiDCoH0KPiDCoAo+ICtzdGF0aWMgdm9pZCBrdW5pdF9j YXRjaF9ydW5fY2FzZV9jbGVhbnVwKHZvaWQgKmRhdGEpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqBz dHJ1Y3Qga3VuaXRfdHJ5X2NhdGNoX2NvbnRleHQgKmN0eCA9IGRhdGE7Cj4gK8KgwqDCoMKgwqDC oMKgc3RydWN0IGt1bml0ICp0ZXN0ID0gY3R4LT50ZXN0Owo+ICvCoMKgwqDCoMKgwqDCoGludCB0 cnlfZXhpdF9jb2RlID0ga3VuaXRfdHJ5X2NhdGNoX2dldF9yZXN1bHQoJnRlc3QtPnRyeV9jYXRj aCk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoC8qIEl0IGlzIGFsd2F5cyBhIGZhaWx1cmUgaWYgY2xl YW51cCBhYm9ydHMuICovCj4gK8KgwqDCoMKgwqDCoMKga3VuaXRfc2V0X2ZhaWx1cmUodGVzdCk7 Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGlmICh0cnlfZXhpdF9jb2RlKSB7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoC8qCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAq IFRlc3QgY2FzZSBjb3VsZCBub3QgZmluaXNoLCB3ZSBoYXZlIG5vIGlkZWEgd2hhdCBzdGF0ZSBp dCBpcwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBpbiwgc28gZG9uJ3QgZG8g Y2xlYW4gdXAuCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodHJ5X2V4aXRfY29kZSA9PSAtRVRJTUVET1VUKSB7 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBrdW5pdF9l cnIodGVzdCwgInRlc3QgY2FzZSBjbGVhbnVwIHRpbWVkIG91dFxuIik7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoC8qCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAq IFVua25vd24gaW50ZXJuYWwgZXJyb3Igb2NjdXJyZWQgcHJldmVudGluZyB0ZXN0IGNhc2UgZnJv bQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBydW5uaW5nLCBzbyB0aGVyZSBp cyBub3RoaW5nIHRvIGNsZWFuIHVwLgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Ki8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGt1bml0X2Vycih0ZXN0LCAiaW50 ZXJuYWwgZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRlc3QgY2FzZSBjbGVhbnVwOiAlZFxuIiwKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB0cnlfZXhpdF9jb2RlKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg fQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47Cj4gK8KgwqDCoMKgwqDC oMKgfQo+ICsKPiArwqDCoMKgwqDCoMKgwqBrdW5pdF9lcnIodGVzdCwgInRlc3QgYWJvcnRlZCBk dXJpbmcgY2xlYW51cC4gY29udGludWluZyB3aXRob3V0IGNsZWFuaW5nIHVwXG4iKTsKPiArfQo+ ICsKPiArCj4gwqBzdGF0aWMgdm9pZCBrdW5pdF9jYXRjaF9ydW5fY2FzZSh2b2lkICpkYXRhKQo+ IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qga3VuaXRfdHJ5X2NhdGNoX2NvbnRleHQgKmN0 eCA9IGRhdGE7Cj4gQEAgLTQ0OCwxMiArNDg4LDYgQEAgc3RhdGljIHZvaWQga3VuaXRfY2F0Y2hf cnVuX2Nhc2Uodm9pZCAqZGF0YSkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0K PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybjsKPiDCoMKgwqDCoMKgwqDC oMKgfQo+IC0KPiAtwqDCoMKgwqDCoMKgwqAvKgo+IC3CoMKgwqDCoMKgwqDCoCAqIFRlc3QgY2Fz ZSB3YXMgcnVuLCBidXQgYWJvcnRlZC4gSXQgaXMgdGhlIHRlc3QgY2FzZSdzIGJ1c2luZXNzIGFz IHRvCj4gLcKgwqDCoMKgwqDCoMKgICogd2hldGhlciBpdCBmYWlsZWQgb3Igbm90LCB3ZSBqdXN0 IG5lZWQgdG8gY2xlYW4gdXAuCj4gLcKgwqDCoMKgwqDCoMKgICovCj4gLcKgwqDCoMKgwqDCoMKg a3VuaXRfcnVuX2Nhc2VfY2xlYW51cCh0ZXN0LCBzdWl0ZSk7Cj4gwqB9Cj4gwqAKPiDCoC8qCj4g QEAgLTQ3OCw2ICs1MTIsMTMgQEAgc3RhdGljIHZvaWQga3VuaXRfcnVuX2Nhc2VfY2F0Y2hfZXJy b3JzKHN0cnVjdCBrdW5pdF9zdWl0ZSAqc3VpdGUsCj4gwqDCoMKgwqDCoMKgwqDCoGNvbnRleHQu dGVzdF9jYXNlID0gdGVzdF9jYXNlOwo+IMKgwqDCoMKgwqDCoMKgwqBrdW5pdF90cnlfY2F0Y2hf cnVuKHRyeV9jYXRjaCwgJmNvbnRleHQpOwo+IMKgCj4gK8KgwqDCoMKgwqDCoMKgLyogTm93IHJ1 biB0aGUgY2xlYW51cCAqLwo+ICvCoMKgwqDCoMKgwqDCoGt1bml0X3RyeV9jYXRjaF9pbml0KHRy eV9jYXRjaCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHRlc3QsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBrdW5pdF90cnlfcnVuX2Nhc2VfY2xlYW51cCwKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGt1bml0X2NhdGNo X3J1bl9jYXNlX2NsZWFudXApOwo+ICvCoMKgwqDCoMKgwqDCoGt1bml0X3RyeV9jYXRjaF9ydW4o dHJ5X2NhdGNoLCAmY29udGV4dCk7Cj4gKwo+IMKgwqDCoMKgwqDCoMKgwqAvKiBQcm9wYWdhdGUg dGhlIHBhcmFtZXRlciByZXN1bHQgdG8gdGhlIHRlc3QgY2FzZS4gKi8KPiDCoMKgwqDCoMKgwqDC oMKgaWYgKHRlc3QtPnN0YXR1cyA9PSBLVU5JVF9GQUlMVVJFKQo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgdGVzdF9jYXNlLT5zdGF0dXMgPSBLVU5JVF9GQUlMVVJFOwoK