From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-4322.protonmail.ch (mail-4322.protonmail.ch [185.70.43.22]) by sourceware.org (Postfix) with ESMTPS id 90D403858298 for ; Sun, 5 Nov 2023 15:06:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 90D403858298 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=protonmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=protonmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 90D403858298 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=185.70.43.22 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699196815; cv=none; b=ZBCxqmK3rSDu6Eqv7yppeZDJY0YFFOXAJm/gd/YESqJ494IIKbWq/rVJAbtV1SiYvc3ipYFoLMq6rZQEgk7UdcZxeUkpCdi73SgHSI5cYgMwOTV4pcfR8QizMnDg4Tw26v/Ujg53QPDIaT9RzshvibGzreZef88+IliTnummw44= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699196815; c=relaxed/simple; bh=j4neNq5Wx4lMUo7b9hs58vXAH9bSstsZd4qrehKj83c=; h=DKIM-Signature:Date:To:From:Subject:Message-ID:MIME-Version; b=Xd097D/9h9cmSFBUoFA3ZnDSddVCJ7c+vWFZ9MCMcX5G4WTUx6ZDqNMXphKyiPkxAY6y9UFs5JgwIn9s28HSEyMc1RgeVZeVQ0rey23tLZswpiTORqmndq5OhAGcs13CEem7pwqMwrRAghJW5lcNkiA8qzl8HBbQuBWMaOOY9hE= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1699196807; x=1699456007; bh=j4neNq5Wx4lMUo7b9hs58vXAH9bSstsZd4qrehKj83c=; h=Date:To:From:Cc:Subject:Message-ID:Feedback-ID:From:To:Cc:Date: Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=GANRV545Y98FGlKKYWtOlhiuNANorRB+XxzHjlXMl2AOMKaJiDhzxi84PJYjcq3Kc T77wI99IFeO4YVs/o57ONRnCIqblMYqltXg6Oii+iMc9LNJOKaTw6O76Mgw1X9Q07e WaNUFjDpgmuv7dJSUjFKoitRxAytZpNU7/6E9w0YSaj7+iQ+00sVIMCYcAXIJGcToD cPyS4Ja0ImP20XSwzb1L+n9qfsAQ2QpxHozqpJQs7h///kP+h99ooM6LNnCRo2aacw lBibVEFvtYEO5gdSIaFOjp6I2AZLWHZSiFFuPhB/yYXf2hL9btaLg6xeW8R6l18TLR nC5n2fPJ/bpjw== Date: Sun, 05 Nov 2023 15:06:36 +0000 To: waffl3x From: waffl3x Cc: Jason Merrill , "gcc-patches@gcc.gnu.org" Subject: [PATCH v4 2/2] c++: Diagnostics for P0847R7 (Deducing this) [PR102609] Message-ID: Feedback-ID: 14591686:user:proton MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_wrobPWyRaxHtU0ScNdCr9KlM2mRBbl9pQ08phos4" X-Spam-Status: No, score=-9.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --b1_wrobPWyRaxHtU0ScNdCr9KlM2mRBbl9pQ08phos4 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Bootstrapped and tested on x86_64-linux with no regressions. Finally, the fabled diagnostics patch. I would like to note really quickly that there was never a v2 and v3 of this patch, only the first of these 2 had those versions. Originally I had planned to revise this patch alongside the first but it just didn't happen. Anyhow, I decided to match the version of this second patch to the current first patch to avoid any confusion.=20 With that out of the way, I feel mostly okay about the code in this patch, but I have a feeling it will need a revision, especially with the large amounts of comments I left in. At the very least I expect to need to pull those out before the patch can be accepted. I had wanted to write about some of my frustrations with trying to write a test for virtual specifiers and errors/warnings for shadowing/overloading virtual functions, but I am a bit too tired at the moment and I don't want to delay getting this up for another night. In short, the standard does not properly specify the criteria for overriding functions, which leaves a lot of ambiguity in how exactly we should be handling these cases. The standard also really poorly specifies things related to the implicit object parameter and implicit object argument which also causes some trouble. Anyhow, for the time being I am not including my test for diagnostics related to a virtual specifier on xobj member functions. I can't get it to a point I am happy with it and I think there will need to be some discussion on how exactly we want to handle that. I was fairly lazy with the changelog and commit message in this patch as I expect to need to do another round on this patch before it can be accepted. One specific question I have is whether I should be listing out all the diagnostics that were added to a function. For the cases where there were only one diagnostic added I stated it, but for grokdeclarator which has the majority of the diagnostics I did not. I welcome input here, really I request it, because the changelogs are still fairly difficult for me to write. Hell, the commit messages are hard to write, I feel I went overboard on the first patch but I guess it's a fairly large patch so maybe it's alright? Again, I am looking for feedback here if anyone is willing to provide it. I've written more than I want here, so I'll wrap this e-mail up and go to bed. I am very happy to be getting close to a final product here. Hopefully if all goes well I'll be able to fit in the final missing features before feature lock hits. Alex --b1_wrobPWyRaxHtU0ScNdCr9KlM2mRBbl9pQ08phos4 Content-Type: text/x-patch; name=0002-c-Diagnostics-for-C-23-P0847R7-Deducing-this-PR10260.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0002-c-Diagnostics-for-C-23-P0847R7-Deducing-this-PR10260.patch RnJvbSBjOGU4MTU1YTYzNWZhYjdmMzI2ZDBhZDMyMzI2ZGEzNTJkN2MzMjNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YWZmbDN4IDx3YWZmbDN4QHByb3Rvbm1haWwuY29tPgpEYXRl OiBTdW4sIDUgTm92IDIwMjMgMDU6MTc6MTggLTA3MDAKU3ViamVjdDogW1BBVENIIDIvMl0gYysr OiBEaWFnbm9zdGljcyBmb3IgQysrMjMgUDA4NDdSNyAoRGVkdWNpbmcgdGhpcykKIFtQUjEwMjYw OV0KClRoaXMgcGF0Y2ggYWRkcyBkaWFnbm9zdGljcyBmb3IgdmFyaW91cyBpbGwtZm9ybWVkIGNv ZGUgcmVsYXRlZCB0byB4b2JqIG1lbWJlcgpmdW5jdGlvbnMuIFNvbWUgb2YgdGhlIGNvZGUgaW4g aGVyZSBsZWF2ZXMgc29tZXRoaW5nIHRvIGJlIGRlc2lyZWQsIGJ1dCB0aGUKbWFqb3JpdHkgb2Yg Y2FzZXMgc2hvdWxkIGJlIGhhbmRsZWQuIEkgb3B0ZWQgdG8gYWRkIGEgbmV3IFRGRiBmbGFnIGRl c3BpdGUgb25seQp1c2luZyBpdCBpbiBhIHNpbmdsZSBwbGFjZSwgb3RoZXIgc29sdXRpb25zIHNl ZW1lZCBub24gaWRlYWwgYW5kIHRoZXJlIGFyZQpwbGVudHkgb2YgYml0cyBsZWZ0LiBTb21lIG9m IHRoZSBkaWFnbm9zdGljcyBhcmUgbW9yZSBzY2F0dGVyZWQgYXJvdW5kIHRoYW4gSQp3b3VsZCBs aWtlLCBwZXJoYXBzIHRoaXMgY291bGQgYmUgcmVmYWN0b3JlZCBpbiB0aGUgZnV0dXJlLCBlc3Bl Y2lhbGx5IHRob3NlIGluCmdyb2tmbmRlY2wuCgoJUFIgYysrLzEwMjYwOQoKZ2NjL2NwL0NoYW5n ZUxvZzoKCglQUiBjKysvMTAyNjA5CglEaWFnbm9zdGljcyBmb3IgQysrMjMgUDA4NDdSNyAtIERl ZHVjaW5nIHRoaXMuCgkqIGNwLXRyZWUuaCAoVEZGX1hPQkpfRlVOQyk6IERlZmluZS4KCSogZGVj bC5jYyAoZ3Jva2ZuZGVjbCk6IERpYWdub3NlIGN2cmVmLXF1YWxpZmllcnMgb24gYW4geG9iaiBt ZW1iZXIKCWZ1bmN0aW9uLgoJKGdyb2tkZWNsYXJhdG9yKTogRGlhZ25vc3RpY3MKCSogZXJyb3Iu Y2MgKGR1bXBfZnVuY3Rpb25fZGVjbCk6IEZvciB4b2JqIG1lbWJlciBmdW5jdGlvbiBhZGQKCVRG Rl9YT0JKX0ZVTkMgYml0IHRvIGR1bXBfcGFyYW1ldGVycyBmbGFncyBhcmd1bWVudC4KCShkdW1w X3BhcmFtZXRlcnMpOiBXaGVuIHByaW50aW5nIHhvYmogbWVtYmVyIGZ1bmN0aW9uJ3MgcGFyYW1z IGFkZAoJInRoaXMiIHRvIHRoZSBmaXJzdCBwYXJhbS4KCShmdW5jdGlvbl9jYXRlZ29yeSk6IFNh eSBzbyB3aGVuIGluIGFuIHhvYmogbWVtYmVyIGZ1bmN0aW9uLgoJKiBwYXJzZXIuY2MgKGNwX3Bh cnNlcl9kZWNsX3NwZWNpZmllcl9zZXEpOiBEaWFnbm9zZSBpbmNvcnJlY3RseQoJcG9zaXRpb25l ZCAidGhpcyIgc3BlY2lmaWVyLgoJKGNwX3BhcnNlcl9wYXJhbWV0ZXJfZGVjbGFyYXRpb24pOiBE aWFnbm9zZSBkZWZhdWx0IGFyZ3VtZW50IG9uCgl4b2JqIHBhcmFtcy4KCSogc2VtYW50aWNzLmNj IChmaW5pc2hfdGhpc19leHByKTogRGlhZ25vc2UgdXNlcyBvZiAidGhpcyIgaW4gYm9keQoJb2Yg eG9iaiBtZW1iZXIgZnVuY3Rpb24uCgpnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoKCglQUiBjKysv MTAyNjA5CglEaWFnbm9zdGljcyBmb3IgQysrMjMgUDA4NDdSNyAtIERlZHVjaW5nIHRoaXMuCgkq IGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtQS5DOiBOZXcgdGVzdC4KCSog ZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1CLkM6IE5ldyB0ZXN0LgoJKiBn KysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWN4eC1kaWFsZWN0LUMuQzogTmV3IHRlc3QuCgkqIGcr Ky5kZy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtRC5DOiBOZXcgdGVzdC4KCSogZysr LmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1FLkM6IE5ldyB0ZXN0LgoJKiBnKysu ZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzMS5DOiBOZXcgdGVzdC4KCSogZysrLmRn L2NwcDIzL2V4cGxpY2l0LW9iai1kaWFnbm9zdGljczIuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9j cHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3MzLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3Bw MjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzNC5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIz L2V4cGxpY2l0LW9iai1kaWFnbm9zdGljczUuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAyMy9l eHBsaWNpdC1vYmotZGlhZ25vc3RpY3M2LkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhw bGljaXQtb2JqLWRpYWdub3N0aWNzNy5DOiBOZXcgdGVzdC4KClNpZ25lZC1vZmYtYnk6IHdhZmZs M3ggPHdhZmZsM3hAcHJvdG9ubWFpbC5jb20+Ci0tLQogZ2NjL2NwL2NwLXRyZWUuaCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICstCiBnY2MvY3AvZGVjbC5jYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAxMzMgKysrKysrKysrKysrKystLS0KIGdjYy9jcC9lcnJv ci5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOCArLQogZ2NjL2NwL3BhcnNl ci5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ1ICsrKysrKwogZ2NjL2NwL3Nl bWFudGljcy5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI4ICsrKy0KIC4uLi9nKysu ZGcvY3BwMjMvZXhwbGljaXQtb2JqLWN4eC1kaWFsZWN0LUEuQyB8ICAgNiArCiAuLi4vZysrLmRn L2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1CLkMgfCAgIDcgKwogLi4uL2crKy5kZy9j cHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtQy5DIHwgICA3ICsKIC4uLi9nKysuZGcvY3Bw MjMvZXhwbGljaXQtb2JqLWN4eC1kaWFsZWN0LUQuQyB8ICAgNyArCiAuLi4vZysrLmRnL2NwcDIz L2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1FLkMgfCAgIDcgKwogLi4uL2crKy5kZy9jcHAyMy9l eHBsaWNpdC1vYmotZGlhZ25vc3RpY3MxLkMgIHwgMTM4ICsrKysrKysrKysrKysrKysrKwogLi4u L2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3MyLkMgIHwgIDI1ICsrKysKIC4u Li9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzMy5DICB8ICA4NCArKysrKysr KysrKwogLi4uL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M0LkMgIHwgIDE5 ICsrKwogLi4uL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M1LkMgIHwgIDE1 ICsrCiAuLi4vZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1kaWFnbm9zdGljczYuQyAgfCAgMjIg KysrCiAuLi4vZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1kaWFnbm9zdGljczcuQyAgfCAgMjQg KysrCiAxNyBmaWxlcyBjaGFuZ2VkLCA1NjAgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQt b2JqLWN4eC1kaWFsZWN0LUEuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysr LmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1CLkMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtQy5D CiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQt b2JqLWN4eC1kaWFsZWN0LUQuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysr LmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1FLkMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3MxLkMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1v YmotZGlhZ25vc3RpY3MyLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5k Zy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3MzLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBn Y2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M0LkMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmot ZGlhZ25vc3RpY3M1LkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9j cHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M2LkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mv dGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M3LkMKCmRpZmYg LS1naXQgYS9nY2MvY3AvY3AtdHJlZS5oIGIvZ2NjL2NwL2NwLXRyZWUuaAppbmRleCA5MDFmYjFm NDYxNi4uMWQxMThmZGViN2UgMTAwNjQ0Ci0tLSBhL2djYy9jcC9jcC10cmVlLmgKKysrIGIvZ2Nj L2NwL2NwLXRyZWUuaApAQCAtNjExNiw3ICs2MTE2LDkgQEAgZW51bSBhdXRvX2RlZHVjdGlvbl9j b250ZXh0CiAgICAgICAgaWRlbnRpY2FsIHRvIHRoZWlyIGRlZmF1bHRzLgogICAgVEZGX05PX1RF TVBMQVRFX0JJTkRJTkdTOiBkbyBub3QgcHJpbnQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRlbXBs YXRlCiAgICAgICAgYXJndW1lbnRzIGZvciBhIGZ1bmN0aW9uIHRlbXBsYXRlIHNwZWNpYWxpemF0 aW9uLgotICAgVEZGX1BPSU5URVI6IHdlIGFyZSBwcmludGluZyBhIHBvaW50ZXIgdHlwZS4gICov CisgICBURkZfUE9JTlRFUjogd2UgYXJlIHByaW50aW5nIGEgcG9pbnRlciB0eXBlLgorICAgVEZG X1hPQkpfRlVOQzogd2UgYXJlIHByaW50aW5nIGFuIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVu Y3Rpb24ncworICAgICAgIHBhcmFtZXRlcnMuICAqLwogCiAjZGVmaW5lIFRGRl9QTEFJTl9JREVO VElGSUVSCQkJKDApCiAjZGVmaW5lIFRGRl9TQ09QRQkJCQkoMSkKQEAgLTYxMzQsNiArNjEzNiw3 IEBAIGVudW0gYXV0b19kZWR1Y3Rpb25fY29udGV4dAogI2RlZmluZSBURkZfTk9fT01JVF9ERUZB VUxUX1RFTVBMQVRFX0FSR1VNRU5UUwkoMSA8PCAxMikKICNkZWZpbmUgVEZGX05PX1RFTVBMQVRF X0JJTkRJTkdTCQkoMSA8PCAxMykKICNkZWZpbmUgVEZGX1BPSU5URVIJCSAgICAgICAgICAgICAg ICAoMSA8PCAxNCkKKyNkZWZpbmUgVEZGX1hPQkpfRlVOQwkJCQkoMSA8PCAxNSkKIAogLyogVGhl c2UgY29uc3RhbnRzIGNhbiBiZSB1c2VkIGFzIGJpdCBmbGFncyB0byBjb250cm9sIHN0cmlwX3R5 cGVkZWZzLgogCmRpZmYgLS1naXQgYS9nY2MvY3AvZGVjbC5jYyBiL2djYy9jcC9kZWNsLmNjCmlu ZGV4IGMwMmQ3OGI4MTAyLi4yNmFjZjk2MzIyYyAxMDA2NDQKLS0tIGEvZ2NjL2NwL2RlY2wuY2MK KysrIGIvZ2NjL2NwL2RlY2wuY2MKQEAgLTEwNjA3LDI0ICsxMDYwNywyOSBAQCBncm9rZm5kZWNs ICh0cmVlIGN0eXBlLAogCVRSRUVfVFlQRSAoZGVjbCkgPSBhcHBseV9tZW1mbl9xdWFscyAoVFJF RV9UWVBFIChkZWNsKSwKIAkJCQkJICAgICAgVFlQRV9VTlFVQUxJRklFRCwKIAkJCQkJICAgICAg UkVGX1FVQUxfTk9ORSk7Ci0KICAgICAgIGlmIChxdWFscykKLQl7Ci0JICBlcnJvciAoY3R5cGUK KwllcnJvciAoIWN0eXBlCisJICAgICAgID8gR18oIm5vbi1tZW1iZXIgZnVuY3Rpb24gJXFEIGNh bm5vdCBoYXZlIGN2LXF1YWxpZmllciIpCisJICAgICAgIDogIXhvYmpfZnVuY19wCiAJCSA/IEdf KCJzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uICVxRCBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiKQot CQkgOiBHXygibm9uLW1lbWJlciBmdW5jdGlvbiAlcUQgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVy IiksCi0JCSBkZWNsKTsKLQkgIHF1YWxzID0gVFlQRV9VTlFVQUxJRklFRDsKLQl9Ci0KKwkJIDog R18oImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gIgorCQkgICAgICAiJXFEIGNhbm5v dCBoYXZlIGN2LXF1YWxpZmllciIpLAorCSAgICAgICBkZWNsKTsKICAgICAgIGlmIChycXVhbCkK LQl7Ci0JICBlcnJvciAoY3R5cGUKKwllcnJvciAoIWN0eXBlCisJICAgICAgID8gR18oIm5vbi1t ZW1iZXIgZnVuY3Rpb24gJXFEIGNhbm5vdCBoYXZlIHJlZi1xdWFsaWZpZXIiKQorCSAgICAgICA6 ICF4b2JqX2Z1bmNfcAogCQkgPyBHXygic3RhdGljIG1lbWJlciBmdW5jdGlvbiAlcUQgY2Fubm90 IGhhdmUgcmVmLXF1YWxpZmllciIpCi0JCSA6IEdfKCJub24tbWVtYmVyIGZ1bmN0aW9uICVxRCBj YW5ub3QgaGF2ZSByZWYtcXVhbGlmaWVyIiksCisJCSA6IEdfKCJleHBsaWNpdCBvYmplY3QgbWVt YmVyIGZ1bmN0aW9uICIKKwkJICAgICAgIiVxRCBjYW5ub3QgaGF2ZSByZWYtcXVhbGlmaWVyIiks CiAJCSBkZWNsKTsKLQkgIHJxdWFsID0gUkVGX1FVQUxfTk9ORTsKLQl9CisKKyAgICAgIGlmICh4 b2JqX2Z1bmNfcCAmJiAocXVhbHMgfHwgcnF1YWwpKQorCWluZm9ybSAoREVDTF9TT1VSQ0VfTE9D QVRJT04gKERFQ0xfQVJHVU1FTlRTIChkZWNsKSksCisJCSJleHBsaWNpdCBvYmplY3QgcGFyYW1l dGVyIGRlY2xhcmVkIGhlcmUiKTsKKyAgICAgIHF1YWxzID0gVFlQRV9VTlFVQUxJRklFRDsKKyAg ICAgIHJxdWFsID0gUkVGX1FVQUxfTk9ORTsKKwogICAgIH0KIAogICBpZiAoZGVkdWN0aW9uX2d1 aWRlX3AgKGRlY2wpKQpAQCAtMTMxMTcsMTkgKzEzMTIyLDExMyBAQCBncm9rZGVjbGFyYXRvciAo Y29uc3QgY3BfZGVjbGFyYXRvciAqZGVjbGFyYXRvciwKIAkJLyogVGhlcmUgaXMgbm8gbmVlZCB0 byBpdGVyYXRlIG92ZXIgdGhlIGxpc3QsCiAJCSAgIG9ubHkgdGhlIGZpcnN0IHBhcm0gY2FuIGJl IGEgdmFsaWQgeG9iaiBwYXJtLiAgKi8KIAkJaWYgKCFwYXJtX2xpc3QgfHwgcGFybV9saXN0ID09 IHZvaWRfbGlzdF9ub2RlKQotCQkgIHJldHVybiBmYWxzZTsKKwkJICByZXR1cm4gTlVMTF9UUkVF OwogCQlpZiAoVFJFRV9QVVJQT1NFIChwYXJtX2xpc3QpICE9IHRoaXNfaWRlbnRpZmllcikKLQkJ ICByZXR1cm4gZmFsc2U7CisJCSAgcmV0dXJuIE5VTExfVFJFRTsKIAkJLyogSWYgd2UgbWFrZSBp dCBoZXJlLCB3ZSBhcmUgbG9va2luZyBhdCBhbiB4b2JqIHBhcm0uCiAKIAkJICAgTm9uLW51bGwg J3B1cnBvc2UnIHVzdWFsbHkgbWVhbnMgdGhlIHBhcm0gaGFzIGEgZGVmYXVsdAogCQkgICBhcmd1 bWVudCwgd2UgZG9uJ3Qgd2FudCB0byB2aW9sYXRlIHRoaXMgYXNzdW1wdGlvbi4gICovCiAJCVRS RUVfUFVSUE9TRSAocGFybV9saXN0KSA9IE5VTExfVFJFRTsKLQkJcmV0dXJuIHRydWU7CisJCXJl dHVybiBUUkVFX1ZBTFVFIChwYXJtX2xpc3QpOwogCSAgICAgIH07CiAKLQkgICAgaXNfeG9ial9t ZW1iZXJfZnVuY3Rpb24KKwkgICAgdHJlZSB4b2JqX3Bhcm0KIAkgICAgICA9IGZpbmRfeG9ial9w YXJtIChkZWNsYXJhdG9yLT51LmZ1bmN0aW9uLnBhcmFtZXRlcnMpOworCSAgICBpc194b2JqX21l bWJlcl9mdW5jdGlvbiA9IHhvYmpfcGFybTsKKworCSAgICBpZiAoeG9ial9wYXJtICYmIGN4eF9k aWFsZWN0IDwgY3h4MjMpCisJICAgICAgcGVkd2FybihERUNMX1NPVVJDRV9MT0NBVElPTiAoeG9i al9wYXJtKSwgT1BUX1djX18yM19leHRlbnNpb25zLAorCQkgICAgICAiZXhwbGljaXQgb2JqZWN0 IG1lbWJlciBmdW5jdGlvbiBvbmx5IGF2YWlsYWJsZSAiCisJCSAgICAgICJ3aXRoICU8LXN0ZD1j KysyMyU+IG9yICU8LXN0ZD1nbnUrKzIzJT4iKTsKKworCSAgICAvKiBFcnJvciBoYW5kbGluZyBm b3IgZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbnMuICAqLworCSAgICBpZiAoIXhvYmpf cGFybSkKKwkgICAgICAvKiBFYXJseSBlc2NhcGUuICAqLzsKKwkgICAgZWxzZSBpZiAoZGVjbF9j b250ZXh0ID09IFRZUEVOQU1FKQorCSAgICAgIHsKKwkJYm9vbCBwdHJfdHlwZSA9IHRydWU7CisJ CS8qIElmICAgKi8KKwkJaWYgKCFkZWNsYXJhdG9yLT5kZWNsYXJhdG9yKQorCQkgIHsKKwkJICAg IGVycm9yX2F0IChERUNMX1NPVVJDRV9MT0NBVElPTiAoeG9ial9wYXJtKSwKKwkJCSAgICAgICJh IGZ1bmN0aW9uIHR5cGUgY2Fubm90ICIKKwkJCSAgICAgICJoYXZlIGFuIGV4cGxpY2l0IG9iamVj dCBwYXJhbWV0ZXIiKTsKKwkJICAgIHB0cl90eXBlID0gZmFsc2U7CisJCSAgfQorCQllbHNlIGlm IChkZWNsYXJhdG9yLT5kZWNsYXJhdG9yLT5raW5kID09IGNka19wb2ludGVyKQorCQkgIGVycm9y X2F0IChERUNMX1NPVVJDRV9MT0NBVElPTiAoeG9ial9wYXJtKSwKKwkJCSAgICAiYSBmdW5jdGlv biBwb2ludGVyIHR5cGUgY2Fubm90ICIKKwkJCSAgICAiaGF2ZSBhbiBleHBsaWNpdCBvYmplY3Qg cGFyYW1ldGVyIik7CisJCWVsc2UgaWYgKGRlY2xhcmF0b3ItPmRlY2xhcmF0b3ItPmtpbmQgPT0g Y2RrX3B0cm1lbSkKKwkJICBlcnJvcl9hdCAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKHhvYmpfcGFy bSksCisJCQkgICAgImEgbWVtYmVyIGZ1bmN0aW9uIHBvaW50ZXIgdHlwZSAiCisJCQkgICAgImNh bm5vdCBoYXZlIGFuIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIiKTsKKwkJZWxzZQorCQkgIGdj Y191bnJlYWNoYWJsZSAoKTsKKworCQlpZiAocHRyX3R5cGUpCisJCSAgaW5mb3JtIChERUNMX1NP VVJDRV9MT0NBVElPTiAoeG9ial9wYXJtKSwKKwkJCSAgInRoZSB0eXBlIG9mIGEgcG9pbnRlciB0 byBleHBsaWNpdCBvYmplY3QgbWVtYmVyICIKKwkJCSAgImZ1bmN0aW9uIGlzIGEgcmVndWxhciBw b2ludGVyIHRvIGZ1bmN0aW9uIHR5cGUiKTsKKwkJZWxzZQorCQkgIGluZm9ybSAoREVDTF9TT1VS Q0VfTE9DQVRJT04gKHhvYmpfcGFybSksCisJCQkgICJ0aGUgdHlwZSBvZiBhbiBleHBsaWNpdCBv YmplY3QgIgorCQkJICAibWVtYmVyIGZ1bmN0aW9uIGlzIGEgcmVndWxhciBmdW5jdGlvbiB0eXBl Iik7CisJCS8qIElkZWFsbHkgd2Ugc2hvdWxkIHN5bnRoZXNpemUgdGhlIGNvcnJlY3Qgc3ludGF4 CisJCSAgIGZvciB0aGUgdXNlciwgcGVyaGFwcyB0aGlzIGNvdWxkIGJlIGFkZGVkIGxhdGVyLiAg Ki8KKwkgICAgICB9CisJICAgIC8qIEZyZWUgZnVuY3Rpb24gY2FzZSwKKwkgICAgICAgc3VyZWx5 IHRoZXJlIGlzIGEgYmV0dGVyIHdheSB0byBpZGVudGlmeSBpdD8gICovCisJICAgIGVsc2UgaWYg KGRlY2xfY29udGV4dCA9PSBOT1JNQUwKKwkJICAgICAmJiAoaW5fbmFtZXNwYWNlCisJCQkgfHwg IWRlY2xhcmF0b3ItPmRlY2xhcmF0b3ItPnUuaWQucXVhbGlmeWluZ19zY29wZSkpCisJCWVycm9y X2F0IChERUNMX1NPVVJDRV9MT0NBVElPTiAoeG9ial9wYXJtKSwKKwkJCSAgImEgZnJlZSBmdW5j dGlvbiBjYW5ub3QgaGF2ZSAiCisJCQkgICJhbiBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIik7 CisJICAgIGVsc2UgLyogaWYgKHhvYmpfcGFybSkgKi8KKwkgICAgICB7CisJCWlmICh2aXJ0dWFs cCkKKwkJICB7CisJCSAgICBlcnJvcl9hdCAoZGVjbHNwZWNzLT5sb2NhdGlvbnNbZHNfdmlydHVh bF0sCisJCQkgICAgICAiYW4gZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiBjYW5ub3Qg YmUgIgorCQkJICAgICAgIiU8dmlydHVhbCU+Iik7CisJCSAgICBpbmZvcm0gKERFQ0xfU09VUkNF X0xPQ0FUSU9OICh4b2JqX3Bhcm0pLAorCQkJICAgICJleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVy IGRlY2xhcmVkIGhlcmUiKTsKKwkJICAgIHZpcnR1YWxwID0gZmFsc2U7CisJCSAgfQorCQlpZiAo c3RhdGljcCA+PSAyKQorCQkgIHsKKwkJICAgIGVycm9yX2F0IChkZWNsc3BlY3MtPmxvY2F0aW9u c1tkc19zdG9yYWdlX2NsYXNzXSwKKwkJCSAgICAgICJhbiBleHBsaWNpdCBvYmplY3QgbWVtYmVy IGZ1bmN0aW9uIGNhbm5vdCBiZSAiCisJCQkgICAgICAiJTxzdGF0aWMlPiIpOworCQkgICAgaW5m b3JtIChERUNMX1NPVVJDRV9MT0NBVElPTiAoeG9ial9wYXJtKSwKKwkJCSAgICAiZXhwbGljaXQg b2JqZWN0IHBhcmFtZXRlciBkZWNsYXJlZCBoZXJlIik7CisJCSAgfQorCSAgICAgIH0KKwkgICAg LyogV2UgZG9uJ3QgbmVlZCB0byBza2lwIG92ZXIgdGhlIGZpcnN0IG5vZGUgZXZlbiBpZiBpdCBp cyBhbiB4b2JqCisJICAgICAgIHBhcm0sIGZpbmRfeG9ial9wYXJtIGNsZWFycyB0aGUgZmxhZyBz byBpdCB3aWxsIGJlIHRyZWF0ZWQgYXMgYQorCSAgICAgICBub3JtYWwgcGFybSwgdGh1cyBpbW1l ZGlhdGVseSBnb2luZyB0byB0aGUgbmV4dCBub2RlIHdpdGhvdXQKKwkgICAgICAgZW1pdHRpbmcg YW4gZXJyYW50IGRpYWdub3Npcy4gICovCisJICAgIGJvb2wgYmFkX3hvYmpfcGFybV9lbmNvdW50 ZXJlZCA9IGZhbHNlOworCSAgICBmb3IgKHRyZWUgcGFybSA9IGRlY2xhcmF0b3ItPnUuZnVuY3Rp b24ucGFyYW1ldGVyczsKKwkJIHBhcm0gJiYgcGFybSAhPSB2b2lkX2xpc3Rfbm9kZTsKKwkJIHBh cm0gPSBUUkVFX0NIQUlOIChwYXJtKSkKKwkgICAgICB7CisJCWlmIChUUkVFX1BVUlBPU0UgKHBh cm0pICE9IHRoaXNfaWRlbnRpZmllcikKKwkJICBjb250aW51ZTsKKwkJYmFkX3hvYmpfcGFybV9l bmNvdW50ZXJlZCA9IHRydWU7CisJCWdjY19yaWNoX2xvY2F0aW9uIGJhZF94b2JqX3Bhcm0KKwkJ ICAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKFRSRUVfVkFMVUUgKHBhcm0pKSk7CisJCS8qIEknbSBr ZWVwaW5nIGl0IG1vcmUgYmFzaWMgZm9yIG5vdy4gICovCisJCWVycm9yX2F0ICgmYmFkX3hvYmpf cGFybSwKKwkJCSAgIk9ubHkgdGhlIGZpcnN0IHBhcmFtZXRlciBvZiBhIG1lbWJlciBmdW5jdGlv biAiCisJCQkgICJjYW4gYmUgZGVjbGFyZWQgYXMgYW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRl ciIpOworCSAgICAgIH0KKwkgICAgaWYgKGJhZF94b2JqX3Bhcm1fZW5jb3VudGVyZWQgJiYgeG9i al9wYXJtKQorCSAgICAgIGluZm9ybSAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKHhvYmpfcGFybSks CisJCSAgICAgICJWYWxpZCBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIGRlY2xhcmVkIGhlcmUi KTsKKwkgICAgLyogRW5kIG9mIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gZGlhZ25v c3RpY3MuICAqLwogCiAJICAgIGlmIChyZXFzKQogCSAgICAgIGVycm9yX2F0IChsb2NhdGlvbl9v ZiAocmVxcyksICJyZXF1aXJlcy1jbGF1c2Ugb24gcmV0dXJuIHR5cGUiKTsKZGlmZiAtLWdpdCBh L2djYy9jcC9lcnJvci5jYyBiL2djYy9jcC9lcnJvci5jYwppbmRleCAwZWQ2OWJjYTZmYy4uYzk4 NzBkNDU3MDYgMTAwNjQ0Ci0tLSBhL2djYy9jcC9lcnJvci5jYworKysgYi9nY2MvY3AvZXJyb3Iu Y2MKQEAgLTE4MzEsNyArMTgzMSw5IEBAIGR1bXBfZnVuY3Rpb25fZGVjbCAoY3h4X3ByZXR0eV9w cmludGVyICpwcCwgdHJlZSB0LCBpbnQgZmxhZ3MpCiAKICAgaWYgKCEoZmxhZ3MgJiBURkZfTk9f RlVOQ1RJT05fQVJHVU1FTlRTKSkKICAgICB7Ci0gICAgICBkdW1wX3BhcmFtZXRlcnMgKHBwLCBw YXJtdHlwZXMsIGZsYWdzKTsKKyAgICAgIGR1bXBfcGFyYW1ldGVycyAocHAsIHBhcm10eXBlcywK KwkJICAgICAgIERFQ0xfWE9CSl9NRU1CRVJfRlVOQ19QICh0KSA/IFRGRl9YT0JKX0ZVTkMgfCBm bGFncworCQkJCQkJICAgIDogZmxhZ3MpOwogCiAgICAgICBpZiAoVFJFRV9DT0RFIChmbnR5cGUp ID09IE1FVEhPRF9UWVBFKQogCXsKQEAgLTE5MTAsNiArMTkxMiw4IEBAIGR1bXBfcGFyYW1ldGVy cyAoY3h4X3ByZXR0eV9wcmludGVyICpwcCwgdHJlZSBwYXJtdHlwZXMsIGludCBmbGFncykKICAg Zm9yIChmaXJzdCA9IDE7IHBhcm10eXBlcyAhPSB2b2lkX2xpc3Rfbm9kZTsKICAgICAgICBwYXJt dHlwZXMgPSBUUkVFX0NIQUlOIChwYXJtdHlwZXMpKQogICAgIHsKKyAgICAgIGlmIChmaXJzdCAm JiBmbGFncyAmIFRGRl9YT0JKX0ZVTkMpCisJcHBfc3RyaW5nIChwcCwgInRoaXMgIik7CiAgICAg ICBpZiAoIWZpcnN0KQogCXBwX3NlcGFyYXRlX3dpdGhfY29tbWEgKHBwKTsKICAgICAgIGZpcnN0 ID0gMDsKQEAgLTM2ODUsNiArMzY4OSw4IEBAIGZ1bmN0aW9uX2NhdGVnb3J5ICh0cmVlIGZuKQog CXJldHVybiBfKCJJbiBkZXN0cnVjdG9yICVxRCIpOwogICAgICAgZWxzZSBpZiAoTEFNQkRBX0ZV TkNUSU9OX1AgKGZuKSkKIAlyZXR1cm4gXygiSW4gbGFtYmRhIGZ1bmN0aW9uIik7CisgICAgICBl bHNlIGlmIChERUNMX1hPQkpfTUVNQkVSX0ZVTkNfUCAoZm4pKQorCXJldHVybiBfKCJJbiBleHBs aWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICVxRCIpOwogICAgICAgZWxzZQogCXJldHVybiBf KCJJbiBtZW1iZXIgZnVuY3Rpb24gJXFEIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ2NjL2NwL3Bh cnNlci5jYyBiL2djYy9jcC9wYXJzZXIuY2MKaW5kZXggNGZiY2M1MmMyMjIuLjc3ZTFmNDA1YzYx IDEwMDY0NAotLS0gYS9nY2MvY3AvcGFyc2VyLmNjCisrKyBiL2djYy9jcC9wYXJzZXIuY2MKQEAg LTE2MDE5LDYgKzE2MDE5LDggQEAgY3BfcGFyc2VyX2RlY2xfc3BlY2lmaWVyX3NlcSAoY3BfcGFy c2VyKiBwYXJzZXIsCiAgIC8qIEFzc3VtZSBubyBjbGFzcyBvciBlbnVtZXJhdGlvbiB0eXBlIGlz IGRlY2xhcmVkLiAgKi8KICAgKmRlY2xhcmVzX2NsYXNzX29yX2VudW0gPSAwOwogCisgIC8qIEtl ZXAgYSB0b2tlbiB0aGF0IGFkZGl0aW9uYWxseSB3aWxsIGJlIHVzZWQgZm9yIGRpYWdub3N0aWNz LiAgKi8KKyAgY3BfdG9rZW4gKmZpcnN0X3NwZWNpZmllciA9IE5VTEw7CiAgIC8qIEtlZXAgcmVh ZGluZyBzcGVjaWZpZXJzIHVudGlsIHRoZXJlIGFyZSBubyBtb3JlIHRvIHJlYWQuICAqLwogICB3 aGlsZSAodHJ1ZSkKICAgICB7CkBAIC0xNjA5MSwxMiArMTYwOTMsNDIgQEAgY3BfcGFyc2VyX2Rl Y2xfc3BlY2lmaWVyX3NlcSAoY3BfcGFyc2VyKiBwYXJzZXIsCiAJICAgIGRlY2xfc3BlY3MtPmxv Y2F0aW9uc1tkc19hdHRyaWJ1dGVdID0gdG9rZW4tPmxvY2F0aW9uOwogCSAgY29udGludWU7CiAJ fQorICAgICAgLyogV2Uga25vdyBieSB0aGlzIHBvaW50IHRoYXQgdGhlIHRva2VuIGlzIG5vdCBw YXJ0IG9mIGFuIGF0dHJpYnV0ZS4gICovCisgICAgICBpZiAoIWZpcnN0X3NwZWNpZmllcikKKwlm aXJzdF9zcGVjaWZpZXIgPSB0b2tlbjsKICAgICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgInRoaXMi IHNwZWNpZmllciwgaW5kaWNhdGluZyBhIHBhcm0gaXMgYW4geG9iaiBwYXJtLgogCSBUaGUgInRo aXMiIHNwZWNpZmllciBtdXN0IGJlIHRoZSBmaXJzdCBzcGVjaWZpZXIgaW4gdGhlIGRlY2xhcmF0 aW9uLAogCSBhZnRlciBhbnkgYXR0cmlidXRlcy4gICovCiAgICAgICBpZiAodG9rZW4tPmtleXdv cmQgPT0gUklEX1RISVMpCiAJewogCSAgY3BfbGV4ZXJfY29uc3VtZV90b2tlbiAocGFyc2VyLT5s ZXhlcik7CisJICBpZiAodG9rZW4gIT0gZmlyc3Rfc3BlY2lmaWVyKQorCSAgICB7CisJICAgICAg LyogRG9uJ3QgZW1pdCBkaWFnbm9zdGljcyBpZiB3ZSBoYXZlIGFscmVhZHkgc2VlbiAidGhpcyIs CisJCSBsZWF2ZSBpdCBmb3Igc2V0X2FuZF9jaGVja19kZWNsX3NwZWNfbG9jLiAgKi8KKwkgICAg ICBpZiAoZGVjbF9zcGVjcy0+bG9jYXRpb25zW2RzX3RoaXNdID09IDApCisJCXsKKwkJICBnY2Nf cmljaF9sb2NhdGlvbiByaWNobG9jICh0b2tlbi0+bG9jYXRpb24pOworCQkgIC8qIElkZWFsbHkg d2Ugc3ludGhlc2l6ZSBhIGZ1bGwgcmV3cml0ZSwgYXQgdGhlIG1vbWVudAorCQkgICAgIHRoZXJl IGFyZSBpc3N1ZXMgd2l0aCBpdCB0aG91Z2guCisJCSAgICAgSXQgcmV3cml0ZXMgImYoUyB0aGlz ICYgcykiIGNvcnJlY3RseSwKKwkJICAgICBidXQgZmFpbHMgdG8gcmV3cml0ZSAiZihjb25zdCB0 aGlzIFMgcykiIGNvcnJlY3RseS4KKwkJICAgICBJdCBhbHNvIGRvZXMgbm90IGhhbmRsZSAiZihT JiB0aGlzIHMpIiBjb3JyZWN0bHkgYXQgYWxsLgorCisJCSAgICAgSXQncyBhbHNvIHBvc3NpYmxl IHdlIHdhbnQgdG8gd2FpdCBhbmQgc2VlIGlmIHRoZSBwYXJtCisJCSAgICAgY291bGQgZXZlbiBi ZSBhIHZhbGlkIHhvYmogcGFybSBhcyBpdCBtaWdodCBiZSBjb25mdXNpbmcKKwkJICAgICB0byB0 aGUgdXNlciB0byBzZWUgYW4gZXJyb3IsIGZpeCBpdCwgYW5kIHRoZW4gc2VlIGFub3RoZXIKKwkJ ICAgICBlcnJvciBmb3Igc29tZXRoaW5nIG5ldy4KKworCQkgICAgIEluIHNob3J0LCB0aGlzIGFy ZWEgbmVlZHMgaW1wcm92ZW1lbnQuICAqLworCQkgIHJpY2hsb2MuYWRkX2ZpeGl0X2luc2VydF9i ZWZvcmUKKwkJICAgIChmaXJzdF9zcGVjaWZpZXItPmxvY2F0aW9uLCAidGhpcyAiKTsKKwkJICBy aWNobG9jLmFkZF9maXhpdF9yZW1vdmUgKCk7CisJCSAgZXJyb3JfYXQgKCZyaWNobG9jLAorCQkJ ICAgICIlPHRoaXMlPiBtdXN0IGJlIHRoZSBmaXJzdCBzcGVjaWZpZXIgIgorCQkJICAgICJpbiBh IHBhcmFtZXRlciBkZWNsYXJhdGlvbiIpOworCQl9CisJICAgIH0KIAkgIHNldF9hbmRfY2hlY2tf ZGVjbF9zcGVjX2xvYyAoZGVjbF9zcGVjcywgZHNfdGhpcywgdG9rZW4pOwogCSAgY29udGludWU7 CiAJfQpAQCAtMjU1MDcsNiArMjU1MzksMTkgQEAgY3BfcGFyc2VyX3BhcmFtZXRlcl9kZWNsYXJh dGlvbiAoY3BfcGFyc2VyICpwYXJzZXIsCiAKICAgaWYgKGRlY2xfc3BlY19zZXFfaGFzX3NwZWNf cCAoJmRlY2xfc3BlY2lmaWVycywgZHNfdGhpcykpCiAgICAgeworICAgICAgaWYgKGRlZmF1bHRf YXJndW1lbnQpCisJeworCSAgLyogSWYgZGVmYXVsdF9hcmd1bWVudCBpcyBub24tbnVsbCB0b2tl biBzaG91bGQgYWx3YXlzIGJlIHRoZQorCSAgICAgdGhlIGxvY2F0aW9uIG9mIHRoZSBgPScgdG9r ZW4sIHRoaXMgaXMgYnJpdHRsZSBjb2RlIHRob3VnaAorCSAgICAgYW5kIHNob3VsZCBiZSByZWN0 aWZpZWQgaW4gdGhlIGZ1dHVyZS4gICovCisJICBsb2NhdGlvbl90IHBhcmFtX3dpdGhfaW5pdF9s b2MKKwkgICAgPSBtYWtlX2xvY2F0aW9uICh0b2tlbi0+bG9jYXRpb24sCisJCQkgICAgIGRlY2xf c3BlY190b2tlbl9zdGFydC0+bG9jYXRpb24sCisJCQkgICAgIGlucHV0X2xvY2F0aW9uKTsKKwkg IGVycm9yX2F0IChwYXJhbV93aXRoX2luaXRfbG9jLAorCQkgICAgImFuIGV4cGxpY2l0IG9iamVj dCBwYXJhbWV0ZXIgIgorCQkgICAgIm1heSBub3QgaGF2ZSBhIGRlZmF1bHQgYXJndW1lbnQiKTsK Kwl9CiAgICAgICAvKiBYb2JqIHBhcmFtZXRlcnMgY2FuIG5vdCBoYXZlIGRlZmF1bHQgYXJndW1l bnRzLCB0aHVzCiAJIHdlIGNhbiByZXVzZSB0aGUgZGVmYXVsdCBhcmd1bWVudCBmaWVsZCB0byBm bGFnIHRoZSBwYXJhbSBhcyBzdWNoLiAgKi8KICAgICAgIGRlZmF1bHRfYXJndW1lbnQgPSB0aGlz X2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9nY2MvY3Avc2VtYW50aWNzLmNjIGIvZ2NjL2NwL3Nl bWFudGljcy5jYwppbmRleCA1MjA0NGJlN2FmOC4uMDU4OGVkMjVkMmMgMTAwNjQ0Ci0tLSBhL2dj Yy9jcC9zZW1hbnRpY3MuY2MKKysrIGIvZ2NjL2NwL3NlbWFudGljcy5jYwpAQCAtMzA4NSw3ICsz MDg1LDMzIEBAIGZpbmlzaF90aGlzX2V4cHIgKHZvaWQpCiAgICAgcmV0dXJuIHJ2YWx1ZSAocmVz dWx0KTsKIAogICB0cmVlIGZuID0gY3VycmVudF9ub25sYW1iZGFfZnVuY3Rpb24gKCk7Ci0gIGlm IChmbiAmJiBERUNMX1NUQVRJQ19GVU5DVElPTl9QIChmbikpCisgIGlmIChmbiAmJiBERUNMX1hP QkpfTUVNQkVSX0ZVTkNfUCAoZm4pKQorICAgIHsKKyAgICAgIC8qIEkgY2FuIGltYWdpbmUgZG9p bmcgYSBmaXhpdCBoZXJlLCBzdWdnZXN0aW5nIHJlcGxhY2luZworCSB0aGlzIC8gKnRoaXMgLyB0 aGlzLT4gd2l0aCAmbmFtZSAvIG5hbWUgLyAibmFtZS4iIGJ1dCBpdCB3b3VsZCBiZQorCSB2ZXJ5 IGRpZmZpY3VsdCB0byBnZXQgaXQgcGVyZmVjdCBhbmQgSSd2ZSBiZWVuIGFkdmlzZWQgYWdhaW5z dAorCSBtYWtpbmcgaW1wZXJmZWN0IGZpeGl0cy4KKwkgUGVyaGFwcyBpdCB3b3VsZCBiZSBhcyBz aW1wbGUgYXMgdGhlIHJlcGxhY2VtZW50cyBsaXN0ZWQsCisJIGV2ZW4gaWYgb25lIGlzIG1vdmUn aW5nL2ZvcndhcmQnaW5nLCBpZiB0aGUgcmVwbGFjZW1lbnQgaXMganVzdAorCSBkb25lIGluIHRo ZSBzYW1lIHBsYWNlLCBpdCB3aWxsIGJlIGV4YWN0bHkgd2hhdCB0aGUgdXNlciB3YW50cz8KKwkg RXZlbiBpZiB0aGlzIGlzIHRydWUgdGhvdWdoLCB0aGVyZSdzIHN0aWxsIGEgcHJvYmxlbSBvZiBn ZXR0aW5nIHRoZQorCSBjb250ZXh0IG9mIHRoZSBleHByZXNzaW9uIHRvIGZpbmQgd2hpY2ggdG9r ZW5zIHRvIHJlcGxhY2UuCisJIEkgd291bGQgcmVhbGx5IGxpa2UgZm9yIHRoaXMgdG8gYmUgcG9z c2libGUgdGhvdWdoLgorCSBJIHdpbGwgZGVjaWRlIHdoZXRoZXIgb3Igbm90IHRvIHBlcnN1ZSB0 aGlzIGFmdGVyIHJldmlldy4gICovCisgICAgICB0cmVlIHhvYmpfcGFybSA9IEZVTkNUSU9OX0RF Q0xfQ0hFQ0sgKGZuKS0+ZnVuY3Rpb25fZGVjbC5hcmd1bWVudHM7CisgICAgICB0cmVlIHBhcm1f bmFtZSA9IERFQ0xfTUlOSU1BTF9DSEVDSyAoeG9ial9wYXJtKS0+ZGVjbF9taW5pbWFsLm5hbWU7 CisJZXJyb3IgKCIlPHRoaXMlPiBpcyB1bmF2YWlsYWJsZSBmb3IgZXhwbGljaXQgb2JqZWN0IG1l bWJlciAiCisJICAgICAgICJmdW5jdGlvbnMiKTsKKyAgICAgIGlmIChwYXJtX25hbWUpCisJaW5m b3JtIChERUNMX1NPVVJDRV9MT0NBVElPTiAoeG9ial9wYXJtKSwKKwkJInVzZSBleHBsaWNpdCBv YmplY3QgcGFyYW1ldGVyICVxRCBpbnN0ZWFkIiwKKwkJcGFybV9uYW1lKTsKKyAgICAgIGVsc2UK KwlpbmZvcm0gKERFQ0xfU09VUkNFX0xPQ0FUSU9OICh4b2JqX3Bhcm0pLAorCQkibmFtZSBhbmQg dXNlIHRoZSBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIGluc3RlYWQiKTsKKwkvKiBNYXliZSBz dWdnZXN0IHNlbGYgYXMgYSBuYW1lIGhlcmU/ICAqLworICAgIH0KKyAgZWxzZSBpZiAoZm4gJiYg REVDTF9TVEFUSUNfRlVOQ1RJT05fUCAoZm4pKQogICAgIGVycm9yICgiJTx0aGlzJT4gaXMgdW5h dmFpbGFibGUgZm9yIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zIik7CiAgIGVsc2UgaWYgKGZuICYm IHByb2Nlc3NpbmdfY29udHJhY3RfY29uZGl0aW9uICYmIERFQ0xfQ09OU1RSVUNUT1JfUCAoZm4p KQogICAgIGVycm9yICgiaW52YWxpZCB1c2Ugb2YgJTx0aGlzJT4gYmVmb3JlIGl0IGlzIHZhbGlk Iik7CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmot Y3h4LWRpYWxlY3QtQS5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LWN4eC1kaWFsZWN0LUEuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MDMzNzQ1ZDU3ODQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAy My9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtQS5DCkBAIC0wLDAgKzEsNiBAQAorLy8gUDA4NDdS NworLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIzIH0gfQorCitzdHJ1Y3QgUyB7Cisg ICAgdm9pZCBmKHRoaXMgUyk7IC8vIHsgZGctYm9ndXMge2V4cGxpY2l0IG9iamVjdCBtZW1iZXIg ZnVuY3Rpb24gb25seSBhdmFpbGFibGUgd2l0aCAnLXN0ZD1jXCtcKzIzJyBvciAnLXN0ZD1nbnVc K1wrMjMnfSB9Cit9OwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhw bGljaXQtb2JqLWN4eC1kaWFsZWN0LUIuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4 cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1CLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmE0Mjc1MDZiNjFlCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWN4eC1kaWFsZWN0LUIuQwpAQCAtMCwwICsxLDcgQEAK Ky8vIFAwODQ3UjcKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyMF9kb3duIH0gfQor Ly8geyBkZy1vcHRpb25zICItcGVkYW50aWMtZXJyb3JzIiB9CisKK3N0cnVjdCBTIHsKKyAgICB2 b2lkIGYodGhpcyBTKTsgLy8geyBkZy1lcnJvciB7ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5j dGlvbiBvbmx5IGF2YWlsYWJsZSB3aXRoICctc3RkPWNcK1wrMjMnIG9yICctc3RkPWdudVwrXCsy Myd9IH0KK307CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNp dC1vYmotY3h4LWRpYWxlY3QtQy5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGlj aXQtb2JqLWN4eC1kaWFsZWN0LUMuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uZWQ2MjU5YjcwY2QKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5k Zy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtQy5DCkBAIC0wLDAgKzEsNyBAQAorLy8g UDA4NDdSNworLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIwX2Rvd24gfSB9CisvLyB7 IGRnLW9wdGlvbnMgIi1Xbm8tZXJyb3I9cGVkYW50aWMiIH0KKworc3RydWN0IFMgeworICAgIHZv aWQgZih0aGlzIFMpOyAvLyB7IGRnLXdhcm5pbmcge2V4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVu Y3Rpb24gb25seSBhdmFpbGFibGUgd2l0aCAnLXN0ZD1jXCtcKzIzJyBvciAnLXN0ZD1nbnVcK1wr MjMnfSB9Cit9OwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGlj aXQtb2JqLWN4eC1kaWFsZWN0LUQuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxp Y2l0LW9iai1jeHgtZGlhbGVjdC1ELkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmRjY2IwY2YwN2RmCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvY3BwMjMvZXhwbGljaXQtb2JqLWN4eC1kaWFsZWN0LUQuQwpAQCAtMCwwICsxLDcgQEAKKy8v IFAwODQ3UjcKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyMF9kb3duIH0gfQorLy8g eyBkZy1vcHRpb25zICItV25vLWMrKzIzLWV4dGVuc2lvbnMiIH0KKworc3RydWN0IFMgeworICAg IHZvaWQgZih0aGlzIFMpOyAvLyB7IGRnLWJvZ3VzIHtleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1 bmN0aW9uIG9ubHkgYXZhaWxhYmxlIHdpdGggJy1zdGQ9Y1wrXCsyMycgb3IgJy1zdGQ9Z251XCtc KzIzJ30gfQorfTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxp Y2l0LW9iai1jeHgtZGlhbGVjdC1FLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBs aWNpdC1vYmotY3h4LWRpYWxlY3QtRS5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi4xOTI0MjEyZmIyMwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysr LmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1FLkMKQEAgLTAsMCArMSw3IEBACisv LyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgYysrMjBfZG93biB9IH0KKy8v IHsgZGctb3B0aW9ucyAiLVduby1jKysyMy1leHRlbnNpb25zIC1wZWRhbnRpYy1lcnJvcnMiIH0K Kworc3RydWN0IFMgeworICAgIHZvaWQgZih0aGlzIFMpOyAvLyB7IGRnLWJvZ3VzIHtleHBsaWNp dCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIG9ubHkgYXZhaWxhYmxlIHdpdGggJy1zdGQ9Y1wrXCsy Mycgb3IgJy1zdGQ9Z251XCtcKzIzJ30gfQorfTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv ZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1kaWFnbm9zdGljczEuQyBiL2djYy90ZXN0c3VpdGUv ZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1kaWFnbm9zdGljczEuQwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uN2I5NGY3ZTljMTIKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3MxLkMKQEAg LTAsMCArMSwxMzggQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBj KysyMyB9IH0KKworLy8gcmVqZWN0aW9uIGFuZCBkaWFnbm9zaXMgb2YgeG9iaiBtZW1iZXIgZnVu Y3Rpb25zIHRoYXQgaGF2ZSBtZW1iZXIgZnVuY3Rpb24gcXVhbGlmaWVycy4KKworc3RydWN0IFMg eworICAgIHZvaWQgZl92YWx1ZV8wKHRoaXMgUykgY29uc3Q7ICAgICAgICAgICAgIC8vIHsgZGct ZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxy XF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdmFsdWVfMSh0aGlz IFMpIHZvbGF0aWxlOyAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVt YmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlm aWVyIiB9CisgICAgdm9pZCBmX3ZhbHVlXzIodGhpcyBTKSBjb25zdCB2b2xhdGlsZTsgICAgLy8g eyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxb XlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92YWx1ZV8z KHRoaXMgUykgJjsgICAgICAgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVj dCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYt cXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3ZhbHVlXzQodGhpcyBTKSAmJjsgICAgICAgICAgICAg ICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3Rh dGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIHJlZi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZf dmFsdWVfNSh0aGlzIFMpIGNvbnN0ICY7ICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNp dCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhh dmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3ZhbHVlXzYodGhpcyBTKSBjb25z dCAmJjsgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5j dGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmll ciIgfQorICAgIHZvaWQgZl92YWx1ZV83KHRoaXMgUykgdm9sYXRpbGUgJjsgICAgICAgIC8vIHsg ZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15c blxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdmFs dWVfOCh0aGlzIFMpIHZvbGF0aWxlICYmOyAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBv YmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUg KHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3ZhbHVlXzkodGhpcyBTKSBjb25zdCB2 b2xhdGlsZSAmOyAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlv biAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIg fQorICAgIHZvaWQgZl92YWx1ZV9BKHRoaXMgUykgY29uc3Qgdm9sYXRpbGUgJiY7IC8vIHsgZGct ZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxy XF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKworICAgIHZvaWQgZl9yZWZf MCh0aGlzIFMmKSBjb25zdDsgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2Jq ZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2 LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9yZWZfMSh0aGlzIFMmKSB2b2xhdGlsZTsgICAgICAg ICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3Rh dGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9y ZWZfMih0aGlzIFMmKSBjb25zdCB2b2xhdGlsZTsgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQg b2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZl IGN2LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9yZWZfMyh0aGlzIFMmKSAmOyAgICAgICAgICAg ICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8h c3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIHJlZi1xdWFsaWZpZXIiIH0KKyAgICB2b2lk IGZfcmVmXzQodGhpcyBTJikgJiY7ICAgICAgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxp Y2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3Qg aGF2ZSByZWYtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3JlZl81KHRoaXMgUyYpIGNvbnN0ICY7 ICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9u ICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9 CisgICAgdm9pZCBmX3JlZl82KHRoaXMgUyYpIGNvbnN0ICYmOyAgICAgICAgICAvLyB7IGRnLWVy cm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxd KycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3JlZl83KHRo aXMgUyYpIHZvbGF0aWxlICY7ICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3Qg bWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxj diktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3JlZl84KHRoaXMgUyYpIHZvbGF0aWxlICYmOyAg ICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFz dGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAg dm9pZCBmX3JlZl85KHRoaXMgUyYpIGNvbnN0IHZvbGF0aWxlICY7ICAvLyB7IGRnLWVycm9yICJl eHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fu bm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3JlZl9BKHRoaXMgUyYp IGNvbnN0IHZvbGF0aWxlICYmOyAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVy IGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVh bGlmaWVyIiB9CisKKyAgICB2b2lkIGZfcmVmcmVmXzAodGhpcyBTJiYpIGNvbnN0OyAgICAgICAg ICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFz dGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBm X3JlZnJlZl8xKHRoaXMgUyYmKSB2b2xhdGlsZTsgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhw bGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5v dCBoYXZlIGN2LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9yZWZyZWZfMih0aGlzIFMmJikgY29u c3Qgdm9sYXRpbGU7ICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVu Y3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0K KyAgICB2b2lkIGZfcmVmcmVmXzModGhpcyBTJiYpICY7ICAgICAgICAgICAgICAgICAvLyB7IGRn LWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5c clxdKycgY2Fubm90IGhhdmUgcmVmLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9yZWZyZWZfNCh0 aGlzIFMmJikgJiY7ICAgICAgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVj dCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYt cXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3JlZnJlZl81KHRoaXMgUyYmKSBjb25zdCAmOyAgICAg ICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8h c3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAg IHZvaWQgZl9yZWZyZWZfNih0aGlzIFMmJikgY29uc3QgJiY7ICAgICAgICAgIC8vIHsgZGctZXJy b3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0r JyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfcmVmcmVmXzco dGhpcyBTJiYpIHZvbGF0aWxlICY7ICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmpl Y3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJl ZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3JlZnJlZl84KHRoaXMgUyYmKSB2b2xhdGls ZSAmJjsgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlv biAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIg fQorICAgIHZvaWQgZl9yZWZyZWZfOSh0aGlzIFMmJikgY29uc3Qgdm9sYXRpbGUgJjsgIC8vIHsg ZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15c blxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfcmVm cmVmX0EodGhpcyBTJiYpIGNvbnN0IHZvbGF0aWxlICYmOyAvLyB7IGRnLWVycm9yICJleHBsaWNp dCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhh dmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisKKyAgICB2b2lkIGZfY3JlZl8wKHRoaXMgUyBjb25z dCYpIGNvbnN0OyAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVt YmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlm aWVyIiB9CisgICAgdm9pZCBmX2NyZWZfMSh0aGlzIFMgY29uc3QmKSB2b2xhdGlsZTsgICAgICAg ICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3Rh dGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9j cmVmXzIodGhpcyBTIGNvbnN0JikgY29uc3Qgdm9sYXRpbGU7ICAgIC8vIHsgZGctZXJyb3IgImV4 cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5u b3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3JlZl8zKHRoaXMgUyBjb25zdCYp ICY7ICAgICAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVy IGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgcmVmLXF1YWxpZmll ciIgfQorICAgIHZvaWQgZl9jcmVmXzQodGhpcyBTIGNvbnN0JikgJiY7ICAgICAgICAgICAgICAg IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRp YylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2Ny ZWZfNSh0aGlzIFMgY29uc3QmKSBjb25zdCAmOyAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhw bGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5v dCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9jcmVmXzYodGhpcyBTIGNv bnN0JikgY29uc3QgJiY7ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBt ZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2 KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3JlZl83KHRoaXMgUyBjb25zdCYpIHZvbGF0aWxl ICY7ICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9u ICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9 CisgICAgdm9pZCBmX2NyZWZfOCh0aGlzIFMgY29uc3QmKSB2b2xhdGlsZSAmJjsgICAgICAgLy8g eyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxb XlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9j cmVmXzkodGhpcyBTIGNvbnN0JikgY29uc3Qgdm9sYXRpbGUgJjsgIC8vIHsgZGctZXJyb3IgImV4 cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5u b3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3JlZl9BKHRoaXMgUyBj b25zdCYpIGNvbnN0IHZvbGF0aWxlICYmOyAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3Qg bWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxj diktcXVhbGlmaWVyIiB9CisKKyAgICB2b2lkIGZfY3JlZnJlZl8wKHRoaXMgUyBjb25zdCYmKSBj b25zdDsgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBm dW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIg fQorICAgIHZvaWQgZl9jcmVmcmVmXzEodGhpcyBTIGNvbnN0JiYpIHZvbGF0aWxlOyAgICAgICAg ICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0 aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2Ny ZWZyZWZfMih0aGlzIFMgY29uc3QmJikgY29uc3Qgdm9sYXRpbGU7ICAgIC8vIHsgZGctZXJyb3Ig ImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBj YW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3JlZnJlZl8zKHRoaXMgUyBj b25zdCYmKSAmOyAgICAgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0 IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIHJlZi1x dWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3JlZnJlZl80KHRoaXMgUyBjb25zdCYmKSAmJjsgICAg ICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlv biAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIHJlZi1xdWFsaWZpZXIiIH0KKyAg ICB2b2lkIGZfY3JlZnJlZl81KHRoaXMgUyBjb25zdCYmKSBjb25zdCAmOyAgICAgICAgICAgLy8g eyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxb XlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9j cmVmcmVmXzYodGhpcyBTIGNvbnN0JiYpIGNvbnN0ICYmOyAgICAgICAgICAvLyB7IGRnLWVycm9y ICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycg Y2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2NyZWZyZWZfNyh0 aGlzIFMgY29uc3QmJikgdm9sYXRpbGUgJjsgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0 IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2 ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3JlZnJlZl84KHRoaXMgUyBjb25z dCYmKSB2b2xhdGlsZSAmJjsgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1l bWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3Yp LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9jcmVmcmVmXzkodGhpcyBTIGNvbnN0JiYpIGNvbnN0 IHZvbGF0aWxlICY7ICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0 aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVy IiB9CisgICAgdm9pZCBmX2NyZWZyZWZfQSh0aGlzIFMgY29uc3QmJikgY29uc3Qgdm9sYXRpbGUg JiY7IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0 YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKworICAg IHZvaWQgZl92cmVmXzAodGhpcyBTIHZvbGF0aWxlJikgY29uc3Q7ICAgICAgICAgICAgIC8vIHsg ZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15c blxyXF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdnJlZl8xKHRo aXMgUyB2b2xhdGlsZSYpIHZvbGF0aWxlOyAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNp dCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhh dmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3ZyZWZfMih0aGlzIFMgdm9sYXRpbGUmKSBj b25zdCB2b2xhdGlsZTsgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBm dW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIg fQorICAgIHZvaWQgZl92cmVmXzModGhpcyBTIHZvbGF0aWxlJikgJjsgICAgICAgICAgICAgICAg IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRp YylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3Zy ZWZfNCh0aGlzIFMgdm9sYXRpbGUmKSAmJjsgICAgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAi ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNh bm5vdCBoYXZlIHJlZi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdnJlZl81KHRoaXMgUyB2b2xh dGlsZSYpIGNvbnN0ICY7ICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3Qg bWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxj diktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3ZyZWZfNih0aGlzIFMgdm9sYXRpbGUmKSBjb25z dCAmJjsgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5j dGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmll ciIgfQorICAgIHZvaWQgZl92cmVmXzcodGhpcyBTIHZvbGF0aWxlJikgdm9sYXRpbGUgJjsgICAg ICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0 YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2 b2lkIGZfdnJlZl84KHRoaXMgUyB2b2xhdGlsZSYpIHZvbGF0aWxlICYmOyAgICAgICAvLyB7IGRn LWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5c clxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3ZyZWZf OSh0aGlzIFMgdm9sYXRpbGUmKSBjb25zdCB2b2xhdGlsZSAmOyAgLy8geyBkZy1lcnJvciAiZXhw bGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5v dCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92cmVmX0EodGhpcyBTIHZv bGF0aWxlJikgY29uc3Qgdm9sYXRpbGUgJiY7IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVj dCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVm fGN2KS1xdWFsaWZpZXIiIH0KKworICAgIHZvaWQgZl92cmVmcmVmXzAodGhpcyBTIHZvbGF0aWxl JiYpIGNvbnN0OyAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVt YmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlm aWVyIiB9CisgICAgdm9pZCBmX3ZyZWZyZWZfMSh0aGlzIFMgdm9sYXRpbGUmJikgdm9sYXRpbGU7 ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24g Jyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2 b2lkIGZfdnJlZnJlZl8yKHRoaXMgUyB2b2xhdGlsZSYmKSBjb25zdCB2b2xhdGlsZTsgICAgLy8g eyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxb XlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92cmVmcmVm XzModGhpcyBTIHZvbGF0aWxlJiYpICY7ICAgICAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJl eHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fu bm90IGhhdmUgcmVmLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92cmVmcmVmXzQodGhpcyBTIHZv bGF0aWxlJiYpICYmOyAgICAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmpl Y3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgcmVm LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92cmVmcmVmXzUodGhpcyBTIHZvbGF0aWxlJiYpIGNv bnN0ICY7ICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1 bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlm aWVyIiB9CisgICAgdm9pZCBmX3ZyZWZyZWZfNih0aGlzIFMgdm9sYXRpbGUmJikgY29uc3QgJiY7 ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24g Jyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0K KyAgICB2b2lkIGZfdnJlZnJlZl83KHRoaXMgUyB2b2xhdGlsZSYmKSB2b2xhdGlsZSAmOyAgICAg ICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3Rh dGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZv aWQgZl92cmVmcmVmXzgodGhpcyBTIHZvbGF0aWxlJiYpIHZvbGF0aWxlICYmOyAgICAgICAvLyB7 IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFte XG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3Zy ZWZyZWZfOSh0aGlzIFMgdm9sYXRpbGUmJikgY29uc3Qgdm9sYXRpbGUgJjsgIC8vIHsgZGctZXJy b3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0r JyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdnJlZnJlZl9B KHRoaXMgUyB2b2xhdGlsZSYmKSBjb25zdCB2b2xhdGlsZSAmJjsgLy8geyBkZy1lcnJvciAiZXhw bGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5v dCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorCisgICAgdm9pZCBmX2N2cmVmXzAodGhpcyBT IGNvbnN0IHZvbGF0aWxlJikgY29uc3Q7ICAgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxp Y2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3Qg aGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3ZyZWZfMSh0aGlzIFMgY29uc3Qgdm9s YXRpbGUmKSB2b2xhdGlsZTsgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0 IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1 YWxpZmllciIgfQorICAgIHZvaWQgZl9jdnJlZl8yKHRoaXMgUyBjb25zdCB2b2xhdGlsZSYpIGNv bnN0IHZvbGF0aWxlOyAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1 bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9 CisgICAgdm9pZCBmX2N2cmVmXzModGhpcyBTIGNvbnN0IHZvbGF0aWxlJikgJjsgICAgICAgICAg ICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/ IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYtcXVhbGlmaWVyIiB9CisgICAgdm9p ZCBmX2N2cmVmXzQodGhpcyBTIGNvbnN0IHZvbGF0aWxlJikgJiY7ICAgICAgICAgICAgICAgIC8v IHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylc W15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2N2cmVm XzUodGhpcyBTIGNvbnN0IHZvbGF0aWxlJikgY29uc3QgJjsgICAgICAgICAgIC8vIHsgZGctZXJy b3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0r JyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3ZyZWZfNih0 aGlzIFMgY29uc3Qgdm9sYXRpbGUmKSBjb25zdCAmJjsgICAgICAgICAgLy8geyBkZy1lcnJvciAi ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNh bm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9jdnJlZl83KHRoaXMg UyBjb25zdCB2b2xhdGlsZSYpIHZvbGF0aWxlICY7ICAgICAgICAvLyB7IGRnLWVycm9yICJleHBs aWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90 IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2N2cmVmXzgodGhpcyBTIGNv bnN0IHZvbGF0aWxlJikgdm9sYXRpbGUgJiY7ICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0 IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2 ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3ZyZWZfOSh0aGlzIFMgY29uc3Qg dm9sYXRpbGUmKSBjb25zdCB2b2xhdGlsZSAmOyAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2Jq ZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChy ZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9jdnJlZl9BKHRoaXMgUyBjb25zdCB2b2xh dGlsZSYpIGNvbnN0IHZvbGF0aWxlICYmOyAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3Qg bWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxj diktcXVhbGlmaWVyIiB9CisKKyAgICB2b2lkIGZfY3ZyZWZyZWZfMCh0aGlzIFMgY29uc3Qgdm9s YXRpbGUmJikgY29uc3Q7ICAgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVj dCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSBjdi1x dWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3ZyZWZyZWZfMSh0aGlzIFMgY29uc3Qgdm9sYXRpbGUm Jikgdm9sYXRpbGU7ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1i ZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZp ZXIiIH0KKyAgICB2b2lkIGZfY3ZyZWZyZWZfMih0aGlzIFMgY29uc3Qgdm9sYXRpbGUmJikgY29u c3Qgdm9sYXRpbGU7ICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVu Y3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0K KyAgICB2b2lkIGZfY3ZyZWZyZWZfMyh0aGlzIFMgY29uc3Qgdm9sYXRpbGUmJikgJjsgICAgICAg ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24g Jyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYtcXVhbGlmaWVyIiB9CisgICAg dm9pZCBmX2N2cmVmcmVmXzQodGhpcyBTIGNvbnN0IHZvbGF0aWxlJiYpICYmOyAgICAgICAgICAg ICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFz dGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgcmVmLXF1YWxpZmllciIgfQorICAgIHZvaWQg Zl9jdnJlZnJlZl81KHRoaXMgUyBjb25zdCB2b2xhdGlsZSYmKSBjb25zdCAmOyAgICAgICAgICAg Ly8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGlj KVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQg Zl9jdnJlZnJlZl82KHRoaXMgUyBjb25zdCB2b2xhdGlsZSYmKSBjb25zdCAmJjsgICAgICAgICAg Ly8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGlj KVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQg Zl9jdnJlZnJlZl83KHRoaXMgUyBjb25zdCB2b2xhdGlsZSYmKSB2b2xhdGlsZSAmOyAgICAgICAg Ly8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGlj KVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQg Zl9jdnJlZnJlZl84KHRoaXMgUyBjb25zdCB2b2xhdGlsZSYmKSB2b2xhdGlsZSAmJjsgICAgICAg Ly8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGlj KVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQg Zl9jdnJlZnJlZl85KHRoaXMgUyBjb25zdCB2b2xhdGlsZSYmKSBjb25zdCB2b2xhdGlsZSAmOyAg Ly8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGlj KVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQg Zl9jdnJlZnJlZl9BKHRoaXMgUyBjb25zdCB2b2xhdGlsZSYmKSBjb25zdCB2b2xhdGlsZSAmJjsg Ly8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGlj KVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorCisgICAgdGVt cGxhdGU8dHlwZW5hbWUgU2VsZj4gdm9pZCBkX3RlbXBsXzAodGhpcyBTZWxmJiYpIGNvbnN0OyAg ICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9u ICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9CisgICAg dGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gdm9pZCBkX3RlbXBsXzEodGhpcyBTZWxmJiYpIHZvbGF0 aWxlOyAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0 aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9Cisg ICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gdm9pZCBkX3RlbXBsXzIodGhpcyBTZWxmJiYpIGNv bnN0IHZvbGF0aWxlOyAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1 bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9 CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gdm9pZCBkX3RlbXBsXzModGhpcyBTZWxmJiYp ICY7ICAgICAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVy IGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgcmVmLXF1YWxpZmll ciIgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IHZvaWQgZF90ZW1wbF80KHRoaXMgU2Vs ZiYmKSAmJjsgICAgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1l bWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIHJlZi1xdWFs aWZpZXIiIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiB2b2lkIGRfdGVtcGxfNSh0aGlz IFNlbGYmJikgY29uc3QgJjsgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVj dCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVm fGN2KS1xdWFsaWZpZXIiIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiB2b2lkIGRfdGVt cGxfNih0aGlzIFNlbGYmJikgY29uc3QgJiY7ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxp Y2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3Qg aGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiB2 b2lkIGRfdGVtcGxfNyh0aGlzIFNlbGYmJikgdm9sYXRpbGUgJjsgICAgICAgIC8vIHsgZGctZXJy b3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0r JyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt ZSBTZWxmPiB2b2lkIGRfdGVtcGxfOCh0aGlzIFNlbGYmJikgdm9sYXRpbGUgJiY7ICAgICAgIC8v IHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylc W15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB0ZW1wbGF0 ZTx0eXBlbmFtZSBTZWxmPiB2b2lkIGRfdGVtcGxfOSh0aGlzIFNlbGYmJikgY29uc3Qgdm9sYXRp bGUgJjsgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/ IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAg ICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiB2b2lkIGRfdGVtcGxfQSh0aGlzIFNlbGYmJikgY29u c3Qgdm9sYXRpbGUgJiY7IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVu Y3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZp ZXIiIH0KKworICAgIHZvaWQgZF9hdXRvXzAodGhpcyBhdXRvJiYpIGNvbnN0OyAgICAgICAgICAg ICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0 aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBkX2F1 dG9fMSh0aGlzIGF1dG8mJikgdm9sYXRpbGU7ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxp Y2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3Qg aGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGRfYXV0b18yKHRoaXMgYXV0byYmKSBjb25z dCB2b2xhdGlsZTsgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5j dGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIgfQor ICAgIHZvaWQgZF9hdXRvXzModGhpcyBhdXRvJiYpICY7ICAgICAgICAgICAgICAgICAvLyB7IGRn LWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5c clxdKycgY2Fubm90IGhhdmUgcmVmLXF1YWxpZmllciIgfQorICAgIHZvaWQgZF9hdXRvXzQodGhp cyBhdXRvJiYpICYmOyAgICAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmpl Y3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgcmVm LXF1YWxpZmllciIgfQorICAgIHZvaWQgZF9hdXRvXzUodGhpcyBhdXRvJiYpIGNvbnN0ICY7ICAg ICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICco PyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9Cisg ICAgdm9pZCBkX2F1dG9fNih0aGlzIGF1dG8mJikgY29uc3QgJiY7ICAgICAgICAgIC8vIHsgZGct ZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxy XF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGRfYXV0b183 KHRoaXMgYXV0byYmKSB2b2xhdGlsZSAmOyAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQg b2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZl IChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZF9hdXRvXzgodGhpcyBhdXRvJiYpIHZv bGF0aWxlICYmOyAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1 bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlm aWVyIiB9CisgICAgdm9pZCBkX2F1dG9fOSh0aGlzIGF1dG8mJikgY29uc3Qgdm9sYXRpbGUgJjsg IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRp YylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lk IGRfYXV0b19BKHRoaXMgYXV0byYmKSBjb25zdCB2b2xhdGlsZSAmJjsgLy8geyBkZy1lcnJvciAi ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNh bm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorfTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1kaWFnbm9zdGljczIuQyBiL2djYy90ZXN0 c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1kaWFnbm9zdGljczIuQwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjA5ZjhkZWE1YTgKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3My LkMKQEAgLTAsMCArMSwyNSBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBjb21waWxlIHsgdGFy Z2V0IGMrKzIzIH0gfQorCisvLyByZWplY3Rpb24gYW5kIGRpYWdub3NpcyBvZiBpbmNvcnJlY3Qg dXNlcyBvZiAndGhpcycgaW4gZGVjbGFyYXRpb25zIGFuZCBkZWZpbml0aW9ucworCit1c2luZyBm dW5jX3R5cGUgPSB2b2lkKHRoaXMgaW50KTsgLy8geyBkZy1saW5lIGZ1bmNfdHlwZV9saW5lIH0K Ky8vIHsgZGctZXJyb3IgImEgZnVuY3Rpb24gdHlwZSBjYW5ub3QgaGF2ZSBhbiBleHBsaWNpdCBv YmplY3QgcGFyYW1ldGVyIiAiIiB7IHRhcmdldCAqLSotKiB9IGZ1bmNfdHlwZV9saW5lIH0KKy8v IHsgZGctbm90ZSAidGhlIHR5cGUgb2YgYW4gZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlv biBpcyBhIHJlZ3VsYXIgZnVuY3Rpb24gdHlwZSIgIiIgeyB0YXJnZXQgKi0qLSogfSBmdW5jX3R5 cGVfbGluZSB9CisKK3VzaW5nIGZ1bmNfcHRyX3R5cGUgPSB2b2lkKCopKHRoaXMgaW50KTsgLy8g eyBkZy1saW5lIGZ1bmNfcHRyX3R5cGVfbGluZSB9CisvLyB7IGRnLWVycm9yICJhIGZ1bmN0aW9u IHBvaW50ZXIgdHlwZSBjYW5ub3QgaGF2ZSBhbiBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIiAi IiB7IHRhcmdldCAqLSotKiB9IGZ1bmNfcHRyX3R5cGVfbGluZSB9CisvLyB7IGRnLW5vdGUgInRo ZSB0eXBlIG9mIGEgcG9pbnRlciB0byBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIGlz IGEgcmVndWxhciBwb2ludGVyIHRvIGZ1bmN0aW9uIHR5cGUiICIiIHsgdGFyZ2V0ICotKi0qIH0g ZnVuY19wdHJfdHlwZV9saW5lIH0KKworc3RydWN0IFMgeworICAgIHN0YXRpYyB2b2lkIGYodGhp cyBTKSB7fSAvLyB7IGRnLWxpbmUgc3RhdGljX21lbWJlcl9mdW5jX2xpbmUgfQorfTsKKy8vIHsg ZGctZXJyb3IgImFuIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gY2Fubm90IGJlICdz dGF0aWMnIiAiIiB7IHRhcmdldCAqLSotKiB9IHN0YXRpY19tZW1iZXJfZnVuY19saW5lIH0KKy8v IHsgZGctbm90ZSAiZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBkZWNsYXJlZCBoZXJlIiAiIiB7 IHRhcmdldCAqLSotKiB9IHN0YXRpY19tZW1iZXJfZnVuY19saW5lIH0KKwordXNpbmcgbWVtX2Z1 bmNfdHlwZSA9IHZvaWQgKFM6OiopKHRoaXMgUyYpOyAvLyB7IGRnLWxpbmUgbWVtX2Z1bmNfdHlw ZV9saW5lIH0KKy8vIHsgZGctZXJyb3IgImEgbWVtYmVyIGZ1bmN0aW9uIHBvaW50ZXIgdHlwZSBj YW5ub3QgaGF2ZSBhbiBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIiAiIiB7IHRhcmdldCAqLSot KiB9IG1lbV9mdW5jX3R5cGVfbGluZSB9CisvLyB7IGRnLW5vdGUgInRoZSB0eXBlIG9mIGEgcG9p bnRlciB0byBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIGlzIGEgcmVndWxhciBwb2lu dGVyIHRvIGZ1bmN0aW9uIHR5cGUiICIiIHsgdGFyZ2V0ICotKi0qIH0gbWVtX2Z1bmNfdHlwZV9s aW5lIH0KKwordm9pZCBmKHRoaXMgaW50KTsgLy8geyBkZy1lcnJvciAiYSBmcmVlIGZ1bmN0aW9u IGNhbm5vdCBoYXZlIGFuIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIiIH0KK3ZvaWQgZih0aGlz IGludCkge30gLy8geyBkZy1lcnJvciAiYSBmcmVlIGZ1bmN0aW9uIGNhbm5vdCBoYXZlIGFuIGV4 cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIiIH0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysr LmRnL2NwcDIzL2V4cGxpY2l0LW9iai1kaWFnbm9zdGljczMuQyBiL2djYy90ZXN0c3VpdGUvZysr LmRnL2NwcDIzL2V4cGxpY2l0LW9iai1kaWFnbm9zdGljczMuQwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uNzBjNmE4MjVmNTgKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mv dGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3MzLkMKQEAgLTAs MCArMSw4NCBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIz IH0gfQorCisvLyByZWplY3Rpb24gYW5kIGRpYWdub3NpcyBvZiBlcXVpdmFsZW50IHJlZGVjbGFy YXRpb25zIG9mIG1lbWJlciBmdW5jdGlvbnMKKworLy8geG9iaiByZWRlY2xhcmVkIGFzIGlvYmoK Kworc3RydWN0IFMwIHsKKyAgdm9pZCBmMCh0aGlzIFMwJik7IC8vIHsgZGctbm90ZSAicHJldmlv dXMgZGVjbGFyYXRpb24iIH0KKyAgdm9pZCBmMCgpOyAvLyB7IGRnLWVycm9yICJjYW5ub3QgYmUg b3ZlcmxvYWRlZCB3aXRoIiB9CisKKyAgdm9pZCBmMSh0aGlzIFMwIGNvbnN0Jik7IC8vIHsgZGct bm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24iICJkZXRlY3RpbmcgcmVkZWNsYXJhdGlvbnMgb2Yg eG9iaiBtZW1iZXIgZnVuY3Rpb25zIGFzIGlvYmogbWVtYmVyIGZ1bmN0aW9ucyB3aXRob3V0IGEg cmVmIHF1YWxpZmllciBpcyBrbm93biB0byBiZSBicm9rZW4iIHsgeGZhaWwgKi0qLSogfSB9Cisg IHZvaWQgZjEoKSBjb25zdDsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0 aCIgImRldGVjdGluZyByZWRlY2xhcmF0aW9ucyBvZiB4b2JqIG1lbWJlciBmdW5jdGlvbnMgYXMg aW9iaiBtZW1iZXIgZnVuY3Rpb25zIHdpdGhvdXQgYSByZWYgcXVhbGlmaWVyIGlzIGtub3duIHRv IGJlIGJyb2tlbiIgeyB4ZmFpbCAqLSotKiB9IH0KKworICB2b2lkIGYyKHRoaXMgUzAgdm9sYXRp bGUmKTsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgImRldGVjdGluZyByZWRl Y2xhcmF0aW9ucyBvZiB4b2JqIG1lbWJlciBmdW5jdGlvbnMgYXMgaW9iaiBtZW1iZXIgZnVuY3Rp b25zIHdpdGhvdXQgYSByZWYgcXVhbGlmaWVyIGlzIGtub3duIHRvIGJlIGJyb2tlbiIgeyB4ZmFp bCAqLSotKiB9IH0KKyAgdm9pZCBmMigpIHZvbGF0aWxlOyAvLyB7IGRnLWVycm9yICJjYW5ub3Qg YmUgb3ZlcmxvYWRlZCB3aXRoIiAiZGV0ZWN0aW5nIHJlZGVjbGFyYXRpb25zIG9mIHhvYmogbWVt YmVyIGZ1bmN0aW9ucyBhcyBpb2JqIG1lbWJlciBmdW5jdGlvbnMgd2l0aG91dCBhIHJlZiBxdWFs aWZpZXIgaXMga25vd24gdG8gYmUgYnJva2VuIiB7IHhmYWlsICotKi0qIH0gfQorCisgIHZvaWQg ZjModGhpcyBTMCBjb25zdCB2b2xhdGlsZSYpOyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xh cmF0aW9uIiAiZGV0ZWN0aW5nIHJlZGVjbGFyYXRpb25zIG9mIHhvYmogbWVtYmVyIGZ1bmN0aW9u cyBhcyBpb2JqIG1lbWJlciBmdW5jdGlvbnMgd2l0aG91dCBhIHJlZiBxdWFsaWZpZXIgaXMga25v d24gdG8gYmUgYnJva2VuIiB7IHhmYWlsICotKi0qIH0gfQorICB2b2lkIGYzKCkgY29uc3Qgdm9s YXRpbGU7IC8vIHsgZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiICJkZXRlY3Rp bmcgcmVkZWNsYXJhdGlvbnMgb2YgeG9iaiBtZW1iZXIgZnVuY3Rpb25zIGFzIGlvYmogbWVtYmVy IGZ1bmN0aW9ucyB3aXRob3V0IGEgcmVmIHF1YWxpZmllciBpcyBrbm93biB0byBiZSBicm9rZW4i IHsgeGZhaWwgKi0qLSogfSB9CisKKyAgdm9pZCBmNCh0aGlzIFMwJik7IC8vIHsgZGctbm90ZSAi cHJldmlvdXMgZGVjbGFyYXRpb24iIH0KKyAgdm9pZCBmNCgpICY7IC8vIHsgZGctZXJyb3IgImNh bm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KKworICB2b2lkIGY1KHRoaXMgUzAmJik7IC8vIHsg ZGctbm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24iIH0KKyAgdm9pZCBmNSgpICYmOyAvLyB7IGRn LWVycm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9CisKKyAgdm9pZCBmNih0aGlzIFMw IGNvbnN0Jik7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24iIH0KKyAgdm9pZCBm NigpIGNvbnN0JjsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQor CisgIHZvaWQgZjcodGhpcyBTMCBjb25zdCYmKTsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNs YXJhdGlvbiIgfQorICB2b2lkIGY3KCkgY29uc3QmJjsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJl IG92ZXJsb2FkZWQgd2l0aCIgfQorCisgIHZvaWQgZjgodGhpcyBTMCB2b2xhdGlsZSYpOyAvLyB7 IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZjgoKSB2b2xhdGlsZSY7 IC8vIHsgZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KKworICB2b2lkIGY5 KHRoaXMgUzAgdm9sYXRpbGUmJik7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24i IH0KKyAgdm9pZCBmOSgpIHZvbGF0aWxlJiY7IC8vIHsgZGctZXJyb3IgImNhbm5vdCBiZSBvdmVy bG9hZGVkIHdpdGgiIH0KKworICB2b2lkIGZBKHRoaXMgUzAgY29uc3Qgdm9sYXRpbGUmKTsgLy8g eyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2b2lkIGZBKCkgY29uc3Qgdm9s YXRpbGUmOyAvLyB7IGRnLWVycm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9CisKKyAg dm9pZCBmQih0aGlzIFMwIGNvbnN0IHZvbGF0aWxlJiYpOyAvLyB7IGRnLW5vdGUgInByZXZpb3Vz IGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZkIoKSBjb25zdCB2b2xhdGlsZSYmOyAvLyB7IGRnLWVy cm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9Cit9OworCisvLyBpb2JqIHJlZGVjbGFy ZWQgYXMgeG9iagorCitzdHJ1Y3QgUzEgeworICB2b2lkIGYwKCk7IC8vIHsgZGctbm90ZSAicHJl dmlvdXMgZGVjbGFyYXRpb24iIH0KKyAgdm9pZCBmMCh0aGlzIFMxJik7IC8vIHsgZGctZXJyb3Ig ImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KKworICB2b2lkIGYxKCkgY29uc3Q7IC8vIHsg ZGctbm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24iICJkZXRlY3RpbmcgcmVkZWNsYXJhdGlvbnMg b2YgaW9iaiBtZW1iZXIgZnVuY3Rpb25zIHdpdGhvdXQgYSByZWYgcXVhbGlmaWVyIGFzIHhvYmog bWVtYmVyIGZ1bmN0aW9ucyBpcyBrbm93biB0byBiZSBicm9rZW4iIHsgeGZhaWwgKi0qLSogfSB9 CisgIHZvaWQgZjEodGhpcyBTMSBjb25zdCYpOyAvLyB7IGRnLWVycm9yICJjYW5ub3QgYmUgb3Zl cmxvYWRlZCB3aXRoIiAiZGV0ZWN0aW5nIHJlZGVjbGFyYXRpb25zIG9mIGlvYmogbWVtYmVyIGZ1 bmN0aW9ucyB3aXRob3V0IGEgcmVmIHF1YWxpZmllciBhcyB4b2JqIG1lbWJlciBmdW5jdGlvbnMg aXMga25vd24gdG8gYmUgYnJva2VuIiB7IHhmYWlsICotKi0qIH0gfQorCisgIHZvaWQgZjIoKSB2 b2xhdGlsZTsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgImRldGVjdGluZyBy ZWRlY2xhcmF0aW9ucyBvZiBpb2JqIG1lbWJlciBmdW5jdGlvbnMgd2l0aG91dCBhIHJlZiBxdWFs aWZpZXIgYXMgeG9iaiBtZW1iZXIgZnVuY3Rpb25zIGlzIGtub3duIHRvIGJlIGJyb2tlbiIgeyB4 ZmFpbCAqLSotKiB9IH0KKyAgdm9pZCBmMih0aGlzIFMxIHZvbGF0aWxlJik7IC8vIHsgZGctZXJy b3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiICJkZXRlY3RpbmcgcmVkZWNsYXJhdGlvbnMg b2YgaW9iaiBtZW1iZXIgZnVuY3Rpb25zIHdpdGhvdXQgYSByZWYgcXVhbGlmaWVyIGFzIHhvYmog bWVtYmVyIGZ1bmN0aW9ucyBpcyBrbm93biB0byBiZSBicm9rZW4iIHsgeGZhaWwgKi0qLSogfSB9 CisKKyAgdm9pZCBmMygpIGNvbnN0IHZvbGF0aWxlOyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRl Y2xhcmF0aW9uIiAiZGV0ZWN0aW5nIHJlZGVjbGFyYXRpb25zIG9mIGlvYmogbWVtYmVyIGZ1bmN0 aW9ucyB3aXRob3V0IGEgcmVmIHF1YWxpZmllciBhcyB4b2JqIG1lbWJlciBmdW5jdGlvbnMgaXMg a25vd24gdG8gYmUgYnJva2VuIiB7IHhmYWlsICotKi0qIH0gfQorICB2b2lkIGYzKHRoaXMgUzEg Y29uc3Qgdm9sYXRpbGUmKTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0 aCIgImRldGVjdGluZyByZWRlY2xhcmF0aW9ucyBvZiBpb2JqIG1lbWJlciBmdW5jdGlvbnMgd2l0 aG91dCBhIHJlZiBxdWFsaWZpZXIgYXMgeG9iaiBtZW1iZXIgZnVuY3Rpb25zIGlzIGtub3duIHRv IGJlIGJyb2tlbiIgeyB4ZmFpbCAqLSotKiB9IH0KKworICB2b2lkIGY0KCkgJjsgLy8geyBkZy1u b3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2b2lkIGY0KHRoaXMgUzEmKTsgLy8geyBk Zy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQorCisgIHZvaWQgZjUoKSAmJjsg Ly8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2b2lkIGY1KHRoaXMgUzEm Jik7IC8vIHsgZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KKworICB2b2lk IGY2KCkgY29uc3QmOyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZv aWQgZjYodGhpcyBTMSBjb25zdCYpOyAvLyB7IGRnLWVycm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRl ZCB3aXRoIiB9CisKKyAgdm9pZCBmNygpIGNvbnN0JiY7IC8vIHsgZGctbm90ZSAicHJldmlvdXMg ZGVjbGFyYXRpb24iIH0KKyAgdm9pZCBmNyh0aGlzIFMxIGNvbnN0JiYpOyAvLyB7IGRnLWVycm9y ICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9CisKKyAgdm9pZCBmOCgpIHZvbGF0aWxlJjsg Ly8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2b2lkIGY4KHRoaXMgUzEg dm9sYXRpbGUmKTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQor CisgIHZvaWQgZjkoKSB2b2xhdGlsZSYmOyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0 aW9uIiB9CisgIHZvaWQgZjkodGhpcyBTMSB2b2xhdGlsZSYmKTsgLy8geyBkZy1lcnJvciAiY2Fu bm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQorCisgIHZvaWQgZkEoKSBjb25zdCB2b2xhdGlsZSY7 IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24iIH0KKyAgdm9pZCBmQSh0aGlzIFMx IGNvbnN0IHZvbGF0aWxlJik7IC8vIHsgZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdp dGgiIH0KKworICB2b2lkIGZCKCkgY29uc3Qgdm9sYXRpbGUmJjsgLy8geyBkZy1ub3RlICJwcmV2 aW91cyBkZWNsYXJhdGlvbiIgfQorICB2b2lkIGZCKHRoaXMgUzEgY29uc3Qgdm9sYXRpbGUmJik7 IC8vIHsgZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KK307CmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M0 LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M0 LkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFmNzQzYTg1MDlmCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LWRpYWdub3N0aWNzNC5DCkBAIC0wLDAgKzEsMTkgQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8g Y29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gcmVqZWN0aW9uIGFuZCBkaWFnbm9zaXMg b2YgYW4geG9iaiBwYXJhbWV0ZXIgZGVjbGFyZWQgd2l0aCBhIGRlZmF1bHQgYXJndW1lbnQKKwor c3RydWN0IFMgeworICB2b2lkIGYwKHRoaXMgUyA9IHt9KSB7fSAvLyB7IGRnLWVycm9yICJhbiBl eHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIG1heSBub3QgaGF2ZSBhIGRlZmF1bHQgYXJndW1lbnQi IH0KKyAgdm9pZCBmMSh0aGlzIFMgPSB7fSk7IC8vIHsgZGctZXJyb3IgImFuIGV4cGxpY2l0IG9i amVjdCBwYXJhbWV0ZXIgbWF5IG5vdCBoYXZlIGEgZGVmYXVsdCBhcmd1bWVudCIgfQorICB2b2lk IGYyKHRoaXMgUyk7CisgIHZvaWQgZjEwKHRoaXMgUyBzID0ge30pIHt9IC8vIHsgZGctZXJyb3Ig ImFuIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgbWF5IG5vdCBoYXZlIGEgZGVmYXVsdCBhcmd1 bWVudCIgfQorICB2b2lkIGYxMSh0aGlzIFMgcyA9IHt9KTsgLy8geyBkZy1lcnJvciAiYW4gZXhw bGljaXQgb2JqZWN0IHBhcmFtZXRlciBtYXkgbm90IGhhdmUgYSBkZWZhdWx0IGFyZ3VtZW50IiB9 CisgIHZvaWQgZjEyKHRoaXMgUyBzKTsKK307CisKK3ZvaWQgUzo6ZjEodGhpcyBTKSB7fQordm9p ZCBTOjpmMih0aGlzIFMgPSB7fSkge30gLy8geyBkZy1lcnJvciAiYW4gZXhwbGljaXQgb2JqZWN0 IHBhcmFtZXRlciBtYXkgbm90IGhhdmUgYSBkZWZhdWx0IGFyZ3VtZW50IiB9CisKK3ZvaWQgUzo6 ZjExKHRoaXMgUyBzKSB7fQordm9pZCBTOjpmMTIodGhpcyBTIHMgPSB7fSkge30gLy8geyBkZy1l cnJvciAiYW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBtYXkgbm90IGhhdmUgYSBkZWZhdWx0 IGFyZ3VtZW50IiB9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBs aWNpdC1vYmotZGlhZ25vc3RpY3M1LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBs aWNpdC1vYmotZGlhZ25vc3RpY3M1LkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjY1YTVjNjNmMjBiCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzNS5DCkBAIC0wLDAgKzEsMTUgQEAKKy8v IFAwODQ3UjcKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gbG9j YXRpb24gZGlhZ25vc3RpYyB0ZXh0IHdoZW4gYW4gZXJyb3IgaXMgZW1pdHRlZCBmcm9tIGFuIHhv YmogbWVtYmVyIGZ1bmN0aW9uCisvLyB0aGlzIGRvZXMgbm90IHRlc3QgZm9yIHNwZWNpZmljIGls bC1mb3JtZWQgY29kZSwganVzdCB0aGUgYWRkaXRpb25hbCBkaWFnbm9zdGljIG1lc3NhZ2UKKwor Ly8geyBkZy1tZXNzYWdlICJJbiBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIiAiIiB7 IHRhcmdldCAqLSotKiB9IDAgfQorCitzdHJ1Y3QgUyB7CisgIHZvaWQgZih0aGlzIFMgcykgewor ICAgIC8vIFRoZSBzcGVjaWZpYyBkaWFnbm9zaXMgaXNzdWVkIGhlcmUgZG9lcyBub3QgbWF0dGVy CisgICAgLy8gd2UganVzdCBuZWVkIHRvIGZvcmNlIGFuIGVycm9yIHRvIGJlIGVtaXR0ZWQKKyAg ICArczsgLy8geyBkZy1lcnJvciAiIiB9CisgIH0KK307CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M2LkMgYi9nY2MvdGVzdHN1 aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M2LkMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU1NmQ2MjY1ZWExCi0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzNi5D CkBAIC0wLDAgKzEsMjIgQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdl dCBjKysyMyB9IH0KKworLy8gcmVqZWN0aW9uIGFuZCBkaWFnbm9zaXMgb2YgaW52YWxpZCB1c2Vz IG9mICd0aGlzJyBpbiBib2R5IG9mIHhvYmogbWVtYmVyIGZ1bmN0aW9ucworCisvLyB7IGRnLW1l c3NhZ2UgIkluIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24iICIiIHsgdGFyZ2V0ICot Ki0qIH0gMCB9CisKK3N0cnVjdCBTMCB7CisgIGludCBfbjsKKyAgdm9pZCBmKHRoaXMgUzAmIHMp IHsgLy8geyBkZy1ub3RlICJ1c2UgZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciAncycgaW5zdGVh ZCIgfSAKKyAgICB0aGlzLT5fbiA9IDEwOyAvLyB7IGRnLWVycm9yICIndGhpcycgaXMgdW5hdmFp bGFibGUgZm9yIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb25zIiB9CisgICAgLy8gc3Vw cHJlc3MgdW51c2VkIHZhcmlhYmxlIHdhcm5pbmcKKyAgICBzdGF0aWNfY2FzdDx2b2lkPihzKTsK KyAgfQorfTsKKworc3RydWN0IFMxIHsKKyAgaW50IF9uOworICB2b2lkIGYodGhpcyBTMSYpIHsg Ly8geyBkZy1ub3RlICJuYW1lIGFuZCB1c2UgdGhlIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIg aW5zdGVhZCIgfQorICAgIHRoaXMtPl9uID0gMTA7IC8vIHsgZGctZXJyb3IgIid0aGlzJyBpcyB1 bmF2YWlsYWJsZSBmb3IgZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbnMiIH0KKyAgfQor fTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1k aWFnbm9zdGljczcuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1k aWFnbm9zdGljczcuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uM2Mx ZDAxOGNkNjgKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9l eHBsaWNpdC1vYmotZGlhZ25vc3RpY3M3LkMKQEAgLTAsMCArMSwyNCBAQAorLy8gUDA4NDdSNwor Ly8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIzIH0gfQorCisvLyByZWplY3Rpb24gYW5k IGRpYWdub3NpcyB3aGVuIHRha2luZyBhZGRyZXNzIG9mIGFuIHVucXVhbGlmaWVkIHhvYmogbWVt YmVyIGZ1bmN0aW9uCisKK3N0cnVjdCBTIHsKKyAgc3RhdGljIHZvaWQgc3RhdGljX2YoUyYpIHt9 CisgIHZvaWQgaW9ial9tZW1iZXJfZigpIHt9CisgIHZvaWQgeG9ial9tZW1iZXJfZih0aGlzIFMm KSB7fQorCisgIHZvaWQgdGVzdCgpIHsKKyAgICB1c2luZyBmdW5jX3B0cl90eXBlID0gdm9pZCgq KShTJik7CisgICAgLy8gdXNpbmcgbWVtX2Z1bmNfcHRyX3R5cGUgPSB2b2lkIChTOjoqKSgpOwor CisgICAgLy8gYWxsb3dlZCAobm90IHRlc3RpbmcgZm9yIHRoaXMpCisgICAgLy8gZnVuY19wdHJf dHlwZSBzdGF0aWNfZl9wdHIgPSAmc3RhdGljX2Y7CisKKyAgICAvLyBub3QgYWxsb3dlZCAoYWxz byBub3QgdGVzdGluZyBmb3IgdGhpcykKKyAgICAvLyBtZW1fZnVuY19wdHJfdHlwZSBpb2JqX21l bV9mX3B0ciA9ICZpb2JqX21lbWJlcl9mOworCisgICAgLy8gbm90IGFsbG93ZWQgKHRoaXMgaXMg d2hhdCB3ZSBhcmUgdGVzdGluZyBmb3IpCisgICAgZnVuY19wdHJfdHlwZSB4b2JqX21lbV9mX3B0 ciA9ICZ4b2JqX21lbWJlcl9mOyAvLyB7IGRnLWVycm9yICJ1bmRldGVybWluZWQgZXJyb3IiICJk aXNhbGxvd2luZyBhZGRyZXNzIG9mIHVucXVhbGlmaWVkIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIg ZnVuY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIHlldCIgeyB4ZmFpbCAqLSotKiB9IH0KKyAgfQor fTsKLS0gCjIuNDIuMAoK --b1_wrobPWyRaxHtU0ScNdCr9KlM2mRBbl9pQ08phos4--