From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11486 invoked by alias); 17 Sep 2011 13:44:38 -0000 Received: (qmail 11369 invoked by uid 22791); 17 Sep 2011 13:44:36 -0000 X-SWARE-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW X-Spam-Check-By: sourceware.org Received: from mail-qy0-f175.google.com (HELO mail-qy0-f175.google.com) (209.85.216.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sat, 17 Sep 2011 13:44:19 +0000 Received: by qyk10 with SMTP id 10so1082218qyk.20 for ; Sat, 17 Sep 2011 06:44:18 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.43.216 with SMTP id x24mr419200qce.161.1316267057814; Sat, 17 Sep 2011 06:44:17 -0700 (PDT) Received: by 10.229.133.78 with HTTP; Sat, 17 Sep 2011 06:44:16 -0700 (PDT) In-Reply-To: <4E020BE2.7080207@redhat.com> References: <4C0EB10C.3050701@redhat.com> <4C1AD953.3020008@redhat.com> <4C6E0571.3070802@redhat.com> <4D1279FD.6010706@redhat.com> <4D7297F5.2000708@redhat.com> <4E020BE2.7080207@redhat.com> Date: Sat, 17 Sep 2011 18:49:00 -0000 Message-ID: Subject: Re: [Patch] PR c++/26256 From: =?ISO-8859-1?Q?Fabien_Ch=EAne?= To: Jason Merrill Cc: gcc-patches@gcc.gnu.org Content-Type: multipart/mixed; boundary=0016364edd9e691b7304ad234e75 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: 2011-09/txt/msg01023.txt.bz2 --0016364edd9e691b7304ad234e75 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-length: 3113 Hi! (Again, sorry for the long delay, but I indeed have very few time to work o= n it) 2011/6/22 Jason Merrill : > On 06/15/2011 01:58 PM, Fabien Ch=C4=99ne wrote: >> >> Otherwise, perhaps that it would be better if the second declaration >> of E1 does not rely on supplement_binding_1. >> What do you think ? > > I agree. =C2=A0We should be using xref_tag for this like we do with class= es, so > we don't try to push the same tag more than once. Ah, yes it works for the previous testcase, but I can't manage to make it work for the below example: template struct S1 { enum E : T; // { dg-error "previous definition" } enum E : int; // { dg-error "different underlying type" } }; template struct S1; // { dg-message "required from here" } I tried various things without success, and I ended up hacking supplement_binding_1 to handle those ENUMERAL_TYPEs. I am all ear for another solution ... Attached is an updated patch that should address most of your previous comments (except for c++0X enums). Tested x86_64_unknown-linux-gnu without new regressions. Is it in better shape ? gcc/ChangeLog 2011-09-15 Fabien Ch=C3=AAne PR c++/26256 * dbxout.c (dbxout_type_fields): Ignore using declarations. gcc/testsuite/ChangeLog 2011-09-15 Fabien Ch=C3=AAne PR c++/26256 * g++.dg/lookup/using23.C: New. * g++.dg/lookup/using24.C: New. * g++.dg/lookup/using25.C: New. * g++.dg/lookup/using26.C: New. * g++.dg/lookup/using27.C: New. * g++.dg/lookup/using28.C: New. * g++.dg/lookup/using29.C: New. * g++.dg/lookup/using30.C: New. * g++.dg/lookup/using31.C: New. * g++.dg/lookup/using32.C: New. * g++.dg/lookup/using33.C: New. * g++.dg/lookup/using34.C: New. * g++.dg/lookup/using35.C: New. * g++.dg/debug/using4.C: New. * g++.dg/debug/using5.C: New. * g++.dg/cpp0x/forw_enum10.C: New. * g++.old-deja/g++.other/using1.C: Adjust. * g++.dg/template/using2.C: Likewise. gcc/cp/ChangeLog 2011-09-15 Fabien Ch=C3=AAne PR c++/26256 * search.c (lookup_field_1): Get rid of the comment saying that USING_DECL should not be returned, and actually return USING_DECL if appropriate. * semantics.c (finish_member_declaration): Remove the check that prevents USING_DECLs from being verified by pushdecl_class_level. * typeck.c (build_class_member_access_expr): Handle USING_DECLs. * class.c (check_field_decls): Keep using declarations. * parser.c (cp_parser_nonclass_name): Handle USING_DECLs. * decl.c (start_enum): Call xref_tag whenever possible. * name-lookup.c (strip_using_decl): New function. (supplement_binding_1): Call strip_using_decl on decl and bval. Perform most of the checks with USING_DECLs stripped. Also check that the target decl and the target bval does not refer to the same declaration. Add a hack for handling ENUMERAL_TYPE. (push_class_level_binding): Call strip_using_decl on decl and bval. Perform most of the checks with USING_DECLs stripped. Return true if both decl and bval refer to USING_DECLs and are dependent. --=20 Fabien --0016364edd9e691b7304ad234e75 Content-Type: application/octet-stream; name="pr26256.patch" Content-Disposition: attachment; filename="pr26256.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gsosp5g30 Content-length: 31289 SW5kZXg6IGdjYy90ZXN0c3VpdGUvZysrLm9sZC1kZWphL2crKy5vdGhlci91 c2luZzEuQwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1 aXRlL2crKy5vbGQtZGVqYS9nKysub3RoZXIvdXNpbmcxLkMJKHJldmlzaW9u IDE3ODA4OCkKKysrIGdjYy90ZXN0c3VpdGUvZysrLm9sZC1kZWphL2crKy5v dGhlci91c2luZzEuQwkod29ya2luZyBjb3B5KQpAQCAtMTYsMTIgKzE2LDEy IEBAIHB1YmxpYzoKICAgdXNpbmcgQjo6YjsKIH07CiAKLWNsYXNzIEQyIDog cHVibGljIEIgeyAvLyB7IGRnLWVycm9yICIiIH0gY29uZmxpY3RpbmcgYWNj ZXNzIHNwZWNpZmljYXRpb25zCitjbGFzcyBEMiA6IHB1YmxpYyBCIHsKIHB1 YmxpYzoKICAgdXNpbmcgQjo6YTsKLSAgdXNpbmcgQjo6YjsKKyAgdXNpbmcg Qjo6YjsgLy8geyBkZy1tZXNzYWdlICIiIH0gY29uZmxpY3RpbmcgZGVjbGFy YXRpb24KIAogcHJpdmF0ZToKLSAgdXNpbmcgQjo6YjsgCisgIHVzaW5nIEI6 OmI7IC8vIHsgZGctZXJyb3IgIiIgfSBjb25mbGljdHMKIH07CiAgCkluZGV4 OiBnY2MvdGVzdHN1aXRlL2crKy5kZy9kZWJ1Zy91c2luZzQuQwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2crKy5kZy9kZWJ1 Zy91c2luZzQuQwkocmV2aXNpb24gMCkKKysrIGdjYy90ZXN0c3VpdGUvZysr LmRnL2RlYnVnL3VzaW5nNC5DCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0 IEBACisvLyBQUiBjKysvMjYyNTYKKy8vIHsgZGctZG8gY29tcGlsZSB9CisK K3N0cnVjdCBBCit7CisgICAgdHlwZWRlZiBjaGFyIHR5cGU7Cit9OworCitz dHJ1Y3QgQgoreworICAgIHR5cGVkZWYgaW50IHR5cGU7Cit9OworCitzdHJ1 Y3QgQyA6IEEsIEIKK3sKKyAgICB1c2luZyBBOjp0eXBlOworICAgIHR5cGUg ZiAodHlwZSk7Cit9OworCitDOjp0eXBlIEM6OmYoIHR5cGUgKSAKK3sKKyAg ICB0eXBlIGMgPSAnZSc7CisgICAgcmV0dXJuIGM7Cit9CkluZGV4OiBnY2Mv dGVzdHN1aXRlL2crKy5kZy9kZWJ1Zy91c2luZzUuQwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2crKy5kZy9kZWJ1Zy91c2lu ZzUuQwkocmV2aXNpb24gMCkKKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL2Rl YnVnL3VzaW5nNS5DCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACisv LyBQUiBjKysvMjYyNTYKKy8vIHsgZGctZG8gY29tcGlsZSB9CisKK3N0cnVj dCBBCit7CisgICAgaW50IGk7Cit9OworCitzdHJ1Y3QgQgoreworICAgIGlu dCBpOworfTsKKworc3RydWN0IEMgOiBBLCBCCit7CisgICAgdXNpbmcgQjo6 aTsKKyAgICBpbnQgZiAoKTsKK307CisKK2ludCBDOjpmKCkgCit7CisgICAg cmV0dXJuIGk7Cit9CkluZGV4OiBnY2MvdGVzdHN1aXRlL2crKy5kZy9sb29r dXAvdXNpbmcyNC5DCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy90 ZXN0c3VpdGUvZysrLmRnL2xvb2t1cC91c2luZzI0LkMJKHJldmlzaW9uIDAp CisrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy9sb29rdXAvdXNpbmcyNC5DCShy ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACisvLyBQUiBjKysvMjYyNTYK Ky8vIHsgZGctZG8gY29tcGlsZSB9CisKK3N0cnVjdCBBIHsgaW50IG5leHQ7 IH07CitzdHJ1Y3QgQiB7IGludCBuZXh0OyB9Oworc3RydWN0IEMgOiBCIHsg dXNpbmcgQjo6bmV4dDsgfTsKKworc3RydWN0IEQgOiBBLCBDCit7CisgICB1 c2luZyBDOjpuZXh0OworICAgdm9pZCBmKCkgeyBuZXh0ID0gMTsgfQorfTsK SW5kZXg6IGdjYy90ZXN0c3VpdGUvZysrLmRnL2xvb2t1cC91c2luZzI4LkMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvbG9va3VwL3VzaW5nMjguQwkocmV2aXNpb24gMCkKKysrIGdjYy90ZXN0 c3VpdGUvZysrLmRnL2xvb2t1cC91c2luZzI4LkMJKHJldmlzaW9uIDApCkBA IC0wLDAgKzEsMTEgQEAKKy8vIFBSIGMrKy8yNjI1NgorLy8geyBkZy1kbyBj b21waWxlIH0KKworc3RydWN0IEEgeyBpbnQgZjsgfTsKK3N0cnVjdCBCIHsg aW50IGY7IH07CitzdHJ1Y3QgQyA6IEEsIEIgeyB1c2luZyBCOjpmOyB9Owor CitzdHJ1Y3QgRCA6IEMKK3sKKyAgICB2b2lkIGcoKSB7IGYgPSAxOyB9Cit9 OwpJbmRleDogZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvbG9va3VwL3VzaW5nMzMu Qwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2cr Ky5kZy9sb29rdXAvdXNpbmczMy5DCShyZXZpc2lvbiAwKQorKysgZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvbG9va3VwL3VzaW5nMzMuQwkocmV2aXNpb24gMCkK QEAgLTAsMCArMSwyNiBAQAorLy8geyBkZy1kbyBydW4gfQorCit0ZW1wbGF0 ZSA8Y2xhc3MgVD4KK3N0cnVjdCBGb28gCit7CisgIGludCBrIChmbG9hdCkg e3JldHVybiAwO30KK307CisKK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0 IEJheiAKK3sKKyAgaW50IGsgKGludCkge3JldHVybiAxO30KK307CisKK3Rl bXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IEJhciA6IEZvbzxUPiAsIEJhejxU PgoreworICB1c2luZyBGb288VD46Oms7CisgIHVzaW5nIEJhejxUPjo6azsK K307CisKK2ludCBtYWluKCkKK3sKKyAgQmFyPGludD4gYmFyOworICByZXR1 cm4gYmFyLmsoIDEuMGYgKTsKK30KSW5kZXg6IGdjYy90ZXN0c3VpdGUvZysr LmRnL2xvb2t1cC91c2luZzI1LkMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvbG9va3VwL3VzaW5nMjUuQwkocmV2 aXNpb24gMCkKKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL2xvb2t1cC91c2lu ZzI1LkMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjggQEAKKy8vIFBSIGMr Ky8yNjI1NgorLy8geyBkZy1kbyBydW4gfQorCitzdHJ1Y3QgQSAKK3sKKyAg ICBpbnQgbmV4dDsgCit9OworCitzdHJ1Y3QgQiAKK3sKKyAgICBpbnQgbmV4 dDsgCit9OworCitzdHJ1Y3QgQyA6IHB1YmxpYyBBLCBwdWJsaWMgQiAKK3sK KyAgICB1c2luZyBBOjpuZXh0OyAKK307CisKK3ZvaWQgZm9vKEMmIGMpIHsg Yy5uZXh0ID0gNDI7IH0KKworaW50IG1haW4oKQoreworICAgIEMgYzsKKyAg ICBmb28gKGMpOworICAgIGMuQjo6bmV4dCA9IDEyOworICAgIGlmIChjLm5l eHQgIT0gNDIgfHwgYy5BOjpuZXh0ICE9IDQyIHx8IGMuQjo6bmV4dCAhPSAx MikKKyAgICAJX19idWlsdGluX2Fib3J0KCk7Cit9CkluZGV4OiBnY2MvdGVz dHN1aXRlL2crKy5kZy9sb29rdXAvdXNpbmcyOS5DCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL2xvb2t1cC91c2lu ZzI5LkMJKHJldmlzaW9uIDApCisrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy9s b29rdXAvdXNpbmcyOS5DCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg4IEBA CisvLyB7IGRnLWRvIGNvbXBpbGUgfQorCitzdHJ1Y3QgQSAKK3sKKyAgaW50 IGk7Cit9OworCitzdHJ1Y3QgQgoreworICBpbnQgaTsKK307CisKKworc3Ry dWN0IEMgOiBBLCBCCit7CisgIHVzaW5nIEE6Omk7IC8vIHsgZGctZXJyb3Ig ImNvbmZsaWN0cyB3aXRoIHByZXZpb3VzIiB9CisgIHVzaW5nIEI6Omk7IC8v IHsgZGctZXJyb3IgImRlY2xhcmF0aW9uIiB9Cit9OworCisKK3N0cnVjdCBF Cit7CisgIHR5cGVkZWYgaW50IHR5cGU7Cit9OworCitzdHJ1Y3QgRgorewor ICB0eXBlZGVmIGludCB0eXBlOworfTsKKworc3RydWN0IEcgOiBFLCBGCit7 CisgIHVzaW5nIEU6OnR5cGU7IC8vIHsgZGctZXJyb3IgImNvbmZsaWN0cyB3 aXRoIHByZXZpb3VzIiB9CisgIHVzaW5nIEY6OnR5cGU7IC8vIHsgZGctZXJy b3IgImRlY2xhcmF0aW9uIiB9Cit9OworCisKK3N0cnVjdCBICit7CisgIHR5 cGVkZWYgaW50IHR5cGU7Cit9OworCitzdHJ1Y3QgSSA6IEgKK3sKKyAgdHlw ZWRlZiBpbnQgdHlwZTsgLy8geyBkZy1lcnJvciAiY29uZmxpY3RzIHdpdGgg cHJldmlvdXMiIH0KKyAgdXNpbmcgSDo6dHlwZTsgLy8geyBkZy1lcnJvciAi ZGVjbGFyYXRpb24iIH0KK307CisKKworc3RydWN0IEkyIDogSAoreworICB1 c2luZyBIOjp0eXBlOyAvLyB7IGRnLWVycm9yICJjb25mbGljdHMgd2l0aCBw cmV2aW91cyIgfQorICB0eXBlZGVmIGludCB0eXBlOyAvLyB7IGRnLWVycm9y ICJkZWNsYXJhdGlvbiIgfQorfTsKKworCitzdHJ1Y3QgSgoreworICAgIHN0 cnVjdCB0eXBlIHt9OworfTsKKworc3RydWN0IEsgOiBKCit7CisgICAgc3Ry dWN0IHR5cGUge307IC8vIHsgZGctZXJyb3IgImNvbmZsaWN0cyB3aXRoIHBy ZXZpb3VzIiB9CisgICAgdXNpbmcgSjo6dHlwZTsgLy8geyBkZy1lcnJvciAi ZGVjbGFyYXRpb24iIH0KK307CisKK3N0cnVjdCBMIDogSgoreworICAgIHVz aW5nIEo6OnR5cGU7IC8vIHsgZGctZXJyb3IgImNvbmZsaWN0cyB3aXRoIHBy ZXZpb3VzIiB9CisgICAgc3RydWN0IHR5cGUge307IC8vIHsgZGctZXJyb3Ig ImRlY2xhcmF0aW9uIiB9Cit9OworCisKK3N0cnVjdCBNCit7CisgIHR5cGVk ZWYgaW50IHR5cGU7CisgIHN0cnVjdCB0eXBlMiB7fTsKK307CisKK3N0cnVj dCBOIDogTQoreworICB1c2luZyBNOjp0eXBlOyAvLyB7IGRnLWVycm9yICJj b25mbGljdHMgd2l0aCBwcmV2aW91cyIgfQorICB1c2luZyBNOjp0eXBlOyAv LyB7IGRnLWVycm9yICJkZWNsYXJhdGlvbiIgfQorICB1c2luZyBNOjp0eXBl MjsgLy8geyBkZy1lcnJvciAiY29uZmxpY3RzIHdpdGggcHJldmlvdXMiIH0K KyAgdXNpbmcgTTo6dHlwZTI7IC8vIHsgZGctZXJyb3IgImRlY2xhcmF0aW9u IiB9Cit9OworCkluZGV4OiBnY2MvdGVzdHN1aXRlL2crKy5kZy9sb29rdXAv dXNpbmczMC5DCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy90ZXN0 c3VpdGUvZysrLmRnL2xvb2t1cC91c2luZzMwLkMJKHJldmlzaW9uIDApCisr KyBnY2MvdGVzdHN1aXRlL2crKy5kZy9sb29rdXAvdXNpbmczMC5DCShyZXZp c2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACisvLyB7IGRnLWRvIGNvbXBpbGUg fQorCitzdHJ1Y3QgSAoreworICB0eXBlZGVmIGludCB0eXBlOworfTsKKwor c3RydWN0IEogOiBICit7CisgIHN0cnVjdCB0eXBlIHt9OyAvLyB7IGRnLWVy cm9yICJjb25mbGljdHMgd2l0aCBwcmV2aW91cyIgfQorICB1c2luZyBIOjp0 eXBlOyAvLyB7IGRnLWVycm9yICJkZWNsYXJhdGlvbiIgfQorfTsKKworCisK KyAgCkluZGV4OiBnY2MvdGVzdHN1aXRlL2crKy5kZy9sb29rdXAvdXNpbmcz NC5DCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy90ZXN0c3VpdGUv ZysrLmRnL2xvb2t1cC91c2luZzM0LkMJKHJldmlzaW9uIDApCisrKyBnY2Mv dGVzdHN1aXRlL2crKy5kZy9sb29rdXAvdXNpbmczNC5DCShyZXZpc2lvbiAw KQpAQCAtMCwwICsxLDE1IEBACisvLyB7IGRnLWRvIGNvbXBpbGUgfQorCitz dHJ1Y3QgQQoreworICAgIGludCBmICgpOworfTsKKworc3RydWN0IEIgOiBB IAoreworICB1c2luZyBBOjpmOworICBzdHJ1Y3QgZiB7fTsKKyAgdm9pZCBn KCkgeyBmKCk7IHN0cnVjdCBmIGZmOyB9CisgIHN0cnVjdCBmIGZmOworfTsK KwpJbmRleDogZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvbG9va3VwL3VzaW5nMjYu Qwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2cr Ky5kZy9sb29rdXAvdXNpbmcyNi5DCShyZXZpc2lvbiAwKQorKysgZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvbG9va3VwL3VzaW5nMjYuQwkocmV2aXNpb24gMCkK QEAgLTAsMCArMSwyNyBAQAorLy8gUFIgYysrLzI2MjU2CisvLyB7IGRnLWRv IGNvbXBpbGUgfQorCitzdHJ1Y3QgQSAKK3sKKyAgICBkb3VibGUgbmV4dDsg Cit9OworCitzdHJ1Y3QgQiAKK3sKK3ByaXZhdGU6CisgICAgaW50IG5leHQ7 IC8vIHsgZGctZXJyb3IgInByaXZhdGUiIH0KK307CisKK3N0cnVjdCBDCit7 CisgICAgaW50IG5leHQ7Cit9OworCitzdHJ1Y3QgRCA6IEEsIEIsIEMgLy8g eyBkZy1lcnJvciAiY29udGV4dCIgfQoreworICAgIHVzaW5nIEI6Om5leHQ7 CisgICAgdm9pZCBmKCkKKyAgICB7CisJbmV4dCA9IDEyOworICAgIH0KK307 CkluZGV4OiBnY2MvdGVzdHN1aXRlL2crKy5kZy9sb29rdXAvdXNpbmczMS5D Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy90ZXN0c3VpdGUvZysr LmRnL2xvb2t1cC91c2luZzMxLkMJKHJldmlzaW9uIDApCisrKyBnY2MvdGVz dHN1aXRlL2crKy5kZy9sb29rdXAvdXNpbmczMS5DCShyZXZpc2lvbiAwKQpA QCAtMCwwICsxLDEyIEBACisvLyB7IGRnLWRvIGNvbXBpbGUgfQorCitzdHJ1 Y3QgSDIKK3sKKyAgaW50IGYgKCk7Cit9OworCitzdHJ1Y3QgSjIgOiBIMgor eworICBzdHJ1Y3QgZiB7fTsKKyAgdXNpbmcgSDI6OmY7Cit9OwpJbmRleDog Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvbG9va3VwL3VzaW5nMjMuQwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2crKy5kZy9sb29r dXAvdXNpbmcyMy5DCShyZXZpc2lvbiAwKQorKysgZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvbG9va3VwL3VzaW5nMjMuQwkocmV2aXNpb24gMCkKQEAgLTAsMCAr MSwxOSBAQAorLy8gUFIgYysrLzI2MjU2CisvLyB7IGRnLWRvIGNvbXBpbGUg fQorCitzdHJ1Y3QgQQoreworcHJpdmF0ZToKKyAgICB0eXBlZGVmIGludCB0 eXBlOyAvLyB7IGRnLWVycm9yICJwcml2YXRlIiB9Cit9OworCitzdHJ1Y3Qg QgoreworICAgIHR5cGVkZWYgZG91YmxlIHR5cGU7Cit9OworCitzdHJ1Y3Qg QyA6IEEsIEIgLy8geyBkZy1lcnJvciAiY29udGV4dCIgfQoreworICAgIHVz aW5nIEE6OnR5cGU7IAorICAgIHR5cGUgZDsKK307CkluZGV4OiBnY2MvdGVz dHN1aXRlL2crKy5kZy9sb29rdXAvdXNpbmcyNy5DCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL2xvb2t1cC91c2lu ZzI3LkMJKHJldmlzaW9uIDApCisrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy9s b29rdXAvdXNpbmcyNy5DCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBA CisvLyBQUiBjKysvMjYyNTYKKy8vIHsgZGctZG8gcnVuIH0KKworc3RydWN0 IEEKK3sKKyAgICB0eXBlZGVmIGludCB0eXBlOworfTsKKworc3RydWN0IEIK K3sKKyAgICB0eXBlZGVmIGRvdWJsZSB0eXBlOworfTsKKworc3RydWN0IEMg OiBBLCBCCit7CisgICAgdXNpbmcgQTo6dHlwZTsKKyAgICB0eXBlIGQ7CisK KyAgICB2b2lkIGYoKQorICAgIHsKKyAgICAJdHlwZSBlOworICAgIAlpZiAo c2l6ZW9mICh0eXBlKSAhPSBzaXplb2YgKEE6OnR5cGUpKQorICAgIAkgICAg X19idWlsdGluX2Fib3J0KCk7CisgICAgfQorCisgICAgdm9pZCBnKCk7Cit9 OworCit2b2lkIEM6OmcoKQoreworICAgIHR5cGUgeDsKKyAgICBpZiAoc2l6 ZW9mICh0eXBlKSAhPSBzaXplb2YgKEE6OnR5cGUpKQorICAgIAlfX2J1aWx0 aW5fYWJvcnQoKTsKK30KKworaW50IG1haW4gKCkKK3sKKyAgICBpZiAoc2l6 ZW9mIChDOjp0eXBlKSAhPSBzaXplb2YgKEE6OnR5cGUpKQorICAgIAlfX2J1 aWx0aW5fYWJvcnQoKTsKKworICAgIGlmIChzaXplb2YgKEM6OmQpICE9IHNp emVvZiAoQTo6dHlwZSkpCisgICAgCV9fYnVpbHRpbl9hYm9ydCgpOworCisg ICAgQzo6dHlwZSB4OworICAgIEMgYzsKKyAgICBjLmYoKTsKKyAgICBjLmco KTsKK30KKwpJbmRleDogZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvbG9va3VwL3Vz aW5nMzIuQwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1 aXRlL2crKy5kZy9sb29rdXAvdXNpbmczMi5DCShyZXZpc2lvbiAwKQorKysg Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvbG9va3VwL3VzaW5nMzIuQwkocmV2aXNp b24gMCkKQEAgLTAsMCArMSwxNyBAQAorLy8geyBkZy1kbyBjb21waWxlIH0K Kworc3RydWN0IFQKK3sKKyAgc3RydWN0IHR5cGUge307Cit9OworCitzdHJ1 Y3QgVDIgOiBUCit7CisgIHVzaW5nIFQ6OnR5cGU7Cit9OworCitzdHJ1Y3Qg VDMgOiBUMgoreworICBzdHJ1Y3QgdHlwZSB7fTsKKyAgdHlwZSB0OworfTsK SW5kZXg6IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDB4L2ZvcndfZW51bTEw LkMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvY3BwMHgvZm9yd19lbnVtMTAuQwkocmV2aXNpb24gMCkKKysrIGdj Yy90ZXN0c3VpdGUvZysrLmRnL2NwcDB4L2ZvcndfZW51bTEwLkMJKHJldmlz aW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKy8vIHsgZGctZG8gY29tcGlsZSB9 CisvLyB7IGRnLW9wdGlvbnMgIi1zdGQ9YysrMHgiIH0KKworLy9UaGlzIGVy cm9yIGlzIGRpYWdub3NlZCBhdCBpbnN0YW50aWF0aW9uIHRpbWUKK3RlbXBs YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTMQoreworICAgIGVudW0gRSA6IFQ7 ICAgLy8geyBkZy1lcnJvciAicHJldmlvdXMgZGVmaW5pdGlvbiIgfQorICAg IGVudW0gRSA6IGludDsgICAgIC8vIHsgZGctZXJyb3IgImRpZmZlcmVudCB1 bmRlcmx5aW5nIHR5cGUiIH0KK307Cit0ZW1wbGF0ZSBzdHJ1Y3QgUzE8c2hv cnQ+OyAvLyB7IGRnLW1lc3NhZ2UgInJlcXVpcmVkIGZyb20gaGVyZSIgfQor Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgUzIKK3sKKyAgICBlbnVt IEUgOiBUOworICAgIGVudW0gRSA6IFQ7Cit9OwordGVtcGxhdGUgc3RydWN0 IFMyPHNob3J0PjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1l IFQyPiBzdHJ1Y3QgUzMKK3sKKyAgICBlbnVtIEUgOiBUMTsKKyAgICBlbnVt IEUgOiBUMjsKK307Cit0ZW1wbGF0ZSBzdHJ1Y3QgUzM8c2hvcnQsc2hvcnQ+ OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+IHN0cnVj dCBTNAoreworICAgIGVudW0gRSA6IFQxOyAvLyB7IGRnLWVycm9yICJwcmV2 aW91cyBkZWZpbml0aW9uIiB9CisgICAgZW51bSBFIDogVDI7IC8vIHsgZGct ZXJyb3IgImRpZmZlcmVudCB1bmRlcmx5aW5nIHR5cGUiIH0KK307Cit0ZW1w bGF0ZSBzdHJ1Y3QgUzQ8c2hvcnQsY2hhcj47IC8vIHsgZGctbWVzc2FnZSAi cmVxdWlyZWQgZnJvbSBoZXJlIiB9CisKSW5kZXg6IGdjYy90ZXN0c3VpdGUv ZysrLmRnL3RlbXBsYXRlL3VzaW5nMi5DCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL3RlbXBsYXRlL3VzaW5nMi5D CShyZXZpc2lvbiAxNzgwODgpCisrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy90 ZW1wbGF0ZS91c2luZzIuQwkod29ya2luZyBjb3B5KQpAQCAtNywyNCArNywy NSBAQAogCiB0ZW1wbGF0ZSA8Y2xhc3MgVD4KIHN0cnVjdCBGb28gewotICBp bnQgaTsgLy8geyBkZy1lcnJvciAiRm9vIiB9CisgIGludCBpOwogfTsKIAog c3RydWN0IEJheiAKIHsKLSAgaW50IGk7IC8vIHsgZGctZXJyb3IgIkJheiIg fQorICBpbnQgaTsKIH07CiAKIHRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0 IEJhciA6IHB1YmxpYyBGb288VD4sIEJheiB7Ci0gIHVzaW5nIEZvbzxUPjo6 aTsKLSAgdXNpbmcgQmF6OjppOworc3RydWN0IEJhciA6IHB1YmxpYyBGb288 VD4sIEJheiAKK3sKKyAgdXNpbmcgRm9vPFQ+OjppOyAvLyB7IGRnLW1lc3Nh Z2UgImNvbmZsaWN0cyB3aXRoIHByZXZpb3VzIiB9IAorICB1c2luZyBCYXo6 Omk7IC8vIHsgZGctZXJyb3IgImRlY2xhcmF0aW9uIiB9IAogCi0gIGludCBm b28gKCkgeyByZXR1cm4gaTsgfSAvLyB7IGRnLWVycm9yICJyZXF1ZXN0IGZv ciBtZW1iZXIiIH0KKyAgaW50IGZvbyAoKSB7IHJldHVybiBpOyB9CiB9Owog CiB2b2lkIGZvbyAoQmFyPGludD4gJmJhcikKIHsKLSAgYmFyLmZvbygpOyAv LyB7IGRnLW1lc3NhZ2UgInJlcXVpcmVkIiB9CisgIGJhci5mb28oKTsKIH0K IApJbmRleDogZ2NjL2NwL3R5cGVjay5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGdjYy9jcC90eXBlY2suYwkocmV2aXNpb24gMTc4MDg4KQorKysg Z2NjL2NwL3R5cGVjay5jCSh3b3JraW5nIGNvcHkpCkBAIC0yMzI5LDYgKzIz MjksMTEgQEAgYnVpbGRfY2xhc3NfbWVtYmVyX2FjY2Vzc19leHByICh0cmVl IG9iagogCXJlc3VsdCA9IGJ1aWxkMiAoQ09NUE9VTkRfRVhQUiwgVFJFRV9U WVBFIChyZXN1bHQpLAogCQkJIG9iamVjdCwgcmVzdWx0KTsKICAgICB9Cisg IGVsc2UgaWYgKFRSRUVfQ09ERSAobWVtYmVyKSA9PSBVU0lOR19ERUNMICYm ICFERUNMX0RFUEVOREVOVF9QIChtZW1iZXIpKQorICAgIHJlc3VsdCA9IGJ1 aWxkX2NsYXNzX21lbWJlcl9hY2Nlc3NfZXhwciAob2JqZWN0LAorCQkJCQkg ICAgIFVTSU5HX0RFQ0xfREVDTFMgKG1lbWJlciksCisJCQkJCSAgICAgYWNj ZXNzX3BhdGgsIHByZXNlcnZlX3JlZmVyZW5jZSwKKwkJCQkJICAgICBjb21w bGFpbik7CiAgIGVsc2UKICAgICB7CiAgICAgICBpZiAoY29tcGxhaW4gJiB0 Zl9lcnJvcikKSW5kZXg6IGdjYy9jcC9jbGFzcy5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGdjYy9jcC9jbGFzcy5jCShyZXZpc2lvbiAxNzgwODgp CisrKyBnY2MvY3AvY2xhc3MuYwkod29ya2luZyBjb3B5KQpAQCAtMzAxNiwx NSArMzAxNiw4IEBAIGNoZWNrX2ZpZWxkX2RlY2xzICh0cmVlIHQsIHRyZWUg KmFjY2Vzc18KIAogICAgICAgaWYgKFRSRUVfQ09ERSAoeCkgPT0gVVNJTkdf REVDTCkKIAl7Ci0JICAvKiBQcnVuZSB0aGUgYWNjZXNzIGRlY2xhcmF0aW9u IGZyb20gdGhlIGxpc3Qgb2YgZmllbGRzLiAgKi8KLQkgICpmaWVsZCA9IERF Q0xfQ0hBSU4gKHgpOwotCiAJICAvKiBTYXZlIHRoZSBhY2Nlc3MgZGVjbGFy YXRpb25zIGZvciBvdXIgY2FsbGVyLiAgKi8KIAkgICphY2Nlc3NfZGVjbHMg PSB0cmVlX2NvbnMgKE5VTExfVFJFRSwgeCwgKmFjY2Vzc19kZWNscyk7Ci0K LQkgIC8qIFNpbmNlIHdlJ3ZlIHJlc2V0ICpGSUVMRCB0aGVyZSdzIG5vIHJl YXNvbiB0byBza2lwIHRvIHRoZQotCSAgICAgbmV4dCBmaWVsZC4gICovCi0J ICBuZXh0ID0gZmllbGQ7CiAJICBjb250aW51ZTsKIAl9CiAKSW5kZXg6IGdj Yy9jcC9kZWNsLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2Nw L2RlY2wuYwkocmV2aXNpb24gMTc4MDg4KQorKysgZ2NjL2NwL2RlY2wuYwko d29ya2luZyBjb3B5KQpAQCAtMTE5MzcsOCArMTE5MzcsMjAgQEAgc3RhcnRf ZW51bSAodHJlZSBuYW1lLCB0cmVlIGVudW10eXBlLCB0cgogCSAgICAqaXNf bmV3ID0gdHJ1ZTsKIAl9CiAgICAgICBwcmV2dHlwZSA9IGVudW10eXBlOwot ICAgICAgZW51bXR5cGUgPSBjeHhfbWFrZV90eXBlIChFTlVNRVJBTF9UWVBF KTsKLSAgICAgIGVudW10eXBlID0gcHVzaHRhZyAobmFtZSwgZW51bXR5cGUs IC8qdGFnX3Njb3BlPSovdHNfY3VycmVudCk7CisKKyAgICAgIC8qIGRvIG5v dCBwdXNoIHRoZSBkZWNsIG1vcmUgdGhhbiBvbmNlICovCisgICAgICBpZiAo IWVudW10eXBlCisJICB8fCAodW5kZXJseWluZ190eXBlCisJICAgICAgJiYg ZGVwZW5kZW50X3R5cGVfcCAodW5kZXJseWluZ190eXBlKSkKKwkgIHx8IChF TlVNX1VOREVSTFlJTkdfVFlQRSAoZW51bXR5cGUpCisJICAgICAgJiYgZGVw ZW5kZW50X3R5cGVfcCAoRU5VTV9VTkRFUkxZSU5HX1RZUEUgKGVudW10eXBl KSkpKQorCXsKKwkgIGVudW10eXBlID0gY3h4X21ha2VfdHlwZSAoRU5VTUVS QUxfVFlQRSk7CisgICAgICAJICBlbnVtdHlwZSA9IHB1c2h0YWcgKG5hbWUs IGVudW10eXBlLCAvKnRhZ19zY29wZT0qL3RzX2N1cnJlbnQpOworCX0KKyAg ICAgIGVsc2UKKwkgIGVudW10eXBlID0geHJlZl90YWcgKGVudW1fdHlwZSwg bmFtZSwgLyp0YWdfc2NvcGU9Ki90c19jdXJyZW50LCBmYWxzZSk7CisKICAg ICAgIGlmIChlbnVtdHlwZSA9PSBlcnJvcl9tYXJrX25vZGUpCiAJcmV0dXJu IGVycm9yX21hcmtfbm9kZTsKIApJbmRleDogZ2NjL2NwL3NlbWFudGljcy5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy9jcC9zZW1hbnRpY3Mu YwkocmV2aXNpb24gMTc4MDg4KQorKysgZ2NjL2NwL3NlbWFudGljcy5jCSh3 b3JraW5nIGNvcHkpCkBAIC0yNjcwLDggKzI2NzAsNyBAQCBmaW5pc2hfbWVt YmVyX2RlY2xhcmF0aW9uICh0cmVlIGRlY2wpCiAJfQogICAgIH0KICAgLyog RW50ZXIgdGhlIERFQ0wgaW50byB0aGUgc2NvcGUgb2YgdGhlIGNsYXNzLiAg Ki8KLSAgZWxzZSBpZiAoKFRSRUVfQ09ERSAoZGVjbCkgPT0gVVNJTkdfREVD TCAmJiAhREVDTF9ERVBFTkRFTlRfUCAoZGVjbCkpCi0JICAgfHwgcHVzaGRl Y2xfY2xhc3NfbGV2ZWwgKGRlY2wpKQorICBlbHNlIGlmIChwdXNoZGVjbF9j bGFzc19sZXZlbCAoZGVjbCkpCiAgICAgewogICAgICAgLyogQWxsIFRZUEVf REVDTHMgZ28gYXQgdGhlIGVuZCBvZiBUWVBFX0ZJRUxEUy4gIE9yZGluYXJ5 IGZpZWxkcwogCSBnbyBhdCB0aGUgYmVnaW5uaW5nLiAgVGhlIHJlYXNvbiBp cyB0aGF0IGxvb2t1cF9maWVsZF8xCkluZGV4OiBnY2MvY3AvcGFyc2VyLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2NwL3BhcnNlci5jCShy ZXZpc2lvbiAxNzgwODgpCisrKyBnY2MvY3AvcGFyc2VyLmMJKHdvcmtpbmcg Y29weSkKQEAgLTEzMDQ2LDYgKzEzMDQ2LDEwIEBAIGNwX3BhcnNlcl9ub25j bGFzc19uYW1lIChjcF9wYXJzZXIqIHBhcnMKICAgLyogTG9vayB1cCB0aGUg dHlwZS1uYW1lLiAgKi8KICAgdHlwZV9kZWNsID0gY3BfcGFyc2VyX2xvb2t1 cF9uYW1lX3NpbXBsZSAocGFyc2VyLCBpZGVudGlmaWVyLCB0b2tlbi0+bG9j YXRpb24pOwogCisgIC8qIElmIGl0IGlzIGEgdXNpbmcgZGVjbCwgdXNlIGl0 cyB1bmRlcmx5aW5nIGRlY2wuICAqLworICBpZiAoVFJFRV9DT0RFICh0eXBl X2RlY2wpID09IFVTSU5HX0RFQ0wgJiYgIURFQ0xfREVQRU5ERU5UX1AgKHR5 cGVfZGVjbCkpCisgICAgdHlwZV9kZWNsID0gVVNJTkdfREVDTF9ERUNMUyAo dHlwZV9kZWNsKTsKKwogICBpZiAoVFJFRV9DT0RFICh0eXBlX2RlY2wpICE9 IFRZUEVfREVDTAogICAgICAgJiYgKG9iamNfaXNfaWQgKGlkZW50aWZpZXIp IHx8IG9iamNfaXNfY2xhc3NfbmFtZSAoaWRlbnRpZmllcikpKQogICAgIHsK SW5kZXg6IGdjYy9jcC9zZWFyY2guYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBnY2MvY3Avc2VhcmNoLmMJKHJldmlzaW9uIDE3ODA4OCkKKysrIGdj Yy9jcC9zZWFyY2guYwkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAK IC8qIEJyZWFkdGgtZmlyc3QgYW5kIGRlcHRoLWZpcnN0IHJvdXRpbmVzIGZv cgogICAgc2VhcmNoaW5nIG11bHRpcGxlLWluaGVyaXRhbmNlIGxhdHRpY2Ug Zm9yIEdOVSBDKysuCiAgICBDb3B5cmlnaHQgKEMpIDE5ODcsIDE5ODksIDE5 OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsCi0gICAx OTk5LCAyMDAwLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4 LCAyMDA5LCAyMDEwCisgICAxOTk5LCAyMDAwLCAyMDAyLCAyMDAzLCAyMDA0 LCAyMDA1LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExCiAgICBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgIENvbnRyaWJ1dGVkIGJ5 IE1pY2hhZWwgVGllbWFubiAodGllbWFubkBjeWdudXMuY29tKQogCkBAIC00 NjIsMTcgKzQ2MiwxNSBAQCBsb29rdXBfZmllbGRfMSAodHJlZSB0eXBlLCB0 cmVlIG5hbWUsIGJvCiAJfQogICAgICAgaWYgKFRSRUVfQ09ERSAoZmllbGQp ID09IFVTSU5HX0RFQ0wpCiAJewotCSAgLyogV2UgZ2VuZXJhbGx5IHRyZWF0 IGNsYXNzLXNjb3BlIHVzaW5nLWRlY2xhcmF0aW9ucyBhcwotCSAgICAgQVJN LXN0eWxlIGFjY2VzcyBzcGVjaWZpY2F0aW9ucywgYmVjYXVzZSBzdXBwb3J0 IGZvciB0aGUKLQkgICAgIElTTyBzZW1hbnRpY3MgaGFzIG5vdCBiZWVuIGlt cGxlbWVudGVkLiAgU28sIGluIGdlbmVyYWwsCi0JICAgICB0aGVyZSdzIG5v IHJlYXNvbiB0byByZXR1cm4gYSBVU0lOR19ERUNMLCBhbmQgdGhlIHJlc3Qg b2YKLQkgICAgIHRoZSBjb21waWxlciBjYW5ub3QgaGFuZGxlIHRoYXQuICBP bmNlIHRoZSBjbGFzcyBpcwotCSAgICAgZGVmaW5lZCwgVVNJTkdfREVDTHMg YXJlIHB1cmdlZCBmcm9tIFRZUEVfRklFTERTOyBzZWUKLQkgICAgIGhhbmRs ZV91c2luZ19kZWNsLiAgSG93ZXZlciwgd2UgbWFrZSBzcGVjaWFsIGVmZm9y dHMgdG8KLQkgICAgIG1ha2UgdXNpbmctZGVjbGFyYXRpb25zIGluIGNsYXNz IHRlbXBsYXRlcyBhbmQgY2xhc3MKLQkgICAgIHRlbXBsYXRlIHBhcnRpYWwg c3BlY2lhbGl6YXRpb25zIHdvcmsgY29ycmVjdGx5LiAgKi8KIAkgIGlmICgh REVDTF9ERVBFTkRFTlRfUCAoZmllbGQpKQotCSAgICBjb250aW51ZTsKKwkg ICAgeworCSAgICAgIHRyZWUgdXNpbmdfZGVjbCA9IFVTSU5HX0RFQ0xfREVD TFMgKGZpZWxkKTsKKwkgICAgICBpZiAoKFRSRUVfQ09ERSAodXNpbmdfZGVj bCkgPT0gRklFTERfREVDTAorCSAgICAgIAkgICB8fCBUUkVFX0NPREUgKHVz aW5nX2RlY2wpID09IFRZUEVfREVDTCkKKwkgICAgICAJICAmJiBERUNMX05B TUUgKHVzaW5nX2RlY2wpID09IG5hbWUpCisJICAgICAgCXJldHVybiB1c2lu Z19kZWNsOworCSAgICAgIGNvbnRpbnVlOworCSAgICB9CiAJfQogCiAgICAg ICBpZiAoREVDTF9OQU1FIChmaWVsZCkgPT0gbmFtZQpJbmRleDogZ2NjL2Nw L25hbWUtbG9va3VwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2Nj L2NwL25hbWUtbG9va3VwLmMJKHJldmlzaW9uIDE3ODA4OCkKKysrIGdjYy9j cC9uYW1lLWxvb2t1cC5jCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3 IEBAIHN0YXRpYyBib29sIHF1YWxpZmllZF9sb29rdXBfdXNpbmdfbmFtZXMK IHN0YXRpYyB0cmVlIGxvb2t1cF90eXBlX2N1cnJlbnRfbGV2ZWwgKHRyZWUp Owogc3RhdGljIHRyZWUgcHVzaF91c2luZ19kaXJlY3RpdmUgKHRyZWUpOwog c3RhdGljIHRyZWUgbG9va3VwX2V4dGVybl9jX2Z1bl9pbl9hbGxfbnMgKHRy ZWUpOworc3RhdGljIHRyZWUgc3RyaXBfdXNpbmdfZGVjbCAodHJlZSk7CiAK IC8qIFRoZSA6OiBuYW1lc3BhY2UuICAqLwogCkBAIC0zOTQsNiArMzk1LDE0 IEBAIHBvcF9iaW5kaW5nICh0cmVlIGlkLCB0cmVlIGRlY2wpCiAgICAgfQog fQogCitzdGF0aWMgdHJlZQorc3RyaXBfdXNpbmdfZGVjbCAodHJlZSBkZWNs KQoreworICB3aGlsZSAoVFJFRV9DT0RFIChkZWNsKSA9PSBVU0lOR19ERUNM ICYmICFERUNMX0RFUEVOREVOVF9QIChkZWNsKSkKKyAgICBkZWNsID0gVVNJ TkdfREVDTF9ERUNMUyAoZGVjbCk7CisgIHJldHVybiBkZWNsOworfQorCiAv KiBCSU5ESU5HIHJlY29yZHMgYW4gZXhpc3RpbmcgZGVjbGFyYXRpb24gZm9y IGEgbmFtZSBpbiB0aGUgY3VycmVudCBzY29wZS4KICAgIEJ1dCwgREVDTCBp cyBhbm90aGVyIGRlY2xhcmF0aW9uIGZvciB0aGF0IHNhbWUgaWRlbnRpZmll ciBpbiB0aGUKICAgIHNhbWUgc2NvcGUuICBUaGlzIGlzIHRoZSBgc3RydWN0 IHN0YXQnIGhhY2sgd2hlcmVieSBhIG5vbi10eXBlZGVmCkBAIC00MTcsMjkg KzQyNiwzNiBAQCBzdXBwbGVtZW50X2JpbmRpbmdfMSAoY3h4X2JpbmRpbmcg KmJpbmRpCiB7CiAgIHRyZWUgYnZhbCA9IGJpbmRpbmctPnZhbHVlOwogICBi b29sIG9rID0gdHJ1ZTsKKyAgdHJlZSB0YXJnZXRfYnZhbCA9IHN0cmlwX3Vz aW5nX2RlY2wgKGJ2YWwpOworICB0cmVlIHRhcmdldF9kZWNsID0gc3RyaXBf dXNpbmdfZGVjbCAoZGVjbCk7CiAKLSAgaWYgKFRSRUVfQ09ERSAoZGVjbCkg PT0gVFlQRV9ERUNMICYmIERFQ0xfQVJUSUZJQ0lBTCAoZGVjbCkpCisgIGlm IChUUkVFX0NPREUgKHRhcmdldF9kZWNsKSA9PSBUWVBFX0RFQ0wgJiYgREVD TF9BUlRJRklDSUFMICh0YXJnZXRfZGVjbCkKKyAgICAgICYmIHRhcmdldF9k ZWNsICE9IHRhcmdldF9idmFsCisgICAgICAmJiAoVFJFRV9DT0RFICh0YXJn ZXRfYnZhbCkgIT0gVFlQRV9ERUNMCisJICB8fCAoVFJFRV9DT0RFIChUUkVF X1RZUEUgKHRhcmdldF9kZWNsKSkgPT0gRU5VTUVSQUxfVFlQRQorCSAgICAg ICYmIFRSRUVfQ09ERSAoVFJFRV9UWVBFICh0YXJnZXRfYnZhbCkpID09IEVO VU1FUkFMX1RZUEUpKSkKICAgICAvKiBUaGUgbmV3IG5hbWUgaXMgdGhlIHR5 cGUgbmFtZS4gICovCiAgICAgYmluZGluZy0+dHlwZSA9IGRlY2w7Ci0gIGVs c2UgaWYgKC8qIEJWQUwgaXMgbnVsbCB3aGVuIHB1c2hfY2xhc3NfbGV2ZWxf YmluZGluZyBtb3ZlcyBhbgorICBlbHNlIGlmICgvKiBUQVJHRVRfQlZBTCBp cyBudWxsIHdoZW4gcHVzaF9jbGFzc19sZXZlbF9iaW5kaW5nIG1vdmVzIGFu CiAJICAgICAgaW5oZXJpdGVkIHR5cGUtYmluZGluZyBvdXQgb2YgdGhlIHdh eSB0byBtYWtlIHJvb20gZm9yIGEKIAkgICAgICBuZXcgdmFsdWUgYmluZGlu Zy4gICovCi0JICAgIWJ2YWwKLQkgICAvKiBCVkFMIGlzIGVycm9yX21hcmtf bm9kZSB3aGVuIERFQ0wncyBuYW1lIGhhcyBiZWVuIHVzZWQKKwkgICAhdGFy Z2V0X2J2YWwKKwkgICAvKiBUQVJHRVRfQlZBTCBpcyBlcnJvcl9tYXJrX25v ZGUgd2hlbiBUQVJHRVRfREVDTCdzIG5hbWUgaGFzIGJlZW4gdXNlZAogCSAg ICAgIGluIGEgbm9uLWNsYXNzIHNjb3BlIHByaW9yIGRlY2xhcmF0aW9uLiAg SW4gdGhhdCBjYXNlLAogCSAgICAgIHdlIHNob3VsZCBoYXZlIGFscmVhZHkg aXNzdWVkIGEgZGlhZ25vc3RpYzsgZm9yIGdyYWNlZnVsCiAJICAgICAgZXJy b3IgcmVjb3ZlcnkgcHVycG9zZSwgcHJldGVuZCB0aGlzIHdhcyB0aGUgaW50 ZW5kZWQKIAkgICAgICBkZWNsYXJhdGlvbiBmb3IgdGhhdCBuYW1lLiAgKi8K LQkgICB8fCBidmFsID09IGVycm9yX21hcmtfbm9kZQotCSAgIC8qIElmIEJW QUwgaXMgYW50aWNpcGF0ZWQgYnV0IGhhcyBub3QgeWV0IGJlZW4gZGVjbGFy ZWQsCisJICAgfHwgdGFyZ2V0X2J2YWwgPT0gZXJyb3JfbWFya19ub2RlCisJ ICAgLyogSWYgVEFSR0VUX0JWQUwgaXMgYW50aWNpcGF0ZWQgYnV0IGhhcyBu b3QgeWV0IGJlZW4gZGVjbGFyZWQsCiAJICAgICAgcHJldGVuZCBpdCBpcyBu b3QgdGhlcmUgYXQgYWxsLiAgKi8KLQkgICB8fCAoVFJFRV9DT0RFIChidmFs KSA9PSBGVU5DVElPTl9ERUNMCi0JICAgICAgICYmIERFQ0xfQU5USUNJUEFU RUQgKGJ2YWwpCi0JICAgICAgICYmICFERUNMX0hJRERFTl9GUklFTkRfUCAo YnZhbCkpKQorCSAgIHx8IChUUkVFX0NPREUgKHRhcmdldF9idmFsKSA9PSBG VU5DVElPTl9ERUNMCisJICAgICAgICYmIERFQ0xfQU5USUNJUEFURUQgKHRh cmdldF9idmFsKQorCSAgICAgICAmJiAhREVDTF9ISURERU5fRlJJRU5EX1Ag KHRhcmdldF9idmFsKSkpCiAgICAgYmluZGluZy0+dmFsdWUgPSBkZWNsOwot ICBlbHNlIGlmIChUUkVFX0NPREUgKGJ2YWwpID09IFRZUEVfREVDTCAmJiBE RUNMX0FSVElGSUNJQUwgKGJ2YWwpCi0JICAgJiYgKFRSRUVfQ09ERSAoZGVj bCkgIT0gVFlQRV9ERUNMCi0JICAgICAgIHx8IHNhbWVfdHlwZV9wIChUUkVF X1RZUEUgKGRlY2wpLCBUUkVFX1RZUEUgKGJ2YWwpKSkpCisgIGVsc2UgaWYg KFRSRUVfQ09ERSAodGFyZ2V0X2J2YWwpID09IFRZUEVfREVDTCAmJiBERUNM X0FSVElGSUNJQUwgKHRhcmdldF9idmFsKQorICAgIAkgICAmJiB0YXJnZXRf ZGVjbCAhPSB0YXJnZXRfYnZhbAorCSAgICYmIChUUkVFX0NPREUgKHRhcmdl dF9kZWNsKSAhPSBUWVBFX0RFQ0wKKwkgICAgICAgfHwgc2FtZV90eXBlX3Ag KFRSRUVfVFlQRSAodGFyZ2V0X2RlY2wpLCBUUkVFX1RZUEUgKHRhcmdldF9i dmFsKSkpKQogICAgIHsKICAgICAgIC8qIFRoZSBvbGQgYmluZGluZyB3YXMg YSB0eXBlIG5hbWUuICBJdCB3YXMgcGxhY2VkIGluCiAJIFZBTFVFIGZpZWxk IGJlY2F1c2UgaXQgd2FzIHRob3VnaHQsIGF0IHRoZSBwb2ludCBpdCB3YXMK QEAgLTQ1MCwxNSArNDY2LDE1IEBAIHN1cHBsZW1lbnRfYmluZGluZ18xIChj eHhfYmluZGluZyAqYmluZGkKICAgICAgIGJpbmRpbmctPnZhbHVlID0gZGVj bDsKICAgICAgIGJpbmRpbmctPnZhbHVlX2lzX2luaGVyaXRlZCA9IGZhbHNl OwogICAgIH0KLSAgZWxzZSBpZiAoVFJFRV9DT0RFIChidmFsKSA9PSBUWVBF X0RFQ0wKLQkgICAmJiBUUkVFX0NPREUgKGRlY2wpID09IFRZUEVfREVDTAot CSAgICYmIERFQ0xfTkFNRSAoZGVjbCkgPT0gREVDTF9OQU1FIChidmFsKQor ICBlbHNlIGlmIChUUkVFX0NPREUgKHRhcmdldF9idmFsKSA9PSBUWVBFX0RF Q0wKKwkgICAmJiBUUkVFX0NPREUgKHRhcmdldF9kZWNsKSA9PSBUWVBFX0RF Q0wKKwkgICAmJiBERUNMX05BTUUgKHRhcmdldF9kZWNsKSA9PSBERUNMX05B TUUgKHRhcmdldF9idmFsKQogCSAgICYmIGJpbmRpbmctPnNjb3BlLT5raW5k ICE9IHNrX2NsYXNzCi0JICAgJiYgKHNhbWVfdHlwZV9wIChUUkVFX1RZUEUg KGRlY2wpLCBUUkVFX1RZUEUgKGJ2YWwpKQorCSAgICYmIChzYW1lX3R5cGVf cCAoVFJFRV9UWVBFICh0YXJnZXRfZGVjbCksIFRSRUVfVFlQRSAodGFyZ2V0 X2J2YWwpKQogCSAgICAgICAvKiBJZiBlaXRoZXIgdHlwZSBpbnZvbHZlcyB0 ZW1wbGF0ZSBwYXJhbWV0ZXJzLCB3ZSBtdXN0CiAJCSAgd2FpdCB1bnRpbCBp bnN0YW50aWF0aW9uLiAgKi8KLQkgICAgICAgfHwgdXNlc190ZW1wbGF0ZV9w YXJtcyAoVFJFRV9UWVBFIChkZWNsKSkKLQkgICAgICAgfHwgdXNlc190ZW1w bGF0ZV9wYXJtcyAoVFJFRV9UWVBFIChidmFsKSkpKQorCSAgICAgICB8fCB1 c2VzX3RlbXBsYXRlX3Bhcm1zIChUUkVFX1RZUEUgKHRhcmdldF9kZWNsKSkK KwkgICAgICAgfHwgdXNlc190ZW1wbGF0ZV9wYXJtcyAoVFJFRV9UWVBFICh0 YXJnZXRfYnZhbCkpKSkKICAgICAvKiBXZSBoYXZlIHR3byB0eXBlZGVmLW5h bWVzLCBib3RoIG5hbWluZyB0aGUgc2FtZSB0eXBlIHRvIGhhdmUKICAgICAg ICB0aGUgc2FtZSBuYW1lLiAgSW4gZ2VuZXJhbCwgdGhpcyBpcyBPSyBiZWNh dXNlIG9mOgogCkBAIC00ODAsOSArNDk2LDkgQEAgc3VwcGxlbWVudF9iaW5k aW5nXzEgKGN4eF9iaW5kaW5nICpiaW5kaQogCiAgICAgICAgQSBtZW1iZXIg c2hhbGwgbm90IGJlIGRlY2xhcmVkIHR3aWNlIGluIHRoZQogICAgICAgIG1l bWJlci1zcGVjaWZpY2F0aW9uLiAgKi8KLSAgZWxzZSBpZiAoVFJFRV9DT0RF IChkZWNsKSA9PSBWQVJfREVDTCAmJiBUUkVFX0NPREUgKGJ2YWwpID09IFZB Ul9ERUNMCi0JICAgJiYgREVDTF9FWFRFUk5BTCAoZGVjbCkgJiYgREVDTF9F WFRFUk5BTCAoYnZhbCkKLQkgICAmJiAhREVDTF9DTEFTU19TQ09QRV9QIChk ZWNsKSkKKyAgZWxzZSBpZiAoVFJFRV9DT0RFICh0YXJnZXRfZGVjbCkgPT0g VkFSX0RFQ0wgJiYgVFJFRV9DT0RFICh0YXJnZXRfYnZhbCkgPT0gVkFSX0RF Q0wKKwkgICAmJiBERUNMX0VYVEVSTkFMICh0YXJnZXRfZGVjbCkgJiYgREVD TF9FWFRFUk5BTCAodGFyZ2V0X2J2YWwpCisJICAgJiYgIURFQ0xfQ0xBU1Nf U0NPUEVfUCAodGFyZ2V0X2RlY2wpKQogICAgIHsKICAgICAgIGR1cGxpY2F0 ZV9kZWNscyAoZGVjbCwgYmluZGluZy0+dmFsdWUsIC8qbmV3ZGVjbF9pc19m cmllbmQ9Ki9mYWxzZSk7CiAgICAgICBvayA9IGZhbHNlOwpAQCAtMzAxOCw2 ICszMDM0LDggQEAgcHVzaF9jbGFzc19sZXZlbF9iaW5kaW5nXzEgKHRyZWUg bmFtZSwgdAogICAgIHsKICAgICAgIHRyZWUgYnZhbCA9IGJpbmRpbmctPnZh bHVlOwogICAgICAgdHJlZSBvbGRfZGVjbCA9IE5VTExfVFJFRTsKKyAgICAg IHRyZWUgdGFyZ2V0X2RlY2wgPSBzdHJpcF91c2luZ19kZWNsIChkZWNsKTsK KyAgICAgIHRyZWUgdGFyZ2V0X2J2YWwgPSBzdHJpcF91c2luZ19kZWNsIChi dmFsKTsKIAogICAgICAgaWYgKElOSEVSSVRFRF9WQUxVRV9CSU5ESU5HX1Ag KGJpbmRpbmcpKQogCXsKQEAgLTMwMjUsOCArMzA0Myw4IEBAIHB1c2hfY2xh c3NfbGV2ZWxfYmluZGluZ18xICh0cmVlIG5hbWUsIHQKIAkgICAgIHRhZyBu YW1lLCBzbGlkZSBpdCBvdmVyIHRvIG1ha2Ugcm9vbSBmb3IgdGhlIG5ldyBi aW5kaW5nLgogCSAgICAgVGhlIG9sZCBiaW5kaW5nIGlzIHN0aWxsIHZpc2li bGUgaWYgZXhwbGljaXRseSBxdWFsaWZpZWQKIAkgICAgIHdpdGggYSBjbGFz cy1rZXkuICAqLwotCSAgaWYgKFRSRUVfQ09ERSAoYnZhbCkgPT0gVFlQRV9E RUNMICYmIERFQ0xfQVJUSUZJQ0lBTCAoYnZhbCkKLQkgICAgICAmJiAhKFRS RUVfQ09ERSAoeCkgPT0gVFlQRV9ERUNMICYmIERFQ0xfQVJUSUZJQ0lBTCAo eCkpKQorCSAgaWYgKFRSRUVfQ09ERSAodGFyZ2V0X2J2YWwpID09IFRZUEVf REVDTCAmJiBERUNMX0FSVElGSUNJQUwgKHRhcmdldF9idmFsKQorCSAgICAg ICYmICEoVFJFRV9DT0RFICh0YXJnZXRfZGVjbCkgPT0gVFlQRV9ERUNMICYm IERFQ0xfQVJUSUZJQ0lBTCAodGFyZ2V0X2RlY2wpKSkKIAkgICAgewogCSAg ICAgIG9sZF9kZWNsID0gYmluZGluZy0+dHlwZTsKIAkgICAgICBiaW5kaW5n LT50eXBlID0gYnZhbDsKQEAgLTMwMzgsMTggKzMwNTYsMjEgQEAgcHVzaF9j bGFzc19sZXZlbF9iaW5kaW5nXzEgKHRyZWUgbmFtZSwgdAogCSAgICAgIG9s ZF9kZWNsID0gYnZhbDsKIAkgICAgICAvKiBBbnkgaW5oZXJpdGVkIHR5cGUg ZGVjbGFyYXRpb24gaXMgaGlkZGVuIGJ5IHRoZSB0eXBlCiAJCSBkZWNsYXJh dGlvbiBpbiB0aGUgZGVyaXZlZCBjbGFzcy4gICovCi0JICAgICAgaWYgKFRS RUVfQ09ERSAoeCkgPT0gVFlQRV9ERUNMICYmIERFQ0xfQVJUSUZJQ0lBTCAo eCkpCisJICAgICAgaWYgKFRSRUVfQ09ERSAodGFyZ2V0X2RlY2wpID09IFRZ UEVfREVDTCAmJiBERUNMX0FSVElGSUNJQUwgKHRhcmdldF9kZWNsKSkKIAkJ YmluZGluZy0+dHlwZSA9IE5VTExfVFJFRTsKIAkgICAgfQogCX0KLSAgICAg IGVsc2UgaWYgKFRSRUVfQ09ERSAoeCkgPT0gT1ZFUkxPQUQgJiYgaXNfb3Zl cmxvYWRlZF9mbiAoYnZhbCkpCi0Jb2xkX2RlY2wgPSBidmFsOwotICAgICAg ZWxzZSBpZiAoVFJFRV9DT0RFICh4KSA9PSBVU0lOR19ERUNMICYmIFRSRUVf Q09ERSAoYnZhbCkgPT0gVVNJTkdfREVDTCkKLQlyZXR1cm4gdHJ1ZTsKLSAg ICAgIGVsc2UgaWYgKFRSRUVfQ09ERSAoeCkgPT0gVVNJTkdfREVDTCAmJiBp c19vdmVybG9hZGVkX2ZuIChidmFsKSkKKyAgICAgIGVsc2UgaWYgKFRSRUVf Q09ERSAodGFyZ2V0X2RlY2wpID09IE9WRVJMT0FEICYmIGlzX292ZXJsb2Fk ZWRfZm4gKHRhcmdldF9idmFsKSkKIAlvbGRfZGVjbCA9IGJ2YWw7Ci0gICAg ICBlbHNlIGlmIChUUkVFX0NPREUgKGJ2YWwpID09IFVTSU5HX0RFQ0wgJiYg aXNfb3ZlcmxvYWRlZF9mbiAoeCkpCisgICAgICBlbHNlIGlmIChUUkVFX0NP REUgKGRlY2wpID09IFVTSU5HX0RFQ0wKKwkgICAgICAgJiYgREVDTF9ERVBF TkRFTlRfUCAoZGVjbCkKKwkgICAgICAgJiYgVFJFRV9DT0RFIChidmFsKSA9 PSBVU0lOR19ERUNMCisJICAgICAgICYmIERFQ0xfREVQRU5ERU5UX1AgKGJ2 YWwpKQogCXJldHVybiB0cnVlOworICAgICAgZWxzZSBpZiAoVFJFRV9DT0RF IChkZWNsKSA9PSBVU0lOR19ERUNMICYmIGlzX292ZXJsb2FkZWRfZm4gKHRh cmdldF9idmFsKSkKKyAgICAgIAlvbGRfZGVjbCA9IGJ2YWw7CisgICAgICBl bHNlIGlmIChUUkVFX0NPREUgKGJ2YWwpID09IFVTSU5HX0RFQ0wgJiYgaXNf b3ZlcmxvYWRlZF9mbiAodGFyZ2V0X2RlY2wpKQorICAgICAgCXJldHVybiB0 cnVlOwogCiAgICAgICBpZiAob2xkX2RlY2wgJiYgYmluZGluZy0+c2NvcGUg PT0gY2xhc3NfYmluZGluZ19sZXZlbCkKIAl7CkluZGV4OiBnY2MvZGJ4b3V0 LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2RieG91dC5jCShy ZXZpc2lvbiAxNzgwODgpCisrKyBnY2MvZGJ4b3V0LmMJKHdvcmtpbmcgY29w eSkKQEAgLTE1MTgsNiArMTUxOCw4IEBAIGRieG91dF90eXBlX2ZpZWxkcyAo dHJlZSB0eXBlKQogICAgICAgaWYgKFRSRUVfQ09ERSAodGVtKSA9PSBUWVBF X0RFQ0wKIAkgIC8qIE9taXQgaGVyZSB0aGUgbmFtZWxlc3MgZmllbGRzIHRo YXQgYXJlIHVzZWQgdG8gc2tpcCBiaXRzLiAgKi8KIAkgIHx8IERFQ0xfSUdO T1JFRF9QICh0ZW0pCisJICAvKiBPbWl0IFVTSU5HX0RFQ0wgKi8KKwkgIHx8 IFRSRUVfQ09ERSAodGVtKSA+PSBMQVNUX0FORF9VTlVTRURfVFJFRV9DT0RF CiAJICAvKiBPbWl0IGZpZWxkcyB3aG9zZSBwb3NpdGlvbiBvciBzaXplIGFy ZSB2YXJpYWJsZSBvciB0b28gbGFyZ2UgdG8KIAkgICAgIHJlcHJlc2VudC4g ICovCiAJICB8fCAoVFJFRV9DT0RFICh0ZW0pID09IEZJRUxEX0RFQ0wK --0016364edd9e691b7304ad234e75--