From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com [IPv6:2a00:1450:4864:20::52a]) by sourceware.org (Postfix) with ESMTPS id A2A913850424 for ; Tue, 3 Aug 2021 23:40:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A2A913850424 Received: by mail-ed1-x52a.google.com with SMTP id b7so1232782edu.3 for ; Tue, 03 Aug 2021 16:40:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=/jXc3u7C+MhifgtmnWyXKp93rAlPADZ/BFF4p4oGo5w=; b=MNQ5nAckudMkTonCvNhaJOXd0vb6FdyaFen+fKtfH0VrBXhLX+BYY+d/Xk+KwUVJuB 6qAWu+jAyfXpPAGk8twU5GGpKKZqKbivFDl7ANYsqdnjQEuqm7OYeGy12qEN3D7avCY9 4l1ARUYKdQK/JFk5KQIxyXzaD/AeXc88SzKmnyOqWc3NfBN0gimrGiovcxvFbdkl6L8z usVPG97rcoApfFPOY0Od4tYSXH5T9/Yruxhepm6Xfy5Mrzki04NX/UNEZX361Dot3wgS RRBMqFV1jI0QTyrOjBCe2e+WlzHHZAL95SYHqsw7UEHYt3oDMQ2oMm1WxN+9M+h+pxSj 90Xw== X-Gm-Message-State: AOAM532Um1lbyHLYzXlqjYUdbyfjqHEH7HIx6eVTx908UAcBaPr021xy HjLwS69Jjgz5qPpWqqlLOGYPoM3T+OSOUR7+w1jRLEFJeDO10A== X-Google-Smtp-Source: ABdhPJwMZddLf+AXEGc5+m8OeHYPdBWAgS4zBo8VUPYvsyUFBo/6zINNHKaiMPkxN/2VGfliPHkItl2gK2vD8zipV6E= X-Received: by 2002:a05:6402:1766:: with SMTP id da6mr11849821edb.322.1628034047598; Tue, 03 Aug 2021 16:40:47 -0700 (PDT) MIME-Version: 1.0 From: Ian Lance Taylor Date: Tue, 3 Aug 2021 16:40:36 -0700 Message-ID: Subject: Go patch committed: Return two values from selectnbrecv To: gcc-patches , gofrontend-dev Content-Type: multipart/mixed; boundary="000000000000170e1205c8b037a4" X-Spam-Status: No, score=-11.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Aug 2021 23:40:50 -0000 --000000000000170e1205c8b037a4 Content-Type: text/plain; charset="UTF-8" This patch to the Go frontend and libgo changes selectnbrecv to return two values. The only difference between selectnbrecv and selectnbrecv2 is that the latter uses a pointer argument as the second return value from chanrecv. This patch changes selectnbrecv to return the two values from chanrecv and gets rid of selectnbrecv2. The compiler now calls only selectnbrecv, which is simpler. This is the gofrontend version of https://golang.org/cl/292890. I'm committing it now as part of updating to the Go 1.17 release. Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed to mainline. Ian --000000000000170e1205c8b037a4 Content-Type: text/plain; charset="US-ASCII"; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_krwpfgej0 ZTQzNWU3MmFkNzEzY2FkZDY2MTA3MjQyNzU4OGVjMWM3NzdjMDRlMwpkaWZmIC0tZ2l0IGEvZ2Nj L2dvL2dvZnJvbnRlbmQvTUVSR0UgYi9nY2MvZ28vZ29mcm9udGVuZC9NRVJHRQppbmRleCA4MDFl MDM5YTE1NS4uNWEwOTdmZmVlODUgMTAwNjQ0Ci0tLSBhL2djYy9nby9nb2Zyb250ZW5kL01FUkdF CisrKyBiL2djYy9nby9nb2Zyb250ZW5kL01FUkdFCkBAIC0xLDQgKzEsNCBAQAotNTQzNjE4MDVi ZDYxMWQ4OTYwNDJiODc5ZWU3ZjZkMmQ0ZDA4ODUzNworMjAzMWYwYmU5YzBiNWZkYTY0MjFkMjkw YTAyNjFlYjZiZDFjODIwNQogCiBUaGUgZmlyc3QgbGluZSBvZiB0aGlzIGZpbGUgaG9sZHMgdGhl IGdpdCByZXZpc2lvbiBudW1iZXIgb2YgdGhlIGxhc3QKIG1lcmdlIGRvbmUgZnJvbSB0aGUgZ29m cm9udGVuZCByZXBvc2l0b3J5LgpkaWZmIC0tZ2l0IGEvZ2NjL2dvL2dvZnJvbnRlbmQvcnVudGlt ZS5kZWYgYi9nY2MvZ28vZ29mcm9udGVuZC9ydW50aW1lLmRlZgppbmRleCBmYWQ4Y2ViYzAxMi4u ODdhMjcwODVkNjAgMTAwNjQ0Ci0tLSBhL2djYy9nby9nb2Zyb250ZW5kL3J1bnRpbWUuZGVmCisr KyBiL2djYy9nby9nb2Zyb250ZW5kL3J1bnRpbWUuZGVmCkBAIC0yMDQsMTIgKzIwNCw4IEBAIERF Rl9HT19SVU5USU1FKFNFTEVDVE5CU0VORCwgInJ1bnRpbWUuc2VsZWN0bmJzZW5kIiwgUDIoQ0hB TiwgUE9JTlRFUiksIFIxKEJPT0wpCiAKIC8vIE5vbi1ibG9ja2luZyByZWNlaXZlIGEgdmFsdWUg ZnJvbSBhIGNoYW5uZWwsIHVzZWQgZm9yIHR3by1jYXNlIHNlbGVjdAogLy8gc3RhdGVtZW50IHdp dGggYSBkZWZhdWx0IGNhc2UuCi1ERUZfR09fUlVOVElNRShTRUxFQ1ROQlJFQ1YsICJydW50aW1l LnNlbGVjdG5icmVjdiIsIFAyKFBPSU5URVIsIENIQU4pLCBSMShCT09MKSkKLQotLy8gTm9uLWJs b2NraW5nIHR1cGxlIHJlY2VpdmUgZnJvbSBhIGNoYW5uZWwsIHVzZWQgZm9yIHR3by1jYXNlIHNl bGVjdAotLy8gc3RhdGVtZW50IHdpdGggYSBkZWZhdWx0IGNhc2UuCi1ERUZfR09fUlVOVElNRShT RUxFQ1ROQlJFQ1YyLCAicnVudGltZS5zZWxlY3RuYnJlY3YyIiwgUDMoUE9JTlRFUiwgUE9JTlRF UiwgQ0hBTiksCi0gICAgICAgICAgICAgICBSMShCT09MKSkKK0RFRl9HT19SVU5USU1FKFNFTEVD VE5CUkVDViwgInJ1bnRpbWUuc2VsZWN0bmJyZWN2IiwgUDIoUE9JTlRFUiwgQ0hBTiksCisJICAg ICAgIFIyKEJPT0wsIEJPT0wpKQogCiAvLyBCbG9jayBleGVjdXRpb24uICBVc2VkIGZvciB6ZXJv LWNhc2Ugc2VsZWN0LgogREVGX0dPX1JVTlRJTUUoQkxPQ0ssICJydW50aW1lLmJsb2NrIiwgUDAo KSwgUjAoKSkKZGlmZiAtLWdpdCBhL2djYy9nby9nb2Zyb250ZW5kL3N0YXRlbWVudHMuY2MgYi9n Y2MvZ28vZ29mcm9udGVuZC9zdGF0ZW1lbnRzLmNjCmluZGV4IDk2NDNkMWI0MmIzLi45NWZhM2M0 ODcwOSAxMDA2NDQKLS0tIGEvZ2NjL2dvL2dvZnJvbnRlbmQvc3RhdGVtZW50cy5jYworKysgYi9n Y2MvZ28vZ29mcm9udGVuZC9zdGF0ZW1lbnRzLmNjCkBAIC02MDUxLDcgKzYwNTEsNyBAQCBTZWxl Y3Rfc3RhdGVtZW50Ojpsb3dlcl90d29fY2FzZShCbG9jayogYikKICAgRXhwcmVzc2lvbiogY2hh bnJlZiA9IEV4cHJlc3Npb246Om1ha2VfdGVtcG9yYXJ5X3JlZmVyZW5jZShjaGFudG1wLCBsb2Mp OwogCiAgIEJsb2NrKiBiY2hhbjsKLSAgRXhwcmVzc2lvbiogY2FsbDsKKyAgRXhwcmVzc2lvbiog Y29uZDsKICAgaWYgKGNoYW5jYXNlLmlzX3NlbmQoKSkKICAgICB7CiAgICAgICAvLyBpZiBzZWxl Y3RuYnNlbmQoY2hhbiwgJnZhbCkgeyBib2R5IH0gZWxzZSB7IGRlZmF1bHQgYm9keSB9CkBAIC02 MDY1LDcgKzYwNjUsNyBAQCBTZWxlY3Rfc3RhdGVtZW50Ojpsb3dlcl90d29fY2FzZShCbG9jayog YikKIAogICAgICAgRXhwcmVzc2lvbiogcmVmID0gRXhwcmVzc2lvbjo6bWFrZV90ZW1wb3Jhcnlf cmVmZXJlbmNlKHRzLCBsb2MpOwogICAgICAgRXhwcmVzc2lvbiogYWRkciA9IEV4cHJlc3Npb246 Om1ha2VfdW5hcnkoT1BFUkFUT1JfQU5ELCByZWYsIGxvYyk7Ci0gICAgICBjYWxsID0gUnVudGlt ZTo6bWFrZV9jYWxsKFJ1bnRpbWU6OlNFTEVDVE5CU0VORCwgbG9jLCAyLCBjaGFucmVmLCBhZGRy KTsKKyAgICAgIGNvbmQgPSBSdW50aW1lOjptYWtlX2NhbGwoUnVudGltZTo6U0VMRUNUTkJTRU5E LCBsb2MsIDIsIGNoYW5yZWYsIGFkZHIpOwogICAgICAgYmNoYW4gPSBjaGFuY2FzZS5zdGF0ZW1l bnRzKCk7CiAgICAgfQogICBlbHNlCkBAIC02MDc1LDM0ICs2MDc1LDMxIEBAIFNlbGVjdF9zdGF0 ZW1lbnQ6Omxvd2VyX3R3b19jYXNlKEJsb2NrKiBiKQogCiAgICAgICBFeHByZXNzaW9uKiByZWYg PSBFeHByZXNzaW9uOjptYWtlX3RlbXBvcmFyeV9yZWZlcmVuY2UodHMsIGxvYyk7CiAgICAgICBF eHByZXNzaW9uKiBhZGRyID0gRXhwcmVzc2lvbjo6bWFrZV91bmFyeShPUEVSQVRPUl9BTkQsIHJl ZiwgbG9jKTsKLSAgICAgIEV4cHJlc3Npb24qIG9rcmVmID0gTlVMTDsKLSAgICAgIGlmIChjaGFu Y2FzZS5jbG9zZWQoKSA9PSBOVUxMICYmIGNoYW5jYXNlLmNsb3NlZHZhcigpID09IE5VTEwpCi0g ICAgICAgIHsKLSAgICAgICAgICAvLyBTaW1wbGUgcmVjZWl2ZS4KLSAgICAgICAgICAvLyBpZiBz ZWxlY3RuYnJlY3YoJmxocywgY2hhbikgeyBib2R5IH0gZWxzZSB7IGRlZmF1bHQgYm9keSB9Ci0g ICAgICAgICAgY2FsbCA9IFJ1bnRpbWU6Om1ha2VfY2FsbChSdW50aW1lOjpTRUxFQ1ROQlJFQ1Ys IGxvYywgMiwgYWRkciwgY2hhbnJlZik7Ci0gICAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAg ewotICAgICAgICAgIC8vIFR1cGxlIHJlY2VpdmUuCi0gICAgICAgICAgLy8gaWYgc2VsZWN0bmJy ZWN2MigmbGhzLCAmb2ssIGNoYW4pIHsgYm9keSB9IGVsc2UgeyBkZWZhdWx0IGJvZHkgfQotCi0g ICAgICAgICAgVHlwZSogYm9vbHR5cGUgPSBUeXBlOjptYWtlX2Jvb2xlYW5fdHlwZSgpOwotICAg ICAgICAgIFRlbXBvcmFyeV9zdGF0ZW1lbnQqIG9rdHMgPSBTdGF0ZW1lbnQ6Om1ha2VfdGVtcG9y YXJ5KGJvb2x0eXBlLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYyk7Ci0gICAgICAgICAgYi0+YWRkX3N0YXRl bWVudChva3RzKTsKLQotICAgICAgICAgIG9rcmVmID0gRXhwcmVzc2lvbjo6bWFrZV90ZW1wb3Jh cnlfcmVmZXJlbmNlKG9rdHMsIGxvYyk7Ci0gICAgICAgICAgRXhwcmVzc2lvbiogb2thZGRyID0g RXhwcmVzc2lvbjo6bWFrZV91bmFyeShPUEVSQVRPUl9BTkQsIG9rcmVmLCBsb2MpOwotICAgICAg ICAgIGNhbGwgPSBSdW50aW1lOjptYWtlX2NhbGwoUnVudGltZTo6U0VMRUNUTkJSRUNWMiwgbG9j LCAzLCBhZGRyLCBva2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj aGFucmVmKTsKLSAgICAgICAgfQorCisgICAgICAvLyBzZWxlY3RlZCwgb2sgPSBzZWxlY3RuYnJl Y3YoJmxocywgY2hhbikKKyAgICAgIENhbGxfZXhwcmVzc2lvbiogY2FsbCA9IFJ1bnRpbWU6Om1h a2VfY2FsbChSdW50aW1lOjpTRUxFQ1ROQlJFQ1YsIGxvYywgMiwKKwkJCQkJCSBhZGRyLCBjaGFu cmVmKTsKKworICAgICAgVGVtcG9yYXJ5X3N0YXRlbWVudCogc2VsZWN0ZWRfdGVtcCA9CisJU3Rh dGVtZW50OjptYWtlX3RlbXBvcmFyeShUeXBlOjptYWtlX2Jvb2xlYW5fdHlwZSgpLAorCQkJCSAg RXhwcmVzc2lvbjo6bWFrZV9jYWxsX3Jlc3VsdChjYWxsLCAwKSwKKwkJCQkgIGxvYyk7CisgICAg ICBiLT5hZGRfc3RhdGVtZW50KHNlbGVjdGVkX3RlbXApOworCisgICAgICBUZW1wb3Jhcnlfc3Rh dGVtZW50KiBva190ZW1wID0KKwlTdGF0ZW1lbnQ6Om1ha2VfdGVtcG9yYXJ5KFR5cGU6Om1ha2Vf Ym9vbGVhbl90eXBlKCksCisJCQkJICBFeHByZXNzaW9uOjptYWtlX2NhbGxfcmVzdWx0KGNhbGws IDEpLAorCQkJCSAgbG9jKTsKKyAgICAgIGItPmFkZF9zdGF0ZW1lbnQob2tfdGVtcCk7CisKKyAg ICAgIGNvbmQgPSBFeHByZXNzaW9uOjptYWtlX3RlbXBvcmFyeV9yZWZlcmVuY2Uoc2VsZWN0ZWRf dGVtcCwgbG9jKTsKIAogICAgICAgTG9jYXRpb24gY2xvYyA9IGNoYW5jYXNlLmxvY2F0aW9uKCk7 CiAgICAgICBiY2hhbiA9IG5ldyBCbG9jayhiLCBsb2MpOwogICAgICAgaWYgKGNoYW5jYXNlLnZh bCgpICE9IE5VTEwgJiYgIWNoYW5jYXNlLnZhbCgpLT5pc19zaW5rX2V4cHJlc3Npb24oKSkKICAg ICAgICAgewotICAgICAgICAgIFN0YXRlbWVudCogYXMgPSBTdGF0ZW1lbnQ6Om1ha2VfYXNzaWdu bWVudChjaGFuY2FzZS52YWwoKSwgcmVmLT5jb3B5KCksCisgICAgICAgICAgU3RhdGVtZW50KiBh cyA9IFN0YXRlbWVudDo6bWFrZV9hc3NpZ25tZW50KGNoYW5jYXNlLnZhbCgpLAorCQkJCQkJICAg ICByZWYtPmNvcHkoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2xvYyk7CiAgICAgICAgICAgYmNoYW4tPmFkZF9zdGF0ZW1lbnQoYXMpOwog ICAgICAgICB9CkBAIC02MTE0LDEyICs2MTExLDE4IEBAIFNlbGVjdF9zdGF0ZW1lbnQ6Omxvd2Vy X3R3b19jYXNlKEJsb2NrKiBiKQogCiAgICAgICBpZiAoY2hhbmNhc2UuY2xvc2VkKCkgIT0gTlVM TCAmJiAhY2hhbmNhc2UuY2xvc2VkKCktPmlzX3NpbmtfZXhwcmVzc2lvbigpKQogICAgICAgICB7 CisJICBFeHByZXNzaW9uKiBva3JlZiA9IEV4cHJlc3Npb246Om1ha2VfdGVtcG9yYXJ5X3JlZmVy ZW5jZShva190ZW1wLAorCQkJCQkJCQkgICBjbG9jKTsKICAgICAgICAgICBTdGF0ZW1lbnQqIGFz ID0gU3RhdGVtZW50OjptYWtlX2Fzc2lnbm1lbnQoY2hhbmNhc2UuY2xvc2VkKCksCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rcmVmLT5jb3B5 KCksIGNsb2MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBva3JlZiwgY2xvYyk7CiAgICAgICAgICAgYmNoYW4tPmFkZF9zdGF0ZW1lbnQoYXMp OwogICAgICAgICB9CiAgICAgICBlbHNlIGlmIChjaGFuY2FzZS5jbG9zZWR2YXIoKSAhPSBOVUxM KQotICAgICAgICBjaGFuY2FzZS5jbG9zZWR2YXIoKS0+dmFyX3ZhbHVlKCktPnNldF9pbml0KG9r cmVmLT5jb3B5KCkpOworCXsKKwkgIEV4cHJlc3Npb24qIG9rcmVmID0gRXhwcmVzc2lvbjo6bWFr ZV90ZW1wb3JhcnlfcmVmZXJlbmNlKG9rX3RlbXAsCisJCQkJCQkJCSAgIGNsb2MpOworCSAgY2hh bmNhc2UuY2xvc2VkdmFyKCktPnZhcl92YWx1ZSgpLT5zZXRfaW5pdChva3JlZik7CisJfQogCiAg ICAgICBTdGF0ZW1lbnQqIGJzID0gU3RhdGVtZW50OjptYWtlX2Jsb2NrX3N0YXRlbWVudChjaGFu Y2FzZS5zdGF0ZW1lbnRzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjbG9jKTsKQEAgLTYxMjcsNyArNjEzMCw3IEBAIFNlbGVjdF9zdGF0 ZW1lbnQ6Omxvd2VyX3R3b19jYXNlKEJsb2NrKiBiKQogICAgIH0KIAogICBTdGF0ZW1lbnQqIGlm cyA9Ci0gICAgU3RhdGVtZW50OjptYWtlX2lmX3N0YXRlbWVudChjYWxsLCBiY2hhbiwgZGVmY2Fz ZS5zdGF0ZW1lbnRzKCksIGxvYyk7CisgICAgU3RhdGVtZW50OjptYWtlX2lmX3N0YXRlbWVudChj b25kLCBiY2hhbiwgZGVmY2FzZS5zdGF0ZW1lbnRzKCksIGxvYyk7CiAgIGItPmFkZF9zdGF0ZW1l bnQoaWZzKTsKIAogICBTdGF0ZW1lbnQqIGxhYmVsID0KZGlmZiAtLWdpdCBhL2xpYmdvL2dvL3J1 bnRpbWUvY2hhbi5nbyBiL2xpYmdvL2dvL3J1bnRpbWUvY2hhbi5nbwppbmRleCA3ODc4YThmZTAx Mi4uZTNkMGFkNWFjYmUgMTAwNjQ0Ci0tLSBhL2xpYmdvL2dvL3J1bnRpbWUvY2hhbi5nbworKysg Yi9saWJnby9nby9ydW50aW1lL2NoYW4uZ28KQEAgLTMzLDcgKzMzLDYgQEAgaW1wb3J0ICgKIC8v Z286bGlua25hbWUgY2xvc2VjaGFuCiAvL2dvOmxpbmtuYW1lIHNlbGVjdG5ic2VuZAogLy9nbzps aW5rbmFtZSBzZWxlY3RuYnJlY3YKLS8vZ286bGlua25hbWUgc2VsZWN0bmJyZWN2MgogCiBjb25z dCAoCiAJbWF4QWxpZ24gID0gOApAQCAtNzA5LDI4ICs3MDgsNiBAQCBmdW5jIHNlbGVjdG5ic2Vu ZChjICpoY2hhbiwgZWxlbSB1bnNhZmUuUG9pbnRlcikgKHNlbGVjdGVkIGJvb2wpIHsKIAlyZXR1 cm4gY2hhbnNlbmQoYywgZWxlbSwgZmFsc2UsIGdldGNhbGxlcnBjKCkpCiB9CiAKLS8vIGNvbXBp bGVyIGltcGxlbWVudHMKLS8vCi0vLwlzZWxlY3QgewotLy8JY2FzZSB2ID0gPC1jOgotLy8JCS4u LiBmb28KLS8vCWRlZmF1bHQ6Ci0vLwkJLi4uIGJhcgotLy8JfQotLy8KLS8vIGFzCi0vLwotLy8J aWYgc2VsZWN0bmJyZWN2KCZ2LCBjKSB7Ci0vLwkJLi4uIGZvbwotLy8JfSBlbHNlIHsKLS8vCQku Li4gYmFyCi0vLwl9Ci0vLwotZnVuYyBzZWxlY3RuYnJlY3YoZWxlbSB1bnNhZmUuUG9pbnRlciwg YyAqaGNoYW4pIChzZWxlY3RlZCBib29sKSB7Ci0Jc2VsZWN0ZWQsIF8gPSBjaGFucmVjdihjLCBl bGVtLCBmYWxzZSkKLQlyZXR1cm4KLX0KLQogLy8gY29tcGlsZXIgaW1wbGVtZW50cwogLy8KIC8v CXNlbGVjdCB7CkBAIC03NDIsMTYgKzcxOSwxNCBAQCBmdW5jIHNlbGVjdG5icmVjdihlbGVtIHVu c2FmZS5Qb2ludGVyLCBjICpoY2hhbikgKHNlbGVjdGVkIGJvb2wpIHsKIC8vCiAvLyBhcwogLy8K LS8vCWlmIGMgIT0gbmlsICYmIHNlbGVjdG5icmVjdjIoJnYsICZvaywgYykgeworLy8JaWYgc2Vs ZWN0ZWQsIG9rID0gc2VsZWN0bmJyZWN2KCZ2LCBjKTsgc2VsZWN0ZWQgewogLy8JCS4uLiBmb28K IC8vCX0gZWxzZSB7CiAvLwkJLi4uIGJhcgogLy8JfQogLy8KLWZ1bmMgc2VsZWN0bmJyZWN2Mihl bGVtIHVuc2FmZS5Qb2ludGVyLCByZWNlaXZlZCAqYm9vbCwgYyAqaGNoYW4pIChzZWxlY3RlZCBi b29sKSB7Ci0JLy8gVE9ETyhraHIpOiBqdXN0IHJldHVybiAyIHZhbHVlcyBmcm9tIHRoaXMgZnVu Y3Rpb24sIG5vdyB0aGF0IGl0IGlzIGluIEdvLgotCXNlbGVjdGVkLCAqcmVjZWl2ZWQgPSBjaGFu cmVjdihjLCBlbGVtLCBmYWxzZSkKLQlyZXR1cm4KK2Z1bmMgc2VsZWN0bmJyZWN2KGVsZW0gdW5z YWZlLlBvaW50ZXIsIGMgKmhjaGFuKSAoc2VsZWN0ZWQsIHJlY2VpdmVkIGJvb2wpIHsKKwlyZXR1 cm4gY2hhbnJlY3YoYywgZWxlbSwgZmFsc2UpCiB9CiAKIC8vZ286bGlua25hbWUgcmVmbGVjdF9j aGFuc2VuZCByZWZsZWN0LmNoYW5zZW5kCg== --000000000000170e1205c8b037a4--