From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31190 invoked by alias); 23 Oct 2008 00:06:07 -0000 Received: (qmail 31177 invoked by uid 22791); 23 Oct 2008 00:06:05 -0000 X-Spam-Check-By: sourceware.org Received: from rv-out-0708.google.com (HELO rv-out-0708.google.com) (209.85.198.251) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 23 Oct 2008 00:05:30 +0000 Received: by rv-out-0708.google.com with SMTP id c5so56804rvf.56 for ; Wed, 22 Oct 2008 17:05:27 -0700 (PDT) Received: by 10.140.162.21 with SMTP id k21mr6830295rve.261.1224720327311; Wed, 22 Oct 2008 17:05:27 -0700 (PDT) Received: by 10.140.173.5 with HTTP; Wed, 22 Oct 2008 17:05:27 -0700 (PDT) Message-ID: <6c33472e0810221705u1286ac46g166ec57677fe0f4c@mail.gmail.com> Date: Thu, 23 Oct 2008 02:42:00 -0000 From: "=?ISO-8859-1?Q?Manuel_L=F3pez-Ib=E1=F1ez?=" To: "Joseph S. Myers" Subject: Re: [C/C++] PR 13358 long long and C++ do not mix well Cc: "Gcc Patch List" In-Reply-To: <6c33472e0808281700m457e1f2euf6a0da108dd5b84a@mail.gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_29569_3745055.1224720327303" References: <6c33472e0808281543w5d464fe6r1fa5e584797ac46c@mail.gmail.com> <6c33472e0808281700m457e1f2euf6a0da108dd5b84a@mail.gmail.com> X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2008-10/txt/msg00975.txt.bz2 ------=_Part_29569_3745055.1224720327303 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-length: 2770 I think the following patch addresses all requirements and in the process it fixes some small deficiencies of the current status, such as talking about C99 when invoked from C++. Bootstrapped and regression tested on x86_64-unknown-linux-gnu with --enable-languages=3Dall,obj-c++ --enable-decimal-float and --target_board=3D\{-m32,-m64\} OK for trunk? 2008-10-23 Manuel Lopez-Ibanez PR 13358 * doc/invoke.texi (-Wlong-long): Update description. * c-lex (interpret_integer): Only warn if there was no previous overflow and -Wlong-long is enabled. * c-decl.c (declspecs_add_type): Drop redundant flags. * c.opt (Wlong-long): Init to -1. * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long and front-end warn_long_long. Wlong-long only depends on other flags if it is uninitialized. * c-parser.c (disable_extension_diagnostics): warn_long_long is the same for CPP and FE. (restore_extension_diagnostics): Likewise. libcpp/ * init.c (cpp_create_reader): Wlong_long is disabled by default. * expr.c (cpp_classify_number): Give different messages for C and C++ front-ends. cp/ * parser.c (cp_parser_check_decl_spec): Drop redundant flags. * error.c (pedwarn_cxx98): New. * cp-tree.h (pedwarn_cxx98): Declare. =09 testsuite/ * gcc.dg/wtr-int-type-1.c: Use two dg-warning to match two messages. Test for "long long" in system headers. * gcc.dg/c99-longlong-2.c: New. * g++.dg/warn/pr13358.C: New. * g++.dg/warn/pr13358-2.C: New. * g++.dg/warn/pr13358-3.C: New. * g++.dg/warn/pr13358-4.C: New. 2008/8/29 Manuel L=F3pez-Ib=E1=F1ez : > 2008/8/29 Joseph S. Myers : >> On Fri, 29 Aug 2008, Manuel L=F3pez-Ib=E1=F1ez wrote: >> >>> CPP and the FE were using different semantics. invoke.texi said that >>> Wlong-long was the default. This was not correct. It was the default >>> for CPP but -Wno-long-long was the default for the FE. Now there is >>> only one semantic: the one from the FE. >>> >>> However, we were inhibiting warning even if the user requested it >>> through Wlong-long. Now explicit Wlong-long (or Wno-long-long) >>> overrides everything else, except in system headers. >> >> If you allow -Wlong-long to have an effect in C99 mode, -std=3Dc99 >> -pedantic-errors -Wlong-long should give the diagnostics as warnings not >> errors. Does it? > > No but I can make it do that just using pedwarn_c90 instead of pedwarn > and add a testcase. I'll do the same for c++98. I''ll need to add an > equivalent of pedwarn_c90 to C++ and CPP. In C++ is probably easy. > > Is there a way to tell in CPP if we are being called from the C++ FE? > and which standard? I cannot find anything in the sources apart from > CPP_OPTION (pfile, c99). > > Cheers, > > Manuel. > ------=_Part_29569_3745055.1224720327303 Content-Type: text/x-diff; name=fix-pr13358-try2.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_fmmmtptd0 Content-Disposition: attachment; filename=fix-pr13358-try2.diff Content-length: 22493 SW5kZXg6IGdjYy9kb2MvaW52b2tlLnRleGkKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gZ2NjL2RvYy9pbnZva2UudGV4aQkocmV2aXNpb24gMTQxMjY1 KQorKysgZ2NjL2RvYy9pbnZva2UudGV4aQkod29ya2luZyBjb3B5KQpAQCAt NDA1OSwxNCArNDA1OSwxMyBAQCBXYXJuIGlmIGEgcHJlY29tcGlsZWQgaGVh ZGVyIChAcHhyZWZ7UHJlCiB0aGUgc2VhcmNoIHBhdGggYnV0IGNhbid0IGJl IHVzZWQuCiAKIEBpdGVtIC1XbG9uZy1sb25nCiBAb3BpbmRleCBXbG9uZy1s b25nCiBAb3BpbmRleCBXbm8tbG9uZy1sb25nCi1XYXJuIGlmIEBzYW1we2xv bmcgbG9uZ30gdHlwZSBpcyB1c2VkLiAgVGhpcyBpcyBkZWZhdWx0LiAgVG8g aW5oaWJpdAotdGhlIHdhcm5pbmcgbWVzc2FnZXMsIHVzZSBAb3B0aW9uey1X bm8tbG9uZy1sb25nfS4gIEZsYWdzCi1Ab3B0aW9uey1XbG9uZy1sb25nfSBh bmQgQG9wdGlvbnstV25vLWxvbmctbG9uZ30gYXJlIHRha2VuIGludG8gYWNj b3VudAotb25seSB3aGVuIEBvcHRpb257LXBlZGFudGljfSBmbGFnIGlzIHVz ZWQuCitXYXJuIGlmIEBzYW1we2xvbmcgbG9uZ30gdHlwZSBpcyB1c2VkLiAg VGhpcyBpcyBlbmFibGVkIGJ5IGVpdGhlcgorQG9wdGlvbnstcGVkYW50aWN9 IG9yIEBvcHRpb257LVd0cmFkaXRpb25hbH0gaW4gSVNPIEM5MCBhbmQgQysr OTgKK21vZGVzLiAgVG8gaW5oaWJpdCB0aGUgd2FybmluZyBtZXNzYWdlcywg dXNlIEBvcHRpb257LVduby1sb25nLWxvbmd9LgogCiBAaXRlbSAtV3Zhcmlh ZGljLW1hY3JvcwogQG9waW5kZXggV3ZhcmlhZGljLW1hY3JvcwogQG9waW5k ZXggV25vLXZhcmlhZGljLW1hY3JvcwogV2FybiBpZiB2YXJpYWRpYyBtYWNy b3MgYXJlIHVzZWQgaW4gcGVkYW50aWMgSVNPIEM5MCBtb2RlLCBvciB0aGUg R05VCkluZGV4OiBnY2MvYy1sZXguYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBnY2MvYy1sZXguYwkocmV2aXNpb24gMTQxMjY1KQorKysgZ2NjL2Mt bGV4LmMJKHdvcmtpbmcgY29weSkKQEAgLTU4MCwxNyArNTgwLDIyIEBAIGlu dGVycHJldF9pbnRlZ2VyIChjb25zdCBjcHBfdG9rZW4gKnRva2UKICAgICAv KiBjcHBsaWIgaGFzIGFscmVhZHkgaXNzdWVkIGEgd2FybmluZyBmb3Igb3Zl cmZsb3cuICAqLwogICAgIHR5cGUgPSAoKGZsYWdzICYgQ1BQX05fVU5TSUdO RUQpCiAJICAgID8gd2lkZXN0X3Vuc2lnbmVkX2xpdGVyYWxfdHlwZV9ub2Rl CiAJICAgIDogd2lkZXN0X2ludGVnZXJfbGl0ZXJhbF90eXBlX25vZGUpOwog ICBlbHNlCi0gICAgdHlwZSA9IGludGVnZXJfdHlwZXNbaXRrXTsKLQotICBp ZiAoaXRrID4gaXRrX3Vuc2lnbmVkX2xvbmcKLSAgICAgICYmIChmbGFncyAm IENQUF9OX1dJRFRIKSAhPSBDUFBfTl9MQVJHRQotICAgICAgJiYgIWluX3N5 c3RlbV9oZWFkZXIgJiYgIWZsYWdfaXNvYzk5KQotICAgIHBlZHdhcm4gKGlu cHV0X2xvY2F0aW9uLCAwLCAiaW50ZWdlciBjb25zdGFudCBpcyB0b28gbGFy Z2UgZm9yICVxcyB0eXBlIiwKLQkgICAgIChmbGFncyAmIENQUF9OX1VOU0lH TkVEKSA/ICJ1bnNpZ25lZCBsb25nIiA6ICJsb25nIik7CisgICAgeworICAg ICAgdHlwZSA9IGludGVnZXJfdHlwZXNbaXRrXTsKKyAgICAgIGlmIChpdGsg PiBpdGtfdW5zaWduZWRfbG9uZworCSAgJiYgKGZsYWdzICYgQ1BQX05fV0lE VEgpICE9IENQUF9OX0xBUkdFKQorCWVtaXRfZGlhZ25vc3RpYyAKKwkgICgo Y19kaWFsZWN0X2N4eCAoKSA/IGN4eF9kaWFsZWN0ID09IGN4eDk4IDogIWZs YWdfaXNvYzk5KQorCSAgID8gREtfUEVEV0FSTiA6IERLX1dBUk5JTkcsCisJ ICAgaW5wdXRfbG9jYXRpb24sIE9QVF9XbG9uZ19sb25nLAorCSAgIChmbGFn cyAmIENQUF9OX1VOU0lHTkVEKSAKKwkgICA/ICJpbnRlZ2VyIGNvbnN0YW50 IGlzIHRvbyBsYXJnZSBmb3IgJTx1bnNpZ25lZCBsb25nJT4gdHlwZSIKKwkg ICA6ICJpbnRlZ2VyIGNvbnN0YW50IGlzIHRvbyBsYXJnZSBmb3IgJTxsb25n JT4gdHlwZSIpOworICAgIH0KIAogICB2YWx1ZSA9IGJ1aWxkX2ludF9jc3Rf d2lkZSAodHlwZSwgaW50ZWdlci5sb3csIGludGVnZXIuaGlnaCk7CiAKICAg LyogQ29udmVydCBpbWFnaW5hcnkgdG8gYSBjb21wbGV4IHR5cGUuICAqLwog ICBpZiAoZmxhZ3MgJiBDUFBfTl9JTUFHSU5BUlkpCkluZGV4OiBnY2MvdGVz dHN1aXRlL2djYy5kZy93dHItaW50LXR5cGUtMS5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3d0ci1pbnQtdHlw ZS0xLmMJKHJldmlzaW9uIDE0MTI2NSkKKysrIGdjYy90ZXN0c3VpdGUvZ2Nj LmRnL3d0ci1pbnQtdHlwZS0xLmMJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEz ICsyMywyMSBAQCB0ZXN0ZnVuYyAoKQogICAgICB3ZSBjYW4gcHJldGVuZCBp dCB3b3JrZWQgdGhlIHdheSBpdCBkb2VzIGluIEM5OS5dICAqLwogICBpID0g OTIyMzM3MjAzNjg1NDc3NTgwNzsKIAogICAvKiBCdXQgdGhpcyBvbmUgc2hv dWxkLCBzaW5jZSBpdCBkb2Vzbid0IGZpdCBpbiBsb25nIChsb25nKSwgYnV0 CiAgICAgIGRvZXMgZml0IGluIHVuc2lnbmVkIGxvbmcgKGxvbmcpLiAgKi8K LSAgaSA9IDE4NDQ2NzQ0MDczNzA5NTUxNjE1OyAvKiB7IGRnLXdhcm5pbmcg ImRlY2ltYWwgY29uc3RhbnR8dW5zaWduZWQiICJkZWNpbWFsIGNvbnN0YW50 IiB9ICovCi0gIAorICBpID0gMTg0NDY3NDQwNzM3MDk1NTE2MTU7IC8qIHsg ZGctd2FybmluZyAiaW50ZWdlciBjb25zdGFudCBpcyBzbyBsYXJnZSB0aGF0 IGl0IGlzIHVuc2lnbmVkIiAiZGVjaW1hbCBjb25zdGFudCIgfSAqLworICAv KiB7IGRnLXdhcm5pbmcgInRoaXMgZGVjaW1hbCBjb25zdGFudCB3b3VsZCBi ZSB1bnNpZ25lZCBpbiBJU08gQzkwIiAiZGVjaW1hbCBjb25zdGFudCIgeyB0 YXJnZXQgKi0qLSogfSAyOCB9ICovCisKICMgMjkgInN5cy1oZWFkZXIuaCIg MworfQorCit2b2lkCit0ZXN0ZnVuYzIoICkgCit7IAorICBsb25nIGxvbmcg aTsKKwogLyogV2UgYXJlIGluIHN5c3RlbSBoZWFkZXJzIG5vdywgbm8gLVd0 cmFkaXRpb25hbCB3YXJuaW5ncyBzaG91bGQgaXNzdWUuICAqLwogCiAgIGkg PSAweDgwMDAwMDAwOwogICBpID0gMHhGRkZGRkZGRjsKICAgaSA9IDAzNzc3 Nzc3Nzc3NzsKQEAgLTM5LDUgKzQ3LDYgQEAgdGVzdGZ1bmMgKCkKICAgaSA9 IDAxNzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3OwogICAKICAgaSA9IDkyMjMzNzIw MzY4NTQ3NzU4MDc7CiAgIGkgPSAxODQ0Njc0NDA3MzcwOTU1MTYxNTsKIH0K KwpJbmRleDogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYzk5LWxvbmdsb25nLTIu Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2dj Yy5kZy9jOTktbG9uZ2xvbmctMi5jCShyZXZpc2lvbiAwKQorKysgZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvYzk5LWxvbmdsb25nLTIuYwkocmV2aXNpb24gMCkK QEAgLTAsMCArMSw2IEBACisvKiBUZXN0IGZvciBsb25nIGxvbmc6IGlmIGV4 cGxpY2l0IFdsb25nLWxvbmcsIGluIEM5OSBvbmx5IHdhcm4sIG5vdAorICAg cGVkd2Fybi4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBk Zy1vcHRpb25zICItc3RkPWlzbzk4OTk6MTk5OSAtcGVkYW50aWMtZXJyb3Jz IC1XbG9uZy1sb25nIiB9ICovCisKK2xvbmcgbG9uZyBmb287IC8qIHsgZGct d2FybmluZyAibG9uZyBsb25nIiB9ICovCkluZGV4OiBnY2MvdGVzdHN1aXRl L2crKy5kZy93YXJuL3ByMTMzNTgtMi5DCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL3dhcm4vcHIxMzM1OC0yLkMJ KHJldmlzaW9uIDApCisrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy93YXJuL3By MTMzNTgtMi5DCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0IEBACisvLyBQ UiBjKysvMTMzNTg6IGcrKyBzaG91bGQgYWNjZXB0IGEgbG9uZyBsb25nIGNv bnN0YW50IHNhbnMgTEwgc3VmZml4CisvLyBpZiAtV25vLWxvbmctbG9uZyBp cyBpbiB1c2UuCisvLyB7IGRnLWRvIGNvbXBpbGUgfQorLy8geyBkZy1yZXF1 aXJlLWVmZmVjdGl2ZS10YXJnZXQgaW50MzJwbHVzIH0KKy8vIHsgZGctb3B0 aW9ucyAiLXN0ZD1jKys5OCAtcGVkYW50aWMtZXJyb3JzIiB9CisKKwordm9p ZCB1c2VfbG9uZ2xvbmcgKCkKK3sKKyAgdW5zaWduZWQgbG9uZyBsb25nIHgx LCB4MiwgeDM7IC8vIHsgZGctZXJyb3IgIklTTyBDXFwrXFwrIDE5OTggZG9l cyBub3Qgc3VwcG9ydCAnbG9uZyBsb25nJyIgfQorICAvLyBtYWtlIHN1cmUg d2UgZXJyb3Igd2l0aCBoZXgsIGRlY2ltYWwgYW5kIG9jdGFsCisgIHgxID0g MHgxYjI3ZGE1NzJlZjNjZDg2OyAvLyB7IGRnLWVycm9yICJpbnRlZ2VyIGNv bnN0YW50IGlzIHRvbyBsYXJnZSBmb3IgJ2xvbmcnIHR5cGUiICJsb25nIGxv bmciIHsgdGFyZ2V0IGlscDMyIH0gfQorICB4MiA9IDE5NTY3NzI2MzExMDA1 MDk1NzQ7IC8vIHsgZGctZXJyb3IgImludGVnZXIgY29uc3RhbnQgaXMgdG9v IGxhcmdlIGZvciAnbG9uZycgdHlwZSIgImxvbmcgbG9uZyIgeyB0YXJnZXQg aWxwMzIgfSB9CisgIHgzID0gMDE1NDQ3NjY0NTM0NTY3NDc0NjYwNjsgLy8g eyBkZy1lcnJvciAiaW50ZWdlciBjb25zdGFudCBpcyB0b28gbGFyZ2UgZm9y ICdsb25nJyB0eXBlIiAibG9uZyBsb25nIiB7IHRhcmdldCBpbHAzMiB9IH0K K30KKwordm9pZCB1c2VfbG9uZ2xvbmcyICgpCit7CisgIHVuc2lnbmVkIGxv bmcgbG9uZyB4MSwgeDIsIHgzOyAvLyB7IGRnLWVycm9yICJJU08gQ1xcK1xc KyAxOTk4IGRvZXMgbm90IHN1cHBvcnQgJ2xvbmcgbG9uZyciIH0KKyAgLy8g bWFrZSBzdXJlIHdlIGVycm9yIHdpdGggaGV4LCBkZWNpbWFsIGFuZCBvY3Rh bAorICB4MSA9IDB4MWIyN2RhNTcyZWYzY2Q4NkxMOyAvLyB7IGRnLWVycm9y ICJsb25nIGxvbmciIH0KKyAgeDIgPSAxOTU2NzcyNjMxMTAwNTA5NTc0TEw7 IC8vIHsgZGctZXJyb3IgImxvbmcgbG9uZyIgfQorICB4MyA9IDAxNTQ0NzY2 NDUzNDU2NzQ3NDY2MDZMTDsgLy8geyBkZy1lcnJvciAibG9uZyBsb25nIiB9 Cit9CkluZGV4OiBnY2MvdGVzdHN1aXRlL2crKy5kZy93YXJuL3ByMTMzNTgt My5DCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy90ZXN0c3VpdGUv ZysrLmRnL3dhcm4vcHIxMzM1OC0zLkMJKHJldmlzaW9uIDApCisrKyBnY2Mv dGVzdHN1aXRlL2crKy5kZy93YXJuL3ByMTMzNTgtMy5DCShyZXZpc2lvbiAw KQpAQCAtMCwwICsxLDI0IEBACisvLyBQUiBjKysvMTMzNTg6IGcrKyBzaG91 bGQgYWNjZXB0IGEgbG9uZyBsb25nIGNvbnN0YW50IHNhbnMgTEwgc3VmZml4 CisvLyBpZiAtV25vLWxvbmctbG9uZyBpcyBpbiB1c2UKKy8vIHsgZGctZG8g Y29tcGlsZSB9CisvLyB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBp bnQzMnBsdXMgfSAKKy8vIHsgZGctb3B0aW9ucyAiLXN0ZD1jKysweCAtcGVk YW50aWMtZXJyb3JzIiB9CisKKwordm9pZCB1c2VfbG9uZ2xvbmcgKCkKK3sK KyAgdW5zaWduZWQgbG9uZyBsb25nIHgxLCB4MiwgeDM7IAorICAvLyBtYWtl IHN1cmUgaXQncyBvayB3aXRoIGhleCwgZGVjaW1hbCBhbmQgb2N0YWwKKyAg eDEgPSAweDFiMjdkYTU3MmVmM2NkODY7CisgIHgyID0gMTk1Njc3MjYzMTEw MDUwOTU3NDsKKyAgeDMgPSAwMTU0NDc2NjQ1MzQ1Njc0NzQ2NjA2OworfQor Cit2b2lkIHVzZV9sb25nbG9uZzIgKCkKK3sKKyAgdW5zaWduZWQgbG9uZyBs b25nIHgxLCB4MiwgeDM7IAorICAvLyBtYWtlIHN1cmUgaXQncyBvayB3aXRo IGhleCwgZGVjaW1hbCBhbmQgb2N0YWwKKyAgeDEgPSAweDFiMjdkYTU3MmVm M2NkODZMTDsKKyAgeDIgPSAxOTU2NzcyNjMxMTAwNTA5NTc0TEw7CisgIHgz ID0gMDE1NDQ3NjY0NTM0NTY3NDc0NjYwNkxMOworfQpJbmRleDogZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvd2Fybi9wcjEzMzU4LTQuQwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2crKy5kZy93YXJuL3ByMTMz NTgtNC5DCShyZXZpc2lvbiAwKQorKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv d2Fybi9wcjEzMzU4LTQuQwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNCBA QAorLy8gUFIgYysrLzEzMzU4OiBnKysgc2hvdWxkIGFjY2VwdCBhIGxvbmcg bG9uZyBjb25zdGFudCBzYW5zIExMIHN1ZmZpeAorLy8gaWYgLVduby1sb25n LWxvbmcgaXMgaW4gdXNlLgorLy8geyBkZy1kbyBjb21waWxlIH0KKy8vIHsg ZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGludDMycGx1cyB9IAorLy8g eyBkZy1vcHRpb25zICItc3RkPWMrKzB4IC1wZWRhbnRpYy1lcnJvcnMgLVds b25nLWxvbmciIH0KKworCit2b2lkIHVzZV9sb25nbG9uZyAoKQoreworICB1 bnNpZ25lZCBsb25nIGxvbmcgeDEsIHgyLCB4MzsgLy8geyBkZy13YXJuaW5n ICJJU08gQ1xcK1xcKyAxOTk4IGRvZXMgbm90IHN1cHBvcnQgJ2xvbmcgbG9u ZyciIH0KKyAgLy8gbWFrZSBzdXJlIHdlIHdhcm4gd2l0aCBoZXgsIGRlY2lt YWwgYW5kIG9jdGFsCisgIHgxID0gMHgxYjI3ZGE1NzJlZjNjZDg2OyAvLyB7 IGRnLXdhcm5pbmcgImludGVnZXIgY29uc3RhbnQgaXMgdG9vIGxhcmdlIGZv ciAnbG9uZycgdHlwZSIgImxvbmcgbG9uZyIgeyB0YXJnZXQgaWxwMzIgfSB9 CisgIHgyID0gMTk1Njc3MjYzMTEwMDUwOTU3NDsgLy8geyBkZy13YXJuaW5n ICJpbnRlZ2VyIGNvbnN0YW50IGlzIHRvbyBsYXJnZSBmb3IgJ2xvbmcnIHR5 cGUiICJsb25nIGxvbmciIHsgdGFyZ2V0IGlscDMyIH0gfQorICB4MyA9IDAx NTQ0NzY2NDUzNDU2NzQ3NDY2MDY7IC8vIHsgZGctd2FybmluZyAiaW50ZWdl ciBjb25zdGFudCBpcyB0b28gbGFyZ2UgZm9yICdsb25nJyB0eXBlIiAibG9u ZyBsb25nIiB7IHRhcmdldCBpbHAzMiB9IH0KK30KKwordm9pZCB1c2VfbG9u Z2xvbmcyICgpCit7CisgIHVuc2lnbmVkIGxvbmcgbG9uZyB4MSwgeDIsIHgz OyAvLyB7IGRnLXdhcm5pbmcgIklTTyBDXFwrXFwrIDE5OTggZG9lcyBub3Qg c3VwcG9ydCAnbG9uZyBsb25nJyIgfQorICAvLyBtYWtlIHN1cmUgd2Ugd2Fy biB3aXRoIGhleCwgZGVjaW1hbCBhbmQgb2N0YWwKKyAgeDEgPSAweDFiMjdk YTU3MmVmM2NkODZMTDsgLy8geyBkZy13YXJuaW5nICJsb25nIGxvbmciIH0K KyAgeDIgPSAxOTU2NzcyNjMxMTAwNTA5NTc0TEw7IC8vIHsgZGctd2Fybmlu ZyAibG9uZyBsb25nIiB9CisgIHgzID0gMDE1NDQ3NjY0NTM0NTY3NDc0NjYw NkxMOyAvLyB7IGRnLXdhcm5pbmcgImxvbmcgbG9uZyIgfQorfQpJbmRleDog Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvd2Fybi9wcjEzMzU4LkMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvd2Fybi9w cjEzMzU4LkMJKHJldmlzaW9uIDApCisrKyBnY2MvdGVzdHN1aXRlL2crKy5k Zy93YXJuL3ByMTMzNTguQwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNCBA QAorLy8gUFIgYysrLzEzMzU4OiBnKysgc2hvdWxkIGFjY2VwdCBhIGxvbmcg bG9uZyBjb25zdGFudCBzYW5zIExMIHN1ZmZpeAorLy8gaWYgLVduby1sb25n LWxvbmcgaXMgaW4gdXNlLgorLy8geyBkZy1kbyBjb21waWxlIH0KKy8vIHsg ZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGludDMycGx1cyB9IAorLy8g eyBkZy1vcHRpb25zICItc3RkPWMrKzk4IC1Xbm8tbG9uZy1sb25nIC1wZWRh bnRpYy1lcnJvcnMiIH0KKworCit2b2lkIHVzZV9sb25nbG9uZyAoKQorewor ICB1bnNpZ25lZCBsb25nIGxvbmcgeDEsIHgyLCB4MzsgCisgIC8vIG1ha2Ug c3VyZSBpdCdzIG9rIHdpdGggaGV4LCBkZWNpbWFsIGFuZCBvY3RhbAorICB4 MSA9IDB4MWIyN2RhNTcyZWYzY2Q4NjsKKyAgeDIgPSAxOTU2NzcyNjMxMTAw NTA5NTc0OworICB4MyA9IDAxNTQ0NzY2NDUzNDU2NzQ3NDY2MDY7Cit9CisK K3ZvaWQgdXNlX2xvbmdsb25nMiAoKQoreworICB1bnNpZ25lZCBsb25nIGxv bmcgeDEsIHgyLCB4MzsgCisgIC8vIG1ha2Ugc3VyZSBpdCdzIG9rIHdpdGgg aGV4LCBkZWNpbWFsIGFuZCBvY3RhbAorICB4MSA9IDB4MWIyN2RhNTcyZWYz Y2Q4NkxMOworICB4MiA9IDE5NTY3NzI2MzExMDA1MDk1NzRMTDsKKyAgeDMg PSAwMTU0NDc2NjQ1MzQ1Njc0NzQ2NjA2TEw7Cit9CkluZGV4OiBnY2MvY3Av ZXJyb3IuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvY3AvZXJy b3IuYwkocmV2aXNpb24gMTQxMjY1KQorKysgZ2NjL2NwL2Vycm9yLmMJKHdv cmtpbmcgY29weSkKQEAgLTI3MDQsNSArMjcwNCwyNCBAQCBtYXliZV93YXJu X2NwcDB4IChjb25zdCBjaGFyKiBzdHIpCiB2b2lkCiBtYXliZV93YXJuX3Zh cmlhZGljX3RlbXBsYXRlcyAodm9pZCkKIHsKICAgbWF5YmVfd2Fybl9jcHAw eCAoInZhcmlhZGljIHRlbXBsYXRlcyIpOwogfQorCisKKy8qIElzc3VlIGFu IElTTyBDKys5OCBwZWRhbnRpYyB3YXJuaW5nIE1TR0lELiAgVGhpcyBmdW5j dGlvbiBpcyBzdXBwb3NlZCB0bworICAgYmUgdXNlZCBmb3IgbWF0dGVycyB0 aGF0IGFyZSBhbGxvd2VkIGluIElTTyBDKysweCBidXQgbm90IHN1cHBvcnRl ZCBpbgorICAgSVNPIEMrKzk4LCB0aHVzIHdlIGV4cGxpY2l0bHkgZG9uJ3Qg cGVkd2FybiB3aGVuIElTTyBjKysweCBpcyBzcGVjaWZpZWQuICAqLworCiti b29sCitwZWR3YXJuX2N4eDk4IChsb2NhdGlvbl90IGxvY2F0aW9uLCBpbnQg b3B0LCBjb25zdCBjaGFyICpnbXNnaWQsIC4uLikKK3sKKyAgZGlhZ25vc3Rp Y19pbmZvIGRpYWdub3N0aWM7CisgIHZhX2xpc3QgYXA7CisKKyAgdmFfc3Rh cnQgKGFwLCBnbXNnaWQpOworICBkaWFnbm9zdGljX3NldF9pbmZvICgmZGlh Z25vc3RpYywgZ21zZ2lkLCAmYXAsIGxvY2F0aW9uLAorCQkgICAgICAgKGN4 eF9kaWFsZWN0ID09IGN4eDk4KSA/IERLX1BFRFdBUk4gOiBES19XQVJOSU5H KTsKKyAgZGlhZ25vc3RpYy5vcHRpb25faW5kZXggPSBvcHQ7CisgIHZhX2Vu ZCAoYXApOworICByZXR1cm4gcmVwb3J0X2RpYWdub3N0aWMgKCZkaWFnbm9z dGljKTsKK30KSW5kZXg6IGdjYy9jcC9jcC10cmVlLmgKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gZ2NjL2NwL2NwLXRyZWUuaAkocmV2aXNpb24gMTQx MjY1KQorKysgZ2NjL2NwL2NwLXRyZWUuaAkod29ya2luZyBjb3B5KQpAQCAt NDQzMiwxMCArNDQzMiwxMSBAQCBleHRlcm4gY29uc3QgY2hhciAqbGFuZ19k ZWNsX25hbWUJCSh0cmVlCiBleHRlcm4gY29uc3QgY2hhciAqbGFuZ3VhZ2Vf dG9fc3RyaW5nCQkoZW51bSBsYW5ndWFnZXMpOwogZXh0ZXJuIGNvbnN0IGNo YXIgKmNsYXNzX2tleV9vcl9lbnVtX2FzX3N0cmluZwkodHJlZSk7CiBleHRl cm4gdm9pZCBwcmludF9pbnN0YW50aWF0aW9uX2NvbnRleHQJCSh2b2lkKTsK IGV4dGVybiB2b2lkIG1heWJlX3dhcm5fdmFyaWFkaWNfdGVtcGxhdGVzICAg ICAgICh2b2lkKTsKIGV4dGVybiB2b2lkIG1heWJlX3dhcm5fY3BwMHgJCQko Y29uc3QgY2hhciAqKTsKK2V4dGVybiBib29sIHBlZHdhcm5fY3h4OTggICAg ICAgICAgICAgICAgICAgICAgIChsb2NhdGlvbl90LCBpbnQsIGNvbnN0IGNo YXIgKiwgLi4uKSBBVFRSSUJVVEVfR0NDX0NYWERJQUcoMyw0KTsKIAogLyog aW4gZXhjZXB0LmMgKi8KIGV4dGVybiB2b2lkIGluaXRfZXhjZXB0aW9uX3By b2Nlc3NpbmcJCSh2b2lkKTsKIGV4dGVybiB0cmVlIGV4cGFuZF9zdGFydF9j YXRjaF9ibG9jawkJKHRyZWUpOwogZXh0ZXJuIHZvaWQgZXhwYW5kX2VuZF9j YXRjaF9ibG9jawkJKHZvaWQpOwpJbmRleDogZ2NjL2NwL3BhcnNlci5jCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy9jcC9wYXJzZXIuYwkocmV2 aXNpb24gMTQxMjY1KQorKysgZ2NjL2NwL3BhcnNlci5jCSh3b3JraW5nIGNv cHkpCkBAIC0yMTYyLDE0ICsyMTYyLDEzIEBAIGNwX3BhcnNlcl9jaGVja19k ZWNsX3NwZWMgKGNwX2RlY2xfc3BlY2kKICAgICAgIC8qIFRoZSAibG9uZyIg c3BlY2lmaWVyIGlzIGEgc3BlY2lhbCBjYXNlIGJlY2F1c2Ugb2YgImxvbmcg bG9uZyIuICAqLwogICAgICAgaWYgKGRzID09IGRzX2xvbmcpCiAJewogCSAg aWYgKGNvdW50ID4gMikKIAkgICAgZXJyb3IgKCIlSCU8bG9uZyBsb25nIGxv bmclPiBpcyB0b28gbG9uZyBmb3IgR0NDIiwgJmxvY2F0aW9uKTsKLQkgIGVs c2UgaWYgKHBlZGFudGljICYmICFpbl9zeXN0ZW1faGVhZGVyICYmIHdhcm5f bG9uZ19sb25nCi0gICAgICAgICAgICAgICAgICAgJiYgY3h4X2RpYWxlY3Qg PT0gY3h4OTgpCi0JICAgIHBlZHdhcm4gKGxvY2F0aW9uLCBPUFRfV2xvbmdf bG9uZywgCi0JCSAgICAgIklTTyBDKysgMTk5OCBkb2VzIG5vdCBzdXBwb3J0 ICU8bG9uZyBsb25nJT4iKTsKKwkgIGVsc2UgCisJICAgIHBlZHdhcm5fY3h4 OTggKGxvY2F0aW9uLCBPUFRfV2xvbmdfbG9uZywgCisJCQkgICAiSVNPIEMr KyAxOTk4IGRvZXMgbm90IHN1cHBvcnQgJTxsb25nIGxvbmclPiIpOwogCX0K ICAgICAgIGVsc2UgaWYgKGNvdW50ID4gMSkKIAl7CiAJICBzdGF0aWMgY29u c3QgY2hhciAqY29uc3QgZGVjbF9zcGVjX25hbWVzW10gPSB7CiAJICAgICJz aWduZWQiLApJbmRleDogZ2NjL2MtZGVjbC5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIGdjYy9jLWRlY2wuYwkocmV2aXNpb24gMTQxMjY1KQorKysg Z2NjL2MtZGVjbC5jCSh3b3JraW5nIGNvcHkpCkBAIC03MjE0LDEyICs3MjE0 LDEyIEBAIGRlY2xzcGVjc19hZGRfdHlwZSAoc3RydWN0IGNfZGVjbHNwZWNz ICoKIAkJICAgIHsKIAkJICAgICAgZXJyb3IgKCJib3RoICU8bG9uZyBsb25n JT4gYW5kICU8ZG91YmxlJT4gaW4gIgogCQkJICAgICAiZGVjbGFyYXRpb24g c3BlY2lmaWVycyIpOwogCQkgICAgICBicmVhazsKIAkJICAgIH0KLQkJICBp ZiAocGVkYW50aWMgJiYgIWZsYWdfaXNvYzk5ICYmICFpbl9zeXN0ZW1faGVh ZGVyKQotCQkgICAgcGVkd2FybiAoaW5wdXRfbG9jYXRpb24sIE9QVF9XbG9u Z19sb25nLCAiSVNPIEM5MCBkb2VzIG5vdCBzdXBwb3J0ICU8bG9uZyBsb25n JT4iKTsKKwkJICBwZWR3YXJuX2M5MCAoaW5wdXRfbG9jYXRpb24sIE9QVF9X bG9uZ19sb25nLCAKKwkJCSAgICAgICAiSVNPIEM5MCBkb2VzIG5vdCBzdXBw b3J0ICU8bG9uZyBsb25nJT4iKTsKIAkJICBzcGVjcy0+bG9uZ19sb25nX3Ag PSAxOwogCQkgIGJyZWFrOwogCQl9CiAJICAgICAgaWYgKHNwZWNzLT5zaG9y dF9wKQogCQllcnJvciAoImJvdGggJTxsb25nJT4gYW5kICU8c2hvcnQlPiBp biAiCkluZGV4OiBnY2MvYy5vcHQKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gZ2NjL2Mub3B0CShyZXZpc2lvbiAxNDEyNjUpCisrKyBnY2MvYy5vcHQJ KHdvcmtpbmcgY29weSkKQEAgLTI3OSwxMSArMjc5LDExIEBAIFdhcm4gYWJv dXQgaW52YWxpZCB1c2VzIG9mIHRoZSBcIm9mZnNldG8KIFdpbnZhbGlkLXBj aAogQyBPYmpDIEMrKyBPYmpDKysgV2FybmluZwogV2FybiBhYm91dCBQQ0gg ZmlsZXMgdGhhdCBhcmUgZm91bmQgYnV0IG5vdCB1c2VkCiAKIFdsb25nLWxv bmcKLUMgT2JqQyBDKysgT2JqQysrIFZhcih3YXJuX2xvbmdfbG9uZykgSW5p dCgxKSBXYXJuaW5nCitDIE9iakMgQysrIE9iakMrKyBWYXIod2Fybl9sb25n X2xvbmcpIEluaXQoLTEpIFdhcm5pbmcKIERvIG5vdCB3YXJuIGFib3V0IHVz aW5nIFwibG9uZyBsb25nXCIgd2hlbiAtcGVkYW50aWMKIAogV21haW4KIEMg T2JqQyBDKysgT2JqQysrIFZhcih3YXJuX21haW4pIEluaXQoLTEpIFdhcm5p bmcKIFdhcm4gYWJvdXQgc3VzcGljaW91cyBkZWNsYXJhdGlvbnMgb2YgXCJt YWluXCIKSW5kZXg6IGdjYy9jLW9wdHMuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBnY2MvYy1vcHRzLmMJKHJldmlzaW9uIDE0MTI2NSkKKysrIGdj Yy9jLW9wdHMuYwkod29ya2luZyBjb3B5KQpAQCAtMTM5NCwxOCArMTM5NCwx OSBAQCBzYW5pdGl6ZV9jcHBfb3B0cyAodm9pZCkKICAgICBlcnJvciAoIi1N RyBtYXkgb25seSBiZSB1c2VkIHdpdGggLU0gb3IgLU1NIik7CiAKICAgY3Bw X29wdHMtPnVuc2lnbmVkX2NoYXIgPSAhZmxhZ19zaWduZWRfY2hhcjsKICAg Y3BwX29wdHMtPnN0ZGNfMF9pbl9zeXN0ZW1faGVhZGVycyA9IFNURENfMF9J Tl9TWVNURU1fSEVBREVSUzsKIAotICAvKiBXZSB3YW50IC1Xbm8tbG9uZy1s b25nIHRvIG92ZXJyaWRlIC1wZWRhbnRpYyAtc3RkPW5vbi1jOTkKLSAgICAg YW5kL29yIC1XdHJhZGl0aW9uYWwsIHdoYXRldmVyIHRoZSBvcmRlcmluZy4g ICovCi0gIGNwcF9vcHRzLT53YXJuX2xvbmdfbG9uZwotICAgID0gd2Fybl9s b25nX2xvbmcgJiYgKChwZWRhbnRpYwotCQkJICAmJiAoY19kaWFsZWN0X2N4 eCAoKQotCQkJICAgICAgPyBjeHhfZGlhbGVjdCA9PSBjeHg5OAotCQkJICAg ICAgOiAhZmxhZ19pc29jOTkpKQotICAgICAgICAgICAgICAgICAgICAgICAg IHx8IHdhcm5fdHJhZGl0aW9uYWwpOworICAvKiBXbG9uZy1sb25nIGlzIGRp c2FibGVkIGJ5IGRlZmF1bHQuIEl0IGlzIGVuYWJsZWQgYnk6CisgICAgICBb LXBlZGFudGljIHwgLVd0cmFkaXRpb25hbF0gLXN0ZD1bZ251fGNdKys5OCA7 IG9yCisgICAgICBbLXBlZGFudGljIHwgLVd0cmFkaXRpb25hbF0gLXN0ZD1u b24tYzk5IC4gCisKKyAgICAgIEVpdGhlciAtV2xvbmctbG9uZyBvciAtV25v LWxvbmctbG9uZyBvdmVycmlkZSBhbnkgb3RoZXIgc2V0dGluZ3MuICAqLwor ICBpZiAod2Fybl9sb25nX2xvbmcgPT0gLTEpCisgICAgd2Fybl9sb25nX2xv bmcgPSAoKHBlZGFudGljIHx8IHdhcm5fdHJhZGl0aW9uYWwpCisJCSAgICAg ICYmIChjX2RpYWxlY3RfY3h4ICgpID8gY3h4X2RpYWxlY3QgPT0gY3h4OTgg OiAhZmxhZ19pc29jOTkpKTsKKyAgY3BwX29wdHMtPndhcm5fbG9uZ19sb25n ID0gd2Fybl9sb25nX2xvbmc7CiAKICAgLyogU2ltaWxhcmx5IHdpdGggLVdu by12YXJpYWRpYy1tYWNyb3MuICBObyBjaGVjayBmb3IgYzk5IGhlcmUsIHNp bmNlCiAgICAgIHRoaXMgYWxzbyB0dXJucyBvZmYgd2FybmluZ3MgYWJvdXQg R0NDcyBleHRlbnNpb24uICAqLwogICBjcHBfb3B0cy0+d2Fybl92YXJpYWRp Y19tYWNyb3MKICAgICA9IHdhcm5fdmFyaWFkaWNfbWFjcm9zICYmIChwZWRh bnRpYyB8fCB3YXJuX3RyYWRpdGlvbmFsKTsKSW5kZXg6IGdjYy9jLXBhcnNl ci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy9jLXBhcnNlci5j CShyZXZpc2lvbiAxNDEyNjUpCisrKyBnY2MvYy1wYXJzZXIuYwkod29ya2lu ZyBjb3B5KQpAQCAtODE1LDE4ICs4MTUsMTYgQEAgZGlzYWJsZV9leHRlbnNp b25fZGlhZ25vc3RpY3MgKHZvaWQpCiB7CiAgIGludCByZXQgPSAocGVkYW50 aWMKIAkgICAgIHwgKHdhcm5fcG9pbnRlcl9hcml0aCA8PCAxKQogCSAgICAg fCAod2Fybl90cmFkaXRpb25hbCA8PCAyKQogCSAgICAgfCAoZmxhZ19pc28g PDwgMykKLQkgICAgIHwgKHdhcm5fbG9uZ19sb25nIDw8IDQpCi0JICAgICB8 IChjcHBfb3B0cy0+d2Fybl9sb25nX2xvbmcgPDwgNSkpOworCSAgICAgfCAo d2Fybl9sb25nX2xvbmcgPDwgNCkpOwogICBjcHBfb3B0cy0+cGVkYW50aWMg PSBwZWRhbnRpYyA9IDA7CiAgIHdhcm5fcG9pbnRlcl9hcml0aCA9IDA7CiAg IGNwcF9vcHRzLT53YXJuX3RyYWRpdGlvbmFsID0gd2Fybl90cmFkaXRpb25h bCA9IDA7CiAgIGZsYWdfaXNvID0gMDsKLSAgd2Fybl9sb25nX2xvbmcgPSAw OwotICBjcHBfb3B0cy0+d2Fybl9sb25nX2xvbmcgPSAwOworICBjcHBfb3B0 cy0+d2Fybl9sb25nX2xvbmcgPSB3YXJuX2xvbmdfbG9uZyA9IDA7CiAgIHJl dHVybiByZXQ7CiB9CiAKIC8qIFJlc3RvcmUgdGhlIHdhcm5pbmcgZmxhZ3Mg d2hpY2ggYXJlIGNvbnRyb2xsZWQgYnkgX19leHRlbnNpb25fXy4KICAgIEZM QUdTIGlzIHRoZSByZXR1cm4gdmFsdWUgZnJvbSBkaXNhYmxlX2V4dGVuc2lv bl9kaWFnbm9zdGljcy4gICovCkBAIC04MzYsMTIgKzgzNCwxMSBAQCByZXN0 b3JlX2V4dGVuc2lvbl9kaWFnbm9zdGljcyAoaW50IGZsYWdzCiB7CiAgIGNw cF9vcHRzLT5wZWRhbnRpYyA9IHBlZGFudGljID0gZmxhZ3MgJiAxOwogICB3 YXJuX3BvaW50ZXJfYXJpdGggPSAoZmxhZ3MgPj4gMSkgJiAxOwogICBjcHBf b3B0cy0+d2Fybl90cmFkaXRpb25hbCA9IHdhcm5fdHJhZGl0aW9uYWwgPSAo ZmxhZ3MgPj4gMikgJiAxOwogICBmbGFnX2lzbyA9IChmbGFncyA+PiAzKSAm IDE7Ci0gIHdhcm5fbG9uZ19sb25nID0gKGZsYWdzID4+IDQpICYgMTsKLSAg Y3BwX29wdHMtPndhcm5fbG9uZ19sb25nID0gKGZsYWdzID4+IDUpICYgMTsK KyAgY3BwX29wdHMtPndhcm5fbG9uZ19sb25nID0gd2Fybl9sb25nX2xvbmcg PSAoZmxhZ3MgPj4gNCkgJiAxOwogfQogCiAvKiBQb3NzaWJseSBraW5kcyBv ZiBkZWNsYXJhdG9yIHRvIHBhcnNlLiAgKi8KIHR5cGVkZWYgZW51bSBjX2R0 cl9zeW4gewogICAvKiBBIG5vcm1hbCBkZWNsYXJhdG9yIHdpdGggYW4gaWRl bnRpZmllci4gICovCkluZGV4OiBsaWJjcHAvaW5pdC5jCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIGxpYmNwcC9pbml0LmMJKHJldmlzaW9uIDE0MTI2 NSkKKysrIGxpYmNwcC9pbml0LmMJKHdvcmtpbmcgY29weSkKQEAgLTE1Nywx MSArMTU3LDExIEBAIGNwcF9jcmVhdGVfcmVhZGVyIChlbnVtIGNfbGFuZyBs YW5nLCBoYXMKICAgQ1BQX09QVElPTiAocGZpbGUsIHRhYnN0b3ApID0gODsK ICAgQ1BQX09QVElPTiAocGZpbGUsIG9wZXJhdG9yX25hbWVzKSA9IDE7CiAg IENQUF9PUFRJT04gKHBmaWxlLCB3YXJuX3RyaWdyYXBocykgPSAyOwogICBD UFBfT1BUSU9OIChwZmlsZSwgd2Fybl9lbmRpZl9sYWJlbHMpID0gMTsKICAg Q1BQX09QVElPTiAocGZpbGUsIHdhcm5fZGVwcmVjYXRlZCkgPSAxOwotICBD UFBfT1BUSU9OIChwZmlsZSwgd2Fybl9sb25nX2xvbmcpID0gIUNQUF9PUFRJ T04gKHBmaWxlLCBjOTkpOworICBDUFBfT1BUSU9OIChwZmlsZSwgd2Fybl9s b25nX2xvbmcpID0gMDsKICAgQ1BQX09QVElPTiAocGZpbGUsIGRvbGxhcnNf aW5faWRlbnQpID0gMTsKICAgQ1BQX09QVElPTiAocGZpbGUsIHdhcm5fZG9s bGFycykgPSAxOwogICBDUFBfT1BUSU9OIChwZmlsZSwgd2Fybl92YXJpYWRp Y19tYWNyb3MpID0gMTsKICAgQ1BQX09QVElPTiAocGZpbGUsIHdhcm5fYnVp bHRpbl9tYWNyb19yZWRlZmluZWQpID0gMTsKICAgQ1BQX09QVElPTiAocGZp bGUsIHdhcm5fbm9ybWFsaXplKSA9IG5vcm1hbGl6ZWRfQzsKSW5kZXg6IGxp YmNwcC9leHByLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGliY3Bw L2V4cHIuYwkocmV2aXNpb24gMTQxMjY1KQorKysgbGliY3BwL2V4cHIuYwko d29ya2luZyBjb3B5KQpAQCAtMzkzLDE0ICszOTMsMTYgQEAgY3BwX2NsYXNz aWZ5X251bWJlciAoY3BwX3JlYWRlciAqcGZpbGUsIAogCQkgICAgICAgInRy YWRpdGlvbmFsIEMgcmVqZWN0cyB0aGUgXCIlLipzXCIgc3VmZml4IiwKIAkJ ICAgICAgIChpbnQpIChsaW1pdCAtIHN0ciksIHN0cik7CiAJfQogCiAgICAg ICBpZiAoKHJlc3VsdCAmIENQUF9OX1dJRFRIKSA9PSBDUFBfTl9MQVJHRQot CSAgJiYgISBDUFBfT1BUSU9OIChwZmlsZSwgYzk5KQogCSAgJiYgQ1BQX09Q VElPTiAocGZpbGUsIHdhcm5fbG9uZ19sb25nKSkKLQljcHBfZXJyb3IgKHBm aWxlLCBDUFBfRExfUEVEV0FSTiwKLQkJICAgInVzZSBvZiBDOTkgbG9uZyBs b25nIGludGVnZXIgY29uc3RhbnQiKTsKKwljcHBfZXJyb3IgKHBmaWxlLCAK KwkJICAgQ1BQX09QVElPTiAocGZpbGUsIGM5OSkgPyBDUFBfRExfV0FSTklO RyA6IENQUF9ETF9QRURXQVJOLAorCQkgICBDUFBfT1BUSU9OIChwZmlsZSwg Y3BsdXNwbHVzKSAKKwkJICAgPyAidXNlIG9mIEMrKzB4IGxvbmcgbG9uZyBp bnRlZ2VyIGNvbnN0YW50IgorCQkgICA6ICJ1c2Ugb2YgQzk5IGxvbmcgbG9u ZyBpbnRlZ2VyIGNvbnN0YW50Iik7CiAKICAgICAgIHJlc3VsdCB8PSBDUFBf Tl9JTlRFR0VSOwogICAgIH0KIAogIHN5bnRheF9vazoK ------=_Part_29569_3745055.1224720327303--