From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: =?UTF-8?Q?Nicolas_B=C3=A9rtolo?= Newsgroups: gmane.emacs.devel Subject: Re: [PATCH] [WIP] Port feature/native-comp to Windows. Date: Tue, 12 May 2020 14:25:05 -0300 Message-ID: References: <5eb5b953.1c69fb81.a67ce.a764@mx.google.com> <83lfm1hc91.fsf@gnu.org> <83wo5lds87.fsf@gnu.org> <83lflzd8es.fsf@gnu.org> <83ftc7d4zu.fsf@gnu.org> <83blmvd2if.fsf@gnu.org> <833686d08r.fsf@gnu.org> <83eerp852g.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0000000000005ed04905a576bf8d" Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="25498"; mail-complaints-to="usenet@ciao.gmane.io" Cc: emacs-devel@gnu.org, Andrea Corallo To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue May 12 19:26:09 2020 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jYYfR-0006RF-Dl for ged-emacs-devel@m.gmane-mx.org; Tue, 12 May 2020 19:26:09 +0200 Original-Received: from localhost ([::1]:49392 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jYYfQ-0000MC-GO for ged-emacs-devel@m.gmane-mx.org; Tue, 12 May 2020 13:26:08 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:57864) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jYYeg-0008AS-0a for emacs-devel@gnu.org; Tue, 12 May 2020 13:25:22 -0400 Original-Received: from mail-oo1-xc33.google.com ([2607:f8b0:4864:20::c33]:34664) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jYYef-0002RY-5C; Tue, 12 May 2020 13:25:21 -0400 Original-Received: by mail-oo1-xc33.google.com with SMTP id s139so1918019oos.1; Tue, 12 May 2020 10:25:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=1yQQeaNicfGHtz0lT/AhRDTv9ZztKby31KD1IO4qunA=; b=COAgVWLy31allQhIOXr/p1jwP3Y7M15B/bDekhrSLHTZ0C+Wt0UIvOiBFbmDQNlGx8 2XnLqII07W8l1Of2HuE7C122SR4ShabIHfFoGpUcb+7XuprSGzeDZyAtnAAZUIiRl1MH VnZBqRamtQNT23Ym0B/57y3PAPTvMcdK9lTI6PY/YLXBp3duXPrKPOrmQ9uYlPBM/IFE voInO/4p7adp0RRkwKFhseUd7nFmgISJl+G6SFxJyVH51s4dUgDAWPzAjWkZUZYQw5sD esnBJawUFlMCr8VGhQ6rKiXdISobjC86T26rEAksSVjizXgedDoqx3TmzntvNZbqcTE2 g0xA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=1yQQeaNicfGHtz0lT/AhRDTv9ZztKby31KD1IO4qunA=; b=BHvQc+XGaMTQv3BzVpFSE0AnSmggCR16WthkqraIZ68iD9yCL/MTHzHOIL9vNu5lfb 2CnyaWE31RF062hN5ppHiGGBUi611GyeLvtVo3CSXhOaYqKg9RsteteCsqJpJ1p/38Ll v1RIbTx/NSFGFIGNvBujBq75c3Kdcr/skfCOxhMdVYZqMoUI50jLTJN7Wud9itTFw80a t4p7Wh8RbVae8A55Ll7RI508TqZreluUu6QlqRjmGeJ5VxQLDdXS1Pj1CP4H8ca8Neps 3t/eGjoupAzHdUMFq8fkgoar2gYlcczsGaMlLfoUz2vabmQ4bd3LTfhSIpKX9PVPyS4w oL1Q== X-Gm-Message-State: AGi0PuaMFoCjVjDWvyQkO0DPTLPsY9jZvrDVOJEzJAj6YCXOYGA/JxBV RPWYX1cl7AalihNXtcMnLYDS4PaZE1COJVqJB8rja3SUliUfOg== X-Google-Smtp-Source: APiQypIIcnrd00rp4TBcJaetg+2ulbSSL+xc3/oYuEEbtFxplYqKvWZBZC9Uw4EXme6lSApBSdiYFJDqdYJwBb5uqgs= X-Received: by 2002:a4a:b346:: with SMTP id n6mr18813137ooo.18.1589304318925; Tue, 12 May 2020 10:25:18 -0700 (PDT) In-Reply-To: <83eerp852g.fsf@gnu.org> Received-SPF: pass client-ip=2607:f8b0:4864:20::c33; envelope-from=nicolasbertolo@gmail.com; helo=mail-oo1-xc33.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:250000 Archived-At: --0000000000005ed04905a576bf8d Content-Type: text/plain; charset="UTF-8" > libdl exists only in MinGW64, I think. > Why do you need it? is it because the code uses dlopen/dlsym > somewhere? The code uses `dynlib_open` and `dynlib_sym` which are implemented using libdl in Posix systems. The original libgccjit uses it to implement the `compile_to_memory` function that we do not use. The version of libgccjit I am using implements that feature using native Windows functions, so libdl is not necessary. I don't think we can remove it because that part of the code runs only when the platform is not Mingw, and in that case libdl is necessary. > I think it's good to #undef each symbol before defining it. Fixed in the new patch. --0000000000005ed04905a576bf8d Content-Type: application/octet-stream; name="Load-libgccjit-dynamically-in-Windows.patch" Content-Disposition: attachment; filename="Load-libgccjit-dynamically-in-Windows.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ka46qs1b0 RnJvbSAzMDU0YzQ0NjRkZTc4YWVjZDkzYmY4ODg2MmI0YjI2Njc2M2JhNWFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Tmljb2w9QzM9QTFzPTIwQj1DMz1BOXJ0b2xv Pz0gPG5pY29sYXNiZXJ0b2xvQGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAxMSBNYXkgMjAyMCAyMDo0 MzowNiAtMDMwMApTdWJqZWN0OiBbUEFUQ0hdIExvYWQgbGliZ2Njaml0IGR5bmFtaWNhbGx5IGlu IFdpbmRvd3MuCgoqIGNvbmZpZ3VyZS5hYzogZG9uJ3QgYWRkIGxpbmtlciBmbGFncyBpZiBjb21w aWxpbmcgb24gV2luZG93cy4KKiBsaXNwL3Rlcm0vdzMyLXdpbi5lbDogTWFwICdnY2NqaXQgdG8g ImxpYmdjY2ppdC5kbGwiIGluCmBkeW5hbWljLWxpYnJhcnktYWxpc3RgLgoqIHNyYy9jb21wLmM6 IEFkZCBkZWNsYXJhdGlvbnMgb2YgdXNlZCBsaWJnY2NqaXQgZnVuY3Rpb25zIHVzaW5nCkRFRl9E TExfRk4uIEFkZCBjYWxscyB0byBsb2FkX2djY2ppdF9pZl9uZWNlc3NhcnkoKSB3aGVyZSBuZWNl c3NhcnkuCiogc3JjL3czMmZucy5jOiBBZGQgUWdjY2ppdCBzeW1ib2wuCi0tLQogY29uZmlndXJl LmFjICAgICAgICAgfCAgIDUgKy0KIGxpc3AvdGVybS93MzItd2luLmVsIHwgICAzICstCiBzcmMv Y29tcC5jICAgICAgICAgICB8IDM1NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiBzcmMvdzMyZm5zLmMgICAgICAgICB8ICAgMSArCiA0IGZpbGVzIGNoYW5nZWQs IDM2NCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbmZpZ3Vy ZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCAyM2I5NGNmNmNhLi45NzYzOWZkZmJhIDEwMDY0NAot LS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0zNzkzLDcgKzM3OTMsMTAg QEAgQUNfREVGVU4KICAgICAgIFtBQ19MSU5LX0lGRUxTRShbbGliZ2Njaml0X3Ntb2tlX3Rlc3Rd LCBbXSwgW2xpYmdjY2ppdF9ub3RfZm91bmRdKV0pCiAgICAgTElCUz0kZW1hY3Nfc2F2ZV9MSUJT CiAgICAgSEFWRV9OQVRJVkVfQ09NUD15ZXMKLSAgICBMSUJHQ0NKSVRfTElCPSItbGdjY2ppdCAt bGRsIgorICAgICMgbWluZ3czMiBsb2FkcyB0aGUgbGlicmFyeSBkeW5hbWljYWxseS4KKyAgICBp ZiB0ZXN0ICIke29wc3lzfSIgIT0gIm1pbmd3MzIiOyB0aGVuCisgICAgICBMSUJHQ0NKSVRfTElC PSItbGdjY2ppdCAtbGRsIgorICAgIGZpCiAgICAgQ09NUF9PQko9ImNvbXAubyIKICAgICBBQ19E RUZJTkUoSEFWRV9OQVRJVkVfQ09NUCwgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBs aWJnY2NqaXQgbGlicmFyeSAoLWxnY2NqaXQpLl0pCiBmaQpkaWZmIC0tZ2l0IGEvbGlzcC90ZXJt L3czMi13aW4uZWwgYi9saXNwL3Rlcm0vdzMyLXdpbi5lbAppbmRleCA1OTAxZTAyOTVlLi42Yjk3 MTZjYTMwIDEwMDY0NAotLS0gYS9saXNwL3Rlcm0vdzMyLXdpbi5lbAorKysgYi9saXNwL3Rlcm0v dzMyLXdpbi5lbApAQCAtMjg5LDcgKzI4OSw4IEBAIGxpYmdudXRscy12ZXJzaW9uCiAgICAgICAg JyhsaWJ4bWwyICJsaWJ4bWwyLTIuZGxsIiAibGlieG1sMi5kbGwiKQogICAgICAgICcoemxpYiAi emxpYjEuZGxsIiAibGliei0xLmRsbCIpCiAgICAgICAgJyhsY21zMiAibGlibGNtczItMi5kbGwi KQotICAgICAgICcoanNvbiAibGliamFuc3Nvbi00LmRsbCIpKSkKKyAgICAgICAnKGpzb24gImxp YmphbnNzb24tNC5kbGwiKQorICAgICAgICcoZ2Njaml0ICJsaWJnY2NqaXQuZGxsIikpKQogCiA7 OzsgbXVsdGktdHR5IHN1cHBvcnQKIChkZWZ2YXIgdzMyLWluaXRpYWxpemVkIG5pbApkaWZmIC0t Z2l0IGEvc3JjL2NvbXAuYyBiL3NyYy9jb21wLmMKaW5kZXggNjk1MjVhY2ZjMC4uOWZiNGU2ZjZh ZiAxMDA2NDQKLS0tIGEvc3JjL2NvbXAuYworKysgYi9zcmMvY29tcC5jCkBAIC0zNiw2ICszNiwz NDQgQEAKICNpbmNsdWRlICJibG9ja2lucHV0LmgiCiAjaW5jbHVkZSAic2hhNTEyLmgiCiAKKwwK Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIER5bmFtaWMgbG9hZGluZyBv ZiBsaWJnY2NqaXQgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lm ZGVmIFdJTkRPV1NOVAorIyBpbmNsdWRlICJ3MzJjb21tb24uaCIKK2Jvb2wgZ2Njaml0X2luaXRp YWxpemVkOworCisjdW5kZWYgZ2NjX2ppdF9ibG9ja19hZGRfYXNzaWdubWVudAorI3VuZGVmIGdj Y19qaXRfYmxvY2tfYWRkX2NvbW1lbnQKKyN1bmRlZiBnY2Nfaml0X2Jsb2NrX2FkZF9ldmFsCisj dW5kZWYgZ2NjX2ppdF9ibG9ja19lbmRfd2l0aF9jb25kaXRpb25hbAorI3VuZGVmIGdjY19qaXRf YmxvY2tfZW5kX3dpdGhfanVtcAorI3VuZGVmIGdjY19qaXRfYmxvY2tfZW5kX3dpdGhfcmV0dXJu CisjdW5kZWYgZ2NjX2ppdF9ibG9ja19lbmRfd2l0aF92b2lkX3JldHVybgorI3VuZGVmIGdjY19q aXRfY29udGV4dF9hY3F1aXJlCisjdW5kZWYgZ2NjX2ppdF9jb250ZXh0X2NvbXBpbGVfdG9fZmls ZQorI3VuZGVmIGdjY19qaXRfY29udGV4dF9kdW1wX3JlcHJvZHVjZXJfdG9fZmlsZQorI3VuZGVm IGdjY19qaXRfY29udGV4dF9kdW1wX3RvX2ZpbGUKKyN1bmRlZiBnY2Nfaml0X2NvbnRleHRfZ2V0 X2J1aWx0aW5fZnVuY3Rpb24KKyN1bmRlZiBnY2Nfaml0X2NvbnRleHRfZ2V0X2ZpcnN0X2Vycm9y CisjdW5kZWYgZ2NjX2ppdF9jb250ZXh0X2dldF9pbnRfdHlwZQorI3VuZGVmIGdjY19qaXRfY29u dGV4dF9nZXRfdHlwZQorI3VuZGVmIGdjY19qaXRfY29udGV4dF9uZXdfYXJyYXlfYWNjZXNzCisj dW5kZWYgZ2NjX2ppdF9jb250ZXh0X25ld19hcnJheV90eXBlCisjdW5kZWYgZ2NjX2ppdF9jb250 ZXh0X25ld19iaW5hcnlfb3AKKyN1bmRlZiBnY2Nfaml0X2NvbnRleHRfbmV3X2NhbGwKKyN1bmRl ZiBnY2Nfaml0X2NvbnRleHRfbmV3X2NhbGxfdGhyb3VnaF9wdHIKKyN1bmRlZiBnY2Nfaml0X2Nv bnRleHRfbmV3X2NvbXBhcmlzb24KKyN1bmRlZiBnY2Nfaml0X2NvbnRleHRfbmV3X2ZpZWxkCisj dW5kZWYgZ2NjX2ppdF9jb250ZXh0X25ld19mdW5jdGlvbgorI3VuZGVmIGdjY19qaXRfY29udGV4 dF9uZXdfZnVuY3Rpb25fcHRyX3R5cGUKKyN1bmRlZiBnY2Nfaml0X2NvbnRleHRfbmV3X2dsb2Jh bAorI3VuZGVmIGdjY19qaXRfY29udGV4dF9uZXdfb3BhcXVlX3N0cnVjdAorI3VuZGVmIGdjY19q aXRfY29udGV4dF9uZXdfcGFyYW0KKyN1bmRlZiBnY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9m cm9tX2ludAorI3VuZGVmIGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21fbG9uZworI3Vu ZGVmIGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21fcHRyCisjdW5kZWYgZ2NjX2ppdF9j b250ZXh0X25ld19zdHJ1Y3RfdHlwZQorI3VuZGVmIGdjY19qaXRfY29udGV4dF9uZXdfdW5hcnlf b3AKKyN1bmRlZiBnY2Nfaml0X2NvbnRleHRfbmV3X3VuaW9uX3R5cGUKKyN1bmRlZiBnY2Nfaml0 X2NvbnRleHRfcmVsZWFzZQorI3VuZGVmIGdjY19qaXRfY29udGV4dF9zZXRfYm9vbF9vcHRpb24K KyN1bmRlZiBnY2Nfaml0X2NvbnRleHRfc2V0X2ludF9vcHRpb24KKyN1bmRlZiBnY2Nfaml0X2Nv bnRleHRfc2V0X2xvZ2ZpbGUKKyN1bmRlZiBnY2Nfaml0X2Z1bmN0aW9uX2dldF9wYXJhbQorI3Vu ZGVmIGdjY19qaXRfZnVuY3Rpb25fbmV3X2Jsb2NrCisjdW5kZWYgZ2NjX2ppdF9mdW5jdGlvbl9u ZXdfbG9jYWwKKyN1bmRlZiBnY2Nfaml0X2x2YWx1ZV9hY2Nlc3NfZmllbGQKKyN1bmRlZiBnY2Nf aml0X2x2YWx1ZV9hc19ydmFsdWUKKyN1bmRlZiBnY2Nfaml0X2x2YWx1ZV9nZXRfYWRkcmVzcwor I3VuZGVmIGdjY19qaXRfcGFyYW1fYXNfbHZhbHVlCisjdW5kZWYgZ2NjX2ppdF9wYXJhbV9hc19y dmFsdWUKKyN1bmRlZiBnY2Nfaml0X3J2YWx1ZV9hY2Nlc3NfZmllbGQKKyN1bmRlZiBnY2Nfaml0 X3J2YWx1ZV9kZXJlZmVyZW5jZQorI3VuZGVmIGdjY19qaXRfcnZhbHVlX2RlcmVmZXJlbmNlX2Zp ZWxkCisjdW5kZWYgZ2NjX2ppdF9ydmFsdWVfZ2V0X3R5cGUKKyN1bmRlZiBnY2Nfaml0X3N0cnVj dF9hc190eXBlCisjdW5kZWYgZ2NjX2ppdF9zdHJ1Y3Rfc2V0X2ZpZWxkcworI3VuZGVmIGdjY19q aXRfdHlwZV9nZXRfcG9pbnRlcgorCisvKiBJbiBhbHBoYWJldGljYWwgb3JkZXIgKi8KK0RFRl9E TExfRk4gKGdjY19qaXRfcnZhbHVlICosIGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21f aW50LAorICAgICAgICAgICAgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgZ2NjX2ppdF90eXBlICpu dW1lcmljX3R5cGUsIGludCB2YWx1ZSkpOworREVGX0RMTF9GTiAoZ2NjX2ppdF9ydmFsdWUgKiwg Z2NjX2ppdF9sdmFsdWVfYXNfcnZhbHVlLAorICAgICAgICAgICAgKGdjY19qaXRfbHZhbHVlICps dmFsdWUpKTsKK0RFRl9ETExfRk4gKGdjY19qaXRfcnZhbHVlICosIGdjY19qaXRfcnZhbHVlX2Fj Y2Vzc19maWVsZCwKKyAgICAgICAgICAgIChnY2Nfaml0X3J2YWx1ZSAqc3RydWN0X29yX3VuaW9u LCBnY2Nfaml0X2xvY2F0aW9uICpsb2MsCisgICAgICAgICAgICAgZ2NjX2ppdF9maWVsZCAqZmll bGQpKTsKK0RFRl9ETExfRk4gKHZvaWQsIGdjY19qaXRfYmxvY2tfYWRkX2NvbW1lbnQsCisgICAg ICAgICAgICAoZ2NjX2ppdF9ibG9jayAqYmxvY2ssIGdjY19qaXRfbG9jYXRpb24gKmxvYywgY29u c3QgY2hhciAqdGV4dCkpOworREVGX0RMTF9GTiAodm9pZCwgZ2NjX2ppdF9jb250ZXh0X3JlbGVh c2UsIChnY2Nfaml0X2NvbnRleHQgKmN0eHQpKTsKK0RFRl9ETExfRk4gKGNvbnN0IGNoYXIgKiwg Z2NjX2ppdF9jb250ZXh0X2dldF9maXJzdF9lcnJvciwKKyAgICAgICAgICAgIChnY2Nfaml0X2Nv bnRleHQgKmN0eHQpKTsKK0RFRl9ETExfRk4gKGdjY19qaXRfYmxvY2sgKiwgZ2NjX2ppdF9mdW5j dGlvbl9uZXdfYmxvY2ssCisgICAgICAgICAgICAoZ2NjX2ppdF9mdW5jdGlvbiAqZnVuYywgY29u c3QgY2hhciAqbmFtZSkpOworREVGX0RMTF9GTiAoZ2NjX2ppdF9jb250ZXh0ICosIGdjY19qaXRf Y29udGV4dF9hY3F1aXJlLCAodm9pZCkpOworREVGX0RMTF9GTiAoZ2NjX2ppdF9maWVsZCAqLCBn Y2Nfaml0X2NvbnRleHRfbmV3X2ZpZWxkLAorICAgICAgICAgICAgKGdjY19qaXRfY29udGV4dCAq Y3R4dCwgZ2NjX2ppdF9sb2NhdGlvbiAqbG9jLCBnY2Nfaml0X3R5cGUgKnR5cGUsCisgICAgICAg ICAgICAgY29uc3QgY2hhciAqbmFtZSkpOworREVGX0RMTF9GTiAoZ2NjX2ppdF9mdW5jdGlvbiAq LCBnY2Nfaml0X2NvbnRleHRfZ2V0X2J1aWx0aW5fZnVuY3Rpb24sCisgICAgICAgICAgICAoZ2Nj X2ppdF9jb250ZXh0ICpjdHh0LCBjb25zdCBjaGFyICpuYW1lKSk7CitERUZfRExMX0ZOIChnY2Nf aml0X2Z1bmN0aW9uICosIGdjY19qaXRfY29udGV4dF9uZXdfZnVuY3Rpb24sCisgICAgICAgICAg ICAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCBnY2Nfaml0X2xvY2F0aW9uICpsb2MsCisgICAgICAg ICAgICAgZW51bSBnY2Nfaml0X2Z1bmN0aW9uX2tpbmQga2luZCwgZ2NjX2ppdF90eXBlICpyZXR1 cm5fdHlwZSwKKyAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCBpbnQgbnVtX3BhcmFtcywg Z2NjX2ppdF9wYXJhbSAqKnBhcmFtcywKKyAgICAgICAgICAgICBpbnQgaXNfdmFyaWFkaWMpKTsK K0RFRl9ETExfRk4gKGdjY19qaXRfbHZhbHVlICosIGdjY19qaXRfY29udGV4dF9uZXdfYXJyYXlf YWNjZXNzLAorICAgICAgICAgICAgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgZ2NjX2ppdF9sb2Nh dGlvbiAqbG9jLCBnY2Nfaml0X3J2YWx1ZSAqcHRyLAorICAgICAgICAgICAgIGdjY19qaXRfcnZh bHVlICppbmRleCkpOworREVGX0RMTF9GTiAoZ2NjX2ppdF9sdmFsdWUgKiwgZ2NjX2ppdF9jb250 ZXh0X25ld19nbG9iYWwsCisgICAgICAgICAgICAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCBnY2Nf aml0X2xvY2F0aW9uICpsb2MsCisgICAgICAgICAgICAgZW51bSBnY2Nfaml0X2dsb2JhbF9raW5k IGtpbmQsIGdjY19qaXRfdHlwZSAqdHlwZSwKKyAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1l KSk7CitERUZfRExMX0ZOIChnY2Nfaml0X2x2YWx1ZSAqLCBnY2Nfaml0X2Z1bmN0aW9uX25ld19s b2NhbCwKKyAgICAgICAgICAgIChnY2Nfaml0X2Z1bmN0aW9uICpmdW5jLCBnY2Nfaml0X2xvY2F0 aW9uICpsb2MsIGdjY19qaXRfdHlwZSAqdHlwZSwKKyAgICAgICAgICAgICBjb25zdCBjaGFyICpu YW1lKSk7CitERUZfRExMX0ZOIChnY2Nfaml0X2x2YWx1ZSAqLCBnY2Nfaml0X2x2YWx1ZV9hY2Nl c3NfZmllbGQsCisgICAgICAgICAgICAoZ2NjX2ppdF9sdmFsdWUgKnN0cnVjdF9vcl91bmlvbiwg Z2NjX2ppdF9sb2NhdGlvbiAqbG9jLAorICAgICAgICAgICAgIGdjY19qaXRfZmllbGQgKmZpZWxk KSk7CitERUZfRExMX0ZOIChnY2Nfaml0X2x2YWx1ZSAqLCBnY2Nfaml0X3BhcmFtX2FzX2x2YWx1 ZSwgKGdjY19qaXRfcGFyYW0gKnBhcmFtKSk7CitERUZfRExMX0ZOIChnY2Nfaml0X2x2YWx1ZSAq LCBnY2Nfaml0X3J2YWx1ZV9kZXJlZmVyZW5jZSwKKyAgICAgICAgICAgIChnY2Nfaml0X3J2YWx1 ZSAqcnZhbHVlLCBnY2Nfaml0X2xvY2F0aW9uICpsb2MpKTsKK0RFRl9ETExfRk4gKGdjY19qaXRf bHZhbHVlICosIGdjY19qaXRfcnZhbHVlX2RlcmVmZXJlbmNlX2ZpZWxkLAorICAgICAgICAgICAg KGdjY19qaXRfcnZhbHVlICpwdHIsIGdjY19qaXRfbG9jYXRpb24gKmxvYywgZ2NjX2ppdF9maWVs ZCAqZmllbGQpKTsKK0RFRl9ETExfRk4gKGdjY19qaXRfcGFyYW0gKiwgZ2NjX2ppdF9jb250ZXh0 X25ld19wYXJhbSwKKyAgICAgICAgICAgIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRf bG9jYXRpb24gKmxvYywgZ2NjX2ppdF90eXBlICp0eXBlLAorICAgICAgICAgICAgIGNvbnN0IGNo YXIgKm5hbWUpKTsKK0RFRl9ETExfRk4gKGdjY19qaXRfcGFyYW0gKiwgZ2NjX2ppdF9mdW5jdGlv bl9nZXRfcGFyYW0sCisgICAgICAgICAgICAoZ2NjX2ppdF9mdW5jdGlvbiAqZnVuYywgaW50IGlu ZGV4KSk7CitERUZfRExMX0ZOIChnY2Nfaml0X3J2YWx1ZSAqLCBnY2Nfaml0X2NvbnRleHRfbmV3 X2JpbmFyeV9vcCwKKyAgICAgICAgICAgIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRf bG9jYXRpb24gKmxvYywKKyAgICAgICAgICAgICBlbnVtIGdjY19qaXRfYmluYXJ5X29wIG9wLCBn Y2Nfaml0X3R5cGUgKnJlc3VsdF90eXBlLAorICAgICAgICAgICAgIGdjY19qaXRfcnZhbHVlICph LCBnY2Nfaml0X3J2YWx1ZSAqYikpOworREVGX0RMTF9GTiAoZ2NjX2ppdF9ydmFsdWUgKiwgZ2Nj X2ppdF9jb250ZXh0X25ld19jYWxsLAorICAgICAgICAgICAgKGdjY19qaXRfY29udGV4dCAqY3R4 dCwgZ2NjX2ppdF9sb2NhdGlvbiAqbG9jLAorICAgICAgICAgICAgIGdjY19qaXRfZnVuY3Rpb24g KmZ1bmMsIGludCBudW1hcmdzICwgZ2NjX2ppdF9ydmFsdWUgKiphcmdzKSk7CitERUZfRExMX0ZO IChnY2Nfaml0X3J2YWx1ZSAqLCBnY2Nfaml0X2NvbnRleHRfbmV3X2NhbGxfdGhyb3VnaF9wdHIs CisgICAgICAgICAgICAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCBnY2Nfaml0X2xvY2F0aW9uICps b2MsCisgICAgICAgICAgICAgZ2NjX2ppdF9ydmFsdWUgKmZuX3B0ciwgaW50IG51bWFyZ3MsIGdj Y19qaXRfcnZhbHVlICoqYXJncykpOworREVGX0RMTF9GTiAoZ2NjX2ppdF9ydmFsdWUgKiwgZ2Nj X2ppdF9jb250ZXh0X25ld19jb21wYXJpc29uLAorICAgICAgICAgICAgKGdjY19qaXRfY29udGV4 dCAqY3R4dCwgZ2NjX2ppdF9sb2NhdGlvbiAqbG9jLAorICAgICAgICAgICAgIGVudW0gZ2NjX2pp dF9jb21wYXJpc29uIG9wLCBnY2Nfaml0X3J2YWx1ZSAqYSwgZ2NjX2ppdF9ydmFsdWUgKmIpKTsK K0RFRl9ETExfRk4gKGdjY19qaXRfcnZhbHVlICosIGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVl X2Zyb21fbG9uZywKKyAgICAgICAgICAgIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRf dHlwZSAqbnVtZXJpY190eXBlLCBsb25nIHZhbHVlKSk7CitERUZfRExMX0ZOIChnY2Nfaml0X3J2 YWx1ZSAqLCBnY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX3B0ciwKKyAgICAgICAgICAg IChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRfdHlwZSAqcG9pbnRlcl90eXBlLCB2b2lk ICp2YWx1ZSkpOworREVGX0RMTF9GTiAoZ2NjX2ppdF9ydmFsdWUgKiwgZ2NjX2ppdF9jb250ZXh0 X25ld191bmFyeV9vcCwKKyAgICAgICAgICAgIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGdjY19q aXRfbG9jYXRpb24gKmxvYywKKyAgICAgICAgICAgICBlbnVtIGdjY19qaXRfdW5hcnlfb3Agb3As IGdjY19qaXRfdHlwZSAqcmVzdWx0X3R5cGUsCisgICAgICAgICAgICAgZ2NjX2ppdF9ydmFsdWUg KnJ2YWx1ZSkpOworREVGX0RMTF9GTiAoZ2NjX2ppdF9ydmFsdWUgKiwgZ2NjX2ppdF9sdmFsdWVf Z2V0X2FkZHJlc3MsCisgICAgICAgICAgICAoZ2NjX2ppdF9sdmFsdWUgKmx2YWx1ZSwgZ2NjX2pp dF9sb2NhdGlvbiAqbG9jKSk7CitERUZfRExMX0ZOIChnY2Nfaml0X3J2YWx1ZSAqLCBnY2Nfaml0 X3BhcmFtX2FzX3J2YWx1ZSwgKGdjY19qaXRfcGFyYW0gKnBhcmFtKSk7CitERUZfRExMX0ZOIChn Y2Nfaml0X3N0cnVjdCAqLCBnY2Nfaml0X2NvbnRleHRfbmV3X29wYXF1ZV9zdHJ1Y3QsCisgICAg ICAgICAgICAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCBnY2Nfaml0X2xvY2F0aW9uICpsb2MsIGNv bnN0IGNoYXIgKm5hbWUpKTsKK0RFRl9ETExfRk4gKGdjY19qaXRfc3RydWN0ICosIGdjY19qaXRf Y29udGV4dF9uZXdfc3RydWN0X3R5cGUsCisgICAgICAgICAgICAoZ2NjX2ppdF9jb250ZXh0ICpj dHh0LCBnY2Nfaml0X2xvY2F0aW9uICpsb2MsIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAg ICAgaW50IG51bV9maWVsZHMsIGdjY19qaXRfZmllbGQgKipmaWVsZHMpKTsKK0RFRl9ETExfRk4g KGdjY19qaXRfdHlwZSAqLCBnY2Nfaml0X2NvbnRleHRfZ2V0X2ludF90eXBlLAorICAgICAgICAg ICAgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgaW50IG51bV9ieXRlcywgaW50IGlzX3NpZ25lZCkp OworREVGX0RMTF9GTiAoZ2NjX2ppdF90eXBlICosIGdjY19qaXRfY29udGV4dF9nZXRfdHlwZSwK KyAgICAgICAgICAgIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGVudW0gZ2NjX2ppdF90eXBlcyB0 eXBlXykpOworREVGX0RMTF9GTiAoZ2NjX2ppdF90eXBlICosIGdjY19qaXRfY29udGV4dF9uZXdf YXJyYXlfdHlwZSwKKyAgICAgICAgICAgIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRf bG9jYXRpb24gKmxvYywKKyAgICAgICAgICAgICBnY2Nfaml0X3R5cGUgKmVsZW1lbnRfdHlwZSwg aW50IG51bV9lbGVtZW50cykpOworREVGX0RMTF9GTiAoZ2NjX2ppdF90eXBlICosIGdjY19qaXRf Y29udGV4dF9uZXdfZnVuY3Rpb25fcHRyX3R5cGUsCisgICAgICAgICAgICAoZ2NjX2ppdF9jb250 ZXh0ICpjdHh0LCBnY2Nfaml0X2xvY2F0aW9uICpsb2MsCisgICAgICAgICAgICAgZ2NjX2ppdF90 eXBlICpyZXR1cm5fdHlwZSwgaW50IG51bV9wYXJhbXMsCisgICAgICAgICAgICAgZ2NjX2ppdF90 eXBlICoqcGFyYW1fdHlwZXMsIGludCBpc192YXJpYWRpYykpOworREVGX0RMTF9GTiAoZ2NjX2pp dF90eXBlICosIGdjY19qaXRfY29udGV4dF9uZXdfdW5pb25fdHlwZSwKKyAgICAgICAgICAgIChn Y2Nfaml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRfbG9jYXRpb24gKmxvYywgY29uc3QgY2hhciAq bmFtZSwKKyAgICAgICAgICAgICBpbnQgbnVtX2ZpZWxkcywgZ2NjX2ppdF9maWVsZCAqKmZpZWxk cykpOworREVGX0RMTF9GTiAoZ2NjX2ppdF90eXBlICosIGdjY19qaXRfcnZhbHVlX2dldF90eXBl LCAoZ2NjX2ppdF9ydmFsdWUgKnJ2YWx1ZSkpOworREVGX0RMTF9GTiAoZ2NjX2ppdF90eXBlICos IGdjY19qaXRfc3RydWN0X2FzX3R5cGUsCisgICAgICAgICAgICAoZ2NjX2ppdF9zdHJ1Y3QgKnN0 cnVjdF90eXBlKSk7CitERUZfRExMX0ZOIChnY2Nfaml0X3R5cGUgKiwgZ2NjX2ppdF90eXBlX2dl dF9wb2ludGVyLCAoZ2NjX2ppdF90eXBlICp0eXBlKSk7CitERUZfRExMX0ZOICh2b2lkLCBnY2Nf aml0X2Jsb2NrX2FkZF9hc3NpZ25tZW50LAorICAgICAgICAgICAgKGdjY19qaXRfYmxvY2sgKmJs b2NrLCBnY2Nfaml0X2xvY2F0aW9uICpsb2MsIGdjY19qaXRfbHZhbHVlICpsdmFsdWUsCisgICAg ICAgICAgICAgZ2NjX2ppdF9ydmFsdWUgKnJ2YWx1ZSkpOworREVGX0RMTF9GTiAodm9pZCwgZ2Nj X2ppdF9ibG9ja19hZGRfZXZhbCwKKyAgICAgICAgICAgIChnY2Nfaml0X2Jsb2NrICpibG9jaywg Z2NjX2ppdF9sb2NhdGlvbiAqbG9jLAorICAgICAgICAgICAgIGdjY19qaXRfcnZhbHVlICpydmFs dWUpKTsKK0RFRl9ETExfRk4gKHZvaWQsIGdjY19qaXRfYmxvY2tfZW5kX3dpdGhfY29uZGl0aW9u YWwsCisgICAgICAgICAgICAoZ2NjX2ppdF9ibG9jayAqYmxvY2ssIGdjY19qaXRfbG9jYXRpb24g KmxvYywKKyAgICAgICAgICAgICBnY2Nfaml0X3J2YWx1ZSAqYm9vbHZhbCwgZ2NjX2ppdF9ibG9j ayAqb25fdHJ1ZSwKKyAgICAgICAgICAgICBnY2Nfaml0X2Jsb2NrICpvbl9mYWxzZSkpOworREVG X0RMTF9GTiAodm9pZCwgZ2NjX2ppdF9ibG9ja19lbmRfd2l0aF9qdW1wLAorICAgICAgICAgICAg KGdjY19qaXRfYmxvY2sgKmJsb2NrLCBnY2Nfaml0X2xvY2F0aW9uICpsb2MsCisgICAgICAgICAg ICAgZ2NjX2ppdF9ibG9jayAqdGFyZ2V0KSk7CitERUZfRExMX0ZOICh2b2lkLCBnY2Nfaml0X2Js b2NrX2VuZF93aXRoX3JldHVybiwKKyAgICAgICAgICAgIChnY2Nfaml0X2Jsb2NrICpibG9jaywg Z2NjX2ppdF9sb2NhdGlvbiAqbG9jLAorICAgICAgICAgICAgIGdjY19qaXRfcnZhbHVlICpydmFs dWUpKTsKK0RFRl9ETExfRk4gKHZvaWQsIGdjY19qaXRfYmxvY2tfZW5kX3dpdGhfdm9pZF9yZXR1 cm4sCisgICAgICAgICAgICAoZ2NjX2ppdF9ibG9jayAqYmxvY2ssIGdjY19qaXRfbG9jYXRpb24g KmxvYykpOworREVGX0RMTF9GTiAodm9pZCwgZ2NjX2ppdF9jb250ZXh0X2NvbXBpbGVfdG9fZmls ZSwKKyAgICAgICAgICAgIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGVudW0gZ2NjX2ppdF9vdXRw dXRfa2luZCBvdXRwdXRfa2luZCwKKyAgICAgICAgICAgICBjb25zdCBjaGFyICpvdXRwdXRfcGF0 aCkpOworREVGX0RMTF9GTiAodm9pZCwgZ2NjX2ppdF9jb250ZXh0X2R1bXBfcmVwcm9kdWNlcl90 b19maWxlLAorICAgICAgICAgICAgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgY29uc3QgY2hhciAq cGF0aCkpOworREVGX0RMTF9GTiAodm9pZCwgZ2NjX2ppdF9jb250ZXh0X2R1bXBfdG9fZmlsZSwK KyAgICAgICAgICAgIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGNvbnN0IGNoYXIgKnBhdGgsIGlu dCB1cGRhdGVfbG9jYXRpb25zKSk7CitERUZfRExMX0ZOICh2b2lkLCBnY2Nfaml0X2NvbnRleHRf c2V0X2Jvb2xfb3B0aW9uLAorICAgICAgICAgICAgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgZW51 bSBnY2Nfaml0X2Jvb2xfb3B0aW9uIG9wdCwgaW50IHZhbHVlKSk7CitERUZfRExMX0ZOICh2b2lk LCBnY2Nfaml0X2NvbnRleHRfc2V0X2ludF9vcHRpb24sCisgICAgICAgICAgICAoZ2NjX2ppdF9j b250ZXh0ICpjdHh0LCBlbnVtIGdjY19qaXRfaW50X29wdGlvbiBvcHQsIGludCB2YWx1ZSkpOwor REVGX0RMTF9GTiAodm9pZCwgZ2NjX2ppdF9jb250ZXh0X3NldF9sb2dmaWxlLAorICAgICAgICAg ICAgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgRklMRSAqbG9nZmlsZSwgaW50IGZsYWdzLCBpbnQg dmVyYm9zaXR5KSk7CitERUZfRExMX0ZOICh2b2lkLCBnY2Nfaml0X3N0cnVjdF9zZXRfZmllbGRz LAorICAgICAgICAgICAgKGdjY19qaXRfc3RydWN0ICpzdHJ1Y3RfdHlwZSwgZ2NjX2ppdF9sb2Nh dGlvbiAqbG9jLCBpbnQgbnVtX2ZpZWxkcywKKyAgICAgICAgICAgICBnY2Nfaml0X2ZpZWxkICoq ZmllbGRzKSk7CisKK3N0YXRpYyBib29sCitpbml0X2djY2ppdF9mdW5jdGlvbnModm9pZCkKK3sK KyAgSE1PRFVMRSBsaWJyYXJ5OworCisgIGlmICghKGxpYnJhcnkgPSB3MzJfZGVsYXllZF9sb2Fk IChRZ2Njaml0KSkpCisgICAgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAvKiBJ biBhbHBoYWJldGljYWwgb3JkZXIgKi8KKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9i bG9ja19hZGRfYXNzaWdubWVudCk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfYmxv Y2tfYWRkX2NvbW1lbnQpOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2Jsb2NrX2Fk ZF9ldmFsKTsKKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9ibG9ja19lbmRfd2l0aF9j b25kaXRpb25hbCk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfYmxvY2tfZW5kX3dp dGhfanVtcCk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfYmxvY2tfZW5kX3dpdGhf cmV0dXJuKTsKKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9ibG9ja19lbmRfd2l0aF92 b2lkX3JldHVybik7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9hY3F1 aXJlKTsKKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9jb250ZXh0X2NvbXBpbGVfdG9f ZmlsZSk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9kdW1wX3JlcHJv ZHVjZXJfdG9fZmlsZSk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9k dW1wX3RvX2ZpbGUpOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfZ2V0 X2J1aWx0aW5fZnVuY3Rpb24pOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRl eHRfZ2V0X2ZpcnN0X2Vycm9yKTsKKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9jb250 ZXh0X2dldF9pbnRfdHlwZSk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4 dF9nZXRfdHlwZSk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9uZXdf YXJyYXlfYWNjZXNzKTsKKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9jb250ZXh0X25l d19hcnJheV90eXBlKTsKKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9jb250ZXh0X25l d19iaW5hcnlfb3ApOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfbmV3 X2NhbGwpOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfbmV3X2NhbGxf dGhyb3VnaF9wdHIpOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfbmV3 X2NvbXBhcmlzb24pOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfbmV3 X2ZpZWxkKTsKKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9jb250ZXh0X25ld19mdW5j dGlvbik7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9uZXdfZnVuY3Rp b25fcHRyX3R5cGUpOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfbmV3 X2dsb2JhbCk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9uZXdfb3Bh cXVlX3N0cnVjdCk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9uZXdf cGFyYW0pOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1 ZV9mcm9tX2ludCk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9uZXdf cnZhbHVlX2Zyb21fbG9uZyk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4 dF9uZXdfcnZhbHVlX2Zyb21fcHRyKTsKKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9j b250ZXh0X25ld19zdHJ1Y3RfdHlwZSk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRf Y29udGV4dF9uZXdfdW5hcnlfb3ApOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2Nv bnRleHRfbmV3X3VuaW9uX3R5cGUpOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2Nv bnRleHRfcmVsZWFzZSk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9z ZXRfYm9vbF9vcHRpb24pOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRf c2V0X2ludF9vcHRpb24pOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRf c2V0X2xvZ2ZpbGUpOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2Z1bmN0aW9uX2dl dF9wYXJhbSk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfZnVuY3Rpb25fbmV3X2Js b2NrKTsKKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9mdW5jdGlvbl9uZXdfbG9jYWwp OworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2x2YWx1ZV9hY2Nlc3NfZmllbGQpOwor ICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2x2YWx1ZV9hc19ydmFsdWUpOworICBMT0FE X0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2x2YWx1ZV9nZXRfYWRkcmVzcyk7CisgIExPQURfRExM X0ZOKGxpYnJhcnksIGdjY19qaXRfcGFyYW1fYXNfbHZhbHVlKTsKKyAgTE9BRF9ETExfRk4obGli cmFyeSwgZ2NjX2ppdF9wYXJhbV9hc19ydmFsdWUpOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBn Y2Nfaml0X3J2YWx1ZV9hY2Nlc3NfZmllbGQpOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nf aml0X3J2YWx1ZV9kZXJlZmVyZW5jZSk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRf cnZhbHVlX2RlcmVmZXJlbmNlX2ZpZWxkKTsKKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2pp dF9ydmFsdWVfZ2V0X3R5cGUpOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X3N0cnVj dF9hc190eXBlKTsKKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9zdHJ1Y3Rfc2V0X2Zp ZWxkcyk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfdHlwZV9nZXRfcG9pbnRlcik7 CisKKyAgcmV0dXJuIHRydWU7Cit9CisKKy8qIEluIGFscGhhYmV0aWNhbCBvcmRlciAqLworI2Rl ZmluZSBnY2Nfaml0X2Jsb2NrX2FkZF9hc3NpZ25tZW50IGZuX2djY19qaXRfYmxvY2tfYWRkX2Fz c2lnbm1lbnQKKyNkZWZpbmUgZ2NjX2ppdF9ibG9ja19hZGRfY29tbWVudCBmbl9nY2Nfaml0X2Js b2NrX2FkZF9jb21tZW50CisjZGVmaW5lIGdjY19qaXRfYmxvY2tfYWRkX2V2YWwgZm5fZ2NjX2pp dF9ibG9ja19hZGRfZXZhbAorI2RlZmluZSBnY2Nfaml0X2Jsb2NrX2VuZF93aXRoX2NvbmRpdGlv bmFsIGZuX2djY19qaXRfYmxvY2tfZW5kX3dpdGhfY29uZGl0aW9uYWwKKyNkZWZpbmUgZ2NjX2pp dF9ibG9ja19lbmRfd2l0aF9qdW1wIGZuX2djY19qaXRfYmxvY2tfZW5kX3dpdGhfanVtcAorI2Rl ZmluZSBnY2Nfaml0X2Jsb2NrX2VuZF93aXRoX3JldHVybiBmbl9nY2Nfaml0X2Jsb2NrX2VuZF93 aXRoX3JldHVybgorI2RlZmluZSBnY2Nfaml0X2Jsb2NrX2VuZF93aXRoX3ZvaWRfcmV0dXJuIGZu X2djY19qaXRfYmxvY2tfZW5kX3dpdGhfdm9pZF9yZXR1cm4KKyNkZWZpbmUgZ2NjX2ppdF9jb250 ZXh0X2FjcXVpcmUgZm5fZ2NjX2ppdF9jb250ZXh0X2FjcXVpcmUKKyNkZWZpbmUgZ2NjX2ppdF9j b250ZXh0X2NvbXBpbGVfdG9fZmlsZSBmbl9nY2Nfaml0X2NvbnRleHRfY29tcGlsZV90b19maWxl CisjZGVmaW5lIGdjY19qaXRfY29udGV4dF9kdW1wX3JlcHJvZHVjZXJfdG9fZmlsZSBmbl9nY2Nf aml0X2NvbnRleHRfZHVtcF9yZXByb2R1Y2VyX3RvX2ZpbGUKKyNkZWZpbmUgZ2NjX2ppdF9jb250 ZXh0X2R1bXBfdG9fZmlsZSBmbl9nY2Nfaml0X2NvbnRleHRfZHVtcF90b19maWxlCisjZGVmaW5l IGdjY19qaXRfY29udGV4dF9nZXRfYnVpbHRpbl9mdW5jdGlvbiBmbl9nY2Nfaml0X2NvbnRleHRf Z2V0X2J1aWx0aW5fZnVuY3Rpb24KKyNkZWZpbmUgZ2NjX2ppdF9jb250ZXh0X2dldF9maXJzdF9l cnJvciBmbl9nY2Nfaml0X2NvbnRleHRfZ2V0X2ZpcnN0X2Vycm9yCisjZGVmaW5lIGdjY19qaXRf Y29udGV4dF9nZXRfaW50X3R5cGUgZm5fZ2NjX2ppdF9jb250ZXh0X2dldF9pbnRfdHlwZQorI2Rl ZmluZSBnY2Nfaml0X2NvbnRleHRfZ2V0X3R5cGUgZm5fZ2NjX2ppdF9jb250ZXh0X2dldF90eXBl CisjZGVmaW5lIGdjY19qaXRfY29udGV4dF9uZXdfYXJyYXlfYWNjZXNzIGZuX2djY19qaXRfY29u dGV4dF9uZXdfYXJyYXlfYWNjZXNzCisjZGVmaW5lIGdjY19qaXRfY29udGV4dF9uZXdfYXJyYXlf dHlwZSBmbl9nY2Nfaml0X2NvbnRleHRfbmV3X2FycmF5X3R5cGUKKyNkZWZpbmUgZ2NjX2ppdF9j b250ZXh0X25ld19iaW5hcnlfb3AgZm5fZ2NjX2ppdF9jb250ZXh0X25ld19iaW5hcnlfb3AKKyNk ZWZpbmUgZ2NjX2ppdF9jb250ZXh0X25ld19jYWxsIGZuX2djY19qaXRfY29udGV4dF9uZXdfY2Fs bAorI2RlZmluZSBnY2Nfaml0X2NvbnRleHRfbmV3X2NhbGxfdGhyb3VnaF9wdHIgZm5fZ2NjX2pp dF9jb250ZXh0X25ld19jYWxsX3Rocm91Z2hfcHRyCisjZGVmaW5lIGdjY19qaXRfY29udGV4dF9u ZXdfY29tcGFyaXNvbiBmbl9nY2Nfaml0X2NvbnRleHRfbmV3X2NvbXBhcmlzb24KKyNkZWZpbmUg Z2NjX2ppdF9jb250ZXh0X25ld19maWVsZCBmbl9nY2Nfaml0X2NvbnRleHRfbmV3X2ZpZWxkCisj ZGVmaW5lIGdjY19qaXRfY29udGV4dF9uZXdfZnVuY3Rpb24gZm5fZ2NjX2ppdF9jb250ZXh0X25l d19mdW5jdGlvbgorI2RlZmluZSBnY2Nfaml0X2NvbnRleHRfbmV3X2Z1bmN0aW9uX3B0cl90eXBl IGZuX2djY19qaXRfY29udGV4dF9uZXdfZnVuY3Rpb25fcHRyX3R5cGUKKyNkZWZpbmUgZ2NjX2pp dF9jb250ZXh0X25ld19nbG9iYWwgZm5fZ2NjX2ppdF9jb250ZXh0X25ld19nbG9iYWwKKyNkZWZp bmUgZ2NjX2ppdF9jb250ZXh0X25ld19vcGFxdWVfc3RydWN0IGZuX2djY19qaXRfY29udGV4dF9u ZXdfb3BhcXVlX3N0cnVjdAorI2RlZmluZSBnY2Nfaml0X2NvbnRleHRfbmV3X3BhcmFtIGZuX2dj Y19qaXRfY29udGV4dF9uZXdfcGFyYW0KKyNkZWZpbmUgZ2NjX2ppdF9jb250ZXh0X25ld19ydmFs dWVfZnJvbV9pbnQgZm5fZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9pbnQKKyNkZWZp bmUgZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9sb25nIGZuX2djY19qaXRfY29udGV4 dF9uZXdfcnZhbHVlX2Zyb21fbG9uZworI2RlZmluZSBnY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1 ZV9mcm9tX3B0ciBmbl9nY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX3B0cgorI2RlZmlu ZSBnY2Nfaml0X2NvbnRleHRfbmV3X3N0cnVjdF90eXBlIGZuX2djY19qaXRfY29udGV4dF9uZXdf c3RydWN0X3R5cGUKKyNkZWZpbmUgZ2NjX2ppdF9jb250ZXh0X25ld191bmFyeV9vcCBmbl9nY2Nf aml0X2NvbnRleHRfbmV3X3VuYXJ5X29wCisjZGVmaW5lIGdjY19qaXRfY29udGV4dF9uZXdfdW5p b25fdHlwZSBmbl9nY2Nfaml0X2NvbnRleHRfbmV3X3VuaW9uX3R5cGUKKyNkZWZpbmUgZ2NjX2pp dF9jb250ZXh0X3JlbGVhc2UgZm5fZ2NjX2ppdF9jb250ZXh0X3JlbGVhc2UKKyNkZWZpbmUgZ2Nj X2ppdF9jb250ZXh0X3NldF9ib29sX29wdGlvbiBmbl9nY2Nfaml0X2NvbnRleHRfc2V0X2Jvb2xf b3B0aW9uCisjZGVmaW5lIGdjY19qaXRfY29udGV4dF9zZXRfaW50X29wdGlvbiBmbl9nY2Nfaml0 X2NvbnRleHRfc2V0X2ludF9vcHRpb24KKyNkZWZpbmUgZ2NjX2ppdF9jb250ZXh0X3NldF9sb2dm aWxlIGZuX2djY19qaXRfY29udGV4dF9zZXRfbG9nZmlsZQorI2RlZmluZSBnY2Nfaml0X2Z1bmN0 aW9uX2dldF9wYXJhbSBmbl9nY2Nfaml0X2Z1bmN0aW9uX2dldF9wYXJhbQorI2RlZmluZSBnY2Nf aml0X2Z1bmN0aW9uX25ld19ibG9jayBmbl9nY2Nfaml0X2Z1bmN0aW9uX25ld19ibG9jaworI2Rl ZmluZSBnY2Nfaml0X2Z1bmN0aW9uX25ld19sb2NhbCBmbl9nY2Nfaml0X2Z1bmN0aW9uX25ld19s b2NhbAorI2RlZmluZSBnY2Nfaml0X2x2YWx1ZV9hY2Nlc3NfZmllbGQgZm5fZ2NjX2ppdF9sdmFs dWVfYWNjZXNzX2ZpZWxkCisjZGVmaW5lIGdjY19qaXRfbHZhbHVlX2FzX3J2YWx1ZSBmbl9nY2Nf aml0X2x2YWx1ZV9hc19ydmFsdWUKKyNkZWZpbmUgZ2NjX2ppdF9sdmFsdWVfZ2V0X2FkZHJlc3Mg Zm5fZ2NjX2ppdF9sdmFsdWVfZ2V0X2FkZHJlc3MKKyNkZWZpbmUgZ2NjX2ppdF9wYXJhbV9hc19s dmFsdWUgZm5fZ2NjX2ppdF9wYXJhbV9hc19sdmFsdWUKKyNkZWZpbmUgZ2NjX2ppdF9wYXJhbV9h c19ydmFsdWUgZm5fZ2NjX2ppdF9wYXJhbV9hc19ydmFsdWUKKyNkZWZpbmUgZ2NjX2ppdF9ydmFs dWVfYWNjZXNzX2ZpZWxkIGZuX2djY19qaXRfcnZhbHVlX2FjY2Vzc19maWVsZAorI2RlZmluZSBn Y2Nfaml0X3J2YWx1ZV9kZXJlZmVyZW5jZSBmbl9nY2Nfaml0X3J2YWx1ZV9kZXJlZmVyZW5jZQor I2RlZmluZSBnY2Nfaml0X3J2YWx1ZV9kZXJlZmVyZW5jZV9maWVsZCBmbl9nY2Nfaml0X3J2YWx1 ZV9kZXJlZmVyZW5jZV9maWVsZAorI2RlZmluZSBnY2Nfaml0X3J2YWx1ZV9nZXRfdHlwZSBmbl9n Y2Nfaml0X3J2YWx1ZV9nZXRfdHlwZQorI2RlZmluZSBnY2Nfaml0X3N0cnVjdF9hc190eXBlIGZu X2djY19qaXRfc3RydWN0X2FzX3R5cGUKKyNkZWZpbmUgZ2NjX2ppdF9zdHJ1Y3Rfc2V0X2ZpZWxk cyBmbl9nY2Nfaml0X3N0cnVjdF9zZXRfZmllbGRzCisjZGVmaW5lIGdjY19qaXRfdHlwZV9nZXRf cG9pbnRlciBmbl9nY2Nfaml0X3R5cGVfZ2V0X3BvaW50ZXIKKworI2VuZGlmCisKK3N0YXRpYyBi b29sCitsb2FkX2djY2ppdF9pZl9uZWNlc3NhcnkoYm9vbCBtYW5kYXRvcnkpCit7CisjaWZkZWYg V0lORE9XU05UCisgIGlmICghZ2Njaml0X2luaXRpYWxpemVkKQorICAgIHsKKyAgICAgIExpc3Bf T2JqZWN0IHN0YXR1czsKKyAgICAgIGdjY2ppdF9pbml0aWFsaXplZCA9IGluaXRfZ2Njaml0X2Z1 bmN0aW9ucyAoKTsKKyAgICAgIHN0YXR1cyA9IGdjY2ppdF9pbml0aWFsaXplZCA/IFF0IDogUW5p bDsKKyAgICAgIFZsaWJyYXJ5X2NhY2hlID0gRmNvbnMgKEZjb25zIChRanNvbiwgc3RhdHVzKSwg VmxpYnJhcnlfY2FjaGUpOworICAgIH0KKworICBpZiAobWFuZGF0b3J5ICYmICFnY2NqaXRfaW5p dGlhbGl6ZWQpCisgICAgeHNpZ25hbDEoUW5hdGl2ZV9jb21waWxlcl9lcnJvciwgYnVpbGRfc3Ry aW5nKCJsaWJnY2NqaXQgbm90IGZvdW5kIikpOworCisgIHJldHVybiBnY2NqaXRfaW5pdGlhbGl6 ZWQ7CisjZWxzZQorICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorfQorCisMCiAvKiBDIHN5bWJvbHMg ZW1pdHRlZCBmb3IgdGhlIGxvYWQgcmVsb2NhdGlvbiBtZWNoYW5pc20uICAqLwogI2RlZmluZSBD VVJSRU5UX1RIUkVBRF9SRUxPQ19TWU0gImN1cnJlbnRfdGhyZWFkX3JlbG9jIgogI2RlZmluZSBQ VVJFX1BUUl9TWU0gInB1cmVfcHRyIgpAQCAtMzMyOCw2ICszNjY2LDggQEAgREVGVU4gKCJjb21w LS1pbml0LWN0eHQiLCBGY29tcF9faW5pdF9jdHh0LCBTY29tcF9faW5pdF9jdHh0LAogICAgICAg IGRvYzogLyogSW5pdGlhbGl6ZSB0aGUgbmF0aXZlIGNvbXBpbGVyIGNvbnRleHQuIFJldHVybiB0 IG9uIHN1Y2Nlc3MuICAqLykKICAgICAgKHZvaWQpCiB7CisgIGxvYWRfZ2Njaml0X2lmX25lY2Vz c2FyeSh0cnVlKTsKKwogICBpZiAoY29tcC5jdHh0KQogICAgIHsKICAgICAgIHhzaWduYWwxIChR bmF0aXZlX2ljZSwKQEAgLTM0NzQsNiArMzgxNCw4IEBAIERFRlVOICgiY29tcC0tcmVsZWFzZS1j dHh0IiwgRmNvbXBfX3JlbGVhc2VfY3R4dCwgU2NvbXBfX3JlbGVhc2VfY3R4dCwKICAgICAgICBk b2M6IC8qIFJlbGVhc2UgdGhlIG5hdGl2ZSBjb21waWxlciBjb250ZXh0LiAgKi8pCiAgICAgICh2 b2lkKQogeworICBsb2FkX2djY2ppdF9pZl9uZWNlc3NhcnkodHJ1ZSk7CisKICAgaWYgKGNvbXAu Y3R4dCkKICAgICBnY2Nfaml0X2NvbnRleHRfcmVsZWFzZSAoY29tcC5jdHh0KTsKIApAQCAtMzQ5 MCw2ICszODMyLDggQEAgREVGVU4gKCJjb21wLS1jb21waWxlLWN0eHQtdG8tZmlsZSIsIEZjb21w X19jb21waWxlX2N0eHRfdG9fZmlsZSwKICAgICAgICBkb2M6IC8qIENvbXBpbGUgYXMgbmF0aXZl IGNvZGUgdGhlIGN1cnJlbnQgY29udGV4dCB0byBmaWxlLiAgKi8pCiAgICAgIChMaXNwX09iamVj dCBiYXNlX25hbWUpCiB7CisgIGxvYWRfZ2Njaml0X2lmX25lY2Vzc2FyeSh0cnVlKTsKKwogICBD SEVDS19TVFJJTkcgKGJhc2VfbmFtZSk7CiAKICAgZ2NjX2ppdF9jb250ZXh0X3NldF9pbnRfb3B0 aW9uIChjb21wLmN0eHQsCkBAIC0zNjYwLDYgKzQwMDQsOSBAQCBtYXliZV9kZWZlcl9uYXRpdmVf Y29tcGlsYXRpb24gKExpc3BfT2JqZWN0IGZ1bmN0aW9uX25hbWUsCiAgICAgICBmZmx1c2ggKGYp OwogICAgIH0KICNlbmRpZgorICBpZiAoIWxvYWRfZ2Njaml0X2lmX25lY2Vzc2FyeShmYWxzZSkp CisgICAgcmV0dXJuOworCiAgIGlmICghY29tcF9kZWZlcnJlZF9jb21waWxhdGlvbgogICAgICAg fHwgbm9uaW50ZXJhY3RpdmUKICAgICAgIHx8ICFOSUxQIChWcHVyaWZ5X2ZsYWcpCkBAIC0zOTI4 LDYgKzQyNzUsMTUgQEAgREVGVU4gKCJuYXRpdmUtZWxpc3AtbG9hZCIsIEZuYXRpdmVfZWxpc3Bf bG9hZCwgU25hdGl2ZV9lbGlzcF9sb2FkLCAxLCAyLCAwLAogICByZXR1cm4gUXQ7CiB9CiAKK0RF RlVOICgibmF0aXZlLWNvbXAtYXZhaWxhYmxlLXAiLCBGbmF0aXZlX2NvbXBfYXZhaWxhYmxlX3As CisgICAgICAgU25hdGl2ZV9jb21wX2F2YWlsYWJsZV9wLCAwLCAwLCAwLAorICAgICAgIGRvYzog LyogUmV0dXJucyB0IGlmIG5hdGl2ZSBjb21waWxhdGlvbiBvZiBMaXNwIGZpbGVzIGlzIGF2YWls YWJsZSBpbgordGhpcyBpbnN0YW5jZSBvZiBFbWFjcy4gKi8pCisgICh2b2lkKQoreworICByZXR1 cm4gbG9hZF9nY2NqaXRfaWZfbmVjZXNzYXJ5KGZhbHNlKSA/IFF0IDogUW5pbDsKK30KKwogDAog dm9pZAogc3ltc19vZl9jb21wICh2b2lkKQpAQCAtNDAzOSw2ICs0Mzk1LDcgQEAgc3ltc19vZl9j b21wICh2b2lkKQogICBkZWZzdWJyICgmU2NvbXBfX3JlZ2lzdGVyX3N1YnIpOwogICBkZWZzdWJy ICgmU2NvbXBfX2xhdGVfcmVnaXN0ZXJfc3Vicik7CiAgIGRlZnN1YnIgKCZTbmF0aXZlX2VsaXNw X2xvYWQpOworICBkZWZzdWJyICgmU25hdGl2ZV9jb21wX2F2YWlsYWJsZV9wKTsKIAogICBzdGF0 aWNwcm8gKCZjb21wLmV4cG9ydGVkX2Z1bmNzX2gpOwogICBjb21wLmV4cG9ydGVkX2Z1bmNzX2gg PSBRbmlsOwpkaWZmIC0tZ2l0IGEvc3JjL3czMmZucy5jIGIvc3JjL3czMmZucy5jCmluZGV4IGU1 OTViMDI4NWEuLmVlYjczNDg5ZGQgMTAwNjQ0Ci0tLSBhL3NyYy93MzJmbnMuYworKysgYi9zcmMv dzMyZm5zLmMKQEAgLTEwNDYyLDYgKzEwNDYyLDcgQEAgc3ltc19vZl93MzJmbnMgKHZvaWQpCiAg IERFRlNZTSAoUXpsaWIsICJ6bGliIik7CiAgIERFRlNZTSAoUWxjbXMyLCAibGNtczIiKTsKICAg REVGU1lNIChRanNvbiwgImpzb24iKTsKKyAgREVGU1lNIChRZ2Njaml0LCAiZ2Njaml0Iik7CiAK ICAgRnB1dCAoUXVuZGVmaW5lZF9jb2xvciwgUWVycm9yX2NvbmRpdGlvbnMsCiAJcHVyZV9saXN0 IChRdW5kZWZpbmVkX2NvbG9yLCBRZXJyb3IpKTsKLS0gCjIuMjUuMS53aW5kb3dzLjEKCg== --0000000000005ed04905a576bf8d--